|
@@ -892,7 +892,7 @@
|
|
|
<el-dialog v-model="dialog.Xfiol" align-center :modal="false" :close-on-click-modal="false"
|
|
|
:append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false"
|
|
|
modal-class="summary-dlg2 summary-dlg" :before-close="handleClose" width="500"
|
|
|
- class="dialog_class bgcolor tianjia sel">
|
|
|
+ class="dialog_class bgcolor tianjia colortext sel">
|
|
|
|
|
|
<template #header="{ titleId, titleClass }">
|
|
|
<div class="my-header ">
|
|
@@ -900,16 +900,17 @@
|
|
|
<h4 :id="titleId" :class="titleClass">Xfiol</h4>
|
|
|
</div>
|
|
|
</template>
|
|
|
- <div class="youhualog youhualog1" style="height: 480px;">
|
|
|
+ <Xfoil/>
|
|
|
+ <!-- <div class="youhualog youhualog1" style="height: 480px;">
|
|
|
<ul>
|
|
|
<li v-for="(tab, index) in newxfoil" :key="index" :class="{ 'active2': activeIndex3 === index }"
|
|
|
@click="dianjia(index)">{{ tab }}</li>
|
|
|
</ul>
|
|
|
<div class="chushij">
|
|
|
<el-button type="info" size="small" @click="initialize()">初始化</el-button>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
<!-- 输入 -->
|
|
|
- <div class="eldesign classtable" style="margin-top: 10px;" v-if="activeIndex3 == 0">
|
|
|
+ <!-- <div class="eldesign classtable" style="margin-top: 10px;" v-if="activeIndex3 == 0">
|
|
|
<el-table :data="srnewtable" border style="width: 100%" height="400">
|
|
|
|
|
|
<el-table-column prop="name" label="参数名称">
|
|
@@ -929,9 +930,9 @@
|
|
|
</el-table-column>
|
|
|
|
|
|
</el-table>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
<!-- 输出 -->
|
|
|
- <div class="eldesign classtable" style="margin-top: 10px;" v-if="activeIndex3 == 1">
|
|
|
+ <!-- <div class="eldesign classtable" style="margin-top: 10px;" v-if="activeIndex3 == 1">
|
|
|
<el-table :data="scnewtable" border style="width: 100%" height="400">
|
|
|
<el-table-column prop="name" label="参数名称">
|
|
|
<template #default="{ row }">
|
|
@@ -960,9 +961,9 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
<!-- 中间参数 -->
|
|
|
- <div class="eldesign classtable" style="margin-top: 10px;" v-if="activeIndex3 == 2">
|
|
|
+ <!-- <div class="eldesign classtable" style="margin-top: 10px;" v-if="activeIndex3 == 2">
|
|
|
<el-form-item label="计算完成">
|
|
|
<el-radio-group v-model="resource">
|
|
|
<el-radio label="0">是</el-radio>
|
|
@@ -986,7 +987,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
|
<el-button type="info" @click="newxfiol">新建 </el-button>
|
|
@@ -1148,97 +1149,7 @@
|
|
|
<el-form>
|
|
|
<el-tabs tab-position="left" class="demo-tabs" v-model="activeadf" @tab-click="adfhandleClick">
|
|
|
<el-tab-pane label="Xfoil" name="Xfoil">
|
|
|
- <div class="XFpdding">
|
|
|
- <ul>
|
|
|
- <li class="item" v-for="(tab, index) in tabslist" :key="index" :class="{ active: currentTab === index }"
|
|
|
- @click="selectTab(index)">{{tab.name }}</li>
|
|
|
- </ul>
|
|
|
- <!-- 来流参数 v-show="currentTab=='0'"-->
|
|
|
- <div v-show="currentTab=='0'">
|
|
|
- <div class="eldesign classtable" style="margin-top: 10px;">
|
|
|
- <el-table :data="lailiutable" border style="width: 100%;height:400px" >
|
|
|
- <el-table-column type="index" width="70" label="编号"/>
|
|
|
- <el-table-column prop="name" label="参数名称">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.name" @change="handleEdit(row)" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="data" label="参数值">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model.number="row.data" @change="handleEdit(row)" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="con" label="启用" width="100">
|
|
|
- <template v-slot="scope">
|
|
|
- <el-checkbox :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>
|
|
|
- <!-- 设置参数 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-group>
|
|
|
-
|
|
|
- </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" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
- </el-form-item>
|
|
|
- <div class="cheinput">
|
|
|
- <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-checkbox v-model="checked1" size="large" />
|
|
|
- </div>
|
|
|
- <div class="cheinput">
|
|
|
- <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-checkbox v-model="checked1" size="large" />
|
|
|
- </div>
|
|
|
- <div class="cheinput">
|
|
|
- <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-checkbox v-model="checked1" size="large" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- 分析参数 v-show="currentTab=='2'"-->
|
|
|
- <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="编号"/>
|
|
|
- <el-table-column prop="name" label="参数名称">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.name" @change="handleEdit(row)" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="data" label="参数值">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model.number="row.data" @change="handleEdit(row)" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="con" label="启用" width="100">
|
|
|
- <template v-slot="scope">
|
|
|
- <el-checkbox :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>
|
|
|
+ <Xfoil/>
|
|
|
</el-tab-pane>
|
|
|
<!-- ADflow -->
|
|
|
<el-tab-pane label="ADflow" name="ADflow">
|
|
@@ -1487,15 +1398,15 @@
|
|
|
<!-- 代理优化器 -->
|
|
|
<el-tabs tab-position="left" class="demo-tabs" v-model="activeadf" @tab-click="adfhandleClick">
|
|
|
<el-tab-pane label="代理优化器" name="代理优化器">
|
|
|
- <Doptimize/>
|
|
|
+ <Doptimize ref='Doptimizeref'/>
|
|
|
</el-tab-pane>
|
|
|
<!-- 进步优化器 -->
|
|
|
<el-tab-pane label="进化优化器" name="进化优化器">
|
|
|
- <Joptimize/>
|
|
|
+ <Joptimize ref='Joptimizeref'/>
|
|
|
</el-tab-pane>
|
|
|
<!-- 梯度优化器 -->
|
|
|
<el-tab-pane label="梯度优化器" name="梯度优化器">
|
|
|
- <Toptimize/>
|
|
|
+ <Toptimize ref='Toptimizeref'/>
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</el-form>
|
|
@@ -1520,7 +1431,7 @@
|
|
|
<h4 :id="titleId" :class="titleClass">优化算法:</h4>
|
|
|
</div>
|
|
|
</template>
|
|
|
- <Joptimize/>
|
|
|
+ <Joptimize ref='Joptimizeref'/>
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
|
<el-button @click="dialog.jboptimizer = false">取消</el-button>
|
|
@@ -1914,9 +1825,13 @@ import Doptimize from './titlecomponent/Doptimize.vue'
|
|
|
import Joptimize from './titlecomponent/Joptimize.vue'
|
|
|
import Toptimize from './titlecomponent/Toptimize.vue'
|
|
|
import ADflow from './titlecomponent/ADflow.vue'
|
|
|
+import Xfoil from './titlecomponent/Xfoil.vue'
|
|
|
let Sidebarref = ref();
|
|
|
let resource=ref(0);
|
|
|
let cstnum=ref('');
|
|
|
+let Joptimizeref=ref();
|
|
|
+let Doptimizeref=ref();
|
|
|
+let Toptimizeref=ref();
|
|
|
let f4ce = ref("优化问题组件");
|
|
|
let modelban = ref("学科分析组件");
|
|
|
let undmodel=ref('优化器组件');
|
|
@@ -1989,6 +1904,7 @@ let times = ref({
|
|
|
serverTimeout0bj: null, //
|
|
|
timeoutnum: null, //断开重连倒计时
|
|
|
})
|
|
|
+let input3=ref()
|
|
|
let eid = ref('');//进步优化器的eid
|
|
|
let logs = ref("");
|
|
|
let pid = ref("");
|
|
@@ -2057,13 +1973,17 @@ let sctable = ref([]);
|
|
|
// }])
|
|
|
// let quval=ref('1')
|
|
|
let currentTab=ref(0);
|
|
|
-let tabslist = ref([
|
|
|
- { id: '0', name: '来流参数' },
|
|
|
- { id: '1', name: '设置参数' },
|
|
|
- { id: '2', name: '分析参数' },
|
|
|
+// let tabslist = ref([
|
|
|
+// { id: '0', name: '来流参数' },
|
|
|
+// { id: '1', name: '设置参数' },
|
|
|
+// { id: '2', name: '分析参数' },
|
|
|
+// ])
|
|
|
+let yslist = ref([
|
|
|
+ { label: 'GA', value: 'GA' },
|
|
|
+ { label: 'PSO', value: 'PSO' },
|
|
|
+ { label: 'NSGA2', value: 'NSGA2' },
|
|
|
])
|
|
|
-
|
|
|
-let currentTab2=ref(0);
|
|
|
+ let currentTab2=ref(0);
|
|
|
let tabslist2= ref([
|
|
|
{ id: '0', name: '网格文件' },
|
|
|
{ id: '1', name: '设置参数' },
|
|
@@ -2071,6 +1991,17 @@ let tabslist2= ref([
|
|
|
{ id: '3', name: '分析参数' },
|
|
|
|
|
|
])
|
|
|
+let lailiutable=ref([
|
|
|
+{
|
|
|
+ data: 1,
|
|
|
+ name: 'Aleyna Kutzner',
|
|
|
+ con:-1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ data: 23,
|
|
|
+ name: 'Helen Jacobi',
|
|
|
+ con:1
|
|
|
+ }])
|
|
|
let quxian = ref([
|
|
|
{ label: '设计变量', value: '设计变量' },
|
|
|
{ label: '约束条件', value: '约束条件' },
|
|
@@ -2242,11 +2173,7 @@ let addval = ref("EI + MSP")
|
|
|
let addlist = ref([
|
|
|
{ label: 'EI + MSP', value: 'EI + MSP' },
|
|
|
])
|
|
|
-let ad1=ref('二维')
|
|
|
-let adlist1 = ref([
|
|
|
- { label: '二维', value: '二维' },
|
|
|
- { label: '三维', value: '三维' },
|
|
|
-])
|
|
|
+
|
|
|
|
|
|
let addval1 = ref("概率相乘法")
|
|
|
let addlist1 = ref([
|
|
@@ -2473,28 +2400,8 @@ const handleNodeClick = (data) => {
|
|
|
tabactive.value = data.label;
|
|
|
dialogbolen();
|
|
|
}
|
|
|
-let lailiutable=ref([
|
|
|
-{
|
|
|
- data: 1,
|
|
|
- name: 'Aleyna Kutzner',
|
|
|
- con:-1
|
|
|
- },
|
|
|
- {
|
|
|
- data: 23,
|
|
|
- name: 'Helen Jacobi',
|
|
|
- con:1
|
|
|
- }])
|
|
|
- let fenxtable=ref([
|
|
|
-{
|
|
|
- date: '2016-05-04',
|
|
|
- name: '升力系数Cl',
|
|
|
- con:-1
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-03',
|
|
|
- name: '上表面转换点位置xtr-upper',
|
|
|
- con:1
|
|
|
- }])
|
|
|
+
|
|
|
+
|
|
|
// cst时间
|
|
|
const keydownenter=()=>{
|
|
|
//cstnum.value='';
|
|
@@ -2537,7 +2444,7 @@ const optimizerfalse = (val) => {
|
|
|
activeadf.value='进化优化器';
|
|
|
dialog.value.jboptimizer = true;
|
|
|
// dialog.value.jboptimizer = true;
|
|
|
- getoptimize();
|
|
|
+ Joptimizeref.value.getoptimize(pid.value);
|
|
|
} else if (val == '代理优化器') {
|
|
|
activeadf.value='代理优化器';
|
|
|
// dialog.value.optgroup = true;
|
|
@@ -2557,7 +2464,7 @@ const optimizerfalse = (val) => {
|
|
|
// adfhandleClick();
|
|
|
activeadf.value='ADflow';
|
|
|
dialog.value.isADflow = true;
|
|
|
- // dialog.value.XfAD = true;
|
|
|
+ // dialog.value. = true;
|
|
|
}else if(val == 'Xfiol'){
|
|
|
activeadf.value='Xfiol';
|
|
|
dialog.value.XfAD = true;
|
|
@@ -2566,6 +2473,9 @@ const optimizerfalse = (val) => {
|
|
|
dialog.value.cstffd = true;
|
|
|
}else if(val == 'TACS'){
|
|
|
dialog.value.Taxs = true;
|
|
|
+ }else if(val == '模版'){
|
|
|
+ dialog.value.optgroup = true;
|
|
|
+ activeadf.value='代理优化器';
|
|
|
}
|
|
|
else {
|
|
|
dialog.value.optimizer = false;
|
|
@@ -2823,68 +2733,7 @@ const curveLine = () => {
|
|
|
})
|
|
|
}
|
|
|
//进化优化器
|
|
|
-const getoptimize = () => {
|
|
|
- const params = {
|
|
|
- transCode: 'MDO0018',
|
|
|
- pid: pid.value,
|
|
|
- }
|
|
|
- request(params)
|
|
|
- .then((res) => {
|
|
|
-
|
|
|
- if (res.hasOwnProperty('eid')) {
|
|
|
-
|
|
|
- eid.value = res.eid;
|
|
|
- youhua.value.algorithm = res.algorithm
|
|
|
- youhua.value.popsize = Number(res.popsize); // 将id属性转换为数字
|
|
|
- youhua.value.epoch = Number(res.epoch);
|
|
|
- youhua.value.probcrossover = Number(res.probcrossover);
|
|
|
- youhua.value.probmut = Number(res.probmut);
|
|
|
- youhua.value.probscale = Number(res.probscale);
|
|
|
- youhua.value.proboperator = res.proboperator;
|
|
|
- youhua.value.strategy = res.strategy;
|
|
|
- youhua.value.operator = res.operator;
|
|
|
- youhua.value.gpu = res.gpu;
|
|
|
-
|
|
|
- // youhua=res;
|
|
|
|
|
|
- } else {
|
|
|
- // youhua=res;
|
|
|
- }
|
|
|
-
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- ElMessage.error(err.returnMsg)
|
|
|
- })
|
|
|
-}
|
|
|
-//进化优化器 添加保存
|
|
|
-const getaddsave = () => {
|
|
|
- const params = {
|
|
|
- transCode: 'MDO0019',
|
|
|
- pid: pid.value,
|
|
|
- eid: eid.value,
|
|
|
- algorithm: youhua.value.algorithm,
|
|
|
- popsize: youhua.value.popsize,
|
|
|
- epoch: youhua.value.epoch,
|
|
|
- probcrossover: youhua.value.probcrossover,
|
|
|
- probmut: youhua.value.probmut,
|
|
|
- proboperator: youhua.value.proboperator,
|
|
|
- probscale: youhua.value.probscale,
|
|
|
- strategy: youhua.value.strategy,
|
|
|
- operator: youhua.value.operator,
|
|
|
- gpu: youhua.value.gpu
|
|
|
-
|
|
|
- }
|
|
|
- request(params)
|
|
|
- .then((res) => {
|
|
|
- ElMessage({
|
|
|
- message: res.returnMsg,
|
|
|
- type: 'success',
|
|
|
- })
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- ElMessage.error(err.returnMsg)
|
|
|
- })
|
|
|
-}
|
|
|
//选择颜色改变线的颜色
|
|
|
const colorpicker = (e) => {
|
|
|
vuefval.value.changeAllEdgesColor(color1.value);
|
|
@@ -3648,7 +3497,7 @@ const selectTab2=(index)=>{
|
|
|
currentTab2.value = index;
|
|
|
}
|
|
|
const adfhandleClick=(tab,event)=>{
|
|
|
- // console.log(tab.props.label);
|
|
|
+ console.log(tab.props.label);
|
|
|
activeadf.value=tab.props.label;
|
|
|
}
|
|
|
|
|
@@ -3951,4 +3800,7 @@ color: #2267B1;
|
|
|
flex: 1;
|
|
|
|
|
|
}
|
|
|
+.XFpdding{
|
|
|
+ height: 400px;
|
|
|
+}
|
|
|
</style>
|