diff --git a/dartwrf/prep_IC_prior.py b/dartwrf/prep_IC_prior.py index d1ef6a432450aec19fed49a19d2d637aa2f11a2b..84e1c6a42bdea0dfa03dd38a6b7776eeaaf5b722 100755 --- a/dartwrf/prep_IC_prior.py +++ b/dartwrf/prep_IC_prior.py @@ -1,5 +1,6 @@ import os, sys, warnings, glob import datetime as dt +import numpy as np from config.cfg import exp, cluster from utils import copy, clean_wrfdir, try_remove @@ -42,16 +43,21 @@ def create_wrfrst_in_WRF_rundir(time, prior_init_time, prior_path_exp): print('removing', f) try_remove(f) -def create_updated_wrfinput_from_wrfout(time, prior_init_time, prior_path_exp): +def create_updated_wrfinput_from_wrfout(time, prior_init_time, prior_path_exp, new_start_time): """Same as create_wrfout_in_archivedir, but output is `wrfinput` in WRF run directory""" print('writing updated wrfout to WRF run directory as wrfinput') for iens in range(1, exp.n_ens+1): prior_wrfout = prior_path_exp + prior_init_time.strftime('/%Y-%m-%d_%H:%M/') \ +str(iens)+time.strftime('/wrfout_d01_%Y-%m-%d_%H:%M:%S') - post_wrfout = cluster.wrf_rundir(iens) + '/wrfinput_d01' - copy(prior_wrfout, post_wrfout) - print(post_wrfout, 'created.') + new_start_wrfinput = cluster.wrf_rundir(iens) + '/wrfinput_d01' + copy(prior_wrfout, new_start_wrfinput) + print(new_start_wrfinput, 'created.') + + template_time = prior_path_exp + new_start_time.strftime('/%Y-%m-%d_%H:%M/') \ + +str(iens)+new_start_time.strftime('/wrfout_d01_%Y-%m-%d_%H:%M:%S') + os.system('ncks -A -v XTIME,Times '+template_time+' '+new_start_wrfinput) + print('overwritten times from', template_time) if __name__ == '__main__': @@ -59,8 +65,12 @@ if __name__ == '__main__': prior_init_time = dt.datetime.strptime(sys.argv[2], '%Y-%m-%d_%H:%M') prior_valid_time = dt.datetime.strptime(sys.argv[3], '%Y-%m-%d_%H:%M') - use_wrfout_as_wrfinput = False - if use_wrfout_as_wrfinput: - create_updated_wrfinput_from_wrfout(prior_valid_time, prior_init_time, prior_path_exp) + if len(sys.argv) == 5: + # to start new simulation at different time than prior_valid_time + new_start_time = dt.datetime.strptime(sys.argv[4], '%Y-%m-%d_%H:%M') + + # use_wrfout_as_wrfinput + create_updated_wrfinput_from_wrfout(prior_valid_time, prior_init_time, prior_path_exp, new_start_time) else: + # restart create_wrfrst_in_WRF_rundir(prior_valid_time, prior_init_time, prior_path_exp)