Orchestrates a single time step of the Eulerian fluid solver.
This is the refactored, high-level entry point for advancing the fluid state from time t_n to t_{n+1}. It takes the master SimCtx as its primary argument.
Orchestrates a single time step of the Eulerian fluid solver.
Full API contract (arguments, ownership, side effects) is documented with the header declaration in include/solvers.h.
12{
13 PetscErrorCode ierr;
15 PetscInt level;
17
18 PetscFunctionBeginUser;
20
23 SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_ARG_WRONG,
24 "Unknown momentum solver type %d. Supported values are EXPLICIT_RK and DUALTIME_PICARD_RK4.",
26 }
27
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
70
76
79 }
84 }
85 }
86
88 }
89 }
90
91
92
93
94
95
96
97
99
100
101
102
106
108 }
109
110
111
112
113
114
116
119 } else {
120 SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_ARG_WRONG,
121 "Unsupported Poisson solver type %d. The current runtime supports only the multigrid path (poisson = 0).",
123 }
124
125
126
127
128
129
130
132 for (PetscInt bi = 0; bi < simCtx->
block_number; bi++) {
135
137
139
140
142 }
143
144
145
146
147
148
149
150 for (PetscInt bi = 0; bi < simCtx->
block_number; bi++) {
152
153
154
156
157
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179 }
180
183 PetscFunctionReturn(0);
184}
PetscErrorCode ComputeEddyViscosityLES(UserCtx *user)
Computes the turbulent eddy viscosity (Nu_t) for the LES model.
PetscErrorCode ComputeSmagorinskyConstant(UserCtx *user)
Computes the dynamic Smagorinsky constant (Cs) for the LES model.
#define LOCAL
Logging scope definitions for controlling message output.
#define GLOBAL
Scope for global logging across all processes.
#define LOG_ALLOW(scope, level, fmt,...)
Logging macro that checks both the log level and whether the calling function is in the allowed-funct...
#define PROFILE_FUNCTION_END
Marks the end of a profiled code block.
PetscErrorCode LOG_CONTINUITY_METRICS(UserCtx *user)
Logs continuity metrics for a single block to a file.
@ LOG_INFO
Informational messages about program execution.
@ LOG_DEBUG
Detailed debugging information.
#define PROFILE_FUNCTION_BEGIN
Marks the beginning of a profiled code block (typically a function).
const char * MomentumSolverTypeToString(MomentumSolverType SolverFlag)
Helper function to convert Momentum Solver flag to a string representation.
PetscErrorCode MomentumSolver_DualTime_Picard_RK4(UserCtx *user, IBMNodes *ibm, FSInfo *fsi)
Solves the Momentum Equations using Dual-Time Stepping with a Fixed-Point RK4 Smoother.
PetscErrorCode MomentumSolver_Explicit_RungeKutta4(UserCtx *user, IBMNodes *ibm, FSInfo *fsi)
Advances the momentum equations using an explicit 4th-order Runge-Kutta scheme.
PetscErrorCode Projection(UserCtx *user)
Corrects the contravariant velocity field Ucont to be divergence-free using the gradient of the press...
PetscErrorCode UpdatePressure(UserCtx *user)
Updates the pressure field P with the pressure correction Phi computed by the Poisson solver.
PetscErrorCode PoissonSolver_MG(UserMG *usermg)
Solves the pressure-Poisson equation using a geometric multigrid method.
PetscErrorCode Contra2Cart(UserCtx *user)
Reconstructs Cartesian velocity (Ucat) at cell centers from contravariant velocity (Ucont) defined on...
PetscErrorCode ComputeDivergence(UserCtx *user)
Computes the discrete divergence of the contravariant velocity field.
PetscErrorCode UpdateLocalGhosts(UserCtx *user, const char *fieldName)
Updates the local vector (including ghost points) from its corresponding global vector.
@ MOMENTUM_SOLVER_EXPLICIT_RK
@ MOMENTUM_SOLVER_DUALTIME_PICARD_RK4
MomentumSolverType mom_solver_type
User-defined context containing data specific to a single computational grid level.
User-level context for managing the entire multigrid hierarchy.