|
@@ -89,10 +89,10 @@ void CRWriteFile::WriteNeuFoamFile(const Spa3dpm::Mesh &sub, const char *fileNam
|
|
|
|
|
|
|
|
|
int cell_list_total_cnt = Tri_cell_list_total_cnt + \
|
|
|
- Quad_cell_list_total_cnt + \
|
|
|
- Tetra_cell_list_total_cnt + \
|
|
|
- hexa_cell_list_total_cnt + \
|
|
|
- Prism_cell_list_total_cnt;
|
|
|
+ Quad_cell_list_total_cnt + \
|
|
|
+ Tetra_cell_list_total_cnt + \
|
|
|
+ hexa_cell_list_total_cnt + \
|
|
|
+ Prism_cell_list_total_cnt;
|
|
|
|
|
|
int idIndex = 1;
|
|
|
if (cells_count != 0)
|
|
@@ -109,7 +109,7 @@ void CRWriteFile::WriteNeuFoamFile(const Spa3dpm::Mesh &sub, const char *fileNam
|
|
|
int dd[8];
|
|
|
sub.HexahedronVertices(kk, dd);
|
|
|
os << QString("%1 4 8 %2 %3 %4 %5 %6 %7 %8").arg(idIndex).arg(dd[0]).arg(dd[4]).arg(dd[1]).arg(dd[5])\
|
|
|
- .arg(dd[3]).arg(dd[7]).arg(dd[2])<< endl;
|
|
|
+ .arg(dd[3]).arg(dd[7]).arg(dd[2])<< endl;
|
|
|
os<<QString("%1").arg(dd[6]) << endl;
|
|
|
}
|
|
|
for (int kk = 1; kk <= PrismCount; ++kk, idIndex++)
|
|
@@ -117,14 +117,14 @@ void CRWriteFile::WriteNeuFoamFile(const Spa3dpm::Mesh &sub, const char *fileNam
|
|
|
int dd[6];
|
|
|
sub.PrismVertices(kk, dd);
|
|
|
os << QString("%1 5 6 %2 %3 %4 %5 %6 %7").arg(idIndex).arg(dd[0]).arg(dd[2]).arg(dd[1]).arg(dd[3] )\
|
|
|
- .arg(dd[5]).arg(dd[4]) << endl;
|
|
|
+ .arg(dd[5]).arg(dd[4]) << endl;
|
|
|
}
|
|
|
for (int kk = 1; kk <= pyCount; ++kk, idIndex++)
|
|
|
{
|
|
|
int dd[5];
|
|
|
sub.PyramidVertices(kk, dd);
|
|
|
os << QString("%1 7 5 %2 %3 %4 %5 %6").arg(idIndex).arg(dd[0]).arg(dd[1]).arg(dd[3]).arg(dd[2])\
|
|
|
- .arg(dd[4]) << endl;
|
|
|
+ .arg(dd[4]) << endl;
|
|
|
}
|
|
|
|
|
|
os << "ENDOFSECTION" << endl;
|
|
@@ -190,10 +190,10 @@ void CRWriteFile::WirteVtkFoamFile(const Spa3dpm::Mesh &sub, const char *fileNam
|
|
|
|
|
|
int cells_count = TriangleCount + QuadCount + TetraCount + hexaCount + PrismCount;
|
|
|
int cell_list_total_cnt = Tri_cell_list_total_cnt + \
|
|
|
- Quad_cell_list_total_cnt + \
|
|
|
- Tetra_cell_list_total_cnt + \
|
|
|
- hexa_cell_list_total_cnt + \
|
|
|
- Prism_cell_list_total_cnt;
|
|
|
+ Quad_cell_list_total_cnt + \
|
|
|
+ Tetra_cell_list_total_cnt + \
|
|
|
+ hexa_cell_list_total_cnt + \
|
|
|
+ Prism_cell_list_total_cnt;
|
|
|
if (cells_count != 0)
|
|
|
{
|
|
|
os << QString("CELLS %1 %2").arg(cells_count).arg(cell_list_total_cnt) << endl;
|
|
@@ -220,14 +220,14 @@ void CRWriteFile::WirteVtkFoamFile(const Spa3dpm::Mesh &sub, const char *fileNam
|
|
|
int dd[8];
|
|
|
sub.HexahedronVertices(kk, dd);
|
|
|
os << QString("8 %1 %2 %3 %4 %5 %6 %7 %8").arg(dd[0] - 1).arg(dd[1] - 1).arg(dd[2] - 1).arg(dd[3] - 1)\
|
|
|
- .arg(dd[4] - 1).arg(dd[5] - 1).arg(dd[6] - 1).arg(dd[7] - 1) << endl;
|
|
|
+ .arg(dd[4] - 1).arg(dd[5] - 1).arg(dd[6] - 1).arg(dd[7] - 1) << endl;
|
|
|
}
|
|
|
for (int kk = 1; kk <= PrismCount; ++kk)
|
|
|
{
|
|
|
int dd[6];
|
|
|
sub.PrismVertices(kk, dd);
|
|
|
os << QString("6 %1 %2 %3 %4 %5 %6").arg(dd[0] - 1).arg(dd[1] - 1).arg(dd[2] - 1).arg(dd[3] - 1)\
|
|
|
- .arg(dd[4] - 1).arg(dd[5] - 1) << endl;
|
|
|
+ .arg(dd[4] - 1).arg(dd[5] - 1) << endl;
|
|
|
}
|
|
|
|
|
|
os << QString("CELL_TYPES %1").arg(cells_count) << endl;
|
|
@@ -317,10 +317,10 @@ void CRWriteFile::WirteBDFFoamFile(const Spa3dpm::Mesh &sub, const char *fileNam
|
|
|
|
|
|
int cells_count = TriangleCount + QuadCount + TetraCount + hexaCount + PrismCount;
|
|
|
int cell_list_total_cnt = Tri_cell_list_total_cnt + \
|
|
|
- Quad_cell_list_total_cnt + \
|
|
|
- Tetra_cell_list_total_cnt + \
|
|
|
- hexa_cell_list_total_cnt + \
|
|
|
- Prism_cell_list_total_cnt;
|
|
|
+ Quad_cell_list_total_cnt + \
|
|
|
+ Tetra_cell_list_total_cnt + \
|
|
|
+ hexa_cell_list_total_cnt + \
|
|
|
+ Prism_cell_list_total_cnt;
|
|
|
|
|
|
os << "$ Pset: will be imported as: " << endl;
|
|
|
|
|
@@ -588,21 +588,21 @@ void CRWriteFile::WirteUgridFoamFile(const Spa3dpm::Mesh &sub, const char *fileN
|
|
|
int dd[5];
|
|
|
sub.PyramidVertices(kk, dd);
|
|
|
os << QString("%1 %2 %3 %4 %5").arg(dd[0]).arg(dd[1]).arg(dd[2]).arg(dd[3])\
|
|
|
- .arg(dd[4]) << endl;
|
|
|
+ .arg(dd[4]) << endl;
|
|
|
}
|
|
|
for (int kk = 1; kk <= PrismCount; ++kk)
|
|
|
{
|
|
|
int dd[6];
|
|
|
sub.PrismVertices(kk, dd);
|
|
|
os << QString("%1 %2 %3 %4 %5 %6").arg(dd[0]).arg(dd[1]).arg(dd[2]).arg(dd[3])\
|
|
|
- .arg(dd[4]).arg(dd[5]) << endl;
|
|
|
+ .arg(dd[4]).arg(dd[5]) << endl;
|
|
|
}
|
|
|
for (int kk = 1; kk <= hexaCount; ++kk)
|
|
|
{
|
|
|
int dd[8];
|
|
|
sub.HexahedronVertices(kk, dd);
|
|
|
os << QString("%1 %2 %3 %4 %5 %6 %7 %8").arg(dd[0]).arg(dd[1]).arg(dd[2]).arg(dd[3])\
|
|
|
- .arg(dd[4]).arg(dd[5]).arg(dd[6]).arg(dd[7]) << endl;
|
|
|
+ .arg(dd[4]).arg(dd[5]).arg(dd[6]).arg(dd[7]) << endl;
|
|
|
}
|
|
|
os << endl;
|
|
|
file.close();
|
|
@@ -665,10 +665,10 @@ bool CRWriteFile::ReadXmlParamFile(DPM_ADIParam &ADIParam, const char*fileName)
|
|
|
//读取结果文件格式输出
|
|
|
if (titleParam == "ResultFormat") {
|
|
|
strParamTmp = m.attribute("Format");
|
|
|
- if (!strParamTmp.isEmpty())
|
|
|
- {
|
|
|
- ADIParam.strResultFormat = strParamTmp;
|
|
|
- }
|
|
|
+ if (!strParamTmp.isEmpty())
|
|
|
+ {
|
|
|
+ ADIParam.strResultFormat = strParamTmp;
|
|
|
+ }
|
|
|
}
|
|
|
//参数读取--面网格
|
|
|
else if (titleParam == "surfParam")
|
|
@@ -814,7 +814,7 @@ bool CRWriteFile::ReadXmlParamFile(DPM_ADIParam &ADIParam, const char*fileName)
|
|
|
QDomElement Physical_m0 = PhysicalNode0.toElement();
|
|
|
QDomNodeList list0 = Physical_m0.childNodes();
|
|
|
QString titlePhysicalParam0 = Physical_m0.tagName();//
|
|
|
- //PhysicalNode = PhysicalNode.nextSibling();//下一个兄弟节点
|
|
|
+ //PhysicalNode = PhysicalNode.nextSibling();//下一个兄弟节点
|
|
|
for (int ss = 0; ss < list0.count(); ++ss)
|
|
|
{
|
|
|
QDomNode PhysicalNode1 = list0.at(ss);
|
|
@@ -957,7 +957,7 @@ bool CRWriteFile::ReadXmlParamFile(DPM_ADIParam &ADIParam, const char*fileName)
|
|
|
|
|
|
}
|
|
|
printf("Read HexaParam Ok! \n");
|
|
|
-}
|
|
|
+ }
|
|
|
}
|
|
|
printf("nextSibling \n");
|
|
|
nNode= docElem.nextSibling();//下一个兄弟节点
|
|
@@ -967,3 +967,112 @@ bool CRWriteFile::ReadXmlParamFile(DPM_ADIParam &ADIParam, const char*fileName)
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: read adiparam from json
|
|
|
+ * @param: [out]adiparam [in] object
|
|
|
+ * @ret: bool
|
|
|
+ * @birth: created by czm in 20230829
|
|
|
+ */
|
|
|
+bool CRWriteFile::ReadXmlParam(DPM_ADIParam &ADIParam, boostJsonObject *object)
|
|
|
+{
|
|
|
+ if(!object)return false;
|
|
|
+ if(!object->da_struct->strResultFormat.empty())
|
|
|
+ ADIParam.strResultFormat = QString::fromStdString(object->da_struct->strResultFormat);
|
|
|
+ if(object->da_struct->surfParam0){
|
|
|
+ ADIParam.surfParam.max_size = QString::fromStdString(object->da_struct->surfParam->max_size);
|
|
|
+ ADIParam.surfParam.min_size = QString::fromStdString(object->da_struct->surfParam->min_size);
|
|
|
+ ADIParam.surfParam.SurfStyle = QString::fromStdString(object->da_struct->surfParam->SurfStyle);
|
|
|
+ ADIParam.surfParam.Global_physical_size = QString::fromStdString(object->da_struct->surfParam->Global_physical_size);
|
|
|
+ }
|
|
|
+ //surfparam1
|
|
|
+ if(object->da_struct->surfParam1){
|
|
|
+ ADIParam.surfParam.gradation = QString::fromStdString(object->da_struct->surfParam->gradation);
|
|
|
+ ADIParam.surfParam.anisotropic_ratio = QString::fromStdString(object->da_struct->surfParam->anisotropic_ratio);
|
|
|
+ ADIParam.surfParam.chordal_error = QString::fromStdString(object->da_struct->surfParam->chordal_error);
|
|
|
+ ADIParam.surfParam.geometric_approximation_angle = QString::fromStdString(object->da_struct->surfParam->geometric_approximation_angle);
|
|
|
+ ADIParam.surfParam.debug = QString::fromStdString(object->da_struct->surfParam->Debug);
|
|
|
+ ADIParam.surfParam.closed_geometry = QString::fromStdString(object->da_struct->surfParam->closed_geometry);
|
|
|
+ ADIParam.surfParam.enforce_cad_edge_sizes = QString::fromStdString(object->da_struct->surfParam->enforce_cad_edge_sizes);
|
|
|
+ ADIParam.surfParam.force_bad_surface_element_removal = QString::fromStdString(object->da_struct->surfParam->force_bad_surface_element_removal);
|
|
|
+ ADIParam.surfParam.discard_input_topology = QString::fromStdString(object->da_struct->surfParam->discard_input_topology);
|
|
|
+ ADIParam.surfParam.create_tag_on_collision = QString::fromStdString(object->da_struct->surfParam->create_tag_on_collision);
|
|
|
+ }
|
|
|
+ //surfparam2
|
|
|
+ if(object->da_struct->surfParam2){
|
|
|
+ ADIParam.surfParam.element_order = QString::fromStdString(object->da_struct->surfParam->element_order);
|
|
|
+ ADIParam.surfParam.remove_duplicate_cad_faces = QString::fromStdString(object->da_struct->surfParam->remove_duplicate_cad_faces);
|
|
|
+ ADIParam.surfParam.scaled_jacobian_threshold_value = QString::fromStdString(object->da_struct->surfParam->scaled_jacobian_threshold_value);
|
|
|
+ ADIParam.surfParam.optimisation = QString::fromStdString(object->da_struct->surfParam->optimisation);
|
|
|
+ ADIParam.surfParam.correct_surface_intersections = QString::fromStdString(object->da_struct->surfParam->correct_surface_intersections);
|
|
|
+ }
|
|
|
+#if 0
|
|
|
+ //mgPhysical
|
|
|
+ if(object->da_struct->mgPhysical_){
|
|
|
+ if(object->da_struct->mgPhysical_type == "physical"){
|
|
|
+ ADIParam.surfParam.physical_size_mode = QString::fromStdString(object->da_struct->surfParam->physical_size_mode);
|
|
|
+ if(ADIParam.surfParam.physical_size_mode == "local"){
|
|
|
+ ADIParam.surfParam.physicalSizeFaceId = QString::fromStdString(object->da_struct->surfParam->physicalSizeFaceId);
|
|
|
+ ADIParam.surfParam.physicalSizeEdgeId = QString::fromStdString(object->da_struct->surfParam->physicalSizeEdgeId);
|
|
|
+ ADIParam.surfParam.physicalSizePointId = QString::fromStdString(object->da_struct->surfParam->physicalSizePointId);
|
|
|
+ }
|
|
|
+ }else if(object->da_struct->mgPhysical_type == "param"){
|
|
|
+ ADIParam.surfParam.physicalSizeFaceId = QString::fromStdString(object->da_struct->surfParam->physicalSizeFaceId);
|
|
|
+ ADIParam.surfParam.physicalSizeEdgeId = QString::fromStdString(object->da_struct->surfParam->physicalSizeEdgeId);
|
|
|
+ ADIParam.surfParam.physicalSizePointId = QString::fromStdString(object->da_struct->surfParam->physicalSizePointId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //mgGeometry
|
|
|
+ if(object->da_struct->mgGeometry_){
|
|
|
+ if(object->da_struct->mgGeometry_type == "Geometry"){
|
|
|
+ ADIParam.surfParam.geometric_size_mode = QString::fromStdString(object->da_struct->surfParam->geometric_size_mode);
|
|
|
+ if(ADIParam.surfParam.geometric_size_mode == "local"){
|
|
|
+ ADIParam.surfParam.geometricSizeFaceId = QString::fromStdString(object->da_struct->surfParam->geometricSizeFaceId);
|
|
|
+ ADIParam.surfParam.geometricSizeEdgeId = QString::fromStdString(object->da_struct->surfParam->geometricSizeEdgeId);
|
|
|
+ ADIParam.surfParam.geometricSizePointId = QString::fromStdString(object->da_struct->surfParam->geometricSizePointId);
|
|
|
+ }
|
|
|
+ }else if(object->da_struct->mgGeometry_type == "param")
|
|
|
+ {
|
|
|
+ ADIParam.surfParam.physicalSizeFaceId = QString::fromStdString(object->da_struct->surfParam->physicalSizeFaceId);
|
|
|
+ ADIParam.surfParam.physicalSizeEdgeId = QString::fromStdString(object->da_struct->surfParam->physicalSizeEdgeId);
|
|
|
+ ADIParam.surfParam.physicalSizePointId = QString::fromStdString(object->da_struct->surfParam->physicalSizePointId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
+ //cleanerParam
|
|
|
+ if(object->da_struct->bCleanerSection){
|
|
|
+ ADIParam.bCleanerSection = object->da_struct->bCleanerSection;
|
|
|
+ ADIParam.clrParam.folding_angle = QString::fromStdString(object->da_struct->clrParam->folding_angle);
|
|
|
+ ADIParam.clrParam.min_hole_size = QString::fromStdString(object->da_struct->clrParam->min_hole_size);
|
|
|
+ ADIParam.clrParam.overlap_distance = QString::fromStdString(object->da_struct->clrParam->overlap_distance);
|
|
|
+ ADIParam.clrParam.use_default_settings_for = QString::fromStdString(object->da_struct->clrParam->use_default_settings_for);
|
|
|
+ ADIParam.clrParam.overlap_angle = QString::fromStdString(object->da_struct->clrParam->overlap_angle);
|
|
|
+ ADIParam.clrParam.resolution_length = QString::fromStdString(object->da_struct->clrParam->resolution_length);
|
|
|
+ }
|
|
|
+ //tetraparam
|
|
|
+ if(object->da_struct->TetraParam_){
|
|
|
+ ADIParam.tetraParam.components = QString::fromStdString(object->da_struct->tetraParam->components);
|
|
|
+ ADIParam.tetraParam.gradation = QString::fromStdString(object->da_struct->tetraParam->gradation);
|
|
|
+ ADIParam.tetraParam.min_size = QString::fromStdString(object->da_struct->tetraParam->min_size);
|
|
|
+ ADIParam.tetraParam.max_size = QString::fromStdString(object->da_struct->tetraParam->max_size);
|
|
|
+ //ADIParam.style = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ //hexaparam
|
|
|
+ if(object->da_struct->HexaParam_){
|
|
|
+ ADIParam.hexaParam.components = QString::fromStdString(object->da_struct->hexaParam->components);
|
|
|
+ ADIParam.hexaParam.min_size = QString::fromStdString(object->da_struct->hexaParam->min_size);
|
|
|
+ }
|
|
|
+
|
|
|
+ //hybrid
|
|
|
+ if(object->da_struct->HybridParaml_){
|
|
|
+ ADIParam.hybridParam.HybridStyle = QString::fromStdString(object->da_struct->hybridParam->HybridStyle);
|
|
|
+ //ADIParam.style = 3;
|
|
|
+ ADIParam.hybridParam.number_of_boundary_layers = QString::fromStdString(object->da_struct->hybridParam->number_of_boundary_layers);
|
|
|
+ ADIParam.hybridParam.normal_direction = QString::fromStdString(object->da_struct->hybridParam->normal_direction);
|
|
|
+ ADIParam.hybridParam.boundary_layer_global_initial_height = QString::fromStdString(object->da_struct->hybridParam->boundary_layer_global_initial_height);
|
|
|
+ ADIParam.hybridParam.boundary_layer_geometric_progression = QString::fromStdString(object->da_struct->hybridParam->boundary_layer_geometric_progression);
|
|
|
+ }
|
|
|
+ ADIParam.style = object->da_struct->style;
|
|
|
+ return true;
|
|
|
+}
|