8 namespace po = boost::program_options;
12 void MeshsetsManager::sortMeshsets(
13 std::vector<const CubitMeshSets *> &vec_ptr) {
14 std::sort(vec_ptr.begin(), vec_ptr.end(),
16 if (a->getBcType().to_ullong() < b->getBcType().to_ullong())
18 if (a->getBcType().to_ullong() > b->getBcType().to_ullong())
21 return a->getMeshsetId() < b->getMeshsetId();
25 bool MeshsetsManager::brodcastMeshsets =
true;
28 MeshsetsManager::query_interface(boost::typeindex::type_index type_index,
34 MeshsetsManager::MeshsetsManager(
const Core &core)
35 : cOre(const_cast<
Core &>(core)) {
38 auto core_log = logging::core::get();
56 MOFEM_LOG(
"MeshsetMngWorld", Sev::noisy) <<
"Mashset manager created";
72 std::vector<const CubitMeshSets *> vec_ptr;
74 vec_ptr.push_back(&
m);
78 for (
auto m_ptr : vec_ptr) {
80 <<
"meshset in database " << *m_ptr;
83 for (
auto m_ptr : vec_ptr) {
85 <<
"meshset in database " << *m_ptr;
98 CHKERR moab.get_entities_by_type(0, MBENTITYSET, meshsets,
false);
99 for (
auto m : meshsets) {
109 CHKERR m_field.
get_moab().add_entities(p.first->getMeshset(), ents);
115 std::vector<const CubitMeshSets *> vec_ptr;
117 vec_ptr.push_back(&
m);
121 for (
auto m_ptr : vec_ptr) {
122 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose) <<
"read " << *m_ptr;
134 ParallelComm *pcomm = ParallelComm::get_pcomm(&moab,
MYPCOMM_INDEX);
137 "MOAB communicator not set");
139 const double coords[] = {0, 0, 0};
141 auto set_tags_dummy_node = [&](
const EntityHandle dummy_node,
144 std::vector<Tag> tag_handles;
145 CHKERR moab.tag_get_tags_on_entity(meshset, tag_handles);
146 for (
auto th : tag_handles) {
149 CHKERR moab.tag_get_by_ptr(
th, &meshset, 1, (
const void **)data,
152 CHKERR moab.tag_set_by_ptr(
th, &dummy_node, 1, data, &tag_size);
158 std::vector<const CubitMeshSets *> vec_ptr;
161 vec_ptr.push_back(&
m);
166 std::vector<EntityHandle> vec_meshsets;
167 vec_meshsets.reserve(vec_ptr.size());
168 for (
auto m_ptr : vec_ptr) {
169 vec_meshsets.push_back(m_ptr->getMeshset());
174 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose)
175 <<
"broadcast NODESET " << vec_meshsets.size();
178 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose)
179 <<
"broadcast SIDESET " << vec_meshsets.size();
182 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose)
183 <<
"broadcast BLOCKSET " << vec_meshsets.size();
186 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose)
187 <<
"broadcast Unknown " << vec_meshsets.size();
190 for (
int from_proc = 0; from_proc < pcomm->size(); ++from_proc) {
194 if (from_proc == pcomm->rank()) {
195 std::vector<EntityHandle> dummy_nodes(vec_meshsets.size(), 0);
197 for (
auto m : vec_meshsets) {
198 CHKERR moab.create_vertex(coords, dummy_nodes[
i]);
199 CHKERR set_tags_dummy_node(dummy_nodes[
i],
m);
202 r_dummy_nodes.insert_list(dummy_nodes.begin(), dummy_nodes.end());
205 CHKERR pcomm->broadcast_entities(from_proc, r_dummy_nodes,
false,
true);
207 if (from_proc != pcomm->rank()) {
209 for (
auto dummy_node : r_dummy_nodes) {
215 .find(boost::make_tuple(
221 CHKERR moab.create_meshset(MESHSET_SET,
m);
222 CHKERR set_tags_dummy_node(
m, dummy_node);
227 MOFEM_LOG(
"MeshsetMngSync", Sev::warning)
228 <<
"broadcasted vertex " << dummy_node <<
" has negative id";
234 MOFEM_LOG(
"MeshsetMngSync", Sev::verbose)
235 <<
"broadcast send from " << from_proc;
238 CHKERR moab.delete_entities(r_dummy_nodes);
257 Tag &ssTag, Tag &nsTag_data,
258 Tag &ssTag_data, Tag &bhTag,
259 Tag &bhTag_header,
int verb) {
262 int default_val = -1;
263 CHKERR moab.tag_get_handle(DIRICHLET_SET_TAG_NAME, 1, MB_TYPE_INTEGER,
nsTag,
264 MB_TAG_SPARSE | MB_TAG_CREAT, &default_val);
266 CHKERR moab.tag_get_handle(NEUMANN_SET_TAG_NAME, 1, MB_TYPE_INTEGER,
ssTag,
267 MB_TAG_SPARSE | MB_TAG_CREAT, &default_val);
269 const int def_bc_data_len = 0;
270 std::string tag_name = std::string(DIRICHLET_SET_TAG_NAME) +
"__BC_DATA";
271 CHKERR moab.tag_get_handle(
272 tag_name.c_str(), def_bc_data_len, MB_TYPE_OPAQUE,
nsTag_data,
273 MB_TAG_CREAT | MB_TAG_SPARSE | MB_TAG_BYTES | MB_TAG_VARLEN, NULL);
275 tag_name = std::string(NEUMANN_SET_TAG_NAME) +
"__BC_DATA";
276 CHKERR moab.tag_get_handle(
277 tag_name.c_str(), def_bc_data_len, MB_TYPE_OPAQUE,
ssTag_data,
278 MB_TAG_CREAT | MB_TAG_SPARSE | MB_TAG_BYTES | MB_TAG_VARLEN, NULL);
280 CHKERR moab.tag_get_handle(MATERIAL_SET_TAG_NAME, 1, MB_TYPE_INTEGER,
bhTag,
281 MB_TAG_SPARSE | MB_TAG_CREAT, &default_val);
283 std::vector<unsigned int> def_uint_zero(3, 0);
284 CHKERR moab.tag_get_handle(
285 BLOCK_HEADER, 3 *
sizeof(
unsigned int), MB_TYPE_INTEGER,
bhTag_header,
286 MB_TAG_CREAT | MB_TAG_SPARSE | MB_TAG_BYTES, &def_uint_zero[0]);
289 int def_Block_Attributes_length = 0;
290 CHKERR moab.tag_get_handle(
291 BLOCK_ATTRIBUTES, def_Block_Attributes_length, MB_TYPE_DOUBLE,
292 block_attribs, MB_TAG_CREAT | MB_TAG_SPARSE | MB_TAG_VARLEN, NULL);
295 CHKERR moab.tag_get_handle(NAME_TAG_NAME, NAME_TAG_SIZE, MB_TYPE_OPAQUE,
296 entity_name_tag, MB_TAG_SPARSE | MB_TAG_CREAT);
343 CHKERR it->getAttributeDataStructure(data);
344 MOFEM_LOG(
"MeshsetMngWorld", Sev::inform) << *it;
345 MOFEM_LOG(
"MeshsetMngWorld", Sev::inform) << data;
347 CHKERR moab.get_entities_by_dimension(it->meshset, 3, tets,
true);
348 MOFEM_LOG(
"MeshsetMngWorld", Sev::inform)
349 <<
"MAT_ELATIC msId " << it->getMeshsetId() <<
" nb. volumes "
356 CHKERR it->getAttributeDataStructure(data);
357 MOFEM_LOG(
"MeshsetMngWorld", Sev::inform) << *it;
358 MOFEM_LOG(
"MeshsetMngWorld", Sev::inform) << data;
364 CHKERR it->getAttributeDataStructure(data);
365 MOFEM_LOG(
"MeshsetMngWorld", Sev::inform) << *it;
366 MOFEM_LOG(
"MeshsetMngWorld", Sev::inform) << data;
375 boost::make_tuple(ms_id, cubit_bc_type.to_ulong()));
384 int *
const number_of_meshsets_ptr)
const {
387 if (std::distance(miit, hi_miit) == 0) {
390 if (number_of_meshsets_ptr) {
391 *number_of_meshsets_ptr = std::distance(miit, hi_miit);
398 const std::string name) {
404 "such cubit meshset is already there", ms_id);
413 "meshset not inserted");
415 if (name.size() > 0) {
420 "name to cubit meshset can not be set");
430 const int ms_id,
const Range &ents) {
436 boost::make_tuple(ms_id, cubit_bc_type.to_ulong()));
440 "Cannot find Cubit meshset with id: %d", ms_id);
443 CHKERR moab.add_entities(meshset, ents);
457 boost::make_tuple(ms_id, cubit_bc_type.to_ulong()));
461 "Cannot find Cubit meshset with id: %d", ms_id);
464 CHKERR moab.add_entities(meshset, ents, nb_ents);
471 const std::vector<double> &attributes,
472 const std::string name) {
478 boost::make_tuple(ms_id, cubit_bc_type.to_ulong()));
482 "Cannot find Cubit meshset with id: %d", ms_id);
484 if (name.size() > 0) {
489 "name to cubit meshset can not be set");
497 "modification unsuccessful");
499 std::ostringstream ss;
500 ss <<
"Block " << cit->getName();
502 for (
unsigned int ii = 0; ii != attributes.size(); ii++) {
503 ss << attributes[ii] <<
" ";
505 MOFEM_LOG(
"MeshsetMngSelf", Sev::noisy) << ss.str();
518 boost::make_tuple(ms_id, cubit_bc_type.to_ulong()));
522 "Cannot find Cubit meshset with id: %d", ms_id);
524 if (name.size() > 0) {
529 "name to cubit meshset can not be set");
537 "modification unsuccessful");
549 boost::make_tuple(ms_id, cubit_bc_type.to_ulong()));
553 "Cubit meshset with id is already there", ms_id);
560 "modification unsuccessful");
572 boost::make_tuple(ms_id, cubit_bc_type.to_ulong()));
577 "meshset not found", ms_id);
584 CHKERR moab.delete_entities(&meshset, 1);
596 boost::make_tuple(ms_id, cubit_bc_type.to_ulong()));
599 *cubit_meshset_ptr = &*miit;
602 "msId = %d is not there", ms_id);
613 "Get not get meshset");
614 return cubit_meshset_ptr;
618 const string name,
const CubitMeshSets **cubit_meshset_ptr)
const {
623 if (std::distance(miit, hi_miit) == 0) {
625 "meshset name <%s> is not there", name.c_str());
627 if (std::distance(miit, hi_miit) > 1) {
629 "more that one meshser of that name <%s>", name.c_str());
631 *cubit_meshset_ptr = &*miit;
637 std::vector<const CubitMeshSets *> &vec_ptr)
const {
640 cubit_bc_type.to_ulong());
641 for (
auto it =
r.first; it !=
r.second; ++it) {
642 vec_ptr.push_back(&*it);
648 std::vector<const CubitMeshSets *>
650 std::vector<const CubitMeshSets *> vec_ptr;
652 "Error in getting meshsets by name");
657 const std::regex reg_exp_name,
658 std::vector<const CubitMeshSets *> &vec_ptr)
const {
662 for (;
r.first !=
r.second; ++
r.first) {
663 const auto name =
r.first->getName();
664 if (std::regex_match(name, reg_exp_name)) {
665 vec_ptr.push_back(&*
r.first);
672 std::vector<const CubitMeshSets *>
674 std::vector<const CubitMeshSets *> vec_ptr;
676 "Error in getting meshsets by name");
681 const int msId,
const unsigned int cubit_bc_type,
const int dimension,
682 Range &entities,
const bool recursive)
const {
688 boost::make_tuple(msId, cubit_bc_type));
691 CHKERR miit->getMeshsetIdEntitiesByDimension(moab, dimension, entities,
695 "msId = %d is not there", msId);
701 const int ms_id,
const unsigned int cubit_bc_type,
Range &entities,
702 const bool recursive)
const {
708 boost::make_tuple(ms_id, cubit_bc_type));
711 CHKERR miit->getMeshsetIdEntitiesByDimension(moab, entities, recursive);
714 "ms_id = %d is not there", ms_id);
720 const unsigned int cubit_bc_type,
726 boost::make_tuple(ms_id, cubit_bc_type));
729 meshset = miit->meshset;
732 "ms_id = %d is not there", ms_id);
738 const int ms_id,
const unsigned int cubit_bc_type,
739 const EntityHandle *entities,
int num_entities,
const int operation_type) {
742 boost::make_tuple(ms_id, cubit_bc_type));
746 return m_field.
get_moab().contains_entities(miit->meshset, entities,
747 num_entities, operation_type);
754 Range &meshsets)
const {
760 for (; miit != hi_miit; miit++) {
761 meshsets.insert(miit->meshset);
793 std::memcpy(
dispBc.
data.name,
"Displacement", 12);
798 std::memcpy(
cfgBc.
data.name,
"cfd_bc", 6);
803 bool clean_file_options) {
806 std::ifstream ini_file(file_name.c_str(), std::ifstream::in);
807 po::variables_map vm;
808 if (clean_file_options) {
810 boost::shared_ptr<boost::program_options::options_description>(
811 new po::options_description());
814 auto add_block_attributes = [&](
auto prefix,
auto &block_lists,
auto &it) {
817 (prefix +
".number_of_attributes").c_str(),
818 po::value<int>(&block_lists[it->getMeshsetId()].numberOfAttributes)
820 "Number of blockset attribute");
821 for (
int ii = 1; ii <= 10; ii++) {
822 std::string surfix =
".user" + boost::lexical_cast<std::string>(ii);
824 (prefix + surfix).c_str(),
825 po::value<double>(&block_lists[it->getMeshsetId()].aTtr[ii - 1])
826 ->default_value(0.0),
827 "Add block attribute");
832 map<int, BlockData> block_lists;
834 block_lists[it->getMeshsetId()].cubitMeshset = it->getMeshset();
836 "block_" + boost::lexical_cast<std::string>(it->getMeshsetId());
838 (prefix +
".add").c_str(),
839 po::value<string>(&block_lists[it->getMeshsetId()].addType)
840 ->default_value(
"UNKNOWNSET"),
842 (prefix +
".id").c_str(),
843 po::value<int>(&block_lists[it->getMeshsetId()].iD)->default_value(-1),
845 (prefix +
".name").c_str(),
846 po::value<string>(&block_lists[it->getMeshsetId()].nAme)
848 "Name of the meshset");
851 add_block_attributes(prefix, block_lists, it);
859 (prefix +
".young").c_str(),
861 &block_lists[it->getMeshsetId()].matElastic.data.Young)
864 (prefix +
".poisson").c_str(),
866 &block_lists[it->getMeshsetId()].matElastic.data.Poisson)
869 (prefix +
".thermalexpansion").c_str(),
871 &block_lists[it->getMeshsetId()].matElastic.data.ThermalExpansion)
873 "Thermal expansion");
884 (prefix +
".Youngp").c_str(),
886 &block_lists[it->getMeshsetId()].matTransIso.data.Youngp)
889 (prefix +
".Youngz").c_str(),
891 &block_lists[it->getMeshsetId()].matTransIso.data.Youngz)
894 (prefix +
".Poissonp").c_str(),
896 &block_lists[it->getMeshsetId()].matTransIso.data.Poissonp)
899 (prefix +
".Poissonpz").c_str(),
901 &block_lists[it->getMeshsetId()].matTransIso.data.Poissonpz)
904 (prefix +
".Shearzp").c_str(),
906 &block_lists[it->getMeshsetId()].matTransIso.data.Shearzp)
916 (prefix +
".conductivity").c_str(),
918 &block_lists[it->getMeshsetId()].matThermal.data.Conductivity)
921 (prefix +
".capacity").c_str(),
923 &block_lists[it->getMeshsetId()].matThermal.data.HeatCapacity)
935 (prefix +
".interface_alpha").c_str(),
937 &block_lists[it->getMeshsetId()].matInterf.data.alpha)
939 "alpha")((prefix +
".interface_beta").c_str(),
941 &block_lists[it->getMeshsetId()].matInterf.data.beta)
944 (prefix +
".interface_ft").c_str(),
945 po::value<double>(&block_lists[it->getMeshsetId()].matInterf.data.ft)
948 (prefix +
".interface_Gf").c_str(),
949 po::value<double>(&block_lists[it->getMeshsetId()].matInterf.data.Gf)
970 (prefix +
".disp_flag1").c_str(),
971 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag1)
974 (prefix +
".disp_flag2").c_str(),
975 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag2)
978 (prefix +
".disp_flag3").c_str(),
979 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag3)
982 (prefix +
".disp_flag4").c_str(),
983 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag4)
986 (prefix +
".disp_flag5").c_str(),
987 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag5)
990 (prefix +
".disp_flag6").c_str(),
991 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag6)
994 (prefix +
".disp_ux").c_str(),
995 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value1)
998 (prefix +
".disp_uy").c_str(),
999 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value2)
1002 (prefix +
".disp_uz").c_str(),
1003 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value3)
1006 (prefix +
".disp_rx").c_str(),
1007 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value4)
1010 (prefix +
".disp_ry").c_str(),
1011 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value5)
1014 (prefix +
".disp_rz").c_str(),
1015 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value6)
1032 (prefix +
".force_magnitude").c_str(),
1034 &block_lists[it->getMeshsetId()].forceBc.data.value1)
1036 "value1")((prefix +
".moment_magnitude").c_str(),
1038 &block_lists[it->getMeshsetId()].forceBc.data.value2)
1041 (prefix +
".force_fx").c_str(),
1043 &block_lists[it->getMeshsetId()].forceBc.data.value3)
1045 "value3")((prefix +
".force_fy").c_str(),
1047 &block_lists[it->getMeshsetId()].forceBc.data.value4)
1050 (prefix +
".force_fz").c_str(),
1052 &block_lists[it->getMeshsetId()].forceBc.data.value5)
1054 "value5")((prefix +
".moment_mx").c_str(),
1056 &block_lists[it->getMeshsetId()].forceBc.data.value6)
1059 (prefix +
".moment_my").c_str(),
1061 &block_lists[it->getMeshsetId()].forceBc.data.value7)
1063 "value7")((prefix +
".moment_mz").c_str(),
1065 &block_lists[it->getMeshsetId()].forceBc.data.value8)
1086 (prefix +
".temperature_flag1").c_str(),
1088 &block_lists[it->getMeshsetId()].temperatureBc.data.flag1)
1091 (prefix +
".temperature_t").c_str(),
1093 &block_lists[it->getMeshsetId()].temperatureBc.data.value1)
1106 (prefix +
".pressure_flag2").c_str(),
1108 &block_lists[it->getMeshsetId()].pressureBc.data.flag2)
1110 "flag2")((prefix +
".pressure_magnitude").c_str(),
1112 &block_lists[it->getMeshsetId()].pressureBc.data.value1)
1128 (prefix +
".heatflux_flag1").c_str(),
1130 &block_lists[it->getMeshsetId()].heatFluxBc.data.flag1)
1132 "flag1")((prefix +
".heatflux_magnitude").c_str(),
1134 &block_lists[it->getMeshsetId()].heatFluxBc.data.value1)
1141 (prefix +
".interface_type").c_str(),
1142 po::value<char>(&block_lists[it->getMeshsetId()].cfgBc.data.type)
1148 map<int, BlockData> block_set_attributes;
1150 block_set_attributes[it->getMeshsetId()].cubitMeshset = it->getMeshset();
1151 block_set_attributes[it->getMeshsetId()].iD = it->getMeshsetId();
1152 block_set_attributes[it->getMeshsetId()].bcType =
BLOCKSET;
1153 std::string block_name = it->getName();
1155 std::remove_if(block_name.begin(), block_name.end(), ::isspace),
1157 block_set_attributes[it->getMeshsetId()].nAme = block_name;
1159 if (block_name.compare(
"NoNameSet") != 0) {
1160 std::string prefix =
"SET_ATTR_" + block_name;
1162 add_block_attributes(prefix, block_set_attributes, it);
1166 po::parsed_options parsed =
1178 block_lists[it->getMeshsetId()].addType) {
1183 if (bc_type.none()) {
1184 block_lists[it->getMeshsetId()].bcType =
UNKNOWNSET;
1189 if (bc_type.to_ulong() ==
BLOCKSET)
1190 block_lists[it->getMeshsetId()].bcType =
BLOCKSET;
1191 else if (bc_type.to_ulong() ==
NODESET)
1192 block_lists[it->getMeshsetId()].bcType =
NODESET;
1193 else if (bc_type.to_ulong() ==
SIDESET)
1194 block_lists[it->getMeshsetId()].bcType =
SIDESET;
1197 "Not yet implemented type %s\n",
1198 block_lists[it->getMeshsetId()].addType.c_str());
1200 if (block_lists[it->getMeshsetId()].iD == -1) {
1202 "Unset iD number %d\n", block_lists[it->getMeshsetId()].iD);
1206 std::vector<std::string> additional_parameters;
1207 additional_parameters =
1208 collect_unrecognized(parsed.options, po::include_positional);
1209 for (std::vector<std::string>::iterator vit = additional_parameters.begin();
1210 vit != additional_parameters.end(); vit++) {
1211 MOFEM_LOG_C(
"MeshsetMngSelf", Sev::warning,
"Unrecognized option %s",
1214 for (map<int, BlockData>::iterator mit = block_lists.begin();
1215 mit != block_lists.end(); mit++) {
1216 CubitMeshSet_multiIndex::iterator cubit_meshset_it =
1220 "Data inconsistency\n");
1222 switch (mit->second.bcType) {
1226 if ((
CubitBCType(mit->second.bcType) & cubit_meshset_it->getBcType())
1228 mit->second.iD == cubit_meshset_it->getMeshsetId()) {
1240 if (mit->second.matElastic.data.Young != -1) {
1242 mit->second.matElastic);
1244 if (mit->second.matTransIso.data.Youngp != -1) {
1246 mit->second.matTransIso);
1248 if (mit->second.matThermal.data.Conductivity != -1) {
1250 mit->second.matThermal);
1252 if (mit->second.matInterf.data.ft != -1) {
1254 mit->second.matInterf);
1258 if ((
CubitBCType(mit->second.bcType) & cubit_meshset_it->getBcType())
1260 mit->second.iD == cubit_meshset_it->getMeshsetId()) {
1269 if (mit->second.dispBc.data.flag1 || mit->second.dispBc.data.flag2 ||
1270 mit->second.dispBc.data.flag3 || mit->second.dispBc.data.flag4 ||
1271 mit->second.dispBc.data.flag5 || mit->second.dispBc.data.flag6) {
1272 if (mit->second.dispBc.data.flag1 ==
'0')
1273 mit->second.dispBc.data.flag1 = 0;
1274 if (mit->second.dispBc.data.flag1 ==
'N')
1275 mit->second.dispBc.data.flag1 = 0;
1276 if (mit->second.dispBc.data.flag1)
1277 mit->second.dispBc.data.flag1 = 1;
1278 if (mit->second.dispBc.data.flag2 ==
'0')
1279 mit->second.dispBc.data.flag2 = 0;
1280 if (mit->second.dispBc.data.flag2 ==
'N')
1281 mit->second.dispBc.data.flag2 = 0;
1282 if (mit->second.dispBc.data.flag2)
1283 mit->second.dispBc.data.flag2 = 1;
1284 if (mit->second.dispBc.data.flag3 ==
'0')
1285 mit->second.dispBc.data.flag3 = 0;
1286 if (mit->second.dispBc.data.flag3 ==
'N')
1287 mit->second.dispBc.data.flag3 = 0;
1288 if (mit->second.dispBc.data.flag3)
1289 mit->second.dispBc.data.flag3 = 1;
1290 if (mit->second.dispBc.data.flag4 ==
'0')
1291 mit->second.dispBc.data.flag4 = 0;
1292 if (mit->second.dispBc.data.flag4 ==
'N')
1293 mit->second.dispBc.data.flag4 = 0;
1294 if (mit->second.dispBc.data.flag4)
1295 mit->second.dispBc.data.flag4 = 1;
1296 if (mit->second.dispBc.data.flag5 ==
'0')
1297 mit->second.dispBc.data.flag5 = 0;
1298 if (mit->second.dispBc.data.flag5 ==
'N')
1299 mit->second.dispBc.data.flag5 = 0;
1300 if (mit->second.dispBc.data.flag5)
1301 mit->second.dispBc.data.flag5 = 1;
1302 if (mit->second.dispBc.data.flag6 ==
'0')
1303 mit->second.dispBc.data.flag6 = 0;
1304 if (mit->second.dispBc.data.flag6 ==
'N')
1305 mit->second.dispBc.data.flag6 = 0;
1306 if (mit->second.dispBc.data.flag6)
1307 mit->second.dispBc.data.flag6 = 1;
1309 mit->second.dispBc);
1311 if (mit->second.forceBc.data.value1 != 0 ||
1312 mit->second.forceBc.data.value2 != 0) {
1314 mit->second.forceBc);
1317 if (mit->second.temperatureBc.data.flag1) {
1318 if (mit->second.temperatureBc.data.flag1 ==
'0')
1319 mit->second.temperatureBc.data.flag1 = 0;
1320 if (mit->second.temperatureBc.data.flag1 ==
'N')
1321 mit->second.temperatureBc.data.flag1 = 0;
1322 if (mit->second.temperatureBc.data.flag1)
1323 mit->second.temperatureBc.data.flag1 = 1;
1325 mit->second.temperatureBc);
1329 if ((
CubitBCType(mit->second.bcType) & cubit_meshset_it->getBcType())
1331 mit->second.iD == cubit_meshset_it->getMeshsetId()) {
1340 if (mit->second.pressureBc.data.value1 != 0) {
1341 if (mit->second.pressureBc.data.flag2 ==
'0')
1342 mit->second.pressureBc.data.flag2 = 0;
1343 if (mit->second.pressureBc.data.flag2 ==
'N')
1344 mit->second.pressureBc.data.flag2 = 0;
1345 if (mit->second.pressureBc.data.flag2)
1346 mit->second.pressureBc.data.flag2 = 1;
1348 mit->second.pressureBc);
1351 if (mit->second.heatFluxBc.data.value1 != 0) {
1352 if (mit->second.heatFluxBc.data.flag1 ==
'0')
1353 mit->second.heatFluxBc.data.flag1 = 0;
1354 if (mit->second.heatFluxBc.data.flag1 ==
'N')
1355 mit->second.heatFluxBc.data.flag1 = 0;
1356 if (mit->second.heatFluxBc.data.flag1)
1357 mit->second.heatFluxBc.data.flag1 = 1;
1359 mit->second.heatFluxBc);
1362 if (mit->second.cfgBc.data.type != 0) {
1363 CHKERR setBcData(mit->second.bcType, mit->second.iD, mit->second.cfgBc);
1368 "Not yet implemented type\n");
1372 for (
auto set_attr : block_set_attributes) {
1374 if (set_attr.second.numberOfAttributes > 0) {
1375 MOFEM_LOG(
"MeshsetMngSelf", Sev::verbose)
1376 <<
"Set attributes to blockset " << set_attr.second.nAme;
1377 set_attr.second.aTtr.resize(set_attr.second.numberOfAttributes);
1379 set_attr.second.aTtr);
1389 char meshset_file_name[255] =
"config_file.cfg";
1391 CHKERR PetscOptionsBegin(m_field.
get_comm(),
"",
"Set meshsets form file",
1393 CHKERR PetscOptionsString(
"-meshsets_config",
"meshsets config file name",
1394 "",
"add_cubit_meshsets.in", meshset_file_name, 255,
1396 if (flg_file == PETSC_TRUE) {
1397 ifstream
f(meshset_file_name);
1400 "File configuring meshsets ( %s ) can not be open\n",
1405 ierr = PetscOptionsEnd();
1411 const int ms_id,
const unsigned int cubit_bc_type,
1412 const std::string file_name,
const std::string file_type,
1413 const std::string options)
const {
1420 CHKERR m_field.
get_moab().write_file(file_name.c_str(), file_type.c_str(),
1421 options.c_str(), &meshset, 1);
1426 const int ms_id,
const unsigned int cubit_bc_type,
const int dim,
1427 const std::string file_name,
const bool recursive,
1428 const std::string file_type,
const std::string options)
const {
1436 CHKERR moab.create_meshset(MESHSET_SET, meshset);
1437 CHKERR moab.add_entities(meshset, entities);
1438 CHKERR moab.write_file(file_name.c_str(), file_type.c_str(), options.c_str(),
1440 CHKERR moab.delete_entities(&meshset, 1);
1450 for (EntityType
t = MBVERTEX;
t != MBENTITYSET; ++
t)