11#ifndef _ESSENTIAL_HEATFLUXCUBITBCDATA_HPP_
12#define _ESSENTIAL_HEATFLUXCUBITBCDATA_HPP_
16template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
19 template
OpSource<3, FIELD_DIM, SourceBoundaryNormalSpecialization> {
26 boost::shared_ptr<HeatFluxCubitBcData> bc_data,
27 boost::shared_ptr<Range> ents_ptr,
28 std::vector<boost::shared_ptr<ScalingMethod>> smv);
35template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
38 boost::shared_ptr<HeatFluxCubitBcData> bc_data,
39 boost::shared_ptr<Range> ents_ptr,
40 std::vector<boost::shared_ptr<ScalingMethod>> smv)
44 vecOfTimeScalingMethods(smv) {
45 heatFlux = -bc_data->data.value1;
46 this->timeScalingFun = [
this](
const double t) {
48 for (
auto &
o : vecOfTimeScalingMethods) {
62 OpBase>::OpEssentialLhsImpl;
79 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
80 const std::string problem_name, std::string
field_name,
81 boost::shared_ptr<MatrixDouble> field_mat_ptr,
82 std::vector<boost::shared_ptr<ScalingMethod>> smv
95 auto add_op = [&](
auto &bcs) {
98 if (
auto bc =
m.second->heatFluxBcPtr) {
99 auto &bc_id =
m.first;
101 (boost::format(
"%s_%s_(.*)") % problem_name %
field_name).str();
102 if (std::regex_match(bc_id, std::regex(regex_str))) {
108 pipeline.push_back(
new OpInternal(
110 [](
double,
double,
double)
constexpr {
return 1.; },
111 m.second->getBcEntsPtr()));
140 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
141 const std::string problem_name, std::string
field_name) {
148 auto add_op = [&](
auto &bcs) {
150 for (
auto &
m : bcs) {
151 if (
auto bc =
m.second->heatFluxBcPtr) {
152 auto &bc_id =
m.first;
154 (boost::format(
"%s_%s_(.*)") % problem_name %
field_name).str();
155 if (std::regex_match(bc_id, std::regex(regex_str))) {
159 pipeline.push_back(
new OP(
field_name,
m.second->getBcEntsPtr()));
#define MOFEM_TAG_AND_LOG(channel, severity, tag)
Tag and log in channel.
#define MoFEMFunctionReturnHot(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 ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
FTensor::Index< 'm', SPACE_DIM > m
#define MOFEM_LOG_CHANNEL(channel)
Set and reset channel.
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
implementation of Data Operators for Forces and Sources
std::vector< boost::shared_ptr< ScalingMethod > > VecOfTimeScalingMethods
Vector of time scaling methods.
constexpr IntegrationType I
EssentialBC< BoundaryEleOp >::Assembly< A >::BiLinearForm< GAUSS >::OpEssentialLhs< DisplacementCubitBcData, 1, SPACE_DIM > OpEssentialLhs
EssentialBC< BoundaryEleOp >::Assembly< A >::LinearForm< GAUSS >::OpEssentialRhs< DisplacementCubitBcData, 1, SPACE_DIM > OpEssentialRhs
constexpr double t
plate stiffness
constexpr auto field_name
static MoFEMErrorCode add(MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, const std::string problem_name, std::string field_name)
AddEssentialToLhsPipelineImpl()=delete
Function (factory) for setting operators for lhs pipeline.
static MoFEMErrorCode add(MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, const std::string problem_name, std::string field_name, boost::shared_ptr< MatrixDouble > field_mat_ptr, std::vector< boost::shared_ptr< ScalingMethod > > smv)
AddEssentialToRhsPipelineImpl()=delete
Function (factory) for setting operators for rhs pipeline.
Simple interface for fast problem set-up.
BcMapByBlockName & getBcMapByBlockName()
Get the bc map.
Deprecated interface functions.
Definition of the displacement bc data structure.
Essential boundary conditions.
Definition of the heat flux bc data structure.
Enforce essential constrains on lhs.
VecOfTimeScalingMethods vecOfTimeScalingMethods
typename FormsIntegrators< OpBase >::template Assembly< A >::template LinearForm< I >::template OpSource< 3, FIELD_DIM, SourceBoundaryNormalSpecialization > OpSource
Enforce essential constrains on rhs.
Set indices on entities on finite element.
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface refernce to pointer of interface.