![]() |
v0.14.0 |
keeps basic data about problem More...
#include <src/multi_indices/ProblemsMultiIndices.hpp>
Classes | |
struct | SubProblemData |
Subproblem problem data. More... | |
Public Types | |
typedef multi_index_container< boost::weak_ptr< std::vector< NumeredDofEntity > >, indexed_by< sequenced<> > > | SequenceDofContainer |
using | EmptyFieldBlocks = std::pair< BitFieldId, BitFieldId > |
Public Member Functions | |
auto & | getNumeredRowDofsPtr () const |
get access to numeredRowDofsPtr storing DOFs on rows More... | |
auto & | getNumeredColDofsPtr () const |
get access to numeredColDofsPtr storing DOFs on cols More... | |
const auto & | getNumeredFiniteElementsPtr () const |
get access to reference for multi-index storing finite elements More... | |
MoFEMErrorCode | eraseElements (Range entities) const |
Erase elements by entities. More... | |
boost::shared_ptr< SubProblemData > & | getSubData () const |
Get main problem of sub-problem is. More... | |
auto & | getComposedProblemsData () const |
Het composed problems data structure. More... | |
MoFEMErrorCode | getDofByNameEntAndEntDofIdx (const int field_bit_number, const EntityHandle ent, const int ent_dof_idx, const RowColData row_or_col, boost::shared_ptr< NumeredDofEntity > &dof_ptr) const |
get DOFs from problem More... | |
NumeredDofEntity_multiIndex::iterator | getNumeredRowDofsBegin () const |
NumeredDofEntity_multiIndex::iterator | getNumeredRowDofsEnd () const |
NumeredDofEntity_multiIndex::iterator | getNumeredColDofsBegin () const |
NumeredDofEntity_multiIndex::iterator | getNumeredColDofsEnd () const |
auto | getNumeredRowDofsByLocIdxBegin (const DofIdx locidx) const |
auto | getNumeredRowDofsByLocIdxEnd (const DofIdx locidx) const |
auto | getNumeredColDofsByLocIdxBegin (const DofIdx locidx) const |
auto | getNumeredColDofsByLocIdxEnd (const DofIdx locidx) const |
auto | getNumeredRowDofsByEntBegin (const EntityHandle ent) const |
auto | getNumeredRowDofsByEntEnd (const EntityHandle ent) const |
auto | getNumeredColDofsByEntBegin (const EntityHandle ent) const |
auto | getNumeredColDofsByEntEnd (const EntityHandle ent) const |
Problem (Interface &moab, const EntityHandle meshset) | |
virtual | ~Problem ()=default |
BitProblemId | getId () const |
auto | getName () const |
DofIdx | getNbDofsRow () const |
DofIdx | getNbDofsCol () const |
DofIdx | getNbLocalDofsRow () const |
DofIdx | getNbLocalDofsCol () const |
DofIdx | getNbGhostDofsRow () const |
DofIdx | getNbGhostDofsCol () const |
BitRefLevel | getBitRefLevel () const |
BitRefLevel | getBitRefLevelMask () const |
MoFEMErrorCode | getRowDofsByPetscGlobalDofIdx (DofIdx idx, const NumeredDofEntity **dof_ptr, MoFEMTypes bh=MF_EXIST) const |
Get the Row Dofs By Petsc Global Dof Idx object. More... | |
MoFEMErrorCode | getColDofsByPetscGlobalDofIdx (DofIdx idx, const NumeredDofEntity **dof_ptr, MoFEMTypes bh=MF_EXIST) const |
Get the Col Dofs By Petsc Global Dof Idx object. More... | |
boost::weak_ptr< NumeredDofEntity > | getRowDofsByPetscGlobalDofIdx (DofIdx idx) const |
Get the Row Dofs By Petsc Global Dof Idx object. More... | |
boost::weak_ptr< NumeredDofEntity > | getColDofsByPetscGlobalDofIdx (DofIdx idx) const |
Get the Col Dofs By Petsc Global Dof Idx object. More... | |
BitFEId | getBitFEId () const |
MoFEMErrorCode | getNumberOfElementsByNameAndPart (MPI_Comm comm, const std::string name, PetscLayout *layout) const |
Get number of finite elements by name on processors. More... | |
MoFEMErrorCode | getNumberOfElementsByPart (MPI_Comm comm, PetscLayout *layout) const |
Get number of finite elements on processors. More... | |
auto & | getRowDofsSequence () const |
Get reference to sequence data numbered dof container. More... | |
auto & | getColDofsSequence () const |
Get reference to sequence data numbered dof container. More... | |
EmptyFieldBlocks & | getEmptyFieldBlocks () const |
Get the empty field blocks. More... | |
EmptyFieldBlocks & | addFieldToEmptyFieldBlocks (const EmptyFieldBlocks add_fields) const |
Add fields to the empty field blocks. More... | |
Public Attributes | |
EntityHandle | meshset |
BitProblemId * | tagId |
Unique problem ID. More... | |
const char * | tagName |
Problem name. More... | |
int | tagNameSize |
Size of problem name. More... | |
BitFEId * | tagBitFEId |
IDs of finite elements in problem. More... | |
BitRefLevel * | tagBitRefLevel |
BitRef level of finite elements in problem. More... | |
BitRefLevel * | tagBitRefLevelMask |
BItRefMask of elements in problem. More... | |
DofIdx | nbDofsRow |
Global number of DOFs in row. More... | |
DofIdx | nbDofsCol |
Global number of DOFs in col. More... | |
DofIdx | nbLocDofsRow |
Local number of DOFs in row. More... | |
DofIdx | nbLocDofsCol |
Local number of DOFs in colIs. More... | |
DofIdx | nbGhostDofsRow |
Number of ghost DOFs in row. More... | |
DofIdx | nbGhostDofsCol |
Number of ghost DOFs in col. More... | |
boost::shared_ptr< NumeredDofEntity_multiIndex > | numeredRowDofsPtr |
store DOFs on rows for this problem More... | |
boost::shared_ptr< NumeredDofEntity_multiIndex > | numeredColDofsPtr |
store DOFs on columns for this problem More... | |
boost::shared_ptr< NumeredEntFiniteElement_multiIndex > | numeredFiniteElementsPtr |
store finite elements More... | |
boost::shared_ptr< SubProblemData > | subProblemData |
boost::shared_ptr< ComposedProblemsData > | composedProblemsData |
Private Attributes | |
boost::shared_ptr< SequenceDofContainer > | sequenceRowDofContainer |
boost::shared_ptr< SequenceDofContainer > | sequenceColDofContainer |
EmptyFieldBlocks | emptyFieldBlocks |
Friends | |
std::ostream & | operator<< (std::ostream &os, const Problem &e) |
keeps basic data about problem
This is low level structure with information about problem, what elements compose problem and what DOFs are on rows and columns.
Definition at line 54 of file ProblemsMultiIndices.hpp.
using MoFEM::Problem::EmptyFieldBlocks = std::pair<BitFieldId, BitFieldId> |
Definition at line 524 of file ProblemsMultiIndices.hpp.
typedef multi_index_container<boost::weak_ptr<std::vector<NumeredDofEntity> >, indexed_by<sequenced<> > > MoFEM::Problem::SequenceDofContainer |
Definition at line 490 of file ProblemsMultiIndices.hpp.
MoFEM::Problem::Problem | ( | Interface & | moab, |
const EntityHandle | meshset | ||
) |
Definition at line 9 of file ProblemsMultiIndices.cpp.
|
virtualdefault |
|
inline |
Add fields to the empty field blocks.
Emtpy field blocks is a pair contains IDs of the fields for which matrix has zero entries.
add_fields |
Definition at line 548 of file ProblemsMultiIndices.hpp.
MoFEMErrorCode MoFEM::Problem::eraseElements | ( | Range | entities | ) | const |
Erase elements by entities.
entities |
Definition at line 170 of file ProblemsMultiIndices.cpp.
BitFEId MoFEM::Problem::getBitFEId | ( | ) | const |
Definition at line 45 of file ProblemsMultiIndices.cpp.
|
inline |
Definition at line 383 of file ProblemsMultiIndices.hpp.
|
inline |
Definition at line 384 of file ProblemsMultiIndices.hpp.
boost::weak_ptr< NumeredDofEntity > MoFEM::Problem::getColDofsByPetscGlobalDofIdx | ( | DofIdx | idx | ) | const |
Get the Col Dofs By Petsc Global Dof Idx object.
idx |
Definition at line 59 of file ProblemsMultiIndices.cpp.
MoFEMErrorCode MoFEM::Problem::getColDofsByPetscGlobalDofIdx | ( | DofIdx | idx, |
const NumeredDofEntity ** | dof_ptr, | ||
MoFEMTypes | bh = MF_EXIST |
||
) | const |
Get the Col Dofs By Petsc Global Dof Idx object.
idx | |
dof_ptr | |
bh |
Definition at line 83 of file ProblemsMultiIndices.cpp.
|
inline |
Get reference to sequence data numbered dof container.
In sequence data container data are physically stored. The purpose of this is to allocate NumeredDofEntity data in bulk, having only one allocation instead each time entity is inserted. That makes code efficient.
The vector in sequence is destroyed if last entity inside that vector is destroyed. All MoFEM::NumeredDofEntity have aliased shared_ptr which points to the vector.
Definition at line 522 of file ProblemsMultiIndices.hpp.
|
inline |
Het composed problems data structure.
Definition at line 131 of file ProblemsMultiIndices.hpp.
MoFEMErrorCode MoFEM::Problem::getDofByNameEntAndEntDofIdx | ( | const int | field_bit_number, |
const EntityHandle | ent, | ||
const int | ent_dof_idx, | ||
const RowColData | row_or_col, | ||
boost::shared_ptr< NumeredDofEntity > & | dof_ptr | ||
) | const |
get DOFs from problem
Note that ent_dof_idx is not coefficient number, is local number of DOFs on the entity. The coefficient number and local index of DOFs or entity are the same on vertices and H1 approximation.
field_bit_number | field name field_bit_number = (use m_field.get_field_bit_number(field_name); |
ent | entity handle |
ent_dof_idx | index of DOFs on entity |
row_or_col | ROW or COL |
dof_ptr | shared pointer to DOFs if found |
Definition at line 132 of file ProblemsMultiIndices.cpp.
|
inline |
Get the empty field blocks.
Emtpy field blocks is a pair contains IDs of the fields for which matrix has zero entries.
Definition at line 534 of file ProblemsMultiIndices.hpp.
|
inline |
Definition at line 370 of file ProblemsMultiIndices.hpp.
|
inline |
Definition at line 372 of file ProblemsMultiIndices.hpp.
|
inline |
Definition at line 377 of file ProblemsMultiIndices.hpp.
|
inline |
Definition at line 376 of file ProblemsMultiIndices.hpp.
|
inline |
Definition at line 381 of file ProblemsMultiIndices.hpp.
|
inline |
Definition at line 380 of file ProblemsMultiIndices.hpp.
|
inline |
Definition at line 379 of file ProblemsMultiIndices.hpp.
|
inline |
Definition at line 378 of file ProblemsMultiIndices.hpp.
MoFEMErrorCode MoFEM::Problem::getNumberOfElementsByNameAndPart | ( | MPI_Comm | comm, |
const std::string | name, | ||
PetscLayout * | layout | ||
) | const |
Get number of finite elements by name on processors.
Size retuned IS is equal to size of processors.
What PetscLayout see, http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/IS/index.html
Example of usage for layout
comm | Communicator |
name | Finite element name |
layout | Get number of elements on each processor |
Definition at line 98 of file ProblemsMultiIndices.cpp.
MoFEMErrorCode MoFEM::Problem::getNumberOfElementsByPart | ( | MPI_Comm | comm, |
PetscLayout * | layout | ||
) | const |
Get number of finite elements on processors.
Size retuned IS is equal to size of processors.
What PetscLayout see, http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/IS/index.html
Example of usage for layout
comm | Communicator |
layout | Get number of elements on each processor |
Definition at line 115 of file ProblemsMultiIndices.cpp.
|
inline |
get begin iterator for numeredColDofsPtr (insted you can use #_IT_NUMEREDDOFMOFEMENTITY_COL_FOR_LOOP_ for loops)
Definition at line 201 of file ProblemsMultiIndices.hpp.
|
inline |
get begin iterator for numeredColDofsPtr (insted you can use _IT_NUMEREDDOF_COL_BY_ENT_FOR_LOOP_ for loops)
Definition at line 316 of file ProblemsMultiIndices.hpp.
|
inline |
get end iterator for numeredColDofsPtr (insted you can use _IT_NUMEREDDOF_COL_BY_ENT_FOR_LOOP_ for loops)
Definition at line 322 of file ProblemsMultiIndices.hpp.
|
inline |
get begin iterator for numeredColDofsPtr (insted you can use _IT_NUMEREDDOF_COL_FOR_LOOP_ for loops)
Definition at line 260 of file ProblemsMultiIndices.hpp.
|
inline |
get end iterator for numeredColDofsPtr (insted you can use _IT_NUMEREDDOF_COL_FOR_LOOP_ for loops)
Definition at line 266 of file ProblemsMultiIndices.hpp.
|
inline |
get end iterator for numeredColDofsPtr (insted you can use #_IT_NUMEREDDOFMOFEMENTITY_COL_FOR_LOOP_ for loops)
Definition at line 207 of file ProblemsMultiIndices.hpp.
|
inline |
get access to numeredColDofsPtr storing DOFs on cols
Definition at line 87 of file ProblemsMultiIndices.hpp.
|
inline |
get access to reference for multi-index storing finite elements
Definition at line 92 of file ProblemsMultiIndices.hpp.
|
inline |
get begin iterator for numeredRowDofsPtr (insted you can use #_IT_NUMEREDDOFMOFEMENTITY_ROW_FOR_LOOP_ for loops)
Definition at line 189 of file ProblemsMultiIndices.hpp.
|
inline |
get begin iterator for numeredRowDofsPtr (insted you can use _IT_NUMEREDDOF_ROW_BY_ENT_FOR_LOOP_ for loops)
Definition at line 304 of file ProblemsMultiIndices.hpp.
|
inline |
get end iterator for numeredRowDofsPtr (insted you can use _IT_NUMEREDDOF_ROW_BY_ENT_FOR_LOOP_ for loops)
Definition at line 310 of file ProblemsMultiIndices.hpp.
|
inline |
get begin iterator for numeredRowDofsPtr (insted you can use _IT_NUMEREDDOF_ROW_FOR_LOOP_ for loops)
Definition at line 248 of file ProblemsMultiIndices.hpp.
|
inline |
get end iterator for numeredRowDofsPtr (insted you can use _IT_NUMEREDDOF_ROW_FOR_LOOP_ for loops)
Definition at line 254 of file ProblemsMultiIndices.hpp.
|
inline |
get end iterator for numeredRowDofsPtr (insted you can use #_IT_NUMEREDDOFMOFEMENTITY_ROW_FOR_LOOP_ for loops)
Definition at line 195 of file ProblemsMultiIndices.hpp.
|
inline |
get access to numeredRowDofsPtr storing DOFs on rows
Definition at line 82 of file ProblemsMultiIndices.hpp.
boost::weak_ptr< NumeredDofEntity > MoFEM::Problem::getRowDofsByPetscGlobalDofIdx | ( | DofIdx | idx | ) | const |
Get the Row Dofs By Petsc Global Dof Idx object.
idx |
Definition at line 48 of file ProblemsMultiIndices.cpp.
MoFEMErrorCode MoFEM::Problem::getRowDofsByPetscGlobalDofIdx | ( | DofIdx | idx, |
const NumeredDofEntity ** | dof_ptr, | ||
MoFEMTypes | bh = MF_EXIST |
||
) | const |
Get the Row Dofs By Petsc Global Dof Idx object.
idx | |
dof_ptr | |
bh |
Definition at line 69 of file ProblemsMultiIndices.cpp.
|
inline |
Get reference to sequence data numbered dof container.
In sequence data container data are physically stored. The purpose of this is to allocate NumeredDofEntity data in bulk, having only one allocation instead each time entity is inserted. That makes code efficient.
The vector in sequence is destroyed if last entity inside that vector is destroyed. All MoFEM::NumeredDofEntity have aliased shared_ptr which points to the vector.
Definition at line 506 of file ProblemsMultiIndices.hpp.
|
inline |
Get main problem of sub-problem is.
Definition at line 119 of file ProblemsMultiIndices.hpp.
|
friend |
Definition at line 37 of file ProblemsMultiIndices.cpp.
|
mutable |
Pointer to data structure from which this problem is composed
Definition at line 126 of file ProblemsMultiIndices.hpp.
|
mutableprivate |
Definition at line 559 of file ProblemsMultiIndices.hpp.
EntityHandle MoFEM::Problem::meshset |
Problem meshset (on tag of this meshset all data related to problem are stored)
Definition at line 56 of file ProblemsMultiIndices.hpp.
|
mutable |
Global number of DOFs in col.
Definition at line 66 of file ProblemsMultiIndices.hpp.
|
mutable |
Global number of DOFs in row.
Definition at line 65 of file ProblemsMultiIndices.hpp.
|
mutable |
Number of ghost DOFs in col.
Definition at line 70 of file ProblemsMultiIndices.hpp.
|
mutable |
Number of ghost DOFs in row.
Definition at line 69 of file ProblemsMultiIndices.hpp.
|
mutable |
Local number of DOFs in colIs.
Definition at line 68 of file ProblemsMultiIndices.hpp.
|
mutable |
Local number of DOFs in row.
Definition at line 67 of file ProblemsMultiIndices.hpp.
|
mutable |
store DOFs on columns for this problem
Definition at line 75 of file ProblemsMultiIndices.hpp.
|
mutable |
store finite elements
Definition at line 77 of file ProblemsMultiIndices.hpp.
|
mutable |
store DOFs on rows for this problem
Definition at line 73 of file ProblemsMultiIndices.hpp.
|
mutableprivate |
Definition at line 557 of file ProblemsMultiIndices.hpp.
|
mutableprivate |
Definition at line 556 of file ProblemsMultiIndices.hpp.
|
mutable |
Pointer to data structure. This pointer has allocated data only for sub problems.
Definition at line 113 of file ProblemsMultiIndices.hpp.
BitFEId* MoFEM::Problem::tagBitFEId |
IDs of finite elements in problem.
Definition at line 61 of file ProblemsMultiIndices.hpp.
BitRefLevel* MoFEM::Problem::tagBitRefLevel |
BitRef level of finite elements in problem.
Definition at line 62 of file ProblemsMultiIndices.hpp.
BitRefLevel* MoFEM::Problem::tagBitRefLevelMask |
BItRefMask of elements in problem.
Definition at line 63 of file ProblemsMultiIndices.hpp.
BitProblemId* MoFEM::Problem::tagId |
Unique problem ID.
Definition at line 58 of file ProblemsMultiIndices.hpp.
const char* MoFEM::Problem::tagName |
Problem name.
Definition at line 59 of file ProblemsMultiIndices.hpp.
int MoFEM::Problem::tagNameSize |
Size of problem name.
Definition at line 60 of file ProblemsMultiIndices.hpp.