v0.12.1
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
MoFEM Namespace Reference

implementation of Data Operators for Forces and Sources More...

Namespaces

 DemkowiczHexAndQuad
 
 Exceptions
 Exceptions and handling errors data structures.
 
 IntRules
 
 LogKeywords
 
 Types
 Types.
 

Classes

struct  SmartPetscObj
 intrusive_ptr for managing petsc objects More...
 
struct  KeyFromKey
 
struct  LtBit
 
struct  EqBit
 
struct  HashBit
 
struct  GetFTensor0FromVecImpl
 
struct  GetFTensor0FromVecImpl< S, double, DoubleAllocator >
 
struct  GetFTensor1FromMatImpl
 
struct  GetFTensor1FromMatImpl< 3, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor1FromMatImpl< 2, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor1FromMatImpl< 1, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor2SymmetricFromMatImpl
 
struct  GetFTensor2SymmetricFromMatImpl< 3, S, T, L, A >
 
struct  GetFTensor2SymmetricFromMatImpl< 2, S, T, L, A >
 
struct  GetFTensor4DdgFromMatImpl
 
struct  GetFTensor4DdgFromMatImpl< 1, 1, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor4DdgFromMatImpl< 2, 2, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor4DdgFromMatImpl< 3, 3, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor3DgFromMatImpl
 
struct  GetFTensor3DgFromMatImpl< 1, 1, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor3DgFromMatImpl< 2, 2, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor3DgFromMatImpl< 3, 3, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor4FromMatImpl
 
struct  GetFTensor4FromMatImpl< 1, 1, 1, 1, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor4FromMatImpl< 2, 2, 2, 2, S, double, ublas::row_major, DoubleAllocator >
 
struct  GetFTensor4FromMatImpl< 3, 3, 3, 3, S, double, ublas::row_major, DoubleAllocator >
 
struct  RefEntExtractor
 Extract entity handle form multi-index container. More...
 
struct  Modify_change_nothing
 Do nothing, used to rebuild database. More...
 
struct  TempMeshset
 
struct  BaseFunctionUnknownInterface
 
struct  BaseFunctionCtx
 Base class used to exchange data between element data structures and class calculating base functions. More...
 
struct  BaseFunction
 Base class if inherited used to calculate base functions. More...
 
struct  BernsteinBezier
 Evaluating BB polynomial. More...
 
struct  EdgePolynomialBase
 Calculate base functions on tetrahedral. More...
 
struct  EntPolynomialBaseCtx
 Class used to pass element data to calculate base functions on tet,triangle,edge. More...
 
struct  FatPrismPolynomialBaseCtx
 Class used to pass element data to calculate base functions on fat prism. More...
 
struct  FatPrismPolynomialBase
 Calculate base functions on tetrahedralFIXME: Need moab and mofem finite element structure to work (that not perfect) More...
 
struct  FlatPrismPolynomialBaseCtx
 Class used to pass element data to calculate base functions on flat prism. More...
 
struct  FlatPrismPolynomialBase
 Calculate base functions on tetrahedralFIXME: Need moab and mofem finite element structure to work (that not perfect) More...
 
struct  HexPolynomialBase
 Calculate base functions on tetrahedral. More...
 
struct  JacobiPolynomialCtx
 Class used to give arguments to Legendre base functions. More...
 
struct  JacobiPolynomial
 Calculating Legendre base functions. More...
 
struct  IntegratedJacobiPolynomialCtx
 
struct  IntegratedJacobiPolynomial
 
struct  LegendrePolynomialCtx
 Class used to give arguments to Legendre base functions. More...
 
struct  LegendrePolynomial
 Calculating Legendre base functions. More...
 
struct  LobattoPolynomialCtx
 Class used to give arguments to Lobatto base functions. More...
 
struct  LobattoPolynomial
 Calculating Lobatto base functions. More...
 
struct  KernelLobattoPolynomialCtx
 Class used to give arguments to Kernel Lobatto base functions. More...
 
struct  KernelLobattoPolynomial
 Calculating Lobatto base functions. More...
 
struct  Projection10NodeCoordsOnField
 Projection of edge entities with one mid-node on hierarchical basis. More...
 
struct  ProjectionFieldOn10NodeTet
 
struct  QuadPolynomialBase
 Calculate base functions on triangle. More...
 
struct  TetPolynomialBase
 Calculate base functions on tetrahedral. More...
 
struct  TriPolynomialBase
 Calculate base functions on triangle. More...
 
struct  OpGradGradImpl
 
struct  OpGradGradImpl< 1, 1, SPACE_DIM, GAUSS, OpBase >
 
struct  OpGradGradImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >
 
struct  OpMassImpl
 
struct  OpMassImpl< 1, 1, GAUSS, OpBase >
 
struct  OpMassImpl< 1, FIELD_DIM, GAUSS, OpBase >
 
struct  OpMassImpl< BASE_DIM, BASE_DIM, GAUSS, OpBase >
 
struct  OpMassImpl< 3, 9, GAUSS, OpBase >
 
struct  OpGradSymTensorGradImpl
 
struct  OpGradSymTensorGradImpl< 1, SPACE_DIM, SPACE_DIM, S, GAUSS, OpBase >
 
struct  OpGradTensorGradImpl
 
struct  OpGradTensorGradImpl< 1, SPACE_DIM, SPACE_DIM, S, GAUSS, OpBase >
 
struct  OpMixDivTimesScalarImpl
 
struct  OpMixDivTimesScalarImpl< SPACE_DIM, GAUSS, OpBase >
 
struct  OpMixDivTimesVecImpl
 
struct  OpMixDivTimesVecImpl< SPACE_DIM, GAUSS, OpBase >
 
struct  OpMixScalarTimesDivImpl
 
struct  OpMixScalarTimesDivImpl< SPACE_DIM, GAUSS, OpBase >
 
struct  OpMixVectorTimesGradImpl
 
struct  OpMixVectorTimesGradImpl< 3, SPACE_DIM, SPACE_DIM, GAUSS, OpBase >
 
struct  OpMixVectorTimesGradImpl< 1, SPACE_DIM, SPACE_DIM, GAUSS, OpBase >
 
struct  OpMixTensorTimesGradImpl
 
struct  OpMixTensorTimesGradImpl< SPACE_DIM, GAUSS, OpBase >
 
struct  OpConvectiveTermLhsDuImpl
 
struct  OpConvectiveTermLhsDyImpl
 
struct  OpConvectiveTermLhsDuImpl< 1, 1, SPACE_DIM, GAUSS, OpBase >
 
struct  OpConvectiveTermLhsDyImpl< 1, 1, SPACE_DIM, GAUSS, OpBase >
 
struct  OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >
 
struct  OpConvectiveTermLhsDyImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >
 
struct  VolumeElementForcesAndSourcesCoreOnContactPrismSideSwitch
 Volume side finite element with switches. More...
 
struct  ContactPrismElementForcesAndSourcesCore
 ContactPrism finite element. More...
 
struct  DataOperator
 base operator to do operations at Gauss Pt. level More...
 
struct  OpSetInvJacH1
 Transform local reference derivatives of shape function to global derivatives. More...
 
struct  OpSetInvJacHdivAndHcurl
 brief Transform local reference derivatives of shape function to global derivatives More...
 
struct  OpSetContravariantPiolaTransform
 apply contravariant (Piola) transfer to Hdiv space More...
 
struct  OpSetCovariantPiolaTransform
 apply covariant transfer to Hcurl space More...
 
struct  OpGetDataAndGradient
 Get field values and gradients at Gauss points. More...
 
struct  OpGetCoordsAndNormalsOnPrism
 calculate normals at Gauss points of triangle element More...
 
struct  OpSetContravariantPiolaTransformOnFace
 transform Hdiv base fluxes from reference element to physical triangle More...
 
struct  OpSetCovariantPiolaTransformOnFace
 transform Hcurl base fluxes from reference element to physical triangle More...
 
struct  OpGetHOTangentOnEdge
 Calculate tangent vector on edge form HO geometry approximation. More...
 
struct  OpSetCovariantPiolaTransformOnEdge
 transform Hcurl base fluxes from reference element to physical edge More...
 
struct  DataForcesAndSourcesCore
 data structure for finite element entity More...
 
struct  DerivedDataForcesAndSourcesCore
 this class derive data form other data structure More...
 
struct  FaceElementForcesAndSourcesCoreOnSideSwitch
 Face side finite element with switches. More...
 
struct  EdgeElementForcesAndSourcesCoreBase
 Edge finite element. More...
 
struct  EdgeElementForcesAndSourcesCoreSwitch
 Edge finite element. More...
 
struct  VolumeElementForcesAndSourcesCoreOnSideSwitch
 Volume side finite element with switches. More...
 
struct  FaceElementForcesAndSourcesCoreBase
 Face finite element. More...
 
struct  FaceElementForcesAndSourcesCoreSwitch
 Face finite element switched. More...
 
struct  FaceElementForcesAndSourcesCoreOnSideBase
 Base face element used to integrate on skeleton. More...
 
struct  FatPrismElementForcesAndSourcesCore
 FatPrism finite element. More...
 
struct  FlatPrismElementForcesAndSourcesCore
 FlatPrism finite element. More...
 
struct  ForcesAndSourcesCore
 structure to get information form mofem into DataForcesAndSourcesCore More...
 
struct  EssentialBcStorage
 [Storage and set boundary conditions] More...
 
struct  OpSetBc
 Set indices on entities on finite element. More...
 
struct  OpUnSetBc
 
struct  OpBaseImpl
 
struct  FormsIntegrators
 Integrator forms. More...
 
struct  OpBaseImpl< PETSC, EleOp >
 
struct  OpCalculateHOJacVolume
 Calculate jacobian on Hex or other volume which is not simplex. More...
 
struct  OpCalculateHOCoords
 Calculate HO coordinates at gauss points. More...
 
struct  OpSetHOInvJacToScalarBases
 Set inverse jacobian to base functions. More...
 
struct  OpSetHOInvJacVectorBase
 transform local reference derivatives of shape function to global derivatives if higher order geometry is given More...
 
struct  OpSetHOWeigthsOnFace
 Modify integration weights on face to take in account higher-order geometry. More...
 
struct  OpSetHOWeights
 Set inverse jacobian to base functions. More...
 
struct  OpSetHOContravariantPiolaTransform
 Apply contravariant (Piola) transfer to Hdiv space for HO geometr. More...
 
struct  OpSetHOCovariantPiolaTransform
 Apply covariant (Piola) transfer to Hcurl space for HO geometry. More...
 
struct  OpCalculateHOJacForFaceImpl
 Calculate jacobian for face element. More...
 
struct  OpCalculateHOJacForFaceImpl< 2 >
 
struct  OpCalculateHOJacForFaceImpl< 3 >
 
struct  OpGetHONormalsOnFace
 Calculate normals at Gauss points of triangle element. More...
 
struct  OpHOSetContravariantPiolaTransformOnFace3D
 transform Hdiv base fluxes from reference element to physical triangle More...
 
struct  OpHOSetContravariantPiolaTransformOnEdge3D
 transform Hcurl base fluxes from reference element to physical edge More...
 
struct  OpHOSetCovariantPiolaTransformOnFace3D
 transform Hcurl base fluxes from reference element to physical triangle More...
 
struct  OpGetHOTangentsOnEdge
 Calculate tangent vector on edge form HO geometry approximation. More...
 
struct  OpScaleBaseBySpaceInverseOfMeasure
 Scale base functions by inverses of measure of element. More...
 
struct  OpSourceImpl
 
struct  OpSourceImpl< 1, 1, GAUSS, OpBase >
 Integrate source. More...
 
struct  OpSourceImpl< 1, FIELD_DIM, GAUSS, OpBase >
 
struct  OpSourceImpl< BASE_DIM, BASE_DIM, GAUSS, OpBase >
 
struct  OpBaseTimesScalarFieldImpl
 
struct  OpBaseTimesScalarFieldImpl< 1, S, GAUSS, OpBase >
 
struct  OpBaseTimesVectorImpl
 
struct  OpBaseTimesVectorImpl< 1, FIELD_DIM, S, GAUSS, OpBase >
 
struct  OpBaseTimesVectorImpl< BASE_DIM, BASE_DIM, S, GAUSS, OpBase >
 
struct  OpGradTimesTensorImpl
 
struct  OpGradTimesTensorImpl< 1, 1, SPACE_DIM, S, GAUSS, OpBase >
 
struct  OpGradTimesTensorImpl< 1, SPACE_DIM, SPACE_DIM, S, GAUSS, OpBase >
 
struct  OpGradTimesSymTensorImpl
 
struct  OpGradTimesSymTensorImpl< 1, SPACE_DIM, SPACE_DIM, S, GAUSS, OpBase >
 
struct  OpMixDivTimesUImpl
 
struct  OpMixDivTimesUImpl< 3, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >
 
struct  OpMixDivTimesUImpl< 3, 1, SPACE_DIM, GAUSS, OpBase >
 
struct  OpMixDivTimesUImpl< 1, FIELD_DIM, FIELD_DIM, GAUSS, OpBase >
 
struct  OpMixVecTimesDivLambdaImpl
 
struct  OpMixVecTimesDivLambdaImpl< SPACE_DIM, GAUSS, OpBase >
 
struct  OpMixTensorTimesGradUImpl
 
struct  OpMixTensorTimesGradUImpl< SPACE_DIM, GAUSS, OpBase >
 
struct  OpNormalMixVecTimesScalarImpl
 Multiply vactor times normal on the face times scalar function. More...
 
struct  OpNormalMixVecTimesScalarImpl< 3, GAUSS, OpBase >
 
struct  OpNormalMixVecTimesScalarImpl< 2, GAUSS, OpBase >
 
struct  OpConvectiveTermRhsImpl
 
struct  OpConvectiveTermRhsImpl< 1, 1, SPACE_DIM, GAUSS, OpBase >
 
struct  OpConvectiveTermRhsImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >
 
struct  OpCalculateScalarFieldValues_General
 Scalar field values at integration points. More...
 
struct  OpCalculateScalarFieldValues
 Get value at integration points for scalar field. More...
 
struct  OpCalculateScalarFieldValuesFromPetscVecImpl
 Get rate of scalar field at integration points. More...
 
struct  OpCalculateVectorFieldValues_General
 Calculate field values for tenor field rank 1, i.e. vector field. More...
 
struct  OpCalculateVectorFieldValues_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >
 Calculate field values (template specialization) for tensor field rank 1, i.e. vector field. More...
 
struct  OpCalculateVectorFieldValues
 Get values at integration pts for tensor filed rank 1, i.e. vector field. More...
 
struct  OpCalculateDivergenceVectorFieldValues
 Calculate field values (template specialization) for tensor field rank 1, i.e. vector field. More...
 
struct  OpCalculateVectorFieldValuesFromPetscVecImpl
 Approximate field valuse for given petsc vector. More...
 
struct  OpCalculateTensor2FieldValues_General
 Calculate field values for tenor field rank 2. More...
 
struct  OpCalculateTensor2FieldValues_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >
 
struct  OpCalculateTensor2FieldValues
 Get values at integration pts for tensor filed rank 2, i.e. matrix field. More...
 
struct  OpCalculateTensor2FieldValuesDot
 Get time direvarive values at integration pts for tensor filed rank 2, i.e. matrix field. More...
 
struct  OpCalculateTensor2SymmetricFieldValues
 Calculate symmetric tensor field values at integration pts. More...
 
struct  OpCalculateTensor2SymmetricFieldValuesDot
 Calculate symmetric tensor field rates ant integratio pts. More...
 
struct  OpCalculateScalarFieldGradient_General
 Evaluate field gradient values for scalar field, i.e. gradient is tensor rank 1 (vector) More...
 
struct  OpCalculateScalarFieldGradient_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >
 Evaluate field gradient values for scalar field, i.e. gradient is tensor rank 1 (vector), specialization. More...
 
struct  OpCalculateScalarFieldGradient
 Get field gradients at integration pts for scalar filed rank 0, i.e. vector field. More...
 
struct  OpCalculateVectorFieldGradient_General
 Evaluate field gradient values for vector field, i.e. gradient is tensor rank 2. More...
 
struct  OpCalculateVectorFieldGradient_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >
 
struct  OpCalculateVectorFieldGradient
 Get field gradients at integration pts for scalar filed rank 0, i.e. vector field. More...
 
struct  OpCalculateVectorFieldGradientDot
 Get field gradients time derivative at integration pts for scalar filed rank 0, i.e. vector field. More...
 
struct  OpCalculateTensor2SymmetricFieldGradient_General
 Evaluate field gradient values for symmetric 2nd order tensor field, i.e. gradient is tensor rank 3. More...
 
struct  OpCalculateTensor2SymmetricFieldGradient_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >
 
struct  OpCalculateTensor2SymmetricFieldGradient
 Get field gradients at integration pts for symmetric tensorial field rank 2. More...
 
struct  OpTensorTimesSymmetricTensor
 Calculate \( \pmb\sigma_{ij} = \mathbf{D}_{ijkl} \pmb\varepsilon_{kl} \). More...
 
struct  OpSymmetrizeTensor
 
struct  OpScaleMatrix
 
struct  OpCalculateHVecVectorField_General
 Get vector field for H-div approximation. More...
 
struct  OpCalculateHVecVectorField_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >
 Get vector field for H-div approximation. More...
 
struct  OpCalculateHVecVectorField
 Get vector field for H-div approximation. More...
 
struct  OpCalculateHVecVectorFieldDot
 Get vector field for H-div approximation. More...
 
struct  OpCalculateHdivVectorDivergence
 Calculate divergence of vector field. More...
 
struct  OpCalculateHVecVectorGradient
 Calculate gradient of vector field. More...
 
struct  OpCalculateHdivVectorDivergenceDot
 Calculate divergence of vector field dot. More...
 
struct  OpCalculateHcurlVectorCurl
 Calculate curl of vector field. More...
 
struct  OpCalculateHVecTensorField
 Calculate tenor field using vectorial base, i.e. Hdiv/Hcurl. More...
 
struct  OpCalculateHTensorTensorField
 Calculate tenor field using vectorial base, i.e. Hdiv/Hcurl. More...
 
struct  OpCalculateHVecTensorDivergence
 Calculate divergence of tonsorial field using vectorial base. More...
 
struct  OpCalculateHVecTensorTrace
 Calculate trace of vector (Hdiv/Hcurl) space. More...
 
struct  OpCalculateHVecTensorTrace< 3, FaceElementForcesAndSourcesCore::UserDataOperator >
 
struct  OpSetInvJacSpaceForFaceImpl
 Transform local reference derivatives of shape functions to global derivatives. More...
 
struct  OpSetInvJacSpaceForFaceImpl< 2 >
 
struct  OpSetInvJacSpaceForFaceImpl< 3 >
 
struct  OpSetInvJacH1ForFace
 
struct  OpSetInvJacL2ForFace
 
struct  OpSetInvJacH1ForFaceEmbeddedIn3DSpace
 
struct  OpSetInvJacL2ForFaceEmbeddedIn3DSpace
 
struct  OpSetInvJacHcurlFaceImpl
 Transform local reference derivatives of shape function to global derivatives for face. More...
 
struct  OpSetInvJacHcurlFaceImpl< 2 >
 
struct  OpSetInvJacHcurlFaceImpl< 3 >
 
struct  OpMakeHdivFromHcurl
 Make Hdiv space from Hcurl space in 2d. More...
 
struct  OpSetContravariantPiolaTransformOnFace2DImpl
 Apply contravariant (Piola) transfer to Hdiv space on face. More...
 
struct  OpSetContravariantPiolaTransformOnFace2DImpl< 2 >
 
struct  OpSetContravariantPiolaTransformOnFace2DImpl< 3 >
 
struct  OpSetContravariantPiolaTransformOnEdge2D
 
struct  OpMultiplyDeterminantOfJacobianAndWeightsForFatPrisms
 Operator for fat prism element updating integration weights in the volume. More...
 
struct  OpCalculateInvJacForFatPrism
 Calculate inverse of jacobian for face element. More...
 
struct  OpSetInvJacH1ForFatPrism
 Transform local reference derivatives of shape functions to global derivatives. More...
 
struct  OpCalculateInvJacForFlatPrism
 Calculate inverse of jacobian for face element. More...
 
struct  OpSetInvJacH1ForFlatPrism
 Transform local reference derivatives of shape functions to global derivatives. More...
 
struct  OpInvertMatrix
 
struct  VertexElementForcesAndSourcesCore
 Vertex finite element. More...
 
struct  VolumeElementForcesAndSourcesCoreBase
 Volume finite element base. More...
 
struct  VolumeElementForcesAndSourcesCoreSwitch
 Volume finite element with switches. More...
 
struct  VolumeElementForcesAndSourcesCoreOnContactPrismSideBase
 Base volume element used to integrate on contact surface (could be extended to other volume elements) mofem_forces_and_sources_volume_element. More...
 
struct  VolumeElementForcesAndSourcesCoreOnSideBase
 Base volume element used to integrate on skeleton. More...
 
struct  BcManager
 Simple interface for fast problem set-up. More...
 
struct  BitRefManager
 Managing BitRefLevels. More...
 
struct  CommInterface
 Managing BitRefLevels. More...
 
struct  WrapMPIComm
 Wrap MPI comminitactor such that is destroyed when is out of scope. More...
 
struct  CoreValue
 
struct  CoreTmp
 
struct  CoreTmp< 0 >
 Core (interface) class. More...
 
struct  CoreTmp<-1 >
 
struct  CutMeshInterface
 Interface to cut meshes. More...
 
struct  DeprecatedCoreInterface
 Deprecated interface functions. More...
 
struct  FieldBlas
 Basic algebra on fields. More...
 
struct  FieldEvaluatorInterface
 Field evaluator interface. More...
 
struct  HangingNodes
 
struct  SetBitRefLevelTool
 tool class with methods used more than twp times More...
 
struct  CreateRowComressedADJMatrix
 Create compressed matrix. More...
 
struct  BlockData
 
struct  IdxDataType
 
struct  IdxDataTypePtr
 
struct  SetOtherLocalGhostVector
 
struct  SetOtherGlobalGhostVector
 
struct  CoreInterface
 Interface. More...
 
struct  ISManager
 Section manager is used to create indexes and sections. More...
 
struct  LogManager
 Log manager is used to build and partition problems. More...
 
struct  PetscData
 
struct  KspMethod
 data structure for ksp (linear solver) context More...
 
struct  SnesMethod
 data structure for snes (nonlinear solver) context More...
 
struct  TSMethod
 data structure for TS (time stepping) context More...
 
struct  BasicMethod
 Data structure to exchange data between mofem and User Loop Methods. More...
 
struct  FEMethod
 structure for User Loop Methods on finite elements More...
 
struct  EntityMethod
 Data structure to exchange data between mofem and User Loop Methods on entities. More...
 
struct  DofMethod
 Data structure to exchange data between mofem and User Loop Methods on entities. More...
 
struct  MatrixManager
 Matrix manager is used to build and partition problems. More...
 
struct  MedInterface
 Interface for load MED files. More...
 
struct  MeshRefinement
 Mesh refinement interface. More...
 
struct  MeshsetsManager
 Interface for managing meshsets containing materials and boundary conditions. More...
 
struct  NodeMergerInterface
 Merge node by collapsing edge between them. More...
 
struct  PipelineManager
 PipelineManager interface. More...
 
struct  PrismInterface
 Create interface from given surface and insert flat prisms in-between. More...
 
struct  PrismsFromSurfaceInterface
 merge node from two bit levels More...
 
struct  ProblemsManager
 Problem manager is used to build and partition problems. More...
 
struct  SeriesRecorder
 
struct  Simple
 Simple interface for fast problem set-up. More...
 
struct  TetGenInterface
 TetGen interface. More...
 
struct  Tools
 Auxiliary tools. More...
 
struct  Version
 
struct  UnknownInterface
 base class for all interface classes More...
 
struct  VecManager
 Vector manager is used to create vectors \mofem_vectors. More...
 
struct  FieldEntityEntFiniteElementAdjacencyMap
 FieldEntityEntFiniteElementAdjacencyMap of mofem finite element and entities. More...
 
struct  FieldEntityEntFiniteElementAdjacencyMap_change_ByWhat
 
struct  GenericCubitBcData
 Generic bc data structure. More...
 
struct  DisplacementCubitBcData
 Definition of the displacement bc data structure. More...
 
struct  ForceCubitBcData
 Definition of the force bc data structure. More...
 
struct  VelocityCubitBcData
 Definition of the velocity bc data structure. More...
 
struct  AccelerationCubitBcData
 Definition of the acceleration bc data structure. More...
 
struct  TemperatureCubitBcData
 Definition of the temperature bc data structure. More...
 
struct  PressureCubitBcData
 Definition of the pressure bc data structure. More...
 
struct  HeatFluxCubitBcData
 Definition of the heat flux bc data structure. More...
 
struct  CfgCubitBcData
 Definition of the cfd_bc data structure. More...
 
struct  CubitMeshSets
 this struct keeps basic methods for moab meshset about material and boundary conditions More...
 
struct  CubitMeshSets_change_add_bit_to_cubit_bc_type
 change meshset type More...
 
struct  CubitMeshSets_change_name
 change meshset name More...
 
struct  CubitMeshSets_change_attributes
 
struct  CubitMeshSets_change_attributes_data_structure
 
struct  CubitMeshSets_change_bc_data_structure
 
struct  DofEntity
 keeps information about DOF on the entity More...
 
struct  interface_DofEntity
 Interface to DofEntity. More...
 
struct  NumeredDofEntity
 keeps information about indexed dofs for the problem More...
 
struct  FEDofEntity
 keeps information about indexed dofs for the finite element More...
 
struct  FENumeredDofEntity
 keeps information about indexed dofs for the finite element More...
 
struct  DofEntity_active_change
 
struct  NumeredDofEntity_part_and_glob_idx_change
 
struct  NumeredDofEntity_part_and_mofem_glob_idx_change
 
struct  NumeredDofEntity_part_and_indices_change
 
struct  NumeredDofEntity_local_idx_change
 
struct  NumeredDofEntity_mofem_index_change
 
struct  NumeredDofEntity_part_and_all_indices_change
 
struct  FiniteElement
 Finite element definition. More...
 
struct  DefaultElementAdjacency
 default adjacency map More...
 
struct  interface_FiniteElementImpl
 Inetface for FE. More...
 
struct  interface_FiniteElement
 
struct  interface_FiniteElement< T, T >
 
struct  EntityCacheDofs
 
struct  EntityCacheNumeredDofs
 
struct  EntFiniteElement
 Finite element data for entity. More...
 
struct  interface_EntFiniteElement
 interface to EntFiniteElement More...
 
struct  NumeredEntFiniteElement
 Partitioned (Indexed) Finite Element in Problem. More...
 
struct  NumeredEntFiniteElement_change_part
 Change finite element part. More...
 
struct  FiniteElement_col_change_bit_add
 Add field to column. More...
 
struct  FiniteElement_row_change_bit_add
 Add field to row. More...
 
struct  FiniteElement_change_bit_add
 Add field to data. More...
 
struct  FiniteElement_col_change_bit_off
 Unset field from column. More...
 
struct  FiniteElement_row_change_bit_off
 Unset field from row. More...
 
struct  FiniteElement_change_bit_off
 Unset field from data. More...
 
struct  FiniteElement_col_change_bit_reset
 Reset field from column. More...
 
struct  FiniteElement_row_change_bit_reset
 Reset field from row. More...
 
struct  FiniteElement_change_bit_reset
 Reset field from data. More...
 
struct  EntityStorage
 
struct  FieldEntity
 Struct keeps handle to entity in the field. More...
 
struct  interface_FieldEntity
 Interface to FieldEntity. More...
 
struct  FieldEntity_change_order
 structure to change FieldEntity order More...
 
struct  interface_RefEntity
 interface to RefEntity More...
 
struct  Field
 Provide data structure for (tensor) field approximation. More...
 
struct  interface_FieldImpl
 Pointer interface for MoFEM::Field. More...
 
struct  interface_Field
 
struct  interface_Field< T, T >
 
struct  GenericAttributeData
 Generic attribute data structure. More...
 
struct  BlockSetAttributes
 Arbitrary block attributes data structure. More...
 
struct  Mat_Elastic
 Elastic material data structure. More...
 
struct  Mat_Thermal
 Thermal material data structure. More...
 
struct  Mat_Moisture
 moisture transport material data structure More...
 
struct  Block_BodyForces
 Body force data structure. More...
 
struct  Mat_Elastic_TransIso
 Transverse Isotropic material data structure. More...
 
struct  Mat_Interf
 Linear interface data structure. More...
 
struct  Mat_Elastic_EberleinHolzapfel1
 Mat_Elastic with Fibres. More...
 
struct  ComposedProblemsData
 
struct  Problem
 keeps basic data about problem More...
 
struct  ProblemChangeRefLevelBitAdd
 add ref level to problem More...
 
struct  ProblemChangeRefLevelBitSet
 set ref level to problem More...
 
struct  ProblemChangeRefLevelBitDofMaskSet
 set prof dof bit ref mask More...
 
struct  ProblemFiniteElementChangeBitAdd
 add finite element to problem More...
 
struct  ProblemChangeRefLevelBitDofMaskAdd
 set prof dof bit ref mask More...
 
struct  ProblemFiniteElementChangeBitUnSet
 remove finite element from problem More...
 
struct  ProblemZeroNbRowsChange
 zero nb. of DOFs in row More...
 
struct  ProblemZeroNbColsChange
 zero nb. of DOFs in col More...
 
struct  ProblemClearNumeredFiniteElementsChange
 clear problem finite elements More...
 
struct  ProblemClearSubProblemData
 Clear sub-problem data structure. More...
 
struct  ProblemClearComposedProblemData
 Clear composed problem data structure. More...
 
struct  RefElement
 keeps data about abstract refined finite element More...
 
struct  RefElement_MESHSET
 keeps data about abstract MESHSET finite element More...
 
struct  RefElement_PRISM
 keeps data about abstract PRISM finite element More...
 
struct  RefElementVolume
 keeps data about abstract TET finite element More...
 
struct  RefElementFace
 keeps data about abstract TRI finite element More...
 
struct  RefElement_EDGE
 keeps data about abstract EDGE finite element More...
 
struct  RefElement_VERTEX
 keeps data about abstract VERTEX finite element More...
 
struct  interface_RefElement
 intrface to RefElement More...
 
struct  BasicEntityData
 PipelineManager data. like access to moab interface and basic tag handlers. More...
 
struct  RefEntityTmp
 
struct  RefEntityTmp< 0 >
 Struct keeps handle to refined handle. More...
 
struct  RefEntityTmp<-1 >
 
struct  RefEntity_change_parent
 change parent More...
 
struct  RefEntity_change_left_shift
 ref mofem entity, left shift More...
 
struct  RefEntity_change_right_shift
 ref mofem entity, right shift More...
 
struct  FieldSeries
 Structure for recording (time) series. More...
 
struct  interface_FieldSeries
 
struct  FieldSeriesStep
 Structure for keeping time and step. More...
 
struct  CubitMeshSets_mi_tag
 MultiIndex Tag for field id. More...
 
struct  CubitMeshSets_mask_meshset_mi_tag
 
struct  CubitMeshSets_name
 
struct  Composite_Cubit_msId_And_MeshSetType_mi_tag
 
struct  BitFieldId_mi_tag
 
struct  Unique_mi_tag
 
struct  DOF_Unique_mi_tag
 
struct  FE_Unique_mi_tag
 
struct  Ent_mi_tag
 
struct  FEEnt_mi_tag
 
struct  EntType_mi_tag
 
struct  FiniteElement_Meshset_mi_tag
 
struct  BitFEId_mi_tag
 
struct  FiniteElement_name_mi_tag
 
struct  SideNumber_mi_tag
 
struct  EntDofIdx_mi_tag
 
struct  Space_mi_tag
 
struct  Idx_mi_tag
 
struct  PetscGlobalIdx_mi_tag
 
struct  PetscLocalIdx_mi_tag
 
struct  Part_mi_tag
 
struct  Ent_Ent_mi_tag
 
struct  Ent_Owner_mi_tag
 
struct  Unique_Ent_mi_tag
 
struct  Unique_FiniteElement_mi_tag
 
struct  Ent_FiniteElement_mi_tag
 
struct  Meshset_mi_tag
 
struct  Order_mi_tag
 MultiIndex Tag for field order. More...
 
struct  FieldName_mi_tag
 MultiIndex Tag for field name. More...
 
struct  BitFieldId_space_mi_tag
 
struct  BitProblemId_mi_tag
 
struct  Problem_mi_tag
 
struct  Ent_ParallelStatus
 
struct  Proc_mi_tag
 
struct  Composite_mi_tag
 
struct  Composite_Unique_mi_tag
 
struct  Composite_EntType_and_ParentEntType_mi_tag
 
struct  Composite_ParentEnt_And_EntType_mi_tag
 
struct  Composite_ParentEnt_And_BitsOfRefinedEdges_mi_tag
 
struct  Composite_Name_And_Ent_And_EntDofIdx_mi_tag
 
struct  Composite_Ent_And_EntDofIdx_mi_tag
 
struct  Composite_Name_And_Ent_mi_tag
 
struct  Composite_Part_And_Order_mi_tag
 
struct  Composite_Name_Ent_Order_And_CoeffIdx_mi_tag
 
struct  Composite_Ent_Order_And_CoeffIdx_mi_tag
 
struct  Composite_Name_Ent_And_Part_mi_tag
 
struct  Composite_Name_And_Part_mi_tag
 
struct  Composite_Ent_and_ShortId_mi_tag
 
struct  Composite_EntType_and_Space_mi_tag
 
struct  SeriesID_mi_tag
 
struct  SeriesName_mi_tag
 
struct  Composite_SeriesID_And_Step_mi_tag
 
struct  Composite_SeriesName_And_Step_mi_tag
 
struct  Composite_SeriesName_And_Time_mi_tag
 
struct  PairNameFEMethodPtr
 
struct  BasicMethodPtr
 
struct  DMCtx
 PETSc Discrete Manager data structure. More...
 
struct  KspCtx
 Interface for linear (KSP) solver. More...
 
struct  SnesCtx
 Interface for nonlinear (SNES) solver. More...
 
struct  TsCtx
 Interface for Time Stepping (TS) solver. More...
 
struct  BlockMatData
 
struct  OpBaseImpl< USER_ASSEMBLE, EleOp >
 
struct  NestedMatrixContainer
 
struct  MpEntityStorage
 
struct  OpSetNestedMatrix
 
struct  OpUnSetNestedMatrix
 

Typedefs

template<typename T >
using ShardVec = boost::shared_ptr< std::vector< T > >
 
using DofsAllocator = ublas::unbounded_array< FEDofEntity *, std::allocator< FEDofEntity * > >
 
using VectorDofs = ublas::vector< FEDofEntity *, DofsAllocator >
 
using FieldEntAllocator = ublas::unbounded_array< FieldEntity *, std::allocator< FieldEntity * > >
 
using VectorFieldEntities = ublas::vector< FieldEntity *, FieldEntAllocator >
 
using EdgeElementForcesAndSourcesCore = EdgeElementForcesAndSourcesCoreSwitch< 0 >
 Edge finite element default. More...
 
using FaceElementForcesAndSourcesCore = FaceElementForcesAndSourcesCoreSwitch< 0 >
 Face finite element default. More...
 
using ScalarFun = boost::function< double(const double, const double, const double)>
 Scalar function type. More...
 
using ConstantFun = boost::function< double()>
 Constant function type. More...
 
template<int DIM>
using VectorFun = boost::function< FTensor::Tensor1< double, DIM >(const double, const double, const double)>
 Vector function type. More...
 
using OpCalculateHOJacForFace = OpCalculateHOJacForFaceImpl< 2 >
 
using OpCalculateHOJacForFaceEmbeddedIn3DSpace = OpCalculateHOJacForFaceImpl< 3 >
 
using VolumeElementForcesAndSourcesCore = VolumeElementForcesAndSourcesCoreSwitch< 0 >
 Volume finite element default. More...
 
using VolumeElementForcesAndSourcesCoreOnContactPrismSide = VolumeElementForcesAndSourcesCoreOnContactPrismSideSwitch< 0 >
 Volume element used to integrate on contact element (could be extended for other volume elements) mofem_forces_and_sources_volume_element. More...
 
using VolumeElementForcesAndSourcesCoreOnSide = VolumeElementForcesAndSourcesCoreOnSideSwitch< 0 >
 Volume element used to integrate on skeleton. More...
 
using Core = CoreTmp< 0 >
 
using Sev = MoFEM::LogManager::SeverityLevel
 
typedef multi_index_container< boost::shared_ptr< RefElement >, indexed_by< ordered_unique< tag< Ent_mi_tag >, const_mem_fun< RefElement::interface_type_RefEntity, EntityHandle, &RefElement::getEnt > >, ordered_non_unique< tag< Ent_Ent_mi_tag >, const_mem_fun< RefElement::interface_type_RefEntity, EntityHandle, &RefElement::getParentEnt > >, ordered_non_unique< tag< Composite_ParentEnt_And_BitsOfRefinedEdges_mi_tag >, composite_key< RefElement, const_mem_fun< RefElement::interface_type_RefEntity, EntityHandle, &RefElement::getParentEnt >, const_mem_fun< RefElement, int, &RefElement::getBitRefEdgesUlong > > > > > RefElement_multiIndex_parents_view
 
using Interface = DeprecatedCoreInterface
 
typedef CubitMeshSet_multiIndex::index< CubitMeshSets_mi_tag >::type CubitMeshsetByType
 
typedef CubitMeshSet_multiIndex::index< CubitMeshSets_mask_meshset_mi_tag >::type CubitMeshsetByMask
 
typedef CubitMeshSet_multiIndex::index< CubitMeshSets_name >::type CubitMeshsetByName
 
typedef CubitMeshSet_multiIndex::index< CubitMeshSets_mi_tag >::type CubitMeshsetById
 
typedef multi_index_container< CubitMeshSets, indexed_by< hashed_unique< tag< Meshset_mi_tag >, member< CubitMeshSets, EntityHandle, &CubitMeshSets::meshset > >, ordered_non_unique< tag< CubitMeshSets_mi_tag >, const_mem_fun< CubitMeshSets, unsigned long int, &CubitMeshSets::getBcTypeULong > >, ordered_non_unique< tag< CubitMeshSets_mask_meshset_mi_tag >, const_mem_fun< CubitMeshSets, unsigned long int, &CubitMeshSets::getMaksedBcTypeULong > >, ordered_non_unique< tag< CubitMeshSets_name >, const_mem_fun< CubitMeshSets, std::string, &CubitMeshSets::getName > >, hashed_unique< tag< Composite_Cubit_msId_And_MeshSetType_mi_tag >, composite_key< CubitMeshSets, const_mem_fun< CubitMeshSets, int, &CubitMeshSets::getMeshsetId >, const_mem_fun< CubitMeshSets, unsigned long int, &CubitMeshSets::getMaksedBcTypeULong > > > > > CubitMeshSet_multiIndex
 Stores data about meshsets (see CubitMeshSets) storing data about boundary conditions, interfaces, sidesets, nodests, blocksets. More...
 
using DofEntityByUId = DofEntity_multiIndex::index< Unique_mi_tag >::type
 
using DofEntityByEnt = DofEntity_multiIndex::index< Ent_mi_tag >::type
 Dof multi-index by entity. More...
 
using DofEntity_multiIndex_uid_view = multi_index_container< boost::shared_ptr< DofEntity >, indexed_by< ordered_unique< const_mem_fun< DofEntity, UId, &DofEntity::getLocalUniqueId > > > >
 multi-index view on DofEntity by uid More...
 
using DofEntity_multiIndex_global_uid_view = multi_index_container< boost::shared_ptr< DofEntity >, indexed_by< ordered_unique< const_mem_fun< DofEntity, UId, &DofEntity::getGlobalUniqueId > > > >
 multi-index view on DofEntity by uid More...
 
typedef std::vector< boost::weak_ptr< DofEntity > > DofEntity_vector_view
 vector view on DofEntity by uid More...
 
typedef multi_index_container< boost::shared_ptr< DofEntity >, indexed_by< ordered_unique< const_mem_fun< DofEntity, UId, &DofEntity::getLocalUniqueId > >, ordered_non_unique< const_mem_fun< DofEntity, char, &DofEntity::getActive > > > > DofEntity_multiIndex_active_view
 multi-index view on DofEntity activity More...
 
using FEDofEntityByUId = FEDofEntity_multiIndex::index< Unique_mi_tag >::type
 Dof entity multi-index by UId and entity. More...
 
using FENumeredDofEntityByUId = FENumeredDofEntity_multiIndex::index< Unique_mi_tag >::type
 Dof entity multi-index by UId. More...
 
using FENumeredDofEntityByEnt = FENumeredDofEntity_multiIndex::index< Ent_mi_tag >::type
 Numbered DoF multi-index by entity. More...
 
using NumeredDofEntityByUId = NumeredDofEntity_multiIndex::index< Unique_mi_tag >::type
 Numbered DoF multi-index by UId. More...
 
using NumeredDofEntityByLocalIdx = NumeredDofEntity_multiIndex::index< PetscLocalIdx_mi_tag >::type
 Numbered DoF multi-index by local index. More...
 
using NumeredDofEntityByEnt = NumeredDofEntity_multiIndex::index< Ent_mi_tag >::type
 Numbered DoF multi-index by entity. More...
 
using NumeredDofEntity_multiIndex_uid_view_ordered = multi_index_container< boost::shared_ptr< NumeredDofEntity >, indexed_by< ordered_unique< const_mem_fun< NumeredDofEntity::interface_type_DofEntity, UId, &NumeredDofEntity::getLocalUniqueId > > > >
 
using NumeredDofEntity_multiIndex_idx_view_hashed = multi_index_container< boost::shared_ptr< NumeredDofEntity >, indexed_by< hashed_unique< const_mem_fun< NumeredDofEntity, DofIdx, &NumeredDofEntity::getDofIdx > >> >
 
using NumeredDofEntity_multiIndex_petsc_local_dof_view_ordered_non_unique = multi_index_container< boost::shared_ptr< NumeredDofEntity >, indexed_by< ordered_non_unique< const_mem_fun< NumeredDofEntity, DofIdx, &NumeredDofEntity::getPetscLocalDofIdx > >> >
 
using NumeredDofEntity_multiIndex_coeff_idx_ordered_non_unique = multi_index_container< boost::shared_ptr< NumeredDofEntity >, indexed_by< ordered_non_unique< const_mem_fun< NumeredDofEntity::interface_type_DofEntity, FieldCoefficientsNumber, &NumeredDofEntity::getDofCoeffIdx > >> >
 
typedef boost::function< MoFEMErrorCode(Interface &moab, const Field &field, const EntFiniteElement &fe, Range &adjacency)> ElementAdjacencyFunct
 user adjacency function More...
 
using CacheTuple = std::tuple< std::vector< EntityCacheDofs >, std::vector< EntityCacheNumeredDofs >, std::vector< EntityCacheNumeredDofs > >
 
using CacheTupleWeakPtr = boost::weak_ptr< CacheTuple >
 
using CacheTupleSharedPtr = boost::shared_ptr< CacheTuple >
 
typedef EntFiniteElement_multiIndex::index< FiniteElement_name_mi_tag >::type EntFiniteElementByName
 Entity finite element multi-index by finite element name. More...
 
typedef NumeredEntFiniteElement_multiIndex::index< FiniteElement_name_mi_tag >::type NumeredEntFiniteElementbyName
 Entity finite element multi-index by finite element name. More...
 
typedef NumeredEntFiniteElement_multiIndex::index< Composite_Name_And_Part_mi_tag >::type NumeredEntFiniteElementbyNameAndPart
 Entity finite element multi-index by finite element name and partition. More...
 
using FieldEntityByUId = FieldEntity_multiIndex::index< Unique_mi_tag >::type
 Entity index by field name. More...
 
typedef multi_index_container< boost::shared_ptr< FieldEntity >, indexed_by< sequenced<>, ordered_non_unique< tag< Ent_mi_tag >, const_mem_fun< FieldEntity::interface_type_RefEntity, EntityHandle, &FieldEntity::getEnt > > > > FieldEntity_multiIndex_ent_view
 
typedef multi_index_container< boost::shared_ptr< FieldEntity >, indexed_by< sequenced<>, ordered_non_unique< tag< Composite_EntType_and_Space_mi_tag >, composite_key< FieldEntity, const_mem_fun< FieldEntity::interface_type_RefEntity, EntityType, &FieldEntity::getEntType >, const_mem_fun< FieldEntity::interface_type_Field, FieldSpace, &FieldEntity::getSpace > > > > > FieldEntity_multiIndex_spaceType_view
 
typedef std::vector< boost::weak_ptr< FieldEntity > > FieldEntity_vector_view
 
typedef boost::function< int(const int order)> FieldOrderFunct
 user adjacency function More...
 
typedef FieldOrderFunct FieldOrderTable[MBMAXTYPE]
 user adjacency function table More...
 
typedef multi_index_container< boost::shared_ptr< Field >, indexed_by< ordered_unique< tag< BitFieldId_mi_tag >, const_mem_fun< Field, const BitFieldId &, &Field::getId >, LtBit< BitFieldId > > > > Field_multiIndex_view
 
typedef multi_index_container< boost::shared_ptr< RefElement >, indexed_by< ordered_unique< tag< Ent_mi_tag >, const_mem_fun< RefElement::interface_type_RefEntity, EntityHandle, &RefElement::getEnt > > > > RefElement_multiIndex
 
using RefEntity = RefEntityTmp< 0 >
 
using RefEntity_multiIndex = multi_index_container< boost::shared_ptr< RefEntity >, indexed_by< ordered_unique< tag< Ent_mi_tag >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getEnt > >, ordered_non_unique< tag< Ent_Ent_mi_tag >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getParentEnt > >, ordered_non_unique< tag< Composite_EntType_and_ParentEntType_mi_tag >, composite_key< RefEntity, const_mem_fun< RefEntity, EntityType, &RefEntity::getEntType >, const_mem_fun< RefEntity, EntityType, &RefEntity::getParentEntType > > >, ordered_non_unique< tag< Composite_ParentEnt_And_EntType_mi_tag >, composite_key< RefEntity, const_mem_fun< RefEntity, EntityType, &RefEntity::getEntType >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getParentEnt > >> > >
 
using RefEntity_multiIndex_view_by_hashed_parent_entity = multi_index_container< boost::shared_ptr< RefEntity >, indexed_by< hashed_non_unique< const_mem_fun< RefEntity, EntityHandle, &RefEntity::getParentEnt > >, hashed_unique< tag< Composite_EntType_and_ParentEntType_mi_tag >, composite_key< boost::shared_ptr< RefEntity >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getEnt >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getParentEnt > >> > >
 multi-index view of RefEntity by parent entity More...
 
using RefEntity_multiIndex_view_by_ordered_parent_entity = multi_index_container< boost::shared_ptr< RefEntity >, indexed_by< ordered_non_unique< const_mem_fun< RefEntity, EntityHandle, &RefEntity::getParentEnt > >, hashed_unique< tag< Composite_EntType_and_ParentEntType_mi_tag >, composite_key< boost::shared_ptr< RefEntity >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getEnt >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getParentEnt > >> > >
 
using RefEntity_multiIndex_view_sequence_ordered_view = multi_index_container< boost::shared_ptr< RefEntity >, indexed_by< sequenced<>, ordered_unique< tag< Ent_mi_tag >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getEnt > >> >
 
typedef multi_index_container< FieldSeries, indexed_by< ordered_unique< tag< SeriesID_mi_tag >, const_mem_fun< FieldSeries, EntityID, &FieldSeries::get_meshset_id > >, ordered_unique< tag< SeriesName_mi_tag >, const_mem_fun< FieldSeries, boost::string_ref, &FieldSeries::getNameRef > > > > Series_multiIndex
 Series multi index. More...
 
typedef multi_index_container< FieldSeriesStep, indexed_by< ordered_unique< tag< Composite_SeriesID_And_Step_mi_tag >, composite_key< FieldSeriesStep, const_mem_fun< FieldSeriesStep::interface_type_FieldSeries, EntityID, &FieldSeriesStep::get_meshset_id >, member< FieldSeriesStep, int, &FieldSeriesStep::step_number > > >, ordered_unique< tag< Composite_SeriesName_And_Step_mi_tag >, composite_key< FieldSeriesStep, const_mem_fun< FieldSeriesStep::interface_type_FieldSeries, boost::string_ref, &FieldSeriesStep::getNameRef >, member< FieldSeriesStep, int, &FieldSeriesStep::step_number > > >, ordered_non_unique< tag< SeriesName_mi_tag >, const_mem_fun< FieldSeriesStep::interface_type_FieldSeries, boost::string_ref, &FieldSeriesStep::getNameRef > >, ordered_non_unique< tag< Composite_SeriesName_And_Time_mi_tag >, composite_key< FieldSeriesStep, const_mem_fun< FieldSeriesStep::interface_type_FieldSeries, boost::string_ref, &FieldSeriesStep::getNameRef >, const_mem_fun< FieldSeriesStep, double, &FieldSeriesStep::get_time > > > > > SeriesStep_multiIndex
 Step multi index. More...
 
typedef std::deque< PairNameFEMethodPtrFEMethodsSequence
 
typedef std::deque< BasicMethodPtrBasicMethodsSequence
 
typedef multi_index_container< BlockMatData, indexed_by< ordered_unique< composite_key< BlockMatData, member< BlockMatData, std::string, &BlockMatData::rowField >, member< BlockMatData, std::string, &BlockMatData::colField >, member< BlockMatData, EntityType, &BlockMatData::rowType >, member< BlockMatData, EntityType, &BlockMatData::colType >, member< BlockMatData, int, &BlockMatData::rowSide >, member< BlockMatData, int, &BlockMatData::colSide > > >, ordered_non_unique< composite_key< BlockMatData, member< BlockMatData, std::string, &BlockMatData::rowField >, member< BlockMatData, std::string, &BlockMatData::colField >, member< BlockMatData, EntityType, &BlockMatData::rowType >, member< BlockMatData, EntityType, &BlockMatData::colType > > >, ordered_non_unique< composite_key< BlockMatData, member< BlockMatData, std::string, &BlockMatData::rowField >, member< BlockMatData, std::string, &BlockMatData::colField > > >, ordered_non_unique< member< BlockMatData, std::string, &BlockMatData::rowField > >, ordered_non_unique< member< BlockMatData, std::string, &BlockMatData::colField > > > > BlockMatContainer
 
using EntData = DataForcesAndSourcesCore::EntData
 
using DomainEle = VolumeElementForcesAndSourcesCore
 
using DomainEleOp = DomainEle::UserDataOperator
 
using DomainEleOpAssembly = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::OpBase
 
using SkeletonEle = FaceElementForcesAndSourcesCore
 
using SkeletonEleOp = SkeletonEle::UserDataOperator
 
using SkeletonEleOpAssembly = FormsIntegrators< SkeletonEleOp >::Assembly< USER_ASSEMBLE >::OpBase
 
using BoundaryEle = FaceElementForcesAndSourcesCore
 
using BoundaryEleOp = BoundaryEle::UserDataOperator
 
using BoundaryEleOpAssembly = FormsIntegrators< BoundaryEleOp >::Assembly< USER_ASSEMBLE >::OpBase
 
using DomainSideEle = VolumeElementForcesAndSourcesCoreOnSide
 
using DomainSideEleOp = DomainSideEle::UserDataOperator
 
using DomainSideEleOpAssembly = FormsIntegrators< DomainSideEleOp >::Assembly< USER_ASSEMBLE >::OpBase
 
Scalar values
using OpCalculateScalarFieldValuesDot = OpCalculateScalarFieldValuesFromPetscVecImpl< PetscData::CTX_SET_X_T >
 
using OpCalculateScalarFieldValuesDotDot = OpCalculateScalarFieldValuesFromPetscVecImpl< PetscData::CTX_SET_X_TT >
 
using OpCalculateScalarValuesDot = OpCalculateScalarFieldValuesDot
 
Vector field values at integration points
template<int Tensor_Dim>
using OpCalculateVectorFieldValuesDot = OpCalculateVectorFieldValuesFromPetscVecImpl< Tensor_Dim, PetscData::CTX_SET_X_T >
 Get time direvatives of values at integration pts for tensor filed rank 1, i.e. vector field. More...
 
template<int Tensor_Dim>
using OpCalculateVectorFieldValuesDotDot = OpCalculateVectorFieldValuesFromPetscVecImpl< Tensor_Dim, PetscData::CTX_SET_X_TT >
 Get second time direvatives of values at integration pts for tensor filed rank 1, i.e. vector field. More...
 
Operators for faces
using OpSetInvJacHcurlFace = OpSetInvJacHcurlFaceImpl< 2 >
 
using OpSetInvJacHcurlFaceEmbeddedIn3DSpace = OpSetInvJacHcurlFaceImpl< 3 >
 
using OpSetContravariantPiolaTransformOnFace2D = OpSetContravariantPiolaTransformOnFace2DImpl< 2 >
 
using OpSetContravariantPiolaTransformOnFace2DEmbeddedIn3DSpace = OpSetContravariantPiolaTransformOnFace2DImpl< 3 >
 
Operators for edges
using OpSetContrariantPiolaTransformOnEdge = OpSetContravariantPiolaTransformOnEdge2D
 

Enumerations

enum  AssemblyType { PETSC , USER_ASSEMBLE , LAST_ASSEMBLE }
 [Storage and set boundary conditions] More...
 
enum  IntegrationType { GAUSS , USER_INTEGRATION , LAST_INTEGRATION }
 Form integrator integration types. More...
 

Functions

PetscErrorCode PetscOptionsGetInt (PetscOptions *, const char pre[], const char name[], PetscInt *ivalue, PetscBool *set)
 
PetscErrorCode PetscOptionsGetReal (PetscOptions *, const char pre[], const char name[], PetscReal *dval, PetscBool *set)
 
PetscErrorCode PetscOptionsGetScalar (PetscOptions *, const char pre[], const char name[], PetscScalar *dval, PetscBool *set)
 
PetscErrorCode PetscOptionsGetString (PetscOptions *, const char pre[], const char name[], char str[], size_t size, PetscBool *set)
 
PetscErrorCode PetscOptionsGetBool (PetscOptions *, const char pre[], const char name[], PetscBool *bval, PetscBool *set)
 
PetscErrorCode PetscOptionsGetRealArray (PetscOptions *, const char pre[], const char name[], PetscReal dval[], PetscInt *nmax, PetscBool *set)
 
PetscErrorCode PetscOptionsGetEList (PetscOptions *, const char pre[], const char name[], const char *const *list, PetscInt next, PetscInt *value, PetscBool *set)
 
PetscErrorCode PetscOptionsGetIntArray (PetscOptions options, const char pre[], const char name[], PetscInt dvalue[], PetscInt *nmax, PetscBool *set)
 
PetscErrorCode PetscOptionsGetScalarArray (PetscOptions options, const char pre[], const char name[], PetscScalar dvalue[], PetscInt *nmax, PetscBool *set)
 
template<typename T >
PetscObject getPetscObject (T obj)
 
MPI_Comm getCommFromPetscObject (PetscObject obj)
 Get the Comm From Petsc Object object. More...
 
SmartPetscObj< Vec > smartVectorDuplicate (SmartPetscObj< Vec > &vec)
 Create duplicate vector of smart vector. More...
 
SmartPetscObj< Vec > smartVectorDuplicate (Vec &vec)
 
SmartPetscObj< Mat > smartMatDuplicate (Mat &mat, MatDuplicateOption op)
 
SmartPetscObj< Mat > smartMatDuplicate (SmartPetscObj< Mat > &mat, MatDuplicateOption op)
 
template<typename T1 >
auto getVectorAdaptor (T1 ptr, const size_t n)
 Get Vector adaptor. More...
 
template<typename T1 >
auto getMatrixAdaptor (T1 ptr, const size_t n, const size_t m)
 Get Matrix adaptor. More...
 
template<class X >
std::string toString (X x)
 
template<int S = 1, class T , class A >
static auto getFTensor0FromVec (ublas::vector< T, A > &data)
 Get tensor rank 0 (scalar) form data vector. More...
 
template<int Tensor_Dim, int S = 1, class T , class L , class A >
FTensor::Tensor1< FTensor::PackPtr< T *, S >, Tensor_Dim > getFTensor1FromMat (ublas::matrix< T, L, A > &data)
 Get tensor rank 1 (vector) form data matrix. More...
 
template<int Tensor_Dim, int S = 1>
auto getFTensor1FromMat (MatrixDouble &data)
 Get tensor rank 1 (vector) form data matrix (specialization) More...
 
template<int Tensor_Dim0, int Tensor_Dim1, class T , class L , class A >
FTensor::Tensor2< FTensor::PackPtr< T *, 1 >, Tensor_Dim0, Tensor_Dim1 > getFTensor2FromMat (ublas::matrix< T, L, A > &data)
 Get tensor rank 2 (matrix) form data matrix. More...
 
template<>
FTensor::Tensor2< FTensor::PackPtr< double *, 1 >, 3, 3 > getFTensor2FromMat (MatrixDouble &data)
 Get tensor rank 2 (matrix) form data matrix (specialization) More...
 
template<int Tensor_Dim, int S, class T , class L , class A >
static auto getFTensor2SymmetricFromMat (ublas::matrix< T, L, A > &data)
 Get symmetric tensor rank 2 (matrix) form data matrix. More...
 
template<int Tensor_Dim, int S = 1>
static auto getFTensor2SymmetricFromMat (MatrixDouble &data)
 
template<int Tensor_Dim01, int Tensor_Dim23, int S = 1, class T , class L , class A >
static FTensor::Ddg< FTensor::PackPtr< T *, 1 >, Tensor_Dim01, Tensor_Dim23 > getFTensor4DdgFromMat (ublas::matrix< T, L, A > &data)
 Get symmetric tensor rank 4 on first two and last indices from form data matrix. More...
 
template<int Tensor_Dim01, int Tensor_Dim23, int S = 1>
static auto getFTensor4DdgFromMat (MatrixDouble &data)
 
template<int Tensor_Dim01, int Tensor_Dim2, int S = 1, class T , class L , class A >
static FTensor::Dg< FTensor::PackPtr< T *, 1 >, Tensor_Dim01, Tensor_Dim2 > getFTensor3DgFromMat (ublas::matrix< T, L, A > &data)
 Get symmetric tensor rank 3 on the first two indices from form data matrix. More...
 
template<int Tensor_Dim01, int Tensor_Dim2, int S = 1>
static auto getFTensor3DgFromMat (MatrixDouble &data)
 
template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S = 1, class T , class L , class A >
static FTensor::Tensor4< FTensor::PackPtr< T *, 1 >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 > getFTensor4FromMat (ublas::matrix< T, L, A > &data)
 Get tensor rank 4 (non symmetric) form data matrix. More...
 
template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S = 1>
static auto getFTensor4FromMat (MatrixDouble &data)
 
template<int DIM>
FTensor::Tensor1< FTensor::PackPtr< double *, DIM >, DIM > getFTensor1FromPtr (double *ptr)
 Make Tensor1 from pointer. More...
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 2 >, 2 > getFTensor1FromPtr< 2 > (double *ptr)
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 3 >, 3 > getFTensor1FromPtr< 3 > (double *ptr)
 
template<int DIM1, int DIM2>
FTensor::Tensor2< FTensor::PackPtr< double *, DIM1 *DIM2 >, DIM1, DIM2 > getFTensor2FromPtr (double *ptr)
 Make Tensor2 from pointer. More...
 
template<>
FTensor::Tensor2< FTensor::PackPtr< double *, 6 >, 3, 2 > getFTensor2FromPtr< 3, 2 > (double *ptr)
 
template<>
FTensor::Tensor2< FTensor::PackPtr< double *, 9 >, 3, 3 > getFTensor2FromPtr< 3, 3 > (double *ptr)
 
template<int DIM, int S>
FTensor::Tensor1< FTensor::PackPtr< double *, S >, DIM > getFTensor1FromArray (VectorDouble &data)
 Get FTensor1 from array. More...
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 2 >, 2 > getFTensor1FromArray (VectorDouble &data)
 
template<int DIM, int S>
FTensor::Tensor1< FTensor::PackPtr< double *, S >, DIM > getFTensor1FromMat (MatrixDouble &data, const size_t rr)
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 1 >, 2 > getFTensor1FromMat (MatrixDouble &data, const size_t rr)
 
template<int DIM, int S>
FTensor::Tensor1< FTensor::PackPtr< double *, S >, DIM > getFTensor1FromArrayDiag (MatrixDouble &data, const size_t rr)
 Get FTensor1 from array. More...
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 2 >, 2 > getFTensor1FromArrayDiag (MatrixDouble &data, const size_t rr)
 
template<int DIM1, int DIM2, int S>
FTensor::Tensor2< FTensor::PackPtr< double *, S >, DIM1, DIM2 > getFTensor2FromArray (MatrixDouble &data, const size_t rr)
 Get FTensor2 from array. More...
 
template<>
FTensor::Tensor2< FTensor::PackPtr< double *, 2 >, 2, 2 > getFTensor2FromArray (MatrixDouble &data, const size_t rr)
 
MoFEMErrorCode computeMatrixInverse (MatrixDouble &mat)
 compute matrix inverse with lapack dgetri More...
 
MoFEMErrorCode solveLinearSystem (MatrixDouble &mat, VectorDouble &f)
 solve linear system with lapack dgesv More...
 
MoFEMErrorCode solveLinearSystem (const MatrixDouble &mat, VectorDouble &f)
 Solve linear system of equations using Lapack. More...
 
MoFEMErrorCode computeEigenValuesSymmetric (const MatrixDouble &mat, VectorDouble &eig, MatrixDouble &eigen_vec)
 compute eigenvalues of a symmetric matrix using lapack dsyev More...
 
template<int DIM>
MoFEMErrorCode computeEigenValuesSymmetric (FTensor::Tensor2< double, DIM, DIM > &eigen_vec, FTensor::Tensor1< double, DIM > &eig)
 compute eigenvalues of a symmetric matrix using lapack dsyev More...
 
template<int DIM>
MoFEMErrorCode computeEigenValuesSymmetric (const FTensor::Tensor2_symmetric< FTensor::PackPtr< double *, 1 >, DIM > &mat, FTensor::Tensor1< double, DIM > &eig, FTensor::Tensor2< double, DIM, DIM > &eigen_vec)
 compute eigenvalues of a symmetric tensor using lapack dsyev More...
 
template<int DIM>
MoFEMErrorCode computeEigenValuesSymmetric (const FTensor::Tensor2_symmetric< double, DIM > &mat, FTensor::Tensor1< double, DIM > &eig, FTensor::Tensor2< double, DIM, DIM > &eigen_vec)
 compute eigenvalues of a symmetric tensor using lapack dsyev More...
 
template<class T >
static double dEterminant (T &t)
 Calculate the determinant of a 3x3 matrix or a tensor of rank 2. More...
 
template<int Tensor_Dim, class T , class L , class A >
MoFEMErrorCode invertTensor3by3 (ublas::matrix< T, L, A > &jac_data, ublas::vector< T, A > &det_data, ublas::matrix< T, L, A > &inv_jac_data)
 Calculate inverse of tensor rank 2 at integration points. More...
 
template<>
MoFEMErrorCode invertTensor3by3< 3, double, ublas::row_major, DoubleAllocator > (MatrixDouble &jac_data, VectorDouble &det_data, MatrixDouble &inv_jac_data)
 
template<class T1 , class T2 >
MoFEMErrorCode determinantTensor3by3 (T1 &t, T2 &det)
 Calculate determinant 3 by 3. More...
 
template<class T1 , class T2 >
MoFEMErrorCode determinantTensor2by2 (T1 &t, T2 &det)
 Calculate determinant 2 by 2. More...
 
template<class T1 , class T2 , class T3 >
MoFEMErrorCode invertTensor3by3 (T1 &t, T2 &det, T3 &inv_t)
 Calculate matrix inverse 3 by 3. More...
 
template<class T1 , class T2 , class T3 >
MoFEMErrorCode invertTensor2by2 (T1 &t, T2 &det, T3 &inv_t)
 Calculate matrix inverse 2 by 2. More...
 
template<typename Extractor , typename Iterator >
moab::Range::iterator insertOrdered (Range &r, Extractor, Iterator begin_iter, Iterator end_iter)
 Insert ordered mofem multi-index into range. More...
 
template<typename MI , typename MO = Modify_change_nothing>
MoFEMErrorCode reconstructMultiIndex (const MI &mi, MO &&mo=Modify_change_nothing())
 Template used to reconstruct multi-index. More...
 
void tet_type_6 (moab::Interface &moab, const EntityHandle *conn, const EntityHandle *edge_new_nodes, EntityHandle *new_tets_conn)
 
int tet_type_5 (moab::Interface &moab, const EntityHandle *conn, const EntityHandle *edge_new_nodes, EntityHandle *new_tets_conn)
 
int tet_type_4 (const EntityHandle *conn, const int *split_edges, const EntityHandle *edge_new_nodes, EntityHandle *new_tets_conn)
 
int tet_type_3 (const EntityHandle *conn, const int *split_edges, const EntityHandle *edge_new_nodes, EntityHandle *new_tets_conn)
 
int tet_type_2 (const EntityHandle *conn, const int *split_edges, const EntityHandle *edge_new_nodes, EntityHandle *new_tets_conn)
 
void tet_type_1 (const EntityHandle *conn, const int split_edge, const EntityHandle edge_new_node, EntityHandle *new_tets_conn)
 
MoFEMErrorCode tri_type_3 (const EntityHandle *conn, const BitRefEdges split_edges, const EntityHandle *edge_new_nodes, EntityHandle *new_tris_conn)
 
MoFEMErrorCode prism_type_1 (const EntityHandle *conn, const BitRefEdges split_edges, const EntityHandle *edge_new_nodes, EntityHandle *new_prism_conn)
 
MoFEMErrorCode prism_type_2 (const EntityHandle *conn, const BitRefEdges split_edges, const EntityHandle *edge_new_nodes, EntityHandle *new_prism_conn)
 
MoFEMErrorCode prism_type_3 (const EntityHandle *conn, const BitRefEdges split_edges, const EntityHandle *edge_new_nodes, EntityHandle *new_prism_conn)
 
MoFEMErrorCode quad_split_all_edges (const EntityHandle *conn, const EntityHandle *edge_new_nodes, EntityHandle *new_quad_conn)
 
MoFEMErrorCode Hcurl_Ainsworth_EdgeBaseFunctions_MBTET (int *sense, int *p, double *N, double *diffN, double *edgeN[], double *diff_edgeN[], int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Edge based H-curl base functions on tetrahedral. More...
 
MoFEMErrorCode Hcurl_Ainsworth_EdgeBaseFunctions_MBTET_ON_EDGE (int sense, int p, double *N, double *diffN, double *edgeN, double *diff_edgeN, int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Edge based H-curl base functions on edge. More...
 
MoFEMErrorCode Hcurl_Ainsworth_EdgeBaseFunctions_MBTET_ON_FACE (int *sense, int *p, double *N, double *diffN, double *edgeN[], double *diff_edgeN[], int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Edge based H-curl base functions on face. More...
 
MoFEMErrorCode Hcurl_Ainsworth_EdgeBasedFaceFunctions_MBTET (int *faces_nodes, int *p, double *N, double *diffN, double *phi_f_e[4][3], double *diff_phi_f_e[4][3], int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Face edge base functions of Hcurl space on tetrahedral. More...
 
MoFEMErrorCode Hcurl_Ainsworth_EdgeBasedFaceFunctions_MBTET_ON_FACE (int *faces_nodes, int p, double *N, double *diffN, double *phi_f_e[3], double *diff_phi_f_e[3], int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Face edge base functions of Hcurl space. More...
 
MoFEMErrorCode Hcurl_Ainsworth_BubbleFaceFunctions_MBTET (int *faces_nodes, int *p, double *N, double *diffN, double *phi_f[4], double *diff_phi_f[4], int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Face edge base functions of Hcurl space on face on tetrahedral. More...
 
MoFEMErrorCode Hcurl_Ainsworth_BubbleFaceFunctions_MBTET_ON_FACE (int *faces_nodes, int p, double *N, double *diffN, double *phi_f, double *diff_phi_f, int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Face edge base functions of Hcurl space on face. More...
 
MoFEMErrorCode Hcurl_Ainsworth_FaceInteriorFunctions_MBTET (int *faces_nodes, int p, double *N, double *diffN, double *phi_v, double *diff_phi_v, int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Face base interior function. More...
 
MoFEMErrorCode Hcurl_Ainsworth_VolumeInteriorFunctions_MBTET (int p, double *N, double *diffN, double *phi_v, double *diff_phi_v, int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Volume interior function. More...
 
MoFEMErrorCode Hcurl_Ainsworth_FaceFunctions_MBTET (int *face_nodes, int *p, double *N, double *diffN, double *phi_f[4], double *diff_phi_f[4], int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Face H-curl functions. More...
 
MoFEMErrorCode Hcurl_Ainsworth_FaceFunctions_MBTET_ON_FACE (int *faces_nodes, int p, double *N, double *diffN, double *phi_f, double *diff_phi_f, int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Face H-curl functions. More...
 
MoFEMErrorCode Hcurl_Ainsworth_VolumeFunctions_MBTET (int p, double *N, double *diffN, double *phi_v, double *diff_phi_v, int nb_integration_pts, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 H-curl volume base functions. More...
 
MoFEMErrorCode Hcurl_Demkowicz_EdgeBaseFunctions_MBTET (int *sense, int *p, double *n, double *diff_n, double *phi[], double *diff_phi[], int nb_integration_pts)
 Edge based H-curl base functions on tetrahedral. More...
 
MoFEMErrorCode Hcurl_Demkowicz_EdgeBaseFunctions_MBTRI (int *sense, int *p, double *n, double *diff_n, double *phi[], double *diff_phi[], int nb_integration_pts)
 Edge based H-curl base functions on teriangle. More...
 
MoFEMErrorCode Hcurl_Demkowicz_EdgeBaseFunctions_MBEDGE (int sense, int p, double *n, double *diff_n, double *phi, double *diff_phi, int nb_integration_pts)
 Edge based H-curl base functions on edge. More...
 
MoFEMErrorCode Hcurl_Demkowicz_FaceBaseFunctions_MBTET (int *faces_nodes, int *p, double *n, double *diff_n, double *phi[], double *diff_phi[], int nb_integration_pts)
 Face base interior function. More...
 
MoFEMErrorCode Hcurl_Demkowicz_FaceBaseFunctions_MBTRI (int *faces_nodes, int p, double *n, double *diff_n, double *phi, double *diff_phi, int nb_integration_pts)
 Face base interior function. More...
 
MoFEMErrorCode Hcurl_Demkowicz_VolumeBaseFunctions_MBTET (int p, double *n, double *diff_n, double *phi, double *diff_phi, int nb_integration_pts)
 Volume base interior function. More...
 
MoFEMErrorCode Hdiv_Ainsworth_EdgeFaceShapeFunctions_MBTET (int *faces_nodes, int *p, double *N, double *diffN, double *phi_f_e[4][3], double *diff_phi_f_e[4][3], int gdim, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Hdiv base functions, Edge-based face functions by Ainsworth [1]. More...
 
MoFEMErrorCode Hdiv_Ainsworth_EdgeFaceShapeFunctions_MBTET_ON_FACE (int *faces_nodes, int p, double *N, double *diffN, double *phi_f_e[3], double *diff_phi_f_e[3], int gdim, int nb, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Hdiv base functions, Edge-based face functions by Ainsworth [1]. More...
 
MoFEMErrorCode Hdiv_Ainsworth_FaceBubbleShapeFunctions (int *faces_nodes, int *p, double *N, double *diffN, double *phi_f[], double *diff_phi_f[], int gdim, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Face bubble functions by Ainsworth [1]. More...
 
MoFEMErrorCode Hdiv_Ainsworth_FaceBubbleShapeFunctions_ON_FACE (int *faces_nodes, int p, double *N, double *diffN, double *phi_f, double *diff_phi_f, int gdim, int nb, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Face bubble functions by Ainsworth [1]. More...
 
MoFEMErrorCode Hdiv_Ainsworth_EdgeBasedVolumeShapeFunctions_MBTET (int p, double *N, double *diffN, double *phi_v_e[6], double *diff_phi_v_e[6], int gdim, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Hdiv base function, Edge-based interior (volume) functions by Ainsworth [1]. More...
 
MoFEMErrorCode Hdiv_Ainsworth_FaceBasedVolumeShapeFunctions_MBTET (int p, double *N, double *diffN, double *phi_v_f[], double *diff_phi_v_f[], int gdim, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 
MoFEMErrorCode Hdiv_Ainsworth_VolumeBubbleShapeFunctions_MBTET (int p, double *N, double *diffN, double *phi_v, double *diff_phi_v, int gdim, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
 Interior bubble functions by Ainsworth [1]. More...
 
MoFEMErrorCode Hdiv_Demkowicz_Face_MBTET_ON_FACE (int *faces_nodes, int p, double *N, double *diffN, double *phi_f, double *diff_phi_f, int gdim, int nb)
 
MoFEMErrorCode Hdiv_Demkowicz_Interior_MBTET (int p, double *N, double *diffN, int p_face[], double *phi_f[4], double *diff_phi_f[4], double *phi_v, double *diff_phi_v, int gdim)
 
MoFEMErrorCode quad_split_all_edges (const EntityHandle *conn, const BitRefEdges split_edges, const EntityHandle *edge_new_nodes, EntityHandle *new_quad_conn)
 
template<class TYPE >
static MoFEMErrorCode get_value (MatrixDouble &pts_x, MatrixDouble &pts_t, TYPE *ctx)
 
template<typename T = EntityStorage>
MoFEMErrorCode VecSetValues (Vec V, const DataForcesAndSourcesCore::EntData &data, const double *ptr, InsertMode iora)
 Assemble PETSc vector. More...
 
template<>
MoFEMErrorCode VecSetValues< EntityStorage > (Vec V, const DataForcesAndSourcesCore::EntData &data, const double *ptr, InsertMode iora)
 
template<typename T = EntityStorage>
MoFEMErrorCode MatSetValues (Mat M, const DataForcesAndSourcesCore::EntData &row_data, const DataForcesAndSourcesCore::EntData &col_data, const double *ptr, InsertMode iora)
 Assemble PETSc matrix. More...
 
template<>
MoFEMErrorCode MatSetValues< EntityStorage > (Mat M, const DataForcesAndSourcesCore::EntData &row_data, const DataForcesAndSourcesCore::EntData &col_data, const double *ptr, InsertMode iora)
 
template<>
MoFEMErrorCode VecSetValues< EssentialBcStorage > (Vec V, const DataForcesAndSourcesCore::EntData &data, const double *ptr, InsertMode iora)
 Set values to vector in operator. More...
 
template<>
MoFEMErrorCode MatSetValues< EssentialBcStorage > (Mat M, const DataForcesAndSourcesCore::EntData &row_data, const DataForcesAndSourcesCore::EntData &col_data, const double *ptr, InsertMode iora)
 Set values to matrix in operator. More...
 
template<typename E >
MoFEMErrorCode addHOOpsVol (const std::string field, E &e, bool h1, bool hcurl, bool hdiv, bool l2)
 
template<typename E >
MoFEMErrorCode addHOOpsFace3D (const std::string field, E &e, bool hcurl, bool hdiv)
 
static void constructor_data (DataForcesAndSourcesCore *data, const EntityType type)
 
static void constructor_derived_data (DerivedDataForcesAndSourcesCore *derived_data, const boost::shared_ptr< DataForcesAndSourcesCore > &data_ptr)
 
std::ostream & operator<< (std::ostream &os, const DataForcesAndSourcesCore::EntData &e)
 
std::ostream & operator<< (std::ostream &os, const DataForcesAndSourcesCore &e)
 
static auto cmp_uid_lo (const boost::weak_ptr< FieldEntity > &a, const UId &b)
 
static auto cmp_uid_hi (const UId &b, const boost::weak_ptr< FieldEntity > &a)
 
template<typename ENTMULTIINDEX >
static int getMaxOrder (const ENTMULTIINDEX &multi_index)
 
template<class T >
static auto get_sub_iface_options_imp (T *const ptr, int) -> decltype(ptr->getSubInterfaceOptions())
 
template<class T >
static auto get_sub_iface_options_imp (T *const ptr, long) -> MoFEMErrorCode
 
template<int V, typename std::enable_if<(V >=0), int >::type * = nullptr>
void set_ref_ent_basic_data_ptr_impl (boost::shared_ptr< BasicEntityData > &ptr)
 
std::ostream & operator<< (std::ostream &strm, const LogManager::SeverityLevel &level)
 
static std::vector< med_geometrie_element > moab2med_element_type (const EntityType type)
 
std::ostream & operator<< (std::ostream &os, const MedInterface::FieldData &field_data)
 
static auto min_non_abs (const double a, const double b)
 
std::ostream & operator<< (std::ostream &os, const FENumeredDofEntity &e)
 
std::ostream & operator<< (std::ostream &os, const DisplacementCubitBcData &e)
 
std::ostream & operator<< (std::ostream &os, const ForceCubitBcData &e)
 
std::ostream & operator<< (std::ostream &os, const VelocityCubitBcData &e)
 
std::ostream & operator<< (std::ostream &os, const AccelerationCubitBcData &e)
 
std::ostream & operator<< (std::ostream &os, const TemperatureCubitBcData &e)
 
std::ostream & operator<< (std::ostream &os, const PressureCubitBcData &e)
 
std::ostream & operator<< (std::ostream &os, const HeatFluxCubitBcData &e)
 
std::ostream & operator<< (std::ostream &os, const CfgCubitBcData &e)
 
std::ostream & operator<< (std::ostream &os, const CubitMeshSets &e)
 
std::ostream & operator<< (std::ostream &os, const DofEntity &e)
 
std::ostream & operator<< (std::ostream &os, const NumeredDofEntity &e)
 
std::ostream & operator<< (std::ostream &os, const FEDofEntity &e)
 
std::ostream & operator<< (std::ostream &os, const FiniteElement &e)
 
std::ostream & operator<< (std::ostream &os, const EntFiniteElement &e)
 
std::ostream & operator<< (std::ostream &os, const NumeredEntFiniteElement &e)
 
template<typename ENTSVIEW , typename DOFSVIEW , typename EXTRACTOR , typename INSERTER >
static MoFEMErrorCode get_cache_data_dofs_view (ENTSVIEW &ents_view, DOFSVIEW &dofs_view, EXTRACTOR &&extractor, INSERTER &&inserter)
 
std::ostream & operator<< (std::ostream &os, const FieldEntity &e)
 
std::ostream & operator<< (std::ostream &os, const Field &e)
 
std::ostream & operator<< (std::ostream &os, const FieldEntityEntFiniteElementAdjacencyMap &e)
 
std::ostream & operator<< (std::ostream &os, const BlockSetAttributes &e)
 
std::ostream & operator<< (std::ostream &os, const Mat_Elastic &e)
 
std::ostream & operator<< (std::ostream &os, const Mat_Elastic_EberleinHolzapfel1 &e)
 
std::ostream & operator<< (std::ostream &os, const Mat_Thermal &e)
 
std::ostream & operator<< (std::ostream &os, const Mat_Moisture &e)
 
std::ostream & operator<< (std::ostream &os, const Block_BodyForces &e)
 
std::ostream & operator<< (std::ostream &os, const Mat_Elastic_TransIso &e)
 
std::ostream & operator<< (std::ostream &os, const Mat_Interf &e)
 
std::ostream & operator<< (std::ostream &os, const Problem &e)
 
std::ostream & operator<< (std::ostream &os, const RefElement &e)
 
std::ostream & operator<< (std::ostream &os, const RefElementVolume &e)
 
std::ostream & operator<< (std::ostream &os, const RefElementFace &e)
 
std::ostream & operator<< (std::ostream &os, const RefElement_EDGE &e)
 
std::ostream & operator<< (std::ostream &os, const RefElement_VERTEX &e)
 
std::ostream & operator<< (std::ostream &os, const RefEntity &e)
 
std::ostream & operator<< (std::ostream &os, const FieldSeries &e)
 
std::ostream & operator<< (std::ostream &os, const FieldSeriesStep &e)
 
template<EntityType TYPE>
EntityHandle get_id_for_max_type ()
 
template<EntityType TYPE>
EntityHandle get_id_for_min_type ()
 
EntityHandle get_id_for_max_type (const EntityType type)
 
EntityHandle get_id_for_min_type (const EntityType type)
 
void * get_tag_ptr (moab::Interface &moab, Tag th, EntityHandle ent, int *tag_size)
 Get the tag ptr object. More...
 
struct __attribute__ ((__packed__)) SideNumber
 keeps information about side number for the finite element More...
 
PetscErrorCode DMRegister_MoFEM (const char sname[])
 Register MoFEM problem. More...
 
PetscErrorCode DMMoFEMCreateMoFEM (DM dm, MoFEM::Interface *m_field_ptr, const char problem_name[], const MoFEM::BitRefLevel bit_level, const MoFEM::BitRefLevel bit_mask=MoFEM::BitRefLevel().set())
 Must be called by user to set MoFEM data structures. More...
 
PetscErrorCode DMMoFEMDuplicateDMCtx (DM dm, DM dm_duplicate)
 Duplicate internal data struture. More...
 
PetscErrorCode DMMoFEMCreateSubDM (DM subdm, DM dm, const char problem_name[])
 Must be called by user to set Sub DM MoFEM data structures. More...
 
PetscErrorCode DMoFEMGetInterfacePtr (DM dm, MoFEM::Interface **m_field_ptr)
 Get pointer to MoFEM::Interface. More...
 
PetscErrorCode DMMoFEMGetProblemPtr (DM dm, const MoFEM::Problem **problem_ptr)
 Get pointer to problem data structure. More...
 
PetscErrorCode DMMoFEMSetDestroyProblem (DM dm, PetscBool destroy_problem)
 
PetscErrorCode DMMoFEMGetDestroyProblem (DM dm, PetscBool *destroy_problem)
 
PetscErrorCode DMMoFEMSetSquareProblem (DM dm, PetscBool square_problem)
 set squared problem More...
 
PetscErrorCode DMMoFEMGetSquareProblem (DM dm, PetscBool *square_problem)
 get squared problem More...
 
PetscErrorCode DMMoFEMResolveSharedFiniteElements (DM dm, const char fe_name[])
 Resolve shared entities. More...
 
DEPRECATED PetscErrorCode DMMoFEMResolveSharedEntities (DM dm, const char fe_name[])
 
PetscErrorCode DMMoFEMGetProblemFiniteElementLayout (DM dm, const char fe_name[], PetscLayout *layout)
 Get finite elements layout in the problem. More...
 
PetscErrorCode DMMoFEMAddElement (DM dm, const char fe_name[])
 add element to dm More...
 
PetscErrorCode DMMoFEMUnSetElement (DM dm, const char fe_name[])
 unset element from dm More...
 
PetscErrorCode DMoFEMMeshToLocalVector (DM dm, Vec l, InsertMode mode, ScatterMode scatter_mode)
 set local (or ghosted) vector values on mesh for partition only More...
 
PetscErrorCode DMoFEMMeshToGlobalVector (DM dm, Vec g, InsertMode mode, ScatterMode scatter_mode)
 set ghosted vector values on all existing mesh entities More...
 
PetscErrorCode DMoFEMPreProcessFiniteElements (DM dm, MoFEM::FEMethod *method)
 execute finite element method for each element in dm (problem) More...
 
PetscErrorCode DMoFEMPostProcessFiniteElements (DM dm, MoFEM::FEMethod *method)
 execute finite element method for each element in dm (problem) More...
 
PetscErrorCode DMoFEMLoopFiniteElementsUpAndLowRank (DM dm, const char fe_name[], MoFEM::FEMethod *method, int low_rank, int up_rank)
 Executes FEMethod for finite elements in DM. More...
 
PetscErrorCode DMoFEMLoopFiniteElementsUpAndLowRank (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, int low_rank, int up_rank)
 Executes FEMethod for finite elements in DM. More...
 
PetscErrorCode DMoFEMLoopFiniteElements (DM dm, const char fe_name[], MoFEM::FEMethod *method)
 Executes FEMethod for finite elements in DM. More...
 
PetscErrorCode DMoFEMLoopFiniteElements (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method)
 Executes FEMethod for finite elements in DM. More...
 
PetscErrorCode DMoFEMLoopDofs (DM dm, const char field_name[], MoFEM::DofMethod *method)
 execute method for dofs on field in problem More...
 
PetscErrorCode DMMoFEMKSPSetComputeRHS (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only)
 set KSP right hand side evaluation function More...
 
PetscErrorCode DMMoFEMKSPSetComputeRHS (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 set KSP right hand side evaluation function More...
 
PetscErrorCode DMMoFEMKSPSetComputeOperators (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only)
 Set KSP operators and push mofem finite element methods. More...
 
PetscErrorCode DMMoFEMKSPSetComputeOperators (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 Set KSP operators and push mofem finite element methods. More...
 
PetscErrorCode DMMoFEMSNESSetFunction (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only)
 set SNES residual evaluation function More...
 
PetscErrorCode DMMoFEMSNESSetFunction (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 set SNES residual evaluation function More...
 
PetscErrorCode DMMoFEMSNESSetJacobian (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only)
 set SNES Jacobian evaluation function More...
 
PetscErrorCode DMMoFEMSNESSetJacobian (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 set SNES Jacobian evaluation function More...
 
PetscErrorCode DMMoFEMTSSetIFunction (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only)
 set TS implicit function evaluation function More...
 
PetscErrorCode DMMoFEMTSSetIFunction (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 set TS implicit function evaluation function More...
 
PetscErrorCode DMMoFEMTSSetIJacobian (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 set TS Jacobian evaluation function More...
 
PetscErrorCode DMMoFEMTSSetIJacobian (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only)
 set TS Jacobian evaluation function More...
 
PetscErrorCode DMMoFEMTSSetRHSFunction (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 set TS the right hand side function More...
 
PetscErrorCode DMMoFEMTSSetRHSJacobian (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 set TS the right hand side jacobian More...
 
PetscErrorCode DMMoFEMTSSetI2Function (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 set TS implicit function evaluation function More...
 
PetscErrorCode DMMoFEMTSSetI2Jacobian (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 set TS Jacobian evaluation function More...
 
PetscErrorCode DMMoFEMTSSetMonitor (DM dm, TS ts, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
 Set Monitor To TS solver. More...
 
PetscErrorCode DMMoFEMTSSetMonitor (DM dm, TS ts, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only)
 Set Monitor To TS solver. More...
 
PetscErrorCode DMMoFEMGetKspCtx (DM dm, MoFEM::KspCtx **ksp_ctx)
 get MoFEM::KspCtx data structure More...
 
PetscErrorCode DMMoFEMGetKspCtx (DM dm, const boost::shared_ptr< MoFEM::KspCtx > &ksp_ctx)
 get MoFEM::KspCtx data structure More...
 
PetscErrorCode DMMoFEMSetKspCtx (DM dm, boost::shared_ptr< MoFEM::KspCtx > ksp_ctx)
 set MoFEM::KspCtx data structure More...
 
PetscErrorCode DMMoFEMGetSnesCtx (DM dm, MoFEM::SnesCtx **snes_ctx)
 get MoFEM::SnesCtx data structure More...
 
PetscErrorCode DMMoFEMGetSnesCtx (DM dm, const boost::shared_ptr< MoFEM::SnesCtx > &snes_ctx)
 get MoFEM::SnesCtx data structure More...
 
PetscErrorCode DMMoFEMSetSnesCtx (DM dm, boost::shared_ptr< MoFEM::SnesCtx > snes_ctx)
 Set MoFEM::SnesCtx data structure. More...
 
PetscErrorCode DMMoFEMGetTsCtx (DM dm, MoFEM::TsCtx **ts_ctx)
 get MoFEM::TsCtx data structure More...
 
PetscErrorCode DMMoFEMGetTsCtx (DM dm, const boost::shared_ptr< MoFEM::TsCtx > &ts_ctx)
 get MoFEM::TsCtx data structure More...
 
PetscErrorCode DMMoFEMSetTsCtx (DM dm, boost::shared_ptr< MoFEM::TsCtx > ts_ctx)
 Set MoFEM::TsCtx data structure. More...
 
PetscErrorCode DMMoFEMSetIsPartitioned (DM dm, PetscBool is_partitioned)
 
PetscErrorCode DMMoFEMGetIsPartitioned (DM dm, PetscBool *is_partitioned)
 
PetscErrorCode DMSetOperators_MoFEM (DM dm)
 Set operators for MoFEM dm. More...
 
PetscErrorCode DMCreate_MoFEM (DM dm)
 Create dm data structure with MoFEM data structure. More...
 
PetscErrorCode DMDestroy_MoFEM (DM dm)
 Destroys dm with MoFEM data structure. More...
 
PetscErrorCode DMCreateGlobalVector_MoFEM (DM dm, Vec *g)
 DMShellSetCreateGlobalVector. More...
 
PetscErrorCode DMCreateGlobalVector_MoFEM (DM dm, SmartPetscObj< Vec > &g_ptr)
 DMShellSetCreateGlobalVector. More...
 
PetscErrorCode DMCreateLocalVector_MoFEM (DM dm, Vec *l)
 DMShellSetCreateLocalVector. More...
 
PetscErrorCode DMCreateMatrix_MoFEM (DM dm, Mat *M)
 
PetscErrorCode DMCreateMatrix_MoFEM (DM dm, SmartPetscObj< Mat > &M)
 
PetscErrorCode DMSetFromOptions_MoFEM (DM dm)
 
PetscErrorCode DMSetUp_MoFEM (DM dm)
 
PetscErrorCode DMSubDMSetUp_MoFEM (DM subdm)
 
PetscErrorCode DMMoFEMAddSubFieldRow (DM dm, const char field_name[], EntityType lo_type=MBVERTEX, EntityType hi_type=MBMAXTYPE)
 
PetscErrorCode DMMoFEMAddSubFieldCol (DM dm, const char field_name[], EntityType lo_type=MBVERTEX, EntityType hi_type=MBMAXTYPE)
 
PetscErrorCode DMMoFEMGetIsSubDM (DM dm, PetscBool *is_sub_dm)
 
PetscErrorCode DMMoFEMGetSubRowIS (DM dm, IS *is)
 get sub problem is More...
 
PetscErrorCode DMMoFEMGetSubColIS (DM dm, IS *is)
 get sub problem is More...
 
PetscErrorCode DMMoFEMAddRowCompositeProblem (DM dm, const char prb_name[])
 Add problem to composite DM on row. More...
 
PetscErrorCode DMMoFEMAddColCompositeProblem (DM dm, const char prb_name[])
 Add problem to composite DM on col. More...
 
PetscErrorCode DMMoFEMGetIsCompDM (DM dm, PetscBool *is_comp_dm)
 Get if this DM is composite DM. More...
 
PetscErrorCode DMGlobalToLocalBegin_MoFEM (DM dm, Vec, InsertMode, Vec)
 
PetscErrorCode DMGlobalToLocalEnd_MoFEM (DM dm, Vec, InsertMode, Vec)
 
PetscErrorCode DMLocalToGlobalBegin_MoFEM (DM, Vec, InsertMode, Vec)
 
PetscErrorCode DMLocalToGlobalEnd_MoFEM (DM, Vec, InsertMode, Vec)
 
PetscErrorCode DMCreateFieldIS_MoFEM (DM dm, PetscInt *numFields, char ***fieldNames, IS **fields)
 
PetscErrorCode DMMoFEMGetFieldIS (DM dm, RowColData rc, const char field_name[], IS *is)
 get field is in the problem More...
 
PetscErrorCode DMMoFEMSetVerbosity (DM dm, const int verb)
 Set verbosity level. More...
 
DEPRECATED auto smartCreateDMDVector (DM dm)
 
template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode DMMoFEMKSPSetComputeRHS (DM dm, S fe_name, T0 method, T1 pre_only, T2 post_only)
 
template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode DMMoFEMKSPSetComputeOperators (DM dm, S fe_name, T0 method, T1 pre_only, T2 post_only)
 
template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode DMMoFEMSNESSetFunction (DM dm, S fe_name, T0 method, T1 pre_only, T2 post_only)
 
template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode DMMoFEMSNESSetJacobian (DM dm, S fe_name, T0 method, T1 pre_only, T2 post_only)
 
template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode DMMoFEMTSSetIFunction (DM dm, S fe_name, T0 method, T1 pre_only, T2 post_only)
 
template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode DMMoFEMTSSetIJacobian (DM dm, S fe_name, T0 method, T1 pre_only, T2 post_only)
 
template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode DMMoFEMTSSetRHSFunction (DM dm, S fe_name, T0 method, T1 pre_only, T2 post_only)
 
template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode DMMoFEMTSSetRHSJacobian (DM dm, S fe_name, T0 method, T1 pre_only, T2 post_only)
 
template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode DMMoFEMTSSetMonitor (DM dm, TS ts, S fe_name, T0 method, T1 pre_only, T2 post_only)
 
PetscErrorCode KspRhs (KSP ksp, Vec f, void *ctx)
 Run over elements in the lists. More...
 
PetscErrorCode KspMat (KSP ksp, Mat A, Mat B, void *ctx)
 Run over elenents in the list. More...
 
PetscErrorCode SnesRhs (SNES snes, Vec x, Vec f, void *ctx)
 This is MoFEM implementation for the right hand side (residual vector) evaluation in SNES solver. More...
 
PetscErrorCode SnesMat (SNES snes, Vec x, Mat A, Mat B, void *ctx)
 This is MoFEM implementation for the left hand side (tangent matrix) evaluation in SNES solver. More...
 
MoFEMErrorCode SnesMoFEMSetAssemblyType (SNES snes, MatAssemblyType type)
 Set assembly type at the end of SnesMat. More...
 
MoFEMErrorCode SnesMoFEMSetBehavior (SNES snes, MoFEMTypes bh)
 Set behavior if finite element in sequence does not exist. More...
 
PetscErrorCode TsSetIFunction (TS ts, PetscReal t, Vec u, Vec u_t, Vec F, void *ctx)
 Set IFunction for TS solver. More...
 
PetscErrorCode TsSetIJacobian (TS ts, PetscReal t, Vec u, Vec u_t, PetscReal a, Mat A, Mat B, void *ctx)
 Set function evaluating jacobina in TS solver. More...
 
PetscErrorCode TsMonitorSet (TS ts, PetscInt step, PetscReal t, Vec u, void *ctx)
 Set monitor for TS solver. More...
 
PetscErrorCode TsSetRHSFunction (TS ts, PetscReal t, Vec u, Vec F, void *ctx)
 TS solver function. More...
 
PetscErrorCode TsSetRHSJacobian (TS ts, PetscReal t, Vec u, Mat A, Mat B, void *ctx)
 TS solver function. More...
 
PetscErrorCode TsSetI2Jacobian (TS ts, PetscReal t, Vec u, Vec u_t, Vec u_tt, PetscReal a, PetscReal aa, Mat A, Mat B, void *ctx)
 Calculation Jaconian for second order PDE in time. More...
 
PetscErrorCode TsSetI2Function (TS ts, PetscReal t, Vec u, Vec u_t, Vec u_tt, Vec F, void *ctx)
 Calculation the right hand side for second order PDE in time. More...
 
DEPRECATED PetscErrorCode f_TSSetIFunction (TS ts, PetscReal t, Vec u, Vec u_t, Vec F, void *ctx)
 \deprecate Do not use, change to TsSetIFunction More...
 
DEPRECATED PetscErrorCode f_TSSetIJacobian (TS ts, PetscReal t, Vec u, Vec u_t, PetscReal a, Mat A, Mat B, void *ctx)
 
DEPRECATED PetscErrorCode f_TSMonitorSet (TS ts, PetscInt step, PetscReal t, Vec u, void *ctx)
 
template<>
MoFEMErrorCode MatSetValues< MpEntityStorage > (Mat M, const DataForcesAndSourcesCore::EntData &row_data, const DataForcesAndSourcesCore::EntData &col_data, const double *ptr, InsertMode iora)
 
MoFEMErrorCode MpMatZeroRowsColumns (Mat mat, PetscInt numRows, const PetscInt rows[], PetscScalar diag, Vec x, Vec b)
 
MoFEMErrorCode MpMatMissingDiagonal (Mat mat, PetscBool *missing, PetscInt *dd)
 
MoFEMErrorCode MpMatSetValues (Mat mat, PetscInt m, const PetscInt idxm[], PetscInt n, const PetscInt idxn[], const PetscScalar v[], InsertMode addv)
 
MoFEMErrorCode set_elastic_dm (MoFEM::Interface &m_field, SmartPetscObj< DM > &dm, SmartPetscObj< DM > &dm_elastic)
 
MoFEMErrorCode set_plastic_ep_dm (MoFEM::Interface &m_field, SmartPetscObj< DM > &dm, SmartPetscObj< DM > &dm_plastic)
 
MoFEMErrorCode set_plastic_tau_dm (MoFEM::Interface &m_field, SmartPetscObj< DM > &dm, SmartPetscObj< DM > &dm_plastic_tau)
 
MoFEMErrorCode set_contact_dm (MoFEM::Interface &m_field, SmartPetscObj< DM > &dm, SmartPetscObj< DM > &dm_contact)
 

Variables

DEPRECATED typedef FlatPrismElementForcesAndSourcesCore FlatPrismElementForcesAndSurcesCore
 USe FlatPrismElementForcesAndSourcesCore. More...
 
DEPRECATED typedef ForcesAndSourcesCore ForcesAndSurcesCore
 
DEPRECATED typedef DofMethod EntMethod
 
DEPRECATED typedef Problem MoFEMProblem
 
const EntityHandle no_handle
 No entity handle is indicated by zero handle, i.e. root meshset. More...
 
auto createSmartDM
 Creates smart DM object. More...
 
auto createSmartGhostVector
 Create smart ghost vector. More...
 
auto createSmartVectorMPI
 Create MPI Vector. More...
 
auto createTS
 
auto createSNES
 
auto createKSP
 
auto createPC
 
auto get_temp_meshset_ptr
 
auto type_from_handle
 
static constexpr int edges_conn [] = {0, 1, 1, 2, 2, 0, 0, 3, 1, 3, 2, 3}
 
static constexpr int oposite_edge [] = {5, 3, 4, 1, 2, 0}
 
static constexpr int edge_permutations [6][6]
 
static constexpr int edge_mirror_cross [6] = {0, 3, 4, 1, 2, 5}
 
static constexpr int edge_mirror_vertical [6] = {0, 4, 3, 2, 1, 5}
 
static constexpr int cyclic_node_rotate_face_3 [3][4]
 
static constexpr int cyclic_edge_rotate_face_3 [3][6]
 
static constexpr char edge_bits_mark [] = {1, 2, 4, 8, 16, 32}
 
static char dummy_file
 
auto smartCreateDMMatrix
 Get smart matrix from DM. More...
 
auto smartCreateDMVector
 Get smart vector from DM. More...
 
auto smartGetDMSnesCtx
 Get SNES context data structure used by DM. More...
 
boost::weak_ptr< BlockMatContainerblock_mat_container_ptr
 

Detailed Description

implementation of Data Operators for Forces and Sources

name space of MoFEM library functions and classes

MoFEM is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

MoFEM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with MoFEM. If not, see http://www.gnu.org/licenses/

file DataOperators.cpp

Typedef Documentation

◆ BasicMethodsSequence

Definition at line 65 of file AuxPETSc.hpp.

◆ BlockMatContainer

typedef multi_index_container< BlockMatData, indexed_by< ordered_unique< composite_key< BlockMatData, member<BlockMatData, std::string, &BlockMatData::rowField>, member<BlockMatData, std::string, &BlockMatData::colField>, member<BlockMatData, EntityType, &BlockMatData::rowType>, member<BlockMatData, EntityType, &BlockMatData::colType>, member<BlockMatData, int, &BlockMatData::rowSide>, member<BlockMatData, int, &BlockMatData::colSide> > >, ordered_non_unique< composite_key< BlockMatData, member<BlockMatData, std::string, &BlockMatData::rowField>, member<BlockMatData, std::string, &BlockMatData::colField>, member<BlockMatData, EntityType, &BlockMatData::rowType>, member<BlockMatData, EntityType, &BlockMatData::colType> > >, ordered_non_unique< composite_key< BlockMatData, member<BlockMatData, std::string, &BlockMatData::rowField>, member<BlockMatData, std::string, &BlockMatData::colField> > >, ordered_non_unique< member<BlockMatData, std::string, &BlockMatData::rowField> >, ordered_non_unique< member<BlockMatData, std::string, &BlockMatData::colField> > > > MoFEM::BlockMatContainer

Definition at line 129 of file BlockMatData.hpp.

◆ BoundaryEle

Definition at line 189 of file MultifieldPlasticity.hpp.

◆ BoundaryEleOp

Definition at line 190 of file MultifieldPlasticity.hpp.

◆ BoundaryEleOpAssembly

Definition at line 191 of file MultifieldPlasticity.hpp.

◆ CacheTuple

using MoFEM::CacheTuple = typedef std::tuple< std::vector<EntityCacheDofs>, std::vector<EntityCacheNumeredDofs>, std::vector<EntityCacheNumeredDofs> >

Definition at line 497 of file FEMultiIndices.hpp.

◆ CacheTupleSharedPtr

using MoFEM::CacheTupleSharedPtr = typedef boost::shared_ptr<CacheTuple>

Definition at line 505 of file FEMultiIndices.hpp.

◆ CacheTupleWeakPtr

using MoFEM::CacheTupleWeakPtr = typedef boost::weak_ptr<CacheTuple>

Definition at line 504 of file FEMultiIndices.hpp.

◆ ConstantFun

using MoFEM::ConstantFun = typedef boost::function<double()>

Constant function type.

Definition at line 123 of file FormsIntegrators.hpp.

◆ Core

using MoFEM::Core = typedef CoreTmp<0>
Examples
add_blockset.cpp, add_cubit_meshsets.cpp, analytical_nonlinear_poisson.cpp, analytical_poisson.cpp, analytical_poisson_field_split.cpp, approx_sphere.cpp, bernstein_bezier_generate_base.cpp, bone_adaptation.cpp, boundary_marker.cpp, build_large_problem.cpp, build_problems.cpp, cell_forces.cpp, contact.cpp, continuity_check_on_contact_prism_side_ele.cpp, continuity_check_on_skeleton_3d.cpp, continuity_check_on_skeleton_with_simple_2d_for_h1.cpp, continuity_check_on_skeleton_with_simple_2d_for_hcurl.cpp, continuity_check_on_skeleton_with_simple_2d_for_hdiv.cpp, cubit_bc_test.cpp, delete_ho_nodes.cpp, dm_build_partitioned_mesh.cpp, dm_create_subdm.cpp, dm_partitioned_no_field.cpp, edge_and_bubble_shape_functions_on_quad.cpp, eigen_elastic.cpp, elasticity.cpp, elasticity_mixed_formulation.cpp, ep.cpp, field_axpy_atom_test.cpp, field_blas_set_vertex_dofs.cpp, field_evaluator.cpp, field_to_vertices.cpp, forces_and_sources_testing_edge_element.cpp, forces_and_sources_testing_flat_prism_element.cpp, forces_and_sources_testing_users_base.cpp, gauss_points_on_outer_product.cpp, hcurl_check_approx_in_2d.cpp, hcurl_curl_operator.cpp, hcurl_divergence_operator_2d.cpp, hdiv_divergence_operator.cpp, heat_equation.cpp, heat_method.cpp, hello_world.cpp, helmholtz.cpp, hertz_surface.cpp, inital_diffusion.cpp, log.cpp, loop_entities.cpp, lorentz_force.cpp, magnetostatic.cpp, mesh_cut.cpp, mesh_insert_interface_atom.cpp, mesh_smoothing.cpp, meshset_to_vtk.cpp, minimal_surface_area.cpp, mixed_poisson.cpp, mortar_contact.cpp, mortar_contact_thermal.cpp, navier_stokes.cpp, nonlinear_dynamics.cpp, nonlinear_elastic.cpp, photon_diffusion.cpp, plastic.cpp, plot_base.cpp, prism_elements_from_surface.cpp, prism_polynomial_approximation.cpp, quad_polynomial_approximation.cpp, reaction_diffusion.cpp, remove_entities_from_problem.cpp, remove_entities_from_problem_not_partitioned.cpp, scalar_check_approximation.cpp, shallow_wave.cpp, simple_contact.cpp, simple_contact_thermal.cpp, simple_elasticity.cpp, simple_interface.cpp, split_sideset.cpp, test_cache_on_entities.cpp, test_jacobian_of_simple_contact_element.cpp, testing_jacobian_of_hook_element.cpp, testing_jacobian_of_hook_scaled_with_density_element.cpp, thermo_plastic.cpp, unsaturated_transport.cpp, wave_equation.cpp, and wavy_surface.cpp.

Definition at line 1098 of file Core.hpp.

◆ CubitMeshSet_multiIndex

Stores data about meshsets (see CubitMeshSets) storing data about boundary conditions, interfaces, sidesets, nodests, blocksets.

Parameters
Meshset_mi_tagindex by meshset handle
CubitMeshSets_mi_tagindex by bc type, see CubitBC
CubitMeshSets_mask_meshset_mi_tagindex by NODESET, SIDESET, BLOCKSET only
CubitMeshSets_nameindex by meshset name
Composite_Cubit_msId_And_MeshSetType_mi_tagindex by meshset id and type NODESET, SIDESET or BLOCKSET

Example:

MeshsetsManager *m_mng;
CHKERR m_field.getInterface(m_mng);
auto &index = m_mng->getMeshsetsMultindex();
auto mit =
index.get<CubitMeshSets_mask_meshset_mi_tag>().lower_bound(BLOCKSET); auto
hi_mit =
index.get<CubitMeshSets_mask_meshset_mi_tag>().upper_bound(BLOCKSET);
// Make a loop over all BLOCKSET
for(;mit!=hi_mit;mit++) {
int id = mit->getMeshsetId(); // get blockset id
EntityHandle handle = mit->getMeshset(); // get block meshset
std::vector< double > attributes;
// get block attributes
auto mit->getAttributes(attributes);
// do something
}
@ BLOCKSET
Definition: definitions.h:141
#define CHKERR
Inline error check.
Definition: definitions.h:528

Definition at line 393 of file BCMultiIndices.hpp.

◆ CubitMeshsetById

typedef CubitMeshSet_multiIndex::index<CubitMeshSets_mi_tag>::type MoFEM::CubitMeshsetById

Definition at line 36 of file MeshsetsManager.hpp.

◆ CubitMeshsetByMask

typedef CubitMeshSet_multiIndex::index<CubitMeshSets_mask_meshset_mi_tag>::type MoFEM::CubitMeshsetByMask

Definition at line 30 of file MeshsetsManager.hpp.

◆ CubitMeshsetByName

typedef CubitMeshSet_multiIndex::index<CubitMeshSets_name>::type MoFEM::CubitMeshsetByName

Definition at line 33 of file MeshsetsManager.hpp.

◆ CubitMeshsetByType

typedef CubitMeshSet_multiIndex::index<CubitMeshSets_mi_tag>::type MoFEM::CubitMeshsetByType

Definition at line 27 of file MeshsetsManager.hpp.

◆ DofEntityByUId

using MoFEM::DofEntityByUId = typedef DofEntity_multiIndex::index<Unique_mi_tag>::type

Definition at line 333 of file DofsMultiIndices.hpp.

◆ DofsAllocator

using MoFEM::DofsAllocator = typedef ublas::unbounded_array< FEDofEntity *, std::allocator<FEDofEntity *> >

Definition at line 29 of file DataStructures.hpp.

◆ DomainEle

Definition at line 179 of file MultifieldPlasticity.hpp.

◆ DomainEleOp

Definition at line 180 of file MultifieldPlasticity.hpp.

◆ DomainEleOpAssembly

Definition at line 181 of file MultifieldPlasticity.hpp.

◆ DomainSideEle

Definition at line 194 of file MultifieldPlasticity.hpp.

◆ DomainSideEleOp

Definition at line 195 of file MultifieldPlasticity.hpp.

◆ DomainSideEleOpAssembly

Definition at line 196 of file MultifieldPlasticity.hpp.

◆ EntData

Definition at line 177 of file MultifieldPlasticity.hpp.

◆ FEMethodsSequence

Definition at line 64 of file AuxPETSc.hpp.

◆ Field_multiIndex_view

typedef multi_index_container< boost::shared_ptr<Field>, indexed_by< ordered_unique<tag<BitFieldId_mi_tag>, const_mem_fun<Field, const BitFieldId &, &Field::getId>, LtBit<BitFieldId> > > > MoFEM::Field_multiIndex_view

Definition at line 520 of file FieldMultiIndices.hpp.

◆ FieldEntAllocator

using MoFEM::FieldEntAllocator = typedef ublas::unbounded_array< FieldEntity *, std::allocator<FieldEntity *> >

Definition at line 37 of file DataStructures.hpp.

◆ FieldEntity_multiIndex_ent_view

typedef multi_index_container< boost::shared_ptr<FieldEntity>, indexed_by< sequenced<>, ordered_non_unique<tag<Ent_mi_tag>, const_mem_fun<FieldEntity::interface_type_RefEntity, EntityHandle, &FieldEntity::getEnt> > > > MoFEM::FieldEntity_multiIndex_ent_view

Definition at line 426 of file FieldEntsMultiIndices.hpp.

◆ FieldEntity_multiIndex_spaceType_view

typedef multi_index_container< boost::shared_ptr<FieldEntity>, indexed_by< sequenced<>, ordered_non_unique< tag<Composite_EntType_and_Space_mi_tag>, composite_key<FieldEntity, const_mem_fun<FieldEntity::interface_type_RefEntity, EntityType, &FieldEntity::getEntType>, const_mem_fun<FieldEntity::interface_type_Field, FieldSpace, &FieldEntity::getSpace> > > > > MoFEM::FieldEntity_multiIndex_spaceType_view

Definition at line 447 of file FieldEntsMultiIndices.hpp.

◆ FieldEntity_vector_view

typedef std::vector<boost::weak_ptr<FieldEntity> > MoFEM::FieldEntity_vector_view

Definition at line 449 of file FieldEntsMultiIndices.hpp.

◆ Interface

Examples
ElasticityMixedFormulation.hpp, HookeElement.hpp, HookeInternalStressElement.hpp, MagneticElement.hpp, NavierStokesElement.hpp, OpPostProcElastic.hpp, PlasticOps.hpp, PlasticOpsMonitor.hpp, Remodeling.cpp, Remodeling.hpp, UnsaturatedFlow.hpp, add_blockset.cpp, add_cubit_meshsets.cpp, analytical_nonlinear_poisson.cpp, analytical_poisson.cpp, analytical_poisson_field_split.cpp, approx_sphere.cpp, bernstein_bezier_generate_base.cpp, bone_adaptation.cpp, boundary_marker.cpp, build_large_problem.cpp, build_problems.cpp, cell_forces.cpp, contact.cpp, continuity_check_on_contact_prism_side_ele.cpp, continuity_check_on_skeleton_3d.cpp, continuity_check_on_skeleton_with_simple_2d_for_h1.cpp, continuity_check_on_skeleton_with_simple_2d_for_hcurl.cpp, continuity_check_on_skeleton_with_simple_2d_for_hdiv.cpp, cubit_bc_test.cpp, delete_ho_nodes.cpp, dm_build_partitioned_mesh.cpp, dm_create_subdm.cpp, dm_partitioned_no_field.cpp, edge_and_bubble_shape_functions_on_quad.cpp, eigen_elastic.cpp, elasticity.cpp, elasticity_mixed_formulation.cpp, ep.cpp, field_axpy_atom_test.cpp, field_blas_set_vertex_dofs.cpp, field_evaluator.cpp, field_to_vertices.cpp, forces_and_sources_testing_edge_element.cpp, forces_and_sources_testing_flat_prism_element.cpp, forces_and_sources_testing_users_base.cpp, gauss_points_on_outer_product.cpp, hcurl_check_approx_in_2d.cpp, hcurl_curl_operator.cpp, hcurl_divergence_operator_2d.cpp, hdiv_divergence_operator.cpp, heat_equation.cpp, heat_method.cpp, hello_world.cpp, helmholtz.cpp, hertz_surface.cpp, inital_diffusion.cpp, log.cpp, loop_entities.cpp, lorentz_force.cpp, magnetostatic.cpp, mesh_cut.cpp, mesh_insert_interface_atom.cpp, mesh_smoothing.cpp, meshset_to_vtk.cpp, minimal_surface_area.cpp, mixed_poisson.cpp, mortar_contact.cpp, mortar_contact_thermal.cpp, navier_stokes.cpp, nonlinear_dynamics.cpp, nonlinear_elastic.cpp, photon_diffusion.cpp, plastic.cpp, plot_base.cpp, prism_elements_from_surface.cpp, prism_polynomial_approximation.cpp, quad_polynomial_approximation.cpp, reaction_diffusion.cpp, remove_entities_from_problem.cpp, remove_entities_from_problem_not_partitioned.cpp, scalar_check_approximation.cpp, shallow_wave.cpp, simple_contact.cpp, simple_contact_thermal.cpp, simple_elasticity.cpp, simple_interface.cpp, split_sideset.cpp, test_cache_on_entities.cpp, test_jacobian_of_simple_contact_element.cpp, testing_jacobian_of_hook_element.cpp, testing_jacobian_of_hook_scaled_with_density_element.cpp, thermo_plastic.cpp, unsaturated_transport.cpp, wave_equation.cpp, and wavy_surface.cpp.

Definition at line 1949 of file Interface.hpp.

◆ NumeredDofEntity_multiIndex_coeff_idx_ordered_non_unique

using MoFEM::NumeredDofEntity_multiIndex_coeff_idx_ordered_non_unique = typedef multi_index_container< boost::shared_ptr<NumeredDofEntity>, indexed_by<ordered_non_unique<const_mem_fun< NumeredDofEntity::interface_type_DofEntity, FieldCoefficientsNumber, &NumeredDofEntity::getDofCoeffIdx> >> >

Definition at line 530 of file DofsMultiIndices.hpp.

◆ NumeredDofEntity_multiIndex_idx_view_hashed

using MoFEM::NumeredDofEntity_multiIndex_idx_view_hashed = typedef multi_index_container< boost::shared_ptr<NumeredDofEntity>, indexed_by<hashed_unique<const_mem_fun<NumeredDofEntity, DofIdx, &NumeredDofEntity::getDofIdx> >> >

Definition at line 519 of file DofsMultiIndices.hpp.

◆ NumeredDofEntity_multiIndex_petsc_local_dof_view_ordered_non_unique

using MoFEM::NumeredDofEntity_multiIndex_petsc_local_dof_view_ordered_non_unique = typedef multi_index_container<boost::shared_ptr<NumeredDofEntity>, indexed_by<ordered_non_unique<const_mem_fun< NumeredDofEntity, DofIdx, &NumeredDofEntity::getPetscLocalDofIdx> >> >

Definition at line 524 of file DofsMultiIndices.hpp.

◆ NumeredDofEntity_multiIndex_uid_view_ordered

using MoFEM::NumeredDofEntity_multiIndex_uid_view_ordered = typedef multi_index_container<boost::shared_ptr<NumeredDofEntity>, indexed_by< ordered_unique<const_mem_fun< NumeredDofEntity::interface_type_DofEntity, UId, &NumeredDofEntity::getLocalUniqueId > > > >

Definition at line 506 of file DofsMultiIndices.hpp.

◆ OpCalculateHOJacForFace

◆ OpCalculateHOJacForFaceEmbeddedIn3DSpace

Examples
heat_method.cpp, and shallow_wave.cpp.

Definition at line 241 of file HODataOperators.hpp.

◆ OpCalculateScalarFieldValuesDot

◆ OpCalculateScalarFieldValuesDotDot

Examples
wave_equation.cpp.

Definition at line 277 of file UserDataOperators.hpp.

◆ OpCalculateScalarValuesDot

\depreacted Name inconstent with other operators

Definition at line 284 of file UserDataOperators.hpp.

◆ OpSetContrariantPiolaTransformOnEdge

Deprecated:
Name is deprecated and this is added for back compatibility

Definition at line 2623 of file UserDataOperators.hpp.

◆ OpSetContravariantPiolaTransformOnFace2D

◆ OpSetContravariantPiolaTransformOnFace2DEmbeddedIn3DSpace

Definition at line 2598 of file UserDataOperators.hpp.

◆ OpSetInvJacHcurlFace

◆ OpSetInvJacHcurlFaceEmbeddedIn3DSpace

Definition at line 2535 of file UserDataOperators.hpp.

◆ RefElement_multiIndex_parents_view

typedef multi_index_container< boost::shared_ptr<RefElement>, indexed_by< ordered_unique<tag<Ent_mi_tag>, const_mem_fun<RefElement::interface_type_RefEntity, EntityHandle, &RefElement::getEnt> >, ordered_non_unique< tag<Ent_Ent_mi_tag>, const_mem_fun<RefElement::interface_type_RefEntity, EntityHandle, &RefElement::getParentEnt> >, ordered_non_unique< tag<Composite_ParentEnt_And_BitsOfRefinedEdges_mi_tag>, composite_key< RefElement, const_mem_fun<RefElement::interface_type_RefEntity, EntityHandle, &RefElement::getParentEnt>, const_mem_fun<RefElement, int, &RefElement::getBitRefEdgesUlong> > > > > MoFEM::RefElement_multiIndex_parents_view

Definition at line 41 of file MeshRefinement.cpp.

◆ RefEntity

using MoFEM::RefEntity = typedef RefEntityTmp<0>

Definition at line 569 of file RefEntsMultiIndices.hpp.

◆ RefEntity_multiIndex_view_by_ordered_parent_entity

using MoFEM::RefEntity_multiIndex_view_by_ordered_parent_entity = typedef multi_index_container< boost::shared_ptr<RefEntity>, indexed_by<ordered_non_unique<const_mem_fun<RefEntity, EntityHandle, &RefEntity::getParentEnt> >, hashed_unique< tag<Composite_EntType_and_ParentEntType_mi_tag>, composite_key<boost::shared_ptr<RefEntity>, const_mem_fun<RefEntity, EntityHandle, &RefEntity::getEnt>, const_mem_fun<RefEntity, EntityHandle, &RefEntity::getParentEnt> >> > >

Definition at line 781 of file RefEntsMultiIndices.hpp.

◆ RefEntity_multiIndex_view_sequence_ordered_view

using MoFEM::RefEntity_multiIndex_view_sequence_ordered_view = typedef multi_index_container< boost::shared_ptr<RefEntity>, indexed_by< sequenced<>, ordered_unique<tag<Ent_mi_tag>, const_mem_fun<RefEntity, EntityHandle, &RefEntity::getEnt> >> >

Definition at line 796 of file RefEntsMultiIndices.hpp.

◆ Sev

Definition at line 27 of file CoreTemplates.hpp.

◆ ShardVec

template<typename T >
using MoFEM::ShardVec = typedef boost::shared_ptr<std::vector<T> >

Definition at line 24 of file Templates.hpp.

◆ SkeletonEle

Definition at line 184 of file MultifieldPlasticity.hpp.

◆ SkeletonEleOp

Definition at line 185 of file MultifieldPlasticity.hpp.

◆ SkeletonEleOpAssembly

Definition at line 186 of file MultifieldPlasticity.hpp.

◆ VectorDofs

using MoFEM::VectorDofs = typedef ublas::vector<FEDofEntity *, DofsAllocator>
Examples
HookeElement.cpp.

Definition at line 35 of file DataStructures.hpp.

◆ VectorFieldEntities

using MoFEM::VectorFieldEntities = typedef ublas::vector<FieldEntity *, FieldEntAllocator>

Definition at line 43 of file DataStructures.hpp.

◆ VolumeElementForcesAndSourcesCoreOnContactPrismSide

Volume element used to integrate on contact element (could be extended for other volume elements) mofem_forces_and_sources_volume_element.

Examples
continuity_check_on_contact_prism_side_ele.cpp.

Definition at line 163 of file VolumeElementForcesAndSourcesCoreOnContactPrismSide.hpp.

Function Documentation

◆ addHOOpsFace3D()

template<typename E >
MoFEMErrorCode MoFEM::addHOOpsFace3D ( const std::string  field,
E e,
bool  hcurl,
bool  hdiv 
)
Examples
elasticity.cpp, nonlinear_dynamics.cpp, simple_contact.cpp, and simple_contact_thermal.cpp.

Definition at line 496 of file HODataOperators.hpp.

497  {
499  e.meshPositionsFieldName = "none";
500  e.getOpPtrVector().push_back(new OpGetHONormalsOnFace(field));
501  e.getOpPtrVector().push_back(new OpCalculateHOCoords(field));
502  if (hcurl) {
503  e.getOpPtrVector().push_back(
504  new OpHOSetContravariantPiolaTransformOnFace3D(HDIV));
505  }
506  if (hdiv) {
507  e.getOpPtrVector().push_back(
508  new OpHOSetCovariantPiolaTransformOnFace3D(HDIV));
509  }
511 }
@ HDIV
field with continuous normal traction
Definition: definitions.h:98
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:339
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:409

◆ addHOOpsVol()

template<typename E >
MoFEMErrorCode MoFEM::addHOOpsVol ( const std::string  field,
E e,
bool  h1,
bool  hcurl,
bool  hdiv,
bool  l2 
)
Examples
HookeElement.cpp, MagneticElement.hpp, Remodeling.cpp, elasticity.cpp, navier_stokes.cpp, and nonlinear_dynamics.cpp.

Definition at line 463 of file HODataOperators.hpp.

464  {
466  auto material_grad_mat = boost::make_shared<MatrixDouble>();
467  auto material_det_vec = boost::make_shared<VectorDouble>();
468  auto material_inv_grad_mat = boost::make_shared<MatrixDouble>();
469  e.getOpPtrVector().push_back(
470  new OpCalculateVectorFieldGradient<3, 3>(field, material_grad_mat));
471  e.getOpPtrVector().push_back(new OpInvertMatrix<3>(
472  material_grad_mat, material_det_vec, material_inv_grad_mat));
473  e.getOpPtrVector().push_back(new OpSetHOWeights(material_det_vec));
474  if (h1)
475  e.getOpPtrVector().push_back(
476  new OpSetHOInvJacToScalarBases(H1, material_inv_grad_mat));
477  if (l2)
478  e.getOpPtrVector().push_back(
479  new OpSetHOInvJacToScalarBases(L2, material_inv_grad_mat));
480  if (hdiv) {
481  e.getOpPtrVector().push_back(new OpSetHOContravariantPiolaTransform(
482  HDIV, material_det_vec, material_grad_mat));
483  e.getOpPtrVector().push_back(
484  new OpSetHOInvJacVectorBase(HDIV, material_inv_grad_mat));
485  }
486  if (hcurl) {
487  e.getOpPtrVector().push_back(
488  new OpSetHOCovariantPiolaTransform(HCURL, material_inv_grad_mat));
489  e.getOpPtrVector().push_back(
490  new OpSetHOInvJacVectorBase(HCURL, material_inv_grad_mat));
491  }
493 }
@ L2
field with C-1 continuity
Definition: definitions.h:99
@ H1
continuous field
Definition: definitions.h:96
@ HCURL
field with continuous tangents
Definition: definitions.h:97

◆ cmp_uid_hi()

static auto MoFEM::cmp_uid_hi ( const UId b,
const boost::weak_ptr< FieldEntity > &  a 
)
static

Definition at line 43 of file ForcesAndSourcesCore.cpp.

43  {
44  if (auto a_ptr = a.lock()) {
45  if (b < a_ptr->getLocalUniqueId())
46  return true;
47  else
48  return false;
49  } else {
50  return true;
51  }
52 }
constexpr double a

◆ cmp_uid_lo()

static auto MoFEM::cmp_uid_lo ( const boost::weak_ptr< FieldEntity > &  a,
const UId b 
)
static

Definition at line 32 of file ForcesAndSourcesCore.cpp.

32  {
33  if (auto a_ptr = a.lock()) {
34  if (a_ptr->getLocalUniqueId() < b)
35  return true;
36  else
37  return false;
38  } else {
39  return false;
40  }
41 }

◆ computeEigenValuesSymmetric() [1/4]

template<int DIM>
MoFEMErrorCode MoFEM::computeEigenValuesSymmetric ( const FTensor::Tensor2_symmetric< double, DIM > &  mat,
FTensor::Tensor1< double, DIM > &  eig,
FTensor::Tensor2< double, DIM, DIM > &  eigen_vec 
)

compute eigenvalues of a symmetric tensor using lapack dsyev

Template Parameters
DIM
Parameters
matinput tensor of size DIM x DIM
eigoutput eigen values sorted
eigen_vecoutput matrix of row eigen vectors
Returns
MoFEMErrorCode

Definition at line 959 of file Templates.hpp.

961  {
963  for (int ii = 0; ii != DIM; ii++)
964  for (int jj = 0; jj != DIM; jj++)
965  eigen_vec(ii, jj) = mat(ii, jj);
966 
967  CHKERR computeEigenValuesSymmetric<DIM>(eigen_vec, eig);
968 
970 }

◆ computeEigenValuesSymmetric() [2/4]

template<int DIM>
MoFEMErrorCode MoFEM::computeEigenValuesSymmetric ( const FTensor::Tensor2_symmetric< FTensor::PackPtr< double *, 1 >, DIM > &  mat,
FTensor::Tensor1< double, DIM > &  eig,
FTensor::Tensor2< double, DIM, DIM > &  eigen_vec 
)

compute eigenvalues of a symmetric tensor using lapack dsyev

Template Parameters
DIM
Parameters
matinput tensor pointer of size DIM x DIM
eigoutput eigen values sorted
eigen_vecoutput matrix of row eigen vectors
Returns
MoFEMErrorCode

Definition at line 934 of file Templates.hpp.

937  {
939  for (int ii = 0; ii != DIM; ii++)
940  for (int jj = 0; jj != DIM; jj++)
941  eigen_vec(ii, jj) = mat(ii, jj);
942 
943  CHKERR computeEigenValuesSymmetric<DIM>(eigen_vec, eig);
944 
946 }

◆ computeEigenValuesSymmetric() [3/4]

MoFEMErrorCode MoFEM::computeEigenValuesSymmetric ( const MatrixDouble mat,
VectorDouble eig,
MatrixDouble eigen_vec 
)

compute eigenvalues of a symmetric matrix using lapack dsyev

Parameters
matinput symmetric matrix
eigoutput eigen values sorted
eigen_vecoutput matrix of row eigen vectors
Returns
MoFEMErrorCode

Definition at line 868 of file Templates.hpp.

870  {
872 
873  const size_t M = mat.size1();
874  const size_t N = mat.size2();
875 
876  if (M == 0 || M != N)
877  SETERRQ2(
878  PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
879  "The input matrix for eigen value computation is not square %d != %d",
880  M, N);
881  if (eig.size() != M)
882  eig.resize(M, false);
883 
884  eigen_vec = mat;
885  const int n = M;
886  const int lda = M;
887  const int size = (M + 2) * M;
888  int lwork = size;
889  double *work = new double[size];
890 
891  if (lapack_dsyev('V', 'U', n, &*eigen_vec.data().begin(), lda,
892  &*eig.data().begin(), work, lwork) > 0)
893  SETERRQ(PETSC_COMM_SELF, MOFEM_INVALID_DATA,
894  "The algorithm failed to compute eigenvalues.");
895 
896  delete[] work;
898 }
static Index< 'M', 3 > M
static Index< 'n', 3 > n
@ MOFEM_DATA_INCONSISTENCY
Definition: definitions.h:42
@ MOFEM_INVALID_DATA
Definition: definitions.h:47
static __CLPK_integer lapack_dsyev(char jobz, char uplo, __CLPK_integer n, __CLPK_doublereal *a, __CLPK_integer lda, __CLPK_doublereal *w, __CLPK_doublereal *work, __CLPK_integer lwork)
Definition: lapack_wrap.h:273
const int N
Definition: speed_test.cpp:3

◆ computeEigenValuesSymmetric() [4/4]

template<int DIM>
MoFEMErrorCode MoFEM::computeEigenValuesSymmetric ( FTensor::Tensor2< double, DIM, DIM > &  eigen_vec,
FTensor::Tensor1< double, DIM > &  eig 
)

compute eigenvalues of a symmetric matrix using lapack dsyev

Template Parameters
DIM
Parameters
eigen_vecinput / output DIM x DIM matrix of row eigen vectors
eigoutput eigen values sorted
Returns
MoFEMErrorCode

Definition at line 909 of file Templates.hpp.

910  {
912 
913  const int n = DIM;
914  const int lda = DIM;
915  const int lwork = (DIM + 2) * DIM;
916  std::array<double, (DIM + 2) * DIM> work;
917 
918  if (lapack_dsyev('V', 'U', n, &eigen_vec(0, 0), lda, &eig(0), work.data(),
919  lwork) > 0)
920  SETERRQ(PETSC_COMM_SELF, MOFEM_INVALID_DATA,
921  "The algorithm failed to compute eigenvalues.");
923 }
T data[Tensor_Dim]

◆ computeMatrixInverse()

MoFEMErrorCode MoFEM::computeMatrixInverse ( MatrixDouble mat)

compute matrix inverse with lapack dgetri

Parameters
matinput square matrix / output inverse matrix
Returns
MoFEMErrorCode

Definition at line 781 of file Templates.hpp.

781  {
783 
784  const size_t M = mat.size1();
785  const size_t N = mat.size2();
786 
787  if (M != N)
788  SETERRQ2(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
789  "The input matrix for inverse computation is not square %d != %d",
790  M, N);
791 
792  int *ipv = new int[N];
793  int lwork = N * N;
794  double *work = new double[lwork];
795  int info;
796  info = lapack_dgetrf(N, N, &*mat.data().begin(), N, ipv);
797  if (info != 0)
798  SETERRQ1(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
799  "lapack error info = %d", info);
800  info = lapack_dgetri(N, &*mat.data().begin(), N, ipv, work, lwork);
801  if (info != 0)
802  SETERRQ1(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
803  "lapack error info = %d", info);
804 
805  delete[] ipv;
806  delete[] work;
807 
809 }
static __CLPK_integer lapack_dgetrf(__CLPK_integer m, __CLPK_integer n, __CLPK_doublereal *a, __CLPK_integer lda, __CLPK_integer *ipiv)
Definition: lapack_wrap.h:169
static __CLPK_integer lapack_dgetri(__CLPK_integer n, __CLPK_doublereal *a, __CLPK_integer lda, __CLPK_integer *ipiv, __CLPK_doublereal *work, __CLPK_integer lwork)
Definition: lapack_wrap.h:197

◆ constructor_data()

static void MoFEM::constructor_data ( DataForcesAndSourcesCore data,
const EntityType  type 
)
static

Definition at line 57 of file DataStructures.cpp.

58  {
59 
61 
62  data->dataOnEntities[MBENTITYSET].push_back(new EntData());
63 
64  auto set_default = [&]() {
65  std::array<size_t, MBMAXTYPE> count;
66  std::fill(count.begin(), count.end(), 0);
67  const int dim_type = moab::CN::Dimension(type);
68  data->dataOnEntities[MBVERTEX].push_back(new EntData());
69  if (type != MBVERTEX) {
70  data->dataOnEntities[type].push_back(new EntData());
71  if (type > MBEDGE) {
72  for (auto dd = dim_type - 1; dd > 0; --dd) {
73  int nb_ents = moab::CN::NumSubEntities(type, dd);
74  for (int ii = 0; ii != nb_ents; ++ii) {
75  auto sub_ent_type = moab::CN::SubEntityType(type, dd, ii);
76  count[sub_ent_type] = nb_ents;
77  }
78  for (auto tt = moab::CN::TypeDimensionMap[dd].first;
79  tt <= moab::CN::TypeDimensionMap[dd].second; ++tt) {
80  for (size_t n = 0; n != count[tt]; ++n)
81  data->dataOnEntities[tt].push_back(new EntData());
82  }
83  }
84  }
85  }
86  };
87 
88  switch (type) {
89  case MBENTITYSET:
90  break;
91 
92  default:
93  set_default();
94  }
95 }
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
Definition: ddTensor0.hpp:33
DataForcesAndSourcesCore::EntData EntData
Data on single entity (This is passed as argument to DataOperator::doWork)

◆ constructor_derived_data()

static void MoFEM::constructor_derived_data ( DerivedDataForcesAndSourcesCore derived_data,
const boost::shared_ptr< DataForcesAndSourcesCore > &  data_ptr 
)
static

Definition at line 109 of file DataStructures.cpp.

111  {
112 
114  using DerivedEntData = DerivedDataForcesAndSourcesCore::DerivedEntData;
115 
116  for (int tt = MBVERTEX; tt != MBMAXTYPE; ++tt) {
117  auto &ent_data = data_ptr->dataOnEntities[tt];
118  auto &derived_ent_data = derived_data->dataOnEntities[tt];
119  for (auto &e : ent_data) {
120  boost::shared_ptr<EntData> ent_data_ptr(data_ptr, &e);
121  derived_ent_data.push_back(new DerivedEntData(ent_data_ptr));
122  }
123  }
124 }

◆ dEterminant()

template<class T >
static double MoFEM::dEterminant ( T t)
static

Calculate the determinant of a 3x3 matrix or a tensor of rank 2.

Template Parameters
T
Parameters
t
Returns
double
Examples
EshelbianOperators.cpp, and EshelbianPlasticity.cpp.

Definition at line 979 of file Templates.hpp.

979  {
980  return t(0, 0) * t(1, 1) * t(2, 2) + t(1, 0) * t(2, 1) * t(0, 2) +
981  t(2, 0) * t(0, 1) * t(1, 2) - t(0, 0) * t(2, 1) * t(1, 2) -
982  t(2, 0) * t(1, 1) * t(0, 2) - t(1, 0) * t(0, 1) * t(2, 2);
983 }

◆ determinantTensor2by2()

template<class T1 , class T2 >
MoFEMErrorCode MoFEM::determinantTensor2by2 ( T1 &  t,
T2 &  det 
)

Calculate determinant 2 by 2.

Definition at line 1022 of file Templates.hpp.

1022  {
1024  det = t(0, 0) * t(1, 1) - t(0, 1) * t(1, 0);
1026 }
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:440
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:433

◆ determinantTensor3by3()

template<class T1 , class T2 >
MoFEMErrorCode MoFEM::determinantTensor3by3 ( T1 &  t,
T2 &  det 
)

Calculate determinant 3 by 3.

Examples
HookeElement.cpp, HookeElement.hpp, HookeInternalStressElement.hpp, Remodeling.cpp, Remodeling.hpp, and lorentz_force.cpp.

Definition at line 1009 of file Templates.hpp.

1009  {
1011  det = +t(0, 0) * t(1, 1) * t(2, 2) + t(1, 0) * t(2, 1) * t(0, 2) +
1012  t(2, 0) * t(0, 1) * t(1, 2) - t(0, 0) * t(2, 1) * t(1, 2) -
1013  t(2, 0) * t(1, 1) * t(0, 2) - t(1, 0) * t(0, 1) * t(2, 2);
1015 }

◆ DMMoFEMDuplicateDMCtx()

PetscErrorCode MoFEM::DMMoFEMDuplicateDMCtx ( DM  dm,
DM  dm_duplicate 
)

Duplicate internal data struture.

Parameters
dm
dm_duplicate
Returns
PetscErrorCode

Definition at line 193 of file DMMMoFEM.cpp.

193  {
195 
196  auto *dm_field = static_cast<DMCtx *>(dm->data);
197  if (!dm->data)
198  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
199  "data structure for MoFEM not yet created");
200 
201  if (static_cast<DMCtx *>(dm_duplicate->data)->referenceNumber == 0)
202  delete static_cast<DMCtx *>(dm_duplicate->data);
203 
204  dm_duplicate->data = dm->data;
205  ++(static_cast<DMCtx *>(dm_duplicate->data)->referenceNumber);
206 
208 }
@ MOFEM_NOT_IMPLEMENTED
Definition: definitions.h:43

◆ DMMoFEMGetDestroyProblem()

PetscErrorCode MoFEM::DMMoFEMGetDestroyProblem ( DM  dm,
PetscBool *  destroy_problem 
)

Get if problem will be destroyed with DM

Parameters
dmthe DM object
destroyreturn if PETSC_TRUE problem is destroyed
Returns
error code

Definition at line 402 of file DMMMoFEM.cpp.

402  {
404  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
406  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
407  *destroy_problem = dm_field->destroyProblem;
409 }

◆ DMMoFEMGetSubColIS()

PetscErrorCode MoFEM::DMMoFEMGetSubColIS ( DM  dm,
IS *  is 
)

get sub problem is

Parameters
dmhas to be created with DMMoFEMSetSquareProblem
isreturn is on the row
Returns
error code

Returns IS with global indices of the DM used to create SubDM

Definition at line 304 of file DMMMoFEM.cpp.

304  {
306  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
308  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
309  if (dm_field->isSubDM != PETSC_TRUE) {
310  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
311  "This DM is not created as a SubDM");
312  }
313  if (dm_field->isProblemBuild != PETSC_TRUE) {
314  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED, "Problem is not build");
315  }
316  boost::shared_ptr<Problem::SubProblemData> sub_data =
317  dm_field->problemPtr->getSubData();
318  CHKERR sub_data->getColIs(is);
320 }

◆ DMMoFEMGetSubRowIS()

PetscErrorCode MoFEM::DMMoFEMGetSubRowIS ( DM  dm,
IS *  is 
)

get sub problem is

Parameters
dmhas to be created with DMMoFEMSetSquareProblem
isreturn is on the row
Returns
error code

Returns IS with global indices of the DM used to create SubDM

Examples
analytical_poisson_field_split.cpp.

Definition at line 286 of file DMMMoFEM.cpp.

286  {
288  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
290  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
291  if (dm_field->isSubDM != PETSC_TRUE) {
292  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
293  "This DM is not created as a SubDM");
294  }
295  if (dm_field->isProblemBuild != PETSC_TRUE) {
296  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED, "Problem is not build");
297  }
298  boost::shared_ptr<Problem::SubProblemData> sub_data =
299  dm_field->problemPtr->getSubData();
300  CHKERR sub_data->getRowIs(is);
302 }

◆ DMMoFEMKSPSetComputeOperators()

template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode MoFEM::DMMoFEMKSPSetComputeOperators ( DM  dm,
fe_name,
T0  method,
T1  pre_only,
T2  post_only 
)
static

Definition at line 611 of file DMMMoFEM.cpp.

612  {
613  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
615  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
616  if (pre_only) {
617  dm_field->kspCtx->get_preProcess_to_do_Mat().push_back(pre_only);
618  }
619  if (method) {
620  dm_field->kspCtx->get_loops_to_do_Mat().push_back(
621  PairNameFEMethodPtr(fe_name, method));
622  }
623  if (post_only) {
624  dm_field->kspCtx->get_postProcess_to_do_Mat().push_back(post_only);
625  }
626  CHKERR DMKSPSetComputeOperators(dm, KspMat, dm_field->kspCtx.get());
628 }
PetscErrorCode KspMat(KSP ksp, Mat A, Mat B, void *ctx)
Run over elenents in the list.
Definition: KspCtx.cpp:87

◆ DMMoFEMKSPSetComputeRHS()

template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode MoFEM::DMMoFEMKSPSetComputeRHS ( DM  dm,
fe_name,
T0  method,
T1  pre_only,
T2  post_only 
)
static

Definition at line 570 of file DMMMoFEM.cpp.

571  {
572  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
574  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
575  if (pre_only) {
576  dm_field->kspCtx->get_preProcess_to_do_Rhs().push_back(pre_only);
577  }
578  if (method) {
579  dm_field->kspCtx->get_loops_to_do_Rhs().push_back(
580  PairNameFEMethodPtr(fe_name, method));
581  }
582  if (post_only) {
583  dm_field->kspCtx->get_postProcess_to_do_Rhs().push_back(post_only);
584  }
585  CHKERR DMKSPSetComputeRHS(dm, KspRhs, dm_field->kspCtx.get());
587 }
PetscErrorCode KspRhs(KSP ksp, Vec f, void *ctx)
Run over elements in the lists.
Definition: KspCtx.cpp:23

◆ DMMoFEMResolveSharedEntities()

PetscErrorCode MoFEM::DMMoFEMResolveSharedEntities ( DM  dm,
const char  fe_name[] 
)
Deprecated:
Use DMMoFEMResolveSharedFiniteElements

Definition at line 430 of file DMMMoFEM.cpp.

430  {
431  return DMMoFEMResolveSharedFiniteElements(dm, fe_name);
432 }
PetscErrorCode DMMoFEMResolveSharedFiniteElements(DM dm, const char fe_name[])
Resolve shared entities.
Definition: DMMMoFEM.cpp:420

◆ DMMoFEMSetDestroyProblem()

PetscErrorCode MoFEM::DMMoFEMSetDestroyProblem ( DM  dm,
PetscBool  destroy_problem 
)

If this is set to PETSC_TRUE problem is deleted with DM

Parameters
dmthe DM object
destroyif PETSC_TRUE problem is destroyed
Returns
error code
Examples
EshelbianPlasticity.cpp.

Definition at line 393 of file DMMMoFEM.cpp.

393  {
395  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
397  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
398  dm_field->destroyProblem = destroy_problem;
400 }

◆ DMMoFEMSetVerbosity()

PetscErrorCode MoFEM::DMMoFEMSetVerbosity ( DM  dm,
const int  verb 
)

Set verbosity level.

Parameters
dm
verbsee VERBOSITY_LEVELS for list of the levels
Returns
PetscErrorCode

Definition at line 1379 of file DMMMoFEM.cpp.

1379  {
1380  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
1382  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
1383  dm_field->verbosity = verb;
1385 }

◆ DMMoFEMSNESSetFunction()

template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode MoFEM::DMMoFEMSNESSetFunction ( DM  dm,
fe_name,
T0  method,
T1  pre_only,
T2  post_only 
)
static

Definition at line 651 of file DMMMoFEM.cpp.

652  {
653  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
655  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
656  if (pre_only) {
657  dm_field->snesCtx->get_preProcess_to_do_Rhs().push_back(pre_only);
658  }
659  if (method) {
660  dm_field->snesCtx->get_loops_to_do_Rhs().push_back(
661  PairNameFEMethodPtr(fe_name, method));
662  }
663  if (post_only) {
664  dm_field->snesCtx->get_postProcess_to_do_Rhs().push_back(post_only);
665  }
666  CHKERR DMSNESSetFunction(dm, SnesRhs, dm_field->snesCtx.get());
668 }
PetscErrorCode SnesRhs(SNES snes, Vec x, Vec f, void *ctx)
This is MoFEM implementation for the right hand side (residual vector) evaluation in SNES solver.
Definition: SnesCtx.cpp:17

◆ DMMoFEMSNESSetJacobian()

template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode MoFEM::DMMoFEMSNESSetJacobian ( DM  dm,
fe_name,
T0  method,
T1  pre_only,
T2  post_only 
)
static

Definition at line 692 of file DMMMoFEM.cpp.

693  {
694  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
696  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
697  if (pre_only) {
698  dm_field->snesCtx->get_preProcess_to_do_Mat().push_back(pre_only);
699  }
700  if (method) {
701  dm_field->snesCtx->get_loops_to_do_Mat().push_back(
702  PairNameFEMethodPtr(fe_name, method));
703  }
704  if (post_only) {
705  dm_field->snesCtx->get_postProcess_to_do_Mat().push_back(post_only);
706  }
707  CHKERR DMSNESSetJacobian(dm, SnesMat, dm_field->snesCtx.get());
709 }
PetscErrorCode SnesMat(SNES snes, Vec x, Mat A, Mat B, void *ctx)
This is MoFEM implementation for the left hand side (tangent matrix) evaluation in SNES solver.
Definition: SnesCtx.cpp:126

◆ DMMoFEMTSSetIFunction()

template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode MoFEM::DMMoFEMTSSetIFunction ( DM  dm,
fe_name,
T0  method,
T1  pre_only,
T2  post_only 
)
static

Definition at line 733 of file DMMMoFEM.cpp.

734  {
735  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
737  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
738  if (pre_only) {
739  dm_field->tsCtx->get_preProcess_to_do_IFunction().push_back(pre_only);
740  }
741  if (method) {
742  dm_field->tsCtx->get_loops_to_do_IFunction().push_back(
743  PairNameFEMethodPtr(fe_name, method));
744  }
745  if (post_only) {
746  dm_field->tsCtx->get_postProcess_to_do_IFunction().push_back(post_only);
747  }
748  CHKERR DMTSSetIFunction(dm, TsSetIFunction, dm_field->tsCtx.get());
750 }
PetscErrorCode TsSetIFunction(TS ts, PetscReal t, Vec u, Vec u_t, Vec F, void *ctx)
Set IFunction for TS solver.
Definition: TsCtx.cpp:17

◆ DMMoFEMTSSetIJacobian()

template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode MoFEM::DMMoFEMTSSetIJacobian ( DM  dm,
fe_name,
T0  method,
T1  pre_only,
T2  post_only 
)
static

Definition at line 776 of file DMMMoFEM.cpp.

777  {
778  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
780  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
781  if (pre_only) {
782  dm_field->tsCtx->get_preProcess_to_do_IJacobian().push_back(pre_only);
783  }
784  if (method) {
785  dm_field->tsCtx->get_loops_to_do_IJacobian().push_back(
786  PairNameFEMethodPtr(fe_name, method));
787  }
788  if (post_only) {
789  dm_field->tsCtx->get_postProcess_to_do_IJacobian().push_back(post_only);
790  }
791  CHKERR DMTSSetIJacobian(dm, TsSetIJacobian, dm_field->tsCtx.get());
793 }
PetscErrorCode TsSetIJacobian(TS ts, PetscReal t, Vec u, Vec u_t, PetscReal a, Mat A, Mat B, void *ctx)
Set function evaluating jacobina in TS solver.
Definition: TsCtx.cpp:120

◆ DMMoFEMTSSetMonitor() [1/3]

PetscErrorCode MoFEM::DMMoFEMTSSetMonitor ( DM  dm,
TS  ts,
const char  fe_name[],
MoFEM::FEMethod method,
MoFEM::BasicMethod pre_only,
MoFEM::BasicMethod post_only 
)

Set Monitor To TS solver.

See PETSc documentaton here

Parameters
dm
tstime solver
fe_name
method
pre_only
post_only
Returns
PetscErrorCod

Definition at line 937 of file DMMMoFEM.cpp.

940  {
941  return DMMoFEMTSSetMonitor<const char *, MoFEM::FEMethod *,
943  dm, ts, fe_name, method, pre_only, post_only);
945 }
static PetscErrorCode DMMoFEMTSSetMonitor(DM dm, TS ts, S fe_name, T0 method, T1 pre_only, T2 post_only)
Definition: DMMMoFEM.cpp:921
Data structure to exchange data between mofem and User Loop Methods.
structure for User Loop Methods on finite elements

◆ DMMoFEMTSSetMonitor() [2/3]

PetscErrorCode MoFEM::DMMoFEMTSSetMonitor ( DM  dm,
TS  ts,
const std::string  fe_name,
boost::shared_ptr< MoFEM::FEMethod method,
boost::shared_ptr< MoFEM::BasicMethod pre_only,
boost::shared_ptr< MoFEM::BasicMethod post_only 
)

Set Monitor To TS solver.

See PETSc documentaton here

Parameters
dm
tstime solver
fe_name
method
pre_only
post_only
Returns
PetscErrorCod
Examples
contact.cpp, heat_equation.cpp, nonlinear_elastic.cpp, photon_diffusion.cpp, plastic.cpp, reaction_diffusion.cpp, shallow_wave.cpp, thermo_plastic.cpp, and wave_equation.cpp.

Definition at line 948 of file DMMMoFEM.cpp.

951  {
952  return DMMoFEMTSSetMonitor<const std::string,
953  boost::shared_ptr<MoFEM::FEMethod>,
954  boost::shared_ptr<MoFEM::BasicMethod>,
955  boost::shared_ptr<MoFEM::BasicMethod>>(
956  dm, ts, fe_name, method, pre_only, post_only);
958 }

◆ DMMoFEMTSSetMonitor() [3/3]

template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode MoFEM::DMMoFEMTSSetMonitor ( DM  dm,
TS  ts,
fe_name,
T0  method,
T1  pre_only,
T2  post_only 
)
static

Definition at line 921 of file DMMMoFEM.cpp.

922  {
923  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
925  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
926  if (pre_only)
927  dm_field->tsCtx->get_preProcess_to_do_Monitor().push_back(pre_only);
928  if (method)
929  dm_field->tsCtx->get_loops_to_do_Monitor().push_back(
930  PairNameFEMethodPtr(fe_name, method));
931  if (post_only)
932  dm_field->tsCtx->get_postProcess_to_do_Monitor().push_back(post_only);
933  CHKERR TSMonitorSet(ts, TsMonitorSet, dm_field->tsCtx.get(), PETSC_NULL);
935 }
PetscErrorCode TsMonitorSet(TS ts, PetscInt step, PetscReal t, Vec u, void *ctx)
Set monitor for TS solver.
Definition: TsCtx.cpp:209

◆ DMMoFEMTSSetRHSFunction() [1/2]

PetscErrorCode MoFEM::DMMoFEMTSSetRHSFunction ( DM  dm,
const std::string  fe_name,
boost::shared_ptr< MoFEM::FEMethod method,
boost::shared_ptr< MoFEM::BasicMethod pre_only,
boost::shared_ptr< MoFEM::BasicMethod post_only 
)

set TS the right hand side function

See petsc documentation

Parameters
dm
fe_name
method
pre_only
post_only
Returns
PetscErrorCode
Examples
reaction_diffusion.cpp.

Definition at line 834 of file DMMMoFEM.cpp.

837  {
838  return DMMoFEMTSSetRHSFunction<const std::string,
839  boost::shared_ptr<MoFEM::FEMethod>,
840  boost::shared_ptr<MoFEM::BasicMethod>,
841  boost::shared_ptr<MoFEM::BasicMethod>>(
842  dm, fe_name, method, pre_only, post_only);
844 }
static PetscErrorCode DMMoFEMTSSetRHSFunction(DM dm, S fe_name, T0 method, T1 pre_only, T2 post_only)
Definition: DMMMoFEM.cpp:817

◆ DMMoFEMTSSetRHSFunction() [2/2]

template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode MoFEM::DMMoFEMTSSetRHSFunction ( DM  dm,
fe_name,
T0  method,
T1  pre_only,
T2  post_only 
)
static

Definition at line 817 of file DMMMoFEM.cpp.

818  {
819  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
821  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
822  if (pre_only)
823  dm_field->tsCtx->get_preProcess_to_do_RHSFunction().push_back(pre_only);
824  if (method)
825  dm_field->tsCtx->get_loops_to_do_RHSFunction().push_back(
826  PairNameFEMethodPtr(fe_name, method));
827  if (post_only)
828  dm_field->tsCtx->get_postProcess_to_do_RHSFunction().push_back(post_only);
829  CHKERR DMTSSetRHSFunction(dm, TsSetRHSFunction, dm_field->tsCtx.get());
831 }
PetscErrorCode TsSetRHSFunction(TS ts, PetscReal t, Vec u, Vec F, void *ctx)
TS solver function.
Definition: TsCtx.cpp:267

◆ DMMoFEMTSSetRHSJacobian() [1/2]

PetscErrorCode MoFEM::DMMoFEMTSSetRHSJacobian ( DM  dm,
const std::string  fe_name,
boost::shared_ptr< MoFEM::FEMethod method,
boost::shared_ptr< MoFEM::BasicMethod pre_only,
boost::shared_ptr< MoFEM::BasicMethod post_only 
)

set TS the right hand side jacobian

See petsc documentation

Parameters
dm
fe_name
method
pre_only
post_only
Returns
PetscErrorCode

Definition at line 864 of file DMMMoFEM.cpp.

867  {
868  return DMMoFEMTSSetRHSJacobian<const std::string,
869  boost::shared_ptr<MoFEM::FEMethod>,
870  boost::shared_ptr<MoFEM::BasicMethod>,
871  boost::shared_ptr<MoFEM::BasicMethod>>(
872  dm, fe_name, method, pre_only, post_only);
874 }
static PetscErrorCode DMMoFEMTSSetRHSJacobian(DM dm, S fe_name, T0 method, T1 pre_only, T2 post_only)
Definition: DMMMoFEM.cpp:847

◆ DMMoFEMTSSetRHSJacobian() [2/2]

template<class S , class T0 , class T1 , class T2 >
static PetscErrorCode MoFEM::DMMoFEMTSSetRHSJacobian ( DM  dm,
fe_name,
T0  method,
T1  pre_only,
T2  post_only 
)
static

Definition at line 847 of file DMMMoFEM.cpp.

848  {
849  PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
851  DMCtx *dm_field = static_cast<DMCtx *>(dm->data);
852  if (pre_only)
853  dm_field->tsCtx->get_preProcess_to_do_RHSFunction().push_back(pre_only);
854  if (method)
855  dm_field->tsCtx->get_loops_to_do_RHSFunction().push_back(
856  PairNameFEMethodPtr(fe_name, method));
857  if (post_only)
858  dm_field->tsCtx->get_postProcess_to_do_RHSFunction().push_back(post_only);
859  CHKERR DMTSSetRHSJacobian(dm, TsSetRHSJacobian, dm_field->tsCtx.get());
861 }
PetscErrorCode TsSetRHSJacobian(TS ts, PetscReal t, Vec u, Mat A, Mat B, void *ctx)
TS solver function.
Definition: TsCtx.cpp:365

◆ f_TSMonitorSet()

DEPRECATED PetscErrorCode MoFEM::f_TSMonitorSet ( TS  ts,
PetscInt  step,
PetscReal  t,
Vec  u,
void *  ctx 
)
Deprecated:
Do not use, change to TsMonitorSet
Examples
Remodeling.cpp.

Definition at line 329 of file TsCtx.hpp.

330  {
331  return TsMonitorSet(ts, step, t, u, ctx);
332 }

◆ f_TSSetIFunction()

DEPRECATED PetscErrorCode MoFEM::f_TSSetIFunction ( TS  ts,
PetscReal  t,
Vec  u,
Vec  u_t,
Vec  F,
void *  ctx 
)

\deprecate Do not use, change to TsSetIFunction

Definition at line 316 of file TsCtx.hpp.

317  {
318  return TsSetIFunction(ts, t, u, u_t, F, ctx);
319 }

◆ f_TSSetIJacobian()

DEPRECATED PetscErrorCode MoFEM::f_TSSetIJacobian ( TS  ts,
PetscReal  t,
Vec  u,
Vec  u_t,
PetscReal  a,
Mat  A,
Mat  B,
void *  ctx 
)
Deprecated:
Do not use, change to TsSetIJacobian

Definition at line 322 of file TsCtx.hpp.

324  {
325  return TsSetIJacobian(ts, t, u, u_t, a, A, B, ctx);
326 }
constexpr double A

◆ get_cache_data_dofs_view()

template<typename ENTSVIEW , typename DOFSVIEW , typename EXTRACTOR , typename INSERTER >
static MoFEMErrorCode MoFEM::get_cache_data_dofs_view ( ENTSVIEW &  ents_view,
DOFSVIEW &  dofs_view,
EXTRACTOR &&  extractor,
INSERTER &&  inserter 
)
static

Definition at line 537 of file FEMultiIndices.cpp.

538  {
540 
541  auto hint = dofs_view->end();
542  using ValType = typename std::remove_reference<decltype(**hint)>::type;
543 
544  for (auto &it : *ents_view) {
545  if (auto e = it.lock()) {
546 
547  if (auto cache = extractor(e).lock())
548  for (auto dit = cache->loHi[0]; dit != cache->loHi[1]; ++dit)
549  hint = inserter(dofs_view, hint,
550  boost::reinterpret_pointer_cast<ValType>(*dit));
551  else
552  SETERRQ(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY, "Cache not set");
553  }
554  }
555 
557 }
BlockParamData * cache

◆ get_id_for_max_type() [1/2]

template<EntityType TYPE>
EntityHandle MoFEM::get_id_for_max_type ( )

Definition at line 26 of file RefEntsMultiIndices.hpp.

26  {
27  return (static_cast<EntityHandle>(TYPE) << MB_ID_WIDTH) |
28  (~static_cast<EntityHandle>(MB_TYPE_MASK));
29 };
#define MB_ID_WIDTH
Definition: definitions.h:220
#define MB_TYPE_MASK
Definition: definitions.h:221
@ TYPE
Definition: inflate.h:32

◆ get_id_for_max_type() [2/2]

EntityHandle MoFEM::get_id_for_max_type ( const EntityType  type)

Definition at line 35 of file RefEntsMultiIndices.hpp.

35  {
36  return (static_cast<EntityHandle>(type) << MB_ID_WIDTH) |
37  (~static_cast<EntityHandle>(MB_TYPE_MASK));
38 };

◆ get_id_for_min_type() [1/2]

template<EntityType TYPE>
EntityHandle MoFEM::get_id_for_min_type ( )

Definition at line 31 of file RefEntsMultiIndices.hpp.

31  {
32  return (static_cast<EntityHandle>(TYPE) << MB_ID_WIDTH);
33 };

◆ get_id_for_min_type() [2/2]

EntityHandle MoFEM::get_id_for_min_type ( const EntityType  type)

Definition at line 40 of file RefEntsMultiIndices.hpp.

40  {
41  return (static_cast<EntityHandle>(type) << MB_ID_WIDTH);
42 };

◆ get_sub_iface_options_imp() [1/2]

template<class T >
static auto MoFEM::get_sub_iface_options_imp ( T *const  ptr,
int   
) -> decltype(ptr->getSubInterfaceOptions())
static

Definition at line 151 of file Core.cpp.

152  {
153  return ptr->getSubInterfaceOptions();
154 };

◆ get_sub_iface_options_imp() [2/2]

template<class T >
static auto MoFEM::get_sub_iface_options_imp ( T *const  ptr,
long   
) -> MoFEMErrorCode
static

Definition at line 159 of file Core.cpp.

159  {
160  return 0;
161 };

◆ get_tag_ptr()

void* MoFEM::get_tag_ptr ( moab::Interface &  moab,
Tag  th,
EntityHandle  ent,
int *  tag_size 
)

Get the tag ptr object.

Parameters
moab
th
ent
tag_size
Returns
void*

Definition at line 53 of file RefEntsMultiIndices.hpp.

54  {
55  void *ret_val;
56  rval = moab.tag_get_by_ptr(th, &ent, 1, (const void **)&ret_val, tag_size);
57  if (rval != MB_SUCCESS) {
58  if (tag_size)
59  *tag_size = 0;
60  return NULL;
61  } else {
62  return ret_val;
63  }
64 }
static MoFEMErrorCodeGeneric< moab::ErrorCode > rval
Definition: Exceptions.hpp:85

◆ get_value()

template<class TYPE >
static MoFEMErrorCode MoFEM::get_value ( MatrixDouble pts_x,
MatrixDouble pts_t,
TYPE ctx 
)
static

Definition at line 36 of file JacobiPolynomial.cpp.

37  {
39  ctx->baseFunPtr->resize(pts_x.size2(), ctx->P + 1, false);
40  ctx->baseDiffFunPtr->resize(pts_x.size2(), ctx->dIm * (ctx->P + 1), false);
41  if (pts_x.size1() != pts_t.size1() || pts_x.size2() != pts_t.size2()) {
42  SETERRQ(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
43  "Inconsistent size of arguments");
44  }
45  double *l = NULL;
46  double *diff_l = NULL;
47  for (unsigned int gg = 0; gg < pts_x.size2(); gg++) {
48  if (ctx->baseFunPtr)
49  l = &((*ctx->baseFunPtr)(gg, 0));
50  if (ctx->baseDiffFunPtr)
51  diff_l = &((*ctx->baseDiffFunPtr)(gg, 0));
52  ierr = (ctx->basePolynomialsType1)(ctx->P, ctx->aLpha, pts_x(0, gg),
53  pts_t(0, gg), ctx->diffX, ctx->diffT, l,
54  diff_l, ctx->dIm);
55  CHKERRG(ierr);
56  }
58 }
#define CHKERRG(n)
Check error code of MoFEM/MOAB/PETSc function.
Definition: definitions.h:476
FTensor::Index< 'l', 3 > l
static MoFEMErrorCodeGeneric< PetscErrorCode > ierr
Definition: Exceptions.hpp:87

◆ getCommFromPetscObject()

MPI_Comm MoFEM::getCommFromPetscObject ( PetscObject  obj)

Get the Comm From Petsc Object object.

Parameters
obj
Returns
MPI_Comm

Definition at line 152 of file PetscSmartObj.hpp.

152  {
153  MPI_Comm comm;
154  ierr = PetscObjectGetComm(obj, &comm);
155  CHKERRABORT(PETSC_COMM_SELF, ierr);
156  return comm;
157 };

◆ getFTensor0FromVec()

template<int S = 1, class T , class A >
static auto MoFEM::getFTensor0FromVec ( ublas::vector< T, A > &  data)
static

Get tensor rank 0 (scalar) form data vector.

Example how to use it.

vec.resize(nb_gauss_pts,false);
vec.clear();
auto t0 = getFTensor0FromData(data);
for(int gg = 0;gg!=nb_gauss_pts;gg++) {
++t0;
}
ublas::vector< double, DoubleAllocator > VectorDouble
Definition: Types.hpp:74
Examples
ElasticityMixedFormulation.hpp, HookeElement.cpp, NavierStokesElement.cpp, PlasticOpsGeneric.hpp, PlasticOpsLargeStrains.hpp, PlasticOpsSmallStrains.hpp, PlasticThermalOps.hpp, PoissonOperators.hpp, Remodeling.cpp, UnsaturatedFlow.hpp, hcurl_check_approx_in_2d.cpp, mixed_poisson.cpp, reaction_diffusion.cpp, scalar_check_approximation.cpp, and testing_jacobian_of_hook_scaled_with_density_element.cpp.

Definition at line 154 of file Templates.hpp.

154  {
155  return GetFTensor0FromVecImpl<S, T, A>::get(data);
156 }

◆ getFTensor1FromArray() [1/2]

template<int DIM, int S>
FTensor::Tensor1<FTensor::PackPtr<double *, S>, DIM> MoFEM::getFTensor1FromArray ( VectorDouble data)

Get FTensor1 from array.

Todo:
Generalise for diffrent arrays and data types
Template Parameters
DIM
Parameters
data
Returns
FTensor::Tensor1<FTensor::PackPtr<double *, DIM>, DIM>

Definition at line 670 of file Templates.hpp.

670  {
671  static_assert(DIM != DIM, "not implemented");
673 }

◆ getFTensor1FromArray() [2/2]

template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 3 >, 3 > MoFEM::getFTensor1FromArray ( VectorDouble data)

Definition at line 677 of file Templates.hpp.

677  {
678  return FTensor::Tensor1<FTensor::PackPtr<double *, 2>, 2>{&data[0], &data[1]};
679 }

◆ getFTensor1FromArrayDiag() [1/2]

template<int DIM, int S>
FTensor::Tensor1<FTensor::PackPtr<double *, S>, DIM> MoFEM::getFTensor1FromArrayDiag ( MatrixDouble data,
const size_t  rr 
)

Get FTensor1 from array.

Todo:
Generalise for diffrent arrays and data types
Template Parameters
DIM
Parameters
data
rr
Returns
FTensor::Tensor1<FTensor::PackPtr<double *, DIM>, DIM>

Definition at line 721 of file Templates.hpp.

721  {
722  static_assert(DIM != DIM, "not implemented");
724 }

◆ getFTensor1FromArrayDiag() [2/2]

template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 3 >, 3 > MoFEM::getFTensor1FromArrayDiag ( MatrixDouble data,
const size_t  rr 
)

Definition at line 728 of file Templates.hpp.

728  {
729  return FTensor::Tensor1<FTensor::PackPtr<double *, 2>, 2>{&data(rr + 0, 0),
730  &data(rr + 1, 1)};
731 }

◆ getFTensor1FromMat() [1/4]

template<int Tensor_Dim, int S = 1>
auto MoFEM::getFTensor1FromMat ( MatrixDouble data)

Get tensor rank 1 (vector) form data matrix (specialization)

Definition at line 213 of file Templates.hpp.

213  {
214  return GetFTensor1FromMatImpl<Tensor_Dim, S, double, ublas::row_major,
215  DoubleAllocator>::get(data);
216 }
@ row_major
Definition: Layout.hpp:13
std::vector< double, std::allocator< double > > DoubleAllocator
Definition: Types.hpp:70

◆ getFTensor1FromMat() [2/4]

template<int DIM, int S>
FTensor::Tensor1<FTensor::PackPtr<double *, S>, DIM> MoFEM::getFTensor1FromMat ( MatrixDouble data,
const size_t  rr 
)

Definition at line 690 of file Templates.hpp.

690  {
691  static_assert(DIM != DIM, "not implemented");
693 }

◆ getFTensor1FromMat() [3/4]

template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 1 >, 3 > MoFEM::getFTensor1FromMat ( MatrixDouble data,
const size_t  rr 
)

Definition at line 697 of file Templates.hpp.

697  {
698  return FTensor::Tensor1<FTensor::PackPtr<double *, 1>, 2>{&data(rr + 0, 0),
699  &data(rr + 1, 0)};
700 }

◆ getFTensor1FromMat() [4/4]

template<int Tensor_Dim, int S = 1, class T , class L , class A >
FTensor::Tensor1<FTensor::PackPtr<T *, S>, Tensor_Dim> MoFEM::getFTensor1FromMat ( ublas::matrix< T, L, A > &  data)

Get tensor rank 1 (vector) form data matrix.

Definition at line 205 of file Templates.hpp.

205  {
206  static_assert(!std::is_same<T, T>::value, "not implemented");
207 }

◆ getFTensor1FromPtr()

template<int DIM>
FTensor::Tensor1<FTensor::PackPtr<double *, DIM>, DIM> MoFEM::getFTensor1FromPtr ( double *  ptr)

Make Tensor1 from pointer.

Template Parameters
DIM
Parameters
ptr
Returns
FTensor::Tensor2<FTensor::PackPtr<double *, 3 * DIM>, 3, DIM>

Definition at line 603 of file Templates.hpp.

603  {
604  static_assert(DIM != 3 && DIM != 2,
605  "Such getFTensor1FromPtr specialization is not implemented");
606 };

◆ getFTensor1FromPtr< 2 >()

template<>
FTensor::Tensor1<FTensor::PackPtr<double *, 2>, 2> MoFEM::getFTensor1FromPtr< 2 > ( double *  ptr)

Definition at line 603 of file Templates.hpp.

610  {
612  &ptr[HVEC1]);
613 };
@ HVEC0
Definition: definitions.h:179
@ HVEC1
Definition: definitions.h:179

◆ getFTensor1FromPtr< 3 >()

template<>
FTensor::Tensor1<FTensor::PackPtr<double *, 3>, 3> MoFEM::getFTensor1FromPtr< 3 > ( double *  ptr)

Definition at line 603 of file Templates.hpp.

617  {
619  &ptr[HVEC0], &ptr[HVEC1], &ptr[HVEC2]);
620 };
@ HVEC2
Definition: definitions.h:179

◆ getFTensor2FromArray() [1/2]

template<int DIM1, int DIM2, int S>
FTensor::Tensor2<FTensor::PackPtr<double *, S>, DIM1, DIM2> MoFEM::getFTensor2FromArray ( MatrixDouble data,
const size_t  rr 
)

Get FTensor2 from array.

Note
Generalise for other data types
Template Parameters
DIM1
DIM2
S
Parameters
data
Returns
FTensor::Tensor2<FTensor::PackPtr<double *, S>, DIM1, DIM2>

Definition at line 753 of file Templates.hpp.

753  {
754  static_assert(DIM1 != DIM1, "not implemented");
756 }

◆ getFTensor2FromArray() [2/2]

template<>
FTensor::Tensor2< FTensor::PackPtr< double *, 3 >, 3, 3 > MoFEM::getFTensor2FromArray ( MatrixDouble data,
const size_t  rr 
)

Definition at line 760 of file Templates.hpp.

760  {
762  &data(rr + 0, 0), &data(rr + 0, 1), &data(rr + 1, 0), &data(rr + 1, 1)};
763 }

◆ getFTensor2FromMat() [1/2]

template<>
FTensor::Tensor2< FTensor::PackPtr< double *, 1 >, 2, 2 > MoFEM::getFTensor2FromMat ( MatrixDouble data)

Get tensor rank 2 (matrix) form data matrix (specialization)

Template specialization for getFTensor2FromMat

Definition at line 234 of file Templates.hpp.

234  {
235  if (data.size1() != 9)
236  THROW_MESSAGE("getFTensor2FromMat<3,3>: wrong size of data matrix; numer "
237  "of rows should be 9 but is " +
238  boost::lexical_cast<std::string>(data.size1()));
239 
241  &data(0, 0), &data(1, 0), &data(2, 0), &data(3, 0), &data(4, 0),
242  &data(5, 0), &data(6, 0), &data(7, 0), &data(8, 0));
243 }
#define THROW_MESSAGE(msg)
Throw MoFEM exception.
Definition: definitions.h:554

◆ getFTensor2FromMat() [2/2]

template<int Tensor_Dim0, int Tensor_Dim1, class T , class L , class A >
FTensor::Tensor2<FTensor::PackPtr<T *, 1>, Tensor_Dim0, Tensor_Dim1> MoFEM::getFTensor2FromMat ( ublas::matrix< T, L, A > &  data)

Get tensor rank 2 (matrix) form data matrix.

Definition at line 223 of file Templates.hpp.

223  {
224  static_assert(!std::is_same<T, T>::value,
225  "Such getFTensor2FromMat specialisation is not implemented");
226 }

◆ getFTensor2FromPtr()

template<int DIM1, int DIM2>
FTensor::Tensor2<FTensor::PackPtr<double *, DIM1 * DIM2>, DIM1, DIM2> MoFEM::getFTensor2FromPtr ( double *  ptr)

Make Tensor2 from pointer.

Template Parameters
DIM
Parameters
ptr
Returns
FTensor::Tensor2<FTensor::PackPtr<double *, DIM1 * DIM2>, DIM1, DIM2>

Definition at line 631 of file Templates.hpp.

631  {
632  static_assert(DIM1 != 3, "Such getFTensor2FromPtr is not implemented");
633  static_assert(DIM2 >= 2 && DIM2 <= 3,
634  "Such getFTensor2FromPtr is not implemented");
635 };

◆ getFTensor2FromPtr< 3, 2 >()

template<>
FTensor::Tensor2<FTensor::PackPtr<double *, 6>, 3, 2> MoFEM::getFTensor2FromPtr< 3, 2 > ( double *  ptr)

Definition at line 631 of file Templates.hpp.

639  {
641  &ptr[HVEC0_0], &ptr[HVEC0_1],
642 
643  &ptr[HVEC1_0], &ptr[HVEC1_1],
644 
645  &ptr[HVEC2_0], &ptr[HVEC2_1]);
646 };
@ HVEC1_1
Definition: definitions.h:189
@ HVEC0_1
Definition: definitions.h:188
@ HVEC1_0
Definition: definitions.h:186
@ HVEC2_1
Definition: definitions.h:190
@ HVEC2_0
Definition: definitions.h:187
@ HVEC0_0
Definition: definitions.h:185

◆ getFTensor2FromPtr< 3, 3 >()

template<>
FTensor::Tensor2<FTensor::PackPtr<double *, 9>, 3, 3> MoFEM::getFTensor2FromPtr< 3, 3 > ( double *  ptr)

Definition at line 631 of file Templates.hpp.

650  {
652  &ptr[HVEC0_0], &ptr[HVEC0_1], &ptr[HVEC0_2],
653 
654  &ptr[HVEC1_0], &ptr[HVEC1_1], &ptr[HVEC1_2],
655 
656  &ptr[HVEC2_0], &ptr[HVEC2_1], &ptr[HVEC2_2]);
657 };
@ HVEC1_2
Definition: definitions.h:192
@ HVEC2_2
Definition: definitions.h:193
@ HVEC0_2
Definition: definitions.h:191

◆ getFTensor2SymmetricFromMat() [1/2]

template<int Tensor_Dim, int S = 1>
static auto MoFEM::getFTensor2SymmetricFromMat ( MatrixDouble data)
static

Definition at line 327 of file Templates.hpp.

327  {
328  return getFTensor2SymmetricFromMat<Tensor_Dim, S, double, ublas::row_major,
329  DoubleAllocator>(data);
330 }
static auto getFTensor2SymmetricFromMat(MatrixDouble &data)
Definition: Templates.hpp:327

◆ getFTensor2SymmetricFromMat() [2/2]

template<int Tensor_Dim, int S, class T , class L , class A >
static auto MoFEM::getFTensor2SymmetricFromMat ( ublas::matrix< T, L, A > &  data)
static

Get symmetric tensor rank 2 (matrix) form data matrix.

Definition at line 322 of file Templates.hpp.

322  {
323  return GetFTensor2SymmetricFromMatImpl<Tensor_Dim, S, T, L, A>::get(data);
324 }

◆ getFTensor3DgFromMat() [1/2]

template<int Tensor_Dim01, int Tensor_Dim2, int S = 1>
static auto MoFEM::getFTensor3DgFromMat ( MatrixDouble data)
static

Definition at line 488 of file Templates.hpp.

488  {
489  return GetFTensor3DgFromMatImpl<Tensor_Dim01, Tensor_Dim2, S, double,
491  DoubleAllocator>::get(data);
492 }

◆ getFTensor3DgFromMat() [2/2]

template<int Tensor_Dim01, int Tensor_Dim2, int S = 1, class T , class L , class A >
static FTensor::Dg<FTensor::PackPtr<T *, 1>, Tensor_Dim01, Tensor_Dim2> MoFEM::getFTensor3DgFromMat ( ublas::matrix< T, L, A > &  data)
static

Get symmetric tensor rank 3 on the first two indices from form data matrix.

Template Parameters
Tensor_Dim01dimension of first two indicies
Tensor_Dim2dimension of last index
Tthe type of object stored
Lthe storage organization
Athe type of Storage array
Parameters
datadata container
Returns
FTensor::Dg<FTensor::PackPtr<T *, 1>, Tensor_Dim01, TensorDim23>

Definition at line 482 of file Templates.hpp.

482  {
483  static_assert(!std::is_same<T, T>::value,
484  "Such getFTensor3DgFromMat specialisation is not implemented");
485 }

◆ getFTensor4DdgFromMat() [1/2]

template<int Tensor_Dim01, int Tensor_Dim23, int S = 1>
static auto MoFEM::getFTensor4DdgFromMat ( MatrixDouble data)
static

Definition at line 409 of file Templates.hpp.

409  {
410  return GetFTensor4DdgFromMatImpl<Tensor_Dim01, Tensor_Dim23, S, double,
412  DoubleAllocator>::get(data);
413 }

◆ getFTensor4DdgFromMat() [2/2]

template<int Tensor_Dim01, int Tensor_Dim23, int S = 1, class T , class L , class A >
static FTensor::Ddg<FTensor::PackPtr<T *, 1>, Tensor_Dim01, Tensor_Dim23> MoFEM::getFTensor4DdgFromMat ( ublas::matrix< T, L, A > &  data)
static

Get symmetric tensor rank 4 on first two and last indices from form data matrix.

Template Parameters
Tensor_Dim01dimension of first two indicies
Tensor_Dim23dimension of second two indicies
Tthe type of object stored
Lthe storage organization
Athe type of Storage array
Parameters
datadata container
Returns
FTensor::Ddg<FTensor::PackPtr<T *, 1>, Tensor_Dim01, TensorDim23>

Definition at line 403 of file Templates.hpp.

403  {
404  static_assert(!std::is_same<T, T>::value,
405  "Such getFTensor4DdgFromMat specialisation is not implemented");
406 }

◆ getFTensor4FromMat() [1/2]

template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S = 1>
static auto MoFEM::getFTensor4FromMat ( MatrixDouble data)
static

Definition at line 588 of file Templates.hpp.

588  {
589  return GetFTensor4FromMatImpl<Tensor_Dim0, Tensor_Dim1, Tensor_Dim2,
590  Tensor_Dim3, S, double, ublas::row_major,
591  DoubleAllocator>::get(data);
592 }

◆ getFTensor4FromMat() [2/2]

template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S = 1, class T , class L , class A >
static FTensor::Tensor4<FTensor::PackPtr<T *, 1>, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3> MoFEM::getFTensor4FromMat ( ublas::matrix< T, L, A > &  data)
static

Get tensor rank 4 (non symmetric) form data matrix.

Template Parameters
Tensor_Dim0dimension of frirst index
Tensor_Dim1dimension of second index
Tensor_Dim2dimension of third index
Tensor_Dim3dimension of fourth index
Tthe type of object stored
Lthe storage organization
Athe type of Storage array
Parameters
datadata container
Returns
FTensor::Tensor4<FTensor::PackPtr<T *, 1>, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3>

Definition at line 581 of file Templates.hpp.

581  {
582  static_assert(!std::is_same<T, T>::value,
583  "Such getFTensor4FromMat specialisation is not implemented");
584 }

◆ getMatrixAdaptor()

template<typename T1 >
auto MoFEM::getMatrixAdaptor ( T1  ptr,
const size_t  n,
const size_t  m 
)

Get Matrix adaptor.

double *a;
CHKERR VecGetArray(v,&a);
for(int n = 0; n != nodes; ++n) {
auto F = getMatrixAdaptor(&a[3*3*n], 3, 3);
MatrixDouble C = prod(F, trans(F));
}
CHKERR VecRetsoreArray(v,&a);
ublas::matrix< double, ublas::row_major, DoubleAllocator > MatrixDouble
Definition: Types.hpp:76
auto getMatrixAdaptor(T1 ptr, const size_t n, const size_t m)
Get Matrix adaptor.
Definition: Templates.hpp:71
Examples
field_evaluator.cpp.

Definition at line 71 of file Templates.hpp.

71  {
72  typedef typename std::remove_pointer<T1>::type T;
73  return MatrixShallowArrayAdaptor<T>(
74  n, m, ublas::shallow_array_adaptor<T>(n * m, ptr));
75 };
const double T
FTensor::Index< 'm', 3 > m

◆ getMaxOrder()

template<typename ENTMULTIINDEX >
static int MoFEM::getMaxOrder ( const ENTMULTIINDEX &  multi_index)
static

Definition at line 117 of file ForcesAndSourcesCore.cpp.

117  {
118  int max_order = 0;
119  for (auto ent_field_weak_ptr : multi_index)
120  if (auto e = ent_field_weak_ptr.lock()) {
121  const int order = e->getMaxOrder();
122  max_order = (max_order < order) ? order : max_order;
123  }
124  return max_order;
125 }

◆ getPetscObject()

template<typename T >
PetscObject MoFEM::getPetscObject ( T  obj)

Definition at line 22 of file PetscSmartObj.hpp.

22  {
23  return reinterpret_cast<PetscObject>(obj);
24 }

◆ getVectorAdaptor()

template<typename T1 >
auto MoFEM::getVectorAdaptor ( T1  ptr,
const size_t  n 
)

Get Vector adaptor.

double *a;
CHKERR VecGetArray(v,&a);
for(int n = 0; n != nodes; ++n) {
auto a = getVectorAdaptor(&a[3*n], 3);
double dot = inner_prod(a, a);
}
CHKERR VecRetsoreArray(v,&a);
auto getVectorAdaptor(T1 ptr, const size_t n)
Get Vector adaptor.
Definition: Templates.hpp:45
Examples
EshelbianPlasticity.cpp, and bernstein_bezier_generate_base.cpp.

Definition at line 45 of file Templates.hpp.

45  {
46  typedef typename std::remove_pointer<T1>::type T;
47  return VectorShallowArrayAdaptor<T>(n,
48  ublas::shallow_array_adaptor<T>(n, ptr));
49 };

◆ Hcurl_Ainsworth_BubbleFaceFunctions_MBTET()

MoFEMErrorCode MoFEM::Hcurl_Ainsworth_BubbleFaceFunctions_MBTET ( int *  faces_nodes,
int *  p,
double *  N,
double *  diffN,
double *  phi_f[4],
double *  diff_phi_f[4],
int  nb_integration_pts,
PetscErrorCode(*)(int p, double s, double *diff_s, double *L, double *diffL, const int dim base_polynomials 
)

Face edge base functions of Hcurl space on face on tetrahedral.

On each face we have P*(P-1) base functions and are 4 faces.

See NBFACETRI_AINSWORTH_EDGE_HCURL

Parameters
face_nodesarray [4*3] of local indices of face nodes
papproximation order
Narray shape functions evaluated at each integration point
diffNderivatives of nodal shape functions
phi_f[4]calculated shape functions for each face
diff_phi_v[4]derivatives of shape functions for each face
nb_integration_ptsnumber of shape functions
base_polynomialspolynomial base function (f.e. Legendre of Lobatto)
Returns
error code

Definition at line 545 of file Hcurl.cpp.

550  {
551 
553 
556 
557  // double coords[] = { 0,0,0, 1,0,0, 0,1,0, 0,0,1 };
558  // FTensor::Tensor1<double*,3> t_coords[4] = {
559  // FTensor::Tensor1<double*,3>(&coords[0],&coords[ 1],&coords[ 2]),
560  // FTensor::Tensor1<double*,3>(&coords[3],&coords[ 4],&coords[ 5]),
561  // FTensor::Tensor1<double*,3>(&coords[6],&coords[ 7],&coords[ 8]),
562  // FTensor::Tensor1<double*,3>(&coords[9],&coords[10],&coords[11])
563  // };
564  FTensor::Tensor1<double *, 3> t_node_diff_ksi[4] = {
565  FTensor::Tensor1<double *, 3>(&diffN[0], &diffN[1], &diffN[2]),
566  FTensor::Tensor1<double *, 3>(&diffN[3], &diffN[4], &diffN[5]),
567  FTensor::Tensor1<double *, 3>(&diffN[6], &diffN[7], &diffN[8]),
568  FTensor::Tensor1<double *, 3>(&diffN[9], &diffN[10], &diffN[11])};
569  FTensor::Tensor1<double, 3> t_diff_ksi0i, t_diff_ksi0j;
570  FTensor::Tensor1<double, 3> diff_beta_0ij;
571 
574 
575  for (int ff = 0; ff != 4; ff++) {
576 
577  if (NBFACETRI_AINSWORTH_FACE_HCURL(p[ff]) == 0)
578  continue;
579 
580  int n0 = faces_nodes[3 * ff + 0];
581  int n1 = faces_nodes[3 * ff + 1];
582  int n2 = faces_nodes[3 * ff + 2];
583 
584  // tou_0i(i) = t_coords[n1](i)-t_coords[n0](i);
585  // tou_0j(i) = t_coords[n2](i)-t_coords[n0](i);
586  tou_0i(i) = t_node_diff_ksi[n1](i) - t_node_diff_ksi[n0](i);
587  tou_0j(i) = t_node_diff_ksi[n2](i) - t_node_diff_ksi[n0](i);
588 
589  t_diff_ksi0i(i) = t_node_diff_ksi[n1](i) - t_node_diff_ksi[n0](i);
590  t_diff_ksi0j(i) = t_node_diff_ksi[n2](i) - t_node_diff_ksi[n0](i);
591 
592  double psi_l_0i[p[ff] + 1], diff_psi_l_0i[3 * p[ff] + 3];
593  double psi_l_0j[p[ff] + 1], diff_psi_l_0j[3 * p[ff] + 3];
594 
595  FTensor::Tensor1<double *, 3> t_phi_f(&phi_f[ff][0], &phi_f[ff][1],
596  &phi_f[ff][2], 3);
598  &diff_phi_f[ff][0], &diff_phi_f[ff][3], &diff_phi_f[ff][6],
599  &diff_phi_f[ff][1], &diff_phi_f[ff][4], &diff_phi_f[ff][7],
600  &diff_phi_f[ff][2], &diff_phi_f[ff][5], &diff_phi_f[ff][8], 9);
602 
603  for (int ii = 0; ii != nb_integration_pts; ii++) {
604 
605  const int node_shift = ii * 4;
606  const double beta_0ij =
607  N[node_shift + n0] * N[node_shift + n1] * N[node_shift + n2];
608  diff_beta_0ij(i) =
609  t_node_diff_ksi[n0](i) * N[node_shift + n1] * N[node_shift + n2] +
610  N[node_shift + n0] * t_node_diff_ksi[n1](i) * N[node_shift + n2] +
611  N[node_shift + n0] * N[node_shift + n1] * t_node_diff_ksi[n2](i);
612 
613  const double ksi_0i = N[node_shift + n1] - N[node_shift + n0];
614  CHKERR base_polynomials(p[ff], ksi_0i, &t_diff_ksi0i(0), psi_l_0i,
615  diff_psi_l_0i, 3);
616 
617  const double ksi_0j = N[node_shift + n2] - N[node_shift + n0];
618  CHKERR base_polynomials(p[ff], ksi_0j, &t_diff_ksi0j(0), psi_l_0j,
619  diff_psi_l_0j, 3);
620 
621  int cc = 0;
622  for (int oo = 0; oo <= (p[ff] - 3); oo++) {
623  FTensor::Tensor1<double *, 3> t_diff_psi_l_0i(
624  &diff_psi_l_0i[0], &diff_psi_l_0i[p[ff] + 1],
625  &diff_psi_l_0i[2 * p[ff] + 2], 1);
626  for (int pp0 = 0; pp0 <= oo; pp0++) {
627  const int pp1 = oo - pp0;
628  if (pp1 >= 0) {
629  FTensor::Tensor1<double *, 3> t_diff_psi_l_0j(
630  &diff_psi_l_0j[pp1], &diff_psi_l_0j[p[ff] + 1 + pp1],
631  &diff_psi_l_0j[2 * p[ff] + 2 + pp1], 1);
632  // base functions
633  const double a = beta_0ij * psi_l_0i[pp0] * psi_l_0j[pp1];
634  t_phi_f(i) = a * tou_0i(i);
635  ++t_phi_f;
636  ++cc;
637  t_phi_f(i) = a * tou_0j(i);
638  ++t_phi_f;
639  ++cc;
640  // diff base functions
641  t_b(j) = diff_beta_0ij(j) * psi_l_0i[pp0] * psi_l_0j[pp1] +
642  beta_0ij * t_diff_psi_l_0i(j) * psi_l_0j[pp1] +
643  beta_0ij * psi_l_0i[pp0] * t_diff_psi_l_0j(j);
644  t_diff_phi_f(i, j) = t_b(j) * tou_0i(i);
645  ++t_diff_phi_f;
646  t_diff_phi_f(i, j) = t_b(j) * tou_0j(i);
647  ++t_diff_phi_f;
648  ++t_diff_psi_l_0i;
649  }
650  }
651  }
652  const int nb_base_fun_on_face = NBFACETRI_AINSWORTH_FACE_HCURL(p[ff]);
653  if (cc != nb_base_fun_on_face) {
654  SETERRQ2(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
655  "Wrong number of base functions %d != %d", cc,
656  nb_base_fun_on_face);
657  }
658  }
659  }
661 }
static Index< 'p', 3 > p
#define NBFACETRI_AINSWORTH_FACE_HCURL(P)
FTensor::Index< 'j', 3 > j
FTensor::Index< 'i', 3 > i

◆ Hcurl_Ainsworth_BubbleFaceFunctions_MBTET_ON_FACE()

MoFEMErrorCode MoFEM::Hcurl_Ainsworth_BubbleFaceFunctions_MBTET_ON_FACE ( int *  faces_nodes,
int  p,
double *  N,
double *  diffN,
double *  phi_f,
double *  diff_phi_f,
int  nb_integration_pts,
PetscErrorCode(*)(int p, double s, double *diff_s, double *L, double *diffL, const int dim base_polynomials 
)

Face edge base functions of Hcurl space on face.

On each face we have P*(P-1) base functions and are 4 faces.

See NBFACETRI_AINSWORTH_EDGE_HCURL

Parameters
face_nodesarray [4*3] of local indices of face nodes
papproximation order
Narray shape functions evaluated at each integration point
diffNderivatives of nodal shape functions
phi_f[4]calculated shape functions for each face
diff_phi_v[4]derivatives of shape functions for each face
nb_integration_ptsnumber of shape functions
base_polynomialspolynomial base function (f.e. Legendre of Lobatto)
Returns
error code

Definition at line 663 of file Hcurl.cpp.

668  {
669 
671 
672  double zero = 0;
673  FTensor::Tensor2<double *, 3, 3> t_node_diff_ksi(&diffN[0], &diffN[1], &zero,
674  &diffN[2], &diffN[3], &zero,
675  &diffN[4], &diffN[5], &zero);
676 
679 
682 
686 
687  const int node0 = faces_nodes[0];
688  const int node1 = faces_nodes[1];
689  const int node2 = faces_nodes[2];
690 
693 
694  tou_0i(i) = t_node_diff_ksi(N1, i) - t_node_diff_ksi(N0, i);
695  ;
696  tou_0j(i) = t_node_diff_ksi(N2, i) - t_node_diff_ksi(N0, i);
697  ;
698 
699  double psi_l_0i[p + 1], psi_l_0j[p + 1];
700  double diff_psi_l_0i[2 * p + 2], diff_psi_l_0j[2 * p + 2];
701  FTensor::Tensor1<double *, 3> t_phi_f(&phi_f[0], &phi_f[1], &phi_f[2], 3);
703  &diff_phi_f[HVEC0_0], &diff_phi_f[HVEC0_1], &diff_phi_f[HVEC1_0],
704  &diff_phi_f[HVEC1_1], &diff_phi_f[HVEC2_0], &diff_phi_f[HVEC2_1]);
705 
706  double diff_ksi_0i[] = {t_node_diff_ksi(node1, 0) - t_node_diff_ksi(node0, 0),
707  t_node_diff_ksi(node1, 1) -
708  t_node_diff_ksi(node0, 1)};
709  double diff_ksi_0j[] = {t_node_diff_ksi(node2, 0) - t_node_diff_ksi(node0, 0),
710  t_node_diff_ksi(node2, 1) -
711  t_node_diff_ksi(node0, 1)};
712 
713  for (int ii = 0; ii != nb_integration_pts; ii++) {
714 
715  const int node_shift = ii * 3;
716  const double n0 = N[node_shift + node0];
717  const double n1 = N[node_shift + node1];
718  const double n2 = N[node_shift + node2];
719 
720  const double beta_0ij = n0 * n1 * n2;
721  FTensor::Tensor1<double, 2> diff_beta_0ij(
722  t_node_diff_ksi(node0, 0) * n1 * n2 +
723  n0 * t_node_diff_ksi(node1, 0) * n2 +
724  n0 * n1 * t_node_diff_ksi(node2, 0),
725  t_node_diff_ksi(node0, 1) * n1 * n2 +
726  n0 * t_node_diff_ksi(node1, 1) * n2 +
727  n0 * n1 * t_node_diff_ksi(node2, 1));
728 
729  const double ksi_0i = N[node_shift + node1] - N[node_shift + node0];
730  CHKERR base_polynomials(p, ksi_0i, diff_ksi_0i, psi_l_0i, diff_psi_l_0i, 2);
731 
732  const double ksi_0j = N[node_shift + node2] - N[node_shift + node0];
733  CHKERR base_polynomials(p, ksi_0j, diff_ksi_0j, psi_l_0j, diff_psi_l_0j, 2);
734 
735  int cc = 0;
737  for (int oo = 0; oo <= (p - 3); oo++) {
738  for (int pp0 = 0; pp0 <= oo; pp0++) {
739  const int pp1 = oo - pp0;
740  if (pp1 >= 0) {
741  FTensor::Tensor1<double, 2> t_diff_psi_l_0i(
742  diff_psi_l_0i[0 + pp0], diff_psi_l_0i[p + 1 + pp0]);
743  FTensor::Tensor1<double, 2> t_diff_psi_l_0j(
744  diff_psi_l_0j[0 + pp1], diff_psi_l_0j[p + 1 + pp1]);
745  const double a = beta_0ij * psi_l_0i[pp0] * psi_l_0j[pp1];
746  t_diff_a(j) = diff_beta_0ij(j) * psi_l_0i[pp0] * psi_l_0j[pp1] +
747  beta_0ij * psi_l_0i[pp0] * t_diff_psi_l_0j(j) +
748  beta_0ij * psi_l_0j[pp1] * t_diff_psi_l_0i(j);
749 
750  t_phi_f(i) = a * tou_0i(i);
751  t_diff_phi_f(i, j) = tou_0i(i) * t_diff_a(j);
752  ++t_phi_f;
753  ++t_diff_phi_f;
754  ++cc;
755  t_phi_f(i) = a * tou_0j(i);
756  t_diff_phi_f(i, j) = tou_0j(i) * t_diff_a(j);
757  ++t_phi_f;
758  ++t_diff_phi_f;
759  ++cc;
760  }
761  }
762  }
763 
764  const int nb_base_fun_on_face = NBFACETRI_AINSWORTH_FACE_HCURL(p);
765  if (cc != nb_base_fun_on_face) {
766  SETERRQ2(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
767  "Wrong number of base functions %d != %d", cc,
768  nb_base_fun_on_face);
769  }
770  }
771 
773 }
static Number< 2 > N2
static Number< 1 > N1
static Number< 0 > N0

◆ Hcurl_Ainsworth_EdgeBasedFaceFunctions_MBTET()

MoFEMErrorCode MoFEM::Hcurl_Ainsworth_EdgeBasedFaceFunctions_MBTET ( int *  faces_nodes,
int *  p,
double *  N,
double *  diffN,
double *  phi_f_e[4][3],
double *  diff_phi_f_e[4][3],
int  nb_integration_pts,
PetscErrorCode(*)(int p, double s, double *diff_s, double *L, double *diffL, const int dim base_polynomials 
)

Face edge base functions of Hcurl space on tetrahedral.

On each edge we have (P-1) base functions, and each face has 3 edges and are 4 faces on tetrahedral.

See NBFACETRI_AINSWORTH_EDGE_HCURL

Parameters
face_nodesarray [4*3] of local indices of face nodes
papproximation order
Narray shape functions evaluated at each integration point
diffNderivatives of nodal shape functions
phi_f[4]calculated shape functions for each face
diff_phi_v[4]derivatives of shape functions for each face
nb_integration_ptsnumber of shape functions
base_polynomialspolynomial base function (f.e. Legendre of Lobatto)
Returns
error code

Definition at line 363 of file Hcurl.cpp.

368  {
369 
371  const int edges[3][2] = {{0, 1}, {1, 2}, {2, 0}};
372 
375 
376  FTensor::Tensor1<double *, 3> t_node_diff_ksi[4] = {
377  FTensor::Tensor1<double *, 3>(&diffN[0], &diffN[1], &diffN[2]),
378  FTensor::Tensor1<double *, 3>(&diffN[3], &diffN[4], &diffN[5]),
379  FTensor::Tensor1<double *, 3>(&diffN[6], &diffN[7], &diffN[8]),
380  FTensor::Tensor1<double *, 3>(&diffN[9], &diffN[10], &diffN[11])};
381  FTensor::Tensor1<double, 3> t_edge_diff_ksi;
382  FTensor::Tensor1<double, 3> t_diff_beta_e;
383 
384  for (int ff = 0; ff != 4; ff++) {
385 
386  const int o_nodes[3] = {faces_nodes[3 * ff + 2], faces_nodes[3 * ff + 0],
387  faces_nodes[3 * ff + 1]};
388  FTensor::Tensor1<double *, 3> t_opposite_node_diff[3] = {
389  FTensor::Tensor1<double *, 3>(&diffN[3 * o_nodes[0] + 0],
390  &diffN[3 * o_nodes[0] + 1],
391  &diffN[3 * o_nodes[0] + 2]),
392  FTensor::Tensor1<double *, 3>(&diffN[3 * o_nodes[1] + 0],
393  &diffN[3 * o_nodes[1] + 1],
394  &diffN[3 * o_nodes[1] + 2]),
395  FTensor::Tensor1<double *, 3>(&diffN[3 * o_nodes[2] + 0],
396  &diffN[3 * o_nodes[2] + 1],
397  &diffN[3 * o_nodes[2] + 2])};
398  double psi_l[p[ff] + 1], diff_psi_l[3 * p[ff] + 3];
399 
400  const int nb_base_fun_on_face = NBFACETRI_AINSWORTH_EDGE_HCURL(p[ff]);
401  // cerr << nb_base_fun_on_face << " " << p[ff] << endl;
402  if (nb_base_fun_on_face == 0)
403  continue;
404 
405  for (int ee = 0; ee != 3; ee++) {
406 
407  FTensor::Tensor1<double *, 3> t_face_edge_base(
408  &phi_f_e[ff][ee][0], &phi_f_e[ff][ee][1], &phi_f_e[ff][ee][2], 3);
409  FTensor::Tensor2<double *, 3, 3> t_diff_face_edge_base(
410  &diff_phi_f_e[ff][ee][0], &diff_phi_f_e[ff][ee][3],
411  &diff_phi_f_e[ff][ee][6], &diff_phi_f_e[ff][ee][1],
412  &diff_phi_f_e[ff][ee][4], &diff_phi_f_e[ff][ee][7],
413  &diff_phi_f_e[ff][ee][2], &diff_phi_f_e[ff][ee][5],
414  &diff_phi_f_e[ff][ee][8], 9);
415  const int en[] = {faces_nodes[3 * ff + edges[ee][0]],
416  faces_nodes[3 * ff + edges[ee][1]]};
417  t_edge_diff_ksi(i) =
418  t_node_diff_ksi[en[1]](i) - t_node_diff_ksi[en[0]](i);
419 
420  for (int ii = 0; ii != nb_integration_pts; ii++) {
421 
422  const int node_shift = ii * 4;
423  const double n[] = {N[node_shift + faces_nodes[3 * ff + edges[ee][0]]],
424  N[node_shift + faces_nodes[3 * ff + edges[ee][1]]]};
425  const double ksi_0i = n[1] - n[0];
426  CHKERR base_polynomials(p[ff], ksi_0i, &t_edge_diff_ksi(0), psi_l,
427  diff_psi_l, 3);
428 
429  FTensor::Tensor1<double *, 3> t_diff_psi_l(
430  &diff_psi_l[0], &diff_psi_l[p[ff] + 1], &diff_psi_l[2 * p[ff] + 2],
431  1);
432 
433  const double beta_e = n[0] * n[1];
434  t_diff_beta_e(j) =
435  t_node_diff_ksi[en[0]](j) * n[1] + n[0] * t_node_diff_ksi[en[1]](j);
436 
437  for (int ll = 0; ll != nb_base_fun_on_face; ll++) {
438  // if(ll == nb_base_fun_on_face-1) cerr << psi_l[ll] << endl;
439 
440  t_face_edge_base(i) =
441  beta_e * psi_l[ll] * t_opposite_node_diff[ee](i);
442  ++t_face_edge_base;
443 
444  t_diff_face_edge_base(i, j) =
445  (beta_e * t_diff_psi_l(j) + t_diff_beta_e(j) * psi_l[ll]) *
446  t_opposite_node_diff[ee](i);
447 
448  ++t_diff_face_edge_base;
449  ++t_diff_psi_l;
450  }
451  }
452  }
453  }
454 
456 }
#define NBFACETRI_AINSWORTH_EDGE_HCURL(P)

◆ Hcurl_Ainsworth_EdgeBasedFaceFunctions_MBTET_ON_FACE()

MoFEMErrorCode MoFEM::Hcurl_Ainsworth_EdgeBasedFaceFunctions_MBTET_ON_FACE ( int *  faces_nodes,
int  p,
double *  N,
double *  diffN,
double *  phi_f_e[3],
double *  diff_phi_f_e[3],
int  nb_integration_pts,
PetscErrorCode(*)(int p, double s, double *diff_s, double *L, double *diffL, const int dim base_polynomials 
)

Face edge base functions of Hcurl space.

On each edge we have (P-1) base functions, and each face has 3 edges and are 4 faces on tetrahedral.

See NBFACETRI_AINSWORTH_EDGE_HCURL

Parameters
face_nodesarray [4*3] of local indices of face nodes
papproximation order
Narray shape functions evaluated at each integration point
diffNderivatives of nodal shape functions
phi_f[4]calculated shape functions for each face
diff_phi_v[4]derivatives of shape functions for each face
nb_integration_ptsnumber of shape functions
base_polynomialspolynomial base function (f.e. Legendre of Lobatto)
Returns
error code

Definition at line 458 of file Hcurl.cpp.

463  {
464 
466 
467  const int nb_base_fun_on_face = NBFACETRI_AINSWORTH_EDGE_HCURL(p);
468  if (nb_base_fun_on_face == 0)
470 
471  const int edges[3][2] = {{0, 1}, {1, 2}, {2, 0}};
472 
475 
476  const int o_nodes[3] = {2, 0, 1};
477  FTensor::Tensor2<double, 3, 3> t_opposite_node_diff(
478  diffN[2 * o_nodes[0] + 0], diffN[2 * o_nodes[0] + 1], 0.,
479  diffN[2 * o_nodes[1] + 0], diffN[2 * o_nodes[1] + 1], 0.,
480  diffN[2 * o_nodes[2] + 0], diffN[2 * o_nodes[2] + 1], 0.);
481  double psi_l[p + 1];
482  double diff_psi_l[2 * p + 2];
483 
484  FTensor::Tensor1<double *, 3> t_face_edge_base[3] = {
485  FTensor::Tensor1<double *, 3>(&phi_f_e[0][HVEC0], &phi_f_e[0][HVEC1],
486  &phi_f_e[0][HVEC2], 3),
487  FTensor::Tensor1<double *, 3>(&phi_f_e[1][HVEC0], &phi_f_e[1][HVEC1],
488  &phi_f_e[1][HVEC2], 3),
489  FTensor::Tensor1<double *, 3>(&phi_f_e[2][HVEC0], &phi_f_e[2][HVEC1],
490  &phi_f_e[2][HVEC2], 3),
491  };
493  t_diff_face_edge_base[3] = {
495  &diff_phi_f_e[0][HVEC0_0], &diff_phi_f_e[0][HVEC0_1],
496  &diff_phi_f_e[0][HVEC1_0], &diff_phi_f_e[0][HVEC1_1],
497  &diff_phi_f_e[0][HVEC2_0], &diff_phi_f_e[0][HVEC2_1]),
499  &diff_phi_f_e[1][HVEC0_0], &diff_phi_f_e[1][HVEC0_1],
500  &diff_phi_f_e[1][HVEC1_0], &diff_phi_f_e[1][HVEC1_1],
501  &diff_phi_f_e[1][HVEC2_0], &diff_phi_f_e[1][HVEC2_1]),
503  &diff_phi_f_e[2][HVEC0_0], &diff_phi_f_e[2][HVEC0_1],
504  &diff_phi_f_e[2][HVEC1_0], &diff_phi_f_e[2][HVEC1_1],
505  &diff_phi_f_e[2][HVEC2_0], &diff_phi_f_e[2][HVEC2_1])};
506 
507  for (int ee = 0; ee != 3; ee++) {
508 
509  const int node0 = faces_nodes[edges[ee][0]];
510  const int node1 = faces_nodes[edges[ee][1]];
511  double diff_ksi0i[] = {diffN[2 * node1 + 0] - diffN[2 * node0 + 0],
512  diffN[2 * node1 + 1] - diffN[2 * node0 + 1]};
513 
514  for (int ii = 0; ii != nb_integration_pts; ii++) {
515 
516  const int node_shift = ii * 3;
517  const double n0 = N[node_shift + node0];
518  const double n1 = N[node_shift + node1];
519  const double ksi_0i = n1 - n0;
520  CHKERR base_polynomials(p, ksi_0i, diff_ksi0i, psi_l, diff_psi_l, 2);
521 
522  const double beta_e = n0 * n1;
523  FTensor::Tensor1<double, 2> t_diff_beta_e(
524  diffN[2 * node0 + 0] * n1 + n0 * diffN[2 * node1 + 0],
525  diffN[2 * node0 + 1] * n1 + n0 * diffN[2 * node1 + 1]);
526  FTensor::Tensor1<double *, 2> t_diff_psi_l(&diff_psi_l[0],
527  &diff_psi_l[p + 1], 1);
528 
529  for (int ll = 0; ll != nb_base_fun_on_face; ll++) {
530  t_face_edge_base[ee](i) =
531  beta_e * psi_l[ll] * t_opposite_node_diff(ee, i);
532  t_diff_face_edge_base[ee](i, j) =
533  beta_e * t_opposite_node_diff(ee, i) * t_diff_psi_l(j) +
534  psi_l[ll] * t_opposite_node_diff(ee, i) * t_diff_beta_e(j);
535  ++t_face_edge_base[ee];
536  ++t_diff_face_edge_base[ee];
537  ++t_diff_psi_l;
538  }
539  }
540  }
541 
543 }

◆ Hcurl_Ainsworth_EdgeBaseFunctions_MBTET()

MoFEMErrorCode MoFEM::Hcurl_Ainsworth_EdgeBaseFunctions_MBTET ( int *  sense,
int *  p,
double *  N,
double *  diffN,
double *  edgeN[],
double *  diff_edgeN[],
int  nb_integration_pts,
PetscErrorCode(*)(int p, double s, double *diff_s, double *L, double *diffL, const int dim base_polynomials 
)

Edge based H-curl base functions on tetrahedral.

Function generates hierarchical base of h-curl comforting functions on tetrahedral edge. For more details see [3].

On each tetrahedral's edge we have P+1 functions. See NBEDGE_AINSWORTH_HCURL

Parameters
sensesense fo edge (i.e. unique orientation)
parray of oder for each edge
Narray shape functions evaluated at each integration point
diffNderivatives of shape functions
edgeNbase functions on edges
diff_edgeNderivatives of edge shape functions
nb_integration_ptsnumber of integration points
base_polynomialspolynomial base function (f.e. Legendre of Lobatto)
Returns
error code

Definition at line 16 of file Hcurl.cpp.

21  {
23 
24  const int edges_nodes[6][2] = {{0, 1}, {1, 2}, {2, 0},
25  {0, 3}, {1, 3}, {2, 3}};
26  int P[6];
27  for (int ee = 0; ee != 6; ee++)
28  P[ee] = NBEDGE_AINSWORTH_HCURL(p[ee]);
29 
32 
33  FTensor::Tensor1<double *, 3> t_node_diff_ksi[4] = {
34  FTensor::Tensor1<double *, 3>(&diffN[0], &diffN[1], &diffN[2]),
35  FTensor::Tensor1<double *, 3>(&diffN[3], &diffN[4], &diffN[5]),
36  FTensor::Tensor1<double *, 3>(&diffN[6], &diffN[7], &diffN[8]),
37  FTensor::Tensor1<double *, 3>(&diffN[9], &diffN[10], &diffN[11])};
38  double edge_diff_ksi[6][3];
39  FTensor::Tensor1<double *, 3> t_edge_diff_ksi[6] = {
40  FTensor::Tensor1<double *, 3>(&edge_diff_ksi[0][0], &edge_diff_ksi[0][1],
41  &edge_diff_ksi[0][2]),
42  FTensor::Tensor1<double *, 3>(&edge_diff_ksi[1][0], &edge_diff_ksi[1][1],
43  &edge_diff_ksi[1][2]),
44  FTensor::Tensor1<double *, 3>(&edge_diff_ksi[2][0], &edge_diff_ksi[2][1],
45  &edge_diff_ksi[2][2]),
46  FTensor::Tensor1<double *, 3>(&edge_diff_ksi[3][0], &edge_diff_ksi[3][1],
47  &edge_diff_ksi[3][2]),
48  FTensor::Tensor1<double *, 3>(&edge_diff_ksi[4][0], &edge_diff_ksi[4][1],
49  &edge_diff_ksi[4][2]),
50  FTensor::Tensor1<double *, 3>(&edge_diff_ksi[5][0], &edge_diff_ksi[5][1],
51  &edge_diff_ksi[5][2])};
52  for (int ee = 0; ee != 6; ee++) {
53  t_edge_diff_ksi[ee](i) = (t_node_diff_ksi[edges_nodes[ee][1]](i) -
54  t_node_diff_ksi[edges_nodes[ee][0]](i)) *
55  sense[ee];
56  }
57 
58  FTensor::Tensor1<double *, 3> t_edge_n[6] = {
59  FTensor::Tensor1<double *, 3>(&edge_n[0][0], &edge_n[0][1], &edge_n[0][2],
60  3),
61  FTensor::Tensor1<double *, 3>(&edge_n[1][0], &edge_n[1][1], &edge_n[1][2],
62  3),
63  FTensor::Tensor1<double *, 3>(&edge_n[2][0], &edge_n[2][1], &edge_n[2][2],
64  3),
65  FTensor::Tensor1<double *, 3>(&edge_n[3][0], &edge_n[3][1], &edge_n[3][2],
66  3),
67  FTensor::Tensor1<double *, 3>(&edge_n[4][0], &edge_n[4][1], &edge_n[4][2],
68  3),
69  FTensor::Tensor1<double *, 3>(&edge_n[5][0], &edge_n[5][1], &edge_n[5][2],
70  3)};
71  FTensor::Tensor2<double *, 3, 3> t_diff_edge_n[6] = {
73  &diff_edge_n[0][0], &diff_edge_n[0][3], &diff_edge_n[0][6],
74  &diff_edge_n[0][1], &diff_edge_n[0][4], &diff_edge_n[0][7],
75  &diff_edge_n[0][2], &diff_edge_n[0][5], &diff_edge_n[0][8], 9),
77  &diff_edge_n[1][0], &diff_edge_n[1][3], &diff_edge_n[1][6],
78  &diff_edge_n[1][1], &diff_edge_n[1][4], &diff_edge_n[1][7],
79  &diff_edge_n[1][2], &diff_edge_n[1][5], &diff_edge_n[1][8], 9),
81  &diff_edge_n[2][0], &diff_edge_n[2][3], &diff_edge_n[2][6],
82  &diff_edge_n[2][1], &diff_edge_n[2][4], &diff_edge_n[2][7],
83  &diff_edge_n[2][2], &diff_edge_n[2][5], &diff_edge_n[2][8], 9),
85  &diff_edge_n[3][0], &diff_edge_n[3][3], &diff_edge_n[3][6],
86  &diff_edge_n[3][1], &diff_edge_n[3][4], &diff_edge_n[3][7],
87  &diff_edge_n[3][2], &diff_edge_n[3][5], &diff_edge_n[3][8], 9),
89  &diff_edge_n[4][0], &diff_edge_n[4][3], &diff_edge_n[4][6],
90  &diff_edge_n[4][1], &diff_edge_n[4][4], &diff_edge_n[4][7],
91  &diff_edge_n[4][2], &diff_edge_n[4][5], &diff_edge_n[4][8], 9),