26 USE yomhook
,ONLY : lhook, dr_hook
27 USE parkind1
,ONLY : jprb
33 TYPE(slt_t),
INTENT(INOUT) :: slt
35 INTEGER,
INTENT(IN) :: ki
36 INTEGER,
INTENT(IN) :: kslt
37 REAL,
DIMENSION(KI),
INTENT(IN) :: pwind
38 REAL,
DIMENSION(KI,KSLT),
INTENT(OUT) :: psfslt
42 REAL,
DIMENSION(KI,3) :: zsfslt_mde
44 REAL,
DIMENSION(KI) :: dzspeed
45 INTEGER,
DIMENSION(KI):: wcl
46 REAL :: zconvertfacm0_slt
47 REAL :: zconvertfacm3_slt
48 REAL :: zconvertfacm6_slt
78 REAL,
PARAMETER :: numb1flux(0:40) = (/ &
79 0.000e+00, 3.004e+01, 3.245e+02, 1.306e+03, 3.505e+03, 7.542e+03, &
80 1.410e+04, 2.394e+04, 3.787e+04, 5.674e+04, 8.147e+04, 1.130e+05, &
81 1.523e+05, 2.005e+05, 2.586e+05, 3.278e+05, 4.091e+05, 5.037e+05, &
82 6.129e+05, 7.379e+05, 8.800e+05, 1.041e+06, 1.220e+06, 1.422e+06, &
83 1.646e+06, 1.893e+06, 2.166e+06, 2.466e+06, 2.794e+06, 3.152e+06, &
84 3.541e+06, 3.962e+06, 4.419e+06, 4.911e+06, 5.441e+06, 6.011e+06, &
85 6.621e+06, 7.274e+06, 7.972e+06, 8.716e+06, 8.801e+06 /)
87 REAL,
PARAMETER :: numb2flux(0:40) = (/ &
88 0.000e+00, 1.934e+01, 2.068e+02, 8.271e+02, 2.211e+03, 4.741e+03, &
89 8.841e+03, 1.497e+04, 2.363e+04, 3.534e+04, 5.066e+04, 7.017e+04, &
90 9.447e+04, 1.242e+05, 1.600e+05, 2.025e+05, 2.525e+05, 3.106e+05, &
91 3.776e+05, 4.542e+05, 5.413e+05, 6.395e+05, 7.501e+05, 8.726e+05, &
92 1.009e+06, 1.160e+06, 1.327e+06, 1.509e+06, 1.709e+06, 1.927e+06, &
93 2.163e+06, 2.420e+06, 2.697e+06, 2.996e+06, 3.318e+06, 3.664e+06, &
94 4.034e+06, 4.430e+06, 4.852e+06, 5.303e+06, 5.740e+06 /)
96 REAL,
PARAMETER :: numb3flux(0:40) = (/ 0.0, &
97 4.340e-01, 5.217e+00, 2.241e+01, 6.301e+01, 1.404e+02, 2.703e+02, &
98 4.699e+02, 7.584e+02, 1.157e+03, 1.687e+03, 2.373e+03, 3.240e+03, &
99 4.314e+03, 5.625e+03, 7.197e+03, 9.063e+03, 1.126e+04, 1.380e+04, &
100 1.674e+04, 2.011e+04, 2.393e+04, 2.827e+04, 3.311e+04, 3.853e+04, &
101 4.457e+04, 5.126e+04, 5.864e+04, 6.675e+04, 7.564e+04, 8.535e+04, &
102 9.592e+04, 1.074e+05, 1.198e+05, 1.333e+05, 1.478e+05, 1.633e+05, &
103 1.801e+05, 1.980e+05, 2.172e+05, 2.353e+05 /)
104 REAL(KIND=JPRB) :: zhook_handle
119 IF (lhook) CALL dr_hook(
'COUPLING_SLT_N',0,zhook_handle)
122 zconvertfacm0_slt = xmolarweight_slt / xavogadro
124 zconvertfacm6_slt = xmolarweight_slt / xavogadro*1.d6
125 zconvertfacm3_slt = 4./3.*xpi*xdensity_slt / 1.d18
129 IF (cemisparam_slt.eq.
"Vig01")
THEN
132 zsfslt_mde(:,1) = 10**(0.09 *pwind(:) + 0.283)
133 zsfslt_mde(:,2) = 10**(0.0422*pwind(:) + 0.288)
134 zsfslt_mde(:,3) = 10**(0.069 *pwind(:) - 3.5)
136 zsfslt_mde(:,1) = max(zsfslt_mde(:,1) * 1e4, 1e-10)
137 zsfslt_mde(:,2) = max(zsfslt_mde(:,2) * 1e4, 1e-10)
138 zsfslt_mde(:,3) = max(zsfslt_mde(:,3) * 1e4, 1e-10)
142 wcl(:) = int(pwind(:))
143 wcl(:) = max(0, min(wcl(:), 39))
145 dzspeed(:) = max(0., min(pwind(:) - float(wcl(:)), 1.))
151 zsfslt_mde(ji,1) = numb1flux(wcl(ji)) + (numb1flux(wcl(ji)+1)-numb1flux(wcl(ji)))*dzspeed(ji)
152 zsfslt_mde(ji,2) = numb2flux(wcl(ji)) + (numb2flux(wcl(ji)+1)-numb2flux(wcl(ji)))*dzspeed(ji)
153 zsfslt_mde(ji,3) = numb3flux(wcl(ji)) + (numb3flux(wcl(ji)+1)-numb3flux(wcl(ji)))*dzspeed(ji)
161 IF (lvarsig_slt)
THEN
163 psfslt(:,1+(jn-1)*3) = zsfslt_mde(:,jorder_slt(jn))
164 psfslt(:,2+(jn-1)*3) = psfslt(:,1+(jn-1)*3) * (slt%XEMISRADIUS_SLT(jn)**3)*exp(4.5 * log(slt%XEMISSIG_SLT(jn))**2)
165 psfslt(:,3+(jn-1)*3) = psfslt(:,1+(jn-1)*3) * (slt%XEMISRADIUS_SLT(jn)**6)*exp(18. * log(slt%XEMISSIG_SLT(jn))**2)
168 psfslt(:,1+(jn-1)*3) = psfslt(:,1+(jn-1)*3) * zconvertfacm0_slt
169 psfslt(:,2+(jn-1)*3) = psfslt(:,1+(jn-1)*3) * zconvertfacm3_slt
170 psfslt(:,3+(jn-1)*3) = psfslt(:,3+(jn-1)*3) * zconvertfacm6_slt
172 ELSE IF (lrgfix_slt)
THEN
173 psfslt(:,jn) = zsfslt_mde(:,jorder_slt(jn)) * (slt%XEMISRADIUS_SLT(jn)**3)*exp(4.5 * log(slt%XEMISSIG_SLT(jn))**2)
175 psfslt(:,jn) = psfslt(:,jn) * zconvertfacm3_slt
178 psfslt(:,1+(jn-1)*2) = zsfslt_mde(:,jorder_slt(jn))
179 psfslt(:,2+(jn-1)*2) = psfslt(:,1+(jn-1)*2) * (slt%XEMISRADIUS_SLT(jn)**3)*exp(4.5 * log(slt%XEMISSIG_SLT(jn))**2)
182 psfslt(:,1+(jn-1)*2) = psfslt(:,1+(jn-1)*2) * zconvertfacm0_slt
183 psfslt(:,2+(jn-1)*2) = psfslt(:,1+(jn-1)*2) * zconvertfacm3_slt
188 IF (lhook) CALL dr_hook(
'COUPLING_SLT_N',1,zhook_handle)
subroutine coupling_slt_n(SLT, KI, KSLT, PWIND, PSFSLT)