[block_1001]
# Example applying attributes to blockset
id=2001
user1=1.0 # attribute value 1
user2=2.0 # you can set up to 10 attributes (if needed could be easily
extended to more, let us know)
user3=3.0
[block_1002]
# Example applying material block (isotropic elastic material)
id=2002
name=MAT_ELASTIC
young=10
poisson=0.25
thermalexpansion=0
[block_1003]
# Example applying displacement constrains
id=2003
# Each flag means that boundary consition on displacements is set.
disp_flag1=1 # Setting constrains in x- direction
disp_flag2=1 # Setting constrains in y- direction
disp_flag3=1 # Setting constrains in z- direction
disp_flag4=1 # Setting constrains on rotation over x- axis
disp_flag5=1 # Setting constrains on rotation over y- axis
disp_flag6=1 # Setting constrains on rotation over z-axis
disp_ux=1 # value of disp in x- direction
disp_uy=2
disp_uz=3
disp_rx=4 # value of rotation in y-direction
disp_ry=5
disp_rz=6
# Note above values could be interpreted differently if needed.
[block_1004]
# Example applying force boundary conditions
id=2004
force_magnitude=1
moment_magnitude=1
force_fx=1
force_fy=1
force_fz=1
moment_mx=1
moment_my=1
moment_mz=1
[block_1005]
# Example applying pressure boundary conditions
id=2005
pressure_flag2=1 # 0: Pressure is interpreted as pure pressure 1:
pressure is interpreted as total force
pressure_magnitude=1
# Example applying temperature boundary conditions
[block_1006]
id=2006
temperature_flag1=1 # 0:
N/
A, 1: temperature value applied
temperature_t=1
[block_1007]
id=2007
heatflux_flag1=1 # 0:
N/
A, 1: heat flux applied
heatflux_magnitude=1
[block_1008]
# Example applying material block (isotropic thermal material)
id=2008
name=MAT_THERMAL # Hast to be set for Thermal Mat
conductivity=1
capacity=1
[block_1009]
# Example applying interface
id=2009
interface_type=1
[block_1010]
# Example applying material block for interface element
id=2010
name=MAT_INTERF
interface_alpha = 1
interface_beta = 0
interface_ft = 1
interface_Gf = 1
[block_1009]
# Example applying material block (isotropic trans iso material)
id=2011
name=MAT_ELASTIC_TRANS_ISO
Youngp=1
Youngz=2
Poissonp=3
Poissonpz=4
Shearzp=5
[SET_ATTR_foo]
# Example set atttributes to block name "foo"
number_of_attributes=3
user1=1
user2=2
user3=3
792 std::ifstream ini_file(file_name.c_str(), std::ifstream::in);
793 po::variables_map vm;
794 if (clean_file_options) {
796 boost::shared_ptr<boost::program_options::options_description>(
797 new po::options_description());
800 auto add_block_attributes = [&](
auto prefix,
auto &block_lists,
auto &it) {
803 (prefix +
".number_of_attributes").c_str(),
804 po::value<int>(&block_lists[it->getMeshsetId()].numberOfAttributes)
806 "Number of blockset attribute");
807 for (
int ii = 1; ii <= 10; ii++) {
808 std::string surfix =
".user" + boost::lexical_cast<std::string>(ii);
810 (prefix + surfix).c_str(),
811 po::value<double>(&block_lists[it->getMeshsetId()].aTtr[ii - 1])
812 ->default_value(0.0),
813 "Add block attribute");
818 map<int, BlockData> block_lists;
820 block_lists[it->getMeshsetId()].cubitMeshset = it->getMeshset();
822 "block_" + boost::lexical_cast<std::string>(it->getMeshsetId());
824 (prefix +
".add").c_str(),
825 po::value<string>(&block_lists[it->getMeshsetId()].addType)
826 ->default_value(
"UNKNOWNSET"),
828 (prefix +
".id").c_str(),
829 po::value<int>(&block_lists[it->getMeshsetId()].iD)->default_value(-1),
831 (prefix +
".name").c_str(),
832 po::value<string>(&block_lists[it->getMeshsetId()].nAme)
834 "Name of the meshset");
837 add_block_attributes(prefix, block_lists, it);
845 (prefix +
".young").c_str(),
847 &block_lists[it->getMeshsetId()].matElastic.data.Young)
850 (prefix +
".poisson").c_str(),
852 &block_lists[it->getMeshsetId()].matElastic.data.Poisson)
855 (prefix +
".thermalexpansion").c_str(),
857 &block_lists[it->getMeshsetId()].matElastic.data.ThermalExpansion)
859 "Thermal expansion");
870 (prefix +
".Youngp").c_str(),
872 &block_lists[it->getMeshsetId()].matTransIso.data.Youngp)
875 (prefix +
".Youngz").c_str(),
877 &block_lists[it->getMeshsetId()].matTransIso.data.Youngz)
880 (prefix +
".Poissonp").c_str(),
882 &block_lists[it->getMeshsetId()].matTransIso.data.Poissonp)
885 (prefix +
".Poissonpz").c_str(),
887 &block_lists[it->getMeshsetId()].matTransIso.data.Poissonpz)
890 (prefix +
".Shearzp").c_str(),
892 &block_lists[it->getMeshsetId()].matTransIso.data.Shearzp)
902 (prefix +
".conductivity").c_str(),
904 &block_lists[it->getMeshsetId()].matThermal.data.Conductivity)
907 (prefix +
".capacity").c_str(),
909 &block_lists[it->getMeshsetId()].matThermal.data.HeatCapacity)
921 (prefix +
".interface_alpha").c_str(),
923 &block_lists[it->getMeshsetId()].matInterf.data.alpha)
925 "alpha")((prefix +
".interface_beta").c_str(),
927 &block_lists[it->getMeshsetId()].matInterf.data.beta)
930 (prefix +
".interface_ft").c_str(),
931 po::value<double>(&block_lists[it->getMeshsetId()].matInterf.data.ft)
934 (prefix +
".interface_Gf").c_str(),
935 po::value<double>(&block_lists[it->getMeshsetId()].matInterf.data.Gf)
956 (prefix +
".disp_flag1").c_str(),
957 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag1)
960 (prefix +
".disp_flag2").c_str(),
961 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag2)
964 (prefix +
".disp_flag3").c_str(),
965 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag3)
968 (prefix +
".disp_flag4").c_str(),
969 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag4)
972 (prefix +
".disp_flag5").c_str(),
973 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag5)
976 (prefix +
".disp_flag6").c_str(),
977 po::value<char>(&block_lists[it->getMeshsetId()].dispBc.data.flag6)
980 (prefix +
".disp_ux").c_str(),
981 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value1)
984 (prefix +
".disp_uy").c_str(),
985 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value2)
988 (prefix +
".disp_uz").c_str(),
989 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value3)
992 (prefix +
".disp_rx").c_str(),
993 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value4)
996 (prefix +
".disp_ry").c_str(),
997 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value5)
1000 (prefix +
".disp_rz").c_str(),
1001 po::value<double>(&block_lists[it->getMeshsetId()].dispBc.data.value6)
1018 (prefix +
".force_magnitude").c_str(),
1020 &block_lists[it->getMeshsetId()].forceBc.data.value1)
1022 "value1")((prefix +
".moment_magnitude").c_str(),
1024 &block_lists[it->getMeshsetId()].forceBc.data.value2)
1027 (prefix +
".force_fx").c_str(),
1029 &block_lists[it->getMeshsetId()].forceBc.data.value3)
1031 "value3")((prefix +
".force_fy").c_str(),
1033 &block_lists[it->getMeshsetId()].forceBc.data.value4)
1036 (prefix +
".force_fz").c_str(),
1038 &block_lists[it->getMeshsetId()].forceBc.data.value5)
1040 "value5")((prefix +
".moment_mx").c_str(),
1042 &block_lists[it->getMeshsetId()].forceBc.data.value6)
1045 (prefix +
".moment_my").c_str(),
1047 &block_lists[it->getMeshsetId()].forceBc.data.value7)
1049 "value7")((prefix +
".moment_mz").c_str(),
1051 &block_lists[it->getMeshsetId()].forceBc.data.value8)
1072 (prefix +
".temperature_flag1").c_str(),
1074 &block_lists[it->getMeshsetId()].temperatureBc.data.flag1)
1077 (prefix +
".temperature_t").c_str(),
1079 &block_lists[it->getMeshsetId()].temperatureBc.data.value1)
1092 (prefix +
".pressure_flag2").c_str(),
1094 &block_lists[it->getMeshsetId()].pressureBc.data.flag2)
1096 "flag2")((prefix +
".pressure_magnitude").c_str(),
1098 &block_lists[it->getMeshsetId()].pressureBc.data.value1)
1114 (prefix +
".heatflux_flag1").c_str(),
1116 &block_lists[it->getMeshsetId()].heatFluxBc.data.flag1)
1118 "flag1")((prefix +
".heatflux_magnitude").c_str(),
1120 &block_lists[it->getMeshsetId()].heatFluxBc.data.value1)
1127 (prefix +
".interface_type").c_str(),
1128 po::value<char>(&block_lists[it->getMeshsetId()].cfgBc.data.type)
1134 map<int, BlockData> block_set_attributes;
1136 block_set_attributes[it->getMeshsetId()].cubitMeshset = it->getMeshset();
1137 block_set_attributes[it->getMeshsetId()].iD = it->getMeshsetId();
1138 block_set_attributes[it->getMeshsetId()].bcType =
BLOCKSET;
1139 std::string block_name = it->getName();
1141 std::remove_if(block_name.begin(), block_name.end(), ::isspace),
1143 block_set_attributes[it->getMeshsetId()].nAme = block_name;
1145 if (block_name.compare(
"NoNameSet") != 0) {
1146 std::string prefix =
"SET_ATTR_" + block_name;
1148 add_block_attributes(prefix, block_set_attributes, it);
1152 po::parsed_options parsed =
1164 block_lists[it->getMeshsetId()].addType) {
1169 if (bc_type.none()) {
1170 block_lists[it->getMeshsetId()].bcType =
UNKNOWNSET;
1175 if (bc_type.to_ulong() ==
BLOCKSET)
1176 block_lists[it->getMeshsetId()].bcType =
BLOCKSET;
1177 else if (bc_type.to_ulong() ==
NODESET)
1178 block_lists[it->getMeshsetId()].bcType =
NODESET;
1179 else if (bc_type.to_ulong() ==
SIDESET)
1180 block_lists[it->getMeshsetId()].bcType =
SIDESET;
1183 "Not yet implemented type %s\n",
1184 block_lists[it->getMeshsetId()].addType.c_str());
1186 if (block_lists[it->getMeshsetId()].iD == -1) {
1188 "Unset iD number %d\n", block_lists[it->getMeshsetId()].iD);
1192 std::vector<std::string> additional_parameters;
1193 additional_parameters =
1194 collect_unrecognized(parsed.options, po::include_positional);
1195 for (std::vector<std::string>::iterator vit = additional_parameters.begin();
1196 vit != additional_parameters.end(); vit++) {
1197 MOFEM_LOG_C(
"MeshsetMngSelf", Sev::warning,
"Unrecognized option %s",
1200 for (map<int, BlockData>::iterator mit = block_lists.begin();
1201 mit != block_lists.end(); mit++) {
1202 CubitMeshSet_multiIndex::iterator cubit_meshset_it =
1206 "Data inconsistency\n");
1208 switch (mit->second.bcType) {
1212 if ((
CubitBCType(mit->second.bcType) & cubit_meshset_it->getBcType())
1214 mit->second.iD == cubit_meshset_it->getMeshsetId()) {
1226 if (mit->second.matElastic.data.Young != -1) {
1228 mit->second.matElastic);
1230 if (mit->second.matTransIso.data.Youngp != -1) {
1232 mit->second.matTransIso);
1234 if (mit->second.matThermal.data.Conductivity != -1) {
1236 mit->second.matThermal);
1238 if (mit->second.matInterf.data.ft != -1) {
1240 mit->second.matInterf);
1244 if ((
CubitBCType(mit->second.bcType) & cubit_meshset_it->getBcType())
1246 mit->second.iD == cubit_meshset_it->getMeshsetId()) {
1255 if (mit->second.dispBc.data.flag1 || mit->second.dispBc.data.flag2 ||
1256 mit->second.dispBc.data.flag3 || mit->second.dispBc.data.flag4 ||
1257 mit->second.dispBc.data.flag5 || mit->second.dispBc.data.flag6) {
1258 if (mit->second.dispBc.data.flag1 ==
'0')
1259 mit->second.dispBc.data.flag1 = 0;
1260 if (mit->second.dispBc.data.flag1 ==
'N')
1261 mit->second.dispBc.data.flag1 = 0;
1262 if (mit->second.dispBc.data.flag1)
1263 mit->second.dispBc.data.flag1 = 1;
1264 if (mit->second.dispBc.data.flag2 ==
'0')
1265 mit->second.dispBc.data.flag2 = 0;
1266 if (mit->second.dispBc.data.flag2 ==
'N')
1267 mit->second.dispBc.data.flag2 = 0;
1268 if (mit->second.dispBc.data.flag2)
1269 mit->second.dispBc.data.flag2 = 1;
1270 if (mit->second.dispBc.data.flag3 ==
'0')
1271 mit->second.dispBc.data.flag3 = 0;
1272 if (mit->second.dispBc.data.flag3 ==
'N')
1273 mit->second.dispBc.data.flag3 = 0;
1274 if (mit->second.dispBc.data.flag3)
1275 mit->second.dispBc.data.flag3 = 1;
1276 if (mit->second.dispBc.data.flag4 ==
'0')
1277 mit->second.dispBc.data.flag4 = 0;
1278 if (mit->second.dispBc.data.flag4 ==
'N')
1279 mit->second.dispBc.data.flag4 = 0;
1280 if (mit->second.dispBc.data.flag4)
1281 mit->second.dispBc.data.flag4 = 1;
1282 if (mit->second.dispBc.data.flag5 ==
'0')
1283 mit->second.dispBc.data.flag5 = 0;
1284 if (mit->second.dispBc.data.flag5 ==
'N')
1285 mit->second.dispBc.data.flag5 = 0;
1286 if (mit->second.dispBc.data.flag5)
1287 mit->second.dispBc.data.flag5 = 1;
1288 if (mit->second.dispBc.data.flag6 ==
'0')
1289 mit->second.dispBc.data.flag6 = 0;
1290 if (mit->second.dispBc.data.flag6 ==
'N')
1291 mit->second.dispBc.data.flag6 = 0;
1292 if (mit->second.dispBc.data.flag6)
1293 mit->second.dispBc.data.flag6 = 1;
1295 mit->second.dispBc);
1297 if (mit->second.forceBc.data.value1 != 0 ||
1298 mit->second.forceBc.data.value2 != 0) {
1300 mit->second.forceBc);
1303 if (mit->second.temperatureBc.data.flag1) {
1304 if (mit->second.temperatureBc.data.flag1 ==
'0')
1305 mit->second.temperatureBc.data.flag1 = 0;
1306 if (mit->second.temperatureBc.data.flag1 ==
'N')
1307 mit->second.temperatureBc.data.flag1 = 0;
1308 if (mit->second.temperatureBc.data.flag1)
1309 mit->second.temperatureBc.data.flag1 = 1;
1311 mit->second.temperatureBc);
1315 if ((
CubitBCType(mit->second.bcType) & cubit_meshset_it->getBcType())
1317 mit->second.iD == cubit_meshset_it->getMeshsetId()) {
1326 if (mit->second.pressureBc.data.value1 != 0) {
1327 if (mit->second.pressureBc.data.flag2 ==
'0')
1328 mit->second.pressureBc.data.flag2 = 0;
1329 if (mit->second.pressureBc.data.flag2 ==
'N')
1330 mit->second.pressureBc.data.flag2 = 0;
1331 if (mit->second.pressureBc.data.flag2)
1332 mit->second.pressureBc.data.flag2 = 1;
1334 mit->second.pressureBc);
1337 if (mit->second.heatFluxBc.data.value1 != 0) {
1338 if (mit->second.heatFluxBc.data.flag1 ==
'0')
1339 mit->second.heatFluxBc.data.flag1 = 0;
1340 if (mit->second.heatFluxBc.data.flag1 ==
'N')
1341 mit->second.heatFluxBc.data.flag1 = 0;
1342 if (mit->second.heatFluxBc.data.flag1)
1343 mit->second.heatFluxBc.data.flag1 = 1;
1345 mit->second.heatFluxBc);
1348 if (mit->second.cfgBc.data.type != 0) {
1349 CHKERR setBcData(mit->second.bcType, mit->second.iD, mit->second.cfgBc);
1354 "Not yet implemented type\n");
1358 for (
auto set_attr : block_set_attributes) {
1360 if (set_attr.second.numberOfAttributes > 0) {
1361 MOFEM_LOG(
"MeshsetMngSelf", Sev::verbose)
1362 <<
"Set attributes to blockset " << set_attr.second.nAme;
1363 set_attr.second.aTtr.resize(set_attr.second.numberOfAttributes);
1365 set_attr.second.aTtr);