宏 API 更改 2506

在 Simcenter STAR-CCM+ 2506 中,体形状、3D-CAD、网格化、材料属性、辐射、多相、DEM、欧拉多相流、固体应力、电磁、电化学和后处理的宏 API 均已更改。

计划终止体形状节点宏 (2510)

体形状已从 Simcenter STAR-CCM+ 2410 的用户界面中移除,因为此功能已在部件中提供。尽管这些对象在某些情况下仍可在宏代码中起作用,但已计划从版本 2510 中完全移除它们。

要转换形状部件,使用 SimulationPartManager.class 而不是 VolumeShape.class。下面是用于创建和转换体形状(以前的发行版)和形状部件(版本 2506)的宏代码示例:

以前版本 Simcenter STAR-CCM+ 2506
Simulation simulation_0 = getActiveSimulation();
Units units_0 =  simulation_0.getUnitsManager().getPreferredUnits(Dimensions.Builder().length(1).build());
BrickVolumeShape brickVolumeShape_0 = (BrickVolumeShape) simulation_0.get(VolumeShapeManager.class).createBrickVolumeShape();
LabCoordinateSystem labCoordinateSystem_0 = simulation_0.getCoordinateSystemManager().getLabCoordinateSystem();
brickVolumeShape_0.translate(new DoubleVector(new double[] {0.0, 1.0, 0.0}), new ArrayList<>(Arrays.<Units>asList(units_0, units_0, units_0)), labCoordinateSystem_0);
Simulation simulation_0 = getActiveSimulation();
Units units_0 = simulation_0.getUnitsManager().getPreferredUnits(Dimensions.Builder().length(1).build());
MeshPartFactory meshPartFactory_0 = simulation_0.get(MeshPartFactory.class);
SimpleBlockPart simpleBlockPart_0 = simulation_0.get(MeshPartFactory.class).createNewBlockPart(simulation_0.get(SimulationPartManager.class));
LabCoordinateSystem labCoordinateSystem_0 = simulation_0.getCoordinateSystemManager().getLabCoordinateSystem();
simulation_0.get(SimulationPartManager.class).translateParts(new ArrayList<>(Arrays.<GeometryPart>asList(simpleBlockPart_0)), new DoubleVector(new double[] {0.0, 1.0, 0.0}), new ArrayList<>(Arrays.<Units>asList(units_0, units_0, units_0)), labCoordinateSystem_0);

对于反应流模拟中的点火器,无法再使用体形状部件。VolumeShape.class 必须替换为 SimpleShapePart.class。

以前版本 Simcenter STAR-CCM+ 2506
BrickVolumeShape brickVolumeShape_0 = (BrickVolumeShape) simulation_0.get(VolumeShapeManager.class).createBrickVolumeShape();
SimpleBlockPart simpleBlockPart_0 = simulation_0.get(MeshPartFactory.class).createNewBlockPart(simulation_0.get(SimulationPartManager.class));
ConeVolumeShape coneVolumeShape_0 =(ConeVolumeShape)
simulation_0.get(VolumeShapeManager.class).createConeVolumeShape();
SimpleConePart simpleConePart_0 = 
simulation_0.get(MeshPartFactory.class).createNewConePart(simulation_0.get(SimulationPartManager.class));
    CylinderVolumeShape cylinderVolumeShape_0 =(CylinderVolumeShape) simulation_0.get(VolumeShapeManager.class).createCylinderVolumeShape();
SimpleCylinderPart simpleCylinderPart_0 = 
simulation_0.get(MeshPartFactory.class).createNewCylinderPart(simulation_0.get(SimulationPartManager.class));
    SphereVolumeShape sphereVolumeShape_0 = (SphereVolumeShape) simulation_0.get(VolumeShapeManager.class).createSphereVolumeShape();
SimpleSpherePart simpleSpherePart_0 = 
simulation_0.get(MeshPartFactory.class).createNewSpherePart(simulation_0.get(SimulationPartManager.class));

3D-CAD:新的名称分配方法

对于 CAD 导入,已针对没有原始分配名称的那些对象更改了向体和部件分配名称的 Siemens 适配器过程。与早期版本相比,此更改为 CAD 文件引入了更有意义的名称。但是,它也会导致宏代码更改,因为体和部件的名称与早期版本不同。如果任何工作流程依赖于这些名称,则必须更新工作流程以反映较新的名称。

为了促进此更新,引入了较新的宏 API,并对 3D-CAD 和部件环境中所有用户界面组件上的那些 API 进行更新的调用:

  • ImportManager:: importPLMXML2
  • PartImportManager:: importCadPart2
  • PartImportManager::importCadParts2
  • PartImportManager::importTessellatedCadPart2
  • PartImportManager::importTessellatedCadParts2
  • CadPart:: reimportPart2
  • CadModel:: importCadFiles2
  • SolidModelManager:: importFilesInto3DCad2
  • SolidModelManager:: importFilesIntoNew3DCad2

使用这些 API 的较旧版本(不带任何后缀 2)的任何应用程序都必须升级到较新版本,转换器才能识别此更改。调用较旧版本 API 的任何应用程序都不会在体名称或部件名称方面发生任何更改。

网格化

计划终止初始化网格功能
因为 2302 版本中移除了基于区域网格化,宏代码中的“初始化网格化”命令自版本 2406 起已弃用,并计划从以后的某个版本中移除。要更新宏,移除以下代码的实例:
meshPipelineController_0.initializeMeshPipeline();
计划的核心网格优化器自动化
在 Simcenter STAR-CCM+ 的未来版本中,将无法再在用户界面访问核心网格优化器的设置。
在激活了运行原有核心网格优化器的情况下,在以前版本中保存的模拟文件将使用预先存在的设置恢复。
但是,访问 TetQualityThreshold 并使用 LegacyCoreOptimizer 的宏代码必须将该命令设为 true。例如:
dualAutoMesher_0.setLegacyCoreOptimizer(true);
dualAutoMesher_0.setTetQualityThreshold(0.4); //changed from 0.8
dualAutoMesher_0.setTetOptimizeCycles(1);
具有 setLegacyCoreOptimizer(false) 设置的宏将生成错误。
因此,建议将 LegacyCoreOptimizer 设为 true,或从宏中移除此步骤。

材料属性:TemperaturePolynomial 法重命名

TemperaturePolynomial 法名称已更改。要更新宏,则更改以下项的实例

star.flow.MultiPhaseVolumeWeightedDynamicViscosityMethod

更改为

star.multiphase.MultiPhaseVolumeWeightedDynamicViscosityMethod

辐射:Photon Monte Carlo 求解器的更改

由于 Photon Monte Carlo 求解器的重构,用于设置每个块和每个网格单元的平均射线数的宏代码已更改。这适用于以下代码:

PMCSolver pMCSolver_0 = ((PMCSolver) simulation_0.getSolverManager().getSolver(PMCSolver.class));
PMCRtPhysicsSolver pMCRtPhysicsSolver_0 = ((PMCRtPhysicsSolver) pMCSolver_0.getSolvers().getSolver(PMCRtPhysicsSolver.class));

具体更改如下:

以前版本 Simcenter STAR-CCM+ 2506
pMCRtPhysicsSolver_0.setNumRaysPerPatch(25);
pMCRtPhysicsSolver_0.setNumRaysPerCell(10);
pMCRtPhysicsSolver_0.setRaysPerPatch(new IntVector(new int[] {4, 25}));
pMCRtPhysicsSolver_0.setRaysPerCell(new IntVector(new int[] {2, 10}));

多相:移除显式多步求解器

显式多步求解器从 Simcenter STAR-CCM+ 2402 开始弃用,并已从 2506 版本中移除。

移除显式多步求解器 - 对 VOF 的影响

在本例中,将“显式多步”切换为“动态隐式多步”。

以前版本 Simcenter STAR-CCM+ 2506
SegregatedVofSolver segregatedVofSolver_0 = ((SegregatedVofSolver) simulation_0.getSolverManager().getSolver(SegregatedVofSolver.class));
segregatedVofSolver_0.setSolverTypeOption(SolverTypeOption.EXPLICIT_MULTI_STEP);
SegregatedVofSolver segregatedVofSolver_0 = ((SegregatedVofSolver) simulation_0.getSolverManager().getSolver(SegregatedVofSolver.class));
segregatedVofSolver_0.setSubStepSpecification(VolumeFractionSolverSubStepSpecificationOption.DYNAMIC);

移除 SegregatedVolumeFractionSingleStepSolver/SegregatedVolumeFractionImplicitMultiStepSolver 子求解器的子求解器设计,并将属性迁移到相应的 SegregatedVofSolver/SegregatedMmpSolver - VOF 和 MMP

在这个采用 VOF 的示例中,为分离 VOF 单步求解器调整了 AMG 容差。

以前版本 Simcenter STAR-CCM+ 2506
SegregatedVofSolver segregatedVofSolver_0 = ((SegregatedVofSolver) sim.getSolverManager().getSolver(SegregatedVofSolver.class));
SegregatedVolumeFractionSingleStepSolver segregatedVolumeFractionSingleStepSolver_0 = ((SegregatedVolumeFractionSingleStepSolver) segregatedVofSolver_0.getSubSolverManager().getSolver(SegregatedVolumeFractionSingleStepSolver.class));
AMGLinearSolver aMGLinearSolver_1 = segregatedVolumeFractionSingleStepSolver_0.getAMGLinearSolver();
aMGLinearSolver_1.setConvergeTol(1.0E-6);
SegregatedVofSolver segregatedVofSolver_0 = ((SegregatedVofSolver) sim.getSolverManager().getSolver(SegregatedVofSolver.class));
AMGLinearSolver aMGLinearSolver_1 = segregatedVofSolver_0.getAMGLinearSolver();
aMGLinearSolver_1.setConvergeTol(1.0E-6);

在这个采用 VOF 的示例中,“单步”设置切换为使用“隐式多步”及四个子步。

以前版本 Simcenter STAR-CCM+ 2506
SegregatedVofSolver segregatedVofSolver_0 = ((SegregatedVofSolver) getActiveSimulation().getSolverManager().getSolver(SegregatedVofSolver.class));
segregatedVofSolver_0.setSolverTypeOption(SolverTypeOption.IMPLICIT_MULTI_STEP);
SegregatedVolumeFractionImplicitMultiStepSolver segregatedVolumeFractionImplicitMultiStepSolver_0                = ((SegregatedVolumeFractionImplicitMultiStepSolver) segregatedVofSolver_0.getSubSolverManager().getSolver(SegregatedVolumeFractionImplicitMultiStepSolver.class));
segregatedVolumeFractionImplicitMultiStepSolver_0.setSubStepCount(4);
SegregatedVofSolver segregatedVofSolver_0 = ((SegregatedVofSolver) getActiveSimulation().getSolverManager().getSolver(SegregatedVofSolver.class));
segregatedVofSolver_0.setSubStepCount(4);

在此 VOF 示例中,激活“隐式多步”及“动态子步指定”,并设置“目标子步 CFL”属性。

以前版本 Simcenter STAR-CCM+ 2506
SegregatedVofSolver segregatedVofSolver_0 = ((SegregatedVofSolver) simulation_0.getSolverManager().getSolver(SegregatedVofSolver.class));
segregatedVofSolver_0.setSolverTypeOption(SolverTypeOption.IMPLICIT_MULTI_STEP);

SegregatedVolumeFractionImplicitMultiStepSolver segregatedVolumeFractionImplicitMultiStepSolver_0 = ((SegregatedVolumeFractionImplicitMultiStepSolver) segregatedVofSolver_0.getSubSolverManager().getSolver(SegregatedVolumeFractionImplicitMultiStepSolver.class));
segregatedVolumeFractionImplicitMultiStepSolver_0.setSubStepSpecification(VolumeFractionSolverSubStepSpecificationOption.DYNAMIC);
segregatedVolumeFractionImplicitMultiStepSolver_0.getTargetCfl().setValue(0.1);
SegregatedVofSolver segregatedVofSolver_0 = ((SegregatedVofSolver) simulation_0.getSolverManager().getSolver(SegregatedVofSolver.class));
segregatedVofSolver_0.setSubStepSpecification(VolumeFractionSolverSubStepSpecificationOption.DYNAMIC);
segregatedVofSolver_0.getTargetCfl().setValue(0.1);

在此 MMP 示例中,激活物理连续体中的混合多相 (MMP) 模型。

以前版本 Simcenter STAR-CCM+ 2506
physicsContinuum.enable(SegregatedNPhaseMixtureModel.class);
physicsContinuum.enable(SegregatedMmpModel.class);

在此 MMP 示例中,更改分离 MMP 求解器中的 URF。

以前版本 Simcenter STAR-CCM+ 2506
SegregatedNPhaseMixtureSolver segregatedNPhaseMixtureSolver_0 = ((SegregatedNPhaseMixtureSolver) simulation_0.getSolverManager().getSolver(SegregatedNPhaseMixtureSolver.class));
SegregatedVolumeFractionSingleStepSolver segregatedVolumeFractionSingleStepSolver_0 = ((SegregatedVolumeFractionSingleStepSolver) segregatedNPhaseMixtureSolver_0.getSubSolverManager().getSolver(SegregatedVolumeFractionSingleStepSolver.class));
segregatedVolumeFractionSingleStepSolver_0.setUrf(0.5);
SegregatedMmpSolver segregatedMmpSolver_0 = ((SegregatedMmpSolver) simulation_0.getSolverManager().getSolver(SegregatedMmpSolver.class));
segregatedMmpSolver_0.setUrf(0.5);

将 Piso 特定 UpdateFrequencyOption 重命名为 PisoUpdateFrequencyOption - VOF 和液膜

在这个采用液膜的示例中,“更新频率”改为“每个修正器”(之前称为“每次迭代”)。

以前版本 Simcenter STAR-CCM+ 2506
SegregatedFluidFilmMultiphaseSolver segregatedFluidFilmMultiphaseSolver_0 = ((SegregatedFluidFilmMultiphaseSolver) simulation_0.getSolverManager().getSolver(SegregatedFluidFilmMultiphaseSolver.class));
segregatedFluidFilmMultiphaseSolver_0.getUpdateFrequencyOption().setSelected(UpdateFrequencyOption.Type.EVERY_ITERATION);
SegregatedFluidFilmMultiphaseSolver segregatedFluidFilmMultiphaseSolver_0 = ((SegregatedFluidFilmMultiphaseSolver) simulation_0.getSolverManager().getSolver(SegregatedFluidFilmMultiphaseSolver.class));
segregatedFluidFilmMultiphaseSolver_0.getPisoUpdateFrequencyOption().setSelected(PisoUpdateFrequencyOption.Type.EVERY_CORRECTOR);

激活(整数)表达式作为“子步数”和“最大子步数”属性的输入内容 - VOF + MMP

在这个 VOF 新功能的示例中,使用“固定”子步进,且“子步数”= ${TimeLevel} <= 50 ? 20 : 10。

SegregatedVofSolver segregatedVofSolver_0 = ((SegregatedVofSolver) simulation_0.getSolverManager().getSolver(SegregatedVofSolver.class));
segregatedVofSolver_0.setSubStepSpecification(VolumeFractionSolverSubStepSpecificationOption.FIXED);

IntegerValue integerValue_0 = segregatedVofSolver_0.getFixedSubStepCount();
integerValue_0.getQuantity().setDefinition("${TimeLevel} <= 50 ? 20 : 10");

在这个 VOF 新功能的示例中,使用“动态”子步进,且“最大子步数”= ${TimeLevel} <= 50 ? 50 : 20.

SegregatedVofSolver segregatedVofSolver_0 = ((SegregatedVofSolver) simulation_0.getSolverManager().getSolver(SegregatedVofSolver.class));
segregatedVofSolver_0.setSubStepSpecification(VolumeFractionSolverSubStepSpecificationOption.DYNAMIC);

IntegerValue integerValue_0 = segregatedVofSolver_0.getMaxDynamicSubStepCount();
integerValue_0.getQuantity().setDefinition("${TimeLevel} <= 50 ? 50 : 20");

DEM:颗粒建模的更改

对于设置 DEM 相的宏,已发现 DemSphericalParticleModel 的可靠性更高。

因此,如果有使用 DemModel 设置相的宏,则应将 SphericalParticleModel 的所有实例替换为 DemSphericalParticleModel。

例如,更改 enable(SphericalParticleModel.class);

更改为

enable(DemSphericalParticleModel.class);

欧拉多相流 (EMP)

破碎模型的更改
AMUSIG 中和离散求积 S-Gamma 中使用的破碎模型 Tsouris-Tavlarides 已重命名为 Coulaloglou-Tavlarides。因此,TsourisTavlaridesBreakageRateModel.class 已重命名为 CoulaloglouTavlaridesBreakageRateModel.class。相应地替换宏中的所有 TsourisTavlaridesBreakageRateModel.class 实例。
AMUSIG 破碎和聚结模型的更改
AMUSIG 破碎和聚结模型已经过修改,只会影响自定义编辑的宏代码:
  • AMUSIG 聚结的均匀幂律碰撞率和增强幂律碰撞率模型现在强制依赖流态聚结模型。
  • AMUSIG 破碎的幂律破碎率模型现在强制依赖流态破碎模型。
仅当手动自定义 .java 文件并忽略用户界面中包含的相特定使能器模型时,才会注意到更改。如果使用 Simcenter STAR-CCM+ 工作区功能录制宏,则默认情况下会在激活正确模型的情况下录制宏。
颗粒尺寸分布成核模型的更改
作为重构的一部分,以前处于 multiphase 下的某些 Java 代码现在处于 emp 下。因此,在包含 EulerianPhaseSizeDistributionModelGroup、SgammaDmpModel 或 SgammaMmpModel 的所有宏中添加 star.emp.*。
以前版本 Simcenter STAR-CCM+ 2506
import star.common.*;
import star.eulerianmultiphasemasstransfer.*;
import star.eulerianmultiphaseturb.*;
import star.keturb.*;
import star.multiphase.*;
import star.segregatedmultiphase.*;
import star.turbulence.*;
import star.common.*;
import star.emp.*;
import star.eulerianmultiphasemasstransfer.*;
import star.eulerianmultiphaseturb.*;
import star.keturb.*;
import star.multiphase.*;
import star.segregatedmultiphase.*;
import star.turbulence.*;

固体应力

单元增强模型简介
单元增强模型已添加到固体应力建模中,以提供广泛的附加选项。此项改进导致宏代码更改。
以前版本 Simcenter STAR-CCM+ 2506
physicsContinuum_0.enable(NearlyIncompressibleMaterialModel.class);
physicsContinuum_0.enable(ElementEnhancementModel.class);
physicsContinuum_0.enable(NearlyIncompressibleMaterialModel.class);
对于几何线性模拟,要获得与先前版本的 Simcenter STAR-CCM+ 一致的结果,将以下代码添加到宏:
physicsContinuum_0.enable(ElementEnhancementModel.class);
physicsContinuum_0.enable(Hex8LinearStrainElementEnhancementModel.class);
重命名塑性应变场函数
场函数“有效塑性应变”已重命名为“Von Mises 塑性应变”,从而导致宏代码发生更改。
以前版本 Simcenter STAR-CCM+ 2506
PrimitiveFieldFunction primitiveFieldFunction_0 =
        ((PrimitiveFieldFunction)simulation_0.getFieldFunctionManager()
             .getFunction("EffectivePlasticStrain"));
PrimitiveFieldFunction primitiveFieldFunction_0 =
        ((PrimitiveFieldFunction)simulation_0.getFieldFunctionManager()
             .getFunction("VonMisesPlasticStrain"));
拟牛顿稳化的更改
保留临时储存选项已从拟牛顿稳化求解器中移除,因为它不再是当前工作流程的必需部分。
此项修改已导致宏代码发生更改。
以前版本 Simcenter STAR-CCM+ 2506
FixedPointSolver fp = ((FixedPointSolver) sim.getSolverManager().getSolver(FixedPointSolver.class));
fp.setLeaveTemporaryStorage(true);
FixedPointSolver fp = ((FixedPointSolver) sim.getSolverManager().getSolver(FixedPointSolver.class));

电磁:引入电阻选项

有限元磁矢势模型中添加了对接触电阻的支持,从而导致宏代码发生更改。

边界上的电阻选项

以前版本 Simcenter STAR-CCM+ 2506
ElectricalResistanceAreaProfile profile = bnd.getValues().get(ElectricalResistanceAreaProfile.class);
import star.electromagnetism.common.ElectricalResistanceOption;

boundary.getConditions().get(ElectricalResistanceOption.class).setSelected(ElectricalResistanceOption.Type.SPECIFIC_ELECTRICAL_RESISTANCE);
ElectricalResistanceAreaProfile profile = boundary.getValues().get(ElectricalResistanceAreaProfile.class);

交界面上的电阻选项

以前版本 Simcenter STAR-CCM+ 2506
ElectricalResistanceAreaProfile electricalResistanceAreaProfile = directBoundaryInterface.getValues().get(ElectricalResistanceAreaProfile.class);
import star.electromagnetism.common.ElectricalResistanceOption;

directBoundaryInterface.getConditions().get(ElectricalResistanceOption.class).setSelected(ElectricalResistanceOption.Type.SPECIFIC_ELECTRICAL_RESISTANCE);
ElectricalResistanceAreaProfile electricalResistanceAreaProfile = directBoundaryInterface.getValues().get(ElectricalResistanceAreaProfile.class);

电化学:相和反应的函数变化

由于重构,相间相互作用的相互作用面积密度和相间相互作用指数的宏代码已变化。

具体而言,以下公共成员函数在 2506 版本中已弃用(但尚未移除):

  • star.electrochemistry.electrochemicalreactions.PhaseInteractionAreaExponents.getPhases()
  • star.electrochemistry.electrochemicalreactions.PhaseInteractionAreaExponents.getReactions()
  • star.electrochemistry.electrochemicalreactions.PhaseInteractionAreaDensity.getPhases()
  • star.electrochemistry.electrochemicalreactions.PhaseInteractionAreaDensity.getReactions()

要获取与已弃用的 .getPhases() 调用相同的行为,宏必须调用 .getWeakPhaseRefs().getObjectsOf(Continuum.class)。

要获取与已弃用的 .getReactions() 调用相同的行为,宏必须调用 .getWeakReactionRefs().getObjectsOf(Reaction.class)。

后处理:场景轴被视图三轴坐标取代

在 Simcenter STAR-CCM+ 场景显示中,三轴坐标已被视图三轴坐标取代,其包含的立方体位于中心以方便导航。

尽管属性相同,但此新对象在右上角的查看窗口中具有不同的默认值,横坐标为 0.12 而不是 0.2,纵坐标为 0.24 而不是 0.2。

在宏代码中,getAxes() 现在已弃用,并返回 null。必须改为调用 getNavigationCube()。如果只想更改 NavCube 的可见性,可以直接使用 setAxesVisible(boolean v)。

材料属性:弃用各向异性材料属性指定方法

材料属性指定方法各向异性和各向异性(原有)从 2210 版本开始已弃用,并计划从以后的版本中移除。有关这些方法和计划替换的详细信息,请参见 2506 发行说明“重要说明”章节中的“材料属性”。

如果任何现有宏使用已弃用的材料属性方法(导热率、导电率、渗透率、介电常数的 9 个各向异性分量,或是导热率各向异性(原有)),则搜索以下字符串的实例并更新它们,如下表中所示。

以前版本 Simcenter STAR-CCM+ 2506
AnisotropicElectricalConductivityMethodWithValues FullTensorElectricalConductivityMethodWithValues
AnisotropicPermeabilityMethodWithValues FullTensorPermeabilityMethodWithValues
AnisotropicPermittivityMethodWithValues FullTensorPermittivityMethodWithValues
AnisotropicThermalConductivityMethodWithValues FullTensorThermalConductivityMethodWithValues
AnisotropicThermalConductivityMethod FullTensorLegacyThermalConductivityMethod