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

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

lpm_droplet_condensation improved, microphysics partially modularized

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