Skip to content
Snippets Groups Projects
Select Git revision
  • 69ac53c96506f643a9448fadd1ea0aff31bab4ea
  • master default protected
  • submit-to-mongodb
  • more-small-submit-g-changes
  • small_FE_modsMichael
  • dev2
6 results

PhInputForm.vue

Blame
  • free_forecast.py 7.76 KiB
    #!/usr/bin/python3
    """
    running the forecast model without assimilation
    """
    import os
    import sys
    import datetime as dt
    import pandas as pd
    from dartwrf.workflows import WorkFlows
    
    
    w = WorkFlows(exp_config='exp_noda.py', server_config='jet.py')
    id = None
    
    
    if False:  # generate_nature
        begin = dt.datetime(2008, 7, 30, 7)
        w.prepare_WRFrundir(begin)  # create initial conditions
        id = w.run_ideal(depends_on=id)
    
        # id = wrfinput_insert_wbubble(perturb=False, depends_on=id)
        end = dt.datetime(2008, 7, 30, 12)
        id = w.run_ENS(begin=begin, end=end,
                       input_is_restart=False,
                       output_restart_interval=(end-begin).total_seconds()/60,
                       depends_on=id)
        # id = w.create_satimages(begin, depends_on=id)
    
    
    if False:  # to continue a nature
    
        start = dt.datetime(2008, 7, 30, 13, 45)
        w.prepare_WRFrundir(start)  # create initial conditions
        # id = w.run_ideal(depends_on=id)
    
        # w.cluster.archivedir
        prior_path_exp = '/jetfs/scratch/lkugler/data/sim_archive//exp_v1.18_P1_nature+1b/'
    
        time = start
        prior_init_time = dt.datetime(2008, 7, 30, 13, 30)
        end = start + dt.timedelta(minutes=15)
    
        id = w.prepare_IC_from_prior(prior_path_exp, prior_init_time, start,
                                     depends_on=id)
        id = w.run_ENS(begin=start, end=end,
                       input_is_restart=True,
                       first_second=True,  # to get a +1 minute forecast after each restart
                       # output_restart_interval=(end-start).total_seconds()/60,
                       output_restart_interval=9999,
                       depends_on=id)
    
    
        restarts = pd.date_range(start=dt.datetime(2008, 7, 30, 12, 30),
                                 end=dt.datetime(2008, 7, 30, 14),
                                 freq=dt.timedelta(minutes=30))
    
        for i, next_restart in enumerate(restarts):
    
            prior_valid_time = time
            id = w.prepare_IC_from_prior(prior_path_exp, prior_init_time, prior_valid_time,
                                         depends_on=id)
    
            # integration time
            start = time
            end = next_restart
    
            id = w.run_ENS(begin=start, end=end,
                           input_is_restart=True,
                           first_second=True,  # to get a +1 minute forecast after each restart
                           output_restart_interval=(end-start).total_seconds()/60,
                           # output_restart_interval=9999,
                           depends_on=id)
    
            w.create_satimages(start, depends_on=id)
    
            prior_init_time = time  # this iteration's start
            time = end  # this iteration's end = next iteration's start
    
        # after last restart
        prior_valid_time = time
        id = w.prepare_IC_from_prior(prior_path_exp, prior_init_time, prior_valid_time,
                                     depends_on=id)
    
        end = time + dt.timedelta(minutes=5)
        id = w.run_ENS(begin=time, end=end,
                       input_is_restart=True,
                       first_second=True,  # to get a +1 minute forecast after each restart
                       output_restart_interval=9999,
                       depends_on=id)
    
        w.create_satimages(start, depends_on=id)
    
    
    if True:   # do a free run (all inits)
    
        inits = [dt.datetime(2008, 7, 30, 8)]
        inits += list(pd.date_range(start=dt.datetime(2008, 7, 30, 11),
                                    end=dt.datetime(2008, 7, 30, 15),
                                    freq=dt.timedelta(minutes=15)))
        
        input_is_restart = False
        
        w.prepare_WRFrundir(inits[0])  # create initial conditions
        id = w.run_ideal(depends_on=id)
    
        # id = wrfinput_insert_wbubble(perturb=True, depends_on=id)
        time = inits[0]
        last_init = dt.datetime(2008, 7, 30, 8)
        
        for i, next_restart in enumerate(inits[1:]):
            print('run_WRF from', time, 'to', next_restart, 'rst intv', (next_restart-time).total_seconds()/60)
    
            prior_path_exp = w.cluster.archivedir #'/jetfs/scratch/lkugler/data/sim_archive/exp_v1.23_P2_noDA+1/'
            prior_init_time = last_init
            prior_valid_time = time
            
            if input_is_restart:
                id = w.prepare_IC_from_prior(
                    prior_path_exp, prior_init_time, prior_valid_time, depends_on=id)
    
            id = w.run_ENS(begin=time, end=next_restart,
                           input_is_restart=input_is_restart,
                           output_restart_interval=(next_restart-time).total_seconds()/60,
                           depends_on=id)
    
            id_sat = w.create_satimages(time, depends_on=id)
            last_init = time
            time = next_restart
            input_is_restart = True
    
    
        # free run, no restart files anymore
        prior_init_time = last_init
        prior_valid_time = time
        id = w.prepare_IC_from_prior(prior_path_exp, prior_init_time, prior_valid_time, depends_on=id)
        end = dt.datetime(2008, 7, 30, 18)
        print('run WRF from', time, 'until', end)
        id = w.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 = w.create_satimages(time, depends_on=id)
    
        w.verify_wrf(depends_on=id)
        w.verify_sat(depends_on=id_sat)
    
    if False:  # to continue a free run
        start = dt.datetime(2008, 7, 30, 14)
        end = dt.datetime(2008, 7, 30, 18)
    
        w.prepare_WRFrundir(start)  
        # id = w.run_ideal(depends_on=id)
    
        prior_path_exp = w.cluster.archivedir
        # prior_path_exp = '/jetfs/scratch/lkugler/data/sim_archive/exp_v1.23_P2_noDA+1'
        prior_init_time = dt.datetime(2008, 7, 30,  8)
        prior_valid_time = start
    
        id = w.prepare_IC_from_prior(
            prior_path_exp, prior_init_time, prior_valid_time, depends_on=id)
    
        id = w.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 = w.create_satimages(start, depends_on=id)
        w.verify_sat(id)
        w.verify_wrf(id)
    
    if False:  # to continue a free run after spinup
        start = dt.datetime(2008, 7, 30, 12)
        end = dt.datetime(2008, 7, 30, 14)
    
        w.prepare_WRFrundir(start)  # create initial conditions
        # id = w.run_ideal(depends_on=id)
    
        # w.cluster.archivedir
        prior_path_exp = '/jetfs/home/lkugler/data/sim_archive/exp_v1.19_P2_noDA'
        prior_init_time = dt.datetime(2008, 7, 30, 13)
        prior_valid_time = dt.datetime(2008, 7, 30, 13, 30)
    
        id = w.prepare_IC_from_prior(prior_path_exp, prior_init_time, prior_valid_time,
                                     # new_start_time=start, # <---------- to overwrite start time / leads to a call to `create_updated_wrfinput_from_wrfout()`
                                     depends_on=id)
    
        # frequency_restart = (end-start).total_seconds()/60
        frequency_restart = dt.timedelta(minutes=30).total_seconds()/60
    
        id = w.run_ENS(begin=start, end=end,
                       input_is_restart=True,
                       output_restart_interval=frequency_restart,
                       # output_restart_interval=9999,
                       depends_on=id)
    
        # id = w.create_satimages(start, depends_on=id)
    
        # # continue now with free run
        # # no restart files anymore
        # prior_path_exp = w.cluster.archivedir
        # prior_init_time = start
        # prior_valid_time = end
        # id = w.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 = w.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 = w.create_satimages(start, depends_on=id)
        # w.verify(depends_on=id)