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
FTensor::Index< 'm', 3 > m
virtual moab::Interface & get_moab()=0
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface reference to pointer of interface.