v0.13.2
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
MoFEM::EssentialPreProc< TemperatureCubitBcData > Struct Reference

Specialization for TemperatureCubitBcData. More...

#include <src/boundary_conditions/EssentialTemperatureCubitBcData.hpp>

Collaboration diagram for MoFEM::EssentialPreProc< TemperatureCubitBcData >:
[legend]

Public Member Functions

 EssentialPreProc (MoFEM::Interface &m_field, boost::shared_ptr< FEMethod > fe_ptr, std::vector< boost::shared_ptr< ScalingMethod > > smv)
 
MoFEMErrorCode operator() ()
 

Protected Attributes

MoFEM::InterfacemField
 
boost::weak_ptr< FEMethodfePtr
 
VecOfTimeScalingMethods vecOfTimeScalingMethods
 

Detailed Description

Specialization for TemperatureCubitBcData.

Specialization to enforce blocksets which TemperatureCubitBcData ptr. That is to enforce constrains on temperature. set

Template Parameters

Definition at line 24 of file EssentialTemperatureCubitBcData.hpp.

Constructor & Destructor Documentation

◆ EssentialPreProc()

MoFEM::EssentialPreProc< TemperatureCubitBcData >::EssentialPreProc ( MoFEM::Interface m_field,
boost::shared_ptr< FEMethod fe_ptr,
std::vector< boost::shared_ptr< ScalingMethod > >  smv 
)

Member Function Documentation

◆ operator()()

Definition at line 20 of file EssentialTemperatureCubitBcData.cpp.

20 {
22
23 if (auto fe_method_ptr = fePtr.lock()) {
24
25 auto bc_mng = mField.getInterface<BcManager>();
26 auto fb = mField.getInterface<FieldBlas>();
27 const auto problem_name = fe_method_ptr->problemPtr->getName();
28
29 for (auto bc : bc_mng->getBcMapByBlockName()) {
30 if (auto temp_bc = bc.second->tempBcPtr) {
31
32 auto &bc_id = bc.first;
33
34 auto regex_str = (boost::format("%s_(.*)") % problem_name).str();
35 if (std::regex_match(bc_id, std::regex(regex_str))) {
36
37 auto [field_name, block_name] =
38 BcManager::extractStringFromBlockId(bc_id, problem_name);
39
40 MOFEM_LOG("WORLD", Sev::noisy)
41 << "Apply EssentialPreProc<TemperatureCubitBcData>: "
42 << problem_name << "_" << field_name << "_" << block_name;
43
44 auto verts = bc.second->bcEnts.subset_by_type(MBVERTEX);
45 auto v = temp_bc->data.value1;
46 for (auto s : vecOfTimeScalingMethods) {
47 v *= s->getScale(fe_method_ptr->ts_t);
48 }
49
50 auto lambda = [&](boost::shared_ptr<FieldEntity> field_entity_ptr) {
52 for (auto &d : field_entity_ptr->getEntFieldData())
53 d = v;
55 };
56 CHKERR fb->fieldLambdaOnEntities(lambda, field_name, &verts);
57 }
58 }
59 }
60
61 } else {
62 SETERRQ(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
63 "Can not lock shared pointer");
64 }
65
67}
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
@ MOFEM_DATA_INCONSISTENCY
Definition: definitions.h:31
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
#define CHKERR
Inline error check.
Definition: definitions.h:535
constexpr double lambda
#define MOFEM_LOG(channel, severity)
Log.
Definition: LogManager.hpp:308
const double v
phase velocity of light in medium (cm/ns)
constexpr auto field_name
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:1045
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface refernce to pointer of interface.

Member Data Documentation

◆ fePtr

boost::weak_ptr<FEMethod> MoFEM::EssentialPreProc< TemperatureCubitBcData >::fePtr
protected

Definition at line 33 of file EssentialTemperatureCubitBcData.hpp.

◆ mField

Definition at line 32 of file EssentialTemperatureCubitBcData.hpp.

◆ vecOfTimeScalingMethods

Definition at line 34 of file EssentialTemperatureCubitBcData.hpp.


The documentation for this struct was generated from the following files: