Cylc8 -- doing something when model fails

In cylc7 it was relatively easy to modify a suite so that if the model failed a task would be run:

[scheduling]
  [[ dependencies ]]
        

        {# Run optclim_um_fail if atmos_main fails; remove optclim_um_fail if it succeeds #}

        [[[ {{EXPT_RESUB}} ]]]
            graph = """
       atmos_main:fail => optclim_um_fail
       atmos_main => !optclim_um_fail
            """

In cylc 8 the expected:

{{EXPT_RESULT}}=atmos_main:fail => optclim_um_fail

gives a validation error, complaining about both succeeded and failed. Looking at the cylc8 doc I tried adding ? to atmos_main in flow.cylc and that did not help! Is there a way of having a task submitted if atmos_model fails?

Ideally something stand alone so I do not have to modify chunks of flow.cylc…

ta

Simon

Hi Simon,

Task triggering:

Which suite are you trying to do this in? I can’t see this in u-dr157

{{EXPT_RESULT}} ??? I presume you mean {{EXPT_RESUB}]

Cheers,

Ros.

Just to add; you need to make sure that optional outputs are marked as optional everywhere they appear in the graph, to avoid ambiguity.

So I believe you need to use the ? after the atmos_main:fail and after every other occurence ofatmos_main in the graph to avoid ambiguity.

Hi Ros,

you are correct! I added a “?” to every atmos_main and verification/graph worked. However, I want to automate this and doing that to flow.cylc looks to be a right pain. As having something happen when the model fails is ‘nice to have’ I will not bother doing unless there is some easy way of adding ? to ever atmos_main! Can it be done in the atmos_main block?

If you want to see what I have see tetts/rose_optclim/test01. optclim_c8.rc is included in flow.cylc.

Simon