|
| v0.14.0
|
Go to the documentation of this file.
11 #ifndef _ESSENTIAL_MPCS_DATA_HPP_
12 #define _ESSENTIAL_MPCS_DATA_HPP_
48 bool is_spatial_positions =
false);
57 const char *file_name,
68 vector<std::string> field_names);
72 boost::weak_ptr<FEMethod>
fePtr;
83 boost::shared_ptr<FEMethod> fe_ptr,
92 boost::weak_ptr<FEMethod>
fePtr;
104 boost::shared_ptr<FEMethod> fe_ptr,
122 template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
125 I>::template
OpSource<1, FIELD_DIM> {
131 boost::shared_ptr<MPCsType> bc_data,
132 boost::shared_ptr<Range> ents_ptr,
133 std::vector<boost::shared_ptr<ScalingMethod>> smv);
138 return [
this](
double x,
double y,
double z) {
return tVal; };
146 template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
149 boost::shared_ptr<MPCsType> bc_data,
150 boost::shared_ptr<Range> ents_ptr,
151 std::vector<boost::shared_ptr<ScalingMethod>> smv)
153 vecOfTimeScalingMethods(smv) {
161 I>::template
OpMass<BASE_DIM, FIELD_DIM> {
167 boost::shared_ptr<Range> ents_ptr);
174 boost::shared_ptr<Range>
194 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
195 const std::string problem_name, std::string
field_name,
196 boost::shared_ptr<MatrixDouble> field_mat_ptr,
197 std::vector<boost::shared_ptr<ScalingMethod>> smv
203 template LinearForm<I>::template OpEssentialRhs<
208 A>::template LinearForm<I>::template OpBaseTimesVector<
BASE_DIM,
211 auto add_op = [&](
auto &bcs) {
213 for (
auto &
m : bcs) {
214 if (
auto bc =
m.second->mpcPtr) {
215 auto &bc_id =
m.first;
217 (boost::format(
"%s_%s_(.*)") % problem_name %
219 if (std::regex_match(bc_id, std::regex(regex_str))) {
225 pipeline.push_back(
new OpInternal(
227 [](
double,
double,
double) constexpr {
return 1.; },
228 m.second->getBcEntsPtr()));
253 "Not implemented for MPCs");
272 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
273 const std::string problem_name, std::string
field_name
311 #endif //_ESSENTIAL_MPCS_DATA_HPP_
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
InitConditionsMap conditionsMap
MoFEM::Interface & mField
#define MOFEM_LOG_CHANNEL(channel)
Set and reset channel.
Essential boundary conditions.
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
VecOfTimeScalingMethods vecOfTimeScalingMethods
typename FormsIntegrators< OpBase >::template Assembly< A >::template BiLinearForm< I >::template OpMass< BASE_DIM, FIELD_DIM > OpMass
boost::weak_ptr< FEMethod > fePtr
Definition of the displacement bc data structure.
Deprecated interface functions.
constexpr IntegrationType I
DeprecatedCoreInterface Interface
FTensor::Tensor1< double, FIELD_DIM > tVal
boost::weak_ptr< FEMethod > fePtr
implementation of Data Operators for Forces and Sources
static MoFEMErrorCode add(MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, const std::string problem_name, std::string field_name)
std::vector< unsigned char > bcMasterMarkers
Enforce essential constrains on lhs.
Function (factory) for setting operators for rhs pipeline.
Class (Function) to enforce essential constrains on the left hand side diagonal.
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)
MoFEM::Interface & mField
MoFEMErrorCode setMPCParentAdjacency()
boost::weak_ptr< FEMethod > fePtr
Class (Function) to enforce essential constrains on the right hand side diagonal.
constexpr auto field_name
VectorFun< FIELD_DIM > initConstraintFunction(boost::shared_ptr< MPCsType > bc_data)
typename FormsIntegrators< OpBase >::template Assembly< A >::template LinearForm< I >::template OpSource< 1, FIELD_DIM > OpSource
std::vector< unsigned char > bcSlaveMarkers
#define MOFEM_TAG_AND_LOG(channel, severity, tag)
Tag and log in channel.
Enforce essential constrains on rhs.
SmartPetscObj< Vec > vRhs
std::vector< boost::shared_ptr< ScalingMethod > > VecOfTimeScalingMethods
Vector of time scaling methods.
Set indices on entities on finite element.
SmartPetscObj< Mat > vLhs
std::map< EntityHandle, VectorDouble > InitConditionsMap
FTensor::Index< 'm', 3 > m
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Class (Function) to enforce essential constrains.
#define MoFEMFunctionReturn(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 ...
MoFEM::Interface & mField