|
| v0.14.0
|
Managing BitRefLevels.
More...
#include <src/interfaces/BitRefManager.hpp>
|
MoFEMErrorCode | setBitRefLevel (const Range &ents, const BitRefLevel bit, const bool only_tets=true, int verb=0, Range *adj_ents_ptr=nullptr) const |
| add entities to database and set bit ref level More...
|
|
MoFEMErrorCode | setElementsBitRefLevel (const Range &ents, const BitRefLevel bit=BitRefLevel(), int verb=QUIET) const |
| add entities to database and set bit ref level More...
|
|
MoFEMErrorCode | setEntitiesBitRefLevel (const Range &ents, const BitRefLevel bit=BitRefLevel(), int verb=QUIET) const |
| add entities to database and set bit ref level More...
|
|
MoFEMErrorCode | setFieldEntitiesBitRefLevel (const std::string field_name, const BitRefLevel bit=BitRefLevel(), int verb=QUIET) const |
| Set the bit ref level to entities in the field meshset. More...
|
|
MoFEMErrorCode | setBitRefLevelByDim (const EntityHandle meshset, const int dim, const BitRefLevel bit, int verb=QUIET) const |
| Set the Bit Ref Level By Dim object. More...
|
|
MoFEMErrorCode | setBitRefLevelByType (const EntityHandle meshset, const EntityType type, const BitRefLevel bit, int verb=QUIET) const |
| Set the Bit Ref Level By Type object. More...
|
|
MoFEMErrorCode | setBitLevelToMeshset (const EntityHandle meshset, const BitRefLevel bit, int verb=0) const |
|
MoFEMErrorCode | addToDatabaseBitRefLevelByType (const EntityType type, const BitRefLevel bit, const BitRefLevel mask=BitRefLevel().set(), int verb=QUIET) const |
| Add entities which exist in MoAB database, and have set appropiate BitRef level tag, to multi-indices in MoFEM. More...
|
|
MoFEMErrorCode | addToDatabaseBitRefLevelByDim (const int dim, const BitRefLevel bit, const BitRefLevel mask=BitRefLevel().set(), int verb=QUIET) const |
| Add entities which exist in MoAB database, and have set appropiate BitRef level tag, to multi-indices in MoFEM. More...
|
|
MoFEMErrorCode | lambdaBitRefLevel (boost::function< void(EntityHandle ent, BitRefLevel &bit)> fun) const |
| Process bit ref level by lambda function. More...
|
|
MoFEMErrorCode | lambdaBitRefLevel (const Range &ents, boost::function< void(EntityHandle ent, BitRefLevel &bit)> fun) const |
| Process bit ref level by lambda function. More...
|
|
MoFEMErrorCode | addBitRefLevel (const Range &ents, const BitRefLevel &bit, int verb=QUIET) const |
| add bit ref level to ref entity More...
|
|
MoFEMErrorCode | addBitRefLevelByDim (const EntityHandle meshset, const int dim, const BitRefLevel bit, int verb=QUIET) const |
| add bit ref level by dimension More...
|
|
MoFEMErrorCode | setNthBitRefLevel (const Range &ents, const int n, const bool b, int verb=QUIET) const |
| Set nth bit ref level. More...
|
|
MoFEMErrorCode | setNthBitRefLevel (const int n, const bool b, int verb=QUIET) const |
| Set nth bit ref level to all entities in database. More...
|
|
MoFEMErrorCode | shiftLeftBitRef (const int shift, const BitRefLevel mask=BitRefLevel().set(), int verb=DEFAULT_VERBOSITY) const |
| left shift bit ref level More...
|
|
MoFEMErrorCode | shiftRightBitRef (const int shift, const BitRefLevel mask=BitRefLevel().set(), int verb=DEFAULT_VERBOSITY, MoFEMTypes mf=MF_ZERO) const |
| right shift bit ref level More...
|
|
|
MoFEMErrorCode | filterEntitiesByRefLevel (const BitRefLevel bit, const BitRefLevel mask, Range &ents, int verb=QUIET) const |
| filter entities by bit ref level More...
|
|
MoFEMErrorCode | getEntitiesByTypeAndRefLevel (const BitRefLevel bit, const BitRefLevel mask, const EntityType type, const EntityHandle meshset, int verb=0) const |
| add all ents from ref level given by bit to meshset More...
|
|
MoFEMErrorCode | getEntitiesByTypeAndRefLevel (const BitRefLevel bit, const BitRefLevel mask, const EntityType type, Range &ents, int verb=0) const |
| add all ents from ref level given by bit to meshset More...
|
|
MoFEMErrorCode | getEntitiesByDimAndRefLevel (const BitRefLevel bit, const BitRefLevel mask, const int dim, const EntityHandle meshset, int verb=0) const |
| add all ents from ref level given by bit to meshset More...
|
|
MoFEMErrorCode | getEntitiesByDimAndRefLevel (const BitRefLevel bit, const BitRefLevel mask, const int dim, Range &ents, int verb=0) const |
| add all ents from ref level given by bit to meshset More...
|
|
MoFEMErrorCode | getEntitiesByRefLevel (const BitRefLevel bit, const BitRefLevel mask, const EntityHandle meshset, const int verb=QUIET) const |
| add all ents from ref level given by bit to meshset More...
|
|
MoFEMErrorCode | getEntitiesByRefLevel (const BitRefLevel bit, const BitRefLevel mask, Range &ents, const int verb=QUIET) const |
| add all ents from ref level given by bit to meshset More...
|
|
MoFEMErrorCode | getEntitiesByParentType (const BitRefLevel bit, const BitRefLevel mask, const EntityType type, Range &ents, const int verb=QUIET) const |
| get entities by bit ref level and type of parent More...
|
|
MoFEMErrorCode | getAllEntitiesNotInDatabase (Range &ents) const |
| Get all entities not in database. More...
|
|
MoFEMErrorCode | filterEntitiesNotInDatabase (Range &ents) const |
| Get entities not in database. More...
|
|
|
virtual MoFEMErrorCode | getAdjacenciesEquality (const EntityHandle from_entity, const int to_dimension, Range &adj_entities) const |
| Get the adjacencies associated with a entity to entities of a specified dimension. More...
|
|
virtual MoFEMErrorCode | getAdjacenciesAny (const EntityHandle from_entity, const int to_dimension, Range &adj_entities) const |
| Get the adjacencies associated with a entity to entities of a specified dimension. More...
|
|
virtual MoFEMErrorCode | getAdjacencies (const Problem *problem_ptr, const EntityHandle *from_entities, const int num_entities, const int to_dimension, Range &adj_entities, const int operation_type=moab::Interface::INTERSECT, const int verb=0) const |
| Get the adjacencies associated with a entity to entities of a specified dimension. More...
|
|
virtual MoFEMErrorCode | getAdjacencies (const BitRefLevel bit, const EntityHandle *from_entities, const int num_entities, const int to_dimension, Range &adj_entities, const int operation_type=moab::Interface::INTERSECT, const int verb=0) const |
| Get the adjacencies associated with a entity to entities of a specified dimension. More...
|
|
|
MoFEMErrorCode | updateMeshsetByEntitiesChildren (const EntityHandle parent, const BitRefLevel &parent_bit, const BitRefLevel &parent_mask, const BitRefLevel &child_bit, const BitRefLevel &child_mask, const EntityHandle child, EntityType child_type, const bool recursive=false, int verb=0) |
| Get child entities form meshset containing parent entities. More...
|
|
MoFEMErrorCode | updateMeshsetByEntitiesChildren (const EntityHandle parent, const BitRefLevel &child_bit, const EntityHandle child, EntityType child_type, const bool recursive=false, int verb=0) |
| Get child entities form meshset containing parent entities. More...
|
|
MoFEMErrorCode | updateFieldMeshsetByEntitiesChildren (const BitRefLevel &child_bit, int verb=0) |
| update fields meshesets by child entities More...
|
|
MoFEMErrorCode | updateFieldMeshsetByEntitiesChildren (const std::string name, const BitRefLevel &child_bit, int verb=0) |
| update field meshset by child entities More...
|
|
MoFEMErrorCode | updateFiniteElementMeshsetByEntitiesChildren (const std::string name, const BitRefLevel &child_bit, const EntityType fe_ent_type, int verb=0) |
| update finite element meshset by child entities More...
|
|
MoFEMErrorCode | updateRangeByChildren (const Range &parent, Range &child, MoFEMTypes bh=MF_ZERO) |
| Update range by childrens. More...
|
|
MoFEMErrorCode | updateRangeByParent (const Range &child_ents, Range &parent_ents, MoFEMTypes bh=MF_ZERO) |
| Update range by parents. More...
|
|
DEPRECATED MoFEMErrorCode | updateRange (const Range &parent, Range &child, MoFEMTypes bh=MF_ZERO) |
|
|
MoFEMErrorCode | writeBitLevel (const BitRefLevel bit, const BitRefLevel mask, const char *file_name, const char *file_type, const char *options, const bool check_for_empty=true) const |
| Write bit ref level to file. More...
|
|
MoFEMErrorCode | writeBitLevelByDim (const BitRefLevel bit, const BitRefLevel mask, const int dim, const char *file_name, const char *file_type, const char *options, const bool check_for_empty=true) const |
| Write bit ref level to file. More...
|
|
MoFEMErrorCode | writeBitLevelByType (const BitRefLevel bit, const BitRefLevel mask, const EntityType type, const char *file_name, const char *file_type, const char *options, const bool check_for_empty=true) const |
| Write bit ref level to file. More...
|
|
MoFEMErrorCode | writeEntitiesNotInDatabase (const char *file_name, const char *file_type, const char *options, const bool check_for_empty=true) const |
| Write ents not in database. More...
|
|
MoFEMErrorCode | writeEntitiesAllBitLevelsByType (const BitRefLevel mask, const EntityType type, const char *file_name, const char *file_type, const char *options) |
| Write all entities by bit levels and type. More...
|
|
static MoFEMErrorCode | fixTagSize (moab::Interface &moab, bool *changed=nullptr) |
| Fix tag size when BITREFLEVEL_SIZE of core library is different than file BITREFLEVEL_SIZE. More...
|
|
Managing BitRefLevels.
- Examples
- bernstein_bezier_generate_base.cpp, build_large_problem.cpp, build_problems.cpp, child_and_parent.cpp, continuity_check_on_contact_prism_side_ele.cpp, continuity_check_on_skeleton_3d.cpp, dm_build_partitioned_mesh.cpp, dm_create_subdm.cpp, dm_partitioned_no_field.cpp, elasticity.cpp, elasticity_mixed_formulation.cpp, ep.cpp, EshelbianPlasticity.cpp, field_blas.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, free_surface.cpp, hanging_node_approx.cpp, hcurl_divergence_operator_2d.cpp, level_set.cpp, mesh_cut.cpp, mesh_insert_interface_atom.cpp, mesh_smoothing.cpp, minimal_surface_area.cpp, navier_stokes.cpp, node_merge.cpp, nonlinear_dynamics.cpp, nonlinear_elastic.cpp, plot_base.cpp, prism_elements_from_surface.cpp, prism_polynomial_approximation.cpp, quad_polynomial_approximation.cpp, Remodeling.cpp, remove_entities_from_problem.cpp, remove_entities_from_problem_not_partitioned.cpp, simple_contact.cpp, simple_contact_thermal.cpp, split_sideset.cpp, test_jacobian_of_simple_contact_element.cpp, and unsaturated_transport.cpp.
Definition at line 21 of file BitRefManager.hpp.
◆ BitRefManager()
MoFEM::BitRefManager::BitRefManager |
( |
const MoFEM::Core & |
core | ) |
|
Definition at line 16 of file BitRefManager.cpp.
20 auto core_log = logging::core::get();
36 MOFEM_LOG(
"BitRefWorld", Sev::noisy) <<
"BitRefManager interface created";
◆ ~BitRefManager()
virtual MoFEM::BitRefManager::~BitRefManager |
( |
| ) |
|
|
virtualdefault |
◆ filterEntitiesByRefLevel()
filter entities by bit ref level
- Parameters
-
- Returns
- MoFEMErrorCode
- Examples
- hanging_node_approx.cpp.
Definition at line 746 of file BitRefManager.cpp.
754 std::vector<EntityHandle> ents_vec;
755 ents_vec.reserve(ents.size());
757 std::vector<BitRefLevel *> tags_bits_ptr_vec(ents.size());
760 auto hint = swap_ents.begin();
762 for (Range::pair_iterator p_eit = ents.pair_begin(); p_eit != ents.pair_end();
770 (
const void **)(&*tags_bits_ptr_vec.begin()));
772 if (
rval == MB_SUCCESS) {
774 auto bit_it = tags_bits_ptr_vec.begin();
776 auto check = [&
bit, &mask](
const auto &entity_bit) ->
bool {
779 (entity_bit &
bit).any() &&
781 ((entity_bit & mask) == entity_bit);
786 while (
f != s + 1 && !check(**bit_it)) {
795 while (
f != (s + 1) && check(**bit_it)) {
800 hint = swap_ents.insert(hint, start,
f - 1);
806 ents.swap(swap_ents);
◆ filterEntitiesNotInDatabase()
Get entities not in database.
- Parameters
-
- Returns
- MoFEMErrorCode
Definition at line 908 of file BitRefManager.cpp.
912 auto eit = ents.begin();
913 for (; eit != ents.end();) {
914 auto rit = ref_ents_ptr->get<Ent_mi_tag>().find(*eit);
915 if (rit != ref_ents_ptr->get<Ent_mi_tag>().end()) {
916 eit = ents.erase(eit);
◆ fixTagSize()
MoFEMErrorCode MoFEM::BitRefManager::fixTagSize |
( |
moab::Interface & |
moab, |
|
|
bool * |
changed = nullptr |
|
) |
| |
|
static |
Fix tag size when BITREFLEVEL_SIZE of core library is different than file BITREFLEVEL_SIZE.
- Returns
- MoFEMErrorCode
Definition at line 1232 of file BitRefManager.cpp.
1239 if (Tag
th = 0; moab.tag_get_handle(
"_RefBitLevel",
th) == MB_SUCCESS) {
1243 auto get_old_tag = [&](
auto &&name) {
1246 "bit ref level handle does not exist");
1250 auto get_new_tag = [&](
auto &&name,
auto &&def_val) {
1254 MB_TAG_CREAT | MB_TAG_BYTES | MB_TAG_SPARSE, &def_val),
1255 "can not create tag");
1260 CHKERR moab.tag_get_length(get_old_tag(
"_RefBitLevel"), length);
1268 <<
"Fixing tag length";
1271 CHKERR moab.get_entities_by_type(0, MBENTITYSET, all_ents,
true);
1272 CHKERR moab.get_entities_by_handle(0, all_ents,
true);
1274 auto process_tag = [&](
auto &&name,
auto &&def_val) {
1276 auto tag_old = get_old_tag(name);
1277 auto get_bits = [&]() {
1278 std::vector<BitRefLevel> bits;
1279 bits.reserve(all_ents.size());
1280 auto it_bit = bits.begin();
1281 for (
auto e : all_ents) {
1284 CHKERR moab.tag_get_by_ptr(tag_old, &e, 1, (
const void **)&data,
1288 std::min(
sizeof(
BitRefLevel),
static_cast<size_t>(data_size)));
1293 auto bits = get_bits();
1294 CHKERR moab.tag_delete(tag_old);
1295 auto tag_new = get_new_tag(name, def_val);
1296 auto it_bit = bits.begin();
1297 for (
auto e : all_ents) {
1298 if (it_bit->any()) {
1299 CHKERR moab.tag_set_data(tag_new, &e, 1, &*it_bit);
◆ get_th_RefBitLevel()
Tag MoFEM::BitRefManager::get_th_RefBitLevel |
( |
| ) |
const |
|
inline |
◆ get_th_RefParentHandle()
Tag MoFEM::BitRefManager::get_th_RefParentHandle |
( |
| ) |
const |
|
inline |
◆ getAllEntitiesNotInDatabase()
Get all entities not in database.
- Parameters
-
- Returns
- MoFEMErrorCode
Definition at line 898 of file BitRefManager.cpp.
902 CHKERR moab.get_entities_by_handle(0, ents,
false);
903 ents = subtract(ents, ents.subset_by_type(MBENTITYSET));
◆ getEntitiesByParentType()
get entities by bit ref level and type of parent
- Note
- Entities have to be added to MoFEM database
- Parameters
-
BitRefLevel | bitLevel |
BitRefLevel | mask |
type | of parent |
ents | returned ents |
- Returns
- error code
Definition at line 873 of file BitRefManager.cpp.
881 auto &ref_ents = ref_ents_ptr->get<Ent_Ent_mi_tag>();
884 std::vector<EntityHandle> ents_vec;
885 ents_vec.reserve(std::distance(it, hi_it));
886 for (; it != hi_it; it++) {
887 const BitRefLevel &ent_bit = it->get()->getBitRefLevel();
888 if ((ent_bit & mask) == ent_bit && (ent_bit &
bit).any())
889 ents_vec.emplace_back(it->get()->getEnt());
891 ents.insert_list(ents_vec.begin(), ents_vec.end());
894 <<
"getEntitiesByParentType: " << ents << endl;
◆ query_interface()
◆ writeBitLevel()
MoFEMErrorCode MoFEM::BitRefManager::writeBitLevel |
( |
const BitRefLevel |
bit, |
|
|
const BitRefLevel |
mask, |
|
|
const char * |
file_name, |
|
|
const char * |
file_type, |
|
|
const char * |
options, |
|
|
const bool |
check_for_empty = true |
|
) |
| const |
Write bit ref level to file.
- Parameters
-
bit | bit ref level |
mask | mask of bit ref level |
dim | dimension |
file_name | file name (see moab documentation) |
file_type | file type (see moab documentation) |
options | file options (see moab documentation) |
- Returns
- error code
Definition at line 634 of file BitRefManager.cpp.
644 CHKERR moab.create_meshset(MESHSET_SET, meshset);
647 CHKERR moab.get_number_entities_by_handle(meshset, nb_ents,
true);
648 if (check_for_empty && !nb_ents) {
650 <<
"No entities to save < " << file_name <<
" > in writeBitLevel";
654 CHKERR moab.write_file(file_name, file_type, options, &meshset, 1);
655 CHKERR moab.delete_entities(&meshset, 1);
◆ writeBitLevelByDim()
MoFEMErrorCode MoFEM::BitRefManager::writeBitLevelByDim |
( |
const BitRefLevel |
bit, |
|
|
const BitRefLevel |
mask, |
|
|
const int |
dim, |
|
|
const char * |
file_name, |
|
|
const char * |
file_type, |
|
|
const char * |
options, |
|
|
const bool |
check_for_empty = true |
|
) |
| const |
Write bit ref level to file.
- Parameters
-
bit | bit ref level |
mask | mask of bit ref level |
dim | dimension |
file_name | file name (see moab documentation) |
file_type | file type (see moab documentation) |
options | file options (see moab documentation) |
- Returns
- error code
- Examples
- hanging_node_approx.cpp.
Definition at line 660 of file BitRefManager.cpp.
669 if (check_for_empty && ents.empty()) {
671 <<
"No entities to save < " << file_name <<
" > in writeBitLevelByDim";
675 CHKERR moab.create_meshset(MESHSET_SET, meshset);
676 CHKERR moab.add_entities(meshset, ents);
677 CHKERR moab.write_file(file_name, file_type, options, &meshset, 1);
678 CHKERR moab.delete_entities(&meshset, 1);
◆ writeBitLevelByType()
MoFEMErrorCode MoFEM::BitRefManager::writeBitLevelByType |
( |
const BitRefLevel |
bit, |
|
|
const BitRefLevel |
mask, |
|
|
const EntityType |
type, |
|
|
const char * |
file_name, |
|
|
const char * |
file_type, |
|
|
const char * |
options, |
|
|
const bool |
check_for_empty = true |
|
) |
| const |
Write bit ref level to file.
- Parameters
-
bit | bit ref level |
mask | mask of bit ref level |
type | type of entity |
file_name | file name (see moab documentation) |
file_type | file type (see moab documentation) |
options | file options (see moab documentation) |
- Returns
- error code
Definition at line 682 of file BitRefManager.cpp.
691 if (check_for_empty && ents.empty()) {
693 <<
"No entities to save < " << file_name <<
" > in writeBitLevelByType";
697 CHKERR moab.create_meshset(MESHSET_SET, meshset);
698 CHKERR moab.add_entities(meshset, ents);
699 CHKERR moab.write_file(file_name, file_type, options, &meshset, 1);
700 CHKERR moab.delete_entities(&meshset, 1);
◆ writeEntitiesAllBitLevelsByType()
MoFEMErrorCode MoFEM::BitRefManager::writeEntitiesAllBitLevelsByType |
( |
const BitRefLevel |
mask, |
|
|
const EntityType |
type, |
|
|
const char * |
file_name, |
|
|
const char * |
file_type, |
|
|
const char * |
options |
|
) |
| |
Write all entities by bit levels and type.
- Parameters
-
mask | |
type | |
file_name | |
file_type | |
options | |
- Returns
- MoFEMErrorCode
Definition at line 722 of file BitRefManager.cpp.
727 std::string name = boost::lexical_cast<std::string>(ll) +
"_" + file_name;
729 file_type, options,
true);
◆ writeEntitiesNotInDatabase()
MoFEMErrorCode MoFEM::BitRefManager::writeEntitiesNotInDatabase |
( |
const char * |
file_name, |
|
|
const char * |
file_type, |
|
|
const char * |
options, |
|
|
const bool |
check_for_empty = true |
|
) |
| const |
Write ents not in database.
- Parameters
-
file_name | |
file_type | for example "VTK" |
options | |
check_for_empty | |
- Returns
- MoFEMErrorCode
Definition at line 704 of file BitRefManager.cpp.
713 if (check_for_empty && ents.empty())
715 CHKERR moab.create_meshset(MESHSET_SET, meshset);
716 CHKERR moab.add_entities(meshset, ents);
717 CHKERR moab.write_file(file_name, file_type, options, &meshset, 1);
718 CHKERR moab.delete_entities(&meshset, 1);
◆ cOre
◆ dEbug
bool MoFEM::BitRefManager::dEbug |
The documentation for this struct was generated from the following files:
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHK_MOAB_THROW(err, msg)
Check error code of MoAB function and throw MoFEM exception.
static bool checkIfChannelExist(const std::string channel)
Check if channel exist.
MoFEMErrorCode getEntitiesByRefLevel(const BitRefLevel bit, const BitRefLevel mask, const EntityHandle meshset, const int verb=QUIET) const
add all ents from ref level given by bit to meshset
#define MOFEM_LOG_CHANNEL(channel)
Set and reset channel.
MoFEMErrorCode filterEntitiesNotInDatabase(Range &ents) const
Get entities not in database.
static boost::shared_ptr< SinkType > createSink(boost::shared_ptr< std::ostream > stream_ptr, std::string comm_filter)
Create a sink object.
Deprecated interface functions.
DeprecatedCoreInterface Interface
#define MOFEM_LOG_FUNCTION()
Set scope.
static MoFEMErrorCodeGeneric< moab::ErrorCode > rval
#define CHKERR
Inline error check.
virtual moab::Interface & get_moab()=0
MoFEMErrorCode getEntitiesByDimAndRefLevel(const BitRefLevel bit, const BitRefLevel mask, const int dim, const EntityHandle meshset, int verb=0) const
add all ents from ref level given by bit to meshset
Tag get_th_RefParentHandle() const
static boost::shared_ptr< std::ostream > getStrmSync()
Get the strm sync object.
Tag get_th_RefBitLevel() const
static boost::shared_ptr< std::ostream > getStrmWorld()
Get the strm world object.
EntityHandle get_id_for_max_type()
static boost::shared_ptr< std::ostream > getStrmSelf()
Get the strm self object.
BitRefManager(const MoFEM::Core &core)
#define MOFEM_LOG_TAG(channel, tag)
Tag channel.
#define MOFEM_TAG_AND_LOG(channel, severity, tag)
Tag and log in channel.
#define MOFEM_LOG(channel, severity)
Log.
#define BITREFLEVEL_SIZE
max number of refinements
MoFEMErrorCode writeBitLevelByType(const BitRefLevel bit, const BitRefLevel mask, const EntityType type, const char *file_name, const char *file_type, const char *options, const bool check_for_empty=true) const
Write bit ref level to file.
virtual const RefEntity_multiIndex * get_ref_ents() const =0
Get the ref ents object.
std::bitset< BITREFLEVEL_SIZE > BitRefLevel
Bit structure attached to each entity identifying to what mesh entity is attached.
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
static LoggerType & setLog(const std::string channel)
Set ans resset chanel logger.
MoFEMErrorCode getEntitiesByTypeAndRefLevel(const BitRefLevel bit, const BitRefLevel mask, const EntityType type, const EntityHandle meshset, int verb=0) const
add all ents from ref level given by bit to meshset
EntityHandle get_id_for_min_type()
MoFEMErrorCode getAllEntitiesNotInDatabase(Range &ents) const
Get all entities not in database.
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...