MFEM  v4.1.0
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
mfem Namespace Reference

Namespaces

 bin_io
 
 common
 
 electromagnetics
 
 GinkgoWrappers
 
 kernels
 
 superlu
 
 superlu_internal
 

Classes

class  Array
 
class  Array2D
 Dynamic 2D array using row-major layout. More...
 
class  Array3D
 
class  BlockArray
 
class  MPI_Session
 A simple convenience class that calls MPI_Init() at construction and MPI_Finalize() at destruction. It also provides easy access to MPI_COMM_WORLD's rank and size. More...
 
class  GroupTopology
 
class  GroupCommunicator
 Communicator performing operations within groups defined by a GroupTopology with arbitrary-size data associated with each group. More...
 
struct  VarMessage
 Variable-length MPI message containing unspecific binary data. More...
 
struct  MPITypeMap
 Helper struct to convert a C++ type to an MPI type. More...
 
struct  MPITypeMap< int >
 
struct  MPITypeMap< double >
 
struct  Backend
 MFEM backends. More...
 
class  Device
 The MFEM Device class abstracts hardware devices such as GPUs, as well as programming models such as CUDA, OCCA, RAJA and OpenMP. More...
 
class  ErrorException
 Exception class thrown when MFEM encounters an error and the current ErrorAction is set to MFEM_ERROR_THROW. More...
 
class  OutStream
 Simple extension of std::ostream. More...
 
struct  Hashed2
 
struct  Hashed4
 
class  HashTable
 
class  isockstream
 
class  StackPart
 
class  Stack
 
class  MemAllocNode
 
class  MemAlloc
 
class  Memory
 Class used by MFEM to store pointers to host and/or device memory. More...
 
class  MemoryManager
 The memory manager class. More...
 
class  OptionsParser
 
class  osockstream
 
class  IntegerSet
 A set of integers. More...
 
class  ListOfIntegerSets
 List of integer sets. More...
 
class  socketbuf
 
class  GnuTLS_status
 
class  GnuTLS_global_state
 
class  GnuTLS_session_params
 
class  GnuTLS_socketbuf
 
class  socketstream
 
class  socketserver
 
class  Pair
 A pair of objects. More...
 
class  Triple
 
class  STable3DNode
 
class  STable3D
 Symmetric 3D Table. More...
 
struct  Connection
 Helper struct for defining a connectivity table, see Table::MakeFromList. More...
 
class  Table
 
class  STable
 
class  DSTable
 
struct  AssignOp
 
class  StopWatch
 Timing object. More...
 
class  ofgzstream
 
class  ifgzstream
 
class  named_ifgzstream
 
class  BlockMatrix
 
class  BlockOperator
 A class to handle Block systems in a matrix-free implementation. More...
 
class  BlockDiagonalPreconditioner
 A class to handle Block diagonal preconditioners in a matrix-free implementation. More...
 
class  BlockLowerTriangularPreconditioner
 A class to handle Block lower triangular preconditioners in a matrix-free implementation. More...
 
class  BlockVector
 A class to handle Vectors in a block fashion. More...
 
class  ComplexOperator
 Mimic the action of a complex operator using two real operators. More...
 
class  ComplexSparseMatrix
 Specialization of the ComplexOperator built from a pair of Sparse Matrices. More...
 
class  ComplexHypreParMatrix
 Specialization of the ComplexOperator built from a pair of HypreParMatrices. More...
 
class  DenseMatrix
 Data type dense matrix using column-major storage. More...
 
class  LUFactors
 
class  DenseMatrixInverse
 
class  DenseMatrixEigensystem
 
class  DenseMatrixSVD
 
class  DenseTensor
 Rank 3 tensor (array of matrices) More...
 
class  TensorInd
 A Class to compute the real index from the multi-indices of a tensor. More...
 
class  TensorInd< Dim, Dim, T, Args...>
 
class  Init
 A class to initialize the size of a Tensor. More...
 
class  Init< Dim, Dim, T, Args...>
 
class  DeviceTensor
 A basic generic Tensor class, appropriate for use on the GPU. More...
 
class  OperatorHandle
 Pointer to an Operator of a specified type. More...
 
class  HiopOptimizationProblem
 Internal class - adapts the OptimizationProblem class to HiOp's interface. More...
 
class  HiopNlpOptimizer
 Adapts the HiOp functionality to the MFEM OptimizationSolver interface. More...
 
class  HypreParVector
 Wrapper for hypre's parallel vector class. More...
 
class  HypreParMatrix
 Wrapper for hypre's ParCSR matrix class. More...
 
class  HypreSmoother
 Parallel smoothers in hypre. More...
 
class  HypreSolver
 Abstract class for hypre's solvers and preconditioners. More...
 
class  HyprePCG
 PCG solver in hypre. More...
 
class  HypreGMRES
 GMRES solver in hypre. More...
 
class  HypreIdentity
 The identity operator as a hypre solver. More...
 
class  HypreDiagScale
 Jacobi preconditioner in hypre. More...
 
class  HypreParaSails
 The ParaSails preconditioner in hypre. More...
 
class  HypreEuclid
 
class  HypreBoomerAMG
 The BoomerAMG solver in hypre. More...
 
class  HypreAMS
 The Auxiliary-space Maxwell Solver in hypre. More...
 
class  HypreADS
 The Auxiliary-space Divergence Solver in hypre. More...
 
class  HypreLOBPCG
 
class  HypreAME
 
struct  ScalarOps
 Auxiliary class used as the default for the second template parameter in the classes InvariantsEvaluator2D and InvariantsEvaluator3D. More...
 
class  InvariantsEvaluator2D
 Auxiliary class for evaluating the 2x2 matrix invariants and their first and second derivatives. More...
 
class  InvariantsEvaluator3D
 Auxiliary class for evaluating the 3x3 matrix invariants and their first and second derivatives. More...
 
class  Matrix
 Abstract data type matrix. More...
 
class  MatrixInverse
 Abstract data type for matrix inverse. More...
 
class  AbstractSparseMatrix
 Abstract data type for sparse matrices. More...
 
class  ODESolver
 Abstract class for solving systems of ODEs: dx/dt = f(x,t) More...
 
class  ForwardEulerSolver
 The classical forward Euler method. More...
 
class  RK2Solver
 
class  RK3SSPSolver
 Third-order, strong stability preserving (SSP) Runge-Kutta method. More...
 
class  RK4Solver
 The classical explicit forth-order Runge-Kutta method, RK4. More...
 
class  ExplicitRKSolver
 
class  RK6Solver
 
class  RK8Solver
 
class  AdamsBashforthSolver
 
class  AB1Solver
 
class  AB2Solver
 
class  AB3Solver
 
class  AB4Solver
 
class  AB5Solver
 
class  AdamsMoultonSolver
 
class  AM0Solver
 
class  AM1Solver
 
class  AM2Solver
 
class  AM3Solver
 
class  AM4Solver
 
class  BackwardEulerSolver
 Backward Euler ODE solver. L-stable. More...
 
class  ImplicitMidpointSolver
 Implicit midpoint method. A-stable, not L-stable. More...
 
class  SDIRK23Solver
 
class  SDIRK34Solver
 
class  SDIRK33Solver
 
class  GeneralizedAlphaSolver
 
class  SIASolver
 
class  SIA1Solver
 
class  SIA2Solver
 
class  SIAVSolver
 
class  SecondOrderODESolver
 Abstract class for solving systems of ODEs: d2x/dt2 = f(x,dx/dt,t) More...
 
class  NewmarkSolver
 
class  LinearAccelerationSolver
 
class  CentralDifferenceSolver
 
class  FoxGoodwinSolver
 
class  GeneralizedAlpha2Solver
 
class  AverageAccelerationSolver
 The classical midpoint method. More...
 
class  HHTAlphaSolver
 
class  WBZAlphaSolver
 
class  Operator
 Abstract operator. More...
 
class  TimeDependentOperator
 Base abstract class for first order time dependent operators. More...
 
class  SecondOrderTimeDependentOperator
 Base abstract class for second order time dependent operators. More...
 
class  Solver
 Base class for solvers. More...
 
class  IdentityOperator
 Identity Operator I: x -> x. More...
 
class  ScaledOperator
 Scaled Operator B: x -> a A(x). More...
 
class  TransposeOperator
 The transpose of a given operator. Switches the roles of the methods Mult() and MultTranspose(). More...
 
class  ProductOperator
 General product operator: x -> (A*B)(x) = A(B(x)). More...
 
class  RAPOperator
 The operator x -> R*A*P*x constructed through the actions of R^T, A and P. More...
 
class  TripleProductOperator
 General triple product operator x -> A*B*C*x, with ownership of the factors. More...
 
class  ConstrainedOperator
 Square Operator for imposing essential boundary conditions using only the action, Mult(), of a given unconstrained Operator. More...
 
class  RectangularConstrainedOperator
 Rectangular Operator for imposing essential boundary conditions on the input space using only the action, Mult(), of a given unconstrained Operator. More...
 
class  PetscParVector
 Wrapper for PETSc's vector class. More...
 
class  PetscParMatrix
 Wrapper for PETSc's matrix class. More...
 
class  PetscBCHandler
 Helper class for handling essential boundary conditions. More...
 
class  PetscPreconditionerFactory
 
class  PetscSolver
 Abstract class for PETSc's solvers. More...
 
class  PetscLinearSolver
 Abstract class for PETSc's linear solvers. More...
 
class  PetscPCGSolver
 
class  PetscPreconditioner
 Abstract class for PETSc's preconditioners. More...
 
class  PetscBDDCSolverParams
 Auxiliary class for BDDC customization. More...
 
class  PetscBDDCSolver
 
class  PetscFieldSplitSolver
 
class  PetscNonlinearSolver
 Abstract class for PETSc's nonlinear solvers. More...
 
class  PetscODESolver
 Abstract class for PETSc's ODE solvers. More...
 
class  PetscSolverMonitor
 Abstract class for monitoring PETSc's solvers. More...
 
class  IterativeSolver
 Abstract base class for iterative solver. More...
 
class  OperatorJacobiSmoother
 Jacobi smoothing for a given bilinear form (no matrix necessary). More...
 
class  SLISolver
 Stationary linear iteration: x <- x + B (b - A x) More...
 
class  CGSolver
 Conjugate gradient method. More...
 
class  GMRESSolver
 GMRES method. More...
 
class  FGMRESSolver
 FGMRES method. More...
 
class  BiCGSTABSolver
 BiCGSTAB method. More...
 
class  MINRESSolver
 MINRES method. More...
 
class  NewtonSolver
 Newton's method for solving F(x)=b for a given operator F. More...
 
class  OptimizationProblem
 
class  OptimizationSolver
 Abstract solver for OptimizationProblems. More...
 
class  SLBQPOptimizer
 
class  BlockILU
 
class  UMFPackSolver
 Direct sparse solver using UMFPACK. More...
 
class  KLUSolver
 Direct sparse solver using KLU. More...
 
class  SparseMatrix
 Data type sparse matrix. More...
 
class  SparseSmoother
 
class  GSSmoother
 Data type for Gauss-Seidel smoother of sparse matrix. More...
 
class  DSmoother
 Data type for scaled Jacobi-type smoother of sparse matrix. More...
 
class  STRUMPACKRowLocMatrix
 
class  STRUMPACKSolver
 
class  SundialsSolver
 Base class for interfacing with SUNDIALS packages. More...
 
class  CVODESolver
 Interface to the CVODE library – linear multi-step methods. More...
 
class  ARKStepSolver
 Interface to ARKode's ARKStep module – additive Runge-Kutta methods. More...
 
class  KINSolver
 Interface to the KINSOL library – nonlinear solver methods. More...
 
class  SuperLURowLocMatrix
 
class  SuperLUSolver
 
struct  OffsetStridedLayout1D
 
struct  StridedLayout2D
 
struct  StridedLayout1D
 
struct  OffsetStridedLayout2D
 
struct  StridedLayout3D
 
struct  StridedLayout4D
 
struct  OffsetStridedLayout3D
 
struct  OffsetStridedLayout4D
 
struct  ColumnMajorLayout2D
 
struct  ColumnMajorLayout3D
 
struct  ColumnMajorLayout4D
 
class  DynamicVectorLayout
 
class  VectorLayout
 
class  ScalarLayout
 
struct  TVector
 
struct  TMatrix
 
struct  TTensor3
 
struct  TTensor4
 
class  Vector
 Vector data type. More...
 
class  Element
 Abstract data type element. More...
 
class  Hexahedron
 Data type hexahedron element. More...
 
class  Mesh
 
class  GeometricFactors
 Structure for storing mesh geometric factors: coordinates, Jacobians, and determinants of the Jacobians. More...
 
class  FaceGeometricFactors
 Structure for storing face geometric factors: coordinates, Jacobians, determinants of the Jacobians, and normal vectors. More...
 
class  NodeExtrudeCoefficient
 Class used to extrude the nodes of a mesh. More...
 
class  MeshOperator
 The MeshOperator class serves as base for mesh manipulation classes. More...
 
class  MeshOperatorSequence
 
class  ThresholdRefiner
 Mesh refinement operator using an error threshold. More...
 
class  ThresholdDerefiner
 De-refinement operator using an error threshold. More...
 
class  Rebalancer
 ParMesh rebalancing operator. More...
 
class  MesquiteMesh
 
struct  Refinement
 
struct  Embedding
 Defines the position of a fine element within a coarse element. More...
 
struct  CoarseFineTransformations
 Defines the coarse-fine transformations of all fine elements. More...
 
class  NCMesh
 A class for non-conforming AMR on higher-order hexahedral, prismatic, quadrilateral or triangular meshes. More...
 
struct  RefTrf
 
class  KnotVector
 
class  NURBSPatch
 
class  NURBSExtension
 
class  ParNURBSExtension
 
class  NURBSPatchMap
 
class  ParMesh
 Class for parallel meshes. More...
 
class  ParNCMesh
 A parallel extension of the NCMesh class. More...
 
class  Point
 Data type point element. More...
 
class  PumiMesh
 Base class for PUMI meshes. More...
 
class  ParPumiMesh
 Class for PUMI parallel meshes. More...
 
class  GridFunctionPumi
 Class for PUMI grid functions. More...
 
class  Quadrilateral
 Data type quadrilateral element. More...
 
class  Segment
 Data type line segment element. More...
 
class  Tetrahedron
 Data type tetrahedron element. More...
 
class  TMesh
 
class  Triangle
 Data type triangle element. More...
 
class  Vertex
 Data type for vertex. More...
 
class  Wedge
 Data type Wedge element. More...
 
class  BilinearForm
 
class  MixedBilinearForm
 
class  DiscreteLinearOperator
 
class  BilinearFormExtension
 Class extending the BilinearForm class to support the different AssemblyLevels. More...
 
class  FABilinearFormExtension
 Data and methods for fully-assembled bilinear forms. More...
 
class  EABilinearFormExtension
 Data and methods for element-assembled bilinear forms. More...
 
class  PABilinearFormExtension
 Data and methods for partially-assembled bilinear forms. More...
 
class  MFBilinearFormExtension
 Data and methods for matrix-free bilinear forms. More...
 
class  MixedBilinearFormExtension
 Class extending the MixedBilinearForm class to support the different AssemblyLevels. More...
 
class  PAMixedBilinearFormExtension
 Data and methods for partially-assembled mixed bilinear forms. More...
 
class  BilinearFormIntegrator
 Abstract base class BilinearFormIntegrator. More...
 
class  TransposeIntegrator
 
class  LumpedIntegrator
 
class  InverseIntegrator
 Integrator that inverts the matrix assembled by another integrator. More...
 
class  SumIntegrator
 Integrator defining a sum of multiple Integrators. More...
 
class  MixedScalarIntegrator
 
class  MixedVectorIntegrator
 
class  MixedScalarVectorIntegrator
 
class  MixedScalarMassIntegrator
 
class  MixedVectorProductIntegrator
 
class  MixedScalarDerivativeIntegrator
 
class  MixedScalarWeakDerivativeIntegrator
 
class  MixedScalarDivergenceIntegrator
 
class  MixedVectorDivergenceIntegrator
 
class  MixedScalarWeakGradientIntegrator
 
class  MixedScalarCurlIntegrator
 
class  MixedScalarWeakCurlIntegrator
 
class  MixedVectorMassIntegrator
 
class  MixedCrossProductIntegrator
 
class  MixedDotProductIntegrator
 
class  MixedWeakGradDotIntegrator
 
class  MixedWeakDivCrossIntegrator
 
class  MixedGradGradIntegrator
 
class  MixedCrossGradGradIntegrator
 
class  MixedCurlCurlIntegrator
 
class  MixedCrossCurlCurlIntegrator
 
class  MixedCrossCurlGradIntegrator
 
class  MixedCrossGradCurlIntegrator
 
class  MixedWeakCurlCrossIntegrator
 
class  MixedScalarWeakCurlCrossIntegrator
 
class  MixedCrossGradIntegrator
 
class  MixedCrossCurlIntegrator
 
class  MixedScalarCrossCurlIntegrator
 
class  MixedScalarCrossGradIntegrator
 
class  MixedScalarCrossProductIntegrator
 
class  MixedScalarWeakCrossProductIntegrator
 
class  MixedDirectionalDerivativeIntegrator
 
class  MixedGradDivIntegrator
 
class  MixedDivGradIntegrator
 
class  MixedScalarWeakDivergenceIntegrator
 
class  MixedVectorGradientIntegrator
 
class  MixedVectorCurlIntegrator
 
class  MixedVectorWeakCurlIntegrator
 
class  MixedVectorWeakDivergenceIntegrator
 
class  GradientIntegrator
 
class  DiffusionIntegrator
 
class  MassIntegrator
 
class  BoundaryMassIntegrator
 
class  ConvectionIntegrator
 alpha (q . grad u, v) More...
 
class  GroupConvectionIntegrator
 alpha (q . grad u, v) using the "group" FE discretization More...
 
class  VectorMassIntegrator
 
class  VectorFEDivergenceIntegrator
 
class  VectorFEWeakDivergenceIntegrator
 
class  VectorFECurlIntegrator
 
class  DerivativeIntegrator
 Class for integrating (Q D_i(u), v); u and v are scalars. More...
 
class  CurlCurlIntegrator
 Integrator for (curl u, curl v) for Nedelec elements. More...
 
class  VectorCurlCurlIntegrator
 
class  VectorFEMassIntegrator
 
class  VectorDivergenceIntegrator
 
class  DivDivIntegrator
 (Q div u, div v) for RT elements More...
 
class  VectorDiffusionIntegrator
 
class  ElasticityIntegrator
 
class  DGTraceIntegrator
 
class  DGDiffusionIntegrator
 
class  DGElasticityIntegrator
 
class  TraceJumpIntegrator
 
class  NormalTraceJumpIntegrator
 
class  DiscreteInterpolator
 
class  GradientInterpolator
 
class  IdentityInterpolator
 
class  CurlInterpolator
 
class  DivergenceInterpolator
 
class  NormalInterpolator
 
class  ScalarProductInterpolator
 
class  ScalarVectorProductInterpolator
 
class  VectorScalarProductInterpolator
 
class  VectorCrossProductInterpolator
 
class  VectorInnerProductInterpolator
 
class  Coefficient
 Base class Coefficient that may optionally depend on time. More...
 
class  ConstantCoefficient
 Subclass constant coefficient. More...
 
class  PWConstCoefficient
 class for piecewise constant coefficient More...
 
class  FunctionCoefficient
 class for C-function coefficient More...
 
class  GridFunctionCoefficient
 Coefficient defined by a GridFunction. This coefficient is mesh dependent. More...
 
class  TransformedCoefficient
 
class  DeltaCoefficient
 Delta function coefficient. More...
 
class  RestrictedCoefficient
 Coefficient defined on a subset of domain or boundary attributes. More...
 
class  VectorCoefficient
 
class  VectorConstantCoefficient
 
class  VectorFunctionCoefficient
 
class  VectorArrayCoefficient
 Vector coefficient defined by an array of scalar coefficients. More...
 
class  VectorGridFunctionCoefficient
 Vector coefficient defined by a vector GridFunction. More...
 
class  GradientGridFunctionCoefficient
 Vector coefficient defined as the Gradient of a scalar GridFunction. More...
 
class  CurlGridFunctionCoefficient
 Vector coefficient defined as the Curl of a vector GridFunction. More...
 
class  DivergenceGridFunctionCoefficient
 Scalar coefficient defined as the Divergence of a vector GridFunction. More...
 
class  VectorDeltaCoefficient
 VectorDeltaCoefficient: DeltaCoefficient with a direction. More...
 
class  VectorRestrictedCoefficient
 VectorCoefficient defined on a subset of domain or boundary attributes. More...
 
class  MatrixCoefficient
 
class  MatrixConstantCoefficient
 
class  MatrixFunctionCoefficient
 
class  MatrixArrayCoefficient
 
class  MatrixRestrictedCoefficient
 MatrixCoefficient defined on a subset of domain or boundary attributes. More...
 
class  SumCoefficient
 Coefficients based on sums and products of other coefficients. More...
 
class  ProductCoefficient
 Scalar coefficient defined as the product of two scalar coefficients. More...
 
class  PowerCoefficient
 Scalar coefficient defined as a scalar raised to a power. More...
 
class  InnerProductCoefficient
 Scalar coefficient defined as the inner product of two vector coefficients. More...
 
class  VectorRotProductCoefficient
 Scalar coefficient defined as a cross product of two vectors in 2D. More...
 
class  DeterminantCoefficient
 Scalar coefficient defined as the determinant of a matrix coefficient. More...
 
class  VectorSumCoefficient
 Vector coefficient defined as the sum of two vector coefficients. More...
 
class  ScalarVectorProductCoefficient
 Vector coefficient defined as a product of a scalar and a vector. More...
 
class  VectorCrossProductCoefficient
 Vector coefficient defined as a cross product of two vectors. More...
 
class  MatVecCoefficient
 Vector coefficient defined as a matrix vector product. More...
 
class  IdentityMatrixCoefficient
 Matrix coefficient defined as the identity of dimension d. More...
 
class  MatrixSumCoefficient
 Matrix coefficient defined as the sum of two matrix coefficients. More...
 
class  ScalarMatrixProductCoefficient
 Matrix coefficient defined as a product of a scalar and a matrix. More...
 
class  TransposeMatrixCoefficient
 Matrix coefficient defined as the transpose a matrix. More...
 
class  InverseMatrixCoefficient
 Matrix coefficient defined as the inverse a matrix. More...
 
class  OuterProductCoefficient
 Matrix coefficient defined as the outer product of two vectors. More...
 
class  ComplexGridFunction
 
class  ComplexLinearForm
 
class  SesquilinearForm
 
class  ParComplexGridFunction
 
class  ParComplexLinearForm
 
class  ParSesquilinearForm
 
class  ConduitDataCollection
 Data collection that uses the Conduit Mesh Blueprint specification. More...
 
class  NamedFieldsMap
 Lightweight adaptor over an std::map from strings to pointer to T. More...
 
class  DataCollection
 
class  VisItFieldInfo
 Helper class for VisIt visualization data. More...
 
class  VisItDataCollection
 Data collection with VisIt I/O routines. More...
 
class  ParaViewDataCollection
 Helper class for ParaView visualization data. More...
 
class  ElementTransformation
 
class  InverseElementTransformation
 The inverse transformation of a given ElementTransformation. More...
 
class  IsoparametricTransformation
 
class  IntegrationPointTransformation
 
class  FaceElementTransformations
 
class  AbstractErrorEstimator
 Base class for all error estimators. More...
 
class  ErrorEstimator
 Base class for all element based error estimators. More...
 
class  AnisotropicErrorEstimator
 The AnisotropicErrorEstimator class is the base class for all error estimators that compute one non-negative real (double) number and an anisotropic flag for every element in the Mesh. More...
 
class  ZienkiewiczZhuEstimator
 The ZienkiewiczZhuEstimator class implements the Zienkiewicz-Zhu error estimation procedure. More...
 
class  L2ZienkiewiczZhuEstimator
 The L2ZienkiewiczZhuEstimator class implements the Zienkiewicz-Zhu error estimation procedure where the flux averaging is replaced by a global L2 projection (requiring a mass matrix solve). More...
 
class  BasisType
 Possible basis types. Note that not all elements can use all BasisType(s). More...
 
class  DofToQuad
 Structure representing the matrices/tensors needed to evaluate (in reference space) the values, gradients, divergences, or curls of a FiniteElement at a the quadrature points of a given IntegrationRule. More...
 
class  FunctionSpace
 Describes the space on each element. More...
 
class  FiniteElement
 Abstract class for Finite Elements. More...
 
class  ScalarFiniteElement
 
class  NodalFiniteElement
 
class  PositiveFiniteElement
 
class  VectorFiniteElement
 
class  PointFiniteElement
 
class  Linear1DFiniteElement
 Class for linear FE on interval. More...
 
class  Linear2DFiniteElement
 Class for linear FE on triangle. More...
 
class  BiLinear2DFiniteElement
 Class for bilinear FE on quadrilateral. More...
 
class  GaussLinear2DFiniteElement
 Class for linear FE on triangle with nodes at the 3 "Gaussian" points. More...
 
class  GaussBiLinear2DFiniteElement
 Class for bilinear FE on quad with nodes at the 4 Gaussian points. More...
 
class  P1OnQuadFiniteElement
 
class  Quad1DFiniteElement
 Class for quadratic FE on interval. More...
 
class  QuadPos1DFiniteElement
 
class  Quad2DFiniteElement
 Class for quadratic FE on triangle. More...
 
class  GaussQuad2DFiniteElement
 Class for quadratic FE on triangle with nodes at the "Gaussian" points. More...
 
class  BiQuad2DFiniteElement
 Class for bi-quadratic FE on quadrilateral. More...
 
class  BiQuadPos2DFiniteElement
 
class  GaussBiQuad2DFiniteElement
 Bi-quadratic element on quad with nodes at the 9 Gaussian points. More...
 
class  BiCubic2DFiniteElement
 
class  Cubic1DFiniteElement
 
class  Cubic2DFiniteElement
 
class  Cubic3DFiniteElement
 Class for cubic FE on tetrahedron. More...
 
class  P0TriangleFiniteElement
 Class for constant FE on triangle. More...
 
class  P0QuadFiniteElement
 
class  Linear3DFiniteElement
 Class for linear FE on tetrahedron. More...
 
class  Quadratic3DFiniteElement
 Class for quadratic FE on tetrahedron. More...
 
class  TriLinear3DFiniteElement
 Class for tri-linear FE on cube. More...
 
class  CrouzeixRaviartFiniteElement
 Crouzeix-Raviart finite element on triangle. More...
 
class  CrouzeixRaviartQuadFiniteElement
 Crouzeix-Raviart finite element on quadrilateral. More...
 
class  P0SegmentFiniteElement
 
class  RT0TriangleFiniteElement
 
class  RT0QuadFiniteElement
 
class  RT1TriangleFiniteElement
 
class  RT1QuadFiniteElement
 
class  RT2TriangleFiniteElement
 
class  RT2QuadFiniteElement
 
class  P1SegmentFiniteElement
 Linear 1D element with nodes 1/3 and 2/3 (trace of RT1) More...
 
class  P2SegmentFiniteElement
 Quadratic 1D element with nodes the Gaussian points in [0,1] (trace of RT2) More...
 
class  Lagrange1DFiniteElement
 
class  P1TetNonConfFiniteElement
 
class  P0TetFiniteElement
 
class  P0HexFiniteElement
 
class  LagrangeHexFiniteElement
 Tensor products of 1D FEs (only degree 2 is functional) More...
 
class  RefinedLinear1DFiniteElement
 Class for refined linear FE on interval. More...
 
class  RefinedLinear2DFiniteElement
 Class for refined linear FE on triangle. More...
 
class  RefinedLinear3DFiniteElement
 Class for refined linear FE on tetrahedron. More...
 
class  RefinedBiLinear2DFiniteElement
 Class for refined bi-linear FE on quadrilateral. More...
 
class  RefinedTriLinear3DFiniteElement
 Class for refined trilinear FE on a hexahedron. More...
 
class  Nedelec1HexFiniteElement
 
class  Nedelec1TetFiniteElement
 
class  RT0HexFiniteElement
 
class  RT1HexFiniteElement
 
class  RT0TetFiniteElement
 
class  RotTriLinearHexFiniteElement
 
class  Poly_1D
 
class  TensorBasisElement
 
class  NodalTensorFiniteElement
 
class  PositiveTensorFiniteElement
 
class  VectorTensorFiniteElement
 
class  H1_SegmentElement
 
class  H1_QuadrilateralElement
 
class  H1_HexahedronElement
 
class  H1Pos_SegmentElement
 
class  H1Pos_QuadrilateralElement
 
class  H1Ser_QuadrilateralElement
 
class  H1Pos_HexahedronElement
 
class  H1_TriangleElement
 
class  H1_TetrahedronElement
 
class  H1Pos_TriangleElement
 
class  H1Pos_TetrahedronElement
 
class  H1_WedgeElement
 
class  BiLinear3DFiniteElement
 Class for linear FE on wedge. More...
 
class  BiQuadratic3DFiniteElement
 Class for quadratic FE on wedge. More...
 
class  BiCubic3DFiniteElement
 Class for cubic FE on wedge. More...
 
class  H1Pos_WedgeElement
 
class  L2_SegmentElement
 
class  L2Pos_SegmentElement
 
class  L2_QuadrilateralElement
 
class  L2Pos_QuadrilateralElement
 
class  L2_HexahedronElement
 
class  L2Pos_HexahedronElement
 
class  L2_TriangleElement
 
class  L2Pos_TriangleElement
 
class  L2_TetrahedronElement
 
class  L2Pos_TetrahedronElement
 
class  L2_WedgeElement
 
class  P0WedgeFiniteElement
 
class  L2Pos_WedgeElement
 
class  RT_QuadrilateralElement
 
class  RT_HexahedronElement
 
class  RT_TriangleElement
 
class  RT_TetrahedronElement
 
class  ND_HexahedronElement
 
class  ND_QuadrilateralElement
 
class  ND_TetrahedronElement
 
class  ND_TriangleElement
 
class  ND_SegmentElement
 
class  NURBSFiniteElement
 
class  NURBS1DFiniteElement
 
class  NURBS2DFiniteElement
 
class  NURBS3DFiniteElement
 
class  FiniteElementCollection
 
class  H1_FECollection
 Arbitrary order H1-conforming (continuous) finite elements. More...
 
class  H1Pos_FECollection
 
class  H1Ser_FECollection
 
class  H1_Trace_FECollection
 
class  L2_FECollection
 Arbitrary order "L2-conforming" discontinuous finite elements. More...
 
class  RT_FECollection
 Arbitrary order H(div)-conforming Raviart-Thomas finite elements. More...
 
class  RT_Trace_FECollection
 
class  DG_Interface_FECollection
 
class  ND_FECollection
 Arbitrary order H(curl)-conforming Nedelec finite elements. More...
 
class  ND_Trace_FECollection
 
class  NURBSFECollection
 Arbitrary order non-uniform rational B-splines (NURBS) finite elements. More...
 
class  LinearFECollection
 Piecewise-(bi)linear continuous finite elements. More...
 
class  QuadraticFECollection
 Piecewise-(bi)quadratic continuous finite elements. More...
 
class  QuadraticPosFECollection
 Version of QuadraticFECollection with positive basis functions. More...
 
class  CubicFECollection
 Piecewise-(bi)cubic continuous finite elements. More...
 
class  CrouzeixRaviartFECollection
 Crouzeix-Raviart nonconforming elements in 2D. More...
 
class  LinearNonConf3DFECollection
 Piecewise-linear nonconforming finite elements in 3D. More...
 
class  RT0_2DFECollection
 
class  RT1_2DFECollection
 
class  RT2_2DFECollection
 
class  Const2DFECollection
 
class  LinearDiscont2DFECollection
 
class  GaussLinearDiscont2DFECollection
 Version of LinearDiscont2DFECollection with dofs in the Gaussian points. More...
 
class  P1OnQuadFECollection
 Linear (P1) finite elements on quadrilaterals. More...
 
class  QuadraticDiscont2DFECollection
 
class  QuadraticPosDiscont2DFECollection
 Version of QuadraticDiscont2DFECollection with positive basis functions. More...
 
class  GaussQuadraticDiscont2DFECollection
 Version of QuadraticDiscont2DFECollection with dofs in the Gaussian points. More...
 
class  CubicDiscont2DFECollection
 
class  Const3DFECollection
 
class  LinearDiscont3DFECollection
 
class  QuadraticDiscont3DFECollection
 
class  RefinedLinearFECollection
 Finite element collection on a macro-element. More...
 
class  ND1_3DFECollection
 
class  RT0_3DFECollection
 
class  RT1_3DFECollection
 
class  Local_FECollection
 Discontinuous collection defined locally by a given finite element. More...
 
class  Ordering
 The ordering method used when the number of unknowns per mesh node (vector dimension) is bigger than 1. More...
 
class  FiniteElementSpace
 Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of degrees of freedom. More...
 
class  QuadratureSpace
 Class representing the storage layout of a QuadratureFunction. More...
 
class  GridTransfer
 Base class for transfer algorithms that construct transfer Operators between two finite element (FE) spaces. More...
 
class  InterpolationGridTransfer
 Transfer data between a coarse mesh and an embedded refined mesh using interpolation. More...
 
class  L2ProjectionGridTransfer
 Transfer data between a coarse mesh and an embedded refined mesh using L2 projection. More...
 
class  Geometry
 
class  RefinedGeometry
 
class  GeometryRefiner
 
class  GridFunction
 Class for grid function - Vector with associated FE space. More...
 
class  QuadratureFunction
 Class representing a function through its values (scalar or vector) at quadrature points. More...
 
class  ExtrudeCoefficient
 Class used for extruding scalar GridFunctions. More...
 
class  FindPointsGSLIB
 
class  Hybridization
 
class  IntegrationPoint
 Class for integration point with weight. More...
 
class  IntegrationRule
 Class for an integration rule - an Array of IntegrationPoint. More...
 
class  QuadratureFunctions1D
 A Class that defines 1-D numerical quadrature rules on [0,1]. More...
 
class  Quadrature1D
 A class container for 1D quadrature type constants. More...
 
class  IntegrationRules
 Container class for integration rules. More...
 
class  LinearForm
 Class for linear form - Vector with associated FE space and LFIntegrators. More...
 
class  LinearFormIntegrator
 Abstract base class LinearFormIntegrator. More...
 
class  DeltaLFIntegrator
 Abstract class for integrators that support delta coefficients. More...
 
class  DomainLFIntegrator
 Class for domain integration L(v) := (f, v) More...
 
class  BoundaryLFIntegrator
 Class for boundary integration L(v) := (g, v) More...
 
class  BoundaryNormalLFIntegrator
 Class for boundary integration \( L(v) = (g \cdot n, v) \). More...
 
class  BoundaryTangentialLFIntegrator
 Class for boundary integration \( L(v) = (g \cdot \tau, v) \) in 2D. More...
 
class  VectorDomainLFIntegrator
 
class  VectorBoundaryLFIntegrator
 
class  VectorFEDomainLFIntegrator
 \( (f, v)_{\Omega} \) for VectorFiniteElements (Nedelec, Raviart-Thomas) More...
 
class  VectorBoundaryFluxLFIntegrator
 
class  VectorFEBoundaryFluxLFIntegrator
 
class  VectorFEBoundaryTangentLFIntegrator
 Class for boundary integration \( L(v) = (n \times f, v) \). More...
 
class  BoundaryFlowIntegrator
 
class  DGDirichletLFIntegrator
 
class  DGElasticityDirichletLFIntegrator
 
class  NonlinearForm
 
class  BlockNonlinearForm
 A class representing a general block nonlinear operator defined on the Cartesian product of multiple FiniteElementSpaces. More...
 
class  NonlinearFormExtension
 
class  PANonlinearFormExtension
 Data and methods for partially-assembled nonlinear forms. More...
 
class  NonlinearFormIntegrator
 
class  BlockNonlinearFormIntegrator
 
class  HyperelasticModel
 Abstract class for hyperelastic models. More...
 
class  InverseHarmonicModel
 
class  NeoHookeanModel
 
class  HyperelasticNLFIntegrator
 
class  IncompressibleNeoHookeanIntegrator
 
class  VectorConvectionNLFIntegrator
 
class  ParBilinearForm
 Class for parallel bilinear form. More...
 
class  ParMixedBilinearForm
 Class for parallel bilinear form using different test and trial FE spaces. More...
 
class  ParDiscreteLinearOperator
 
class  ParFiniteElementSpace
 Abstract parallel finite element space. More...
 
class  ConformingProlongationOperator
 Auxiliary class used by ParFiniteElementSpace. More...
 
class  DeviceConformingProlongationOperator
 Auxiliary device class used by ParFiniteElementSpace. More...
 
class  ParGridFunction
 Class for parallel grid function. More...
 
class  ParLinearForm
 Class for parallel linear form. More...
 
class  ParNonlinearForm
 Parallel non-linear operator on the true dofs. More...
 
class  ParBlockNonlinearForm
 A class representing a general parallel block nonlinear operator defined on the Cartesian product of multiple ParFiniteElementSpaces. More...
 
class  ParL2FaceRestriction
 Operator that extracts Face degrees of freedom in parallel. More...
 
class  QuadratureInterpolator
 A class that performs interpolation from an E-vector to quadrature point values and/or derivatives (Q-vectors). More...
 
class  FaceQuadratureInterpolator
 A class that performs interpolation from a face E-vector to quadrature point values and/or derivatives (Q-vectors) on the faces. More...
 
class  ElementRestriction
 Operator that converts FiniteElementSpace L-vectors to E-vectors. More...
 
class  L2ElementRestriction
 Operator that converts L2 FiniteElementSpace L-vectors to E-vectors. More...
 
class  H1FaceRestriction
 Operator that extracts Face degrees of freedom. More...
 
class  L2FaceRestriction
 Operator that extracts Face degrees of freedom. More...
 
class  SidreDataCollection
 Data collection with Sidre routines following the Conduit mesh blueprint specification. More...
 
class  StaticCondensation
 
class  TBilinearForm
 
class  TIntegrator
 
struct  TMassKernel
 
struct  TDiffusionKernel
 
struct  TDiffusionKernel< 1, 1, complex_t >
 
struct  TDiffusionKernel< 2, 2, complex_t >
 
struct  TDiffusionKernel< 3, 3, complex_t >
 
class  TCoefficient
 
class  TConstantCoefficient
 
class  TFunctionCoefficient
 
class  TPiecewiseConstCoefficient
 
class  TGridFunctionCoefficient
 
struct  IntRuleCoefficient
 
class  TElementTransformation
 
class  ShapeEvaluator_base
 
class  ShapeEvaluator_base< FE, IR, false, real_t >
 
class  TProductShapeEvaluator
 
class  TProductShapeEvaluator< 1, DOF, NIP, real_t >
 
class  TProductShapeEvaluator< 2, DOF, NIP, real_t >
 
class  TProductShapeEvaluator< 3, DOF, NIP, real_t >
 
class  ShapeEvaluator_base< FE, IR, true, real_t >
 
class  ShapeEvaluator
 
class  FieldEvaluator_base
 
class  FieldEvaluator
 
class  H1_FiniteElement
 
class  H1_FiniteElement< Geometry::SEGMENT, P >
 
class  H1_FiniteElement< Geometry::TRIANGLE, P >
 
class  H1_FiniteElement< Geometry::SQUARE, P >
 
class  H1_FiniteElement< Geometry::TETRAHEDRON, P >
 
class  H1_FiniteElement< Geometry::CUBE, P >
 
class  L2_FiniteElement_base
 
class  L2_FiniteElement
 
class  L2_FiniteElement< Geometry::SEGMENT, P >
 
class  L2_FiniteElement< Geometry::TRIANGLE, P >
 
class  L2_FiniteElement< Geometry::SQUARE, P >
 
class  L2_FiniteElement< Geometry::TETRAHEDRON, P >
 
class  L2_FiniteElement< Geometry::CUBE, P >
 
class  ElementDofIndexer
 
class  TFiniteElementSpace_simple
 
class  H1_FiniteElementSpace
 
class  DGIndexer
 
class  L2_FiniteElementSpace
 
class  GenericIntegrationRule
 
class  TProductIntegrationRule_base
 
class  TProductIntegrationRule_base< 1, Q, real_t >
 
class  TProductIntegrationRule_base< 2, Q, real_t >
 
class  TProductIntegrationRule_base< 3, Q, real_t >
 
class  TProductIntegrationRule
 
class  GaussIntegrationRule
 
class  TIntegrationRule
 
class  TIntegrationRule< Geometry::SEGMENT, Order, real_t >
 
class  TIntegrationRule< Geometry::SQUARE, Order, real_t >
 
class  TIntegrationRule< Geometry::CUBE, Order, real_t >
 
class  TIntegrationRule< Geometry::TRIANGLE, 0, real_t >
 
class  TIntegrationRule< Geometry::TRIANGLE, 1, real_t >
 
class  TIntegrationRule< Geometry::TRIANGLE, 2, real_t >
 
class  TIntegrationRule< Geometry::TRIANGLE, 3, real_t >
 
class  TIntegrationRule< Geometry::TRIANGLE, 4, real_t >
 
class  TIntegrationRule< Geometry::TRIANGLE, 5, real_t >
 
class  TIntegrationRule< Geometry::TRIANGLE, 6, real_t >
 
class  TIntegrationRule< Geometry::TRIANGLE, 7, real_t >
 
class  TIntegrationRule< Geometry::TETRAHEDRON, 0, real_t >
 
class  TIntegrationRule< Geometry::TETRAHEDRON, 1, real_t >
 
class  TIntegrationRule< Geometry::TETRAHEDRON, 2, real_t >
 
class  TIntegrationRule< Geometry::TETRAHEDRON, 3, real_t >
 
class  TIntegrationRule< Geometry::TETRAHEDRON, 4, real_t >
 
class  TIntegrationRule< Geometry::TETRAHEDRON, 5, real_t >
 
class  TIntegrationRule< Geometry::TETRAHEDRON, 6, real_t >
 
class  TIntegrationRule< Geometry::TETRAHEDRON, 7, real_t >
 
class  TMOP_QualityMetric
 Abstract class for local mesh quality metrics in the target-matrix optimization paradigm (TMOP) by P. Knupp et al. More...
 
class  TMOP_Metric_001
 Metric without a type, 2D. More...
 
class  TMOP_Metric_skew2D
 Skew metric, 2D. More...
 
class  TMOP_Metric_skew3D
 Skew metric, 3D. More...
 
class  TMOP_Metric_aspratio2D
 Aspect ratio metric, 2D. More...
 
class  TMOP_Metric_aspratio3D
 Aspect ratio metric, 3D. More...
 
class  TMOP_Metric_002
 Shape, ideal barrier metric, 2D. More...
 
class  TMOP_Metric_007
 Shape & area, ideal barrier metric, 2D. More...
 
class  TMOP_Metric_009
 Shape & area metric, 2D. More...
 
class  TMOP_Metric_022
 Shifted barrier form of metric 2 (shape, ideal barrier metric), 2D. More...
 
class  TMOP_Metric_050
 Shape, ideal barrier metric, 2D. More...
 
class  TMOP_Metric_055
 Area metric, 2D. More...
 
class  TMOP_Metric_056
 Area, ideal barrier metric, 2D. More...
 
class  TMOP_Metric_058
 Shape, ideal barrier metric, 2D. More...
 
class  TMOP_Metric_077
 Area, ideal barrier metric, 2D. More...
 
class  TMOP_Metric_211
 Untangling metric, 2D. More...
 
class  TMOP_Metric_252
 Shifted barrier form of metric 56 (area, ideal barrier metric), 2D. More...
 
class  TMOP_Metric_301
 Shape, ideal barrier metric, 3D. More...
 
class  TMOP_Metric_302
 Shape, ideal barrier metric, 3D. More...
 
class  TMOP_Metric_303
 Shape, ideal barrier metric, 3D. More...
 
class  TMOP_Metric_315
 Volume metric, 3D. More...
 
class  TMOP_Metric_316
 Volume, ideal barrier metric, 3D. More...
 
class  TMOP_Metric_321
 Shape & volume, ideal barrier metric, 3D. More...
 
class  TMOP_Metric_352
 Shifted barrier form of 3D metric 16 (volume, ideal barrier metric), 3D. More...
 
class  TMOP_LimiterFunction
 Base class for limiting functions to be used in class TMOP_Integrator. More...
 
class  TMOP_QuadraticLimiter
 Default limiter function in TMOP_Integrator. More...
 
class  AdaptivityEvaluator
 
class  TargetConstructor
 Base class representing target-matrix construction algorithms for mesh optimization via the target-matrix optimization paradigm (TMOP). More...
 
class  AnalyticAdaptTC
 
class  DiscreteAdaptTC
 
class  TMOP_Integrator
 A TMOP integrator class based on any given TMOP_QualityMetric and TargetConstructor. More...
 
class  AdvectorCG
 
class  SerialAdvectorCGOper
 Performs a single remap advection step in serial. More...
 
class  ParAdvectorCGOper
 Performs a single remap advection step in parallel. More...
 
class  TMOPNewtonSolver
 
class  TMOPDescentNewtonSolver
 Allows negative Jacobians. Used for untangling. More...
 

Typedefs

typedef std::pair< int, int > occa_id_t
 
typedef std::map< occa_id_t,
occa::kernel > 
occa_kernel_t
 
typedef DeviceTensor< 1, int > DeviceArray
 
typedef DeviceTensor< 1, double > DeviceVector
 
typedef DeviceTensor< 2, double > DeviceMatrix
 
typedef OperatorHandle OperatorPtr
 Add an alternative name for OperatorHandle – OperatorPtr. More...
 
typedef NCMesh::RefCoord RefCoord
 
typedef RefCoord RefPoint [3]
 
typedef L2_FECollection DG_FECollection
 Declare an alternative name for L2_FECollection = DG_FECollection. More...
 

Enumerations

enum  ErrorAction { MFEM_ERROR_ABORT = 0, MFEM_ERROR_THROW }
 Action to take when MFEM encounters an error. More...
 
enum  MemoryType {
  MemoryType::HOST, MemoryType::HOST_32, MemoryType::HOST_64, MemoryType::HOST_DEBUG,
  MemoryType::HOST_UMPIRE, MemoryType::MANAGED, MemoryType::DEVICE, MemoryType::DEVICE_DEBUG,
  MemoryType::DEVICE_UMPIRE, MemoryType::SIZE
}
 Memory types supported by MFEM. More...
 
enum  MemoryClass {
  MemoryClass::HOST, MemoryClass::HOST_32, MemoryClass::HOST_64, MemoryClass::DEVICE,
  MemoryClass::MANAGED
}
 Memory classes identify sets of memory types. More...
 
enum  FaceType : bool { FaceType::Interior, FaceType::Boundary }
 
enum  VTKFormat { VTKFormat::ASCII, VTKFormat::BINARY, VTKFormat::BINARY32 }
 
enum  AssemblyLevel { AssemblyLevel::FULL, AssemblyLevel::ELEMENT, AssemblyLevel::PARTIAL, AssemblyLevel::NONE }
 
enum  ElementDofOrdering { ElementDofOrdering::NATIVE, ElementDofOrdering::LEXICOGRAPHIC }
 Constants describing the possible orderings of the DOFs in one element. More...
 
enum  QVectorLayout { QVectorLayout::byNODES, QVectorLayout::byVDIM }
 Type describing possible layouts for Q-vectors. More...
 
enum  L2FaceValues : bool { L2FaceValues::SingleValued, L2FaceValues::DoubleValued }
 

Functions

template<class T >
void Swap (Array< T > &, Array< T > &)
 
template<class T >
bool operator== (const Array< T > &LHS, const Array< T > &RHS)
 
template<class T >
bool operator!= (const Array< T > &LHS, const Array< T > &RHS)
 
template<class T >
void Swap (Array2D< T > &, Array2D< T > &)
 
template<class T >
void Swap (T &a, T &b)
 inlines /// More...
 
void KdTreeSort (int **coords, int d, int dim, int size)
 
MPI_Comm ReorderRanksZCurve (MPI_Comm comm)
 
void mfem_cuda_error (cudaError_t err, const char *expr, const char *func, const char *file, int line)
 
void * CuMemAlloc (void **d_ptr, size_t bytes)
 Allocates device memory. More...
 
void * CuMallocManaged (void **d_ptr, size_t bytes)
 Allocates managed device memory. More...
 
void * CuMemFree (void *d_ptr)
 Frees device memory. More...
 
void * CuMemcpyHtoD (void *d_dst, const void *h_src, size_t bytes)
 Copies memory from Host to Device. More...
 
void * CuMemcpyHtoDAsync (void *d_dst, const void *h_src, size_t bytes)
 Copies memory from Host to Device. More...
 
void * CuMemcpyDtoD (void *d_dst, const void *d_src, size_t bytes)
 Copies memory from Device to Device. More...
 
void * CuMemcpyDtoDAsync (void *d_dst, const void *d_src, size_t bytes)
 Copies memory from Device to Device. More...
 
void * CuMemcpyDtoH (void *h_dst, const void *d_src, size_t bytes)
 Copies memory from Device to Host. More...
 
void * CuMemcpyDtoHAsync (void *h_dst, const void *d_src, size_t bytes)
 Copies memory from Device to Host. More...
 
void CuCheckLastError ()
 Check the error code returned by cudaGetLastError(), aborting on error. More...
 
int CuGetDeviceCount ()
 Get the number of CUDA devices. More...
 
template<typename T >
MemoryClass GetMemoryClass (const Memory< T > &mem, bool on_dev)
 Return the memory class to be used by the functions Read(), Write(), and ReadWrite(), while setting the device use flag in mem, if on_dev is true. More...
 
template<typename T >
const T * Read (const Memory< T > &mem, int size, bool on_dev=true)
 Get a pointer for read access to mem with the mfem::Device's DeviceMemoryClass, if on_dev = true, or the mfem::Device's HostMemoryClass, otherwise. More...
 
template<typename T >
const T * HostRead (const Memory< T > &mem, int size)
 Shortcut to Read(const Memory<T> &mem, int size, false) More...
 
template<typename T >
T * Write (Memory< T > &mem, int size, bool on_dev=true)
 Get a pointer for write access to mem with the mfem::Device's DeviceMemoryClass, if on_dev = true, or the mfem::Device's HostMemoryClass, otherwise. More...
 
template<typename T >
T * HostWrite (Memory< T > &mem, int size)
 Shortcut to Write(const Memory<T> &mem, int size, false) More...
 
template<typename T >
T * ReadWrite (Memory< T > &mem, int size, bool on_dev=true)
 Get a pointer for read+write access to mem with the mfem::Device's DeviceMemoryClass, if on_dev = true, or the mfem::Device's HostMemoryClass, otherwise. More...
 
template<typename T >
T * HostReadWrite (Memory< T > &mem, int size)
 Shortcut to ReadWrite(Memory<T> &mem, int size, false) More...
 
void set_error_action (ErrorAction action)
 Set the action MFEM takes when an error is encountered. More...
 
ErrorAction get_error_action ()
 Get the action MFEM takes when an error is encountered. More...
 
void mfem_backtrace (int mode, int depth)
 
void mfem_error (const char *msg=NULL)
 Function called when an error is encountered. Used by the macros MFEM_ABORT, MFEM_ASSERT, MFEM_VERIFY. More...
 
void mfem_warning (const char *msg=NULL)
 Function called by the macro MFEM_WARNING. More...
 
template<typename HBODY >
void OmpWrap (const int N, HBODY &&h_body)
 OpenMP backend. More...
 
template<const int BLOCKS = MFEM_CUDA_BLOCKS, typename DBODY >
void RajaCudaWrap1D (const int N, DBODY &&d_body)
 
template<typename DBODY >
void RajaCudaWrap2D (const int N, DBODY &&d_body, const int X, const int Y, const int BZ)
 
template<typename DBODY >
void RajaCudaWrap3D (const int N, DBODY &&d_body, const int X, const int Y, const int Z)
 
template<typename HBODY >
void RajaOmpWrap (const int N, HBODY &&h_body)
 
template<typename HBODY >
void RajaSeqWrap (const int N, HBODY &&h_body)
 RAJA sequential loop backend. More...
 
template<const int BLCK = MFEM_CUDA_BLOCKS, typename DBODY >
void CuWrap1D (const int N, DBODY &&d_body)
 
template<typename DBODY >
void CuWrap2D (const int N, DBODY &&d_body, const int X, const int Y, const int BZ)
 
template<typename DBODY >
void CuWrap3D (const int N, DBODY &&d_body, const int X, const int Y, const int Z)
 
template<const int BLCK = MFEM_HIP_BLOCKS, typename DBODY >
void HipWrap1D (const int N, DBODY &&d_body)
 
template<typename DBODY >
void HipWrap2D (const int N, DBODY &&d_body, const int X, const int Y, const int BZ)
 
template<typename DBODY >
void HipWrap3D (const int N, DBODY &&d_body, const int X, const int Y, const int Z)
 
template<const int DIM, typename DBODY , typename HBODY >
void ForallWrap (const bool use_dev, const int N, DBODY &&d_body, HBODY &&h_body, const int X=0, const int Y=0, const int Z=0)
 The forall kernel body wrapper. More...
 
std::string MakeParFilename (const std::string &prefix, const int myid, const std::string suffix="", const int width=6)
 Construct a string of the form "<prefix><myid><suffix>" where the integer myid is padded with leading zeros to be at least width digits long. More...
 
void mfem_hip_error (hipError_t err, const char *expr, const char *func, const char *file, int line)
 
void * HipMemAlloc (void **d_ptr, size_t bytes)
 Allocates device memory. More...
 
void * HipMallocManaged (void **d_ptr, size_t bytes)
 Allocates managed device memory. More...
 
void * HipMemFree (void *d_ptr)
 Frees device memory. More...
 
void * HipMemcpyHtoD (void *d_dst, const void *h_src, size_t bytes)
 Copies memory from Host to Device. More...
 
void * HipMemcpyHtoDAsync (void *d_dst, const void *h_src, size_t bytes)
 Copies memory from Host to Device. More...
 
void * HipMemcpyDtoD (void *d_dst, const void *d_src, size_t bytes)
 Copies memory from Device to Device. More...
 
void * HipMemcpyDtoDAsync (void *d_dst, const void *d_src, size_t bytes)
 Copies memory from Device to Device. More...
 
void * HipMemcpyDtoH (void *h_dst, const void *d_src, size_t bytes)
 Copies memory from Device to Host. More...
 
void * HipMemcpyDtoHAsync (void *h_dst, const void *d_src, size_t bytes)
 Copies memory from Device to Host. More...
 
void HipCheckLastError ()
 Check the error code returned by hipGetLastError(), aborting on error. More...
 
int HipGetDeviceCount ()
 Get the number of HIP devices. More...
 
MemoryType GetMemoryType (MemoryClass mc)
 Return a suitable MemoryType for a given MemoryClass. More...
 
MemoryClass operator* (MemoryClass mc1, MemoryClass mc2)
 Return a suitable MemoryClass from a pair of MemoryClasses. More...
 
void MemoryPrintFlags (unsigned flags)
 Print the state of a Memory object based on its internal flags. Useful in a debugger. See also Memory<T>::PrintFlags(). More...
 
bool IsHostMemory (MemoryType mt)
 Return true if the given memory type is in MemoryClass::HOST. More...
 
bool IsDeviceMemory (MemoryType mt)
 
occa::device & OccaDev ()
 Return the default occa::device used by MFEM. More...
 
occa::memory OccaMemoryWrap (void *ptr, std::size_t bytes)
 Wrap a pointer as occa::memory with the default occa::device used by MFEM. More...
 
template<typename T >
const occa::memory OccaMemoryRead (const Memory< T > &mem, size_t size)
 Wrap a Memory object as occa::memory for read only access with the mfem::Device MemoryClass. The returned occa::memory is associated with the default occa::device used by MFEM. More...
 
template<typename T >
occa::memory OccaMemoryWrite (Memory< T > &mem, size_t size)
 Wrap a Memory object as occa::memory for write only access with the mfem::Device MemoryClass. The returned occa::memory is associated with the default occa::device used by MFEM. More...
 
template<typename T >
occa::memory OccaMemoryReadWrite (Memory< T > &mem, size_t size)
 Wrap a Memory object as occa::memory for read-write access with the mfem::Device MemoryClass. The returned occa::memory is associated with the default occa::device used by MFEM. More...
 
bool DeviceCanUseOcca ()
 Function that determines if an OCCA kernel should be used, based on the current mfem::Device configuration. More...
 
int isValidAsInt (char *s)
 
int isValidAsDouble (char *s)
 
void parseArray (char *str, Array< int > &var)
 
void parseVector (char *str, Vector &var)
 
template<class A , class B >
bool operator< (const Pair< A, B > &p, const Pair< A, B > &q)
 Comparison operator for class Pair, based on the first element only. More...
 
template<class A , class B >
bool operator== (const Pair< A, B > &p, const Pair< A, B > &q)
 Equality operator for class Pair, based on the first element only. More...
 
template<class A , class B >
void SortPairs (Pair< A, B > *pairs, int size)
 Sort an array of Pairs with respect to the first element. More...
 
template<class A , class B , class C >
bool operator< (const Triple< A, B, C > &p, const Triple< A, B, C > &q)
 Lexicographic comparison operator for class Triple. More...
 
template<class A , class B , class C >
void SortTriple (Triple< A, B, C > *triples, int size)
 Lexicographic sort for arrays of class Triple. More...
 
void Sort3 (int &r, int &c, int &f)
 
void Transpose (const Table &A, Table &At, int _ncols_A=-1)
 Transpose a Table. More...
 
TableTranspose (const Table &A)
 
void Transpose (const Array< int > &A, Table &At, int _ncols_A=-1)
 Transpose an Array<int> More...
 
void Mult (const Table &A, const Table &B, Table &C)
 C = A * B (as boolean matrices) More...
 
TableMult (const Table &A, const Table &B)
 
template<>
void Swap< Table > (Table &a, Table &b)
 Specialization of the template function Swap<> for class Table. More...
 
template<AssignOp::Type Op, typename lvalue_t , typename rvalue_t >
MFEM_HOST_DEVICE lvalue_t & Assign (lvalue_t &a, const rvalue_t &b)
 
void skip_comment_lines (std::istream &is, const char comment_char)
 
void filter_dos (std::string &line)
 
std::string to_string (int i)
 
std::string to_padded_string (int i, int digits)
 
int to_int (const std::string &str)
 
void tic ()
 Start timing. More...
 
double toc ()
 End timing. More...
 
int GetVersion ()
 
int GetVersionMajor ()
 
int GetVersionMinor ()
 
int GetVersionPatch ()
 
const char * GetVersionStr ()
 
const char * GetGitStr ()
 
const char * GetConfigStr ()
 
BlockMatrixTranspose (const BlockMatrix &A)
 Transpose a BlockMatrix: result = A'. More...
 
BlockMatrixMult (const BlockMatrix &A, const BlockMatrix &B)
 Multiply BlockMatrix matrices: result = A*B. More...
 
void dsyevr_Eigensystem (DenseMatrix &a, Vector &ev, DenseMatrix *evect)
 
void dsyev_Eigensystem (DenseMatrix &a, Vector &ev, DenseMatrix *evect)
 
void dsygv_Eigensystem (DenseMatrix &a, DenseMatrix &b, Vector &ev, DenseMatrix *evect)
 
void Add (const DenseMatrix &A, const DenseMatrix &B, double alpha, DenseMatrix &C)
 C = A + alpha*B. More...
 
void Add (double alpha, const double *A, double beta, const double *B, DenseMatrix &C)
 C = alpha*A + beta*B. More...
 
void Add (double alpha, const DenseMatrix &A, double beta, const DenseMatrix &B, DenseMatrix &C)
 C = alpha*A + beta*B. More...
 
bool LinearSolve (DenseMatrix &A, double *X, double TOL=1.e-9)
 Solves the dense linear system, A * X = B for X More...
 
void Mult (const DenseMatrix &b, const DenseMatrix &c, DenseMatrix &a)
 Matrix matrix multiplication. A = B * C. More...
 
void AddMult_a (double alpha, const DenseMatrix &b, const DenseMatrix &c, DenseMatrix &a)
 Matrix matrix multiplication. A += alpha * B * C. More...
 
void AddMult (const DenseMatrix &b, const DenseMatrix &c, DenseMatrix &a)
 Matrix matrix multiplication. A += B * C. More...
 
void CalcAdjugate (const DenseMatrix &a, DenseMatrix &adja)
 
void CalcAdjugateTranspose (const DenseMatrix &a, DenseMatrix &adjat)
 Calculate the transposed adjugate of a matrix (for NxN matrices, N=1,2,3) More...
 
void CalcInverse (const DenseMatrix &a, DenseMatrix &inva)
 
void CalcInverseTranspose (const DenseMatrix &a, DenseMatrix &inva)
 Calculate the inverse transpose of a matrix (for NxN matrices, N=1,2,3) More...
 
void CalcOrtho (const DenseMatrix &J, Vector &n)
 
void MultAAt (const DenseMatrix &a, DenseMatrix &aat)
 Calculate the matrix A.At. More...
 
void AddMultADAt (const DenseMatrix &A, const Vector &D, DenseMatrix &ADAt)
 ADAt += A D A^t, where D is diagonal. More...
 
void MultADAt (const DenseMatrix &A, const Vector &D, DenseMatrix &ADAt)
 ADAt = A D A^t, where D is diagonal. More...
 
void MultABt (const DenseMatrix &A, const DenseMatrix &B, DenseMatrix &ABt)
 Multiply a matrix A with the transpose of a matrix B: A*Bt. More...
 
void MultADBt (const DenseMatrix &A, const Vector &D, const DenseMatrix &B, DenseMatrix &ADBt)
 ADBt = A D B^t, where D is diagonal. More...
 
void AddMultABt (const DenseMatrix &A, const DenseMatrix &B, DenseMatrix &ABt)
 ABt += A * B^t. More...
 
void AddMultADBt (const DenseMatrix &A, const Vector &D, const DenseMatrix &B, DenseMatrix &ADBt)
 ADBt = A D B^t, where D is diagonal. More...
 
void AddMult_a_ABt (double a, const DenseMatrix &A, const DenseMatrix &B, DenseMatrix &ABt)
 ABt += a * A * B^t. More...
 
void MultAtB (const DenseMatrix &A, const DenseMatrix &B, DenseMatrix &AtB)
 Multiply the transpose of a matrix A with a matrix B: At*B. More...
 
void AddMult_a_AAt (double a, const DenseMatrix &A, DenseMatrix &AAt)
 AAt += a * A * A^t. More...
 
void Mult_a_AAt (double a, const DenseMatrix &A, DenseMatrix &AAt)
 AAt = a * A * A^t. More...
 
void MultVVt (const Vector &v, DenseMatrix &vvt)
 Make a matrix from a vector V.Vt. More...
 
void MultVWt (const Vector &v, const Vector &w, DenseMatrix &VWt)
 
void AddMultVWt (const Vector &v, const Vector &w, DenseMatrix &VWt)
 VWt += v w^t. More...
 
void AddMultVVt (const Vector &v, DenseMatrix &VWt)
 VVt += v v^t. More...
 
void AddMult_a_VWt (const double a, const Vector &v, const Vector &w, DenseMatrix &VWt)
 VWt += a * v w^t. More...
 
void AddMult_a_VVt (const double a, const Vector &v, DenseMatrix &VVt)
 VVt += a * v v^t. More...
 
template<typename T , typename... Dims>
DeviceTensor< sizeof...(Dims), T > Reshape (T *ptr, Dims...dims)
 Wrap a pointer as a DeviceTensor with automatically deduced template parameters. More...
 
double InnerProduct (HypreParVector *x, HypreParVector *y)
 
double InnerProduct (HypreParVector &x, HypreParVector &y)
 Returns the inner product of x and y. More...
 
double ParNormlp (const Vector &vec, double p, MPI_Comm comm)
 Compute the l_p norm of the Vector which is split without overlap across the given communicator. More...
 
void delete_hypre_CSRMatrixData (hypre_CSRMatrix *M)
 
void delete_hypre_ParCSRMatrixColMapOffd (hypre_ParCSRMatrix *A)
 
void delete_hypre_CSRMatrixI (hypre_CSRMatrix *M)
 
void delete_hypre_CSRMatrixJ (hypre_CSRMatrix *M)
 
HypreParMatrixAdd (double alpha, const HypreParMatrix &A, double beta, const HypreParMatrix &B)
 Return a new matrix C = alpha*A + beta*B, assuming that both A and B use the same row and column partitions and the same col_map_offd arrays. More...
 
HypreParMatrixParMult (const HypreParMatrix *A, const HypreParMatrix *B, bool own_matrix)
 
HypreParMatrixParAdd (const HypreParMatrix *A, const HypreParMatrix *B)
 Returns the matrix A + B. More...
 
HypreParMatrixRAP (const HypreParMatrix *A, const HypreParMatrix *P)
 Returns the matrix P^t * A * P. More...
 
HypreParMatrixRAP (const HypreParMatrix *Rt, const HypreParMatrix *A, const HypreParMatrix *P)
 Returns the matrix Rt^t * A * P. More...
 
void EliminateBC (HypreParMatrix &A, HypreParMatrix &Ae, const Array< int > &ess_dof_list, const Vector &X, Vector &B)
 
int ParCSRRelax_Taubin (hypre_ParCSRMatrix *A, hypre_ParVector *f, double lambda, double mu, int N, double max_eig, hypre_ParVector *u, hypre_ParVector *r)
 
int ParCSRRelax_FIR (hypre_ParCSRMatrix *A, hypre_ParVector *f, double max_eig, int poly_order, double *fir_coeffs, hypre_ParVector *u, hypre_ParVector *x0, hypre_ParVector *x1, hypre_ParVector *x2, hypre_ParVector *x3)
 
HypreParMatrixDiscreteGrad (ParFiniteElementSpace *edge_fespace, ParFiniteElementSpace *vert_fespace)
 Compute the discrete gradient matrix between the nodal linear and ND1 spaces. More...
 
HypreParMatrixDiscreteCurl (ParFiniteElementSpace *face_fespace, ParFiniteElementSpace *edge_fespace)
 Compute the discrete curl matrix between the ND1 and RT0 spaces. More...
 
bool IsIdentityProlongation (const Operator *P)
 
void MFEMInitializePetsc ()
 Convenience functions to initialize/finalize PETSc. More...
 
void MFEMInitializePetsc (int *argc, char ***argv)
 
void MFEMInitializePetsc (int *argc, char ***argv, const char rc_file[], const char help[])
 
void MFEMFinalizePetsc ()
 
PetscParMatrixTripleMatrixProduct (PetscParMatrix *R, PetscParMatrix *A, PetscParMatrix *P)
 Returns the matrix R * A * P. More...
 
PetscParMatrixRAP (PetscParMatrix *Rt, PetscParMatrix *A, PetscParMatrix *P)
 Returns the matrix Rt^t * A * P. More...
 
PetscParMatrixRAP (PetscParMatrix *A, PetscParMatrix *P)
 Returns the matrix P^t * A * P. More...
 
PetscParMatrixRAP (HypreParMatrix *A, PetscParMatrix *P)
 Returns the matrix P^t * A * P. More...
 
PetscParMatrixParMult (const PetscParMatrix *A, const PetscParMatrix *B)
 Returns the matrix A * B. More...
 
void EliminateBC (PetscParMatrix &A, PetscParMatrix &Ae, const Array< int > &ess_dof_list, const Vector &X, Vector &B)
 Eliminate essential BC specified by ess_dof_list from the solution X to the r.h.s. B. More...
 
void SLI (const Operator &A, const Vector &b, Vector &x, int print_iter=0, int max_num_iter=1000, double RTOLERANCE=1e-12, double ATOLERANCE=1e-24)
 Stationary linear iteration. (tolerances are squared) More...
 
void SLI (const Operator &A, Solver &B, const Vector &b, Vector &x, int print_iter=0, int max_num_iter=1000, double RTOLERANCE=1e-12, double ATOLERANCE=1e-24)
 Preconditioned stationary linear iteration. (tolerances are squared) More...
 
void CG (const Operator &A, const Vector &b, Vector &x, int print_iter=0, int max_num_iter=1000, double RTOLERANCE=1e-12, double ATOLERANCE=1e-24)
 Conjugate gradient method. (tolerances are squared) More...
 
void PCG (const Operator &A, Solver &B, const Vector &b, Vector &x, int print_iter=0, int max_num_iter=1000, double RTOLERANCE=1e-12, double ATOLERANCE=1e-24)
 Preconditioned conjugate gradient method. (tolerances are squared) More...
 
void GeneratePlaneRotation (double &dx, double &dy, double &cs, double &sn)
 
void ApplyPlaneRotation (double &dx, double &dy, double &cs, double &sn)
 
void Update (Vector &x, int k, DenseMatrix &h, Vector &s, Array< Vector * > &v)
 
int GMRES (const Operator &A, Vector &x, const Vector &b, Solver &M, int &max_iter, int m, double &tol, double atol, int printit)
 GMRES method. (tolerances are squared) More...
 
void GMRES (const Operator &A, Solver &B, const Vector &b, Vector &x, int print_iter=0, int max_num_iter=1000, int m=50, double rtol=1e-12, double atol=1e-24)
 GMRES method. (tolerances are squared) More...
 
int BiCGSTAB (const Operator &A, Vector &x, const Vector &b, Solver &M, int &max_iter, double &tol, double atol, int printit)
 BiCGSTAB method. (tolerances are squared) More...
 
void BiCGSTAB (const Operator &A, Solver &B, const Vector &b, Vector &x, int print_iter=0, int max_num_iter=1000, double rtol=1e-12, double atol=1e-24)
 BiCGSTAB method. (tolerances are squared) More...
 
void MINRES (const Operator &A, const Vector &b, Vector &x, int print_it=0, int max_it=1000, double rtol=1e-12, double atol=1e-24)
 MINRES method without preconditioner. (tolerances are squared) More...
 
void MINRES (const Operator &A, Solver &B, const Vector &b, Vector &x, int print_it=0, int max_it=1000, double rtol=1e-12, double atol=1e-24)
 MINRES method with preconditioner. (tolerances are squared) More...
 
int aGMRES (const Operator &A, Vector &x, const Vector &b, const Operator &M, int &max_iter, int m_max, int m_min, int m_step, double cf, double &tol, double &atol, int printit)
 
void MinimumDiscardedFillOrdering (SparseMatrix &C, Array< int > &p)
 
void SparseMatrixFunction (SparseMatrix &S, double(*f)(double))
 Applies f() to each element of the matrix (after it is finalized). More...
 
SparseMatrixTranspose (const SparseMatrix &A)
 Transpose of a sparse matrix. A must be finalized. More...
 
SparseMatrixTransposeAbstractSparseMatrix (const AbstractSparseMatrix &A, int useActualWidth)
 Transpose of a sparse matrix. A does not need to be a CSR matrix. More...
 
SparseMatrixMult (const SparseMatrix &A, const SparseMatrix &B, SparseMatrix *OAB=NULL)
 Matrix product A.B. More...
 
SparseMatrixTransposeMult (const SparseMatrix &A, const SparseMatrix &B)
 C = A^T B. More...
 
SparseMatrixMultAbstractSparseMatrix (const AbstractSparseMatrix &A, const AbstractSparseMatrix &B)
 Matrix product of sparse matrices. A and B do not need to be CSR matrices. More...
 
DenseMatrixMult (const SparseMatrix &A, DenseMatrix &B)
 Matrix product A.B. More...
 
DenseMatrixRAP (const SparseMatrix &A, DenseMatrix &P)
 RAP matrix product (with R=P^T) More...
 
DenseMatrixRAP (DenseMatrix &A, const SparseMatrix &P)
 RAP matrix product (with R=P^T) More...
 
SparseMatrixRAP (const SparseMatrix &A, const SparseMatrix &R, SparseMatrix *ORAP)
 
SparseMatrixRAP (const SparseMatrix &Rt, const SparseMatrix &A, const SparseMatrix &P)
 General RAP with given R^T, A and P. More...
 
SparseMatrixMult_AtDA (const SparseMatrix &A, const Vector &D, SparseMatrix *OAtDA=NULL)
 Matrix multiplication A^t D A. All matrices must be finalized. More...
 
SparseMatrixAdd (double a, const SparseMatrix &A, double b, const SparseMatrix &B)
 Matrix addition result = a*A + b*B. More...
 
SparseMatrixAdd (const SparseMatrix &A, const SparseMatrix &B)
 Matrix addition result = A + B. More...
 
SparseMatrixAdd (Array< SparseMatrix * > &Ai)
 Matrix addition result = sum_i A_i. More...
 
void Add (const SparseMatrix &A, double alpha, DenseMatrix &B)
 B += alpha * A. More...
 
DenseMatrixOuterProduct (const DenseMatrix &A, const DenseMatrix &B)
 Produces a block matrix with blocks A_{ij}*B. More...
 
SparseMatrixOuterProduct (const DenseMatrix &A, const SparseMatrix &B)
 Produces a block matrix with blocks A_{ij}*B. More...
 
SparseMatrixOuterProduct (const SparseMatrix &A, const DenseMatrix &B)
 Produces a block matrix with blocks A_{ij}*B. More...
 
SparseMatrixOuterProduct (const SparseMatrix &A, const SparseMatrix &B)
 Produces a block matrix with blocks A_{ij}*B. More...
 
class if defined (__alignas_is_defined) alignas(double) RowNode
 
template<>
void Swap< SparseMatrix > (SparseMatrix &a, SparseMatrix &b)
 Specialization of the template function Swap<> for class SparseMatrix. More...
 
template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void sMult_AB (const A_layout_t &A_layout, const A_data_t &A_data, const B_layout_t &B_layout, const B_data_t &B_data, const C_layout_t &C_layout, C_data_t &C_data)
 
template<int bA1, int bA2, int bB2, bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void bMult_AB (const A_layout_t &A_layout, const A_data_t &A_data, const B_layout_t &B_layout, const B_data_t &B_data, const C_layout_t &C_layout, C_data_t &C_data)
 
template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void Mult_AB (const A_layout_t &A_layout, const A_data_t &A_data, const B_layout_t &B_layout, const B_data_t &B_data, const C_layout_t &C_layout, C_data_t &C_data)
 
template<typename scalar_t , typename layout_t , typename data_t >
MFEM_HOST_DEVICE scalar_t TDet (const layout_t &a, const data_t &A)
 
template<AssignOp::Type Op, typename A_layout_t , typename A_data_t , typename D_data_t >
MFEM_HOST_DEVICE void TDet (const A_layout_t &a, const A_data_t &A, D_data_t &D)
 
template<typename scalar_t , typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t >
void TAdjugate (const A_layout_t &a, const A_data_t &A, const B_layout_t &b, B_data_t &B)
 
template<typename scalar_t , typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t >
MFEM_HOST_DEVICE scalar_t TAdjDet (const A_layout_t &a, const A_data_t &A, const B_layout_t &b, B_data_t &B)
 
template<AssignOp::Type Op, typename A_layout_t , typename A_data_t , typename scalar_t >
MFEM_HOST_DEVICE void TAssign (const A_layout_t &A_layout, A_data_t &A_data, scalar_t value)
 
template<AssignOp::Type Op, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t >
void TAssign (const A_layout_t &A_layout, A_data_t &A_data, const B_layout_t &B_layout, const B_data_t &B_data)
 
template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void Mult_1_2 (const A_layout_t &A_layout, const A_data_t &A_data, const B_layout_t &B_layout, const B_data_t &B_data, const C_layout_t &C_layout, C_data_t &C_data)
 
template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void Mult_2_1 (const A_layout_t &A_layout, const A_data_t &A_data, const B_layout_t &B_layout, const B_data_t &B_data, const C_layout_t &C_layout, C_data_t &C_data)
 
template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void TensorAssemble (const A_layout_t &A_layout, const A_data_t &A_data, const B_layout_t &B_layout, const B_data_t &B_data, const C_layout_t &C_layout, C_data_t &C_data)
 
template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t , typename D_layout_t , typename D_data_t >
MFEM_ALWAYS_INLINE void TensorAssemble (const A_layout_t &A_layout, const A_data_t &A_data, const B_layout_t &B_layout, const B_data_t &B_data, const C_layout_t &C_layout, const C_data_t &C_data, const D_layout_t &D_layout, D_data_t &D_data)
 
template<AssignOp::Type Op, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void TensorProduct (const A_layout_t &a, const A_data_t &A, const B_layout_t &b, const B_data_t &B, const C_layout_t &c, C_data_t &C)
 
void add (const Vector &v1, const Vector &v2, Vector &v)
 
void add (const Vector &v1, double alpha, const Vector &v2, Vector &v)
 
void add (const double a, const Vector &x, const Vector &y, Vector &z)
 
void add (const double a, const Vector &x, const double b, const Vector &y, Vector &z)
 
void subtract (const Vector &x, const Vector &y, Vector &z)
 
void subtract (const double a, const Vector &x, const Vector &y, Vector &z)
 
int CheckFinite (const double *v, const int n)
 
double infinity ()
 Define a shortcut for std::numeric_limits<double>::infinity() More...
 
bool IsFinite (const double &val)
 
template<>
void Swap< Vector > (Vector &a, Vector &b)
 Specialization of the template function Swap<> for class Vector. More...
 
double DistanceSquared (const double *x, const double *y, const int n)
 
double Distance (const double *x, const double *y, const int n)
 
double InnerProduct (const Vector &x, const Vector &y)
 Returns the inner product of x and y. More...
 
double InnerProduct (MPI_Comm comm, const Vector &x, const Vector &y)
 Returns the inner product of x and y in parallel. More...
 
void XYZ_VectorFunction (const Vector &p, Vector &v)
 
void FindPartitioningComponents (Table &elem_elem, const Array< int > &partitioning, Array< int > &component, Array< int > &num_comp)
 
void DetOfLinComb (const DenseMatrix &A, const DenseMatrix &B, Vector &c)
 
int FindRoots (const Vector &z, Vector &x)
 
void FindTMax (Vector &c, Vector &x, double &tmax, const double factor, const int Dim)
 
template<typename T >
void WriteBinaryOrASCII (std::ostream &out, std::vector< char > &buf, const T &val, const char *suffix, VTKFormat format)
 
template<>
void WriteBinaryOrASCII< uint8_t > (std::ostream &out, std::vector< char > &buf, const uint8_t &val, const char *suffix, VTKFormat format)
 
template<>
void WriteBinaryOrASCII< double > (std::ostream &out, std::vector< char > &buf, const double &val, const char *suffix, VTKFormat format)
 
template<>
void WriteBinaryOrASCII< float > (std::ostream &out, std::vector< char > &buf, const float &val, const char *suffix, VTKFormat format)
 
void WriteBase64WithSizeAndClear (std::ostream &out, std::vector< char > &buf, int compression_level)
 
std::ostream & operator<< (std::ostream &out, const Mesh &mesh)
 
MeshExtrude1D (Mesh *mesh, const int ny, const double sy, const bool closed=false)
 Extrude a 1D mesh. More...
 
MeshExtrude2D (Mesh *mesh, const int nz, const double sz)
 Extrude a 2D mesh. More...
 
void ShiftRight (int &a, int &b, int &c)
 
bool CubeFaceLeft (int node, int *n)
 
bool CubeFaceRight (int node, int *n)
 
bool CubeFaceFront (int node, int *n)
 
bool CubeFaceBack (int node, int *n)
 
bool CubeFaceBottom (int node, int *n)
 
bool CubeFaceTop (int node, int *n)
 
bool PrismFaceBottom (int node, int *n)
 
bool PrismFaceTop (int node, int *n)
 
NURBSPatchInterpolate (NURBSPatch &p1, NURBSPatch &p2)
 
NURBSPatchRevolve3D (NURBSPatch &patch, double n[], double ang, int times)
 
bool operator< (const ParNCMesh::CommGroup &lhs, const ParNCMesh::CommGroup &rhs)
 
bool operator< (const NCMesh::MeshId &a, const NCMesh::MeshId &b)
 
bool operator== (const NCMesh::MeshId &a, const NCMesh::MeshId &b)
 
int BarycentricToVTKTriangle (int *b, int ref)
 
int BarycentricToVTKTetra (int *b, int ref)
 
int VTKTriangleDOFOffset (int ref, int i, int j)
 
int CartesianToVTKPrism (int i, int j, int k, int ref)
 
int CartesianToVTKTensor (int idx_in, int ref, Geometry::Type geom)
 
void CreateVTKElementConnectivity (Array< int > &con, Geometry::Type geom, int ref)
 
void WriteVTKEncodedCompressed (std::ostream &out, const void *bytes, uint32_t nbytes, int compression_level)
 
bool IsBigEndian ()
 
const char * VTKByteOrder ()
 
double LpNormLoop (double p, Coefficient &coeff, Mesh &mesh, const IntegrationRule *irs[])
 
double LpNormLoop (double p, VectorCoefficient &coeff, Mesh &mesh, const IntegrationRule *irs[])
 
double ComputeLpNorm (double p, Coefficient &coeff, Mesh &mesh, const IntegrationRule *irs[])
 
double ComputeLpNorm (double p, VectorCoefficient &coeff, Mesh &mesh, const IntegrationRule *irs[])
 
double ComputeGlobalLpNorm (double p, Coefficient &coeff, ParMesh &pmesh, const IntegrationRule *irs[])
 
double ComputeGlobalLpNorm (double p, VectorCoefficient &coeff, ParMesh &pmesh, const IntegrationRule *irs[])
 
void InvertLinearTrans (ElementTransformation &trans, const IntegrationPoint &pt, Vector &x)
 
H1_WedgeElement WedgeFE (1)
 
template<>
void Ordering::DofsToVDofs< Ordering::byNODES > (int ndofs, int vdim, Array< int > &dofs)
 
template<>
void Ordering::DofsToVDofs< Ordering::byVDIM > (int ndofs, int vdim, Array< int > &dofs)
 
template<>
int Ordering::Map< Ordering::byNODES > (int ndofs, int vdim, int dof, int vd)
 
template<>
int Ordering::Map< Ordering::byVDIM > (int ndofs, int vdim, int dof, int vd)
 
bool UsesTensorBasis (const FiniteElementSpace &fes)
 
std::ostream & operator<< (std::ostream &out, const GridFunction &sol)
 
std::ostream & operator<< (std::ostream &out, const QuadratureFunction &qf)
 Overload operator<< for std::ostream and QuadratureFunction. More...
 
double ZZErrorEstimator (BilinearFormIntegrator &blfi, GridFunction &u, GridFunction &flux, Vector &error_estimates, Array< int > *aniso_flags, int with_subdomains, bool with_coeff)
 
double ComputeElementLpDistance (double p, int i, GridFunction &gf1, GridFunction &gf2)
 Compute the Lp distance between two grid functions on the given element. More...
 
GridFunctionExtrude1DGridFunction (Mesh *mesh, Mesh *mesh2d, GridFunction *sol, const int ny)
 Extrude a scalar 1D GridFunction, after extruding the mesh with Extrude1D. More...
 
double GlobalLpNorm (const double p, double loc_norm, MPI_Comm comm)
 Compute a global Lp norm from the local Lp norms computed by each processor. More...
 
double L2ZZErrorEstimator (BilinearFormIntegrator &flux_integrator, const ParGridFunction &x, ParFiniteElementSpace &smooth_flux_fes, ParFiniteElementSpace &flux_fes, Vector &errors, int norm_p, double solver_tol, int solver_max_it)
 
void GetFaceDofs (const int dim, const int face_id, const int dof1d, Array< int > &faceMap)
 Return the face degrees of freedom returned in Lexicographic order. More...
 
int PermuteFaceL2 (const int dim, const int face_id1, const int face_id2, const int orientation, const int size1d, const int index)
 Permute dofs or quads on a face for e2 to match with the ordering of e1. More...
 
int ToLexOrdering (const int dim, const int face_id, const int size1d, const int index)
 
template<typename real_t >
void CalcShapeMatrix (const FiniteElement &fe, const IntegrationRule &ir, real_t *B, const Array< int > *dof_map=NULL)
 
template<typename real_t >
void CalcGradTensor (const FiniteElement &fe, const IntegrationRule &ir, real_t *G, const Array< int > *dof_map=NULL)
 
template<typename real_t >
void CalcShapes (const FiniteElement &fe, const IntegrationRule &ir, real_t *B, real_t *G, const Array< int > *dof_map)
 
void InterpolateTMOP_QualityMetric (TMOP_QualityMetric &metric, const TargetConstructor &tc, const Mesh &mesh, GridFunction &metric_gf)
 Interpolates the metric's values at the nodes of metric_gf. More...
 
void vis_tmop_metric_p (int order, TMOP_QualityMetric &qm, const TargetConstructor &tc, ParMesh &pmesh, char *title, int position)
 
void vis_tmop_metric_s (int order, TMOP_QualityMetric &qm, const TargetConstructor &tc, Mesh &mesh, char *title, int position)
 
MFEM "global" communicator functions.

Functions for getting and setting the MPI communicator used by the library as the "global" communicator.

This "global" communicator is used for example in the function mfem_error(), which is invoked when an error is detected - the "global" communicator is used as a parameter to MPI_Abort() to terminate all "global" tasks.

MPI_Comm GetGlobalMPI_Comm ()
 Get MFEM's "global" MPI communicator. More...
 
void SetGlobalMPI_Comm (MPI_Comm comm)
 Set MFEM's "global" MPI communicator. More...
 

Variables

const int MAX_D1D = 14
 
const int MAX_Q1D = 14
 
OutStream out (std::cout)
 Global stream used by the library for standard output. Initially it uses the same std::streambuf as std::cout, however that can be changed. More...
 
OutStream err (std::cerr)
 Global stream used by the library for standard error output. Initially it uses the same std::streambuf as std::cerr, however that can be changed. More...
 
MPI_Comm MFEM_COMM_WORLD = MPI_COMM_WORLD
 
MemoryManager mm
 The (single) global memory manager object. More...
 
const char * MemoryTypeName [MemoryTypeSize]
 Memory type names, used during Device:: configuration. More...
 
constexpr int MemoryTypeSize = static_cast<int>(MemoryType::SIZE)
 Static casts to 'int' and sizes of some useful memory types. More...
 
constexpr int HostMemoryType = static_cast<int>(MemoryType::HOST)
 
constexpr int HostMemoryTypeSize = static_cast<int>(MemoryType::DEVICE)
 
constexpr int DeviceMemoryType = static_cast<int>(MemoryType::MANAGED)
 
constexpr int DeviceMemoryTypeSize = MemoryTypeSize - DeviceMemoryType
 
StopWatch tic_toc
 
TriLinear3DFiniteElement HexahedronFE
 
const RefCoord T_HALF = (1ll << 59)
 
const RefCoord T_ONE = (1ll << 60)
 
const RefCoord T_TWO = (1ll << 61)
 
const RefCoord S_HALF = 1
 
const RefCoord S_ONE = 2
 
const RefCoord S_TWO = 4
 
PointFiniteElement PointFE
 
BiLinear2DFiniteElement QuadrilateralFE
 
Linear1DFiniteElement SegmentFE
 
class Linear3DFiniteElement TetrahedronFE
 
Linear2DFiniteElement TriangleFE
 
class H1_WedgeElement WedgeFE
 
constexpr int HCURL_MAX_D1D = 5
 
constexpr int HCURL_MAX_Q1D = 6
 
Poly_1D poly1d
 
Geometry Geometries
 
GeometryRefiner GlobGeometryRefiner
 
IntegrationRules IntRules (0, Quadrature1D::GaussLegendre)
 A global object with all integration rules (defined in intrules.cpp) More...
 
IntegrationRules RefinedIntRules (1, Quadrature1D::GaussLegendre)
 A global object with all refined integration rules. More...
 

Typedef Documentation

Definition at line 140 of file dtensor.hpp.

typedef DeviceTensor<2,double> mfem::DeviceMatrix

Definition at line 142 of file dtensor.hpp.

typedef DeviceTensor<1,double> mfem::DeviceVector

Definition at line 141 of file dtensor.hpp.

Declare an alternative name for L2_FECollection = DG_FECollection.

Definition at line 188 of file fe_coll.hpp.

typedef std::pair<int,int> mfem::occa_id_t

Definition at line 78 of file occa.hpp.

typedef std::map<occa_id_t, occa::kernel> mfem::occa_kernel_t

Definition at line 79 of file occa.hpp.

Add an alternative name for OperatorHandle – OperatorPtr.

Definition at line 198 of file handle.hpp.

Definition at line 91 of file ncmesh_tables.hpp.

typedef RefCoord mfem::RefPoint[3]

Definition at line 140 of file ncmesh_tables.hpp.

Enumeration Type Documentation

enum mfem::AssemblyLevel
strong

Enumeration defining the assembly level for bilinear and nonlinear form classes derived from Operator.

Enumerator
FULL 

Fully assembled form, i.e. a global sparse matrix in MFEM, Hypre or PETSC format.

ELEMENT 

Form assembled at element level, which computes and stores dense element matrices.

PARTIAL 

Partially-assembled form, which computes and stores data only at quadrature points.

NONE 

"Matrix-free" form that computes all of its action on-the-fly without any substantial storage.

Definition at line 30 of file bilinearform.hpp.

Constants describing the possible orderings of the DOFs in one element.

Enumerator
NATIVE 

Native ordering as defined by the FiniteElement.

This ordering can be used by tensor-product elements when the interpolation from the DOFs to quadrature points does not use the tensor-product structure.

LEXICOGRAPHIC 

Lexicographic ordering for tensor-product FiniteElements.

This ordering can be used only with tensor-product elements.

Definition at line 65 of file fespace.hpp.

Action to take when MFEM encounters an error.

Enumerator
MFEM_ERROR_ABORT 

Abort execution using abort() or MPI_Abort(). This is the default error action when the build option MFEM_USE_EXCEPTIONS is set to NO.

MFEM_ERROR_THROW 

Throw an ErrorException. Requires the build option MFEM_USE_EXCEPTIONS=YES in which case it is also the default error action.

Definition at line 23 of file error.hpp.

enum mfem::FaceType : bool
strong

An enum type to specify if interior or boundary faces are desired.

Enumerator
Interior 
Boundary 

Definition at line 42 of file mesh.hpp.

enum mfem::L2FaceValues : bool
strong

An enum type to specify if only e1 value is requested (SingleValued) or both e1 and e2 (DoubleValued).

Enumerator
SingleValued 
DoubleValued 

Definition at line 26 of file restriction.hpp.

enum mfem::MemoryClass
strong

Memory classes identify sets of memory types.

This type is used by kernels that can work with multiple MemoryTypes. For example, kernels that can use DEVICE or MANAGED memory types should use MemoryClass::DEVICE for their inputs.

Enumerator
HOST 

Memory types: { HOST, HOST_32, HOST_64, HOST_DEBUG, HOST_UMPIRE, MANAGED }

HOST_32 

Memory types: { HOST_32, HOST_64, HOST_DEBUG }.

HOST_64 

Memory types: { HOST_64, HOST_DEBUG }.

DEVICE 

Memory types: { DEVICE, DEVICE_DEBUG, DEVICE_UMPIRE, MANAGED }.

MANAGED 

Memory types: { MANAGED }.

Definition at line 57 of file mem_manager.hpp.

enum mfem::MemoryType
strong

Memory types supported by MFEM.

Enumerator
HOST 

Host memory; using new[] and delete[].

HOST_32 

Host memory; aligned at 32 bytes.

HOST_64 

Host memory; aligned at 64 bytes.

HOST_DEBUG 

Host memory; allocated from a "host-debug" pool.

HOST_UMPIRE 

Host memory; using Umpire.

MANAGED 

Managed memory; using CUDA or HIP *MallocManaged and *Free

DEVICE 

Device memory; using CUDA or HIP *Malloc and *Free.

DEVICE_DEBUG 

Pseudo-device memory; allocated on host from a "device-debug" pool

DEVICE_UMPIRE 

Device memory; using Umpire.

SIZE 

Number of host and device memory types.

Definition at line 27 of file mem_manager.hpp.

enum mfem::QVectorLayout
strong

Type describing possible layouts for Q-vectors.

Enumerator
byNODES 

NQPT x VDIM x NE.

byVDIM 

VDIM x NQPT x NE.

Definition at line 21 of file quadinterpolator.hpp.

enum mfem::VTKFormat
strong
Enumerator
ASCII 
BINARY 
BINARY32 

Definition at line 22 of file vtk.hpp.

Function Documentation

void mfem::add ( const Vector &  v1,
const Vector &  v2,
Vector &  v 
)

Definition at line 238 of file vector.cpp.

void mfem::add ( const Vector &  v1,
double  alpha,
const Vector &  v2,
Vector &  v 
)

Definition at line 260 of file vector.cpp.

void mfem::add ( const double  a,
const Vector &  x,
const Vector &  y,
Vector &  z 
)

Definition at line 296 of file vector.cpp.

void mfem::add ( const double  a,
const Vector &  x,
const double  b,
const Vector &  y,
Vector &  z 
)

Definition at line 333 of file vector.cpp.

HypreParMatrix * mfem::Add ( double  alpha,
const HypreParMatrix &  A,
double  beta,
const HypreParMatrix &  B 
)

Return a new matrix C = alpha*A + beta*B, assuming that both A and B use the same row and column partitions and the same col_map_offd arrays.

Definition at line 1593 of file hypre.cpp.

void mfem::Add ( const DenseMatrix &  A,
const DenseMatrix &  B,
double  alpha,
DenseMatrix &  C 
)

C = A + alpha*B.

Definition at line 1926 of file densemat.cpp.

void mfem::Add ( double  alpha,
const double *  A,
double  beta,
const double *  B,
DenseMatrix &  C 
)

C = alpha*A + beta*B.

Definition at line 1932 of file densemat.cpp.

void mfem::Add ( double  alpha,
const DenseMatrix &  A,
double  beta,
const DenseMatrix &  B,
DenseMatrix &  C 
)

C = alpha*A + beta*B.

Definition at line 1943 of file densemat.cpp.

SparseMatrix * mfem::Add ( double  a,
const SparseMatrix &  A,
double  b,
const SparseMatrix &  B 
)

Matrix addition result = a*A + b*B.

Definition at line 3423 of file sparsemat.cpp.

SparseMatrix * mfem::Add ( const SparseMatrix &  A,
const SparseMatrix &  B 
)

Matrix addition result = A + B.

Definition at line 3506 of file sparsemat.cpp.

SparseMatrix * mfem::Add ( Array< SparseMatrix * > &  Ai)

Matrix addition result = sum_i A_i.

Definition at line 3511 of file sparsemat.cpp.

void mfem::Add ( const SparseMatrix &  A,
double  alpha,
DenseMatrix &  B 
)

B += alpha * A.

Definition at line 3533 of file sparsemat.cpp.

void mfem::AddMult ( const DenseMatrix &  b,
const DenseMatrix &  c,
DenseMatrix &  a 
)

Matrix matrix multiplication. A += B * C.

Definition at line 2057 of file densemat.cpp.

void mfem::AddMult_a ( double  alpha,
const DenseMatrix &  b,
const DenseMatrix &  c,
DenseMatrix &  a 
)

Matrix matrix multiplication. A += alpha * B * C.

Definition at line 2024 of file densemat.cpp.

void mfem::AddMult_a_AAt ( double  a,
const DenseMatrix &  A,
DenseMatrix &  AAt 
)

AAt += a * A * A^t.

Definition at line 2705 of file densemat.cpp.

void mfem::AddMult_a_ABt ( double  a,
const DenseMatrix &  A,
const DenseMatrix &  B,
DenseMatrix &  ABt 
)

ABt += a * A * B^t.

Definition at line 2589 of file densemat.cpp.

void mfem::AddMult_a_VVt ( const double  a,
const Vector &  v,
DenseMatrix &  VVt 
)

VVt += a * v v^t.

Definition at line 2843 of file densemat.cpp.

void mfem::AddMult_a_VWt ( const double  a,
const Vector &  v,
const Vector &  w,
DenseMatrix &  VWt 
)

VWt += a * v w^t.

Definition at line 2821 of file densemat.cpp.

void mfem::AddMultABt ( const DenseMatrix &  A,
const DenseMatrix &  B,
DenseMatrix &  ABt 
)

ABt += A * B^t.

Definition at line 2496 of file densemat.cpp.

void mfem::AddMultADAt ( const DenseMatrix &  A,
const Vector &  D,
DenseMatrix &  ADAt 
)

ADAt += A D A^t, where D is diagonal.

Definition at line 2347 of file densemat.cpp.

void mfem::AddMultADBt ( const DenseMatrix &  A,
const Vector &  D,
const DenseMatrix &  B,
DenseMatrix &  ADBt 
)

ADBt = A D B^t, where D is diagonal.

Definition at line 2553 of file densemat.cpp.

void mfem::AddMultVVt ( const Vector &  v,
DenseMatrix &  VVt 
)

VVt += v v^t.

Definition at line 2797 of file densemat.cpp.

void mfem::AddMultVWt ( const Vector &  v,
const Vector &  w,
DenseMatrix &  VWt 
)

VWt += v w^t.

Definition at line 2776 of file densemat.cpp.

int mfem::aGMRES ( const Operator &  A,
Vector &  x,
const Vector &  b,
const Operator &  M,
int &  max_iter,
int  m_max,
int  m_min,
int  m_step,
double  cf,
double &  tol,
double &  atol,
int  printit 
)

Adaptive restarted GMRES. m_max and m_min(=1) are the maximal and minimal restart parameters. m_step(=1) is the step to use for going from m_max and m_min. cf(=0.4) is a desired convergence factor.

Definition at line 1418 of file solvers.cpp.

void mfem::ApplyPlaneRotation ( double &  dx,
double &  dy,
double &  cs,
double &  sn 
)
inline

Definition at line 566 of file solvers.cpp.

template<AssignOp::Type Op, typename lvalue_t , typename rvalue_t >
MFEM_HOST_DEVICE lvalue_t& mfem::Assign ( lvalue_t &  a,
const rvalue_t &  b 
)
inline

Definition at line 105 of file tassign.hpp.

int mfem::BarycentricToVTKTetra ( int *  b,
int  ref 
)

Definition at line 58 of file vtk.cpp.

int mfem::BarycentricToVTKTriangle ( int *  b,
int  ref 
)

Definition at line 21 of file vtk.cpp.

int mfem::BiCGSTAB ( const Operator &  A,
Vector &  x,
const Vector &  b,
Solver &  M,
int &  max_iter,
double &  tol,
double  atol,
int  printit 
)

BiCGSTAB method. (tolerances are squared)

Definition at line 1107 of file solvers.cpp.

void mfem::BiCGSTAB ( const Operator &  A,
Solver &  B,
const Vector &  b,
Vector &  x,
int  print_iter,
int  max_num_iter,
double  rtol,
double  atol 
)

BiCGSTAB method. (tolerances are squared)

Definition at line 1123 of file solvers.cpp.

template<int bA1, int bA2, int bB2, bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void mfem::bMult_AB ( const A_layout_t &  A_layout,
const A_data_t &  A_data,
const B_layout_t &  B_layout,
const B_data_t &  B_data,
const C_layout_t &  C_layout,
C_data_t &  C_data 
)
inline

Definition at line 77 of file tmatrix.hpp.

void mfem::CalcAdjugate ( const DenseMatrix &  a,
DenseMatrix &  adja 
)

Calculate the adjugate of a matrix (for NxN matrices, N=1,2,3) or the matrix adj(A^t.A).A^t for rectangular matrices (2x1, 3x1, or 3x2). This operation is well defined even when the matrix is not full rank.

Definition at line 2089 of file densemat.cpp.

void mfem::CalcAdjugateTranspose ( const DenseMatrix &  a,
DenseMatrix &  adjat 
)

Calculate the transposed adjugate of a matrix (for NxN matrices, N=1,2,3)

Definition at line 2161 of file densemat.cpp.

template<typename real_t >
void mfem::CalcGradTensor ( const FiniteElement &  fe,
const IntegrationRule &  ir,
real_t *  G,
const Array< int > *  dof_map = NULL 
)

Definition at line 45 of file tfe.hpp.

void mfem::CalcInverse ( const DenseMatrix &  a,
DenseMatrix &  inva 
)

Calculate the inverse of a matrix (for NxN matrices, N=1,2,3) or the left inverse (A^t.A)^{-1}.A^t (for 2x1, 3x1, or 3x2 matrices)

Definition at line 2197 of file densemat.cpp.

void mfem::CalcInverseTranspose ( const DenseMatrix &  a,
DenseMatrix &  inva 
)

Calculate the inverse transpose of a matrix (for NxN matrices, N=1,2,3)

Definition at line 2264 of file densemat.cpp.

void mfem::CalcOrtho ( const DenseMatrix &  J,
Vector &  n 
)

For a given Nx(N-1) (N=2,3) matrix J, compute a vector n such that n_k = (-1)^{k+1} det(J_k), k=1,..,N, where J_k is the matrix J with the k-th row removed. Note: J^t.n = 0, det([n|J])=|n|^2=det(J^t.J).

Definition at line 2303 of file densemat.cpp.

template<typename real_t >
void mfem::CalcShapeMatrix ( const FiniteElement &  fe,
const IntegrationRule &  ir,
real_t *  B,
const Array< int > *  dof_map = NULL 
)

Definition at line 24 of file tfe.hpp.

template<typename real_t >
void mfem::CalcShapes ( const FiniteElement &  fe,
const IntegrationRule &  ir,
real_t *  B,
real_t *  G,
const Array< int > *  dof_map 
)

Definition at line 70 of file tfe.hpp.

int mfem::CartesianToVTKPrism ( int  i,
int  j,
int  k,
int  ref 
)

Definition at line 146 of file vtk.cpp.

int mfem::CartesianToVTKTensor ( int  idx_in,
int  ref,
Geometry::Type  geom 
)

Definition at line 241 of file vtk.cpp.

void mfem::CG ( const Operator &  A,
const Vector &  b,
Vector &  x,
int  print_iter,
int  max_num_iter,
double  RTOLERANCE,
double  ATOLERANCE 
)

Conjugate gradient method. (tolerances are squared)

Definition at line 516 of file solvers.cpp.

int mfem::CheckFinite ( const double *  v,
const int  n 
)
inline

Count the number of entries in an array of doubles for which isfinite is false, i.e. the entry is a NaN or +/-Inf.

Definition at line 383 of file vector.hpp.

double mfem::ComputeElementLpDistance ( double  p,
int  i,
GridFunction &  gf1,
GridFunction &  gf2 
)

Compute the Lp distance between two grid functions on the given element.

Definition at line 3085 of file gridfunc.cpp.

double mfem::ComputeGlobalLpNorm ( double  p,
Coefficient &  coeff,
ParMesh &  pmesh,
const IntegrationRule *  irs[] 
)

Compute the global Lp norm of a function f. \( \| f \|_{Lp} = ( \int_\Omega | f |^p d\Omega)^{1/p} \)

Definition at line 700 of file coefficient.cpp.

double mfem::ComputeGlobalLpNorm ( double  p,
VectorCoefficient &  coeff,
ParMesh &  pmesh,
const IntegrationRule *  irs[] 
)

Compute the global Lp norm of a vector function f = {f_i}_i=1...N. \( \| f \|_{Lp} = ( \sum_i \| f_i \|_{Lp}^p )^{1/p} \)

Definition at line 730 of file coefficient.cpp.

double mfem::ComputeLpNorm ( double  p,
Coefficient &  coeff,
Mesh &  mesh,
const IntegrationRule *  irs[] 
)

Compute the Lp norm of a function f. \( \| f \|_{Lp} = ( \int_\Omega | f |^p d\Omega)^{1/p} \)

Definition at line 657 of file coefficient.cpp.

double mfem::ComputeLpNorm ( double  p,
VectorCoefficient &  coeff,
Mesh &  mesh,
const IntegrationRule *  irs[] 
)

Compute the Lp norm of a vector function f = {f_i}_i=1...N. \( \| f \|_{Lp} = ( \sum_i \| f_i \|_{Lp}^p )^{1/p} \)

Definition at line 678 of file coefficient.cpp.

void mfem::CreateVTKElementConnectivity ( Array< int > &  con,
Geometry::Type  geom,
int  ref 
)

Create the VTK element connectivity array for a given element geometry and refinement level. Converts node numbers from MFEM to VTK ordering.

Definition at line 357 of file vtk.cpp.

bool mfem::CubeFaceBack ( int  node,
int *  n 
)
inline

Definition at line 601 of file ncmesh.cpp.

bool mfem::CubeFaceBottom ( int  node,
int *  n 
)
inline

Definition at line 604 of file ncmesh.cpp.

bool mfem::CubeFaceFront ( int  node,
int *  n 
)
inline

Definition at line 598 of file ncmesh.cpp.

bool mfem::CubeFaceLeft ( int  node,
int *  n 
)
inline

Definition at line 592 of file ncmesh.cpp.

bool mfem::CubeFaceRight ( int  node,
int *  n 
)
inline

Definition at line 595 of file ncmesh.cpp.

bool mfem::CubeFaceTop ( int  node,
int *  n 
)
inline

Definition at line 607 of file ncmesh.cpp.

void mfem::CuCheckLastError ( )

Check the error code returned by cudaGetLastError(), aborting on error.

Definition at line 148 of file cuda.cpp.

int mfem::CuGetDeviceCount ( )

Get the number of CUDA devices.

Definition at line 155 of file cuda.cpp.

void * mfem::CuMallocManaged ( void **  dptr,
size_t  bytes 
)

Allocates managed device memory.

Definition at line 49 of file cuda.cpp.

void * mfem::CuMemAlloc ( void **  dptr,
size_t  bytes 
)

Allocates device memory.

Definition at line 34 of file cuda.cpp.

void * mfem::CuMemcpyDtoD ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Device to Device.

Definition at line 102 of file cuda.cpp.

void * mfem::CuMemcpyDtoDAsync ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Device to Device.

Definition at line 117 of file cuda.cpp.

void * mfem::CuMemcpyDtoH ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Device to Host.

Definition at line 125 of file cuda.cpp.

void * mfem::CuMemcpyDtoHAsync ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Device to Host.

Definition at line 140 of file cuda.cpp.

void * mfem::CuMemcpyHtoD ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Host to Device.

Definition at line 79 of file cuda.cpp.

void * mfem::CuMemcpyHtoDAsync ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Host to Device.

Definition at line 94 of file cuda.cpp.

void * mfem::CuMemFree ( void *  dptr)

Frees device memory.

Definition at line 64 of file cuda.cpp.

template<const int BLCK = MFEM_CUDA_BLOCKS, typename DBODY >
void mfem::CuWrap1D ( const int  N,
DBODY &&  d_body 
)

Definition at line 212 of file forall.hpp.

template<typename DBODY >
void mfem::CuWrap2D ( const int  N,
DBODY &&  d_body,
const int  X,
const int  Y,
const int  BZ 
)

Definition at line 221 of file forall.hpp.

template<typename DBODY >
void mfem::CuWrap3D ( const int  N,
DBODY &&  d_body,
const int  X,
const int  Y,
const int  Z 
)

Definition at line 233 of file forall.hpp.

class if mfem::defined ( __alignas_is_defined  )

Definition at line 28 of file sparsemat.hpp.

void mfem::delete_hypre_CSRMatrixData ( hypre_CSRMatrix *  M)
inline

Definition at line 1514 of file hypre.cpp.

void mfem::delete_hypre_CSRMatrixI ( hypre_CSRMatrix *  M)
inline

Definition at line 1527 of file hypre.cpp.

void mfem::delete_hypre_CSRMatrixJ ( hypre_CSRMatrix *  M)
inline

Definition at line 1534 of file hypre.cpp.

void mfem::delete_hypre_ParCSRMatrixColMapOffd ( hypre_ParCSRMatrix *  A)
inline

Definition at line 1520 of file hypre.cpp.

void mfem::DetOfLinComb ( const DenseMatrix &  A,
const DenseMatrix &  B,
Vector &  c 
)

Definition at line 5785 of file mesh.cpp.

bool mfem::DeviceCanUseOcca ( )
inline

Function that determines if an OCCA kernel should be used, based on the current mfem::Device configuration.

Definition at line 69 of file occa.hpp.

HypreParMatrix* mfem::DiscreteCurl ( ParFiniteElementSpace *  face_fespace,
ParFiniteElementSpace *  edge_fespace 
)

Compute the discrete curl matrix between the ND1 and RT0 spaces.

HypreParMatrix* mfem::DiscreteGrad ( ParFiniteElementSpace *  edge_fespace,
ParFiniteElementSpace *  vert_fespace 
)

Compute the discrete gradient matrix between the nodal linear and ND1 spaces.

double mfem::Distance ( const double *  x,
const double *  y,
const int  n 
)
inline

Definition at line 532 of file vector.hpp.

double mfem::DistanceSquared ( const double *  x,
const double *  y,
const int  n 
)
inline

Definition at line 520 of file vector.hpp.

void mfem::dsyev_Eigensystem ( DenseMatrix &  a,
Vector &  ev,
DenseMatrix *  evect 
)

Definition at line 1015 of file densemat.cpp.

void mfem::dsyevr_Eigensystem ( DenseMatrix &  a,
Vector &  ev,
DenseMatrix *  evect 
)

Definition at line 852 of file densemat.cpp.

void mfem::dsygv_Eigensystem ( DenseMatrix &  a,
DenseMatrix &  b,
Vector &  ev,
DenseMatrix *  evect 
)

Definition at line 1089 of file densemat.cpp.

void mfem::EliminateBC ( HypreParMatrix &  A,
HypreParMatrix &  Ae,
const Array< int > &  ess_dof_list,
const Vector &  X,
Vector &  B 
)

Eliminate essential BC specified by 'ess_dof_list' from the solution X to the r.h.s. B. Here A is a matrix with eliminated BC, while Ae is such that (A+Ae) is the original (Neumann) matrix before elimination.

Definition at line 1690 of file hypre.cpp.

void mfem::EliminateBC ( PetscParMatrix &  A,
PetscParMatrix &  Ae,
const Array< int > &  ess_dof_list,
const Vector &  X,
Vector &  B 
)

Eliminate essential BC specified by ess_dof_list from the solution X to the r.h.s. B.

Here, A is a matrix with eliminated BC, while Ae is such that (A + Ae) is the original (Neumann) matrix before elimination.

Definition at line 1734 of file petsc.cpp.

Mesh * mfem::Extrude1D ( Mesh *  mesh,
const int  ny,
const double  sy,
const bool  closed 
)

Extrude a 1D mesh.

Definition at line 10373 of file mesh.cpp.

GridFunction * mfem::Extrude1DGridFunction ( Mesh *  mesh,
Mesh *  mesh2d,
GridFunction *  sol,
const int  ny 
)

Extrude a scalar 1D GridFunction, after extruding the mesh with Extrude1D.

Definition at line 3152 of file gridfunc.cpp.

Mesh * mfem::Extrude2D ( Mesh *  mesh,
const int  nz,
const double  sz 
)

Extrude a 2D mesh.

Definition at line 10533 of file mesh.cpp.

void mfem::filter_dos ( std::string &  line)
inline

Definition at line 41 of file text.hpp.

void mfem::FindPartitioningComponents ( Table &  elem_elem,
const Array< int > &  partitioning,
Array< int > &  component,
Array< int > &  num_comp 
)

Definition at line 5657 of file mesh.cpp.

int mfem::FindRoots ( const Vector &  z,
Vector &  x 
)

Definition at line 5865 of file mesh.cpp.

void mfem::FindTMax ( Vector &  c,
Vector &  x,
double &  tmax,
const double  factor,
const int  Dim 
)

Definition at line 6012 of file mesh.cpp.

template<const int DIM, typename DBODY , typename HBODY >
void mfem::ForallWrap ( const bool  use_dev,
const int  N,
DBODY &&  d_body,
HBODY &&  h_body,
const int  X = 0,
const int  Y = 0,
const int  Z = 0 
)
inline

The forall kernel body wrapper.

Definition at line 309 of file forall.hpp.

void mfem::GeneratePlaneRotation ( double &  dx,
double &  dy,
double &  cs,
double &  sn 
)
inline

Definition at line 544 of file solvers.cpp.

ErrorAction mfem::get_error_action ( )

Get the action MFEM takes when an error is encountered.

Definition at line 72 of file error.cpp.

const char * mfem::GetConfigStr ( )

Definition at line 66 of file version.cpp.

void mfem::GetFaceDofs ( const int  dim,
const int  face_id,
const int  dof1d,
Array< int > &  faceMap 
)

Return the face degrees of freedom returned in Lexicographic order.

Definition at line 227 of file restriction.cpp.

const char * mfem::GetGitStr ( )

Definition at line 59 of file version.cpp.

MPI_Comm mfem::GetGlobalMPI_Comm ( )

Get MFEM's "global" MPI communicator.

Definition at line 62 of file globals.cpp.

template<typename T >
MemoryClass mfem::GetMemoryClass ( const Memory< T > &  mem,
bool  on_dev 
)

Return the memory class to be used by the functions Read(), Write(), and ReadWrite(), while setting the device use flag in mem, if on_dev is true.

Definition at line 277 of file device.hpp.

MemoryType mfem::GetMemoryType ( MemoryClass  mc)

Return a suitable MemoryType for a given MemoryClass.

Definition at line 49 of file mem_manager.cpp.

int mfem::GetVersion ( )

Definition at line 22 of file version.cpp.

int mfem::GetVersionMajor ( )

Definition at line 28 of file version.cpp.

int mfem::GetVersionMinor ( )

Definition at line 34 of file version.cpp.

int mfem::GetVersionPatch ( )

Definition at line 40 of file version.cpp.

const char * mfem::GetVersionStr ( )

Definition at line 46 of file version.cpp.

double mfem::GlobalLpNorm ( const double  p,
double  loc_norm,
MPI_Comm  comm 
)

Compute a global Lp norm from the local Lp norms computed by each processor.

Definition at line 633 of file pgridfunc.cpp.

int mfem::GMRES ( const Operator &  A,
Vector &  x,
const Vector &  b,
Solver &  M,
int &  max_iter,
int  m,
double &  tol,
double  atol,
int  printit 
)

GMRES method. (tolerances are squared)

Definition at line 942 of file solvers.cpp.

void mfem::GMRES ( const Operator &  A,
Solver &  B,
const Vector &  b,
Vector &  x,
int  print_iter,
int  max_num_iter,
int  m,
double  rtol,
double  atol 
)

GMRES method. (tolerances are squared)

Definition at line 959 of file solvers.cpp.

void mfem::HipCheckLastError ( )

Check the error code returned by hipGetLastError(), aborting on error.

Definition at line 148 of file hip.cpp.

int mfem::HipGetDeviceCount ( )

Get the number of HIP devices.

Definition at line 155 of file hip.cpp.

void * mfem::HipMallocManaged ( void **  dptr,
size_t  bytes 
)

Allocates managed device memory.

Definition at line 49 of file hip.cpp.

void * mfem::HipMemAlloc ( void **  dptr,
size_t  bytes 
)

Allocates device memory.

Definition at line 34 of file hip.cpp.

void * mfem::HipMemcpyDtoD ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Device to Device.

Definition at line 102 of file hip.cpp.

void * mfem::HipMemcpyDtoDAsync ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Device to Device.

Definition at line 117 of file hip.cpp.

void * mfem::HipMemcpyDtoH ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Device to Host.

Definition at line 125 of file hip.cpp.

void * mfem::HipMemcpyDtoHAsync ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Device to Host.

Definition at line 140 of file hip.cpp.

void * mfem::HipMemcpyHtoD ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Host to Device.

Definition at line 79 of file hip.cpp.

void * mfem::HipMemcpyHtoDAsync ( void *  dst,
const void *  src,
size_t  bytes 
)

Copies memory from Host to Device.

Definition at line 94 of file hip.cpp.

void * mfem::HipMemFree ( void *  dptr)

Frees device memory.

Definition at line 64 of file hip.cpp.

template<const int BLCK = MFEM_HIP_BLOCKS, typename DBODY >
void mfem::HipWrap1D ( const int  N,
DBODY &&  d_body 
)

Definition at line 274 of file forall.hpp.

template<typename DBODY >
void mfem::HipWrap2D ( const int  N,
DBODY &&  d_body,
const int  X,
const int  Y,
const int  BZ 
)

Definition at line 283 of file forall.hpp.

template<typename DBODY >
void mfem::HipWrap3D ( const int  N,
DBODY &&  d_body,
const int  X,
const int  Y,
const int  Z 
)

Definition at line 294 of file forall.hpp.

template<typename T >
const T* mfem::HostRead ( const Memory< T > &  mem,
int  size 
)
inline

Shortcut to Read(const Memory<T> &mem, int size, false)

Definition at line 302 of file device.hpp.

template<typename T >
T* mfem::HostReadWrite ( Memory< T > &  mem,
int  size 
)
inline

Shortcut to ReadWrite(Memory<T> &mem, int size, false)

Definition at line 336 of file device.hpp.

template<typename T >
T* mfem::HostWrite ( Memory< T > &  mem,
int  size 
)
inline

Shortcut to Write(const Memory<T> &mem, int size, false)

Definition at line 319 of file device.hpp.

double mfem::infinity ( )
inline

Define a shortcut for std::numeric_limits<double>::infinity()

Definition at line 42 of file vector.hpp.

double mfem::InnerProduct ( HypreParVector *  x,
HypreParVector *  y 
)

Definition at line 246 of file hypre.cpp.

double mfem::InnerProduct ( HypreParVector &  x,
HypreParVector &  y 
)

Returns the inner product of x and y.

Definition at line 251 of file hypre.cpp.

double mfem::InnerProduct ( const Vector &  x,
const Vector &  y 
)
inline

Returns the inner product of x and y.

In parallel this computes the inner product of the local vectors, producing different results on each MPI rank.

Definition at line 551 of file vector.hpp.

double mfem::InnerProduct ( MPI_Comm  comm,
const Vector &  x,
const Vector &  y 
)
inline

Returns the inner product of x and y in parallel.

In parallel this computes the inner product of the global vectors, producing identical results on each MPI rank.

Definition at line 561 of file vector.hpp.

NURBSPatch* mfem::Interpolate ( NURBSPatch &  p1,
NURBSPatch &  p2 
)

Definition at line 1213 of file nurbs.cpp.

void mfem::InterpolateTMOP_QualityMetric ( TMOP_QualityMetric &  metric,
const TargetConstructor &  tc,
const Mesh &  mesh,
GridFunction &  metric_gf 
)

Interpolates the metric's values at the nodes of metric_gf.

Assumes that metric_gf's FiniteElementSpace is initialized.

Definition at line 1436 of file tmop.cpp.

void mfem::InvertLinearTrans ( ElementTransformation &  trans,
const IntegrationPoint &  pt,
Vector &  x 
)

Definition at line 570 of file fe.cpp.

bool mfem::IsBigEndian ( )

Definition at line 454 of file vtk.cpp.

bool mfem::IsDeviceMemory ( MemoryType  mt)
inline

Definition at line 69 of file mem_manager.hpp.

bool mfem::IsFinite ( const double &  val)
inline

Definition at line 372 of file vector.hpp.

bool mfem::IsHostMemory ( MemoryType  mt)
inline

Return true if the given memory type is in MemoryClass::HOST.

Definition at line 68 of file mem_manager.hpp.

bool mfem::IsIdentityProlongation ( const Operator *  P)
inline

Returns true if P is the identity prolongation, i.e. if it is either NULL or an IdentityOperator.

Definition at line 538 of file operator.hpp.

int mfem::isValidAsDouble ( char *  s)

Definition at line 50 of file optparser.cpp.

int mfem::isValidAsInt ( char *  s)

Definition at line 21 of file optparser.cpp.

void mfem::KdTreeSort ( int **  coords,
int  d,
int  dim,
int  size 
)

Definition at line 1337 of file communication.cpp.

double mfem::L2ZZErrorEstimator ( BilinearFormIntegrator &  flux_integrator,
const ParGridFunction &  x,
ParFiniteElementSpace &  smooth_flux_fes,
ParFiniteElementSpace &  flux_fes,
Vector &  errors,
int  norm_p = 2,
double  solver_tol = 1e-12,
int  solver_max_it = 200 
)

Performs a global L2 projection (through a HypreBoomerAMG solve) of flux from supplied discontinuous space into supplied smooth (continuous, or at least conforming) space, and computes the Lp norms of the differences between them on each element. This is one approach to handling conforming and non-conforming elements in parallel. Returns the total error estimate.

Definition at line 706 of file pgridfunc.cpp.

bool mfem::LinearSolve ( DenseMatrix &  A,
double *  X,
double  TOL = 1.e-9 
)

Solves the dense linear system, A * X = B for X

Parameters
[in,out]Athe square matrix for the linear system
[in,out]Xthe rhs vector, B, on input, the solution, X, on output.
[in]TOLoptional fuzzy comparison tolerance. Defaults to 1e-9.
Returns
status set to true if successful, otherwise, false.
Note
This routine may replace the contents of the input Matrix, A, with the corresponding LU factorization of the matrix. Matrices of size 1x1 and 2x2 are handled explicitly.
Precondition
A.IsSquare() == true
X != nullptr

Definition at line 1953 of file densemat.cpp.

double mfem::LpNormLoop ( double  p,
Coefficient &  coeff,
Mesh &  mesh,
const IntegrationRule *  irs[] 
)

Definition at line 584 of file coefficient.cpp.

double mfem::LpNormLoop ( double  p,
VectorCoefficient &  coeff,
Mesh &  mesh,
const IntegrationRule *  irs[] 
)

Definition at line 615 of file coefficient.cpp.

std::string mfem::MakeParFilename ( const std::string &  prefix,
const int  myid,
const std::string  suffix = "",
const int  width = 6 
)

Construct a string of the form "<prefix><myid><suffix>" where the integer myid is padded with leading zeros to be at least width digits long.

This is a convenience function, e.g. to redirect mfem::out to individual files for each rank, one can use:

std::ofstream out_file(MakeParFilename("app_out.", myid).c_str());
mfem::out.SetStream(out_file);

Definition at line 43 of file globals.cpp.

void mfem::MemoryPrintFlags ( unsigned  flags)

Print the state of a Memory object based on its internal flags. Useful in a debugger. See also Memory<T>::PrintFlags().

Definition at line 1352 of file mem_manager.cpp.

void mfem::mfem_backtrace ( int  mode,
int  depth 
)

Definition at line 83 of file error.cpp.

void mfem::mfem_cuda_error ( cudaError_t  err,
const char *  expr,
const char *  func,
const char *  file,
int  line 
)

Definition at line 23 of file cuda.cpp.

void mfem::mfem_error ( const char *  msg)

Function called when an error is encountered. Used by the macros MFEM_ABORT, MFEM_ASSERT, MFEM_VERIFY.

Definition at line 153 of file error.cpp.

void mfem::mfem_hip_error ( hipError_t  err,
const char *  expr,
const char *  func,
const char *  file,
int  line 
)

Definition at line 23 of file hip.cpp.

void mfem::mfem_warning ( const char *  msg)

Function called by the macro MFEM_WARNING.

Definition at line 186 of file error.cpp.

void mfem::MFEMFinalizePetsc ( )

Definition at line 182 of file petsc.cpp.

void mfem::MFEMInitializePetsc ( )

Convenience functions to initialize/finalize PETSc.

Definition at line 165 of file petsc.cpp.

void mfem::MFEMInitializePetsc ( int *  argc,
char ***  argv 
)

Definition at line 170 of file petsc.cpp.

void mfem::MFEMInitializePetsc ( int *  argc,
char ***  argv,
const char  rc_file[],
const char  help[] 
)

Definition at line 175 of file petsc.cpp.

void mfem::MinimumDiscardedFillOrdering ( SparseMatrix &  C,
Array< int > &  p 
)

Definition at line 1903 of file solvers.cpp.

void mfem::MINRES ( const Operator &  A,
const Vector &  b,
Vector &  x,
int  print_it,
int  max_it,
double  rtol,
double  atol 
)

MINRES method without preconditioner. (tolerances are squared)

Definition at line 1302 of file solvers.cpp.

void mfem::MINRES ( const Operator &  A,
Solver &  B,
const Vector &  b,
Vector &  x,
int  print_it,
int  max_it,
double  rtol,
double  atol 
)

MINRES method with preconditioner. (tolerances are squared)

Definition at line 1314 of file solvers.cpp.

void mfem::Mult ( const Table &  A,
const Table &  B,
Table &  C 
)

C = A * B (as boolean matrices)

Definition at line 476 of file table.cpp.

Table * mfem::Mult ( const Table &  A,
const Table &  B 
)

Definition at line 547 of file table.cpp.

BlockMatrix * mfem::Mult ( const BlockMatrix &  A,
const BlockMatrix &  B 
)

Multiply BlockMatrix matrices: result = A*B.

Definition at line 597 of file blockmatrix.cpp.

void mfem::Mult ( const DenseMatrix &  b,
const DenseMatrix &  c,
DenseMatrix &  a 
)

Matrix matrix multiplication. A = B * C.

Definition at line 2001 of file densemat.cpp.

SparseMatrix * mfem::Mult ( const SparseMatrix &  A,
const SparseMatrix &  B,
SparseMatrix *  OAB = NULL 
)

Matrix product A.B.

If OAB is not NULL, we assume it has the structure of A.B and store the result in OAB. If OAB is NULL, we create a new SparseMatrix to store the result and return a pointer to it.

All matrices must be finalized.

Definition at line 3113 of file sparsemat.cpp.

DenseMatrix * mfem::Mult ( const SparseMatrix &  A,
DenseMatrix &  B 
)

Matrix product A.B.

Definition at line 3346 of file sparsemat.cpp.

template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void mfem::Mult_1_2 ( const A_layout_t &  A_layout,
const A_data_t &  A_data,
const B_layout_t &  B_layout,
const B_data_t &  B_data,
const C_layout_t &  C_layout,
C_data_t &  C_data 
)
inline

Definition at line 397 of file ttensor.hpp.

template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void mfem::Mult_2_1 ( const A_layout_t &  A_layout,
const A_data_t &  A_data,
const B_layout_t &  B_layout,
const B_data_t &  B_data,
const C_layout_t &  C_layout,
C_data_t &  C_data 
)
inline

Definition at line 420 of file ttensor.hpp.

void mfem::Mult_a_AAt ( double  a,
const DenseMatrix &  A,
DenseMatrix &  AAt 
)

AAt = a * A * A^t.

Definition at line 2730 of file densemat.cpp.

template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void mfem::Mult_AB ( const A_layout_t &  A_layout,
const A_data_t &  A_data,
const B_layout_t &  B_layout,
const B_data_t &  B_data,
const C_layout_t &  C_layout,
C_data_t &  C_data 
)
inline

Definition at line 218 of file tmatrix.hpp.

SparseMatrix * mfem::Mult_AtDA ( const SparseMatrix &  A,
const Vector &  D,
SparseMatrix *  OAtDA 
)

Matrix multiplication A^t D A. All matrices must be finalized.

Definition at line 3404 of file sparsemat.cpp.

void mfem::MultAAt ( const DenseMatrix &  a,
DenseMatrix &  aat 
)

Calculate the matrix A.At.

Definition at line 2329 of file densemat.cpp.

SparseMatrix * mfem::MultAbstractSparseMatrix ( const AbstractSparseMatrix &  A,
const AbstractSparseMatrix &  B 
)

Matrix product of sparse matrices. A and B do not need to be CSR matrices.

Definition at line 3249 of file sparsemat.cpp.

void mfem::MultABt ( const DenseMatrix &  A,
const DenseMatrix &  B,
DenseMatrix &  ABt 
)

Multiply a matrix A with the transpose of a matrix B: A*Bt.

Definition at line 2391 of file densemat.cpp.

void mfem::MultADAt ( const DenseMatrix &  A,
const Vector &  D,
DenseMatrix &  ADAt 
)

ADAt = A D A^t, where D is diagonal.

Definition at line 2375 of file densemat.cpp.

void mfem::MultADBt ( const DenseMatrix &  A,
const Vector &  D,
const DenseMatrix &  B,
DenseMatrix &  ADBt 
)

ADBt = A D B^t, where D is diagonal.

Definition at line 2456 of file densemat.cpp.

void mfem::MultAtB ( const DenseMatrix &  A,
const DenseMatrix &  B,
DenseMatrix &  AtB 
)

Multiply the transpose of a matrix A with a matrix B: At*B.

Definition at line 2648 of file densemat.cpp.

void mfem::MultVVt ( const Vector &  v,
DenseMatrix &  vvt 
)

Make a matrix from a vector V.Vt.

Definition at line 2746 of file densemat.cpp.

void mfem::MultVWt ( const Vector &  v,
const Vector &  w,
DenseMatrix &  VWt 
)

Definition at line 2757 of file densemat.cpp.

occa::device & mfem::OccaDev ( )

Return the default occa::device used by MFEM.

Definition at line 27 of file occa.cpp.

template<typename T >
const occa::memory mfem::OccaMemoryRead ( const Memory< T > &  mem,
size_t  size 
)

Wrap a Memory object as occa::memory for read only access with the mfem::Device MemoryClass. The returned occa::memory is associated with the default occa::device used by MFEM.

Definition at line 37 of file occa.hpp.

template<typename T >
occa::memory mfem::OccaMemoryReadWrite ( Memory< T > &  mem,
size_t  size 
)

Wrap a Memory object as occa::memory for read-write access with the mfem::Device MemoryClass. The returned occa::memory is associated with the default occa::device used by MFEM.

Definition at line 59 of file occa.hpp.

occa::memory mfem::OccaMemoryWrap ( void *  ptr,
std::size_t  bytes 
)

Wrap a pointer as occa::memory with the default occa::device used by MFEM.

It is assumed that ptr is suitable for use with the current mfem::Device configuration.

Definition at line 29 of file occa.cpp.

template<typename T >
occa::memory mfem::OccaMemoryWrite ( Memory< T > &  mem,
size_t  size 
)

Wrap a Memory object as occa::memory for write only access with the mfem::Device MemoryClass. The returned occa::memory is associated with the default occa::device used by MFEM.

Definition at line 48 of file occa.hpp.

template<typename HBODY >
void mfem::OmpWrap ( const int  N,
HBODY &&  h_body 
)

OpenMP backend.

Definition at line 82 of file forall.hpp.

template<class T >
bool mfem::operator!= ( const Array< T > &  LHS,
const Array< T > &  RHS 
)
inline

Definition at line 309 of file array.hpp.

MemoryClass mfem::operator* ( MemoryClass  mc1,
MemoryClass  mc2 
)

Return a suitable MemoryClass from a pair of MemoryClasses.

Note: this operation is commutative, i.e. a*b = b*a, associative, i.e. (a*b)*c = a*(b*c), and has an identity element: MemoryClass::HOST.

Currently, the operation is defined as a*b := max(a,b) where the max operation is based on the enumeration ordering:

HOST < HOST_32 < HOST_64 < DEVICE < MANAGED.

Definition at line 97 of file mem_manager.cpp.

template<class A , class B >
bool mfem::operator< ( const Pair< A, B > &  p,
const Pair< A, B > &  q 
)

Comparison operator for class Pair, based on the first element only.

Definition at line 36 of file sort_pairs.hpp.

template<class A , class B , class C >
bool mfem::operator< ( const Triple< A, B, C > &  p,
const Triple< A, B, C > &  q 
)

Lexicographic comparison operator for class Triple.

Definition at line 72 of file sort_pairs.hpp.

bool mfem::operator< ( const ParNCMesh::CommGroup &  lhs,
const ParNCMesh::CommGroup &  rhs 
)

Definition at line 510 of file pncmesh.cpp.

bool mfem::operator< ( const NCMesh::MeshId &  a,
const NCMesh::MeshId &  b 
)
inline

Definition at line 551 of file pncmesh.hpp.

std::ostream & mfem::operator<< ( std::ostream &  out,
const GridFunction &  sol 
)

Overload operator<< for std::ostream and GridFunction; valid also for the derived class ParGridFunction

Definition at line 2947 of file gridfunc.cpp.

std::ostream & mfem::operator<< ( std::ostream &  out,
const QuadratureFunction &  qf 
)

Overload operator<< for std::ostream and QuadratureFunction.

Definition at line 2995 of file gridfunc.cpp.

std::ostream & mfem::operator<< ( std::ostream &  out,
const Mesh &  mesh 
)

Overload operator<< for std::ostream and Mesh; valid also for the derived class ParMesh

Definition at line 10127 of file mesh.cpp.

template<class A , class B >
bool mfem::operator== ( const Pair< A, B > &  p,
const Pair< A, B > &  q 
)

Equality operator for class Pair, based on the first element only.

Definition at line 43 of file sort_pairs.hpp.

template<class T >
bool mfem::operator== ( const Array< T > &  LHS,
const Array< T > &  RHS 
)
inline

Definition at line 298 of file array.hpp.

bool mfem::operator== ( const NCMesh::MeshId &  a,
const NCMesh::MeshId &  b 
)
inline

Definition at line 557 of file pncmesh.hpp.

template<>
void mfem::Ordering::DofsToVDofs< Ordering::byNODES > ( int  ndofs,
int  vdim,
Array< int > &  dofs 
)

Definition at line 29 of file fespace.cpp.

template<>
void mfem::Ordering::DofsToVDofs< Ordering::byVDIM > ( int  ndofs,
int  vdim,
Array< int > &  dofs 
)

Definition at line 44 of file fespace.cpp.

template<>
int mfem::Ordering::Map< Ordering::byNODES > ( int  ndofs,
int  vdim,
int  dof,
int  vd 
)
inline

Definition at line 50 of file fespace.hpp.

template<>
int mfem::Ordering::Map< Ordering::byVDIM > ( int  ndofs,
int  vdim,
int  dof,
int  vd 
)
inline

Definition at line 57 of file fespace.hpp.

DenseMatrix * mfem::OuterProduct ( const DenseMatrix &  A,
const DenseMatrix &  B 
)

Produces a block matrix with blocks A_{ij}*B.

Definition at line 3548 of file sparsemat.cpp.

SparseMatrix * mfem::OuterProduct ( const DenseMatrix &  A,
const SparseMatrix &  B 
)

Produces a block matrix with blocks A_{ij}*B.

Definition at line 3566 of file sparsemat.cpp.

SparseMatrix * mfem::OuterProduct ( const SparseMatrix &  A,
const DenseMatrix &  B 
)

Produces a block matrix with blocks A_{ij}*B.

Definition at line 3595 of file sparsemat.cpp.

SparseMatrix * mfem::OuterProduct ( const SparseMatrix &  A,
const SparseMatrix &  B 
)

Produces a block matrix with blocks A_{ij}*B.

Definition at line 3624 of file sparsemat.cpp.

HypreParMatrix * mfem::ParAdd ( const HypreParMatrix *  A,
const HypreParMatrix *  B 
)

Returns the matrix A + B.

It is assumed that both matrices use the same row and column partitions and the same col_map_offd arrays.

Definition at line 1627 of file hypre.cpp.

int mfem::ParCSRRelax_FIR ( hypre_ParCSRMatrix *  A,
hypre_ParVector *  f,
double  max_eig,
int  poly_order,
double *  fir_coeffs,
hypre_ParVector *  u,
hypre_ParVector *  x0,
hypre_ParVector *  x1,
hypre_ParVector *  x2,
hypre_ParVector *  x3 
)

Definition at line 1777 of file hypre.cpp.

int mfem::ParCSRRelax_Taubin ( hypre_ParCSRMatrix *  A,
hypre_ParVector *  f,
double  lambda,
double  mu,
int  N,
double  max_eig,
hypre_ParVector *  u,
hypre_ParVector *  r 
)

Definition at line 1740 of file hypre.cpp.

HypreParMatrix * mfem::ParMult ( const HypreParMatrix *  A,
const HypreParMatrix *  B,
bool  own_matrix = false 
)

Returns the matrix A * B. Returned matrix does not necessarily own row or column starts unless the bool own_matrix is set to true.

Definition at line 1610 of file hypre.cpp.

PetscParMatrix * mfem::ParMult ( const PetscParMatrix *  A,
const PetscParMatrix *  B 
)

Returns the matrix A * B.

Definition at line 1625 of file petsc.cpp.

double mfem::ParNormlp ( const Vector &  vec,
double  p,
MPI_Comm  comm 
)

Compute the l_p norm of the Vector which is split without overlap across the given communicator.

Definition at line 257 of file hypre.cpp.

void mfem::parseArray ( char *  str,
Array< int > &  var 
)

Definition at line 116 of file optparser.cpp.

void mfem::parseVector ( char *  str,
Vector &  var 
)

Definition at line 127 of file optparser.cpp.

void mfem::PCG ( const Operator &  A,
Solver &  B,
const Vector &  b,
Vector &  x,
int  print_iter,
int  max_num_iter,
double  RTOLERANCE,
double  ATOLERANCE 
)

Preconditioned conjugate gradient method. (tolerances are squared)

Definition at line 529 of file solvers.cpp.

int mfem::PermuteFaceL2 ( const int  dim,
const int  face_id1,
const int  face_id2,
const int  orientation,
const int  size1d,
const int  index 
)

Permute dofs or quads on a face for e2 to match with the ordering of e1.

Definition at line 646 of file restriction.cpp.

bool mfem::PrismFaceBottom ( int  node,
int *  n 
)
inline

Definition at line 610 of file ncmesh.cpp.

bool mfem::PrismFaceTop ( int  node,
int *  n 
)
inline

Definition at line 613 of file ncmesh.cpp.

template<const int BLOCKS = MFEM_CUDA_BLOCKS, typename DBODY >
void mfem::RajaCudaWrap1D ( const int  N,
DBODY &&  d_body 
)

Definition at line 104 of file forall.hpp.

template<typename DBODY >
void mfem::RajaCudaWrap2D ( const int  N,
DBODY &&  d_body,
const int  X,
const int  Y,
const int  BZ 
)

Definition at line 111 of file forall.hpp.

template<typename DBODY >
void mfem::RajaCudaWrap3D ( const int  N,
DBODY &&  d_body,
const int  X,
const int  Y,
const int  Z 
)

Definition at line 136 of file forall.hpp.

template<typename HBODY >
void mfem::RajaOmpWrap ( const int  N,
HBODY &&  h_body 
)

Definition at line 162 of file forall.hpp.

template<typename HBODY >
void mfem::RajaSeqWrap ( const int  N,
HBODY &&  h_body 
)

RAJA sequential loop backend.

Definition at line 172 of file forall.hpp.

PetscParMatrix * mfem::RAP ( PetscParMatrix *  Rt,
PetscParMatrix *  A,
PetscParMatrix *  P 
)

Returns the matrix Rt^t * A * P.

Definition at line 1508 of file petsc.cpp.

PetscParMatrix * mfem::RAP ( PetscParMatrix *  A,
PetscParMatrix *  P 
)

Returns the matrix P^t * A * P.

Definition at line 1605 of file petsc.cpp.

PetscParMatrix * mfem::RAP ( HypreParMatrix *  hA,
PetscParMatrix *  P 
)

Returns the matrix P^t * A * P.

Definition at line 1611 of file petsc.cpp.

HypreParMatrix * mfem::RAP ( const HypreParMatrix *  A,
const HypreParMatrix *  P 
)

Returns the matrix P^t * A * P.

Definition at line 1636 of file hypre.cpp.

HypreParMatrix * mfem::RAP ( const HypreParMatrix *  Rt,
const HypreParMatrix *  A,
const HypreParMatrix *  P 
)

Returns the matrix Rt^t * A * P.

Definition at line 1659 of file hypre.cpp.

DenseMatrix * mfem::RAP ( const SparseMatrix &  A,
DenseMatrix &  P 
)

RAP matrix product (with R=P^T)

Definition at line 3359 of file sparsemat.cpp.

DenseMatrix * mfem::RAP ( DenseMatrix &  A,
const SparseMatrix &  P 
)

RAP matrix product (with R=P^T)

Definition at line 3369 of file sparsemat.cpp.

SparseMatrix * mfem::RAP ( const SparseMatrix &  A,
const SparseMatrix &  R,
SparseMatrix *  ORAP = NULL 
)

RAP matrix product (with P=R^T). ORAP is like OAB above. All matrices must be finalized.

Definition at line 3382 of file sparsemat.cpp.

SparseMatrix * mfem::RAP ( const SparseMatrix &  Rt,
const SparseMatrix &  A,
const SparseMatrix &  P 
)

General RAP with given R^T, A and P.

Definition at line 3393 of file sparsemat.cpp.

template<typename T >
const T* mfem::Read ( const Memory< T > &  mem,
int  size,
bool  on_dev = true 
)
inline

Get a pointer for read access to mem with the mfem::Device's DeviceMemoryClass, if on_dev = true, or the mfem::Device's HostMemoryClass, otherwise.

Also, if on_dev = true, the device flag of mem will be set.

Definition at line 295 of file device.hpp.

template<typename T >
T* mfem::ReadWrite ( Memory< T > &  mem,
int  size,
bool  on_dev = true 
)
inline

Get a pointer for read+write access to mem with the mfem::Device's DeviceMemoryClass, if on_dev = true, or the mfem::Device's HostMemoryClass, otherwise.

Also, if on_dev = true, the device flag of mem will be set.

Definition at line 329 of file device.hpp.

MPI_Comm mfem::ReorderRanksZCurve ( MPI_Comm  comm)

Reorder MPI ranks to follow the Z-curve within the physical machine topology (provided that functions to query physical node coordinates are available). Returns a new communicator with reordered ranks.

Definition at line 1368 of file communication.cpp.

template<typename T , typename... Dims>
DeviceTensor<sizeof...(Dims),T> mfem::Reshape ( T *  ptr,
Dims...  dims 
)
inline

Wrap a pointer as a DeviceTensor with automatically deduced template parameters.

Definition at line 134 of file dtensor.hpp.

NURBSPatch* mfem::Revolve3D ( NURBSPatch &  patch,
double  n[],
double  ang,
int  times 
)

Definition at line 1260 of file nurbs.cpp.

void mfem::set_error_action ( ErrorAction  action)

Set the action MFEM takes when an error is encountered.

Definition at line 49 of file error.cpp.

void mfem::SetGlobalMPI_Comm ( MPI_Comm  comm)

Set MFEM's "global" MPI communicator.

Definition at line 67 of file globals.cpp.

void mfem::ShiftRight ( int &  a,
int &  b,
int &  c 
)
inline

Definition at line 1451 of file mesh.hpp.

void mfem::skip_comment_lines ( std::istream &  is,
const char  comment_char 
)
inline

Definition at line 27 of file text.hpp.

void mfem::SLI ( const Operator &  A,
const Vector &  b,
Vector &  x,
int  print_iter,
int  max_num_iter,
double  RTOLERANCE,
double  ATOLERANCE 
)

Stationary linear iteration. (tolerances are squared)

Definition at line 323 of file solvers.cpp.

void mfem::SLI ( const Operator &  A,
Solver &  B,
const Vector &  b,
Vector &  x,
int  print_iter,
int  max_num_iter,
double  RTOLERANCE,
double  ATOLERANCE 
)

Preconditioned stationary linear iteration. (tolerances are squared)

Definition at line 336 of file solvers.cpp.

template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void mfem::sMult_AB ( const A_layout_t &  A_layout,
const A_data_t &  A_data,
const B_layout_t &  B_layout,
const B_data_t &  B_data,
const C_layout_t &  C_layout,
C_data_t &  C_data 
)
inline

Definition at line 31 of file tmatrix.hpp.

void mfem::Sort3 ( int &  r,
int &  c,
int &  f 
)
inline

Definition at line 34 of file stable3d.cpp.

template<class A , class B >
void mfem::SortPairs ( Pair< A, B > *  pairs,
int  size 
)

Sort an array of Pairs with respect to the first element.

Definition at line 50 of file sort_pairs.hpp.

template<class A , class B , class C >
void mfem::SortTriple ( Triple< A, B, C > *  triples,
int  size 
)

Lexicographic sort for arrays of class Triple.

Definition at line 81 of file sort_pairs.hpp.

void mfem::SparseMatrixFunction ( SparseMatrix &  S,
double(*)(double)  f 
)

Applies f() to each element of the matrix (after it is finalized).

Definition at line 2969 of file sparsemat.cpp.

void mfem::subtract ( const Vector &  x,
const Vector &  y,
Vector &  z 
)

Definition at line 385 of file vector.cpp.

void mfem::subtract ( const double  a,
const Vector &  x,
const Vector &  y,
Vector &  z 
)

Definition at line 411 of file vector.cpp.

template<class T >
void mfem::Swap ( Array< T > &  a,
Array< T > &  b 
)
inline

Definition at line 592 of file array.hpp.

template<class T >
void mfem::Swap ( Array2D< T > &  a,
Array2D< T > &  b 
)
inline

Definition at line 902 of file array.hpp.

template<class T >
void mfem::Swap ( T &  a,
T &  b 
)
inline

inlines ///

Definition at line 584 of file array.hpp.

template<>
void mfem::Swap< SparseMatrix > ( SparseMatrix &  a,
SparseMatrix &  b 
)
inline

Specialization of the template function Swap<> for class SparseMatrix.

Definition at line 795 of file sparsemat.hpp.

template<>
void mfem::Swap< Table > ( Table &  a,
Table &  b 
)
inline

Specialization of the template function Swap<> for class Table.

Definition at line 175 of file table.hpp.

template<>
void mfem::Swap< Vector > ( Vector &  a,
Vector &  b 
)
inline

Specialization of the template function Swap<> for class Vector.

Definition at line 510 of file vector.hpp.

template<typename scalar_t , typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t >
MFEM_HOST_DEVICE scalar_t mfem::TAdjDet ( const A_layout_t &  a,
const A_data_t &  A,
const B_layout_t &  b,
B_data_t &  B 
)
inline

Definition at line 532 of file tmatrix.hpp.

template<typename scalar_t , typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t >
void mfem::TAdjugate ( const A_layout_t &  a,
const A_data_t &  A,
const B_layout_t &  b,
B_data_t &  B 
)
inline

Definition at line 517 of file tmatrix.hpp.

template<AssignOp::Type Op, typename A_layout_t , typename A_data_t , typename scalar_t >
MFEM_HOST_DEVICE void mfem::TAssign ( const A_layout_t &  A_layout,
A_data_t &  A_data,
scalar_t  value 
)
inline

Definition at line 224 of file ttensor.hpp.

template<AssignOp::Type Op, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t >
void mfem::TAssign ( const A_layout_t &  A_layout,
A_data_t &  A_data,
const B_layout_t &  B_layout,
const B_data_t &  B_data 
)
inline

Definition at line 237 of file ttensor.hpp.

template<typename scalar_t , typename layout_t , typename data_t >
MFEM_HOST_DEVICE scalar_t mfem::TDet ( const layout_t &  a,
const data_t &  A 
)
inline

Definition at line 484 of file tmatrix.hpp.

template<AssignOp::Type Op, typename A_layout_t , typename A_data_t , typename D_data_t >
MFEM_HOST_DEVICE void mfem::TDet ( const A_layout_t &  a,
const A_data_t &  A,
D_data_t &  D 
)
inline

Definition at line 501 of file tmatrix.hpp.

template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void mfem::TensorAssemble ( const A_layout_t &  A_layout,
const A_data_t &  A_data,
const B_layout_t &  B_layout,
const B_data_t &  B_data,
const C_layout_t &  C_layout,
C_data_t &  C_data 
)
inline

Definition at line 437 of file ttensor.hpp.

template<bool Add, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t , typename D_layout_t , typename D_data_t >
MFEM_ALWAYS_INLINE void mfem::TensorAssemble ( const A_layout_t &  A_layout,
const A_data_t &  A_data,
const B_layout_t &  B_layout,
const B_data_t &  B_data,
const C_layout_t &  C_layout,
const C_data_t &  C_data,
const D_layout_t &  D_layout,
D_data_t &  D_data 
)
inline

Definition at line 512 of file ttensor.hpp.

template<AssignOp::Type Op, typename A_layout_t , typename A_data_t , typename B_layout_t , typename B_data_t , typename C_layout_t , typename C_data_t >
MFEM_ALWAYS_INLINE void mfem::TensorProduct ( const A_layout_t &  a,
const A_data_t &  A,
const B_layout_t &  b,
const B_data_t &  B,
const C_layout_t &  c,
C_data_t &  C 
)
inline

Definition at line 603 of file ttensor.hpp.

void mfem::tic ( )

Start timing.

Definition at line 449 of file tic_toc.cpp.

int mfem::to_int ( const std::string &  str)
inline

Definition at line 70 of file text.hpp.

std::string mfem::to_padded_string ( int  i,
int  digits 
)
inline

Definition at line 62 of file text.hpp.

std::string mfem::to_string ( int  i)
inline

Definition at line 50 of file text.hpp.

double mfem::toc ( )

End timing.

Definition at line 455 of file tic_toc.cpp.

int mfem::ToLexOrdering ( const int  dim,
const int  face_id,
const int  size1d,
const int  index 
)

Definition at line 955 of file restriction.cpp.

void mfem::Transpose ( const Table &  A,
Table &  At,
int  _ncols_A 
)

Transpose a Table.

Definition at line 414 of file table.cpp.

Table * mfem::Transpose ( const Table &  A)

Definition at line 454 of file table.cpp.

void mfem::Transpose ( const Array< int > &  A,
Table &  At,
int  _ncols_A 
)

Transpose an Array<int>

Definition at line 461 of file table.cpp.

BlockMatrix * mfem::Transpose ( const BlockMatrix &  A)

Transpose a BlockMatrix: result = A'.

Definition at line 579 of file blockmatrix.cpp.

SparseMatrix * mfem::Transpose ( const SparseMatrix &  A)

Transpose of a sparse matrix. A must be finalized.

Definition at line 2980 of file sparsemat.cpp.

SparseMatrix * mfem::TransposeAbstractSparseMatrix ( const AbstractSparseMatrix &  A,
int  useActualWidth 
)

Transpose of a sparse matrix. A does not need to be a CSR matrix.

Definition at line 3036 of file sparsemat.cpp.

SparseMatrix * mfem::TransposeMult ( const SparseMatrix &  A,
const SparseMatrix &  B 
)

C = A^T B.

Definition at line 3241 of file sparsemat.cpp.

PetscParMatrix * mfem::TripleMatrixProduct ( PetscParMatrix *  R,
PetscParMatrix *  A,
PetscParMatrix *  P 
)

Returns the matrix R * A * P.

Definition at line 1493 of file petsc.cpp.

void mfem::Update ( Vector &  x,
int  k,
DenseMatrix &  h,
Vector &  s,
Array< Vector * > &  v 
)
inline

Definition at line 573 of file solvers.cpp.

bool mfem::UsesTensorBasis ( const FiniteElementSpace &  fes)
inline

Definition at line 919 of file fespace.hpp.

void mfem::vis_tmop_metric_p ( int  order,
TMOP_QualityMetric qm,
const TargetConstructor tc,
ParMesh pmesh,
char *  title,
int  position 
)

Definition at line 473 of file tmop_tools.cpp.

void mfem::vis_tmop_metric_s ( int  order,
TMOP_QualityMetric qm,
const TargetConstructor tc,
Mesh mesh,
char *  title,
int  position 
)

Definition at line 501 of file tmop_tools.cpp.

const char * mfem::VTKByteOrder ( )

Definition at line 461 of file vtk.cpp.

int mfem::VTKTriangleDOFOffset ( int  ref,
int  i,
int  j 
)

Definition at line 141 of file vtk.cpp.

H1_WedgeElement mfem::WedgeFE ( )
template<typename T >
T* mfem::Write ( Memory< T > &  mem,
int  size,
bool  on_dev = true 
)
inline

Get a pointer for write access to mem with the mfem::Device's DeviceMemoryClass, if on_dev = true, or the mfem::Device's HostMemoryClass, otherwise.

Also, if on_dev = true, the device flag of mem will be set.

Definition at line 312 of file device.hpp.

void mfem::WriteBase64WithSizeAndClear ( std::ostream &  out,
std::vector< char > &  buf,
int  compression_level 
)

Definition at line 8706 of file mesh.cpp.

template<typename T >
void mfem::WriteBinaryOrASCII ( std::ostream &  out,
std::vector< char > &  buf,
const T &  val,
const char *  suffix,
VTKFormat  format 
)

Definition at line 8660 of file mesh.cpp.

template<>
void mfem::WriteBinaryOrASCII< double > ( std::ostream &  out,
std::vector< char > &  buf,
const double &  val,
const char *  suffix,
VTKFormat  format 
)

Definition at line 8678 of file mesh.cpp.

template<>
void mfem::WriteBinaryOrASCII< float > ( std::ostream &  out,
std::vector< char > &  buf,
const float &  val,
const char *  suffix,
VTKFormat  format 
)

Definition at line 8697 of file mesh.cpp.

template<>
void mfem::WriteBinaryOrASCII< uint8_t > ( std::ostream &  out,
std::vector< char > &  buf,
const uint8_t &  val,
const char *  suffix,
VTKFormat  format 
)

Definition at line 8669 of file mesh.cpp.

void mfem::WriteVTKEncodedCompressed ( std::ostream &  out,
const void *  bytes,
uint32_t  nbytes,
int  compression_level 
)

Outputs encoded binary data in the format needed by VTK. The binary data will be base 64 encoded, and compressed if compression_level is not zero. The proper header will be prepended to the data.

Definition at line 418 of file vtk.cpp.

void mfem::XYZ_VectorFunction ( const Vector &  p,
Vector &  v 
)

Definition at line 3848 of file mesh.cpp.

double mfem::ZZErrorEstimator ( BilinearFormIntegrator &  blfi,
GridFunction &  u,
GridFunction &  flux,
Vector &  error_estimates,
Array< int > *  aniso_flags,
int  with_subdomains,
bool  with_coeff 
)

Definition at line 3002 of file gridfunc.cpp.

Variable Documentation

constexpr int mfem::DeviceMemoryType = static_cast<int>(MemoryType::MANAGED)

Definition at line 47 of file mem_manager.hpp.

constexpr int mfem::DeviceMemoryTypeSize = MemoryTypeSize - DeviceMemoryType

Definition at line 48 of file mem_manager.hpp.

OutStream mfem::err

Global stream used by the library for standard error output. Initially it uses the same std::streambuf as std::cerr, however that can be changed.

See Also
OutStream.

Definition at line 71 of file globals.hpp.

Geometry mfem::Geometries

Definition at line 12638 of file fe.cpp.

GeometryRefiner mfem::GlobGeometryRefiner

Definition at line 1395 of file geom.cpp.

constexpr int mfem::HCURL_MAX_D1D = 5

Definition at line 23 of file bilininteg_hcurl.cpp.

constexpr int mfem::HCURL_MAX_Q1D = 6

Definition at line 24 of file bilininteg_hcurl.cpp.

TriLinear3DFiniteElement mfem::HexahedronFE

Definition at line 52 of file hexahedron.cpp.

constexpr int mfem::HostMemoryType = static_cast<int>(MemoryType::HOST)

Definition at line 45 of file mem_manager.hpp.

constexpr int mfem::HostMemoryTypeSize = static_cast<int>(MemoryType::DEVICE)

Definition at line 46 of file mem_manager.hpp.

IntegrationRules mfem::IntRules

A global object with all integration rules (defined in intrules.cpp)

Definition at line 376 of file intrules.hpp.

const int mfem::MAX_D1D = 14

Definition at line 35 of file forall.hpp.

const int mfem::MAX_Q1D = 14

Definition at line 36 of file forall.hpp.

const char * mfem::MemoryTypeName
Initial value:
=
{
"host-std", "host-32", "host-64", "host-debug", "host-umpire",
#if defined(MFEM_USE_CUDA)
"cuda-uvm",
"cuda",
#elif defined(MFEM_USE_HIP)
"hip-uvm",
"hip",
#else
"managed",
"device",
#endif
"device-debug",
#if defined(MFEM_USE_CUDA)
"cuda-umpire"
#elif defined(MFEM_USE_HIP)
"hip-umpire"
#else
"device-umpire"
#endif
}

Memory type names, used during Device:: configuration.

Definition at line 1388 of file mem_manager.cpp.

constexpr int mfem::MemoryTypeSize = static_cast<int>(MemoryType::SIZE)

Static casts to 'int' and sizes of some useful memory types.

Definition at line 44 of file mem_manager.hpp.

MPI_Comm mfem::MFEM_COMM_WORLD = MPI_COMM_WORLD

Definition at line 60 of file globals.cpp.

MemoryManager mfem::mm

The (single) global memory manager object.

Definition at line 1376 of file mem_manager.cpp.

OutStream mfem::out

Global stream used by the library for standard output. Initially it uses the same std::streambuf as std::cout, however that can be changed.

See Also
OutStream.

Definition at line 66 of file globals.hpp.

PointFiniteElement mfem::PointFE

Definition at line 30 of file point.cpp.

Poly_1D mfem::poly1d

Definition at line 7351 of file fe.cpp.

BiLinear2DFiniteElement mfem::QuadrilateralFE

Definition at line 55 of file quadrilateral.cpp.

IntegrationRules mfem::RefinedIntRules

A global object with all refined integration rules.

Definition at line 379 of file intrules.hpp.

const RefCoord mfem::S_HALF = 1

Definition at line 99 of file ncmesh_tables.hpp.

const RefCoord mfem::S_ONE = 2

Definition at line 100 of file ncmesh_tables.hpp.

const RefCoord mfem::S_TWO = 4

Definition at line 101 of file ncmesh_tables.hpp.

Linear1DFiniteElement mfem::SegmentFE

Definition at line 49 of file segment.cpp.

const RefCoord mfem::T_HALF = (1ll << 59)

Definition at line 94 of file ncmesh_tables.hpp.

const RefCoord mfem::T_ONE = (1ll << 60)

Definition at line 95 of file ncmesh_tables.hpp.

const RefCoord mfem::T_TWO = (1ll << 61)

Definition at line 96 of file ncmesh_tables.hpp.

Linear3DFiniteElement mfem::TetrahedronFE

Definition at line 12625 of file fe.cpp.

StopWatch mfem::tic_toc

Definition at line 447 of file tic_toc.cpp.

Linear2DFiniteElement mfem::TriangleFE

Definition at line 12621 of file fe.cpp.

H1_WedgeElement mfem::WedgeFE(1)