186 moab::Interface &moab = m_field.
get_moab();
189 ParallelComm *pcomm = ParallelComm::get_pcomm(&moab,
MYPCOMM_INDEX);
192 "MOAB communicator not set");
194 auto all_to_all = [&](
Range &verts, std::vector<Range> &recv_verts) {
198 ParallelComm::Buffer buff_send(ParallelComm::INITIAL_BUFF_SIZE);
199 buff_send.reset_ptr(
sizeof(
int));
200 CHKERR pcomm->pack_buffer(verts,
false,
true,
false, -1, &buff_send);
201 buff_send.set_stored_size();
202 buff_size = buff_send.buff_ptr - buff_send.mem_ptr;
204 std::vector<int> recv_buff_sizes(pcomm->size(), 0);
206 MPI_Allgather(&buff_size, 1, MPI_INT, recv_buff_sizes.data(), 1,
209 if (success != MPI_SUCCESS)
211 "MPI_Allgather failed");
213 std::vector<int> recv_buff_displs(
214 recv_buff_sizes.size(),
216 int recv_buff_size = 0;
217 for (std::size_t proc = 0; proc != recv_buff_sizes.size(); ++proc) {
218 recv_buff_displs[proc] = recv_buff_size;
219 recv_buff_size += recv_buff_sizes[proc];
222 std::vector<unsigned char> recv_buff(recv_buff_size);
223 success = MPI_Allgatherv(
224 buff_send.mem_ptr, buff_size, MPI_UNSIGNED_CHAR, recv_buff.data(),
225 recv_buff_sizes.data(), recv_buff_displs.data(), MPI_UNSIGNED_CHAR,
227 if (success != MPI_SUCCESS)
229 "MPI_Allgatherv failed");
232 recv_verts.resize(pcomm->size());
233 for (
int from_proc = 0; from_proc < pcomm->size(); ++from_proc) {
234 if (from_proc == pcomm->rank())
236 if (recv_buff_sizes[from_proc] <
static_cast<int>(
sizeof(
int)))
238 "Received meshset buffer is too small");
240 std::vector<std::vector<EntityHandle>> L1hloc, L1hrem;
241 std::vector<std::vector<int>> L1p;
242 std::vector<EntityHandle> L2hloc, L2hrem, recv_ents;
243 std::vector<unsigned int> L2p;
245 recv_buff.data() + recv_buff_displs[from_proc] +
sizeof(int);
246 CHKERR pcomm->unpack_buffer(recv_ptr,
false, from_proc, -1, L1hloc,
247 L1hrem, L1p, L2hloc, L2hrem, L2p, recv_ents);
248 recv_verts[from_proc].insert_list(recv_ents.begin(), recv_ents.end());
254 const double coords[] = {0, 0, 0};
256 auto set_tags_dummy_node = [&](
const EntityHandle dummy_node,
259 std::vector<Tag> tag_handles;
260 CHKERR moab.tag_get_tags_on_entity(meshset, tag_handles);
261 for (
auto th : tag_handles) {
264 CHKERR moab.tag_get_by_ptr(
th, &meshset, 1, (
const void **)data,
267 CHKERR moab.tag_set_by_ptr(
th, &dummy_node, 1, data, &tag_size);
273 std::vector<const CubitMeshSets *> vec_ptr;
276 vec_ptr.push_back(&
m);
281 std::vector<EntityHandle> vec_meshsets;
282 vec_meshsets.reserve(vec_ptr.size());
283 for (
auto m_ptr : vec_ptr) {
284 vec_meshsets.push_back(m_ptr->getMeshset());
289 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose)
290 <<
"broadcast NODESET " << vec_meshsets.size();
293 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose)
294 <<
"broadcast SIDESET " << vec_meshsets.size();
297 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose)
298 <<
"broadcast BLOCKSET " << vec_meshsets.size();
301 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose)
302 <<
"broadcast Unknown " << vec_meshsets.size();
306 std::vector<EntityHandle> dummy_nodes(vec_meshsets.size(), 0);
308 for (
auto m : vec_meshsets) {
309 CHKERR moab.create_vertex(coords, dummy_nodes[
i]);
310 CHKERR set_tags_dummy_node(dummy_nodes[
i],
m);
313 r_dummy_nodes.insert_list(dummy_nodes.begin(), dummy_nodes.end());
315 std::vector<Range> recv_dummy_nodes;
316 CHKERR all_to_all(r_dummy_nodes, recv_dummy_nodes);
318 for (
int from_proc = 0; from_proc < pcomm->size(); ++from_proc) {
319 if (from_proc != pcomm->rank()) {
320 for (
auto dummy_node : recv_dummy_nodes[from_proc]) {
326 .find(boost::make_tuple(
332 CHKERR moab.create_meshset(MESHSET_SET,
m);
333 CHKERR set_tags_dummy_node(
m, dummy_node);
338 MOFEM_LOG(
"MeshsetMngSync", Sev::warning)
339 <<
"broadcasted vertex " << dummy_node <<
" has negative id";
343 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose)
344 <<
"broadcast send from " << from_proc;
346 CHKERR moab.delete_entities(recv_dummy_nodes[from_proc]);
349 CHKERR moab.delete_entities(r_dummy_nodes);
959 bool clean_file_options) {
962 std::ifstream ini_file(file_name.c_str(), std::ifstream::in);
963 po::variables_map vm;
964 if (clean_file_options) {
966 boost::shared_ptr<boost::program_options::options_description>(
967 new po::options_description());
970 auto add_block_attributes = [&](
auto prefix,
auto &block_lists,
auto &it) {
973 (prefix +
".number_of_attributes").c_str(),
974 po::value<int>(&block_lists[it->getMeshsetId()].numberOfAttributes)
976 "Number of blockset attributes")(
977 (prefix +
".user_array").c_str(), po::value<string>(),
978 "Add block attributes as comma separated list");
979 for (
int ii = 1; ii <= 10; ii++) {
980 std::string surfix =
".user" + boost::lexical_cast<std::string>(ii);
982 (prefix + surfix).c_str(),
983 po::value<double>(&block_lists[it->getMeshsetId()].aTtr[ii - 1])
984 ->default_value(0.0),
985 "Add block attribute");
990 map<int, BlockData> block_lists;
992 const auto id = it->getMeshsetId();
993 block_lists[id].cubitMeshset = it->getMeshset();
995 "block_" + boost::lexical_cast<std::string>(
id);
997 (prefix +
".add").c_str(),
998 po::value<string>(&block_lists[it->getMeshsetId()].addType)
999 ->default_value(
"UNKNOWNSET"),
1001 (prefix +
".id").c_str(),
1002 po::value<int>(&block_lists[it->getMeshsetId()].iD)->default_value(-1),
1004 (prefix +
".name").c_str(),
1005 po::value<string>(&block_lists[it->getMeshsetId()].nAme)
1006 ->default_value(
""),
1007 "Name of the meshset");
1010 add_block_attributes(prefix, block_lists, it);
1018 (prefix +
".young").c_str(),
1019 po::value<double>()->default_value(-1)->notifier(
1020 [&block_lists,
id](
double v) {
1021 block_lists[id].matElastic.data.Young =
v;
1024 (prefix +
".poisson").c_str(),
1025 po::value<double>()->default_value(-2)->notifier(
1026 [&block_lists,
id](
double v) {
1027 block_lists[id].matElastic.data.Poisson =
v;
1030 (prefix +
".thermalexpansion").c_str(),
1031 po::value<double>()->default_value(-1)->notifier(
1032 [&block_lists,
id](
double v) {
1033 block_lists[id].matElastic.data.ThermalExpansion =
v;
1035 "Thermal expansion");
1046 (prefix +
".Youngp").c_str(),
1047 po::value<double>()->default_value(-1)->notifier(
1048 [&block_lists,
id](
double v) {
1049 block_lists[id].matTransIso.data.Youngp =
v;
1052 (prefix +
".Youngz").c_str(),
1053 po::value<double>()->default_value(-1)->notifier(
1054 [&block_lists,
id](
double v) {
1055 block_lists[id].matTransIso.data.Youngz =
v;
1058 (prefix +
".Poissonp").c_str(),
1059 po::value<double>()->default_value(0)->notifier(
1060 [&block_lists,
id](
double v) {
1061 block_lists[id].matTransIso.data.Poissonp =
v;
1064 (prefix +
".Poissonpz").c_str(),
1065 po::value<double>()->default_value(0)->notifier(
1066 [&block_lists,
id](
double v) {
1067 block_lists[id].matTransIso.data.Poissonpz =
v;
1070 (prefix +
".Shearzp").c_str(),
1071 po::value<double>()->default_value(-1)->notifier(
1072 [&block_lists,
id](
double v) {
1073 block_lists[id].matTransIso.data.Shearzp =
v;
1083 (prefix +
".conductivity").c_str(),
1084 po::value<double>()->default_value(-1)->notifier(
1085 [&block_lists,
id](
double v) {
1086 block_lists[id].matThermal.data.Conductivity =
v;
1089 (prefix +
".capacity").c_str(),
1090 po::value<double>()->default_value(-1)->notifier(
1091 [&block_lists,
id](
double v) {
1092 block_lists[id].matThermal.data.HeatCapacity =
v;
1104 (prefix +
".interface_alpha").c_str(),
1105 po::value<double>()->default_value(-1)->notifier(
1106 [&block_lists,
id](
double v) {
1107 block_lists[id].matInterf.data.alpha =
v;
1109 "alpha")((prefix +
".interface_beta").c_str(),
1110 po::value<double>()->default_value(-1)->notifier(
1111 [&block_lists,
id](
double v) {
1112 block_lists[id].matInterf.data.beta =
v;
1115 (prefix +
".interface_ft").c_str(),
1116 po::value<double>()->default_value(-1)->notifier(
1117 [&block_lists,
id](
double v) {
1118 block_lists[id].matInterf.data.ft =
v;
1121 (prefix +
".interface_Gf").c_str(),
1122 po::value<double>()->default_value(-1)->notifier(
1123 [&block_lists,
id](
double v) {
1124 block_lists[id].matInterf.data.Gf =
v;
1145 (prefix +
".disp_flag1").c_str(),
1146 po::value<char>()->default_value(0)->notifier(
1147 [&block_lists,
id](
char v) {
1148 block_lists[id].dispBc.data.flag1 =
v;
1151 (prefix +
".disp_flag2").c_str(),
1152 po::value<char>()->default_value(0)->notifier(
1153 [&block_lists,
id](
char v) {
1154 block_lists[id].dispBc.data.flag2 =
v;
1157 (prefix +
".disp_flag3").c_str(),
1158 po::value<char>()->default_value(0)->notifier(
1159 [&block_lists,
id](
char v) {
1160 block_lists[id].dispBc.data.flag3 =
v;
1163 (prefix +
".disp_flag4").c_str(),
1164 po::value<char>()->default_value(0)->notifier(
1165 [&block_lists,
id](
char v) {
1166 block_lists[id].dispBc.data.flag4 =
v;
1169 (prefix +
".disp_flag5").c_str(),
1170 po::value<char>()->default_value(0)->notifier(
1171 [&block_lists,
id](
char v) {
1172 block_lists[id].dispBc.data.flag5 =
v;
1175 (prefix +
".disp_flag6").c_str(),
1176 po::value<char>()->default_value(0)->notifier(
1177 [&block_lists,
id](
char v) {
1178 block_lists[id].dispBc.data.flag6 =
v;
1181 (prefix +
".disp_ux").c_str(),
1182 po::value<double>()->default_value(0)->notifier(
1183 [&block_lists,
id](
double v) {
1184 block_lists[id].dispBc.data.value1 =
v;
1187 (prefix +
".disp_uy").c_str(),
1188 po::value<double>()->default_value(0)->notifier(
1189 [&block_lists,
id](
double v) {
1190 block_lists[id].dispBc.data.value2 =
v;
1193 (prefix +
".disp_uz").c_str(),
1194 po::value<double>()->default_value(0)->notifier(
1195 [&block_lists,
id](
double v) {
1196 block_lists[id].dispBc.data.value3 =
v;
1199 (prefix +
".disp_rx").c_str(),
1200 po::value<double>()->default_value(0)->notifier(
1201 [&block_lists,
id](
double v) {
1202 block_lists[id].dispBc.data.value4 =
v;
1205 (prefix +
".disp_ry").c_str(),
1206 po::value<double>()->default_value(0)->notifier(
1207 [&block_lists,
id](
double v) {
1208 block_lists[id].dispBc.data.value5 =
v;
1211 (prefix +
".disp_rz").c_str(),
1212 po::value<double>()->default_value(0)->notifier(
1213 [&block_lists,
id](
double v) {
1214 block_lists[id].dispBc.data.value6 =
v;
1231 (prefix +
".force_magnitude").c_str(),
1232 po::value<double>()->default_value(0)->notifier(
1233 [&block_lists,
id](
double v) {
1234 block_lists[id].forceBc.data.value1 =
v;
1236 "value1")((prefix +
".moment_magnitude").c_str(),
1237 po::value<double>()->default_value(0)->notifier(
1238 [&block_lists,
id](
double v) {
1239 block_lists[id].forceBc.data.value2 =
v;
1242 (prefix +
".force_fx").c_str(),
1243 po::value<double>()->default_value(0)->notifier(
1244 [&block_lists,
id](
double v) {
1245 block_lists[id].forceBc.data.value3 =
v;
1247 "value3")((prefix +
".force_fy").c_str(),
1248 po::value<double>()->default_value(0)->notifier(
1249 [&block_lists,
id](
double v) {
1250 block_lists[id].forceBc.data.value4 =
v;
1253 (prefix +
".force_fz").c_str(),
1254 po::value<double>()->default_value(0)->notifier(
1255 [&block_lists,
id](
double v) {
1256 block_lists[id].forceBc.data.value5 =
v;
1258 "value5")((prefix +
".moment_mx").c_str(),
1259 po::value<double>()->default_value(0)->notifier(
1260 [&block_lists,
id](
double v) {
1261 block_lists[id].forceBc.data.value6 =
v;
1264 (prefix +
".moment_my").c_str(),
1265 po::value<double>()->default_value(0)->notifier(
1266 [&block_lists,
id](
double v) {
1267 block_lists[id].forceBc.data.value7 =
v;
1269 "value7")((prefix +
".moment_mz").c_str(),
1270 po::value<double>()->default_value(0)->notifier(
1271 [&block_lists,
id](
double v) {
1272 block_lists[id].forceBc.data.value8 =
v;
1293 (prefix +
".temperature_flag1").c_str(),
1294 po::value<char>()->default_value(0)->notifier(
1295 [&block_lists,
id](
char v) {
1296 block_lists[id].temperatureBc.data.flag1 =
v;
1299 (prefix +
".temperature_t").c_str(),
1300 po::value<double>()->default_value(0)->notifier(
1301 [&block_lists,
id](
double v) {
1302 block_lists[id].temperatureBc.data.value1 =
v;
1315 (prefix +
".pressure_flag2").c_str(),
1316 po::value<char>()->default_value(0)->notifier(
1317 [&block_lists,
id](
char v) {
1318 block_lists[id].pressureBc.data.flag2 =
v;
1320 "flag2")((prefix +
".pressure_magnitude").c_str(),
1321 po::value<double>()->default_value(0)->notifier(
1322 [&block_lists,
id](
double v) {
1323 block_lists[id].pressureBc.data.value1 =
v;
1339 (prefix +
".heatflux_flag1").c_str(),
1340 po::value<char>()->default_value(0)->notifier(
1341 [&block_lists,
id](
char v) {
1342 block_lists[id].heatFluxBc.data.flag1 =
v;
1344 "flag1")((prefix +
".heatflux_magnitude").c_str(),
1345 po::value<double>()->default_value(0)->notifier(
1346 [&block_lists,
id](
double v) {
1347 block_lists[id].heatFluxBc.data.value1 =
v;
1354 (prefix +
".interface_type").c_str(),
1355 po::value<char>()->default_value(0)->notifier(
1356 [&block_lists,
id](
char v) {
1357 block_lists[id].cfgBc.data.type =
v;
1363 map<int, BlockData> block_set_attributes;
1365 block_set_attributes[it->getMeshsetId()].cubitMeshset = it->getMeshset();
1366 block_set_attributes[it->getMeshsetId()].iD = it->getMeshsetId();
1367 block_set_attributes[it->getMeshsetId()].bcType =
BLOCKSET;
1368 std::string block_name = it->getName();
1370 std::remove_if(block_name.begin(), block_name.end(), ::isspace),
1372 block_set_attributes[it->getMeshsetId()].nAme = block_name;
1374 if (block_name.compare(
"NoNameSet") != 0) {
1375 std::string prefix =
"SET_ATTR_" + block_name;
1377 add_block_attributes(prefix, block_set_attributes, it);
1381 po::parsed_options parsed =
1386 auto parse_attributes_array = [&](
const std::string &option_name,
1387 const std::string &values,
1388 std::vector<double> &attributes) {
1390 std::string normalized = values;
1391 for (
auto &
c : normalized) {
1392 if (
c ==
',' ||
c ==
'[' ||
c ==
']')
1396 std::stringstream ss(normalized);
1398 while (ss >> value) {
1399 attributes.push_back(value);
1403 "Invalid value for %s: %s", option_name.c_str(),
1409 auto apply_attributes_array = [&](
const std::string &prefix,
1411 const auto option_name = prefix +
".user_array";
1412 if (vm.count(option_name)) {
1413 CHKERR parse_attributes_array(option_name, vm[option_name].as<string>(),
1415 block_data.numberOfAttributes =
static_cast<int>(block_data.aTtr.size());
1416 }
else if (block_data.numberOfAttributes > -1) {
1417 block_data.aTtr.resize(block_data.numberOfAttributes, 0);
1422 for (
auto &block : block_lists) {
1423 const std::string prefix =
1424 "block_" + boost::lexical_cast<std::string>(block.first);
1425 CHKERR apply_attributes_array(prefix, block.second);
1427 for (
auto &set_attr : block_set_attributes) {
1428 if (set_attr.second.nAme.compare(
"NoNameSet") != 0) {
1429 const std::string prefix =
"SET_ATTR_" + set_attr.second.nAme;
1430 CHKERR apply_attributes_array(prefix, set_attr.second);
1441 block_lists[it->getMeshsetId()].addType) {
1446 if (bc_type.none()) {
1447 block_lists[it->getMeshsetId()].bcType =
UNKNOWNSET;
1452 if (bc_type.to_ulong() ==
BLOCKSET)
1453 block_lists[it->getMeshsetId()].bcType =
BLOCKSET;
1454 else if (bc_type.to_ulong() ==
NODESET)
1455 block_lists[it->getMeshsetId()].bcType =
NODESET;
1456 else if (bc_type.to_ulong() ==
SIDESET)
1457 block_lists[it->getMeshsetId()].bcType =
SIDESET;
1460 "Not yet implemented type %s\n",
1461 block_lists[it->getMeshsetId()].addType.c_str());
1463 if (block_lists[it->getMeshsetId()].iD == -1) {
1465 "Unset iD number %d\n", block_lists[it->getMeshsetId()].iD);
1469 std::vector<std::string> additional_parameters;
1470 additional_parameters =
1471 collect_unrecognized(parsed.options, po::include_positional);
1472 for (std::vector<std::string>::iterator vit = additional_parameters.begin();
1473 vit != additional_parameters.end(); vit++) {
1474 MOFEM_LOG_C(
"MeshsetMngSelf", Sev::warning,
"Unrecognized option %s",
1477 for (map<int, BlockData>::iterator mit = block_lists.begin();
1478 mit != block_lists.end(); mit++) {
1479 CubitMeshSet_multiIndex::iterator cubit_meshset_it =
1483 "Data inconsistency\n");
1485 switch (mit->second.bcType) {
1489 if ((
CubitBCType(mit->second.bcType) & cubit_meshset_it->getBcType())
1491 mit->second.iD == cubit_meshset_it->getMeshsetId()) {
1503 if (mit->second.matElastic.data.Young != -1) {
1505 mit->second.matElastic);
1507 if (mit->second.matTransIso.data.Youngp != -1) {
1509 mit->second.matTransIso);
1511 if (mit->second.matThermal.data.Conductivity != -1) {
1513 mit->second.matThermal);
1515 if (mit->second.matInterf.data.ft != -1) {
1517 mit->second.matInterf);
1521 if ((
CubitBCType(mit->second.bcType) & cubit_meshset_it->getBcType())
1523 mit->second.iD == cubit_meshset_it->getMeshsetId()) {
1532 if (mit->second.dispBc.data.flag1 || mit->second.dispBc.data.flag2 ||
1533 mit->second.dispBc.data.flag3 || mit->second.dispBc.data.flag4 ||
1534 mit->second.dispBc.data.flag5 || mit->second.dispBc.data.flag6) {
1535 if (mit->second.dispBc.data.flag1 ==
'0')
1536 mit->second.dispBc.data.flag1 = 0;
1537 if (mit->second.dispBc.data.flag1 ==
'N')
1538 mit->second.dispBc.data.flag1 = 0;
1539 if (mit->second.dispBc.data.flag1)
1540 mit->second.dispBc.data.flag1 = 1;
1541 if (mit->second.dispBc.data.flag2 ==
'0')
1542 mit->second.dispBc.data.flag2 = 0;
1543 if (mit->second.dispBc.data.flag2 ==
'N')
1544 mit->second.dispBc.data.flag2 = 0;
1545 if (mit->second.dispBc.data.flag2)
1546 mit->second.dispBc.data.flag2 = 1;
1547 if (mit->second.dispBc.data.flag3 ==
'0')
1548 mit->second.dispBc.data.flag3 = 0;
1549 if (mit->second.dispBc.data.flag3 ==
'N')
1550 mit->second.dispBc.data.flag3 = 0;
1551 if (mit->second.dispBc.data.flag3)
1552 mit->second.dispBc.data.flag3 = 1;
1553 if (mit->second.dispBc.data.flag4 ==
'0')
1554 mit->second.dispBc.data.flag4 = 0;
1555 if (mit->second.dispBc.data.flag4 ==
'N')
1556 mit->second.dispBc.data.flag4 = 0;
1557 if (mit->second.dispBc.data.flag4)
1558 mit->second.dispBc.data.flag4 = 1;
1559 if (mit->second.dispBc.data.flag5 ==
'0')
1560 mit->second.dispBc.data.flag5 = 0;
1561 if (mit->second.dispBc.data.flag5 ==
'N')
1562 mit->second.dispBc.data.flag5 = 0;
1563 if (mit->second.dispBc.data.flag5)
1564 mit->second.dispBc.data.flag5 = 1;
1565 if (mit->second.dispBc.data.flag6 ==
'0')
1566 mit->second.dispBc.data.flag6 = 0;
1567 if (mit->second.dispBc.data.flag6 ==
'N')
1568 mit->second.dispBc.data.flag6 = 0;
1569 if (mit->second.dispBc.data.flag6)
1570 mit->second.dispBc.data.flag6 = 1;
1572 mit->second.dispBc);
1574 if (mit->second.forceBc.data.value1 != 0 ||
1575 mit->second.forceBc.data.value2 != 0) {
1577 mit->second.forceBc);
1580 if (mit->second.temperatureBc.data.flag1) {
1581 if (mit->second.temperatureBc.data.flag1 ==
'0')
1582 mit->second.temperatureBc.data.flag1 = 0;
1583 if (mit->second.temperatureBc.data.flag1 ==
'N')
1584 mit->second.temperatureBc.data.flag1 = 0;
1585 if (mit->second.temperatureBc.data.flag1)
1586 mit->second.temperatureBc.data.flag1 = 1;
1588 mit->second.temperatureBc);
1592 if ((
CubitBCType(mit->second.bcType) & cubit_meshset_it->getBcType())
1594 mit->second.iD == cubit_meshset_it->getMeshsetId()) {
1603 if (mit->second.pressureBc.data.value1 != 0) {
1604 if (mit->second.pressureBc.data.flag2 ==
'0')
1605 mit->second.pressureBc.data.flag2 = 0;
1606 if (mit->second.pressureBc.data.flag2 ==
'N')
1607 mit->second.pressureBc.data.flag2 = 0;
1608 if (mit->second.pressureBc.data.flag2)
1609 mit->second.pressureBc.data.flag2 = 1;
1611 mit->second.pressureBc);
1614 if (mit->second.heatFluxBc.data.value1 != 0) {
1615 if (mit->second.heatFluxBc.data.flag1 ==
'0')
1616 mit->second.heatFluxBc.data.flag1 = 0;
1617 if (mit->second.heatFluxBc.data.flag1 ==
'N')
1618 mit->second.heatFluxBc.data.flag1 = 0;
1619 if (mit->second.heatFluxBc.data.flag1)
1620 mit->second.heatFluxBc.data.flag1 = 1;
1622 mit->second.heatFluxBc);
1625 if (mit->second.cfgBc.data.type != 0) {
1626 CHKERR setBcData(mit->second.bcType, mit->second.iD, mit->second.cfgBc);
1631 "Not yet implemented type\n");
1635 for (
auto set_attr : block_set_attributes) {
1637 if (set_attr.second.numberOfAttributes > 0) {
1638 MOFEM_LOG(
"MeshsetMngSelf", Sev::verbose)
1639 <<
"Set attributes to blockset " << set_attr.second.nAme;
1640 set_attr.second.aTtr.resize(set_attr.second.numberOfAttributes);
1642 set_attr.second.aTtr);