Skip to content

Commit cf5d875

Browse files
Cases: add botany case in DEPHY-like format
1 parent 490686e commit cf5d875

File tree

6 files changed

+261
-0
lines changed

6 files changed

+261
-0
lines changed

cases/botany-dephy/backrad.inp.001.nc

8.85 KB
Binary file not shown.

cases/botany-dephy/convert_input.py

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
"""Converts prof.inp and lscale.inp input files to new NetCDF-based input."""
2+
import argparse
3+
4+
import numpy as np
5+
import netCDF4 as nc
6+
7+
PROF_NAMES = ["zh", "thetal", "qt", "ua", "va", "tke"]
8+
LSCALE_NAMES = ["zh", "ug", "vg", "wa", "dqtdxls", "dqtdyls", "tnqt_adv", "tnthetal_rad"]
9+
10+
11+
def parse_args():
12+
parser = argparse.ArgumentParser()
13+
14+
parser.add_argument("-p", "--prof", type=str, default="prof.inp.001")
15+
parser.add_argument("-l", "--lscale", type=str, default="lscale.inp.001")
16+
parser.add_argument("-o", "--output", type=str, default="init.001.nc")
17+
18+
return parser.parse_args()
19+
20+
21+
def main():
22+
args = parse_args()
23+
24+
prof = np.genfromtxt(args.prof, skip_header=2)
25+
lscale = np.genfromtxt(args.lscale, skip_header=2)
26+
27+
with nc.Dataset(args.output, "w") as ds:
28+
height = ds.createDimension("zh", len(prof))
29+
heights = ds.createVariable("zh", "f", ("zh",))
30+
heights[:] = prof[:,0]
31+
32+
for ivar in range(1, len(prof[0])):
33+
nc_var = ds.createVariable(PROF_NAMES[ivar], "f", ("zh",))
34+
nc_var[:] = prof[:,ivar]
35+
36+
for ivar in range(1, len(lscale[0])):
37+
nc_var = ds.createVariable(LSCALE_NAMES[ivar], "f", ("zh",))
38+
nc_var[:] = lscale[:,ivar]
39+
40+
# Nudging
41+
dim = ds.createDimension("time")
42+
var = ds.createVariable("time", "f", ("time",))
43+
var[0] = 0
44+
var[1] = 1.00000000E+07
45+
46+
a = 2
47+
b = 3
48+
c = 7.4
49+
nudging_constant = 6 * 3600 + (b * (0.5 * np.pi + np.arctan(a * 0.5 * np.pi * (1 - prof[:,0] / 3000))))**c
50+
51+
var = ds.createVariable("ua_nud", "f", ("time", "zh"))
52+
var[0,:] = prof[:,3]
53+
var[1,:] = prof[:,3]
54+
55+
var = ds.createVariable("nudging_constant_ua", "f", ("time", "zh"))
56+
var[0,:] = nudging_constant
57+
var[1,:] = nudging_constant
58+
59+
var = ds.createVariable("thetal_nud", "f", ("time", "zh"))
60+
var[0,:] = prof[:,1]
61+
var[1,:] = prof[:,1]
62+
63+
var = ds.createVariable("nudging_constant_thetal", "f", ("time", "zh"))
64+
var[0,:] = nudging_constant
65+
var[1,:] = nudging_constant
66+
67+
var = ds.createVariable("qt_nud", "f", ("time", "zh"))
68+
var[0,:] = prof[:,2]
69+
var[1,:] = prof[:,2]
70+
71+
var = ds.createVariable("nudging_constant_qt", "f", ("time", "zh"))
72+
var[0,:] = nudging_constant
73+
var[1,:] = nudging_constant
74+
75+
76+
if __name__ == "__main__":
77+
main()

cases/botany-dephy/init.001.nc

56.7 KB
Binary file not shown.

cases/botany-dephy/namoptions.001

+184
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
&RUN
2+
iexpnr = 001
3+
lwarmstart = .false.
4+
startfile = 'initdlatestmx000y000.001'
5+
runtime = 43200
6+
trestart = 43200
7+
ladaptive = .true.
8+
irandom = 44
9+
randthl = 0.1
10+
randqt = 2.5e-5
11+
nsv = 0
12+
courant = .5
13+
peclet = .1
14+
loutdirs = .true.
15+
/
16+
17+
&DOMAIN
18+
itot = 1536
19+
jtot = 1536
20+
kmax = 175
21+
22+
xsize = 153600
23+
ysize = 153600
24+
25+
xlat = 13.1
26+
xlon = 302
27+
xyear = 2020 ! Currently only used in netCDF time unit
28+
xday = 32
29+
xtime = 0.0
30+
/
31+
32+
&PHYSICS
33+
z0 = 0.00016 ! 1.6e-4
34+
ustin = 0.32
35+
ps = 101604.87
36+
thls = 298.5
37+
! thls = 299.135 ! EURECA
38+
! thls = 298.5 ! RICO
39+
40+
lmoist = .true.
41+
isurf = 2 !Forced surface temperature; fluxes are calculated
42+
timerad = 60
43+
iradiation = 4
44+
lcoriol = .true.
45+
lmomsubs = .false.
46+
/
47+
&NAMSURFACE
48+
thls = 298.5 ! duplicate temperature !
49+
z0mav = 1.6e-4
50+
z0hav = 3.2e-5
51+
albedoav = 0.07 ! From RCEMIP. note albedoav is used if lCnstAlbedo = .true. in NAMRADIATION
52+
/
53+
&NAMRADIATION
54+
lCnstAlbedo = .true. ! use a albedoav as albedo instead of angle-dependent parameterization
55+
! locean = .true. ! use ocean parameterization of albedo, otherwise land. (only for lCnstAlbedo = .false.)
56+
/
57+
58+
&DYNAMICS
59+
llsadv = .false.
60+
lqlnr = .false. ! obsolete
61+
cu = 0. ! -5 in RICO
62+
cv = 0.
63+
64+
iadv_mom = 62
65+
iadv_tke = 62
66+
iadv_thl = 62
67+
iadv_qt = 52
68+
iadv_sv = 52
69+
/
70+
71+
&NAMMICROPHYSICS
72+
imicro = 2
73+
Nc_0 = 70000000.0
74+
l_sb = .true.
75+
/
76+
77+
&NAMBULKMICROSTAT
78+
lmicrostat = .true.
79+
timeav = 300
80+
dtav = 60
81+
/
82+
&NAMCHECKSIM
83+
tcheck = 0
84+
/
85+
&NAMSAMPLING
86+
lsampcl = .false.
87+
lsampco = .false.
88+
dtav = 60
89+
timeav = 21600
90+
/
91+
&NAMTIMESTAT
92+
ltimestat = .true.
93+
dtav = 60
94+
/
95+
&NAMCROSSSECTION
96+
lcross = .true.
97+
lxz = .false.
98+
lyz = .false.
99+
crossheight = 1, 13, 35, 52 ! 7.5m, 198m, 611m, 999m
100+
dtav = 300
101+
/
102+
103+
&NAMGENSTAT
104+
lstat = .true.
105+
dtav = 300
106+
timeav = 300
107+
/
108+
&NAMCAPE
109+
lcape = .true.
110+
dtav = 300
111+
/
112+
&NAMFIELDDUMP
113+
lfielddump = .false.
114+
! lclassic = .false.
115+
dtav = 3600
116+
khigh = 149 ! 132=4030m 149=5048m
117+
! tmin = 43200 ! start fielddumps at 12h (implemented in to4.4_Fredrik)
118+
! select vartiables to store (implemented in to4.4_Fredrik, not in v4.3)
119+
lu = .true. ! consider omitting u, v
120+
lv = .true.
121+
lw = .true.
122+
lqt = .true.
123+
lql = .true.
124+
lthl = .true.
125+
lbuoy = .false.
126+
lsv = .false., .true. ! not Nr, just qr
127+
/
128+
&NAMSTATTEND
129+
dtav = 60
130+
timeav = 300
131+
ltend = .false.
132+
/
133+
&NAMRADSTAT
134+
lstat = .true.
135+
dtav = 60
136+
timeav = 300
137+
/
138+
139+
&NAMRADFIELD
140+
lradfield = .true.
141+
dtav = 3600
142+
timeav = 3600
143+
/
144+
&NAMVARBUDGET
145+
lvarbudget = .true. ! Note requires interactive radiation or it breaks
146+
dtav = 300
147+
timeav = 300
148+
/
149+
&NAMCLOUDFIELD
150+
dtav=1440
151+
lcloudfield = .false.
152+
/
153+
&NAMNETCDFSTATS
154+
lnetcdf = .true.
155+
! lsync = .true.
156+
lclassic = .true. ! NetCDF 3. No compression but saves RAM.
157+
/
158+
&SOLVER
159+
solver_id = 100 ! FFTW
160+
/
161+
162+
&NAMNUDGE
163+
! nudge to profiles given in nudge.inp.NNN
164+
lnudge = .true.
165+
tnudgefac = 1.
166+
/
167+
168+
&VVUQ_extra
169+
dudz = 0.0022
170+
u0 = -10
171+
thl_low =
172+
w0 = 0.0045
173+
wpamp = -0.00085
174+
case = 2
175+
thl_Gamma = 5.0
176+
qt_lambda = 1850
177+
qt0 = 0.01425
178+
z_ml = 500
179+
thl_tend0 = -5.78e-06
180+
qt_tend0 = -1.73e-08
181+
dthl0 = 1.25
182+
!thl_tend_z_max = 2000
183+
!qt_tend_z_max = 4000
184+
/

cases/botany-dephy/rrtmg_lw.nc

19.5 MB
Binary file not shown.

cases/botany-dephy/rrtmg_sw.nc

17.1 MB
Binary file not shown.

0 commit comments

Comments
 (0)