14 real,
parameter::
c_liq = 4.1855e+3
18 real,
parameter::
tice = 273.16
21 real,
parameter::
hlv0 = 2.5e6
22 real,
parameter::
hlf0 = 3.3358e5
28 real(kind=R_GRID),
parameter::
e00 = 611.21
44 subroutine fv_sat_adj(mdt, zvir, is, ie, js, je, ng, hydrostatic, consv_te, &
45 te0, qv, ql, qi, qr, qs, qg, dpln, delz, pt, dp, &
46 q_con, cappa, area, dtdt, out_dt, last_step, do_qa, qa)
50 integer,
intent(in):: is, ie, js, je, ng
51 real,
intent(in):: mdt
52 real,
intent(in):: zvir
53 logical,
intent(in):: hydrostatic, consv_te, out_dt
54 logical,
intent(in):: last_step
55 logical,
intent(in):: do_qa
56 real,
intent(in),
dimension(is-ng:ie+ng,js-ng:je+ng):: dp, delz
57 real,
intent(in):: dpln(is:ie,js:je)
58 real,
intent(inout),
dimension(is-ng:ie+ng,js-ng:je+ng):: pt, qv, ql, qi, qr, qs,
qg 59 real,
intent(out):: qa(is-ng:ie+ng,js-ng:je+ng)
60 real(kind=R_GRID),
intent(in),
dimension(is-ng:ie+ng,js-ng:je+ng):: area
61 real,
intent(inout),
dimension(is-ng:,js-ng:):: q_con
62 real,
intent(inout),
dimension(is-ng:,js-ng:):: cappa
63 real,
intent(inout)::dtdt(is:ie,js:je)
64 real,
intent(out):: te0(is-ng:ie+ng,js-ng:je+ng)
66 real,
dimension(is:ie):: wqsat, dq2dt, qpz, cvm, t0, pt1, icp2, lcp2, tcp2, tcp3, &
67 den, q_liq, q_sol, src, hvar
68 real,
dimension(is:ie):: mc_air, lhl, lhi
69 real:: sink, qsw, rh, fac_v2l, fac_l2v
70 real:: tc, qsi, dqsdt, dq, dq0, pidep, qi_crt, tmp, dtmp
71 real:: condensates, tin, qstar, rqi, q_plus, q_minus
72 real:: sdt, dt_bigg, adj_fac, fac_s, fac_r, fac_i2s, fac_mlt, fac_l2r
73 real:: factor, qim, tice0, c_air, c_vap
80 real function wqs1(ta, den)
83 real,
intent(in):: ta, den
86 real,
parameter:: tmin=
tice - 160.
89 ap1 = 10.*dim(ta, tmin) + 1.
97 real function iqs1(ta, den)
100 real,
intent(in):: ta, den
103 real,
parameter:: tmin=
tice - 160.
106 ap1 = 10.*dim(ta, tmin) + 1.
107 ap1 =
min(2621., ap1)
115 real function wqs2(ta, den, dqdt)
118 real,
intent(in):: ta, den
119 real,
intent(out):: dqdt
122 real,
parameter:: tmin=
tice - 160.
125 ap1 = 10.*dim(ta, tmin) + 1.
126 ap1 =
min(2621., ap1)
136 subroutine wqs2_vect(is, ie, ta, den, wqsat, dqdt)
139 integer,
intent(in):: is, ie
140 real,
intent(in),
dimension(is:ie):: ta, den
141 real,
intent(out),
dimension(is:ie):: wqsat, dqdt
144 real,
parameter:: tmin=
tice - 160.
148 ap1 = 10.*dim(ta(i), tmin) + 1.
149 ap1 =
min(2621., ap1)
152 wqsat(i) = es / (
rvgas*ta(i)*den(i))
162 real function iqs2(ta, den, dqdt)
165 real,
intent(in):: ta, den
166 real,
intent(out):: dqdt
169 real,
parameter:: tmin=
tice - 160.
172 ap1 = 10.*dim(ta, tmin) + 1.
173 ap1 =
min(2621., ap1)
184 integer,
intent(in):: kmp
185 integer,
parameter:: length=2621
186 real,
parameter:: rhor = 1.0e3
187 real,
parameter:: vdifu = 2.11e-5
188 real,
parameter:: tcond = 2.36e-2
189 real,
parameter:: visk = 1.259e-5
190 real,
parameter:: hltc = 2.5e6
191 real,
parameter:: gam290 = 1.827363
192 real,
parameter:: gam380 = 4.694155
193 real,
parameter:: alin = 842.0
195 real,
parameter:: rnzr = 8.0e6
196 real,
parameter:: c_cracw = 0.9
201 if (is_master())
write(*,*)
'Top layer for GFDL_MP=', kmp
205 scm3 = (visk/vdifu)**(1./3.)
206 act2 =
pi * rnzr * rhor
209 crevp(2) = 0.78/sqrt(act2)
210 crevp(3) = 0.31*scm3*gam290*sqrt(alin/visk)/act2**0.725
212 crevp(5) = hltc**2*vdifu
215 allocate (
table(length) )
216 allocate (
table2(length) )
217 allocate (
tablew(length) )
218 allocate (
des2(length) )
219 allocate (
desw(length) )
237 integer,
intent(in):: n
238 real(kind=R_GRID):: esupc(200)
239 real(kind=R_GRID):: tmin, tem, esh20
240 real(kind=R_GRID):: wice, wh2o, t_ice
241 real(kind=R_GRID):: delt=0.1
250 tem = tmin+delt*
real(i-1)
256 tem = 253.16+delt*
real(i-1)
261 table(i+1400) = esh20
267 tem = 253.16+delt*
real(i-1)
268 wice = 0.05*(t_ice-tem)
269 wh2o = 0.05*(tem-253.16)
270 table(i+1400) = wice*
table(i+1400)+wh2o*esupc(i)
277 integer,
intent(in):: n
278 real(kind=R_GRID),
parameter:: delt=0.1
279 real(kind=R_GRID):: tmin
280 real(kind=R_GRID):: tem0, t_ice, fac1
287 tem0 = tmin + delt*
real(i-1)
289 fac1 =
lv0*(tem0-t_ice) / (tem0*t_ice)
300 integer,
intent(in):: n
301 real(kind=R_GRID):: delt=0.1
302 real(kind=R_GRID):: tmin
303 real(kind=R_GRID):: tem0, tem1, t_ice, fac0, fac1, fac2
312 tem0 = tmin+delt*
real(i-1)
313 fac0 = (tem0-t_ice) / (tem0*t_ice)
real, dimension(:), allocatable table
subroutine, public fv_sat_adj(mdt, zvir, is, ie, js, je, ng, hydrostatic, consv_te, te0, qv, ql, qi, qr, qs, qg, dpln, delz, pt, dp, q_con, cappa, area, dtdt, out_dt, last_step, do_qa, qa)
real(kind=8), parameter, public pi_8
Ratio of circle circumference to diameter [N/A].
real, parameter, public hlv
Latent heat of evaporation [J/kg].
real, parameter, public rdgas
Gas constant for dry air [J/kg/deg].
real, dimension(:), allocatable table2
real, parameter, public cp_vapor
Specific heat capacity of water vapor at constant pressure [J/kg/deg].
real function iqs1(ta, den)
real function wqs2(ta, den, dqdt)
real, parameter, public rvgas
Gas constant for water vapor [J/kg/deg].
real function wqs1(ta, den)
real(kind=r_grid), parameter e00
real, dimension(:), allocatable des2
subroutine, public qs_init(kmp)
real, parameter, public cp_air
Specific heat capacity of dry air at constant pressure [J/kg/deg].
real(kind=r_grid), parameter d2ice
integer, parameter, public r_grid
real, parameter, public hlf
Latent heat of fusion [J/kg].
real, parameter, public grav
Acceleration due to gravity [m/s^2].
subroutine wqs2_vect(is, ie, ta, den, wqsat, dqdt)
real, dimension(:), allocatable desw
real(kind=r_grid), parameter li2
real, dimension(:), allocatable tablew
real function iqs2(ta, den, dqdt)
The namespace for the qg model.
real(fp), parameter, public pi