在 Simcenter STAR-CCM+ 2022.1 中,已针对多相、DFBI、可视化和更新事件更改了宏 API。
多相
模型删除
两种多相模型(状态的多相方程和欧拉多相混合)已从 Simcenter STAR-CCM+ UI 中删除。这两种模型没有属性,不需要作为用户应了解的信息。
要更新宏代码,可移除使用这些模型的使用实例,如以下示例所示:
import star.common.EulerianMultiphaseMixtureModel;
...
PhysicsContinuum physicsContinuum = ((PhysicsContinuum) simulation.getContinuumManager().getContinuum("Physics 1"));
physicsContinuum.enable(EulerianMultiphaseMixtureModel.class)
混合多相和 VOF 中现提供每个相的总压力和总温
从 Simcenter STAR-CCM+ 2022.1 开始,混合多相和 VOF 模拟已停用每个物理连续体的总压力和总温。现在,每个相都具有这些值。在后处理过程中使用总压力和/或总温的模拟文件需要更新,并且必须更改宏。在以下示例中评估了总压力,并且将在更新后的宏代码中使用名称为 Water
的相:
以前版本 |
Simcenter STAR-CCM+ 2022.1 |
Simulation simulation_0 = getActiveSimulation()
PrimitiveFieldFunction totalPressure = ((PrimitiveFieldFunction) simulation_0.getFieldFunctionManager().getFunction("TotalPressure"));
|
Simulation simulation_0 = getActiveSimulation()
PrimitiveFieldFunction totalPressure = ((PrimitiveFieldFunction) simulation_0.getFieldFunctionManager().getFunction("TotalPressureWater"));
|
对 VOF 波模型属性的更改
VOF 波模型的以下属性现在可以设为参数(标量、场函数或全局参数):
因此,宏代码已更改。为了向后兼容,以前版本中记录的宏在 Simcenter STAR-CCM+ 2022.1 中仍有效。
以前版本 |
Simcenter STAR-CCM+ 2022.1 |
VofWaveModel vofWaveModel_0 = physicsContinuum_0.getModelManager().getModel(VofWaveModel.class);
vofWaveModel_0.setDampingConstantOne(11.0);
vofWaveModel_0.setDampingConstantTwo(12.0);
vofWaveModel_0.setDampingExponent(3.0);
vofWaveModel_0.setForcingConstant(11.0);
|
VofWaveModel vofWaveModel_0 = physicsContinuum_0.getModelManager().getModel(VofWaveModel.class);
Units units_0 = ((Units) simulation_0.getUnitsManager().getObject("/s"));
Units units_1 = ((Units) simulation_0.getUnitsManager().getObject("/m"));
Units units_2 = ((Units) simulation_0.getUnitsManager().getObject(""));
vofWaveModel_0.getDampingConstantOne().setValueAndUnits(11.0, units_0);
vofWaveModel_0.getDampingConstantTwo().setValueAndUnits(12.0, units_1);
vofWaveModel_0.getDampingExponent().setValueAndUnits(3.0, units_2);
vofWaveModel_0.getForcingConstant().setValueAndUnits(11.0, units_0);
|
还可以不使用单位,使设置值更短:
VofWaveModel vofWaveModel_0 = physicsContinuum_0.getModelManager().getModel(VofWaveModel.class);
vofWaveModel_0.getDampingConstantOne().setValue(11.0);
vofWaveModel_0.getDampingConstantTwo().setValue(12.0);
vofWaveModel_0.getDampingExponent().setValue(3.0);
vofWaveModel_0.getForcingConstant().setValue(11.0);
DFBI:特定力与力矩的自动化
为创建和移除以下力与力矩,引入了自动处理:
无法再手动创建或移除这些力与力矩。
在先前版本的 Simcenter STAR-CCM+ 中,流体力与力矩默认与新的连续体一起创建。在 Simcenter STAR-CCM+ 2022.1 中,创建连续体时不会创建流体力与力矩。一旦与受支持的流模型相关的边界添加到体表面定义中,就会自动创建流体力与力矩。
因此,宏代码已更改,以在访问流体力与力矩之前设置体表面和流模型,如以下示例中所示:
以前版本 |
Simcenter STAR-CCM+ 2022.1 |
ContinuumBody continuumBody_0 =
simulation_0.get(star.sixdof.BodyManager.class).createContinuumBody(true);
FluidForceAndMoment fluidForceAndMoment_0 =
((FluidForceAndMoment) continuumBody_0.getExternalForceAndMomentManager().getObject("Fluid Force and Moment"));
fluidForceAndMoment_0.setSmoothingEnabled(true);
continuumBody_0.getBodySurface().setQuery(null);
Region region_0 =
simulation_0.getRegionManager().getRegion("Zone_1");
Boundary boundary_0 =
region_0.getBoundaryManager().getBoundary("hull");
continuumBody_0.getBodySurface().setObjects(boundary_0);
PhysicsContinuum physicsContinuum_0 =
((PhysicsContinuum) simulation_0.getContinuumManager().getContinuum("Physics 1"));
physicsContinuum_0.enable(SegregatedFlowModel.class);
|
continuumBody continuumBody_0 =
simulation_0.get(star.sixdof.BodyManager.class).createContinuumBody(true);
continuumBody_0.getBodySurface().setQuery(null);
Region region_0 =
simulation_0.getRegionManager().getRegion("Zone_1");
Boundary boundary_0 =
region_0.getBoundaryManager().getBoundary("hull");
continuumBody_0.getBodySurface().setObjects(boundary_0);
PhysicsContinuum physicsContinuum_0 =
((PhysicsContinuum) simulation_0.getContinuumManager().getContinuum("Physics 1"));
physicsContinuum_0.enable(SegregatedFlowModel.class);
FluidForceAndMoment fluidForceAndMoment_0 =
((FluidForceAndMoment) continuumBody_0.getExternalForceAndMomentManager().getObject("Fluid Force and Moment"));
fluidForceAndMoment_0.setSmoothingEnabled(true);
|
无法手动移除力与力矩
无法手动移除自动处理的力与力矩。需要将其禁用。出于向后兼容性原因,仍接受用于移除这些力与力矩的旧宏调用,但这些调用会禁用力与力矩,而不是将其移除。
以前版本 |
Simcenter STAR-CCM+ 2022.1 |
ContinuumBody continuumBody_0 =
((ContinuumBody) simulation_0.get(star.sixdof.BodyManager.class).getObject("Body 1"));
FluidForceAndMoment fluidForceAndMoment_0 =
((FluidForceAndMoment) continuumBody_0.getExternalForceAndMomentManager().getObject("Fluid Force and Moment"));
continuumBody_0.getExternalForceAndMomentManager().removeObjects(fluidForceAndMoment_0);
DemForceAndMoment demForceAndMoment_0 =
((DemForceAndMoment) continuumBody_0.getExternalForceAndMomentManager().getObject("DEM Force and Moment"));
continuumBody_0.getExternalForceAndMomentManager().removeObjects(demForceAndMoment_0);
ElectromagneticForceAndMoment electromagneticForceAndMoment_0 =
((ElectromagneticForceAndMoment) continuumBody_0.getExternalForceAndMomentManager().getObject("Electromagnetic Force and Moment"));
continuumBody_0.getExternalForceAndMomentManager().removeObjects(electromagneticForceAndMoment_0);
|
ContinuumBody continuumBody_0 =
((ContinuumBody) simulation_0.get(star.sixdof.BodyManager.class).getObject("Body 1"));
FluidForceAndMoment fluidForceAndMoment_0 =
((FluidForceAndMoment) continuumBody_0.getExternalForceAndMomentManager().getObject("Fluid Force and Moment"));
fluidForceAndMoment_0.setEnabled(false);
DemForceAndMoment demForceAndMoment_0 =
((DemForceAndMoment) continuumBody_0.getExternalForceAndMomentManager().getObject("DEM Force and Moment"));
demForceAndMoment_0.setEnabled(false);
ElectromagneticForceAndMoment electromagneticForceAndMoment_0 =
((ElectromagneticForceAndMoment) continuumBody_0.getExternalForceAndMomentManager().getObject("Electromagnetic Force and Moment"));
electromagneticForceAndMoment_0.setEnabled(false);
|
无法手动创建力与力矩
无法手动创建自动处理的力与力矩。出于向后兼容性原因,通过宏调用创建这些力与力矩的功能仍然可用。在现有宏中创建这些力与力矩应仍有效,并且可以在宏中进一步操控获得的力与力矩对象。但是,新创建的力与力矩在 UI 中不可见,除非自动机制检测到模拟需要这些力与力矩,否则它们将不用于计算。
以前版本 |
Simcenter STAR-CCM+ 2022.1 |
ContinuumBody continuumBody_0 =
((ContinuumBody) simulation_0.get(star.sixdof.BodyManager.class).getObject("Body 1"));
FluidForceAndMoment fluidForceAndMoment_1 =
continuumBody_0.getExternalForceAndMomentManager().createForceAndMoment(FluidForceAndMoment.class);
DemForceAndMoment demForceAndMoment_1 =
continuumBody_0.getExternalForceAndMomentManager().createForceAndMoment(DemForceAndMoment.class);
ElectromagneticForceAndMoment electromagneticForceAndMoment_1 =
continuumBody_0.getExternalForceAndMomentManager().createForceAndMoment(ElectromagneticForceAndMoment.class);
|
--
// Fluid, DEM and EMAG forces and moments should not be created with a macro. However,
// for backward compatibility reasons, existing macro code to create these forces and
// moments should still work
|
可视化:对高级渲染材料的更改
在 Simcenter STAR-CCM+ 2022.1 中,高级渲染材料发生了诸多更改。然而,在涉及渲染材料的宏中,显示器的预设材料和高级渲染材料设置应继续运行,而不会更改。此外,即使节点现在包含材料类型的新子文件夹节点,新渲染材料的创建在宏中也仍有效。
但是,对于引用已重命名或删除默认材料的名称的宏,在应用于 Simcenter STAR-CCM+ 2022.1 中创建的模拟文件时,该宏必须更新。具体而言,唯一受对象更改影响的宏函数是 RayTraceMaterialManager.get/hasObject()
,当在不含旧材料的模拟文件上运行时,必须使用新材料名称调用:
以前版本 |
Simcenter STAR-CCM+ 2022.1 |
RayTraceSimpleMaterial rayTraceSimpleMaterial_0 =
((RayTraceSimpleMaterial) simulation_0.get(RayTraceMaterialManager.class).getObject("Light Gray"));
|
RayTraceSimpleMaterial rayTraceSimpleMaterial_0 =
((RayTraceSimpleMaterial) simulation_0.get(RayTraceMaterialManager.class).getObject("Non-Physical Light Gray"));
|
也可以从早期模拟文件导出旧材料,然后将其导入到新的模拟文件中。
更新事件
对内部采样控制的更改
对于监视器渐近线更新事件,已更改宏代码以激活和停用内部采样复选框属性:
getOnlyInnerSamples
已替换为 getInnerSamples
。
setOnlyInnerSamples
已替换为 setInnerSamples
。
现有宏将继续按预期正常工作,但为获得最大可靠性,建议更新宏代码。
对评估的状态信息的更改
在更新事件节点下的更新事件对象中,已满足复选框属性已替换为新的评估的状态属性。已满足、未满足和未评估只读状态可阐明更新事件的评估状态。
返回布尔值 updateEvent.getEvaluatedState()
的旧宏调用保持不变,但返回值对应于当前迭代的状态,而不是上次评估更新事件时的状态(与以前版本一样)。
已添加另一个 API updateEvent.getEvaluatedStatus()
,用于返回当前迭代的更新事件的状态(返回的状态为以下项之一:‘未满足’— 0、‘已满足’— 1、‘未评估’— 2)。