20template <
int DIM>
struct ParentFiniteElementAdjacencyFunction;
21template <
int DIM>
struct ParentFiniteElementAdjacencyFunctionSkeleton;
81 const TagType tag_type = MB_TAG_SPARSE,
102 const TagType tag_type = MB_TAG_SPARSE,
123 const TagType tag_type = MB_TAG_SPARSE,
143 const TagType tag_type = MB_TAG_SPARSE,
192 const Range *ents = NULL);
474 const std::string col_field)
const;
510 std::list<std::tuple<std::string, int, Range, bool>>
531 template <
int DIM = -1>
536 boost::shared_ptr<ParentFiniteElementAdjacencyFunction<3>>
538 boost::shared_ptr<ParentFiniteElementAdjacencyFunction<2>>
540 boost::shared_ptr<ParentFiniteElementAdjacencyFunction<1>>
543 boost::shared_ptr<ParentFiniteElementAdjacencyFunctionSkeleton<2>>
545 boost::shared_ptr<ParentFiniteElementAdjacencyFunctionSkeleton<1>>
MoFEMTypes
Those types control how functions respond on arguments, f.e. error handling.
FieldApproximationBase
approximation base
FieldSpace
approximation spaces
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
int FieldCoefficientsNumber
Number of field coefficients.
std::bitset< BITREFLEVEL_SIZE > BitRefLevel
Bit structure attached to each entity identifying to what mesh entity is attached.
implementation of Data Operators for Forces and Sources
constexpr auto field_name
Simple interface for fast problem set-up.
boost::shared_ptr< ParentFiniteElementAdjacencyFunction< 2 > > parentAdjFunctionDim2
EntityHandle boundaryMeshset
meshset with boundary
MoFEMErrorCode buildProblem()
Build problem.
std::string & getDomainFEName()
Get the Domain FE Name.
bool & getAddBoundaryFE()
Get the addSkeletonFE.
const std::string getBoundaryFEName() const
Get the Boundary FE Name.
std::vector< std::string > dataFields
Data fields.
MoFEMErrorCode setParentAdjacency()
std::list< std::tuple< std::string, int, Range, bool > > fieldsOrder
std::vector< std::string > domainFields
domain fields
MoFEMErrorCode removeDomainField(const std::string &name)
Remove field form domain.
MoFEMErrorCode defineFiniteElements()
Define finite elements.
BitRefLevel bitAdjEnt
bit ref level for parent
EntityHandle & getMeshset()
Get the MeshSet object.
char meshFileName[255]
mesh file name
EntityHandle meshSet
domain meshset
auto & getBitAdjParent()
bit ref level for parent
int getDim() const
Get the problem dimension.
std::vector< std::string > otherFEs
Other finite elements.
MoFEMErrorCode buildFiniteElements()
Build finite elements.
boost::shared_ptr< ParentFiniteElementAdjacencyFunctionSkeleton< 2 > > parentAdjSkeletonFunctionDim2
MoFEMErrorCode addDataField(const std::string &name, const FieldSpace space, const FieldApproximationBase base, const FieldCoefficientsNumber nb_of_coefficients, const TagType tag_type=MB_TAG_SPARSE, const enum MoFEMTypes bh=MF_ZERO, int verb=-1)
Add field on domain.
MoFEMErrorCode exchangeGhostCells()
PetscLogEvent MOFEM_EVENT_SimpleBuildFields
const std::string getSkeletonFEName() const
Get the Skeleton FE Name.
PetscLogEvent MOFEM_EVENT_SimpleLoadMesh
MoFEMErrorCode addDomainField(const std::string &name, const FieldSpace space, const FieldApproximationBase base, const FieldCoefficientsNumber nb_of_coefficients, const TagType tag_type=MB_TAG_SPARSE, const enum MoFEMTypes bh=MF_ZERO, int verb=-1)
Add field on domain.
MoFEMErrorCode reSetUp(bool only_dm=false)
Rebuild internal MoFEM data structures.
std::vector< std::string > noFieldFields
NOFIELD field name.
bool addSkeletonFE
Add skeleton FE.
BitRefLevel bitAdjParent
bit ref level for parent
bool addBoundaryFE
Add boundary FE.
std::vector< std::string > & getOtherFiniteElements()
Get the Other Finite Elements.
MoFEMErrorCode addFieldToEmptyFieldBlocks(const std::string row_field, const std::string col_field) const
add empty block to problem
std::string skeletonFE
skeleton finite element
std::vector< std::string > noFieldDataFields
NOFIELD field name.
EntityHandle & getSkeletonMeshSet()
Get the SkeletonMeshSet object.
std::string boundaryFE
boundary finite element
std::string nameOfProblem
problem name
void setDim(int dim)
Set the problem dimension.
boost::shared_ptr< ParentFiniteElementAdjacencyFunction< 3 > > parentAdjFunctionDim3
MoFEMErrorCode getOptions()
get options
virtual ~Simple()=default
std::string domainFE
domain finite element
std::vector< std::string > boundaryFields
boundary fields
boost::shared_ptr< ParentFiniteElementAdjacencyFunctionSkeleton< 1 > > parentAdjSkeletonFunctionDim1
std::string & getBoundaryFEName()
Get the Boundary FE Name.
BitRefLevel bitAdjEntMask
bit ref level for parent parent
auto & getBitAdjEnt()
bit ref level for parent
DEPRECATED EntityHandle & getMeshSet()
SmartPetscObj< DM > dM
Discrete manager (interface to PETSc/MoFEM functions)
MoFEMErrorCode buildFields()
Build fields.
SmartPetscObj< DM > getDM()
Return smart DM object.
MoFEMErrorCode loadFile(const std::string options, const std::string mesh_file_name)
Load mesh file.
BitRefLevel bitLevel
BitRefLevel of the problem.
MoFEMErrorCode setFieldOrder(const std::string field_name, const int order, const Range *ents=NULL)
Set field order.
MoFEMErrorCode addBoundaryField(const std::string &name, const FieldSpace space, const FieldApproximationBase base, const FieldCoefficientsNumber nb_of_coefficients, const TagType tag_type=MB_TAG_SPARSE, const enum MoFEMTypes bh=MF_ZERO, int verb=-1)
Add field on boundary.
MoFEMErrorCode defineProblem(const PetscBool is_partitioned=PETSC_TRUE)
define problem
BitRefLevel & getBitRefLevelMask()
Get the BitRefLevel.
std::vector< std::string > skeletonFields
fields on the skeleton
MoFEMErrorCode addSkeletonField(const std::string &name, const FieldSpace space, const FieldApproximationBase base, const FieldCoefficientsNumber nb_of_coefficients, const TagType tag_type=MB_TAG_SPARSE, const enum MoFEMTypes bh=MF_ZERO, int verb=-1)
Add field on skeleton.
EntityHandle & getBoundaryMeshSet()
Get the BoundaryMeshSet object.
MoFEMErrorCode removeSkeletonField(const std::string &name)
Remove field form skeleton.
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, UnknownInterface **iface) const
auto & getBitAdjEntMask()
bit ref level for parent parent
bool & getAddSkeletonFE()
Get the addSkeletonFE.
MoFEMErrorCode setUp(const PetscBool is_partitioned=PETSC_TRUE)
Setup problem.
MoFEMErrorCode removeBoundaryField(const std::string &name)
Remove field form boundary.
std::string & getSkeletonFEName()
Get the Skeleton FE Name.
const std::string getProblemName() const
Get the Problem Name.
const std::string getDomainFEName() const
Get the Domain FE Name.
int dIm
dimension of problem
MoFEMErrorCode setSkeletonAdjacency(int dim=-1, std::string fe_name="")
Set the skeleton adjacency object.
MoFEMErrorCode deleteDM()
Delete dm.
std::string & getProblemName()
Get the Problem Name.
PetscLogEvent MOFEM_EVENT_SimpleSetUP
PetscLogEvent MOFEM_EVENT_SimpleKSPSolve
MoFEMErrorCode createBoundaryMeshset()
PetscLogEvent MOFEM_EVENT_SimpleBuildFiniteElements
BitRefLevel bitLevelMask
BitRefLevel of the problem.
auto & getBitAdjParentMask()
bit ref level for parent parent
BitRefLevel bitAdjParentMask
bit ref level for parent parent
PetscLogEvent MOFEM_EVENT_SimpleBuildProblem
boost::shared_ptr< ParentFiniteElementAdjacencyFunction< 1 > > parentAdjFunctionDim1
BitRefLevel & getBitRefLevel()
Get the BitRefLevel.
bool & getParentAdjacencies()
Get the addParentAdjacencies.
MoFEMErrorCode deleteFiniteElements()
Delete finite elements.
EntityHandle skeletonMeshset
skeleton meshset with boundary
MoFEMErrorCode createSkeletonMeshset()
bool addParentAdjacencies
If set to true parent adjacencies are build.
intrusive_ptr for managing petsc objects
base class for all interface classes