16 #ifndef __BCMANAGER_HPP__
17 #define __BCMANAGER_HPP__
39 struct BCs : boost::enable_shared_from_this<BCs> {
46 return boost::shared_ptr<Range>(shared_from_this(), &
bcEnts);
50 return boost::shared_ptr<Range>(shared_from_this(), &
bcEnts);
54 return boost::shared_ptr<std::vector<unsigned char>>(shared_from_this(),
79 const std::string block_name,
80 const std::string field_name,
int lo,
82 bool get_low_dim_ents =
true);
96 const std::string block_name,
97 const std::string field_name,
int lo,
98 int hi,
bool get_low_dim_ents =
true);
115 using BcMarkerPtr = boost::shared_ptr<std::vector<char unsigned>>;
147 std::vector<std::regex> reg_vec(bc_names.size());
148 for (
int i = 0;
i != bc_names.size(); ++
i) {
149 string full_name = string(
"(.*)_") + bc_names[
i] + string(
"(.*)");
150 reg_vec[
i] = std::regex(full_name);
161 const std::vector<BcMarkerPtr> &boundary_markers_ptr_vec);
169 inline auto checkBlock(
const std::pair<
string, boost::shared_ptr<BCs>> &bc,
171 return std::regex_match(bc.first, reg);
180 inline auto checkBlock(
const std::pair<
string, boost::shared_ptr<BCs>> &bc,
182 string full_name = string(
"(.*)_") + name + string(
"(.*)");
199 getBlockIS(
const std::string block_prefix,
const std::string block_name,
200 const std::string field_name,
const std::string problem_name,
215 getBlockIS(
const std::string problem_name,
const std::string block_name,
216 const std::string field_name,
int lo,
int hi,
FTensor::Index< 'i', SPACE_DIM > i
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
implementation of Data Operators for Forces and Sources
Data structure storing bc markers and atributes.
std::vector< unsigned char > bcMarkers
std::vector< double > bcAttributes
DEPRECATED auto getBcEdgesPtr()
Simple interface for fast problem set-up.
boost::shared_ptr< std::vector< char unsigned > > BcMarkerPtr
MoFEMErrorCode getOptions()
get options
MoFEMErrorCode removeBlockDOFsOnEntities(const std::string problem_name, const std::string block_name, const std::string field_name, int lo, int hi, bool get_low_dim_ents=true)
Remove DOFs from problem.
BcMarkerPtr getMergedBlocksMarker(std::vector< std::regex > bc_regex_vec)
Get the Merged Boundary Marker object.
auto checkBlock(const std::pair< string, boost::shared_ptr< BCs >> &bc, std::regex reg)
check if given boundary condition name is in the map bc element
auto checkBlock(const std::pair< string, boost::shared_ptr< BCs >> &bc, std::string name)
check if given boundary condition name is in the map bc element
BcMapByBlockName & getBcMapByBlockName()
Get the bc map.
auto getMergedBlocksMarker(std::vector< string > bc_names)
Get the Merged Boundary Marker object.
BcMapByBlockName bcMapByBlockName
SmartPetscObj< IS > getBlockIS(const std::string block_prefix, const std::string block_name, const std::string field_name, const std::string problem_name, int lo, int hi, SmartPetscObj< IS > is_expand=SmartPetscObj< IS >())
Get block is.
virtual ~BcManager()=default
std::map< string, boost::shared_ptr< BCs > > BcMapByBlockName
BcManager(const MoFEM::Core &core)
auto getBcStructure(const std::string bc_id)
Get the bc structure object.
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, UnknownInterface **iface) const
boost::shared_ptr< BCs > popMarkDOFsOnEntities(const std::string block_name)
Get bc data and remove element.
Range getAdjEnts(Range ents)
MoFEMErrorCode pushMarkDOFsOnEntities(const std::string problem_name, const std::string block_name, const std::string field_name, int lo, int hi, bool get_low_dim_ents=true)
Mark block dofs.
base class for all interface classes