7 #ifndef __BCMANAGER_HPP__
8 #define __BCMANAGER_HPP__
37 struct BCs : boost::enable_shared_from_this<BCs> {
42 boost::shared_ptr<DisplacementCubitBcData>
dispBcPtr;
43 boost::shared_ptr<TemperatureCubitBcData>
tempBcPtr;
50 return boost::shared_ptr<Range>(shared_from_this(), &
bcEnts);
54 return boost::shared_ptr<Range>(shared_from_this(), &
bcEnts);
58 return boost::shared_ptr<std::vector<unsigned char>>(shared_from_this(),
71 bool get_low_dim_ents =
false,
72 bool block_name_field_prefix =
false,
73 bool is_distributed_mesh =
false);
88 const std::string block_name,
90 int hi,
bool get_low_dim_ents =
true,
91 bool is_distributed_mesh =
true);
106 const std::string block_name,
108 int hi,
bool get_low_dim_ents =
true);
121 template <
typename T>
124 bool get_low_dim_ents =
true,
125 bool block_name_field_prefix =
false,
126 bool is_distributed_mesh =
true);
137 template <
typename T>
140 bool get_low_dim_ents =
true,
141 bool block_name_field_prefix =
false);
154 template <
typename T>
156 const std::string block_name,
158 bool get_low_dim_ents =
true,
159 bool is_distributed_mesh =
true);
170 template <
typename T>
172 const std::string block_name,
174 bool get_low_dim_ents =
true);
191 using BcMarkerPtr = boost::shared_ptr<std::vector<char unsigned>>;
224 std::vector<std::regex> reg_vec(bc_names.size());
225 for (
int i = 0;
i != bc_names.size(); ++
i) {
226 auto full_name = std::string(
"(.*)_") + bc_names[
i] + std::string(
"(.*)");
227 reg_vec[
i] = std::regex(full_name);
246 std::vector<std::regex> reg_vec(bc_names.size());
247 for (
int i = 0;
i != bc_names.size(); ++
i) {
248 auto full_name = std::string(
"(.*)_") + bc_names[
i] + std::string(
"(.*)");
249 reg_vec[
i] = std::regex(full_name);
260 const std::vector<BcMarkerPtr> &boundary_markers_ptr_vec);
269 inline auto checkBlock(
const std::pair<
string, boost::shared_ptr<BCs>> &bc,
271 return std::regex_match(bc.first, reg);
281 checkBlock(
const std::pair<std::string, boost::shared_ptr<BCs>> &bc,
283 auto full_name = std::string(
"(.*)_") + name + std::string(
"(.*)");
300 getBlockIS(
const std::string block_prefix,
const std::string block_name,
301 const std::string
field_name,
const std::string problem_name,
316 getBlockIS(
const std::string problem_name,
const std::string block_name,
327 static std::pair<std::string, std::string>
329 const std::string prb_name);
339 BcManager::removeBlockDOFsOnEntities<BcMeshsetType<DISPLACEMENTSET>>(
340 const std::string problem_name,
const std::string
field_name,
341 bool get_low_dim_ents,
bool block_name_field_prefix,
342 bool is_distributed_mesh);
346 BcManager::removeBlockDOFsOnEntities<BcMeshsetType<TEMPERATURESET>>(
347 const std::string problem_name,
const std::string
field_name,
348 bool get_low_dim_ents,
bool block_name_field_prefix,
349 bool is_distributed_mesh);
352 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<BcMeshsetType<HEATFLUXSET>>(
353 const std::string problem_name,
const std::string
field_name,
354 bool get_low_dim_ents,
bool block_name_field_prefix,
355 bool is_distributed_mesh);
359 BcManager::removeBlockDOFsOnEntities<BcDisplacementMeshsetType<BLOCKSET>>(
360 const std::string problem_name,
const std::string
field_name,
361 bool get_low_dim_ents,
bool block_name_field_prefix,
362 bool is_distributed_mesh);
366 BcManager::removeBlockDOFsOnEntities<BcScalarMeshsetType<BLOCKSET>>(
367 const std::string problem_name,
const std::string block_name,
368 const std::string
field_name,
bool get_low_dim_ents,
369 bool is_distributed_mesh);
373 BcManager::pushMarkDOFsOnEntities<BcMeshsetType<DISPLACEMENTSET>>(
374 const std::string problem_name,
const std::string
field_name,
375 bool get_low_dim_ents,
bool block_name_field_prefix);
378 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<BcMeshsetType<TEMPERATURESET>>(
379 const std::string problem_name,
const std::string
field_name,
380 bool get_low_dim_ents,
bool block_name_field_prefix);
383 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<BcMeshsetType<HEATFLUXSET>>(
384 const std::string problem_name,
const std::string
field_name,
385 bool get_low_dim_ents,
bool block_name_field_prefix);
389 BcManager::pushMarkDOFsOnEntities<BcDisplacementMeshsetType<BLOCKSET>>(
390 const std::string problem_name,
const std::string
field_name,
391 bool get_low_dim_ents,
bool block_name_field_prefix);
394 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<BcScalarMeshsetType<BLOCKSET>>(
395 const std::string problem_name,
const std::string
field_name,
396 const std::string block_name,
bool get_low_dim_ents);
399 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<DisplacementCubitBcData>(
400 const std::string problem_name,
const std::string
field_name,
401 bool get_low_dim_ents,
bool block_name_field_prefix);
404 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<DisplacementCubitBcData>(
405 const std::string problem_name,
const std::string
field_name,
406 bool get_low_dim_ents,
bool block_name_field_prefix,
407 bool is_distributed_mesh);
410 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<TemperatureCubitBcData>(
411 const std::string problem_name,
const std::string
field_name,
412 bool get_low_dim_ents,
bool block_name_field_prefix);
415 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<TemperatureCubitBcData>(
416 const std::string problem_name,
const std::string
field_name,
417 bool get_low_dim_ents,
bool block_name_field_prefix,
418 bool is_distributed_mesh);
421 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<HeatFluxCubitBcData>(
422 const std::string problem_name,
const std::string
field_name,
423 bool get_low_dim_ents,
bool block_name_field_prefix);
426 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<HeatFluxCubitBcData>(
427 const std::string problem_name,
const std::string
field_name,
428 bool get_low_dim_ents,
bool block_name_field_prefix,
429 bool is_distributed_mesh);
432 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<BcMeshsetType<FORCESET>>(
433 const std::string problem_name,
const std::string
field_name,
434 bool get_low_dim_ents,
bool block_name_field_prefix);
437 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<BcForceMeshsetType<BLOCKSET>>(
438 const std::string problem_name,
const std::string
field_name,
439 bool get_low_dim_ents,
bool block_name_field_prefix);
442 MoFEMErrorCode BcManager::pushMarkDOFsOnEntities<ForceCubitBcData>(
443 const std::string problem_name,
const std::string
field_name,
444 bool get_low_dim_ents,
bool block_name_field_prefix);
447 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<BcMeshsetType<FORCESET>>(
448 const std::string problem_name,
const std::string
field_name,
449 bool get_low_dim_ents,
bool block_name_field_prefix,
450 bool is_distributed_mesh);
454 BcManager::removeBlockDOFsOnEntities<BcForceMeshsetType<BLOCKSET>>(
455 const std::string problem_name,
const std::string
field_name,
456 bool get_low_dim_ents,
bool block_name_field_prefix,
457 bool is_distributed_mesh);
460 MoFEMErrorCode BcManager::removeBlockDOFsOnEntities<ForceCubitBcData>(
461 const std::string problem_name,
const std::string
field_name,
462 bool get_low_dim_ents,
bool block_name_field_prefix,
463 bool is_distributed_mesh);
467 #endif //__BCMANAGER_HPP__