digraph {
nodesep = 0.6;
newrank=true;
node [fillcolor="#FAAC2C", style="rounded, filled", color="#FAAC2C", fontcolor="#ffffff", target="_top"]
edge [color="#8699A3", fontcolor="#2c3e50"]
hydrodynamic_1 [label="Primary Variables \n (Solver Unknowns)"]
hydrodynamic_2 [label="Calculate \n State Variables" URL="../plugins/07_workflow.html#state-variable-calculator"]
hydrodynamic_3 [label="Calculate \n Secondary Variables"]
hydrodynamic_4 [label="Calculate \n Source Terms"]
invisible_init [shape=point, style=invis]
invisible_end [shape=point, style=invis]
hook_update_variables_point [shape = point, width = 0, peripheries="2"]
hook_calculate_source_terms_point [shape = point, width = 0, peripheries="2" ]
// Align Hooks
node[peripheries="0", shape="cds", color="#DA5961", fontcolor="#DA5961", style=""]
hook_update_variables [label="HOOK_UPDATE_PLUGINS_SECONDARY_VARIABLES", URL="../plugins/06_solver_hooks.html#alfasim_sdk._internal.hook_specs.update_plugins_secondary_variables"]
hook_calculate_mass_source_terms [label="HOOK_CALCULATE_MASS_SOURCE_TERM", URL="../plugins/06_solver_hooks.html#alfasim_sdk._internal.hook_specs.calculate_mass_source_term"]
hook_calculate_momentum_source_terms [label="HOOK_CALCULATE_MOMENTUM_SOURCE_TERM", URL="../plugins/06_solver_hooks.html#alfasim_sdk._internal.hook_specs.calculate_momentum_source_term"]
hook_calculate_energy_source_terms [label="HOOK_CALCULATE_ENERGY_SOURCE_TERM", URL="../plugins/06_solver_hooks.html#alfasim_sdk._internal.hook_specs.calculate_energy_source_term"]
{rank = same; hook_update_variables_point; hook_update_variables }
{rank = same; hook_calculate_source_terms_point; hook_calculate_momentum_source_terms; }
invisible_init -> hydrodynamic_1
hook_calculate_source_terms_point -> invisible_end ;
// Align all hooks
hook_calculate_mass_source_terms -> hook_calculate_momentum_source_terms -> hook_calculate_energy_source_terms [constraint=true, style=invis]
subgraph cluster1{
labeljust="l"
style="rounded, dashed"
color="#8699A3"
hydrodynamic_1 -> hydrodynamic_2 -> hydrodynamic_3
hydrodynamic_3 -> hook_update_variables_point [arrowhead=none, ltail=cluster1]
hook_update_variables_point -> hydrodynamic_4
hydrodynamic_4 -> hook_calculate_source_terms_point [arrowhead=none]
}
hook_update_variables_point -> hook_update_variables [constraint=false, style=dotted, color="#DA5961"]
hook_calculate_source_terms_point -> hook_calculate_mass_source_terms:w [constraint=false, style=dotted, color="#DA5961"]
hook_calculate_source_terms_point -> hook_calculate_momentum_source_terms [constraint=false, style=dotted, color="#DA5961"]
hook_calculate_source_terms_point -> hook_calculate_energy_source_terms:w [constraint=false, style=dotted, color="#DA5961"]
// Align Notes
subgraph cluster2{
labeljust="l"
style="rounded, dashed"
fontcolor="#2c3e50"
color="#8699A3"
node[shape=box, color="#FAAC2C",fillcolor="#FFFFFF", fontcolor="#FAAC2C", peripheries="1" shape="rectangular"]
note_1 [label="α, P, U, T"]
note_2 [label="ρ, μ, Cₚ, ... = ƒ(P,T)"]
note_3 [label="Mass Flow Rate, Flow Pattern ..."]
}
{rank=same; hydrodynamic_1; note_1}
{rank=same; hydrodynamic_2; note_2}
{rank=same; hydrodynamic_3; note_3}
note_1->note_2->note_3[ style = invis ]
edge[arrowhead=none, style=dashed, constraint=false,]
hydrodynamic_1 -> note_1
hydrodynamic_2 -> note_2
hydrodynamic_3 -> note_3
}