宏 API 更改 2510

本章节包含自 Simcenter STAR-CCM+ 之前版本以来对宏 API 所做的更改。

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

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

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

以前版本 当前版本
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。

以前版本 当前版本
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));

网格化

计划终止初始化网格功能
因为 2302 版本中移除了基于区域网格化,宏代码中的“初始化网格化”命令自版本 2406 起已弃用,并计划从以后的某个版本中移除。要更新宏,移除以下代码的实例:
meshPipelineController_0.initializeMeshPipeline();
核心网格优化器自动化
核心网格优化器已完全自动化,当前版本的 UI 中无用户设置。
在激活了运行原有核心网格优化器的情况下,在以前版本中保存的模拟文件将使用预先存在的设置恢复。
但是,访问 TetQualityThreshold 并使用 LegacyCoreOptimizer 的宏代码必须将该命令设为 true。例如:
dualAutoMesher_0.setLegacyCoreOptimizer(true);
dualAutoMesher_0.setTetQualityThreshold(0.4); //changed from 0.8
dualAutoMesher_0.setTetOptimizeCycles(1);
具有 setLegacyCoreOptimizer(false) 设置的宏将生成错误。
因此,建议将 LegacyCoreOptimizer 设为 true,或从宏中移除此步骤。
引入旋转以使表面网格变形
使表面网格变形操作已得到增强,可支持使用旋转参数进行变形。此项改进导致宏代码更改。
以前发行版本 当前版本
    Units units_0 = ((Units) simulation_0.getUnitsManager().getObject("m"));

surfaceMorphOperation_0.getTranslateVector().setCoordinate(units_0, units_0, units_0, new DoubleVector(new double[] {1.0, 0.0, 0.0}));
surfaceMorphOperation_0.setParametricMode(SurfaceMorphParametricMode.TRANSLATE);

TranslationControl translationControl_0 = ((TranslationControl) surfaceMorphOperation_0.getTransforms().getObject("Translate"));

Units units_0 = ((Units) simulation_0.getUnitsManager().getObject("m"));

translationControl_0.getTranslationVector().setCoordinate(units_0, units_0, units_0, new DoubleVector(new double[] {1.0, 0.0, 0.0}));
surfaceMorphOperation_0.setCoordinateSystem(cartesianCoordinateSystem_0);
surfaceMorphOperation_0.setParametricMode(SurfaceMorphParametricMode.TRANSLATE);

TranslationControl translationControl_0 = ((TranslationControl) surfaceMorphOperation_0.getTransforms().getObject("Translate"));

translationControl_0.setCoordinateSystem(cartesionCoordinateSystem_0);

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

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

在先前版本中使用这些已弃用方法保存的任何模拟文件都将在当前版本中恢复使用常数方法,并显示一条警告消息。系统不会自动提供从已弃用方法到新各向异性方法的映射。

因此,使用下列出已弃用方法的任何宏在当前版本中都不起作用:

  • AnisotropicElectricalConductivityMethod
  • AnisotropicPermeabilityMethod
  • AnisotropicPermittivityMethod
  • FullTensorLegacyThermalConductivityMethod
  • FullTensorElectricalConductivityMethodWithValues
  • FullTensorPermeabilityMethodWithValues
  • FullTensorPermittivityMethodWithValues
  • FullTensorThermalConductivityMethodWithValues

推荐的做法是使用任意新的对称各向异性方法:

  • AnisotropicElectricalConductivityMethodWithValues
  • AnisotropicPermeabilityMethodWithValues
  • AnisotropicPermittivityMethodWithValues
  • AnisotropicThermalConductivityMethodWithValues

气动声学:停止使用声学抑制区模型

仅通过宏访问的声学抑制区模型不会显示在 Simcenter STAR-CCM+ UI 中,已移除。请改用海绵层模型。

要更新宏,确保移除包含字符串 BufferZone、AcousticsSuppressionOption 或 AcousticSuppressionZone 的指令。

要使用海绵层模型,按如下所示替换字符串:

以前版本 当前版本
physicsContinuum_0.enable(BufferZoneModel.class);
physicsContinuum_0.enable(SpongeLayerModel.class);

多相

停止使用升力校正的关联曳力选项
升力校正的关联曳力选项从 Simcenter STAR-CCM+ 2402 开始弃用,并已从当前版本中移除。因此,DragCorrelatedLiftCoefficientCorrectionMethod 已从当前版本的宏代码中移除。
在新版本中,当选择 LiftForceModel 时,DragCorrelatedLiftCoefficientCorrectionMethod 不再作为选项,且默认情况下激活恒定升力系数校正方法。
要更新宏,移除 DragCorrelatedLiftCoefficientCorrectionMethod 的所有实例。
如果尝试在当前版本的 Simcenter STAR-CCM+ 中运行原有宏,将看到如下错误消息:
Playing macro /u/cd2ekl/Projects/EMP-3609_deprecateLiftCoeffMethod/APIMacroChanges.java
error: /u/cd2ekl/Projects/EMP-3609_deprecateLiftCoeffMethod/APIMacroChanges.java:40: error: cannot find symbol
    ((LiftCoefficientCorrectionMethodManager) liftForceModel_1.getCoefficientCorrectionMethods()).setMethod(DragCorrelatedLiftCoefficientCorrectionMethod.class);
  symbol:   class DragCorrelatedLiftCoefficientCorrectionMethod
  location: class macro.APIMacroChanges
下面是需要进行此类更新的 Simcenter STAR-CCM+ 先前版本中的宏代码示例:
  private void execute0() {
    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("Water-Air"));
    LiftForceModel liftForceModel_0 = 
      phaseInteraction_0.getModelManager().getModel(LiftForceModel.class);
    phaseInteraction_0.disableModel(liftForceModel_0);
    phaseInteraction_0.enable(LiftForceModel.class);
    LiftForceModel liftForceModel_1 = 
      phaseInteraction_0.getModelManager().getModel(LiftForceModel.class);
    ((LiftCoefficientCorrectionMethodManager) liftForceModel_1.getCoefficientCorrectionMethods()).setMethod(DragCorrelatedLiftCoefficientCorrectionMethod.class);
  }
对广义相替换模型的更改
随着当前版本中 VOF 相替换的改进,用于选择相替换模型和调整相替换体积分数限值的宏代码已更改。
以前版本 当前版本
import java.util.*;

import star.common.;
import star.base.neo.;
import star.vof.*;

public class phase_replacement_model_selection_old extends StarMacro {

  public void execute() {
    execute0();
  }

  private void execute0() {
    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"));
    
    phaseInteraction_0.enable(VofPhaseReplacementModel.class);
    
    VofPhaseReplacementModel vofPhaseReplacementModel_0 = 
      phaseInteraction_0.getModelManager().getModel(VofPhaseReplacementModel.class);
    
    PhaseReplacementVolumeFractionLimitProfile phaseReplacementVolumeFractionLimitProfile_0 = 
      ((PhaseReplacementVolumeFractionLimitProfile) vofPhaseReplacementModel_0.getPhaseReplacementVolumeFractionLimitProfile());
    
    Units units_0 = 
      ((Units) simulation_0.getUnitsManager().getObject(""));
    
    phaseReplacementVolumeFractionLimitProfile_0.getMethod(ConstantScalarProfileMethod.class).getQuantity().setValueAndUnits(1.0, units_0);
  }
}
import java.util.*;

import star.common.;
import star.base.neo.;
import star.mixturemultiphase.*;

public class phase_replacement_model_selection_new extends StarMacro {

  public void execute() {
    execute0();
  }

  private void execute0() {
    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 Replacement"));
    
    phaseInteraction_0.enable(MmpPhaseReplacementModel.class);
    
    MmpPhaseReplacementModel mmpPhaseReplacementModel_1 = 
      phaseInteraction_0.getModelManager().getModel(MmpPhaseReplacementModel.class);
    
    PhaseReplacementVolumeFractionLimitProfile phaseReplacementVolumeFractionLimitProfile_0 = 
      ((PhaseReplacementVolumeFractionLimitProfile) mmpPhaseReplacementModel_1.getPhaseReplacementVolumeFractionLimitProfile());
    
    Units units_0 = 
      ((Units) simulation_0.getUnitsManager().getObject(""));
    
    phaseReplacementVolumeFractionLimitProfile_0.getMethod(ConstantScalarProfileMethod.class).getQuantity().setValueAndUnits(1.0, units_0);
  }
}

DEM:指定 DEM 多相相互作用的工作流程更改

在 DEM 相间相互作用模型上下文(例如吸收或液体成分传递)中通过组分映射模型对连接属性(即传递组分映射)进行的修改已更改为通过单个相对执行修改。

这仅影响包括(液体)组分质量传递的 DEM 相间相互作用。

以下示例适用于名为片剂 <-> 片剂的单独相对:

以前版本 当前版本
InterphaseComponentMappingModel interphaseComponentMappingModel_0 = phaseInteraction_0.getModelManager().getModel(InterphaseComponentMappingModel.class);
interphaseComponentMappingModel_0.setMixtureComponentPairListInput(new StringVector(new String[]{"Coating Liquid", "Coating Liquid"}));
import star.common.InteractionPhasePair;
import star.lagrangian.dem.DemPhaseInteractionModel;
import star.multiphase.TransferredComponentManager;
…
DemPhaseInteractionModel demPhaseInteractionModel_0 = phaseInteraction_0.getModelManager().getModel(DemPhaseInteractionModel.class);
InteractionPhasePair interactionPhasePair_0 = demPhaseInteractionModel_0.getInteractionPhasePairManager().getInteractionPhasePair("Tablets <-> Tablets");
TransferredComponentManager transferredComponentManager_0 = ((TransferredComponentManager) interactionPhasePair_0.getTransferredComponentManager());
transferredComponentManager_0.setTransferredComponents(new StringVector(new String[] {"Coating Liquid", "Coating Liquid"}));

欧拉多相流 (EMP)

对单组分晶体生长模型消息的更改
单组分晶体生长模型的 Simcenter STAR-CCM+ 工作区消息功能已改进,导致宏代码发生更改。要更新宏:
  • 将实例
    singleComponentCrystalGrowthModel_0.setTargetSolventComponent(liquidComponent_0);

    更改为

    singleComponentCrystalGrowthModel_0.setTargetSoluteComponent(liquidComponent_0);
  • 将实例
    singleComponentCrystalGrowthFromMeltModel_0.setTargetSolventComponent(liquidComponent_0);

    更改为

    singleComponentCrystalGrowthFromMeltModel_0.setTargetSoluteComponent(liquidComponent_0);
离散颗粒聚结重命名为聚并
在离散求积 S-Gamma 和 AMUSIG 中,聚合颗粒的相应术语已从“聚结”更改为“聚并”。
对于颗粒的连续相-离散相相互作用,当在当前版本中打开模型名称中含有聚结的模拟时,这些模型现在的名称中已采用聚并。
离散液体和离散气体的名称和代码字符串保持不变。
下表显示了已更改宏代码字符串的列表,后续表格则显示了宏代码更新的示例。
先前版本(适用于离散气体、液体和颗粒) 当前版本(对于离散颗粒)
AMUSIG
MusigCoalescenceModel MusigCoagulationModel
MusigTurbulentCoalescenceModelGroup MusigTurbulentCoagulationModelGroup
MusigLaminarCoalescenceModelGroup MusigLaminarCoagulationModelGroup
UniformCoalescenceEfficiencyModel UniformCoagulationEfficiencyModel
UniformCoalescenceEfficiencyProfile UniformCoagulationEfficiencyProfile
FilmDrainageCoalescenceEfficiencyModel FilmDrainageCoagulationEfficiencyModel
FilmDrainageCoalescenceEfficiencyPrefactorProfile FilmDrainageCoagulationEfficiencyPrefactorProfile
离散求积 S-Gamma
SgammaDiscreteQuadratureCoalescenceModel SgammaDiscreteQuadratureCoagulationModel
SgammaDiscreteQuadratureCoalescenceModel.getSgammaCoalescenceEfficiencyMethodManager(...) SgammaDiscreteQuadratureCoagulationModel.getSgammaCoagulationEfficiencyMethodManager(...)
SgammaCoalescenceEfficiency SgammaCoagulationEfficiency
SgammaCoalescenceEfficiencyMethodManager SgammaCoagulationEfficiencyMethodManager

对于离散颗粒,AMUSIG

以前版本 当前版本
phaseInteraction_0.enable(MusigCoalescenceModel.class);

phaseInteraction_0.enable(MusigLaminarCoalescenceModelGroup.class);

    phaseInteraction_0.enable(UniformCollisionRateModel.class);

phaseInteraction_0.enable(UniformCoalescenceEfficiencyModel.class);

UniformCoalescenceEfficiencyModel uniformCoalescenceEfficiencyModel_0 = 
  phaseInteraction_1.getModelManager().getModel(UniformCoalescenceEfficiencyModel.class);

 phaseInteraction_1.disableModel(uniformCoalescenceEfficiencyModel_0);

 phaseInteraction_1.enable(FilmDrainageCoalescenceEfficiencyModel.class);
phaseInteraction_0.enable(MusigCoagulationModel.class);

phaseInteraction_0.enable(MusigLaminarCoagulationModelGroup.class);

    phaseInteraction_0.enable(UniformCollisionRateModel.class);

phaseInteraction_0.enable(UniformCoagulationEfficiencyModel.class);

UniformCoagulationEfficiencyModel uniformCoagulationEfficiencyModel_0 = 
  phaseInteraction_1.getModelManager().getModel(UniformCoagulationEfficiencyModel.class);

 phaseInteraction_1.disableModel(uniformCoagulationEfficiencyModel_0);

 phaseInteraction_1.enable(FilmDrainageCoagulationEfficiencyModel.class);

对于离散颗粒,为离散求积 S-Gamma

以前版本 当前版本
phaseInteraction_0.enable(SgammaDiscreteQuadratureCoalescenceModel.class);

((SgammaCoalescenceEfficiencyMethodManager) sgammaDiscreteQuadratureCoalescenceModel_0.getSgammaCoalescenceEfficiencyMethodManager(dispersedFlowRegime_0)).setMethod(FunctionInteractionCoefficientMethod.class);

FunctionInteractionCoefficientMethod functionInteractionCoefficientMethod_0 = 
  ((SgammaCoalescenceEfficiencyMethodManager) sgammaDiscreteQuadratureCoalescenceModel_0.getSgammaCoalescenceEfficiencyMethodManager(dispersedFlowRegime_0)).getMethod(FunctionInteractionCoefficientMethod.class);
phaseInteraction_0.enable(SgammaDiscreteQuadratureCoagulationModel.class);

 ((SgammaCoagulationEfficiencyMethodManager) sgammaDiscreteQuadratureCoagulationModel_0.getSgammaCoagulationEfficiencyMethodManager(dispersedFlowRegime_0)).setMethod(FunctionInteractionCoefficientMethod.class);

 FunctionInteractionCoefficientMethod functionInteractionCoefficientMethod_0 = 
   ((SgammaCoagulationEfficiencyMethodManager) sgammaDiscreteQuadratureCoagulationModel_0.getSgammaCoagulationEfficiencyMethodManager(dispersedFlowRegime_0)).getMethod(FunctionInteractionCoefficientMethod.class);

拉格朗日多相流 (LMP)

旋转相关模型的更改
在当前版本中,与颗粒旋转相关的某些模型和变量已从 DEM 传递到 LMP,导致宏代码发生更改。具体而言,要更新宏,则搜索以下字符串的实例并更新它们,如下表中所示。
以前版本 当前版本
star.lagrangian.dem.AngularVelocityProfile star.lagrangian.AngularVelocityProfile
star.lagrangian.dem.DragTorqueModel star.lagrangian.DragTorqueModel
star.lagrangian.dem.FunctionRotationalDragCoefficientMethod star.lagrangian.FunctionRotationalDragCoefficientMethod
star.lagrangian.dem.FunctionSpinLiftCoefficientMethod star.lagrangian.FunctionSpinLiftCoefficientMethod
star.lagrangian.dem.InjectorAngularVelocity star.lagrangian.InjectorAngularVelocity
star.lagrangian.dem.InjectorAngularVelocityMagnitude star.lagrangian.InjectorAngularVelocityMagnitude
star.lagrangian.dem.InjectorAngularVelocityOption star.lagrangian.InjectorAngularVelocityOption
star.lagrangian.dem.ParticleSpinLiftCoefficientMethod star.lagrangian.ParticleSpinLiftCoefficientMethod
star.lagrangian.dem.ParticleSpinLiftCoefficientMethodEditor star.lagrangian.ParticleSpinLiftCoefficientMethodEditor
star.lagrangian.dem.ParticleSpinLiftCoefficientMethodManager star.lagrangian.ParticleSpinLiftCoefficientMethodManager
star.lagrangian.dem.ParticleSpinLiftForceModel star.lagrangian.ParticleSpinLiftForceModel
star.lagrangian.dem.RotationalDragCoefficientMethod star.lagrangian.RotationalDragCoefficientMethod
star.lagrangian.dem.RotationalDragCoefficientMethodEditor star.lagrangian.RotationalDragCoefficientMethodEditor
star.lagrangian.dem.RotationalDragCoefficientMethodManager star.lagrangian.RotationalDragCoefficientMethodManager
star.lagrangian.dem.SommerfeldDragTorqueMethod star.lagrangian.SommerfeldDragTorqueMethod
star.lagrangian.dem.SommerfeldSpinLiftCoefficientMethod star.lagrangian.SommerfeldSpinLiftCoefficientMethod
磁滞建模的更改
当前版本改进了用户自定义场函数和磁滞建模之间的兼容性。此项改进导致设置接触角磁滞的宏代码发生更改。
以前版本 当前版本
import java.util.*;

import star.common.*;
import star.base.neo.*;
import star.vof.*;

public class activateContactAngleHysteresis extends StarMacro {

  public void execute() {
    execute0();
  }

  private void execute0() {

    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"));

    SurfaceTensionModel surfaceTensionModel_0 = 
      phaseInteraction_0.getModelManager().getModel(SurfaceTensionModel.class);

    surfaceTensionModel_0.setContactAngleHysteresis(true);
  }
}
import java.util.*;

import star.multiphase.*;
import star.common.*;
import star.base.neo.*;

public class activateContactAngleHysteresis extends StarMacro {

  public void execute() {
    execute0();
  }

  private void execute0() {

    Simulation simulation_0 = 
      getActiveSimulation();

    Region region_0 = 
      simulation_0.getRegionManager().getRegion("Region_2D");

    Boundary boundary_0 = 
      region_0.getBoundaryManager().getBoundary("Wall");

    PhaseConditions phaseConditions_0 = 
      ((PhaseConditions) boundary_0.get(PhaseConditionsManager.class).getPhaseConditions("Phase Interaction 1"));

    ContactAngleHysteresisOption contactAngleHysteresisOption_0 = 
      phaseConditions_0.getPhaseConditionManager().get(ContactAngleHysteresisOption.class);

    contactAngleHysteresisOption_0.setOptionEnabled(true);
  }
}
碰撞检测的更改
拉格朗日多相碰撞检测求解器现在有两个碰撞检测管理器对象:体积碰撞和新添加的壳碰撞。
要更新现有宏,将 getDetectionMethods() 的实例替换为 getVolumeDetectionMethods()。
以前版本 当前版本
import java.util.*;

import star.common.*;
import star.lagrangian.collision.*;
import star.lagrangian.*;

public class macro1_old extends StarMacro {

  public void execute() {
    execute0();
  }

  private void execute0() {

    Simulation simulation_0 = 
      getActiveSimulation();

    LagrangianMultiphaseSolver lagrangianMultiphaseSolver_0 = 
      ((LagrangianMultiphaseSolver) simulation_0.getSolverManager().getSolver(LagrangianMultiphaseSolver.class));

    CollisionDetectionSolver collisionDetectionSolver_0 = 
      ((CollisionDetectionSolver) lagrangianMultiphaseSolver_0.getSolvers().getSolver(CollisionDetectionSolver.class));

    collisionDetectionSolver_0.getDetectionMethods().setMethod(CellBasedCollisionDetectionMethod.class);
import java.util.*;

import star.common.*;
import star.lagrangian.collision.*;
import star.lagrangian.*;

public class macro1_new extends StarMacro {

  public void execute() {
    execute0();
  }

  private void execute0() {

    Simulation simulation_0 = 
      getActiveSimulation();

    LagrangianMultiphaseSolver lagrangianMultiphaseSolver_0 = 
      ((LagrangianMultiphaseSolver) simulation_0.getSolverManager().getSolver(LagrangianMultiphaseSolver.class));

    CollisionDetectionSolver collisionDetectionSolver_0 = 
      ((CollisionDetectionSolver) lagrangianMultiphaseSolver_0.getSolvers().getSolver(CollisionDetectionSolver.class));

    collisionDetectionSolver_0.getVolumeDetectionMethods().setMethod(CellBasedCollisionDetectionMethod.class);

电磁

框架的更改
鉴于计划在未来版本中推出新的有限元高阶模型,现在通过引入新的代码结构,使高阶用户体验标准化。此结构将由未来所有的有限元高阶模型共享,同时还提供其他方式来控制多项式次数定义。
为确保有限元建模的性能一致,建议提前更新宏,如以下示例所示。
以前版本 当前版本
import java.util.*;

import star.common.*;
import star.base.neo.*;
import star.electromagnetism.magneticpotential.fem.*;

public class Macro_20_04 extends StarMacro {

  public void execute() {
    execute0();
  }

  private void execute0() {

    Simulation simulation_0 = 
      getActiveSimulation();

    PhysicsContinuum physicsContinuum_0 = 
      ((PhysicsContinuum) simulation_0.getContinuumManager().getContinuum("Physics 1"));

    FiniteElementMagneticVectorPotentialModel finiteElementMagneticVectorPotentialModel_0 = 
      physicsContinuum_0.getModelManager().getModel(FiniteElementMagneticVectorPotentialModel.class);

    finiteElementMagneticVectorPotentialModel_0.setFiniteElementOrder(2);
  }
}
import java.util.*;

import star.common.*;
import star.base.neo.*;
import star.fea.common.models.*;
import star.electromagnetism.magneticpotential.fem.*;

public class Macro_20_06 extends StarMacro {

  public void execute() {
    execute0();
  }

  private void execute0() {

    Simulation simulation_0 = 
      getActiveSimulation();

    PhysicsContinuum physicsContinuum_0 = 
      ((PhysicsContinuum) simulation_0.getContinuumManager().getContinuum("Physics 1"));

    FiniteElementMagneticVectorPotentialModel finiteElementMagneticVectorPotentialModel_0 = 
      physicsContinuum_0.getModelManager().getModel(FiniteElementMagneticVectorPotentialModel.class);

    FeMagneticVectorPotentialPOrderProviders feMagneticVectorPotentialPOrderProviders_0 = 
      finiteElementMagneticVectorPotentialModel_0.getPOrderProviders();

    FePOrderProfileProvider fePOrderProfileProvider_0 = 
      feMagneticVectorPotentialPOrderProviders_0.getProvider(FePOrderProfileProvider.class);

    FePOrderProfile fePOrderProfile_0 = 
      fePOrderProfileProvider_0.getScalarProfile();

    IntegerValue integerValue_0 = 
      fePOrderProfile_0.getMethod(ConstantIntegerProfileMethod.class).getQuantity();

    integerValue_0.getQuantity().setValue(2.0);
  }
}
电流方向的更改
以下类已从 star.electromagnetism.magneticpotential.fem 移到 star.electromagnetism.common:
  • CurrentDirectionSpecification
  • ElectricCurrentDirectionOption
结果,在宏内更新导入语句如下:
  • 对于 CurrentDirectionSpecification:

    变化

    import star.electromagnetism.magneticpotential.fem.*;

    更改为

    import star.electromagnetism.common.*;
  • 对于 ElectricCurrentDirectionOption:

    变化

    import star.electromagnetism.magneticpotential.fem.*;

    更改为

    import star.electromagnetism.common.*;

电化学

插层颗粒对象的重命名
由于电化学反应的重构,对象
star.electrochemistry.electrochemicalreactions.IntercalationParticleCrackSurfaceAreaDensityProfile
已重命名为
star.electrochemistry.electrochemicalreactions.SubGridParticleCrackSurfaceAreaDensityProfile
如果任何现有宏使用此对象,则搜索以下字符串的实例并更新它们,如下表中所示:
以前版本 当前版本
IntercalationParticleAccumulatedDamage[particle phase]
SubgridParticleAccumulatedDamage[particle phase]
IntercalationParticleSurfaceCrackAreaDensity[particle phase]
SubgridParticleCrackSurfaceAreaDensity[particle phase]
IntercalationParticleFilmResistanceArea[particle phase]
SubgridParticleFilmResistanceArea[particle phase]
IntercalationParticleSurfaceFilmThickness[film phase]
SubgridParticleSurfaceFilmThickness[film phase]
多孔相的更改
多孔相中的固态离子和电动势模型现在使用与多孔相关联的弯曲值,即来自区域的 PhaseConditionsManager 的值。在先前版本中,它们从相关区域的 Physics Values 对象树文件夹中获取其值。
为这两个模型填充 VolumeTortuosityProfile 对象时,必须从相应的 ValueManager 获取配置文件(请参见以下示例)。
如果多个相具有这两个模型其中之一,则需要其中的每个相设置 VolumeTortuosityProfile。
如果其他模型(如组分模型)在多孔区域的流体域内需要弯曲,则需要保留旧代码。新代码为附加的,可用于为流体和固体多孔相设置不同的弯曲值。
以前版本 当前版本
VolumeTortuosityProfile tortuosity = porousRegion1.getValues().get(VolumeTortuosityProfile.class);
VolumeTortuosityProfile tortuosity = porousRegion1.get(PhaseConditionsManager.class).getPhaseConditions("Phase 1").getPhaseValueManager();