31 aero_data, env_state, k)
42 real(kind=
dp),
intent(out) :: k
55 real(kind=
dp),
intent(in) :: v1
57 real(kind=
dp),
intent(in) :: v2
63 real(kind=
dp),
intent(out) :: k_min
65 real(kind=
dp),
intent(out) :: k_max
102 radius_at_mean_vol, env_state, aero_binned)
109 real(kind=
dp),
intent(in) :: time
111 real(kind=
dp),
intent(in) :: num_conc
113 real(kind=
dp),
intent(in) :: radius_at_mean_vol
119 real(kind=
dp) :: tau, t, rat_v, nn, b, x, mean_vol
126 if (time .eq. 0d0)
then
128 aero_binned%num_conc(k) =
const%pi/2d0 &
129 * (2d0 * bin_grid%centers(k))**3 * num_conc / mean_vol &
134 tau = num_conc * mean_vol *
beta_1 * time
138 x = 2d0 * rat_v * sqrt(t)
139 if (x .lt. 500d0)
then
142 bin_grid%centers(k)) &
143 * (1d0 - t) / sqrt(t) * exp(-((1d0 + t) * rat_v)) * b
151 bin_grid%centers(k)) &
152 * (1d0 - t) / sqrt(t) &
153 * exp((2d0*sqrt(t) - t - 1d0) * rat_v) &
154 / sqrt(4d0 *
const%pi * rat_v * sqrt(t))
156 aero_binned%num_conc(k) =
const%pi/2d0 &
157 * (2d0 * bin_grid%centers(k))**3 * nn
161 aero_binned%vol_conc = 0d0
164 bin_grid%centers(k)) * aero_binned%num_conc(k)
175 real(kind=
dp),
intent(in) :: x
177 real(kind=
dp),
intent(out) :: r
232 real ( kind = 8 ) arg
234 real ( kind = 8 ) exp40
235 real ( kind = 8 ) forty
236 integer ( kind = 4 ) j
237 integer ( kind = 4 ) jint
238 real ( kind = 8 ) one5
239 real ( kind = 8 ) p(15)
240 real ( kind = 8 ) pbar
241 real ( kind = 8 ) pp(8)
242 real ( kind = 8 ) q(5)
243 real ( kind = 8 ) qq(6)
244 real ( kind = 8 ) rec15
245 real ( kind = 8 ) result
246 real ( kind = 8 ) sump
247 real ( kind = 8 ) sumq
248 real ( kind = 8 ) two25
250 real ( kind = 8 ) xinf
251 real ( kind = 8 ) xmax
252 real ( kind = 8 ) xsmall
258 data exp40 / 2.353852668370199854d17 /
259 data forty / 40.0d0 /
260 data rec15 / 6.6666666666666666666d-2 /
261 data two25 / 225.0d0 /
265 data xsmall /5.55d-17/
267 data xmax /713.987d0/
271 data p/-1.9705291802535139930d-19,-6.5245515583151902910d-16, &
272 -1.1928788903603238754d-12,-1.4831904935994647675d-09, &
273 -1.3466829827635152875d-06,-9.1746443287817501309d-04, &
274 -4.7207090827310162436d-01,-1.8225946631657315931d+02, &
275 -5.1894091982308017540d+04,-1.0588550724769347106d+07, &
276 -1.4828267606612366099d+09,-1.3357437682275493024d+11, &
277 -6.9876779648010090070d+12,-1.7732037840791591320d+14, &
278 -1.4577180278143463643d+15/
279 data q/-4.0076864679904189921d+03, 7.4810580356655069138d+06, &
280 -8.0059518998619764991d+09, 4.8544714258273622913d+12, &
281 -1.3218168307321442305d+15/
285 data pp/-6.0437159056137600000d-02, 4.5748122901933459000d-01, &
286 -4.2843766903304806403d-01, 9.7356000150886612134d-02, &
287 -3.2457723974465568321d-03,-3.6395264712121795296d-04, &
288 1.6258661867440836395d-05,-3.6347578404608223492d-07/
289 data qq/-3.8806586721556593450d+00, 3.2593714889036996297d+00, &
290 -8.5017476463217924408d-01, 7.4212010813186530069d-02, &
291 -2.2835624489492512649d-03, 3.7510433111922824643d-05/
292 data pbar/3.98437500d-01/
298 if ( x < xsmall )
then
304 else if ( x < one5 )
then
309 sump = sump * xx + p(j)
320 result = ( sump / sumq ) * x
322 if ( jint == 2 )
then
323 result = result * exp( -x )
326 else if ( jint == 1 .and. xmax < x )
then
334 xx = 1.0d+00 / x - rec15
356 if ( jint /= 1 )
then
357 result = ( result + pbar ) / sqrt( x )
362 if ( xmax - one5 < x )
then
370 result = ( ( result * a + pbar * a ) / sqrt( x ) ) * b
375 if ( arg < 0.0d+00 )
then