Kaynağa Gözat

9.8网格划分

liuqiao 2 yıl önce
ebeveyn
işleme
f02168a912

+ 21 - 1
src/views/index/HCFDLab/fileupload.vue

@@ -116,6 +116,23 @@ export default {
         })
         .catch((err) => {});
     },
+    // hcfd网格划分文件上传绑定
+     bindmesh(meshFileId,typeo) {
+      let solverConfigId = sessionStorage.getItem("solverConfigid");
+      let params = {
+        transCode: "MESH01",
+        pid: this.projectId,
+       geometryFileId: meshFileId,
+      geometryFileType:typeo,
+      };
+
+      request(params)
+        .then((res) => {
+          console.log("绑定成功");
+          this.mapbc();
+        })
+        .catch((err) => {});
+    },
     //调用c0003
     mapbc() {
       let paramsdata = JSON.parse(sessionStorage.getItem("params"));
@@ -279,7 +296,10 @@ export default {
                 v_this.bindugrid(response.bfid);
                 }else if (file.ext == "mapbc"){
                      v_this.bindmapbc(response.bfid);
-                }else{
+                }else if (file.ext == "igs"){
+                     v_this.bindmesh(response.bfid,'igs');
+                }else
+                {
                     
                 }
               });

+ 274 - 81
src/views/index/HCFDLab/index.vue

@@ -598,6 +598,23 @@
       </div>
     <div class="selecr">
       <el-form>
+           <el-form-item
+            label="格式选择"
+            :label-width="formLabelWidth5"
+          >
+            <el-select
+              v-model="objmesh.strResultFormat"
+              placeholder="请选择"
+            >
+              <el-option
+                v-for="item in strResultFormatlist"
+                :key="item.value"
+                :label="item.name"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
           <el-form-item
             label="划分类型"
             :label-width="formLabelWidth5"
@@ -605,6 +622,7 @@
             <el-select
               v-model="meshval"
               placeholder="请选择"
+              @change="Partitiontype"
             >
               <el-option
                 v-for="item in meshvallist"
@@ -636,7 +654,7 @@
             :label-width="formLabelWidth5"
           >
             <el-select
-              v-model="meshval1"
+              v-model="objmesh.surfParam.surfStyle"
               placeholder="请选择"
             >
               <el-option
@@ -647,7 +665,8 @@
               >
               </el-option>
             </el-select>
-          </el-form-item><el-form-item
+          </el-form-item>
+          <el-form-item
             label="模式类型"
             :label-width="formLabelWidth5"
           >
@@ -664,54 +683,93 @@
               </el-option>
             </el-select>
           </el-form-item>
-             <div class="radio_text text_color liangf" v-if="patternval=='1'">
+             <div class="radio_text text_color liangf" v-if="patternval=='1'" style="display:none">
               <div class="classfelx" style="text-align: center;">
-                <el-radio
-                      v-model="parameterObj.nmlParam.noninertial_Reference_Frame"
+                <el-checkbox 
+                      v-model="setface"
                       label="on"
-                      >面设置大小</el-radio>
+                      >面设置大小</el-checkbox >
                   </div>
                     <div class="classfelx">
-                    <el-radio
-                      v-model="parameterObj.nmlParam.noninertial_Reference_Frame"
+                    <el-checkbox 
+                      v-model="meshbrim"
                       label="off"
-                      >边设置大小</el-radio
+                      >边设置大小</el-checkbox 
                     >
                     </div>
             </div>
+             <div class='selecttype' v-if="setface==true">
+              <span class="meshcalss"> <el-checkbox v-model="facecheckbox" label="局部面Id设置大小" @change="facechange"></el-checkbox></span>
+                <div class="listbtn"> 
+            <el-button plain class="anniu">添加</el-button>
+              <el-button plain class="anniu">删除</el-button>
+              <el-button plain class="anniu">插入</el-button>
+            </div>
+            <el-form>
+              <el-table
+            :data="meshtableData"
+            style="width: 100%"
+             border
+            >
+            <el-table-column
+              type="index"
+              width="50">
+            </el-table-column>
+            <el-table-column  align="center" label="ID">
+              <!-- //slot-scope="scope" -->
+              <template slot-scope="scope" >
+                    <el-input v-model="scope.id" autocomplete="off"></el-input>
+              </template>
+            </el-table-column>
+              <el-table-column  align="center" label="大小">
+              <template slot-scope="scope">
+                    <el-input v-model="scope.da" autocomplete="off"></el-input>
+              </template>
+            </el-table-column>
+              </el-table>
+            </el-form>
+              </div>
+                <div class='selecttype'  v-if="meshbrim==true">
+              <span class="meshcalss"> <el-checkbox v-model="facecheckbox" label="局部边Id设置大小" @change="facechange"></el-checkbox></span>
+                   <div class="listbtn"> 
+            <el-button plain class="anniu">添加</el-button>
+              <el-button plain class="anniu">删除</el-button>
+              <el-button plain class="anniu">插入</el-button>
+            </div>
+              </div>
         <el-form-item label="最大尺寸" :label-width="formLabelWidth5">
-      <el-input v-model="form.name" autocomplete="off"></el-input>
+      <el-input v-model="objmesh.surfParam.max_size" autocomplete="off"></el-input>
     </el-form-item>
       <el-form-item label="最小尺寸" :label-width="formLabelWidth5">
-      <el-input v-model="form.name" autocomplete="off"></el-input>
+      <el-input v-model="objmesh.surfParam.min_size" autocomplete="off"></el-input>
     </el-form-item>
       <el-form-item label="相邻网格边比率" :label-width="formLabelWidth5">
       <el-input v-model="form.name" autocomplete="off"></el-input>
     </el-form-item>
       <el-form-item label="全局几何大小" :label-width="formLabelWidth5">
-      <el-input v-model="form.name" autocomplete="off"></el-input>
+      <el-input v-model="objmesh.surfParam.global_physical_size" autocomplete="off"></el-input>
     </el-form-item>
      <div v-if="meshface=='几何尺寸模型'">
           <el-form-item label="弦误差" :label-width="formLabelWidth5">
-      <el-input v-model="form.name" autocomplete="off"></el-input>
+      <el-input v-model="objmesh.surfParam1.chordal_error" autocomplete="off"></el-input>
     </el-form-item>
           <el-form-item label="逼近角度" :label-width="formLabelWidth5">
-      <el-input v-model="form.name" autocomplete="off"></el-input>
+      <el-input v-model="objmesh.surfParam1.geometric_approximation_angle" autocomplete="off"></el-input>
     </el-form-item>
     </div>
        <div class='selecttype'>
               <span class="meshcalss">优化设置选择</span>
-                <el-checkbox-group v-model="checkListset" @change="checksetchange">
-             <el-checkbox label="纠正表面相交"></el-checkbox>
-            <el-checkbox label="优化网络" :disabled='disabledset'></el-checkbox>
-           <el-checkbox label="移除重复CAD面"></el-checkbox>
-          </el-checkbox-group>
+                <!-- <el-checkbox-group @change="checksetchange"> -->
+             <el-checkbox v-model="objmesh.surfParam2.correct_surface_intersections" true-label="yes"  false-label="no"  @change="checksetchange"  label="纠正表面相交"></el-checkbox>
+            <el-checkbox v-model="objmesh.surfParam2.optimisation" true-label="yes"  false-label="no" label="优化网络" :disabled='disabledset'></el-checkbox>
+           <el-checkbox v-model="objmesh.surfParam2.remove_duplicate_cad_faces" true-label="yes"  false-label="no" label="移除重复CAD面"></el-checkbox>
+          <!-- </el-checkbox-group> -->
           <el-form-item
             label="单元阶数选择:"
             :label-width="formLabelWidth5"
           >
             <el-select
-              v-model="eleval"
+              v-model="objmesh.surfParam2.element_order"
               placeholder="请选择"
             >
               <el-option
@@ -724,7 +782,7 @@
             </el-select>
           </el-form-item>
              <el-form-item label="雅可比数值:" :label-width="formLabelWidth5">
-          <el-input v-model="form.name" autocomplete="off"></el-input>
+          <el-input v-model="objmesh.surfParam2.scaled_jacobian_threshold_value" autocomplete="off"></el-input>
         </el-form-item>    
           </div>
           <div class='selecttype'>
@@ -734,15 +792,15 @@
                 <div class="radio_text text_color liangf" style="line-height: 160px;">
               <div class="classfelx" style="text-align: center;">
                 <el-radio
-                      v-model="jiegradio"
-                      label="结构"
+                      v-model="cleanerParam1.use_default_settings_for"
+                      label="structure"
                       :disabled="disabledface"
                       >结构</el-radio>
                   </div>
                     <div class="classfelx">
                     <el-radio
-                      v-model="jiegradio"
-                      label="流体"
+                      v-model="cleanerParam1.use_default_settings_for"
+                      label="fluid"
                        :disabled="disabledface"
                       >流体</el-radio
                     >
@@ -750,22 +808,22 @@
                     </div>
               </div>
               <div class="jiegright">
-                  <div class='selecttype' v-if="jiegradio=='结构'">
-                 <span class="meshcalss "> <el-checkbox    :disabled="disabledface"  label="结构使用默认值" v-model="jiegradioval"></el-checkbox></span>
-                   <el-form-item label="重叠角度" :label-width="formLabelWidth2" :disabled='jiegradioval'>
-                  <el-input v-model="form.name" autocomplete="off" ></el-input>
+                  <div class='selecttype' v-if="cleanerParam1.use_default_settings_for=='structure'">
+                 <span class="meshcalss "> <el-checkbox    :disabled="disabledface"  label="结构使用默认值" v-model="jiegradioval" @change="jiegchange"></el-checkbox></span>
+                   <el-form-item  label="重叠角度" :label-width="formLabelWidth2" >
+                  <el-input v-model="cleanerParam1.overlap_angle" autocomplete="off" :disabled='jiegdisabled' ></el-input>
                 </el-form-item>
-                  <el-form-item label="长度阀值" :label-width="formLabelWidth2" :disabled='jiegradioval'>
-                <el-input v-model="form.name" autocomplete="off"></el-input>
+                  <el-form-item label="长度阀值" :label-width="formLabelWidth2" >
+                <el-input v-model="cleanerParam1.resolution_length" autocomplete="off" :disabled='jiegdisabled'></el-input>
               </el-form-item>
                </div>
                 <div class='selecttype' v-else>
                  <span class="meshcalss"> <el-checkbox label="流体使用默认值" v-model="jiegradioval"></el-checkbox></span>
-                   <el-form-item label="重叠角度" :label-width="formLabelWidth2 " :disabled='jiegradioval'>
-                  <el-input v-model="form.name" autocomplete="off"></el-input>
+                   <el-form-item label="重叠角度" :label-width="formLabelWidth2 ">
+                  <el-input  v-model="cleanerParam1.overlap_angle" autocomplete="off"  :disabled='jiegdisabled'></el-input>
                 </el-form-item>
-                  <el-form-item label="长度阀值" :label-width="formLabelWidth2"  :disabled='jiegradioval'>
-                <el-input v-model="form.name" autocomplete="off"></el-input>
+                  <el-form-item label="长度阀值" :label-width="formLabelWidth2" >
+                <el-input v-model="cleanerParam1.resolution_length" autocomplete="off"  :disabled='jiegdisabled'></el-input>
               </el-form-item>
                </div>
               </div>
@@ -779,7 +837,7 @@
             :label-width="formLabelWidth5"
           >
             <el-select
-              v-model="traval"
+              v-model="tetraParam1.components"
               placeholder="请选择"
             >
               <el-option
@@ -792,7 +850,7 @@
             </el-select>
           </el-form-item>
              <el-form-item label="级配" :label-width="formLabelWidth5" >
-                <el-input v-model="form.name" autocomplete="off"></el-input>
+                <el-input v-model="tetraParam1.gradation" autocomplete="off"></el-input>
               </el-form-item>
               </div>
                  <div v-if="meshval=='2'">
@@ -801,7 +859,7 @@
             :label-width="formLabelWidth5"
           >
                      <el-select
-              v-model="hexaval"
+              v-model="hexaParam1.components"
               placeholder="请选择"
             >
               <el-option
@@ -820,7 +878,7 @@
             :label-width="formLabelWidth5"
           >
                      <el-select
-              v-model="mixval"
+              v-model="hybridParam1.element_generation"
               placeholder="请选择"
             >
               <el-option
@@ -837,7 +895,7 @@
             :label-width="formLabelWidth5"
           >
                      <el-select
-              v-model="layerval"
+              v-model="hybridParam1.normal_direction"
               placeholder="请选择"
             >
               <el-option
@@ -850,32 +908,33 @@
             </el-select>
                </el-form-item>
                 <el-form-item label="边界层层数" :label-width="formLabelWidth5" >
-                <el-input v-model="form.name" autocomplete="off"></el-input>
+                <el-input v-model="hybridParam1.number_of_boundary_layers" autocomplete="off"></el-input>
               </el-form-item>
                <el-form-item label="边界层增长参数" :label-width="formLabelWidth5" >
-                <el-input v-model="form.name" autocomplete="off"></el-input>
+                <el-input v-model="hybridParam1.boundary_layer_geometric_progression" autocomplete="off"></el-input>
               </el-form-item>
                <el-form-item label="初始层高度" :label-width="formLabelWidth5" >
-                <el-input v-model="form.name" autocomplete="off"></el-input>
+                <el-input v-model="hybridParam1.boundary_layer_global_initial_height" autocomplete="off"></el-input>
               </el-form-item>
                  </div>
-              <div class="heigeinput">
+              <!-- <div class="heigeinput">
                 <div class="listbtn"> 
                     <el-button plain class="anniu">写入参数文件</el-button>
                       <el-button plain class="anniu">进行网格划分</el-button>
                     </div>
-              </div> 
+              </div>  -->
       </el-form>
     </div>
       <div
         slot="footer"
         class="dialog-footer"
       >
+      <!-- //dialog.mesh_generation = false, -->
         <el-button @click="dialog.mesh_generation = false">{{ $t("HCFD.file.cancel")}}</el-button>
         <el-button
           type="primary"
-          @click="dialog.mesh_generation = false"
-        >{{ $t("HCFD.file.ok")}}</el-button>
+          @click="meshSplitok()"
+        >网格划分</el-button>
       </div>
     </el-dialog>
     <!-- 缩放 -->
@@ -4695,11 +4754,75 @@ export default {
 
   data() {
     return {
+   objmesh:{
+    strResultFormat:".vtk",
+    surfParam:{
+        max_size:"10",
+        min_size:"1",
+        surfStyle:"triangle",
+        global_physical_size:"1.0"
+    },
+    surfParam1:{
+        gradation:"1",
+        anisotropic_ratio:"0",
+        chordal_error:"0",
+        debug:"no",
+        closed_geometry:"no",
+        enforce_cad_edge_sizes:"1",
+        force_bad_surface_element_removal:"no",
+        discard_input_topology:"no",
+        create_tag_on_collision:"yes"
+    },
+    surfParam2:{
+        element_order:"linear",
+        remove_duplicate_cad_faces:"yes",
+        scaled_jacobian_threshold_value:"0.001",
+        optimisation:"no",
+        correct_surface_intersections:"yes"
+    },
+    cleanerParam:null,
+     tetraParam:null,
+    hexaParam:null,
+    hybridParam:null,
+    },
+     cleanerParam1:{
+        folding_angle:"1",
+        min_hole_size:"1",
+        overlap_distance:"1",
+        use_default_settings_for:"structure",
+        overlap_angle:"15",
+        resolution_length:"5"
+    },
+    tetraParam1:{
+        components:"outside_components",
+         gradation:"1.0"
+    },
+    hexaParam1:{
+        components:"all",
+    },
+    hybridParam1:{
+        element_generation:"tetra_dominant",
+        normal_direction:'1',
+        boundary_layer_global_initial_height:'',
+        boundary_layer_geometric_progression:'',
+        number_of_boundary_layers:'',
+    },
+    
+      meshtableData:[{
+        id:0,
+        da:1
+      },{
+        id:2,
+        da:33
+      },
+      ],
+      setface:false,
+      meshbrim:false,
       meshface:'物理尺寸模型',
       jiegradioval:false,
-      facecheckbox:false,
-      disabledface:true,
-      jiegradioval:false,
+      facecheckbox:true,
+      disabledface:false,
+      jiegdisabled:true,
        jiegradio:"结构",
       checkListset:['纠正表面相交'],
       disabledset:true,
@@ -5042,53 +5165,59 @@ export default {
         { value: "laminar", name: "层流" },
         { value: "turbulent", name: "湍流" },
       ],
-        meshvallist:[
-        { value: "0", name: "面网格" },
+     strResultFormatlist:[
+          { value: ".vtk", name: ".vtk" },
+        { value: ".mesh", name: ".mesh" },
+        { value: ".ugrid", name: ".ugrid" },
+        { value: ".bdf", name: ".bdf" },
+        { value: ".neu", name: ".neu" },
+   
+      ],
+      meshval:'0',
+      meshvallist:[
+          { value: "0", name: "面网格" },
         { value: "1", name: "四面体网格" },
         { value: "2", name: "六面体网格" },
         { value: "3", name: "混合网格" },
       ],
-       meshval:'0',
          meshvallist1:[
-        { value: "0", name: "三角行" },
-        { value: "1", name: "四边形" },
-        { value: "2", name: "全四边形" },
-        { value: "3", name: "局部" },
+        { value: "triangle", name: "三角行" },
+        { value: "quad_dominant", name: "四边形" },
+        { value: "full_quad", name: "全四边形" },
+        { value: "local", name: "局部" },
       ],
        meshval1:'0',
        patternlist:[
-        { value: "0", name: "global" },
-        { value: "1", name: "local" },
-        { value: "2", name: "none" },
+        { value: "global", name: "global" },
+        { value: "local", name: "local" },
+        { value: "none", name: "none" },
       ],
        patternval:'0',
         elsementlist:[
-        { value: "0", name: "linear" },
-        { value: "1", name: "quadratic" },
+        { value: "linear", name: "linear" },
+        { value: "quadratic", name: "quadratic" },
       ],
        eleval:'0',
        tetrahedron:[
-        { value: "0", name: "outside_components" },
-        { value: "1", name: "all" },
+        { value: "outside_components", name: "outside_components" },
+        { value: "all", name: "all" },
       ],
-       traval:'0',
        hexahedral:[
-        { value: "0", name: "outside_components" },
-        { value: "1", name: "outside_skin_only" },
-        { value: "2", name: "all" },
+        { value: "outside_components", name: "outside_components" },
+        { value: "outside_skin_only", name: "outside_skin_only" },
+        { value: "all", name: "all" },
       ],
-      hexaval:'0',
-         mixture :[
-         { value: "0", name: "tetra_dominant" },
-        { value: "1", name: "hexa_dominant" },
-        { value: "2", name: "extrusion_only" },
-        { value: "3", name: "cartesian_core" },
+         mixture:[
+         { value: "tetra_dominant", name: "tetra_dominant" },
+        { value: "hexa_dominant", name: "hexa_dominant" },
+        { value: "extrusion_only", name: "extrusion_only" },
+        { value: "cartesian_core", name: "cartesian_core" },
       ],
       mixval:'0',
       hemxval:'0',
         boundarylayer   :[
-        { value: "0", name: "正" },
-        { value: "1", name: "负" },
+        { value: "1", name: "正" },
+        { value: "-1", name: "负" },
        
       ],
       layerval:'0',
@@ -7236,23 +7365,87 @@ export default {
         })
         .catch((err) => {});
     },
+    // 划分类型按钮
+    Partitiontype(){
+     
+  if(this.meshval=='1'){
+      this.objmesh.tetraParam=this.tetraParam1;
+      this.objmesh.hexaParam=null;
+      this.objmesh.hybridParam=null;
+    }else if(this.meshval=='2'){
+      this.objmesh.tetraParam=null;
+      this.objmesh.hexaParam=this.hexaParam1;
+      this.objmesh.hybridParam=null;
+    }else if(this.meshval=='3'){
+      this.objmesh.tetraParam=null;
+      this.objmesh.hexaParam=null;
+      this.objmesh.hybridParam=this.hybridParam1;
+    }else{
+      this.objmesh.tetraParam=null;
+      this.objmesh.hexaParam=null;
+      this.objmesh.hybridParam=null;
+    }
+    },
     checksetchange(val){
-      if(val.includes("纠正表面相交")){
+       console.log(val);
+       let correct_surface_intersections=this.objmesh.surfParam2.correct_surface_intersections;
+      if(correct_surface_intersections=='yes'){
         this.disabledset=true;
-     let myArray=this.checkListset;
-      this.checkListset = myArray.filter(function(item) {return item !== "优化网络"
-});
+      this.objmesh.surfParam2.optimisation='no';
       }else{
          this.disabledset=false;
       }
     },
    facechange(){
+     let that=this;
       if(this.facecheckbox){
+  
         this.disabledface=false;
+          this.objmesh.cleanerParam=this.cleanerParam1;
       }else{
+        this.objmesh.cleanerParam=null;
         this.disabledface=true;
       }
-   }
+   },
+   jiegchange(){
+  
+     if(this.jiegradioval==true){
+       this.objmesh.cleanerParam.overlap_angle=  this.cleanerParam1.overlap_angle
+       this.objmesh.cleanerParam.resolution_length= this.cleanerParam1.resolution_length
+       this.jiegdisabled=false;
+     }else{
+       this.jiegdisabled=true;
+    
+     }
+   },
+  //上传网格划分参数接口
+   meshSplitok() {
+     if(this.facecheckbox==false){
+       this.objmesh.cleanerParam=null
+     }else{
+          this.objmesh.cleanerParam=this.cleanerParam1;
+     if(this.jiegradioval==true){
+         this.objmesh.cleanerParam.overlap_angle=  this.cleanerParam1.overlap_angle;
+       this.objmesh.cleanerParam.resolution_length= this.cleanerParam1.resolution_length;
+     }else{
+     this.objmesh.cleanerParam.overlap_angle= '';
+       this.objmesh.cleanerParam.resolution_length= '';
+     }
+      }
+      console.log(this.objmesh);
+      const params = {
+        transCode: "AFT001",
+        pid: this.project.projectId,
+        solverConfigId: this.solverConfigid,
+        action:"meshSplit",
+        paramJson:JSON.stringify(this.objmesh),
+      };
+      request(params)
+        .then((res) => {
+          console.log(res);
+        })
+        .catch((err) => {});
+    },
   },
   watch: {
     "animationobj.currentstep"() {