Select Git revision
prepare_namelist.py
prepare_namelist.py 1.92 KiB
import os, sys, shutil, warnings
import datetime as dt
sys.path.append(os.getcwd())
from config.cfg import exp, cluster
from utils import sed_inplace, copy, symlink, mkdir
def run(cluster, iens, begin, end, hist_interval=5):
rundir = cluster.wrf_rundir(iens)
print(rundir)
copy(cluster.namelist, rundir+'/namelist.input')
sed_inplace(rundir+'/namelist.input', '<dx>', str(int(exp.model_dx)))
sed_inplace(rundir+'/namelist.input', '<timestep>', str(int(exp.timestep)))
sed_inplace(rundir+'/namelist.input', '<hist_interval>', str(int(hist_interval)))
archdir = cluster.archivedir()+begin.strftime('/%Y-%m-%d_%H:%M/'+str(iens)+'/')
print('namelist for run from', begin, end, 'output to', archdir)
sed_inplace(rundir+'/namelist.input', '<archivedir>', archdir)
os.makedirs(archdir, exist_ok=True)
# set times
for k, v in {'<y1>': '%Y', '<m1>': '%m', '<d1>': '%d',
'<HH1>': '%H', '<MM1>': '%M'}.items():
sed_inplace(rundir+'/namelist.input', k, begin.strftime(v))
for k, v in {'<y2>': '%Y', '<m2>': '%m', '<d2>': '%d',
'<HH2>': '%H', '<MM2>': '%M'}.items():
sed_inplace(rundir+'/namelist.input', k, end.strftime(v))
#########################
try:
print('copy wrfinput of this run to archive')
wrfin_old = rundir+'/wrfinput_d01'
init_dir = cluster.archivedir()+begin.strftime('/%Y-%m-%d_%H:%M/')+str(iens)
os.makedirs(init_dir, exist_ok=True)
wrfin_arch = init_dir+'/wrfinput_d01'
copy(wrfin_old, wrfin_arch)
except Exception as e:
warnings.warn(str(e))
if __name__ == '__main__':
begin = dt.datetime.strptime(sys.argv[1], '%Y-%m-%d_%H:%M')
end = dt.datetime.strptime(sys.argv[2], '%Y-%m-%d_%H:%M')
hist_interval = int(sys.argv[3])
print('prepare namelists for all ens members')
for iens in range(1, exp.n_ens+1):
run(cluster, iens, begin, end, hist_interval)