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