#include <PolyGeom.H>
Public Member Functions | |
PolyGeom () | |
~PolyGeom () | |
Static Public Member Functions | |
static void | invertMatrix (Real a_AInverse[SpaceDim][SpaceDim], const Real a_A[SpaceDim][SpaceDim], bool a_test) |
static void | getMinor (Real a_Aminor[SpaceDim-1][SpaceDim-1], const Real a_A[SpaceDim][SpaceDim], int a_row, int acol) |
static void | getJacobianAndInverse (Real a_Jacobian[SpaceDim][SpaceDim], Real a_Jinverse[SpaceDim][SpaceDim], RealVect &a_normal, RealVect a_tangents[SpaceDim-1]) |
static void | getTangentVectors (RealVect a_tangen[CH_SPACEDIM-1], const RealVect &a_normal) |
static Real | determinantSD (const Real a_A[SpaceDim][SpaceDim]) |
static Real | determinantSDM1 (const Real a_A[SpaceDim-1][SpaceDim-1]) |
static void | pointToLine (RealVect &a_closestPt, RealVect &a_normal, const RealVect &a_point, const RealVect &a_pointOnLine, const RealVect &a_direction) |
static Real | distancePointToPlane (const RealVect &a_point, const RealVect &a_normal, const RealVect &a_pointOnLine) |
return distance from point to a plane | |
static void | setTolerance (const Real &a_tolerance) |
static void | setVectDx (const RealVect &a_vectDx) |
static void | setVolumeTolerance (const Real &a_tolerance) |
static void | setAreaTolerance (const Real &a_tolerance) |
static void | setLengthTolerance (const Real &a_tolerance) |
static RealVect | cross (const RealVect &a_xvec1, const RealVect &a_xvec0) |
static Real | dot (const RealVect &a_xvec1, const RealVect &a_xvec0) |
static const Real & | getTolerance () |
static const RealVect & | getVectDx () |
static const Real & | getVolumeTolerance () |
static const Real & | getAreaTolerance () |
static const Real & | getLengthTolerance () |
static RealVect | normal (const VolIndex &a_vof, const EBISBox &a_ebisBox, const Real &a_bndryArea) |
static Real | bndryArea (const VolIndex &a_vof, const EBISBox &a_ebisBox) |
static Real | computeAlpha (const Real &a_volFrac, const RealVect &a_normal) |
static Real | computeVolume (const Real &a_alpha, const RealVect &a_normal) |
static void | computeNormalAndAlpha (Real &a_alpha, RealVect &a_normal, const int &a_upDir, const Tuple< RealVect, CH_SPACEDIM > &a_poly) |
static Real | matrixSolveComp (const Vector< Vector< Real > > &a_A, const Vector< Real > &a_rhs, const int &a_icomp) |
static Real | determinant (const Vector< Vector< Real > > &a_A) |
static Real | sAndZVolume (const Real &a_alpha, const RealVect &a_normal) |
static void | sortVector (RealVect &vect, IntVect &ivmap) |
static void | posifyVector (RealVect &vect, IntVect &signs) |
make vector all pos and return the signs | |
static void | unifyVector (RealVect &normal, Real &sumSquare) |
make vector into a unit vector and return the sum of squares | |
static Tuple< int, CH_SPACEDIM-1 > | computeTanDirs (int upDir) |
Static Protected Member Functions | |
static Real | twoDFunc (const Real &arg) |
static Real | threeDFunc (const Real &arg) |
static Real | computeAnyVolume (const Real &a_alpha, const Real &a_norm0, const Real &a_norm1, const Real &a_norm2) |
static RealVect | tetCentroid (const RealVect &normal, const Real &alpha) |
static Real | tetVolume (const RealVect &normal, const Real &alpha) |
Static Protected Attributes | |
static RealVect | s_vectDx |
static Real | s_tolerance |
static Real | s_lengthtolerance |
static Real | s_areatolerance |
PolyGeom::PolyGeom | ( | ) | [inline] |
PolyGeom::~PolyGeom | ( | ) | [inline] |
static void PolyGeom::invertMatrix | ( | Real | a_AInverse[SpaceDim][SpaceDim], | |
const Real | a_A[SpaceDim][SpaceDim], | |||
bool | a_test | |||
) | [static] |
return the inverse of the input matrix. done using cramers rule
Referenced by getJacobianAndInverse().
static void PolyGeom::getMinor | ( | Real | a_Aminor[SpaceDim-1][SpaceDim-1], | |
const Real | a_A[SpaceDim][SpaceDim], | |||
int | a_row, | |||
int | acol | |||
) | [static] |
calculate the cofactor of element (row,col) this is the matrix which excludes row and column row, col
static void PolyGeom::getJacobianAndInverse | ( | Real | a_Jacobian[SpaceDim][SpaceDim], | |
Real | a_Jinverse[SpaceDim][SpaceDim], | |||
RealVect & | a_normal, | |||
RealVect | a_tangents[SpaceDim-1] | |||
) | [inline, static] |
References invertMatrix().
static void PolyGeom::getTangentVectors | ( | RealVect | a_tangen[CH_SPACEDIM-1], | |
const RealVect & | a_normal | |||
) | [inline, static] |
References Abs(), CH_assert, CH_SPACEDIM, cross(), dot(), unifyVector(), and RealVect::Unit.
static void PolyGeom::pointToLine | ( | RealVect & | a_closestPt, | |
RealVect & | a_normal, | |||
const RealVect & | a_point, | |||
const RealVect & | a_pointOnLine, | |||
const RealVect & | a_direction | |||
) | [static] |
find equation of line between a line formed by a_pointOnLine = p0 and a_direction=v l(t) = p0 + v t and a point in space a_point. returns closest point on line and the normal between the closest point and the point in space
static Real PolyGeom::distancePointToPlane | ( | const RealVect & | a_point, | |
const RealVect & | a_normal, | |||
const RealVect & | a_pointOnLine | |||
) | [static] |
return distance from point to a plane
static void PolyGeom::setTolerance | ( | const Real & | a_tolerance | ) | [static] |
static void PolyGeom::setVectDx | ( | const RealVect & | a_vectDx | ) | [static] |
static void PolyGeom::setVolumeTolerance | ( | const Real & | a_tolerance | ) | [static] |
static void PolyGeom::setAreaTolerance | ( | const Real & | a_tolerance | ) | [static] |
static void PolyGeom::setLengthTolerance | ( | const Real & | a_tolerance | ) | [static] |
compute the cross product between xvec0 and xvec1 (returns xvec1 x xvec0)
Referenced by getTangentVectors().
compute the dot product between xvec0 and xvec1 (returns xvec1 dot xvec0)
Referenced by getTangentVectors().
static const Real& PolyGeom::getTolerance | ( | ) | [static] |
static const RealVect& PolyGeom::getVectDx | ( | ) | [static] |
static const Real& PolyGeom::getVolumeTolerance | ( | ) | [static] |
static const Real& PolyGeom::getAreaTolerance | ( | ) | [static] |
static const Real& PolyGeom::getLengthTolerance | ( | ) | [static] |
static RealVect PolyGeom::normal | ( | const VolIndex & | a_vof, | |
const EBISBox & | a_ebisBox, | |||
const Real & | a_bndryArea | |||
) | [static] |
Return the normal to the boundary at the input VoF. If said normal is undefined, returns the zero vector.
Return the inhomogeneous component of the plane eqution ni xi = alpha. Volume fraction must be positive and <= 1.0 and the normals can be in any order.
Compute the volume fraction in the cell given alpha and the normal.
static void PolyGeom::computeNormalAndAlpha | ( | Real & | a_alpha, | |
RealVect & | a_normal, | |||
const int & | a_upDir, | |||
const Tuple< RealVect, CH_SPACEDIM > & | a_poly | |||
) | [static] |
Get the normal and alpha given the points in a polygon. Solves the linear system \ ni xi - alpha = 0\ ni*ni = 1\ for ni and alpha. Always returns nromal[updir] >= 0
static Real PolyGeom::matrixSolveComp | ( | const Vector< Vector< Real > > & | a_A, | |
const Vector< Real > & | a_rhs, | |||
const int & | a_icomp | |||
) | [static] |
andzvolume computes the volume under the curve (covered volume). Does so using Scardovelli and Zaleski's direct formulae. The normal has to be all positive numbers. The normals also must be ordered from lowest to highest.
Sort vector from low to high. All comps must be positive. Return reverse mapping
make vector all pos and return the signs
static Tuple<int, CH_SPACEDIM-1> PolyGeom::computeTanDirs | ( | int | upDir | ) | [static] |
static Real PolyGeom::computeAnyVolume | ( | const Real & | a_alpha, | |
const Real & | a_norm0, | |||
const Real & | a_norm1, | |||
const Real & | a_norm2 | |||
) | [static, protected] |
static RealVect PolyGeom::tetCentroid | ( | const RealVect & | normal, | |
const Real & | alpha | |||
) | [static, protected] |
RealVect PolyGeom::s_vectDx [static, protected] |
Real PolyGeom::s_tolerance [static, protected] |
Real PolyGeom::s_lengthtolerance [static, protected] |
Real PolyGeom::s_areatolerance [static, protected] |