123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- <cpacs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../schema/cpacs_schema.xsd">
- <header>
- <name>${vo.header.name}</name>
- <creator>SurroMDAO</creator>
- <timestamp>${vo.header.timestamp}</timestamp>
- <version>1.0</version>
- <cpacsVersion>3.3</cpacsVersion>
- </header>
- <vehicles>
- <#if vo.cst??>
- <profiles>
- <wingAirfoils>
- <wingAirfoil uID="foil1">
- <name>foil1</name>
- <description>airfoil</description>
- <cst2D mapType="complex">
- <N>${vo.cst.cstn}</N>
- <lowerB mapType="vector">${vo.cst.lowerb?replace( ",", ";")}</lowerB>
- <lowerN1 mapType="dobule">${vo.cst.lowern1}</lowerN1>
- <lowerN2 mapType="dobule">${vo.cst.lowern2}</lowerN2>
- <upperB mapType="vector">${vo.cst.upperb?replace(",", ";")}</upperB>
- <upperN1 mapType="dobule">${vo.cst.uppern1}</upperN1>
- <upperN2 mapType="dobule">${vo.cst.uppern2}</upperN2>
- <trailingEdgeThickness mapType="dobule">0</trailingEdgeThickness>
- </cst2D>
- </wingAirfoil>
- </wingAirfoils>
- </profiles>
- <#else>
- </#if>
- <#if vo.adflow??>
- <aircraft>
- <model uID="wing">
- <name>wing</name>
- <reference mapType="complex">
- <area mapType="double">${vo.adflow.area}</area>
- <length mapType="double">${vo.adflow.length}</length>
- <point mapType="complex">
- <x mapType="double">${vo.adflow.momx}</x>
- <y mapType="double">${vo.adflow.momy}</y>
- <z mapType="double">${vo.adflow.momz}</z>
- </point>
- </reference>
- </model>
- </aircraft>
- <#else>
- </#if>
- </vehicles>
- <toolspecific>
- <#if vo.ffd??>
- <FFD mapType="complex" uID="FFD">
- <switch mapType="boolean">1</switch>
- <FFDFile>${vo.ffd.fname}</FFDFile>
- <order mapType="integer">${vo.ffd.fname}</order>
- <Controlpoints mapType="complex">
- <Nx mapType="integer">${vo.ffd.nx}</Nx>
- <Ny mapType="integer">${vo.ffd.ny}</Ny>
- <Nz mapType="integer">${vo.ffd.nz}</Nz>
- </Controlpoints>
- <vars mapType="complex">
- <sample mapType="vector">${vo.ffd.vars?replace( ",", ";")}</sample>
- <local_shape_dv mapType="boolean">1</local_shape_dv>
- </vars>
- </FFD>
- <#else>
- </#if>
- <CFD>
- <#if vo.xfoil??>
- <XFOIL mapType="complex" uID="XFOIL">
- <analyzed mapType="boolean">1</analyzed>
- <options mapType="complex">
- <pacc>${vo.xfoil.pacc}</pacc>
- <cpwr>${vo.xfoil.cpwr}</cpwr>
- <iter mapType="integer">${vo.xfoil.iter}</iter>
- <ppar mapType="integer">${vo.xfoil.ppar}</ppar>
- </options>
- <condition mapType="complex">
- <alpha mapType="double">${vo.xinvo.alpha}</alpha>
- <mach mapType="double">${vo.xinvo.mach}</mach>
- <reynolds mapType="double">${vo.xinvo.reynolds}</reynolds>
- </condition>
- <evalFuncs mapType="complex">
- <cl mapType="double">${vo.xoutvo.cl}</cl>
- <cd mapType="double">${vo.xoutvo.cd}</cd>
- <cdp mapType="double">${vo.xoutvo.cdp}</cdp>
- <cm mapType="double">${vo.xoutvo.cm}</cm>
- <xtr_upper mapType="double">${vo.xoutvo.xtr_upper}</xtr_upper>
- <xtr_lower mapType="double">${vo.xoutvo.xtr_lower}</xtr_lower>
- </evalFuncs>
- </XFOIL>
- <#else>
- </#if>
- <#if vo.adflow??>
- <ADflow mapType="complex" uID="ADflow">
- <switch mapType="boolean">1</switch>
- <proName>${vo.adflow.proname}</proName>
- <analyzed mapType="boolean">0</analyzed>
- <isAirfoil mapType="boolean">${vo.adflow.isairfoil}</isAirfoil>
- <inputDirectoryName>model</inputDirectoryName>
- <outputDirectoryName>results</outputDirectoryName>
- <options mapType="complex">
- <gridFile>${vo.adflow.gridfile}</gridFile>
- <writeTecplotSurfaceSolution mapType="boolean">${vo.adflow.writetecplotsurfacesolution}</writeTecplotSurfaceSolution>
- <equationType>${vo.adflow.equationtype}</equationType>
- <smoother>DADI</smoother>
- <MGCycle>${vo.adflow.mgcycle}</MGCycle>
- <nCycles mapType="integer">${vo.adflow.ncycles}</nCycles>
- <monitorvariables mapType="complex">
- <#if vo.adflow.resrho?trim == "1">
- <monitorvariable1>resrho</monitorvariable1>
- <#else>
- </#if>
- <#if vo.adflow.cl?trim == "1">
- <monitorvariable2>cl</monitorvariable2>
- <#else>
- </#if>
- <#if vo.adflow.cd?trim == "1">
- <monitorvariable2>cd</monitorvariable2>
- <#else>
- </#if>
- <#if vo.adflow.cmz?trim == "1">
- <monitorvariable2>cmz</monitorvariable2>
- <#else>
- </#if>
- </monitorvariables>
- <useNKSolver mapType="boolean">1</useNKSolver> # 使用nk求解器
- <useanksolver mapType="boolean">1</useanksolver> # 使用ank求解器
- <nsubiterturb mapType="integer">5</nsubiterturb>
- <liftIndex mapType="integer">${vo.adflow.liftindex}</liftIndex>
- <infchangecorrection mapType="boolean">1</infchangecorrection>
- <L2Convergence mapType="double">${vo.adflow.l2convergence}</L2Convergence>
- <L2ConvergenceCoarse mapType="double">${vo.adflow.l2convergencecoarse}</L2ConvergenceCoarse>
- <NKSwitchTol mapType="double">1e-8</NKSwitchTol>
- <ANKSwitchTol mapType="double">1e-1</ANKSwitchTol>
- <L2ConvergenceRel mapType="double">1e-3</L2ConvergenceRel>
- </options>
- <condition mapType="complex">
- <mode mapType="integer">${vo.adinvo.mode}</mode>
- <alpha mapType="double">${vo.adinvo.alpha}</alpha>
- <mach mapType="double">${vo.adinvo.mach}</mach>
- <reynolds mapType="double">${vo.adinvo.reynolds}</reynolds>
- <temperature mapType="double">${vo.adinvo.temperature}</temperature>
- <reynoldsLength mapType="double">${vo.adinvo.reynoldsLength}</reynoldsLength>
- </condition>
- <evalFuncs mapType="complex">
- <force mapType="complex">
- <cl mapType="double">${vo.adoutvo.cl}</cl>
- <cd mapType="double">${vo.adoutvo.cd}</cd>
- <cmz mapType="double">${vo.adoutvo.cmz}</cmz>
- </force>
- <geometry mapType="complex">
- <volume mapType="double">0.0</volume>
- </geometry>
- </evalFuncs>
- </ADflow>
- <#else>
- </#if>
- </CFD>
- </toolspecific>
- </cpacs>
|