94 {
95
96 auto ¶m_vec_by_range = physical_equations_ptr->paramVecByRange;
97
98 auto r = boost::make_shared<Range>();
99 for (auto &p : param_vec_by_range) {
101 }
102 MOFEM_LOG(
"WORLD", Sev::inform) <<
"HuHu number of entities " <<
r->size();
103
104 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
105
108 auto space = field_structure->getSpace();
109
110 using DomainEle =
typename parent_of<DomainEleOp>::type;
111 auto op_this = new OpLoopThis<DomainEle>(m_field, fe_name, r, sev);
112 pip.push_back(op_this);
113 auto this_fe_ptr = op_this->getThisFEPtr();
114 auto &this_pip = op_this->getOpPtrVector();
115 this_fe_ptr->getRuleHook = [](int order_row, int order_col,
116 int order_data) {
117 return 2 * (order_data - 1);
118 };
119
120 auto base_mass = boost::make_shared<MatrixDouble>();
121 auto data_l2 = boost::make_shared<EntitiesFieldData>(MBENTITYSET);
122 auto jac_ptr = boost::make_shared<MatrixDouble>();
123 auto det_ptr = boost::make_shared<VectorDouble>();
124 auto inv_jac_ptr = boost::make_shared<MatrixDouble>();
125
126
127 this_pip.push_back(new OpCalculateHOJac<DIM>(jac_ptr));
128
129 this_pip.push_back(new OpInvertMatrix<DIM>(jac_ptr, det_ptr, inv_jac_ptr));
130
131 this_pip.push_back(
132 new OpBaseDerivativesMass<1>(base_mass, data_l2, base,
L2));
133
134 this_pip.push_back(new OpBaseDerivativesNext<1>(
135 BaseDerivatives::SecondDerivative, base_mass, data_l2, base, space));
136
137 switch (space) {
139
140 this_pip.push_back(
141 new OpSetHOInvJacToScalarBases<DIM, 1>(space, inv_jac_ptr));
142
143 this_pip.push_back(
144 new OpSetHOInvJacToScalarBases<DIM, 2>(space, inv_jac_ptr));
145 break;
146 default:
148 <<
"Unsupported space: " << space <<
" for field: " <<
field_name;
150 }
151
152 auto m_grad =
153 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr("grad");
154 this_pip.push_back(
155 new OpCalculateVectorFieldGradient<DIM, DIM>(
field_name, m_grad));
156
157 return op_this;
158 }
ElementsAndOps< SPACE_DIM >::DomainEle DomainEle
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
@ L2
field with C-1 continuity
@ MOFEM_OPERATION_UNSUCCESSFUL
virtual const Field * get_field_structure(const std::string &name, enum MoFEMTypes bh=MF_EXIST) const =0
get field structure
#define MOFEM_LOG(channel, severity)
Log.
constexpr auto field_name
FieldApproximationBase getApproxBase() const
Get approximation basis type.