297 {
299
300 using OP_MASS = typename FormsIntegrators<OpBase>::template Assembly<
302
303 auto add_op = [&](auto &&meshset_vec_ptr) {
305 auto *json_config = m_field.
getInterface<JsonConfigManager>();
306 for (
auto m : meshset_vec_ptr) {
307 const auto params_from_json =
308 json_config->getParamsFromBlockset(block_name,
m->getMeshsetId());
309 double beta = 0;
310 if (!params_from_json.empty()) {
311 beta = params_from_json.at("beta");
312 } else {
313 std::vector<double> block_data;
314 m->getAttributes(block_data);
315 if (block_data.size() != 2) {
317 "Expected two parameters");
318 }
319 beta = block_data[1];
320 }
321 auto ents_ptr = boost::make_shared<Range>();
323 *(ents_ptr), true);
324
326 <<
"Add " << *
m <<
" penalty " << beta;
327
328 auto op_mass = new OP_MASS(
330 [beta](double, double, double) { return beta; }, ents_ptr);
331 op_mass->feScalingFun = fe_fun;
332 pipeline.push_back(op_mass);
333 }
335 };
336
338
339 m_field.
getInterface<MeshsetsManager>()->getCubitMeshsetPtr(std::regex(
340
341 (boost::format("%s(.*)") % block_name).str()
342
343 ))
344
345 );
346
348
350 }