DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
DNDS Namespace Reference

the host side operators are provided as implemented More...

Namespaces

namespace  CFV
 
namespace  Config
 Namespace for config field tag kwargs.
 
namespace  Debug
 
namespace  detail
 
namespace  Direct
 
namespace  ETensor
 
namespace  Euler
 
namespace  EulerP
 Namespace for the EulerP alternative evaluator module with GPU support.
 
namespace  Geom
 
namespace  HardEigen
 
namespace  IdealGas
 
namespace  Linear
 
namespace  Meta
 
namespace  MPI
 
namespace  ODE
 
namespace  OMP
 
namespace  Scalar
 
namespace  Serializer
 
namespace  TermColor
 

Classes

class  AdjacencyRow
 Non-owning span (pointer, size) into an ArrayAdjacency row. More...
 
class  Array
 Core 2D variable-length array container, the storage foundation of DNDSR. More...
 
struct  array_hash
 Hash functor for std::array<T, s>, combining element hashes via XOR. More...
 
class  ArrayAdjacency
 Mesh-connectivity array: ParArray<index> whose operator[] yields an AdjacencyRow typed view. More...
 
class  ArrayAdjacencyDeviceView
 Device-callable adjacency view: extends ArrayDeviceView so that indexing into a row returns an AdjacencyRow of indices. More...
 
class  ArrayDeviceView
 Non-owning device-callable view of an Array, specialised per DeviceBackend. More...
 
class  ArrayDeviceView< DeviceBackend::Host, T, _row_size, _row_max, _align >
 Host specialisation of ArrayDeviceView; identical to the host-side ArrayView. More...
 
class  ArrayDof
 Primary solver state container: an ArrayEigenMatrix pair with MPI-collective vector-space operations. More...
 
class  ArrayDofDeviceView
 Mutable device view of an ArrayDof father/son pair. More...
 
class  ArrayDofDeviceViewConst
 Const device view of an ArrayDof father/son pair. More...
 
class  ArrayDofOp
 
class  ArrayDofOp< DeviceBackend::Host, n_m, n_n >
 Host-side static dispatcher: implements every vector-space operation declared in DNDS_ARRAY_DOF_OP_FUNC_LIST for CPU execution. More...
 
class  ArrayDofSinglePack
 Helper for constructing a single ArrayDof with father, son, and transformer. More...
 
class  ArrayEigenMatrix
 ParArray<real> whose operator[] returns an Eigen::Map<Matrix<real, Ni, Nj>>. More...
 
class  ArrayEigenMatrixBatch
 CSR array storing a variable-sized batch of Eigen matrices per row. More...
 
class  ArrayEigenMatrixBatchDeviceView
 
class  ArrayEigenMatrixDeviceView
 Device-callable view onto ArrayEigenMatrix rows. More...
 
class  ArrayEigenUniMatrixBatch
 CSR array whose rows store a batch of identically-sized Eigen matrices. More...
 
class  ArrayEigenUniMatrixBatchDeviceView
 Device-callable view onto ArrayEigenUniMatrixBatch rows. More...
 
class  ArrayEigenVector
 ParArray<real, N> whose operator[] returns an Eigen::Map<Vector>. More...
 
class  ArrayEigenVectorDeviceView
 Device-callable view onto ArrayEigenVector rows. More...
 
class  ArrayIndex
 ArrayAdjacency<1> specialisation with an integer-typed operator[] (returns the single index by reference instead of a row wrapper). More...
 
class  ArrayIteratorBase
 CRTP base for row-granularity iterators over an Array / ArrayView. More...
 
class  ArrayLayout
 Compile-time layout descriptor deducing the concrete DataLayout from element type and row-size template arguments. More...
 
struct  ArrayPair
 Convenience bundle of a father, son, and attached ArrayTransformer. More...
 
struct  ArrayPairDeviceView
 Mutable device view onto an ArrayPair (for CUDA kernels). More...
 
struct  ArrayPairDeviceView_Base
 CRTP base implementing the unified-index accessors shared by ArrayPairDeviceView and ArrayPairDeviceViewConst. More...
 
struct  ArrayPairDeviceViewConst
 Const device view of a father-son array pair. More...
 
class  ArrayTransformer
 Ghost-communication engine for a father / son ParArray pair. More...
 
struct  ArrayTransformerType
 Type trait computing the ArrayTransformer type for a given Array type. More...
 
class  ArrayView
 Non-owning, device-callable view onto an Array. More...
 
struct  CheckResult
 Result of a single validation check. More...
 
struct  ConfigContext
 Runtime context supplied to context-aware validation checks. More...
 
class  ConfigRegistry
 Per-type singleton registry of config field metadata and validation checks. More...
 
class  ConfigSectionBuilder
 Builder object passed to the user's registration function. More...
 
struct  ConfigTypeTagOf
 
struct  ConfigTypeTagOf< bool >
 
struct  ConfigTypeTagOf< nlohmann::ordered_json >
 
struct  ConfigTypeTagOf< std::array< T, N > >
 
struct  ConfigTypeTagOf< std::string >
 
struct  ConfigTypeTagOf< std::vector< T > >
 
struct  ConfigTypeTagOf< T, std::enable_if_t< detail::is_eigen_type< T >::value > >
 
struct  ConfigTypeTagOf< T, std::enable_if_t< std::is_enum_v< T > > >
 C++ enum types serialize as JSON strings via nlohmann, so map to Enum. More...
 
struct  ConfigTypeTagOf< T, std::enable_if_t< std::is_floating_point_v< T > > >
 
struct  ConfigTypeTagOf< T, std::enable_if_t< std::is_integral_v< T > &&!std::is_same_v< T, bool > > >
 
class  CsvLog
 Append-only CSV logger with automatic file rotation after a line-count limit. More...
 
class  data_vector_base
 CRTP base offering operator[] / at on top of a derived's data() and size() accessors. Used by both #host_device_vector_r1 and (implicitly) #host_device_vector_r0. More...
 
struct  device_storage_factory
 Factory functions for constructing DeviceStorageBase instances of a specific backend. Specialised per backend so that the concrete type creation can live in backend-specific translation units. More...
 
struct  device_storage_factory< DeviceBackend::Host >
 
class  DeviceHostSingleAllocationBase
 Abstract single-allocation owning byte buffer. More...
 
class  DeviceHostSingleAllocationDirect
 Concrete DeviceHostSingleAllocationBase using std::vector<uint8_t> for host memory and DeviceStorage for device memory. More...
 
class  DeviceStorage
 Compile-time-specialised storage class; one definition per DeviceBackend. More...
 
class  DeviceStorage< DeviceBackend::Host >
 how to resolve int-rowsize duplicate? More...
 
class  DeviceStorageBase
 Abstract interface to a byte buffer owned by a specific backend. More...
 
class  DeviceTransferable
 CRTP mixin giving a class uniform to_device / to_host / device / getDeviceArrayBytes methods. More...
 
struct  deviceViewVector
 Contiguous host_device_vector of non-owning views, mirrored on a device. More...
 
class  EigenMatrixView
 
struct  Empty
 Trivially-copyable empty placeholder type that accepts any assignment. More...
 
struct  EmptyNoDefault
 Empty placeholder type without a default constructor; accepts any assignment. More...
 
class  ExprtkWrapperEvaluator
 Thin RAII wrapper over the exprtk expression library. More...
 
struct  FieldMeta
 Descriptor for a single configuration field. More...
 
class  GlobalOffsetsMapping
 Table mapping rank-local row indices to the global index space. More...
 
struct  has_static_CommMult
 here are some reasons to upgrade to C++20... More...
 
struct  has_static_CommMult< T, std::void_t< decltype(T::CommMult())> >
 
struct  has_static_CommType
 SFINAE trait detecting a static CommType member in T. More...
 
struct  has_static_CommType< T, std::void_t< decltype(T::CommType())> >
 
struct  host_device_vector_r0
 Legacy std::vector<T> subclass with an optional device mirror. More...
 
class  host_device_vector_r1
 Host + optional device vector of trivially copyable T. More...
 
class  HostDeviceEigenMatrix
 
struct  is_ssp
 Type trait that detects whether a type is a std::shared_ptr wrapping. More...
 
struct  is_ssp< ssp< T > >
 
struct  LogSimpleDIValue
 Storage-agnostic "either int or double" value with CSV-friendly streaming. More...
 
class  MatrixBatch
 Packed variable-shape matrix-batch layout inside a flat buffer. More...
 
struct  MemberPtr
 Pointer-to-member wrapper with a symbolic name; the pointer-based cousin of MemberRef used when the object is known only at visit time. More...
 
struct  MemberRef
 Simple {reference, name} bundle for a struct member. More...
 
class  MPIBufferHandler
 Process-singleton managing the buffer attached to MPI for MPI_Bsend (buffered sends). More...
 
struct  MPIInfo
 Lightweight bundle of an MPI communicator and the calling rank's coordinates. More...
 
struct  MPIReqHolder
 RAII vector of MPI_Requests that frees each non-null handle when destroyed. More...
 
struct  MPITypePairHolder
 RAII vector of (count, MPI_Datatype) pairs that frees every committed datatype when destroyed. More...
 
class  ObjectNaming
 Mixin base class providing a runtime instance name for tracing/debugging. More...
 
class  ObjectPool
 Generic object pool: caches unique_ptr<T> instances and hands them out with RAII return-on-destruction semantics. More...
 
struct  ObjName
 Tag type for naming objects created via make_ssp. More...
 
class  OffsetAscendIndexMapping
 Mapping between a rank's main data and its ghost copies. More...
 
class  ParArray
 MPI-aware Array: adds a communicator, rank, and global index mapping. More...
 
class  PerformanceTimer
 Process-wide singleton aggregating wall-clock timings by category. More...
 
class  ScalarStatistics
 Running-statistics accumulator using Welford's online algorithm. More...
 
class  ScopedValueAlternator
 RAII sentinel: on construction replaces ref with a new value and on destruction restores the original value. More...
 
class  vector_DeviceView
 Non-owning device-callable view {pointer, size} over a typed array. More...
 
struct  vector_hash
 Hash functor for std::vector<T>, combining element hashes via XOR. More...
 

Typedefs

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using tPy_Array = py_class_ssp< Array< T, _row_size, _row_max, _align > >
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using tPy_ParArray = py_class_ssp< ParArray< T, _row_size, _row_max, _align > >
 
template<class TArray >
using tPy_ArrayTransformer = py_class_ssp< ArrayTransformerType_t< TArray > >
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using tPy_ParArrayPair = py_class_ssp< ArrayPair< ParArray< T, _row_size, _row_max, _align > > >
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using tPy_ArrayAdjacency = py_class_ssp< ArrayAdjacency< _row_size, _row_max, _align > >
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using tPy_ArrayAdjacencyPair = py_class_ssp< ArrayAdjacencyPair< _row_size, _row_max, _align > >
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
using tPy_ArrayEigenMatrix = py_class_ssp< ArrayEigenMatrix< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > >
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
using tPy_ArrayEigenMatrixPair = py_class_ssp< ArrayEigenMatrixPair< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > >
 
using tPy_ArrayEigenMatrixBatch = py_class_ssp< ArrayEigenMatrixBatch >
 
using tPy_ArrayEigenMatrixBatchPair = py_class_ssp< ArrayEigenMatrixBatchPair >
 
template<int _n_row, int _n_col>
using tPy_ArrayEigenUniMatrixBatch = py_class_ssp< ArrayEigenUniMatrixBatch< _n_row, _n_col > >
 
template<int _n_row, int _n_col>
using tPy_ArrayEigenUniMatrixBatchPair = py_class_ssp< ArrayEigenUniMatrixBatchPair< _n_row, _n_col > >
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using tPy_ArrayEigenVector = py_class_ssp< ArrayEigenVector< _vec_size, _row_max, _align > >
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using tPy_ArrayEigenVectorPair = py_class_ssp< ArrayEigenVectorPair< _vec_size, _row_max, _align > >
 
template<int n_m, int n_n>
using tPy_ArrayDOF = py_class_ssp< ArrayDof< n_m, n_n > >
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using ArrayAdjacencyPair = ArrayPair< ArrayAdjacency< _row_size, _row_max, _align > >
 ArrayPair alias for mesh adjacency (variable-width integer rows).
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using ArrayEigenVectorPair = ArrayPair< ArrayEigenVector< _vec_size, _row_max, _align > >
 ArrayPair alias for per-row Eigen vectors (e.g., node coords with N=3).
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
using ArrayEigenMatrixPair = ArrayPair< ArrayEigenMatrix< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > >
 ArrayPair alias for per-row Eigen matrices.
 
using ArrayEigenMatrixBatchPair = ArrayPair< ArrayEigenMatrixBatch >
 ArrayPair alias for per-row variable-size Eigen matrix batches.
 
template<int _n_row, int _n_col>
using ArrayEigenUniMatrixBatchPair = ArrayPair< ArrayEigenUniMatrixBatch< _n_row, _n_col > >
 ArrayPair alias for per-row batches of uniform _n_row x _n_col matrices.
 
using t_pLGlobalMapping = ssp< GlobalOffsetsMapping >
 Shared pointer to a GlobalOffsetsMapping (globally replicated).
 
using t_pLGhostMapping = ssp< OffsetAscendIndexMapping >
 Shared pointer to an OffsetAscendIndexMapping (per-rank ghost layout).
 
template<class TArray >
using ArrayTransformerType_t = typename ArrayTransformerType< TArray >::Type
 
using CrossFieldCheck = std::function< CheckResult(const void *obj)>
 A cross-field validation check that does not require runtime context.
 
using ContextualCheck = std::function< CheckResult(const void *obj, const ConfigContext &ctx)>
 A cross-field validation check that requires runtime context.
 
using tLogSimpleDIValueMap = std::map< std::string, LogSimpleDIValue >
 Convenience alias: the title -> value map type passed to CsvLog::WriteLine.
 
using real = double
 Canonical floating-point scalar used throughout DNDSR (double precision).
 
using index = int64_t
 Global row / DOF index type (signed 64-bit; handles multi-billion-cell meshes).
 
using rowsize = int32_t
 Row-width / per-row element-count type (signed 32-bit).
 
using real_sized_index = int64_t
 Integer type with the same width as real (used for type-punning / packing).
 
using real_half_sized_index = int32_t
 Integer type with half the width of real.
 
template<typename T >
using ssp = std::shared_ptr< T >
 Shortened alias for std::shared_ptr used pervasively in DNDSR.
 
template<typename T >
using remove_cvref_t = std::remove_cv_t< std::remove_reference_t< T > >
 Convenience remove_cv + remove_reference composition (C++17 port of C++20's std::remove_cvref_t).
 
using t_RowsizeVec = std::vector< rowsize >
 Vector of row widths (one rowsize per row).
 
using t_IndexVec = std::vector< index >
 Vector of index values (global offsets, local ids, etc.).
 
using t_pIndexVec = ssp< t_IndexVec >
 Shared pointer alias to t_IndexVec (used by mapping tables shared between arrays, see IndexMapping.hpp).
 
using t_indexerPair = std::tuple< index, index >
 Paired indices, typically (start, size) or (first, last).
 
using tDiFj = Eigen::Matrix< real, -1, -1, Eigen::RowMajor >
 Row-major dynamic Eigen matrix used by quadrature / basis tables.
 
using MatrixXR = Eigen::Matrix< real, Eigen::Dynamic, Eigen::Dynamic >
 Column-major dynamic Eigen matrix of reals (default layout).
 
using VectorXR = Eigen::Vector< real, Eigen::Dynamic >
 Dynamic Eigen vector of reals.
 
using RowVectorXR = Eigen::RowVector< real, Eigen::Dynamic >
 Dynamic row-vector of reals.
 
template<class T >
using py_class_ssp = py::classh< T >
 
using t_supDeviceStorageBase = std::unique_ptr< DeviceStorageBase, std::function< void(DeviceStorageBase *)> >
 Owning unique pointer to a DeviceStorageBase with cross-DLL-safe deleter.
 
using t_sspDeviceStorageBase = std::shared_ptr< DeviceStorageBase >
 Shared pointer equivalent of t_supDeviceStorageBase.
 
using symbol_table_t = exprtk::symbol_table< real >
 
using expression_t = exprtk::expression< real >
 
using parser_t = exprtk::parser< real >
 
using tExprVars = std::map< std::string, real >
 Scalar name -> value map fed into an ExprtkWrapperEvaluator.
 
using tExprVarVecs = std::map< std::string, Eigen::Vector< real, Eigen::Dynamic > >
 Vector name -> Eigen dense vector map fed into an ExprtkWrapperEvaluator.
 
using t_jsonconfig = nlohmann::ordered_json
 Project-wide JSON type alias: nlohmann/json with ordered keys.
 
using MPI_int = int
 MPI counterpart type for MPI_int (= C int). Used for counts and ranks in MPI calls.
 
using MPI_index = MPI_Aint
 MPI-compatible address/offset type (= MPI_Aint, 64-bit on all supported platforms). Used by the hindexed datatype machinery.
 
using tMPI_sizeVec = std::vector< MPI_int >
 Vector of MPI counts.
 
using tMPI_intVec = tMPI_sizeVec
 Alias for tMPI_sizeVec; used where the name "int vec" reads better.
 
using tMPI_indexVec = std::vector< MPI_index >
 Vector of MPI_Aint byte-offsets for hindexed datatypes.
 
using tMPI_AintVec = tMPI_indexVec
 Alias for tMPI_indexVec to match MPI_Aint terminology.
 
using tMPI_statVec = std::vector< MPI_Status >
 Vector of MPI_Status, for MPI_Waitall / MPI_Testall.
 
using tMPI_reqVec = std::vector< MPI_Request >
 Vector of MPI_Request, for persistent / nonblocking calls.
 
using tMPI_typePairVec = std::vector< std::pair< MPI_int, MPI_Datatype > >
 
using tpMPITypePairHolder = ssp< MPITypePairHolder >
 Shared-pointer alias to MPITypePairHolder.
 
template<class T >
using host_device_vector = host_device_vector_r1< T >
 Primary public alias: host_device_vector<T> = #host_device_vector_r1<T>. Prefer this name throughout the code base.
 

Enumerations

enum  DataLayout {
  ErrorLayout , TABLE_StaticFixed , TABLE_Fixed , TABLE_Max ,
  TABLE_StaticMax , CSR
}
 Enumeration of the five concrete data layouts supported by Array. More...
 
enum class  ConfigTypeTag {
  Bool , Int , Real , String ,
  Enum , Array , Object , ArrayOfObjects ,
  MapOfObjects , Json
}
 Enumerates the JSON Schema type associated with a config field. More...
 
enum class  DeviceBackend { Unknown = 0 , Host = 1 , Custom1 = 101 }
 Enumerates the backends a DeviceStorage / Array can live on. More...
 

Functions

void pybind11_bind_Array_All (py::module_ m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string pybind11_Array_name_appends ()
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string pybind11_Array_name ()
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string pybind11_ParArray_name ()
 
template<class TArray >
std::string pybind11_ArrayTransformer_name ()
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string pybind11_ParArrayPair_name ()
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_Array< T, _row_size, _row_max, _align > pybind11_Array_declare (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_Array< T, _row_size, _row_max, _align > pybind11_Array_get_class (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void pybind11_Array_define (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void _pybind11_Array_define_dispatch (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ParArray< T, _row_size, _row_max, _align > pybind11_ParArray_declare (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ParArray< T, _row_size, _row_max, _align > pybind11_ParArray_get_class (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void pybind11_ParArray_define (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void _pybind11_ParArray_define_dispatch (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ParArrayPair< T, _row_size, _row_max, _align > pybind11_ParArrayPair_declare (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ParArrayPair< T, _row_size, _row_max, _align > pybind11_ParArrayPair_get_class (py::module_ &m)
 
template<class TPair , class TPy_Pair >
void pybind11_ArrayPairGenericBindBasics (TPy_Pair &Pair_)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void pybind11_ParArrayPair_define (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void _pybind11_ParArrayPair_define_dispatch (py::module_ &m)
 
template<class TArray >
tPy_ArrayTransformer< TArray > pybind11_ArrayTransformer_declare (py::module_ &m)
 
template<class TArray >
tPy_ArrayTransformer< TArray > pybind11_ArrayTransformer_get_class (py::module_ &m)
 
template<class TArray >
void pybind11_ArrayTransformer_define (py::module_ &m)
 
template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void _pybind11_ArrayTransformer_define_dispatch (py::module_ &m)
 
template<int offset = 0>
constexpr auto _get_pybind11_arrayRowsizeInstantiationList ()
 
template<class T , size_t N, std::array< int, N > const & Arr, size_t... Is>
void __pybind11_callBindArrays_rowsizes_sequence (py::module_ &m, std::index_sequence< Is... >)
 
template<class T , int offset = 0>
void pybind11_callBindArrays_rowsizes (py::module_ &m)
 
template<class T , size_t N, std::array< int, N > const & Arr, size_t... Is>
void __pybind11_callBindParArrays_rowsizes_sequence (py::module_ &m, std::index_sequence< Is... >)
 
template<class T , int offset = 0>
void pybind11_callBindParArrays_rowsizes (py::module_ &m)
 
template<class T , size_t N, std::array< int, N > const & Arr, size_t... Is>
void __pybind11_callBindArrayTransformers_rowsizes_sequence (py::module_ &m, std::index_sequence< Is... >)
 
template<class T , int offset = 0>
void pybind11_callBindArrayTransformers_rowsizes (py::module_ &m)
 
template<class T , size_t N, std::array< int, N > const & Arr, size_t... Is>
void __pybind11_callBindParArrayPairs_rowsizes_sequence (py::module_ &m, std::index_sequence< Is... >)
 
template<class T , int offset = 0>
void pybind11_callBindParArrayPairs_rowsizes (py::module_ &m)
 
 pybind11_bind_Array_All_X_declare (1)
 
 pybind11_bind_Array_All_X_declare (2)
 
 pybind11_bind_Array_All_X_declare (3)
 
 pybind11_bind_Array_All_X_declare (4)
 
 pybind11_bind_Array_All_X_declare (5)
 
 pybind11_bind_Array_All_X_declare (6)
 
 pybind11_bind_Array_All_X_declare (7)
 
void pybind11_bind_Array_Offsets (py::module_ m)
 
constexpr bool isTABLE (DataLayout lo)
 Whether the layout uses a TABLE (padded) representation (vs CSR).
 
constexpr bool isTABLE_Fixed (DataLayout lo)
 Whether the layout has a uniform row width (no per-row size needed).
 
constexpr bool isTABLE_Max (DataLayout lo)
 Whether the layout is a padded-max variant (uses _pRowSizes).
 
constexpr bool isTABLE_Static (DataLayout lo)
 Whether the layout has a compile-time row-size constant.
 
constexpr bool isTABLE_Dynamic (DataLayout lo)
 Whether the layout carries a runtime row-size parameter.
 
template<class T >
constexpr bool array_comp_acceptable ()
 Whether T is legal as an Array element type (trivially copyable or a fixed-size real Eigen matrix). Controls CUDA/MPI copy paths.
 
void pybind11_bind_ArrayAdjacency_All (py::module_ &m)
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string pybind11_ArrayAdjacency_name_appends ()
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string pybind11_ArrayAdjacency_name ()
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string pybind11_ArrayAdjacencyPair_name ()
 
template<class TArray = ArrayAdjacency<1>>
auto pybind11_ArrayAdjacency_setitem (TArray &self, index index_, py::buffer row)
 
template<class TArray = ArrayAdjacency<1>>
auto pybind11_ArrayAdjacency_getitem (TArray &self, index index_)
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ArrayAdjacency< _row_size, _row_max, _align > pybind11_ArrayAdjacency_declare (py::module_ &m)
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ArrayAdjacency< _row_size, _row_max, _align > pybind11_ArrayAdjacency_get_class (py::module_ &m)
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void pybind11_ArrayAdjacency_define (py::module_ &m)
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void _pybind11_ArrayAdjacency_define_dispatch (py::module_ &m)
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ArrayAdjacencyPair< _row_size, _row_max, _align > pybind11_ArrayAdjacencyPair_declare (py::module_ &m)
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ArrayAdjacencyPair< _row_size, _row_max, _align > pybind11_ArrayAdjacencyPair_get_class (py::module_ &m)
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void pybind11_ArrayAdjacencyPair_define (py::module_ &m)
 
template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void _pybind11_ArrayAdjacencyPair_define_dispatch (py::module_ &m)
 
template<size_t N, std::array< int, N > const & Arr, size_t... Is>
void __pybind11_callBindArrayAdjacencys_rowsizes_sequence (py::module_ &m, std::index_sequence< Is... >)
 
void pybind11_callBindArrayAdjacencys_rowsizes (py::module_ &m)
 
void pybind11_bind_ArrayEigenMatrix_All (py::module_ &m)
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
std::string pybind11_ArrayEigenMatrix_name_appends ()
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
std::string pybind11_ArrayEigenMatrix_name ()
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
std::string pybind11_ArrayEigenMatrixPair_name ()
 
template<class TArrayEigenMatrix = ArrayEigenMatrix<3, 3>>
auto pybind11_ArrayEigenMatrix_getitem (TArrayEigenMatrix &self, index index_)
 
template<class TArrayEigenMatrix = ArrayEigenMatrix<3, 3>>
auto pybind11_ArrayEigenMatrix_setitem (TArrayEigenMatrix &self, index index_, py::buffer row)
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
tPy_ArrayEigenMatrix< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > pybind11_ArrayEigenMatrix_declare (py::module_ &m)
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
tPy_ArrayEigenMatrix< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > pybind11_ArrayEigenMatrix_get_class (py::module_ &m)
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
void pybind11_ArrayEigenMatrix_define (py::module_ &m)
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
void _pybind11_ArrayEigenMatrix_define_dispatch (py::module_ &m)
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
tPy_ArrayEigenMatrixPair< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > pybind11_ArrayEigenMatrixPair_declare (py::module_ &m)
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
tPy_ArrayEigenMatrixPair< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > pybind11_ArrayEigenMatrixPair_get_class (py::module_ &m)
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
void pybind11_ArrayEigenMatrixPair_define (py::module_ &m)
 
template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
void _pybind11_ArrayEigenMatrixPair_define_dispatch (py::module_ &m)
 
template<rowsize mat_n, size_t N, std::array< int, N > const & Arr, size_t... Is>
void __pybind11_callBindArrayEigenMatrixs_rowsizes_sequence (py::module_ &m, std::index_sequence< Is... >)
 
template<rowsize mat_n>
void pybind11_callBindArrayEigenMatrixs_rowsizes (py::module_ &m)
 
template void pybind11_callBindArrayEigenMatrixs_rowsizes< 1 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenMatrixs_rowsizes< 2 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenMatrixs_rowsizes< 3 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenMatrixs_rowsizes< 4 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenMatrixs_rowsizes< 5 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenMatrixs_rowsizes< 6 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenMatrixs_rowsizes< 7 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenMatrixs_rowsizes< 8 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenMatrixs_rowsizes< DynamicSize > (py::module_ &m)
 
template void pybind11_callBindArrayEigenMatrixs_rowsizes< NonUniformSize > (py::module_ &m)
 
template<rowsize _mat_ni, rowsize _mat_nj>
constexpr rowsize __OneMatGetRowSize ()
 Compute the underlying per-row element count for an Ni x Nj matrix cell.
 
std::string pybind11_ArrayEigenMatrixBatch_name ()
 
std::string pybind11_ArrayEigenMatrixBatchPair_name ()
 
auto pybind11_ArrayEigenMatrixBatch_setitem_row (ArrayEigenMatrixBatch &self, index i, const py::list &matList)
 
auto pybind11_ArrayEigenMatrixBatch_getitem_row (ArrayEigenMatrixBatch &self, index index_)
 
auto pybind11_ArrayEigenMatrixBatch_getitem (ArrayEigenMatrixBatch &self, std::tuple< index, rowsize > index_)
 
auto pybind11_ArrayEigenMatrixBatch_setitem (ArrayEigenMatrixBatch &self, std::tuple< index, rowsize > index_, py::buffer row)
 
tPy_ArrayEigenMatrixBatch pybind11_ArrayEigenMatrixBatch_declare (py::module_ &m)
 
tPy_ArrayEigenMatrixBatch pybind11_ArrayEigenMatrixBatch_get_class (py::module_ &m)
 
void pybind11_ArrayEigenMatrixBatch_define (py::module_ &m)
 
tPy_ArrayEigenMatrixBatchPair pybind11_ArrayEigenMatrixBatchPair_declare (py::module_ &m)
 
tPy_ArrayEigenMatrixBatchPair pybind11_ArrayEigenMatrixBatchPair_get_class (py::module_ &m)
 
void pybind11_ArrayEigenMatrixBatchPair_define (py::module_ &m)
 
void pybind11_bind_ArrayEigenMatrixBatch_All (py::module_ &m)
 
void pybind11_bind_ArrayEigenUniMatrixBatch_All (py::module_ &m)
 
template<int _n_row, int _n_col>
std::string pybind11_ArrayEigenUniMatrixBatch_name ()
 
template<int _n_row, int _n_col>
std::string pybind11_ArrayEigenUniMatrixBatchPair_name ()
 
template<class TArrayEigenUniMatrixBatch = ArrayEigenUniMatrixBatch<3, 3>>
auto pybind11_ArrayEigenUniMatrixBatch_getitem (TArrayEigenUniMatrixBatch &self, std::tuple< index, rowsize > index_)
 
template<class TArrayEigenUniMatrixBatch = ArrayEigenUniMatrixBatch<3, 3>>
auto pybind11_ArrayEigenUniMatrixBatch_setitem (TArrayEigenUniMatrixBatch &self, std::tuple< index, rowsize > index_, py::buffer row)
 
template<class TArrayEigenUniMatrixBatch = ArrayEigenUniMatrixBatch<3, 3>>
auto pybind11_ArrayEigenUniMatrixBatch_getitem_row (TArrayEigenUniMatrixBatch &self, index index_)
 
template<class TArrayEigenUniMatrixBatch = ArrayEigenUniMatrixBatch<3, 3>>
auto pybind11_ArrayEigenUniMatrixBatch_setitem_row (TArrayEigenUniMatrixBatch &self, index index_, py::buffer row)
 
template<int _n_row, int _n_col>
tPy_ArrayEigenUniMatrixBatch< _n_row, _n_col > pybind11_ArrayEigenUniMatrixBatch_declare (py::module_ &m)
 
template<int _n_row, int _n_col>
tPy_ArrayEigenUniMatrixBatch< _n_row, _n_col > pybind11_ArrayEigenUniMatrixBatch_get_class (py::module_ &m)
 
template<int _n_row, int _n_col>
void pybind11_ArrayEigenUniMatrixBatch_define (py::module_ &m)
 
template<int _n_row, int _n_col>
void _pybind11_ArrayEigenUniMatrixBatch_define_dispatch (py::module_ &m)
 
template<int _n_row, int _n_col>
tPy_ArrayEigenUniMatrixBatchPair< _n_row, _n_col > pybind11_ArrayEigenUniMatrixBatchPair_declare (py::module_ &m)
 
template<int _n_row, int _n_col>
tPy_ArrayEigenUniMatrixBatchPair< _n_row, _n_col > pybind11_ArrayEigenUniMatrixBatchPair_get_class (py::module_ &m)
 
template<int _n_row, int _n_col>
void pybind11_ArrayEigenUniMatrixBatchPair_define (py::module_ &m)
 
template<int _n_row, int _n_col>
void _pybind11_ArrayEigenUniMatrixBatchPair_define_dispatch (py::module_ &m)
 
template<rowsize mat_n, size_t N, std::array< int, N > const & Arr, size_t... Is>
void __pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes_sequence (py::module_ &m, std::index_sequence< Is... >)
 
template<rowsize mat_n>
void pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes (py::module_ &m)
 
template void pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 1 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 2 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 3 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 4 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 5 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 6 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 7 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 8 > (py::module_ &m)
 
template void pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< DynamicSize > (py::module_ &m)
 
template<int a, int b>
constexpr rowsize EigenSize_Mul_RowSize ()
 a * b if both are compile-time sizes, DynamicSize if either is Eigen::Dynamic, otherwise a sentinel.
 
void pybind11_bind_ArrayEigenVector_All (py::module_ &m)
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
std::string pybind11_ArrayEigenVector_name_appends ()
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
std::string pybind11_ArrayEigenVector_name ()
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
std::string pybind11_ArrayEigenVectorPair_name ()
 
template<class TArrayEigenVector = ArrayEigenVector<1>>
auto pybind11_ArrayEigenVector_getitem (TArrayEigenVector &self, index index_)
 
template<class TArrayEigenVector = ArrayEigenVector<1>>
auto pybind11_ArrayEigenVector_setitem (TArrayEigenVector &self, index index_, py::buffer row)
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
tPy_ArrayEigenVector< _vec_size, _row_max, _align > pybind11_ArrayEigenVector_declare (py::module_ &m)
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
tPy_ArrayEigenVector< _vec_size, _row_max, _align > pybind11_ArrayEigenVector_get_class (py::module_ &m)
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
void pybind11_ArrayEigenVector_define (py::module_ &m)
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
void _pybind11_ArrayEigenVector_define_dispatch (py::module_ &m)
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
tPy_ArrayEigenVectorPair< _vec_size, _row_max, _align > pybind11_ArrayEigenVectorPair_declare (py::module_ &m)
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
tPy_ArrayEigenVector< _vec_size, _row_max, _align > pybind11_ArrayEigenVectorPair_get_class (py::module_ &m)
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
void pybind11_ArrayEigenVectorPair_define (py::module_ &m)
 
template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
void _pybind11_ArrayEigenVectorPair_define_dispatch (py::module_ &m)
 
template<size_t N, std::array< int, N > const & Arr, size_t... Is>
void __pybind11_callBindArrayEigenVectors_rowsizes_sequence (py::module_ &m, std::index_sequence< Is... >)
 
void pybind11_callBindArrayEigenVectors_rowsizes (py::module_ &m)
 
void pybind11_bind_ArrayDOF_All (py::module_ &m)
 
template<int n_m, int n_n>
std::string pybind11_ArrayDOF_name ()
 
template<int n_m, int n_n>
tPy_ArrayDOF< n_m, n_n > pybind11_ArrayDOF_declare (py::module_ &m)
 
template<int n_m, int n_n>
tPy_ArrayDOF< n_m, n_n > pybind11_ArrayDOF_get_class (py::module_ &m)
 
template<int n_m, int n_n>
void pybind11_ArrayDOF_define (py::module_ &m)
 
template<int n_m, int n_n>
void _pybind11_ArrayDOF_define_dispatch (py::module_ &m)
 
template<rowsize mat_n, size_t N, std::array< int, N > const & Arr, size_t... Is>
void __pybind11_callBindArrayDOFs_rowsizes_sequence (py::module_ &m, std::index_sequence< Is... >)
 
template<rowsize mat_n>
void pybind11_callBindArrayDOF_rowsizes (py::module_ &m)
 
template void pybind11_callBindArrayDOF_rowsizes< 1 > (py::module_ &m)
 
template void pybind11_callBindArrayDOF_rowsizes< 2 > (py::module_ &m)
 
template void pybind11_callBindArrayDOF_rowsizes< 3 > (py::module_ &m)
 
template void pybind11_callBindArrayDOF_rowsizes< 4 > (py::module_ &m)
 
template void pybind11_callBindArrayDOF_rowsizes< 5 > (py::module_ &m)
 
template void pybind11_callBindArrayDOF_rowsizes< 6 > (py::module_ &m)
 
template void pybind11_callBindArrayDOF_rowsizes< 7 > (py::module_ &m)
 
template void pybind11_callBindArrayDOF_rowsizes< 8 > (py::module_ &m)
 
template void pybind11_callBindArrayDOF_rowsizes< DynamicSize > (py::module_ &m)
 
template void pybind11_callBindArrayDOF_rowsizes< NonUniformSize > (py::module_ &m)
 
std::vector< indexBuildRedistributionPullingIndex (const MPIInfo &mpi, const std::vector< index > &readOrigIndex, const std::vector< index > &newOrigIndex, const ssp< GlobalOffsetsMapping > &readGlobalMapping)
 Redistributes ArrayPair data between different MPI partitions using ArrayTransformer.
 
template<class TArray >
void RedistributeArrayWithTransformer (const MPIInfo &mpi, ssp< TArray > readFather, const std::vector< index > &readOrigIndex, const std::vector< index > &newOrigIndex, ssp< TArray > outFather)
 Redistributes an ArrayPair from a source partition to a target partition.
 
std::string schemaTypeString (ConfigTypeTag tag)
 
bool ostreamIsTTY (std::ostream &ostream)
 Heuristic detection of whether ostream is attached to a terminal.
 
std::ostream & log ()
 Return the current DNDSR log stream (either std::cout or the installed file).
 
bool logIsTTY ()
 Convenience: ostreamIsTTY applied to the current log() stream.
 
void setLogStream (ssp< std::ostream > nstream)
 Redirect log() output to a user-supplied stream. Ownership is shared.
 
void setLogStreamCout ()
 Restore the default std::cout routing for log().
 
int get_terminal_width ()
 Terminal width in columns (falls back to a fixed default when not a TTY).
 
void print_progress (std::ostream &os, double progress)
 Render a textual progress bar to os for progress in [0, 1].
 
std::string getStringForceWString (const std::wstring &v)
 Convert a wstring to string (UTF-8 on Windows, byte-cast elsewhere).
 
int get_env_OMP_NUM_THREADS ()
 Read OMP_NUM_THREADS env var, returning 1 if unset / invalid.
 
int get_env_DNDS_DIST_OMP_NUM_THREADS ()
 Read the DNDSR-specific DNDS_DIST_OMP_NUM_THREADS override, falling back to get_env_OMP_NUM_THREADS.
 
std::string GetSetVersionName (const std::string &ver="")
 Read/set the build version string accessible from code.
 
void RegisterSignalHandler ()
 Install SEGV / ABRT handlers that print a backtrace via DNDS_signal_handler.
 
std::pair< index, indexEvenSplitRange (int rank, int nRanks, index nGlobal)
 Split a global range [0, nGlobal) evenly among nRanks workers.
 
bool IsUnInitReal (real v)
 Whether v equals the NaN sentinel UnInitReal (tested via isnan).
 
template<typename T , typename... Args>
ssp< T > make_ssp (Args &&...args)
 Type-safe replacement for DNDS_MAKE_SSP. Creates ssp<T> with forwarded args.
 
template<typename T , typename... Args>
ssp< T > make_ssp (ObjName objName, Args &&...args)
 Named variant of make_ssp. If T inherits ObjectNaming, sets the name.
 
constexpr int RowSize_To_EigenSize (rowsize rs)
 Convert a rowsize constant to the corresponding Eigen compile-time size. Fixed >= 0 -> the value; DynamicSize / NonUniformSize -> Eigen::Dynamic.
 
std::string RowSize_To_PySnippet (rowsize rs)
 Encode a rowsize constant as a short Python-binding snippet: "<number>" for fixed, "D" for DynamicSize, "I" for NonUniformSize. Used when generating pybind11 class names.
 
std::string Align_To_PySnippet (rowsize al)
 Encode an alignment value as a Python-binding snippet: "N" for NoAlign, the number otherwise.
 
template<typename T >
bool signedIntWillAddOverflow (T value, T increment)
 Overflow-detecting test for value + increment on signed integers.
 
template<typename T >
signedIntSafeAdd (T value, T increment)
 Add two signed integers, asserting on overflow instead of silently wrapping.
 
template<typename T >
size_t_to_signed (size_t v)
 Narrowing size_t -> T conversion with range check.
 
index size_to_index (size_t v)
 Range-checked conversion from size_t to DNDS::index.
 
rowsize size_to_rowsize (size_t v)
 Range-checked conversion from size_t to DNDS::rowsize.
 
template<class TtRowsizeVec , class TtIndexVec >
void AccumulateRowSize (const TtRowsizeVec &rowsizes, TtIndexVec &rowstarts)
 Build a prefix-sum table from a row-size vector.
 
template<class T >
bool checkUniformVector (const std::vector< T > &dat, T &value)
 Whether all elements of dat are equal; if so, stores the value into value.
 
template<class T , class TP = T>
void PrintVec (const std::vector< T > &dat, std::ostream &out)
 Print a vector to out with outputDelim between elements.
 
template<class TL , class TR >
constexpr auto divCeil (TL l, TR r)
 Integer ceiling division. l must be non-negative, r positive.
 
template<typename T >
constexpr T sqr (const T &a)
 a * a, constexpr. Works for all arithmetic types.
 
template<typename T >
constexpr T cube (const T &a)
 a * a * a, constexpr.
 
constexpr real sign (real a)
 Signum function: +1, 0, or -1.
 
constexpr real signTol (real a, real tol)
 Tolerant signum: returns 0 inside [-tol, tol].
 
constexpr real signP (real a)
 "Signum, biased toward +1": treats 0 as positive.
 
constexpr real signM (real a)
 "Signum, biased toward -1": treats 0 as negative.
 
template<typename T >
constexpr T mod (T a, T b)
 Mathematical modulo that always returns a non-negative result. Unlike % in C++ where (-1) % 3 == -1, mod(-1, 3) == 2.
 
template<typename T >
constexpr T divide_ceil (T a, T b)
 Integer ceiling division ceil(a / b). Correct for all signs.
 
real float_mod (real a, real b)
 Floating-point modulo matching Python's % (result has sign of b).
 
template<class tIt1 , class tIt1end , class tIt2 , class tIt2end , class tF >
bool iterateIdentical (tIt1 it1, tIt1end it1end, tIt2 it2, tIt2end it2end, tF F)
 Walk two ordered ranges in lockstep, calling F on each match.
 
int32_t checkedIndexTo32 (index v)
 Narrow index to int32_t with range check; dies on overflow.
 
std::string getStringForcePath (const std::filesystem::path::string_type &v)
 Portable conversion of a platform-native path string to std::string.
 
std::vector< std::string > splitSString (const std::string &str, char delim)
 
std::vector< std::string > splitSStringClean (const std::string &str, char delim)
 
bool sstringHasSuffix (const std::string &str, const std::string &suffix)
 
template<class T >
bool py_buffer_contains_T (const py::buffer_info &info)
 
bool py_buffer_is_contigious_c (const py::buffer_info &info)
 
bool py_buffer_is_contigious_f (const py::buffer_info &info)
 
std::tuple< ssize_t, char > py_buffer_get_contigious_size (const py::buffer_info &info)
 
template<typename T >
py::memoryview py_vector_as_memory_view (std::vector< T > &vec, bool readonly)
 
void pybind11_bind_defines (py::module_ &m)
 
void deviceStorageBase_deleter (DeviceStorageBase *p)
 Stateless deleter for DeviceStorageBase that works across shared-library boundaries where the vtable of unique_ptr's default deleter would not.
 
const char * device_backend_name (DeviceBackend B)
 Canonical string name for a DeviceBackend (used in log messages).
 
DeviceBackend device_backend_name_to_enum (std::string_view s)
 Inverse of device_backend_name. Returns Unknown for unrecognised names.
 
t_supDeviceStorageBase null_supDeviceStorageBase ()
 Null-value helper for t_supDeviceStorageBase.
 
t_supDeviceStorageBase device_storage_create (DeviceBackend backend, size_t n_bytes)
 Top-level factory: dispatches to the per-backend factory based on backend. Returns a null unique_ptr for DeviceBackendUnknown.
 
void pybind11_bind_deviceStorage (py::module_ &m)
 
void pybind11_bind_device_controls (py::module_ &m)
 
template<DeviceBackend B, class T , rowsize _row_size, rowsize _row_max, rowsize _align>
auto ArrayDeviceView_build (index n_size, T *n_data, index n_data_size, const index *n_rowstart, index n_rowstart_size, const rowsize *n_rowsizes, index n_rowsizes_size, rowsize n_row_size_dynamic, T *n_data_device, const index *n_rowstart_device, const rowsize *n_rowsizes_device)
 Factory for ArrayDeviceView: selects host or device pointers based on B and forwards everything else.
 
template<class dir >
std::string to_string (const Eigen::DenseBase< dir > &v, int precision=5, bool scientific=false)
 Render an Eigen::DenseBase to a string via operator<<.
 
std::string getTraceString ()
 Return a symbolicated stack trace for the calling thread.
 
void assert_false (const char *expr, const char *file, int line)
 Low-level: print a red "DNDS_assertion failed" line and abort.
 
void assert_false_info (const char *expr, const char *file, int line, const std::string &info)
 Variant of assert_false that prints an extra info string.
 
void assert_false_infof (const char *expr, const char *file, int line, const char *info,...)
 printf-style variant of assert_false. Used by DNDS_assert_infof.
 
template<class TException = std::runtime_error>
void assert_false_info_throw (const char *expr, const char *file, int line, const std::string &info)
 Throwing variant of assert_false_info. Used by DNDS_check_throw.
 
hid_t DNDS_H5T_INDEX ()
 HDF5 native datatype matching DNDS index (currently H5T_NATIVE_INT64).
 
hid_t DNDS_H5T_ROWSIZE ()
 HDF5 native datatype matching DNDS rowsize (currently H5T_NATIVE_INT32).
 
hid_t DNDS_H5T_REAL ()
 HDF5 native datatype matching DNDS real (currently H5T_NATIVE_DOUBLE).
 
auto pybind11_GlobalOffsetsMapping_declare (py::module_ m)
 
auto pybind11_GlobalOffsetsMapping_get_class (py::module_ m)
 
void pybind11_GlobalOffsetsMapping_define (py::module_ m)
 
auto pybind11_OffsetAscendIndexMapping_declare (py::module_ m)
 
auto pybind11_OffsetAscendIndexMapping_get_class (py::module_ m)
 
void pybind11_OffsetAscendIndexMapping_define (py::module_ m)
 
void pybind11_bind_IndexMapping_All (py::module_ m)
 
Eigen::VectorXd JsonGetEigenVector (const nlohmann::json &arr)
 Parse a JSON array into an Eigen::VectorXd. Throws a descriptive assertion on any JSON error.
 
Eigen::VectorFMTSafe< real, -1 > JsonGetEigenVectorFMTSafe (const nlohmann::json &arr)
 Parse a JSON array into an Eigen::VectorFMTSafe (fixed-point-aware wrapper).
 
auto EigenVectorGetJson (const Eigen::VectorXd &ve)
 Dump an Eigen::VectorXd into a JSON array of doubles.
 
auto EigenVectorFMTSafeGetJson (const Eigen::VectorFMTSafe< real, -1 > &ve)
 Dump an Eigen::VectorFMTSafe into a JSON array of doubles.
 
void to_json (nlohmann::ordered_json &j, const host_device_vector< real > &v)
 
void from_json (const nlohmann::ordered_json &j, host_device_vector< real > &v)
 
void assert_false_info_mpi (const char *expr, const char *file, int line, const std::string &info, const DNDS::MPIInfo &mpi)
 MPI-aware assertion-failure reporter.
 
std::string getTimeStamp (const MPIInfo &mpi)
 Format a human-readable timestamp using the calling rank as context.
 
template<class Tbasic >
constexpr MPI_Datatype __DNDSToMPITypeInt ()
 Map a DNDS integer type size to an MPI signed-integer datatype.
 
template<class Tbasic >
constexpr MPI_Datatype __DNDSToMPITypeFloat ()
 Map a DNDS floating-point type size to an MPI datatype.
 
template<class T >
std::pair< MPI_Datatype, MPI_intBasicType_To_MPIIntType_Custom ()
 Dispatch to a user-provided CommPair / CommMult+ CommType pair on T.
 
template<class T >
std::pair< MPI_Datatype, MPI_intBasicType_To_MPIIntType ()
 Deduce an (MPI_Datatype, count) pair that represents a T value.
 
MPI_int MPIWorldSize ()
 Convenience: MPI_Comm_size(MPI_COMM_WORLD).
 
MPI_int MPIWorldRank ()
 Convenience: MPI_Comm_rank(MPI_COMM_WORLD).
 
template<class F >
void MPISerialDo (const MPIInfo &mpi, F f)
 Execute f on each rank serially, in rank order.
 
void InsertCheck (const MPIInfo &mpi, const std::string &info="", const std::string &FUNCTION="", const std::string &FILE="", int LINE=-1)
 Barrier + annotated print used by DNDS_MPI_InsertCheck.
 
void pybind11_MPIInfo (py::module_ &m)
 
void pybind11_bind_MPI_All (py::module_ &m)
 
MPI_Datatype py_get_buffer_basic_mpi_datatype (const py::buffer_info &info)
 
MPI_Op py_get_simple_mpi_op_by_name (const std::string &op)
 
template<typename TList , typename F >
void for_each_member_list (TList &&obj_member_list, F &&f)
 Invoke f(member) for every element of a std::tuple of members.
 
template<typename T >
 MemberRef (T &, const char *) -> MemberRef< T >
 
template<typename Class , typename TList , typename F >
void for_each_member_ptr_list (Class &obj, TList &&obj_member_ptr_list, F &&f)
 Invoke f(name, obj.*ptr) for every member in a list of MemberPtr.
 
template<typename TList , typename F >
void for_each_member_ptr_list_raw (TList &&obj_member_ptr_list, F &&f)
 Low-level variant that passes each MemberPtr object through to f directly (for callers that need access to both ptr and name).
 
template<typename Class , typename T >
 MemberPtr (T Class::*, const char *) -> MemberPtr< Class, T >
 
PerformanceTimerTimer ()
 Short-hand accessor to the PerformanceTimer singleton.
 
template<class TBlkSiz , class TDisp , class TSizeof >
auto optimize_hindexed_layout (index o_size, TBlkSiz *blk_sizes, TDisp *disps, TSizeof sizeofElem)
 Coalesce contiguous blocks in an MPI_Type_create_hindexed layout.
 

Variables

ssp< std::ostream > logStream
 Shared output stream: where DNDS::log() writes progress / diagnostics.
 
bool useCout = true
 Whether DNDS::log() is currently routed to std::cout.
 
template<typename T >
constexpr bool is_ssp_v = is_ssp<T>::value
 
DNDS_CONSTANT const index indexMin = INT64_MIN
 Minimum representable index value (= INT64_MIN).
 
DNDS_CONSTANT const real UnInitReal = NAN
 Sentinel "not initialised" real value (NaN). Cheap to detect with std::isnan or IsUnInitReal; survives MPI transport unchanged.
 
DNDS_CONSTANT const index UnInitIndex = INT64_MIN
 Sentinel "not initialised" index value (= INT64_MIN).
 
DNDS_CONSTANT const rowsize UnInitRowsize = INT32_MIN
 Sentinel "not initialised" rowsize value (= INT32_MIN).
 
DNDS_CONSTANT const real veryLargeReal = 3e200
 Catch-all upper bound ("practically infinity") for physical scalars.
 
DNDS_CONSTANT const real largeReal = 3e10
 Loose upper bound (e.g., for non-dimensional limits).
 
DNDS_CONSTANT const real verySmallReal = 1e-200
 Catch-all lower bound ("effectively zero").
 
DNDS_CONSTANT const real smallReal = 1e-10
 Loose lower bound (for iterative-solver tolerances etc.).
 
DNDS_CONSTANT const real pi = DNDS_E_PI
 π in double precision (matches DNDS_E_PI macro).
 
DNDS_CONSTANT const rowsize DynamicSize = -1
 Template parameter flag: "row width is set at runtime but uniform".
 
DNDS_CONSTANT const rowsize NonUniformSize = -2
 Template parameter flag: "each row has an independent width".
 
DNDS_CONSTANT const rowsize NoAlign = -1024
 Alignment flag: no padding applied to rows (the only currently-supported value).
 
const char * __EigenPCH = "EigenPCH"
 
const char * __ExprtkPCH = "ExprtkPCH"
 
std::mutex HDF_mutex
 Global mutex serialising host-side HDF5 calls.
 
const MPI_Datatype DNDS_MPI_INDEX = __DNDSToMPITypeInt<index>()
 MPI datatype matching index (= MPI_INT64_T).
 
const MPI_Datatype DNDS_MPI_REAL = __DNDSToMPITypeFloat<real>()
 MPI datatype matching real (= MPI_REAL8).
 

Detailed Description

the host side operators are provided as implemented

Typedef Documentation

◆ ArrayAdjacencyPair

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using DNDS::ArrayAdjacencyPair = typedef ArrayPair<ArrayAdjacency<_row_size, _row_max, _align> >

ArrayPair alias for mesh adjacency (variable-width integer rows).

Definition at line 704 of file ArrayPair.hpp.

◆ ArrayEigenMatrixBatchPair

ArrayPair alias for per-row variable-size Eigen matrix batches.

Definition at line 716 of file ArrayPair.hpp.

◆ ArrayEigenMatrixPair

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
using DNDS::ArrayEigenMatrixPair = typedef ArrayPair<ArrayEigenMatrix<_mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align> >

ArrayPair alias for per-row Eigen matrices.

Definition at line 713 of file ArrayPair.hpp.

◆ ArrayEigenUniMatrixBatchPair

template<int _n_row, int _n_col>
using DNDS::ArrayEigenUniMatrixBatchPair = typedef ArrayPair<ArrayEigenUniMatrixBatch<_n_row, _n_col> >

ArrayPair alias for per-row batches of uniform _n_row x _n_col matrices.

Used by FiniteVolume / VariationalReconstruction to store per-quadrature-point Jacobians and basis coefficients.

Definition at line 722 of file ArrayPair.hpp.

◆ ArrayEigenVectorPair

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using DNDS::ArrayEigenVectorPair = typedef ArrayPair<ArrayEigenVector<_vec_size, _row_max, _align> >

ArrayPair alias for per-row Eigen vectors (e.g., node coords with N=3).

Definition at line 708 of file ArrayPair.hpp.

◆ ArrayTransformerType_t

template<class TArray >
using DNDS::ArrayTransformerType_t = typedef typename ArrayTransformerType<TArray>::Type

Definition at line 1484 of file ArrayTransformer.hpp.

◆ ContextualCheck

using DNDS::ContextualCheck = typedef std::function<CheckResult(const void *obj, const ConfigContext &ctx)>

A cross-field validation check that requires runtime context.

The function receives a const void* pointing to the config section struct and a ConfigContext carrying runtime values (nVars, dim, model, etc.).

Definition at line 208 of file ConfigRegistry.hpp.

◆ CrossFieldCheck

using DNDS::CrossFieldCheck = typedef std::function<CheckResult(const void *obj)>

A cross-field validation check that does not require runtime context.

The function receives a const void* pointing to the config section struct. It should cast to const T& and inspect the fields, returning CheckResult.

Definition at line 202 of file ConfigRegistry.hpp.

◆ expression_t

using DNDS::expression_t = typedef exprtk::expression<real>

Definition at line 13 of file ExprtkWrapper.cpp.

◆ host_device_vector

template<class T >
using DNDS::host_device_vector = typedef host_device_vector_r1<T>

Primary public alias: host_device_vector<T> = #host_device_vector_r1<T>. Prefer this name throughout the code base.

Definition at line 527 of file Vector.hpp.

◆ index

using DNDS::index = typedef int64_t

Global row / DOF index type (signed 64-bit; handles multi-billion-cell meshes).

Definition at line 107 of file Defines.hpp.

◆ MatrixXR

using DNDS::MatrixXR = typedef Eigen::Matrix<real, Eigen::Dynamic, Eigen::Dynamic>

Column-major dynamic Eigen matrix of reals (default layout).

Definition at line 205 of file Defines.hpp.

◆ MPI_index

using DNDS::MPI_index = typedef MPI_Aint

MPI-compatible address/offset type (= MPI_Aint, 64-bit on all supported platforms). Used by the hindexed datatype machinery.

Definition at line 46 of file MPI.hpp.

◆ MPI_int

using DNDS::MPI_int = typedef int

MPI counterpart type for MPI_int (= C int). Used for counts and ranks in MPI calls.

Definition at line 43 of file MPI.hpp.

◆ parser_t

using DNDS::parser_t = typedef exprtk::parser<real>

Definition at line 14 of file ExprtkWrapper.cpp.

◆ py_class_ssp

template<class T >
using DNDS::py_class_ssp = typedef py::classh<T>

Definition at line 21 of file Defines_bind.hpp.

◆ real

using DNDS::real = typedef double

Canonical floating-point scalar used throughout DNDSR (double precision).

Definition at line 105 of file Defines.hpp.

◆ real_half_sized_index

using DNDS::real_half_sized_index = typedef int32_t

Integer type with half the width of real.

Definition at line 113 of file Defines.hpp.

◆ real_sized_index

using DNDS::real_sized_index = typedef int64_t

Integer type with the same width as real (used for type-punning / packing).

Definition at line 111 of file Defines.hpp.

◆ remove_cvref_t

template<typename T >
using DNDS::remove_cvref_t = typedef std::remove_cv_t<std::remove_reference_t<T> >

Convenience remove_cv + remove_reference composition (C++17 port of C++20's std::remove_cvref_t).

Definition at line 156 of file Defines.hpp.

◆ rowsize

using DNDS::rowsize = typedef int32_t

Row-width / per-row element-count type (signed 32-bit).

Definition at line 109 of file Defines.hpp.

◆ RowVectorXR

using DNDS::RowVectorXR = typedef Eigen::RowVector<real, Eigen::Dynamic>

Dynamic row-vector of reals.

Definition at line 209 of file Defines.hpp.

◆ ssp

template<typename T >
using DNDS::ssp = typedef std::shared_ptr<T>

Shortened alias for std::shared_ptr used pervasively in DNDSR.

Definition at line 138 of file Defines.hpp.

◆ symbol_table_t

using DNDS::symbol_table_t = typedef exprtk::symbol_table<real>

Definition at line 12 of file ExprtkWrapper.cpp.

◆ t_indexerPair

using DNDS::t_indexerPair = typedef std::tuple<index, index>

Paired indices, typically (start, size) or (first, last).

Definition at line 167 of file Defines.hpp.

◆ t_IndexVec

using DNDS::t_IndexVec = typedef std::vector<index>

Vector of index values (global offsets, local ids, etc.).

Definition at line 161 of file Defines.hpp.

◆ t_jsonconfig

using DNDS::t_jsonconfig = typedef nlohmann::ordered_json

Project-wide JSON type alias: nlohmann/json with ordered keys.

Order preservation makes generated config files diffable across re-saves. Use this for all DNDSR-facing configuration objects; reach for the unordered nlohmann::json only where compatibility with third-party producers demands it.

Definition at line 19 of file JsonUtil.hpp.

◆ t_pIndexVec

using DNDS::t_pIndexVec = typedef ssp<t_IndexVec>

Shared pointer alias to t_IndexVec (used by mapping tables shared between arrays, see IndexMapping.hpp).

Definition at line 164 of file Defines.hpp.

◆ t_pLGhostMapping

Shared pointer to an OffsetAscendIndexMapping (per-rank ghost layout).

Definition at line 33 of file ArrayTransformer.hpp.

◆ t_pLGlobalMapping

Shared pointer to a GlobalOffsetsMapping (globally replicated).

Definition at line 31 of file ArrayTransformer.hpp.

◆ t_RowsizeVec

using DNDS::t_RowsizeVec = typedef std::vector<rowsize>

Vector of row widths (one rowsize per row).

Definition at line 159 of file Defines.hpp.

◆ t_sspDeviceStorageBase

using DNDS::t_sspDeviceStorageBase = typedef std::shared_ptr<DeviceStorageBase>

Shared pointer equivalent of t_supDeviceStorageBase.

Definition at line 89 of file DeviceStorage.hpp.

◆ t_supDeviceStorageBase

using DNDS::t_supDeviceStorageBase = typedef std::unique_ptr<DeviceStorageBase, std::function<void(DeviceStorageBase *)> >

Owning unique pointer to a DeviceStorageBase with cross-DLL-safe deleter.

Definition at line 87 of file DeviceStorage.hpp.

◆ tDiFj

using DNDS::tDiFj = typedef Eigen::Matrix<real, -1, -1, Eigen::RowMajor>

Row-major dynamic Eigen matrix used by quadrature / basis tables.

Definition at line 202 of file Defines.hpp.

◆ tExprVars

using DNDS::tExprVars = typedef std::map<std::string, real>

Scalar name -> value map fed into an ExprtkWrapperEvaluator.

Definition at line 11 of file ExprtkWrapper.hpp.

◆ tExprVarVecs

using DNDS::tExprVarVecs = typedef std::map<std::string, Eigen::Vector<real, Eigen::Dynamic> >

Vector name -> Eigen dense vector map fed into an ExprtkWrapperEvaluator.

Definition at line 13 of file ExprtkWrapper.hpp.

◆ tLogSimpleDIValueMap

using DNDS::tLogSimpleDIValueMap = typedef std::map<std::string, LogSimpleDIValue>

Convenience alias: the title -> value map type passed to CsvLog::WriteLine.

Definition at line 141 of file CsvLog.hpp.

◆ tMPI_AintVec

Alias for tMPI_indexVec to match MPI_Aint terminology.

Definition at line 58 of file MPI.hpp.

◆ tMPI_indexVec

using DNDS::tMPI_indexVec = typedef std::vector<MPI_index>

Vector of MPI_Aint byte-offsets for hindexed datatypes.

Definition at line 56 of file MPI.hpp.

◆ tMPI_intVec

Alias for tMPI_sizeVec; used where the name "int vec" reads better.

Definition at line 54 of file MPI.hpp.

◆ tMPI_reqVec

using DNDS::tMPI_reqVec = typedef std::vector<MPI_Request>

Vector of MPI_Request, for persistent / nonblocking calls.

Definition at line 63 of file MPI.hpp.

◆ tMPI_sizeVec

using DNDS::tMPI_sizeVec = typedef std::vector<MPI_int>

Vector of MPI counts.

Definition at line 52 of file MPI.hpp.

◆ tMPI_statVec

using DNDS::tMPI_statVec = typedef std::vector<MPI_Status>

Vector of MPI_Status, for MPI_Waitall / MPI_Testall.

Definition at line 61 of file MPI.hpp.

◆ tMPI_typePairVec

using DNDS::tMPI_typePairVec = typedef std::vector<std::pair<MPI_int, MPI_Datatype> >

Definition at line 323 of file MPI.hpp.

◆ tpMPITypePairHolder

Shared-pointer alias to MPITypePairHolder.

Definition at line 378 of file MPI.hpp.

◆ tPy_Array

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using DNDS::tPy_Array = typedef py_class_ssp<Array<T, _row_size, _row_max, _align> >

Definition at line 65 of file Array_bind.hpp.

◆ tPy_ArrayAdjacency

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using DNDS::tPy_ArrayAdjacency = typedef py_class_ssp<ArrayAdjacency<_row_size, _row_max, _align> >

Definition at line 30 of file ArrayAdjacency_bind.hpp.

◆ tPy_ArrayAdjacencyPair

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using DNDS::tPy_ArrayAdjacencyPair = typedef py_class_ssp<ArrayAdjacencyPair<_row_size, _row_max, _align> >

Definition at line 33 of file ArrayAdjacency_bind.hpp.

◆ tPy_ArrayDOF

template<int n_m, int n_n>
using DNDS::tPy_ArrayDOF = typedef py_class_ssp<ArrayDof<n_m, n_n> >

Definition at line 23 of file ArrayDOF_bind.hpp.

◆ tPy_ArrayEigenMatrix

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
using DNDS::tPy_ArrayEigenMatrix = typedef py_class_ssp<ArrayEigenMatrix<_mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align> >

Definition at line 37 of file ArrayEigenMatrix_bind.hpp.

◆ tPy_ArrayEigenMatrixBatch

◆ tPy_ArrayEigenMatrixBatchPair

◆ tPy_ArrayEigenMatrixPair

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
using DNDS::tPy_ArrayEigenMatrixPair = typedef py_class_ssp<ArrayEigenMatrixPair<_mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align> >

Definition at line 41 of file ArrayEigenMatrix_bind.hpp.

◆ tPy_ArrayEigenUniMatrixBatch

template<int _n_row, int _n_col>
using DNDS::tPy_ArrayEigenUniMatrixBatch = typedef py_class_ssp<ArrayEigenUniMatrixBatch<_n_row, _n_col> >

Definition at line 26 of file ArrayEigenUniMatrixBatch_bind.hpp.

◆ tPy_ArrayEigenUniMatrixBatchPair

template<int _n_row, int _n_col>
using DNDS::tPy_ArrayEigenUniMatrixBatchPair = typedef py_class_ssp<ArrayEigenUniMatrixBatchPair<_n_row, _n_col> >

Definition at line 29 of file ArrayEigenUniMatrixBatch_bind.hpp.

◆ tPy_ArrayEigenVector

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using DNDS::tPy_ArrayEigenVector = typedef py_class_ssp<ArrayEigenVector<_vec_size, _row_max, _align> >

Definition at line 30 of file ArrayEigenVector_bind.hpp.

◆ tPy_ArrayEigenVectorPair

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using DNDS::tPy_ArrayEigenVectorPair = typedef py_class_ssp<ArrayEigenVectorPair<_vec_size, _row_max, _align> >

Definition at line 33 of file ArrayEigenVector_bind.hpp.

◆ tPy_ArrayTransformer

template<class TArray >
using DNDS::tPy_ArrayTransformer = typedef py_class_ssp<ArrayTransformerType_t<TArray> >

Definition at line 72 of file Array_bind.hpp.

◆ tPy_ParArray

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using DNDS::tPy_ParArray = typedef py_class_ssp<ParArray<T, _row_size, _row_max, _align> >

Definition at line 68 of file Array_bind.hpp.

◆ tPy_ParArrayPair

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
using DNDS::tPy_ParArrayPair = typedef py_class_ssp<ArrayPair<ParArray<T, _row_size, _row_max, _align> >>

Definition at line 76 of file Array_bind.hpp.

◆ VectorXR

using DNDS::VectorXR = typedef Eigen::Vector<real, Eigen::Dynamic>

Dynamic Eigen vector of reals.

Definition at line 207 of file Defines.hpp.

Enumeration Type Documentation

◆ ConfigTypeTag

enum class DNDS::ConfigTypeTag
strong

Enumerates the JSON Schema type associated with a config field.

Used by FieldMeta::schemaEntry to emit the correct "type" value in the generated JSON Schema. The mapping is:

Tag JSON Schema type C++ types
Bool "boolean" bool
Int "integer" int, int32_t, int64_t, uint8_t
Real "number" real (double), float
String "string" std::string
Enum "string" + enum any enum with DNDS_DEFINE_ENUM_JSON
Array "array" std::vector<scalar>, Eigen::VectorXd
Object "object" nested config section
ArrayOfObjects "array" of objects std::vector<Section>
MapOfObjects "object" (additionalProperties) std::map<string,Section>
Json {} (any) nlohmann::ordered_json
Enumerator
Bool 
Int 
Real 
String 
Enum 
Array 
Object 
ArrayOfObjects 
MapOfObjects 
Json 

Definition at line 105 of file ConfigRegistry.hpp.

◆ DataLayout

Enumeration of the five concrete data layouts supported by Array.

The value is determined at compile time from _row_size and _row_max template parameters. See the layout table in Array.hpp.

Enumerator
ErrorLayout 

Invalid combination of template parameters.

TABLE_StaticFixed 

Fixed row width, known at compile time.

TABLE_Fixed 

Fixed row width, set at runtime (uniform across rows).

TABLE_Max 

Padded variable rows; max width set at runtime.

TABLE_StaticMax 

Padded variable rows; max width fixed at compile time.

CSR 

Compressed Sparse Row (flat buffer + row-start index).

Definition at line 17 of file ArrayBasic.hpp.

◆ DeviceBackend

enum class DNDS::DeviceBackend
strong

Enumerates the backends a DeviceStorage / Array can live on.

Host is always available; CUDA is compiled in when DNDS_USE_CUDA is defined. Additional slots (Custom1, ...) are placeholders for future backends (e.g., HIP, SYCL) that can be plugged in by providing new factory specialisations.

Enumerator
Unknown 

Unset / sentinel.

Host 

Plain CPU memory.

Custom1 

Reserved slot for a project-specific backend.

Definition at line 27 of file DeviceStorage.hpp.

Function Documentation

◆ __DNDSToMPITypeFloat()

template<class Tbasic >
constexpr MPI_Datatype DNDS::__DNDSToMPITypeFloat ( )
constexpr

Map a DNDS floating-point type size to an MPI datatype.

Compile-time selects MPI_REAL8 or MPI_REAL4 based on sizeof(Tbasic). Used by DNDS_MPI_REAL.

Definition at line 83 of file MPI.hpp.

◆ __DNDSToMPITypeInt()

template<class Tbasic >
constexpr MPI_Datatype DNDS::__DNDSToMPITypeInt ( )
constexpr

Map a DNDS integer type size to an MPI signed-integer datatype.

Compile-time selects MPI_INT64_T or MPI_INT32_T based on sizeof(Tbasic). Used by DNDS_MPI_INDEX.

Definition at line 71 of file MPI.hpp.

◆ __OneMatGetRowSize()

template<rowsize _mat_ni, rowsize _mat_nj>
constexpr rowsize DNDS::__OneMatGetRowSize ( )
constexpr

Compute the underlying per-row element count for an Ni x Nj matrix cell.

Resolves to Ni*Nj when both are compile-time fixed, NonUniformSize when either uses per-row sizing, or DynamicSize for the remaining runtime-determined cases.

Definition at line 20 of file ArrayEigenMatrix_DeviceView.hpp.

◆ __pybind11_callBindArrayAdjacencys_rowsizes_sequence()

template<size_t N, std::array< int, N > const & Arr, size_t... Is>
void DNDS::__pybind11_callBindArrayAdjacencys_rowsizes_sequence ( py::module_ &  m,
std::index_sequence< Is... >   
)

Definition at line 203 of file ArrayAdjacency_bind.hpp.

Here is the caller graph for this function:

◆ __pybind11_callBindArrayDOFs_rowsizes_sequence()

template<rowsize mat_n, size_t N, std::array< int, N > const & Arr, size_t... Is>
void DNDS::__pybind11_callBindArrayDOFs_rowsizes_sequence ( py::module_ &  m,
std::index_sequence< Is... >   
)

Definition at line 130 of file ArrayDOF_bind.hpp.

Here is the caller graph for this function:

◆ __pybind11_callBindArrayEigenMatrixs_rowsizes_sequence()

template<rowsize mat_n, size_t N, std::array< int, N > const & Arr, size_t... Is>
void DNDS::__pybind11_callBindArrayEigenMatrixs_rowsizes_sequence ( py::module_ &  m,
std::index_sequence< Is... >   
)

Definition at line 249 of file ArrayEigenMatrix_bind.hpp.

Here is the caller graph for this function:

◆ __pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes_sequence()

template<rowsize mat_n, size_t N, std::array< int, N > const & Arr, size_t... Is>
void DNDS::__pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes_sequence ( py::module_ &  m,
std::index_sequence< Is... >   
)

Definition at line 297 of file ArrayEigenUniMatrixBatch_bind.hpp.

Here is the caller graph for this function:

◆ __pybind11_callBindArrayEigenVectors_rowsizes_sequence()

template<size_t N, std::array< int, N > const & Arr, size_t... Is>
void DNDS::__pybind11_callBindArrayEigenVectors_rowsizes_sequence ( py::module_ &  m,
std::index_sequence< Is... >   
)

Definition at line 196 of file ArrayEigenVector_bind.hpp.

Here is the caller graph for this function:

◆ __pybind11_callBindArrays_rowsizes_sequence()

template<class T , size_t N, std::array< int, N > const & Arr, size_t... Is>
void DNDS::__pybind11_callBindArrays_rowsizes_sequence ( py::module_ &  m,
std::index_sequence< Is... >   
)

Definition at line 564 of file Array_bind.hpp.

Here is the caller graph for this function:

◆ __pybind11_callBindArrayTransformers_rowsizes_sequence()

template<class T , size_t N, std::array< int, N > const & Arr, size_t... Is>
void DNDS::__pybind11_callBindArrayTransformers_rowsizes_sequence ( py::module_ &  m,
std::index_sequence< Is... >   
)

Definition at line 592 of file Array_bind.hpp.

Here is the caller graph for this function:

◆ __pybind11_callBindParArrayPairs_rowsizes_sequence()

template<class T , size_t N, std::array< int, N > const & Arr, size_t... Is>
void DNDS::__pybind11_callBindParArrayPairs_rowsizes_sequence ( py::module_ &  m,
std::index_sequence< Is... >   
)

Definition at line 606 of file Array_bind.hpp.

Here is the caller graph for this function:

◆ __pybind11_callBindParArrays_rowsizes_sequence()

template<class T , size_t N, std::array< int, N > const & Arr, size_t... Is>
void DNDS::__pybind11_callBindParArrays_rowsizes_sequence ( py::module_ &  m,
std::index_sequence< Is... >   
)

Definition at line 578 of file Array_bind.hpp.

Here is the caller graph for this function:

◆ _get_pybind11_arrayRowsizeInstantiationList()

template<int offset = 0>
constexpr auto DNDS::_get_pybind11_arrayRowsizeInstantiationList ( )
constexpr

Definition at line 550 of file Array_bind.hpp.

◆ _pybind11_Array_define_dispatch()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::_pybind11_Array_define_dispatch ( py::module_ &  m)

Definition at line 223 of file Array_bind.hpp.

◆ _pybind11_ArrayAdjacency_define_dispatch()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::_pybind11_ArrayAdjacency_define_dispatch ( py::module_ &  m)

Definition at line 125 of file ArrayAdjacency_bind.hpp.

◆ _pybind11_ArrayAdjacencyPair_define_dispatch()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::_pybind11_ArrayAdjacencyPair_define_dispatch ( py::module_ &  m)

Definition at line 191 of file ArrayAdjacency_bind.hpp.

◆ _pybind11_ArrayDOF_define_dispatch()

template<int n_m, int n_n>
void DNDS::_pybind11_ArrayDOF_define_dispatch ( py::module_ &  m)

Definition at line 117 of file ArrayDOF_bind.hpp.

◆ _pybind11_ArrayEigenMatrix_define_dispatch()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
void DNDS::_pybind11_ArrayEigenMatrix_define_dispatch ( py::module_ &  m)

Definition at line 169 of file ArrayEigenMatrix_bind.hpp.

◆ _pybind11_ArrayEigenMatrixPair_define_dispatch()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
void DNDS::_pybind11_ArrayEigenMatrixPair_define_dispatch ( py::module_ &  m)

Definition at line 236 of file ArrayEigenMatrix_bind.hpp.

◆ _pybind11_ArrayEigenUniMatrixBatch_define_dispatch()

template<int _n_row, int _n_col>
void DNDS::_pybind11_ArrayEigenUniMatrixBatch_define_dispatch ( py::module_ &  m)

Definition at line 201 of file ArrayEigenUniMatrixBatch_bind.hpp.

◆ _pybind11_ArrayEigenUniMatrixBatchPair_define_dispatch()

template<int _n_row, int _n_col>
void DNDS::_pybind11_ArrayEigenUniMatrixBatchPair_define_dispatch ( py::module_ &  m)

Definition at line 283 of file ArrayEigenUniMatrixBatch_bind.hpp.

◆ _pybind11_ArrayEigenVector_define_dispatch()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
void DNDS::_pybind11_ArrayEigenVector_define_dispatch ( py::module_ &  m)

Definition at line 120 of file ArrayEigenVector_bind.hpp.

◆ _pybind11_ArrayEigenVectorPair_define_dispatch()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
void DNDS::_pybind11_ArrayEigenVectorPair_define_dispatch ( py::module_ &  m)

Definition at line 184 of file ArrayEigenVector_bind.hpp.

◆ _pybind11_ArrayTransformer_define_dispatch()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::_pybind11_ArrayTransformer_define_dispatch ( py::module_ &  m)

Definition at line 538 of file Array_bind.hpp.

◆ _pybind11_ParArray_define_dispatch()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::_pybind11_ParArray_define_dispatch ( py::module_ &  m)

Definition at line 296 of file Array_bind.hpp.

◆ _pybind11_ParArrayPair_define_dispatch()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::_pybind11_ParArrayPair_define_dispatch ( py::module_ &  m)

Definition at line 437 of file Array_bind.hpp.

◆ AccumulateRowSize()

template<class TtRowsizeVec , class TtIndexVec >
void DNDS::AccumulateRowSize ( const TtRowsizeVec &  rowsizes,
TtIndexVec &  rowstarts 
)
inline

Build a prefix-sum table from a row-size vector.

Resizes rowstarts to rowsizes.size() + 1 and fills it so that rowstarts[i] = sum_{k<i} rowsizes[k]. Asserts on overflow. Used extensively by CSR Array / ghost-indexing to turn row-count vectors into offset vectors.

Template Parameters
TtRowsizeVecstd::vector-like of row sizes (e.g. rowsize).
TtIndexVecstd::vector-like of offsets (e.g. index), must have a strictly wider range than the row-size type.

Definition at line 452 of file Defines.hpp.

Here is the caller graph for this function:

◆ Align_To_PySnippet()

std::string DNDS::Align_To_PySnippet ( rowsize  al)
inline

Encode an alignment value as a Python-binding snippet: "N" for NoAlign, the number otherwise.

Definition at line 310 of file Defines.hpp.

Here is the caller graph for this function:

◆ array_comp_acceptable()

template<class T >
constexpr bool DNDS::array_comp_acceptable ( )
constexpr

Whether T is legal as an Array element type (trivially copyable or a fixed-size real Eigen matrix). Controls CUDA/MPI copy paths.

Definition at line 56 of file ArrayBasic.hpp.

◆ ArrayDeviceView_build()

template<DeviceBackend B, class T , rowsize _row_size, rowsize _row_max, rowsize _align>
auto DNDS::ArrayDeviceView_build ( index  n_size,
T *  n_data,
index  n_data_size,
const index n_rowstart,
index  n_rowstart_size,
const rowsize n_rowsizes,
index  n_rowsizes_size,
rowsize  n_row_size_dynamic,
T *  n_data_device,
const index n_rowstart_device,
const rowsize n_rowsizes_device 
)

Factory for ArrayDeviceView: selects host or device pointers based on B and forwards everything else.

Used by Array::deviceView<B>(); rarely called directly.

Definition at line 107 of file DeviceView.hpp.

◆ assert_false()

void DNDS::assert_false ( const char *  expr,
const char *  file,
int  line 
)
inline

Low-level: print a red "DNDS_assertion failed" line and abort.

Definition at line 40 of file Errors.hpp.

Here is the call graph for this function:

◆ assert_false_info()

void DNDS::assert_false_info ( const char *  expr,
const char *  file,
int  line,
const std::string &  info 
)
inline

Variant of assert_false that prints an extra info string.

Definition at line 48 of file Errors.hpp.

Here is the call graph for this function:

◆ assert_false_info_mpi()

void DNDS::assert_false_info_mpi ( const char *  expr,
const char *  file,
int  line,
const std::string &  info,
const DNDS::MPIInfo mpi 
)

MPI-aware assertion-failure reporter.

Barriers before abort so every rank flushes its output; if Debug::isDebugging is set, busy-waits to allow debugger attachment.

Definition at line 95 of file MPI.cpp.

Here is the call graph for this function:

◆ assert_false_info_throw()

template<class TException = std::runtime_error>
void DNDS::assert_false_info_throw ( const char *  expr,
const char *  file,
int  line,
const std::string &  info 
)

Throwing variant of assert_false_info. Used by DNDS_check_throw.

Template Parameters
TExceptionException type to throw (defaults to std::runtime_error). Currently the implementation ignores the template parameter and always throws std::runtime_error; kept for future customisation.

Definition at line 76 of file Errors.hpp.

Here is the call graph for this function:

◆ assert_false_infof()

void DNDS::assert_false_infof ( const char *  expr,
const char *  file,
int  line,
const char *  info,
  ... 
)
inline

printf-style variant of assert_false. Used by DNDS_assert_infof.

Definition at line 57 of file Errors.hpp.

Here is the call graph for this function:

◆ BasicType_To_MPIIntType()

template<class T >
std::pair< MPI_Datatype, MPI_int > DNDS::BasicType_To_MPIIntType ( )

Deduce an (MPI_Datatype, count) pair that represents a T value.

Compile-time dispatch:

  • builtin float / int types map to their obvious MPI_* datatypes, count = 1;
  • C-style arrays (T[N]) recurse into the element type and multiply the count;
  • std::array<T, N> recurses into T::value_type and multiplies by N;
  • fixed-size real Eigen matrices map to DNDS_MPI_REAL with count sizeof(T)/sizeof(real);
  • otherwise falls back to BasicType_To_MPIIntType_Custom.

Used throughout ghost-communication and collective code to avoid hand- writing datatype mapping for every MPI call.

Note
Not constexpr because OpenMPI handles are not constant-expressions. Warning, not const-expr since OpenMPI disallows it

Definition at line 149 of file MPI.hpp.

Here is the call graph for this function:

◆ BasicType_To_MPIIntType_Custom()

template<class T >
std::pair< MPI_Datatype, MPI_int > DNDS::BasicType_To_MPIIntType_Custom ( )

Dispatch to a user-provided CommPair / CommMult+ CommType pair on T.

Last resort for types that are not scalars, plain arrays, or real Eigen matrices. T must either expose static CommMult() + CommType() methods, or a static CommPair() returning the same pair.

Definition at line 124 of file MPI.hpp.

◆ BuildRedistributionPullingIndex()

std::vector< index > DNDS::BuildRedistributionPullingIndex ( const MPIInfo mpi,
const std::vector< index > &  readOrigIndex,
const std::vector< index > &  newOrigIndex,
const ssp< GlobalOffsetsMapping > &  readGlobalMapping 
)
inline

Redistributes ArrayPair data between different MPI partitions using ArrayTransformer.

The caller provides:

  • readOrigIndex: the original indices for data this rank read from HDF5 (even-split)
  • readArray: the data this rank read (father of a temporary ArrayPair)
  • newOrigIndex: the original indices this rank needs (from current mesh's cell2cellOrig)

The redistributor builds a temporary ArrayTransformer to pull needed data:

  1. Build a global mapping on the "read" arrays (readArray serves as father).
  2. For each entry in newOrigIndex, find which rank's read slice contains it, and compute the corresponding global index in the read array's global space.
  3. Use ArrayTransformer::createGhostMapping + pullOnce to fetch the data.
  4. Copy the pulled data into the output array in newOrigIndex order.

This works for fixed-row-size, dynamic-row-size, and CSR arrays alike, since ArrayTransformer handles all these layouts internally.

Builds the pulling index mapping for redistribution.

Given the origIndex arrays from the even-split read (distributed across all ranks), and the newOrigIndex for this rank, determines which global indices in the read array space need to be pulled.

Uses a 3-round MPI_Alltoallv rendezvous: Round 1: Send (origIdx, globalReadIdx) pairs to directory ranks. Round 2: Send query origIndex entries to directory ranks. Round 3: Directory ranks reply with resolved globalReadIdx.

Memory scaling
Temporary memory per rank is O(nLocal) where nLocal is the larger of readOrigIndex.size() and newOrigIndex.size(). Specifically:
  • 7 index vectors of size O(nLocal): sendBuf, recvBuf, querySendBuf, queryRecvBuf, queryReplyBuf, replyRecvBuf, pullingIndexGlobal
  • 1 unordered_map<index,index> of size O(nGlobal/nRanks) for the directory
  • Total: ~7 × nLocal × sizeof(index) + O(nGlobal/nRanks) hash table overhead For a 100M-cell mesh with 8 ranks: ~12.5M entries × 8 B × 7 ≈ 700 MB per rank, plus ~200 MB for the directory hash table.
Parameters
mpiMPI communicator info
readOrigIndexOriginal indices from the even-split read (this rank's slice)
newOrigIndexOriginal indices this rank needs (from current partition)
readGlobalMappingGlobal mapping of the read array (prefix-sum offsets)
Returns
pullingIndexGlobal: vector of global read-array indices to pull (ordered to match newOrigIndex)

Definition at line 70 of file ArrayRedistributor.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ checkedIndexTo32()

int32_t DNDS::checkedIndexTo32 ( index  v)
inline

Narrow index to int32_t with range check; dies on overflow.

Todo:
//TODO: overflow_assign_int64_to_32

Definition at line 619 of file Defines.hpp.

◆ checkUniformVector()

template<class T >
bool DNDS::checkUniformVector ( const std::vector< T > &  dat,
T &  value 
)
inline

Whether all elements of dat are equal; if so, stores the value into value.

Returns
false if the vector is empty or contains at least two distinct values.

Definition at line 469 of file Defines.hpp.

◆ cube()

template<typename T >
constexpr T DNDS::cube ( const T &  a)
constexpr

a * a * a, constexpr.

Definition at line 525 of file Defines.hpp.

Here is the caller graph for this function:

◆ device_backend_name()

const char * DNDS::device_backend_name ( DeviceBackend  B)
inline

Canonical string name for a DeviceBackend (used in log messages).

Definition at line 51 of file DeviceStorage.hpp.

Here is the caller graph for this function:

◆ device_backend_name_to_enum()

DeviceBackend DNDS::device_backend_name_to_enum ( std::string_view  s)
inline

Inverse of device_backend_name. Returns Unknown for unrecognised names.

Definition at line 70 of file DeviceStorage.hpp.

Here is the caller graph for this function:

◆ device_storage_create()

t_supDeviceStorageBase DNDS::device_storage_create ( DeviceBackend  backend,
size_t  n_bytes 
)
inline

Top-level factory: dispatches to the per-backend factory based on backend. Returns a null unique_ptr for DeviceBackendUnknown.

Definition at line 159 of file DeviceStorage.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ deviceStorageBase_deleter()

void DNDS::deviceStorageBase_deleter ( DeviceStorageBase p)

Stateless deleter for DeviceStorageBase that works across shared-library boundaries where the vtable of unique_ptr's default deleter would not.

Definition at line 12 of file DeviceStorage.cpp.

Here is the caller graph for this function:

◆ divCeil()

template<class TL , class TR >
constexpr auto DNDS::divCeil ( TL  l,
TR  r 
)
constexpr

Integer ceiling division. l must be non-negative, r positive.

Bug:
The current expression has incorrect precedence; see divide_ceil for the corrected version. Do not use new code with divCeil.

l must be non-negative, r must be positive. integers

Definition at line 495 of file Defines.hpp.

Here is the call graph for this function:

◆ divide_ceil()

template<typename T >
constexpr T DNDS::divide_ceil ( a,
b 
)
constexpr

Integer ceiling division ceil(a / b). Correct for all signs.

Definition at line 569 of file Defines.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DNDS_H5T_INDEX()

hid_t DNDS::DNDS_H5T_INDEX ( )
inline

HDF5 native datatype matching DNDS index (currently H5T_NATIVE_INT64).

Static-asserts that the DNDS type has not drifted from int64_t.

Definition at line 12 of file HDF5.hpp.

Here is the caller graph for this function:

◆ DNDS_H5T_REAL()

hid_t DNDS::DNDS_H5T_REAL ( )
inline

HDF5 native datatype matching DNDS real (currently H5T_NATIVE_DOUBLE).

Definition at line 36 of file HDF5.hpp.

Here is the caller graph for this function:

◆ DNDS_H5T_ROWSIZE()

hid_t DNDS::DNDS_H5T_ROWSIZE ( )
inline

HDF5 native datatype matching DNDS rowsize (currently H5T_NATIVE_INT32).

Definition at line 24 of file HDF5.hpp.

Here is the caller graph for this function:

◆ EigenSize_Mul_RowSize()

template<int a, int b>
constexpr rowsize DNDS::EigenSize_Mul_RowSize ( )
constexpr

a * b if both are compile-time sizes, DynamicSize if either is Eigen::Dynamic, otherwise a sentinel.

Helper used by ArrayEigenUniMatrixBatchDeviceView to compute the underlying ParArray row width from the matrix shape.

Definition at line 17 of file ArrayEigenUniMatrixBatch_DeviceView.hpp.

Here is the call graph for this function:

◆ EigenVectorFMTSafeGetJson()

auto DNDS::EigenVectorFMTSafeGetJson ( const Eigen::VectorFMTSafe< real, -1 > &  ve)
inline

Dump an Eigen::VectorFMTSafe into a JSON array of doubles.

Definition at line 77 of file JsonUtil.hpp.

Here is the caller graph for this function:

◆ EigenVectorGetJson()

auto DNDS::EigenVectorGetJson ( const Eigen::VectorXd &  ve)
inline

Dump an Eigen::VectorXd into a JSON array of doubles.

Definition at line 67 of file JsonUtil.hpp.

Here is the caller graph for this function:

◆ EvenSplitRange()

std::pair< index, index > DNDS::EvenSplitRange ( int  rank,
int  nRanks,
index  nGlobal 
)
inline

Split a global range [0, nGlobal) evenly among nRanks workers.

Used by the EvenSplit serialization-offset mode and by redistribution routines to pick per-rank slabs without exchanging sizes. The partition is dense and balanced to within one item.

Returns
[start, end) for the caller's rank.

Definition at line 129 of file Defines.hpp.

Here is the caller graph for this function:

◆ float_mod()

real DNDS::float_mod ( real  a,
real  b 
)
inline

Floating-point modulo matching Python's % (result has sign of b).

Parameters
bMust be positive.

Definition at line 580 of file Defines.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ for_each_member_list()

template<typename TList , typename F >
void DNDS::for_each_member_list ( TList &&  obj_member_list,
F &&  f 
)

Invoke f(member) for every element of a std::tuple of members.

Companion to MemberRef / MemberPtr below; used to build auto-generated JSON / diagnostic dumps of struct contents.

Definition at line 17 of file ObjectUtils.hpp.

Here is the caller graph for this function:

◆ for_each_member_ptr_list()

template<typename Class , typename TList , typename F >
void DNDS::for_each_member_ptr_list ( Class &  obj,
TList &&  obj_member_ptr_list,
F &&  f 
)

Invoke f(name, obj.*ptr) for every member in a list of MemberPtr.

Definition at line 42 of file ObjectUtils.hpp.

Here is the caller graph for this function:

◆ for_each_member_ptr_list_raw()

template<typename TList , typename F >
void DNDS::for_each_member_ptr_list_raw ( TList &&  obj_member_ptr_list,
F &&  f 
)

Low-level variant that passes each MemberPtr object through to f directly (for callers that need access to both ptr and name).

Definition at line 51 of file ObjectUtils.hpp.

◆ from_json()

void DNDS::from_json ( const nlohmann::ordered_json &  j,
host_device_vector< real > &  v 
)
inline

Definition at line 183 of file JsonUtil.hpp.

Here is the caller graph for this function:

◆ get_env_DNDS_DIST_OMP_NUM_THREADS()

int DNDS::get_env_DNDS_DIST_OMP_NUM_THREADS ( )

Read the DNDSR-specific DNDS_DIST_OMP_NUM_THREADS override, falling back to get_env_OMP_NUM_THREADS.

Definition at line 139 of file Defines.cpp.

Here is the caller graph for this function:

◆ get_env_OMP_NUM_THREADS()

int DNDS::get_env_OMP_NUM_THREADS ( )

Read OMP_NUM_THREADS env var, returning 1 if unset / invalid.

Definition at line 119 of file Defines.cpp.

◆ get_terminal_width()

int DNDS::get_terminal_width ( )

Terminal width in columns (falls back to a fixed default when not a TTY).

Definition at line 57 of file Defines.cpp.

Here is the caller graph for this function:

◆ GetSetVersionName()

std::string DNDS::GetSetVersionName ( const std::string &  ver = "")

Read/set the build version string accessible from code.

When ver is non-empty it replaces the stored value; always returns the current value. Written into HDF5 attributes for traceability.

Definition at line 172 of file Defines.cpp.

Here is the caller graph for this function:

◆ getStringForcePath()

std::string DNDS::getStringForcePath ( const std::filesystem::path::string_type &  v)
inline

Portable conversion of a platform-native path string to std::string.

Definition at line 630 of file Defines.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getStringForceWString()

std::string DNDS::getStringForceWString ( const std::wstring &  v)

Convert a wstring to string (UTF-8 on Windows, byte-cast elsewhere).

Definition at line 104 of file Defines.cpp.

Here is the caller graph for this function:

◆ getTimeStamp()

std::string DNDS::getTimeStamp ( const MPIInfo mpi)

Format a human-readable timestamp using the calling rank as context.

Definition at line 116 of file MPI.cpp.

Here is the caller graph for this function:

◆ getTraceString()

std::string DNDS::getTraceString ( )

Return a symbolicated stack trace for the calling thread.

Host-only, implemented with boost::stacktrace (or similar). Used by the assert_false* helpers below.

Definition at line 162 of file Defines.cpp.

Here is the caller graph for this function:

◆ InsertCheck()

void DNDS::InsertCheck ( const MPIInfo mpi,
const std::string &  info = "",
const std::string &  FUNCTION = "",
const std::string &  FILE = "",
int  LINE = -1 
)
inline

Barrier + annotated print used by DNDS_MPI_InsertCheck.

No-op in release builds (NDEBUG or NINSERT defined).

Definition at line 779 of file MPI.hpp.

Here is the call graph for this function:

◆ isTABLE()

constexpr bool DNDS::isTABLE ( DataLayout  lo)
constexpr

Whether the layout uses a TABLE (padded) representation (vs CSR).

Definition at line 28 of file ArrayBasic.hpp.

◆ isTABLE_Dynamic()

constexpr bool DNDS::isTABLE_Dynamic ( DataLayout  lo)
constexpr

Whether the layout carries a runtime row-size parameter.

Definition at line 48 of file ArrayBasic.hpp.

◆ isTABLE_Fixed()

constexpr bool DNDS::isTABLE_Fixed ( DataLayout  lo)
constexpr

Whether the layout has a uniform row width (no per-row size needed).

Definition at line 33 of file ArrayBasic.hpp.

Here is the caller graph for this function:

◆ isTABLE_Max()

constexpr bool DNDS::isTABLE_Max ( DataLayout  lo)
constexpr

Whether the layout is a padded-max variant (uses _pRowSizes).

Definition at line 38 of file ArrayBasic.hpp.

Here is the caller graph for this function:

◆ isTABLE_Static()

constexpr bool DNDS::isTABLE_Static ( DataLayout  lo)
constexpr

Whether the layout has a compile-time row-size constant.

Definition at line 43 of file ArrayBasic.hpp.

◆ IsUnInitReal()

bool DNDS::IsUnInitReal ( real  v)
inline

Whether v equals the NaN sentinel UnInitReal (tested via isnan).

Definition at line 183 of file Defines.hpp.

◆ iterateIdentical()

template<class tIt1 , class tIt1end , class tIt2 , class tIt2end , class tF >
bool DNDS::iterateIdentical ( tIt1  it1,
tIt1end  it1end,
tIt2  it2,
tIt2end  it2end,
tF  F 
)

Walk two ordered ranges in lockstep, calling F on each match.

Two-pointer algorithm. Requires both ranges to be sorted in ascending order; advances the smaller side at each step. Exits early (returning true) if F(value, pos1, pos2) returns true.

Template Parameters
tFCallable bool(value, size_t pos1, size_t pos2).
Returns
true if the functor short-circuited, false if ranges were walked to completion.

Definition at line 596 of file Defines.hpp.

Here is the caller graph for this function:

◆ JsonGetEigenVector()

Eigen::VectorXd DNDS::JsonGetEigenVector ( const nlohmann::json &  arr)
inline

Parse a JSON array into an Eigen::VectorXd. Throws a descriptive assertion on any JSON error.

Definition at line 27 of file JsonUtil.hpp.

Here is the caller graph for this function:

◆ JsonGetEigenVectorFMTSafe()

Eigen::VectorFMTSafe< real, -1 > DNDS::JsonGetEigenVectorFMTSafe ( const nlohmann::json &  arr)
inline

Parse a JSON array into an Eigen::VectorFMTSafe (fixed-point-aware wrapper).

Used by configuration paths that feed values into code paths compiled with the fixed-point Eigen shim.

Definition at line 48 of file JsonUtil.hpp.

Here is the caller graph for this function:

◆ log()

std::ostream & DNDS::log ( )

Return the current DNDSR log stream (either std::cout or the installed file).

Definition at line 49 of file Defines.cpp.

Here is the caller graph for this function:

◆ logIsTTY()

bool DNDS::logIsTTY ( )

Convenience: ostreamIsTTY applied to the current log() stream.

Definition at line 51 of file Defines.cpp.

Here is the call graph for this function:

◆ make_ssp() [1/2]

template<typename T , typename... Args>
ssp< T > DNDS::make_ssp ( Args &&...  args)

Type-safe replacement for DNDS_MAKE_SSP. Creates ssp<T> with forwarded args.

Definition at line 255 of file Defines.hpp.

Here is the caller graph for this function:

◆ make_ssp() [2/2]

template<typename T , typename... Args>
ssp< T > DNDS::make_ssp ( ObjName  objName,
Args &&...  args 
)

Named variant of make_ssp. If T inherits ObjectNaming, sets the name.

Usage: auto p = make_ssp<ParArray<index>>(ObjName{"cell2node"}, mpi);

Definition at line 264 of file Defines.hpp.

◆ MemberPtr()

template<typename Class , typename T >
DNDS::MemberPtr ( T Class::*  ,
const char *   
) -> MemberPtr< Class, T >

◆ MemberRef()

template<typename T >
DNDS::MemberRef ( T &  ,
const char *   
) -> MemberRef< T >

◆ mod()

template<typename T >
constexpr T DNDS::mod ( a,
b 
)
constexpr

Mathematical modulo that always returns a non-negative result. Unlike % in C++ where (-1) % 3 == -1, mod(-1, 3) == 2.

Definition at line 558 of file Defines.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MPISerialDo()

template<class F >
void DNDS::MPISerialDo ( const MPIInfo mpi,
f 
)
inline

Execute f on each rank serially, in rank order.

Inserts an MPI_Barrier before each rank's turn so that output interleaving is deterministic. Useful for diagnostics where every rank prints something about its own state.

Template Parameters
FCallable with no arguments.

need some improvement: order could be bad?

Definition at line 698 of file MPI.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MPIWorldRank()

MPI_int DNDS::MPIWorldRank ( )
inline

Convenience: MPI_Comm_rank(MPI_COMM_WORLD).

Definition at line 307 of file MPI.hpp.

Here is the caller graph for this function:

◆ MPIWorldSize()

MPI_int DNDS::MPIWorldSize ( )
inline

Convenience: MPI_Comm_size(MPI_COMM_WORLD).

Definition at line 299 of file MPI.hpp.

Here is the caller graph for this function:

◆ null_supDeviceStorageBase()

t_supDeviceStorageBase DNDS::null_supDeviceStorageBase ( )
inline

Null-value helper for t_supDeviceStorageBase.

Definition at line 92 of file DeviceStorage.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ optimize_hindexed_layout()

template<class TBlkSiz , class TDisp , class TSizeof >
auto DNDS::optimize_hindexed_layout ( index  o_size,
TBlkSiz *  blk_sizes,
TDisp *  disps,
TSizeof  sizeofElem 
)

Coalesce contiguous blocks in an MPI_Type_create_hindexed layout.

MPI derived-type performance depends heavily on the number of blocks. If two consecutive blocks happen to be adjacent in memory (disps[i+1] == disps[i] + blk_sizes[i] * sizeofElem), they can be merged into a single larger block. This helper walks the input arrays and returns a compacted (n_size, blk_sizes, disps) tuple.

Used by ArrayTransformercreateMPITypes before calling the actual MPI_Type_create_hindexed.

Template Parameters
TBlkSizElement type of the block-size array (e.g., MPI_int).
TDispElement type of the displacement array (e.g., MPI_Aint).
TSizeofElement-size type (usually MPI_Aint).
Parameters
o_sizeNumber of input blocks.
blk_sizesBlock sizes (in element count).
dispsDisplacements (in bytes).
sizeofElemElement size in bytes (matches MPI_Type_extent).
Returns
(new_size, new_blk_sizes, new_disps) – a merged layout.

Definition at line 33 of file VectorUtils.hpp.

Here is the caller graph for this function:

◆ ostreamIsTTY()

bool DNDS::ostreamIsTTY ( std::ostream &  ostream)

Heuristic detection of whether ostream is attached to a terminal.

Definition at line 36 of file Defines.cpp.

Here is the caller graph for this function:

◆ print_progress()

void DNDS::print_progress ( std::ostream &  os,
double  progress 
)

Render a textual progress bar to os for progress in [0, 1].

Definition at line 75 of file Defines.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PrintVec()

template<class T , class TP = T>
void DNDS::PrintVec ( const std::vector< T > &  dat,
std::ostream &  out 
)
inline

Print a vector to out with outputDelim between elements.

Template Parameters
TPOptional cast type (e.g., promote int8_t to int to avoid character printing).

Definition at line 484 of file Defines.hpp.

◆ py_buffer_contains_T()

template<class T >
bool DNDS::py_buffer_contains_T ( const py::buffer_info &  info)

Definition at line 24 of file Defines_bind.hpp.

◆ py_buffer_get_contigious_size()

std::tuple< ssize_t, char > DNDS::py_buffer_get_contigious_size ( const py::buffer_info &  info)
inline

Definition at line 62 of file Defines_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ py_buffer_is_contigious_c()

bool DNDS::py_buffer_is_contigious_c ( const py::buffer_info &  info)
inline

Definition at line 30 of file Defines_bind.hpp.

Here is the caller graph for this function:

◆ py_buffer_is_contigious_f()

bool DNDS::py_buffer_is_contigious_f ( const py::buffer_info &  info)
inline

Definition at line 46 of file Defines_bind.hpp.

Here is the caller graph for this function:

◆ py_get_buffer_basic_mpi_datatype()

MPI_Datatype DNDS::py_get_buffer_basic_mpi_datatype ( const py::buffer_info &  info)
inline

Definition at line 13 of file MPI_bind.hpp.

Here is the caller graph for this function:

◆ py_get_simple_mpi_op_by_name()

MPI_Op DNDS::py_get_simple_mpi_op_by_name ( const std::string &  op)
inline

Definition at line 43 of file MPI_bind.hpp.

Here is the caller graph for this function:

◆ py_vector_as_memory_view()

template<typename T >
py::memoryview DNDS::py_vector_as_memory_view ( std::vector< T > &  vec,
bool  readonly 
)

Definition at line 77 of file Defines_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_Array_declare()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_Array< T, _row_size, _row_max, _align > DNDS::pybind11_Array_declare ( py::module_ &  m)

Definition at line 84 of file Array_bind.hpp.

◆ pybind11_Array_define()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::pybind11_Array_define ( py::module_ &  m)

Definition at line 100 of file Array_bind.hpp.

Here is the call graph for this function:

◆ pybind11_Array_get_class()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_Array< T, _row_size, _row_max, _align > DNDS::pybind11_Array_get_class ( py::module_ &  m)

Definition at line 94 of file Array_bind.hpp.

◆ pybind11_Array_name()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string DNDS::pybind11_Array_name ( )

Definition at line 41 of file Array_bind.hpp.

◆ pybind11_Array_name_appends()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string DNDS::pybind11_Array_name_appends ( )

Definition at line 24 of file Array_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayAdjacency_declare()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ArrayAdjacency< _row_size, _row_max, _align > DNDS::pybind11_ArrayAdjacency_declare ( py::module_ &  m)

Definition at line 65 of file ArrayAdjacency_bind.hpp.

◆ pybind11_ArrayAdjacency_define()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::pybind11_ArrayAdjacency_define ( py::module_ &  m)

Definition at line 80 of file ArrayAdjacency_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayAdjacency_get_class()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ArrayAdjacency< _row_size, _row_max, _align > DNDS::pybind11_ArrayAdjacency_get_class ( py::module_ &  m)

Definition at line 74 of file ArrayAdjacency_bind.hpp.

◆ pybind11_ArrayAdjacency_getitem()

template<class TArray = ArrayAdjacency<1>>
auto DNDS::pybind11_ArrayAdjacency_getitem ( TArray &  self,
index  index_ 
)

Definition at line 50 of file ArrayAdjacency_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_ArrayAdjacency_name()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string DNDS::pybind11_ArrayAdjacency_name ( )

Definition at line 18 of file ArrayAdjacency_bind.hpp.

◆ pybind11_ArrayAdjacency_name_appends()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string DNDS::pybind11_ArrayAdjacency_name_appends ( )

Definition at line 9 of file ArrayAdjacency_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayAdjacency_setitem()

template<class TArray = ArrayAdjacency<1>>
auto DNDS::pybind11_ArrayAdjacency_setitem ( TArray &  self,
index  index_,
py::buffer  row 
)

Definition at line 39 of file ArrayAdjacency_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_ArrayAdjacencyPair_declare()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ArrayAdjacencyPair< _row_size, _row_max, _align > DNDS::pybind11_ArrayAdjacencyPair_declare ( py::module_ &  m)

Definition at line 138 of file ArrayAdjacency_bind.hpp.

◆ pybind11_ArrayAdjacencyPair_define()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::pybind11_ArrayAdjacencyPair_define ( py::module_ &  m)

Definition at line 152 of file ArrayAdjacency_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayAdjacencyPair_get_class()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ArrayAdjacencyPair< _row_size, _row_max, _align > DNDS::pybind11_ArrayAdjacencyPair_get_class ( py::module_ &  m)

Definition at line 146 of file ArrayAdjacency_bind.hpp.

◆ pybind11_ArrayAdjacencyPair_name()

template<rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string DNDS::pybind11_ArrayAdjacencyPair_name ( )

Definition at line 24 of file ArrayAdjacency_bind.hpp.

◆ pybind11_ArrayDOF_declare()

template<int n_m, int n_n>
tPy_ArrayDOF< n_m, n_n > DNDS::pybind11_ArrayDOF_declare ( py::module_ &  m)

Definition at line 30 of file ArrayDOF_bind.hpp.

◆ pybind11_ArrayDOF_define()

template<int n_m, int n_n>
void DNDS::pybind11_ArrayDOF_define ( py::module_ &  m)

Definition at line 45 of file ArrayDOF_bind.hpp.

◆ pybind11_ArrayDOF_get_class()

template<int n_m, int n_n>
tPy_ArrayDOF< n_m, n_n > DNDS::pybind11_ArrayDOF_get_class ( py::module_ &  m)

Definition at line 39 of file ArrayDOF_bind.hpp.

◆ pybind11_ArrayDOF_name()

template<int n_m, int n_n>
std::string DNDS::pybind11_ArrayDOF_name ( )

Definition at line 15 of file ArrayDOF_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenMatrix_declare()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
tPy_ArrayEigenMatrix< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > DNDS::pybind11_ArrayEigenMatrix_declare ( py::module_ &  m)

Definition at line 91 of file ArrayEigenMatrix_bind.hpp.

◆ pybind11_ArrayEigenMatrix_define()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
void DNDS::pybind11_ArrayEigenMatrix_define ( py::module_ &  m)

Definition at line 111 of file ArrayEigenMatrix_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenMatrix_get_class()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
tPy_ArrayEigenMatrix< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > DNDS::pybind11_ArrayEigenMatrix_get_class ( py::module_ &  m)

Definition at line 104 of file ArrayEigenMatrix_bind.hpp.

◆ pybind11_ArrayEigenMatrix_getitem()

template<class TArrayEigenMatrix = ArrayEigenMatrix<3, 3>>
auto DNDS::pybind11_ArrayEigenMatrix_getitem ( TArrayEigenMatrix &  self,
index  index_ 
)

Definition at line 47 of file ArrayEigenMatrix_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrix_name()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
std::string DNDS::pybind11_ArrayEigenMatrix_name ( )

Definition at line 23 of file ArrayEigenMatrix_bind.hpp.

◆ pybind11_ArrayEigenMatrix_name_appends()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
std::string DNDS::pybind11_ArrayEigenMatrix_name_appends ( )

Definition at line 11 of file ArrayEigenMatrix_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenMatrix_setitem()

template<class TArrayEigenMatrix = ArrayEigenMatrix<3, 3>>
auto DNDS::pybind11_ArrayEigenMatrix_setitem ( TArrayEigenMatrix &  self,
index  index_,
py::buffer  row 
)

Definition at line 59 of file ArrayEigenMatrix_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixBatch_declare()

tPy_ArrayEigenMatrixBatch DNDS::pybind11_ArrayEigenMatrixBatch_declare ( py::module_ &  m)
inline

Definition at line 113 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixBatch_define()

void DNDS::pybind11_ArrayEigenMatrixBatch_define ( py::module_ &  m)
inline

Definition at line 125 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixBatch_get_class()

tPy_ArrayEigenMatrixBatch DNDS::pybind11_ArrayEigenMatrixBatch_get_class ( py::module_ &  m)
inline

Definition at line 120 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenMatrixBatch_getitem()

auto DNDS::pybind11_ArrayEigenMatrixBatch_getitem ( ArrayEigenMatrixBatch self,
std::tuple< index, rowsize index_ 
)
inline

Definition at line 74 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixBatch_getitem_row()

auto DNDS::pybind11_ArrayEigenMatrixBatch_getitem_row ( ArrayEigenMatrixBatch self,
index  index_ 
)
inline

warning: deleting list and Array could make the items dangling

Definition at line 55 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixBatch_name()

std::string DNDS::pybind11_ArrayEigenMatrixBatch_name ( )
inline

Definition at line 9 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixBatch_setitem()

auto DNDS::pybind11_ArrayEigenMatrixBatch_setitem ( ArrayEigenMatrixBatch self,
std::tuple< index, rowsize index_,
py::buffer  row 
)
inline

Definition at line 86 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixBatch_setitem_row()

auto DNDS::pybind11_ArrayEigenMatrixBatch_setitem_row ( ArrayEigenMatrixBatch self,
index  i,
const py::list &  matList 
)
inline

Definition at line 26 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixBatchPair_declare()

tPy_ArrayEigenMatrixBatchPair DNDS::pybind11_ArrayEigenMatrixBatchPair_declare ( py::module_ &  m)
inline

Definition at line 185 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixBatchPair_define()

void DNDS::pybind11_ArrayEigenMatrixBatchPair_define ( py::module_ &  m)
inline

Definition at line 196 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixBatchPair_get_class()

tPy_ArrayEigenMatrixBatchPair DNDS::pybind11_ArrayEigenMatrixBatchPair_get_class ( py::module_ &  m)
inline

Definition at line 191 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenMatrixBatchPair_name()

std::string DNDS::pybind11_ArrayEigenMatrixBatchPair_name ( )
inline

Definition at line 14 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenMatrixPair_declare()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
tPy_ArrayEigenMatrixPair< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > DNDS::pybind11_ArrayEigenMatrixPair_declare ( py::module_ &  m)

Definition at line 184 of file ArrayEigenMatrix_bind.hpp.

◆ pybind11_ArrayEigenMatrixPair_define()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
void DNDS::pybind11_ArrayEigenMatrixPair_define ( py::module_ &  m)

maybe should not use here

Definition at line 199 of file ArrayEigenMatrix_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenMatrixPair_get_class()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
tPy_ArrayEigenMatrixPair< _mat_ni, _mat_nj, _mat_ni_max, _mat_nj_max, _align > DNDS::pybind11_ArrayEigenMatrixPair_get_class ( py::module_ &  m)

Definition at line 192 of file ArrayEigenMatrix_bind.hpp.

◆ pybind11_ArrayEigenMatrixPair_name()

template<rowsize _mat_ni = 1, rowsize _mat_nj = 1, rowsize _mat_ni_max = _mat_ni, rowsize _mat_nj_max = _mat_nj, rowsize _align = NoAlign>
std::string DNDS::pybind11_ArrayEigenMatrixPair_name ( )

Definition at line 30 of file ArrayEigenMatrix_bind.hpp.

◆ pybind11_ArrayEigenUniMatrixBatch_declare()

template<int _n_row, int _n_col>
tPy_ArrayEigenUniMatrixBatch< _n_row, _n_col > DNDS::pybind11_ArrayEigenUniMatrixBatch_declare ( py::module_ &  m)

Definition at line 110 of file ArrayEigenUniMatrixBatch_bind.hpp.

◆ pybind11_ArrayEigenUniMatrixBatch_define()

template<int _n_row, int _n_col>
void DNDS::pybind11_ArrayEigenUniMatrixBatch_define ( py::module_ &  m)

Definition at line 125 of file ArrayEigenUniMatrixBatch_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenUniMatrixBatch_get_class()

template<int _n_row, int _n_col>
tPy_ArrayEigenUniMatrixBatch< _n_row, _n_col > DNDS::pybind11_ArrayEigenUniMatrixBatch_get_class ( py::module_ &  m)

Definition at line 119 of file ArrayEigenUniMatrixBatch_bind.hpp.

◆ pybind11_ArrayEigenUniMatrixBatch_getitem()

template<class TArrayEigenUniMatrixBatch = ArrayEigenUniMatrixBatch<3, 3>>
auto DNDS::pybind11_ArrayEigenUniMatrixBatch_getitem ( TArrayEigenUniMatrixBatch &  self,
std::tuple< index, rowsize index_ 
)

Definition at line 35 of file ArrayEigenUniMatrixBatch_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenUniMatrixBatch_getitem_row()

template<class TArrayEigenUniMatrixBatch = ArrayEigenUniMatrixBatch<3, 3>>
auto DNDS::pybind11_ArrayEigenUniMatrixBatch_getitem_row ( TArrayEigenUniMatrixBatch &  self,
index  index_ 
)

warning, assume mat0.rowStride() applies to following matrices

Definition at line 70 of file ArrayEigenUniMatrixBatch_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenUniMatrixBatch_name()

template<int _n_row, int _n_col>
std::string DNDS::pybind11_ArrayEigenUniMatrixBatch_name ( )

Definition at line 10 of file ArrayEigenUniMatrixBatch_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenUniMatrixBatch_setitem()

template<class TArrayEigenUniMatrixBatch = ArrayEigenUniMatrixBatch<3, 3>>
auto DNDS::pybind11_ArrayEigenUniMatrixBatch_setitem ( TArrayEigenUniMatrixBatch &  self,
std::tuple< index, rowsize index_,
py::buffer  row 
)

Definition at line 47 of file ArrayEigenUniMatrixBatch_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenUniMatrixBatch_setitem_row()

template<class TArrayEigenUniMatrixBatch = ArrayEigenUniMatrixBatch<3, 3>>
auto DNDS::pybind11_ArrayEigenUniMatrixBatch_setitem_row ( TArrayEigenUniMatrixBatch &  self,
index  index_,
py::buffer  row 
)

Definition at line 83 of file ArrayEigenUniMatrixBatch_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenUniMatrixBatchPair_declare()

template<int _n_row, int _n_col>
tPy_ArrayEigenUniMatrixBatchPair< _n_row, _n_col > DNDS::pybind11_ArrayEigenUniMatrixBatchPair_declare ( py::module_ &  m)

Definition at line 215 of file ArrayEigenUniMatrixBatch_bind.hpp.

◆ pybind11_ArrayEigenUniMatrixBatchPair_define()

template<int _n_row, int _n_col>
void DNDS::pybind11_ArrayEigenUniMatrixBatchPair_define ( py::module_ &  m)

Definition at line 228 of file ArrayEigenUniMatrixBatch_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenUniMatrixBatchPair_get_class()

template<int _n_row, int _n_col>
tPy_ArrayEigenUniMatrixBatchPair< _n_row, _n_col > DNDS::pybind11_ArrayEigenUniMatrixBatchPair_get_class ( py::module_ &  m)

Definition at line 222 of file ArrayEigenUniMatrixBatch_bind.hpp.

◆ pybind11_ArrayEigenUniMatrixBatchPair_name()

template<int _n_row, int _n_col>
std::string DNDS::pybind11_ArrayEigenUniMatrixBatchPair_name ( )

Definition at line 18 of file ArrayEigenUniMatrixBatch_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenVector_declare()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
tPy_ArrayEigenVector< _vec_size, _row_max, _align > DNDS::pybind11_ArrayEigenVector_declare ( py::module_ &  m)

Definition at line 66 of file ArrayEigenVector_bind.hpp.

◆ pybind11_ArrayEigenVector_define()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
void DNDS::pybind11_ArrayEigenVector_define ( py::module_ &  m)

Definition at line 81 of file ArrayEigenVector_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenVector_get_class()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
tPy_ArrayEigenVector< _vec_size, _row_max, _align > DNDS::pybind11_ArrayEigenVector_get_class ( py::module_ &  m)

Definition at line 75 of file ArrayEigenVector_bind.hpp.

◆ pybind11_ArrayEigenVector_getitem()

template<class TArrayEigenVector = ArrayEigenVector<1>>
auto DNDS::pybind11_ArrayEigenVector_getitem ( TArrayEigenVector &  self,
index  index_ 
)

Definition at line 40 of file ArrayEigenVector_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_ArrayEigenVector_name()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
std::string DNDS::pybind11_ArrayEigenVector_name ( )

Definition at line 18 of file ArrayEigenVector_bind.hpp.

◆ pybind11_ArrayEigenVector_name_appends()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
std::string DNDS::pybind11_ArrayEigenVector_name_appends ( )

Definition at line 9 of file ArrayEigenVector_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenVector_setitem()

template<class TArrayEigenVector = ArrayEigenVector<1>>
auto DNDS::pybind11_ArrayEigenVector_setitem ( TArrayEigenVector &  self,
index  index_,
py::buffer  row 
)

Definition at line 51 of file ArrayEigenVector_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_ArrayEigenVectorPair_declare()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
tPy_ArrayEigenVectorPair< _vec_size, _row_max, _align > DNDS::pybind11_ArrayEigenVectorPair_declare ( py::module_ &  m)

Definition at line 133 of file ArrayEigenVector_bind.hpp.

◆ pybind11_ArrayEigenVectorPair_define()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
void DNDS::pybind11_ArrayEigenVectorPair_define ( py::module_ &  m)

Definition at line 146 of file ArrayEigenVector_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayEigenVectorPair_get_class()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
tPy_ArrayEigenVector< _vec_size, _row_max, _align > DNDS::pybind11_ArrayEigenVectorPair_get_class ( py::module_ &  m)

Definition at line 140 of file ArrayEigenVector_bind.hpp.

◆ pybind11_ArrayEigenVectorPair_name()

template<rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
std::string DNDS::pybind11_ArrayEigenVectorPair_name ( )

Definition at line 24 of file ArrayEigenVector_bind.hpp.

◆ pybind11_ArrayPairGenericBindBasics()

template<class TPair , class TPy_Pair >
void DNDS::pybind11_ArrayPairGenericBindBasics ( TPy_Pair &  Pair_)

Definition at line 326 of file Array_bind.hpp.

Here is the call graph for this function:

◆ pybind11_ArrayTransformer_declare()

template<class TArray >
tPy_ArrayTransformer< TArray > DNDS::pybind11_ArrayTransformer_declare ( py::module_ &  m)

Definition at line 450 of file Array_bind.hpp.

◆ pybind11_ArrayTransformer_define()

template<class TArray >
void DNDS::pybind11_ArrayTransformer_define ( py::module_ &  m)

Definition at line 464 of file Array_bind.hpp.

◆ pybind11_ArrayTransformer_get_class()

template<class TArray >
tPy_ArrayTransformer< TArray > DNDS::pybind11_ArrayTransformer_get_class ( py::module_ &  m)

Definition at line 458 of file Array_bind.hpp.

◆ pybind11_ArrayTransformer_name()

template<class TArray >
std::string DNDS::pybind11_ArrayTransformer_name ( )

Definition at line 53 of file Array_bind.hpp.

◆ pybind11_bind_Array_All()

void DNDS::pybind11_bind_Array_All ( py::module_  m)

Definition at line 5 of file Array_bind.cpp.

Here is the caller graph for this function:

◆ pybind11_bind_Array_All_X_declare() [1/7]

DNDS::pybind11_bind_Array_All_X_declare ( )

◆ pybind11_bind_Array_All_X_declare() [2/7]

DNDS::pybind11_bind_Array_All_X_declare ( )

◆ pybind11_bind_Array_All_X_declare() [3/7]

DNDS::pybind11_bind_Array_All_X_declare ( )

◆ pybind11_bind_Array_All_X_declare() [4/7]

DNDS::pybind11_bind_Array_All_X_declare ( )

◆ pybind11_bind_Array_All_X_declare() [5/7]

DNDS::pybind11_bind_Array_All_X_declare ( )

◆ pybind11_bind_Array_All_X_declare() [6/7]

DNDS::pybind11_bind_Array_All_X_declare ( )

◆ pybind11_bind_Array_All_X_declare() [7/7]

DNDS::pybind11_bind_Array_All_X_declare ( )

◆ pybind11_bind_Array_Offsets()

void DNDS::pybind11_bind_Array_Offsets ( py::module_  m)
inline

Definition at line 639 of file Array_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_bind_ArrayAdjacency_All()

void DNDS::pybind11_bind_ArrayAdjacency_All ( py::module_ &  m)

Definition at line 5 of file ArrayAdjacency_bind.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_bind_ArrayDOF_All()

void DNDS::pybind11_bind_ArrayDOF_All ( py::module_ &  m)

Definition at line 5 of file ArrayDOF_bind.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_bind_ArrayEigenMatrix_All()

void DNDS::pybind11_bind_ArrayEigenMatrix_All ( py::module_ &  m)

Definition at line 5 of file ArrayEigenMatrix_bind.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_bind_ArrayEigenMatrixBatch_All()

void DNDS::pybind11_bind_ArrayEigenMatrixBatch_All ( py::module_ &  m)
inline

Definition at line 246 of file ArrayEigenMatrixBatch_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_bind_ArrayEigenUniMatrixBatch_All()

void DNDS::pybind11_bind_ArrayEigenUniMatrixBatch_All ( py::module_ &  m)

Definition at line 5 of file ArrayEigenUniMatrixBatch_bind.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_bind_ArrayEigenVector_All()

void DNDS::pybind11_bind_ArrayEigenVector_All ( py::module_ &  m)

Definition at line 5 of file ArrayEigenVector_bind.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_bind_defines()

void DNDS::pybind11_bind_defines ( py::module_ &  m)
inline

Definition at line 86 of file Defines_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_bind_device_controls()

void DNDS::pybind11_bind_device_controls ( py::module_ &  m)
inline

Definition at line 27 of file DeviceStorage_bind.hpp.

◆ pybind11_bind_deviceStorage()

void DNDS::pybind11_bind_deviceStorage ( py::module_ &  m)
inline

Definition at line 10 of file DeviceStorage_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_bind_IndexMapping_All()

void DNDS::pybind11_bind_IndexMapping_All ( py::module_  m)
inline

Definition at line 149 of file IndexMapping_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_bind_MPI_All()

void DNDS::pybind11_bind_MPI_All ( py::module_ &  m)

Definition at line 135 of file MPI_bind.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_callBindArrayAdjacencys_rowsizes()

void DNDS::pybind11_callBindArrayAdjacencys_rowsizes ( py::module_ &  m)
inline

Definition at line 209 of file ArrayAdjacency_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes()

template<rowsize mat_n>
void DNDS::pybind11_callBindArrayDOF_rowsizes ( py::module_ &  m)

Definition at line 138 of file ArrayDOF_bind.hpp.

Here is the call graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes< 1 >()

template void DNDS::pybind11_callBindArrayDOF_rowsizes< 1 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes< 2 >()

template void DNDS::pybind11_callBindArrayDOF_rowsizes< 2 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes< 3 >()

template void DNDS::pybind11_callBindArrayDOF_rowsizes< 3 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes< 4 >()

template void DNDS::pybind11_callBindArrayDOF_rowsizes< 4 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes< 5 >()

template void DNDS::pybind11_callBindArrayDOF_rowsizes< 5 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes< 6 >()

template void DNDS::pybind11_callBindArrayDOF_rowsizes< 6 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes< 7 >()

template void DNDS::pybind11_callBindArrayDOF_rowsizes< 7 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes< 8 >()

template void DNDS::pybind11_callBindArrayDOF_rowsizes< 8 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes< DynamicSize >()

template void DNDS::pybind11_callBindArrayDOF_rowsizes< DynamicSize > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayDOF_rowsizes< NonUniformSize >()

template void DNDS::pybind11_callBindArrayDOF_rowsizes< NonUniformSize > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes()

template<rowsize mat_n>
void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes ( py::module_ &  m)

Definition at line 256 of file ArrayEigenMatrix_bind.hpp.

Here is the call graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes< 1 >()

template void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes< 1 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes< 2 >()

template void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes< 2 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes< 3 >()

template void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes< 3 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes< 4 >()

template void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes< 4 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes< 5 >()

template void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes< 5 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes< 6 >()

template void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes< 6 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes< 7 >()

template void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes< 7 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes< 8 >()

template void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes< 8 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes< DynamicSize >()

template void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes< DynamicSize > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenMatrixs_rowsizes< NonUniformSize >()

template void DNDS::pybind11_callBindArrayEigenMatrixs_rowsizes< NonUniformSize > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes()

template<rowsize mat_n>
void DNDS::pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes ( py::module_ &  m)

Definition at line 304 of file ArrayEigenUniMatrixBatch_bind.hpp.

Here is the call graph for this function:

◆ pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 1 >()

template void DNDS::pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 1 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 2 >()

template void DNDS::pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 2 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 3 >()

template void DNDS::pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 3 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 4 >()

template void DNDS::pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 4 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 5 >()

template void DNDS::pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 5 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 6 >()

template void DNDS::pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 6 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 7 >()

template void DNDS::pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 7 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 8 >()

template void DNDS::pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< 8 > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< DynamicSize >()

template void DNDS::pybind11_callBindArrayEigenUniMatrixBatchs_rowsizes< DynamicSize > ( py::module_ &  m)
extern
Here is the caller graph for this function:

◆ pybind11_callBindArrayEigenVectors_rowsizes()

void DNDS::pybind11_callBindArrayEigenVectors_rowsizes ( py::module_ &  m)
inline

Definition at line 202 of file ArrayEigenVector_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_callBindArrays_rowsizes()

template<class T , int offset = 0>
void DNDS::pybind11_callBindArrays_rowsizes ( py::module_ &  m)

Definition at line 570 of file Array_bind.hpp.

Here is the call graph for this function:

◆ pybind11_callBindArrayTransformers_rowsizes()

template<class T , int offset = 0>
void DNDS::pybind11_callBindArrayTransformers_rowsizes ( py::module_ &  m)

Definition at line 598 of file Array_bind.hpp.

Here is the call graph for this function:

◆ pybind11_callBindParArrayPairs_rowsizes()

template<class T , int offset = 0>
void DNDS::pybind11_callBindParArrayPairs_rowsizes ( py::module_ &  m)

Definition at line 612 of file Array_bind.hpp.

Here is the call graph for this function:

◆ pybind11_callBindParArrays_rowsizes()

template<class T , int offset = 0>
void DNDS::pybind11_callBindParArrays_rowsizes ( py::module_ &  m)

Definition at line 584 of file Array_bind.hpp.

Here is the call graph for this function:

◆ pybind11_GlobalOffsetsMapping_declare()

auto DNDS::pybind11_GlobalOffsetsMapping_declare ( py::module_  m)
inline

Definition at line 15 of file IndexMapping_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_GlobalOffsetsMapping_define()

void DNDS::pybind11_GlobalOffsetsMapping_define ( py::module_  m)
inline

Definition at line 25 of file IndexMapping_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_GlobalOffsetsMapping_get_class()

auto DNDS::pybind11_GlobalOffsetsMapping_get_class ( py::module_  m)
inline

Definition at line 20 of file IndexMapping_bind.hpp.

◆ pybind11_MPIInfo()

void DNDS::pybind11_MPIInfo ( py::module_ &  m)

Definition at line 10 of file MPI_bind.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_OffsetAscendIndexMapping_declare()

auto DNDS::pybind11_OffsetAscendIndexMapping_declare ( py::module_  m)
inline

Definition at line 53 of file IndexMapping_bind.hpp.

Here is the caller graph for this function:

◆ pybind11_OffsetAscendIndexMapping_define()

void DNDS::pybind11_OffsetAscendIndexMapping_define ( py::module_  m)
inline

Definition at line 63 of file IndexMapping_bind.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pybind11_OffsetAscendIndexMapping_get_class()

auto DNDS::pybind11_OffsetAscendIndexMapping_get_class ( py::module_  m)
inline

Definition at line 58 of file IndexMapping_bind.hpp.

◆ pybind11_ParArray_declare()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ParArray< T, _row_size, _row_max, _align > DNDS::pybind11_ParArray_declare ( py::module_ &  m)

Definition at line 237 of file Array_bind.hpp.

◆ pybind11_ParArray_define()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::pybind11_ParArray_define ( py::module_ &  m)

Definition at line 257 of file Array_bind.hpp.

◆ pybind11_ParArray_get_class()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ParArray< T, _row_size, _row_max, _align > DNDS::pybind11_ParArray_get_class ( py::module_ &  m)

Definition at line 251 of file Array_bind.hpp.

◆ pybind11_ParArray_name()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string DNDS::pybind11_ParArray_name ( )

Definition at line 47 of file Array_bind.hpp.

◆ pybind11_ParArrayPair_declare()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ParArrayPair< T, _row_size, _row_max, _align > DNDS::pybind11_ParArrayPair_declare ( py::module_ &  m)

Definition at line 310 of file Array_bind.hpp.

◆ pybind11_ParArrayPair_define()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
void DNDS::pybind11_ParArrayPair_define ( py::module_ &  m)

Definition at line 402 of file Array_bind.hpp.

◆ pybind11_ParArrayPair_get_class()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
tPy_ParArrayPair< T, _row_size, _row_max, _align > DNDS::pybind11_ParArrayPair_get_class ( py::module_ &  m)

Definition at line 320 of file Array_bind.hpp.

◆ pybind11_ParArrayPair_name()

template<class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
std::string DNDS::pybind11_ParArrayPair_name ( )

Definition at line 59 of file Array_bind.hpp.

◆ RedistributeArrayWithTransformer()

template<class TArray >
void DNDS::RedistributeArrayWithTransformer ( const MPIInfo mpi,
ssp< TArray >  readFather,
const std::vector< index > &  readOrigIndex,
const std::vector< index > &  newOrigIndex,
ssp< TArray >  outFather 
)

Redistributes an ArrayPair from a source partition to a target partition.

Template-free core logic: given a "read" father array (from even-split H5 read) with known origIndex, and a target partition's newOrigIndex, uses ArrayTransformer to pull data from wherever it was read to where it's needed.

Template Parameters
TArrayThe ParArray type (e.g., ParArray<real, DynamicSize>)
Parameters
mpiMPI communicator info
readFatherFather array populated from even-split H5 read
readOrigIndexOriginal indices for each row of readFather
newOrigIndexOriginal indices this rank needs (from current partition)
outFatherOutput father array, pre-allocated with correct size and row structure

Definition at line 235 of file ArrayRedistributor.hpp.

Here is the call graph for this function:

◆ RegisterSignalHandler()

void DNDS::RegisterSignalHandler ( )
inline

Install SEGV / ABRT handlers that print a backtrace via DNDS_signal_handler.

Optional opt-in; not installed automatically so unit test drivers keep full control of their own handlers. Typical drivers call this once after MPI_Init in main().

Definition at line 55 of file Defines.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RowSize_To_EigenSize()

constexpr int DNDS::RowSize_To_EigenSize ( rowsize  rs)
constexpr

Convert a rowsize constant to the corresponding Eigen compile-time size. Fixed >= 0 -> the value; DynamicSize / NonUniformSize -> Eigen::Dynamic.

Definition at line 286 of file Defines.hpp.

◆ RowSize_To_PySnippet()

std::string DNDS::RowSize_To_PySnippet ( rowsize  rs)
inline

Encode a rowsize constant as a short Python-binding snippet: "<number>" for fixed, "D" for DynamicSize, "I" for NonUniformSize. Used when generating pybind11 class names.

Definition at line 294 of file Defines.hpp.

Here is the caller graph for this function:

◆ schemaTypeString()

std::string DNDS::schemaTypeString ( ConfigTypeTag  tag)
inline

Definition at line 166 of file ConfigParam.hpp.

Here is the caller graph for this function:

◆ setLogStream()

void DNDS::setLogStream ( ssp< std::ostream >  nstream)

Redirect log() output to a user-supplied stream. Ownership is shared.

Definition at line 53 of file Defines.cpp.

◆ setLogStreamCout()

void DNDS::setLogStreamCout ( )

Restore the default std::cout routing for log().

Definition at line 55 of file Defines.cpp.

◆ sign()

constexpr real DNDS::sign ( real  a)
constexpr

Signum function: +1, 0, or -1.

Definition at line 532 of file Defines.hpp.

Here is the caller graph for this function:

◆ signedIntSafeAdd()

template<typename T >
T DNDS::signedIntSafeAdd ( value,
increment 
)

Add two signed integers, asserting on overflow instead of silently wrapping.

Exceptions
Diesvia DNDS_assert_info if the result would overflow.

Definition at line 394 of file Defines.hpp.

◆ signedIntWillAddOverflow()

template<typename T >
bool DNDS::signedIntWillAddOverflow ( value,
increment 
)

Overflow-detecting test for value + increment on signed integers.

Returns
true if the addition would overflow.

Definition at line 380 of file Defines.hpp.

◆ signM()

constexpr real DNDS::signM ( real  a)
constexpr

"Signum, biased toward -1": treats 0 as negative.

Definition at line 550 of file Defines.hpp.

Here is the caller graph for this function:

◆ signP()

constexpr real DNDS::signP ( real  a)
constexpr

"Signum, biased toward +1": treats 0 as positive.

Definition at line 544 of file Defines.hpp.

Here is the caller graph for this function:

◆ signTol()

constexpr real DNDS::signTol ( real  a,
real  tol 
)
constexpr

Tolerant signum: returns 0 inside [-tol, tol].

Definition at line 538 of file Defines.hpp.

Here is the caller graph for this function:

◆ size_t_to_signed()

template<typename T >
T DNDS::size_t_to_signed ( size_t  v)

Narrowing size_t -> T conversion with range check.

Template Parameters
TSigned integral target type.
Exceptions
Diesvia DNDS_assert_info if v > std::numeric_limits<T>::max().

Definition at line 409 of file Defines.hpp.

◆ size_to_index()

index DNDS::size_to_index ( size_t  v)
inline

Range-checked conversion from size_t to DNDS::index.

Exceptions
std::runtime_error(via DNDS_assert_info) if value exceeds index max. Use this for safe conversions from container sizes (e.g., std::vector::size()) to DNDS index types, avoiding sign comparison warnings and overflow bugs.

Definition at line 426 of file Defines.hpp.

Here is the caller graph for this function:

◆ size_to_rowsize()

rowsize DNDS::size_to_rowsize ( size_t  v)
inline

Range-checked conversion from size_t to DNDS::rowsize.

Exceptions
std::runtime_error(via DNDS_assert_info) if value exceeds rowsize max.

Definition at line 433 of file Defines.hpp.

◆ splitSString()

std::vector< std::string > DNDS::splitSString ( const std::string &  str,
char  delim 
)
inline

Definition at line 772 of file Defines.hpp.

Here is the caller graph for this function:

◆ splitSStringClean()

std::vector< std::string > DNDS::splitSStringClean ( const std::string &  str,
char  delim 
)
inline

Definition at line 790 of file Defines.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sqr()

template<typename T >
constexpr T DNDS::sqr ( const T &  a)
constexpr

a * a, constexpr. Works for all arithmetic types.

Definition at line 517 of file Defines.hpp.

Here is the caller graph for this function:

◆ sstringHasSuffix()

bool DNDS::sstringHasSuffix ( const std::string &  str,
const std::string &  suffix 
)
inline

Definition at line 800 of file Defines.hpp.

Here is the caller graph for this function:

◆ Timer()

PerformanceTimer & DNDS::Timer ( )
inline

Short-hand accessor to the PerformanceTimer singleton.

Definition at line 136 of file Profiling.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ to_json()

void DNDS::to_json ( nlohmann::ordered_json &  j,
const host_device_vector< real > &  v 
)
inline

Definition at line 177 of file JsonUtil.hpp.

Here is the caller graph for this function:

◆ to_string()

template<class dir >
std::string DNDS::to_string ( const Eigen::DenseBase< dir > &  v,
int  precision = 5,
bool  scientific = false 
)

Render an Eigen::DenseBase to a string via operator<<.

Parameters
precisionSetprecision applied if > 0.
scientificWhether to use std::scientific notation.

Definition at line 29 of file EigenUtil.hpp.

Variable Documentation

◆ __EigenPCH

const char* DNDS::__EigenPCH = "EigenPCH"

Definition at line 5 of file EigenPCH.cpp.

◆ __ExprtkPCH

const char* DNDS::__ExprtkPCH = "ExprtkPCH"

Definition at line 5 of file ExprtkPCH.cpp.

◆ DNDS_MPI_INDEX

const MPI_Datatype DNDS::DNDS_MPI_INDEX = __DNDSToMPITypeInt<index>()

MPI datatype matching index (= MPI_INT64_T).

Definition at line 90 of file MPI.hpp.

◆ DNDS_MPI_REAL

const MPI_Datatype DNDS::DNDS_MPI_REAL = __DNDSToMPITypeFloat<real>()

MPI datatype matching real (= MPI_REAL8).

Definition at line 92 of file MPI.hpp.

◆ DynamicSize

DNDS_CONSTANT const rowsize DNDS::DynamicSize = -1

Template parameter flag: "row width is set at runtime but uniform".

Definition at line 277 of file Defines.hpp.

◆ HDF_mutex

std::mutex DNDS::HDF_mutex

Global mutex serialising host-side HDF5 calls.

HDF5 is not thread-safe by default; this mutex guards all DNDSR HDF5 I/O when multiple CPU threads might touch the same file.

Definition at line 449 of file MPI.cpp.

◆ indexMin

DNDS_CONSTANT const index DNDS::indexMin = INT64_MIN

Minimum representable index value (= INT64_MIN).

Definition at line 170 of file Defines.hpp.

◆ is_ssp_v

template<typename T >
constexpr bool DNDS::is_ssp_v = is_ssp<T>::value
inlineconstexpr

Definition at line 152 of file Defines.hpp.

◆ largeReal

DNDS_CONSTANT const real DNDS::largeReal = 3e10

Loose upper bound (e.g., for non-dimensional limits).

Definition at line 192 of file Defines.hpp.

◆ logStream

ssp< std::ostream > DNDS::logStream

Shared output stream: where DNDS::log() writes progress / diagnostics.

Defaults to std::cout when useCout is true; otherwise refers to the file/stream installed via setLogStream.

Definition at line 45 of file Defines.cpp.

◆ NoAlign

DNDS_CONSTANT const rowsize DNDS::NoAlign = -1024

Alignment flag: no padding applied to rows (the only currently-supported value).

Definition at line 282 of file Defines.hpp.

◆ NonUniformSize

DNDS_CONSTANT const rowsize DNDS::NonUniformSize = -2

Template parameter flag: "each row has an independent width".

Definition at line 279 of file Defines.hpp.

◆ pi

DNDS_CONSTANT const real DNDS::pi = DNDS_E_PI

π in double precision (matches DNDS_E_PI macro).

Definition at line 199 of file Defines.hpp.

◆ smallReal

DNDS_CONSTANT const real DNDS::smallReal = 1e-10

Loose lower bound (for iterative-solver tolerances etc.).

Definition at line 196 of file Defines.hpp.

◆ UnInitIndex

DNDS_CONSTANT const index DNDS::UnInitIndex = INT64_MIN

Sentinel "not initialised" index value (= INT64_MIN).

Definition at line 176 of file Defines.hpp.

◆ UnInitReal

DNDS_CONSTANT const real DNDS::UnInitReal = NAN

Sentinel "not initialised" real value (NaN). Cheap to detect with std::isnan or IsUnInitReal; survives MPI transport unchanged.

Definition at line 174 of file Defines.hpp.

◆ UnInitRowsize

DNDS_CONSTANT const rowsize DNDS::UnInitRowsize = INT32_MIN

Sentinel "not initialised" rowsize value (= INT32_MIN).

Definition at line 179 of file Defines.hpp.

◆ useCout

bool DNDS::useCout = true

Whether DNDS::log() is currently routed to std::cout.

Definition at line 47 of file Defines.cpp.

◆ veryLargeReal

DNDS_CONSTANT const real DNDS::veryLargeReal = 3e200

Catch-all upper bound ("practically infinity") for physical scalars.

Definition at line 190 of file Defines.hpp.

◆ verySmallReal

DNDS_CONSTANT const real DNDS::verySmallReal = 1e-200

Catch-all lower bound ("effectively zero").

Definition at line 194 of file Defines.hpp.