30 subroutine mp_nssl_init(ncol, nlev, errflg, errmsg, threads, restart, &
31 mpirank, mpiroot,mpicomm, &
33 ccw, crw, cci, csw, chw, vh, &
34 con_g, con_rd, con_cp, con_rv, &
35 con_t0c, con_cliq, con_csol, con_eps, &
36 imp_physics, imp_physics_nssl, &
37 nssl_cccn, nssl_alphah, nssl_alphahl, &
38 nssl_alphar, nssl_ehw0, nssl_ehlw0, &
39 nssl_ccn_on, nssl_hail_on, nssl_invertccn, nssl_3moment )
49 integer,
intent(in) :: ncol
50 integer,
intent(in) :: nlev
51 character(len=*),
intent( out) :: errmsg
52 integer,
intent( out) :: errflg
53 integer,
intent(in) :: threads
54 logical,
intent(in) :: restart
55 real(kind_phys),
intent(in) :: con_g, con_rd, con_cp, con_rv, &
56 con_t0c, con_cliq, con_csol, con_eps
58 integer,
intent(in) :: mpirank
59 integer,
intent(in) :: mpiroot
60 type(mpi_comm),
intent(in) :: mpicomm
61 integer,
intent(in) :: imp_physics
62 integer,
intent(in) :: imp_physics_nssl
63 real(kind_phys),
intent(in) :: nssl_cccn, nssl_alphah, nssl_alphahl
64 real(kind_phys),
intent(in) :: nssl_alphar, nssl_ehw0, nssl_ehlw0
65 logical,
intent(in) :: nssl_ccn_on, nssl_hail_on, nssl_invertccn, nssl_3moment
67 real(kind_phys),
intent(inout) :: qc (:,:)
68 real(kind_phys),
intent(inout) :: qr (:,:)
69 real(kind_phys),
intent(inout) :: qi (:,:)
70 real(kind_phys),
intent(inout) :: qs (:,:)
71 real(kind_phys),
intent(inout) :: qh (:,:)
72 real(kind_phys),
intent(inout),
optional :: ccw(:,:)
73 real(kind_phys),
intent(inout) :: crw(:,:)
74 real(kind_phys),
intent(inout) :: cci(:,:)
75 real(kind_phys),
intent(inout) :: csw(:,:)
76 real(kind_phys),
intent(inout) :: chw(:,:)
77 real(kind_phys),
intent(inout),
optional :: vh (:,:)
80 integer :: ims,ime, jms,jme, kms,kme, nx, nz, i,k
81 real(kind_phys) :: nssl_params(20)
83 real(kind_phys),
parameter :: qmin = 1.e-12
85 logical :: missing_vars = .false.
94 if ( is_initialized )
return
96 IF ( .not. is_initialized )
THEN
97 if (mpirank==mpiroot)
then
98 write(0,*)
' ----------------------------------------------------------------------------------------------------------------'
99 write(0,*)
' --- CCPP NSSL MP scheme init ---'
100 write(0,*)
' ----------------------------------------------------------------------------------------------------------------'
101 write(6,*)
' ----------------------------------------------------------------------------------------------------------------'
102 write(6,*)
' --- CCPP NSSL MP scheme init ---'
103 write(6,*)
' ----------------------------------------------------------------------------------------------------------------'
107 if ( imp_physics /= imp_physics_nssl )
then
108 write(errmsg,
'(*(a))')
"Logic error: namelist choice of microphysics is different from NSSL"
115 con_g, con_rd, con_cp, con_rv, con_t0c, con_cliq, con_csol, con_eps )
133 nssl_params(4) = 4.e5
134 nssl_params(5) = 4.e4
135 nssl_params(6) = 4.e5
136 nssl_params(7) = 4.e6
137 nssl_params(8) = 500.
138 nssl_params(9) = 800.
139 nssl_params(10) = 100.
141 nssl_qccn = nssl_cccn/1.225
146 IF ( nssl_hail_on )
THEN
152 IF ( nssl_3moment )
THEN
159 CALL nssl_2mom_init(ims,ime, jms,jme, kms,kme,nssl_params,ipctmp=ipc,mixphase=0, &
160 ihvol=ihailv,nssl_ehw0=nssl_ehw0,nssl_ehlw0=nssl_ehlw0,errmsg=errmsg, &
161 nssl_alphar=nssl_alphar, &
162 nssl_alphah=nssl_alphah, &
163 nssl_alphahl=nssl_alphahl, &
164 nssl_cccn=nssl_cccn, &
165 errflg=errflg,myrank=mpirank,mpiroot=mpiroot)
171 missing_vars = .false.
172 IF ( any( qc > qmin .and. ccw == 0.0 ) ) missing_vars = .true.
173 IF ( .not. missing_vars .and. any( qi > qmin .and. cci == 0.0 ) ) missing_vars = .true.
174 IF ( .not. missing_vars .and. any( qs > qmin .and. csw == 0.0 ) ) missing_vars = .true.
175 IF ( .not. missing_vars .and. any( qr > qmin .and. crw == 0.0 ) ) missing_vars = .true.
176 IF ( .not. missing_vars .and. any( qh > qmin .and. (chw == 0.0 .or. vh == 0.0) ) ) missing_vars = .true.
179 call mpi_allreduce(missing_vars, missing_vars_global, 1, mpi_logical, mpi_lor, mpicomm, ierr)
182 is_initialized = .true.
188 is_initialized = .true.
204 spechum, cccn, cccna, qc, qr, qi, qs, qh, qhl, &
205 ccw, crw, cci, csw, chw, chl, vh, vhl, &
207 tgrs, prslk, prsl, phii, omega, dtp, &
208 prcp, rain, graupel, ice, snow, sr, &
209 refl_10cm, do_radar_ref, first_time_step, restart, &
210 re_cloud, re_ice, re_snow, re_rain, &
211 nleffr, nieffr, nseffr, nreffr, &
212 imp_physics, convert_dry_rho, &
213 imp_physics_nssl, nssl_ccn_on, &
214 nssl_hail_on, nssl_invertccn, nssl_3moment, &
221 integer,
intent(in) :: ncol, nlev
222 real(kind_phys),
intent(in ) :: con_g
223 real(kind_phys),
intent(in ) :: con_rd
224 integer,
intent(in) :: mpirank
226 logical,
intent(in ) :: convert_dry_rho
227 real(kind_phys),
intent(inout) :: spechum(:,:)
228 real(kind_phys),
intent(inout),
optional :: cccn(:,:)
229 real(kind_phys),
intent(inout),
optional :: cccna(:,:)
230 real(kind_phys),
intent(inout) :: qc (:,:)
231 real(kind_phys),
intent(inout) :: qr (:,:)
232 real(kind_phys),
intent(inout) :: qi (:,:)
233 real(kind_phys),
intent(inout) :: qs (:,:)
234 real(kind_phys),
intent(inout) :: qh (:,:)
235 real(kind_phys),
intent(inout),
optional :: qhl(:,:)
236 real(kind_phys),
intent(inout),
optional :: ccw(:,:)
237 real(kind_phys),
intent(inout) :: crw(:,:)
238 real(kind_phys),
intent(inout) :: cci(:,:)
239 real(kind_phys),
intent(inout) :: csw(:,:)
240 real(kind_phys),
intent(inout) :: chw(:,:)
241 real(kind_phys),
intent(inout),
optional :: chl(:,:)
242 real(kind_phys),
intent(inout),
optional :: vh (:,:)
243 real(kind_phys),
intent(inout),
optional :: vhl(:,:)
244 real(kind_phys),
intent(inout),
optional :: zrw(:,:)
245 real(kind_phys),
intent(inout),
optional :: zhw(:,:)
246 real(kind_phys),
intent(inout),
optional :: zhl(:,:)
248 real(kind_phys),
intent(inout) :: tgrs (:,:)
249 real(kind_phys),
intent(in ) :: prsl (:,:)
250 real(kind_phys),
intent(in ) :: prslk(:,:)
251 real(kind_phys),
intent(in ) :: phii (:,:)
252 real(kind_phys),
intent(in ) :: omega(:,:)
253 real(kind_phys),
intent(in ) :: dtp
255 real(kind_phys),
intent( out) :: prcp (:)
256 real(kind_phys),
intent( out),
optional :: rain (:)
257 real(kind_phys),
intent( out),
optional :: graupel(:)
258 real(kind_phys),
intent( out),
optional :: ice (:)
259 real(kind_phys),
intent( out),
optional :: snow (:)
260 real(kind_phys),
intent( out) :: sr (:)
262 real(kind_phys),
intent(inout) :: refl_10cm(:,:)
263 logical,
intent(in ) :: do_radar_ref, first_time_step
264 logical,
intent(in) :: restart
266 real(kind_phys),
intent(inout),
optional :: re_cloud(:,:)
267 real(kind_phys),
intent(inout),
optional :: re_ice(:,:)
268 real(kind_phys),
intent(inout),
optional :: re_snow(:,:)
269 real(kind_phys),
intent(inout),
optional :: re_rain(:,:)
270 integer,
intent(in) :: nleffr, nieffr, nseffr, nreffr
271 integer,
intent(in) :: imp_physics
272 integer,
intent(in) :: imp_physics_nssl
273 logical,
intent(in) :: nssl_ccn_on, nssl_hail_on, nssl_invertccn, nssl_3moment
274 integer,
intent(in) :: ntccn, ntccna
276 integer,
intent(out) :: errflg
277 character(len=*),
intent(out) :: errmsg
283 real(kind_phys) :: rho(1:ncol,1:nlev)
285 real(kind_phys) :: qv_mp(1:ncol,1:nlev)
286 real(kind_phys) :: qc_mp(1:ncol,1:nlev)
287 real(kind_phys) :: qr_mp(1:ncol,1:nlev)
288 real(kind_phys) :: qi_mp(1:ncol,1:nlev)
289 real(kind_phys) :: qs_mp(1:ncol,1:nlev)
290 real(kind_phys) :: qh_mp(1:ncol,1:nlev)
291 real(kind_phys) :: qhl_mp(1:ncol,1:nlev)
292 real(kind_phys) :: nc_mp(1:ncol,1:nlev)
293 real(kind_phys) :: nr_mp(1:ncol,1:nlev)
294 real(kind_phys) :: ni_mp(1:ncol,1:nlev)
295 real(kind_phys) :: ns_mp(1:ncol,1:nlev)
296 real(kind_phys) :: nh_mp(1:ncol,1:nlev)
297 real(kind_phys) :: nhl_mp(1:ncol,1:nlev)
298 real(kind_phys) :: cn_mp(1:ncol,1:nlev)
299 real(kind_phys) :: cna_mp(1:ncol,1:nlev)
300 real(kind_phys) :: cccn_mp(1:ncol,1:nlev)
301 real(kind_phys) :: cccna_mp(1:ncol,1:nlev)
302 real(kind_phys) :: vh_mp(1:ncol,1:nlev)
305 real(kind_phys) :: vhl_mp(1:ncol,1:nlev)
306 real(kind_phys) :: zrw_mp(1:ncol,1:nlev)
307 real(kind_phys) :: zhw_mp(1:ncol,1:nlev)
308 real(kind_phys) :: zhl_mp(1:ncol,1:nlev)
310 real(kind_phys) :: w(1:ncol,1:nlev)
311 real(kind_phys) :: dz(1:ncol,1:nlev)
314 real(kind_phys) :: rain_mp(1:ncol)
315 real(kind_phys) :: graupel_mp(1:ncol)
316 real(kind_phys) :: ice_mp(1:ncol)
317 real(kind_phys) :: snow_mp(1:ncol)
318 real(kind_phys) :: delta_rain_mp(1:ncol)
319 real(kind_phys) :: delta_graupel_mp(1:ncol)
320 real(kind_phys) :: delta_ice_mp(1:ncol)
321 real(kind_phys) :: delta_snow_mp(1:ncol)
323 real(kind_phys) :: xrain_mp(1:ncol)
324 real(kind_phys) :: xgraupel_mp(1:ncol)
325 real(kind_phys) :: xice_mp(1:ncol)
326 real(kind_phys) :: xsnow_mp(1:ncol)
327 real(kind_phys) :: xdelta_rain_mp(1:ncol)
328 real(kind_phys) :: xdelta_graupel_mp(1:ncol)
329 real(kind_phys) :: xdelta_ice_mp(1:ncol)
330 real(kind_phys) :: xdelta_snow_mp(1:ncol)
334 integer :: do_radar_ref_mp
336 logical :: do_effective_radii
337 real(kind_phys) :: re_cloud_mp(1:ncol,1:nlev)
338 real(kind_phys) :: re_ice_mp(1:ncol,1:nlev)
339 real(kind_phys) :: re_snow_mp(1:ncol,1:nlev)
340 real(kind_phys) :: re_rain_mp(1:ncol,1:nlev)
346 integer :: ids,ide, jds,jde, kds,kde, &
347 ims,ime, jms,jme, kms,kme, &
348 its,ite, jts,jte, kts,kte, i,j,k
351 real(kind_phys),
parameter :: dtpmax = 60.
352 real(kind_phys) :: dtptmp
353 integer,
parameter :: ndebug = 0
355 real(kind_phys) :: cwmas
357 real(kind_phys),
allocatable :: an(:,:,:,:)
366 IF ( ndebug >= 1 )
write(0,*)
'In physics nssl_run'
370 if (.not.is_initialized)
then
371 write(errmsg, fmt=
'((a))')
'mp_nssl_run called before mp_nssl_init'
376 invertccn = nssl_invertccn
380 qv_mp = spechum/(1.0_kind_phys-spechum)
381 IF ( convert_dry_rho )
THEN
382 qc_mp = qc/(1.0_kind_phys-spechum)
383 qr_mp = qr/(1.0_kind_phys-spechum)
384 qi_mp = qi/(1.0_kind_phys-spechum)
385 qs_mp = qs/(1.0_kind_phys-spechum)
386 qh_mp = qh/(1.0_kind_phys-spechum)
388 IF ( nssl_ccn_on ) cccn_mp = cccn/(1.0_kind_phys-spechum)
390 nc_mp = ccw/(1.0_kind_phys-spechum)
391 nr_mp = crw/(1.0_kind_phys-spechum)
392 ni_mp = cci/(1.0_kind_phys-spechum)
393 ns_mp = csw/(1.0_kind_phys-spechum)
394 nh_mp = chw/(1.0_kind_phys-spechum)
395 vh_mp = vh/(1.0_kind_phys-spechum)
396 IF ( nssl_3moment )
THEN
397 zrw_mp = zrw/(1.0_kind_phys-spechum)
398 zhw_mp = zhw/(1.0_kind_phys-spechum)
400 IF ( nssl_hail_on )
THEN
401 qhl_mp = qhl/(1.0_kind_phys-spechum)
402 nhl_mp = chl/(1.0_kind_phys-spechum)
403 vhl_mp = vhl/(1.0_kind_phys-spechum)
404 IF ( nssl_3moment )
THEN
405 zhl_mp = zhl/(1.0_kind_phys-spechum)
415 IF ( nssl_ccn_on ) cccn_mp = cccn
423 IF ( nssl_3moment )
THEN
427 IF ( nssl_hail_on )
THEN
431 IF ( nssl_3moment )
THEN
438 IF ( nssl_hail_on )
THEN
448 write(6,*)
'nsslrun: qc,max ccw = ',mpirank,maxval(qc_mp),maxval(nc_mp),sum(nc_mp)
449 IF ( mpirank == 1 )
THEN
452 IF ( qc_mp(i,k) > 1.e-6 .and. nc_mp(i,k) <= 1.e-9 )
THEN
453 write(6,*)
'i,k,qc,nc,ccn = ',i,k,qc_mp(i,k),nc_mp(i,k),cccn_mp(i,k)
467 rho = prsl/(con_rd*tgrs)
470 w = -omega/(rho*con_g)
473 dz = (phii(:,2:nlev+1) - phii(:,1:nlev)) / con_g
490 xdelta_graupel_mp = 0
493 IF ( ndebug > 1 )
THEN
494 write(*,*)
'Max q before micro'
495 write(*,*)
'qc = ',1000.*maxval(qc_mp)
496 write(*,*)
'qr = ',1000.*maxval(qr_mp)
497 write(*,*)
'qi = ',1000.*maxval(qi_mp)
498 write(*,*)
'qs = ',1000.*maxval(qs_mp)
499 write(*,*)
'qh = ',1000.*maxval(qh_mp)
500 IF ( nssl_hail_on )
write(*,*)
'qhl = ',1000.*maxval(qhl_mp)
501 write(*,*)
'ccw = ',1.e-6*maxval(ccw*rho)
505 if (do_radar_ref)
then
513 do_effective_radii = .false.
514 IF ( nleffr > 0 .and. nieffr > 0 .and. nseffr > 0 .and. nreffr > 0 )
THEN
516 do_effective_radii = .true.
521 else if (nleffr < 1 .and. nieffr < 1 .and. nseffr < 1 .and. nreffr < 1 )
then
522 do_effective_radii = .false.
528 write(errmsg,fmt=
'(*(a))')
'Logic error in mp_nssl_run:', &
529 ' hydrometeor radius calculation logic problem'
560 IF ( ndebug >= 1 )
write(0,*)
'call nssl_2mom_driver'
562 IF ( dtp > 1.25001*dtpmax )
THEN
563 ntmul = max(2, nint( dtp/dtpmax ) )
570 IF ( first_time_step .and. ( .not. restart .or. missing_vars_global ) )
THEN
572 IF ( nssl_ccn_on )
THEN
573 IF ( invertccn )
THEN
587 allocate( an(ncol,1,nlev,na) )
590 cwmas = 1000.*0.523599*(2.*9.e-6)**3
592 call calcnfromq(nx=ncol,ny=1,nz=nlev,an=an,na=na,nor=0,norz=0,dn=rho, &
593 & qcw=qc_mp,qci=qi_mp, &
594 & ccw=nc_mp,cci=ni_mp, &
595 & cccn=cccn_mp,qv=qv_mp, invertccn_flag=nssl_invertccn, cwmasin=cwmas )
598 write(6,*)
'nsslrun2: qc,max ccw = ',mpirank,maxval(qc_mp),maxval(nc_mp),sum(nc_mp)
599 IF ( mpirank == 1 )
THEN
602 IF ( qc_mp(i,k) > 1.e-6 .and. nc_mp(i,k) <= 1.e-9 )
THEN
603 write(6,*)
'i2,k,qc,nc,ccn = ',i,k,qc_mp(i,k),nc_mp(i,k),cccn_mp(i,k)
614 IF ( nssl_ccn_on )
THEN
615 IF ( invertccn )
THEN
618 cn_mp = nssl_qccn - cccn_mp
619 cn_mp = max(0.0_kind_phys, cn_mp)
624 IF ( ntccna > 0 )
THEN
635 itimestep = itimestep + 1
639 IF ( nssl_ccn_on )
THEN
642 itimestep=itimestep, &
665 cna=cna_mp, f_cna=.false. , &
672 rainnc=xrain_mp, rainncv=xdelta_rain_mp, &
673 snownc=xsnow_mp, snowncv=xdelta_snow_mp, &
674 grplnc=xgraupel_mp, &
675 grplncv=xdelta_graupel_mp, &
678 diagflag = diagflag, &
679 errmsg=errmsg,errflg=errflg, &
680 re_cloud=re_cloud_mp, &
682 re_snow=re_snow_mp, &
683 re_rain=re_rain_mp, &
688 ids=ids,ide=ide, jds=jds,jde=jde, kds=kds,kde=kde, &
689 ims=ims,ime=ime, jms=jms,jme=jme, kms=kms,kme=kme, &
690 its=its,ite=ite, jts=jts,jte=jte, kts=kts,kte=kte &
696 itimestep=itimestep, &
726 rainnc=xrain_mp, rainncv=xdelta_rain_mp, &
727 snownc=xsnow_mp, snowncv=xdelta_snow_mp, &
728 grplnc=xgraupel_mp, &
729 grplncv=xdelta_graupel_mp, &
732 diagflag = diagflag, &
733 errmsg=errmsg,errflg=errflg, &
734 re_cloud=re_cloud_mp, &
736 re_snow=re_snow_mp, &
737 re_rain=re_rain_mp, &
742 ids=ids,ide=ide, jds=jds,jde=jde, kds=kds,kde=kde, &
743 ims=ims,ime=ime, jms=jms,jme=jme, kms=kms,kme=kme, &
744 its=its,ite=ite, jts=jts,jte=jte, kts=kts,kte=kte &
750 delta_rain_mp(i) = delta_rain_mp(i) + xdelta_rain_mp(i)
751 delta_graupel_mp(i) = delta_graupel_mp(i) + xdelta_graupel_mp(i)
752 delta_ice_mp(i) = delta_ice_mp(i) + xdelta_ice_mp(i)
753 delta_snow_mp(i) = delta_snow_mp(i) + xdelta_snow_mp(i)
761 IF ( nssl_ccn_on )
THEN
762 IF ( invertccn )
THEN
763 cccn_mp = max(0.0_kind_phys, nssl_qccn - cn_mp )
776 IF ( ndebug > 1 )
write(0,*)
'done nssl_2mom_driver'
778 if (errflg/=0)
return
780 IF ( ndebug > 1 )
THEN
781 write(*,*)
'Max q after micro'
782 write(*,*)
'qc = ',1000.*maxval(qc_mp)
783 write(*,*)
'qr = ',1000.*maxval(qr_mp)
784 write(*,*)
'qi = ',1000.*maxval(qi_mp)
785 write(*,*)
'qs = ',1000.*maxval(qs_mp)
786 write(*,*)
'qh = ',1000.*maxval(qh_mp)
787 IF ( nssl_hail_on )
THEN
788 write(*,*)
'qhl = ',1000.*maxval(qhl_mp)
790 write(*,*)
'ccw = ',1.e-6*maxval(ccw*rho)
791 IF ( 1000.*maxval(qc_mp) > 0.5 .or. 1000.*maxval(qi_mp) > 0.09 .or. 1000.*maxval(qs_mp) > 0.1 )
THEN
792 IF ( nssl_ccn_on )
THEN
793 write(*,*)
'qc, ccn, ccw, tt, qi+qs by height'
795 write(*,*) qc_mp(1,k)*1000., cccn(1,k)*rho(1,k)*1.e-6, ccw(1,k)*rho(1,k)*1.e-6, tgrs(1,k), (qs_mp(1,k)+qi_mp(1,k))*1000.
798 write(*,*)
'qc, ccn, ccw, tt, qi+qs by height'
800 write(*,*) qc_mp(1,k)*1000., cccn(1,k)*rho(1,k)*1.e-6, 0.0, tgrs(1,k), (qs_mp(1,k)+qi_mp(1,k))*1000.
808 spechum = qv_mp/(1.0_kind_phys+qv_mp)
809 IF ( convert_dry_rho )
THEN
810 qc = qc_mp/(1.0_kind_phys+qv_mp)
811 qr = qr_mp/(1.0_kind_phys+qv_mp)
812 qi = qi_mp/(1.0_kind_phys+qv_mp)
813 qs = qs_mp/(1.0_kind_phys+qv_mp)
814 qh = qh_mp/(1.0_kind_phys+qv_mp)
815 IF ( nssl_ccn_on ) cccn = cccn_mp/(1.0_kind_phys+qv_mp)
817 ccw = nc_mp/(1.0_kind_phys+qv_mp)
818 crw = nr_mp/(1.0_kind_phys+qv_mp)
819 cci = ni_mp/(1.0_kind_phys+qv_mp)
820 csw = ns_mp/(1.0_kind_phys+qv_mp)
821 chw = nh_mp/(1.0_kind_phys+qv_mp)
822 vh = vh_mp/(1.0_kind_phys+qv_mp)
823 IF ( nssl_3moment )
THEN
824 zrw = zrw_mp/(1.0_kind_phys+qv_mp)
825 zhw = zhw_mp/(1.0_kind_phys+qv_mp)
827 IF ( nssl_hail_on )
THEN
828 qhl = qhl_mp/(1.0_kind_phys+qv_mp)
829 chl = nhl_mp/(1.0_kind_phys+qv_mp)
830 vhl = vhl_mp/(1.0_kind_phys+qv_mp)
831 IF ( nssl_3moment )
THEN
832 zhl = zhl_mp/(1.0_kind_phys+qv_mp)
842 IF ( nssl_ccn_on ) cccn = cccn_mp
850 IF ( nssl_3moment )
THEN
854 IF ( nssl_hail_on )
THEN
858 IF ( nssl_3moment )
THEN
870 prcp = max(0.0, delta_rain_mp/1000.0_kind_phys)
871 graupel = max(0.0, delta_graupel_mp/1000.0_kind_phys)
872 ice = max(0.0, delta_ice_mp/1000.0_kind_phys)
873 snow = max(0.0, delta_snow_mp/1000.0_kind_phys)
874 rain = max(0.0, (delta_rain_mp - (delta_graupel_mp + delta_ice_mp + delta_snow_mp))/1000.0_kind_phys)
878 if (do_effective_radii)
then
880 re_cloud = re_cloud_mp*1.0e6_kind_phys
881 re_ice = re_ice_mp*1.0e6_kind_phys
882 re_snow = re_snow_mp*1.0e6_kind_phys
883 re_rain = re_rain_mp*1.0e6_kind_phys
886 IF ( ndebug >= 1 )
write(0,*)
'mp_nssl: end'
subroutine, public nssl_2mom_driver(qv, qc, qr, qi, qs, qh, qhl, ccw, crw, cci, csw, chw, chl, cn, vhw, vhl, cna, cni, f_cn, f_cna, f_cina, f_qc, f_qr, f_qi, f_qs, f_qh, f_qhl, cnuf, f_cnuf, zrw, zhw, zhl, f_zrw, f_zhw, f_zhl, f_vhw, f_vhl, qsw, qhw, qhlw, tt, th, pii, p, w, dn, dz, dtp, itimestep, is_theta_or_temp, ntmul, ntcnt, lastloop, rainnc, rainncv, dx, dy, axtra, snownc, snowncv, grplnc, grplncv, sr, hailnc, hailncv, hail_maxk1, hail_max2d, nwp_diagnostics, tkediss, re_cloud, re_ice, re_snow, re_rain, re_graup, re_hail, has_reqc, has_reqi, has_reqs, has_reqr, has_reqg, has_reqh, rainncw2, rainnci2, dbz, vzf, compdbz, rscghis_2d, rscghis_2dp, rscghis_2dn, scr, scw, sci, scs, sch, schl, sctot, elec_physics, induc, elecz, scion, sciona, noninduc, noninducp, noninducn, pcc2, pre2, depsubr, mnucf2, melr2, ctr2, rim1_2, rim2_2, rim3_2, nctr2, nnuccd2, nnucf2, effc2, effr2, effi2, effs2, effg2, fc2, fr2, fi2, fs2, fg2, fnc2, fnr2, fni2, fns2, fng2, ipelectmp, diagflag, ke_diag, errmsg, errflg, nssl_progn, wetscav_on, rainprod, evapprod, cu_used, qrcuten, qscuten, qicuten, qccuten, ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte)
Driver subroutine that copies state data to local 2D arrays for microphysics calls.
subroutine, public mp_nssl_run(ncol, nlev, con_g, con_rd, mpirank, spechum, cccn, cccna, qc, qr, qi, qs, qh, qhl, ccw, crw, cci, csw, chw, chl, vh, vhl, zrw, zhw, zhl, tgrs, prslk, prsl, phii, omega, dtp, prcp, rain, graupel, ice, snow, sr, refl_10cm, do_radar_ref, first_time_step, restart, re_cloud, re_ice, re_snow, re_rain, nleffr, nieffr, nseffr, nreffr, imp_physics, convert_dry_rho, imp_physics_nssl, nssl_ccn_on, nssl_hail_on, nssl_invertccn, nssl_3moment, ntccn, ntccna, errflg, errmsg)