<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.7</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="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>