chombo-discharge
Loading...
Searching...
No Matches
Namespaces | Functions | Variables
CD_PolyhedralEBUtils.H File Reference

Declaration of the cell topology and polygon geometry the polyhedral cut cells are built from. More...

#include <RealVect.H>
#include <CD_CutCellSurface.H>
#include <CD_NamespaceHeader.H>
#include <CD_NamespaceFooter.H>
#include <CD_PolyhedralEBUtilsImplem.H>
Include dependency graph for CD_PolyhedralEBUtils.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  PolyhedralEB::detail
 Cell topology and polygon geometry the cut cell classes are assembled from.
 

Functions

bool PolyhedralEB::isFluid (const Real a_value) noexcept
 Which side of the interface a value lies on.
 
int PolyhedralEB::detail::edgeDirection (const int a_edge) noexcept
 Direction a cell edge runs along.
 
void PolyhedralEB::detail::edgeOrigin (const int a_edge, int a_offset[SpaceDim]) noexcept
 Corner offsets of a cell edge's low end.
 
void PolyhedralEB::detail::edgeCorners (const int a_edge, int &a_lo, int &a_hi) noexcept
 The corners a cell edge joins, low end first.
 
RealVect PolyhedralEB::detail::cornerPosition (const int a_corner) noexcept
 Position of a cell corner in the cell's own frame.
 
void PolyhedralEB::detail::faceCorners (const int a_dir, const int a_side, int a_corner[1<<(SpaceDim - 1)]) noexcept
 The corners of a cell face, in circuit order around the face.
 
int PolyhedralEB::detail::edgeIndex (const int a_dir, const int a_offset[SpaceDim]) noexcept
 Index of the edge running along a_dir whose low corner has the given offsets.
 
RealVect PolyhedralEB::detail::crossingPosition (const CutCellSurface &a_surface, const int a_edge, const Real a_tolerance) noexcept
 Position of an edge crossing in the cell's own frame.
 
void PolyhedralEB::detail::faceEdges (const int a_dir, const int a_side, int a_edge[4]) noexcept
 The edges of a cell face, edge i joining face corners i and i+1.
 
void PolyhedralEB::detail::polygonMoments (const RealVect *a_vertex, const int a_num, Real &a_area, RealVect &a_vector, RealVect &a_centroid) noexcept
 Area vector, area and centroid of a planar polygon given in circuit order.
 
int PolyhedralEB::detail::facePairs (const int a_dir, const int a_side, const CutCellSurface &a_surface, int a_pair[2][2]) noexcept
 The chords on a cell face, each an unordered pair of edge indices.
 
int PolyhedralEB::detail::crossingLoops (const CutCellSurface &a_surface, int a_loop[CutCellSurface::s_numEdges], int a_start[CutCellSurface::s_numEdges+1]) noexcept
 Order the crossings into closed loops, or fail if they do not form clean cycles.
 
bool PolyhedralEB::detail::sameVertex (const RealVect &a_a, const RealVect &a_b) noexcept
 Whether two positions are the same vertex.
 

Variables

constexpr int PolyhedralEB::detail::s_transverse [3][2] = {{1, 2}, {0, 2}, {0, 1}}
 The two directions transverse to each coordinate direction, in increasing order.
 
constexpr Real PolyhedralEB::detail::s_weldTolerance = 1.0E-10
 Distance within which two vertices are taken to be the same one.
 

Detailed Description

Declaration of the cell topology and polygon geometry the polyhedral cut cells are built from.

Author
Robert Marskar

Function Documentation

◆ isFluid()

bool PolyhedralEB::isFluid ( const Real  a_value)
inlinenoexcept

Which side of the interface a value lies on.

One predicate for corners and crossings alike: negative is fluid, and anything else, an exact zero of either sign included, is solid. GeometryShop reads an exact zero by its sign bit, which a negated distance function turns over, and then rescues the regular cell that leaves beside a covered one by looking at its neighbour. A cell here is classified from its own corners alone, so the zero has to fall on one side by rule: on the solid side, so that a fluid cell whose face lies in the interface is cut with that face as its interface, and the cell on the other side is covered.

Parameters
[in]a_valueImplicit function value.
Returns
True on the fluid side.