pub struct BoundaryPatch {
pub name: String,
pub start: usize,
pub size: usize,
pub kind: PatchKind,
pub cyclic_partner: Option<usize>,
}Expand description
Boundary patch descriptor: topology + kind.
Face indices in [start, start + size) within the global face array.
All boundary faces appear after the internal faces in OpenFOAM ordering:
start >= n_internal_faces for every patch.
Fields§
§name: StringPatch name (e.g. "left", "wall", "inlet").
start: usizeIndex of the first face of this patch in the global face list.
size: usizeNumber of faces in this patch.
kind: PatchKindTopological type of the patch (wall, symmetry, empty, …).
cyclic_partner: Option<usize>For a PatchKind::Cyclic patch, the patch index of its matching
partner (the other half of the periodic pair); None for every
non-cyclic patch, and None for a cyclic patch whose partner has not yet
been resolved (e.g. one read from a polyMesh whose neighbourPatch
ordering is not parsed yet).
Mirrors Foam::cyclicPolyPatch::neighbPatchID()
(src/meshTools/.../cyclic/cyclicPolyPatch.H). Local face i of this
patch corresponds to local face i of the partner patch (OpenFOAM
half0/half1 ordering), so the two halves must have equal size.
Implementations§
Source§impl BoundaryPatch
impl BoundaryPatch
Sourcepub fn new(
name: impl Into<String>,
start: usize,
size: usize,
kind: PatchKind,
) -> Self
pub fn new( name: impl Into<String>, start: usize, size: usize, kind: PatchKind, ) -> Self
Construct a patch spanning faces [start, start + size) of the global
face array, with the given name and PatchKind.
The cyclic_partner is left None; for a
periodic pair use new_cyclic instead so the two
halves know each other.
Sourcepub fn new_cyclic(
name: impl Into<String>,
start: usize,
size: usize,
partner_patch: usize,
) -> Self
pub fn new_cyclic( name: impl Into<String>, start: usize, size: usize, partner_patch: usize, ) -> Self
Construct a PatchKind::Cyclic (periodic) patch spanning faces
[start, start + size) whose matching partner is patch index
partner_patch.
Local face i of this patch is paired with local face i of the partner
(OpenFOAM half0/half1 ordering); the partner patch must have the same
size and must name this patch back as its partner. The
FvMeshBuilder validates that symmetry and derives the across-seam
cell couplings (CyclicCoupling) at build time.
OpenFOAM: cyclicPolyPatch (src/meshTools/.../cyclic/cyclicPolyPatch.H).
Sourcepub fn contains_face(&self, f: usize) -> bool
pub fn contains_face(&self, f: usize) -> bool
True if global face index f belongs to this patch.