![]() |
v0.15.0 |
Discrete manager interface for MoFEM. More...
Go to the source code of this file.
Classes | |
| struct | MoFEM::DMCtx |
| PETSc Discrete Manager data structure. More... | |
Namespaces | |
| namespace | MoFEM |
| implementation of Data Operators for Forces and Sources | |
Macros | |
| #define | DM_NO_ELEMENT "DMNONEFE" |
Functions | |
| PetscErrorCode | MoFEM::DMRegister_MoFEM (const char sname[]) |
| Register MoFEM problem. | |
| PetscErrorCode | MoFEM::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. | |
| PetscErrorCode | MoFEM::DMMoFEMDuplicateDMCtx (DM dm, DM dm_duplicate) |
| Duplicate internal data structure. | |
| PetscErrorCode | MoFEM::DMMoFEMSwapDMCtx (DM dm, DM dm_swap) |
| Swap internal data structure. | |
| PetscErrorCode | MoFEM::DMMoFEMCreateSubDM (DM subdm, DM dm, const char problem_name[]) |
| Must be called by user to set Sub DM MoFEM data structures. | |
| PetscErrorCode | MoFEM::DMoFEMGetInterfacePtr (DM dm, MoFEM::Interface **m_field_ptr) |
| Get pointer to MoFEM::Interface. | |
| PetscErrorCode | MoFEM::DMMoFEMGetProblemPtr (DM dm, const MoFEM::Problem **problem_ptr) |
| Get pointer to problem data structure. | |
| PetscErrorCode | MoFEM::DMMoFEMSetDestroyProblem (DM dm, PetscBool destroy_problem) |
| PetscErrorCode | MoFEM::DMMoFEMGetDestroyProblem (DM dm, PetscBool *destroy_problem) |
| PetscErrorCode | MoFEM::DMMoFEMSetSquareProblem (DM dm, PetscBool square_problem) |
| set squared problem | |
| PetscErrorCode | MoFEM::DMMoFEMGetSquareProblem (DM dm, PetscBool *square_problem) |
| get squared problem | |
| PetscErrorCode | MoFEM::DMMoFEMResolveSharedFiniteElements (DM dm, std::string fe_name) |
| Resolve shared entities. | |
| PetscErrorCode | MoFEM::DMMoFEMGetProblemFiniteElementLayout (DM dm, std::string fe_name, PetscLayout *layout) |
| Get finite elements layout in the problem. | |
| PetscErrorCode | MoFEM::DMMoFEMAddElement (DM dm, std::string fe_name) |
| add element to dm | |
| PetscErrorCode | MoFEM::DMMoFEMAddElement (DM dm, std::vector< std::string > fe_name) |
| add element to dm | |
| PetscErrorCode | MoFEM::DMMoFEMUnSetElement (DM dm, std::string fe_name) |
| unset element from dm | |
| PetscErrorCode | MoFEM::DMoFEMMeshToLocalVector (DM dm, Vec l, InsertMode mode, ScatterMode scatter_mode) |
| set local (or ghosted) vector values on mesh for partition only | |
| PetscErrorCode | MoFEM::DMoFEMMeshToGlobalVector (DM dm, Vec g, InsertMode mode, ScatterMode scatter_mode) |
| set ghosted vector values on all existing mesh entities | |
| PetscErrorCode | MoFEM::DMoFEMPreProcessFiniteElements (DM dm, MoFEM::FEMethod *method) |
| execute finite element method for each element in dm (problem) | |
| PetscErrorCode | MoFEM::DMoFEMPostProcessFiniteElements (DM dm, MoFEM::FEMethod *method) |
| execute finite element method for each element in dm (problem) | |
| PetscErrorCode | MoFEM::DMoFEMLoopFiniteElementsUpAndLowRank (DM dm, const char fe_name[], MoFEM::FEMethod *method, int low_rank, int up_rank, CacheTupleWeakPtr cache_ptr=CacheTupleSharedPtr()) |
| Executes FEMethod for finite elements in DM. | |
| PetscErrorCode | MoFEM::DMoFEMLoopFiniteElementsUpAndLowRank (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, int low_rank, int up_rank, CacheTupleWeakPtr cache_ptr=CacheTupleSharedPtr()) |
| Executes FEMethod for finite elements in DM. | |
| PetscErrorCode | MoFEM::DMoFEMLoopFiniteElements (DM dm, const char fe_name[], MoFEM::FEMethod *method, CacheTupleWeakPtr cache_ptr=CacheTupleSharedPtr()) |
| Executes FEMethod for finite elements in DM. | |
| PetscErrorCode | MoFEM::DMoFEMLoopFiniteElements (DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, CacheTupleWeakPtr cache_ptr=CacheTupleSharedPtr()) |
| Executes FEMethod for finite elements in DM. | |
| PetscErrorCode | MoFEM::DMoFEMLoopDofs (DM dm, const char field_name[], MoFEM::DofMethod *method) |
| execute method for dofs on field in problem | |
| PetscErrorCode | MoFEM::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 | |
| PetscErrorCode | MoFEM::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 | |
| PetscErrorCode | MoFEM::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. | |
| PetscErrorCode | MoFEM::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. | |
| PetscErrorCode | MoFEM::DMMoFEMSNESSetFunction (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only) |
| set SNES residual evaluation function | |
| PetscErrorCode | MoFEM::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 | |
| PetscErrorCode | MoFEM::DMMoFEMSNESSetJacobian (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only) |
| set SNES Jacobian evaluation function | |
| PetscErrorCode | MoFEM::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 | |
| PetscErrorCode | MoFEM::DMMoFEMTSSetIFunction (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only) |
| set TS implicit function evaluation function | |
| PetscErrorCode | MoFEM::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 | |
| PetscErrorCode | MoFEM::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 | |
| PetscErrorCode | MoFEM::DMMoFEMTSSetIJacobian (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only) |
| set TS Jacobian evaluation function | |
| 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 | |
| PetscErrorCode | MoFEM::DMMoFEMTSSetRHSFunction (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only) |
| 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 | |
| PetscErrorCode | MoFEM::DMMoFEMTSSetRHSJacobian (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only) |
| PetscErrorCode | MoFEM::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 | |
| PetscErrorCode | MoFEM::DMMoFEMTSSetI2Function (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only) |
| set TS implicit function evaluation function | |
| PetscErrorCode | MoFEM::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 | |
| PetscErrorCode | MoFEM::DMMoFEMTSSetI2Jacobian (DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only) |
| set TS Jacobian evaluation function | |
| 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. | |
| 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. | |
| PetscErrorCode | MoFEM::DMMoFEMGetKspCtx (DM dm, MoFEM::KspCtx **ksp_ctx) |
| get MoFEM::KspCtx data structure | |
| PetscErrorCode | MoFEM::DMMoFEMGetKspCtx (DM dm, const boost::shared_ptr< MoFEM::KspCtx > &ksp_ctx) |
| get MoFEM::KspCtx data structure | |
| PetscErrorCode | MoFEM::DMMoFEMSetKspCtx (DM dm, boost::shared_ptr< MoFEM::KspCtx > ksp_ctx) |
| set MoFEM::KspCtx data structure | |
| PetscErrorCode | MoFEM::DMMoFEMGetSnesCtx (DM dm, MoFEM::SnesCtx **snes_ctx) |
| get MoFEM::SnesCtx data structure | |
| PetscErrorCode | MoFEM::DMMoFEMGetSnesCtx (DM dm, const boost::shared_ptr< MoFEM::SnesCtx > &snes_ctx) |
| get MoFEM::SnesCtx data structure | |
| PetscErrorCode | MoFEM::DMMoFEMSetSnesCtx (DM dm, boost::shared_ptr< MoFEM::SnesCtx > snes_ctx) |
| Set MoFEM::SnesCtx data structure. | |
| PetscErrorCode | MoFEM::DMMoFEMGetTsCtx (DM dm, MoFEM::TsCtx **ts_ctx) |
| get MoFEM::TsCtx data structure | |
| PetscErrorCode | MoFEM::DMMoFEMGetTsCtx (DM dm, const boost::shared_ptr< MoFEM::TsCtx > &ts_ctx) |
| get MoFEM::TsCtx data structure | |
| PetscErrorCode | MoFEM::DMMoFEMSetTsCtx (DM dm, boost::shared_ptr< MoFEM::TsCtx > ts_ctx) |
| Set MoFEM::TsCtx data structure. | |
| PetscErrorCode | MoFEM::DMMoFEMSetIsPartitioned (DM dm, PetscBool is_partitioned) |
| PetscErrorCode | MoFEM::DMMoFEMGetIsPartitioned (DM dm, PetscBool *is_partitioned) |
| PetscErrorCode | MoFEM::DMSetOperators_MoFEM (DM dm) |
| Set operators for MoFEM dm. | |
| PetscErrorCode | MoFEM::DMCreate_MoFEM (DM dm) |
| Create dm data structure with MoFEM data structure. | |
| PetscErrorCode | MoFEM::DMDestroy_MoFEM (DM dm) |
| Destroys dm with MoFEM data structure. | |
| PetscErrorCode | MoFEM::DMCreateGlobalVector_MoFEM (DM dm, Vec *g) |
| DMShellSetCreateGlobalVector. | |
| PetscErrorCode | MoFEM::DMCreateGlobalVector_MoFEM (DM dm, SmartPetscObj< Vec > &g_ptr) |
| DMShellSetCreateGlobalVector. | |
| PetscErrorCode | MoFEM::DMCreateLocalVector_MoFEM (DM dm, Vec *l) |
| DMShellSetCreateLocalVector. | |
| PetscErrorCode | MoFEM::DMCreateMatrix_MoFEM (DM dm, Mat *M) |
| PetscErrorCode | MoFEM::DMCreateMatrix_MoFEM (DM dm, SmartPetscObj< Mat > &M) |
| PetscErrorCode | MoFEM::DMSetFromOptions_MoFEM (DM dm) |
| PetscErrorCode | MoFEM::DMSetUp_MoFEM (DM dm) |
| PetscErrorCode | MoFEM::DMSubDMSetUp_MoFEM (DM subdm) |
| PetscErrorCode | MoFEM::DMMoFEMAddSubFieldRow (DM dm, const char field_name[]) |
| PetscErrorCode | MoFEM::DMMoFEMAddSubFieldRow (DM dm, std::string field_name) |
| PetscErrorCode | MoFEM::DMMoFEMAddSubFieldRow (DM dm, const char field_name[], boost::shared_ptr< Range > r_ptr) |
| Add field to sub dm problem on rows. | |
| PetscErrorCode | MoFEM::DMMoFEMAddSubFieldRow (DM dm, std::string field_name, boost::shared_ptr< Range > r_ptr) |
| Add field to sub dm problem on rows. | |
| PetscErrorCode | MoFEM::DMMoFEMAddSubFieldCol (DM dm, const char field_name[]) |
| PetscErrorCode | MoFEM::DMMoFEMAddSubFieldCol (DM dm, std::string field_name) |
| PetscErrorCode | MoFEM::DMMoFEMAddSubFieldCol (DM dm, const char field_name[], boost::shared_ptr< Range > r_ptr) |
| Add field to sub dm problem on columns. | |
| PetscErrorCode | MoFEM::DMMoFEMAddSubFieldCol (DM dm, std::string field_name, boost::shared_ptr< Range > r_ptr) |
| Add field to sub dm problem on columns. | |
| PetscErrorCode | MoFEM::DMMoFEMGetIsSubDM (DM dm, PetscBool *is_sub_dm) |
| PetscErrorCode | MoFEM::DMMoFEMGetSubRowIS (DM dm, IS *is) |
| get sub problem is | |
| PetscErrorCode | MoFEM::DMMoFEMGetSubColIS (DM dm, IS *is) |
| get sub problem is | |
| PetscErrorCode | MoFEM::DMMoFEMAddRowCompositeProblem (DM dm, const char prb_name[]) |
| Add problem to composite DM on row. | |
| PetscErrorCode | MoFEM::DMMoFEMAddColCompositeProblem (DM dm, const char prb_name[]) |
| Add problem to composite DM on col. | |
| PetscErrorCode | MoFEM::DMMoFEMGetIsCompDM (DM dm, PetscBool *is_comp_dm) |
| Get if this DM is composite DM. | |
| PetscErrorCode | MoFEM::DMGlobalToLocalBegin_MoFEM (DM dm, Vec, InsertMode, Vec) |
| PetscErrorCode | MoFEM::DMGlobalToLocalEnd_MoFEM (DM dm, Vec, InsertMode, Vec) |
| PetscErrorCode | MoFEM::DMLocalToGlobalBegin_MoFEM (DM, Vec, InsertMode, Vec) |
| PetscErrorCode | MoFEM::DMLocalToGlobalEnd_MoFEM (DM, Vec, InsertMode, Vec) |
| PetscErrorCode | MoFEM::DMCreateFieldIS_MoFEM (DM dm, PetscInt *numFields, char ***fieldNames, IS **fields) |
| PetscErrorCode | MoFEM::DMMoFEMGetFieldIS (DM dm, RowColData rc, const char field_name[], IS *is) |
| get field is in the problem | |
| PetscErrorCode | MoFEM::DMMoFEMSetVerbosity (DM dm, const int verb) |
| Set verbosity level. | |
| MoFEMErrorCode | MoFEM::DMMoFEMSetBlocMatData (DM dm, boost::shared_ptr< BlockStructure >) |
| Set data for block mat. | |
| MoFEMErrorCode | MoFEM::DMMoFEMGetBlocMatData (DM dm, boost::shared_ptr< BlockStructure > &) |
| Get data for block mat. | |
| MoFEMErrorCode | MoFEM::DMMoFEMCreateBlockMat (DM dm, Mat *mat) |
| Create block matrix. | |
| MoFEMErrorCode | MoFEM::DMMoFEMCreateBlockMat (DM dm, SmartPetscObj< Mat > &mat) |
| Create block matrix. | |
| template<typename T > | |
| MoFEMErrorCode | MoFEM::DMMoFEMSetNestSchurData (DM dm, boost::shared_ptr< T >) |
| Set data for nest schur (see specialisation in Schur.hpp) | |
| MoFEMErrorCode | MoFEM::DMMoFEMCreateNestSchurMat (DM dm, Mat *mat) |
| Create nest schur matrix. | |
| MoFEMErrorCode | MoFEM::DMMoFEMCreateHybridL2Mat (DM dm, SmartPetscObj< Mat > &mat) |
| Create matrix for hybridised system. | |
| auto | MoFEM::getInterfacePtr (DM dm) |
| Get the Interface Ptr object. | |
| auto | MoFEM::getProblemPtr (DM dm) |
| get problem pointer from DM | |
| auto | MoFEM::createDMMatrix (DM dm) |
| Get smart matrix from DM. | |
| auto | MoFEM::createDMHybridisedL2Matrix (DM dm) |
| Get smart hybridised L2 matrix from DM. | |
| auto | MoFEM::createDMBlockMat (DM dm) |
| auto | MoFEM::createDMNestSchurMat (DM dm) |
| DEPRECATED auto | MoFEM::smartCreateDMMatrix (DM dm) |
| auto | MoFEM::createDMVector (DM dm) |
| Get smart vector from DM. | |
| DEPRECATED auto | MoFEM::smartCreateDMVector (DM dm) |
| auto | MoFEM::getDMKspCtx (DM dm) |
| Get KSP context data structure used by DM. | |
| DEPRECATED auto | MoFEM::smartGetDMKspCtx (DM dm) |
| auto | MoFEM::getDMSnesCtx (DM dm) |
| Get SNES context data structure used by DM. | |
| DEPRECATED auto | MoFEM::smartGetDMSnesCtx (DM dm) |
| auto | MoFEM::getDMTsCtx (DM dm) |
| Get TS context data structure used by DM. | |
| DEPRECATED auto | MoFEM::smartGetDMTsCtx (DM dm) |
| auto | MoFEM::getDMSubData (DM dm) |
| Get sub problem data structure. | |
Discrete manager interface for MoFEM.
This file implements PETSc's DM (Distributed Mesh) interface for MoFEM, providing integration between MoFEM's Problem data structures and PETSc solvers (KSP, SNES, TS, TAO).
The DM serves as a bridge between MoFEM's core Problem structure and PETSc's algebraic objects (vectors and matrices). Each DM instance contains:
KSP (Linear Solvers):**
Handles DOF mapping between local and global indexing
SNES (Nonlinear Solvers):**
Provides context for Newton-based iteration data
TS (Time Steppers):**
The DM abstraction enables seamless use of PETSc's solver ecosystem while maintaining access to MoFEM's mesh management and finite element capabilities.
Definition in file DMMoFEM.hpp.
| #define DM_NO_ELEMENT "DMNONEFE" |
Definition at line 50 of file DMMoFEM.hpp.