Sorry to open up a new 'battleground' - the last thing that haunts me for now:
What do you, @benbovy, think about the following idea, use case:
Let's say we have two processes A and B. A has a var x that is a foreign variable in B and B has a variable y that is a foreign variable in A. Wont work because you can not derive the DAG in that case.
What if I annotate the foreign variable B.y in A with something like is_cyclic=True . That would mean:
- I know this introduces a cycle but I don't care
- Just ignore me,
A.y, when building the process graph, the ordering
- But please still draw the
B -> y -> A relation in the visualization (maybe with a step - 1 label, dotted line...)
- And when executing A just pass in for y whatever is there (would be a
NaN in step = 0 if y is not inout in B or the value set in B.initialize
It just happens that we have a lot of these "cycles" but typically it is just the value from step time - 1. So only quasi-cyclic.
Sorry to open up a new 'battleground' - the last thing that haunts me for now:
What do you, @benbovy, think about the following idea, use case:
Let's say we have two processes
AandB.Ahas a varxthat is a foreign variable inBandBhas a variableythat is a foreign variable inA. Wont work because you can not derive the DAG in that case.What if I annotate the foreign variable
B.yinAwith something likeis_cyclic=True. That would mean:A.y, when building the process graph, the orderingB -> y -> Arelation in the visualization (maybe with astep - 1label, dotted line...)NaNin step = 0 if y is notinoutin B or the value set inB.initializeIt just happens that we have a lot of these "cycles" but typically it is just the value from step
time - 1.So only quasi-cyclic.