Recurrence expressions are what determine the cycling characteristics of each graph string in your workflow: Glossary — Cylc 8.2.0 documentation
In some of the recurrence formats you need to specify a cycle interval. For “run once” graph strings (R1 =...) it can be a zero interval (e.g. P0Y for zero years) to avoid confusing readers with a finite interval that is not meaningful for run-once. But for a cycling graph (e.g. R = ... or R3 = ...) a zero-interval will generate a warning.
R1 = "a => b" # OK
R1//P0Y = "a => b" # OK but pointless (in this case)
R3//P0Y = "a => b" # WARNING: can't repeat 3 times at the same cycle point!
No, those R1’s look fine. You don’t have to combine them. There must be other parts of your graph that specify multiple repetitions with a zero interval?? (e.g. R//P0Y)
Although on closer look, there’s no point in having intercycle dependence (coupled[-P1Y] => coupled) in an R1 graph at the initial cycle point.
None of those are generating the warning. As Hilary has said, it would have to be something like R/1950/P0Y where the R/ means repeat indefinitely but the /P0Y means the interval is zero so there can be only 1 occurrence.
However I cannot reproduce your exact message with a workflow that passes validation, as 1950 by itself is not a valid recurrence, so I am curious as to how you achieved that
is there a way to strip out the graph = ... code on its own so i can try and debug this further. This is a pretty complex workflow for me and there are quite a new ‘include’ files in the flow.cylc which makes it a bit gnarly to debug.
If validation fails, the configuration is broken and can’t be parsed. In that case you can still use cylc view -j to view the Jinja2-processed configuration (before Cylc tries to parse it). Hopefully that will give a clean view of the graph. Otherwise you’ll have to resort to commenting bits of the graph out until you find the broken part.
ah cool, thanks, can confirm that is definitely the problem after commenting out that bit of the graph.
Is that the exact form of the recurrence in the original Cylc 7 suite.rc ? (In Cylc 7, it would be a sub-heading under [dependencies] …)
yes it’s exactly as used in an equivalent `cylc’ 7 suite/workflow and was a change implemented by me (with help!).
That looks reasonable (1 year cycle excluding the initial cycle point) … but I need to remind myself of how recurrence exclusions work…
sounds good, it’s not stopping anything working but would be good to fix at some point. i have seen it in other workflows too which haven’t been edited by me so it’s not isolated.
The warning relates to the exclusion (^) not the main recurrence P1Y. (Exclusions can be full recurrences too - you might want to exclude one series of datetimes from another).
The full recurrence still works as expected, despite the warning.
Here’s an example that writes the same thing in 3 different ways:
[scheduler]
cycle point format = %Y
[scheduling]
initial cycle point = 3000
[[graph]]
P1Y ! ^ = "foo[-P1Y] => foo" # point exclusion - OK, with warning
P1Y ! R1/^/P0Y = "bar[-P1Y] => bar" # R1 recurrence exclusion - OK
R/^+P1Y/P1Y = "baz[-P1Y] => baz" # offset initial point - OK
[runtime]
[[foo, bar, baz]]
(And note, P1Y = <graph> is short for R/^/P1Y = <graph>)
Validation warns about the first one, but cylc graph shows they all do the same thing, which is start P1Y after the initial cycle point:
So I think the warning here is a bug that we need to look into. Thanks for the bug report!