29 subroutine mp_nssl_init(ncol, nlev, errflg, errmsg, threads, restart, &
30 mpirank, mpiroot,mpicomm, &
32 ccw, crw, cci, csw, chw, vh, &
33 con_g, con_rd, con_cp, con_rv, &
34 con_t0c, con_cliq, con_csol, con_eps, &
35 imp_physics, imp_physics_nssl, &
36 nssl_cccn, nssl_alphah, nssl_alphahl, &
37 nssl_alphar, nssl_ehw0, nssl_ehlw0, &
38 nssl_ccn_on, nssl_hail_on, nssl_invertccn, nssl_3moment )
48 integer,
intent(in) :: ncol
49 integer,
intent(in) :: nlev
50 character(len=*),
intent( out) :: errmsg
51 integer,
intent( out) :: errflg
52 integer,
intent(in) :: threads
53 logical,
intent(in) :: restart
54 real(kind_phys),
intent(in) :: con_g, con_rd, con_cp, con_rv, &
55 con_t0c, con_cliq, con_csol, con_eps
57 integer,
intent(in) :: mpirank
58 integer,
intent(in) :: mpiroot
59 type(mpi_comm),
intent(in) :: mpicomm
60 integer,
intent(in) :: imp_physics
61 integer,
intent(in) :: imp_physics_nssl
62 real(kind_phys),
intent(in) :: nssl_cccn, nssl_alphah, nssl_alphahl
63 real(kind_phys),
intent(in) :: nssl_alphar, nssl_ehw0, nssl_ehlw0
64 logical,
intent(in) :: nssl_ccn_on, nssl_hail_on, nssl_invertccn, nssl_3moment
66 real(kind_phys),
intent(inout) :: qc (:,:)
67 real(kind_phys),
intent(inout) :: qr (:,:)
68 real(kind_phys),
intent(inout) :: qi (:,:)
69 real(kind_phys),
intent(inout) :: qs (:,:)
70 real(kind_phys),
intent(inout) :: qh (:,:)
71 real(kind_phys),
intent(inout),
optional :: ccw(:,:)
72 real(kind_phys),
intent(inout) :: crw(:,:)
73 real(kind_phys),
intent(inout) :: cci(:,:)
74 real(kind_phys),
intent(inout) :: csw(:,:)
75 real(kind_phys),
intent(inout) :: chw(:,:)
76 real(kind_phys),
intent(inout),
optional :: vh (:,:)
79 integer :: ims,ime, jms,jme, kms,kme, nx, nz, i,k
80 real(kind_phys) :: nssl_params(20)
82 real(kind_phys),
parameter :: qmin = 1.e-12
84 logical :: missing_vars = .false.
93 if ( is_initialized )
return
95 IF ( .not. is_initialized )
THEN
96 if (mpirank==mpiroot)
then
97 write(0,*)
' ----------------------------------------------------------------------------------------------------------------'
98 write(0,*)
' --- CCPP NSSL MP scheme init ---'
99 write(0,*)
' ----------------------------------------------------------------------------------------------------------------'
100 write(6,*)
' ----------------------------------------------------------------------------------------------------------------'
101 write(6,*)
' --- CCPP NSSL MP scheme init ---'
102 write(6,*)
' ----------------------------------------------------------------------------------------------------------------'
106 if ( imp_physics /= imp_physics_nssl )
then
107 write(errmsg,
'(*(a))')
"Logic error: namelist choice of microphysics is different from NSSL"
114 con_g, con_rd, con_cp, con_rv, con_t0c, con_cliq, con_csol, con_eps )
132 nssl_params(4) = 4.e5
133 nssl_params(5) = 4.e4
134 nssl_params(6) = 4.e5
135 nssl_params(7) = 4.e6
136 nssl_params(8) = 500.
137 nssl_params(9) = 800.
138 nssl_params(10) = 100.
140 nssl_qccn = nssl_cccn/1.225
145 IF ( nssl_hail_on )
THEN
151 IF ( nssl_3moment )
THEN
158 CALL nssl_2mom_init(ims,ime, jms,jme, kms,kme,nssl_params,ipctmp=ipc,mixphase=0, &
159 ihvol=ihailv,nssl_ehw0=nssl_ehw0,nssl_ehlw0=nssl_ehlw0,errmsg=errmsg, &
160 nssl_alphar=nssl_alphar, &
161 nssl_alphah=nssl_alphah, &
162 nssl_alphahl=nssl_alphahl, &
163 nssl_cccn=nssl_cccn, &
164 errflg=errflg,myrank=mpirank,mpiroot=mpiroot)
170 missing_vars = .false.
171 IF ( any( qc > qmin .and. ccw == 0.0 ) ) missing_vars = .true.
172 IF ( .not. missing_vars .and. any( qi > qmin .and. cci == 0.0 ) ) missing_vars = .true.
173 IF ( .not. missing_vars .and. any( qs > qmin .and. csw == 0.0 ) ) missing_vars = .true.
174 IF ( .not. missing_vars .and. any( qr > qmin .and. crw == 0.0 ) ) missing_vars = .true.
175 IF ( .not. missing_vars .and. any( qh > qmin .and. (chw == 0.0 .or. vh == 0.0) ) ) missing_vars = .true.
178 call mpi_allreduce(missing_vars, missing_vars_global, 1, mpi_logical, mpi_lor, mpicomm, ierr)
181 is_initialized = .true.
187 is_initialized = .true.
203 spechum, cccn, cccna, qc, qr, qi, qs, qh, qhl, &
204 ccw, crw, cci, csw, chw, chl, vh, vhl, &
206 tgrs, prslk, prsl, phii, omega, dtp, &
207 prcp, rain, graupel, ice, snow, sr, &
208 refl_10cm, do_radar_ref, first_time_step, restart, &
209 re_cloud, re_ice, re_snow, re_rain, &
210 nleffr, nieffr, nseffr, nreffr, &
211 imp_physics, convert_dry_rho, &
212 imp_physics_nssl, nssl_ccn_on, &
213 nssl_hail_on, nssl_invertccn, nssl_3moment, &
220 integer,
intent(in) :: ncol, nlev
221 real(kind_phys),
intent(in ) :: con_g
222 real(kind_phys),
intent(in ) :: con_rd
223 integer,
intent(in) :: mpirank
225 logical,
intent(in ) :: convert_dry_rho
226 real(kind_phys),
intent(inout) :: spechum(:,:)
227 real(kind_phys),
intent(inout),
optional :: cccn(:,:)
228 real(kind_phys),
intent(inout),
optional :: cccna(:,:)
229 real(kind_phys),
intent(inout) :: qc (:,:)
230 real(kind_phys),
intent(inout) :: qr (:,:)
231 real(kind_phys),
intent(inout) :: qi (:,:)
232 real(kind_phys),
intent(inout) :: qs (:,:)
233 real(kind_phys),
intent(inout) :: qh (:,:)
234 real(kind_phys),
intent(inout),
optional :: qhl(:,:)
235 real(kind_phys),
intent(inout),
optional :: ccw(:,:)
236 real(kind_phys),
intent(inout) :: crw(:,:)
237 real(kind_phys),
intent(inout) :: cci(:,:)
238 real(kind_phys),
intent(inout) :: csw(:,:)
239 real(kind_phys),
intent(inout) :: chw(:,:)
240 real(kind_phys),
intent(inout),
optional :: chl(:,:)
241 real(kind_phys),
intent(inout),
optional :: vh (:,:)
242 real(kind_phys),
intent(inout),
optional :: vhl(:,:)
243 real(kind_phys),
intent(inout),
optional :: zrw(:,:)
244 real(kind_phys),
intent(inout),
optional :: zhw(:,:)
245 real(kind_phys),
intent(inout),
optional :: zhl(:,:)
247 real(kind_phys),
intent(inout) :: tgrs (:,:)
248 real(kind_phys),
intent(in ) :: prsl (:,:)
249 real(kind_phys),
intent(in ) :: prslk(:,:)
250 real(kind_phys),
intent(in ) :: phii (:,:)
251 real(kind_phys),
intent(in ) :: omega(:,:)
252 real(kind_phys),
intent(in ) :: dtp
254 real(kind_phys),
intent( out) :: prcp (:)
255 real(kind_phys),
intent( out),
optional :: rain (:)
256 real(kind_phys),
intent( out),
optional :: graupel(:)
257 real(kind_phys),
intent( out),
optional :: ice (:)
258 real(kind_phys),
intent( out),
optional :: snow (:)
259 real(kind_phys),
intent( out) :: sr (:)
261 real(kind_phys),
intent(inout) :: refl_10cm(:,:)
262 logical,
intent(in ) :: do_radar_ref, first_time_step
263 logical,
intent(in) :: restart
265 real(kind_phys),
intent(inout),
optional :: re_cloud(:,:)
266 real(kind_phys),
intent(inout),
optional :: re_ice(:,:)
267 real(kind_phys),
intent(inout),
optional :: re_snow(:,:)
268 real(kind_phys),
intent(inout),
optional :: re_rain(:,:)
269 integer,
intent(in) :: nleffr, nieffr, nseffr, nreffr
270 integer,
intent(in) :: imp_physics
271 integer,
intent(in) :: imp_physics_nssl
272 logical,
intent(in) :: nssl_ccn_on, nssl_hail_on, nssl_invertccn, nssl_3moment
273 integer,
intent(in) :: ntccn, ntccna
275 integer,
intent(out) :: errflg
276 character(len=*),
intent(out) :: errmsg
282 real(kind_phys) :: rho(1:ncol,1:nlev)
284 real(kind_phys) :: qv_mp(1:ncol,1:nlev)
285 real(kind_phys) :: qc_mp(1:ncol,1:nlev)
286 real(kind_phys) :: qr_mp(1:ncol,1:nlev)
287 real(kind_phys) :: qi_mp(1:ncol,1:nlev)
288 real(kind_phys) :: qs_mp(1:ncol,1:nlev)
289 real(kind_phys) :: qh_mp(1:ncol,1:nlev)
290 real(kind_phys) :: qhl_mp(1:ncol,1:nlev)
291 real(kind_phys) :: nc_mp(1:ncol,1:nlev)
292 real(kind_phys) :: nr_mp(1:ncol,1:nlev)
293 real(kind_phys) :: ni_mp(1:ncol,1:nlev)
294 real(kind_phys) :: ns_mp(1:ncol,1:nlev)
295 real(kind_phys) :: nh_mp(1:ncol,1:nlev)
296 real(kind_phys) :: nhl_mp(1:ncol,1:nlev)
297 real(kind_phys) :: cn_mp(1:ncol,1:nlev)
298 real(kind_phys) :: cna_mp(1:ncol,1:nlev)
299 real(kind_phys) :: cccn_mp(1:ncol,1:nlev)
300 real(kind_phys) :: cccna_mp(1:ncol,1:nlev)
301 real(kind_phys) :: vh_mp(1:ncol,1:nlev)
304 real(kind_phys) :: vhl_mp(1:ncol,1:nlev)
305 real(kind_phys) :: zrw_mp(1:ncol,1:nlev)
306 real(kind_phys) :: zhw_mp(1:ncol,1:nlev)
307 real(kind_phys) :: zhl_mp(1:ncol,1:nlev)
309 real(kind_phys) :: w(1:ncol,1:nlev)
310 real(kind_phys) :: dz(1:ncol,1:nlev)
313 real(kind_phys) :: rain_mp(1:ncol)
314 real(kind_phys) :: graupel_mp(1:ncol)
315 real(kind_phys) :: ice_mp(1:ncol)
316 real(kind_phys) :: snow_mp(1:ncol)
317 real(kind_phys) :: delta_rain_mp(1:ncol)
318 real(kind_phys) :: delta_graupel_mp(1:ncol)
319 real(kind_phys) :: delta_ice_mp(1:ncol)
320 real(kind_phys) :: delta_snow_mp(1:ncol)
322 real(kind_phys) :: xrain_mp(1:ncol)
323 real(kind_phys) :: xgraupel_mp(1:ncol)
324 real(kind_phys) :: xice_mp(1:ncol)
325 real(kind_phys) :: xsnow_mp(1:ncol)
326 real(kind_phys) :: xdelta_rain_mp(1:ncol)
327 real(kind_phys) :: xdelta_graupel_mp(1:ncol)
328 real(kind_phys) :: xdelta_ice_mp(1:ncol)
329 real(kind_phys) :: xdelta_snow_mp(1:ncol)
333 integer :: do_radar_ref_mp
335 logical :: do_effective_radii
336 real(kind_phys) :: re_cloud_mp(1:ncol,1:nlev)
337 real(kind_phys) :: re_ice_mp(1:ncol,1:nlev)
338 real(kind_phys) :: re_snow_mp(1:ncol,1:nlev)
339 real(kind_phys) :: re_rain_mp(1:ncol,1:nlev)
345 integer :: ids,ide, jds,jde, kds,kde, &
346 ims,ime, jms,jme, kms,kme, &
347 its,ite, jts,jte, kts,kte, i,j,k
350 real(kind_phys),
parameter :: dtpmax = 60.
351 real(kind_phys) :: dtptmp
352 integer,
parameter :: ndebug = 0
354 real(kind_phys) :: cwmas
356 real(kind_phys),
allocatable :: an(:,:,:,:)
365 IF ( ndebug >= 1 )
write(0,*)
'In physics nssl_run'
369 if (.not.is_initialized)
then
370 write(errmsg, fmt=
'((a))')
'mp_nssl_run called before mp_nssl_init'
375 invertccn = nssl_invertccn
379 qv_mp = spechum/(1.0_kind_phys-spechum)
380 IF ( convert_dry_rho )
THEN
381 qc_mp = qc/(1.0_kind_phys-spechum)
382 qr_mp = qr/(1.0_kind_phys-spechum)
383 qi_mp = qi/(1.0_kind_phys-spechum)
384 qs_mp = qs/(1.0_kind_phys-spechum)
385 qh_mp = qh/(1.0_kind_phys-spechum)
387 IF ( nssl_ccn_on ) cccn_mp = cccn/(1.0_kind_phys-spechum)
389 nc_mp = ccw/(1.0_kind_phys-spechum)
390 nr_mp = crw/(1.0_kind_phys-spechum)
391 ni_mp = cci/(1.0_kind_phys-spechum)
392 ns_mp = csw/(1.0_kind_phys-spechum)
393 nh_mp = chw/(1.0_kind_phys-spechum)
394 vh_mp = vh/(1.0_kind_phys-spechum)
395 IF ( nssl_3moment )
THEN
396 zrw_mp = zrw/(1.0_kind_phys-spechum)
397 zhw_mp = zhw/(1.0_kind_phys-spechum)
399 IF ( nssl_hail_on )
THEN
400 qhl_mp = qhl/(1.0_kind_phys-spechum)
401 nhl_mp = chl/(1.0_kind_phys-spechum)
402 vhl_mp = vhl/(1.0_kind_phys-spechum)
403 IF ( nssl_3moment )
THEN
404 zhl_mp = zhl/(1.0_kind_phys-spechum)
414 IF ( nssl_ccn_on ) cccn_mp = cccn
422 IF ( nssl_3moment )
THEN
426 IF ( nssl_hail_on )
THEN
430 IF ( nssl_3moment )
THEN
437 IF ( nssl_hail_on )
THEN
447 write(6,*)
'nsslrun: qc,max ccw = ',mpirank,maxval(qc_mp),maxval(nc_mp),sum(nc_mp)
448 IF ( mpirank == 1 )
THEN
451 IF ( qc_mp(i,k) > 1.e-6 .and. nc_mp(i,k) <= 1.e-9 )
THEN
452 write(6,*)
'i,k,qc,nc,ccn = ',i,k,qc_mp(i,k),nc_mp(i,k),cccn_mp(i,k)
466 rho = prsl/(con_rd*tgrs)
469 w = -omega/(rho*con_g)
472 dz = (phii(:,2:nlev+1) - phii(:,1:nlev)) / con_g
489 xdelta_graupel_mp = 0
492 IF ( ndebug > 1 )
THEN
493 write(*,*)
'Max q before micro'
494 write(*,*)
'qc = ',1000.*maxval(qc_mp)
495 write(*,*)
'qr = ',1000.*maxval(qr_mp)
496 write(*,*)
'qi = ',1000.*maxval(qi_mp)
497 write(*,*)
'qs = ',1000.*maxval(qs_mp)
498 write(*,*)
'qh = ',1000.*maxval(qh_mp)
499 IF ( nssl_hail_on )
write(*,*)
'qhl = ',1000.*maxval(qhl_mp)
500 write(*,*)
'ccw = ',1.e-6*maxval(ccw*rho)
504 if (do_radar_ref)
then
512 do_effective_radii = .false.
513 IF ( nleffr > 0 .and. nieffr > 0 .and. nseffr > 0 .and. nreffr > 0 )
THEN
515 do_effective_radii = .true.
520 else if (nleffr < 1 .and. nieffr < 1 .and. nseffr < 1 .and. nreffr < 1 )
then
521 do_effective_radii = .false.
527 write(errmsg,fmt=
'(*(a))')
'Logic error in mp_nssl_run:', &
528 ' hydrometeor radius calculation logic problem'
559 IF ( ndebug >= 1 )
write(0,*)
'call nssl_2mom_driver'
561 IF ( dtp > 1.25001*dtpmax )
THEN
562 ntmul = max(2, nint( dtp/dtpmax ) )
569 IF ( first_time_step .and. ( .not. restart .or. missing_vars_global ) )
THEN
571 IF ( nssl_ccn_on )
THEN
572 IF ( invertccn )
THEN
586 allocate( an(ncol,1,nlev,na) )
589 cwmas = 1000.*0.523599*(2.*9.e-6)**3
591 call calcnfromq(nx=ncol,ny=1,nz=nlev,an=an,na=na,nor=0,norz=0,dn=rho, &
592 & qcw=qc_mp,qci=qi_mp, &
593 & ccw=nc_mp,cci=ni_mp, &
594 & cccn=cccn_mp,qv=qv_mp, invertccn_flag=nssl_invertccn, cwmasin=cwmas )
597 write(6,*)
'nsslrun2: qc,max ccw = ',mpirank,maxval(qc_mp),maxval(nc_mp),sum(nc_mp)
598 IF ( mpirank == 1 )
THEN
601 IF ( qc_mp(i,k) > 1.e-6 .and. nc_mp(i,k) <= 1.e-9 )
THEN
602 write(6,*)
'i2,k,qc,nc,ccn = ',i,k,qc_mp(i,k),nc_mp(i,k),cccn_mp(i,k)
613 IF ( nssl_ccn_on )
THEN
614 IF ( invertccn )
THEN
617 cn_mp = nssl_qccn - cccn_mp
618 cn_mp = max(0.0_kind_phys, cn_mp)
623 IF ( ntccna > 0 )
THEN
634 itimestep = itimestep + 1
638 IF ( nssl_ccn_on )
THEN
641 itimestep=itimestep, &
664 cna=cna_mp, f_cna=.false. , &
671 rainnc=xrain_mp, rainncv=xdelta_rain_mp, &
672 snownc=xsnow_mp, snowncv=xdelta_snow_mp, &
673 grplnc=xgraupel_mp, &
674 grplncv=xdelta_graupel_mp, &
677 diagflag = diagflag, &
678 errmsg=errmsg,errflg=errflg, &
679 re_cloud=re_cloud_mp, &
681 re_snow=re_snow_mp, &
682 re_rain=re_rain_mp, &
687 ids=ids,ide=ide, jds=jds,jde=jde, kds=kds,kde=kde, &
688 ims=ims,ime=ime, jms=jms,jme=jme, kms=kms,kme=kme, &
689 its=its,ite=ite, jts=jts,jte=jte, kts=kts,kte=kte &
695 itimestep=itimestep, &
725 rainnc=xrain_mp, rainncv=xdelta_rain_mp, &
726 snownc=xsnow_mp, snowncv=xdelta_snow_mp, &
727 grplnc=xgraupel_mp, &
728 grplncv=xdelta_graupel_mp, &
731 diagflag = diagflag, &
732 errmsg=errmsg,errflg=errflg, &
733 re_cloud=re_cloud_mp, &
735 re_snow=re_snow_mp, &
736 re_rain=re_rain_mp, &
741 ids=ids,ide=ide, jds=jds,jde=jde, kds=kds,kde=kde, &
742 ims=ims,ime=ime, jms=jms,jme=jme, kms=kms,kme=kme, &
743 its=its,ite=ite, jts=jts,jte=jte, kts=kts,kte=kte &
749 delta_rain_mp(i) = delta_rain_mp(i) + xdelta_rain_mp(i)
750 delta_graupel_mp(i) = delta_graupel_mp(i) + xdelta_graupel_mp(i)
751 delta_ice_mp(i) = delta_ice_mp(i) + xdelta_ice_mp(i)
752 delta_snow_mp(i) = delta_snow_mp(i) + xdelta_snow_mp(i)
760 IF ( nssl_ccn_on )
THEN
761 IF ( invertccn )
THEN
762 cccn_mp = max(0.0_kind_phys, nssl_qccn - cn_mp )
775 IF ( ndebug > 1 )
write(0,*)
'done nssl_2mom_driver'
777 if (errflg/=0)
return
779 IF ( ndebug > 1 )
THEN
780 write(*,*)
'Max q after micro'
781 write(*,*)
'qc = ',1000.*maxval(qc_mp)
782 write(*,*)
'qr = ',1000.*maxval(qr_mp)
783 write(*,*)
'qi = ',1000.*maxval(qi_mp)
784 write(*,*)
'qs = ',1000.*maxval(qs_mp)
785 write(*,*)
'qh = ',1000.*maxval(qh_mp)
786 IF ( nssl_hail_on )
THEN
787 write(*,*)
'qhl = ',1000.*maxval(qhl_mp)
789 write(*,*)
'ccw = ',1.e-6*maxval(ccw*rho)
790 IF ( 1000.*maxval(qc_mp) > 0.5 .or. 1000.*maxval(qi_mp) > 0.09 .or. 1000.*maxval(qs_mp) > 0.1 )
THEN
791 IF ( nssl_ccn_on )
THEN
792 write(*,*)
'qc, ccn, ccw, tt, qi+qs by height'
794 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.
797 write(*,*)
'qc, ccn, ccw, tt, qi+qs by height'
799 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.
807 spechum = qv_mp/(1.0_kind_phys+qv_mp)
808 IF ( convert_dry_rho )
THEN
809 qc = qc_mp/(1.0_kind_phys+qv_mp)
810 qr = qr_mp/(1.0_kind_phys+qv_mp)
811 qi = qi_mp/(1.0_kind_phys+qv_mp)
812 qs = qs_mp/(1.0_kind_phys+qv_mp)
813 qh = qh_mp/(1.0_kind_phys+qv_mp)
814 IF ( nssl_ccn_on ) cccn = cccn_mp/(1.0_kind_phys+qv_mp)
816 ccw = nc_mp/(1.0_kind_phys+qv_mp)
817 crw = nr_mp/(1.0_kind_phys+qv_mp)
818 cci = ni_mp/(1.0_kind_phys+qv_mp)
819 csw = ns_mp/(1.0_kind_phys+qv_mp)
820 chw = nh_mp/(1.0_kind_phys+qv_mp)
821 vh = vh_mp/(1.0_kind_phys+qv_mp)
822 IF ( nssl_3moment )
THEN
823 zrw = zrw_mp/(1.0_kind_phys+qv_mp)
824 zhw = zhw_mp/(1.0_kind_phys+qv_mp)
826 IF ( nssl_hail_on )
THEN
827 qhl = qhl_mp/(1.0_kind_phys+qv_mp)
828 chl = nhl_mp/(1.0_kind_phys+qv_mp)
829 vhl = vhl_mp/(1.0_kind_phys+qv_mp)
830 IF ( nssl_3moment )
THEN
831 zhl = zhl_mp/(1.0_kind_phys+qv_mp)
841 IF ( nssl_ccn_on ) cccn = cccn_mp
849 IF ( nssl_3moment )
THEN
853 IF ( nssl_hail_on )
THEN
857 IF ( nssl_3moment )
THEN
869 prcp = max(0.0, delta_rain_mp/1000.0_kind_phys)
870 graupel = max(0.0, delta_graupel_mp/1000.0_kind_phys)
871 ice = max(0.0, delta_ice_mp/1000.0_kind_phys)
872 snow = max(0.0, delta_snow_mp/1000.0_kind_phys)
873 rain = max(0.0, (delta_rain_mp - (delta_graupel_mp + delta_ice_mp + delta_snow_mp))/1000.0_kind_phys)
877 if (do_effective_radii)
then
879 re_cloud = re_cloud_mp*1.0e6_kind_phys
880 re_ice = re_ice_mp*1.0e6_kind_phys
881 re_snow = re_snow_mp*1.0e6_kind_phys
882 re_rain = re_rain_mp*1.0e6_kind_phys
885 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)