287 {
289
290 using OP_MASS = typename FormsIntegrators<OpBase>::template Assembly<
292
293 auto add_op = [&](auto &&meshset_vec_ptr) {
295 for (
auto m : meshset_vec_ptr) {
296 std::vector<double> block_data;
297 m->getAttributes(block_data);
298 if (block_data.size() != 2) {
300 "Expected two parameters");
301 }
302 double beta = block_data[1];
303 auto ents_ptr = boost::make_shared<Range>();
305 *(ents_ptr), true);
306
308 <<
"Add " << *
m <<
" penalty " << beta;
309
310 auto op_mass = new OP_MASS(
312 [beta](double, double, double) { return beta; }, ents_ptr);
313 op_mass->feScalingFun = fe_fun;
314 pipeline.push_back(op_mass);
315 }
317 };
318
320
321 m_field.
getInterface<MeshsetsManager>()->getCubitMeshsetPtr(std::regex(
322
323 (boost::format("%s(.*)") % block_name).str()
324
325 ))
326
327 );
328
330
332 }
#define MOFEM_TAG_AND_LOG(channel, severity, tag)
Tag and log in channel.
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
@ 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(channel)
Set and reset channel.
constexpr auto field_name
FormsIntegrators< DomainEleOp >::Assembly< PETSC >::BiLinearForm< GAUSS >::OpMass< 1, SPACE_DIM > OpMass
[Only used with Hooke equation (linear material model)]
FTensor::Index< 'm', 3 > m
virtual moab::Interface & get_moab()=0
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface reference to pointer of interface.