FV3 Bundle
nh_core_tlm.F90
Go to the documentation of this file.
1 !***********************************************************************
2 !* GNU General Public License *
3 !* This file is a part of fvGFS. *
4 !* *
5 !* fvGFS is free software; you can redistribute it and/or modify it *
6 !* and are expected to follow the terms of the GNU General Public *
7 !* License as published by the Free Software Foundation; either *
8 !* version 2 of the License, or (at your option) any later version. *
9 !* *
10 !* fvGFS is distributed in the hope that it will be useful, but *
11 !* WITHOUT ANY WARRANTY; without even the implied warranty of *
12 !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
13 !* General Public License for more details. *
14 !* *
15 !* For the full text of the GNU General Public License, *
16 !* write to: Free Software Foundation, Inc., *
17 !* 675 Mass Ave, Cambridge, MA 02139, USA. *
18 !* or see: http://www.gnu.org/licenses/gpl.html *
19 !***********************************************************************
21 ! Developer: S.-J. Lin, NOAA/GFDL
22 ! To do list:
23 ! include moisture effect in pt
24 !------------------------------
25  use constants_mod, only: rdgas, cp_air, grav
26  use tp_core_tlm_mod, only: fv_tp_2d
27  use tp_core_tlm_mod, only: fv_tp_2d_tlm
36 
37  implicit none
38  private
39 
40  public riem_solver3, riem_solver_c, update_dz_c, update_dz_d, nest_halo_nh
41  public riem_solver3_tlm, riem_solver_c_tlm, update_dz_c_tlm, update_dz_d_tlm, nest_halo_nh_tlm
42  real, parameter:: r3 = 1./3.
43 
44 CONTAINS
45 ! Differentiation of riem_solver3 in forward (tangent) mode:
46 ! variations of useful results: pk3 ppe peln w delz pe pk zh
47 ! with respect to varying inputs: pk3 ws ppe peln w delp delz
48 ! pe pk zh pt
49  SUBROUTINE riem_solver3_tlm(ms, dt, is, ie, js, je, km, ng, isd, ied, &
50 & jsd, jed, akap, cappa, cp, ptop, zs, q_con, w, w_tl, delz, delz_tl, &
51 & pt, pt_tl, delp, delp_tl, zh, zh_tl, pe, pe_tl, ppe, ppe_tl, pk3, &
52 & pk3_tl, pk, pk_tl, peln, peln_tl, ws, ws_tl, scale_m, p_fac, a_imp, &
53 & use_logp, last_call, fp_out)
54  IMPLICIT NONE
55 !--------------------------------------------
56 ! !OUTPUT PARAMETERS
57 ! Ouput: gz: grav*height at edges
58 ! pe: full hydrostatic pressure
59 ! ppe: non-hydrostatic pressure perturbation
60 !--------------------------------------------
61  INTEGER, INTENT(IN) :: ms, is, ie, js, je, km, ng
62  INTEGER, INTENT(IN) :: isd, ied, jsd, jed
63 ! the BIG horizontal Lagrangian time step
64  REAL, INTENT(IN) :: dt
65  REAL, INTENT(IN) :: akap, cp, ptop, p_fac, a_imp, scale_m
66  REAL, INTENT(IN) :: zs(isd:ied, jsd:jed)
67  LOGICAL, INTENT(IN) :: last_call, use_logp, fp_out
68  REAL, INTENT(IN) :: ws(is:ie, js:je)
69  REAL, INTENT(IN) :: ws_tl(is:ie, js:je)
70  REAL, DIMENSION(isd:, jsd:, :), INTENT(IN) :: q_con, cappa
71  REAL, DIMENSION(isd:ied, jsd:jed, km), INTENT(IN) :: delp, pt
72  REAL, DIMENSION(isd:ied, jsd:jed, km), INTENT(IN) :: delp_tl, pt_tl
73  REAL, DIMENSION(isd:ied, jsd:jed, km+1), INTENT(INOUT) :: zh
74  REAL, DIMENSION(isd:ied, jsd:jed, km+1), INTENT(INOUT) :: zh_tl
75  REAL, DIMENSION(isd:ied, jsd:jed, km), INTENT(INOUT) :: w
76  REAL, DIMENSION(isd:ied, jsd:jed, km), INTENT(INOUT) :: w_tl
77  REAL, INTENT(INOUT) :: pe(is-1:ie+1, km+1, js-1:je+1)
78  REAL, INTENT(INOUT) :: pe_tl(is-1:ie+1, km+1, js-1:je+1)
79 ! ln(pe)
80  REAL, INTENT(OUT) :: peln(is:ie, km+1, js:je)
81  REAL, INTENT(OUT) :: peln_tl(is:ie, km+1, js:je)
82  REAL, DIMENSION(isd:ied, jsd:jed, km+1), INTENT(OUT) :: ppe
83  REAL, DIMENSION(isd:ied, jsd:jed, km+1), INTENT(OUT) :: ppe_tl
84  REAL, INTENT(OUT) :: delz(is-ng:ie+ng, js-ng:je+ng, km)
85  REAL, INTENT(OUT) :: delz_tl(is-ng:ie+ng, js-ng:je+ng, km)
86  REAL, INTENT(OUT) :: pk(is:ie, js:je, km+1)
87  REAL, INTENT(OUT) :: pk_tl(is:ie, js:je, km+1)
88  REAL, INTENT(OUT) :: pk3(isd:ied, jsd:jed, km+1)
89  REAL, INTENT(OUT) :: pk3_tl(isd:ied, jsd:jed, km+1)
90 ! Local:
91  REAL, DIMENSION(is:ie, km) :: dm, dz2, pm2, w2, gm2, cp2
92  REAL, DIMENSION(is:ie, km) :: dm_tl, dz2_tl, pm2_tl, w2_tl
93  REAL, DIMENSION(is:ie, km+1) :: pem, pe2, peln2, peg, pelng
94  REAL, DIMENSION(is:ie, km+1) :: pem_tl, pe2_tl, peln2_tl
95  REAL :: gama, rgrav, ptk, peln1
96  INTEGER :: i, j, k
97  INTRINSIC log
98  INTRINSIC exp
99  INTRINSIC abs
100  REAL :: abs0
101  gama = 1./(1.-akap)
102  rgrav = 1./grav
103  peln1 = log(ptop)
104  ptk = exp(akap*peln1)
105  dm_tl = 0.0
106  pe2_tl = 0.0
107  dz2_tl = 0.0
108  w2_tl = 0.0
109  pm2_tl = 0.0
110  pem_tl = 0.0
111  peln2_tl = 0.0
112 !$OMP parallel do default(none) shared(is,ie,js,je,km,delp,ptop,peln1,pk3,ptk,akap,rgrav,zh,pt, &
113 !$OMP w,a_imp,dt,gama,ws,p_fac,scale_m,ms,delz,last_call, &
114 !$OMP peln,pk,fp_out,ppe,use_logp,zs,pe,cappa,q_con ) &
115 !$OMP private(cp2, gm2, dm, dz2, pm2, pem, peg, pelng, pe2, peln2, w2)
116  DO j=js,je
117  DO k=1,km
118  DO i=is,ie
119  dm_tl(i, k) = delp_tl(i, j, k)
120  dm(i, k) = delp(i, j, k)
121  END DO
122  END DO
123  DO i=is,ie
124  pem_tl(i, 1) = 0.0
125  pem(i, 1) = ptop
126  peln2_tl(i, 1) = 0.0
127  peln2(i, 1) = peln1
128  pk3_tl(i, j, 1) = 0.0
129  pk3(i, j, 1) = ptk
130  END DO
131  DO k=2,km+1
132  DO i=is,ie
133  pem_tl(i, k) = pem_tl(i, k-1) + dm_tl(i, k-1)
134  pem(i, k) = pem(i, k-1) + dm(i, k-1)
135  peln2_tl(i, k) = pem_tl(i, k)/pem(i, k)
136  peln2(i, k) = log(pem(i, k))
137  pk3_tl(i, j, k) = akap*peln2_tl(i, k)*exp(akap*peln2(i, k))
138  pk3(i, j, k) = exp(akap*peln2(i, k))
139  END DO
140  END DO
141  DO k=1,km
142  DO i=is,ie
143  pm2_tl(i, k) = (dm_tl(i, k)*(peln2(i, k+1)-peln2(i, k))-dm(i, &
144 & k)*(peln2_tl(i, k+1)-peln2_tl(i, k)))/(peln2(i, k+1)-peln2(i&
145 & , k))**2
146  pm2(i, k) = dm(i, k)/(peln2(i, k+1)-peln2(i, k))
147  dm_tl(i, k) = rgrav*dm_tl(i, k)
148  dm(i, k) = dm(i, k)*rgrav
149  dz2_tl(i, k) = zh_tl(i, j, k+1) - zh_tl(i, j, k)
150  dz2(i, k) = zh(i, j, k+1) - zh(i, j, k)
151  w2_tl(i, k) = w_tl(i, j, k)
152  w2(i, k) = w(i, j, k)
153  END DO
154  END DO
155  IF (a_imp .LT. -0.999) THEN
156  CALL sim3p0_solver_tlm(dt, is, ie, km, rdgas, gama, akap, pe2, &
157 & pe2_tl, dm, dm_tl, pem, pem_tl, w2, w2_tl, dz2&
158 & , dz2_tl, pt(is:ie, j, 1:km), pt_tl(is:ie, j, 1&
159 & :km), ws(is:ie, j), ws_tl(is:ie, j), p_fac, &
160 & scale_m)
161  ELSE IF (a_imp .LT. -0.5) THEN
162  IF (a_imp .GE. 0.) THEN
163  abs0 = a_imp
164  ELSE
165  abs0 = -a_imp
166  END IF
167  CALL sim3_solver_tlm(dt, is, ie, km, rdgas, gama, akap, pe2, &
168 & pe2_tl, dm, dm_tl, pem, pem_tl, w2, w2_tl, dz2, &
169 & dz2_tl, pt(is:ie, j, 1:km), pt_tl(is:ie, j, 1:km)&
170 & , ws(is:ie, j), ws_tl(is:ie, j), abs0, p_fac, &
171 & scale_m)
172  ELSE IF (a_imp .LE. 0.5) THEN
173  CALL rim_2d_tlm(ms, dt, is, ie, km, rdgas, gama, gm2, pe2, &
174 & pe2_tl, dm, dm_tl, pm2, pm2_tl, w2, w2_tl, dz2, dz2_tl&
175 & , pt(is:ie, j, 1:km), pt_tl(is:ie, j, 1:km), ws(is:ie&
176 & , j), ws_tl(is:ie, j), .false.)
177  ELSE IF (a_imp .GT. 0.999) THEN
178  CALL sim1_solver_tlm(dt, is, ie, km, rdgas, gama, gm2, cp2, akap&
179 & , pe2, pe2_tl, dm, dm_tl, pm2, pm2_tl, pem, &
180 & pem_tl, w2, w2_tl, dz2, dz2_tl, pt(is:ie, j, 1:km&
181 & ), pt_tl(is:ie, j, 1:km), ws(is:ie, j), ws_tl(is:&
182 & ie, j), p_fac)
183  ELSE
184  CALL sim_solver_tlm(dt, is, ie, km, rdgas, gama, gm2, cp2, akap&
185 & , pe2, pe2_tl, dm, dm_tl, pm2, pm2_tl, pem, pem_tl&
186 & , w2, w2_tl, dz2, dz2_tl, pt(is:ie, j, 1:km), &
187 & pt_tl(is:ie, j, 1:km), ws(is:ie, j), ws_tl(is:ie, &
188 & j), a_imp, p_fac, scale_m)
189  END IF
190  DO k=1,km
191  DO i=is,ie
192  w_tl(i, j, k) = w2_tl(i, k)
193  w(i, j, k) = w2(i, k)
194  delz_tl(i, j, k) = dz2_tl(i, k)
195  delz(i, j, k) = dz2(i, k)
196  END DO
197  END DO
198  IF (last_call) THEN
199  DO k=1,km+1
200  DO i=is,ie
201  peln_tl(i, k, j) = peln2_tl(i, k)
202  peln(i, k, j) = peln2(i, k)
203  pk_tl(i, j, k) = pk3_tl(i, j, k)
204  pk(i, j, k) = pk3(i, j, k)
205  pe_tl(i, k, j) = pem_tl(i, k)
206  pe(i, k, j) = pem(i, k)
207  END DO
208  END DO
209  END IF
210  IF (fp_out) THEN
211  DO k=1,km+1
212  DO i=is,ie
213  ppe_tl(i, j, k) = pe2_tl(i, k) + pem_tl(i, k)
214  ppe(i, j, k) = pe2(i, k) + pem(i, k)
215  END DO
216  END DO
217  ELSE
218  DO k=1,km+1
219  DO i=is,ie
220  ppe_tl(i, j, k) = pe2_tl(i, k)
221  ppe(i, j, k) = pe2(i, k)
222  END DO
223  END DO
224  END IF
225  IF (use_logp) THEN
226  DO k=2,km+1
227  DO i=is,ie
228  pk3_tl(i, j, k) = peln2_tl(i, k)
229  pk3(i, j, k) = peln2(i, k)
230  END DO
231  END DO
232  END IF
233  DO i=is,ie
234  zh_tl(i, j, km+1) = 0.0
235  zh(i, j, km+1) = zs(i, j)
236  END DO
237  DO k=km,1,-1
238  DO i=is,ie
239  zh_tl(i, j, k) = zh_tl(i, j, k+1) - dz2_tl(i, k)
240  zh(i, j, k) = zh(i, j, k+1) - dz2(i, k)
241  END DO
242  END DO
243  END DO
244  END SUBROUTINE riem_solver3_tlm
245  SUBROUTINE riem_solver3(ms, dt, is, ie, js, je, km, ng, isd, ied, jsd&
246 & , jed, akap, cappa, cp, ptop, zs, q_con, w, delz, pt, delp, zh, pe, &
247 & ppe, pk3, pk, peln, ws, scale_m, p_fac, a_imp, use_logp, last_call, &
248 & fp_out)
249  IMPLICIT NONE
250 !--------------------------------------------
251 ! !OUTPUT PARAMETERS
252 ! Ouput: gz: grav*height at edges
253 ! pe: full hydrostatic pressure
254 ! ppe: non-hydrostatic pressure perturbation
255 !--------------------------------------------
256  INTEGER, INTENT(IN) :: ms, is, ie, js, je, km, ng
257  INTEGER, INTENT(IN) :: isd, ied, jsd, jed
258 ! the BIG horizontal Lagrangian time step
259  REAL, INTENT(IN) :: dt
260  REAL, INTENT(IN) :: akap, cp, ptop, p_fac, a_imp, scale_m
261  REAL, INTENT(IN) :: zs(isd:ied, jsd:jed)
262  LOGICAL, INTENT(IN) :: last_call, use_logp, fp_out
263  REAL, INTENT(IN) :: ws(is:ie, js:je)
264  REAL, DIMENSION(isd:, jsd:, :), INTENT(IN) :: q_con, cappa
265  REAL, DIMENSION(isd:ied, jsd:jed, km), INTENT(IN) :: delp, pt
266  REAL, DIMENSION(isd:ied, jsd:jed, km+1), INTENT(INOUT) :: zh
267  REAL, DIMENSION(isd:ied, jsd:jed, km), INTENT(INOUT) :: w
268  REAL, INTENT(INOUT) :: pe(is-1:ie+1, km+1, js-1:je+1)
269 ! ln(pe)
270  REAL, INTENT(OUT) :: peln(is:ie, km+1, js:je)
271  REAL, DIMENSION(isd:ied, jsd:jed, km+1), INTENT(OUT) :: ppe
272  REAL, INTENT(OUT) :: delz(is-ng:ie+ng, js-ng:je+ng, km)
273  REAL, INTENT(OUT) :: pk(is:ie, js:je, km+1)
274  REAL, INTENT(OUT) :: pk3(isd:ied, jsd:jed, km+1)
275 ! Local:
276  REAL, DIMENSION(is:ie, km) :: dm, dz2, pm2, w2, gm2, cp2
277  REAL, DIMENSION(is:ie, km+1) :: pem, pe2, peln2, peg, pelng
278  REAL :: gama, rgrav, ptk, peln1
279  INTEGER :: i, j, k
280  INTRINSIC log
281  INTRINSIC exp
282  INTRINSIC abs
283  REAL :: abs0
284  gama = 1./(1.-akap)
285  rgrav = 1./grav
286  peln1 = log(ptop)
287  ptk = exp(akap*peln1)
288 !$OMP parallel do default(none) shared(is,ie,js,je,km,delp,ptop,peln1,pk3,ptk,akap,rgrav,zh,pt, &
289 !$OMP w,a_imp,dt,gama,ws,p_fac,scale_m,ms,delz,last_call, &
290 !$OMP peln,pk,fp_out,ppe,use_logp,zs,pe,cappa,q_con ) &
291 !$OMP private(cp2, gm2, dm, dz2, pm2, pem, peg, pelng, pe2, peln2, w2)
292  DO j=js,je
293  DO k=1,km
294  DO i=is,ie
295  dm(i, k) = delp(i, j, k)
296  END DO
297  END DO
298  DO i=is,ie
299  pem(i, 1) = ptop
300  peln2(i, 1) = peln1
301  pk3(i, j, 1) = ptk
302  END DO
303  DO k=2,km+1
304  DO i=is,ie
305  pem(i, k) = pem(i, k-1) + dm(i, k-1)
306  peln2(i, k) = log(pem(i, k))
307  pk3(i, j, k) = exp(akap*peln2(i, k))
308  END DO
309  END DO
310  DO k=1,km
311  DO i=is,ie
312  pm2(i, k) = dm(i, k)/(peln2(i, k+1)-peln2(i, k))
313  dm(i, k) = dm(i, k)*rgrav
314  dz2(i, k) = zh(i, j, k+1) - zh(i, j, k)
315  w2(i, k) = w(i, j, k)
316  END DO
317  END DO
318  IF (a_imp .LT. -0.999) THEN
319  CALL sim3p0_solver(dt, is, ie, km, rdgas, gama, akap, pe2, dm, &
320 & pem, w2, dz2, pt(is:ie, j, 1:km), ws(is:ie, j), &
321 & p_fac, scale_m)
322  ELSE IF (a_imp .LT. -0.5) THEN
323  IF (a_imp .GE. 0.) THEN
324  abs0 = a_imp
325  ELSE
326  abs0 = -a_imp
327  END IF
328  CALL sim3_solver(dt, is, ie, km, rdgas, gama, akap, pe2, dm, pem&
329 & , w2, dz2, pt(is:ie, j, 1:km), ws(is:ie, j), abs0, &
330 & p_fac, scale_m)
331  ELSE IF (a_imp .LE. 0.5) THEN
332  CALL rim_2d(ms, dt, is, ie, km, rdgas, gama, gm2, pe2, dm, pm2, &
333 & w2, dz2, pt(is:ie, j, 1:km), ws(is:ie, j), .false.)
334  ELSE IF (a_imp .GT. 0.999) THEN
335  CALL sim1_solver(dt, is, ie, km, rdgas, gama, gm2, cp2, akap, &
336 & pe2, dm, pm2, pem, w2, dz2, pt(is:ie, j, 1:km), ws(is&
337 & :ie, j), p_fac)
338  ELSE
339  CALL sim_solver(dt, is, ie, km, rdgas, gama, gm2, cp2, akap, pe2&
340 & , dm, pm2, pem, w2, dz2, pt(is:ie, j, 1:km), ws(is:ie&
341 & , j), a_imp, p_fac, scale_m)
342  END IF
343  DO k=1,km
344  DO i=is,ie
345  w(i, j, k) = w2(i, k)
346  delz(i, j, k) = dz2(i, k)
347  END DO
348  END DO
349  IF (last_call) THEN
350  DO k=1,km+1
351  DO i=is,ie
352  peln(i, k, j) = peln2(i, k)
353  pk(i, j, k) = pk3(i, j, k)
354  pe(i, k, j) = pem(i, k)
355  END DO
356  END DO
357  END IF
358  IF (fp_out) THEN
359  DO k=1,km+1
360  DO i=is,ie
361  ppe(i, j, k) = pe2(i, k) + pem(i, k)
362  END DO
363  END DO
364  ELSE
365  DO k=1,km+1
366  DO i=is,ie
367  ppe(i, j, k) = pe2(i, k)
368  END DO
369  END DO
370  END IF
371  IF (use_logp) THEN
372  DO k=2,km+1
373  DO i=is,ie
374  pk3(i, j, k) = peln2(i, k)
375  END DO
376  END DO
377  END IF
378  DO i=is,ie
379  zh(i, j, km+1) = zs(i, j)
380  END DO
381  DO k=km,1,-1
382  DO i=is,ie
383  zh(i, j, k) = zh(i, j, k+1) - dz2(i, k)
384  END DO
385  END DO
386  END DO
387  END SUBROUTINE riem_solver3
388 
389 end module nh_core_tlm_mod
subroutine, public nest_halo_nh_tlm(ptop, grav, kappa, cp, delp, delp_tl, delz, delz_tl, pt, pt_tl, phis, pkc, pkc_tl, gz, gz_tl, pk3, pk3_tl, npx, npy, npz, nested, pkc_pertn, computepk3, fullhalo, bd)
subroutine, public fv_tp_2d_tlm(q, q_tl, crx, crx_tl, cry, cry_tl, npx, npy, hord, fx, fx_tl, fy, fy_tl, xfx, xfx_tl, yfx, yfx_tl, gridstruct, bd, ra_x, ra_x_tl, ra_y, ra_y_tl, mfx, mfx_tl, mfy, mfy_tl, mass, mass_tl, nord, damp_c)
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 sim1_solver_tlm(dt, is, ie, km, rgas, gama, gm2, cp2, kappa, pe, pe_tl, dm2, dm2_tl, pm2, pm2_tl, pem, pem_tl, w2, w2_tl, dz2, dz2_tl, pt2, pt2_tl, ws, ws_tl, p_fac)
real, parameter r3
Definition: nh_core_tlm.F90:42
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)
real, parameter, public rdgas
Gas constant for dry air [J/kg/deg].
Definition: constants.F90:77
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 sim3p0_solver(dt, is, ie, km, rgas, gama, kappa, pe2, dm, pem, w2, dz2, pt2, ws, p_fac, scale_m)
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 update_dz_d_tlm(ndif, damp, hord, is, ie, js, je, km, ng, npx, npy, area, rarea, dp0, zs, zh, zh_tl, crx, crx_tl, cry, cry_tl, xfx, xfx_tl, yfx, yfx_tl, delz, ws, ws_tl, rdt, gridstruct, bd, hord_pert)
real, parameter, public cp_air
Specific heat capacity of dry air at constant pressure [J/kg/deg].
Definition: constants.F90:83
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 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 riem_solver_c_tlm(ms, dt, is, ie, js, je, km, ng, akap, cappa, cp, ptop, hs, w3, w3_tl, pt, pt_tl, q_con, delp, delp_tl, gz, gz_tl, pef, pef_tl, ws, ws_tl, p_fac, a_imp, scale_m)
subroutine, public sim3_solver_tlm(dt, is, ie, km, rgas, gama, kappa, pe2, pe2_tl, dm, dm_tl, pem, pem_tl, w2, w2_tl, dz2, dz2_tl, pt2, pt2_tl, ws, ws_tl, alpha, p_fac, scale_m)
real, parameter, public grav
Acceleration due to gravity [m/s^2].
Definition: constants.F90:76
subroutine, public rim_2d_tlm(ms, bdt, is, ie, km, rgas, gama, gm2, pe2, pe2_tl, dm2, dm2_tl, pm2, pm2_tl, w2, w2_tl, dz2, dz2_tl, pt2, pt2_tl, ws, ws_tl, c_core)
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)
Definition: tp_core_tlm.F90:85
subroutine, public riem_solver3_tlm(ms, dt, is, ie, js, je, km, ng, isd, ied, jsd, jed, akap, cappa, cp, ptop, zs, q_con, w, w_tl, delz, delz_tl, pt, pt_tl, delp, delp_tl, zh, zh_tl, pe, pe_tl, ppe, ppe_tl, pk3, pk3_tl, pk, pk_tl, peln, peln_tl, ws, ws_tl, scale_m, p_fac, a_imp, use_logp, last_call, fp_out)
Definition: nh_core_tlm.F90:54
subroutine, public update_dz_c_tlm(is, ie, js, je, km, ng, dt, dp0, zs, area, ut, ut_tl, vt, vt_tl, gz, gz_tl, ws, ws_tl, npx, npy, sw_corner, se_corner, ne_corner, nw_corner, bd, grid_type)
subroutine, public rim_2d(ms, bdt, is, ie, km, rgas, gama, gm2, pe2, dm2, pm2, w2, dz2, pt2, ws, c_core)
subroutine, public sim_solver_tlm(dt, is, ie, km, rgas, gama, gm2, cp2, kappa, pe2, pe2_tl, dm2, dm2_tl, pm2, pm2_tl, pem, pem_tl, w2, w2_tl, dz2, dz2_tl, pt2, pt2_tl, ws, ws_tl, alpha, p_fac, scale_m)
subroutine, public sim3p0_solver_tlm(dt, is, ie, km, rgas, gama, kappa, pe2, pe2_tl, dm, dm_tl, pem, pem_tl, w2, w2_tl, dz2, dz2_tl, pt2, pt2_tl, ws, ws_tl, p_fac, scale_m)
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 sim1_solver(dt, is, ie, km, rgas, gama, gm2, cp2, kappa, pe, dm2, pm2, pem, w2, dz2, pt2, ws, p_fac)