free_forecast.py 5.92 KiB
#!/usr/bin/python3
"""
running the forecast model without assimilation
"""
import os, sys, shutil
import datetime as dt
import pandas as pd
from slurmpy import Slurm
from config.cfg import exp
from config.clusters import cluster
from dartwrf.utils import script_to_str, symlink
from cycled_exp import *
################################
print('starting')
cluster.setup()
id = None
if False: #True: # is_nature
begin = dt.datetime(2008, 7, 30, 7)
id = prepare_WRFrundir(begin) # create initial conditions
id = run_ideal(depends_on=id)
#id = wrfinput_insert_wbubble(perturb=False, depends_on=id)
end = dt.datetime(2008, 7, 30, 12)
id = run_ENS(begin=begin, end=end,
input_is_restart=False,
output_restart_interval=(end-begin).total_seconds()/60,
depends_on=id)
# id = create_satimages(begin, depends_on=id)
if False: # if free run (all inits)
begin = dt.datetime(2008, 7, 30, 7)
id = prepare_WRFrundir(begin) # create initial conditions
id = run_ideal(depends_on=id)
#id = wrfinput_insert_wbubble(perturb=True, depends_on=id)
restarts = pd.date_range(start=dt.datetime(2008, 7, 30, 10),
end=dt.datetime(2008, 7, 30, 12),
freq=dt.timedelta(minutes=60))
#restarts = [dt.datetime(2008, 7, 30, 12, 30)]
input_is_restart = False
time = begin
last_init = dt.datetime(2008, 7, 30, 9) # dummy value
for i, next_restart in enumerate(restarts):
print('run_WRF from', time, 'to', next_restart)
id = run_ENS(begin=time, end=next_restart,
input_is_restart=input_is_restart,
output_restart_interval=(next_restart-time).total_seconds()/60,
#output_restart_interval=720,
depends_on=id)
last_init = time
time = next_restart
input_is_restart = True
create_satimages(last_init, depends_on=id)
prior_path_exp = cluster.archivedir
prior_init_time = last_init
prior_valid_time = time
id = prepare_IC_from_prior(prior_path_exp, prior_init_time, prior_valid_time, depends_on=id)
# free run, no restart files anymore
end = dt.datetime(2008, 7, 30, 18)
print('run WRF from', time, 'until', end)
id = run_ENS(begin=time, end=end,
input_is_restart=input_is_restart,
#output_restart_interval=(next_restart-time).total_seconds()/60,
output_restart_interval=9999,
depends_on=id)
id = create_satimages(time, depends_on=id)
verify(depends_on=id)
if False: # continuation of free run
start = dt.datetime(2008, 7, 30, 7)
end = dt.datetime(2008, 7, 30, 10)
id = prepare_WRFrundir(start) # create initial conditions
prior_path_exp = '/gpfs/data/fs71386/lkugler/sim_archive/exp_v1.19_P5_noDA' # cluster.archivedir
prior_init_time = dt.datetime(2008, 7, 30, 11)
prior_valid_time = start
id = prepare_IC_from_prior(prior_path_exp, prior_init_time, prior_valid_time, depends_on=id)
id = run_ENS(begin=start, end=end,
input_is_restart=True,
output_restart_interval=(end-start).total_seconds()/60,
#output_restart_interval=9999,
depends_on=id)
id = create_satimages(start, depends_on=id)
verify(depends_on=id)
if True: # continuation of free run after spinup
start = dt.datetime(2008, 7, 30, 13,30)
end = dt.datetime(2008, 7, 30, 14)
id = prepare_WRFrundir(start) # create initial conditions
# id = run_ideal(depends_on=id)
prior_path_exp = '/jetfs/home/lkugler/data/sim_archive/exp_v1.19_P2_noDA' # cluster.archivedir
prior_init_time = dt.datetime(2008, 7, 30, 13)
prior_valid_time = dt.datetime(2008, 7, 30, 13,30)
id = prepare_IC_from_prior(prior_path_exp, prior_init_time, prior_valid_time,
# new_start_time=start, # <---------- to overwrite start time
depends_on=id)
#frequency_restart = (end-start).total_seconds()/60
frequency_restart = dt.timedelta(minutes=30).total_seconds()/60
id = run_ENS(begin=start, end=end,
input_is_restart=True,
output_restart_interval=frequency_restart,
#output_restart_interval=9999,
depends_on=id)
# id = create_satimages(start, depends_on=id)
# # continue now with free run
# # no restart files anymore
# prior_path_exp = cluster.archivedir
# prior_init_time = start
# prior_valid_time = end
# id = prepare_IC_from_prior(prior_path_exp, prior_init_time, prior_valid_time, depends_on=id)
# start = end
# end = dt.datetime(2008, 7, 30, 18)
# print('run WRF from', start, 'until', end)
# id = run_ENS(begin=start, end=end,
# input_is_restart=True,
# #output_restart_interval=(next_restart-time).total_seconds()/60,
# output_restart_interval=9999,
# depends_on=id)
# id = create_satimages(start, depends_on=id)
# verify(depends_on=id)
if False: # continuation of nature after spinup
start = dt.datetime(2008, 7, 30, 7)
end = dt.datetime(2008, 7, 30, 18)
id = prepare_WRFrundir(start) # create initial conditions
id = run_ideal(depends_on=id)
prior_path_exp = '/gpfs/data/fs71386/lkugler/sim_archive/exp_v1.19_P5_nat2' # cluster.archivedir
prior_init_time = dt.datetime(2008, 7, 30, 7)
prior_valid_time = dt.datetime(2008, 7, 30, 12)
id = prepare_IC_from_prior(prior_path_exp, prior_init_time, prior_valid_time,
new_start_time=start, # <---------- to start again after spinup
depends_on=id)
id = run_ENS(begin=start, end=end,
input_is_restart=False,
output_restart_interval=(end-start).total_seconds()/60,
#output_restart_interval=9999,
depends_on=id)
id = create_satimages(start, depends_on=id)
verify(depends_on=id)