PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
Loading...
Searching...
No Matches
particle_field_catalog.h
Go to the documentation of this file.
1/**
2 * @file particle_field_catalog.h
3 * @brief Typed identities and metadata for persistent solver-particle fields.
4 *
5 * Particle fields intentionally use a catalog separate from Eulerian fields.
6 * They are registered on a DMSwarm, may use integer storage, and do not own a
7 * global/local Vec pair in UserCtx. Text is translated only where PETSc or a
8 * user/file interface requires a registered DMSwarm name.
9 */
10
11#ifndef PARTICLE_FIELD_CATALOG_H
12#define PARTICLE_FIELD_CATALOG_H
13
14#include <petscdmswarm.h>
15
16#include "field_catalog.h"
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22/** @brief Compile-time identity for a persistent solver-particle field. */
37
38/** @brief Owner of a field's DMSwarm registration. */
43
44/** @brief Operations supported by a particle-field catalog entry. */
51
52/** @brief Immutable metadata for one persistent particle field. */
65
66/**
67 * @brief Return immutable metadata for a valid particle field ID.
68 * @param[in] field_id Typed particle-field identity.
69 * @param[out] descriptor Catalog-owned immutable descriptor.
70 * @return Zero on success; a PETSc argument error for invalid input.
71 */
72PetscErrorCode ParticleFieldGetDescriptor(ParticleFieldId field_id,
73 const ParticleFieldDescriptor **descriptor);
74
75/**
76 * @brief Resolve a canonical name or registered alias at a text-ingress boundary.
77 * @param[in] field_name Canonical particle name or registered alias.
78 * @param[out] field_id Resolved typed identity.
79 * @return Zero on success; `PETSC_ERR_ARG_UNKNOWN_TYPE` for unknown text.
80 */
81PetscErrorCode ParticleFieldIdFromName(const char *field_name, ParticleFieldId *field_id);
82
83/**
84 * @brief Return the canonical PETSc DMSwarm name for an ID.
85 * @param[in] field_id Typed particle-field identity.
86 * @return Catalog-owned canonical name or `InvalidParticleField`.
87 */
88const char *ParticleFieldName(ParticleFieldId field_id);
89
90#ifdef __cplusplus
91}
92#endif
93
94#endif /* PARTICLE_FIELD_CATALOG_H */
Authoritative identities and storage metadata for persistent Eulerian fields.
FieldId
Compile-time identity for a catalogued Eulerian field.
const char * ParticleFieldName(ParticleFieldId field_id)
Return the canonical PETSc DMSwarm name for an ID.
ParticleFieldId
Compile-time identity for a persistent solver-particle field.
@ PARTICLE_FIELD_ID_LOCATION_STATUS
@ PARTICLE_FIELD_ID_WEIGHT
@ PARTICLE_FIELD_ID_POSITION
@ PARTICLE_FIELD_ID_PID
@ PARTICLE_FIELD_ID_CELL_ID
@ PARTICLE_FIELD_ID_PSI
@ PARTICLE_FIELD_ID_RANK
@ PARTICLE_FIELD_ID_DIFFUSIVITY_GRADIENT
@ PARTICLE_FIELD_ID_COUNT
@ PARTICLE_FIELD_ID_DIFFUSIVITY
@ PARTICLE_FIELD_ID_INVALID
@ PARTICLE_FIELD_ID_VELOCITY
ParticleFieldRegistration registration
PetscErrorCode ParticleFieldIdFromName(const char *field_name, ParticleFieldId *field_id)
Resolve a canonical name or registered alias at a text-ingress boundary.
ParticleFieldCapabilities
Operations supported by a particle-field catalog entry.
@ PARTICLE_FIELD_CAPABILITY_MODEL_UPDATE
@ PARTICLE_FIELD_CAPABILITY_DEFAULT_INITIALIZE
@ PARTICLE_FIELD_CAPABILITY_EULERIAN_SCATTER
@ PARTICLE_FIELD_CAPABILITY_NONE
ParticleFieldRegistration
Owner of a field's DMSwarm registration.
@ PARTICLE_FIELD_REGISTRATION_PETSC
@ PARTICLE_FIELD_REGISTRATION_PICURV
PetscErrorCode ParticleFieldGetDescriptor(ParticleFieldId field_id, const ParticleFieldDescriptor **descriptor)
Return immutable metadata for a valid particle field ID.
Immutable metadata for one persistent particle field.