Flowchart
%%{init: {
'flowchart': {
'rankSpacing': 25,
'curve': 'natural',
'padding': 15
}
}}%%
flowchart TB
%% Main flow
A["AMRSimulation::setInitialConditions()"]
B["AMRSimulation::evolve()"]
C["AMRSimulation::computeTimestep()"]
%% Create the flow
A --> B --> C
%% Main timeStep subgraph
subgraph timeStep ["AMRSimulation::timeStepWithSubcycling()"]
direction TB
D["AMRCore::regrid()"]
%% advanceSingleTimestep subgraph
subgraph advanceSingle ["RadhydroSimulation::advanceSingleTimestepAtLevel()"]
direction TB
%% advanceHydro subgraph
subgraph advanceHydro ["advanceHydroAtLevelWithRetries()"]
direction TB
subgraph innerAdvance ["advanceHydroAtLevel()"]
direction TB
H1["addStrangSplitSourcesWithBuiltin()"]
H2["fillBoundaryConditions()"]
H3["Stage 1 of RK2-SSP"]
H4["fillBoundaryConditions()"]
H5["Stage 2 of RK2-SSP"]
H6["addStrangSplitSourcesWithBuiltin()"]
H1 --> H2 --> H3 --> H4 --> H5 --> H6
end
end
E["CHECK_HYDRO_STATES"]
%% Subcycle radiation subgraph
subgraph subcycle ["subcycleRadiationAtLevel()"]
direction TB
F1["computeNumberOfRadiationSubsteps()"]
subgraph forLoop ["for i in range(nsubSteps):"]
direction TB
G1["swapRadiationState()"]
G2["advanceRadiationSubstepAtLevel()"]
subgraph operator ["operatorSplitSourceTerms()"]
direction TB
K1["SetRadEnergySource()"]
K2["AddSourceTerms()"]
K1 --> K2
end
G1 --> G2 --> operator
end
F1 --> forLoop
end
I["CHECK_HYDRO_STATES"]
J["computeAfterLevelAdvance()"]
K["CHECK_HYDRO_STATES"]
advanceHydro --> E --> subcycle --> I --> J --> K
end
D --> advanceSingle
end
C --> timeStep