Geom Module¶
Unstructured mesh, CGNS I/O, element types, and partitioning.
Namespace Overview¶
-
namespace Geom
Typedefs
-
using tPy_AutoAppendName2ID = py_class_ssp<AutoAppendName2ID>
-
using t_FBCName_2_ID = std::function<t_index(const std::string&)>
-
using t_FBCID_2_Name = std::function<std::string(t_index)>
-
using t_index = int32_t
-
using t_real = double
-
using tPoint = Eigen::Vector3d
-
using tJacobi = Eigen::Matrix3d
-
using tGPoint = Eigen::Matrix3d
-
using tPointMap = Eigen::Map<tPoint, Eigen::Unaligned>
-
using tPointConstMap = Eigen::Map<const tPoint, Eigen::Unaligned>
-
using tGPointMap = Eigen::Map<tGPoint, Eigen::Unaligned>
-
using tGPointConstMap = Eigen::Map<const tGPoint, Eigen::Unaligned>
-
using tSmallCoords = Eigen::Matrix<real, 3, Eigen::Dynamic>
-
using tLocalMatStruct = std::vector<std::vector<index>>
-
template<rowsize _row_size, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using tPy_AdjPairTracked = py_class_ssp<AdjPairTracked<ArrayAdjacencyPair<_row_size, _row_max, _align>>>
-
using tFDataFieldName = std::function<std::string(int)>
-
using tFDataFieldQuery = tFGetData
-
using tPy_ElemInfo = py_class_ssp<ElemInfo>
-
using tPy_UnstructuredMesh = py_class_ssp<UnstructuredMesh>
-
using tPy_UnstructuredMeshSerialRW = py_class_ssp<UnstructuredMeshSerialRW>
-
using tAdjPair = DNDS::ArrayAdjacencyPair<DNDS::NonUniformSize>
-
using tAdj = decltype(tAdjPair::father)
-
using tPbiPair = ArrayPair<ArrayNodePeriodicBits<DNDS::NonUniformSize>>
-
using tPbi = decltype(tPbiPair::father)
-
using tAdj1Pair = DNDS::ArrayAdjacencyPair<1>
-
using tAdj1 = decltype(tAdj1Pair::father)
-
using tAdj2Pair = DNDS::ArrayAdjacencyPair<2>
-
using tAdj2 = decltype(tAdj2Pair::father)
-
using tAdj3Pair = DNDS::ArrayAdjacencyPair<3>
-
using tAdj3 = decltype(tAdj3Pair::father)
-
using tAdj4Pair = DNDS::ArrayAdjacencyPair<4>
-
using tAdj4 = decltype(tAdj4Pair::father)
-
using tAdj8Pair = DNDS::ArrayAdjacencyPair<8>
-
using tAdj8 = decltype(tAdj8Pair::father)
-
using tCoordPair = DNDS::ArrayPair<DNDS::ArrayEigenVector<3>>
-
using tCoord = decltype(tCoordPair::father)
-
using tIndPair = DNDS::ArrayPair<DNDS::ArrayIndex>
-
using tInd = decltype(tIndPair::father)
-
using tFGetName = std::function<std::string(int)>
-
using OwnershipResolverMulti = std::function<OwnershipDecision(const std::vector<index> &parents, const std::vector<MPI_int> &parentRanks, index nLocalParents)>
-
using OwnershipResolver2 = std::function<OwnershipDecision(index parentL, index parentR, index nLocalParents)>
-
using InterpolateGlobalResult = InterpolateGlobalResultT<>
-
using InterpolateResult = InterpolateResultT<>
-
using InterpolateDistributedResult = InterpolateDistributedResultT<>
-
using AdjRemapFn = std::function<void(const PermutationTransfer::LookupResult &lookup)>
-
using AdjRelocateFn = std::function<void(const PermutationTransfer &transfer, const MPIInfo &mpi)>
Enums
-
enum class MeshLoc : uint8_t
Values:
-
enumerator Unknown
-
enumerator Node
-
enumerator Face
-
enumerator Cell
-
enumerator Unknown
-
enum MeshReaderMode
Values:
-
enumerator UnknownMode
-
enumerator SerialReadAndDistribute
-
enumerator SerialOutput
-
enumerator UnknownMode
-
enum MeshAdjState
Values:
-
enumerator Adj_Unknown
-
enumerator Adj_PointToLocal
-
enumerator Adj_PointToGlobal
-
enumerator Adj_Unknown
-
enum MeshElevationState
Values:
-
enumerator Elevation_Untouched
-
enumerator Elevation_O1O2
-
enumerator Elevation_Untouched
-
enum class EntityKind : int8_t
Values:
-
enumerator Cell
-
enumerator Face
-
enumerator Edge
-
enumerator Node
-
enumerator Bnd
-
enumerator NUM_KINDS
-
enumerator Cell
-
enum class AdjAction
Values:
-
enumerator SKIP
-
enumerator RELOCATE
-
enumerator REMAP
-
enumerator RELOCATE_REMAP
-
enumerator SELF
-
enumerator SKIP
Functions
-
inline void pybind11_AutoAppendName2ID_define(py::module_ &m)
-
inline auto GetFaceName2IDDefault()
- inline DNDS_DEVICE_CALLABLE bool FaceIDIsExternalBC (t_index id)
- inline DNDS_DEVICE_CALLABLE bool FaceIDIsInternal (t_index id)
- inline DNDS_DEVICE_CALLABLE bool FaceIDIsTrueInternal (t_index id)
- inline DNDS_DEVICE_CALLABLE bool FaceIDIsPeriodic (t_index id)
- inline DNDS_DEVICE_CALLABLE bool FaceIDIsPeriodic1 (t_index id)
- inline DNDS_DEVICE_CALLABLE bool FaceIDIsPeriodic2 (t_index id)
- inline DNDS_DEVICE_CALLABLE bool FaceIDIsPeriodic3 (t_index id)
- inline DNDS_DEVICE_CALLABLE bool FaceIDIsPeriodicMain (t_index id)
- inline DNDS_DEVICE_CALLABLE bool FaceIDIsPeriodicDonor (t_index id)
-
inline std::vector<real> VectorToSTDVector(const Eigen::VectorXd &v)
-
inline Eigen::VectorXd STDVectorToVector(const std::vector<real> &v)
-
template<int dim>
inline Eigen::Matrix<real, dim, dim> NormBuildLocalBaseV(const Eigen::Ref<const Eigen::Vector<real, dim>> &uNorm)
-
inline void GetTanhDistributionBilateral(real x0, real x1, index NInterval, real d0, Eigen::Vector<real, Eigen::Dynamic> &d)
-
template<rowsize _row_size, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string pybind11_AdjPairTracked_name()
-
inline void pybind11_MeshAdjState_define(py::module_ &m)
-
inline void pybind11_AdjIndexInfo_define(py::module_ &m)
-
template<rowsize _row_size, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_AdjPairTracked<_row_size, _row_max, _align> pybind11_AdjPairTracked_declare(py::module_ &m)
-
template<rowsize _row_size, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void pybind11_AdjPairTracked_define(py::module_ &m)
-
void PushInfo2Serial2Global(std::vector<DNDS::index> &serial2Global, DNDS::index localSize, const std::vector<DNDS::index> &pushIndex, const std::vector<DNDS::index> &pushIndexStart, const DNDS::MPIInfo &mpi)
-
inline void pybind11_ElemInfo_define(py::module_ &m)
-
inline void pybind11_ArrayElemInfo_define(py::module_ &m)
-
inline void pybind11_MeshLocDefine(py::module_ &m)
-
inline void pybind11_UnstructuredMesh_define(py::module_ &m)
-
inline void pybind11_UnstructuredMeshSerialRW_define(py::module_ &m)
-
static tPoint HermiteInterpolateMidPointOnQuad4WithNorm(tPoint c0, tPoint c1, tPoint c2, tPoint c3, tPoint n0, tPoint n1, tPoint n2, tPoint n3)
-
inline std::optional<SmoothSolverSetup> PrepareSmoothSolverSetup(UnstructuredMesh &mesh)
-
inline void BuildGhostPrimary(UnstructuredMesh &mesh, int nGhostLayers = 1)
-
inline void ReadMeshFromCGNS(ssp<UnstructuredMesh> &mesh, ssp<UnstructuredMeshSerialRW> &reader, const std::string &meshFile, const PartitionOptions &partOpts = {}, real periodicTol = 1e-9, int elevation = 0, int bisect = 0, std::function<t_index(const std::string&)> nameMapper = nullptr)
-
inline void ReadMeshFromH5(UnstructuredMesh &mesh, Serializer::SerializerFactory factory, const std::string &h5Path, const PartitionOptions &partOpts = {})
-
inline void ReadMeshFromH5Parallel(UnstructuredMesh &mesh, Serializer::SerializerFactory factory, const std::string &h5Path)
-
inline void PrepareMesh(UnstructuredMesh &mesh, UnstructuredMeshSerialRW &reader, const PrepareMeshOptions &opts = {})
-
inline void BuildBndMesh(UnstructuredMesh &mesh, UnstructuredMesh &meshBnd, UnstructuredMeshSerialRW &readerBnd, bool buildSerialOut = true)
-
inline void SerializeMesh(UnstructuredMesh &mesh, const std::string &outputPath, Serializer::SerializerFactory &factory)
-
inline std::string MeshH5Path(const std::string &base, int mpiSize, int elevation = 0, int bisect = 0)
-
static void GeneralCell2NodeToNode2Cell(tCoordPair &coords, tAdjPair &cell2node, tAdjPair &node2cell, const tIndexMapFunc &CellIndexLocal2Global_NoSon, const tIndexMapFunc &NodeIndexLocal2Global_NoSon)
-
template<class TPartitionIdx>
void Partition2LocalIdx(const std::vector<TPartitionIdx> &partition, std::vector<DNDS::index> &localPush, std::vector<DNDS::index> &localPushStart, const DNDS::MPIInfo &mpi)
-
template<class TPartitionIdx>
void Partition2Serial2Global(const std::vector<TPartitionIdx> &partition, std::vector<DNDS::index> &serial2Global, const DNDS::MPIInfo &mpi, DNDS::MPI_int nPart)
-
template<class TAdj = tAdj1>
void ConvertAdjSerial2Global(TAdj &arraySerialAdj, const std::vector<DNDS::index> &partitionJSerial2Global, const DNDS::MPIInfo &mpi)
-
template<class TArr = tAdj1>
void TransferDataSerial2Global(TArr &arraySerial, TArr &arrayDist, const std::vector<DNDS::index> &pushIndex, const std::vector<DNDS::index> &pushIndexStart, const DNDS::MPIInfo &mpi)
-
static void GetViolentNodeDeduplication(index nNode, const std::vector<tPoint> &nodesExtra, tCoordPair &coordOut, std::vector<index> &nodeDedu2Old, std::vector<index> &nodeOld2Dedu)
-
static void updateVTKSeries(std::string seriesName, std::string fname, real tSimu)
-
static void H5_WriteDataset(hid_t loc, const char *name, index nGlobal, index nOffset, index nLocal, hid_t file_dataType, hid_t mem_dataType, hid_t plist_id, hid_t dcpl_id, void *buf, int dim2 = -1)
-
template<class TArray>
static void EvenSplitReadFather(ssp<TArray> &father, ssp<TArray> &son, const MPIInfo &mpi, Serializer::SerializerBaseSSP serializerP, const std::string &name)
-
template<class TArray>
static void EvenSplitReadFather(ssp<TArray> &father, ssp<TArray> &son, const MPIInfo &mpi, Serializer::SerializerBaseSSP serializerP, const std::string &name, MPI_Datatype commType, int commMult)
-
template<rowsize f2l_rs>
static std::vector<MPI_int> ComputeFollowMapFromAdj(const ArrayAdjacencyPair<f2l_rs> &follower2leader, index nFollower, const ssp<GlobalOffsetsMapping> &leaderGM, const std::vector<MPI_int> &leaderTargetRanks, const MPIInfo &mpi)
-
static std::vector<index> put_perm_back_to_local_parts(const std::vector<index> &new2old, const std::vector<index> &localPartStarts)
-
static void check_permutations(const std::vector<index> &new2old, const std::vector<index> &old2new, const std::vector<index> &localPartStarts)
-
std::string adjKindName(const AdjKind &kind)
-
inline int entityDepth(EntityKind kind, int dim)
-
inline const char *entityKindName(EntityKind kind)
-
template<class TPair>
static ssp<AdjVariant> makeAdjVariant(TPair &&pair)
-
template<class TPair>
static ssp<AdjVariant> makeAdjVariant()
-
template<rowsize target_rs, rowsize source_rs = NonUniformSize>
static void narrowAdjToFixed(const ArrayAdjacencyPair<source_rs> &source, ArrayAdjacencyPair<target_rs> &target, index nRows, index fill = UnInitIndex)
-
static void insertChainIntoTrie(std::vector<GhostTreeNode> &roots, const GhostChain &chain)
-
static void collectRequiredAdjsHelper(const GhostTreeNode &node, std::unordered_set<AdjKind, AdjKindHash> &out)
-
static void collectCollectedKindsHelper(const GhostTreeNode &node, std::unordered_set<EntityKind> &out)
-
static void dumpNode(const GhostTreeNode &node, std::ostringstream &oss, int indent)
-
template<class TAdjPair>
static std::vector<index> traverseHopImpl(const std::vector<index> &parentSet, const TAdjPair &adj, bool assertFound)
-
static std::vector<index> traverseHop(const std::vector<index> &parentSet, const AdjVariant &adjVar, bool assertFound)
-
static std::vector<index> filterNonOwned(const std::vector<index> &set, index ownedStart, index ownedEnd)
-
template<rowsize cone_rs = NonUniformSize, class ToPair>
AdjPairTracked<tAdjPair> CheckedInverse(const AdjPairTracked<ArrayAdjacencyPair<cone_rs>> &cone, const ToPair &toPair, index nToLocal, const MPIInfo &mpi)
-
template<rowsize rs_AB = NonUniformSize, rowsize rs_BC = NonUniformSize, rowsize out_rs = NonUniformSize, class Predicate, class ...TArgs>
AdjPairTracked<ArrayAdjacencyPair<out_rs>> CheckedComposeFiltered(const AdjPairTracked<ArrayAdjacencyPair<rs_AB>> &AB, const AdjPairTracked<ArrayAdjacencyPair<rs_BC>> &BC, const std::unordered_map<index, index> &bGlobal2Local, Predicate &&pred, TArgs&&... args)
-
template<rowsize p2n_rs = NonUniformSize, rowsize e2p_rs = NonUniformSize>
auto CheckedInterpolateGlobal(const AdjPairTracked<ArrayAdjacencyPair<p2n_rs>> &parent2node, const tPbiPair &parent2nodePbi, const OffsetAscendIndexMapping &parentGhostMapping, const GlobalOffsetsMapping &parentGlobalMapping, const OffsetAscendIndexMapping &nodeGhostMapping, const SubEntityQueryPbi &query, index nLocalParents, index nTotalParents, index nNode, const OwnershipResolverMulti &resolver, const MPIInfo &mpi)
-
inline AdjAction classifyAdj(AdjKind adj, const std::unordered_set<EntityKind> &reorderedKinds)
-
std::vector<index> ReorderSerialAdj_PartitionMetisC(tLocalMatStruct::iterator mat_begin, tLocalMatStruct::iterator mat_end, std::vector<index>::iterator i_new2old_begin, std::vector<index>::iterator i_new2old_end, int nParts, index ind_offset, bool do_rcm, index &bwOldM, index &bwNewM, tLocalMatStruct::iterator full_mat_begin, index full_n_elem)
-
inline auto PartitionSerialAdj_Metis(tLocalMatStruct::const_iterator mat_begin, tLocalMatStruct::const_iterator mat_end, int nPart, index ind_offset = 0, std::string metisType = "KWAY", int metisNcuts = 3, int metisUfactor = 5, int metisSeed = 0)
-
inline std::pair<std::vector<index>, std::vector<index>> ReorderSerialAdj_Metis(const tLocalMatStruct &mat)
-
inline std::pair<std::vector<index>, std::vector<index>> ReorderSerialAdj_BoostMMD(const tLocalMatStruct &mat)
-
inline std::pair<std::vector<index>, std::vector<index>> ReorderSerialAdj_BoostRCM(const tLocalMatStruct &mat, index &bandWidthOld, index &bandWidthNew)
-
inline std::pair<std::vector<index>, std::vector<index>> ReorderSerialAdj_CorrectRCM(tLocalMatStruct::const_iterator mat_begin, tLocalMatStruct::const_iterator mat_end, index &bandWidthOld, index &bandWidthNew, index offset = 0)
-
inline bool isCollaborativeNodePeriodicBits(const std::vector<NodePeriodicBits> &a, const std::vector<NodePeriodicBits> &b)
Variables
-
static const t_index BC_ID_INTERNAL = 0
-
static const t_index BC_ID_PERIODIC_1 = -1
-
static const t_index BC_ID_PERIODIC_2 = -2
-
static const t_index BC_ID_PERIODIC_3 = -3
-
static const t_index BC_ID_PERIODIC_1_DONOR = -4
-
static const t_index BC_ID_PERIODIC_2_DONOR = -5
-
static const t_index BC_ID_PERIODIC_3_DONOR = -6
-
static const t_index BC_ID_NULL = 1
-
static const t_index BC_ID_DEFAULT_WALL = 2
-
static const t_index BC_ID_DEFAULT_FAR = 3
-
static const t_index BC_ID_DEFAULT_WALL_INVIS = 4
-
static const t_index BC_ID_DEFAULT_SPECIAL_DMR_FAR = 11
-
static const t_index BC_ID_DEFAULT_SPECIAL_RT_FAR = 12
-
static const t_index BC_ID_DEFAULT_SPECIAL_IV_FAR = 13
-
static const t_index BC_ID_DEFAULT_SPECIAL_2DRiemann_FAR = 14
-
static const t_index BC_ID_DEFAULT_MAX = 20
-
static const t_FBCName_2_ID FBC_Name_2_ID_Default =
[](const std::string &name) -> t_index { auto n2id_map = GetFaceName2IDDefault(); if(n2id_map.count(name))return n2id_map.at(name);return BC_ID_NULL;}
-
const t_index invalid_index = INT32_MAX
-
static const t_index INTERNAL_ZONE = -1
-
static const NodePeriodicBits nodePB1 = {0x01U}
-
static const NodePeriodicBits nodePB2 = {0x02U}
-
static const NodePeriodicBits nodePB3 = {0x04U}
-
struct AdjEntry
-
struct AdjIndexInfo
Public Functions
-
inline const t_pLGhostMapping &mapping() const
-
inline void markGlobal()
-
inline void markLocal()
-
inline void wireTargetMapping(const t_pLGhostMapping &mapping)
-
template<class TAdj>
inline void bootstrapToLocal(const t_pLGhostMapping &mapping, TAdj &adj, index nRows)
-
template<class TAdj>
inline void bootstrapToLocalOMP(const t_pLGhostMapping &mapping, TAdj &adj, index nRows)
Public Static Functions
-
static inline t_pLGhostMapping makeFatherOnlyMapping(const ssp<GlobalOffsetsMapping> &globalMapping, index fatherSize, const MPIInfo &mpi)
-
inline const t_pLGhostMapping &mapping() const
-
struct AdjIndexInfoDeviceView
-
struct AdjKind
Public Functions
-
inline constexpr AdjKind(EntityKind from_, EntityKind to_)
-
inline constexpr AdjKind(EntityKind from_, EntityKind to_, EntityKind via_)
-
inline constexpr bool isIntraLevel() const
-
inline constexpr bool isDirect() const
-
inline constexpr bool operator==(const AdjKind &o) const
Public Members
-
EntityKind via = {EntityKind::Node}
-
inline constexpr AdjKind(EntityKind from_, EntityKind to_)
-
struct AdjKindHash
-
template<class TPair>
struct AdjPairTracked : public TPair Public Functions
-
inline void bootstrapToLocal(const t_pLGhostMapping &mapping)
-
inline bool isBuilt() const
-
inline void reset()
-
template<DeviceBackend B>
inline auto deviceView()
-
inline void bootstrapToLocal(const t_pLGhostMapping &mapping)
-
template<DeviceBackend B, class TArray>
struct AdjPairTrackedDeviceView : public DNDS::ArrayPairDeviceView<B, TArray>
-
template<DeviceBackend B, class TArray>
struct AdjPairTrackedDeviceViewConst : public DNDS::ArrayPairDeviceViewConst<B, TArray>
-
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
class ArrayNodePeriodicBits : public DNDS::ParArray<NodePeriodicBits, 1, 1, NoAlign>
-
struct AutoAppendName2ID
-
class BCName_2_ID
-
struct CompanionEntry
-
struct CompiledGhostTree
Public Functions
-
std::unordered_set<AdjKind, AdjKindHash> requiredAdjs() const
-
std::vector<AdjKind> checkAvailable(const MeshConnectivity &dag) const
-
std::unordered_set<EntityKind> collectedKinds() const
-
std::string dump() const
Public Static Functions
-
static CompiledGhostTree compile(const GhostSpec &spec)
-
std::unordered_set<AdjKind, AdjKindHash> requiredAdjs() const
-
struct ConeAdj
-
struct CoordPairDOF : public DNDS::ArrayPair<DNDS::ArrayEigenVector<3>>, public DNDS::ArrayPair<DNDS::ArrayEigenVector<3>>
-
struct ElemInfo
Public Members
-
t_index zone = INTERNAL_ZONE
-
t_index zone = INTERNAL_ZONE
-
struct EntityReorderMap
Public Members
-
std::vector<MPI_int> targetRanks
-
std::vector<MPI_int> targetRanks
-
struct FollowSpec
-
struct GhostChain
-
struct GhostResult
-
Public Members
-
std::unordered_map<EntityKind, std::vector<index>> ghostIndices
-
std::unordered_set<EntityKind> activeKinds
-
std::unordered_map<EntityKind, std::vector<index>> ghostIndices
-
struct GhostSpec
-
struct GhostTreeNode
Public Members
-
EntityKind kind
-
AdjKind hop
-
bool collect = {false}
-
int level = {0}
-
int id = {-1}
-
int parentId = {-1}
-
EntityKind kind
-
template<rowsize p2e_rs = NonUniformSize, rowsize e2n_rs = NonUniformSize, rowsize e2p_rs = 2>
struct InterpolateDistributedResultT Public Members
-
ArrayAdjacencyPair<p2e_rs> parent2entity
-
ArrayAdjacencyPair<e2n_rs> entity2node
-
ArrayAdjacencyPair<e2p_rs> entity2parent
-
tElemInfoArrayPair entityElemInfo
-
index nOwnedEntities = {0}
-
ArrayAdjacencyPair<p2e_rs> parent2entity
-
template<rowsize e2p_rs = NonUniformSize>
struct InterpolateGlobalResultT Public Members
-
tAdjPair parent2entity
-
tPbiPair parent2entityPbi
-
tAdjPair entity2node
-
ArrayAdjacencyPair<e2p_rs> entity2parent
-
tPbiPair entity2nodePbi
-
tElemInfoArrayPair entityElemInfo
-
index nOwnedEntities = {0}
-
tAdjPair parent2entity
-
template<rowsize p2e_rs = NonUniformSize, rowsize e2n_rs = NonUniformSize, rowsize e2p_rs = NonUniformSize>
struct InterpolateResultT Public Members
-
ArrayAdjacencyPair<p2e_rs> parent2entity
-
ArrayAdjacencyPair<e2n_rs> entity2node
-
ArrayAdjacencyPair<e2p_rs> entity2parent
-
std::vector<ElemInfo> entityElemInfo
-
std::vector<std::vector<NodePeriodicBits>> parent2entityPbi
-
index nEntities = {0}
-
ArrayAdjacencyPair<p2e_rs> parent2entity
-
struct LevelEntry
Public Members
-
int nodeId = {}
-
int parentId = {}
-
EntityKind kind = {}
-
AdjKind hop
-
bool collect = {}
-
bool hasChildren = {}
-
int nodeId = {}
-
struct MeshConnectivity
Public Functions
-
void registerAdj(AdjKind kind, ssp<AdjVariant> adjPtr)
-
template<class TPair>
inline void registerAdj(AdjKind kind, AdjPairTracked<TPair> &pair)
-
template<class TPair>
inline void registerAdj(AdjKind kind, const AdjPairTracked<TPair> &pair)
-
void registerGlobalMapping(EntityKind kind, const ssp<GlobalOffsetsMapping> &gm)
-
ssp<AdjVariant> resolveAdj(AdjKind kind) const
-
const ssp<GlobalOffsetsMapping> &getGlobalMapping(EntityKind kind) const
-
bool hasAdj(AdjKind kind) const
-
ConeAdj &addCone(int fromDepth, int toDepth)
-
ConeAdj *findCone(int fromDepth, int toDepth)
-
SupportAdj &addSupport(int fromDepth, int toDepth)
-
SupportAdj *findSupport(int fromDepth, int toDepth)
-
GhostResult evaluateGhostTree(const CompiledGhostTree &tree, const MPIInfo &mpi) const
Public Members
-
std::unordered_map<AdjKind, ssp<AdjVariant>, AdjKindHash> adjRegistry
-
std::unordered_map<EntityKind, ssp<GlobalOffsetsMapping>> globalMappings
Public Static Functions
-
template<rowsize cone_rs = NonUniformSize>
static tAdjPair Inverse(const ArrayAdjacencyPair<cone_rs> &cone, index nToLocal, const MPIInfo &mpi, const std::function<index(index)> &fromLocal2Global, const std::function<index(index)> &toLocal2Global, const ssp<GlobalOffsetsMapping> &toGlobalMapping)
-
template<rowsize rs_AB = NonUniformSize, rowsize rs_BC = NonUniformSize, rowsize out_rs = NonUniformSize>
static ArrayAdjacencyPair<out_rs> Compose(const ArrayAdjacencyPair<rs_AB> &AB, const ArrayAdjacencyPair<rs_BC> &BC, index nALocal, const std::unordered_map<index, index> &bGlobal2Local, const std::function<index(index)> &aLocal2Global, bool removeSelf = false)
-
template<rowsize rs_AB = NonUniformSize, rowsize rs_BC = NonUniformSize, rowsize out_rs = NonUniformSize, class Predicate = SharedCountPredicate>
static ArrayAdjacencyPair<out_rs> ComposeFiltered(const ArrayAdjacencyPair<rs_AB> &AB, const ArrayAdjacencyPair<rs_BC> &BC, index nALocal, const std::unordered_map<index, index> &bGlobal2Local, const std::function<index(index)> &aLocal2Global, Predicate &&pred, const std::function<bool(index aLocal, index cGlobal, const std::vector<index> &sharedBGlobals)> &matchExtra = nullptr)
-
template<rowsize p2n_rs = NonUniformSize>
static InterpolateResult Interpolate(const ArrayAdjacencyPair<p2n_rs> &parent2node, const SubEntityQuery &query, index nParent, index nNode, const MPIInfo &mpi)
-
template<rowsize p2n_rs = NonUniformSize>
static InterpolateDistributedResult InterpolateDistributed(const ArrayAdjacencyPair<p2n_rs> &parent2node, const OffsetAscendIndexMapping &parentGhostMapping, const SubEntityQuery &query, index nLocalParents, index nTotalParents, index nNode, const OwnershipResolver2 &resolver, const OffsetAscendIndexMapping &nodeGhostMapping, const MPIInfo &mpi)
-
template<rowsize p2n_rs = NonUniformSize, rowsize e2p_rs = NonUniformSize>
static InterpolateGlobalResultT<e2p_rs> InterpolateGlobal(const ArrayAdjacencyPair<p2n_rs> &parent2node, const tPbiPair &parent2nodePbi, const OffsetAscendIndexMapping &parentGhostMapping, const GlobalOffsetsMapping &parentGlobalMapping, const OffsetAscendIndexMapping &nodeGhostMapping, const SubEntityQueryPbi &query, index nLocalParents, index nTotalParents, index nNode, const OwnershipResolverMulti &resolver, const MPIInfo &mpi)
-
void registerAdj(AdjKind kind, ssp<AdjVariant> adjPtr)
-
struct NodeIndexPBI
-
struct NodePeriodicBits
-
class NodePeriodicBitsRow
-
class Octree
-
template<class T>
class OffsetIterator
-
template<class T>
class OffsetRange
-
struct OwnershipDecision
-
struct PartitionOptions
-
struct Periodicity
Subclassed by DNDS::Geom::Base::CFVPeriodicity
Public Functions
- template<int dim, int nVec> inline DNDS_DEVICE_CALLABLE Eigen::Matrix< real, dim, nVec > TransVector (const Eigen::Matrix< real, dim, nVec > &v, t_index id)
-
struct PointCloudFunctional
Public Types
-
using coord_t = real
-
using coord_t = real
-
struct PointCloudKDTree
Public Types
-
using coord_t = real
-
using coord_t = real
-
struct PointCloudKDTreeCoordPair
Public Types
-
using coord_t = real
-
using coord_t = real
-
struct PrepareMeshOptions
Public Members
-
int reorderCells = 0
-
int reorderParts = 1
-
bool buildSerialOut = true
-
int reorderCells = 0
-
struct ReorderInput
Public Members
-
std::vector<EntityReorderMap> explicitMaps
-
std::vector<FollowSpec> follows
-
std::unordered_set<EntityKind> destroyKinds
-
std::vector<EntityReorderMap> explicitMaps
-
struct ReorderPlan
Public Functions
-
void apply(ReorderRegistry ®istry, const MPIInfo &mpi) const
-
template<class TPair>
inline void remapEntries(TPair &pair, EntityKind targetKind) const
-
template<class TPair>
inline void relocateRows(TPair &pair, EntityKind sourceKind, const MPIInfo &mpi) const
Public Members
-
std::unordered_map<EntityKind, PermutationTransfer> transfers
-
std::unordered_map<EntityKind, PermutationTransfer::LookupResult> lookups
-
std::unordered_set<EntityKind> reorderedKinds
-
bool isLocalOnly = {false}
Public Static Functions
-
static ReorderPlan build(const ReorderInput &input, const ReorderRegistry ®istry, const MPIInfo &mpi)
-
void apply(ReorderRegistry ®istry, const MPIInfo &mpi) const
-
struct ReorderRegistry
Public Functions
-
inline void registerAdj(AdjKind kind, AdjRemapFn remap, AdjRelocateFn relocate, std::string name = {})
-
inline void registerCompanion(EntityKind kind, AdjRelocateFn fn, std::string name = {})
-
inline void registerGlobalMapping(EntityKind kind, ssp<GlobalOffsetsMapping> gm)
-
inline ssp<GlobalOffsetsMapping> getGlobalMapping(EntityKind kind) const
Public Members
-
std::vector<AdjEntry> adjs
-
std::vector<CompanionEntry> companions
-
std::unordered_map<EntityKind, ssp<GlobalOffsetsMapping>> globalMappings
-
std::unordered_map<EntityKind, std::vector<index>> pullSets
-
inline void registerAdj(AdjKind kind, AdjRemapFn remap, AdjRelocateFn relocate, std::string name = {})
-
struct SmallCoordsAsVector : public tSmallCoords
-
struct SmoothSolverSetup
-
struct SubEntityDesc
-
struct SubEntityQuery
Subclassed by DNDS::Geom::SubEntityQueryPbi
-
struct SubEntityQueryPbi : public DNDS::Geom::SubEntityQuery
Public Members
-
std::function<void(index iParent, int iSub, const std::function<NodePeriodicBits(int)> &parentPbi, NodePeriodicBits *out)> extractPbi
-
std::function<void(index iParent, int iSub, const std::function<NodePeriodicBits(int)> &parentPbi, NodePeriodicBits *out)> extractPbi
-
struct SupportAdj
-
struct tGPointPortable
-
struct tPointPortable
-
struct UnstructuredMesh : public DNDS::DeviceTransferable<UnstructuredMesh>
Public Functions
-
template<class TPair>
inline void EnsureGhostMapping(TPair &pair)
-
void RecoverNode2CellAndNode2Bnd()
-
void RecoverCell2CellAndBnd2Cell()
-
void BuildGhostPrimary(int nGhostLayers = 1)
-
void fillRegistry(MeshConnectivity &dag) const
-
ReorderRegistry buildReorderRegistry(const std::unordered_set<EntityKind> &destroyKinds = {})
-
void ReorderEntities(const ReorderInput &input)
-
ReorderPlan buildReorderPlan(const ReorderInput &input)
-
ReorderInput resolveFollows(const ReorderInput &input, const ReorderRegistry ®)
-
tLocalMatStruct GetCell2CellFaceVLocal(bool onLocalPartition = false)
-
void ReorderLocalCells(int nParts = 1, int nPartsInner = 1)
-
void ReorderLocalCellsLegacy(int nParts = 1, int nPartsInner = 1)
-
inline index NumCellGlobal()
-
inline index NumNodeGlobal()
-
inline index NumFaceGlobal()
-
inline index NumBndGlobal()
-
template<class tC2n>
inline void _detail_GetCoords(const tC2n &c2n, tSmallCoords &cs)
-
template<class tC2n, class tCoordExt>
inline void _detail_GetCoords(const tC2n &c2n, tSmallCoords &cs, tCoordExt &coo)
-
template<class tC2n, class tC2nPbi>
inline void _detail_GetCoordsOnElem(const tC2n &c2n, const tC2nPbi &c2nPbi, tSmallCoords &cs)
-
template<class tC2n, class tC2nPbi, class tCoordExt>
inline void _detail_GetCoordsOnElem(const tC2n &c2n, const tC2nPbi &c2nPbi, tSmallCoords &cs, tCoordExt &coo)
-
template<class FA, class FB, class F0 = std::function<void(void)>>
inline auto CellOtherCellPeriodicHandle(index iFace, rowsize if2c, FA &&fA, FB &&fB, F0 &&f0 =[]() {})
-
void ReadSerializeAndDistribute(Serializer::SerializerBaseSSP serializerP, const std::string &name, const PartitionOptions &partitionOptions)
Public Members
-
tCoordPair coords
-
tPbiPair cell2nodePbi
-
AdjPairTracked<tAdjPair> node2cell
-
AdjPairTracked<tAdjPair> cell2face
-
tPbiPair face2nodePbi
-
AdjPairTracked<tAdjPair> cell2cellFace
-
std::vector<index> node2parentNode
-
std::vector<index> vtkCell2nodeOffsets
-
tCoordPair coordsElevDisp
-
tLocalMatStruct cell2cellFaceVLocalParts
-
tCoordPair nodeWallDist
Public Static Functions
-
template<class TAdj, class TFn>
static inline void ConvertAdjEntries(TAdj &adj, index nRows, TFn &&fn)
-
struct ElevationInfo
-
struct HDF5OutSetting
-
struct WallDistOptions
-
template<class TPair>
-
template<DeviceBackend B>
struct UnstructuredMeshDeviceView Public Functions
-
template<class FA, class FB, class F0>
inline DNDS_DEVICE_CALLABLE auto CellOtherCellPeriodicHandle(index iFace, rowsize if2c, FA &&fA, FB &&fB, F0 &&f0 =[]() {})
- template<class tC2n> inline DNDS_DEVICE_CALLABLE void _detail_GetCoords (const tC2n &c2n, tSmallCoords &cs)
- template<class tC2n, class tCoordExt> inline DNDS_DEVICE_CALLABLE void _detail_GetCoords (const tC2n &c2n, tSmallCoords &cs, tCoordExt &coo)
- template<class tC2n, class tC2nPbi> inline DNDS_DEVICE_CALLABLE void _detail_GetCoordsOnElem (const tC2n &c2n, const tC2nPbi &c2nPbi, tSmallCoords &cs)
- template<class tC2n, class tC2nPbi, class tCoordExt> inline DNDS_DEVICE_CALLABLE void _detail_GetCoordsOnElem (const tC2n &c2n, const tC2nPbi &c2nPbi, tSmallCoords &cs, tCoordExt &coo)
Public Members
-
tCoordPair::t_deviceView<B> coords
-
AdjPairTrackedDeviceView<B, tAdjPair::t_arr> cell2face
-
template<class FA, class FB, class F0>
-
struct UnstructuredMeshSerialRW
Public Functions
-
template<class tC2n, class tCoordExt>
inline void _detail_GetCoordsSerial(const tC2n &c2n, tSmallCoords &cs, tCoordExt &coo)
-
template<class tC2n, class tC2nPbi, class tCoordExt>
inline void _detail_GetCoordsOnElemSerial(const tC2n &c2n, const tC2nPbi &c2nPbi, tSmallCoords &cs, tCoordExt &coo)
-
inline void GetCoordsOnCellSerial(index iCell, tSmallCoords &cs, tCoord &coo)
-
void ReadFromCGNSSerial(const std::string &fName, const t_FBCName_2_ID &FBCName_2_ID)
-
void BuildCell2Cell()
-
void BuildSerialOut()
-
void PrintSerialPartPltBinaryDataArray(std::string fname, int arraySiz, int arraySizPoint, const tFGetName &names, const tFGetData &data, const tFGetName &namesPoint, const tFGetData &dataPoint, double t, int flag)
-
void PrintSerialPartVTKDataArray(std::string fname, std::string seriesName, int arraySiz, int vecArraySiz, int arraySizPoint, int vecArraySizPoint, const tFGetName &names, const tFGetData &data, const tFGetName &vectorNames, const tFGetVecData &vectorData, const tFGetName &namesPoint, const tFGetData &dataPoint, const tFGetName &vectorNamesPoint, const tFGetVecData &vectorDataPoint, double t, int flag = 0)
-
template<class tC2n, class tCoordExt>
-
namespace Adj
Variables
-
constexpr AdjKind Cell2Node = {EntityKind::Cell, EntityKind::Node}
-
constexpr AdjKind Cell2Face = {EntityKind::Cell, EntityKind::Face}
-
constexpr AdjKind Cell2Edge = {EntityKind::Cell, EntityKind::Edge}
-
constexpr AdjKind Face2Node = {EntityKind::Face, EntityKind::Node}
-
constexpr AdjKind Face2Edge = {EntityKind::Face, EntityKind::Edge}
-
constexpr AdjKind Edge2Node = {EntityKind::Edge, EntityKind::Node}
-
constexpr AdjKind Bnd2Node = {EntityKind::Bnd, EntityKind::Node}
-
constexpr AdjKind Node2Cell = {EntityKind::Node, EntityKind::Cell}
-
constexpr AdjKind Node2Face = {EntityKind::Node, EntityKind::Face}
-
constexpr AdjKind Node2Edge = {EntityKind::Node, EntityKind::Edge}
-
constexpr AdjKind Node2Bnd = {EntityKind::Node, EntityKind::Bnd}
-
constexpr AdjKind Face2Cell = {EntityKind::Face, EntityKind::Cell}
-
constexpr AdjKind Edge2Face = {EntityKind::Edge, EntityKind::Face}
-
constexpr AdjKind Edge2Cell = {EntityKind::Edge, EntityKind::Cell}
-
constexpr AdjKind Bnd2Cell = {EntityKind::Bnd, EntityKind::Cell}
-
constexpr AdjKind Bnd2Face = {EntityKind::Bnd, EntityKind::Face}
-
constexpr AdjKind Face2Bnd = {EntityKind::Face, EntityKind::Bnd}
-
constexpr AdjKind Cell2Cell = {EntityKind::Cell, EntityKind::Cell, EntityKind::Node}
-
constexpr AdjKind Bnd2Bnd = {EntityKind::Bnd, EntityKind::Bnd, EntityKind::Node}
-
constexpr AdjKind Face2Face = {EntityKind::Face, EntityKind::Face, EntityKind::Node}
-
constexpr AdjKind Cell2CellFace = {EntityKind::Cell, EntityKind::Cell, EntityKind::Face}
-
constexpr AdjKind Cell2Node = {EntityKind::Cell, EntityKind::Node}
-
namespace Base
Typedefs
-
using t_diffOpIJK2I = std::tuple<int, std::array<int, 3>, std::array<std::array<int, 3>, 3>, std::array<std::array<std::array<int, 3>, 3>, 3>>
Functions
-
template<int dim>
constexpr int ndiffSizS(int i)
-
template<int dim>
constexpr int ndiff2order(int rows)
-
template<int dim, int NDiffC>
constexpr t_diffOpIJK2I _get_diffOperatorIJK2I(const std::array<std::array<int, 3>, NDiffC> &diffOps)
-
template<int dim>
constexpr auto &getDiffOperatorIJK2I()
-
template<int dim, int order>
constexpr int PolynomialNDOF()
-
static inline real FPolynomial3D(int px, int py, int pz, int dx, int dy, int dz, real x, real y, real z)
-
template<class TDIBJ>
void FPolynomialFill2D(TDIBJ &T, real x, real y, real z, real lx, real ly, real lz, int rows, int cols)
-
template<class TDIBJ>
void FPolynomialFill3D(TDIBJ &T, real x, real y, real z, real lx, real ly, real lz, int rows, int cols)
-
template<int dim>
inline int GetNDof(int maxOrder)
-
template<int dim = 3, int rank = 0, int powV = 1, class VLe, class VRi>
real NormSymDiffOrderTensorV(VLe &&Le, VRi &&Ri)
-
template<int dim, int rank, class VLe, class Trans>
void TransSymDiffOrderTensorV(VLe &&Le, Trans &&trans)
-
template<int dim, class TMat>
inline void ConvertDiffsLinMap(TMat &&mat, const Geom::tGPoint &dXijdXi)
Variables
-
static const int ndiff = 3
-
static const int ndiffSiz = 20
-
static const int ndiffSiz2D = 10
-
static const std::array<int, ndiff + 1> ndiffSizC = {1, 4, 10, 20}
-
static const std::array<int, ndiff + 1> ndiffSizC2D = {1, 3, 6, 10}
-
static const std::array<std::array<int, 3>, ndiffSiz> diffOperatorOrderList{{{{0, 0, 0}}, {{1, 0, 0}}, {{0, 1, 0}}, {{0, 0, 1}}, {{2, 0, 0}}, {{0, 2, 0}}, {{0, 0, 2}}, {{1, 1, 0}}, {{0, 1, 1}}, {{1, 0, 1}}, {{3, 0, 0}}, {{0, 3, 0}}, {{0, 0, 3}}, {{2, 1, 0}}, {{1, 2, 0}}, {{0, 2, 1}}, {{0, 1, 2}}, {{1, 0, 2}}, {{2, 0, 1}}, {{1, 1, 1}},}}
-
static const std::array<std::array<int, 3>, ndiffSiz2D> diffOperatorOrderList2D = {{{{0, 0, 0}}, {{1, 0, 0}}, {{0, 1, 0}}, {{2, 0, 0}}, {{1, 1, 0}}, {{0, 2, 0}}, {{3, 0, 0}}, {{2, 1, 0}}, {{1, 2, 0}}, {{0, 3, 0}},}}
-
static const std::array<std::array<int, ndiff>, ndiffSiz> diffOperatorDimList{{{{}}, {{0}}, {{1}}, {{2}}, {{0, 0}}, {{1, 1}}, {{2, 2}}, {{0, 1}}, {{1, 2}}, {{0, 2}}, {{0, 0, 0}}, {{1, 1, 1}}, {{2, 2, 2}}, {{0, 0, 1}}, {{0, 1, 1}}, {{1, 1, 2}}, {{1, 2, 2}}, {{0, 2, 2}}, {{0, 0, 2}}, {{0, 1, 2}},}}
-
static const std::array<std::array<int, ndiff>, ndiffSiz2D> diffOperatorDimList2D = {{{{}}, {{0}}, {{1}}, {{0, 0}}, {{0, 1}}, {{1, 1}}, {{0, 0, 0}}, {{0, 0, 1}}, {{0, 1, 1}}, {{1, 1, 1}},}}
-
static const t_diffOpIJK2I diffOperatorIJK2I = _get_diffOperatorIJK2I<3, ndiffSiz>(diffOperatorOrderList)
-
static const t_diffOpIJK2I diffOperatorIJK2I2D = _get_diffOperatorIJK2I<2, ndiffSiz2D>(diffOperatorOrderList2D)
-
static const std::array<std::array<int, ndiff + 1>, ndiff + 1> dFactorials = {{{1, 0, 0, 0}, {1, 1, 0, 0}, {1, 2, 2, 0}, {1, 3, 6, 6}}}
-
static const std::array<int, ndiff * 3 + 1> factorials = {1, 1, 1 * 2, 1 * 2 * 3, 1 * 2 * 3 * 4, 1 * 2 * 3 * 4 * 5, 1 * 2 * 3 * 4 * 5 * 6, 1 * 2 * 3 * 4 * 5 * 6 * 7, 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8, 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9,}
-
static const std::array<int, ndiffSiz2D> diffNCombs2D{1, 1, 1, 1, 2, 1, 1, 3, 3, 1}
-
static const std::array<int, ndiffSiz> diffNCombs{1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 6}
-
class CFVPeriodicity : public DNDS::Geom::Periodicity
-
using t_diffOpIJK2I = std::tuple<int, std::array<int, 3>, std::array<std::array<int, 3>, 3>, std::array<std::array<std::array<int, 3>, 3>, 3>>
-
namespace detail
Functions
-
inline CellPermutationResult ComputeCellPermutation(tLocalMatStruct &cell2cellFaceV, const tAdjPair &cell2cell, index nCell, int nParts, int nPartsInner)
-
struct CellPermutationResult
-
inline CellPermutationResult ComputeCellPermutation(tLocalMatStruct &cell2cellFaceV, const tAdjPair &cell2cell, index nCell, int nParts, int nPartsInner)
-
namespace Elem
Typedefs
-
using tNj = Eigen::RowVector<t_real, Eigen::Dynamic>
-
using tD1Nj = Eigen::Matrix<t_real, 3, Eigen::Dynamic>
-
using tD01Nj = Eigen::Matrix<t_real, 4, Eigen::Dynamic>
-
using tDiNj = Eigen::Matrix<t_real, Eigen::Dynamic, Eigen::Dynamic>
-
using tPy_ElemType = py::enum_<ElemType>
-
using tElevSpan = std::array<t_index, elevSpanMaxWidth>
-
using tBisectSub = std::array<t_index, bisectSubMaxNodes>
-
using tEdgeNodes = std::array<t_index, edgeNodeMaxWidth>
-
using tVTKNodeOrder = std::array<int, vtkNodeOrderMax>
Enums
-
enum ElemType
Values:
-
enumerator UnknownElem
-
enumerator Line2
-
enumerator Line3
-
enumerator Tri3
-
enumerator Tri6
-
enumerator Quad4
-
enumerator Quad9
-
enumerator Tet4
-
enumerator Tet10
-
enumerator Hex8
-
enumerator Hex27
-
enumerator Prism6
-
enumerator Prism18
-
enumerator Pyramid5
-
enumerator Pyramid14
-
enumerator ElemType_NUM
-
enumerator UnknownElem
-
enum ParamSpace
Values:
-
enumerator UnknownPSpace
-
enumerator LineSpace
-
enumerator TriSpace
-
enumerator QuadSpace
-
enumerator TetSpace
-
enumerator HexSpace
-
enumerator PrismSpace
-
enumerator PyramidSpace
-
enumerator ParamSpace_NUM
-
enumerator UnknownPSpace
Functions
- DNDS_DEVICE_CALLABLE constexpr ParamSpace ElemType_to_ParamSpace (const ElemType t)
- DNDS_DEVICE_CALLABLE constexpr ElemType GetFaceType (ElemType t_v, t_index iFace)
- DNDS_DEVICE_CALLABLE constexpr t_index GetNumEdges (ElemType t_v)
- DNDS_DEVICE_CALLABLE constexpr ElemType GetEdgeType (ElemType t_v, t_index iEdge)
- DNDS_DEVICE_CALLABLE constexpr t_real ParamSpaceVol (ParamSpace ps)
- DNDS_DEVICE_CALLABLE constexpr int GetElemElevation_O1O2_NumNode (ElemType t)
- DNDS_DEVICE_CALLABLE constexpr ElemType GetElemElevation_O1O2_ElevatedType (ElemType t)
- DNDS_DEVICE_CALLABLE constexpr ElemType GetElemElevation_O1O2_NodeSpanType (ElemType t, t_index ine)
- DNDS_DEVICE_CALLABLE constexpr ElemType GetElemO1 (ParamSpace ps)
- DNDS_DEVICE_CALLABLE constexpr t_index GetO2ElemBisectNum (ElemType t)
- DNDS_DEVICE_CALLABLE constexpr ElemType GetO2ElemBisectElem (ElemType t, t_index i)
- static DNDS_DEVICE_CALLABLE constexpr real _iipow (real x, int y)
- template<int diffOrder, class TPoint, class TArray> DNDS_DEVICE_CALLABLE void ShapeFunc_DiNj (ElemType t, const TPoint &p, TArray &&v)
-
inline bool cellsAreFaceConnected(const std::vector<DNDS::index> &nodes_A, const std::vector<DNDS::index> &nodes_B, Element eA, Element eB)
-
inline bool cellsAreFaceConnected(const std::vector<DNDS::index> &verts_A, const std::vector<DNDS::index> &nodes_B)
-
template<class tCoordsIn>
tJacobi ShapeJacobianCoordD01Nj(const tCoordsIn &cs, Eigen::Ref<const tD01Nj> DiNj)
-
template<class tCoordsIn>
tPoint PPhysicsCoordD01Nj(const tCoordsIn &cs, Eigen::Ref<const tD01Nj> DiNj)
-
inline tPoint GetElemNodeMajorSpan(const tSmallCoords &coords)
-
inline t_index GetO2ElemBisectVariant(Element e, const tSmallCoords &coords)
-
inline void pybind11_ElemType_define(py::module_ &m)
- DNDS_DEVICE_CALLABLE constexpr t_real ParamSpaceVolume (ParamSpace ps)
- DNDS_DEVICE_CALLABLE constexpr ElemType ParamSpaceO1Elem (ParamSpace ps)
- template<typename Func> DNDS_DEVICE_CALLABLE constexpr decltype(auto) DispatchElementType (ElemType t, Func &&func)
-
inline auto GetQuadPatches(Quadrature &q)
-
template<int dim>
real CellJacobianDet(const Geom::tSmallCoords &coordsCell, const Geom::Elem::tD01Nj &DiNj)
-
inline real CellJacobianDet(int dim, const Geom::tSmallCoords &coordsCell, const Geom::Elem::tD01Nj &DiNj)
-
template<int dim>
real FaceJacobianDet(const Geom::tSmallCoords &coords, const Geom::Elem::tD01Nj &DiNj)
-
inline real FaceJacobianDet(int dim, const Geom::tSmallCoords &coords, const Geom::Elem::tD01Nj &DiNj)
-
constexpr t_index GetQuadratureScheme(ParamSpace ps, int int_order)
-
template<class TPoint>
inline void GetQuadraturePoint(ParamSpace ps, t_index scheme, int iG, TPoint &pParam, t_real &w)
Variables
-
static constexpr int elevSpanMaxWidth = 8
-
static constexpr int bisectSubMaxNodes = 8
-
static constexpr int edgeNodeMaxWidth = 3
-
static constexpr int vtkNodeOrderMax = 27
-
static const int CellNumNodeMax = 27
-
static const t_index INT_SCHEME_Line_1 = 1
-
static const t_index INT_SCHEME_Line_2 = 2
-
static const t_index INT_SCHEME_Line_3 = 3
-
static const t_index INT_SCHEME_Line_4 = 4
-
static const t_index INT_SCHEME_Quad_1 = 1
-
static const t_index INT_SCHEME_Quad_4 = 4
-
static const t_index INT_SCHEME_Quad_9 = 9
-
static const t_index INT_SCHEME_Quad_16 = 16
-
static const t_index INT_SCHEME_Tri_1 = 1
-
static const t_index INT_SCHEME_Tri_3 = 3
-
static const t_index INT_SCHEME_Tri_6 = 6
-
static const t_index INT_SCHEME_Tri_7 = 7
-
static const t_index INT_SCHEME_Tri_12 = 12
-
static const t_index INT_SCHEME_Tet_1 = 1
-
static const t_index INT_SCHEME_Tet_4 = 4
-
static const t_index INT_SCHEME_Tet_8 = 8
-
static const t_index INT_SCHEME_Tet_14 = 14
-
static const t_index INT_SCHEME_Tet_24 = 24
-
static const t_index INT_SCHEME_Hex_1 = 1
-
static const t_index INT_SCHEME_Hex_8 = 8
-
static const t_index INT_SCHEME_Hex_27 = 27
-
static const t_index INT_SCHEME_Hex_64 = 64
-
static const t_index INT_SCHEME_Prism_1 = 1 * 1
-
static const t_index INT_SCHEME_Prism_6 = 3 * 2
-
static const t_index INT_SCHEME_Prism_18 = 6 * 3
-
static const t_index INT_SCHEME_Prism_21 = 7 * 3
-
static const t_index INT_SCHEME_Prism_48 = 12 * 4
-
static const t_index INT_SCHEME_Pyramid_1 = 1
-
static const t_index INT_SCHEME_Pyramid_8 = 8
-
static const t_index INT_SCHEME_Pyramid_27 = 27
-
static const t_index INT_SCHEME_Pyramid_64 = 64
-
static const int INT_ORDER_MAX = 6
-
struct Element
Public Functions
- inline DNDS_DEVICE_CALLABLE constexpr t_index GetNumEdges () const
- inline DNDS_DEVICE_CALLABLE constexpr Element ObtainEdge (t_index iEdge) const
-
template<class TIn, class TOut>
inline void ExtractEdgeNodes(t_index iEdge, const TIn &nodes, TOut &edgeNodesOut)
-
template<class TIn, class TOut>
inline void ExtractFaceNodes(t_index iFace, const TIn &nodes, TOut &faceNodesOut)
- inline DNDS_DEVICE_CALLABLE void GetNj (const tPoint &pParam, tNj &Nj) const
- inline DNDS_DEVICE_CALLABLE void GetD1Nj (const tPoint &pParam, tD1Nj &D1Nj) const
-
template<ElemType t>
struct ElementTraits
-
template<>
struct ElementTraits<Hex27>
-
template<>
struct ElementTraits<Hex8>
-
template<>
struct ElementTraits<Line2>
-
template<>
struct ElementTraits<Line3>
-
template<>
struct ElementTraits<Prism18>
-
template<>
struct ElementTraits<Prism6>
-
template<>
struct ElementTraits<Pyramid14>
-
template<>
struct ElementTraits<Pyramid5>
-
template<>
struct ElementTraits<Quad4>
-
template<>
struct ElementTraits<Quad9>
-
template<>
struct ElementTraits<Tet10>
-
template<>
struct ElementTraits<Tet4>
-
template<>
struct ElementTraits<Tri3>
-
template<>
struct ElementTraits<Tri6>
-
struct Quadrature
Public Functions
- template<class TAcc, class TFunc> inline DNDS_DEVICE_CALLABLE void Integration (TAcc &buf, TFunc &&f)
- template<class TAcc, class TFunc> inline DNDS_DEVICE_CALLABLE std::enable_if_t< std::is_invocable_v< TFunc, TAcc &, int > > IntegrationSimple (TAcc &buf, TFunc &&f)
- template<class TAcc, class TFunc> inline DNDS_DEVICE_CALLABLE std::enable_if_t< std::is_invocable_v< TFunc, TAcc &, int, real > > IntegrationSimple (TAcc &buf, TFunc &&f)
-
template<ElemType>
struct ShapeFuncImpl
-
template<>
struct ShapeFuncImpl<Hex27>
-
template<>
struct ShapeFuncImpl<Hex8>
-
template<>
struct ShapeFuncImpl<Line2>
-
template<>
struct ShapeFuncImpl<Line3>
-
template<>
struct ShapeFuncImpl<Prism18>
-
template<>
struct ShapeFuncImpl<Prism6>
-
template<>
struct ShapeFuncImpl<Pyramid14>
-
template<>
struct ShapeFuncImpl<Pyramid5>
-
template<>
struct ShapeFuncImpl<Quad4>
-
template<>
struct ShapeFuncImpl<Quad9>
-
template<>
struct ShapeFuncImpl<Tet10>
-
template<>
struct ShapeFuncImpl<Tet4>
-
template<>
struct ShapeFuncImpl<Tri3>
-
template<>
struct ShapeFuncImpl<Tri6>
-
class SummationNoOp
-
namespace detail
Variables
-
static struct DNDS::Geom::Elem::detail::TNBufferAtQuadrature NBufferAtQuadrature
-
static constexpr std::array<std::array<t_real, 1>, 2> GaussJacobi_01A2B0_1{{{{0.250000000000000}}, {{0.333333333333333}}}}
-
static constexpr std::array<std::array<t_real, 2>, 2> GaussJacobi_01A2B0_2{{{{0.122514822655441, 0.544151844011225}}, {{0.232547451253508, 0.100785882079825}}}}
-
static constexpr std::array<std::array<t_real, 3>, 2> GaussJacobi_01A2B0_3{{{{0.072994024073150, 0.347003766038352, 0.705002209888499}}, {{0.157136361064887, 0.146246269259866, 0.029950703008581}}}}
-
static constexpr std::array<std::array<t_real, 4>, 2> GaussJacobi_01A2B0_4{{{{0.048500549446997, 0.238600737551862, 0.517047295104367, 0.795851417896773}}, {{0.110888415611278, 0.143458789799214, 0.068633887172923, 0.010352240749918}}}}
-
static constexpr std::array<std::array<t_real, 5>, 2> GaussJacobi_01A2B0_5{{{{0.034578939918215, 0.173480320771696, 0.389886387065519, 0.634333472630887, 0.851054212947016}}, {{0.081764784285771, 0.126198961899911, 0.089200161221590, 0.032055600722962, 0.004113825203099}}}}
-
static constexpr std::array<std::array<t_real, 1>, 2> GaussLegendre_1{{{{0}}, {{2}}}}
-
static constexpr std::array<std::array<t_real, 2>, 2> GaussLegendre_2{{{{-0.577350269189626, 0.577350269189626}}, {{1, 1}}}}
-
static constexpr std::array<std::array<t_real, 3>, 2> GaussLegendre_3{{{{-0.774596669241483, 0, 0.774596669241483}}, {{0.555555555555555, 0.888888888888889, 0.555555555555555}}}}
-
static constexpr std::array<std::array<t_real, 4>, 2> GaussLegendre_4{{{{-0.861136311594053, -0.339981043584856, 0.339981043584856, 0.861136311594053}}, {{0.347854845137454, 0.652145154862546, 0.652145154862546, 0.347854845137454}}}}
-
static constexpr std::array<std::array<t_real, 5>, 2> GaussLegendre_5{{{{-0.906179845938664, -0.538469310105683, 0, 0.538469310105683, 0.906179845938664}}, {{0.236926885056189, 0.478628670499366, 0.568888888888889, 0.478628670499366, 0.236926885056189}}}}
-
static constexpr std::array<std::array<t_real, 1>, 4> HammerTet_1{{{{0.25}}, {{0.25}}, {{0.25}}, {{0.1666666666666667}}}}
-
static constexpr std::array<std::array<t_real, 4>, 4> HammerTet_4{{{{0.1381966011250105, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105}}, {{0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105}}, {{0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105}}, {{0.04166666666666666, 0.04166666666666666, 0.04166666666666666, 0.04166666666666666}}}}
-
static constexpr std::array<std::array<t_real, 8>, 4> HammerTet_8{{{{0.1069940147705369, 0.1069940147705369, 0.6790179556883893, 0.1069940147705369, 0.3280585716625127, 0.3280585716625127, 0.01582428501246191, 0.3280585716625127}}, {{0.1069940147705369, 0.6790179556883893, 0.1069940147705369, 0.1069940147705369, 0.3280585716625127, 0.01582428501246191, 0.3280585716625127, 0.3280585716625127}}, {{0.6790179556883893, 0.1069940147705369, 0.1069940147705369, 0.1069940147705369, 0.01582428501246191, 0.3280585716625127, 0.3280585716625127, 0.3280585716625127}}, {{0.01859314997209119, 0.01859314997209119, 0.01859314997209119, 0.01859314997209119, 0.02307351669457548, 0.02307351669457548, 0.02307351669457548, 0.02307351669457548}}}}
-
static constexpr std::array<std::array<t_real, 14>, 4> HammerTet_14{{{{0.09273525031089125, 0.09273525031089125, 0.7217942490673263, 0.09273525031089125, 0.3108859192633008, 0.3108859192633008, 0.06734224221009777, 0.3108859192633008, 0.04550370412564952, 0.4544962958743505, 0.04550370412564952, 0.04550370412564952, 0.4544962958743505, 0.4544962958743505}}, {{0.09273525031089125, 0.7217942490673263, 0.09273525031089125, 0.09273525031089125, 0.3108859192633008, 0.06734224221009777, 0.3108859192633008, 0.3108859192633008, 0.4544962958743505, 0.04550370412564952, 0.04550370412564952, 0.4544962958743505, 0.04550370412564952, 0.4544962958743505}}, {{0.7217942490673263, 0.09273525031089125, 0.09273525031089125, 0.09273525031089125, 0.06734224221009777, 0.3108859192633008, 0.3108859192633008, 0.3108859192633008, 0.4544962958743505, 0.4544962958743505, 0.4544962958743505, 0.04550370412564952, 0.04550370412564952, 0.04550370412564952}}, {{0.01224884051939367, 0.01224884051939367, 0.01224884051939367, 0.01224884051939367, 0.01878132095300264, 0.01878132095300264, 0.01878132095300264, 0.01878132095300264, 0.0070910034628469, 0.0070910034628469, 0.0070910034628469, 0.0070910034628469, 0.0070910034628469, 0.0070910034628469}}}}
-
static constexpr std::array<std::array<t_real, 24>, 4> HammerTet_24{{{{0.2146028712591523, 0.2146028712591523, 0.3561913862225431, 0.2146028712591523, 0.3223378901422754, 0.3223378901422754, 0.0329863295731736, 0.3223378901422754, 0.04067395853461131, 0.04067395853461131, 0.8779781243961661, 0.04067395853461131, 0.6030056647916491, 0.6030056647916491, 0.06366100187501755, 0.2696723314583158, 0.06366100187501755, 0.06366100187501755, 0.2696723314583158, 0.06366100187501755, 0.06366100187501755, 0.06366100187501755, 0.2696723314583158, 0.6030056647916491}}, {{0.2146028712591523, 0.3561913862225431, 0.2146028712591523, 0.2146028712591523, 0.3223378901422754, 0.0329863295731736, 0.3223378901422754, 0.3223378901422754, 0.04067395853461131, 0.8779781243961661, 0.04067395853461131, 0.04067395853461131, 0.06366100187501755, 0.06366100187501755, 0.06366100187501755, 0.6030056647916491, 0.2696723314583158, 0.6030056647916491, 0.06366100187501755, 0.2696723314583158, 0.06366100187501755, 0.6030056647916491, 0.06366100187501755, 0.2696723314583158}}, {{0.3561913862225431, 0.2146028712591523, 0.2146028712591523, 0.2146028712591523, 0.0329863295731736, 0.3223378901422754, 0.3223378901422754, 0.3223378901422754, 0.8779781243961661, 0.04067395853461131, 0.04067395853461131, 0.04067395853461131, 0.2696723314583158, 0.06366100187501755, 0.6030056647916491, 0.06366100187501755, 0.6030056647916491, 0.06366100187501755, 0.6030056647916491, 0.06366100187501755, 0.2696723314583158, 0.2696723314583158, 0.06366100187501755, 0.06366100187501755}}, {{0.006653791709694545, 0.006653791709694545, 0.006653791709694545, 0.006653791709694545, 0.009226196923942479, 0.009226196923942479, 0.009226196923942479, 0.009226196923942479, 0.001679535175886773, 0.001679535175886773, 0.001679535175886773, 0.001679535175886773, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285}}}}
-
static constexpr std::array<std::array<t_real, 1>, 3> HammerTri_1{{{{1. / 3.}}, {{1. / 3.}}, {{1. / 2.}}}}
-
static constexpr std::array<std::array<t_real, 3>, 3> HammerTri_3{{{{2. / 3., 1. / 6., 1. / 6.}}, {{1. / 6., 2. / 3., 1. / 6.}}, {{1. / 6., 1. / 6., 1. / 6.}}}}
-
static constexpr std::array<std::array<t_real, 6>, 3> HammerTri_6{{{{0.09157621350977102, 0.8168475729804585, 0.09157621350977052, 0.445948490915965, 0.10810301816807, 0.445948490915965}}, {{0.09157621350977102, 0.09157621350977052, 0.8168475729804585, 0.445948490915965, 0.445948490915965, 0.10810301816807}}, {{0.054975871827661, 0.054975871827661, 0.054975871827661, 0.1116907948390057, 0.1116907948390057, 0.1116907948390057}}}}
-
static constexpr std::array<std::array<t_real, 7>, 3> HammerTri_7{{{{0.3333333333333335, 0.470142064105115, 0.05971587178977, 0.470142064105115, 0.1012865073234565, 0.7974269853530875, 0.1012865073234565}}, {{0.3333333333333335, 0.470142064105115, 0.470142064105115, 0.05971587178977, 0.1012865073234565, 0.1012865073234565, 0.7974269853530875}}, {{0.1125, 0.066197076394253, 0.066197076394253, 0.066197076394253, 0.0629695902724135, 0.0629695902724135, 0.0629695902724135}}}}
-
static constexpr std::array<std::array<t_real, 12>, 3> HammerTri_12{{{{0.2492867451709105, 0.501426509658179, 0.2492867451709105, 0.063089014491502, 0.8738219710169954, 0.063089014491502, 0.3103524510337845, 0.05314504984481699, 0.6365024991213986, 0.05314504984481699, 0.6365024991213986, 0.3103524510337845}}, {{0.2492867451709105, 0.2492867451709105, 0.501426509658179, 0.063089014491502, 0.063089014491502, 0.8738219710169954, 0.05314504984481699, 0.3103524510337845, 0.05314504984481699, 0.6365024991213986, 0.3103524510337845, 0.6365024991213986}}, {{0.05839313786318975, 0.05839313786318975, 0.05839313786318975, 0.0254224531851035, 0.0254224531851035, 0.0254224531851035, 0.04142553780918675, 0.04142553780918675, 0.04142553780918675, 0.04142553780918675, 0.04142553780918675, 0.04142553780918675}}}}
-
struct TNBufferAtQuadrature
-
static struct DNDS::Geom::Elem::detail::TNBufferAtQuadrature NBufferAtQuadrature
-
using tNj = Eigen::RowVector<t_real, Eigen::Dynamic>
-
namespace OpenFOAM
Functions
-
inline int passOpenFOAMSpaces(std::istream &in)
-
inline bool getUntil(std::istream &in, char v, std::string &buf)
-
inline void readOpenFOAMList(std::istream &in, const std::function<void(std::istream&)> &readOneItem)
-
inline void readOpenFOAMObj(std::istream &in, const std::function<void(const std::string&)> &readOneItemLine)
-
inline std::vector<std::string> readOpenFOAMHeader(std::istream &in)
-
struct OpenFOAMBoundaryCondition
-
struct OpenFOAMConverter
-
struct OpenFOAMReader
-
inline int passOpenFOAMSpaces(std::istream &in)
-
namespace RBF
Enums
-
enum RBFKernelType
Values:
-
enumerator UnknownRBFKernel
-
enumerator Distance
-
enumerator DistanceA1
-
enumerator InversedDistanceA1
-
enumerator InversedDistanceA1Compact
-
enumerator Gaussian
-
enumerator CPC2
-
enumerator CPC0
-
enumerator UnknownRBFKernel
Functions
- DNDS_DEFINE_ENUM_JSON (RBFKernelType, { {RBFKernelType::UnknownRBFKernel, nullptr}, {RBFKernelType::Distance, "Distance"}, {RBFKernelType::DistanceA1, "DistanceA1"}, {RBFKernelType::InversedDistanceA1, "InversedDistanceA1"}, {RBFKernelType::InversedDistanceA1Compact, "InversedDistanceA1Compact"}, {RBFKernelType::Gaussian, "Gaussian"}, {RBFKernelType::CPC2, "CPC2"}, {RBFKernelType::CPC0, "CPC0"}, }) inline bool KernelIsCompact(RBFKernelType t)
-
inline real GetMaxRij(const tSmallCoords ¢, const tSmallCoords &xs)
-
template<class TIn>
inline MatrixXR FRBFBasis(TIn RiXj, RBFKernelType kernel)
-
template<class Tcent, class Tx>
inline MatrixXR RBFCPC2(Tcent cent, Tx xs, real R, RBFKernelType kernel = Gaussian)
-
template<class TF>
inline MatrixXR RBFInterpolateSolveCoefs(const tSmallCoords &xs, const TF fs, real R, RBFKernelType kernel = Gaussian)
-
template<class TF>
inline MatrixXR RBFInterpolateSolveCoefsNoPoly(const tSmallCoords &xs, const TF fs, real R, RBFKernelType kernel = Gaussian)
-
enum RBFKernelType
-
using tPy_AutoAppendName2ID = py_class_ssp<AutoAppendName2ID>
Key Classes¶
Warning
doxygenclass: Cannot find class “DNDS::Geom::UnstructuredMesh” in doxygen xml output for project “DNDSR” from directory: /home/runner/work/DNDSR/DNDSR/build/docs/xml