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

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

initialization of aerosol spectra added

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