source: palm/trunk/SOURCE/lpm_droplet_condensation.f90 @ 1890

Last change on this file since 1890 was 1890, checked in by hoffmann, 8 years ago

improvements for the consideration of aerosols in the LCM

  • Property svn:keywords set to Id
File size: 22.4 KB
Line 
1!> @file lpm_droplet_condensation.f90
2!--------------------------------------------------------------------------------!
3! This file is part of PALM.
4!
5! PALM is free software: you can redistribute it and/or modify it under the terms
6! of the GNU General Public License as published by the Free Software Foundation,
7! either version 3 of the License, or (at your option) any later version.
8!
9! PALM is distributed in the hope that it will be useful, but WITHOUT ANY
10! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11! A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
12!
13! You should have received a copy of the GNU General Public License along with
14! PALM. If not, see <http://www.gnu.org/licenses/>.
15!
16! Copyright 1997-2016 Leibniz Universitaet Hannover
17!--------------------------------------------------------------------------------!
18!
19! Current revisions:
20! ------------------
21! Some improvements of the Rosenbrock method. If the Rosenbrock method needs more
22! than 40 iterations to find a sufficient time setp, the model is not aborted.
23! This might lead to small erros. But they can be assumend as negligible, since
24! the maximum timesetp of the Rosenbrock method after 40 iterations will be
25! smaller than 10^-16 s. 
26!
27! Former revisions:
28! -----------------
29! $Id: lpm_droplet_condensation.f90 1890 2016-04-22 08:52:11Z hoffmann $
30!
31! 1871 2016-04-15 11:46:09Z hoffmann
32! Initialization of aerosols added.
33!
34! 1849 2016-04-08 11:33:18Z hoffmann
35! Interpolation of supersaturation has been removed because it is not in
36! accordance with the release/depletion of latent heat/water vapor in
37! interaction_droplets_ptq.
38! Calculation of particle Reynolds number has been corrected.
39! eps_ros added from modules.
40!
41! 1831 2016-04-07 13:15:51Z hoffmann
42! curvature_solution_effects moved to particle_attributes
43!
44! 1822 2016-04-07 07:49:42Z hoffmann
45! Unused variables removed.
46!
47! 1682 2015-10-07 23:56:08Z knoop
48! Code annotations made doxygen readable
49!
50! 1359 2014-04-11 17:15:14Z hoffmann
51! New particle structure integrated.
52! Kind definition added to all floating point numbers.
53!
54! 1346 2014-03-27 13:18:20Z heinze
55! Bugfix: REAL constants provided with KIND-attribute especially in call of
56! intrinsic function like MAX, MIN, SIGN
57!
58! 1322 2014-03-20 16:38:49Z raasch
59! REAL constants defined as wp-kind
60!
61! 1320 2014-03-20 08:40:49Z raasch
62! ONLY-attribute added to USE-statements,
63! kind-parameters added to all INTEGER and REAL declaration statements,
64! kinds are defined in new module kinds,
65! comment fields (!:) to be used for variable explanations added to
66! all variable declaration statements
67!
68! 1318 2014-03-17 13:35:16Z raasch
69! module interfaces removed
70!
71! 1092 2013-02-02 11:24:22Z raasch
72! unused variables removed
73!
74! 1071 2012-11-29 16:54:55Z franke
75! Ventilation effect for evaporation of large droplets included
76! Check for unreasonable results included in calculation of Rosenbrock method
77! since physically unlikely results were observed and for the same
78! reason the first internal time step in Rosenbrock method should be < 1.0E02 in
79! case of evaporation
80! Unnecessary calculation of ql_int removed
81! Unnecessary calculations in Rosenbrock method (d2rdt2, drdt_m, dt_ros_last)
82! removed
83! Bugfix: factor in calculation of surface tension changed from 0.00155 to
84! 0.000155
85!
86! 1036 2012-10-22 13:43:42Z raasch
87! code put under GPL (PALM 3.9)
88!
89! 849 2012-03-15 10:35:09Z raasch
90! initial revision (former part of advec_particles)
91!
92!
93! Description:
94! ------------
95!> Calculates change in droplet radius by condensation/evaporation, using
96!> either an analytic formula or by numerically integrating the radius growth
97!> equation including curvature and solution effects using Rosenbrocks method
98!> (see Numerical recipes in FORTRAN, 2nd edition, p. 731).
99!> The analytical formula and growth equation follow those given in
100!> Rogers and Yau (A short course in cloud physics, 3rd edition, p. 102/103).
101!------------------------------------------------------------------------------!
102 SUBROUTINE lpm_droplet_condensation (ip,jp,kp)
103 
104
105    USE arrays_3d,                                                             &
106        ONLY:  hyp, pt, q,  ql_c, ql_v
107
108    USE cloud_parameters,                                                      &
109        ONLY:  l_d_rv, l_v, rho_l, r_v
110
111    USE constants,                                                             &
112        ONLY:  pi
113
114    USE control_parameters,                                                    &
115        ONLY:  dt_3d, dz, message_string, molecular_viscosity, rho_surface
116
117    USE cpulog,                                                                &
118        ONLY:  cpu_log, log_point_s
119
120    USE grid_variables,                                                        &
121        ONLY:  dx, dy
122
123    USE lpm_collision_kernels_mod,                                             &
124        ONLY:  rclass_lbound, rclass_ubound
125
126    USE kinds
127
128    USE particle_attributes,                                                   &
129        ONLY:  curvature_solution_effects, hall_kernel,                        &
130               molecular_weight_of_solute, molecular_weight_of_water,          &
131               number_of_particles, particles, radius_classes, rho_s,          &
132               use_kernel_tables, vanthoff, wang_kernel
133
134
135    IMPLICIT NONE
136
137    INTEGER(iwp) :: ip                         !<
138    INTEGER(iwp) :: internal_timestep_count    !<
139    INTEGER(iwp) :: jp                         !<
140    INTEGER(iwp) :: jtry                       !<
141    INTEGER(iwp) :: kp                         !<
142    INTEGER(iwp) :: n                          !<
143    INTEGER(iwp) :: ros_count                  !<
144 
145    INTEGER(iwp), PARAMETER ::  maxtry = 40    !<
146
147    LOGICAL ::  repeat                         !<
148
149    REAL(wp) ::  aa                            !<
150    REAL(wp) ::  afactor                       !< curvature effects
151    REAL(wp) ::  arg                           !<
152    REAL(wp) ::  bfactor                       !< solute effects
153    REAL(wp) ::  ddenom                        !<
154    REAL(wp) ::  delta_r                       !<
155    REAL(wp) ::  diameter                      !< diameter of cloud droplets
156    REAL(wp) ::  diff_coeff_v                  !< diffusivity for water vapor
157    REAL(wp) ::  drdt                          !<
158    REAL(wp) ::  drdt_ini                      !<
159    REAL(wp) ::  dt_ros                        !<
160    REAL(wp) ::  dt_ros_next                   !<
161    REAL(wp) ::  dt_ros_sum                    !<
162    REAL(wp) ::  dt_ros_sum_ini                !<
163    REAL(wp) ::  d2rdtdr                       !<
164    REAL(wp) ::  errmax                        !<
165    REAL(wp) ::  e_a                           !< current vapor pressure
166    REAL(wp) ::  e_s                           !< current saturation vapor pressure
167    REAL(wp) ::  err_ros                       !<
168    REAL(wp) ::  g1                            !<
169    REAL(wp) ::  g2                            !<
170    REAL(wp) ::  g3                            !<
171    REAL(wp) ::  g4                            !<
172    REAL(wp) ::  r_ros                         !<
173    REAL(wp) ::  r_ros_ini                     !<
174    REAL(wp) ::  sigma                         !<
175    REAL(wp) ::  thermal_conductivity_v        !< thermal conductivity for water
176    REAL(wp) ::  t_int                         !< temperature
177    REAL(wp) ::  w_s                           !< terminal velocity of droplets
178    REAL(wp) ::  re_p                          !<
179
180!
181!-- Parameters for Rosenbrock method
182    REAL(wp), PARAMETER ::  a21 = 2.0_wp               !<
183    REAL(wp), PARAMETER ::  a31 = 48.0_wp / 25.0_wp    !<
184    REAL(wp), PARAMETER ::  a32 = 6.0_wp / 25.0_wp     !<
185    REAL(wp), PARAMETER ::  b1 = 19.0_wp / 9.0_wp      !<
186    REAL(wp), PARAMETER ::  b2 = 0.5_wp                !<
187    REAL(wp), PARAMETER ::  b3 = 25.0_wp / 108.0_wp    !<
188    REAL(wp), PARAMETER ::  b4 = 125.0_wp / 108.0_wp   !<
189    REAL(wp), PARAMETER ::  c21 = -8.0_wp              !<
190    REAL(wp), PARAMETER ::  c31 = 372.0_wp / 25.0_wp   !<
191    REAL(wp), PARAMETER ::  c32 = 12.0_wp / 5.0_wp     !<
192    REAL(wp), PARAMETER ::  c41 = -112.0_wp / 125.0_wp !<
193    REAL(wp), PARAMETER ::  c42 = -54.0_wp / 125.0_wp  !<
194    REAL(wp), PARAMETER ::  c43 = -2.0_wp / 5.0_wp     !<
195    REAL(wp), PARAMETER ::  errcon = 0.1296_wp         !<
196    REAL(wp), PARAMETER ::  e1 = 17.0_wp / 54.0_wp     !<
197    REAL(wp), PARAMETER ::  e2 = 7.0_wp / 36.0_wp      !<
198    REAL(wp), PARAMETER ::  e3 = 0.0_wp                !<
199    REAL(wp), PARAMETER ::  e4 = 125.0_wp / 108.0_wp   !<
200    REAL(wp), PARAMETER ::  eps_ros = 1.0E-3_wp        !< accuracy of Rosenbrock method
201    REAL(wp), PARAMETER ::  gam = 0.5_wp               !<
202    REAL(wp), PARAMETER ::  grow = 1.5_wp              !<
203    REAL(wp), PARAMETER ::  pgrow = -0.25_wp           !<
204    REAL(wp), PARAMETER ::  pshrnk = -1.0_wp /3.0_wp   !<
205    REAL(wp), PARAMETER ::  shrnk = 0.5_wp             !<
206
207!
208!-- Parameters for terminal velocity
209    REAL(wp), PARAMETER ::  a_rog = 9.65_wp      !< parameter for fall velocity
210    REAL(wp), PARAMETER ::  b_rog = 10.43_wp     !< parameter for fall velocity
211    REAL(wp), PARAMETER ::  c_rog = 0.6_wp       !< parameter for fall velocity
212    REAL(wp), PARAMETER ::  k_cap_rog = 4.0_wp   !< parameter for fall velocity
213    REAL(wp), PARAMETER ::  k_low_rog = 12.0_wp  !< parameter for fall velocity
214    REAL(wp), PARAMETER ::  d0_rog = 0.745_wp    !< separation diameter
215
216    REAL(wp), DIMENSION(number_of_particles) ::  ventilation_effect     !<
217    REAL(wp), DIMENSION(number_of_particles) ::  new_r                  !<
218
219
220
221    CALL cpu_log( log_point_s(42), 'lpm_droplet_condens', 'start' )
222
223!
224!-- Calculate temperature, saturation vapor pressure and current vapor pressure
225    t_int = pt(kp,jp,ip) * ( hyp(kp) / 100000.0_wp )**0.286_wp
226    e_s   = 611.0_wp * EXP( l_d_rv * ( 3.6609E-3_wp - 1.0_wp / t_int ) )
227    e_a   = q(kp,jp,ip) * hyp(kp) / ( 0.378_wp * q(kp,jp,ip) + 0.622_wp )
228!
229!-- Thermal conductivity for water (from Rogers and Yau, Table 7.1),
230!-- diffusivity for water vapor (after Hall und Pruppacher, 1976)
231    thermal_conductivity_v = 7.94048E-05_wp * t_int + 0.00227011_wp
232    diff_coeff_v           = 0.211E-4_wp * ( t_int / 273.15_wp )**1.94_wp * &
233                             ( 101325.0_wp / hyp(kp) )
234!
235!-- Calculate effects of heat conductivity and diffusion of water vapor on the
236!-- condensation/evaporation process (typically known as 1.0 / (F_k + F_d) )
237    ddenom  = 1.0_wp / ( rho_l * r_v * t_int / ( e_s * diff_coeff_v ) +        &
238                         ( l_v / ( r_v * t_int ) - 1.0_wp ) * rho_l *          &
239                         l_v / ( thermal_conductivity_v * t_int )              &
240                       )
241
242    new_r = 0.0_wp
243
244!
245!-- Determine ventilation effect on evaporation of large drops
246    DO  n = 1, number_of_particles
247
248       IF ( particles(n)%radius >= 4.0E-5_wp  .AND.  e_a / e_s < 1.0_wp )  THEN
249!
250!--       Terminal velocity is computed for vertical direction (Rogers et al.,
251!--       1993, J. Appl. Meteorol.)
252          diameter = particles(n)%radius * 2000.0_wp !diameter in mm
253          IF ( diameter <= d0_rog )  THEN
254             w_s = k_cap_rog * diameter * ( 1.0_wp - EXP( -k_low_rog * diameter ) )
255          ELSE
256             w_s = a_rog - b_rog * EXP( -c_rog * diameter )
257          ENDIF
258!
259!--       First calculate droplet's Reynolds number
260          re_p = 2.0_wp * particles(n)%radius * w_s / molecular_viscosity
261!
262!--       Ventilation coefficient (Rogers and Yau, 1989):
263          IF ( re_p > 2.5_wp )  THEN
264             ventilation_effect(n) = 0.78_wp + 0.28_wp * SQRT( re_p )
265          ELSE
266             ventilation_effect(n) = 1.0_wp + 0.09_wp * re_p
267          ENDIF
268       ELSE
269!
270!--       For small droplets or in supersaturated environments, the ventilation
271!--       effect does not play a role
272          ventilation_effect(n) = 1.0_wp
273       ENDIF
274    ENDDO
275
276!
277!-- Use analytic model for condensational growth
278    IF( .NOT. curvature_solution_effects ) then
279       DO  n = 1, number_of_particles
280          arg = particles(n)%radius**2 + 2.0_wp * dt_3d * ddenom *             &
281                                         ventilation_effect(n) *               &
282                                         ( e_a / e_s - 1.0_wp )
283          arg = MAX( arg, 1.0E-16_wp )
284          new_r(n) = SQRT( arg )
285       ENDDO
286    ENDIF
287
288!
289!-- If selected, use numerical solution of the condensational growth
290!-- equation (e.g., for studying the activation of aerosols).
291!-- Curvature and solutions effects are included in growth equation.
292!-- Change in Radius is calculated with a 4th-order Rosenbrock method
293!-- for stiff o.d.e's with monitoring local truncation error to adjust
294!-- stepsize (see Numerical recipes in FORTRAN, 2nd edition, p. 731).
295    DO  n = 1, number_of_particles
296       IF ( curvature_solution_effects )  THEN
297
298          ros_count = 0
299          repeat = .TRUE.
300!
301!--       Carry out the Rosenbrock algorithm. In case of unreasonable results
302!--       the switch "repeat" will be set true and the algorithm will be carried
303!--       out again with the internal time step set to its initial (small) value.
304!--       Unreasonable results may occur if the external conditions, especially
305!--       the supersaturation, has significantly changed compared to the last
306!--       PALM timestep.
307          DO WHILE ( repeat )
308
309             repeat = .FALSE.
310!
311!--          Curvature effect (afactor) with surface tension parameterization
312!--          by Straka (2009)
313             sigma = 0.0761_wp - 0.000155_wp * ( t_int - 273.15_wp )
314             afactor = 2.0_wp * sigma / ( rho_l * r_v * t_int )
315!
316!--          Solute effect (bfactor)
317             bfactor = vanthoff * rho_s * particles(n)%rvar2**3 *              &
318                       molecular_weight_of_water /                             &
319                       ( rho_l * molecular_weight_of_solute )
320
321             r_ros = particles(n)%radius
322             dt_ros_sum  = 0.0_wp      ! internal integrated time (s)
323             internal_timestep_count = 0
324!
325!--          Take internal time step values from the end of last PALM time step
326             dt_ros_next = particles(n)%rvar1
327
328!
329!--          Internal time step should not be > 1.0E-2 and < 1.0E-6
330             IF ( dt_ros_next > 1.0E-2_wp )  THEN
331                dt_ros_next = 1.0E-2_wp
332             ELSEIF ( dt_ros_next < 1.0E-6_wp )  THEN
333                dt_ros_next = 1.0E-6_wp
334             ENDIF
335
336!
337!--          If calculation of Rosenbrock method is repeated due to unreasonalble
338!--          results during previous try the initial internal time step has to be
339!--          reduced
340             IF ( ros_count > 1 )  THEN
341                dt_ros_next = dt_ros_next * 0.1_wp
342             ELSEIF ( ros_count > 5 )  THEN
343!
344!--             Prevent creation of infinite loop
345                message_string = 'ros_count > 5 in Rosenbrock method'
346                CALL message( 'lpm_droplet_condensation', 'PA0018', 2, 2, &
347                               0, 6, 0 )
348             ENDIF
349
350!
351!--          Internal time step must not be larger than PALM time step
352             dt_ros = MIN( dt_ros_next, dt_3d )
353
354!
355!--          Integrate growth equation in time unless PALM time step is reached
356             DO WHILE ( dt_ros_sum < dt_3d )
357
358                internal_timestep_count = internal_timestep_count + 1
359
360!
361!--             Derivative at starting value
362                drdt = ddenom * ventilation_effect(n) * ( e_a / e_s - 1.0_wp - &
363                                                          afactor / r_ros +    &
364                                                          bfactor / r_ros**3   &
365                                                        ) / r_ros
366
367                drdt_ini       = drdt
368                dt_ros_sum_ini = dt_ros_sum
369                r_ros_ini      = r_ros
370
371!
372!--             Calculate radial derivative of dr/dt
373                d2rdtdr = ddenom * ventilation_effect(n) *                     &
374                                       ( ( 1.0_wp - e_a / e_s ) / r_ros**2 +   &
375                                         2.0_wp * afactor / r_ros**3 -         &
376                                         4.0_wp * bfactor / r_ros**5           &
377                                       )
378!
379!--             Adjust stepsize unless required accuracy is reached
380                DO  jtry = 1, maxtry+1
381
382                   IF ( jtry == maxtry+1 )  THEN
383                      message_string = 'maxtry > 40 in Rosenbrock method'
384                      CALL message( 'lpm_droplet_condensation', 'PA0347', 0,   &
385                                    1, 0, 6, 0 )
386                   ENDIF
387
388                   aa    = 1.0_wp / ( gam * dt_ros ) - d2rdtdr
389                   g1    = drdt_ini / aa
390                   r_ros = r_ros_ini + a21 * g1
391                   drdt  = ddenom * ventilation_effect(n) * ( e_a / e_s - 1.0_wp - &
392                                                              afactor / r_ros +    &
393                                                              bfactor / r_ros**3   &
394                                                            ) / r_ros
395
396                   g2    = ( drdt + c21 * g1 / dt_ros )&
397                           / aa
398                   r_ros = r_ros_ini + a31 * g1 + a32 * g2
399                   drdt  = ddenom * ventilation_effect(n) * ( e_a / e_s - 1.0_wp - &
400                                                              afactor / r_ros +    &
401                                                              bfactor / r_ros**3   &
402                                                            ) / r_ros
403
404                   g3    = ( drdt +  &
405                             ( c31 * g1 + c32 * g2 ) / dt_ros ) / aa
406                   g4    = ( drdt +  &
407                             ( c41 * g1 + c42 * g2 + c43 * g3 ) / dt_ros ) / aa
408                   r_ros = r_ros_ini + b1 * g1 + b2 * g2 + b3 * g3 + b4 * g4
409
410                   dt_ros_sum = dt_ros_sum_ini + dt_ros
411
412                   IF ( dt_ros_sum == dt_ros_sum_ini )  THEN
413                      message_string = 'zero stepsize in Rosenbrock method'
414                      CALL message( 'lpm_droplet_condensation', 'PA0348', 2,   &
415                                    2, 0, 6, 0 )
416                   ENDIF
417!
418!--                Calculate error
419                   err_ros = e1 * g1 + e2 * g2 + e3 * g3 + e4 * g4
420                   errmax  = 0.0_wp
421                   errmax  = MAX( errmax, ABS( err_ros / r_ros_ini ) ) / eps_ros
422!
423!--                Leave loop if accuracy is sufficient, otherwise try again
424!--                with a reduced stepsize
425                   IF ( errmax <= 1.0_wp )  THEN
426                      EXIT
427                   ELSE
428                      dt_ros = MAX( ABS( 0.9_wp * dt_ros * errmax**pshrnk ),   &
429                                    shrnk * ABS( dt_ros ) )
430                   ENDIF
431
432                ENDDO  ! loop for stepsize adjustment
433
434!
435!--             Calculate next internal time step
436                IF ( errmax > errcon )  THEN
437                   dt_ros_next = 0.9_wp * dt_ros * errmax**pgrow
438                ELSE
439                   dt_ros_next = grow * dt_ros
440                ENDIF
441
442!
443!--             Estimated time step is reduced if the PALM time step is exceeded
444                IF ( ( dt_ros_next + dt_ros_sum ) >= dt_3d )  THEN
445                   dt_ros = dt_3d - dt_ros_sum
446                ELSE
447                   dt_ros = dt_ros_next
448                ENDIF
449
450             ENDDO
451!
452!--          Store internal time step value for next PALM step
453             particles(n)%rvar1 = dt_ros_next
454
455!
456!--          Radius should not fall below 1E-8 because Rosenbrock method may
457!--          lead to errors otherwise
458             new_r(n) = MAX( r_ros, particles(n)%rvar2 )
459!
460!--          Check if calculated droplet radius change is reasonable since in
461!--          case of droplet evaporation the Rosenbrock method may lead to
462!--          secondary solutions which are physically unlikely.
463!--          Due to the solution effect the droplets may grow for relative
464!--          humidities below 100%, but change of radius should not be too
465!--          large. In case of unreasonable droplet growth the Rosenbrock
466!--          method is recalculated using a smaller initial time step.
467!--          Limiting values are tested for droplets down to 1.0E-7
468             IF ( new_r(n) - particles(n)%radius >= 3.0E-7_wp  .AND.  &
469                  e_a / e_s < 0.97_wp )  THEN
470                ros_count = ros_count + 1
471                repeat = .TRUE.
472             ENDIF
473
474          ENDDO    ! Rosenbrock method
475
476       ENDIF
477
478       delta_r = new_r(n) - particles(n)%radius
479
480!
481!--    Sum up the change in volume of liquid water for the respective grid
482!--    volume (this is needed later in lpm_calc_liquid_water_content for
483!--    calculating the release of latent heat)
484       ql_c(kp,jp,ip) = ql_c(kp,jp,ip) + particles(n)%weight_factor *          &
485                                   rho_l * 1.33333333_wp * pi *                &
486                                   ( new_r(n)**3 - particles(n)%radius**3 ) /  &
487                                   ( rho_surface * dx * dy * dz )
488       IF ( ql_c(kp,jp,ip) > 100.0_wp )  THEN
489          WRITE( message_string, * ) 'k=',kp,' j=',jp,' i=',ip,      &
490                       ' ql_c=',ql_c(kp,jp,ip), ' &part(',n,')%wf=', &
491                       particles(n)%weight_factor,' delta_r=',delta_r
492          CALL message( 'lpm_droplet_condensation', 'PA0143', 2, 2, -1, 6, 1 )
493       ENDIF
494
495!
496!--    Change the droplet radius
497       IF ( ( new_r(n) - particles(n)%radius ) < 0.0_wp  .AND.        &
498            new_r(n) < 0.0_wp )  THEN
499          WRITE( message_string, * ) '#1 k=',kp,' j=',jp,' i=',ip,    &
500                       ' e_s=',e_s, ' e_a=',e_a,' t_int=',t_int,      &
501                       ' &delta_r=',delta_r,                          &
502                       ' particle_radius=',particles(n)%radius
503          CALL message( 'lpm_droplet_condensation', 'PA0144', 2, 2, -1, 6, 1 )
504       ENDIF
505
506!
507!--    Sum up the total volume of liquid water (needed below for
508!--    re-calculating the weighting factors)
509       ql_v(kp,jp,ip) = ql_v(kp,jp,ip) + particles(n)%weight_factor * new_r(n)**3
510
511       particles(n)%radius = new_r(n)
512
513!
514!--    Determine radius class of the particle needed for collision
515       IF ( ( hall_kernel  .OR.  wang_kernel )  .AND.  use_kernel_tables )     &
516       THEN
517          particles(n)%class = ( LOG( new_r(n) ) - rclass_lbound ) /           &
518                               ( rclass_ubound - rclass_lbound ) *             &
519                               radius_classes
520          particles(n)%class = MIN( particles(n)%class, radius_classes )
521          particles(n)%class = MAX( particles(n)%class, 1 )
522       ENDIF
523
524    ENDDO
525
526    CALL cpu_log( log_point_s(42), 'lpm_droplet_condens', 'stop' )
527
528
529 END SUBROUTINE lpm_droplet_condensation
Note: See TracBrowser for help on using the repository browser.