280    {
  282 
  283    using OP_MASS = typename FormsIntegrators<OpBase>::template Assembly<
  285 
  286    auto add_op = [&](auto &&meshset_vec_ptr) {
  288      for (
auto m : meshset_vec_ptr) {
 
  289        std::vector<double> block_data;
  290        m->getAttributes(block_data);
 
  291        if (block_data.size() != 2) {
  293                  "Expected two parameters");
  294        }
  295        double beta =
  296            block_data[1]; 
  297        auto ents_ptr = boost::make_shared<Range>();
  299                                                         *(ents_ptr), true);
  300 
  302            << 
"Add " << *
m << 
" penalty " << beta;
 
  303 
  304        pipeline.push_back(new OP_MASS(
  306            [beta](double, double, double) { return -beta; }, ents_ptr));
  307      }
  309    };
  310 
  312 
  313        m_field.
getInterface<MeshsetsManager>()->getCubitMeshsetPtr(std::regex(
 
  314 
  315            (boost::format("%s(.*)") % block_name).str()
  316 
  317                ))
  318 
  319    );
  320 
  322 
  324  }
#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.