11# pragma omp parallel for
25 using namespace Geom::Elem;
33# pragma omp parallel for
90 using namespace Geom::Elem;
96# pragma omp parallel for
146 using namespace Geom;
147 using namespace Geom::Elem;
153# pragma omp parallel for
178 using namespace Geom;
179 using namespace Geom::Elem;
185# pragma omp parallel for
217 using namespace Geom;
218 using namespace Geom::Elem;
222# pragma omp parallel for
245 using namespace Geom;
246 using namespace Geom::Elem;
251# pragma omp parallel for
273 using namespace Geom;
274 using namespace Geom::Elem;
282# pragma omp parallel for
342# pragma omp parallel for
355 using namespace Geom;
356 using namespace Geom::Elem;
362# pragma omp parallel for
380 tJacobi
J = Elem::ShapeJacobianCoordD01Nj(coords,
DiNj);
381 tPoint
pPhy = Elem::PPhysicsCoordD01Nj(coords,
DiNj);
400 using namespace Geom;
401 using namespace Geom::Elem;
405# pragma omp parallel for
422 tPoint
pPhy = Elem::PPhysicsCoordD01Nj(coords,
DiNj);
430 using namespace Geom;
431 using namespace Geom::Elem;
437# pragma omp parallel for
454 tJacobi
J = Elem::ShapeJacobianCoordD01Nj(coords,
DiNj);
455 tPoint
pPhy = Elem::PPhysicsCoordD01Nj(coords,
DiNj);
473 using namespace Geom;
474 using namespace Geom::Elem;
479# pragma omp parallel for
494 tPoint
pPhy = Elem::PPhysicsCoordD01Nj(coords,
DiNj);
503 using namespace Geom;
504 using namespace Geom::Elem;
510# pragma omp parallel for
525 tJacobi
J = Elem::ShapeJacobianCoordD01Nj(coords,
DiNj);
531 np.stableNormalize();
541 using namespace Geom;
542 using namespace Geom::Elem;
550# pragma omp parallel for
565 tJacobi
J = Elem::ShapeJacobianCoordD01Nj(coords,
DiNj);
571 np.stableNormalize();
572 tPoint
pPhy = Elem::PPhysicsCoordD01Nj(coords,
DiNj);
588 "face mean norm is not the same side as faceCenter - cellCenter");
#define DNDS_assert_info(expr, info)
Debug-only assertion with an extra std::string info message.
#define DNDS_assert(expr)
Debug-only assertion (compiled out when DNDS_NDEBUG is defined). Prints the expression + file/line + ...
DNDS_DEVICE_CALLABLE Geom::tPoint GetCellQuadraturePPhys(index iCell, int iG)
void ConstructCellSmoothScale()
t3VecsPair faceUnitNorm
constructed using ConstructMetrics()
t3VecPair faceMeanNorm
constructed using ConstructMetrics()
t3MatPair cellMajorCoord
constructed using ConstructMetrics()
tRecAtrPair faceAtr
constructed using ConstructMetrics()
void MakePairDefaultOnFace(TArrayPair &aPair, const std::string &name, TOthers... others)
make pair with default MPI type, match face layout
t3VecPair cellBary
constructed using ConstructMetrics()
Geom::tPoint GetCellBary(index iCell)
t3VecPair cellCent
constructed using ConstructMetrics()
void ConstructFaceIntPPhysics()
ssp< Geom::UnstructuredMesh > mesh
index CellFaceOther(index iCell, index iFace) const
tCoeffPair faceIntJacobiDet
constructed using ConstructMetrics()
tCoeffPair cellIntJacobiDet
constructed using ConstructMetrics()
void ConstructCellAlignedHBox()
t3MatPair cellInertia
constructed using ConstructMetrics()
t3VecsPair faceIntPPhysics
constructed using ConstructMetrics()
real GetCellVol(index iCell) const
void ConstructCellIntJacobiDet()
Geom::tPoint GetFaceQuadraturePPhysFromCell(index iFace, index iCell, rowsize if2c, int iG)
void ConstructCellMajorHBoxCoordInertia()
tScalarPair faceArea
constructed using ConstructMetrics()
std::set< index > axisFaces
FiniteVolumeSettings settings
FiniteVolumeDeviceView< B > t_deviceView
t3VecPair faceCent
constructed using ConstructMetrics()
void MakePairDefaultOnCell(TArrayPair &aPair, const std::string &name, TOthers... others)
make pair with default MPI type, match cell layout
real GetFaceArea(index iFace) const
t3VecPair cellMajorHBox
constructed using ConstructMetrics()
tRecAtrPair cellAtr
constructed using ConstructMetrics()
void ConstructCellVolume()
real GetCellParamVol(index iCell) const
t3VecsPair cellIntPPhysics
constructed using ConstructMetrics()
tScalarPair cellSmoothScale
constructed using ConstructMetrics()
void ConstructCellIntPPhysics()
t3VecPair cellAlignedHBox
constructed using ConstructMetrics()
tScalarPair volumeLocal
constructed using ConstructMetrics()
void ConstructFaceIntJacobiDet()
void ConstructFaceUnitNorm()
RecAtr & GetFaceAtr(index iFace)
RecAtr & GetCellAtr(index iCell)
void ConstructFaceMeanNorm()
Eigen::Matrix3d Eigen3x3RealSymEigenDecompositionNormalized(const Eigen::Matrix3d &A)
Eigen-decomposition with eigenvector columns normalised to unit length.
Eigen::Matrix2d Eigen2x2RealSymEigenDecompositionNormalized(const Eigen::Matrix2d &A)
2x2 analogue of Eigen3x3RealSymEigenDecompositionNormalized.
real Eigen3x3RealSymEigenDecompositionGetCond(const Eigen::Matrix3d &A)
Condition number of a 3x3 SPD matrix from its eigenvalues.
real Eigen2x2RealSymEigenDecompositionGetCond(const Eigen::Matrix2d &A)
2x2 analogue of Eigen3x3RealSymEigenDecompositionGetCond.
void AllreduceOneReal(real &v, MPI_Op op, const MPIInfo &mpi)
Single-scalar Allreduce helper for reals (in-place, count = 1).
DNDS_CONSTANT const index UnInitIndex
Sentinel "not initialised" index value (= INT64_MIN).
DNDS_CONSTANT const real verySmallReal
Catch-all lower bound ("effectively zero").
int64_t index
Global row / DOF index type (signed 64-bit; handles multi-billion-cell meshes).
double real
Canonical floating-point scalar used throughout DNDSR (double precision).
DNDS_CONSTANT const real smallReal
Loose lower bound (for iterative-solver tolerances etc.).
std::ostream & log()
Return the current DNDSR log stream (either std::cout or the installed file).
DNDS_CONSTANT const real veryLargeReal
Catch-all upper bound ("practically infinity") for physical scalars.
void TransAttach()
Bind the transformer to the current father / son pointers.
ssp< TArray > father
Owned-side array (must be resized before ghost setup).
void ResizeRow(index i, rowsize rs)
Resize a single row in the combined address space.
TTrans trans
Ghost-communication engine bound to father and son.
void CompressBoth()
Compress both father and son CSR arrays (no-op for non-CSR layouts).
int intOrder
polynomial degree of reconstruction
bool ignoreMeshGeometryDeficiency
integration degree globally set
int rank
This rank's 0-based index within comm (-1 until initialised).
Eigen::Matrix< real, 5, 1 > v
Eigen::Vector3d n(1.0, 0.0, 0.0)