Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
HTML

<span class="target" id="index-0"></span><div class="section" id="operational-suite-solution">

<span id="operational-suite-soln"></span>

<p>One possible solution:</p>

<div class="highlight-python"><div class="highlight"><pre><span class="c">#!/usr/bin/env python2.5</span>

<span class="kn">import</span> <span class="nn">os</span>

<span class="kn">import</span> <span class="nn">ecflow</span> 

   

<span class="n">defs</span> <span class="o">=</span> <span class="n">ecflow</span><span class="o">.</span><span class="n">Defs</span><span class="p">(</span><span class="s">&quot;operation_suite.def&quot;</span><span class="p">)</span>

<span class="n">suite</span> <span class="o">=</span> <span class="n">defs</span><span class="o">.</span><span class="n">add_suite</span><span class="p">(</span><span class="s">&quot;operation_suite&quot;</span><span class="p">)</span>

<span class="n">suite</span><span class="o">.</span><span class="n">add_repeat</span><span class="p">(</span> <span class="n">ecflow</span><span class="o">.</span><span class="n">RepeatDay</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">)</span>

<span class="n">suite</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;ECF_HOME&quot;</span><span class="p">,</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">&quot;HOME&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot;/course&quot;</span><span class="p">)</span>

<span class="n">suite</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;ECF_INCLUDE&quot;</span><span class="p">,</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">&quot;HOME&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot;/course&quot;</span><span class="p">)</span>

<span class="n">suite</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;ECF_FILES&quot;</span><span class="p">,</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">&quot;HOME&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot;/course/oper&quot;</span><span class="p">)</span>

  

<span class="c"># Defines the triggers for the first cycle</span>

<span class="n">cycle_triggers</span> <span class="o">=</span> <span class="s">&quot;1&quot;</span>

<span class="k">for</span> <span class="n">cycle</span> <span class="ow">in</span> <span class="p">(</span> <span class="mi">0</span> <span class="p">,</span> <span class="mi">12</span> <span class="p">):</span>



    <span class="k">if</span> <span class="n">cycle</span> <span class="o">==</span> <span class="mi">12</span> <span class="p">:</span>

        <span class="n">last_step</span> <span class="o">=</span> <span class="mi">240</span>

    <span class="k">else</span><span class="p">:</span>

        <span class="n">last_step</span> <span class="o">=</span> <span class="mi">24</span>

 

    <span class="n">fcycle_fam</span> <span class="o">=</span>  <span class="n">suite</span><span class="o">.</span><span class="n">add_family</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">cycle</span><span class="p">))</span>

    <span class="n">fcycle_fam</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;CYCLE&quot;</span><span class="p">,</span><span class="n">cycle</span><span class="p">)</span>

    <span class="n">fcycle_fam</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;LAST_STEP&quot;</span><span class="p">,</span><span class="n">last_step</span><span class="p">)</span>

      

    <span class="k">if</span> <span class="n">cycle_triggers</span> <span class="o">!=</span> <span class="s">&quot;1&quot;</span> <span class="p">:</span>

        <span class="n">fcycle_fam</span><span class="o">.</span><span class="n">add_trigger</span><span class="p">(</span><span class="n">cycle_triggers</span><span class="p">)</span>

                 

    <span class="n">analysis_fam</span> <span class="o">=</span> <span class="n">fcycle_fam</span><span class="o">.</span><span class="n">add_family</span><span class="p">(</span><span class="s">&quot;analysis&quot;</span><span class="p">)</span>

    <span class="n">analysis_fam</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;get_observations&quot;</span><span class="p">)</span>

    <span class="n">analysis_fam</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;run_analysis&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">add_trigger</span><span class="p">(</span><span class="s">&quot;get_observations == complete&quot;</span><span class="p">)</span>

    <span class="n">analysis_fam</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;post_processing&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">add_trigger</span><span class="p">(</span><span class="s">&quot;run_analysis == complete&quot;</span><span class="p">)</span>

 

    <span class="n">forecast_fam</span> <span class="o">=</span> <span class="n">fcycle_fam</span><span class="o">.</span><span class="n">add_family</span><span class="p">(</span><span class="s">&quot;forecast&quot;</span><span class="p">)</span>

    <span class="n">forecast_fam</span><span class="o">.</span><span class="n">add_trigger</span><span class="p">(</span><span class="s">&quot;analysis == complete&quot;</span><span class="p">)</span>

    <span class="n">forecast_fam</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;get_input_data&quot;</span><span class="p">)</span> 

    <span class="n">run_forecast_task</span> <span class="o">=</span> <span class="n">forecast_fam</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;run_forecast&quot;</span><span class="p">)</span> 

    <span class="n">run_forecast_task</span><span class="o">.</span><span class="n">add_trigger</span><span class="p">(</span><span class="s">&quot;get_input_data == complete&quot;</span><span class="p">)</span>

    <span class="n">run_forecast_task</span><span class="o">.</span><span class="n">add_meter</span><span class="p">(</span><span class="s">&quot;step&quot;</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">last_step</span><span class="p">,</span><span class="n">last_step</span><span class="p">)</span>

 

    <span class="n">archive_fam</span> <span class="o">=</span> <span class="n">fcycle_fam</span><span class="o">.</span><span class="n">add_family</span><span class="p">(</span><span class="s">&quot;archive&quot;</span><span class="p">)</span>

    <span class="n">fam_analsis</span> <span class="o">=</span> <span class="n">archive_fam</span><span class="o">.</span><span class="n">add_family</span><span class="p">(</span><span class="s">&quot;analysis&quot;</span><span class="p">)</span>

    <span class="n">fam_analsis</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;TYPE&quot;</span><span class="p">,</span><span class="s">&quot;analysis&quot;</span><span class="p">)</span>

    <span class="n">fam_analsis</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;STEP&quot;</span><span class="p">,</span><span class="s">&quot;0&quot;</span><span class="p">)</span>

    <span class="n">fam_analsis</span><span class="o">.</span><span class="n">add_trigger</span><span class="p">(</span><span class="s">&quot;../analysis/run_analysis == complete&quot;</span><span class="p">)</span>

    <span class="n">fam_analsis</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;save&quot;</span><span class="p">)</span>

    

    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="n">last_step</span><span class="p">,</span><span class="mi">6</span><span class="p">):</span>  

        <span class="n">step_fam</span> <span class="o">=</span> <span class="n">fam_analsis</span><span class="o">.</span><span class="n">add_family</span><span class="p">(</span><span class="s">&quot;step_&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>     

        <span class="n">step_fam</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;TYPE&quot;</span><span class="p">,</span><span class="s">&quot;forecast&quot;</span><span class="p">)</span>  

        <span class="n">step_fam</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;STEP&quot;</span><span class="p">,</span><span class="n">i</span><span class="p">)</span>  

        <span class="n">step_fam</span><span class="o">.</span><span class="n">add_trigger</span><span class="p">(</span><span class="s">&quot;../forecast/run_forecast:step ge &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>

        <span class="n">step_fam</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;save&quot;</span><span class="p">)</span>



    <span class="c"># Defines the triggers for the next cycle</span>

    <span class="n">cycle_triggers</span> <span class="o">=</span> <span class="s">&quot;./&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">cycle</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot; == complete&quot;</span>

    

</pre></div>

</div>

</div>