31 real(8),
allocatable,
dimension(:,:,:) :: ut, vt, ptt, qvt
32 real(8),
allocatable,
dimension(:,:) :: ts, frland
33 integer,
allocatable,
dimension(:,:) :: kcbl, khu, khl
34 real(8),
allocatable,
dimension(:,:,:) :: ple, cnv_ple, pk
35 real(8),
allocatable,
dimension(:,:,:) :: cnv_dqldtt, cnv_mfdt, cnv_prc3t, cnv_updft
36 real(8),
allocatable,
dimension(:,:,:) :: ptt_c, qvt_c
37 real(8),
allocatable,
dimension(:,:,:) :: cnv_dqldtt_c, cnv_mfdt_c, cnv_prc3t_c, cnv_updft_c
38 integer,
allocatable,
dimension(:,:) :: seedras
39 real(8),
allocatable,
dimension(:,:) :: co_auto
40 integer,
allocatable,
dimension(:,:) :: doconvec
41 real(8),
allocatable,
dimension(:,:,:) :: wgt0, wgt1
42 real(8),
allocatable,
dimension(:,:,:) :: qilst, qllst, qicnt, qlcnt
43 real(8),
allocatable,
dimension(:,:,:) :: cflst, cfcnt
44 real(8),
allocatable,
dimension(:,:,:) :: ilsf, icnf, llsf, lcnf
45 logical ::
set = .false.
50 real(8),
allocatable,
dimension(:,:,:) ::
up, vp, ptp, qvp
51 real(8),
allocatable,
dimension(:,:,:) :: cnv_dqldtp, cnv_mfdp, cnv_prc3p, cnv_updfp
52 real(8),
allocatable,
dimension(:,:,:) :: qilsp, qllsp, qicnp, qlcnp
53 real(8),
allocatable,
dimension(:,:,:) :: cflsp, cfcnp
59 real(8),
allocatable,
dimension(:) :: estblx, sige
60 real(8) :: rasparams(25), cloudparams (57)
61 real(8) :: mapl8_cp, mapl8_alhl, mapl8_grav, mapl8_p00, mapl8_kappa
62 real(8) :: mapl8_rgas, mapl8_h2omw, mapl8_airmw, mapl8_vireps
63 real(8) :: mapl8_runiv, mapl8_alhf, mapl8_pi, mapl8_alhs
64 real(8) :: mapl8_tice, mapl8_rvap
87 subroutine create(self,conf)
91 class(fv3jedi_lm_moist_type),
target,
intent(inout) :: self
92 type(fv3jedi_lm_conf),
intent(in) :: conf
94 integer :: imsize, L, n
95 real(8),
allocatable,
dimension(:) :: pref
96 real(8),
parameter :: PMIN_DET = 3000.0
97 integer,
parameter :: DEGSUBS = 100
98 real(8),
parameter :: TMINTBL = 150.0,
tmaxtbl = 333.0
99 integer,
parameter :: TABLESIZE = nint(
tmaxtbl-tmintbl)*degsubs + 1
101 self%lcnst%MAPL8_CP = dble(
mapl_cp)
104 self%lcnst%MAPL8_P00 = dble(
mapl_p00)
112 self%lcnst%MAPL8_PI = dble(
mapl_pi)
120 self%lcnst%RASPARAMS( 1) = 1.000
121 self%lcnst%RASPARAMS( 2) = 0.05
122 self%lcnst%RASPARAMS( 3) = 0.0
123 self%lcnst%RASPARAMS( 4) = 8.0e-4
124 self%lcnst%RASPARAMS( 5) = 1800.
125 self%lcnst%RASPARAMS( 6) = 43200.0
126 self%lcnst%RASPARAMS( 7) = -300.
127 self%lcnst%RASPARAMS( 8) = 4.0
128 self%lcnst%RASPARAMS( 9) = 0.0
129 self%lcnst%RASPARAMS(10) = 200.
130 self%lcnst%RASPARAMS(11) = 7.5e-4
131 self%lcnst%RASPARAMS(12) = 1.0
132 self%lcnst%RASPARAMS(13) =-1.0
133 self%lcnst%RASPARAMS(14) = 1.3
134 self%lcnst%RASPARAMS(15) = 1.3
135 self%lcnst%RASPARAMS(16) = 263.
136 self%lcnst%RASPARAMS(17) = 0.5
137 self%lcnst%RASPARAMS(18) = 1.0
138 self%lcnst%RASPARAMS(19) = 0.0
139 self%lcnst%RASPARAMS(20) = 0.1
140 self%lcnst%RASPARAMS(21) = 0.8
141 self%lcnst%RASPARAMS(22) = 1.0
142 if( imsize .le. 200 ) self%lcnst%RASPARAMS(23) = 4000.0
143 if( imsize .gt. 200 .and. imsize.le.400 ) self%lcnst%RASPARAMS(23) = 2000.0
144 if( imsize .gt. 400 .and. imsize.le.800 ) self%lcnst%RASPARAMS(23) = 700.0
145 if( imsize .gt. 800 .and. imsize.le.1600 ) self%lcnst%RASPARAMS(23) = 450.0
146 if( imsize .gt. 1600 ) self%lcnst%RASPARAMS(23) = 450.0
147 self%lcnst%RASPARAMS(24) = 0.5
148 self%lcnst%RASPARAMS(25) = 0.65
151 self%lcnst%CLOUDPARAMS( 1) = 10.0
152 self%lcnst%CLOUDPARAMS( 2) = 4.0
153 self%lcnst%CLOUDPARAMS( 3) = 4.0
154 self%lcnst%CLOUDPARAMS( 4) = 1.0
155 self%lcnst%CLOUDPARAMS( 5) = 2.0e-3
156 self%lcnst%CLOUDPARAMS( 6) = 8.0e-4
157 self%lcnst%CLOUDPARAMS( 7) = 2.0
158 self%lcnst%CLOUDPARAMS( 8) = 1.0
159 self%lcnst%CLOUDPARAMS( 9) = -1.0
160 self%lcnst%CLOUDPARAMS(10) = 0.0
161 self%lcnst%CLOUDPARAMS(11) = 1.3
162 self%lcnst%CLOUDPARAMS(12) = 1.0e-9
163 self%lcnst%CLOUDPARAMS(13) = 3.3e-4
164 self%lcnst%CLOUDPARAMS(14) = 20.
165 self%lcnst%CLOUDPARAMS(15) = 4.8
166 self%lcnst%CLOUDPARAMS(16) = 4.8
167 self%lcnst%CLOUDPARAMS(17) = 230.
168 self%lcnst%CLOUDPARAMS(18) = 1.0
169 self%lcnst%CLOUDPARAMS(19) = 1.0
170 self%lcnst%CLOUDPARAMS(20) = 230.
171 self%lcnst%CLOUDPARAMS(21) = 14400.
172 self%lcnst%CLOUDPARAMS(22) = 50.
173 self%lcnst%CLOUDPARAMS(23) = 0.01
174 self%lcnst%CLOUDPARAMS(24) = 0.1
175 self%lcnst%CLOUDPARAMS(25) = 200.
176 self%lcnst%CLOUDPARAMS(26) = 0.
177 self%lcnst%CLOUDPARAMS(27) = 0.
178 self%lcnst%CLOUDPARAMS(28) = 0.5
179 self%lcnst%CLOUDPARAMS(29) = 0.5
180 self%lcnst%CLOUDPARAMS(30) = 2000.
181 self%lcnst%CLOUDPARAMS(31) = 0.8
182 self%lcnst%CLOUDPARAMS(32) = 0.5
183 self%lcnst%CLOUDPARAMS(33) = -40.0
184 self%lcnst%CLOUDPARAMS(34) = 1.0
185 self%lcnst%CLOUDPARAMS(35) = 4.0
186 self%lcnst%CLOUDPARAMS(36) = 0.0
187 self%lcnst%CLOUDPARAMS(37) = 0.0
188 self%lcnst%CLOUDPARAMS(38) = 0.0
189 self%lcnst%CLOUDPARAMS(39) = 1.0e-3
190 self%lcnst%CLOUDPARAMS(40) = 8.0e-4
191 self%lcnst%CLOUDPARAMS(41) = 1.0
192 if( imsize .le. 200 ) self%lcnst%CLOUDPARAMS(42) = 0.80
193 if( imsize .gt. 200 .and. imsize.le.400 ) self%lcnst%CLOUDPARAMS(42) = 0.90
194 if( imsize .gt. 400 .and. imsize.le.800 ) self%lcnst%CLOUDPARAMS(42) = 0.93
195 if( imsize .gt. 800 .and. imsize.le.1600 ) self%lcnst%CLOUDPARAMS(42) = 0.95
196 if( imsize .gt. 1600 ) self%lcnst%CLOUDPARAMS(42) = 0.97
197 self%lcnst%CLOUDPARAMS(43) = 1.0
198 self%lcnst%CLOUDPARAMS(44) = 0.0
199 self%lcnst%CLOUDPARAMS(45) = 750.0
200 self%lcnst%CLOUDPARAMS(46) = self%lcnst%CLOUDPARAMS(42)+0.01
201 self%lcnst%CLOUDPARAMS(47) = 1.0
202 self%lcnst%CLOUDPARAMS(48) = 1.0
203 self%lcnst%CLOUDPARAMS(49) = 0.0
204 self%lcnst%CLOUDPARAMS(50) = 0.0
205 self%lcnst%CLOUDPARAMS(51) = 10.e-6
206 self%lcnst%CLOUDPARAMS(52) = 20.e-6
207 self%lcnst%CLOUDPARAMS(53) = 21.e-6
208 self%lcnst%CLOUDPARAMS(54) = 40.e-6
209 self%lcnst%CLOUDPARAMS(55) = 30.e-6
210 self%lcnst%CLOUDPARAMS(56) = 1.0
211 self%lcnst%CLOUDPARAMS(57) = 1.0
213 if (
conf%saveltraj)
then 214 allocate(self%ltraj(
conf%nt))
219 allocate(self%ltraj(1))
226 allocate(self%lcnst%ESTBLX(tablesize))
227 allocate(self%lcnst%SIGE(0:
conf%LM))
230 call esinit(self%lcnst%ESTBLX)
232 allocate(pref(0:
conf%lm))
234 pref(l) =
conf%ak(l+1) +
conf%bk(l+1)*self%lcnst%MAPL8_P00
237 self%lcnst%ICMIN =
max(1,count(pref < pmin_det))
238 self%lcnst%SIGE = pref/pref(
conf%LM)
246 subroutine init_nl(self,pert,traj)
250 class(fv3jedi_lm_moist_type),
intent(inout) :: self
251 type(fv3jedi_lm_pert),
intent(inout) :: pert
252 type(fv3jedi_lm_traj),
intent(in) :: traj
258 subroutine init_tl(self,pert,traj)
262 class(fv3jedi_lm_moist_type),
intent(inout) :: self
263 type(fv3jedi_lm_pert),
intent(inout) :: pert
264 type(fv3jedi_lm_traj),
intent(in) :: traj
270 subroutine init_ad(self,pert,traj)
274 class(fv3jedi_lm_moist_type),
intent(inout) :: self
275 type(fv3jedi_lm_pert),
intent(inout) :: pert
276 type(fv3jedi_lm_traj),
intent(in) :: traj
282 subroutine step_nl(self,conf,traj)
286 class(fv3jedi_lm_moist_type),
target,
intent(inout) :: self
287 type(fv3jedi_lm_traj),
target,
intent(inout) :: traj
288 type(fv3jedi_lm_conf),
intent(in) :: conf
290 integer :: i,j,im,jm,lm,isc,iec,jsc,jec
291 type(local_traj_moist),
pointer :: ltraj
292 type(local_pert_moist),
pointer :: lpert
293 type(local_cnst_moist),
pointer :: lcnst
306 if (
conf%saveltraj)
then 307 ltraj => self%ltraj(
conf%n)
309 ltraj => self%ltraj(1)
327 ltraj%cnv_dqldtt = 0.0_8
328 ltraj%cnv_mfdt = 0.0_8
329 ltraj%cnv_prc3t = 0.0_8
330 ltraj%cnv_updft = 0.0_8
331 lpert%cnv_dqldtp = 0.0_8
332 lpert%cnv_mfdp = 0.0_8
333 lpert%cnv_prc3p = 0.0_8
334 lpert%cnv_updfp = 0.0_8
340 if ( ltraj%doconvec(i,j) == 1)
then 342 lcnst%mapl8_cp, lcnst%mapl8_alhl, &
343 lcnst%mapl8_grav, lcnst%mapl8_rgas, &
344 lcnst%mapl8_h2omw, lcnst%mapl8_airmw, &
345 lcnst%mapl8_vireps, &
346 ltraj%seedras(i,j), lcnst%sige, &
348 ltraj%wgt0(i,j,:), ltraj%wgt1(i,j,:), &
349 ltraj%frland(i,j), ltraj%ts(i,j), &
350 ltraj%ptt(i,j,:), lpert%ptp(i,j,:), &
351 ltraj%qvt(i,j,:), lpert%qvp(i,j,:), &
352 ltraj%ut(i,j,:), lpert%up(i,j,:), &
353 ltraj%vt(i,j,:), lpert%vp(i,j,:), &
354 ltraj%co_auto(i,j), ltraj%cnv_ple(i,j,:), &
355 ltraj%cnv_dqldtt(i,j,:), lpert%cnv_dqldtp(i,j,:), &
356 ltraj%cnv_mfdt(i,j,:), lpert%cnv_mfdp(i,j,:), &
357 ltraj%cnv_prc3t(i,j,:), lpert%cnv_prc3p(i,j,:), &
358 ltraj%cnv_updft(i,j,:), lpert%cnv_updfp(i,j,:), &
359 lcnst%rasparams, lcnst%estblx )
367 ltraj%ptt_c, lpert%ptp, &
368 ltraj%qvt_c, lpert%qvp, &
370 ltraj%cnv_dqldtt_c, lpert%cnv_dqldtp, ltraj%cnv_mfdt_c, lpert%cnv_mfdp, &
371 ltraj%cnv_prc3t_c, lpert%cnv_prc3p, ltraj%cnv_updft_c, lpert%cnv_updfp, &
372 ltraj%qilst, lpert%qilsp, ltraj%qllst, lpert%qllsp, &
373 ltraj%qicnt, lpert%qicnp, ltraj%qlcnt, lpert%qlcnp, &
374 ltraj%cflst, lpert%cflsp, ltraj%cfcnt, lpert%cfcnp, &
375 ltraj%frland, lcnst%cloudparams, lcnst%estblx, ltraj%khu, ltraj%khl, &
376 lcnst%mapl8_runiv, lcnst%mapl8_kappa, lcnst%mapl8_airmw, lcnst%mapl8_h2omw, &
377 lcnst%mapl8_grav, lcnst%mapl8_alhl, lcnst%mapl8_alhf, lcnst%mapl8_pi, &
378 lcnst%mapl8_rgas, lcnst%mapl8_cp, lcnst%mapl8_vireps, lcnst%mapl8_alhs, &
379 lcnst%mapl8_tice, lcnst%mapl8_rvap, lcnst%mapl8_p00,
conf%do_phy_mst )
382 traj%u(isc:iec,jsc:jec,:) =
real(ltraj%ut(1:im,1:jm,:),kind_real)
383 traj%v(isc:iec,jsc:jec,:) =
real(ltraj%vt(1:im,1:jm,:),kind_real)
384 traj%t(isc:iec,jsc:jec,:) =
real(ltraj%pk(1:im,1:jm,:) * ltraj%PTT(1:im,1:jm,:) / p00**kappa,kind_real)
385 traj%qv(isc:iec,jsc:jec,:) =
real(ltraj%qvt(1:im,1:jm,:),kind_real)
386 traj%qi(isc:iec,jsc:jec,:) =
real(ltraj%qilst(1:im,1:jm,:) + ltraj%qicnt(1:im,1:jm,:),kind_real)
387 traj%ql(isc:iec,jsc:jec,:) =
real(ltraj%qllst(1:im,1:jm,:) + ltraj%qlcnt(1:im,1:jm,:),kind_real)
388 traj%cfcn(isc:iec,jsc:jec,:) =
real(ltraj%cfcnt(1:im,1:jm,:),kind_real)
394 subroutine step_tl(self,conf,traj,pert)
398 class(fv3jedi_lm_moist_type),
target,
intent(inout) :: self
399 type(fv3jedi_lm_conf),
intent(in) :: conf
400 type(fv3jedi_lm_traj),
intent(in) :: traj
401 type(fv3jedi_lm_pert),
intent(inout) :: pert
403 integer :: i,j,im,jm,lm,isc,iec,jsc,jec
404 type(local_traj_moist),
pointer :: ltraj
405 type(local_pert_moist),
pointer :: lpert
406 type(local_cnst_moist),
pointer :: lcnst
419 if (
conf%saveltraj)
then 420 ltraj => self%ltraj(
conf%n)
422 ltraj => self%ltraj(1)
429 lpert%up(1:im,1:jm,:) = dble(pert%u (isc:iec,jsc:jec,:))
430 lpert%vp(1:im,1:jm,:) = dble(pert%v (isc:iec,jsc:jec,:))
431 lpert%ptp(1:im,1:jm,:) = dble(pert%t (isc:iec,jsc:jec,:)) *
p00**
kappa / ltraj%pk(1:im,1:jm,:)
432 lpert%qvp(1:im,1:jm,:) = dble(pert%qv(isc:iec,jsc:jec,:))
433 lpert%qilsp(1:im,1:jm,:) = dble(pert%qi(isc:iec,jsc:jec,:)) * ltraj%ilsf(1:im,1:jm,:)
434 lpert%qicnp(1:im,1:jm,:) = dble(pert%qi(isc:iec,jsc:jec,:)) * ltraj%icnf(1:im,1:jm,:)
435 lpert%qllsp(1:im,1:jm,:) = dble(pert%ql(isc:iec,jsc:jec,:)) * ltraj%llsf(1:im,1:jm,:)
436 lpert%qlcnp(1:im,1:jm,:) = dble(pert%ql(isc:iec,jsc:jec,:)) * ltraj%lcnf(1:im,1:jm,:)
437 lpert%cflsp(1:im,1:jm,:) = 0.0_8
438 lpert%cfcnp(1:im,1:jm,:) = dble(pert%cfcn(isc:iec,jsc:jec,:))
440 ltraj%cnv_dqldtt = 0.0_8
441 ltraj%cnv_mfdt = 0.0_8
442 ltraj%cnv_prc3t = 0.0_8
443 ltraj%cnv_updft = 0.0_8
444 lpert%cnv_dqldtp = 0.0_8
445 lpert%cnv_mfdp = 0.0_8
446 lpert%cnv_prc3p = 0.0_8
447 lpert%cnv_updfp = 0.0_8
453 if ( ltraj%doconvec(i,j) == 1)
then 455 lcnst%mapl8_cp, lcnst%mapl8_alhl, &
456 lcnst%mapl8_grav, lcnst%mapl8_rgas, &
457 lcnst%mapl8_h2omw, lcnst%mapl8_airmw, &
458 lcnst%mapl8_vireps, &
459 ltraj%seedras(i,j), lcnst%sige, &
461 ltraj%wgt0(i,j,:), ltraj%wgt1(i,j,:), &
462 ltraj%frland(i,j), ltraj%ts(i,j), &
463 ltraj%ptt(i,j,:), lpert%ptp(i,j,:), &
464 ltraj%qvt(i,j,:), lpert%qvp(i,j,:), &
465 ltraj%ut(i,j,:), lpert%up(i,j,:), &
466 ltraj%vt(i,j,:), lpert%vp(i,j,:), &
467 ltraj%co_auto(i,j), ltraj%cnv_ple(i,j,:), &
468 ltraj%cnv_dqldtt(i,j,:), lpert%cnv_dqldtp(i,j,:), &
469 ltraj%cnv_mfdt(i,j,:), lpert%cnv_mfdp(i,j,:), &
470 ltraj%cnv_prc3t(i,j,:), lpert%cnv_prc3p(i,j,:), &
471 ltraj%cnv_updft(i,j,:), lpert%cnv_updfp(i,j,:), &
472 lcnst%rasparams, lcnst%estblx )
480 ltraj%ptt_c, lpert%ptp, &
481 ltraj%qvt_c, lpert%qvp, &
483 ltraj%cnv_dqldtt_c, lpert%cnv_dqldtp, ltraj%cnv_mfdt_c, lpert%cnv_mfdp, &
484 ltraj%cnv_prc3t_c, lpert%cnv_prc3p, ltraj%cnv_updft_c, lpert%cnv_updfp, &
485 ltraj%qilst, lpert%qilsp, ltraj%qllst, lpert%qllsp, &
486 ltraj%qicnt, lpert%qicnp, ltraj%qlcnt, lpert%qlcnp, &
487 ltraj%cflst, lpert%cflsp, ltraj%cfcnt, lpert%cfcnp, &
488 ltraj%frland, lcnst%cloudparams, lcnst%estblx, ltraj%khu, ltraj%khl, &
489 lcnst%mapl8_runiv, lcnst%mapl8_kappa, lcnst%mapl8_airmw, lcnst%mapl8_h2omw, &
490 lcnst%mapl8_grav, lcnst%mapl8_alhl, lcnst%mapl8_alhf, lcnst%mapl8_pi, &
491 lcnst%mapl8_rgas, lcnst%mapl8_cp, lcnst%mapl8_vireps, lcnst%mapl8_alhs, &
492 lcnst%mapl8_tice, lcnst%mapl8_rvap, lcnst%mapl8_p00,
conf%do_phy_mst )
495 pert%u(isc:iec,jsc:jec,:) =
real(lpert%up (1:im,1:jm,:),kind_real)
496 pert%v(isc:iec,jsc:jec,:) =
real(lpert%vp (1:im,1:jm,:),kind_real)
497 pert%t(isc:iec,jsc:jec,:) =
real(lpert%ptp(1:im,1:jm,:) * ltraj%pk(1:im,1:jm,:) / p00**kappa,kind_real)
498 pert%qv(isc:iec,jsc:jec,:) =
real(lpert%qvp(1:im,1:jm,:),kind_real)
499 pert%qi(isc:iec,jsc:jec,:) =
real(lpert%qilsp(1:im,1:jm,:) + lpert%qicnp(1:im,1:jm,:),kind_real)
500 pert%ql(isc:iec,jsc:jec,:) =
real(lpert%qllsp(1:im,1:jm,:) + lpert%qlcnp(1:im,1:jm,:),kind_real)
501 pert%cfcn(isc:iec,jsc:jec,:) =
real(lpert%cfcnp(1:im,1:jm,:),kind_real)
507 subroutine step_ad(self,conf,traj,pert)
511 class(fv3jedi_lm_moist_type),
target,
intent(inout) :: self
512 type(fv3jedi_lm_conf),
intent(in) :: conf
513 type(fv3jedi_lm_traj),
intent(in) :: traj
514 type(fv3jedi_lm_pert),
intent(inout) :: pert
516 integer :: i,j,im,jm,lm,isc,iec,jsc,jec
517 type(local_traj_moist),
pointer :: ltraj
518 type(local_pert_moist),
pointer :: lpert
519 type(local_cnst_moist),
pointer :: lcnst
532 if (
conf%saveltraj)
then 533 ltraj => self%ltraj(
conf%n)
535 ltraj => self%ltraj(1)
542 lpert%up(1:im,1:jm,:) = dble(pert%u (isc:iec,jsc:jec,:))
543 lpert%vp(1:im,1:jm,:) = dble(pert%v (isc:iec,jsc:jec,:))
544 lpert%ptp(1:im,1:jm,:) = dble(pert%t (isc:iec,jsc:jec,:)) * ltraj%pk(1:im,1:jm,:) /
p00**
kappa 545 lpert%qvp(1:im,1:jm,:) = dble(pert%qv(isc:iec,jsc:jec,:))
546 lpert%qilsp(1:im,1:jm,:) = dble(pert%qi(isc:iec,jsc:jec,:))
547 lpert%qicnp(1:im,1:jm,:) = dble(pert%qi(isc:iec,jsc:jec,:))
548 lpert%qllsp(1:im,1:jm,:) = dble(pert%ql(isc:iec,jsc:jec,:))
549 lpert%qlcnp(1:im,1:jm,:) = dble(pert%ql(isc:iec,jsc:jec,:))
550 lpert%cflsp(1:im,1:jm,:) = 0.0_8
551 lpert%cfcnp(1:im,1:jm,:) = dble(pert%cfcn(isc:iec,jsc:jec,:))
553 ltraj%cnv_dqldtt = 0.0_8
554 ltraj%cnv_mfdt = 0.0_8
555 ltraj%cnv_prc3t = 0.0_8
556 ltraj%cnv_updft = 0.0_8
557 lpert%cnv_dqldtp = 0.0_8
558 lpert%cnv_mfdp = 0.0_8
559 lpert%cnv_prc3p = 0.0_8
560 lpert%cnv_updfp = 0.0_8
564 ltraj%ptt_c, lpert%ptp, &
565 ltraj%qvt_c, lpert%qvp, &
567 ltraj%cnv_dqldtt_c, lpert%cnv_dqldtp, ltraj%cnv_mfdt_c, lpert%cnv_mfdp, &
568 ltraj%cnv_prc3t_c, lpert%cnv_prc3p, ltraj%cnv_updft_c, lpert%cnv_updfp, &
569 ltraj%qilst, lpert%qilsp, ltraj%qllst, lpert%qllsp, &
570 ltraj%qicnt, lpert%qicnp, ltraj%qlcnt, lpert%qlcnp, &
571 ltraj%cflst, lpert%cflsp, ltraj%cfcnt, lpert%cfcnp, &
572 ltraj%frland, lcnst%cloudparams, lcnst%estblx, ltraj%khu, ltraj%khl, &
573 lcnst%mapl8_runiv, lcnst%mapl8_kappa, lcnst%mapl8_airmw, lcnst%mapl8_h2omw, &
574 lcnst%mapl8_grav, lcnst%mapl8_alhl, lcnst%mapl8_alhf, lcnst%mapl8_pi, &
575 lcnst%mapl8_rgas, lcnst%mapl8_cp, lcnst%mapl8_vireps, lcnst%mapl8_alhs, &
576 lcnst%mapl8_tice, lcnst%mapl8_rvap, lcnst%mapl8_p00,
conf%do_phy_mst )
582 if ( ltraj%doconvec(i,j) == 1)
then 584 lcnst%mapl8_cp, lcnst%mapl8_alhl, &
585 lcnst%mapl8_grav, lcnst%mapl8_rgas, &
586 lcnst%mapl8_h2omw, lcnst%mapl8_airmw, &
587 lcnst%mapl8_vireps, &
588 ltraj%seedras(i,j), lcnst%sige, &
590 ltraj%wgt0(i,j,:), ltraj%wgt1(i,j,:), &
591 ltraj%frland(i,j), ltraj%ts(i,j), &
592 ltraj%ptt(i,j,:), lpert%ptp(i,j,:), &
593 ltraj%qvt(i,j,:), lpert%qvp(i,j,:), &
594 ltraj%ut(i,j,:), lpert%up(i,j,:), &
595 ltraj%vt(i,j,:), lpert%vp(i,j,:), &
596 ltraj%co_auto(i,j), ltraj%cnv_ple(i,j,:), &
597 ltraj%cnv_dqldtt(i,j,:), lpert%cnv_dqldtp(i,j,:), &
598 ltraj%cnv_mfdt(i,j,:), lpert%cnv_mfdp(i,j,:), &
599 ltraj%cnv_prc3t(i,j,:), lpert%cnv_prc3p(i,j,:), &
600 ltraj%cnv_updft(i,j,:), lpert%cnv_updfp(i,j,:), &
601 lcnst%rasparams, lcnst%estblx )
608 pert%u (isc:iec,jsc:jec,:) =
real(lpert%up (1:im,1:jm,:),kind_real)
609 pert%v (isc:iec,jsc:jec,:) =
real(lpert%vp (1:im,1:jm,:),kind_real)
610 pert%t (isc:iec,jsc:jec,:) =
real(lpert%ptp(1:im,1:jm,:) * p00**kappa,kind_real) / ltraj%pk(1:im,1:jm,:)
611 pert%qv (isc:iec,jsc:jec,:) =
real(lpert%qvp(1:im,1:jm,:),kind_real)
612 pert%qi (isc:iec,jsc:jec,:) =
real(lpert%qilsp(1:im,1:jm,:)*ltraj%ilsf(1:im,1:jm,:) + &
lpert%qicnp(1:im,1:jm,:)*ltraj%icnf(1:im,1:jm,:),kind_real)
613 pert%ql (isc:iec,jsc:jec,:) =
real(lpert%qllsp(1:im,1:jm,:)*ltraj%llsf(1:im,1:jm,:) + &
lpert%qlcnp(1:im,1:jm,:)*ltraj%lcnf(1:im,1:jm,:),kind_real)
614 pert%cfcn(isc:iec,jsc:jec,:) =
real(lpert%cfcnp(1:im,1:jm,:),kind_real)
620 subroutine delete(self,conf)
623 class(fv3jedi_lm_moist_type),
intent(inout) :: self
624 type(fv3jedi_lm_conf),
intent(in) :: conf
628 deallocate(self%lcnst%ESTBLX)
629 deallocate(self%lcnst%SIGE)
633 if (
conf%saveltraj)
then 641 deallocate(self%ltraj)
647 subroutine set_ltraj(conf,lcnst,traj,ltraj)
649 type(fv3jedi_lm_conf),
intent(in) :: conf
650 type(local_cnst_moist),
intent(in) :: lcnst
651 type(fv3jedi_lm_traj),
target,
intent(in) :: traj
652 type(local_traj_moist),
intent(inout) :: ltraj
654 real(8),
allocatable,
dimension(:,:,:) :: PLO, PK
655 real(8),
allocatable,
dimension(:,:,:) :: TEMP
656 real(8),
allocatable,
dimension(:,:,:) :: PTT_F, QVT_F
657 real(8),
allocatable,
dimension(:,:,:) :: PTT_L, QVT_L
658 real(8),
allocatable,
dimension(:,:,:) :: HEAT
659 integer,
allocatable,
dimension(:,:) :: CTOP
660 real(8),
allocatable,
dimension(:,:) :: sumHEAT
661 real(8),
allocatable,
dimension(:,:) :: JACOBIAN
662 real(8),
allocatable,
dimension(:) :: PT_pert, QV_pert
663 real(8),
allocatable,
dimension(:) :: PT_pert_in, QV_pert_in
664 real(8),
allocatable,
dimension(:) :: H_pert, M_pert
665 real(8),
allocatable,
dimension(:,:,:) :: fQi
667 integer :: i,j,l,im,jm,lm,isc,iec,jsc,jec
668 real(8),
parameter :: PMIN_DET = 3000.0, autoc_cn_ocn = 2.5e-3, autoc_cn_land = autoc_cn_ocn
679 allocate(plo(im,jm,lm) )
680 allocate(pk(im,jm,lm) )
681 allocate(temp(im,jm,lm) )
682 allocate(ptt_f(im,jm,lm) )
683 allocate(qvt_f(im,jm,lm) )
684 allocate(ptt_l(im,jm,lm) )
685 allocate(qvt_l(im,jm,lm) )
686 allocate(heat(im,jm,lm) )
687 allocate(ctop(im,jm) )
688 allocate(sumheat(im,jm) )
689 allocate(jacobian(2*lm,2))
690 allocate(h_pert(lm) )
691 allocate(m_pert(lm) )
692 allocate(pt_pert(lm) )
693 allocate(qv_pert(lm) )
694 allocate(pt_pert_in(lm) )
695 allocate(qv_pert_in(lm) )
696 allocate(fqi(im,jm,lm) )
699 ltraj%ut(1:im,1:jm,:) = dble(traj%u(isc:iec,jsc:jec,:))
700 ltraj%vt(1:im,1:jm,:) = dble(traj%v(isc:iec,jsc:jec,:))
706 ltraj%PTT(1:im,1:jm,:) =
p00**
kappa * dble(traj%t(isc:iec,jsc:jec,:)) / ltraj%pk(1:im,1:jm,:)
709 ltraj%cnv_ple = 0.01_8*ltraj%ple
710 plo = 0.5_8*(ltraj%CNV_PLE(:,:,0:lm-1) + ltraj%CNV_PLE(:,:,1:lm ) )
711 pk = (plo/1000.0_8)**(lcnst%MAPL8_RGAS/lcnst%MAPL8_CP)
715 ltraj%qvt(1:im,1:jm,:) = dble(traj%qv(isc:iec,jsc:jec,:))
718 ltraj%cfcnt(1:im,1:jm,:) = dble(traj%cfcn(isc:iec,jsc:jec,:))
720 ltraj%ts (1:im,1:jm) = dble(traj%ts (isc:iec,jsc:jec))
721 ltraj%frland(1:im,1:jm) = dble(traj%frland(isc:iec,jsc:jec))
722 ltraj%kcbl (1:im,1:jm) = nint(traj%kcbl (isc:iec,jsc:jec))
723 ltraj%khl (1:im,1:jm) = nint(traj%khl (isc:iec,jsc:jec))
724 ltraj%khu (1:im,1:jm) = nint(traj%khu (isc:iec,jsc:jec))
726 ltraj%PTT_C = ltraj%PTT
727 ltraj%QVT_C = ltraj%QVT
729 ltraj%CNV_DQLDTT_C = 0.0_8
730 ltraj%CNV_MFDT_C = 0.0_8
731 ltraj%CNV_PRC3T_C = 0.0_8
732 ltraj%CNV_UPDFT_C = 0.0_8
741 ltraj%SEEDRAS(:,:) = 1000000 * ( 100*temp(:,:,lm) - int( 100*temp(:,:,lm) ) )
746 ltraj%WGT0(i,j,:) = 0.0_8
747 ltraj%WGT0(i,j,ltraj%KCBL(i,j):lm) = 1.0_8
748 ltraj%WGT1(i,j,:) = 0.0_8
749 ltraj%WGT1(i,j,ltraj%KCBL(i,j):lm) = 1.0_8
753 where (ltraj%FRLAND<0.1_8)
754 ltraj%CO_AUTO = autoc_cn_ocn
756 ltraj%CO_AUTO = autoc_cn_land
763 CALL rase0(im*jm, im*jm, lm, lcnst%ICMIN,
conf%DT, &
764 lcnst%MAPL8_CP, lcnst%MAPL8_ALHL, lcnst%MAPL8_GRAV, lcnst%MAPL8_RGAS, &
765 lcnst%MAPL8_H2OMW, lcnst%MAPL8_AIRMW, lcnst%MAPL8_VIREPS, &
766 ltraj%SEEDRAS, lcnst%SIGE, &
767 ltraj%KCBL, ltraj%WGT0, ltraj%WGT1, ltraj%FRLAND, ltraj%TS, &
768 ltraj%PTT_C, ltraj%QVT_C, &
769 ltraj%CO_AUTO, ltraj%CNV_PLE, &
770 ltraj%CNV_DQLDTT_C, ltraj%CNV_MFDT_C, &
771 ltraj%CNV_PRC3T_C, ltraj%CNV_UPDFT_C, &
772 lcnst%RASPARAMS, lcnst%ESTBLX )
788 if (
conf%do_phy_mst == 1)
then 790 elseif (
conf%do_phy_mst == 2)
then 798 heat(i,j,:) = (ltraj%PTT_C(i,j,:) - ltraj%PTT(i,j,:))/
conf%DT
803 IF ( abs(heat(i,j,l)) .gt. 0.01*maxval(abs(heat(i,j,:)),1) )
THEN 810 if ( (ctop(i,j) .ne. lm) .and. (ltraj%KCBL(i,j) - ctop(i,j) > 0) )
then 811 sumheat(i,j) = ( sum(abs(heat(i,j,ctop(i,j):ltraj%KCBL(i,j)-1))) &
812 - maxval(abs(heat(i,j,ctop(i,j):ltraj%KCBL(i,j)-1)),1) ) &
813 / ( ltraj%KCBL(i,j) - ctop(i,j) )
817 IF ( ltraj%KCBL(i,j) - ctop(i,j) >= maxcondep )
THEN 818 IF (sumheat(i,j) / maxval(abs(heat(i,j,1:ltraj%KCBL(i,j)-1)),1) > 0.125 )
then 819 ltraj%DOCONVEC(i,j) = 1
825 IF ( ltraj%DOCONVEC(i,j) == 1 )
THEN 844 ltraj%QILST(1:im,1:jm,:) = dble(traj%QLS(isc:iec,jsc:jec,:)) * fqi(1:im,1:jm,:)
845 ltraj%QLLST(1:im,1:jm,:) = dble(traj%QLS(isc:iec,jsc:jec,:)) * (1-fqi(1:im,1:jm,:))
846 ltraj%QICNT(1:im,1:jm,:) = dble(traj%QCN(isc:iec,jsc:jec,:)) * fqi(1:im,1:jm,:)
847 ltraj%QLCNT(1:im,1:jm,:) = dble(traj%QCN(isc:iec,jsc:jec,:)) * (1-fqi(1:im,1:jm,:))
861 if ( ltraj%QILST(i,j,l) + ltraj%QICNT(i,j,l) .gt. 0.0_8 )
then 862 ltraj%ILSF(i,j,l) = ltraj%QILST(i,j,l) / ( ltraj%QILST(i,j,l) + ltraj%QICNT(i,j,l) )
863 ltraj%ICNF(i,j,l) = ltraj%QICNT(i,j,l) / ( ltraj%QILST(i,j,l) + ltraj%QICNT(i,j,l) )
865 if ( ltraj%QLLST(i,j,l) + ltraj%QLCNT(i,j,l) .gt. 0.0_8 )
then 866 ltraj%LLSF(i,j,l) = ltraj%QLLST(i,j,l) / ( ltraj%QLLST(i,j,l) + ltraj%QLCNT(i,j,l) )
867 ltraj%LCNF(i,j,l) = ltraj%QLCNT(i,j,l) / ( ltraj%QLLST(i,j,l) + ltraj%QLCNT(i,j,l) )
889 deallocate(pt_pert_in)
890 deallocate(qv_pert_in)
909 pt_pert(ltraj%KCBL(i,j)) = 1.0_8
913 if (ltraj%KCBL(i,j) == lm)
then 914 qv_pert(ltraj%KCBL(i,j)) = 1.0_8
916 qv_pert(ltraj%KCBL(i,j) + 1) = 1.0_8
927 lcnst%mapl8_cp, lcnst%mapl8_alhl, &
928 lcnst%mapl8_grav, lcnst%mapl8_rgas, &
929 lcnst%mapl8_h2omw, lcnst%mapl8_airmw, &
930 lcnst%mapl8_vireps, &
931 ltraj%seedras(i,j), lcnst%sige, &
933 ltraj%wgt0(i,j,:), ltraj%wgt1(i,j,:), &
934 ltraj%frland(i,j), ltraj%ts(i,j), &
935 ptt_f(i,j,:), pt_pert, &
936 qvt_f(i,j,:), qv_pert, &
937 ltraj%co_auto(i,j), ltraj%cnv_ple(i,j,:), &
938 lcnst%rasparams, lcnst%estblx )
941 h_pert = (pt_pert - pt_pert_in)/
conf%DT
942 m_pert = (qv_pert - qv_pert_in)/
conf%DT
946 jacobian(0*lm+1:1*lm,1) = h_pert
947 jacobian(1*lm+1:2*lm,1) = m_pert
949 jacobian(0*lm+1:1*lm,2) = h_pert
950 jacobian(1*lm+1:2*lm,2) = m_pert
958 if ( (maxval(abs(jacobian(1:lm ,1))) .gt. 0.00010 ) .or. &
959 (maxval(abs(jacobian(1:lm ,2))) .gt. 0.25 ) .or. &
960 (maxval(abs(jacobian(lm+1:2*lm,1))) .gt. 1.0e-07 ) .or. &
961 (maxval(abs(jacobian(lm+1:2*lm,2))) .gt. 0.000250 ) )
then 963 ltraj%doconvec(i,j) = 0
967 ltraj%doconvec(i,j) = 1
979 integer,
intent(in) :: im,jm,lm
980 type(local_traj_moist),
intent(inout) :: ltraj
983 allocate(ltraj%ut(im,jm,lm) )
984 allocate(ltraj%vt(im,jm,lm) )
985 allocate(ltraj%ptt(im,jm,lm) )
986 allocate(ltraj%qvt(im,jm,lm) )
987 allocate(ltraj%ts(im,jm) )
988 allocate(ltraj%frland(im,jm) )
989 allocate(ltraj%kcbl(im,jm) )
990 allocate(ltraj%khu(im,jm) )
991 allocate(ltraj%khl(im,jm) )
994 allocate(ltraj%ple(im,jm,0:lm) )
995 allocate(ltraj%cnv_ple(im,jm,0:lm) )
996 allocate(ltraj%pk(im,jm,lm) )
999 allocate(ltraj%cnv_dqldtt(im,jm,lm) )
1000 allocate(ltraj%cnv_mfdt(im,jm,lm) )
1001 allocate(ltraj%cnv_prc3t(im,jm,lm) )
1002 allocate(ltraj%cnv_updft(im,jm,lm) )
1003 allocate(ltraj%ptt_c(im,jm,lm) )
1004 allocate(ltraj%qvt_c(im,jm,lm) )
1005 allocate(ltraj%cnv_dqldtt_c(im,jm,lm))
1006 allocate(ltraj%cnv_mfdt_c(im,jm,lm) )
1007 allocate(ltraj%cnv_prc3t_c(im,jm,lm) )
1008 allocate(ltraj%cnv_updft_c(im,jm,lm) )
1009 allocate(ltraj%seedras(im,jm) )
1010 allocate(ltraj%co_auto(im,jm) )
1011 allocate(ltraj%doconvec(im,jm) )
1012 allocate(ltraj%wgt0(im,jm,lm) )
1013 allocate(ltraj%wgt1(im,jm,lm) )
1016 allocate(ltraj%qilst(im,jm,lm) )
1017 allocate(ltraj%qllst(im,jm,lm) )
1018 allocate(ltraj%qicnt(im,jm,lm) )
1019 allocate(ltraj%qlcnt(im,jm,lm) )
1020 allocate(ltraj%cflst(im,jm,lm) )
1021 allocate(ltraj%cfcnt(im,jm,lm) )
1022 allocate(ltraj%ilsf(im,jm,lm) )
1023 allocate(ltraj%icnf(im,jm,lm) )
1024 allocate(ltraj%llsf(im,jm,lm) )
1025 allocate(ltraj%lcnf(im,jm,lm) )
1033 integer,
intent(in) :: im,jm,lm
1034 type(local_pert_moist),
intent(inout) :: lpert
1036 allocate(lpert%up(im,jm,lm) )
1037 allocate(lpert%vp(im,jm,lm) )
1038 allocate(lpert%ptp(im,jm,lm) )
1039 allocate(lpert%qvp(im,jm,lm) )
1040 allocate(lpert%cnv_dqldtp(im,jm,lm) )
1041 allocate(lpert%cnv_mfdp(im,jm,lm) )
1042 allocate(lpert%cnv_prc3p(im,jm,lm) )
1043 allocate(lpert%cnv_updfp(im,jm,lm) )
1044 allocate(lpert%qilsp(im,jm,lm) )
1045 allocate(lpert%qllsp(im,jm,lm) )
1046 allocate(lpert%qicnp(im,jm,lm) )
1047 allocate(lpert%qlcnp(im,jm,lm) )
1048 allocate(lpert%cflsp(im,jm,lm) )
1049 allocate(lpert%cfcnp(im,jm,lm) )
1057 type(local_traj_moist),
intent(inout) :: ltraj
1059 deallocate(ltraj%ut)
1060 deallocate(ltraj%vt)
1061 deallocate(ltraj%ptt)
1062 deallocate(ltraj%qvt)
1063 deallocate(ltraj%ts)
1064 deallocate(ltraj%frland)
1065 deallocate(ltraj%kcbl)
1066 deallocate(ltraj%khu)
1067 deallocate(ltraj%khl)
1068 deallocate(ltraj%ple)
1069 deallocate(ltraj%cnv_ple)
1070 deallocate(ltraj%pk)
1071 deallocate(ltraj%cnv_dqldtt)
1072 deallocate(ltraj%cnv_mfdt)
1073 deallocate(ltraj%cnv_prc3t)
1074 deallocate(ltraj%cnv_updft)
1075 deallocate(ltraj%ptt_c)
1076 deallocate(ltraj%qvt_c)
1077 deallocate(ltraj%cnv_dqldtt_c)
1078 deallocate(ltraj%cnv_mfdt_c)
1079 deallocate(ltraj%cnv_prc3t_c)
1080 deallocate(ltraj%cnv_updft_c)
1081 deallocate(ltraj%seedras)
1082 deallocate(ltraj%co_auto)
1083 deallocate(ltraj%doconvec)
1084 deallocate(ltraj%wgt0)
1085 deallocate(ltraj%wgt1)
1086 deallocate(ltraj%qilst)
1087 deallocate(ltraj%qllst)
1088 deallocate(ltraj%qicnt)
1089 deallocate(ltraj%qlcnt)
1090 deallocate(ltraj%cflst)
1091 deallocate(ltraj%cfcnt)
1092 deallocate(ltraj%ilsf)
1093 deallocate(ltraj%icnf)
1094 deallocate(ltraj%llsf)
1095 deallocate(ltraj%lcnf)
1103 type(local_pert_moist),
intent(inout) :: lpert
1105 deallocate(lpert%up)
1106 deallocate(lpert%vp)
1107 deallocate(lpert%ptp)
1108 deallocate(lpert%qvp)
1109 deallocate(lpert%cnv_dqldtp)
1110 deallocate(lpert%cnv_mfdp)
1111 deallocate(lpert%cnv_prc3p)
1112 deallocate(lpert%cnv_updfp)
1113 deallocate(lpert%qilsp)
1114 deallocate(lpert%qllsp)
1115 deallocate(lpert%qicnp)
1116 deallocate(lpert%qlcnp)
1117 deallocate(lpert%cflsp)
1118 deallocate(lpert%cfcnp)
1125
integer, parameter, public set
real(kind=kind_real), parameter, public p00
Compute ice fraction from temperature.
real(8), parameter tmaxtbl
real, parameter, public mapl_alhs
subroutine, public cloud_driver_b(dt, im, jm, lm, th, thb, q, qb, ple, cnv_dqldt, cnv_dqldtb, cnv_mfd, cnv_mfdb, cnv_prc3, cnv_prc3b, cnv_updf, cnv_updfb, qi_ls, qi_lsb, ql_ls, ql_lsb, qi_con, qi_conb, ql_con, ql_conb, cf_ls, cf_lsb, cf_con, cf_conb, frland, physparams, estblx, khu, khl, cons_runiv, cons_kappa, cons_airmw, cons_h2omw, cons_grav, cons_alhl, cons_alhf, cons_pi, cons_rgas, cons_cp, cons_vireps, cons_alhs, cons_tice, cons_rvap, cons_p00, do_moist_physics)
Compute pressures from delp.
real, parameter, public mapl_rvap
integer, parameter, public up
subroutine, public rase0_d(idim, irun, k0, icmin, dt, cons_cp, cons_alhl, cons_grav, cons_rgas, cons_h2omw, cons_airmw, cons_vireps, seedras, sige, kcbl, wgt0, wgt1, frland, ts, tho, thod, qho, qhod, co_auto, ple, rasparams, estblx)
type(cp_iter_controls_type), target, public cp_iter_controls
subroutine, public rase0(IDIM, IRUN, K0, ICMIN, DT, CONS_CP, CONS_ALHL, CONS_GRAV, CONS_RGAS, CONS_H2OMW, CONS_AIRMW, CONS_VIREPS, SEEDRAS, SIGE, KCBL, WGT0, WGT1, FRLAND, TS, THO, QHO, CO_AUTO, PLE, CLW, FLXD, CNV_PRC3, CNV_UPDFRC, RASPARAMS, ESTBLX)
real, parameter, public mapl_tice
subroutine, public cp_mod_ini(cp_mod_index)
real, parameter, public mapl_cp
subroutine jacobian_filter_tlm
real, parameter, public mapl_vireps
subroutine, public cp_mod_mid
real, parameter, public mapl_airmw
real, parameter, public mapl_alhl
subroutine, public rase_d(idim, irun, k0, icmin, dt, cons_cp, cons_alhl, cons_grav, cons_rgas, cons_h2omw, cons_airmw, cons_vireps, seedras, sige, kcbl, wgt0, wgt1, frland, ts, tho, thod, qho, qhod, uho, uhod, vho, vhod, co_auto, ple, clw, clwd, flxd, flxdd, cnv_prc3, cnv_prc3d, cnv_updfrc, cnv_updfrcd, rasparams, estblx)
subroutine, public cloud_driver_d(dt, im, jm, lm, th, thd, q, qd, ple, cnv_dqldt, cnv_dqldtd, cnv_mfd, cnv_mfdd, cnv_prc3, cnv_prc3d, cnv_updf, cnv_updfd, qi_ls, qi_lsd, ql_ls, ql_lsd, qi_con, qi_cond, ql_con, ql_cond, cf_ls, cf_lsd, cf_con, cf_cond, frland, physparams, estblx, khu, khl, cons_runiv, cons_kappa, cons_airmw, cons_h2omw, cons_grav, cons_alhl, cons_alhf, cons_pi, cons_rgas, cons_cp, cons_vireps, cons_alhs, cons_tice, cons_rvap, cons_p00, do_moist_physics)
subroutine, public cp_mod_end
subroutine step_tl(self, conf, traj, pert)
real, parameter, public mapl_kappa
real, parameter, public mapl_h2omw
subroutine, public delete(self)
Top level for fv3jedi linearized model.
real, parameter, public mapl_p00
subroutine allocate_lpert(im, jm, lm, lpert)
subroutine step_ad(self, conf, traj, pert)
type(cp_iter_type), dimension(:), allocatable, target, public cp_iter
real, parameter, public mapl_alhf
subroutine, public finalize_cp_iter
subroutine init_tl(self, pert, traj)
subroutine, public rase_b(idim, irun, k0, icmin, dt, cons_cp, cons_alhl, cons_grav, cons_rgas, cons_h2omw, cons_airmw, cons_vireps, seedras, sige, kcbl, wgt0, wgt1, frland, ts, tho, thob, qho, qhob, uho, uhob, vho, vhob, co_auto, ple, clw, clwb, flxd, flxdb, cnv_prc3, cnv_prc3b, cnv_updfrc, cnv_updfrcb, rasparams, estblx)
subroutine deallocate_ltraj(ltraj)
Local perturbation objects.
subroutine set_ltraj(conf, lcnst, traj, ltraj)
real, parameter, public mapl_rgas
subroutine, public esinit(ESTBLX)
real, parameter, public mapl_grav
subroutine init_ad(self, pert, traj)
subroutine deallocate_lpert(lpert)
subroutine, public initialize_cp_iter
real(kind=mapl_r4), parameter, public mapl_pi
subroutine, public create(self, geom, vars)
subroutine init_nl(self, pert, traj)
real, parameter, public mapl_runiv
real(kind=kind_real), parameter, public kappa
subroutine allocate_ltraj(im, jm, lm, ltraj)
subroutine step_nl(self, conf, traj)
Constants for the FV3 model.