Browse Source

修改优化器初始选中逻辑,修改优化器内容

tangjunhao 7 tháng trước cách đây
mục cha
commit
1cc42e947f

+ 47 - 6
src/views/home.vue

@@ -903,7 +903,7 @@
             <Xfoil/>
             <template #footer>
               <div class="dialog-footer">
-                <el-button type="info" @click="newxfiol">新建 </el-button>
+                <!-- <el-button type="info" @click="newxfoil">新建 </el-button> -->
                 <el-button type="info" @click="dialog.Xfiol = false">取消</el-button>
                 <el-button type="primary" @click="dialog.Xfiol = false">
                   确定
@@ -2150,7 +2150,7 @@ let dialog = ref({
   agency: false,
   optimizer: false,
   jboptimizer: false,
-  dboptimize: false,
+  dboptimizer: false,
   tboptimizer: false,
   isADflow:false,
   lookover:false,
@@ -2345,6 +2345,7 @@ const optimizerfalse = (val) => {
   if (val == '优化器') {
     // dialog.value.optimizer = true;
     activeadf.value='代理优化器';
+    initoptimize();
     dialog.value.optgroup = true;
   } else if (val == '参数化') {
     activeadf.value='CST'
@@ -2429,6 +2430,44 @@ const optimizerfalse = (val) => {
 
 }
 
+const initoptimize = () => {
+  console.log('优化器chushihua');
+  const params1 = {
+    transCode:'MDO0018',
+    pid: pid.value,
+  }
+  const params2 = {
+    transCode:'MDO0031',
+    pid: pid.value,
+  }
+  const params3 = {
+    transCode:'MDO0033',
+    pid: pid.value,
+  }
+  Promise.all([
+    request(params1),
+    request(params2),
+    request(params3)
+  ]).then(([res1, res2, res3]) => {
+    console.log('1:', res1.checked);
+    console.log('2:', res2.checked);
+    console.log('3:', res3.checked);
+    
+    // 根据返回值来设置 activeadf
+    if (res1.checked === 1) {
+      activeadf.value = '进化优化器';
+    } else if (res2.checked === 1) {
+      activeadf.value = '代理优化器';
+    } else if (res3.checked === 1) {
+      activeadf.value = '梯度优化器';
+    }
+    console.log('Updated activeadf:', activeadf.value);
+  }).catch((err) => {
+    console.error('请求失败:', err);
+  });
+}
+
+
 // 模块选择
 const clickgeometry = (e, index, key, name) => {
   console.log(key);
@@ -2706,7 +2745,7 @@ const onAddItem = () => {
   if (activeIndex2.value == 0) {
     for (let i = 0; i < tablevalnum; i++) {
       designtable.value.push({
-        name: "x1",
+        name: `x${i + 1}`,
         upper: null,
         lower: null,
         reference: null,
@@ -2717,7 +2756,7 @@ const onAddItem = () => {
   } else if (activeIndex2.value == 1) {
     for (let i = 0; i < tablevalnum; i++) {
       tableData.value.push({
-        name: 'g1',
+        name: `g${i + 1}`,
         con: -1,
         reference: ''
 
@@ -2726,7 +2765,7 @@ const onAddItem = () => {
   } else if (activeIndex2.value == 2) {
     for (let i = 0; i < tablevalnum; i++) {
       eloptimize.value.push({
-        name: "",
+        name: `c${i + 1}`,
         optdir: 1,
         weight: 0,
         scaling: 0,
@@ -3144,6 +3183,8 @@ const newxfiol = () => {
 
 
 }
+
+
 // 点击掉查询接口
 const dianjia = (index) => {
   activeIndex3.value = index;
@@ -3546,7 +3587,7 @@ const getSave = (ref) => {
 }
 
 .footerTitle .span {
- width: 150px;
+  width: 150px;
   height: 32px;
   line-height: 40px;
   cursor: default;

+ 65 - 51
src/views/titlecomponent/ADflow.vue

@@ -25,7 +25,7 @@
                             </el-option>
                           </el-select> -->
           <el-input
-            v-model="youhua.popsize"
+            v-model="adiflowvalue.path"
             :step="100"
             :min="0"
             :max="1000"
@@ -53,10 +53,10 @@
           <el-table-column prop="con" label="启用" width="100">
             <template v-slot="scope">
               <el-checkbox
-                :false-label="'-1'"
-                :true-label="'1'"
+                :false-label="-1"
+                :true-label="1"
                 :label="false"
-                v-model="scope.row.enable"
+                v-model="scope.row.con"
                 @change="changecheck($event, scope.row)"
               />
             </template>
@@ -74,7 +74,7 @@
     >
       <el-form-item label="工况条件:" :label-width="formLabelWidth1">
         <el-select
-          v-model="youhua.algorithm"
+          v-model="adiflowvalue.wc"
           :suffix-icon="CaretBottom"
           placeholder="请选择"
         >
@@ -134,7 +134,7 @@
       </el-form-item>
       <el-form-item label="特征长度:" :label-width="formLabelWidth1">
         <el-input
-          v-model="youhua.popsize"
+          v-model="adiflowvalue.FeatureLength"
           :step="100"
           :min="0"
           :max="1000"
@@ -143,7 +143,7 @@
       </el-form-item>
       <el-form-item label="参考温度:" :label-width="formLabelWidth1">
         <el-input
-          v-model="youhua.popsize"
+          v-model="adiflowvalue.ReferenceTemperature"
           :step="1"
           :min="0"
           :max="1000"
@@ -152,16 +152,7 @@
       </el-form-item>
       <el-form-item label="参考面积:" :label-width="formLabelWidth1">
         <el-input
-          v-model="youhua.popsize"
-          :step="100"
-          :min="0"
-          :max="1000"
-          controls-position="right"
-        />
-      </el-form-item>
-      <el-form-item label="参考长度:" :label-width="formLabelWidth1">
-        <el-input
-          v-model="youhua.popsize"
+          v-model="adiflowvalue.ReferenceArea"
           :step="100"
           :min="0"
           :max="1000"
@@ -172,7 +163,7 @@
         <div style="display: flex">
           <el-input
             style="margin-right: 10px"
-            v-model="youhua.popsize"
+            v-model="adiflowvalue.MomentCenterX"
             :step="100"
             :min="0"
             :max="1000"
@@ -180,14 +171,14 @@
           />
           <el-input
             style="margin-right: 10px"
-            v-model="youhua.popsize"
+            v-model="adiflowvalue.MomentCenterY"
             :step="100"
             :min="0"
             :max="1000"
             controls-position="right"
           />
           <el-input
-            v-model="youhua.popsize"
+            v-model="adiflowvalue.MomentCenterZ"
             :step="100"
             :min="0"
             :max="1000"
@@ -198,7 +189,7 @@
 
       <el-form-item label="多重网格:" :label-width="formLabelWidth1">
         <el-input
-          v-model="youhua.popsize"
+          v-model="adiflowvalue.Multigrid"
           :step="100"
           :min="0"
           :max="1000"
@@ -207,7 +198,7 @@
       </el-form-item>
       <el-form-item label="计算步数:" :label-width="formLabelWidth1">
         <el-input
-          v-model="youhua.popsize"
+          v-model="adiflowvalue.CalculationSteps"
           :step="100"
           :min="0"
           :max="1000"
@@ -229,7 +220,7 @@
       </el-form-item>
       <el-form-item label="细网格收敛残差:" :label-width="formLabelWidth1">
         <el-input
-          v-model="youhua.popsize"
+          v-model="adiflowvalue.popsize"
           :step="100"
           :min="0"
           :max="1000"
@@ -239,20 +230,20 @@
       <el-form-item label="出物面信息:" :label-width="formLabelWidth1">
           <el-radio-group v-model="radiow">
             <el-radio :value="1" :label="1">是</el-radio>
-            <el-radio :value="2" :label="2">否</el-radio>
+            <el-radio :value="-1" :label="-1">否</el-radio>
           </el-radio-group>  
       </el-form-item>
       <el-form-item label="出切面信息:" :label-width="formLabelWidth1">
           <el-radio-group v-model="radioq">
             <el-radio :value="1" :label="1">是</el-radio>
-            <el-radio :value="2" :label="2">否</el-radio>
+            <el-radio :value="-1" :label="-1">否</el-radio>
           </el-radio-group>  
       </el-form-item>
     </div>
     <!-- 分析参数 v-show="currentTab=='0'"-->
     <div v-show="currentTab1 == '3'">
       <div class="eldesign classtable" style="margin-top: 10px">
-        <el-table :data="lailiutable" border style="width: 100%; height: 400px">
+        <el-table :data="fenxitable" border style="width: 100%; height: 400px">
           <el-table-column type="index" width="70" label="编号" />
           <el-table-column prop="name" label="参数名称">
             <template #default="{ row }">
@@ -267,10 +258,10 @@
           <el-table-column prop="con" label="启用" width="100">
             <template v-slot="scope">
               <el-checkbox
-                :false-label="'-1'"
-                :true-label="'1'"
+                :false-label="-1"
+                :true-label="1"
                 :label="false"
-                v-model="scope.row.enable"
+                v-model="scope.row.con"
                 @change="changecheck($event, scope.row)"
               />
             </template>
@@ -288,22 +279,23 @@ let formLabelWidth3 = ref(100)
 let formLabelWidth1 = ref(170)
 let formLabelWidth200 = ref(200)
 let currentTab1 = ref(0)
-let checked1 = ref(false)
-let checked2 = ref(false)
-let checked3 = ref(false)
-let checked4 = ref(false)
-let radiow = ref(2)
+let checked1 = ref(true)
+let checked2 = ref(true)
+let checked3 = ref(true)
+let checked4 = ref(true)
+let radiow = ref(1)
 let radioq = ref(1)
 let ad2 = ref("RANS")
 let adlist2 = ref([
-  { label: "RANS", value: "RANS" }
+  { label: "RANS", value: "RANS" },
+  { label: "Euler", value: "Euler" }
 ])
 let ad1 = ref("二维")
 let adlist1 = ref([
   { label: "二维", value: "二维" },
   { label: "三维", value: "三维" }
 ])
-let ad3 = ref("z")
+let ad3 = ref("x")
 let adlist3 = ref([
   { label: "x", value: "x" },
   { label: "y", value: "y" },
@@ -311,38 +303,60 @@ let adlist3 = ref([
 ])
 let lailiutable = ref([
   {
-    data: 0.0,
+    data: 2.66482,
+    name: "攻角",
+    con: 1
+  },
+  {
+    data: 0.734,
+    name: "马赫数",
+    con: 1
+  },
+  {
+    data: 6.5e6,
+    name: "雷诺数",
+    con: 1
+  }
+])
+
+let fenxitable = ref([
+  {
+    data: "0.0",
     name: "升力系数Cl",
     con: 1
   },
   {
-    data: 0.0,
+    data: "0.0",
     name: "阻力系数Cd",
     con: 1
   },
   {
-    data: 0.0,
+    data: "0.0",
     name: "力矩系数Cm",
     con: 1
   },
   {
-    data: 0.0,
+    data: "0.0",
     name: "体积",
     con: 1
   }
 ])
-let youhua = ref({
-  algorithm: "GA",
-  popsize: 100,
-  epoch: 100,
-  probcrossover: 0.1,
-  probmut: 0.1,
-  proboperator: "SBX交叉",
-  probscale: 1,
-  strategy: "最佳保留策略",
-  operator: "倒位变异",
-  gpu: "YES"
+
+
+let adiflowvalue = ref({
+  path: "",
+  wc: "巡航工况",
+  FeatureLength: 1,
+  ReferenceTemperature: 288.15,
+  ReferenceArea: 1,
+  MomentCenterX: 0.25,
+  MomentCenterY: 0,
+  MomentCenterZ: 0,
+  Multigrid: "sg",
+  CalculationSteps: 500,
+  popsize: 1.00E-5
 })
+
 let wclist = ref([
   { label: "巡航工况", value: "巡航工况" }
 ])

+ 23 - 25
src/views/titlecomponent/Doptimize.vue

@@ -138,42 +138,40 @@ import { request } from "@/utils/request";
 let formLabelWidth3=ref(100)
 let formLabelWidth200=ref(200)
 let youhua = ref({
-  algorithm: 'GA',
-  iout: 0,
+  algorithm: 'SurroOpt',
+  iout: 19,
   irestart: '0',
-  ndoe: 0,
-  ns: 0,
-  nsmax: 0,
-  nslf: 0,
-  nsmaxlf: 0,
-  nsmk: 0,
-  nsmaxmk: 0,
-  xtol: 0,
-  feasibilitytolreal: 0,
-  feasibilitytolsurro: 0,
+  ndoe: 1,
+  ns: 10,
+  nsmax: 100,
+  nslf: 20,
+  nsmaxlf: 200,
+  nsmk: 10,
+  nsmaxmk: 100,
+  xtol: -1e-8,
+  feasibilitytolreal: -1e-6,
+  feasibilitytolsurro: -1e-6,
   surromod: 'Kriging',
   corr: '0',
   consttheta: '0',
   porder: '0',
   dcmp: '0',
-  paraopt: '0',
+  paraopt: '1',
   regular: '0',
-  infill: 0,
-  nparallel: 0,
-  iopt: 0,
-  icstr: 0,
-  ipopsize: 0,
-  maxgen: 0,
-  pc: 0,
-  pm: 0
+  infill: 11,
+  nparallel: 1,
+  iopt: 100,
+  icstr: 100,
+  ipopsize: 50,
+  maxgen: 100,
+  pc: 0.9,
+  pm: 0.05
 })
 let pid = ref();
 let suid = ref();
 let cstnum=ref('');
 let yslist = ref([
-  { label: 'GA', value: 'GA' },
-  { label: 'PSO', value: 'PSO' },
-  { label: 'NSGA2', value: 'NSGA2' },
+  { label: 'SurroOpt', value: 'SurroOpt' },
 ])
 let cswitch = ref([
   { label: '是', value: '1' },
@@ -214,7 +212,7 @@ let daililist4= ref([
   { label: '采用第三方库并行分解', value: '2' },
 
 ])
-let dlival5=ref('0')
+let dlival5=ref('1')
 let daililist5= ref([
   { label: 'HookeJeeves', value: '1' },
   { label: 'BFGS', value: '2' },

+ 4 - 3
src/views/titlecomponent/Joptimize.vue

@@ -64,7 +64,7 @@ let formLabelWidth3=ref(100)
 let formLabelWidth1=ref(170)
 let formLabelWidth200=ref(200)
 let youhua = ref({
-algorithm: 'GA',
+algorithm: 'nsga2',
 popsize: 100,
 epoch: 100,
 probcrossover: 0.1,
@@ -73,15 +73,16 @@ proboperator: 'SBX交叉',
 probscale: 1,
 strategy: '最佳保留策略',
 operator: '倒位变异',
-gpu: 'YES'
+gpu: 'NO'
 })
 let pid=ref();
 let eid=ref();
 let cstnum=ref('');
 let yslist = ref([
+{ label: 'nsga2', value: 'nsga2' },
 { label: 'GA', value: 'GA' },
 { label: 'PSO', value: 'PSO' },
-{ label: 'NSGA2', value: 'NSGA2' },
+
 ])
 
 let addlist2 = ref([

+ 7 - 9
src/views/titlecomponent/Toptimize.vue

@@ -20,7 +20,7 @@
            <el-form-item label="非线性约束容差:" :label-width="formLabelWidth1">
              <el-input v-model="youhua.nonlinearfeasibilitytolerance" :step="100" :min="0" :max="1000" controls-position="right" />
            </el-form-item>
-           <el-form-item label="最优性度量容差::" :label-width="formLabelWidth1">
+           <el-form-item label="最优性度量容差:" :label-width="formLabelWidth1">
              <el-input v-model="youhua.optimalitytolerance" :step="100" :min="0" :max="1000" controls-position="right" />
            </el-form-item>
            <el-form-item label="梯度验证级别:" :label-width="formLabelWidth1">
@@ -42,21 +42,19 @@ let formLabelWidth3=ref(100)
 let formLabelWidth1=ref(170)
 let formLabelWidth200=ref(200)
 let youhua = ref({
-algorithm: 'GA',
+algorithm: 'SQP',
 majoriterationslimit: 100,
-majorprintlevel: 100,
-linearfeasibilitytolerance: 0.1,
-nonlinearfeasibilitytolerance: 0.1,
-optimalitytolerance: 0,
+majorprintlevel: 10,
+linearfeasibilitytolerance: 1e-6,
+nonlinearfeasibilitytolerance: 1e-6,
+optimalitytolerance: 1e-4,
 verifylevel: '-1'
 })
 let pid = ref();
 let grid = ref();
 let cstnum=ref('');
 let yslist = ref([
-{ label: 'GA', value: 'GA' },
-{ label: 'PSO', value: 'PSO' },
-{ label: 'NSGA2', value: 'NSGA2' },
+{ label: 'SQP', value: 'SQP' },
 ])
 
 let tdlist= ref([

+ 76 - 52
src/views/titlecomponent/Xfoil.vue

@@ -11,7 +11,7 @@
         {{ tab.name }}
       </li>
     </ul>
-    <!-- 输入参数 -->
+    <!-- 来流参数 -->
     <div v-show="currentTab == '0'">
       <div class="eldesign classtable" style="margin-top: 10px">
         <el-table :data="lailiutable" border style="width: 100%; height: 400px">
@@ -26,22 +26,21 @@
               <el-input v-model.number="row.data" @change="handleEdit(row)" />
             </template>
           </el-table-column>
-          <el-table-column prop="con" label="启用" width="100">
+          <el-table-column prop="enable" label="启用" width="100">
             <template v-slot="scope">
               <el-checkbox
-                :false-label="'-1'"
-                :true-label="'1'"
+                :false-label="-1"
+                :true-label="1"
                 :label="false"
                 v-model="scope.row.enable"
-                @change="changecheck($event, scope.row)"
               />
             </template>
           </el-table-column>
         </el-table>
       </div>
     </div>
-    <!-- 输出参数 -->
-    <div v-show="currentTab == '1'">
+    <!-- 分析参数 -->
+    <div v-show="currentTab == '2'">
       <div class="eldesign classtable" style="margin-top: 10px">
         <el-table :data="fenxtable" border style="width: 100%">
           <el-table-column type="index" width="70" label="编号" />
@@ -55,32 +54,31 @@
               <el-input v-model.number="row.data" @change="handleEdit(row)" />
             </template>
           </el-table-column>
-          <el-table-column prop="con" label="启用" width="100">
+          <el-table-column prop="enable" label="启用" width="100">
             <template v-slot="scope">
               <el-checkbox
-                :false-label="'-1'"
-                :true-label="'1'"
+                :false-label="-1"
+                :true-label="1"
                 :label="false"
                 v-model="scope.row.enable"
-                @change="changecheck($event, scope.row)"
               />
             </template>
           </el-table-column>
         </el-table>
       </div>
     </div>
-    <!-- 中间参数 -->
-    <div v-show="currentTab == '2'">
+    <!-- 设置参数 -->
+    <div v-show="currentTab == '1'">
       <div class="eldesign classtable" style="margin-top: 10px">
         <el-form-item label="计算完成:" :label-width="formLabelWidth1">
           <el-radio-group v-model="resource">
-            <el-radio label="0">是</el-radio>
-            <el-radio label="1">否</el-radio>
+            <el-radio label="1">是</el-radio>
+            <el-radio label="0">否</el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="迭代次数:" :label-width="formLabelWidth1">
           <el-input
-            v-model="youhua.popsize"
+            v-model="xfoilvalue.epoch"
             :step="100"
             :min="0"
             :max="1000"
@@ -89,18 +87,18 @@
         </el-form-item>
         <el-form-item label="表面求解点个数:" :label-width="formLabelWidth1">
           <el-input
-            v-model="youhua.popsize"
+            v-model="xfoilvalue.SurfaceSolvePoints"
             :step="100"
             :min="0"
             :max="1000"
             controls-position="right"
           />
         </el-form-item>
-        <el-form-item label="结果文件:" :label-width="formLabelWidth1"></el-form-item>
+        <!-- <el-form-item label="结果文件:" :label-width="formLabelWidth1"></el-form-item> -->
         <div class="cheinput">
-          <el-form-item label="压力分布:" :label-width="formLabelWidth2">
+          <el-form-item label="压力分布:" :label-width="formLabelWidth1">
             <el-input
-              v-model="youhua.popsize"
+              v-model="xfoilvalue.PressureDistribution"
               :step="100"
               :min="0"
               :max="1000"
@@ -110,28 +108,28 @@
           <el-checkbox v-model="checked1"  style="width:40px;height:40px" />
         </div>
         <div class="cheinput">
-          <el-form-item label="翼型坐标:" :label-width="formLabelWidth2">
+          <el-form-item label="翼型坐标:" :label-width="formLabelWidth1">
             <el-input
-              v-model="youhua.popsize"
+              v-model="xfoilvalue.WingCoordinates"
               :step="100"
               :min="0"
               :max="1000"
               controls-position="right"
             />
           </el-form-item>
-          <el-checkbox v-model="checked1" style="width:40px;height:40px" />
+          <el-checkbox v-model="checked2" style="width:40px;height:40px" />
         </div>
         <div class="cheinput">
-          <el-form-item label="力和力矩:" :label-width="formLabelWidth2">
+          <el-form-item label="力和力矩:" :label-width="formLabelWidth1">
             <el-input
-              v-model="youhua.popsize"
+              v-model="xfoilvalue.ForceAndMoment"
               :step="100"
               :min="0"
               :max="1000"
               controls-position="right"
             />
           </el-form-item>
-          <el-checkbox v-model="checked1"  style="width:40px;height:40px" />
+          <el-checkbox v-model="checked3"  style="width:40px;height:40px" />
         </div>
       </div>
     </div>
@@ -142,53 +140,78 @@
 import { ref, onMounted, reactive, provide, nextTick } from "vue"
 import { ElMessage, ElButton, ElDialog, ElSelect } from "element-plus"
 import { Edit, CaretBottom } from "@element-plus/icons-vue"
+import { tr } from "element-plus/es/locale/index.mjs"
 let formLabelWidth3 = ref(100)
 let formLabelWidth1 = ref(170)
 let formLabelWidth2 = ref(250)
 let currentTab = ref(0)
-let checked1 = ref(false)
-let resource = ref(0)
-let youhua = ref({
-  algorithm: "GA",
-  popsize: 100,
+let checked1 = ref(true)
+let checked2 = ref(true)
+let checked3 = ref(true)
+let resource = ref('1')
+
+let xfoilvalue = ref({
   epoch: 100,
-  probcrossover: 0.1,
-  probmut: 0.1,
-  proboperator: "SBX交叉",
-  probscale: 1,
-  strategy: "最佳保留策略",
-  operator: "倒位变异",
-  gpu: "YES"
+  SurfaceSolvePoints: 200,
+  PressureDistribution:"op.dat",
+  WingCoordinates:"airfoil.dat",
+  ForceAndMoment:"output.dat"
 })
+
 let tabslist = ref([
-  { id: "0", name: "输入参数" },
-  { id: "1", name: "输出参数" },
-  { id: "2", name: "中间参数" }
+  { id: "0", name: "来流参数" },
+  { id: "1", name: "设置参数" },
+  { id: "2", name: "分析参数" }
 ])
 
 
 let lailiutable = ref([
   {
-    data: 1,
+    data: 0.1,
     name: "AoA",
-    con: -1
+    enable: 1
   },
   {
-    data: 23,
-    name: "Me",
-    con: 1
+    data: 0.1,
+    name: "Ma",
+    enable: 1
+  },
+  {
+    data: 6.5e6,
+    name: "Re",
+    enable: 1
   }
 ])
 let fenxtable = ref([
-  {
-    date: "2016-05-04",
+{
+    data: "000",
     name: "升力系数Cl",
-    con: -1
+    enable: 1
   },
   {
-    date: "2016-05-03",
+    data: "000",
+    name: "阻力系数Cd",
+    enable: 1
+  },
+  {
+    data: "000",
+    name: "压阻力系数Cdp",
+    enable: 1
+  },
+  {
+    data: "000",
+    name: "力矩系数Cm",
+    enable: 1
+  },
+  {
+    data: "000",
     name: "上表面转换点位置xtr-upper",
-    con: 1
+    enable: 1
+  },
+  {
+    data: "000",
+    name: "下表面转换点位置xtr-lower",
+    enable: 1
   }
 ])
 // 选项卡
@@ -201,10 +224,11 @@ const addRow = () => {
   lailiutable.value.push({
     data: 0,
     name: "",
-    con: -1
+    enable: -1
   })
 }
 
+
 </script>