11#ifndef _NATURAL_MESHSET_TYPE_HPP_
12#define _NATURAL_MESHSET_TYPE_HPP_
25template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
27 :
OpFluxRhsImpl<NaturalMeshsetType<UNKNOWNSET>, 1, FIELD_DIM, A, I,
32 std::vector<boost::shared_ptr<ScalingMethod>> smv,
33 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
46template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
48 :
OpFluxRhsImpl<NaturalMeshsetType<UNKNOWNSET>, 1, FIELD_DIM, A, I,
53 std::vector<boost::shared_ptr<ScalingMethod>> smv,
54 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
64template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
67 FIELD_DIM, A, I, OpBase> {
75 std::vector<boost::shared_ptr<ScalingMethod>> smv,
76 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
81 std::vector<boost::shared_ptr<ScalingMethod>> smv,
82 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
90template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
93 FIELD_DIM, A, I, OpBase> {
101 std::vector<boost::shared_ptr<ScalingMethod>> smv,
102 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
125template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
128 I>::template
OpSource<1, FIELD_DIM> {
135 boost::shared_ptr<Range> ents_ptr,
136 std::vector<boost::shared_ptr<ScalingMethod>> smv,
137 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
142 std::vector<boost::shared_ptr<ScalingMethod>> smv,
143 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
150template <AssemblyType A, IntegrationType I,
typename OpBase>
160 boost::shared_ptr<Range> ents_ptr,
161 std::vector<boost::shared_ptr<ScalingMethod>> smv,
162 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
167 std::vector<boost::shared_ptr<ScalingMethod>> smv,
168 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
172 double scalarValue = 0;
178template <AssemblyType A, IntegrationType I,
typename OpBase>
180 :
OpFluxRhsImpl<NaturalMeshsetType<UNKNOWNSET>, 1, 1, A, I, OpBase> {
187 std::vector<boost::shared_ptr<ScalingMethod>> smv,
188 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
194template <AssemblyType A, IntegrationType I,
typename OpBase>
196 :
OpFluxRhsImpl<NaturalMeshsetType<UNKNOWNSET>, 1, 1, A, I, OpBase> {
203 std::vector<boost::shared_ptr<ScalingMethod>> smv,
204 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
210template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
213 I>::template OpNormalMixVecTimesScalar<FIELD_DIM> {
219 const std::string
field_name,
const double value,
220 boost::shared_ptr<Range> ents_ptr,
221 std::vector<boost::shared_ptr<ScalingMethod>> smv,
222 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
227 std::vector<boost::shared_ptr<ScalingMethod>> smv,
228 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
234template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
236 :
OpFluxRhsImpl<NaturalMeshsetType<UNKNOWNSET>, 3, FIELD_DIM, A, I,
240 std::vector<boost::shared_ptr<ScalingMethod>> smv,
241 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
247template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
250 FIELD_DIM, A, I, OpBase> {
253 std::vector<boost::shared_ptr<ScalingMethod>> smv,
254 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
262template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
265 :
OpFluxRhsImpl<NaturalMeshsetTypeVectorScaling<UNKNOWNSET>, 1, FIELD_DIM,
271 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
277template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
281 I>::template
OpSource<1, FIELD_DIM> {
288 boost::shared_ptr<Range> ents_ptr,
290 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
296 ScalarFun user_fun = [](
double,
double,
double) {
return 1; });
305template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
309 boost::shared_ptr<Range> ents_ptr,
310 std::vector<boost::shared_ptr<ScalingMethod>> smv,
314 this->tForce(
i) = t_force(
i);
315 this->entsPtr = ents_ptr;
318template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
321 std::vector<boost::shared_ptr<ScalingMethod>> smv,
327 tScaledForce(
i) = tForce(
i) * userFun(x, y, z);
332 vecOfTimeScalingMethods(smv), userFun(user_fun) {
333 this->timeScalingFun = [
this](
const double t) {
335 for (
auto &o : vecOfTimeScalingMethods) {
341 static_assert(
FIELD_DIM > 1,
"Not implemented for scalar field");
344template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
348 std::vector<boost::shared_ptr<ScalingMethod>> smv,
355template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
361 auto cubit_meshset_ptr =
366 CHKERR cubit_meshset_ptr->getBcDataStructure(bc_data);
368 this->tForce(0) = bc_data.
data.value3;
370 this->tForce(1) = bc_data.
data.value4;
372 this->tForce(2) = bc_data.
data.value5;
375 this->tForce(
i) *= bc_data.
data.value1;
377 this->entsPtr = boost::make_shared<Range>();
378 CHKERR m_field.
get_moab().get_entities_by_handle(cubit_meshset_ptr->meshset,
379 *(this->entsPtr),
true);
384template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
388 std::vector<boost::shared_ptr<ScalingMethod>> smv,
395template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
401 auto cubit_meshset_ptr =
405 std::vector<double> block_data;
406 CHKERR cubit_meshset_ptr->getAttributes(block_data);
410 <<
"BLOCKSET is expected to have " <<
FIELD_DIM
411 <<
" attributes but has size " << block_data.size();
414 "Size of attribute in BLOCKSET is too small");
418 for (
unsigned int ii = 0; ii !=
FIELD_DIM; ++ii) {
419 this->tForce(ii) = block_data[ii];
423 <<
"Flux blockset " << cubit_meshset_ptr->getName();
425 <<
"Number of attributes " << block_data.size();
427 this->entsPtr = boost::make_shared<Range>();
428 CHKERR m_field.
get_moab().get_entities_by_handle(cubit_meshset_ptr->meshset,
429 *(this->entsPtr),
true);
432 <<
"tForce vector initialised: " << this->tForce;
434 <<
"Number of elements " << this->entsPtr->size();
439template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
443 std::vector<boost::shared_ptr<ScalingMethod>> smv,
450template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
453 std::vector<boost::shared_ptr<ScalingMethod>> smv,
458template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
465 auto t_normal = Parent::OpSource::getFTensor1NormalsAtGaussPts();
466 auto t_w = Parent::OpSource::getFTensor0IntegrationWeight();
471 for (
int gg = 0; gg != Parent::OpSource::nbIntegrationPts; gg++) {
472 const double alpha = t_w * this->surfacePressure;
474 getFTensor1FromArray<FIELD_DIM, FIELD_DIM>(Parent::OpSource::locF);
476 for (; rr != Parent::OpSource::nbRows /
FIELD_DIM; ++rr) {
477 t_nf(
i) += alpha * t_row_base * t_normal(
i);
481 for (; rr < Parent::OpSource::nbRowBaseFunctions; ++rr)
489 Parent::OpSource::getNumeredEntFiniteElementPtr()->getEntType();
490 if (fe_type == MBTRI) {
491 Parent::OpSource::locF /= 2;
497template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
503 auto cubit_meshset_ptr =
508 CHKERR cubit_meshset_ptr->getBcDataStructure(pressure_data);
509 this->surfacePressure = pressure_data.
data.value1;
511 this->entsPtr = boost::make_shared<Range>();
512 CHKERR m_field.
get_moab().get_entities_by_handle(cubit_meshset_ptr->meshset,
513 *(this->entsPtr),
true);
515 <<
"Pressure blockset from PRESSURESET ms_id = " << ms_id;
517 <<
"Number of elements " << this->entsPtr->size();
521template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
526 std::vector<boost::shared_ptr<ScalingMethod>> smv,
532template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
538 auto cubit_meshset_ptr =
542 std::vector<double> block_data;
543 CHKERR cubit_meshset_ptr->getAttributes(block_data);
546 <<
"BLOCKSET is expected to have " <<
FIELD_DIM
547 <<
" attributes but has size " << block_data.size();
548 if (block_data.size() != 1) {
550 "Size of attribute in BLOCKSET is too small");
552 this->surfacePressure = block_data[0];
555 <<
"Pressure blockset " << cubit_meshset_ptr->getName();
557 this->entsPtr = boost::make_shared<Range>();
558 CHKERR m_field.
get_moab().get_entities_by_handle(cubit_meshset_ptr->meshset,
559 *(this->entsPtr),
true);
561 <<
"Number of elements " << this->entsPtr->size();
566template <AssemblyType A, IntegrationType I,
typename OpBase>
568 OpFluxRhsImpl(
const std::string
field_name,
const double value,
569 boost::shared_ptr<Range> ents_ptr,
570 std::vector<boost::shared_ptr<ScalingMethod>> smv,
573 this->scalarValue = value;
574 this->entsPtr = ents_ptr;
577template <AssemblyType A, IntegrationType I,
typename OpBase>
580 std::vector<boost::shared_ptr<ScalingMethod>> smv,
585 return scalarValue * userFun(x, y, z);
589 vecOfTimeScalingMethods(smv), userFun(user_fun) {
591 this->timeScalingFun = [
this](
const double t) {
593 for (
auto &o : vecOfTimeScalingMethods) {
600template <AssemblyType A, IntegrationType I,
typename OpBase>
603 std::vector<boost::shared_ptr<ScalingMethod>> smv,
ScalarFun user_fun)
609template <AssemblyType A, IntegrationType I,
typename OpBase>
615 auto cubit_meshset_ptr =
618 std::vector<double> block_data;
619 CHKERR cubit_meshset_ptr->getAttributes(block_data);
620 if (block_data.size() != 1) {
622 "Expected that block has one attribute, e.g. heat flux value");
624 this->scalarValue = block_data[0];
626 this->entsPtr = boost::make_shared<Range>();
627 CHKERR m_field.
get_moab().get_entities_by_handle(cubit_meshset_ptr->meshset,
628 *(this->entsPtr),
true);
631 <<
"Flux blockset " << cubit_meshset_ptr->getName();
633 <<
"Scalar attribute value: " << this->scalarValue;
638template <AssemblyType A, IntegrationType I,
typename OpBase>
642 std::vector<boost::shared_ptr<ScalingMethod>> smv,
649template <AssemblyType A, IntegrationType I,
typename OpBase>
655 auto cubit_meshset_ptr =
659 CHKERR cubit_meshset_ptr->getBcDataStructure(heat_flux);
660 this->scalarValue = heat_flux.
data.value1;
662 this->entsPtr = boost::make_shared<Range>();
663 CHKERR m_field.
get_moab().get_entities_by_handle(cubit_meshset_ptr->meshset,
664 *(this->entsPtr),
true);
669template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
671 OpFluxRhsImpl(
const std::string
field_name,
const double value,
672 boost::shared_ptr<Range> ents_ptr,
673 std::vector<boost::shared_ptr<ScalingMethod>> smv,
676 this->scalarValue = value;
677 this->entsPtr = ents_ptr;
680template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
683 std::vector<boost::shared_ptr<ScalingMethod>> smv,
688 return scalarValue * userFun(x, y, z);
692 vecOfTimeScalingMethods(smv), userFun(user_fun) {
694 this->timeScalingFun = [
this](
const double t) {
696 for (
auto &o : vecOfTimeScalingMethods) {
703template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
707 std::vector<boost::shared_ptr<ScalingMethod>> smv,
714template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
720 auto cubit_meshset_ptr =
723 std::vector<double> attr_vec;
724 cubit_meshset_ptr->getAttributes(attr_vec);
725 if (attr_vec.size() != 1)
727 this->scalarValue = attr_vec[0];
729 this->entsPtr = boost::make_shared<Range>();
730 CHKERR m_field.
get_moab().get_entities_by_handle(cubit_meshset_ptr->meshset,
731 *(this->entsPtr),
true);
736template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
740 std::vector<boost::shared_ptr<ScalingMethod>> smv,
747template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
753 auto cubit_meshset_ptr =
758 CHKERR cubit_meshset_ptr->getBcDataStructure(mydata);
759 this->scalarValue = mydata.
data.value1;
761 this->entsPtr = boost::make_shared<Range>();
762 CHKERR m_field.
get_moab().get_entities_by_handle(cubit_meshset_ptr->meshset,
763 *(this->entsPtr),
true);
778template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
784 boost::shared_ptr<Range> ents_ptr,
789 this->tForce(
i) = t_force(
i);
790 this->entsPtr = ents_ptr;
793template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
803 auto t = this->getFEMethod()->ts_t;
804 for (
auto &o : vecOfTimeVectorScalingMethods) {
805 auto vec = o->getVector(
t);
806 this->tForce(
i) = vec(
i) * userFun(x, y, z);
810 vecOfTimeVectorScalingMethods(smv), userFun(user_fun) {
812 static_assert(
FIELD_DIM > 1,
"Not implemented for scalar field");
815template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
816OpFluxRhsImpl<NaturalMeshsetTypeVectorScaling<BLOCKSET>, 1,
FIELD_DIM,
A,
I,
827template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
833 auto cubit_meshset_ptr =
837 std::vector<double> block_data;
838 CHKERR cubit_meshset_ptr->getAttributes(block_data);
841 <<
"BLOCKSET is expected to have " <<
FIELD_DIM
842 <<
" attributes but has size " << block_data.size();
846 "Size of attribute in BLOCKSET is too small");
850 for (
unsigned int ii = 0; ii !=
FIELD_DIM; ++ii) {
851 this->tForce(ii) = block_data[ii];
855 <<
"Flux blockset " << cubit_meshset_ptr->getName();
857 <<
"Number of attributes " << block_data.size();
859 <<
"tForce vector initialised: " << this->tForce;
861 this->entsPtr = boost::make_shared<Range>();
862 CHKERR m_field.
get_moab().get_entities_by_handle(cubit_meshset_ptr->meshset,
863 *(this->entsPtr),
true);
882 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
884 std::vector<boost::shared_ptr<ScalingMethod>> smv, std::string block_name,
894 auto add_op = [&](
auto &&meshset_vec_ptr) {
895 for (
auto m : meshset_vec_ptr) {
897 auto op =
new OP(m_field,
m->getMeshsetId(),
field_name, smv, user_fun);
898 op->feScalingFun = fe_fun;
899 pipeline.push_back(op);
920 (boost::format(
"%s(.*)") % block_name).str()
929 "Handling of bc type not implemented");
937 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
939 std::vector<boost::shared_ptr<ScalingMethod>> smv, std::string block_name,
944 pipeline, m_field,
field_name, smv, block_name, user_fun,
945 [](
const FEMethod *) {
return 1; }, sev);
949 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
951 std::vector<boost::shared_ptr<ScalingMethod>> smv, std::string block_name,
954 pipeline, m_field,
field_name, smv, block_name,
955 [](
double,
double,
double) {
return 1; }, sev);
973 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
975 std::vector<boost::shared_ptr<ScalingMethod>> smv, std::string block_name,
986 auto add_opv = [&](
auto &&meshset_vec_ptr) {
987 for (
auto m : meshset_vec_ptr) {
990 new OPV(m_field,
m->getMeshsetId(),
field_name, smv, user_fun));
1002 (boost::format(
"%s(.*)") % block_name).str()
1011 "Handling of bc type not implemented");
1018 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
1020 std::vector<boost::shared_ptr<ScalingMethod>> smv, std::string block_name,
1023 pipeline, m_field,
field_name, smv, block_name,
1024 [](
double,
double,
double) {
return 1; }, sev);
1042 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
1044 std::vector<boost::shared_ptr<ScalingMethod>> smv,
1056 auto add_opv = [&](
auto &&meshset_vec_ptr) {
1057 for (
auto m : meshset_vec_ptr) {
1060 new OPV(m_field,
m->getMeshsetId(),
field_name, vsmv, user_fun);
1061 op->feScalingFun = fe_fun;
1062 pipeline.push_back(op);
1074 (boost::format(
"%s(.*)") % block_name).str()
1083 "Handling of bc type not implemented");
1091 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
1093 std::vector<boost::shared_ptr<ScalingMethod>> smv,
1099 pipeline, m_field,
field_name, smv, vsmv, block_name, user_fun,
1100 [](
const FEMethod *) {
return 1; }, sev);
1104 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
1106 std::vector<boost::shared_ptr<ScalingMethod>> smv,
1108 std::string block_name,
Sev sev) {
1110 pipeline, m_field,
field_name, smv, vsmv, block_name,
1111 [](
double,
double,
double) {
return 1; }, sev);
#define MOFEM_TAG_AND_LOG(channel, severity, tag)
Tag and log in channel.
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
CubitBC
Types of sets and boundary conditions.
@ MOFEM_DATA_INCONSISTENCY
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
#define MOFEM_LOG(channel, severity)
Log.
SeverityLevel
Severity levels.
#define MOFEM_LOG_CHANNEL(channel)
Set and reset channel.
MoFEMErrorCode getCubitMeshsetPtr(const int ms_id, const CubitBCType cubit_bc_type, const CubitMeshSets **cubit_meshset_ptr) const
get cubit meshset
FTensor::Index< 'i', SPACE_DIM > i
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
implementation of Data Operators for Forces and Sources
std::vector< boost::shared_ptr< TimeScaleVector< FIELD_DIM > > > VecOfTimeVectorScalingMethods
Vector of time vector scaling methods.
boost::function< double(const FEMethod *fe_ptr)> FEFun
Lambda function used to scale with time.
std::vector< boost::shared_ptr< ScalingMethod > > VecOfTimeScalingMethods
Vector of time scaling methods.
constexpr IntegrationType I
constexpr double t
plate stiffness
constexpr auto field_name
FTensor::Index< 'm', 3 > m
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod > > smv, std::string block_name, Sev sev)
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod > > smv, std::string block_name, ScalarFun user_fun, Sev sev)
AddFluxToRhsPipelineImpl()=delete
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod > > smv, std::vector< boost::shared_ptr< TimeScaleVector< FIELD_DIM > > > vsmv, std::string block_name, Sev sev)
AddFluxToRhsPipelineImpl()=delete
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod > > smv, std::vector< boost::shared_ptr< TimeScaleVector< FIELD_DIM > > > vsmv, std::string block_name, ScalarFun user_fun, Sev sev)
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod > > smv, std::vector< boost::shared_ptr< TimeScaleVector< FIELD_DIM > > > vsmv, std::string block_name, ScalarFun user_fun, FEFun fe_fun, Sev sev)
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod > > smv, std::string block_name, ScalarFun user_fun, Sev sev)
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod > > smv, std::string block_name, ScalarFun user_fun, FEFun fe_fun, Sev sev)
AddFluxToRhsPipelineImpl()=delete
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod > > smv, std::string block_name, Sev sev)
virtual moab::Interface & get_moab()=0
Deprecated interface functions.
Data on single entity (This is passed as argument to DataOperator::doWork)
FTensor::Tensor0< FTensor::PackPtr< double *, 1 > > getFTensor0N(const FieldApproximationBase base)
Get base function as Tensor0.
Structure for user loop methods on finite elements.
Definition of the force bc data structure.
Definition of the heat flux bc data structure.
Interface for managing meshsets containing materials and boundary conditions.
Natural boundary conditions.
Type generating natural b.c. specialisations for meshsets.
FTensor::Tensor1< double, FIELD_DIM > tForce
typename FormsIntegrators< OpBase >::template Assembly< A >::template LinearForm< I >::template OpSource< 1, FIELD_DIM > OpSource
VecOfTimeVectorScalingMethods< FIELD_DIM > vecOfTimeVectorScalingMethods
typename FormsIntegrators< OpBase >::template Assembly< A >::template LinearForm< I >::template OpSource< 1, 1 > OpSource
MoFEMErrorCode getMeshsetData(MoFEM::Interface &m_field, int ms_id)
VecOfTimeScalingMethods vecOfTimeScalingMethods
Base class for OpFluxRhsImpl<NaturalMeshsetType<T>, 1, FIELD_DIM, A, I, OpBase>
VecOfTimeScalingMethods vecOfTimeScalingMethods
FTensor::Tensor1< double, FIELD_DIM > tForce
FTensor::Tensor1< double, FIELD_DIM > tScaledForce
typename FormsIntegrators< OpBase >::template Assembly< A >::template LinearForm< I >::template OpSource< 1, FIELD_DIM > OpSource
VecOfTimeScalingMethods vecOfTimeScalingMethods
typename FormsIntegrators< OpBase >::template Assembly< A >::template LinearForm< I >::template OpNormalMixVecTimesScalar< FIELD_DIM > OpSource
Definition of the pressure bc data structure.
Definition of the temperature bc data structure.
Force scale operator for reading four columns (time and vector)
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface reference to pointer of interface.