19 #ifndef __PROBLEMSMANAGER_HPP__
20 #define __PROBLEMSMANAGER_HPP__
66 const int adj_dim,
const int n_parts,
67 Tag *th_vertex_weights =
nullptr,
68 Tag *th_edge_weights =
nullptr,
69 Tag *th_part_weights =
nullptr,
120 const bool square_matrix,
135 const bool square_matrix =
true,
149 const std::string out_name,
const std::vector<std::string> &fields_row,
150 const std::vector<std::string> &fields_col,
151 const std::string main_problem,
const bool square_matrix =
true,
152 const map<std::string, std::pair<EntityType, EntityType>> *entityMapRow =
154 const map<std::string, std::pair<EntityType, EntityType>> *entityMapCol =
171 const std::vector<std::string> add_row_problems,
172 const std::vector<std::string> add_col_problems,
173 const bool square_matrix =
true,
int verb = 1);
191 const std::string problem_for_rows,
193 const std::string problem_for_cols,
194 bool copy_cols,
int verb =
VERBOSE);
227 bool part_from_moab =
false,
228 int low_proc = -1,
int hi_proc = -1,
274 const std::string fe_name,
275 EntityHandle *meshset)
const;
292 const std::string fe_name,
293 PetscLayout *layout)
const;
319 const std::string field_name,
320 const Range ents,
const int lo_coeff = 0,
323 const bool debug =
false);
338 const Range ents, std::vector<bool> &marker);
@ PROBLEMSMANAGER_INTERFACE
#define MAX_DOFS_ON_ENTITY
Maximal number of DOFs on entity.
MoFEMErrorCode buildProblemOnDistributedMesh(const std::string name, const bool square_matrix, int verb=VERBOSE)
build problem data structures, assuming that mesh is distributed (collective)
MoFEMErrorCode getProblemElementsLayout(const std::string name, const std::string fe_name, PetscLayout *layout) const
Get layout of elements in the problem.
MoFEMErrorCode partitionGhostDofs(const std::string name, int verb=VERBOSE)
determine ghost nodes
MoFEMErrorCode buildSubProblem(const std::string out_name, const std::vector< std::string > &fields_row, const std::vector< std::string > &fields_col, const std::string main_problem, const bool square_matrix=true, const map< std::string, std::pair< EntityType, EntityType >> *entityMapRow=nullptr, const map< std::string, std::pair< EntityType, EntityType >> *entityMapCol=nullptr, int verb=VERBOSE)
build sub problem
MoFEMErrorCode partitionSimpleProblem(const std::string name, int verb=VERBOSE)
partition problem dofs
MoFEMErrorCode buildCompsedProblem(const std::string out_name, const std::vector< std::string > add_row_problems, const std::vector< std::string > add_col_problems, const bool square_matrix=true, int verb=1)
build composite problem
MoFEMErrorCode removeDofsOnEntities(const std::string problem_name, const std::string field_name, const Range ents, const int lo_coeff=0, const int hi_coeff=MAX_DOFS_ON_ENTITY, int verb=VERBOSE, const bool debug=false)
Remove DOFs from problem.
MoFEMErrorCode getFEMeshset(const std::string prb_name, const std::string fe_name, EntityHandle *meshset) const
create add entities of finite element in the problem
MoFEMErrorCode buildProblem(const std::string name, const bool square_matrix, int verb=VERBOSE)
build problem data structures
MoFEMErrorCode partitionMesh(const Range &ents, const int dim, const int adj_dim, const int n_parts, Tag *th_vertex_weights=nullptr, Tag *th_edge_weights=nullptr, Tag *th_part_weights=nullptr, int verb=VERBOSE, const bool debug=false)
Set partition tag to each finite element in the problem.
MoFEMErrorCode partitionProblem(const std::string name, int verb=VERBOSE)
partition problem dofs (collective)
MoFEMErrorCode partitionGhostDofsOnDistributedMesh(const std::string name, int verb=VERBOSE)
determine ghost nodes on distributed meshes
MoFEMErrorCode inheritPartition(const std::string name, const std::string problem_for_rows, bool copy_rows, const std::string problem_for_cols, bool copy_cols, int verb=VERBOSE)
build indexing and partition problem inheriting indexing and partitioning from two other problems
MoFEMErrorCode partitionFiniteElements(const std::string name, bool part_from_moab=false, int low_proc=-1, int hi_proc=-1, int verb=VERBOSE)
partition finite elements
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
std::bitset< BITINTERFACEUID_SIZE > BitIntefaceId
implementation of Data Operators for Forces and Sources
static const MOFEMuuid IDD_MOFEMProblemsManager
MoFEM interface unique ID.
keeps basic data about problem
Problem manager is used to build and partition problems.
ProblemsManager(const MoFEM::Core &core)
MoFEMErrorCode printPartitionedProblem(const Problem *problem_ptr, int verb=VERBOSE)
PetscLogEvent MOFEM_EVENT_ProblemsManager
MoFEMErrorCode query_interface(const MOFEMuuid &uuid, UnknownInterface **iface) const
virtual ~ProblemsManager()=default
PetscBool buildProblemFromFields
PetscBool synchroniseProblemEntities
DOFs in fields, not from DOFs on elements.
MoFEMErrorCode debugPartitionedProblem(const Problem *problem_ptr, int verb=VERBOSE)
MoFEMErrorCode markDofs(const std::string problem_name, RowColData rc, const Range ents, std::vector< bool > &marker)
Create vector with marked indices.
MoFEMErrorCode getOptions()
base class for all interface classes