v0.14.0
BcManager.hpp
Go to the documentation of this file.
1 /** \file BcManager.hpp
2  * \brief Manage boundary conditions set to the problem
3  * \ingroup bc_manager
4  *
5  */
6 
7 #ifndef __BCMANAGER_HPP__
8 #define __BCMANAGER_HPP__
9 
10 #include "UnknownInterface.hpp"
11 
12 namespace MoFEM {
13 
14 template <CubitBC BC> struct BcMeshsetType {};
15 template <CubitBC BC> struct BcScalarMeshsetType {};
16 template <CubitBC BC> using BcTemperature = BcScalarMeshsetType<BC>;
17 template <CubitBC BC> struct BcDisplacementMeshsetType {};
18 template <CubitBC BC> struct BcForceMeshsetType {};
19 template <CubitBC BC> struct BcFluxMeshsetType {};
20 
21 /**
22  * \brief Simple interface for fast problem set-up
23  * \ingroup mofem_simple_interface
24  */
25 struct BcManager : public UnknownInterface {
26 
27  MoFEMErrorCode query_interface(boost::typeindex::type_index type_index,
28  UnknownInterface **iface) const;
29 
30  BcManager(const MoFEM::Core &core);
31  virtual ~BcManager() = default;
32 
33  /**
34  * @brief Data structure storing bc markers and atributes
35  *
36  */
37  struct BCs : boost::enable_shared_from_this<BCs> {
39  std::vector<double> bcAttributes;
40  std::vector<unsigned char> bcMarkers;
41 
42  using DofsView = std::vector<boost::weak_ptr<NumeredDofEntity>>;
43  boost::shared_ptr<DofsView> dofsViewPtr;
44 
45  boost::shared_ptr<DisplacementCubitBcData> dispBcPtr;
46  boost::shared_ptr<TemperatureCubitBcData> tempBcPtr;
47  boost::shared_ptr<HeatFluxCubitBcData> heatFluxBcPtr;
48  boost::shared_ptr<ForceCubitBcData> forceBcPtr;
49  boost::shared_ptr<MPCsType> mpcPtr;
50 
51  /// \deprecated use getBcEntsPtr
52  DEPRECATED inline auto getBcEdgesPtr() {
53  return boost::shared_ptr<Range>(shared_from_this(), &bcEnts);
54  }
55 
56  inline auto getBcEntsPtr() {
57  return boost::shared_ptr<Range>(shared_from_this(), &bcEnts);
58  }
59 
60  inline auto getBcMarkersPtr() {
61  return boost::shared_ptr<std::vector<unsigned char>>(shared_from_this(),
62  &bcMarkers);
63  }
64  };
65 
66  /**
67  * \brief get options
68  * @return error code
69  */
71 
72  // FIXME: add functions to couple the dofs
73  MoFEMErrorCode addBlockDOFsToMPCs(const std::string problem_name,
74  const std::string field_name,
75  bool get_low_dim_ents = false,
76  bool block_name_field_prefix = false,
77  bool is_distributed_mesh = false);
78 
79  /**
80  * @brief Mark side DOFs
81  *
82  * @param problem_name
83  * @param block_name
84  * @param field_name
85  * @param lo
86  * @param hi
87  * @return MoFEMErrorCode
88  */
89  MoFEMErrorCode pushMarkSideDofs(const std::string problem_name,
90  const std::string block_name,
91  const std::string field_name, int bridge_dim,
92  int lo, int hi);
93 
94  /**
95  * @brief Remove side DOFs
96  *
97  * @param problem_name
98  * @param block_name
99  * @param field_name
100  * @param lo
101  * @param hi
102  * @param is_distributed_mesh
103  * @return MoFEMErrorCode
104  */
105  MoFEMErrorCode removeSideDOFs(const std::string problem_name,
106  const std::string block_name,
107  const std::string field_name, int bridge_dim,
108  int lo, int hi,
109  bool is_distributed_mesh = true);
110 
111  /**
112  * @brief Remove DOFs from problem
113  *
114  * @param problem_name
115  * @param block_name
116  * @param field_name
117  * @param lo lowest coefficient
118  * @param hi highest coefficient
119  * @param get_low_dim_ents get lower dimension entities
120  * @param is_distributed_mesh distributed mesh
121  * @return MoFEMErrorCode
122  */
123  MoFEMErrorCode removeBlockDOFsOnEntities(const std::string problem_name,
124  const std::string block_name,
125  const std::string field_name, int lo,
126  int hi, bool get_low_dim_ents = true,
127  bool is_distributed_mesh = true);
128 
129  /**
130  * @brief Mark block DOFs
131  *
132  * @param problem_name
133  * @param block_name
134  * @param field_name
135  * @param lo lowest coefficient
136  * @param hi highest coefficient
137  * @param get_low_dim_ents get lower dimension entities
138  * field name
139  * @return MoFEMErrorCode
140  */
141  MoFEMErrorCode pushMarkDOFsOnEntities(const std::string problem_name,
142  const std::string block_name,
143  const std::string field_name, int lo,
144  int hi, bool get_low_dim_ents = true);
145 
146  /**
147  * @brief Mark block DOFs
148  *
149  * @tparam BCSET
150  * @param problem_name
151  * @param field_name
152  * @param get_low_dim_ents
153  * @param is_distributed_mesh
154  * @param block_name_field_prefix
155  * @return MoFEMErrorCode
156  */
157  template <typename T>
158  MoFEMErrorCode removeBlockDOFsOnEntities(const std::string problem_name,
159  const std::string field_name,
160  bool get_low_dim_ents = true,
161  bool block_name_field_prefix = false,
162  bool is_distributed_mesh = true);
163 
164  /**
165  * @brief Mark block DOFs
166  *
167  * @param problem_name
168  * @param field_name
169  * @param get_low_dim_ents get lower dimension entities
170  * @param block_name_field_prefix
171  * @return MoFEMErrorCode
172  */
173  template <typename T>
174  MoFEMErrorCode pushMarkDOFsOnEntities(const std::string problem_name,
175  const std::string field_name,
176  bool get_low_dim_ents = true,
177  bool block_name_field_prefix = false);
178 
179  /**
180  * @brief Mark block DOFs
181  *
182  * @tparam BCSET
183  * @param problem_name
184  * @param field_name
185  * @param block_name
186  * @param get_low_dim_ents
187  * @param is_distributed_mesh
188  * @return MoFEMErrorCode
189  */
190  template <typename T>
191  MoFEMErrorCode removeBlockDOFsOnEntities(const std::string problem_name,
192  const std::string block_name,
193  const std::string field_name,
194  bool get_low_dim_ents = true,
195  bool is_distributed_mesh = true);
196 
197  /**
198  * @brief Mark block DOFs
199  *
200  * @param problem_name
201  * @param field_name
202  * @param block_name
203  * @param get_low_dim_ents get lower dimension entities
204  * @return MoFEMErrorCode
205  */
206  template <typename T>
207  MoFEMErrorCode pushMarkDOFsOnEntities(const std::string problem_name,
208  const std::string block_name,
209  const std::string field_name,
210  bool get_low_dim_ents = true);
211 
212  /**
213  * @brief Get bc data and remove element
214  *
215  * @param block_name
216  * @return boost::shared_ptr<BCs>
217  */
218  boost::shared_ptr<BCs> popMarkDOFsOnEntities(const std::string block_name);
219 
220  /** \todo Add markers for standard BCs from cubit on Nodests and Sidesets used
221  * bu cubit for displacements, forces, etc. Also add function to add blockset
222  * by id and type.
223  */
224 
225  using BcMapByBlockName = std::map<string, boost::shared_ptr<BCs>>;
226 
227  using BcMarkerPtr = boost::shared_ptr<std::vector<char unsigned>>;
228  /**
229  * @brief Get the bc structure object
230  *
231  * @param block_name
232  * @return auto
233  */
234  inline auto getBcStructure(const std::string bc_id) {
235  return bcMapByBlockName.at(bc_id);
236  }
237 
238  /**
239  * @brief Get the bc map
240  *
241  * @return auto
242  */
244 
245  /**
246  * @brief Merge block ranges
247  *
248  * @param bc_regex_vec
249  * @return Range
250  */
251  Range getMergedBlocksRange(std::vector<std::regex> bc_regex_vec);
252 
253  /**
254  * @brief Merge block ranges
255  *
256  * @param bc_names
257  * @return auto
258  */
259  inline auto getMergedBlocksRange(std::vector<string> bc_names) {
260  std::vector<std::regex> reg_vec(bc_names.size());
261  for (int i = 0; i != bc_names.size(); ++i) {
262  auto full_name = std::string("(.*)_") + bc_names[i] + std::string("(.*)");
263  reg_vec[i] = std::regex(full_name);
264  }
265  return getMergedBlocksRange(reg_vec);
266  }
267 
268  /**
269  * @brief Get the Merged Boundary Marker object
270  *
271  * @param bc_regex_vec boundary name regex vector
272  * @return boundaryMarker
273  */
274  BcMarkerPtr getMergedBlocksMarker(std::vector<std::regex> bc_regex_vec);
275  /**
276  * @brief Get the Merged Boundary Marker object
277  *
278  * @param bc_names vector of boundary names
279  * @return boundaryMarker
280  */
281  inline auto getMergedBlocksMarker(std::vector<string> bc_names) {
282  std::vector<std::regex> reg_vec(bc_names.size());
283  for (int i = 0; i != bc_names.size(); ++i) {
284  auto full_name = std::string("(.*)_") + bc_names[i] + std::string("(.*)");
285  reg_vec[i] = std::regex(full_name);
286  }
287  return getMergedBlocksMarker(reg_vec);
288  }
289  /**
290  * @brief Get the Merged Blocks Marker object
291  *
292  * @param boundary_markers_ptr_vec vector of boundary markers to merge
293  * @return BcMarkerPtr
294  */
296  const std::vector<BcMarkerPtr> &boundary_markers_ptr_vec);
297 
298  /**
299  * @brief check if given boundary condition name is in the map bc element
300  *
301  * @param bc element of the map
302  * @param reg bc regex
303  * @return auto
304  */
305  inline auto checkBlock(const std::pair<string, boost::shared_ptr<BCs>> &bc,
306  std::regex reg) {
307  return std::regex_match(bc.first, reg);
308  }
309  /**
310  * @brief check if given boundary condition name is in the map bc element
311  *
312  * @param bc element of the map
313  * @param name bc name
314  * @return auto
315  */
316  inline auto
317  checkBlock(const std::pair<std::string, boost::shared_ptr<BCs>> &bc,
318  std::string name) {
319  auto full_name = std::string("(.*)_") + name + std::string("(.*)");
320  return checkBlock(bc, std::regex(full_name));
321  }
322 
323  /**
324  * @brief Get block IS
325  *
326  * @param block_prefix for hashmap
327  * @param block_name for hash map
328  * @param field_name for hash map and IS
329  * @param problem_name for IS
330  * @param lo
331  * @param hi
332  * @param is_expand is to extend
333  * @return SmartPetscObj<IS>
334  */
336  getBlockIS(const std::string block_prefix, const std::string block_name,
337  const std::string field_name, const std::string problem_name,
338  int lo, int hi, SmartPetscObj<IS> is_expand = SmartPetscObj<IS>());
339 
340  /**
341  * @brief Get block IS
342  *
343  * @param problem_name
344  * @param block_name
345  * @param field_name
346  * @param lo
347  * @param hi
348  * @param is_expand is to extend
349  * @return SmartPetscObj<IS>
350  */
352  getBlockIS(const std::string problem_name, const std::string block_name,
353  const std::string field_name, int lo, int hi,
354  SmartPetscObj<IS> is_expand = SmartPetscObj<IS>());
355 
356  /**
357  * @brief Extract block name and block name form block id
358  *
359  * @param block_id
360  * @param prb_name
361  * @return std::pair<std::string, std::string>
362  */
363  static std::pair<std::string, std::string>
364  extractStringFromBlockId(const std::string block_id,
365  const std::string prb_name);
366 
367 private:
369 
371 };
372 
373 template <>
375 BcManager::removeBlockDOFsOnEntities<BcMeshsetType<DISPLACEMENTSET>>(
376  const std::string problem_name, const std::string field_name,
377  bool get_low_dim_ents, bool block_name_field_prefix,
378  bool is_distributed_mesh);
379 
380 template <>
382 BcManager::removeBlockDOFsOnEntities<BcMeshsetType<TEMPERATURESET>>(
383  const std::string problem_name, const std::string field_name,
384  bool get_low_dim_ents, bool block_name_field_prefix,
385  bool is_distributed_mesh);
386 
387 template <>
388 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<BcMeshsetType<HEATFLUXSET>>(
389  const std::string problem_name, const std::string field_name,
390  bool get_low_dim_ents, bool block_name_field_prefix,
391  bool is_distributed_mesh);
392 
393 template <>
395 BcManager::removeBlockDOFsOnEntities<BcDisplacementMeshsetType<BLOCKSET>>(
396  const std::string problem_name, const std::string field_name,
397  bool get_low_dim_ents, bool block_name_field_prefix,
398  bool is_distributed_mesh);
399 
400 template <>
402 BcManager::removeBlockDOFsOnEntities<BcScalarMeshsetType<BLOCKSET>>(
403  const std::string problem_name, const std::string block_name,
404  const std::string field_name, bool get_low_dim_ents,
405  bool is_distributed_mesh);
406 
407 template <>
409 BcManager::pushMarkDOFsOnEntities<BcMeshsetType<DISPLACEMENTSET>>(
410  const std::string problem_name, const std::string field_name,
411  bool get_low_dim_ents, bool block_name_field_prefix);
412 
413 template <>
414 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<BcMeshsetType<TEMPERATURESET>>(
415  const std::string problem_name, const std::string field_name,
416  bool get_low_dim_ents, bool block_name_field_prefix);
417 
418 template <>
419 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<BcMeshsetType<HEATFLUXSET>>(
420  const std::string problem_name, const std::string field_name,
421  bool get_low_dim_ents, bool block_name_field_prefix);
422 
423 template <>
425 BcManager::pushMarkDOFsOnEntities<BcDisplacementMeshsetType<BLOCKSET>>(
426  const std::string problem_name, const std::string field_name,
427  bool get_low_dim_ents, bool block_name_field_prefix);
428 
429 template <>
430 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<BcScalarMeshsetType<BLOCKSET>>(
431  const std::string problem_name, const std::string field_name,
432  const std::string block_name, bool get_low_dim_ents);
433 
434 template <>
435 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<DisplacementCubitBcData>(
436  const std::string problem_name, const std::string field_name,
437  bool get_low_dim_ents, bool block_name_field_prefix);
438 
439 template <>
440 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<DisplacementCubitBcData>(
441  const std::string problem_name, const std::string field_name,
442  bool get_low_dim_ents, bool block_name_field_prefix,
443  bool is_distributed_mesh);
444 
445 template <>
446 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<TemperatureCubitBcData>(
447  const std::string problem_name, const std::string field_name,
448  bool get_low_dim_ents, bool block_name_field_prefix);
449 
450 template <>
451 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<TemperatureCubitBcData>(
452  const std::string problem_name, const std::string field_name,
453  bool get_low_dim_ents, bool block_name_field_prefix,
454  bool is_distributed_mesh);
455 
456 template <>
457 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<HeatFluxCubitBcData>(
458  const std::string problem_name, const std::string field_name,
459  bool get_low_dim_ents, bool block_name_field_prefix);
460 
461 template <>
462 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<HeatFluxCubitBcData>(
463  const std::string problem_name, const std::string field_name,
464  bool get_low_dim_ents, bool block_name_field_prefix,
465  bool is_distributed_mesh);
466 
467 template <>
468 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<BcMeshsetType<FORCESET>>(
469  const std::string problem_name, const std::string field_name,
470  bool get_low_dim_ents, bool block_name_field_prefix);
471 
472 template <>
473 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<BcForceMeshsetType<BLOCKSET>>(
474  const std::string problem_name, const std::string field_name,
475  bool get_low_dim_ents, bool block_name_field_prefix);
476 
477 template <>
478 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<ForceCubitBcData>(
479  const std::string problem_name, const std::string field_name,
480  bool get_low_dim_ents, bool block_name_field_prefix);
481 
482 template <>
483 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<BcMeshsetType<FORCESET>>(
484  const std::string problem_name, const std::string field_name,
485  bool get_low_dim_ents, bool block_name_field_prefix,
486  bool is_distributed_mesh);
487 
488 template <>
490 BcManager::removeBlockDOFsOnEntities<BcForceMeshsetType<BLOCKSET>>(
491  const std::string problem_name, const std::string field_name,
492  bool get_low_dim_ents, bool block_name_field_prefix,
493  bool is_distributed_mesh);
494 
495 template <>
496 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<ForceCubitBcData>(
497  const std::string problem_name, const std::string field_name,
498  bool get_low_dim_ents, bool block_name_field_prefix,
499  bool is_distributed_mesh);
500 
501 } // namespace MoFEM
502 
503 #endif //__BCMANAGER_HPP__
504 
505 /**
506  * \defgroup bc_manager Manages boundary conditions
507  * \brief Implementation manages boundary conditions
508  *
509  * \ingroup mofem
510  **/
MoFEM::BcManager::BCs::getBcEntsPtr
auto getBcEntsPtr()
Definition: BcManager.hpp:56
MoFEM::BcManager::extractStringFromBlockId
static std::pair< std::string, std::string > extractStringFromBlockId(const std::string block_id, const std::string prb_name)
Extract block name and block name form block id.
Definition: BcManager.cpp:1381
MoFEM::BcManager::getMergedBlocksRange
auto getMergedBlocksRange(std::vector< string > bc_names)
Merge block ranges.
Definition: BcManager.hpp:259
MoFEM::BcManager::BCs::bcMarkers
std::vector< unsigned char > bcMarkers
Definition: BcManager.hpp:40
MoFEM::CoreTmp< 0 >
Core (interface) class.
Definition: Core.hpp:82
DEPRECATED
#define DEPRECATED
Definition: definitions.h:17
MoFEM::BcManager::popMarkDOFsOnEntities
boost::shared_ptr< BCs > popMarkDOFsOnEntities(const std::string block_name)
Get bc data and remove element.
Definition: BcManager.cpp:349
MoFEM::BcManager::query_interface
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, UnknownInterface **iface) const
Definition: BcManager.cpp:34
MoFEM::BcManager::checkBlock
auto checkBlock(const std::pair< std::string, boost::shared_ptr< BCs >> &bc, std::string name)
check if given boundary condition name is in the map bc element
Definition: BcManager.hpp:317
MoFEM::BcManager::pushMarkSideDofs
MoFEMErrorCode pushMarkSideDofs(const std::string problem_name, const std::string block_name, const std::string field_name, int bridge_dim, int lo, int hi)
Mark side DOFs.
Definition: BcManager.cpp:1779
MoFEM::BcManager::BcManager
BcManager(const MoFEM::Core &core)
Definition: BcManager.cpp:41
MoFEM::BcManager::cOre
MoFEM::Core & cOre
Definition: BcManager.hpp:368
MoFEM::Exceptions::MoFEMErrorCode
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:56
MoFEM::BcManager::BCs::getBcMarkersPtr
auto getBcMarkersPtr()
Definition: BcManager.hpp:60
MoFEM::BcManager::getOptions
MoFEMErrorCode getOptions()
get options
Definition: BcManager.cpp:65
MoFEM::BcManager::removeBlockDOFsOnEntities
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, bool is_distributed_mesh=true)
Remove DOFs from problem.
Definition: BcManager.cpp:73
MoFEM::BcManager::getMergedBlocksMarker
BcMarkerPtr getMergedBlocksMarker(std::vector< std::regex > bc_regex_vec)
Get the Merged Boundary Marker object.
Definition: BcManager.cpp:374
MoFEM::BcManager::removeSideDOFs
MoFEMErrorCode removeSideDOFs(const std::string problem_name, const std::string block_name, const std::string field_name, int bridge_dim, int lo, int hi, bool is_distributed_mesh=true)
Remove side DOFs.
Definition: BcManager.cpp:1835
MoFEM::BcManager::BCs::bcEnts
Range bcEnts
Definition: BcManager.hpp:38
MoFEM::BcManager::pushMarkDOFsOnEntities
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.
Definition: BcManager.cpp:111
MoFEM::BcManager::BCs::tempBcPtr
boost::shared_ptr< TemperatureCubitBcData > tempBcPtr
Definition: BcManager.hpp:46
MoFEM
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:10
MoFEM::BcManager::BCs
Data structure storing bc markers and atributes.
Definition: BcManager.hpp:37
MoFEM::BcManager
Simple interface for fast problem set-up.
Definition: BcManager.hpp:25
MoFEM::BcManager::BCs::mpcPtr
boost::shared_ptr< MPCsType > mpcPtr
Definition: BcManager.hpp:49
MoFEM::BcManager::BCs::dispBcPtr
boost::shared_ptr< DisplacementCubitBcData > dispBcPtr
Definition: BcManager.hpp:45
MoFEM::BcManager::getBcMapByBlockName
BcMapByBlockName & getBcMapByBlockName()
Get the bc map.
Definition: BcManager.hpp:243
MoFEM::BcScalarMeshsetType
Definition: BcManager.hpp:15
MoFEM::BcManager::getBlockIS
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.
Definition: BcManager.cpp:405
MoFEM::BcManager::checkBlock
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
Definition: BcManager.hpp:305
MoFEM::BcManager::BCs::DofsView
std::vector< boost::weak_ptr< NumeredDofEntity > > DofsView
Definition: BcManager.hpp:42
MoFEM::BcManager::BCs::heatFluxBcPtr
boost::shared_ptr< HeatFluxCubitBcData > heatFluxBcPtr
Definition: BcManager.hpp:47
MoFEM::BcFluxMeshsetType
Definition: BcManager.hpp:19
UnknownInterface.hpp
MoFEM interface.
MoFEM::BcManager::getMergedBlocksRange
Range getMergedBlocksRange(std::vector< std::regex > bc_regex_vec)
Merge block ranges.
Definition: BcManager.cpp:359
MoFEM::BcManager::BcMarkerPtr
boost::shared_ptr< std::vector< char unsigned > > BcMarkerPtr
Definition: BcManager.hpp:227
MoFEM::BcManager::BCs::forceBcPtr
boost::shared_ptr< ForceCubitBcData > forceBcPtr
Definition: BcManager.hpp:48
MoFEM::BcManager::BCs::dofsViewPtr
boost::shared_ptr< DofsView > dofsViewPtr
Definition: BcManager.hpp:43
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
field_name
constexpr auto field_name
Definition: poisson_2d_homogeneous.cpp:13
MoFEM::BcManager::addBlockDOFsToMPCs
MoFEMErrorCode addBlockDOFsToMPCs(const std::string problem_name, const std::string field_name, bool get_low_dim_ents=false, bool block_name_field_prefix=false, bool is_distributed_mesh=false)
Definition: BcManager.cpp:185
MoFEM::BcManager::BCs::getBcEdgesPtr
DEPRECATED auto getBcEdgesPtr()
Definition: BcManager.hpp:52
MoFEM::UnknownInterface
base class for all interface classes
Definition: UnknownInterface.hpp:34
MoFEM::BcManager::~BcManager
virtual ~BcManager()=default
Range
MoFEM::BcForceMeshsetType
Definition: BcManager.hpp:18
MoFEM::BcManager::getMergedBlocksMarker
auto getMergedBlocksMarker(std::vector< string > bc_names)
Get the Merged Boundary Marker object.
Definition: BcManager.hpp:281
MoFEM::BcManager::BCs::bcAttributes
std::vector< double > bcAttributes
Definition: BcManager.hpp:39
MoFEM::BcMeshsetType
Definition: BcManager.hpp:14
MoFEM::BcManager::bcMapByBlockName
BcMapByBlockName bcMapByBlockName
Definition: BcManager.hpp:370
MoFEM::BcManager::getBcStructure
auto getBcStructure(const std::string bc_id)
Get the bc structure object.
Definition: BcManager.hpp:234
MoFEM::SmartPetscObj< IS >
MoFEM::BcManager::BcMapByBlockName
std::map< string, boost::shared_ptr< BCs > > BcMapByBlockName
Definition: BcManager.hpp:225
MoFEM::BcDisplacementMeshsetType
Definition: BcManager.hpp:17