|
| v0.14.0
|
Go to the documentation of this file.
11 #ifndef _ESSENTIAL_MPCS_DATA_HPP_
12 #define _ESSENTIAL_MPCS_DATA_HPP_
49 bool is_spatial_positions =
false);
56 const char *file_name,
67 vector<std::string> field_names);
71 boost::weak_ptr<FEMethod>
fePtr;
82 boost::shared_ptr<FEMethod> fe_ptr,
89 boost::weak_ptr<FEMethod>
fePtr;
101 boost::shared_ptr<FEMethod> fe_ptr,
117 template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
120 I>::template
OpSource<1, FIELD_DIM> {
126 boost::shared_ptr<MPCsType> bc_data,
127 boost::shared_ptr<Range> ents_ptr,
128 std::vector<boost::shared_ptr<ScalingMethod>> smv);
133 return [
this](
double x,
double y,
double z) {
return tVal; };
141 template <
int FIELD_DIM, AssemblyType A, IntegrationType I,
typename OpBase>
144 boost::shared_ptr<MPCsType> bc_data,
145 boost::shared_ptr<Range> ents_ptr,
146 std::vector<boost::shared_ptr<ScalingMethod>> smv)
148 vecOfTimeScalingMethods(smv) {
156 I>::template
OpMass<BASE_DIM, FIELD_DIM> {
162 boost::shared_ptr<Range> ents_ptr);
169 boost::shared_ptr<Range>
189 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
190 const std::string problem_name, std::string
field_name,
191 boost::shared_ptr<MatrixDouble> field_mat_ptr,
192 std::vector<boost::shared_ptr<ScalingMethod>> smv
198 template LinearForm<I>::template OpEssentialRhs<
203 A>::template LinearForm<I>::template OpBaseTimesVector<
BASE_DIM,
206 auto add_op = [&](
auto &bcs) {
208 for (
auto &
m : bcs) {
209 if (
auto bc =
m.second->mpcPtr) {
210 auto &bc_id =
m.first;
212 (boost::format(
"%s_%s_(.*)") % problem_name %
214 if (std::regex_match(bc_id, std::regex(regex_str))) {
220 pipeline.push_back(
new OpInternal(
222 [](
double,
double,
double) constexpr {
return 1.; },
223 m.second->getBcEntsPtr()));
248 "Not implemented for MPCs");
267 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
268 const std::string problem_name, std::string
field_name
306 #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