601 {
603
604 using OP_MASS = typename FormsIntegrators<OpBase>::template Assembly<
606
607 auto add_op = [&](auto &&meshset_vec_ptr) {
609 for (
auto m : meshset_vec_ptr) {
610 std::vector<double> block_data;
611 m->getAttributes(block_data);
612 if (block_data.size() != 2) {
614 "Expected two parameters");
615 }
616 double beta =
617 block_data[1];
618 auto ents_ptr = boost::make_shared<Range>();
620 *(ents_ptr), true);
621
623 <<
"Add " << *
m <<
" penalty " << beta;
624
625 pipeline.push_back(new OP_MASS(
627 [beta](double, double, double) { return -beta; }, ents_ptr));
628 }
630 };
631
633
634 m_field.
getInterface<MeshsetsManager>()->getCubitMeshsetPtr(std::regex(
635
636 (boost::format("%s(.*)") % block_name).str()
637
638 ))
639
640 );
641
643
645 }
#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.