11#ifndef FIELD_CATALOG_H
12#define FIELD_CATALOG_H
158#define FIELD_DIM_DIMENSIONLESS {FIELD_DIMENSION_FIXED, 0, 0, 0}
159#define FIELD_DIM_LENGTH {FIELD_DIMENSION_FIXED, 1, 0, 0}
160#define FIELD_DIM_AREA {FIELD_DIMENSION_FIXED, 2, 0, 0}
161#define FIELD_DIM_INVERSE_VOLUME {FIELD_DIMENSION_FIXED, -3, 0, 0}
162#define FIELD_DIM_TIME {FIELD_DIMENSION_FIXED, 1, -1, 0}
163#define FIELD_DIM_VELOCITY {FIELD_DIMENSION_FIXED, 0, 1, 0}
164#define FIELD_DIM_VOLUME_FLUX {FIELD_DIMENSION_FIXED, 2, 1, 0}
165#define FIELD_DIM_DIFFUSIVITY {FIELD_DIMENSION_FIXED, 1, 1, 0}
166#define FIELD_DIM_PRESSURE {FIELD_DIMENSION_FIXED, 0, 2, 1}
167#define FIELD_DIM_VELOCITY_SQUARED {FIELD_DIMENSION_FIXED, 0, 2, 0}
168#define FIELD_DIM_INVERSE_TIME_SQUARED {FIELD_DIMENSION_FIXED, -2, 2, 0}
169#define FIELD_DIM_NOT_A_QUANTITY {FIELD_DIMENSION_NOT_A_QUANTITY, 0, 0, 0}
170#define FIELD_DIM_FROM_SOURCE {FIELD_DIMENSION_FROM_SOURCE, 0, 0, 0}
PetscErrorCode FieldIdFromName(const char *field_name, FieldId *field_id)
Resolve a user-facing field name once into its typed identity.
FieldDimensionKind
How a field's physical dimension is known.
@ FIELD_DIMENSION_FROM_SOURCE
Staging storage: carries whatever was written into it.
@ FIELD_DIMENSION_NOT_A_QUANTITY
Integer bookkeeping: identities, flags, ranks.
@ FIELD_DIMENSION_FIXED
The exponents are the field's dimension.
PetscErrorCode FieldDimensionReferenceScale(const ScalingCtx *scaling, FieldDimension dimension, PetscReal *scale)
Return the factor that turns a solver value of one dimension into physical units.
FieldCapabilities
Operations supported by a catalog entry.
@ FIELD_CAPABILITY_CHECKPOINT
@ FIELD_CAPABILITY_PARTICLE_SAMPLED
Defined only where a cell holds particles; elsewhere the stored value is a placeholder,...
@ FIELD_CAPABILITY_GHOST_UPDATE
@ FIELD_CAPABILITY_PERIODIC_GEOMETRY_SHIFT
@ FIELD_CAPABILITY_PERIODIC_CELL_SYNC
@ FIELD_CAPABILITY_PERIODIC_FACE_SYNC
@ FIELD_CAPABILITY_PERIODIC_STAGGERED_SYNC
FieldAvailability
Conditions controlling when a field can have runtime storage.
@ FIELD_AVAILABILITY_WALL_MODEL
@ FIELD_AVAILABILITY_FINEST_LEVEL
@ FIELD_AVAILABILITY_PARTICLES
@ FIELD_AVAILABILITY_TURBULENCE
@ FIELD_AVAILABILITY_LES_DYNAMIC
@ FIELD_AVAILABILITY_ALWAYS
@ FIELD_AVAILABILITY_INFLOW_FLUCTUATION
FieldSyncClass
Extra repair required after the normal PETSc global-to-local scatter.
@ FIELD_SYNC_COMPONENT_STAGGERED
unsigned int capabilities
const FieldDescriptor * descriptor
const char * FieldCanonicalName(FieldId field_id)
Return the canonical printable name for an ID.
unsigned int availability
PetscErrorCode FieldGetView(UserCtx *user, FieldId field_id, FieldView *view)
Resolve the existing DM and global/local vectors for one field.
PetscErrorCode FieldTryIdFromName(const char *field_name, FieldId *field_id, PetscBool *found)
Look a name up without treating an unknown name as an error.
FieldLayout
Logical storage topology of a field.
@ FIELD_LAYOUT_CELL_CENTERED
@ FIELD_LAYOUT_COMPONENT_STAGGERED
@ FIELD_LAYOUT_NODE_CENTERED
const char * canonical_name
const char * FieldLayoutName(FieldLayout layout)
Return a stable printable label for a field layout.
FieldSyncClass sync_class
PetscErrorCode FieldDimensionLabel(FieldDimension dimension, char *label, size_t length)
Write a printable form of a dimension, such as L^2 U or dimensionless.
PetscErrorCode FieldGetDescriptor(FieldId field_id, const FieldDescriptor **descriptor)
Return immutable metadata for a valid field identifier.
FieldDMKind
UserCtx DM family used to store a field.
FieldId
Compile-time identity for a catalogued Eulerian field.
@ FIELD_ID_DUAL_PLANE_CENTROID_I
@ FIELD_ID_PLANE_NORMAL_J
@ FIELD_ID_PLANE_CENTROID_I
@ FIELD_ID_CELL_SCALAR_AT_CORNER
@ FIELD_ID_PLANE_NORMAL_K
@ FIELD_ID_PLANE_CENTROID_K
@ FIELD_ID_PLANE_NORMAL_I
@ FIELD_ID_CELL_VECTOR_AT_CORNER
@ FIELD_ID_DUAL_PLANE_CENTROID_J
@ FIELD_ID_INFLOW_FLUCTUATION
@ FIELD_ID_DUAL_PLANE_CENTROID_K
@ FIELD_ID_DIFFUSIVITY_GRADIENT
@ FIELD_ID_PLANE_CENTROID_J
@ FIELD_ID_DUAL_PLANE_NORMAL_I
@ FIELD_ID_DUAL_PLANE_NORMAL_J
@ FIELD_ID_DUAL_PLANE_NORMAL_K
@ FIELD_ID_PARTICLE_COUNT
@ FIELD_ID_SEARCH_CELL_SIZE
Immutable metadata for one field identity.
Physical dimension as exponents of the reference length, velocity, and density.
Non-owning runtime objects resolved for one field and UserCtx.
Main header file for a complex fluid dynamics solver.
User-defined context containing data specific to a single computational grid level.