PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
 
Loading...
Searching...
No Matches
variables.h
Go to the documentation of this file.
1/**
2 * @file variables.h
3 * @author Vishal Kandala
4 * @brief Main header file for a complex fluid dynamics solver.
5 *
6 * This file defines the core data structures, global variables, and function
7 * prototypes for a CFD application. It combines features for a curvilinear,
8 * multi-block, immersed boundary (IBM) solver with fluid-structure interaction (FSI),
9 * a modern particle tracking system, a modular boundary condition framework,
10 * and post-processing utilities. It heavily utilizes the PETSc library.
11 *
12 * *** REVISION NOTE ***
13 * This version introduces a central `SimulationContext` struct to encapsulate all
14 * simulation-wide configuration, replacing the legacy system of global variables.
15 * The `UserCtx` struct has been refactored to hold only data specific to a
16 * single grid level and now contains a back-pointer to the `SimulationContext`.
17 * All struct definitions now follow the `typedef struct Name { ... } Name;` convention.
18 */
19
20#ifndef VARIABLES_H
21#define VARIABLES_H
22
23/* Build identity, generated by make so that a commit or dirty-state change rebuilds
24 * the translation units that stamp it into binaries and checkpoints. The fallbacks
25 * keep a build possible outside make; a binary reporting 0.0.0 is saying exactly that. */
26#if defined(__has_include)
27# if __has_include("picurv_build_identity.h")
28# include "picurv_build_identity.h"
29# endif
30#endif
31#ifndef PICURV_RELEASE_VERSION
32#define PICURV_RELEASE_VERSION "0.0.0"
33#endif
34#ifndef PICURV_GIT_COMMIT
35#define PICURV_GIT_COMMIT "unknown"
36#endif
37#ifndef PICURV_BUILD_DIRTY
38#define PICURV_BUILD_DIRTY "unknown"
39#endif
40
41/*================================================================================*
42 * PETSC & SYSTEM LIBRARIES *
43 *================================================================================*/
44
45// --- PETSc Includes ---
46#include "petscvec.h"
47#include "petscdmda.h"
48#include "petscksp.h"
49#include "petscsnes.h"
50#include "petscdmswarm.h"
51
52// --- Standard C/C++ Includes ---
53#include <stdio.h>
54#include <stdlib.h>
55#include <string.h>
56#include <unistd.h>
57
58// --- C++ Specific Includes ---
59#if defined(__cplusplus)
60#include <vector>
61#include <algorithm>
62#include <cassert>
63#endif
64
65// Define a C-compatible interface for C++ compilers
66#ifdef __cplusplus
67extern "C" {
68#endif
69
70/*================================================================================*
71 * MACROS & GLOBAL VARIABLES *
72 *================================================================================*/
73
74/// Coefficient controlling the temporal accuracy scheme (e.g., 1.5 for 2nd Order Backward Difference).
75#define COEF_TIME_ACCURACY 1.5
76
77/* --- NOTE: All legacy global 'extern' variables have been removed. --- */
78/* They are now members of the SimulationContext struct. */
79
80
81/*================================================================================*
82 * CORE DATA STRUCTURES & TYPEDEFS *
83 *================================================================================*/
84
85//--------------------------------------------------------------------------------
86// 1. FORWARD DECLARATIONS & BASIC TYPES
87//--------------------------------------------------------------------------------
88
89// --- Forward Declarations ---
90// These declarations allow pointers to these types before their full definition.
91typedef struct SimCtx SimCtx;
93struct PicurvWindow;
95typedef struct UserCtx UserCtx;
96typedef struct BC_Param_s BC_Param; /* Retains _s for linked list safety */
99typedef struct IBMNodes IBMNodes;
100typedef struct IBMVNodes IBMVNodes;
101typedef struct FSInfo FSInfo;
102typedef struct UserMG UserMG;
104typedef struct Cell Cell;
105typedef struct Particle Particle;
109typedef struct Cstart Cstart;
110typedef struct MGCtx MGCtx;
114typedef struct IBMInfo IBMInfo;
116typedef struct ScalingCtx ScalingCtx;
117
118// --- Foundational Geometric and Data Types ---
119
120/** @brief A 3D point or vector with PetscScalar components. */
121typedef struct Cmpnts {
122 PetscScalar x, y, z;
124
125/** @brief A 2D point or vector with PetscScalar components. */
126typedef struct Cmpnts2 {
127 PetscScalar x, y;
129
130/** @brief A symmetric second-order tensor stored by its six independent components.
131 *
132 * The three missing components are recovered by symmetry: `yx == xy`, `zx == xz`,
133 * and `zy == yz`. Contractions must therefore double the off-diagonal terms, which
134 * is what `SymTensorContract()` exists to do in one place instead of at every call
135 * site. Used for strain rates and for the Germano identity's Leonard and model
136 * tensors.
137 */
138typedef struct SymTensor {
139 PetscReal xx, xy, xz, yy, yz, zz;
141
142/** @brief A 2D vector of PETSc real numbers (for geometry/coordinates). */
143typedef struct Cpt2D {
144 PetscReal x, y;
146
147/** @brief Boundary condition data used by the BC pipeline and ghost cell machinery. */
148typedef struct BCS {
149 Vec Ubcs; ///< Physical Cartesian velocity at boundary faces. Full 3D array but only boundary-face entries are meaningful; interior is unused. Consumed by UpdateDummyCells for ghost cell extrapolation.
150 Vec Uch; ///< Characteristic velocity for boundary conditions.
152
153
154//--------------------------------------------------------------------------------
155// 2. PARTICLE LOCATION SYSTEM ENUMS
156//--------------------------------------------------------------------------------
157
158/**
159 * @enum ParticleLocationStatus
160 * @brief Defines the state of a particle with respect to its location and migration
161 * status during the iterative SettleParticles() process.
162 */
170
171/** @brief Enumerates the six faces of a cubic cell for distance calculations. */
172typedef enum {
175
176/** @brief Selects the algorithm used to populate a fresh Eulerian velocity field. */
184
185/** @brief Selects the authoritative velocity representation in a staged file IC. */
190
191
192//--------------------------------------------------------------------------------
193// 3. PARTICLE LOCATION SYSTEM STRUCTS
194//--------------------------------------------------------------------------------
195
196/** @brief Defines a 3D axis-aligned bounding box. */
197typedef struct BoundingBox {
198 Cmpnts min_coords; ///< Minimum x, y, z coordinates of the bounding box.
199 Cmpnts max_coords; ///< Maximum x, y, z coordinates of the bounding box.
201
202/** @brief Defines the vertices of a single hexahedral grid cell. */
203typedef struct Cell {
204 Cmpnts vertices[8]; ///< Coordinates of the eight vertices of the cell.
205} Cell;
206
207/** @brief Defines a particle's core properties for Lagrangian tracking. */
220
221/** @brief Stores the MPI ranks of neighboring subdomains. */
222typedef struct RankNeighbors {
223 PetscMPIInt rank_xm, rank_xp;
224 PetscMPIInt rank_ym, rank_yp;
225 PetscMPIInt rank_zm, rank_zp;
227
228/** @brief A lean struct to hold the global cell ownership range for a single MPI rank. */
229typedef struct RankCellInfo {
233
234/** @brief Information needed to migrate a single particle between MPI ranks. */
235typedef struct MigrationInfo {
236 PetscInt local_index;
237 PetscInt target_rank;
239
240/** @brief Verification-only analytical diffusivity override settings. */
242 PetscBool enabled;
243 char mode[32];
244 char profile[32];
245 PetscReal gamma0;
246 PetscReal slope_x;
248
249/** @brief Verification-only analytical scalar override settings. */
251 PetscBool enabled;
252 char mode[32];
253 char profile[32];
254 PetscReal value;
255 PetscReal phi0;
256 PetscReal slope_x;
257 PetscReal amplitude;
258 PetscReal kx;
259 PetscReal ky;
260 PetscReal kz;
262
263/** @brief Aggregated per-timestep search instrumentation counters. */
280
281
282//--------------------------------------------------------------------------------
283// 4. BOUNDARY CONDITION SYSTEM ENUMS
284//--------------------------------------------------------------------------------
285
286/** @brief Identifies the six logical faces of a structured computational block. */
292
293/** @brief Primary flow direction for streamwise IC and Poiseuille modes.
294 * Even values = positive-face-normal direction; odd = negative.
295 * axis = value / 2 (0=Xi, 1=Eta, 2=Zeta).
296 * sign = (value % 2 == 0) ? +1 : -1.
297 */
307
308/** @brief Defines the general mathematical/physical Category of a boundary. */
309typedef enum {
312 WALL = 1 ,
316 INLET = 5,
323 OGRID = 12,
325 // Note: Legacy 14 can be a JUNCTION with a specific handler.
326} BCType;
327
328/** @brief Defines the specific computational "strategy" for a boundary handler. */
345
346
354
355//--------------------------------------------------------------------------------
356// 5. BOUNDARY CONDITION SYSTEM STRUCTS
357//--------------------------------------------------------------------------------
358
359/** @brief A node in a linked list for storing key-value parameters from the bcs.dat file. */
361 char *key;
362 char *value;
364};
365
366/** @brief Provides execution context for a boundary condition handler. */
375
376/** @brief The "virtual table" struct for a boundary condition handler object. */
377typedef struct BoundaryCondition {
380 void *data;
381 PetscErrorCode (*Initialize)(BoundaryCondition *self, BCContext *ctx);
382 PetscErrorCode (*PreStep)(BoundaryCondition *self, BCContext *ctx, PetscReal *local_inflow, PetscReal *local_outflow);
383 PetscErrorCode (*Apply)(BoundaryCondition *self, BCContext *ctx);
384 PetscErrorCode (*PostStep)(BoundaryCondition *self, BCContext *ctx, PetscReal *local_inflow, PetscReal *local_outflow);
385 PetscErrorCode (*UpdateUbcs)(BoundaryCondition *self,BCContext *ctx);
386 PetscErrorCode (*Destroy)(BoundaryCondition *self);
388
389/** @brief Holds the complete configuration for one of the six boundary faces. */
397
398//--------------------------------------------------------------------------------
399// 6. IMBERSED BOUNDARY METHOD (IBM) & FSI STRUCTS
400//--------------------------------------------------------------------------------
401
402/** @brief Holds interpolation and distance information for a single IBM point. */
403typedef struct IBMInfo {
404 PetscInt i1, j1, k1, i2, j2, k2, i3, j3, k3;
405 PetscReal cr1, cr2, cr3;
406 PetscReal d_i;
407 PetscInt imode;
408 PetscInt ni, nj, nk;
409 PetscReal d_s;
411 PetscInt cell;
412 PetscReal cs1, cs2, cs3;
413 PetscInt i11, j11, k11, i22, j22, k22, i33, j33, k33;
414 PetscReal cr11, cr22, cr33;
415 PetscReal d_ii;
416 PetscInt iimode;
417 PetscReal cs11, cs22, cs33;
418 PetscInt ii1, jj1, kk1, ii2, jj2, kk2, ii3, jj3, kk3;
419 PetscReal ct1, ct2, ct3;
420 PetscInt smode;
421 PetscInt ii11, jj11, kk11, ii22, jj22, kk22, ii33, jj33, kk33;
422 PetscReal ct11, ct22, ct33;
423 PetscReal d_ss;
424 PetscInt ssmode;
425} IBMInfo;
426
427/** @brief Represents a collection of nodes forming a surface for the IBM. */
428typedef struct IBMNodes {
429 PetscInt nbnumber;
430 PetscInt n_v, n_elmt;
431 PetscInt *nv1, *nv2, *nv3;
432 PetscReal *nf_x, *nf_y, *nf_z;
433 PetscReal *x_bp, *y_bp, *z_bp;
434 PetscReal *x_bp0, *y_bp0, *z_bp0;
435 PetscReal *x_bp_o, *y_bp_o, *z_bp_o;
436 PetscReal *cf, *cfsum, *CCp;
437 PetscReal x_bp_in[101][3270], y_bp_in[101][3270], z_bp_in[101][3270];
439 PetscReal *dA, *nt_x, *nt_y, *nt_z, *ns_x, *ns_y, *ns_z;
440 PetscReal *cent_x, *cent_y, *cent_z;
441 PetscReal *pres, *tau0, *tauN, *Bvel_u, *Bvel_v, *Bvel_w;
444 PetscReal *radvec;
445} IBMNodes;
446
447/** @brief Represents a collection of nodes forming a volume for the IBM. */
448typedef struct IBMVNodes {
449 PetscInt nbnumber;
450 PetscInt n_v, n_elmt;
451 PetscInt *nv1, *nv2, *nv3, *nv4;
452 PetscReal *x_bp, *y_bp, *z_bp;
453 PetscReal *x_bp0, *y_bp0, *z_bp0;
454 PetscReal *x_bp_o, *y_bp_o, *z_bp_o;
456 PetscReal V, *dV0;
457 PetscReal *cent_x, *cent_y, *cent_z;
458 PetscReal x_c, y_c, z_c;
459 PetscReal J[3][3], I_inv[3][3];
460} IBMVNodes;
461
462/** @brief A generic C-style linked list node for integers. */
463typedef struct node{
464 PetscInt Node;
465 struct node *next;
467
468/** @brief Head of a generic C-style linked list. */
469typedef struct list{
472
473/** @brief A generic C-style linked list node for indices. */
474typedef struct list_node {
475 PetscInt index;
478
479/** @brief A linked list node containing IBM interpolation info. */
484
485/** @brief Head of a linked list for IBM data. */
489
490/** @brief Information about a surface element for FSI calculations. */
491typedef struct SurfElmtInfo {
492 PetscReal P;
493 PetscInt n_P;
494 PetscReal Tow_ws, Tow_wt, Tow_wn;
496 PetscInt icell, jcell, kcell;
499
500/** @brief Holds all data related to the state and motion of a body in FSI. */
501typedef struct FSInfo {
502 PetscReal S_new[6], S_old[6], S_real[6], S_realm1[6];
503 PetscReal S_ang_n[6], S_ang_o[6], S_ang_r[6], S_ang_rm1[6];
504 PetscReal red_vel, damp, mu_s;
505 PetscReal F_x, F_y, F_z, A_tot;
508 PetscReal M_x, M_y, M_z;
513 PetscReal x_c, y_c, z_c;
514 PetscReal a_c[3];
517 PetscReal Power, clone;
518 PetscInt pbc[3];
519 PetscReal I_inv[3][3];
520 PetscReal L_n[3], L_o[3], L_r[3];
521 PetscReal alpha[3], acc[3];
522 PetscReal R[3][3], q[4], q_r[4];
523 PetscReal dS[6], dS_o[6], atk, atk_o;
527 PetscInt CV_ys, CV_ye, CV_zs, CV_ze;
528} FSInfo;
529
530/** @brief Defines prescribed body motion using splines. */
531typedef struct Cstart {
533 PetscReal *x_midp, *y_midp, *z_midp;
534 PetscReal *x_com, *y_com, *head_ang;
535 PetscReal *s1, *s2, *s3, *st1, *st2, *st3;
536 Mat Mphi;
537 PetscReal xmin, xmax, ymin, ymax, zmin, zmax;
538} Cstart;
539
540//--------------------------------------------------------------------------------
541// 7. LES TURBULENCE MODEL STRUCTS & ENUMS
542//--------------------------------------------------------------------------------
543/** @brief Identifies the subgrid-scale closure evaluated during a timestep.
544 *
545 * Add new enum values only when the parser, runtime dispatch, docs, and tests
546 * are updated in the same change.
547 */
555
556/** @brief Selects the wall model applied on WALL faces.
557 *
558 * The value doubles as the enable switch: ::WALL_FUNCTION_NONE disables the treatment,
559 * and every other value both enables it and names the law. Configured independently of
560 * the LES closure.
561 *
562 * Add new enum values only when the parser, runtime dispatch, docs, and tests are
563 * updated in the same change.
564 */
571
572/** @brief Selects how a cell's grid filter width is derived from its metrics.
573 *
574 * `CUBE_ROOT_VOLUME` is exact for a cube and progressively underestimates the
575 * width as a cell is stretched. The others use the cell's extents along its own grid
576 * directions: `SCOTTI` corrects the cube root for the cell's aspect ratios, and
577 * `MAX_EDGE` takes the longest extent. See @ref ComputeCellFilterWidth.
578 */
585
586/** @brief Selects the discrete test-filter kernel used by the dynamic procedure.
587 *
588 * `SIMPSON_IK` collapses onto the central eta-plane and is valid only when the
589 * xi and zeta directions are homogeneous; the ingress layer enforces that.
590 */
595
596/** @brief Selects the set over which the Germano contractions are averaged.
597 *
598 * Lilly's least-squares closure assumes the model coefficient is constant across
599 * the averaging set, so the set should span directions in which the flow really is
600 * statistically homogeneous. `LOCAL` makes no such claim and is the only choice
601 * valid on arbitrary geometry. `HOMOGENEOUS` derives its directions from the
602 * periodic boundary pairs unless they are named explicitly.
603 */
609
610/** @brief Selects the admissible range imposed on the dynamic model coefficient.
611 *
612 * `NONE` keeps the coefficient signed, so subgrid-to-resolved energy transfer
613 * (backscatter) survives; stability then rests on the total-viscosity floor
614 * rather than on the coefficient's sign. The clipping modes discard the negative
615 * tail, which removes backscatter and biases the mean dissipation upward.
616 */
622
623/** @brief Every user-selectable parameter of the LES closure.
624 *
625 * Resolved once from the generated control file by @ref CreateSimulationContext and
626 * read-only thereafter. The model selector itself stays on `SimCtx::les`, because
627 * dispatch and field availability are decided from it throughout the runtime.
628 */
629typedef struct LESConfig {
630 PetscInt dynamic_frequency; ///< Recompute the dynamic coefficient every N steps.
631 PetscReal constant_cs; ///< Fixed Cs for CONSTANT_SMAGORINSKY; unused by the dynamic model.
632 PetscReal vreman_coefficient; ///< Model constant c for VREMAN (Vreman 2004: 2.5 Cs^2).
633 PetscReal wale_coefficient; ///< Model constant C_w for WALE (Nicoud & Ducros 1999).
634 LESFilterWidthModel filter_width_model; ///< How the grid filter width Delta is derived per cell.
635 LESTestFilterKernel test_filter_kernel; ///< Discrete test-filter stencil.
636 PetscReal test_filter_width_ratio; ///< Test-to-grid ratio per filtered direction; alpha is its square for the box, ratio^(4/3) for Simpson.
637 LESAveragingMode averaging_mode; ///< Averaging set for the Germano contractions.
638 PetscBool averaging_direction[3]; ///< Averaged-over logical directions (xi, eta, zeta).
639 LESClipMode clip_mode; ///< Admissible range for the coefficient.
640 PetscReal max_cs; ///< Ceiling on Cs under LES_CLIP_CLAMP.
641 PetscReal min_viscosity_ratio; ///< Enforce nu + nu_t >= ratio * nu.
642 PetscReal yoshizawa_ci; ///< Yoshizawa constant for the reported SGS kinetic energy.
643 PetscBool diagnostics_enabled; ///< Append per-step coefficient statistics to the run log directory.
644 PetscInt diagnostics_cadence; ///< Steps between diagnostic rows.
646
647/** @brief Pre-clipping volume statistics captured by one dynamic-coefficient update.
648 *
649 * The backscattering and limited fractions describe the coefficient field as the
650 * Germano contraction produced it. Clipping overwrites that state, and no stored
651 * field preserves it, so it is recorded here on the way past and consumed by
652 * @ref LogLESDiagnostics.
653 */
654typedef struct LESDiagnosticsState {
655 PetscReal contraction_lm; ///< Volume-weighted sum of `L_ij M_ij` over fluid cells.
656 PetscReal contraction_mm; ///< Volume-weighted sum of `M_ij M_ij` over fluid cells.
657 PetscReal backscatter_volume; ///< Fluid volume whose raw coefficient was negative.
658 PetscReal limited_volume; ///< Fluid volume whose coefficient the clip modified.
659 PetscReal fluid_volume; ///< Total fluid volume sampled.
660 PetscBool valid; ///< Set once a dynamic update has populated this state.
662
663/** @brief Near-wall statistics captured by one wall-model pass.
664 *
665 * The wall model evaluates the wall distance and the friction velocity together at each
666 * corrected cell. `y+` is the number that says whether the model is being asked to work
667 * in the range it is valid for, and it cannot be recovered afterwards from the corrected
668 * velocity field, which no longer carries the law that produced it. Recomputing the wall
669 * distance in the diagnostic would duplicate geometry the correction already has in hand,
670 * so it is accumulated on the way past and consumed by @ref LogWallModelDiagnostics.
671 */
673 PetscReal friction_velocity_sum; ///< Sum of `u_tau` over corrected cells.
674 PetscReal friction_velocity_sq; ///< Sum of `u_tau^2`, for the RMS.
675 PetscReal friction_velocity_min; ///< Smallest `u_tau` this rank corrected.
676 PetscReal friction_velocity_max; ///< Largest `u_tau` this rank corrected.
677 PetscReal wall_distance_sum; ///< Sum of the first-cell wall distance.
678 PetscReal y_plus_sum; ///< Sum of `u_tau * y / nu` over corrected cells.
679 PetscReal y_plus_max; ///< Largest first-cell `y+` this rank corrected.
680 PetscReal wall_viscosity_sum; ///< Sum of the effective wall eddy viscosity.
681 PetscInt cells; ///< Number of cells this rank corrected.
683//--------------------------------------------------------------------------------
684// 8. MULTIGRID, SOLVERS AND POST-PROCESSING STRUCTS AND ENUMS
685//--------------------------------------------------------------------------------
686
687/** @brief Enumerator to identify the implemented momentum solver strategies.
688 *
689 * Add new enum values only when the parser, runtime dispatch, docs, and tests
690 * are updated in the same change.
691 */
699
700/** @brief Selects the runtime solution-convergence diagnostics mode. */
707
708/** @brief Enumerator to identify the particle initialization strategy. */
709typedef enum {
710 PARTICLE_INIT_SURFACE_RANDOM = 0, /**< Random placement on the inlet face */
711 PARTICLE_INIT_VOLUME = 1, /**< Random volumetric distribution across the domain */
712 PARTICLE_INIT_POINT_SOURCE = 2, /**< All particles at a fixed (psrc_x,psrc_y,psrc_z) — for validation */
713 PARTICLE_INIT_SURFACE_EDGES = 3 /**< Deterministic placement at inlet face edges */
715
716/**
717 * @brief Selects the grid-to-particle interpolation method.
718 *
719 * - INTERP_TRILINEAR: Direct trilinear from 8 nearest cell centers (second-order on curvilinear grids).
720 * - INTERP_CORNER_AVERAGED: Legacy center-to-corner average, then trilinear from corners.
721 */
726
727/** @brief Context for Multigrid operations. */
728typedef struct MGCtx {
730 PetscInt thislevel;
732} MGCtx;
733
734/** @brief User-level context for managing the entire multigrid hierarchy. */
735typedef struct UserMG {
736 PetscInt mglevels;
737 PetscInt thislevel;
738 PetscBool isc, jsc, ksc;
742} UserMG;
743
744#define MAX_PIPELINE_LENGTH 1024
745#define MAX_FIELD_LIST_LENGTH 1024
746#define MAX_FILENAME_LENGTH 256
747/// Defines the maximum number of data fields for VTK point data.
748#define MAX_POINT_DATA_FIELDS 20
749#define MAX_VTK_FIELD_NAME_LENGTH 64 ///< Maximum length for VTK field names.
750/**
751 * @brief Holds all configuration parameters for a post-processing run.
752 * This is an enhanced version combining command-line and file-based settings.
753 */
754typedef struct PostProcessParams {
755 // -- Source Directory --- (For Data)
756 char source_dir[PETSC_MAX_PATH_LEN];
757
758 // --- Time Controls (can be set by command line or file) ---
759 PetscInt startTime;
760 PetscInt endTime;
761 PetscInt timeStep;
762 /** File listing the exact steps to process, one per line; empty uses the time controls. */
763 char step_list_file[PETSC_MAX_PATH_LEN];
765
766 // --- Configuration primarily from the .cfg file ---
774
775 // --- Statistics Pipeline (global reductions → CSV files) ---
776 char statistics_pipeline[MAX_PIPELINE_LENGTH]; /**< e.g. "ComputeMSD" */
777 char statistics_output_prefix[MAX_FILENAME_LENGTH]; /**< basename for CSV output, e.g. "Stats" */
778
779 // --- Field Statistics (accumulated window state → derived fields) ---
780 /** Comma-separated window names to derive; empty disables the pipeline. */
782 /** Comma-separated outputs: mean, reynolds_stress, rms, tke, flux. */
784 /** Comma-separated formats: vtk for derived fields, csv for the convergence history. */
786 /** Analysis prefix for CSV summaries; VTK continues to use output_prefix. */
787 char field_statistics_output_prefix[PETSC_MAX_PATH_LEN];
788 /** Whether derived output leaves non-dimensional form, from global_operations.dimensionalize. */
789 PetscBool dimensionalize;
790 /** Committed step supplying the state; negative means the step being processed. */
792
793 // --- Legacy settings ---
794 char eulerianExt[8]; // from original PostProcessParams (repurposed for PreCheckAndResize() as the input file extension.)
795 char particleExt[8]; // from original PostProcessParams
796
797 // --- Processing Parameters ---
798 PetscInt reference[3]; // Reference point for normalizing any field against.
799
801
802/**
803 * @brief Stores all necessary information for a single data array in a VTK file.
804 */
805typedef struct VTKFieldInfo {
806 char name[MAX_VTK_FIELD_NAME_LENGTH]; // Name of the data field
807 PetscInt num_components; // 1 for scalar, 3 for vector
808 PetscScalar* data; // Pointer to the raw data array (must be freed by caller)
810
811/** @brief Enumerates the type of VTK file to be written. */
816
827
828/**
829 * @brief Defines the execution mode of the application.
830 */
831typedef enum {
832 EXEC_MODE_SOLVER, // The application is running as the main fluid solver.
833 EXEC_MODE_POSTPROCESSOR, // The application is running as the post-processor.
834 EXEC_MODE_UNKNOWN // Default/error state.
836
837//-------------------------------------------------------------------------------
838// 9. SCALING AND DIMENSIONAL ANALYSIS STRUCTS
839//-------------------------------------------------------------------------------
840typedef struct ScalingCtx{
841 PetscReal L_ref;
842 PetscReal U_ref;
843 PetscReal rho_ref;
844 PetscReal P_ref;
846//-------------------------------------------------------------------------------
847/*================================================================================*
848 * MAIN APPLICATION CONTEXT *
849 *================================================================================*/
850
851/**
852 * @brief The master context for the entire simulation.
853 *
854 * This struct encapsulates all global configuration flags, physical parameters,
855 * simulation control settings, and top-level data objects. It replaces the
856 * numerous global variables from the legacy codebase, providing a single,
857 * explicit source of truth for the simulation's setup.
858 */
859typedef struct SimCtx {
860
861 //================ Group 1: Parallelism & MPI Information ================
862 PetscMPIInt rank;
863 PetscMPIInt size;
864
865 //================ Group 2: Simulation Control, Time, and I/O ================
866
867 PetscInt step;
868 PetscReal ti;
869 PetscInt StartStep;
870 PetscInt StepsToRun;
871 PetscInt tiout;
873 PetscReal StartTime;
874 PetscReal dt;
875 PetscBool OnlySetup;
876 PetscBool continueMode;
877 PetscViewer logviewer;
879 char eulerianSource[PETSC_MAX_PATH_LEN];
880 char restart_dir[PETSC_MAX_PATH_LEN];
881 char output_dir[PETSC_MAX_PATH_LEN];
882 char log_dir[PETSC_MAX_PATH_LEN];
883 char analysis_dir[PETSC_MAX_PATH_LEN];
884 char _io_context_buffer[PETSC_MAX_PATH_LEN]; // Persistent store for I/O context strings.
885 char *current_io_directory; // Pointer into the above buffer.
889
890 //================ Group 3: High-Level Physics & Model Selection Flags ================
891 PetscInt immersed, movefsi, rotatefsi; ///< Refused at setup: immersed boundaries and moving bodies are not implemented.
892 PetscInt invicid, TwoD, moveframe, rotateframe; ///< moveframe/rotateframe are refused at setup.
893 char AnalyticalSolutionType[PETSC_MAX_PATH_LEN];
894
895 //================ Group 4: Immersed-Body Flux Corrections ================
896 PetscInt MHV, LV; ///< Heart-valve flux corrections for immersed bodies; refused at setup.
897
898 //================ Group 5: Solver & Numerics Parameters ================
903 PetscInt poisson;
904 PetscInt central;
905
908 PetscReal max_pseudo_cfl, min_pseudo_cfl; // New addition for adaptive pseudo-CFL
909 PetscReal mom_dt_jameson_residual_norm_noise_allowance_factor; // New addition for divergence detection
910 PetscBool no_pseudo_cfl_backtrack; /* Diagnostic: commit all finite RK trials, skip ratio-based rollback */
911 PetscReal mom_ratio_ema_alpha; /* EMA smoothing coefficient for trial-ratio rejection (0=no smooth, 1=raw) */
912 PetscBool mom_last_converged; /* Set after each momentum solve: true if pseudo-time converged */
913 PetscReal mom_last_lambda_max; /* Global spectral radius [1/s] from the last momentum solve; for diagnostics */
914 PetscBool mom_nk_monitor_history; /* Write PICurv's structured per-Newton-iteration residual history. */
915 PetscBool ps_ksp_pic_monitor_true_residual; // Parsed once from options for custom Poisson monitor logging.
918 char initialConditionDirectory[PETSC_MAX_PATH_LEN];
919 Cmpnts InitialConstantContra; /* Cartesian (u,v,w) for constant-cartesian IC */
920 FlowDirection flowDirection; /* explicit flow direction for streamwise/Poiseuille */
921 PetscReal icVelocityPhysical; /* scalar speed for curvilinear Constant and Poiseuille */
930 /* --- Field Statistics (window lifecycle; accumulator binding arrives with ingress) --- */
935 /* Whether saved window state is resumed rather than restarted from zero.
936 * Defaults to the run's continue mode; --restart-from requires an explicit
937 * request because it may branch onto a different physical trajectory. */
941
942 //================ Group 6: Physical & Geometric Parameters ================
944 PetscReal CMx_c, CMy_c, CMz_c;
945 PetscReal psrc_x, psrc_y, psrc_z; /**< Point source location for PARTICLE_INIT_POINT_SOURCE */
949 PetscReal iem_constant; /**< IEM mixing constant C_IEM in Omega = C_IEM Gamma / Delta^2 (default 2.0). */
950
951 //================ Group 7: Grid, Domain, and Boundary Condition Settings ================
954 PetscBool generate_grid;
955 char grid_file[PETSC_MAX_PATH_LEN];
958 char **bcs_files;
960 // Turbulent Flat Channel with Forcing term
962 /* Physical step whose smoothed driving force `drivingForceMagnitude` holds
963 * (-1 = none yet). ComputeDrivenChannelFlowSource() runs once per ComputeRHS,
964 * i.e. per RK stage or per Newton residual evaluation, so its EMA must be
965 * advanced against this rather than on every call. */
967 PetscReal targetVolumetricFlux; // for DRIVEN flow.
968 /* True once a driven-flow target is fixed for the run. `constant_flux` sets
969 * it at initialization from the bcs file; `initial_flux` sets it at the
970 * first PreStep from the starting field. Checkpointed so a restart holds the
971 * original target instead of re-measuring a drifted one. */
975 /* The planar-average volumetric flux and cross-section area the controller set
976 * `bulkVelocityCorrection` from this step. Kept so the driven-flow diagnostics can
977 * report them without repeating the controller's global reductions. */
980 PetscInt ccc;
981 PetscReal ratio;
982
983 //================ Group 8: Turbulence Modeling (LES) ================
984 PetscInt les; ///< Active LES closure; an ::LESModelType value.
985 PetscInt wallfunction; ///< Enable wall functions on WALL faces.
986 PetscInt les_gradient_model; ///< Add the Clark gradient (tensor-diffusivity) term to the viscous flux.
987 LESConfig les_config; ///< Parameters of the LES closure selected by `les`.
988
989 //================ Group 9: Particle / DMSwarm Data & Settings ================
990 PetscInt np;
991 PetscInt particleRandomSeed; ///< Base seed for every particle RNG stream (-particle_random_seed).
999 PetscReal particlesLostScalarLastStep; /**< Sum of Psi over the particles removed this step. */
1000 struct ParticleFieldPlan *particleFieldPlan; /**< Configured initial particle-field values, or NULL. */
1007 PetscReal C_IEM;
1008
1009 //================ Group 10: Immersed Boundary & FSI Data Object Pointers ================
1013
1014 //================ Group 11: Top-Level Managers, Custom Configuration,Logging/Monitoring ====
1016 char allowedFile[PETSC_MAX_PATH_LEN];
1017 PetscBool useCfg;
1019 PetscInt nAllowed;
1021 /* Net volume flux into the domain carried by the momentum step's velocity before the
1022 * pressure correction (inflow minus outflow, through every boundary face): the domain
1023 * integral of the pressure equation's source. With Neumann pressure boundaries it must
1024 * be near zero for that equation to have a solution. Unlike the continuity log's
1025 * Net Flux, which sums only the inlet and outlet faces, it covers all boundaries. */
1027 PetscReal MaxDiv;
1029 // Profiling
1030 char profilingSelectedFuncsFile[PETSC_MAX_PATH_LEN];
1035 char profilingTimestepFile[PETSC_MAX_PATH_LEN];
1051 PetscBool runtimeMemoryLogEnabled; /**< Enable the rank-reduced runtime memory log. */
1052 char runtimeMemoryLogFile[PETSC_MAX_PATH_LEN]; /**< File name written under log_dir. */
1053 PetscBool runtimeMemoryLogStarted; /**< True after rank 0 writes the log header. */
1054 PetscBool runtimeMemoryLogHasPrevious; /**< True after the first process-memory sample. */
1055 PetscReal runtimeMemoryLogPreviousProcessMB; /**< Previous local process memory sample in MB. */
1056 //================ Group 12: Post-Processing =================================================
1057 char PostprocessingControlFile[PETSC_MAX_PATH_LEN];
1059
1060 //=============== Group 13: Miscellaneous =============================================
1061 PetscReal r[101], tin[101], uinr[101][1001];
1062
1063} SimCtx;
1064
1065/** @deprecated Use mom_dt_jameson_residual_norm_noise_allowance_factor. */
1066#define mom_dt_rk4_residual_norm_noise_allowance_factor mom_dt_jameson_residual_norm_noise_allowance_factor
1067
1068
1069/**
1070 * @brief User-defined context containing data specific to a single computational
1071 * grid level. This is the primary data structure passed to low-level
1072 * numerical and solver functions.
1073 */
1074typedef struct UserCtx {
1075
1076 // --- The Critical Link to Global Configuration ---
1077 SimCtx *simCtx; ///< Back-pointer to the master simulation context.
1078
1079 // --- Grid, Geometry & Parallelization (Per-Level) ---
1080 DM da, fda;
1081 /* Symmetric second-order tensor DM (dof 6), mirroring da's decomposition.
1082 * Field-statistics products need six components at each point; splitting them
1083 * across six scalar vectors would cost six memory streams in the per-step
1084 * accumulation loop and six collective gathers per checkpoint. */
1086 DMDALocalInfo info;
1087 AO ao;
1088 PetscInt IM, JM, KM; // No.of grid points.
1093 PetscReal rx, ry, rz;
1094 PetscInt cgrid;
1097
1098 // --- Boundary Conditions & Interfacing ---
1103 /* Wall-model friction velocity. Global is authoritative - the wall model writes
1104 it alongside the global Ucat it corrects - and the local view is its ghosted
1105 image, refreshed through the field catalog like every other cell field. */
1107 /* Eddy viscosity the wall model needs at its wall face for the discrete viscous
1108 flux to deliver the stress the model computed. Derived, rebuilt by every wall
1109 pass, and never restored from a checkpoint. */
1111
1112 // --- Primary Flow Fields (Global & Local Views) ---
1114
1115 // --- Secondary Flow & Derived Fields ---
1118
1119 // --- Time-Stepping & Solver Workspace Fields ---
1124 /* Corner-staging workspace, one pair per block size, so neither the DM nor
1125 * the degree of freedom has to be rediscovered from a cached vector. */
1126 Vec CellScalarAtCorner, lCellScalarAtCorner; /* da-based, dof 1 */
1127 Vec CellVectorAtCorner, lCellVectorAtCorner; /* fda-based, dof 3 */
1128 /* Post-processing staging vectors. A derived statistic is config-counted and has
1129 * no compile-time offset of its own, so it is written here to be addressed by
1130 * name through the existing ghost and nodal-average paths. The nodal companions
1131 * are reused field by field, because the VTK writer copies each one out before
1132 * the next is produced. */
1133 Vec PostScalar, lPostScalar, PostScalarNodal; /* da-based, dof 1 */
1134 Vec PostVector, lPostVector, PostVectorNodal; /* fda-based, dof 3 */
1135 /* Per-window statistics accumulators, one entry per configured window. */
1137
1138 // --- Pressure-Poisson System ---
1139 /* Built once by PoissonSolver_Multigrid() and kept for the run. A, nullsp and R live
1140 on every level (R below the finest); MR and MP are the transfers between this level
1141 and the next coarser one; ksp and B are held on the finest level only. */
1142 Mat A; KSP ksp; MatNullSpace nullsp;
1143 Vec B,R;
1144 Mat MR, MP;
1145
1146
1147 // --- Grid Metrics (Global and Local) ---
1154
1155 // --- Turbulence Modeling (LES) ---
1157 LESDiagnosticsState les_diagnostics; ///< Pre-clipping statistics from the last dynamic update.
1158 WallModelDiagnosticsState wall_diagnostics; ///< Near-wall statistics from the last wall-model pass.
1159 PetscInt wall_yplus_excursions; ///< Consecutive diagnostic samples with the first cell outside the selected law's valid y+ range.
1160
1161 // --- Immersed Boundary Method (IBM) ---
1163
1164 // --- Multigrid Hierarchy ---
1167
1168 // --- Particle System ---
1172 Vec Psi, lPsi; //scalar dummy to demonstrate scatter.
1173
1174 // --- Post-Processing ---
1178 Vec Qcrit, lQcrit; ///< Cell-centred Q-criterion and its ghosted copy for nodal averaging.
1179 Vec Qcrit_nodal; ///< Q-criterion averaged to grid nodes; the field a .vts can place correctly.
1181
1182} UserCtx;
1183
1184#ifdef __cplusplus
1185}
1186#endif
1187
1188#endif // VARIABLES_H
Independent accumulator state for one window on one block.
Runtime state of one window.
The "virtual table" struct for a boundary condition handler object.
Definition variables.h:377
PetscErrorCode(* PostStep)(BoundaryCondition *self, BCContext *ctx, PetscReal *local_inflow, PetscReal *local_outflow)
Definition variables.h:384
PetscErrorCode(* PreStep)(BoundaryCondition *self, BCContext *ctx, PetscReal *local_inflow, PetscReal *local_outflow)
Definition variables.h:382
BCHandlerType type
Definition variables.h:378
PetscErrorCode(* Destroy)(BoundaryCondition *self)
Definition variables.h:386
PetscErrorCode(* Initialize)(BoundaryCondition *self, BCContext *ctx)
Definition variables.h:381
PetscErrorCode(* UpdateUbcs)(BoundaryCondition *self, BCContext *ctx)
Definition variables.h:385
PetscErrorCode(* Apply)(BoundaryCondition *self, BCContext *ctx)
Definition variables.h:383
BCPriorityType priority
Definition variables.h:379
PetscReal M_x_rm3
Definition variables.h:512
PetscReal y_c
Definition variables.h:458
PetscReal * x_bp_o
Definition variables.h:435
PetscMPIInt rank_zm
Definition variables.h:225
LESModelType
Identifies the subgrid-scale closure evaluated during a timestep.
Definition variables.h:548
@ DYNAMIC_SMAGORINSKY
Definition variables.h:551
@ VREMAN
Definition variables.h:552
@ NO_LES_MODEL
Definition variables.h:549
@ WALE
Definition variables.h:553
@ CONSTANT_SMAGORINSKY
Definition variables.h:550
PetscReal icVelocityPhysical
Definition variables.h:921
PetscInt MHV
Definition variables.h:896
Vec lFriction_Velocity
Definition variables.h:1106
const PetscReal * global_outflow_sum
Definition variables.h:373
Vec lDiffusivityGradient
Definition variables.h:1117
PetscInt isc
Definition variables.h:1092
PetscInt CV_ye
Definition variables.h:527
Cmpnts * urm1
Definition variables.h:455
DM packer
Definition variables.h:740
PetscBool mom_nk_monitor_history
Definition variables.h:914
PetscReal P
Definition variables.h:492
PetscInt ii22
Definition variables.h:421
PetscReal FarFluxInSum
Definition variables.h:959
Vec Qcrit_nodal
Q-criterion averaged to grid nodes; the field a .vts can place correctly.
Definition variables.h:1179
Vec lPostScalar
Definition variables.h:1133
PetscInt fieldStatisticsWindowCount
Definition variables.h:932
char statistics_output_prefix[256]
basename for CSV output, e.g.
Definition variables.h:777
PetscInt movefsi
Definition variables.h:891
Vec lCent
Definition variables.h:1148
BCType
Defines the general mathematical/physical Category of a boundary.
Definition variables.h:309
@ MOVING_WALL
Definition variables.h:313
@ INLET
Definition variables.h:316
@ INTERFACE
Definition variables.h:311
@ ANNULUS
Definition variables.h:322
@ ANALYTICAL_VORTEX
Definition variables.h:320
@ RHEOLOGY
Definition variables.h:324
@ FARFIELD
Definition variables.h:317
@ CHARACTERISTIC_BC
Definition variables.h:319
@ SYMMETRY
Definition variables.h:314
@ WALLFUNCTION
Definition variables.h:310
@ OGRID
Definition variables.h:323
@ OUTLET
Definition variables.h:315
@ PERIODIC
Definition variables.h:318
@ JUNCTION
Definition variables.h:321
@ WALL
Definition variables.h:312
PetscReal M_x_rm2
Definition variables.h:511
Vec GridSpace
Definition variables.h:1148
PetscInt j2
Definition variables.h:404
PetscReal yoshizawa_ci
Yoshizawa constant for the reported SGS kinetic energy.
Definition variables.h:642
struct list_node * next
Definition variables.h:476
PetscBool continueMode
Definition variables.h:876
PetscReal * dA
Definition variables.h:439
PetscInt jj11
Definition variables.h:421
PetscReal F_x
Definition variables.h:505
PetscInt moveframe
Definition variables.h:892
Vec P_nodal
Definition variables.h:1176
Cmpnts vel
Definition variables.h:212
PetscReal * cent_y
Definition variables.h:440
PetscInt TwoD
Definition variables.h:892
PetscInt pseudo_periodic
Definition variables.h:953
UserCtx * user
Definition variables.h:729
PetscReal d_s
Definition variables.h:409
PetscReal FarFluxOutSum
Definition variables.h:959
Mat Mphi
Definition variables.h:536
PetscInt ssmode
Definition variables.h:424
#define MAX_POINT_DATA_FIELDS
Defines the maximum number of data fields for VTK point data.
Definition variables.h:748
PetscInt k22
Definition variables.h:413
PetscReal I_inv[3][3]
Definition variables.h:459
PetscInt ys_cell
Definition variables.h:230
PetscReal clone
Definition variables.h:517
PetscInt n_elmt
Definition variables.h:450
PetscInt npoints
Definition variables.h:820
PetscInt i22
Definition variables.h:413
PetscBool inletFaceDefined
Definition variables.h:1100
PetscReal wall_viscosity_sum
Sum of the effective wall eddy viscosity.
Definition variables.h:680
PetscInt i1
Definition variables.h:404
PetscReal S_ang_o[6]
Definition variables.h:503
PetscInt j11
Definition variables.h:413
PetscInt i3
Definition variables.h:404
PetscInt icell
Definition variables.h:496
IBMList * ibmlist
Definition variables.h:1162
PetscInt num_components
Definition variables.h:807
PetscInt j3
Definition variables.h:404
PetscReal * y_bp
Definition variables.h:452
PetscBool profilingFinalSummary
Definition variables.h:1036
Vec lNu_Wall
Definition variables.h:1110
char particle_output_prefix[256]
Definition variables.h:772
PetscInt xs_cell
Definition variables.h:230
PetscReal y_bp_in[101][3270]
Definition variables.h:437
PetscReal schmidt_number
Definition variables.h:948
PetscMPIInt rank
Definition variables.h:862
PetscInt imode
Definition variables.h:407
PetscInt dynamic_frequency
Recompute the dynamic coefficient every N steps.
Definition variables.h:630
PetscInt kk22
Definition variables.h:421
PetscInt mglevels
Definition variables.h:1165
char profilingTimestepFile[PETSC_MAX_PATH_LEN]
Definition variables.h:1035
PetscInt LV
Heart-valve flux corrections for immersed bodies; refused at setup.
Definition variables.h:896
PetscReal mu_s
Definition variables.h:504
PetscReal angle
Definition variables.h:943
PetscReal Turbulent_schmidt_number
Definition variables.h:948
PetscReal cr33
Definition variables.h:414
PetscInt target_rank
Definition variables.h:237
PetscReal tin[101]
Definition variables.h:1061
PetscInt cgrid
Definition variables.h:1094
BoundaryFaceConfig boundary_faces[6]
Definition variables.h:1099
PetscMPIInt rank_yp
Definition variables.h:224
PetscInt64 searchLocatedCount
Definition variables.h:267
PetscReal yy
Definition variables.h:139
PetscReal z_bp_in[101][3270]
Definition variables.h:437
LESFilterWidthModel filter_width_model
How the grid filter width Delta is derived per cell.
Definition variables.h:634
PetscReal * s2
Definition variables.h:535
MatNullSpace nullsp
Definition variables.h:1142
PetscInt statisticsConsoleOutputFreq
Definition variables.h:934
PetscInt block_number
Definition variables.h:952
Vec lIEta
Definition variables.h:1151
PetscInt nbnumber
Definition variables.h:449
PetscReal * y_com
Definition variables.h:534
PetscInt num_point_data_fields
Definition variables.h:823
PetscReal * radvec
Definition variables.h:444
PetscReal * cent_y
Definition variables.h:457
PetscReal * Bvel_v
Definition variables.h:441
PetscReal contraction_mm
Volume-weighted sum of M_ij M_ij over fluid cells.
Definition variables.h:656
PetscReal mom_rtol
Definition variables.h:901
PetscReal F_z_old
Definition variables.h:506
PetscInt64 searchLostCount
Definition variables.h:268
PetscInt ii1
Definition variables.h:418
BCFace identifiedInletBCFace
Definition variables.h:1101
PetscInt da_procs_z
Definition variables.h:956
PetscReal M_z
Definition variables.h:508
PetscInt CV_zs
Definition variables.h:527
PetscReal J[3][3]
Definition variables.h:459
PetscReal R[3][3]
Definition variables.h:522
PetscReal F_y_real
Definition variables.h:507
PetscReal targetVolumetricFlux
Definition variables.h:967
Vec * solutionConvergencePeriodicPRef
Definition variables.h:1123
PetscInt cell[3]
Definition variables.h:210
PetscReal Max_ybc
Definition variables.h:526
PetscReal xmax
Definition variables.h:537
PetscInt jj2
Definition variables.h:418
PetscReal * z_bp_o
Definition variables.h:454
PetscBool walltimeGuardActive
Definition variables.h:1038
SNES snespacker
Definition variables.h:741
Vec lIZet
Definition variables.h:1151
LESTestFilterKernel test_filter_kernel
Discrete test-filter stencil.
Definition variables.h:635
UserCtx * user_f
Definition variables.h:1166
PetscReal mom_last_lambda_max
Definition variables.h:913
Vec lNvert
Definition variables.h:1113
PetscReal walltimeGuardWarmupTotalSeconds
Definition variables.h:1046
Cmpnts pmin
Definition variables.h:410
LESConfig les_config
Parameters of the LES closure selected by les.
Definition variables.h:987
PetscInt CV_ys
Definition variables.h:527
PetscReal forceScalingFactor
Definition variables.h:961
PetscReal pseudo_cfl_reduction_factor
Definition variables.h:907
InitialConditionMode initialConditionMode
Definition variables.h:916
SimCtx * simCtx
Back-pointer to the master simulation context.
Definition variables.h:1077
ParticleInitializationType
Enumerator to identify the particle initialization strategy.
Definition variables.h:709
@ PARTICLE_INIT_SURFACE_RANDOM
Random placement on the inlet face.
Definition variables.h:710
@ PARTICLE_INIT_SURFACE_EDGES
Deterministic placement at inlet face edges.
Definition variables.h:713
@ PARTICLE_INIT_POINT_SOURCE
All particles at a fixed (psrc_x,psrc_y,psrc_z) — for validation.
Definition variables.h:712
@ PARTICLE_INIT_VOLUME
Random volumetric distribution across the domain.
Definition variables.h:711
PetscReal zmin
Definition variables.h:537
PetscReal StartTime
Definition variables.h:873
PetscReal Mdpdn_x_old
Definition variables.h:516
ParticleLocationStatus
Defines the state of a particle with respect to its location and migration status during the iterativ...
Definition variables.h:163
@ LOST
Definition variables.h:167
@ NEEDS_LOCATION
Definition variables.h:164
@ ACTIVE_AND_LOCATED
Definition variables.h:165
@ UNINITIALIZED
Definition variables.h:168
@ MIGRATING_OUT
Definition variables.h:166
PetscReal * st3
Definition variables.h:535
PetscReal * solutionConvergenceMeanSpeedHistory
Definition variables.h:928
PetscReal * z_midp
Definition variables.h:533
PetscReal FluxOutSum
Definition variables.h:959
PetscReal * cent_x
Definition variables.h:457
PetscMPIInt rank_ym
Definition variables.h:224
PetscBool walltimeGuardHasEWMA
Definition variables.h:1048
PetscReal CMy_c
Definition variables.h:944
PetscReal cs2
Definition variables.h:412
PetscInt jj1
Definition variables.h:418
PetscReal cr22
Definition variables.h:414
FlowDirection flowDirection
Definition variables.h:920
PetscMPIInt rank_xp
Definition variables.h:223
Vec Centz
Definition variables.h:1149
PetscBool runtimeMemoryLogEnabled
Enable the rank-reduced runtime memory log.
Definition variables.h:1051
char output_prefix[256]
Definition variables.h:769
PetscBool dimensionalize
Whether derived output leaves non-dimensional form, from global_operations.dimensionalize.
Definition variables.h:789
PetscInt n_P
Definition variables.h:493
char ** bcs_files
Definition variables.h:958
PetscReal * x_bp_o
Definition variables.h:454
struct BC_Param_s * next
Definition variables.h:363
PetscReal boundaryVelocityCorrection
Definition variables.h:974
PetscReal max_angle
Definition variables.h:943
PetscReal cr1
Definition variables.h:405
PetscReal Tow_wt
Definition variables.h:494
PetscReal acc[3]
Definition variables.h:521
PetscReal Min_X
Definition variables.h:1089
PetscReal min_pseudo_cfl
Definition variables.h:908
PetscReal * head_ang
Definition variables.h:534
PetscInt64 boundaryClampCount
Definition variables.h:274
char * key
Definition variables.h:361
PetscBool valid
Set once a dynamic update has populated this state.
Definition variables.h:660
PetscInt * nv1
Definition variables.h:451
PetscInt ksc
Definition variables.h:1092
PetscInt particlesLostLastStep
Definition variables.h:997
PetscReal Tow_wn
Definition variables.h:494
PetscInt KM
Definition variables.h:1088
Vec Distance
Definition variables.h:1156
PetscInt tiout
Definition variables.h:871
PetscReal xmin
Definition variables.h:537
char field_statistics_output_prefix[PETSC_MAX_PATH_LEN]
Analysis prefix for CSV summaries; VTK continues to use output_prefix.
Definition variables.h:787
UserMG usermg
Definition variables.h:1015
#define MAX_FIELD_LIST_LENGTH
Definition variables.h:745
PetscReal walltimeGuardMinSeconds
Definition variables.h:1041
char allowedFile[PETSC_MAX_PATH_LEN]
Definition variables.h:1016
PetscInt local_index
Definition variables.h:236
Vec * solutionConvergencePeriodicUcatRef
Definition variables.h:1122
PetscInt da_procs_y
Definition variables.h:956
PetscReal d_i
Definition variables.h:406
PetscReal L_ref
Definition variables.h:841
PetscInt Clsnbpt_j
Definition variables.h:495
PetscInt64 traversalStepsSum
Definition variables.h:269
PetscReal cs1
Definition variables.h:412
PetscInt n_subit
Definition variables.h:532
PetscInt wall_yplus_excursions
Consecutive diagnostic samples with the first cell outside the selected law's valid y+ range.
Definition variables.h:1159
PetscBool mom_last_converged
Definition variables.h:912
BCHandlerType
Defines the specific computational "strategy" for a boundary handler.
Definition variables.h:329
@ BC_HANDLER_PERIODIC_GEOMETRIC
Definition variables.h:340
@ BC_HANDLER_INLET_PARABOLIC
Definition variables.h:335
@ BC_HANDLER_INLET_CONSTANT_VELOCITY
Definition variables.h:334
@ BC_HANDLER_PERIODIC_DRIVEN_INITIAL_FLUX
Definition variables.h:343
@ BC_HANDLER_INTERFACE_OVERSET
Definition variables.h:341
@ BC_HANDLER_PERIODIC_DRIVEN_CONSTANT_FLUX
Definition variables.h:342
@ BC_HANDLER_WALL_MOVING
Definition variables.h:332
@ BC_HANDLER_INLET_PROFILE_FROM_FILE
Definition variables.h:336
@ BC_HANDLER_WALL_NOSLIP
Definition variables.h:331
@ BC_HANDLER_OUTLET_CONSERVATION
Definition variables.h:338
@ BC_HANDLER_FARFIELD_NONREFLECTING
Definition variables.h:337
@ BC_HANDLER_OUTLET_PRESSURE
Definition variables.h:339
@ BC_HANDLER_SYMMETRY_PLANE
Definition variables.h:333
@ BC_HANDLER_UNDEFINED
Definition variables.h:330
PetscReal M_z_real
Definition variables.h:510
PetscReal friction_velocity_sq
Sum of u_tau^2, for the RMS.
Definition variables.h:674
PetscReal psrc_x
Definition variables.h:945
PetscReal * ns_y
Definition variables.h:439
#define MAX_PIPELINE_LENGTH
Definition variables.h:744
PetscReal ren
Definition variables.h:906
PetscReal iem_constant
IEM mixing constant C_IEM in Omega = C_IEM Gamma / Delta^2 (default 2.0).
Definition variables.h:949
PetscReal Mdpdn_y_old
Definition variables.h:516
PetscReal F_z
Definition variables.h:505
BCHandlerType handler_type
Definition variables.h:393
DM post_swarm
Definition variables.h:1175
PetscReal * tau0
Definition variables.h:441
PetscReal M_z_rm3
Definition variables.h:512
Vec lUcont_rm1
Definition variables.h:1121
Vec Nu_Wall
Definition variables.h:1110
PetscReal * y_bp0
Definition variables.h:453
PetscInt zm_cell
Definition variables.h:231
PetscInt solutionConvergenceSamplesRecorded
Definition variables.h:927
PetscReal M_y_real
Definition variables.h:510
SurfElmtInfo * elmtinfo
Definition variables.h:524
Cmpnts max_coords
Maximum x, y, z coordinates of the bounding box.
Definition variables.h:199
PetscInt zs_cell
Definition variables.h:230
PetscReal poissonSourceImbalance
Definition variables.h:1026
PetscReal ct33
Definition variables.h:422
PetscBool drivenFluxTargetLatched
Definition variables.h:972
IBMVNodes * ibmv
Definition variables.h:1011
Cmpnts diffusivitygradient
Definition variables.h:217
PetscInt _this
Definition variables.h:1092
PetscReal uinr[101][1001]
Definition variables.h:1061
PetscReal L_o[3]
Definition variables.h:520
Vec lKEta
Definition variables.h:1153
char step_list_file[PETSC_MAX_PATH_LEN]
File listing the exact steps to process, one per line; empty uses the time controls.
Definition variables.h:763
PetscInt k1
Definition variables.h:404
PetscInt jj3
Definition variables.h:418
PetscInt * nv3
Definition variables.h:431
PetscInt64 searchPopulation
Definition variables.h:266
Cmpnts * uold
Definition variables.h:438
PetscInt reference[3]
Definition variables.h:798
char output_dir[PETSC_MAX_PATH_LEN]
Definition variables.h:881
PetscBool solutionConvergenceEnabled
Definition variables.h:923
PetscReal * solutionConvergenceMeanKEHistory
Definition variables.h:929
PetscInt kcell
Definition variables.h:496
PetscReal walltimeGuardLatestStepSeconds
Definition variables.h:1050
PetscReal dt
Definition variables.h:874
PetscReal ry
Definition variables.h:1093
PetscReal V
Definition variables.h:456
char runtimeMemoryLogFile[PETSC_MAX_PATH_LEN]
File name written under log_dir.
Definition variables.h:1052
PetscReal * st1
Definition variables.h:535
PetscBool runtimeMemoryLogStarted
True after rank 0 writes the log header.
Definition variables.h:1053
PetscInt * connectivity
Definition variables.h:824
PetscInt occupiedCellCount
Definition variables.h:1003
LESClipMode
Selects the admissible range imposed on the dynamic model coefficient.
Definition variables.h:617
@ LES_CLIP_CLIP_NEGATIVE
Definition variables.h:619
@ LES_CLIP_CLAMP
Definition variables.h:618
@ LES_CLIP_NONE
Definition variables.h:620
PetscInt StepsToRun
Definition variables.h:870
char profilingTimestepMode[32]
Definition variables.h:1034
PetscReal y
Definition variables.h:144
const PetscReal * global_farfield_outflow_sum
Definition variables.h:372
PetscInt k_periodic
Definition variables.h:953
PetscInt inletprofile
Definition variables.h:952
PetscReal * cent_z
Definition variables.h:457
PetscInt * offsets
Definition variables.h:825
PetscInt k33
Definition variables.h:413
Vec Ucat_nodal
Definition variables.h:1177
RankNeighbors neighbors
Definition variables.h:1091
PetscReal bulkVelocityCorrection
Definition variables.h:973
PetscReal * cent_z
Definition variables.h:440
PetscReal cdisy
Definition variables.h:906
PetscReal mom_atol
Definition variables.h:901
PetscReal Max_xbc
Definition variables.h:526
PetscReal * z_bp0
Definition variables.h:453
LESTestFilterKernel
Selects the discrete test-filter kernel used by the dynamic procedure.
Definition variables.h:591
@ LES_TEST_FILTER_SIMPSON_IK
Definition variables.h:593
@ LES_TEST_FILTER_VOLUME_WEIGHTED_BOX
Definition variables.h:592
PetscInt k3
Definition variables.h:404
PetscReal cr11
Definition variables.h:414
WallFunctionModel
Selects the wall model applied on WALL faces.
Definition variables.h:565
@ WALL_FUNCTION_CABOT
Definition variables.h:569
@ WALL_FUNCTION_LOG_LAW
Definition variables.h:567
@ WALL_FUNCTION_WERNER
Definition variables.h:568
@ WALL_FUNCTION_NONE
Definition variables.h:566
PetscInt jj22
Definition variables.h:421
PetscInt timeStep
Definition variables.h:761
PetscInt currentSettlementPass
Definition variables.h:278
PetscInt np
Definition variables.h:990
PetscReal cs22
Definition variables.h:417
Vec PostScalarNodal
Definition variables.h:1133
PetscBool fieldStatisticsEnabled
Definition variables.h:931
PetscInt jsc
Definition variables.h:1092
PetscReal x_bp_in[101][3270]
Definition variables.h:437
PetscReal max_cs
Ceiling on Cs under LES_CLIP_CLAMP.
Definition variables.h:640
PetscInt smode
Definition variables.h:420
LESClipMode clip_mode
Admissible range for the coefficient.
Definition variables.h:639
Cmpnts * qvec
Definition variables.h:443
PetscReal Max_Y
Definition variables.h:1089
PetscInt thislevel
Definition variables.h:730
PetscReal y_min
Definition variables.h:442
PetscBool no_pseudo_cfl_backtrack
Definition variables.h:910
PetscReal C_IEM
Definition variables.h:1007
Vec DiffusivityGradient
Definition variables.h:1117
Vec lJCsi
Definition variables.h:1152
char * value
Definition variables.h:362
PetscReal * x_com
Definition variables.h:534
PetscInt ccc
Definition variables.h:980
PetscReal * CCp
Definition variables.h:436
BCFace face_id
Definition variables.h:369
PetscReal q_r[4]
Definition variables.h:522
PetscReal M_y_rm2
Definition variables.h:511
PetscReal ratio
Definition variables.h:981
#define MAX_FILENAME_LENGTH
Definition variables.h:746
PetscInt Node
Definition variables.h:464
LESDiagnosticsState les_diagnostics
Pre-clipping statistics from the last dynamic update.
Definition variables.h:1157
PetscReal d_ss
Definition variables.h:423
PetscInt kk2
Definition variables.h:418
Vec Ucont
Definition variables.h:1113
PetscInt thislevel
Definition variables.h:737
PetscReal * z_bp
Definition variables.h:452
PetscInt StartStep
Definition variables.h:869
PetscReal Mdpdn_z_old
Definition variables.h:516
PetscReal red_vel
Definition variables.h:504
Cmpnts min_coords
Minimum x, y, z coordinates of the bounding box.
Definition variables.h:198
PetscBool OnlySetup
Definition variables.h:875
PetscInt rotatefsi
Refused at setup: immersed boundaries and moving bodies are not implemented.
Definition variables.h:891
PetscReal F_y_old
Definition variables.h:506
PetscInt cell
Definition variables.h:411
PetscReal M_y_rm3
Definition variables.h:512
Vec PostScalar
Definition variables.h:1133
Vec Ubcs
Physical Cartesian velocity at boundary faces. Full 3D array but only boundary-face entries are meani...
Definition variables.h:149
PetscReal * pres
Definition variables.h:441
MomentumSolverType
Enumerator to identify the implemented momentum solver strategies.
Definition variables.h:692
@ MOMENTUM_SOLVER_DUALTIME_PICARD_JAMESON_RK
Definition variables.h:694
@ MOMENTUM_SOLVER_EXPLICIT_RK
Definition variables.h:693
@ MOMENTUM_SOLVER_NEWTON_KRYLOV
Definition variables.h:695
@ MOMENTUM_SOLVER_DUALTIME_PICARD_RK4
Definition variables.h:697
PetscInt solutionConvergencePeriodSteps
Definition variables.h:925
PetscReal cdisz
Definition variables.h:906
Vec Qcrit
Definition variables.h:1178
PetscInt jcell
Definition variables.h:496
PetscReal S_realm1[6]
Definition variables.h:502
PetscReal * nt_x
Definition variables.h:439
PetscReal * y_bp_o
Definition variables.h:454
PetscScalar x
Definition variables.h:122
Cmpnts loc
Definition variables.h:211
PetscReal wall_distance_sum
Sum of the first-cell wall distance.
Definition variables.h:677
PetscReal y_max
Definition variables.h:442
PetscReal ct11
Definition variables.h:422
PetscReal x_c
Definition variables.h:458
PetscReal x_max
Definition variables.h:442
Vec CellScalarAtCorner
Definition variables.h:1126
PetscBool averaging_direction[3]
Averaged-over logical directions (xi, eta, zeta).
Definition variables.h:638
PetscReal wale_coefficient
Model constant C_w for WALE (Nicoud & Ducros 1999).
Definition variables.h:633
PetscInt64 reSearchCount
Definition variables.h:270
PetscReal dS[6]
Definition variables.h:523
char * current_io_directory
Definition variables.h:885
PetscReal MaxDiv
Definition variables.h:1027
PetscMPIInt destination_rank
Definition variables.h:215
Vec Centx
Definition variables.h:1149
PetscReal x
Definition variables.h:144
UserCtx * user
Definition variables.h:368
PetscReal atk
Definition variables.h:523
char grid_file[PETSC_MAX_PATH_LEN]
Definition variables.h:955
PetscReal * y_bp0
Definition variables.h:434
PetscReal * x_bp0
Definition variables.h:453
Vec lParticleCount
Definition variables.h:1171
PetscInt FoundAroundcell
Definition variables.h:497
PetscInt invicid
Definition variables.h:892
char ** allowedFuncs
Definition variables.h:1018
PetscInt xm_cell
Definition variables.h:231
char statistics_pipeline[1024]
e.g.
Definition variables.h:776
struct IBMListNode * next
Definition variables.h:482
Vec lUcont_o
Definition variables.h:1120
PetscInt * nv4
Definition variables.h:451
PetscInt64 bboxGuessFallbackCount
Definition variables.h:276
InterpolationMethod interpolationMethod
Definition variables.h:995
PetscReal * nf_x
Definition variables.h:432
PetscReal friction_velocity_min
Smallest u_tau this rank corrected.
Definition variables.h:675
RankCellInfo * RankCellInfoMap
Definition variables.h:1170
PetscReal ymin
Definition variables.h:537
PetscReal limited_volume
Fluid volume whose coefficient the clip modified.
Definition variables.h:658
PetscReal psrc_z
Point source location for PARTICLE_INIT_POINT_SOURCE.
Definition variables.h:945
PetscReal fluid_volume
Total fluid volume sampled.
Definition variables.h:659
const PetscReal * global_inflow_sum
Definition variables.h:370
PetscReal S_ang_r[6]
Definition variables.h:503
VTKFileType fileType
Definition variables.h:818
PetscReal * nt_y
Definition variables.h:439
Vec CellVectorAtCorner
Definition variables.h:1127
PetscReal * ns_z
Definition variables.h:439
PetscInt * nv3
Definition variables.h:451
PetscInt mg_poItr
Definition variables.h:902
PetscReal Min_ybc
Definition variables.h:526
PetscInt pbc[3]
Definition variables.h:518
char field_statistics_formats[1024]
Comma-separated formats: vtk for derived fields, csv for the convergence history.
Definition variables.h:785
PetscInt ym_cell
Definition variables.h:231
VerificationScalarConfig verificationScalar
Definition variables.h:940
PetscReal max_pseudo_cfl
Definition variables.h:908
PetscReal S_real[6]
Definition variables.h:502
PetscReal S_new[6]
Definition variables.h:502
PetscInt nk
Definition variables.h:408
Vec Ucat_o
Definition variables.h:1120
char output_fields_instantaneous[1024]
Definition variables.h:768
PetscInt MaxDivx
Definition variables.h:1028
PetscReal L_n[3]
Definition variables.h:520
UserCtx * user_c
Definition variables.h:1166
PetscInt j33
Definition variables.h:413
PetscInt jj33
Definition variables.h:421
PetscReal * nf_y
Definition variables.h:432
PetscInt poisson
Definition variables.h:903
PetscInt * nv1
Definition variables.h:431
Cmpnts * u
Definition variables.h:438
PetscScalar * data
Definition variables.h:808
PetscInt iimode
Definition variables.h:416
char profilingSelectedFuncsFile[PETSC_MAX_PATH_LEN]
Definition variables.h:1030
PetscInt MaxDivy
Definition variables.h:1028
ParticleLocationStatus location_status
Definition variables.h:214
char analysis_dir[PETSC_MAX_PATH_LEN]
Definition variables.h:883
char particleRestartMode[16]
Definition variables.h:996
PetscReal dS_o[6]
Definition variables.h:523
PetscReal * cent_x
Definition variables.h:440
char eulerianExt[8]
Definition variables.h:794
PetscReal F_x_real
Definition variables.h:507
PetscInt Need3rdPoint
Definition variables.h:497
PetscInt64 bboxGuessSuccessCount
Definition variables.h:275
PetscInt MaxDivz
Definition variables.h:1028
PetscInt Clsnbpt_k
Definition variables.h:495
PetscReal damp
Definition variables.h:504
BoundingBox * bboxlist
Definition variables.h:993
Vec lKZet
Definition variables.h:1153
struct PicurvWindow * fieldStatisticsWindows
Definition variables.h:933
PetscReal * x_midp
Definition variables.h:533
PetscReal * cfsum
Definition variables.h:436
PetscReal Max_zbc
Definition variables.h:526
PetscInt n_elmt
Definition variables.h:430
char log_dir[PETSC_MAX_PATH_LEN]
Definition variables.h:882
PetscReal Mdpdn_x
Definition variables.h:515
PetscInt MaxDivFlatArg
Definition variables.h:1028
Vec lNu_t
Definition variables.h:1156
PetscReal FluxInSum
Definition variables.h:959
PetscReal friction_velocity_max
Largest u_tau this rank corrected.
Definition variables.h:676
PetscReal * s3
Definition variables.h:535
PetscReal contraction_lm
Volume-weighted sum of L_ij M_ij over fluid cells.
Definition variables.h:655
PetscMPIInt rank_xm
Definition variables.h:223
PetscInt walltimeGuardCompletedSteps
Definition variables.h:1045
PetscInt64 maxParticlePassDepth
Definition variables.h:277
PetscReal rz
Definition variables.h:1093
char source_dir[PETSC_MAX_PATH_LEN]
Definition variables.h:756
PetscReal d_ii
Definition variables.h:415
Vec lCellScalarAtCorner
Definition variables.h:1126
PetscReal * ns_x
Definition variables.h:439
PetscReal z_c
Definition variables.h:458
Vec lJEta
Definition variables.h:1152
PetscInt j1
Definition variables.h:404
PetscReal M_z_rm2
Definition variables.h:511
PetscInt les_gradient_model
Add the Clark gradient (tensor-diffusivity) term to the viscous flux.
Definition variables.h:986
PetscReal CMz_c
Definition variables.h:944
Vec lGridSpace
Definition variables.h:1148
PetscInt64 maxTraversalSteps
Definition variables.h:271
PetscBool generate_grid
Definition variables.h:954
PetscInt thislevel
Definition variables.h:1165
char particle_pipeline[1024]
Definition variables.h:770
PetscInt * nv2
Definition variables.h:431
Cmpnts AnalyticalUniformVelocity
Definition variables.h:922
BC_Param * params
Definition variables.h:394
char eulerianSource[PETSC_MAX_PATH_LEN]
Definition variables.h:879
PetscReal * nf_z
Definition variables.h:432
PetscReal imp_stol
Definition variables.h:901
PetscReal cr2
Definition variables.h:405
PetscInt nAllowed
Definition variables.h:1019
PetscBool walltimeGuardEnabled
Definition variables.h:1037
PetscBool checkpointGeometryHashReady
Definition variables.h:887
PetscReal y_plus_sum
Sum of u_tau * y / nu over corrected cells.
Definition variables.h:678
PetscReal z_max
Definition variables.h:442
PetscReal wall_roughness_height
Definition variables.h:947
PetscBool useProfilingSelectedFuncsCfg
Definition variables.h:1031
PetscReal friction_velocity_sum
Sum of u_tau over corrected cells.
Definition variables.h:673
PetscInt walltimeGuardWarmupSteps
Definition variables.h:1039
ParticleInitializationType ParticleInitialization
Definition variables.h:994
PetscReal mom_dt_jameson_residual_norm_noise_allowance_factor
Definition variables.h:909
PetscScalar z
Definition variables.h:122
Vec pUcont
Definition variables.h:1121
InterpolationMethod
Selects the grid-to-particle interpolation method.
Definition variables.h:722
@ INTERP_CORNER_AVERAGED
Definition variables.h:724
@ INTERP_TRILINEAR
Definition variables.h:723
Vec lKCsi
Definition variables.h:1153
PetscReal ct3
Definition variables.h:419
Vec ParticleCount
Definition variables.h:1171
PetscReal * z_bp0
Definition variables.h:434
IBMInfo ibm_intp
Definition variables.h:481
PetscReal S_ang_n[6]
Definition variables.h:503
ScalingCtx scaling
Definition variables.h:946
PetscBool ksc
Definition variables.h:738
PetscInt diagnostics_cadence
Steps between diagnostic rows.
Definition variables.h:644
IBMInfo * fsi_intp
Definition variables.h:525
Vec Ucont_o
Definition variables.h:1120
struct node * next
Definition variables.h:465
PetscReal min_viscosity_ratio
Enforce nu + nu_t >= ratio * nu.
Definition variables.h:641
PetscInt index
Definition variables.h:475
PetscReal ct2
Definition variables.h:419
PetscInt JM
Definition variables.h:1088
PetscReal M_x_old
Definition variables.h:509
Vec lCenty
Definition variables.h:1150
PetscInt wallfunction
Enable wall functions on WALL faces.
Definition variables.h:985
PetscInt drivingForceStep
Definition variables.h:966
PetscInt ii11
Definition variables.h:421
PetscInt kk1
Definition variables.h:418
struct list List
Head of a generic C-style linked list.
PetscReal Flux_in
Definition variables.h:943
PetscReal x_min
Definition variables.h:442
Vec PostVectorNodal
Definition variables.h:1134
char name[64]
Definition variables.h:806
LESAveragingMode
Selects the set over which the Germano contractions are averaged.
Definition variables.h:604
@ LES_AVERAGING_LOCAL
Definition variables.h:605
@ LES_AVERAGING_GLOBAL
Definition variables.h:607
@ LES_AVERAGING_HOMOGENEOUS
Definition variables.h:606
PetscReal I_inv[3][3]
Definition variables.h:519
PetscReal drivenFluxMeasured
Definition variables.h:978
PetscInt k2
Definition variables.h:404
PetscBool runtimeMemoryLogHasPrevious
True after the first process-memory sample.
Definition variables.h:1054
PetscReal L_r[3]
Definition variables.h:520
PetscScalar * coords
Definition variables.h:821
PetscInt mglevels
Definition variables.h:736
char ** profilingSelectedFuncs
Definition variables.h:1032
PetscReal F_z_real
Definition variables.h:507
PetscReal cdisx
Definition variables.h:906
PetscReal F_x_old
Definition variables.h:506
PetscReal Min_Z
Definition variables.h:1089
const PetscReal * global_farfield_inflow_sum
Definition variables.h:371
PetscInt mglevels
Definition variables.h:902
PetscBool diagnostics_enabled
Append per-step coefficient statistics to the run log directory.
Definition variables.h:643
DM packer
Definition variables.h:731
PetscReal constant_cs
Fixed Cs for CONSTANT_SMAGORINSKY; unused by the dynamic model.
Definition variables.h:631
PetscInt num_bcs_files
Definition variables.h:957
PetscReal q[4]
Definition variables.h:522
PetscInt cells
Number of cells this rank corrected.
Definition variables.h:681
DM dm_swarm
Definition variables.h:992
PetscBool useCfg
Definition variables.h:1017
Vec Friction_Velocity
Definition variables.h:1106
PetscReal psrc_y
Definition variables.h:945
PetscInt solutionConvergenceWindowSteps
Definition variables.h:926
PetscInt central
Definition variables.h:904
char process_pipeline[1024]
Definition variables.h:767
PetscInt particle_output_freq
Definition variables.h:773
PetscReal Fluxsum
Definition variables.h:959
PetscReal ct1
Definition variables.h:419
Vec lJZet
Definition variables.h:1152
Vec Nvert_o
Definition variables.h:1120
PetscReal test_filter_width_ratio
Test-to-grid ratio per filtered direction; alpha is its square for the box, ratio^(4/3) for Simpson.
Definition variables.h:636
PetscReal xx
Definition variables.h:139
PetscReal a_c[3]
Definition variables.h:514
FlowDirection
Primary flow direction for streamwise IC and Poiseuille modes.
Definition variables.h:298
@ FLOW_DIR_NEG_ZETA
Definition variables.h:304
@ FLOW_DIR_NEG_ETA
Definition variables.h:302
@ FLOW_DIR_POS_ZETA
Definition variables.h:303
@ FLOW_DIR_POS_XI
Definition variables.h:299
@ FLOW_DIR_NEG_XI
Definition variables.h:300
@ FLOW_DIR_UNSET
Definition variables.h:305
@ FLOW_DIR_POS_ETA
Definition variables.h:301
char particle_fields[1024]
Definition variables.h:771
PetscReal pseudo_cfl_growth_factor
Definition variables.h:907
PetscBool outputParticles
Definition variables.h:764
PetscReal S_old[6]
Definition variables.h:502
PetscReal y_plus_max
Largest first-cell y+ this rank corrected.
Definition variables.h:679
PetscInt particlesLostCumulative
Definition variables.h:998
VTKFieldInfo point_data_fields[20]
Definition variables.h:822
PetscInt nProfilingSelectedFuncs
Definition variables.h:1033
PetscInt i33
Definition variables.h:413
Vec lCellVectorAtCorner
Definition variables.h:1127
PetscInt particlesMigratedLastStep
Definition variables.h:1002
PetscReal S_ang_rm1[6]
Definition variables.h:503
PetscReal Mdpdn_y
Definition variables.h:515
PetscReal * z_bp
Definition variables.h:433
PetscReal M_y_old
Definition variables.h:509
PetscInt particleRandomSeed
Base seed for every particle RNG stream (-particle_random_seed).
Definition variables.h:991
PetscInt n_time
Definition variables.h:532
char initialConditionDirectory[PETSC_MAX_PATH_LEN]
Definition variables.h:918
PetscReal * st2
Definition variables.h:535
PetscInt Clsnbpt_i
Definition variables.h:495
LESAveragingMode averaging_mode
Averaging set for the Germano contractions.
Definition variables.h:637
PetscReal cs33
Definition variables.h:417
struct PicurvWindowStorage * fieldStatisticsStorage
Definition variables.h:1136
PetscScalar y
Definition variables.h:127
Vec Psi_nodal
Definition variables.h:1180
char AnalyticalSolutionType[PETSC_MAX_PATH_LEN]
Definition variables.h:893
PetscInt da_procs_x
Definition variables.h:956
Vec lPostVector
Definition variables.h:1134
PetscReal walltimeGuardWarmupAverageSeconds
Definition variables.h:1047
InitialConditionMode
Selects the algorithm used to populate a fresh Eulerian velocity field.
Definition variables.h:177
@ IC_MODE_CONSTANT_CARTESIAN
Definition variables.h:179
@ IC_MODE_POISEUILLE
Definition variables.h:180
@ IC_MODE_CONSTANT_STREAMWISE
Definition variables.h:181
@ IC_MODE_FILE
Definition variables.h:182
@ IC_MODE_ZERO
Definition variables.h:178
PetscReal Max_X
Definition variables.h:1089
PetscInt particleConsoleOutputFreq
Definition variables.h:872
Cmpnts InitialConstantContra
Definition variables.h:919
Vec lCentx
Definition variables.h:1150
PetscMPIInt rank_zp
Definition variables.h:225
Vec Ucont_rm1
Definition variables.h:1121
SearchMetricsState searchMetrics
Definition variables.h:1005
PetscReal zmax
Definition variables.h:537
PetscReal Min_Y
Definition variables.h:1089
PetscInt i_periodic
Definition variables.h:953
PetscReal diffusivity
Definition variables.h:216
PetscReal mom_resid_rtol
Definition variables.h:901
char checkpointGeometrySHA256[65]
Definition variables.h:886
Vec lUcont
Definition variables.h:1113
PetscReal runtimeMemoryLogPreviousProcessMB
Previous local process memory sample in MB.
Definition variables.h:1055
PetscBool jsc
Definition variables.h:738
PetscInt step
Definition variables.h:867
Vec Diffusivity
Definition variables.h:1116
PetscReal * Bvel_u
Definition variables.h:441
PetscReal M_y
Definition variables.h:508
PetscReal Mdpdn_z
Definition variables.h:515
PetscReal psi
Definition variables.h:218
PetscReal walltimeGuardEWMASeconds
Definition variables.h:1049
PetscReal AreaOutSum
Definition variables.h:979
PetscReal * x_bp
Definition variables.h:433
PetscReal vreman_coefficient
Model constant c for VREMAN (Vreman 2004: 2.5 Cs^2).
Definition variables.h:632
PetscInt mom_max_pseudo_steps
Definition variables.h:900
PetscReal r[101]
Definition variables.h:1061
PetscRandom BrownianMotionRNG
Definition variables.h:1006
IBMNodes * ibm
Definition variables.h:1162
Vec lICsi
Definition variables.h:1151
PetscReal drivenFluxArea
Definition variables.h:978
PetscInt GridOrientation
Definition variables.h:1092
PetscInt mz
Definition variables.h:819
DMDALocalInfo info
Definition variables.h:1086
Vec dUcont
Definition variables.h:1121
PetscInt ni
Definition variables.h:408
BCPriorityType
Definition variables.h:347
@ BC_PRIORITY_OUTLET
Definition variables.h:352
@ BC_PRIORITY_FARFIELD
Definition variables.h:350
@ BC_PRIORITY_UNDEFINED
Definition variables.h:348
@ BC_PRIORITY_WALL
Definition variables.h:351
@ BC_PRIORITY_INLET
Definition variables.h:349
Vec lUcat
Definition variables.h:1113
PostProcessParams * pps
Definition variables.h:1058
PetscInt ii3
Definition variables.h:418
PetscInt migrationPassesLastStep
Definition variables.h:1001
PetscScalar y
Definition variables.h:122
InitialConditionField
Selects the authoritative velocity representation in a staged file IC.
Definition variables.h:186
@ IC_FIELD_UCONT
Definition variables.h:188
@ IC_FIELD_UCAT
Definition variables.h:187
PetscInt ii2
Definition variables.h:418
PetscMPIInt size
Definition variables.h:863
PetscInt kk3
Definition variables.h:418
PetscScalar x
Definition variables.h:127
PetscReal Tow_ws
Definition variables.h:494
ExecutionMode
Defines the execution mode of the application.
Definition variables.h:831
@ EXEC_MODE_UNKNOWN
Definition variables.h:834
@ EXEC_MODE_SOLVER
Definition variables.h:832
@ EXEC_MODE_POSTPROCESSOR
Definition variables.h:833
PetscInt IM
Definition variables.h:1088
PetscInt * nv2
Definition variables.h:451
char _io_context_buffer[PETSC_MAX_PATH_LEN]
Definition variables.h:884
PetscInt j22
Definition variables.h:413
PetscInt field_statistics_source_step
Committed step supplying the state; negative means the step being processed.
Definition variables.h:791
PetscReal walltimeGuardLimitSeconds
Definition variables.h:1044
Cmpnts periodic_translation[3]
Definition variables.h:1095
Cmpnts weights
Definition variables.h:213
Face
Enumerates the six faces of a cubic cell for distance calculations.
Definition variables.h:172
@ TOP
Definition variables.h:173
@ FRONT
Definition variables.h:173
@ BOTTOM
Definition variables.h:173
@ BACK
Definition variables.h:173
@ LEFT
Definition variables.h:173
@ NUM_FACES
Definition variables.h:173
@ RIGHT
Definition variables.h:173
PetscReal M_x_real
Definition variables.h:510
char particleExt[8]
Definition variables.h:795
Vec PostVector
Definition variables.h:1134
PetscReal * y_bp
Definition variables.h:433
PetscInt kk33
Definition variables.h:421
PetscReal A_tot
Definition variables.h:505
PetscBool ps_ksp_pic_monitor_true_residual
Definition variables.h:915
Cmpnts * uold
Definition variables.h:455
PetscInt n_v
Definition variables.h:450
PetscReal walltimeGuardEstimatorAlpha
Definition variables.h:1042
PetscInt kk11
Definition variables.h:421
PetscInt les
Active LES closure; an LESModelType value.
Definition variables.h:984
PetscBool isc
Definition variables.h:738
char field_statistics_windows[1024]
Comma-separated window names to derive; empty disables the pipeline.
Definition variables.h:781
char field_statistics_outputs[1024]
Comma-separated outputs: mean, reynolds_stress, rms, tke, flux.
Definition variables.h:783
Vec lQcrit
Cell-centred Q-criterion and its ghosted copy for nodal averaging.
Definition variables.h:1178
PetscReal cs3
Definition variables.h:412
Vec Nvert
Definition variables.h:1113
MGCtx * mgctx
Definition variables.h:739
struct list_node Node_List
A generic C-style linked list node for indices.
SolutionConvergenceMode
Selects the runtime solution-convergence diagnostics mode.
Definition variables.h:701
@ SOLUTION_CONVERGENCE_TRANSIENT
Definition variables.h:705
@ SOLUTION_CONVERGENCE_PERIODIC_DETERMINISTIC
Definition variables.h:703
@ SOLUTION_CONVERGENCE_STATISTICAL_STEADY
Definition variables.h:704
@ SOLUTION_CONVERGENCE_STEADY_DETERMINISTIC
Definition variables.h:702
PetscBool periodic_translation_valid[3]
Definition variables.h:1096
PetscInt mg_preItr
Definition variables.h:902
Vec lDiffusivity
Definition variables.h:1116
Vec lNvert_o
Definition variables.h:1120
PetscReal mom_ratio_ema_alpha
Definition variables.h:911
BCType mathematical_type
Definition variables.h:392
PetscReal * s1
Definition variables.h:535
Vec Centy
Definition variables.h:1149
SolutionConvergenceMode solutionConvergenceMode
Definition variables.h:924
PetscReal P_ref
Definition variables.h:844
Cmpnts * u
Definition variables.h:455
PetscReal rx
Definition variables.h:1093
PetscReal Power
Definition variables.h:517
PetscViewer logviewer
Definition variables.h:877
PetscReal * z_bp_o
Definition variables.h:435
PetscReal yz
Definition variables.h:139
PetscReal * dV0
Definition variables.h:456
Vec lCentz
Definition variables.h:1150
PetscReal Min_xbc
Definition variables.h:526
PetscInt n_midp
Definition variables.h:532
PetscReal particlesLostScalarLastStep
Sum of Psi over the particles removed this step.
Definition variables.h:999
PetscReal * Bvel_w
Definition variables.h:441
PetscReal alpha[3]
Definition variables.h:521
PetscInt64 searchAttempts
Definition variables.h:265
InitialConditionField initialConditionField
Definition variables.h:917
ExecutionMode exec_mode
Definition variables.h:878
PetscReal ct22
Definition variables.h:422
PetscInt startTime
Definition variables.h:759
PetscReal zz
Definition variables.h:139
PetscReal rho_ref
Definition variables.h:843
PetscInt nj
Definition variables.h:408
PetscInt64 tieBreakCount
Definition variables.h:273
PetscReal mom_resid_atol
Definition variables.h:901
PetscReal backscatter_volume
Fluid volume whose raw coefficient was negative.
Definition variables.h:657
BoundingBox bbox
Definition variables.h:1090
PetscBool restartHistoryAvailable
Definition variables.h:888
PetscInt my
Definition variables.h:819
PetscReal ti
Definition variables.h:868
PetscReal walltimeGuardMultiplier
Definition variables.h:1040
PetscReal cr3
Definition variables.h:405
PetscReal Max_Z
Definition variables.h:1089
PetscInt rotateframe
moveframe/rotateframe are refused at setup.
Definition variables.h:892
PetscInt64 PID
Definition variables.h:209
PetscReal U_ref
Definition variables.h:842
IBMNodes * ibm
Definition variables.h:1010
PetscReal * x_bp
Definition variables.h:452
PetscReal AreaInSum
Definition variables.h:979
PetscInt mx
Definition variables.h:819
PetscInt k11
Definition variables.h:413
MomentumSolverType mom_solver_type
Definition variables.h:899
IBMListNode * head
Definition variables.h:487
PetscReal ymax
Definition variables.h:537
PetscInt immersed
Definition variables.h:891
PetscReal * x_bp0
Definition variables.h:434
PetscInt64 maxTraversalFailCount
Definition variables.h:272
char PostprocessingControlFile[PETSC_MAX_PATH_LEN]
Definition variables.h:1057
char restart_dir[PETSC_MAX_PATH_LEN]
Definition variables.h:880
node * head
Definition variables.h:470
VerificationDiffusivityConfig verificationDiffusivity
Definition variables.h:939
PetscReal * y_bp_o
Definition variables.h:435
PetscReal y_c
Definition variables.h:513
PetscReal Min_zbc
Definition variables.h:526
PetscReal z_min
Definition variables.h:442
PetscReal walltimeGuardJobStartEpochSeconds
Definition variables.h:1043
PetscReal pseudo_cfl
Definition variables.h:906
PetscReal x_c
Definition variables.h:513
PetscReal * nt_z
Definition variables.h:439
PetscReal M_z_old
Definition variables.h:509
#define MAX_VTK_FIELD_NAME_LENGTH
Maximum length for VTK field names.
Definition variables.h:749
PetscReal cs11
Definition variables.h:417
LESFilterWidthModel
Selects how a cell's grid filter width is derived from its metrics.
Definition variables.h:579
@ LES_FILTER_WIDTH_SCOTTI
Definition variables.h:583
@ LES_FILTER_WIDTH_GEOMETRIC_MEAN
Definition variables.h:581
@ LES_FILTER_WIDTH_CUBE_ROOT_VOLUME
Definition variables.h:580
@ LES_FILTER_WIDTH_MAX_EDGE
Definition variables.h:582
PetscInt LoggingFrequency
Definition variables.h:1020
PetscReal z_c
Definition variables.h:513
PetscReal xz
Definition variables.h:139
Cmpnts vertices[8]
Coordinates of the eight vertices of the cell.
Definition variables.h:204
PetscInt ii33
Definition variables.h:421
PetscReal F_y
Definition variables.h:505
PetscReal CMx_c
Definition variables.h:944
PetscReal drivingForceMagnitude
Definition variables.h:961
PetscInt CV_ze
Definition variables.h:527
PetscReal atk_o
Definition variables.h:523
PetscReal particleLoadImbalance
Definition variables.h:1004
Cmpnts * urm1
Definition variables.h:438
PetscInt i2
Definition variables.h:404
PetscReal M_x
Definition variables.h:508
PetscReal * tauN
Definition variables.h:441
struct ParticleFieldPlan * particleFieldPlan
Configured initial particle-field values, or NULL.
Definition variables.h:1000
PetscBool fieldStatisticsContinue
Definition variables.h:938
PetscReal xy
Definition variables.h:139
Vec Uch
Characteristic velocity for boundary conditions.
Definition variables.h:150
BCFace
Identifies the six logical faces of a structured computational block.
Definition variables.h:287
@ BC_FACE_NEG_X
Definition variables.h:288
@ BC_FACE_POS_Z
Definition variables.h:290
@ BC_FACE_POS_Y
Definition variables.h:289
@ BC_FACE_NEG_Z
Definition variables.h:290
@ BC_FACE_POS_X
Definition variables.h:288
@ BC_FACE_NEG_Y
Definition variables.h:289
PetscInt i11
Definition variables.h:413
PetscInt j_periodic
Definition variables.h:953
WallModelDiagnosticsState wall_diagnostics
Near-wall statistics from the last wall-model pass.
Definition variables.h:1158
BoundaryCondition * handler
Definition variables.h:395
PetscReal * y_midp
Definition variables.h:533
PetscInt n_v
Definition variables.h:430
VTKFileType
Enumerates the type of VTK file to be written.
Definition variables.h:812
@ VTK_POLYDATA
Definition variables.h:814
@ VTK_STRUCTURED
Definition variables.h:813
PetscInt nbnumber
Definition variables.h:429
PetscReal * cf
Definition variables.h:436
FSInfo * fsi
Definition variables.h:1012
Provides execution context for a boundary condition handler.
Definition variables.h:367
Boundary condition data used by the BC pipeline and ghost cell machinery.
Definition variables.h:148
A node in a linked list for storing key-value parameters from the bcs.dat file.
Definition variables.h:360
Holds the complete configuration for one of the six boundary faces.
Definition variables.h:390
Defines a 3D axis-aligned bounding box.
Definition variables.h:197
Defines the vertices of a single hexahedral grid cell.
Definition variables.h:203
A 3D point or vector with PetscScalar components.
Definition variables.h:121
A 2D point or vector with PetscScalar components.
Definition variables.h:126
A 2D vector of PETSc real numbers (for geometry/coordinates).
Definition variables.h:143
Defines prescribed body motion using splines.
Definition variables.h:531
Holds all data related to the state and motion of a body in FSI.
Definition variables.h:501
Holds interpolation and distance information for a single IBM point.
Definition variables.h:403
Head of a linked list for IBM data.
Definition variables.h:486
A linked list node containing IBM interpolation info.
Definition variables.h:480
Represents a collection of nodes forming a surface for the IBM.
Definition variables.h:428
Represents a collection of nodes forming a volume for the IBM.
Definition variables.h:448
Every user-selectable parameter of the LES closure.
Definition variables.h:629
Pre-clipping volume statistics captured by one dynamic-coefficient update.
Definition variables.h:654
Context for Multigrid operations.
Definition variables.h:728
Information needed to migrate a single particle between MPI ranks.
Definition variables.h:235
Defines a particle's core properties for Lagrangian tracking.
Definition variables.h:208
Holds all configuration parameters for a post-processing run.
Definition variables.h:754
A lean struct to hold the global cell ownership range for a single MPI rank.
Definition variables.h:229
Stores the MPI ranks of neighboring subdomains.
Definition variables.h:222
Aggregated per-timestep search instrumentation counters.
Definition variables.h:264
The master context for the entire simulation.
Definition variables.h:859
Information about a surface element for FSI calculations.
Definition variables.h:491
A symmetric second-order tensor stored by its six independent components.
Definition variables.h:138
User-defined context containing data specific to a single computational grid level.
Definition variables.h:1074
User-level context for managing the entire multigrid hierarchy.
Definition variables.h:735
Stores all necessary information for a single data array in a VTK file.
Definition variables.h:805
Verification-only analytical diffusivity override settings.
Definition variables.h:241
Verification-only analytical scalar override settings.
Definition variables.h:250
Near-wall statistics captured by one wall-model pass.
Definition variables.h:672
Head of a generic C-style linked list.
Definition variables.h:469
A generic C-style linked list node for indices.
Definition variables.h:474
A generic C-style linked list node for integers.
Definition variables.h:463