MFEM
v4.6.0
Finite element discretization library
|
Typedefs | |
using | BasisKey = std::tuple< const mfem::FiniteElementSpace *, const mfem::IntegrationRule *, int, int, int > |
using | BasisMap = std::unordered_map< const BasisKey, CeedBasis, BasisHash > |
using | RestrKey = std::tuple< const mfem::FiniteElementSpace *, int, int, int, int > |
using | RestrMap = std::unordered_map< const RestrKey, CeedElemRestriction, RestrHash > |
Enumerations | |
enum | EvalMode { EvalMode::None, EvalMode::Interp, EvalMode::Grad, EvalMode::InterpAndGrad } |
enum | restr_type { Standard, Strided, Coeff } |
Functions | |
void | InitBasis (const FiniteElementSpace &fes, const IntegrationRule &ir, Ceed ceed, CeedBasis *basis) |
Initialize a CeedBasis for non-mixed meshes. More... | |
void | InitBasisWithIndices (const FiniteElementSpace &fes, const IntegrationRule &ir, int nelem, const int *indices, Ceed ceed, CeedBasis *basis) |
Initialize a CeedBasis for mixed meshes. More... | |
template<typename Context > | |
void | InitCoefficient (mfem::Coefficient *Q, mfem::Mesh &mesh, const mfem::IntegrationRule &ir, Coefficient *&coeff_ptr, Context &ctx) |
Initializes an mfem::ceed::Coefficient coeff_ptr from an mfem::Coefficient Q, an mfem::Mesh mesh, and an mfem::IntegrationRule ir. More... | |
template<typename Context > | |
void | InitCoefficient (mfem::VectorCoefficient *VQ, mfem::Mesh &mesh, const mfem::IntegrationRule &ir, Coefficient *&coeff_ptr, Context &ctx) |
Initializes an mfem::ceed::Coefficient coeff_ptr from an mfem::VectorCoefficient VQ, an mfem::Mesh mesh, and an mfem::IntegrationRule ir. More... | |
template<typename Context > | |
void | InitCoefficientWithIndices (mfem::Coefficient *Q, mfem::Mesh &mesh, const mfem::IntegrationRule &ir, int nelem, const int *indices, Coefficient *&coeff_ptr, Context &ctx) |
Initializes an mfem::ceed::Coefficient coeff_ptr from an mfem::Coefficient Q, an mfem::Mesh mesh, and an mfem::IntegrationRule ir for the elements given by the indices indices. More... | |
template<typename Context > | |
void | InitCoefficientWithIndices (mfem::VectorCoefficient *VQ, mfem::Mesh &mesh, const mfem::IntegrationRule &ir, int nelem, const int *indices, Coefficient *&coeff_ptr, Context &ctx) |
Initializes an mfem::ceed::Coefficient coeff_ptr from an mfem::VectorCoefficient Q, an mfem::Mesh mesh, and an mfem::IntegrationRule ir for the elements given by the indices indices. More... | |
template<typename Coeff , typename Context > | |
void | InitCoefficient (Coeff *Q, mfem::Mesh &mesh, const mfem::IntegrationRule &ir, int nelem, const int *indices, Coefficient *&coeff_ptr, Context &ctx) |
void | InitStridedRestriction (const mfem::FiniteElementSpace &fes, CeedInt nelem, CeedInt nqpts, CeedInt qdatasize, const CeedInt *strides, CeedElemRestriction *restr) |
Initialize a strided CeedElemRestriction. More... | |
void | InitRestriction (const FiniteElementSpace &fes, Ceed ceed, CeedElemRestriction *restr) |
Initialize a CeedElemRestriction for non-mixed meshes. More... | |
void | InitRestrictionWithIndices (const FiniteElementSpace &fes, int nelem, const int *indices, Ceed ceed, CeedElemRestriction *restr) |
Initialize a CeedElemRestriction for mixed meshes. More... | |
void | InitCoeffRestrictionWithIndices (const FiniteElementSpace &fes, int nelem, const int *indices, int nquads, int ncomp, Ceed ceed, CeedElemRestriction *restr) |
Initialize a CeedElemRestriction for a mfem::Coefficient on a mixed mesh. More... | |
void | RemoveBasisAndRestriction (const mfem::FiniteElementSpace *fes) |
Remove from ceed_basis_map and ceed_restr_map the entries associated with the given fes. More... | |
void | InitVector (const mfem::Vector &v, CeedVector &cv) |
Initialize a CeedVector from an mfem::Vector. More... | |
void | InitBasisAndRestriction (const mfem::FiniteElementSpace &fes, const mfem::IntegrationRule &ir, Ceed ceed, CeedBasis *basis, CeedElemRestriction *restr) |
Initialize a CeedBasis and a CeedElemRestriction based on an mfem::FiniteElementSpace fes, and an mfem::IntegrationRule ir. More... | |
void | InitBasisAndRestrictionWithIndices (const FiniteElementSpace &fes, const IntegrationRule &irm, int nelem, const int *indices, Ceed ceed, CeedBasis *basis, CeedElemRestriction *restr) |
void | InitBasisAndRestriction (const FiniteElementSpace &fes, const IntegrationRule &ir, int nelem, const int *indices, Ceed ceed, CeedBasis *basis, CeedElemRestriction *restr) |
Initialize a CeedBasis and a CeedElemRestriction based on an mfem::FiniteElementSpace fes, and an mfem::IntegrationRule ir, and a list of nelem elements of indices indices. More... | |
int | CeedOperatorGetActiveField (CeedOperator oper, CeedOperatorField *field) |
template<> | |
const IntegrationRule & | GetRule< MassIntegrator > (const MassIntegrator &integ, const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &trans) |
template<> | |
const IntegrationRule & | GetRule< VectorMassIntegrator > (const VectorMassIntegrator &integ, const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &trans) |
template<> | |
const IntegrationRule & | GetRule< ConvectionIntegrator > (const ConvectionIntegrator &integ, const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &trans) |
template<> | |
const IntegrationRule & | GetRule< VectorConvectionNLFIntegrator > (const VectorConvectionNLFIntegrator &integ, const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &trans) |
template<> | |
const IntegrationRule & | GetRule< DiffusionIntegrator > (const DiffusionIntegrator &integ, const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &trans) |
template<> | |
const IntegrationRule & | GetRule< VectorDiffusionIntegrator > (const VectorDiffusionIntegrator &integ, const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &trans) |
const std::string & | GetCeedPath () |
Return the path to the libCEED q-function headers. More... | |
template<typename Integrator > | |
const IntegrationRule & | GetRule (const Integrator &integ, const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans) |
template<typename T > | |
std::size_t | CeedHash (const T key) |
Wrapper for std::hash. More... | |
std::size_t | CeedHashCombine (std::size_t seed, std::size_t hash) |
Effective way to combine hashes (from libCEED). More... | |
int | CeedOperatorGetSize (CeedOperator oper, CeedInt *size) |
Solver * | BuildSmootherFromCeed (ConstrainedOperator &op, bool chebyshev) |
void | CoarsenEssentialDofs (const mfem::Operator &interp, const Array< int > &ho_ess_tdofs, Array< int > &alg_lo_ess_tdofs) |
void | AddToCompositeOperator (BilinearFormIntegrator *integ, CeedOperator op) |
CeedOperator | CreateCeedCompositeOperatorFromBilinearForm (BilinearForm &form) |
CeedOperator | CoarsenCeedCompositeOperator (CeedOperator op, CeedElemRestriction er, CeedBasis c2f, int order_reduction) |
int | CeedVectorPointwiseMult (CeedVector a, const CeedVector b) |
int | CeedHackReallocArray (size_t n, size_t unit, void *p) |
int | CeedHackFree (void *p) |
int | CeedSingleOperatorFullAssemble (CeedOperator op, SparseMatrix *out) |
int | CeedOperatorFullAssemble (CeedOperator op, SparseMatrix **mat) |
Assembles a CeedOperator as an mfem::SparseMatrix. More... | |
int | coarse_1d_edof (int i, int P1d, int coarse_P1d) |
int | reverse_coarse_1d_edof (int i, int P1d, int coarse_P1d) |
int | min4 (int a, int b, int c, int d) |
int | CeedATPMGElemRestriction (int order, int order_reduction, CeedElemRestriction er_in, CeedElemRestriction *er_out, CeedInt *&dof_map) |
Take given (high-order) CeedElemRestriction and make a new CeedElemRestriction, which corresponds to a lower-order problem. More... | |
int | CeedBasisATPMGCoarseToFine (Ceed ceed, int P1d, int dim, int order_reduction, CeedBasis *basisc2f) |
Create coarse-to-fine basis, given number of input nodes and order reduction. More... | |
int | CeedBasisATPMGCoarseToFine (CeedBasis basisin, CeedBasis *basisc2f, int order_reduction) |
int | CeedBasisATPMGCoarsen (CeedBasis basisin, CeedBasis basisc2f, CeedBasis *basisout, int order_reduction) |
int | CeedATPMGOperator (CeedOperator oper, int order_reduction, CeedElemRestriction coarse_er, CeedBasis coarse_basis_in, CeedBasis basis_ctof_in, CeedOperator *out) |
int | CeedATPMGOperator (CeedOperator oper, int order_reduction, CeedElemRestriction coarse_er, CeedBasis *coarse_basis_out, CeedBasis *basis_ctof_out, CeedOperator *out) |
Coarsen a CeedOperator using semi-algebraic p-multigrid. More... | |
int | CeedOperatorGetOrder (CeedOperator oper, CeedInt *order) |
int | CeedATPMGBundle (CeedOperator oper, int order_reduction, CeedBasis *coarse_basis_out, CeedBasis *basis_ctof_out, CeedElemRestriction *er_out, CeedOperator *coarse_oper, CeedInt *&dof_map) |
Given (fine) CeedOperator, produces everything you need for a coarse level (operator and interpolation). More... | |
int | CeedBasisATPMGCoarsen (CeedBasis basisin, CeedBasis *basisout, CeedBasis *basis_ctof, int order_reduction) |
Given basis basisin, reduces its order by order_reduction and return basisout (which has the same height (Q1d) but is narrower (smaller P1d)) More... | |
Variables | |
std::string | ceed_path |
using mfem::ceed::BasisKey = typedef std::tuple<const mfem::FiniteElementSpace*, const mfem::IntegrationRule*, int, int, int> |
using mfem::ceed::BasisMap = typedef std::unordered_map<const BasisKey, CeedBasis, BasisHash> |
using mfem::ceed::RestrKey = typedef std::tuple<const mfem::FiniteElementSpace*, int, int, int, int> |
using mfem::ceed::RestrMap = typedef std::unordered_map<const RestrKey, CeedElemRestriction, RestrHash> |
|
strong |
The different evaluation modes available for PA and MF CeedIntegrator.
Enumerator | |
---|---|
None | |
Interp | |
Grad | |
InterpAndGrad |
Definition at line 31 of file integrator.hpp.
void mfem::ceed::AddToCompositeOperator | ( | BilinearFormIntegrator * | integ, |
CeedOperator | op | ||
) |
Definition at line 227 of file algebraic.cpp.
Solver* mfem::ceed::BuildSmootherFromCeed | ( | ConstrainedOperator & | op, |
bool | chebyshev | ||
) |
Definition at line 109 of file algebraic.cpp.
int mfem::ceed::CeedATPMGBundle | ( | CeedOperator | oper, |
int | order_reduction, | ||
CeedBasis * | coarse_basis_out, | ||
CeedBasis * | basis_ctof_out, | ||
CeedElemRestriction * | er_out, | ||
CeedOperator * | coarse_oper, | ||
CeedInt *& | dof_map | ||
) |
Given (fine) CeedOperator, produces everything you need for a coarse level (operator and interpolation).
[in] | oper | Fine CeedOperator to coarsen |
[in] | order_reduction | Amount to reduce the order (p) of the operator |
[out] | coarse_basis_out | CeedBasis for coarse operator |
[out] | basis_ctof_out | CeedBasis describing interpolation from coarse to fine |
[out] | er_out | CeedElemRestriction for coarse operator |
[out] | coarse_oper | coarse operator itself |
[out] | dof_map | maps high-order ldof to low-order ldof, needed for further coarsening |
Definition at line 747 of file solvers-atpmg.cpp.
int mfem::ceed::CeedATPMGElemRestriction | ( | int | order, |
int | order_reduction, | ||
CeedElemRestriction | er_in, | ||
CeedElemRestriction * | er_out, | ||
CeedInt *& | dof_map | ||
) |
Take given (high-order) CeedElemRestriction and make a new CeedElemRestriction, which corresponds to a lower-order problem.
Assumes a Gauss-Lobatto basis and tensor product elements, and assumes that the nodes in er_in are ordered in a tensor-product way.
This is a setup routine that operates on the host.
The caller is responsible for freeing er_out and dof_map.
Definition at line 81 of file solvers-atpmg.cpp.
int mfem::ceed::CeedATPMGOperator | ( | CeedOperator | oper, |
int | order_reduction, | ||
CeedElemRestriction | coarse_er, | ||
CeedBasis | coarse_basis_in, | ||
CeedBasis | basis_ctof_in, | ||
CeedOperator * | out | ||
) |
Definition at line 585 of file solvers-atpmg.cpp.
int mfem::ceed::CeedATPMGOperator | ( | CeedOperator | oper, |
int | order_reduction, | ||
CeedElemRestriction | coarse_er, | ||
CeedBasis * | coarse_basis_out, | ||
CeedBasis * | basis_ctof_out, | ||
CeedOperator * | out | ||
) |
Coarsen a CeedOperator using semi-algebraic p-multigrid.
This implementation does not coarsen the integration points at all.
[in] | oper | the operator to coarsen |
[in] | order_reduction | how much to coarsen (order p) |
[in] | coarse_er | CeedElemRestriction for coarse operator (see CeedATPMGElemRestriction) |
[out] | coarse_basis_out | CeedBasis for coarser operator |
[out] | basis_ctof_out | CeedBasis describing interpolation from coarse to fine |
[out] | out | coarsened CeedOperator |
Definition at line 705 of file solvers-atpmg.cpp.
int mfem::ceed::CeedBasisATPMGCoarsen | ( | CeedBasis | basisin, |
CeedBasis * | basisout, | ||
CeedBasis * | basis_ctof, | ||
int | order_reduction | ||
) |
Given basis basisin, reduces its order by order_reduction and return basisout (which has the same height (Q1d) but is narrower (smaller P1d))
The algorithm takes the locations of the fine nodes as input, but this particular implementation simply assumes Gauss-Lobatto, and furthermore assumes the MFEM [0, 1] reference element (rather than the Ceed/Petsc [-1, 1] element)
int mfem::ceed::CeedBasisATPMGCoarsen | ( | CeedBasis | basisin, |
CeedBasis | basisc2f, | ||
CeedBasis * | basisout, | ||
int | order_reduction | ||
) |
Definition at line 514 of file solvers-atpmg.cpp.
int mfem::ceed::CeedBasisATPMGCoarseToFine | ( | Ceed | ceed, |
int | P1d, | ||
int | dim, | ||
int | order_reduction, | ||
CeedBasis * | basisc2f | ||
) |
Create coarse-to-fine basis, given number of input nodes and order reduction.
Assumes Gauss-Lobatto basis. This is useful because it does not require an input CeedBasis object, which depends on choice of quadrature rule, whereas the coarse-to-fine operator is independent of quadrature.
Definition at line 486 of file solvers-atpmg.cpp.
int mfem::ceed::CeedBasisATPMGCoarseToFine | ( | CeedBasis | basisin, |
CeedBasis * | basisc2f, | ||
int | order_reduction | ||
) |
Definition at line 498 of file solvers-atpmg.cpp.
int mfem::ceed::CeedHackFree | ( | void * | p | ) |
Definition at line 37 of file full-assembly.cpp.
int mfem::ceed::CeedHackReallocArray | ( | size_t | n, |
size_t | unit, | ||
void * | p | ||
) |
Definition at line 26 of file full-assembly.cpp.
|
inline |
|
inline |
int mfem::ceed::CeedOperatorFullAssemble | ( | CeedOperator | op, |
SparseMatrix ** | mat | ||
) |
Assembles a CeedOperator as an mfem::SparseMatrix.
In parallel, this assembles independently on each processor, that is, it assembles at the L-vector level. The assembly procedure is always performed on the host, but this works also for operators stored on device by copying memory.
Definition at line 294 of file full-assembly.cpp.
int mfem::ceed::CeedOperatorGetActiveField | ( | CeedOperator | oper, |
CeedOperatorField * | field | ||
) |
int mfem::ceed::CeedOperatorGetOrder | ( | CeedOperator | oper, |
CeedInt * | order | ||
) |
Definition at line 732 of file solvers-atpmg.cpp.
int mfem::ceed::CeedOperatorGetSize | ( | CeedOperator | oper, |
CeedInt * | size | ||
) |
assumes a square operator (you could do rectangular, you'd have to find separate active input and output fields/restrictions)
Definition at line 98 of file algebraic.cpp.
int mfem::ceed::CeedSingleOperatorFullAssemble | ( | CeedOperator | op, |
SparseMatrix * | out | ||
) |
Definition at line 44 of file full-assembly.cpp.
int mfem::ceed::CeedVectorPointwiseMult | ( | CeedVector | a, |
const CeedVector | b | ||
) |
a = a (pointwise*) b
Definition at line 494 of file algebraic.cpp.
int mfem::ceed::coarse_1d_edof | ( | int | i, |
int | P1d, | ||
int | coarse_P1d | ||
) |
Definition at line 33 of file solvers-atpmg.cpp.
CeedOperator mfem::ceed::CoarsenCeedCompositeOperator | ( | CeedOperator | op, |
CeedElemRestriction | er, | ||
CeedBasis | c2f, | ||
int | order_reduction | ||
) |
Definition at line 261 of file algebraic.cpp.
void mfem::ceed::CoarsenEssentialDofs | ( | const mfem::Operator & | interp, |
const Array< int > & | ho_ess_tdofs, | ||
Array< int > & | alg_lo_ess_tdofs | ||
) |
Definition at line 204 of file algebraic.cpp.
CeedOperator mfem::ceed::CreateCeedCompositeOperatorFromBilinearForm | ( | BilinearForm & | form | ) |
Definition at line 239 of file algebraic.cpp.
const std::string & mfem::ceed::GetCeedPath | ( | ) |
const IntegrationRule& mfem::ceed::GetRule | ( | const Integrator & | integ, |
const FiniteElement & | trial_fe, | ||
const FiniteElement & | test_fe, | ||
ElementTransformation & | Trans | ||
) |
const IntegrationRule& mfem::ceed::GetRule< ConvectionIntegrator > | ( | const ConvectionIntegrator & | integ, |
const FiniteElement & | trial_fe, | ||
const FiniteElement & | test_fe, | ||
ElementTransformation & | trans | ||
) |
const IntegrationRule& mfem::ceed::GetRule< DiffusionIntegrator > | ( | const DiffusionIntegrator & | integ, |
const FiniteElement & | trial_fe, | ||
const FiniteElement & | test_fe, | ||
ElementTransformation & | trans | ||
) |
const IntegrationRule& mfem::ceed::GetRule< MassIntegrator > | ( | const MassIntegrator & | integ, |
const FiniteElement & | trial_fe, | ||
const FiniteElement & | test_fe, | ||
ElementTransformation & | trans | ||
) |
const IntegrationRule& mfem::ceed::GetRule< VectorConvectionNLFIntegrator > | ( | const VectorConvectionNLFIntegrator & | integ, |
const FiniteElement & | trial_fe, | ||
const FiniteElement & | test_fe, | ||
ElementTransformation & | trans | ||
) |
const IntegrationRule& mfem::ceed::GetRule< VectorDiffusionIntegrator > | ( | const VectorDiffusionIntegrator & | integ, |
const FiniteElement & | trial_fe, | ||
const FiniteElement & | test_fe, | ||
ElementTransformation & | trans | ||
) |
const IntegrationRule& mfem::ceed::GetRule< VectorMassIntegrator > | ( | const VectorMassIntegrator & | integ, |
const FiniteElement & | trial_fe, | ||
const FiniteElement & | test_fe, | ||
ElementTransformation & | trans | ||
) |
void mfem::ceed::InitBasis | ( | const FiniteElementSpace & | fes, |
const IntegrationRule & | ir, | ||
Ceed | ceed, | ||
CeedBasis * | basis | ||
) |
void mfem::ceed::InitBasisAndRestriction | ( | const mfem::FiniteElementSpace & | fes, |
const mfem::IntegrationRule & | ir, | ||
Ceed | ceed, | ||
CeedBasis * | basis, | ||
CeedElemRestriction * | restr | ||
) |
Initialize a CeedBasis and a CeedElemRestriction based on an mfem::FiniteElementSpace fes, and an mfem::IntegrationRule ir.
[in] | fes | The finite element space. |
[in] | ir | The integration rule. |
[in] | ceed | The Ceed object. |
[out] | basis | The CeedBasis to initialize. |
[out] | restr | The CeedElemRestriction to initialize. |
void mfem::ceed::InitBasisAndRestriction | ( | const FiniteElementSpace & | fes, |
const IntegrationRule & | ir, | ||
int | nelem, | ||
const int * | indices, | ||
Ceed | ceed, | ||
CeedBasis * | basis, | ||
CeedElemRestriction * | restr | ||
) |
Initialize a CeedBasis and a CeedElemRestriction based on an mfem::FiniteElementSpace fes, and an mfem::IntegrationRule ir, and a list of nelem elements of indices indices.
[in] | fes | The finite element space. |
[in] | ir | The integration rule. |
[in] | nelem | The number of elements. |
[in] | indices | The indices of the elements of same type in the FiniteElementSpace . If indices == nullptr , assumes that the FiniteElementSpace is not mixed. |
[in] | ceed | The Ceed object. |
[out] | basis | The CeedBasis to initialize. |
[out] | restr | The CeedElemRestriction to initialize. |
void mfem::ceed::InitBasisAndRestrictionWithIndices | ( | const FiniteElementSpace & | fes, |
const IntegrationRule & | irm, | ||
int | nelem, | ||
const int * | indices, | ||
Ceed | ceed, | ||
CeedBasis * | basis, | ||
CeedElemRestriction * | restr | ||
) |
void mfem::ceed::InitBasisWithIndices | ( | const FiniteElementSpace & | fes, |
const IntegrationRule & | ir, | ||
int | nelem, | ||
const int * | indices, | ||
Ceed | ceed, | ||
CeedBasis * | basis | ||
) |
Initialize a CeedBasis for mixed meshes.
[in] | fes | The finite element space. |
[in] | ir | is the integration rule for the operator. |
[in] | nelem | The number of elements. |
[in] | indices | The indices of the elements of same type in the FiniteElementSpace . |
[in] | ceed | The Ceed object. |
[out] | basis | The CeedBasis to initialize. |
void mfem::ceed::InitCoefficient | ( | mfem::Coefficient * | Q, |
mfem::Mesh & | mesh, | ||
const mfem::IntegrationRule & | ir, | ||
Coefficient *& | coeff_ptr, | ||
Context & | ctx | ||
) |
Initializes an mfem::ceed::Coefficient coeff_ptr from an mfem::Coefficient Q, an mfem::Mesh mesh, and an mfem::IntegrationRule ir.
[in] | Q | is the coefficient from the Integrator . |
[in] | mesh | is the mesh. |
[in] | ir | is the integration rule. |
[out] | coeff_ptr | is the structure to store the coefficient for the CeedOperator . |
[out] | ctx | is the Context associated to the QFunction. |
Definition at line 91 of file coefficient.hpp.
void mfem::ceed::InitCoefficient | ( | mfem::VectorCoefficient * | VQ, |
mfem::Mesh & | mesh, | ||
const mfem::IntegrationRule & | ir, | ||
Coefficient *& | coeff_ptr, | ||
Context & | ctx | ||
) |
Initializes an mfem::ceed::Coefficient coeff_ptr from an mfem::VectorCoefficient VQ, an mfem::Mesh mesh, and an mfem::IntegrationRule ir.
[in] | VQ | is the vector coefficient from the Integrator . |
[in] | mesh | is the mesh. |
[in] | ir | is the integration rule. |
[out] | coeff_ptr | is the structure to store the coefficient for the CeedOperator . |
[out] | ctx | is the Context associated to the QFunction. |
Definition at line 165 of file coefficient.hpp.
void mfem::ceed::InitCoefficient | ( | Coeff * | Q, |
mfem::Mesh & | mesh, | ||
const mfem::IntegrationRule & | ir, | ||
int | nelem, | ||
const int * | indices, | ||
Coefficient *& | coeff_ptr, | ||
Context & | ctx | ||
) |
Definition at line 422 of file coefficient.hpp.
void mfem::ceed::InitCoefficientWithIndices | ( | mfem::Coefficient * | Q, |
mfem::Mesh & | mesh, | ||
const mfem::IntegrationRule & | ir, | ||
int | nelem, | ||
const int * | indices, | ||
Coefficient *& | coeff_ptr, | ||
Context & | ctx | ||
) |
Initializes an mfem::ceed::Coefficient coeff_ptr from an mfem::Coefficient Q, an mfem::Mesh mesh, and an mfem::IntegrationRule ir for the elements given by the indices indices.
[in] | Q | is the coefficient from the Integrator . |
[in] | mesh | is the mesh. |
[in] | ir | is the integration rule. |
[in] | nelem | The number of elements. |
[in] | indices | The indices of the elements of same type in the FiniteElementSpace . |
[out] | coeff_ptr | is the structure to store the coefficient for the CeedOperator . |
[out] | ctx | is the Context associated to the QFunction. |
Definition at line 247 of file coefficient.hpp.
void mfem::ceed::InitCoefficientWithIndices | ( | mfem::VectorCoefficient * | VQ, |
mfem::Mesh & | mesh, | ||
const mfem::IntegrationRule & | ir, | ||
int | nelem, | ||
const int * | indices, | ||
Coefficient *& | coeff_ptr, | ||
Context & | ctx | ||
) |
Initializes an mfem::ceed::Coefficient coeff_ptr from an mfem::VectorCoefficient Q, an mfem::Mesh mesh, and an mfem::IntegrationRule ir for the elements given by the indices indices.
[in] | VQ | is the vector coefficient from the Integrator . |
[in] | mesh | is the mesh. |
[in] | ir | is the integration rule. |
[in] | nelem | The number of elements. |
[in] | indices | The indices of the elements of same type in the FiniteElementSpace . |
[out] | coeff_ptr | is the structure to store the coefficient for the CeedOperator . |
[out] | ctx | is the Context associated to the QFunction. |
Definition at line 337 of file coefficient.hpp.
void mfem::ceed::InitCoeffRestrictionWithIndices | ( | const FiniteElementSpace & | fes, |
int | nelem, | ||
const int * | indices, | ||
int | nquads, | ||
int | ncomp, | ||
Ceed | ceed, | ||
CeedElemRestriction * | restr | ||
) |
Initialize a CeedElemRestriction for a mfem::Coefficient on a mixed mesh.
[in] | fes | The finite element space. |
[in] | nelem | is the number of elements. |
[in] | indices | The indices of the elements of same type in the FiniteElementSpace . |
[in] | nquads | is the total number of quadrature points |
[in] | ncomp | is the number of data per quadrature point |
[in] | ceed | The Ceed object. |
[out] | restr | The CeedElemRestriction to initialize. |
Definition at line 272 of file restriction.cpp.
void mfem::ceed::InitRestriction | ( | const FiniteElementSpace & | fes, |
Ceed | ceed, | ||
CeedElemRestriction * | restr | ||
) |
Initialize a CeedElemRestriction for non-mixed meshes.
[in] | fes | Input finite element space. |
[in] | ceed | Input Ceed object. |
[out] | restr | The address of the initialized CeedElemRestriction object. |
Definition at line 223 of file restriction.cpp.
void mfem::ceed::InitRestrictionWithIndices | ( | const FiniteElementSpace & | fes, |
int | nelem, | ||
const int * | indices, | ||
Ceed | ceed, | ||
CeedElemRestriction * | restr | ||
) |
Initialize a CeedElemRestriction for mixed meshes.
[in] | fes | The finite element space. |
[in] | ceed | The Ceed object. |
[in] | nelem | The number of elements. |
[in] | indices | The indices of the elements of same type in the FiniteElementSpace . |
[out] | restr | The CeedElemRestriction to initialize. |
Definition at line 247 of file restriction.cpp.
void mfem::ceed::InitStridedRestriction | ( | const mfem::FiniteElementSpace & | fes, |
CeedInt | nelem, | ||
CeedInt | nqpts, | ||
CeedInt | qdatasize, | ||
const CeedInt * | strides, | ||
CeedElemRestriction * | restr | ||
) |
Initialize a strided CeedElemRestriction.
[in] | fes | Input finite element space. |
[in] | nelem | is the number of elements. |
[in] | nqpts | is the total number of quadrature points. |
[in] | qdatasize | is the number of data per quadrature point. |
[in] | strides | Array for strides between [nodes, components, elements]. Data for node i, component j, element k can be found in the L-vector at index i*strides[0] + j*strides[1] + k*strides[2]. CEED_STRIDES_BACKEND may be used with vectors created by a Ceed backend. |
[out] | restr | The CeedElemRestriction to initialize. |
Definition at line 201 of file restriction.cpp.
void mfem::ceed::InitVector | ( | const mfem::Vector & | v, |
CeedVector & | cv | ||
) |
Initialize a CeedVector from an mfem::Vector.
int mfem::ceed::min4 | ( | int | a, |
int | b, | ||
int | c, | ||
int | d | ||
) |
Definition at line 61 of file solvers-atpmg.cpp.
void mfem::ceed::RemoveBasisAndRestriction | ( | const mfem::FiniteElementSpace * | fes | ) |
int mfem::ceed::reverse_coarse_1d_edof | ( | int | i, |
int | P1d, | ||
int | coarse_P1d | ||
) |
Definition at line 43 of file solvers-atpmg.cpp.