5 use machine,
only: wp => kind_phys, sp => kind_sngl_prec, dp => kind_dbl_prec
8 calc_refl10cm, calc_effectrad
23 subroutine tempo_init(l_mp_tables, hail_aware_flag, aerosol_aware_flag)
26 logical,
intent(in) :: l_mp_tables
27 logical,
intent(in),
optional :: aerosol_aware_flag, hail_aware_flag
29 integer,
parameter :: open_OK = 0
30 integer,
parameter :: num_records = 5
31 integer :: qr_acr_qg_filesize, qr_acr_qg_check, qr_acr_qg_dim1size, qr_acr_qg_dim9size
32 logical :: qr_acr_qg_exists, qr_acr_qg_hailaware_exists
33 integer :: i, j, k, l, m, n
37 character(len=132) :: message
40 call mp_tempo_params_init()
42 if (
present(hail_aware_flag))
then
43 configs%hail_aware = hail_aware_flag
45 configs%hail_aware = .false.
53 if (
present(aerosol_aware_flag))
then
54 configs%aerosol_aware = aerosol_aware_flag
59 if (configs%hail_aware)
then
62 av_g(idx_bg1) = av_g_old
63 bv_g(idx_bg1) = bv_g_old
111 if (.not.
allocated(tcg_racg))
then
112 allocate(tcg_racg(ntb_g1,ntb_g,dimnrhg,ntb_r1,ntb_r))
117 if (.not.
allocated(tmr_racg))
allocate(tmr_racg(ntb_g1,ntb_g,dimnrhg,ntb_r1,ntb_r))
118 if (.not.
allocated(tcr_gacr))
allocate(tcr_gacr(ntb_g1,ntb_g,dimnrhg,ntb_r1,ntb_r))
119 if (.not.
allocated(tnr_racg))
allocate(tnr_racg(ntb_g1,ntb_g,dimnrhg,ntb_r1,ntb_r))
120 if (.not.
allocated(tnr_gacr))
allocate(tnr_gacr(ntb_g1,ntb_g,dimnrhg,ntb_r1,ntb_r))
123 if (.not.
allocated(tcs_racs1))
allocate(tcs_racs1(ntb_s,ntb_t,ntb_r1,ntb_r))
124 if (.not.
allocated(tmr_racs1))
allocate(tmr_racs1(ntb_s,ntb_t,ntb_r1,ntb_r))
125 if (.not.
allocated(tcs_racs2))
allocate(tcs_racs2(ntb_s,ntb_t,ntb_r1,ntb_r))
126 if (.not.
allocated(tmr_racs2))
allocate(tmr_racs2(ntb_s,ntb_t,ntb_r1,ntb_r))
127 if (.not.
allocated(tcr_sacr1))
allocate(tcr_sacr1(ntb_s,ntb_t,ntb_r1,ntb_r))
128 if (.not.
allocated(tms_sacr1))
allocate(tms_sacr1(ntb_s,ntb_t,ntb_r1,ntb_r))
129 if (.not.
allocated(tcr_sacr2))
allocate(tcr_sacr2(ntb_s,ntb_t,ntb_r1,ntb_r))
130 if (.not.
allocated(tms_sacr2))
allocate(tms_sacr2(ntb_s,ntb_t,ntb_r1,ntb_r))
131 if (.not.
allocated(tnr_racs1))
allocate(tnr_racs1(ntb_s,ntb_t,ntb_r1,ntb_r))
132 if (.not.
allocated(tnr_racs2))
allocate(tnr_racs2(ntb_s,ntb_t,ntb_r1,ntb_r))
133 if (.not.
allocated(tnr_sacr1))
allocate(tnr_sacr1(ntb_s,ntb_t,ntb_r1,ntb_r))
134 if (.not.
allocated(tnr_sacr2))
allocate(tnr_sacr2(ntb_s,ntb_t,ntb_r1,ntb_r))
137 if (.not.
allocated(tpi_qcfz))
allocate(tpi_qcfz(ntb_c,nbc,ntb_t1,ntb_in))
138 if (.not.
allocated(tni_qcfz))
allocate(tni_qcfz(ntb_c,nbc,ntb_t1,ntb_in))
141 if (.not.
allocated(tpi_qrfz))
allocate(tpi_qrfz(ntb_r,ntb_r1,ntb_t1,ntb_in))
142 if (.not.
allocated(tpg_qrfz))
allocate(tpg_qrfz(ntb_r,ntb_r1,ntb_t1,ntb_in))
143 if (.not.
allocated(tni_qrfz))
allocate(tni_qrfz(ntb_r,ntb_r1,ntb_t1,ntb_in))
144 if (.not.
allocated(tnr_qrfz))
allocate(tnr_qrfz(ntb_r,ntb_r1,ntb_t1,ntb_in))
147 if (.not.
allocated(tps_iaus))
allocate(tps_iaus(ntb_i,ntb_i1))
148 if (.not.
allocated(tni_iaus))
allocate(tni_iaus(ntb_i,ntb_i1))
149 if (.not.
allocated(tpi_ide))
allocate(tpi_ide(ntb_i,ntb_i1))
152 if (.not.
allocated(t_efrw))
allocate(t_efrw(nbr,nbc))
153 if (.not.
allocated(t_efsw))
allocate(t_efsw(nbs,nbc))
156 if (.not.
allocated(tnr_rev))
allocate(tnr_rev(nbr,ntb_r1,ntb_r))
157 if (.not.
allocated(tpc_wev))
allocate(tpc_wev(nbc,ntb_c,nbc))
158 if (.not.
allocated(tnc_wev))
allocate(tnc_wev(nbc,ntb_c,nbc))
161 if (.not.
allocated(tnccn_act))
allocate(tnccn_act(ntb_arc,ntb_arw,ntb_art,ntb_arr,ntb_ark))
170 d0i = (xm0i/am_i)**(1.0/bm_i)
171 xm0s = am_s * d0s**bm_s
172 xm0g = am_g(nrhg) * d0g**bm_g
177 cce(2,n) = bm_r + n + 1.
178 cce(3,n) = bm_r + n + 4.
179 cce(4,n) = n + bv_c + 1.
180 cce(5,n) = bm_r + n + bv_c + 1.
181 ccg(1,n) = gamma(cce(1,n))
182 ccg(2,n) = gamma(cce(2,n))
183 ccg(3,n) = gamma(cce(3,n))
184 ccg(4,n) = gamma(cce(4,n))
185 ccg(5,n) = gamma(cce(5,n))
186 ocg1(n) = 1.0 / ccg(1,n)
187 ocg2(n) = 1.0 / ccg(2,n)
191 cie(2) = bm_i + mu_i + 1.
192 cie(3) = bm_i + mu_i + bv_i + 1.
193 cie(4) = mu_i + bv_i + 1.
195 cie(6) = bm_i*0.5 + mu_i + bv_i + 1.
196 cie(7) = bm_i*0.5 + mu_i + 1.
197 cig(1) = gamma(cie(1))
198 cig(2) = gamma(cie(2))
199 cig(3) = gamma(cie(3))
200 cig(4) = gamma(cie(4))
201 cig(5) = gamma(cie(5))
202 cig(6) = gamma(cie(6))
203 cig(7) = gamma(cie(7))
210 cre(3) = bm_r + mu_r + 1.
211 cre(4) = bm_r*2. + mu_r + 1.
212 cre(5) = mu_r + bv_r + 1.
213 cre(6) = bm_r + mu_r + bv_r + 1.
214 cre(7) = bm_r*0.5 + mu_r + bv_r + 1.
215 cre(8) = bm_r + mu_r + bv_r + 3.
216 cre(9) = mu_r + bv_r + 3.
218 cre(11) = 0.5*(bv_r + 5. + 2.*mu_r)
219 cre(12) = bm_r*0.5 + mu_r + 1.
220 cre(13) = bm_r*2. + mu_r + bv_r + 1.
223 crg(n) = gamma(cre(n))
235 cse(4) = bm_s + bv_s + 1.
236 cse(5) = bm_s*2. + bv_s + 1.
237 cse(6) = bm_s*2. + 1.
238 cse(7) = bm_s + mu_s + 1.
239 cse(8) = bm_s + mu_s + 2.
240 cse(9) = bm_s + mu_s + 3.
241 cse(10) = bm_s + mu_s + bv_s + 1.
242 cse(11) = bm_s*2. + mu_s + bv_s + 1.
243 cse(12) = bm_s*2. + mu_s + 1.
245 cse(14) = bm_s + bv_s
247 cse(16) = 1.0 + (1.0 + bv_s)/2.
248 cse(17) = bm_s + bv_s + 2.
251 csg(n) = gamma(cse(n))
260 cge(3,:) = bm_g + mu_g + 1.
261 cge(4,:) = bm_g*2. + mu_g + 1.
262 cge(10,:) = mu_g + 2.
263 cge(12,:) = bm_g*0.5 + mu_g + 1.
266 cge(5,m) = bm_g*2. + mu_g + bv_g(m) + 1.
267 cge(6,m) = bm_g + mu_g + bv_g(m) + 1.
268 cge(7,m) = bm_g*0.5 + mu_g + bv_g(m) + 1.
269 cge(8,m) = mu_g + bv_g(m) + 1.
270 cge(9,m) = mu_g + bv_g(m) + 3.
271 cge(11,m) = 0.5*(bv_g(m) + 5. + 2.*mu_g)
276 cgg(n,m) = gamma(cge(n,m))
284 oamg(m) = 1.0 / am_g(m)
285 ocmg(m) = oamg(m)**obmg
288 oge1 = 1.0 / cge(1,1)
289 ogg1 = 1.0 / cgg(1,1)
290 ogg2 = 1.0 / cgg(2,1)
291 ogg3 = 1.0 / cgg(3,1)
297 t1_qr_qc = pi * 0.25 * av_r * crg(9)
298 t1_qr_qi = pi * 0.25 * av_r * crg(9)
299 t2_qr_qi = pi * 0.25 * am_r*av_r * crg(8)
305 t1_qs_qc = pi * 0.25 * av_s
308 t1_qs_qi = pi * 0.25 * av_s
311 t1_qr_ev = 0.78 * crg(10)
312 t2_qr_ev = 0.308 * sc3 * sqrt(av_r) * crg(11)
316 t2_qs_sd = 0.28 * sc3 * sqrt(av_s)
319 t1_qs_me = pi * 4. *c_sqrd * olfus * 0.86
320 t2_qs_me = pi * 4. *c_sqrd * olfus * 0.28 * sc3 * sqrt(av_s)
323 t1_qg_sd = 0.86 * cgg(10,1)
327 t1_qg_me = pi * 4. * c_cube * olfus * 0.86 * cgg(10,1)
332 nic2 = nint(log10(r_c(1)))
333 nii2 = nint(log10(r_i(1)))
334 nii3 = nint(log10(nt_i(1)))
335 nir2 = nint(log10(r_r(1)))
336 nir3 = nint(log10(n0r_exp(1)))
337 nis2 = nint(log10(r_s(1)))
338 nig2 = nint(log10(r_g(1)))
339 nig3 = nint(log10(n0g_exp(1)))
340 niin2 = nint(log10(nt_in(1)))
346 dc(n) = dc(n-1) + 1.0e-6_dp
347 dtc(n) = (dc(n) - dc(n-1))
351 call create_bins(numbins=nbi, lowbin=d0i*1.0_dp, highbin=d0s*2.0_dp, &
352 bins=di, deltabins=dti)
355 call create_bins(numbins=nbr, lowbin=d0r*1.0_dp, highbin=0.005_dp, &
356 bins=dr, deltabins=dtr)
359 call create_bins(numbins=nbs, lowbin=d0s*1.0_dp, highbin=0.02_dp, &
360 bins=ds, deltabins=dts)
363 call create_bins(numbins=nbg, lowbin=d0g*1.0_dp, highbin=0.05_dp, &
364 bins=dg, deltabins=dtg)
367 call create_bins(numbins=nbc, lowbin=1.0_dp, highbin=3000.0_dp, &
369 t_nc = t_nc * 1.0e6_dp
370 nic1 = log(t_nc(nbc)/t_nc(1))
380 tcg_racg(i,j,n,k,m) = 0.0_dp
381 tmr_racg(i,j,n,k,m) = 0.0_dp
382 tcr_gacr(i,j,n,k,m) = 0.0_dp
383 tnr_racg(i,j,n,k,m) = 0.0_dp
384 tnr_gacr(i,j,n,k,m) = 0.0_dp
395 tcs_racs1(i,j,k,m) = 0.0_dp
396 tmr_racs1(i,j,k,m) = 0.0_dp
397 tcs_racs2(i,j,k,m) = 0.0_dp
398 tmr_racs2(i,j,k,m) = 0.0_dp
399 tcr_sacr1(i,j,k,m) = 0.0_dp
400 tms_sacr1(i,j,k,m) = 0.0_dp
401 tcr_sacr2(i,j,k,m) = 0.0_dp
402 tms_sacr2(i,j,k,m) = 0.0_dp
403 tnr_racs1(i,j,k,m) = 0.0_dp
404 tnr_racs2(i,j,k,m) = 0.0_dp
405 tnr_sacr1(i,j,k,m) = 0.0_dp
406 tnr_sacr2(i,j,k,m) = 0.0_dp
416 tpi_qrfz(i,j,k,m) = 0.0_dp
417 tni_qrfz(i,j,k,m) = 0.0_dp
418 tpg_qrfz(i,j,k,m) = 0.0_dp
419 tnr_qrfz(i,j,k,m) = 0.0_dp
424 tpi_qcfz(i,j,k,m) = 0.0_dp
425 tni_qcfz(i,j,k,m) = 0.0_dp
433 tps_iaus(i,j) = 0.0_dp
434 tni_iaus(i,j) = 0.0_dp
435 tpi_ide(i,j) = 0.0_dp
451 tnr_rev(i,j,k) = 0.0_dp
459 tpc_wev(i,j,k) = 0.0_dp
460 tnc_wev(i,j,k) = 0.0_dp
470 tnccn_act(i,j,k,l,m) = 1.0
479 if (.not. l_mp_tables)
return
500 if (configs%hail_aware)
then
501 using_hail_aware_table = .true.
502 open(unit=mp_unit,file=
'MP_TEMPO_HAILAWARE_QRacrQG_DATA.DBL',form=
'unformatted',status=
'old',action=
'read', &
503 iostat=istat, convert=
'big_endian')
507 read(mp_unit) tcg_racg
508 read(mp_unit) tmr_racg
509 read(mp_unit) tcr_gacr
510 read(mp_unit) tnr_racg
511 read(mp_unit) tnr_gacr
514 inquire(file=
'MP_TEMPO_HAILAWARE_QRacrQG_DATA.DBL', exist=qr_acr_qg_hailaware_exists)
515 inquire(file=
'MP_TEMPO_QRacrQG_DATA.DBL', exist=qr_acr_qg_exists)
517 if (qr_acr_qg_hailaware_exists)
then
518 using_hail_aware_table = .true.
519 open(unit=mp_unit,file=
'MP_TEMPO_HAILAWARE_QRacrQG_DATA.DBL',form=
'unformatted',status=
'old', &
520 action=
'read',iostat=istat, convert=
'big_endian')
524 elseif (qr_acr_qg_exists)
then
525 using_hail_aware_table = .false.
526 open(unit=mp_unit,file=
'MP_TEMPO_QRacrQG_DATA.DBL',form=
'unformatted',status=
'old', &
527 action=
'read',iostat=istat, convert=
'big_endian')
534 read(mp_unit) tcg_racg
535 read(mp_unit) tmr_racg
536 read(mp_unit) tcr_gacr
537 read(mp_unit) tnr_racg
538 read(mp_unit) tnr_gacr
543 open(unit=mp_unit,file=
'MP_TEMPO_QRacrQS_DATA.DBL',form=
'unformatted',status=
'old',action=
'read', &
544 iostat=istat, convert=
'big_endian')
548 read(mp_unit) tcs_racs1
549 read(mp_unit) tmr_racs1
550 read(mp_unit) tcs_racs2
551 read(mp_unit) tmr_racs2
552 read(mp_unit) tcr_sacr1
553 read(mp_unit) tms_sacr1
554 read(mp_unit) tcr_sacr2
555 read(mp_unit) tms_sacr2
556 read(mp_unit) tnr_racs1
557 read(mp_unit) tnr_racs2
558 read(mp_unit) tnr_sacr1
559 read(mp_unit) tnr_sacr2
563 open(unit=mp_unit,file=
'MP_TEMPO_freezeH2O_DATA.DBL',form=
'unformatted',status=
'old',action=
'read', &
564 iostat=istat, convert=
'big_endian')
568 read(mp_unit) tpi_qrfz
569 read(mp_unit) tni_qrfz
570 read(mp_unit) tpg_qrfz
571 read(mp_unit) tnr_qrfz
572 read(mp_unit) tpi_qcfz
573 read(mp_unit) tni_qcfz
577 open(unit=mp_unit,file=
'MP_TEMPO_QIautQS_DATA.DBL',form=
'unformatted',status=
'old',action=
'read', &
578 iostat=istat, convert=
'big_endian')
582 read(mp_unit) tpi_ide
583 read(mp_unit) tps_iaus
584 read(mp_unit) tni_iaus
602 end subroutine tempo_init
609 subroutine tempo_3d_to_1d_driver(qv, qc, qr, qi, qs, qg, qb, ni, nr, nc, ng, &
610 nwfa, nifa, nwfa2d, nifa2d, th, pii, p, w, dz, dt_in, itimestep, &
611 rainnc, rainncv, snownc, snowncv, graupelnc, graupelncv, sr, frainnc, &
612 refl_10cm, diagflag, do_radar_ref, re_cloud, re_ice, re_snow, &
613 has_reqc, has_reqi, has_reqs, ntc, muc, &
614 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte)
617 integer,
intent(in) :: ids,ide, jds,jde, kds,kde, ims,ime, jms,jme, kms,kme, its,ite, jts,jte, kts,kte
618 real,
dimension(ims:ime, kms:kme, jms:jme),
intent(inout) :: qv, qc, qr, qi, qs, qg, ni, nr, th
619 real,
dimension(ims:ime, kms:kme, jms:jme),
intent(inout) :: re_cloud, re_ice, re_snow
620 integer,
intent(in) :: has_reqc, has_reqi, has_reqs
621 real,
dimension(ims:ime, kms:kme, jms:jme),
intent(in) :: pii, p, w, dz
622 real,
dimension(ims:ime, jms:jme),
intent(inout) :: rainnc, rainncv, sr
623 real,
optional,
dimension(:,:),
intent(inout) :: frainnc
624 real,
dimension(ims:ime, jms:jme),
intent(in),
optional :: ntc, muc
625 real,
dimension(ims:ime, kms:kme, jms:jme),
intent(inout),
optional :: nc, nwfa, nifa, qb, ng
626 real,
dimension(ims:ime, jms:jme),
intent(in),
optional :: nwfa2d, nifa2d
627 real,
dimension(ims:ime, kms:kme, jms:jme),
intent(inout),
optional :: refl_10cm
628 real,
dimension(ims:ime, jms:jme),
intent(inout),
optional :: snownc, snowncv, graupelnc, graupelncv
629 real,
intent(in) :: dt_in
630 integer,
intent(in) :: itimestep
633 real,
dimension(kts:kte) :: qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, qb1d, ni1d, nr1d, nc1d, ng1d, &
634 nwfa1d, nifa1d, t1d, p1d, w1d, dz1d, rho, dbz
635 real,
dimension(kts:kte) :: re_qc1d, re_qi1d, re_qs1d
636 real,
dimension(its:ite, jts:jte) :: pcp_ra, pcp_sn, pcp_gr, pcp_ic, frain
637 real :: dt, pptrain, pptsnow, pptgraul, pptice
638 real :: qc_max, qr_max, qs_max, qi_max, qg_max, ni_max, nr_max
642 double precision :: lamg, lam_exp, lamr, n0_min, n0_exp
644 integer :: imax_qc, imax_qr, imax_qi, imax_qs, imax_qg, imax_ni, imax_nr
645 integer :: jmax_qc, jmax_qr, jmax_qi, jmax_qs, jmax_qg, jmax_ni, jmax_nr
646 integer :: kmax_qc, kmax_qr, kmax_qi, kmax_qs, kmax_qg, kmax_ni, kmax_nr
647 integer :: i_start, j_start, i_end, j_end
648 logical,
optional,
intent(in) :: diagflag
649 integer,
optional,
intent(in) :: do_radar_ref
650 character(len=132) :: message
655 i_end = min(ite, ide)
656 j_end = min(jte, jde)
689 j_loop:
do j = j_start, j_end
690 i_loop:
do i = i_start, i_end
696 if (
present(snowncv))
then
699 if (
present(graupelncv))
then
700 graupelncv(i,j) = 0.0
705 if (
present(ntc))
then
716 t1d(k) = th(i,k,j) * pii(i,k,j)
728 rho(k) = roverrv * p1d(k) / (r * t1d(k) * (qv1d(k)+roverrv))
731 if (
present(nwfa))
then
732 if (
present(nwfa2d))
then
734 nwfa(i,k,j) = nwfa(i,k,j) + nwfa2d(i,j) * dt
737 nwfa(i,k,j) = max(nwfa_default, min(aero_max, nwfa(i,k,j)))
738 nwfa1d(k) = nwfa(i,k,j)
740 nwfa1d(k) = nwfa_default / rho(k)
741 configs%aerosol_aware = .false.
744 if (
present(nifa))
then
745 nifa1d(k) = nifa(i,k,j)
747 nifa1d(k) = nifa_default / rho(k)
748 configs%aerosol_aware = .false.
751 if (
present(nc))
then
754 nc1d(k) = nt_c / rho(k)
755 configs%aerosol_aware = .false.
760 if ((
present(ng)) .and. (
present(qb)))
then
761 configs%hail_aware = .true.
769 if (qg1d(k) > r1)
then
770 ygra1 = log10(max(1.e-9, qg1d(k)*rho(k)))
771 zans1 = 3.0 + 2.0/7.0*(ygra1+8.0)
772 zans1 = max(2.0, min(zans1, 6.0))
773 n0_exp = 10.0**(zans1)
774 lam_exp = (n0_exp*am_g(idx_bg1)*cgg(1,1) / (rho(k)*qg1d(k)))**oge1
775 lamg = lam_exp * (cgg(3,1)*ogg2*ogg1)**obmg
776 ng1d(k) = cgg(2,1) * ogg3*rho(k) * qg1d(k) * lamg**bm_g / am_g(idx_bg1)
777 ng1d(k) = max(r2, (ng1d(k)/rho(k)))
778 qb1d(k) = qg1d(k) / rho_g(idx_bg1)
796 call mp_tempo_main(qv1d=qv1d, qc1d=qc1d, qi1d=qi1d, qr1d=qr1d, qs1d=qs1d, qg1d=qg1d, qb1d=qb1d, &
797 ni1d=ni1d, nr1d=nr1d, nc1d=nc1d, ng1d=ng1d, nwfa1d=nwfa1d, nifa1d=nifa1d, t1d=t1d, p1d=p1d, &
798 w1d=w1d, dzq=dz1d, pptrain=pptrain, pptsnow=pptsnow, pptgraul=pptgraul, pptice=pptice, &
799 kts=kts, kte=kte, dt=dt, ii=i, jj=j, configs=configs)
803 pcp_ra(i,j) = pptrain
804 pcp_sn(i,j) = pptsnow
805 pcp_gr(i,j) = pptgraul
807 rainncv(i,j) = pptrain + pptsnow + pptgraul + pptice
808 rainnc(i,j) = rainnc(i,j) + pptrain + pptsnow + pptgraul + pptice
809 if (
present(snowncv) .and.
present(snownc))
then
810 snowncv(i,j) = pptsnow + pptice
811 snownc(i,j) = snownc(i,j) + pptsnow + pptice
813 if (
present(graupelncv) .and.
present(graupelnc))
then
814 graupelncv(i,j) = pptgraul
815 graupelnc(i,j) = graupelnc(i,j) + pptgraul
817 if (
present(frainnc))
then
819 if(t1d(1) <= 273.)
then
820 frain(i,j) = pcp_ra(i,j)
822 frainnc(i,j) = frainnc(i,j) + frain(i,j)
825 sr(i,j) = (pptsnow + pptgraul + pptice) / (rainncv(i,j) + r1)
828 if ((
present(ng)) .and. (
present(qb)))
then
836 if (qg1d(k) > r1)
then
837 ygra1 = log10(max(1.e-9, qg1d(k)*rho(k)))
838 zans1 = 3.0 + 2.0/7.0*(ygra1+8.0)
839 zans1 = max(2.0, min(zans1, 6.0))
840 n0_exp = 10.0**(zans1)
841 lam_exp = (n0_exp*am_g(idx_bg1)*cgg(1,1) / (rho(k)*qg1d(k)))**oge1
842 lamg = lam_exp * (cgg(3,1)*ogg2*ogg1)**obmg
843 ng1d(k) = cgg(2,1) * ogg3*rho(k) * qg1d(k) * lamg**bm_g / am_g(idx_bg1)
844 ng1d(k) = max(r2, (ng1d(k)/rho(k)))
845 qb1d(k) = qg1d(k) / rho_g(idx_bg1)
854 if (
present(nc)) nc(i,k,j) = nc1d(k)
855 if (
present(nwfa)) nwfa(i,k,j) = nwfa1d(k)
856 if (
present(nifa)) nifa(i,k,j) = nifa1d(k)
865 th(i,k,j) = t1d(k) / pii(i,k,j)
870 call calc_refl10cm (qv1d=qv1d, qc1d=qc1d, qr1d=qr1d, nr1d=nr1d, qs1d=qs1d, qg1d=qg1d, ng1d=ng1d, qb1d=qb1d, &
871 t1d=t1d, p1d=p1d, dbz=dbz, kts=kts, kte=kte, ii=i, jj=j, configs=configs)
873 refl_10cm(i,k,j) = max(-35.0_wp, dbz(k))
877 if (has_reqc /= 0 .and. has_reqi /= 0 .and. has_reqs /= 0)
then
883 call calc_effectrad (t1d=t1d, p1d=p1d, qv1d=qv1d, qc1d=qc1d, nc1d=nc1d, qi1d=qi1d, &
884 ni1d=ni1d, qs1d=qs1d, re_qc1d=re_qc1d, re_qi1d=re_qi1d, re_qs1d=re_qs1d, &
885 kts=kts, kte=kte, configs=configs)
887 re_cloud(i,k,j) = max(2.49e-6, min(re_qc1d(k), 50.e-6))
888 re_ice(i,k,j) = max(4.99e-6, min(re_qi1d(k), 125.e-6))
889 re_snow(i,k,j) = max(9.99e-6, min(re_qs1d(k), 999.e-6))
896 end subroutine tempo_3d_to_1d_driver