宏 API 更改 3.04
在 Simcenter STAR-CCM+ 3.04 中,针对反射率、体形状和网格化进行了宏 API 的更改。
- 指定的反射率现在已自动计算为默认值
指定的反射率已针对宏进行了更改。 显式设置反射率的旧宏需要进行修改。 在使用自动计算方法作为默认方法的情况下,不能在宏中设置恒定反射率,除非首先将方法类型更改为常数。 最简单的做法是从任何宏中移除反射率设置,然后自动计算反射率。
- 体形状现在可识别局部坐标系
体形状已得到增强,允许使用局部坐标系和用户指定的单位。
为了适应这些更改,已设计新的坐标类,该类具有局部坐标系参考,并且知道其分量的单位。 此类替换预先存在的 VectorPhysicalQuantity 类。 此更改会影响每个体形状的以下数据:
- BrickVolumeShape - Corner1 和 Corner2
- CylinderConeVolumeShape - 开始坐标和结束坐标
- SphereVolumeShape - 原点
因此,当在宏中访问体形状的这些数据元素时,可能需要根据访问数据的方式在宏中进行更改:
如果宏按如下所示访问数据,则不需要更改宏:brickVolumeShape_0.getCorner1().setVector(new DoubleVector(new double[] {0.1, 0.0108, 0.0}));
如果宏访问数据,类型将它转换为 VectorPhysicalQuantity,并调用其方法 setVector 或 getVector,则需要将 VectorPhysicalQuantity 的类型转换更换为 Coordinate 类:
// old - ((VectorPhysicalQuantity) brickVolumeShape_0.getCorner2()).setVector(new DoubleVector(new double[] {0.2, 0.0, 0.0}));
// new - ((Coordinate) brickVolumeShape_0.getCorner2()).setVector(new DoubleVector(new double[] {0.2, 0.0, 0.0}));
- 可以为每个网格化模型启用体积控制
体积控制(以前称为体积源)具有一个指定控制应用于的网格化模型的额外步骤,尺寸是控制的通用属性。
3.02 宏类似如下:
// create VolumeSource VolumeSource volumeSource_0 = meshContinuum_0.getVolumeSources().createVolumeSource(); // stick shape in the source SphereVolumeShape sphereVolumeShape_0 = ((SphereVolumeShape) simulation_0.get(VolumeShapeManager.class).getObject("Sphere 1")); volumeSource_0.getVolumeShapeGroup().setObjects(sphereVolumeShape_0); // set the size of the volume source (applies to all meshers) VolumeSourceSize volumeSourceSize_0 = volumeSource_0.getSize(); GenericRelativeSize genericRelativeSize_0 = ((GenericRelativeSize) volumeSourceSize_0.getRelativeSize()); genericRelativeSize_0.setPercentage(20.0);
另一方面,3.04 中完全相同的宏需要:
// create volume source VolumeSource volumeSource_1 = meshContinuum_0.getVolumeSources().createVolumeSource(); // enable volume source for poly mesher (new step) VolumeSourceDualMesherSizeOption volumeSourceDualMesherSizeOption_0 = volumeSource_1.get(MeshConditionManager.class).get(VolumeSourceDualMesherSizeOption.class); volumeSourceDualMesherSizeOption_0.setVolumeSourceDualMesherSizeOption(true); // enable volume source for surface remesher (new step) VolumeSourceResurfacerSizeOption volumeSourceResurfacerSizeOption_0 = volumeSource_1.get(MeshConditionManager.class).get(VolumeSourceResurfacerSizeOption.class); volumeSourceResurfacerSizeOption_0.setVolumeSourceResurfacerSizeOption(true); // enable volume source for wrapper (new step) VolumeSourceSurfaceWrapperSizeOption volumeSourceSurfaceWrapperSizeOption_0 = volumeSource_1.get(MeshConditionManager.class).get(VolumeSourceSurfaceWrapperSizeOption.class); volumeSourceSurfaceWrapperSizeOption_0.setVolumeSourceSurfaceWrapperSizeOption(true); // set the size for the source (now done through // MeshValueManager not directly from the source) VolumeSourceSize volumeSourceSize_0 = volumeSource_1.get(MeshValueManager.class).get(VolumeSourceSize.class); GenericRelativeSize genericRelativeSize_0 = ((GenericRelativeSize) volumeSourceSize_0.getRelativeSize()); genericRelativeSize_0.setPercentage(20.0);
如果用户尝试通过 3.04 运行 3.02 宏,它将有效,但不是用户所期望的结果 — 将创建源且源与球体形状关联,但不会为任何网格模型激活源。 3.02 宏将在 3.04 中有效是因为保留了方法 VolumeSource::getSize() 以实现向后兼容性。