47 public riem_solver3, riem_solver_c, update_dz_c, update_dz_d, nest_halo_nh
48 public riem_solver3_fwd, riem_solver_c_fwd, update_dz_c_fwd, update_dz_d_fwd, nest_halo_nh_fwd
50 real,
parameter::
r3 = 1./3.
75 SUBROUTINE riem_solver3_fwd(ms, dt, is, ie, js, je, km, ng, isd, ied, &
76 & jsd, jed, akap, cappa, cp, ptop, zs, q_con, w, delz, pt, delp, zh, &
77 & pe, ppe, pk3, pk, peln, ws, scale_m, p_fac, a_imp, use_logp, &
86 INTEGER,
INTENT(IN) :: ms, is, ie, js, je, km, ng
87 INTEGER,
INTENT(IN) :: isd, ied, jsd, jed
89 REAL,
INTENT(IN) :: dt
90 REAL,
INTENT(IN) :: akap, cp, ptop, p_fac, a_imp, scale_m
91 REAL,
INTENT(IN) :: zs(isd:ied, jsd:jed)
92 LOGICAL,
INTENT(IN) :: last_call, use_logp, fp_out
93 REAL,
INTENT(IN) :: ws(is:ie, js:je)
94 REAL,
DIMENSION(isd:, jsd:, :),
INTENT(IN) :: q_con, cappa
95 REAL,
DIMENSION(isd:ied, jsd:jed, km),
INTENT(IN) :: delp, pt
96 REAL,
DIMENSION(isd:ied, jsd:jed, km+1),
INTENT(INOUT) :: zh
97 REAL,
DIMENSION(isd:ied, jsd:jed, km),
INTENT(INOUT) :: w
98 REAL,
INTENT(INOUT) :: pe(is-1:ie+1, km+1, js-1:je+1)
100 REAL :: peln(is:ie, km+1, js:je)
101 REAL,
DIMENSION(isd:ied, jsd:jed, km+1) :: ppe
102 REAL :: delz(is-ng:ie+ng, js-ng:je+ng, km)
103 REAL :: pk(is:ie, js:je, km+1)
104 REAL :: pk3(isd:ied, jsd:jed, km+1)
106 REAL,
DIMENSION(is:ie, km) :: dm, dz2, pm2, w2, gm2, cp2
107 REAL,
DIMENSION(is:ie, km+1) :: pem, pe2, peln2, peg, pelng
108 REAL :: gama, rgrav, ptk, peln1
135 ptk = exp(akap*peln1)
144 dm(i, k) = delp(i, j, k)
158 pem(i, k) = pem(i, k-1) + dm(i, k-1)
160 peln2(i, k) = log(pem(i, k))
162 pk3(i, j, k) = exp(akap*peln2(i, k))
168 pm2(i, k) = dm(i, k)/(peln2(i, k+1)-peln2(i, k))
170 dm(i, k) = dm(i, k)*rgrav
172 dz2(i, k) = zh(i, j, k+1) - zh(i, j, k)
174 w2(i, k) = w(i, j, k)
177 IF (a_imp .LT. -0.999)
THEN 178 CALL sim3p0_solver_fwd(dt, is, ie, km,
rdgas, gama, akap, pe2, &
179 & dm, pem, w2, dz2, pt(is:ie, j, 1:km), ws(is:ie&
180 & , j), p_fac, scale_m)
182 ELSE IF (a_imp .LT. -0.5)
THEN 183 IF (a_imp .GE. 0.)
THEN 188 CALL sim3_solver_fwd(dt, is, ie, km,
rdgas, gama, akap, pe2, dm&
189 & , pem, w2, dz2, pt(is:ie, j, 1:km), ws(is:ie, j)&
190 & , abs0, p_fac, scale_m)
192 ELSE IF (a_imp .LE. 0.5)
THEN 193 CALL rim_2d_fwd(ms, dt, is, ie, km,
rdgas, gama, gm2, pe2, dm, &
194 & pm2, w2, dz2, pt(is:ie, j, 1:km), ws(is:ie, j), &
197 ELSE IF (a_imp .GT. 0.999)
THEN 198 CALL sim1_solver_fwd(dt, is, ie, km,
rdgas, gama, gm2, cp2, akap&
199 & , pe2, dm, pm2, pem, w2, dz2, pt(is:ie, j, 1:km)&
200 & , ws(is:ie, j), p_fac)
203 CALL sim_solver_fwd(dt, is, ie, km,
rdgas, gama, gm2, cp2, akap&
204 & , pe2, dm, pm2, pem, w2, dz2, pt(is:ie, j, 1:km), &
205 & ws(is:ie, j), a_imp, p_fac, scale_m)
211 w(i, j, k) = w2(i, k)
213 delz(i, j, k) = dz2(i, k)
220 peln(i, k, j) = peln2(i, k)
222 pk(i, j, k) = pk3(i, j, k)
224 pe(i, k, j) = pem(i, k)
235 ppe(i, j, k) = pe2(i, k) + pem(i, k)
243 ppe(i, j, k) = pe2(i, k)
252 pk3(i, j, k) = peln2(i, k)
261 zh(i, j, km+1) = zs(i, j)
266 zh(i, j, k) = zh(i, j, k+1) - dz2(i, k)
302 SUBROUTINE riem_solver3_bwd(ms, dt, is, ie, js, je, km, ng, isd, ied, &
303 & jsd, jed, akap, cappa, cp, ptop, zs, q_con, w, w_ad, delz, delz_ad, &
304 & pt, pt_ad, delp, delp_ad, zh, zh_ad, pe, pe_ad, ppe, ppe_ad, pk3, &
305 & pk3_ad, pk, pk_ad, peln, peln_ad, ws, ws_ad, scale_m, p_fac, a_imp, &
306 & use_logp, last_call, fp_out)
308 INTEGER,
INTENT(IN) :: ms, is, ie, js, je, km, ng
309 INTEGER,
INTENT(IN) :: isd, ied, jsd, jed
310 REAL,
INTENT(IN) :: dt
311 REAL,
INTENT(IN) :: akap, cp, ptop, p_fac, a_imp, scale_m
312 REAL,
INTENT(IN) :: zs(isd:ied, jsd:jed)
313 LOGICAL,
INTENT(IN) :: last_call, use_logp, fp_out
314 REAL,
INTENT(IN) :: ws(is:ie, js:je)
315 REAL :: ws_ad(is:ie, js:je)
316 REAL,
DIMENSION(isd:, jsd:, :),
INTENT(IN) :: q_con, cappa
317 REAL,
DIMENSION(isd:ied, jsd:jed, km),
INTENT(IN) :: delp, pt
318 REAL,
DIMENSION(isd:ied, jsd:jed, km) :: delp_ad, pt_ad
319 REAL,
DIMENSION(isd:ied, jsd:jed, km+1),
INTENT(INOUT) :: zh
320 REAL,
DIMENSION(isd:ied, jsd:jed, km+1),
INTENT(INOUT) :: zh_ad
321 REAL,
DIMENSION(isd:ied, jsd:jed, km),
INTENT(INOUT) :: w
322 REAL,
DIMENSION(isd:ied, jsd:jed, km),
INTENT(INOUT) :: w_ad
323 REAL,
INTENT(INOUT) :: pe(is-1:ie+1, km+1, js-1:je+1)
324 REAL,
INTENT(INOUT) :: pe_ad(is-1:ie+1, km+1, js-1:je+1)
325 REAL :: peln(is:ie, km+1, js:je)
326 REAL :: peln_ad(is:ie, km+1, js:je)
327 REAL,
DIMENSION(isd:ied, jsd:jed, km+1) :: ppe
328 REAL,
DIMENSION(isd:ied, jsd:jed, km+1) :: ppe_ad
329 REAL :: delz(is-ng:ie+ng, js-ng:je+ng, km)
330 REAL :: delz_ad(is-ng:ie+ng, js-ng:je+ng, km)
331 REAL :: pk(is:ie, js:je, km+1)
332 REAL :: pk_ad(is:ie, js:je, km+1)
333 REAL :: pk3(isd:ied, jsd:jed, km+1)
334 REAL :: pk3_ad(isd:ied, jsd:jed, km+1)
335 REAL,
DIMENSION(is:ie, km) :: dm, dz2, pm2, w2, gm2, cp2
336 REAL,
DIMENSION(is:ie, km) :: dm_ad, dz2_ad, pm2_ad, w2_ad
337 REAL,
DIMENSION(is:ie, km+1) :: pem, pe2, peln2, peg, pelng
338 REAL,
DIMENSION(is:ie, km+1) :: pem_ad, pe2_ad, peln2_ad
339 REAL :: gama, rgrav, ptk, peln1
387 zh_ad(i, j, k+1) = zh_ad(i, j, k+1) + zh_ad(i, j, k)
388 dz2_ad(i, k) = dz2_ad(i, k) - zh_ad(i, j, k)
394 zh_ad(i, j, km+1) = 0.0
397 IF (branch .NE. 0)
THEN 401 peln2_ad(i, k) = peln2_ad(i, k) + pk3_ad(i, j, k)
402 pk3_ad(i, j, k) = 0.0
407 IF (branch .EQ. 0)
THEN 411 pe2_ad(i, k) = pe2_ad(i, k) + ppe_ad(i, j, k)
412 pem_ad(i, k) = pem_ad(i, k) + ppe_ad(i, j, k)
413 ppe_ad(i, j, k) = 0.0
420 pe2_ad(i, k) = pe2_ad(i, k) + ppe_ad(i, j, k)
421 ppe_ad(i, j, k) = 0.0
426 IF (branch .EQ. 0)
THEN 430 pem_ad(i, k) = pem_ad(i, k) + pe_ad(i, k, j)
433 pk3_ad(i, j, k) = pk3_ad(i, j, k) + pk_ad(i, j, k)
436 peln2_ad(i, k) = peln2_ad(i, k) + peln_ad(i, k, j)
437 peln_ad(i, k, j) = 0.0
444 dz2_ad(i, k) = dz2_ad(i, k) + delz_ad(i, j, k)
445 delz_ad(i, j, k) = 0.0
447 w2_ad(i, k) = w2_ad(i, k) + w_ad(i, j, k)
452 IF (branch .LT. 2)
THEN 453 IF (branch .EQ. 0)
THEN 454 CALL sim_solver_bwd(dt, is, ie, km,
rdgas, gama, gm2, cp2, &
455 & akap, pe2, pe2_ad, dm, dm_ad, pm2, pm2_ad, pem, &
456 & pem_ad, w2, w2_ad, dz2, dz2_ad, pt(is:ie, j, 1:&
457 & km), pt_ad(is:ie, j, 1:km), ws(is:ie, j), ws_ad(&
458 & is:ie, j), a_imp, p_fac, scale_m)
460 CALL sim1_solver_bwd(dt, is, ie, km,
rdgas, gama, gm2, cp2, &
461 & akap, pe2, pe2_ad, dm, dm_ad, pm2, pm2_ad, pem&
462 & , pem_ad, w2, w2_ad, dz2, dz2_ad, pt(is:ie, j, &
463 & 1:km), pt_ad(is:ie, j, 1:km), ws(is:ie, j), &
464 & ws_ad(is:ie, j), p_fac)
466 ELSE IF (branch .EQ. 2)
THEN 467 CALL rim_2d_bwd(ms, dt, is, ie, km,
rdgas, gama, gm2, pe2, &
468 & pe2_ad, dm, dm_ad, pm2, pm2_ad, w2, w2_ad, dz2, dz2_ad&
469 & , pt(is:ie, j, 1:km), pt_ad(is:ie, j, 1:km), ws(is:ie&
470 & , j), ws_ad(is:ie, j), .false.)
471 ELSE IF (branch .EQ. 3)
THEN 472 CALL sim3_solver_bwd(dt, is, ie, km,
rdgas, gama, akap, pe2, &
473 & pe2_ad, dm, dm_ad, pem, pem_ad, w2, w2_ad, dz2, &
474 & dz2_ad, pt(is:ie, j, 1:km), pt_ad(is:ie, j, 1:km)&
475 & , ws(is:ie, j), ws_ad(is:ie, j), abs0, p_fac, &
478 CALL sim3p0_solver_bwd(dt, is, ie, km,
rdgas, gama, akap, pe2, &
479 & pe2_ad, dm, dm_ad, pem, pem_ad, w2, w2_ad, dz2&
480 & , dz2_ad, pt(is:ie, j, 1:km), pt_ad(is:ie, j, 1&
481 & :km), ws(is:ie, j), ws_ad(is:ie, j), p_fac, &
486 temp = peln2(i, k+1) - peln2(i, k)
488 w_ad(i, j, k) = w_ad(i, j, k) + w2_ad(i, k)
491 zh_ad(i, j, k+1) = zh_ad(i, j, k+1) + dz2_ad(i, k)
492 zh_ad(i, j, k) = zh_ad(i, j, k) - dz2_ad(i, k)
495 dm_ad(i, k) = pm2_ad(i, k)/temp + rgrav*dm_ad(i, k)
497 temp_ad = -(dm(i, k)*pm2_ad(i, k)/temp**2)
498 peln2_ad(i, k+1) = peln2_ad(i, k+1) + temp_ad
499 peln2_ad(i, k) = peln2_ad(i, k) - temp_ad
506 peln2_ad(i, k) = peln2_ad(i, k) + exp(akap*peln2(i, k))*akap*&
508 pk3_ad(i, j, k) = 0.0
510 pem_ad(i, k) = pem_ad(i, k) + peln2_ad(i, k)/pem(i, k)
513 pem_ad(i, k-1) = pem_ad(i, k-1) + pem_ad(i, k)
514 dm_ad(i, k-1) = dm_ad(i, k-1) + pem_ad(i, k)
520 pk3_ad(i, j, 1) = 0.0
529 delp_ad(i, j, k) = delp_ad(i, j, k) + dm_ad(i, k)
535 SUBROUTINE riem_solver3(ms, dt, is, ie, js, je, km, ng, isd, ied, jsd&
536 & , jed, akap, cappa, cp, ptop, zs, q_con, w, delz, pt, delp, zh, pe, &
537 & ppe, pk3, pk, peln, ws, scale_m, p_fac, a_imp, use_logp, last_call, &
546 INTEGER,
INTENT(IN) :: ms, is, ie, js, je, km, ng
547 INTEGER,
INTENT(IN) :: isd, ied, jsd, jed
549 REAL,
INTENT(IN) :: dt
550 REAL,
INTENT(IN) :: akap, cp, ptop, p_fac, a_imp, scale_m
551 REAL,
INTENT(IN) :: zs(isd:ied, jsd:jed)
552 LOGICAL,
INTENT(IN) :: last_call, use_logp, fp_out
553 REAL,
INTENT(IN) :: ws(is:ie, js:je)
554 REAL,
DIMENSION(isd:, jsd:, :),
INTENT(IN) :: q_con, cappa
555 REAL,
DIMENSION(isd:ied, jsd:jed, km),
INTENT(IN) :: delp, pt
556 REAL,
DIMENSION(isd:ied, jsd:jed, km+1),
INTENT(INOUT) :: zh
557 REAL,
DIMENSION(isd:ied, jsd:jed, km),
INTENT(INOUT) :: w
558 REAL,
INTENT(INOUT) :: pe(is-1:ie+1, km+1, js-1:je+1)
560 REAL,
INTENT(OUT) :: peln(is:ie, km+1, js:je)
561 REAL,
DIMENSION(isd:ied, jsd:jed, km+1),
INTENT(OUT) :: ppe
562 REAL,
INTENT(OUT) :: delz(is-ng:ie+ng, js-ng:je+ng, km)
563 REAL,
INTENT(OUT) :: pk(is:ie, js:je, km+1)
564 REAL,
INTENT(OUT) :: pk3(isd:ied, jsd:jed, km+1)
566 REAL,
DIMENSION(is:ie, km) :: dm, dz2, pm2, w2, gm2, cp2
567 REAL,
DIMENSION(is:ie, km+1) :: pem, pe2, peln2, peg, pelng
568 REAL :: gama, rgrav, ptk, peln1
577 ptk = exp(akap*peln1)
585 dm(i, k) = delp(i, j, k)
595 pem(i, k) = pem(i, k-1) + dm(i, k-1)
596 peln2(i, k) = log(pem(i, k))
597 pk3(i, j, k) = exp(akap*peln2(i, k))
602 pm2(i, k) = dm(i, k)/(peln2(i, k+1)-peln2(i, k))
603 dm(i, k) = dm(i, k)*rgrav
604 dz2(i, k) = zh(i, j, k+1) - zh(i, j, k)
605 w2(i, k) = w(i, j, k)
608 IF (a_imp .LT. -0.999)
THEN 609 CALL sim3p0_solver(dt, is, ie, km,
rdgas, gama, akap, pe2, dm, &
610 & pem, w2, dz2, pt(is:ie, j, 1:km), ws(is:ie, j), &
612 ELSE IF (a_imp .LT. -0.5)
THEN 613 IF (a_imp .GE. 0.)
THEN 618 CALL sim3_solver(dt, is, ie, km,
rdgas, gama, akap, pe2, dm, pem&
619 & , w2, dz2, pt(is:ie, j, 1:km), ws(is:ie, j), abs0, &
621 ELSE IF (a_imp .LE. 0.5)
THEN 622 CALL rim_2d(ms, dt, is, ie, km,
rdgas, gama, gm2, pe2, dm, pm2, &
623 & w2, dz2, pt(is:ie, j, 1:km), ws(is:ie, j), .false.)
624 ELSE IF (a_imp .GT. 0.999)
THEN 625 CALL sim1_solver(dt, is, ie, km,
rdgas, gama, gm2, cp2, akap, &
626 & pe2, dm, pm2, pem, w2, dz2, pt(is:ie, j, 1:km), ws(is&
629 CALL sim_solver(dt, is, ie, km,
rdgas, gama, gm2, cp2, akap, pe2&
630 & , dm, pm2, pem, w2, dz2, pt(is:ie, j, 1:km), ws(is:ie&
631 & , j), a_imp, p_fac, scale_m)
635 w(i, j, k) = w2(i, k)
636 delz(i, j, k) = dz2(i, k)
642 peln(i, k, j) = peln2(i, k)
643 pk(i, j, k) = pk3(i, j, k)
644 pe(i, k, j) = pem(i, k)
651 ppe(i, j, k) = pe2(i, k) + pem(i, k)
657 ppe(i, j, k) = pe2(i, k)
664 pk3(i, j, k) = peln2(i, k)
669 zh(i, j, km+1) = zs(i, j)
673 zh(i, j, k) = zh(i, j, k+1) - dz2(i, k)
subroutine, public sim_solver(dt, is, ie, km, rgas, gama, gm2, cp2, kappa, pe2, dm2, pm2, pem, w2, dz2, pt2, ws, alpha, p_fac, scale_m)
subroutine, public sim1_solver_fwd(dt, is, ie, km, rgas, gama, gm2, cp2, kappa, pe, dm2, pm2, pem, w2, dz2, pt2, ws, p_fac)
subroutine, public update_dz_d_fwd(ndif, damp, hord, is, ie, js, je, km, ng, npx, npy, area, rarea, dp0, zs, zh, crx, cry, xfx, yfx, delz, ws, rdt, gridstruct, bd, hord_pert)
subroutine, public nest_halo_nh(ptop, grav, kappa, cp, delp, delz, pt, phis, pkc, gz, pk3, npx, npy, npz, nested, pkc_pertn, computepk3, fullhalo, bd)
subroutine, public rim_2d(ms, bdt, is, ie, km, rgas, gama, gm2, pe2, dm2, pm2, w2, dz2, pt2, ws, c_core)
subroutine, public pushcontrol(ctype, field)
subroutine, public rim_2d_fwd(ms, bdt, is, ie, km, rgas, gama, gm2, pe2, dm2, pm2, w2, dz2, pt2, ws, c_core)
real, parameter, public rdgas
Gas constant for dry air [J/kg/deg].
subroutine, public update_dz_d_bwd(ndif, damp, hord, is, ie, js, je, km, ng, npx, npy, area, rarea, dp0, zs, zh, zh_ad, crx, crx_ad, cry, cry_ad, xfx, xfx_ad, yfx, yfx_ad, delz, ws, ws_ad, rdt, gridstruct, bd, hord_pert)
subroutine, public fv_tp_2d_fwd(q, crx, cry, npx, npy, hord, fx, fy, xfx, yfx, gridstruct, bd, ra_x, ra_y, mfx, mfy, mass, nord, damp_c)
subroutine, public sim_solver_fwd(dt, is, ie, km, rgas, gama, gm2, cp2, kappa, pe2, dm2, pm2, pem, w2, dz2, pt2, ws, alpha, p_fac, scale_m)
subroutine, public sim1_solver_bwd(dt, is, ie, km, rgas, gama, gm2, cp2, kappa, pe, pe_ad, dm2, dm2_ad, pm2, pm2_ad, pem, pem_ad, w2, w2_ad, dz2, dz2_ad, pt2, pt2_ad, ws, ws_ad, p_fac)
subroutine, public riem_solver3(ms, dt, is, ie, js, je, km, ng, isd, ied, jsd, jed, akap, cappa, cp, ptop, zs, q_con, w, delz, pt, delp, zh, pe, ppe, pk3, pk, peln, ws, scale_m, p_fac, a_imp, use_logp, last_call, fp_out)
subroutine, public sim3p0_solver_bwd(dt, is, ie, km, rgas, gama, kappa, pe2, pe2_ad, dm, dm_ad, pem, pem_ad, w2, w2_ad, dz2, dz2_ad, pt2, pt2_ad, ws, ws_ad, p_fac, scale_m)
subroutine, public update_dz_d(ndif, damp, hord, is, ie, js, je, km, ng, npx, npy, area, rarea, dp0, zs, zh, crx, cry, xfx, yfx, delz, ws, rdt, gridstruct, bd, hord_pert)
subroutine, public sim3p0_solver(dt, is, ie, km, rgas, gama, kappa, pe2, dm, pem, w2, dz2, pt2, ws, p_fac, scale_m)
subroutine, public fv_tp_2d(q, crx, cry, npx, npy, hord, fx, fy, xfx, yfx, gridstruct, bd, ra_x, ra_y, mfx, mfy, mass, nord, damp_c)
subroutine, public update_dz_c_fwd(is, ie, js, je, km, ng, dt, dp0, zs, area, ut, vt, gz, ws, npx, npy, sw_corner, se_corner, ne_corner, nw_corner, bd, grid_type)
subroutine, public sim3p0_solver_fwd(dt, is, ie, km, rgas, gama, kappa, pe2, dm, pem, w2, dz2, pt2, ws, p_fac, scale_m)
subroutine, public update_dz_c(is, ie, js, je, km, ng, dt, dp0, zs, area, ut, vt, gz, ws, npx, npy, sw_corner, se_corner, ne_corner, nw_corner, bd, grid_type)
subroutine, public riem_solver3_fwd(ms, dt, is, ie, js, je, km, ng, isd, ied, jsd, jed, akap, cappa, cp, ptop, zs, q_con, w, delz, pt, delp, zh, pe, ppe, pk3, pk, peln, ws, scale_m, p_fac, a_imp, use_logp, last_call, fp_out)
subroutine, public sim3_solver_bwd(dt, is, ie, km, rgas, gama, kappa, pe2, pe2_ad, dm, dm_ad, pem, pem_ad, w2, w2_ad, dz2, dz2_ad, pt2, pt2_ad, ws, ws_ad, alpha, p_fac, scale_m)
real, parameter, public cp_air
Specific heat capacity of dry air at constant pressure [J/kg/deg].
subroutine, public sim_solver_bwd(dt, is, ie, km, rgas, gama, gm2, cp2, kappa, pe2, pe2_ad, dm2, dm2_ad, pm2, pm2_ad, pem, pem_ad, w2, w2_ad, dz2, dz2_ad, pt2, pt2_ad, ws, ws_ad, alpha, p_fac, scale_m)
subroutine, public sim1_solver(dt, is, ie, km, rgas, gama, gm2, cp2, kappa, pe, dm2, pm2, pem, w2, dz2, pt2, ws, p_fac)
subroutine, public riem_solver3_bwd(ms, dt, is, ie, js, je, km, ng, isd, ied, jsd, jed, akap, cappa, cp, ptop, zs, q_con, w, w_ad, delz, delz_ad, pt, pt_ad, delp, delp_ad, zh, zh_ad, pe, pe_ad, ppe, ppe_ad, pk3, pk3_ad, pk, pk_ad, peln, peln_ad, ws, ws_ad, scale_m, p_fac, a_imp, use_logp, last_call, fp_out)
subroutine, public fv_tp_2d_bwd(q, q_ad, crx, crx_ad, cry, cry_ad, npx, npy, hord, fx, fx_ad, fy, fy_ad, xfx, xfx_ad, yfx, yfx_ad, gridstruct, bd, ra_x, ra_x_ad, ra_y, ra_y_ad, mfx, mfx_ad, mfy, mfy_ad, mass, mass_ad, nord, damp_c)
subroutine, public nest_halo_nh_bwd(ptop, grav, kappa, cp, delp, delp_ad, delz, delz_ad, pt, pt_ad, phis, pkc, pkc_ad, gz, gz_ad, pk3, pk3_ad, npx, npy, npz, nested, pkc_pertn, computepk3, fullhalo, bd)
subroutine, public riem_solver_c_fwd(ms, dt, is, ie, js, je, km, ng, akap, cappa, cp, ptop, hs, w3, pt, q_con, delp, gz, pef, ws, p_fac, a_imp, scale_m)
subroutine, public sim3_solver(dt, is, ie, km, rgas, gama, kappa, pe2, dm, pem, w2, dz2, pt2, ws, alpha, p_fac, scale_m)
subroutine, public riem_solver_c_bwd(ms, dt, is, ie, js, je, km, ng, akap, cappa, cp, ptop, hs, w3, w3_ad, pt, pt_ad, q_con, delp, delp_ad, gz, gz_ad, pef, pef_ad, ws, ws_ad, p_fac, a_imp, scale_m)
real, parameter, public grav
Acceleration due to gravity [m/s^2].
subroutine, public rim_2d_bwd(ms, bdt, is, ie, km, rgas, gama, gm2, pe2, pe2_ad, dm2, dm2_ad, pm2, pm2_ad, w2, w2_ad, dz2, dz2_ad, pt2, pt2_ad, ws, ws_ad, c_core)
subroutine, public riem_solver_c(ms, dt, is, ie, js, je, km, ng, akap, cappa, cp, ptop, hs, w3, pt, q_con, delp, gz, pef, ws, p_fac, a_imp, scale_m)
subroutine, public sim3_solver_fwd(dt, is, ie, km, rgas, gama, kappa, pe2, dm, pem, w2, dz2, pt2, ws, alpha, p_fac, scale_m)
subroutine, public nest_halo_nh_fwd(ptop, grav, kappa, cp, delp, delz, pt, phis, pkc, gz, pk3, npx, npy, npz, nested, pkc_pertn, computepk3, fullhalo, bd)
subroutine, public update_dz_c_bwd(is, ie, js, je, km, ng, dt, dp0, zs, area, ut, ut_ad, vt, vt_ad, gz, gz_ad, ws, ws_ad, npx, npy, sw_corner, se_corner, ne_corner, nw_corner, bd, grid_type)
subroutine, public popcontrol(ctype, field)