-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdropspec.f90
More file actions
73 lines (52 loc) · 2.18 KB
/
dropspec.f90
File metadata and controls
73 lines (52 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
!****************************************************************
! This module provides dry aerosol spectra
!****************************************************************
MODULE dropspecMD
use constant
use chemMD
implicit none
integer :: naero = 50
CONTAINS
!***********************************************************************************
!This subroutine provides the characteritics for soluble coomposition in
!aerosols.
!**********************************************************************************
SUBROUTINE dropspec(binnum,ast,drop_m0,drop_r0,aero_m0,aero_r0,&
&drop_radmin,drop_radmax)
implicit none
integer, intent(in) :: binnum
integer, dimension(binnum),intent(inout) :: ast
real(RLK), dimension(binnum),intent(out) :: drop_m0,drop_r0
real(RLK), dimension(binnum),intent(in) :: aero_r0,aero_m0
real(RLK), intent(in) :: drop_radmin, drop_radmax
integer :: iaero,ivv,ientr,ichem
real(RLK) :: rhos,rhosap,soluba,solubb,solubc,Ms,kap,rhois,solfracm,solfracv
real(RLK) :: drop_raddiff,term3
real(RLK), dimension(binnum+1) :: drop_br0
real(RLK), dimension(binnum) :: drop_r0_est,mola,rhows1
integer :: ii
common /caseindex/ ichem,iaero,ientr,ivv
drop_raddiff = (log(drop_radmax)-log(drop_radmin))/binnum
drop_br0(1) = drop_radmin
CALL chem(ichem, rhos,rhosap,soluba,solubb,solubc,Ms,kap,rhois,&
& solfracm,solfracv)
do ii=1,binnum
drop_br0(ii+1) = exp(log(drop_br0(ii))+drop_raddiff)
drop_r0_est(ii) = (drop_br0(ii) + drop_br0(ii+1))/2
drop_m0(ii) = rhow*4.0/3.0*pi*drop_r0_est(ii)**3 ! assuming pure water
mola(ii)=aero_m0(ii)*solfracm/Ms/(drop_m0(ii)-aero_m0(ii))
rhows1(ii)=rhow+(rhosap-rhow)*mola(ii)/(rhosap/rhow/Ms+mola(ii))
term3=0.75*(drop_m0(ii)-(1-solfracm)*aero_m0(ii))/rhows1(ii)/pi
term3=term3+(1-solfracv)*aero_r0(ii)**3.0
drop_r0(ii)=(abs(term3)/term3)*(abs(term3)**(1.000/3.000))
ast(ii) = 2
enddo
!print *, 'Initializing Drops'
!print *, 'dropmin', drop_radmin
!print *, 'dropmax', drop_radmax
!print *, 'pmass in INIDROP', drop_m0
!print *, 'prad in INIDROP', drop_r0
!print *, 'aero_m0',aero_m0
!print *, ""
END SUBROUTINE dropspec
END MODULE dropspecMD