|
NeoN
A framework for CFD software
|
Integer types used throughout NeoN. More...
Namespaces | |
| namespace | detail |
| namespace | dsl |
| namespace | finiteVolume |
| namespace | la |
| namespace | Logging |
| namespace | timeIntegration |
Classes | |
| class | AllocatorContext |
| class | AllocatorStrategy |
| class | ArgList |
| class | Array |
| A class to contain the data and executors for a field and define some basic operations. More... | |
| class | BaseClassData |
| Represents the data for a base class. More... | |
| class | BaseClassDocumentation |
| Provides a mechanism for registering and retrieving documentation for base and derived classes. More... | |
| class | BoundaryData |
| Represents the boundary fields for a computational domain. More... | |
| class | BoundaryMesh |
| Represents boundaries of an unstructured mesh. More... | |
| class | Collection |
| A type-erased interface collection types. More... | |
| class | CollectionMixin |
| A mixin class for collection of documents in a database to simplify the implementation of common operations. More... | |
| class | CPUExecutor |
| Executor for handling multicore CPU based parallelization. More... | |
| class | Database |
| class | DerivedClassDocumentation |
| Class representing the documentation for a derived class. More... | |
| class | Dictionary |
| A class representing a dictionary that stores key-value pairs. More... | |
| class | DimensionMismatch |
| Error for handling two containers of incompatible lengths. More... | |
| class | Document |
| A class representing a document in a database. More... | |
| class | Error |
| Base class for consistent error representation. More... | |
| class | Field |
| Represents the domain fields for a computational domain. More... | |
| class | GPUExecutor |
| Executor for GPU offloading. More... | |
| class | KokkosAllocator |
| class | NeoNException |
| Custom exception class for NeoN. More... | |
| struct | NoWaitAccess |
| Passkey granting non-draining access to BoundaryData's value storage. More... | |
| struct | Parameters |
| struct | RegisterDocumentation |
| Template struct for registering documentation of a base class. More... | |
| class | RuntimeSelectionFactory |
| A factory class for runtime selection of derived classes. More... | |
| class | RuntimeSelectionFactory< Base, Parameters< Args... > > |
| class | SegmentedVector |
| Data structure that stores a segmented fields or a vector of vectors. More... | |
| class | SegmentedVectorView |
| A class representing a segment of indices. More... | |
| class | SerialExecutor |
| Reference executor for serial CPU execution. More... | |
| class | SupportsCopyTo |
| MixinClass signaling copyTo is supported. More... | |
| class | SymmTensor |
| A class for the representation of a symmetric 3x3 tensor. More... | |
| class | Tensor |
| A class for the representation of a 3x3 tensor. More... | |
| class | Time |
| class | TokenList |
| A class representing a list of tokens. More... | |
| class | UmpireAllocator |
| class | UmpirePoolAllocator |
| class | UnstructuredMesh |
| Represents an unstructured mesh in NeoN. More... | |
| class | Vec3 |
| A class for the representation of a 3D Vec3. More... | |
| class | Vector |
| A class to contain the data and executors for a field and define some basic operations. More... | |
| class | View |
Concepts | |
| concept | parallelForKernel |
| concept | parallelForContainerKernel |
| concept | hasView |
| Concept, for any type which has the 'view' method. | |
Typedefs | |
| using | DocumentValidator = std::function< bool(Dictionary)> |
| A type alias for a function that validates a Dictionary object. | |
| using | Executor = std::variant< SerialExecutor, CPUExecutor, GPUExecutor > |
| using | Input = std::variant< Dictionary, TokenList > |
| using | DefaultAllocator = KokkosAllocator |
| using | label = int32_t |
| using | localIdx = int32_t |
| using | globalIdx = int64_t |
| using | size_t = std::size_t |
| using | mpi_label_t = int |
| typedef float | scalar |
| using | word = std::string |
| using | labelVector = NeoN::Vector< label > |
| using | localIdxVector = NeoN::Vector< localIdx > |
| using | scalarVector = NeoN::Vector< scalar > |
| using | vectorVector = NeoN::Vector< Vec3 > |
Enumerations | |
| enum class | MemorySpace { CPU , GPU } |
Functions | |
| bool | hasSerialBackend () noexcept |
| bool | hasCpuBackend () noexcept |
| bool | hasGpuBackend () noexcept |
| template<template< typename > class ContType, typename ValueType , typename Inner > | |
| void | map (ContType< ValueType > &cont, const Inner inner, std::pair< localIdx, localIdx > range={0, 0}) |
| Map a field using a specific executor. | |
| template<template< typename > class ContType, typename ValueType > | |
| void | fill (ContType< ValueType > &cont, const std::type_identity_t< ValueType > value, std::pair< localIdx, localIdx > range={0, 0}) |
| Fill the field with a vector value using a specific executor. | |
| template<template< typename > class ContType, typename ValueType > | |
| void | setContainer (ContType< ValueType > &cont, const View< const std::type_identity_t< ValueType > > view, std::pair< localIdx, localIdx > range={0, 0}) |
| Set the container with a view of values using a specific executor. | |
| template<typename... Args> | |
| auto | copyToHosts (Args &... cont) |
| template<template< typename > class ContType, typename ValueType > | |
| bool | equal (ContType< ValueType > &cont, ValueType value) |
| template<template< typename > class ContType, typename ValueType > | |
| bool | equal (const ContType< ValueType > &cont1, const ContType< ValueType > &cont2) |
| template<template< typename > class ContType, typename ValueType > | |
| bool | equal (const ContType< ValueType > &cont, View< ValueType > view2) |
| template<typename Type > | |
| void | validateRegistration (const Type &field, const std::string &errorMessage) |
| Validates that a field is registered in the database. | |
| bool | hasId (Dictionary doc) |
| Checks if a Dictionary object has an "id" key. | |
| const std::string & | name (const NeoN::Document &doc) |
| Retrieves the name of a Document. | |
| std::string & | name (NeoN::Document &doc) |
| Retrieves the name of a Document. | |
| std::string | demangle (const char *mangledName) |
| template<typename T , typename Container , typename Key > | |
| void | logBadAnyCast (const std::bad_any_cast &e, const Key &key, const Container &data) |
| void | logOutRange (const std::out_of_range &e, const std::string &key, const std::unordered_map< std::string, std::any > &data) |
| std::ostream & | operator<< (std::ostream &os, const Dictionary &in) |
| void | fence (const Executor &exec) |
| Executor | createDefaultExecutor (std::unique_ptr< AllocatorStrategy > strategy=std::make_unique< DefaultAllocator >()) |
| std::string | executorName (const Executor &exec) |
| MemorySpace | memorySpace (const Executor &exec) |
| std::shared_ptr< const Logging::BaseLogger > | getLogger (const Executor &exec) |
| void | setLogger (Executor &exec, std::shared_ptr< Logging::BaseLogger > logger) |
| bool | operator== (const Executor &lhs, const Executor &rhs) |
| Checks if two executors are equal, i.e. they are of the same type. | |
| bool | operator!= (const Executor &lhs, const Executor &rhs) |
| Checks if two executors are not equal, i.e. they are not of the same type. | |
| void | initialize (int argc, char *argv[]) |
| void | finalize () |
| template<class DataClass > | |
| DataClass | read (Input input) |
| template<typename ExecutorType > | |
| void | fenceIfLogger (const ExecutorType &exec) |
| template<typename ExecutorType , parallelForKernel Kernel> | |
| void | parallelFor (const ExecutorType &, std::pair< localIdx, localIdx > range, const Kernel &kernel, std::string name) |
| template<parallelForKernel Kernel> | |
| void | parallelFor (const NeoN::Executor &exec, std::pair< localIdx, localIdx > range, const Kernel &kernel, std::string name="parallelFor") |
| template<typename Executor , template< typename > class ContType, typename ValueType , parallelForContainerKernel< ValueType > Kernel> | |
| void | parallelFor (const Executor &, ContType< ValueType > &container, const Kernel &kernel, std::string name="parallelFor") |
| template<template< typename > class ContType, typename ValueType , parallelForContainerKernel< ValueType > Kernel> | |
| void | parallelFor (ContType< ValueType > &cont, const Kernel &kernel, std::string name="parallelFor") |
| template<typename Executor , typename Kernel , typename T > | |
| void | parallelReduce (const Executor &exec, std::pair< localIdx, localIdx > range, const Kernel &kernel, T &value) |
| template<typename Kernel , typename T > | |
| void | parallelReduce (const NeoN::Executor &exec, std::pair< localIdx, localIdx > range, const Kernel &kernel, T &value) |
| template<typename Executor , typename ValueType , typename Kernel , typename T > | |
| void | parallelReduce (const Executor &exec, Vector< ValueType > &field, const Kernel &kernel, T &value) |
| template<typename ValueType , typename Kernel , typename T > | |
| void | parallelReduce (Vector< ValueType > &field, const Kernel &kernel, T &value) |
| template<typename Executor , typename Kernel > | |
| void | parallelScan (const Executor &exec, std::pair< localIdx, localIdx > range, const Kernel &kernel) |
| template<typename Kernel > | |
| void | parallelScan (const NeoN::Executor &exec, std::pair< localIdx, localIdx > range, const Kernel &kernel) |
| template<typename Executor , typename Kernel , typename ReturnType > | |
| void | parallelScan (const Executor &exec, std::pair< localIdx, localIdx > range, const Kernel &kernel, ReturnType &returnValue) |
| template<typename Kernel , typename ReturnType > | |
| void | parallelScan (const NeoN::Executor &exec, std::pair< localIdx, localIdx > range, const Kernel &kernel, ReturnType &returnValue) |
| template<> | |
| KOKKOS_INLINE_FUNCTION localIdx | one< localIdx > () |
| template<> | |
| KOKKOS_INLINE_FUNCTION localIdx | zero< localIdx > () |
| KOKKOS_INLINE_FUNCTION scalar | mag (const scalar &s) |
| template<> | |
| KOKKOS_INLINE_FUNCTION scalar | one< scalar > () |
| template<> | |
| KOKKOS_INLINE_FUNCTION scalar | zero< scalar > () |
| template<> | |
| KOKKOS_INLINE_FUNCTION scalar | inv< scalar > (scalar in) |
| KOKKOS_INLINE_FUNCTION SymmTensor | operator* (const scalar s, const SymmTensor &st) |
| KOKKOS_INLINE_FUNCTION Vec3 | operator& (const SymmTensor &s, const Vec3 &v) |
| Symmetric matrix-vector product S·v. | |
| KOKKOS_INLINE_FUNCTION scalar | mag (const SymmTensor &s) |
| Frobenius norm. | |
| KOKKOS_INLINE_FUNCTION scalar | magSqr (const SymmTensor &s) |
| Frobenius norm squared. | |
| KOKKOS_INLINE_FUNCTION SymmTensor | symm (const Tensor &t) |
| Symmetric part of a full tensor: ½(T + T^T) | |
| KOKKOS_INLINE_FUNCTION Tensor | twoSymm (const Tensor &t) |
| T + T^T (= 2*symm(T)) as a full tensor. | |
| KOKKOS_INLINE_FUNCTION SymmTensor | devTwoSymm (const Tensor &t) |
| T + T^T - (2/3)*tr(T)*I — used for viscous stress. | |
| std::ostream & | operator<< (std::ostream &out, const SymmTensor &s) |
| template<> | |
| KOKKOS_INLINE_FUNCTION SymmTensor | zero< SymmTensor > () |
| template<> | |
| KOKKOS_INLINE_FUNCTION SymmTensor | one< SymmTensor > () |
| template<> | |
| KOKKOS_INLINE_FUNCTION SymmTensor | inv< SymmTensor > (SymmTensor) |
| KOKKOS_INLINE_FUNCTION Tensor | operator* (const scalar s, const Tensor &t) |
| KOKKOS_INLINE_FUNCTION Vec3 | operator& (const Tensor &t, const Vec3 &v) |
| Matrix-vector product T·v. | |
| KOKKOS_INLINE_FUNCTION Vec3 | operator& (const Vec3 &v, const Tensor &t) |
| Row-vector times matrix v·T. | |
| KOKKOS_INLINE_FUNCTION scalar | mag (const Tensor &t) |
| Frobenius norm. | |
| KOKKOS_INLINE_FUNCTION scalar | magSqr (const Tensor &t) |
| Frobenius norm squared. | |
| std::ostream & | operator<< (std::ostream &out, const Tensor &t) |
| template<> | |
| KOKKOS_INLINE_FUNCTION Tensor | zero< Tensor > () |
| template<> | |
| KOKKOS_INLINE_FUNCTION Tensor | one< Tensor > () |
| template<> | |
| KOKKOS_INLINE_FUNCTION Tensor | inv< Tensor > (Tensor) |
| template<typename T > | |
| KOKKOS_INLINE_FUNCTION T | one () |
| template<typename T > | |
| KOKKOS_INLINE_FUNCTION T | zero () |
| template<typename T > | |
| KOKKOS_INLINE_FUNCTION T | inv (T) |
| KOKKOS_INLINE_FUNCTION Vec3 | operator* (const scalar &sclr, Vec3 rhs) |
| KOKKOS_INLINE_FUNCTION Vec3 | operator* (const Vec3 &lhs, Vec3 rhs) |
| compute component wise product | |
| KOKKOS_INLINE_FUNCTION scalar | operator& (const Vec3 &lhs, Vec3 rhs) |
| inner product | |
| KOKKOS_INLINE_FUNCTION Vec3 | operator^ (const Vec3 &lhs, Vec3 rhs) |
| cross (vector) product, right-handed: lhs ^ rhs | |
| KOKKOS_INLINE_FUNCTION Vec3 | cross (const Vec3 &lhs, const Vec3 &rhs) |
cross (vector) product, spelled out for call sites that read better as a named function than as ^ | |
| KOKKOS_INLINE_FUNCTION Vec3 | operator/ (const Vec3 &lhs, scalar rhs) |
| KOKKOS_INLINE_FUNCTION scalar | mag (const Vec3 &vec) |
| std::ostream & | operator<< (std::ostream &out, const Vec3 &vec) |
| template<> | |
| KOKKOS_INLINE_FUNCTION Vec3 | one< Vec3 > () |
| template<> | |
| KOKKOS_INLINE_FUNCTION Vec3 | zero< Vec3 > () |
| template<> | |
| KOKKOS_INLINE_FUNCTION Vec3 | inv< Vec3 > (Vec3 in) |
| template<typename IndexType > | |
| IndexType | segmentsFromIntervals (const Vector< IndexType > &intervals, Vector< IndexType > &offsets) |
| Compute segment offsets from an input field corresponding to lengths by computing a prefix sum. | |
| void | logOutRange (const std::out_of_range &e, const std::size_t &key, const std::vector< std::any > &data) |
| template<typename ValueType > | |
| Vector< ValueType > | operator+ (Vector< ValueType > lhs, const Vector< ValueType > &rhs) |
| Arithmetic add operator, addition of two fields. | |
| template<typename ValueType > | |
| Vector< ValueType > | operator- (Vector< ValueType > lhs, const Vector< ValueType > &rhs) |
| Arithmetic subtraction operator, subtraction one field from another. | |
| template<typename ValueType > requires requires(ValueType a, scalar b) { a* b; } | |
| void | scalarMul (Vector< ValueType > &vect, const scalar value) |
| template<typename ValueType > | |
| void | add (Vector< ValueType > &vect, const std::type_identity_t< ValueType > &value) |
| template<typename ValueType > | |
| void | add (Vector< ValueType > &vect1, const Vector< std::type_identity_t< ValueType > > &vect2) |
| template<typename ValueType > | |
| void | sub (Vector< ValueType > &vect, const std::type_identity_t< ValueType > &value) |
| template<typename ValueType > | |
| void | sub (Vector< ValueType > &vect1, const Vector< std::type_identity_t< ValueType > > &vect2) |
| template<typename ValueType > requires requires(ValueType a, ValueType b) { a* b; } | |
| void | mul (Vector< ValueType > &vect, const std::type_identity_t< ValueType > &value) |
| template<typename ValueType > requires requires(ValueType a, ValueType b) { a* b; } | |
| void | mul (Vector< ValueType > &vect1, const Vector< std::type_identity_t< ValueType > > &vect2) |
| template<unsigned int I> | |
| Vector< scalar > | getComponent (const Vector< Vec3 > &in) |
| Given a Vector of Vec3 this function extracts a single component. | |
| template<unsigned int I> | |
| void | setComponent (const Vector< scalar > &in, Vector< Vec3 > &out) |
| Given a Vector of Vec3 this function sets a single component. | |
| template<typename ValueType > | |
| Vector< ValueType > | take (const Vector< ValueType > &in, std::pair< localIdx, localIdx > range) |
| Given a Vector and an index range [first, first+length] a subvector is created. | |
| template<typename... Types> requires (hasView<std::remove_reference_t<Types>> && ...) | |
| auto | views (Types &... args) |
| Unpacks all views of the passed classes. | |
| UnstructuredMesh | createSingleCellMesh (const Executor exec) |
| creates a mesh containing only a single cell @warn currently this is only a 2D mesh | |
| UnstructuredMesh | create1DUniformMesh (const Executor exec, const localIdx nCells, scalar lx=1.0) |
| A factory function for a 1D uniform mesh. | |
| UnstructuredMesh | create2DUniformMesh (const Executor exec, localIdx nx, localIdx ny, scalar lx=1.0, scalar ly=1.0) |
| A factory function for a 2D uniform mesh (single-layer hex slab) | |
| UnstructuredMesh | create3DUniformMesh (const Executor exec, localIdx nx, localIdx ny, localIdx nz, scalar lx=1.0, scalar ly=1.0, scalar lz=1.0) |
| A factory function for a uniform 3D hex mesh. | |
Variables | |
| constexpr scalar | ROOTVSMALL = 1e-18 |
Integer types used throughout NeoN.
The following type aliases distinguish between different kinds of integer values:
label identifies mesh entities (e.g. cell number and face number)localIdx indexes data that is local to a process or execution space, such as arrays, views, and local graph structures.globalIdx identifies globally unique entities in distributed-memory computations.size_t represents sizes and counts (e.g. container sizes, iteration counts, and memory sizes) and should not be used to identify mesh entities.The widths of label, localIdx, and globalIdx depend on the compile-time configuration (NeoN_DP_LABEL and NeoN_US_IDX).
| using NeoN::DefaultAllocator = typedef KokkosAllocator |
Definition at line 35 of file kokkos.hpp.
A type alias for a function that validates a Dictionary object.
This type alias represents a function that takes a Dictionary object as an argument and returns a boolean value indicating whether the Dictionary is valid or not.
Example usage:
Definition at line 31 of file document.hpp.
| using NeoN::Executor = typedef std::variant<SerialExecutor, CPUExecutor, GPUExecutor> |
Definition at line 20 of file executor.hpp.
| using NeoN::globalIdx = typedef int64_t |
| using NeoN::Input = typedef std::variant<Dictionary, TokenList> |
| using NeoN::label = typedef int32_t |
| using NeoN::labelVector = typedef NeoN::Vector<label> |
Definition at line 15 of file vectorTypeDefs.hpp.
| using NeoN::localIdx = typedef int32_t |
| using NeoN::localIdxVector = typedef NeoN::Vector<localIdx> |
Definition at line 16 of file vectorTypeDefs.hpp.
| using NeoN::mpi_label_t = typedef int |
| typedef float NeoN::scalar |
Definition at line 17 of file scalar.hpp.
| using NeoN::scalarVector = typedef NeoN::Vector<scalar> |
Definition at line 17 of file vectorTypeDefs.hpp.
| using NeoN::size_t = typedef std::size_t |
| using NeoN::vectorVector = typedef NeoN::Vector<Vec3> |
Definition at line 18 of file vectorTypeDefs.hpp.
| using NeoN::word = typedef std::string |
|
strong |
| Enumerator | |
|---|---|
| CPU | |
| GPU | |
Definition at line 16 of file allocator.hpp.
| void NeoN::add | ( | Vector< ValueType > & | vect, |
| const std::type_identity_t< ValueType > & | value | ||
| ) |
| void NeoN::add | ( | Vector< ValueType > & | vect1, |
| const Vector< std::type_identity_t< ValueType > > & | vect2 | ||
| ) |
| auto NeoN::copyToHosts | ( | Args &... | cont | ) |
Definition at line 126 of file containerFreeFunctions.hpp.
| UnstructuredMesh NeoN::create1DUniformMesh | ( | const Executor | exec, |
| const localIdx | nCells, | ||
| scalar | lx = 1.0 |
||
| ) |
| UnstructuredMesh NeoN::create2DUniformMesh | ( | const Executor | exec, |
| localIdx | nx, | ||
| localIdx | ny, | ||
| scalar | lx = 1.0, |
||
| scalar | ly = 1.0 |
||
| ) |
A factory function for a 2D uniform mesh (single-layer hex slab)
Creates an nx × ny × 1 structured hex mesh on [0,Lx] × [0,Ly] × [0,1]. One cell thick in z, the standard quasi-2D finite-volume convention. Four boundary patches: left (x=0), right (x=Lx), bottom (y=0), top (y=Ly)
| UnstructuredMesh NeoN::create3DUniformMesh | ( | const Executor | exec, |
| localIdx | nx, | ||
| localIdx | ny, | ||
| localIdx | nz, | ||
| scalar | lx = 1.0, |
||
| scalar | ly = 1.0, |
||
| scalar | lz = 1.0 |
||
| ) |
A factory function for a uniform 3D hex mesh.
Creates an nx × ny × nz structured hex mesh on [0,Lx] × [0,Ly] × [0,Lz]. Six boundary patches: left (x=0), right (x=Lx), bottom (y=0), top (y=Ly), front (z=0), back (z=Lz).
|
inline |
Definition at line 33 of file executor.hpp.
| UnstructuredMesh NeoN::createSingleCellMesh | ( | const Executor | exec | ) |
creates a mesh containing only a single cell @warn currently this is only a 2D mesh
a 2D mesh in 3D space with left, right, top, bottom boundary faces with the centre at (0.5, 0.5, 0.0) left, top, right, bottom faces and four boundaries one left, right, top, bottom
| std::string NeoN::demangle | ( | const char * | mangledName | ) |
| KOKKOS_INLINE_FUNCTION SymmTensor NeoN::devTwoSymm | ( | const Tensor & | t | ) |
T + T^T - (2/3)*tr(T)*I — used for viscous stress.
Definition at line 256 of file symmTensor.hpp.
| bool NeoN::equal | ( | const ContType< ValueType > & | cont, |
| View< ValueType > | view2 | ||
| ) |
Definition at line 169 of file containerFreeFunctions.hpp.
| bool NeoN::equal | ( | const ContType< ValueType > & | cont1, |
| const ContType< ValueType > & | cont2 | ||
| ) |
Definition at line 147 of file containerFreeFunctions.hpp.
| bool NeoN::equal | ( | ContType< ValueType > & | cont, |
| ValueType | value | ||
| ) |
Definition at line 132 of file containerFreeFunctions.hpp.
|
inline |
Definition at line 53 of file executor.hpp.
|
inline |
Definition at line 23 of file executor.hpp.
| void NeoN::fenceIfLogger | ( | const ExecutorType & | exec | ) |
Definition at line 51 of file parallelAlgorithms.hpp.
| void NeoN::fill | ( | ContType< ValueType > & | cont, |
| const std::type_identity_t< ValueType > | value, | ||
| std::pair< localIdx, localIdx > | range = {0, 0} |
||
| ) |
Fill the field with a vector value using a specific executor.
| field | The field to fill. |
| value | The vector value to fill the field with. |
| range | The range to fill the field in. If not provided, the whole field is filled. |
Definition at line 78 of file containerFreeFunctions.hpp.
|
inline |
Definition at line 46 of file initialization.hpp.
|
inline |
Definition at line 71 of file executor.hpp.
|
noexcept |
|
noexcept |
| bool NeoN::hasId | ( | Dictionary | doc | ) |
Checks if a Dictionary object has an "id" key.
This function checks if the given Dictionary object has an "id" key.
| doc | The Dictionary object to check. |
|
noexcept |
|
inline |
Definition at line 21 of file initialization.hpp.
| KOKKOS_INLINE_FUNCTION T NeoN::inv | ( | T | ) |
Definition at line 39 of file scalar.hpp.
| KOKKOS_INLINE_FUNCTION SymmTensor NeoN::inv< SymmTensor > | ( | SymmTensor | ) |
Definition at line 285 of file symmTensor.hpp.
Definition at line 244 of file tensor.hpp.
| void NeoN::logBadAnyCast | ( | const std::bad_any_cast & | e, |
| const Key & | key, | ||
| const Container & | data | ||
| ) |
Definition at line 20 of file demangle.hpp.
| void NeoN::logOutRange | ( | const std::out_of_range & | e, |
| const std::size_t & | key, | ||
| const std::vector< std::any > & | data | ||
| ) |
| void NeoN::logOutRange | ( | const std::out_of_range & | e, |
| const std::string & | key, | ||
| const std::unordered_map< std::string, std::any > & | data | ||
| ) |
Definition at line 23 of file scalar.hpp.
| KOKKOS_INLINE_FUNCTION scalar NeoN::mag | ( | const SymmTensor & | s | ) |
Frobenius norm.
Definition at line 206 of file symmTensor.hpp.
Frobenius norm.
Definition at line 205 of file tensor.hpp.
| KOKKOS_INLINE_FUNCTION scalar NeoN::magSqr | ( | const SymmTensor & | s | ) |
Frobenius norm squared.
Definition at line 217 of file symmTensor.hpp.
Frobenius norm squared.
Definition at line 217 of file tensor.hpp.
| void NeoN::map | ( | ContType< ValueType > & | cont, |
| const Inner | inner, | ||
| std::pair< localIdx, localIdx > | range = {0, 0} |
||
| ) |
Map a field using a specific executor.
| cont | The container to map. |
| inner | The function to apply to each element of the field. |
| range | The range to map the field in. If not provided, the whole field is mapped. |
Definition at line 53 of file containerFreeFunctions.hpp.
|
inline |
Definition at line 63 of file executor.hpp.
| void NeoN::mul | ( | Vector< ValueType > & | vect, |
| const std::type_identity_t< ValueType > & | value | ||
| ) |
| void NeoN::mul | ( | Vector< ValueType > & | vect1, |
| const Vector< std::type_identity_t< ValueType > > & | vect2 | ||
| ) |
| const std::string & NeoN::name | ( | const NeoN::Document & | doc | ) |
| std::string & NeoN::name | ( | NeoN::Document & | doc | ) |
| KOKKOS_INLINE_FUNCTION T NeoN::one | ( | ) |
Definition at line 27 of file scalar.hpp.
| KOKKOS_INLINE_FUNCTION SymmTensor NeoN::one< SymmTensor > | ( | ) |
Definition at line 279 of file symmTensor.hpp.
Definition at line 238 of file tensor.hpp.
Checks if two executors are not equal, i.e. they are not of the same type.
| lhs | The first executor. |
| rhs | The second executor. |
Definition at line 116 of file executor.hpp.
| KOKKOS_INLINE_FUNCTION Vec3 NeoN::operator& | ( | const SymmTensor & | s, |
| const Vec3 & | v | ||
| ) |
Symmetric matrix-vector product S·v.
Definition at line 195 of file symmTensor.hpp.
Matrix-vector product T·v.
Definition at line 183 of file tensor.hpp.
Row-vector times matrix v·T.
Definition at line 194 of file tensor.hpp.
| KOKKOS_INLINE_FUNCTION SymmTensor NeoN::operator* | ( | const scalar | s, |
| const SymmTensor & | st | ||
| ) |
Definition at line 191 of file symmTensor.hpp.
Definition at line 179 of file tensor.hpp.
| Vector< ValueType > NeoN::operator+ | ( | Vector< ValueType > | lhs, |
| const Vector< ValueType > & | rhs | ||
| ) |
Arithmetic add operator, addition of two fields.
| lhs | The field to add with this field. |
| rhs | The field to add with this field. |
| Vector< ValueType > NeoN::operator- | ( | Vector< ValueType > | lhs, |
| const Vector< ValueType > & | rhs | ||
| ) |
Arithmetic subtraction operator, subtraction one field from another.
| lhs | The field to subtract from. |
| rhs | The field to subtract by. |
| std::ostream & NeoN::operator<< | ( | std::ostream & | os, |
| const Dictionary & | in | ||
| ) |
| std::ostream & NeoN::operator<< | ( | std::ostream & | out, |
| const SymmTensor & | s | ||
| ) |
| std::ostream & NeoN::operator<< | ( | std::ostream & | out, |
| const Tensor & | t | ||
| ) |
| std::ostream & NeoN::operator<< | ( | std::ostream & | out, |
| const Vec3 & | vec | ||
| ) |
Checks if two executors are equal, i.e. they are of the same type.
| lhs | The first executor. |
| rhs | The second executor. |
Definition at line 89 of file executor.hpp.
| void NeoN::parallelFor | ( | const Executor & | , |
| ContType< ValueType > & | container, | ||
| const Kernel & | kernel, | ||
| std::string | name = "parallelFor" |
||
| ) |
Definition at line 117 of file parallelAlgorithms.hpp.
| void NeoN::parallelFor | ( | const ExecutorType & | , |
| std::pair< localIdx, localIdx > | range, | ||
| const Kernel & | kernel, | ||
| std::string | name | ||
| ) |
Definition at line 62 of file parallelAlgorithms.hpp.
| void NeoN::parallelFor | ( | const NeoN::Executor & | exec, |
| std::pair< localIdx, localIdx > | range, | ||
| const Kernel & | kernel, | ||
| std::string | name = "parallelFor" |
||
| ) |
Definition at line 93 of file parallelAlgorithms.hpp.
| void NeoN::parallelFor | ( | ContType< ValueType > & | cont, |
| const Kernel & | kernel, | ||
| std::string | name = "parallelFor" |
||
| ) |
Definition at line 148 of file parallelAlgorithms.hpp.
| void NeoN::parallelReduce | ( | const Executor & | exec, |
| std::pair< localIdx, localIdx > | range, | ||
| const Kernel & | kernel, | ||
| T & | value | ||
| ) |
Definition at line 154 of file parallelAlgorithms.hpp.
| void NeoN::parallelReduce | ( | const Executor & | exec, |
| Vector< ValueType > & | field, | ||
| const Kernel & | kernel, | ||
| T & | value | ||
| ) |
Definition at line 195 of file parallelAlgorithms.hpp.
| void NeoN::parallelReduce | ( | const NeoN::Executor & | exec, |
| std::pair< localIdx, localIdx > | range, | ||
| const Kernel & | kernel, | ||
| T & | value | ||
| ) |
Definition at line 186 of file parallelAlgorithms.hpp.
| void NeoN::parallelReduce | ( | Vector< ValueType > & | field, |
| const Kernel & | kernel, | ||
| T & | value | ||
| ) |
Definition at line 224 of file parallelAlgorithms.hpp.
| void NeoN::parallelScan | ( | const Executor & | exec, |
| std::pair< localIdx, localIdx > | range, | ||
| const Kernel & | kernel | ||
| ) |
Definition at line 230 of file parallelAlgorithms.hpp.
| void NeoN::parallelScan | ( | const Executor & | exec, |
| std::pair< localIdx, localIdx > | range, | ||
| const Kernel & | kernel, | ||
| ReturnType & | returnValue | ||
| ) |
Definition at line 248 of file parallelAlgorithms.hpp.
| void NeoN::parallelScan | ( | const NeoN::Executor & | exec, |
| std::pair< localIdx, localIdx > | range, | ||
| const Kernel & | kernel | ||
| ) |
Definition at line 240 of file parallelAlgorithms.hpp.
| void NeoN::parallelScan | ( | const NeoN::Executor & | exec, |
| std::pair< localIdx, localIdx > | range, | ||
| const Kernel & | kernel, | ||
| ReturnType & | returnValue | ||
| ) |
Definition at line 263 of file parallelAlgorithms.hpp.
| DataClass NeoN::read | ( | Input | input | ) |
| void NeoN::scalarMul | ( | Vector< ValueType > & | vect, |
| const scalar | value | ||
| ) |
| IndexType NeoN::segmentsFromIntervals | ( | const Vector< IndexType > & | intervals, |
| Vector< IndexType > & | offsets | ||
| ) |
Compute segment offsets from an input field corresponding to lengths by computing a prefix sum.
The offsets are computed by a prefix sum of the input values. So, with given input of {1, 2, 3, 4, 5} the offsets are {0, 1, 3, 6, 10, 15}. Note that the length of offView must be length of intervals + 1 and are all elements of offVIew are required to be zero
| [in] | in | The values to compute the offsets from. |
| [in,out] | offsets | The field to store the resulting offsets in. |
Definition at line 64 of file segmentedVector.hpp.
| void NeoN::setContainer | ( | ContType< ValueType > & | cont, |
| const View< const std::type_identity_t< ValueType > > | view, | ||
| std::pair< localIdx, localIdx > | range = {0, 0} |
||
| ) |
Set the container with a view of values using a specific executor.
| cont | The container to set. |
| view | The view of values to set the container with. |
| range | The range to set the container in. If not provided, the whole container is set. |
Definition at line 105 of file containerFreeFunctions.hpp.
|
inline |
Definition at line 77 of file executor.hpp.
| void NeoN::sub | ( | Vector< ValueType > & | vect, |
| const std::type_identity_t< ValueType > & | value | ||
| ) |
| void NeoN::sub | ( | Vector< ValueType > & | vect1, |
| const Vector< std::type_identity_t< ValueType > > & | vect2 | ||
| ) |
| KOKKOS_INLINE_FUNCTION SymmTensor NeoN::symm | ( | const Tensor & | t | ) |
Symmetric part of a full tensor: ½(T + T^T)
Definition at line 225 of file symmTensor.hpp.
| Vector< ValueType > NeoN::take | ( | const Vector< ValueType > & | in, |
| std::pair< localIdx, localIdx > | range | ||
| ) |
Given a Vector and an index range [first, first+length] a subvector is created.
T + T^T (= 2*symm(T)) as a full tensor.
Definition at line 239 of file symmTensor.hpp.
| void NeoN::validateRegistration | ( | const Type & | field, |
| const std::string & | errorMessage | ||
| ) |
Validates that a field is registered in the database.
| Type | The type of the field. |
| field | The field to validate. |
| errorMessage | The error message |
| std::runtime_error | if the field is not registered in the database. |
Definition at line 121 of file database.hpp.
| auto NeoN::views | ( | Types &... | args | ) |
| KOKKOS_INLINE_FUNCTION T NeoN::zero | ( | ) |
| KOKKOS_INLINE_FUNCTION localIdx NeoN::zero< localIdx > | ( | ) |
| KOKKOS_INLINE_FUNCTION scalar NeoN::zero< scalar > | ( | ) |
Definition at line 33 of file scalar.hpp.
| KOKKOS_INLINE_FUNCTION SymmTensor NeoN::zero< SymmTensor > | ( | ) |
Definition at line 273 of file symmTensor.hpp.
| KOKKOS_INLINE_FUNCTION Tensor NeoN::zero< Tensor > | ( | ) |
Definition at line 232 of file tensor.hpp.
| KOKKOS_INLINE_FUNCTION Vec3 NeoN::zero< Vec3 > | ( | ) |
|
constexpr |
Definition at line 20 of file scalar.hpp.