ecFlow's documentation is now on readthedocs!

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

One possible solution:

#!/usr/bin/env python2.5

import os

import ecflow 

   

defs = ecflow.Defs("operation_suite.def")

suite = defs.add_suite("operation_suite")

suite.add_repeat( ecflow.RepeatDay(1) )

suite.add_variable("ECF_HOME",os.getenv("HOME") + "/course")

suite.add_variable("ECF_INCLUDE",os.getenv("HOME") + "/course")

suite.add_variable("ECF_FILES",os.getenv("HOME") + "/course/oper")

  

# Defines the triggers for the first cycle

cycle_triggers = "1"

for cycle in ( 0 , 12 ):



    if cycle == 12 :

        last_step = 240

    else:

        last_step = 24

 

    fcycle_fam =  suite.add_family(str(cycle))

    fcycle_fam.add_variable("CYCLE",cycle)

    fcycle_fam.add_variable("LAST_STEP",last_step)

      

    if cycle_triggers != "1" :

        fcycle_fam.add_trigger(cycle_triggers)

                 

    analysis_fam = fcycle_fam.add_family("analysis")

    analysis_fam.add_task("get_observations")

    analysis_fam.add_task("run_analysis").add_trigger("get_observations == complete")

    analysis_fam.add_task("post_processing").add_trigger("run_analysis == complete")

 

    forecast_fam = fcycle_fam.add_family("forecast")

    forecast_fam.add_trigger("analysis == complete")

    forecast_fam.add_task("get_input_data") 

    run_forecast_task = forecast_fam.add_task("run_forecast") 

    run_forecast_task.add_trigger("get_input_data == complete")

    run_forecast_task.add_meter("step",0,last_step,last_step)

 

    archive_fam = fcycle_fam.add_family("archive")

    fam_analsis = archive_fam.add_family("analysis")

    fam_analsis.add_variable("TYPE","analysis")

    fam_analsis.add_variable("STEP","0")

    fam_analsis.add_trigger("../analysis/run_analysis == complete")

    fam_analsis.add_task("save")

    

    for i in range(6,last_step,6):  

        step_fam = fam_analsis.add_family("step_" + str(i))     

        step_fam.add_variable("TYPE","forecast")  

        step_fam.add_variable("STEP",i)  

        step_fam.add_trigger("../forecast/run_forecast:step ge " + str(i))

        step_fam.add_task("save")



    # Defines the triggers for the next cycle

    cycle_triggers = "./" + str(cycle) + " == complete"

    

  • No labels