2021.2 宏 API 更改

Simcenter STAR-CCM+ 2021.2 中,伴随、反应流、多相、欧拉多相流、电化学和设计管理器的宏 API 已更改。

伴随:GMRES 求解器设置的更改

由于为伴随求解器引入新的 GMRES 选项,宏代码已更改。

GMRES 设置

GmresSettingsFlexibleGmresSettings 类已分别替换为 GmresAlgorithmFlexibleGmresAlgorithm。另外,KrylovSpaceDimension 属性已重命名为 MaxKrylovBaseSize,如下面的例子所示。

以前版本 Simcenter STAR-CCM+ 2021.2
AdjointSolver adjointSolver_0 = ((AdjointSolver) simulation_0.getSolverManager().getSolver(AdjointSolver.class));
GmresSettings gmresSettings_0 = adjointSolver_0.getGmresSettings();
gmresSettings_0.getPreconditionerOption().setSelected(PreconditionerOption.Type.RIGHT_PRECONDITIONING);
gmresSettings_0.setKrylovSpaceDimension(50);
gmresSettings_0.setCorrectionSweeps(3);
AdjointSolver adjointSolver_0 = ((AdjointSolver) simulation_0.getSolverManager().getSolver(AdjointSolver.class));
AdjointGmresAlgorithm adjointGmresAlgorithm_0 = adjointSolver_0.getGmresAlgorithm();
adjointGmresAlgorithm_0.getPreconditionerOption().setSelected(PreconditionerOption.Type.RIGHT_PRECONDITIONING);
adjointGmresAlgorithm_0.setMaxKrylovBaseSize(50);
adjointGmresAlgorithm_0.setCorrectionSweeps(3);

GMRES 迭代

GMRES 和灵活 GMRES (FGMRES) 迭代的定义已更改。之前版本中,“迭代”对应于完整的 GMRES/FGMRES 循环。新版本中,“迭代”为单个内部 GMRES/FGMRES 迭代(即单个 Arnoldi 迭代)。例如,如果克雷洛夫基础尺寸为 50,则旧版本的 1 次迭代对应于新版本的 50 次迭代。

以前版本 Simcenter STAR-CCM+ 2021.2
AdjointSolver adjointSolver_0 = ((AdjointSolver) simulation_0.getSolverManager().getSolver(AdjointSolver.class));
GmresSettings gmresSettings_0 = adjointSolver_0.getGmresSettings();
gmresSettings_0.setKrylovSpaceDimension(50);
adjointSolver_0.stepAdjoint(2);
AdjointSolver adjointSolver_0 = ((AdjointSolver) simulation_0.getSolverManager().getSolver(AdjointSolver.class));
AdjointGmresAlgorithm adjointGmresAlgorithm_0 = adjointSolver_0.getGmresAlgorithm();
adjointGmresAlgorithm_0.setMaxKrylovBaseSize(50);
adjointSolver_0.stepAdjoint(100); // 100 = Krylov Base Size multiplied by Number of Steps in "old" version

反应流体:使用小火焰的碳烟截面和扩展的拟序火焰模型 (ECFM) 的更改

因为重构,已对碳烟模型和截面模型的宏代码进行更改。具体而言,SootMomentOption 已重命名 SootOption 并且 SootMomentNucleationOption 已重命名 SootNucleationOption

例如,以下实例

RNSootOption rNSootOption = reactorNetworkEmissions.getSootMomentOption();

应改为

RNSootOption rNSootOption = reactorNetworkEmissions.getSootOption();

以下实例

sootMomentEcfmModelProperties.getSootMomentNucleationOption().setSelected(SootMomentNucleationOption.Type.C2H2);

应改为

sootMomentEcfmModelProperties.getSootNucleationOption().setSelected(SootNucleationOption.Type.C2H2);

多相:相建模的更改

为 MMP 和 VOF 中的基于曳力的相滑移的曳力选择不同分布(Schiller-Naumann vs. 对称)的可能性已经移除。相反,保持相滑移模型的相间相互作用可以限制为离散次相流态(等效于 Schiller-Naumann 曳力)或保持无限制(等效于对称曳力)。宏应相应地更改:

以前版本 Simcenter STAR-CCM+ 2021.2
Simulation simulation_0 = getActiveSimulation();
Region region_0 = simulation.getRegionManager().getRegion("Region");
PhaseConditions phaseConditions_0 = ((PhaseConditions) region_0.get(PhaseConditionsManager.class).getPhaseConditions("Phase Interaction 1"));
MmpDragCoefficientProfile mmpDragCoefficientProfile_0 = phaseConditions_0.getPhaseValueManager().get(MmpDragCoefficientProfile.class);
mmpDragCoefficientProfile_0.setMethod(MmpSchillerNaumannDragCoefficient.class);
Simulation simulation_0 = getActiveSimulation();
PhysicsContinuum physicsContinuum_0 = ((PhysicsContinuum) simulation_0.getContinuumManager().getContinuum("Physics 1"));
MultiPhaseInteractionModel multiPhaseInteractionModel_0 = physicsContinuum_0.getModelManager().getModel(MultiPhaseInteractionModel.class);
PhaseInteraction phaseInteraction_0 = ((PhaseInteraction) multiPhaseInteractionModel_0.getPhaseInteractionManager().getPhaseInteraction("Phase Interaction 1"));
MmpMmpPhaseInteractionModel mmpMmpPhaseInteractionModel_0 = phaseInteraction_0.getModelManager().getModel(MmpMmpPhaseInteractionModel.class);
mmpMmpPhaseInteractionModel_0.getRegimeRestrictionOption().setSelected(RegimeRestrictionOption.Type.DISPERSED_SECONDARY);

欧拉多相流 (EMP):AMUSIG 模型的更改

由于自适应多尺寸组 (AMUSIG) 模型的改进,相关宏代码已更改。

具体而言,不再需要 getInterGroupRedistributionRate() 方法。之前版本的 Simcenter STAR-CCM+ 中录制的宏可能会使用此方法,例如:

amusigModel_0.getInterGroupRedistributionRate().setValue(0.1);

为了最大程度保证可靠性,建议从宏中移除此方法的实例。

电化学:带电组分的更改

因为重构,带电组分的宏代码已进行更改。具体而言,以下实例

import star.electrochemicalspecies.ChargedSpeciesModel;

应改为

import star.electrochemicalspecies.chargedspecies.ChargedSpeciesModel;

以下实例

import star.electrochemicalspecies.ChargedSpeciesSolver;

应改为

import star.electrochemicalspecies.chargedspecies.ChargedSpeciesSolver;

对于仅使用 ChargedSpeciesModel 的设置(非使用 ElectrochemicalSpeciesModel 的设置),以下实例

import star.electrochemicalspecies.ElectrochemicalSpeciesIonicConductivityMethod;

应改为

import star.electrochemicalspecies.chargedspecies.SpeciesIonicConductivityMethod;

设计管理器:网格重用的更改

设计管理器中的网格重用功能已修改,导致 MdxMacroFile 的更改:

  • MdxMacroFile.java 中的 MacroInsertType 枚举类型在 Simcenter STAR-CCM+ 2021.2 中已弃用。已替换为新的 MacroInsertionPoint 枚举类型。
  • getMacroInsertType()setMacroInsertType() 方法已弃用。为了最大程度保证可靠性,在宏代码中将它们替换为 getMacroInsertionPoint()setMacroInsertionPoint() 新方法。
  • MacroInsertType.AFTER_MESHING 替换为 MacroInsertionPoint.BEFORE_RUNNING
  • MacroInsertType.AFTER_RUNNING 替换为 MacroInsertionPoint.BEFORE_RESULTS
以前版本 Simcenter STAR-CCM+ 2021.2
MdxMacroFile mdxMacroFile_0 = mdxStudySettings_0.getMacroFiles().createMacroFile(0, "macro.java");
mdxMacroFile_0.setMacroInsertType (MdxMacroFile.MacroInsertType.AFTER_MESHING);
mdxMacroFile_0.setMacroInsertType (MdxMacroFile.MacroInsertType.AFTER_RUNNING);
MdxMacroFile mdxMacroFile_0 = mdxStudySettings_0.getMacroFiles().createMacroFile( MacroInsertionPoint.BEFORE_MESHING, "macro.java")
mdxMacroFile_0.setMacroInsertionPoint (MdxMacroFile.MacroInsertionPoint.BEFORE_RUNNING);
mdxMacroFile_0.setMacroInsertionPoint (MdxMacroFile.MacroInsertionPoint.BEFORE_RESULTS);