28 aero_data, env_state, k)
39 real(kind=
dp),
intent(out) :: k
41 k = env_state%additive_kernel_coefficient &
53 real(kind=
dp),
intent(in) :: v1
55 real(kind=
dp),
intent(in) :: v2
61 real(kind=
dp),
intent(out) :: k_min
63 real(kind=
dp),
intent(out) :: k_max
65 k_min = env_state%additive_kernel_coefficient * (v1 + v2)
100 radius_at_mean_vol, env_state, aero_binned)
107 real(kind=
dp),
intent(in) :: time
109 real(kind=
dp),
intent(in) :: num_conc
111 real(kind=
dp),
intent(in) :: radius_at_mean_vol
117 real(kind=
dp) :: tau, t, rat_v, nn, b, x, mean_vol
124 if (time .eq. 0d0)
then
126 aero_binned%num_conc(k) =
const%pi/2d0 &
127 * (2d0 * bin_grid%centers(k))**3 * num_conc / mean_vol &
132 tau = num_conc * mean_vol * env_state%additive_kernel_coefficient * time
136 x = 2d0 * rat_v * sqrt(t)
137 if (x .lt. 500d0)
then
140 bin_grid%centers(k)) &
141 * (1d0 - t) / sqrt(t) * exp(-((1d0 + t) * rat_v)) * b
149 bin_grid%centers(k)) &
150 * (1d0 - t) / sqrt(t) &
151 * exp((2d0*sqrt(t) - t - 1d0) * rat_v) &
152 / sqrt(4d0 *
const%pi * rat_v * sqrt(t))
154 aero_binned%num_conc(k) =
const%pi/2d0 &
155 * (2d0 * bin_grid%centers(k))**3 * nn
159 aero_binned%vol_conc = 0d0
162 bin_grid%centers(k)) * aero_binned%num_conc(k)
173 real(kind=
dp),
intent(in) :: x
175 real(kind=
dp),
intent(out) :: r
230 real ( kind = 8 ) arg
232 real ( kind = 8 ) exp40
233 real ( kind = 8 ) forty
234 integer ( kind = 4 ) j
235 integer ( kind = 4 ) jint
236 real ( kind = 8 ) one5
237 real ( kind = 8 ) p(15)
238 real ( kind = 8 ) pbar
239 real ( kind = 8 ) pp(8)
240 real ( kind = 8 ) q(5)
241 real ( kind = 8 ) qq(6)
242 real ( kind = 8 ) rec15
243 real ( kind = 8 ) result
244 real ( kind = 8 ) sump
245 real ( kind = 8 ) sumq
246 real ( kind = 8 ) two25
248 real ( kind = 8 ) xinf
249 real ( kind = 8 ) xmax
250 real ( kind = 8 ) xsmall
256 data exp40 / 2.353852668370199854d17 /
257 data forty / 40.0d0 /
258 data rec15 / 6.6666666666666666666d-2 /
259 data two25 / 225.0d0 /
263 data xsmall /5.55d-17/
265 data xmax /713.987d0/
269 data p/-1.9705291802535139930d-19,-6.5245515583151902910d-16, &
270 -1.1928788903603238754d-12,-1.4831904935994647675d-09, &
271 -1.3466829827635152875d-06,-9.1746443287817501309d-04, &
272 -4.7207090827310162436d-01,-1.8225946631657315931d+02, &
273 -5.1894091982308017540d+04,-1.0588550724769347106d+07, &
274 -1.4828267606612366099d+09,-1.3357437682275493024d+11, &
275 -6.9876779648010090070d+12,-1.7732037840791591320d+14, &
276 -1.4577180278143463643d+15/
277 data q/-4.0076864679904189921d+03, 7.4810580356655069138d+06, &
278 -8.0059518998619764991d+09, 4.8544714258273622913d+12, &
279 -1.3218168307321442305d+15/
283 data pp/-6.0437159056137600000d-02, 4.5748122901933459000d-01, &
284 -4.2843766903304806403d-01, 9.7356000150886612134d-02, &
285 -3.2457723974465568321d-03,-3.6395264712121795296d-04, &
286 1.6258661867440836395d-05,-3.6347578404608223492d-07/
287 data qq/-3.8806586721556593450d+00, 3.2593714889036996297d+00, &
288 -8.5017476463217924408d-01, 7.4212010813186530069d-02, &
289 -2.2835624489492512649d-03, 3.7510433111922824643d-05/
290 data pbar/3.98437500d-01/
296 if ( x < xsmall )
then
302 else if ( x < one5 )
then
307 sump = sump * xx + p(j)
318 result = ( sump / sumq ) * x
320 if ( jint == 2 )
then
321 result = result * exp( -x )
324 else if ( jint == 1 .and. xmax < x )
then
332 xx = 1.0d+00 / x - rec15
354 if ( jint /= 1 )
then
355 result = ( result + pbar ) / sqrt( x )
360 if ( xmax - one5 < x )
then
368 result = ( ( result * a + pbar * a ) / sqrt( x ) ) * b
373 if ( arg < 0.0d+00 )
then