Macro API Changes 7.04

In Simcenter STAR-CCM+ 7.04, the macro API changed for the Melting-Solidification model, cavitation, DFBI, and Eulerian Multiphase modeling.

Melting-Solidification: Solidification Path

The solidification path required by the Melting-Solidification model no longer belongs to the model node itself. Instead, you set the path using the Fraction Solid Curve material property node.

Previous Release Simcenter STAR-CCM+ 7.04.006

VofEnthalpyMeltingModel

vofEnthalpyMeltingModel_0 = eulerianPhase_0

.getModelManager() .getModel( VofEnthalpyMeltingModel.class); vofEnthalpyMeltingModel_0 .getSolidificationPathOption()

.setSelected( SolidificationPathOption.TABULAR);

SinglePhaseLiquidModel singlePhaseLiquidModel_0 =

eulerianPhase_0 .getModelManager() .getModel(

SinglePhaseLiquidModel.class);

SinglePhaseLiquid singlePhaseLiquid_0 =

((SinglePhaseLiquid) singlePhaseLiquidModel_0 .getMaterial()); singlePhaseLiquid_0 .getMaterialProperties() .getMaterialProperty(FractionSolidCurveProperty.class)

.setMethod(FractionSolidCurveTemperatureTableMethod.class); singlePhaseLiquid_0 .getMaterialProperties() .getMaterialProperty(FractionSolidCurveProperty.class)

.setMethod(FractionSolidCurveLinearMethod.class);

Cavitation: Seed Density and Seed Diameter

The Cavitation phase interaction model now allows you to define the Seed Density and Seed Diameter properties with a field function or constant profile. Therefore, definition of a constant seed density or seed diameter has changed to include both options.

Previous Release Simcenter STAR-CCM+ 7.04.006

cavitationModel_0

.getSeedDensity()

.setValue(1.0E12);

cavitationModel_0

.getCavitationSeedDensity()

.setMethod(ConstantInteractionCoefficientMethod.class);

ConstantInteractionCoefficientMethod constantInteractionCoefficientMethod_0 =

cavitationModel_

.getCavitationSeedDensity()

.getMethod(ConstantInteractionCoefficientMethod.class);

constantInteractionCoefficientMethod_0

.getQuantity()

.setValue(1.0E12);

cavitationModel_0

.getSeedDiameter()

.setValue(1.0E-6);

cavitationModel_0

.getCavitationSeedDiameter()

.setMethod(ConstantInteractionCoefficientMethod.class);

ConstantInteractionCoefficientMethod constantInteractionCoefficientMethod_1 =

cavitationModel_0

.getCavitationSeedDiameter()

.getMethod(ConstantInteractionCoefficientMethod.class);

constantInteractionCoefficientMethod_1

.getQuantity()

.setValue(1.0E-6);

Dynamic Fluid-Body Interaction: External Moment

For the Dynamic Fluid-Body Interaction physics model, the External Moment has been extended so that it is relative to the body position, as opposed to the Center of Mass. Depending on the selected body motion type, the body position can be different from the Center of Mass. Therefore, External Moment has been renamed.

Previous Release Simcenter STAR-CCM+ 7.04.006

ExternalMomentCM

externalMomentCM_0 = body_0

.getExternalForceAndMomentManager()

.createExternalForceAndMoment(ExternalMomentCM.class);

ExternalMoment

externalMoment_0 = body_0

.getExternalForceAndMomentManager()

.createExternalForceAndMoment(ExternalMoment.class);

Eulerian Multiphase: Phase Turbulence Models

The Eulerian Multiphase model now uses an individual k-epsilon turbulence model for each Eulerian phase. This change affects the following:

  • Initial and boundary conditions properties for Eulerian phases
    • Turbulence Intensity
    • Turbulent Viscosity Ratio
    • Turbulent Dissipation Rate
    • Turbulent Kinetic Energy
  • k-epsilon turbulence solver
    • Renamed classes
    • Include the AMG Linear Solver with the V-Cycle option
  • Enabling k-epsilon turbulence models
    • Remove the redundant turbulence models from the physics continuum
    • Add the new turbulence models to each Eulerian phase
    • Setting model options
Previous Release Simcenter STAR-CCM+ 7.04.006

Initial Conditions

MultiPhaseTurbulenceIntensityProfile multiPhaseTurbulenceIntensityProfile_0 =

physicsContinuum_0

.getInitialConditions()

.get(MultiPhaseTurbulenceIntensityProfile.class);

multiPhaseTurbulenceIntensityProfile_0

.getMethod(ConstantArrayProfileMethod.class)

.getQuantity().setArray(new DoubleVector(new double[] {0.06}));

MultiPhaseTurbulentViscosityRatioProfile multiPhaseTurbulentViscosityRatioProfile_0 =

physicsContinuum_0

.getInitialConditions(

.get(MultiPhaseTurbulentViscosityRatioProfile.class);

multiPhaseTurbulentViscosityRatioProfile_0

.getMethod(ConstantArrayProfileMethod.class)

.getQuantity()

.setArray(

new DoubleVector(

new double[] {255.0}));

EulerianMultiPhaseModel eulerianMultiPhaseModel_0 =

physicsContinuum_0

.getModelManager()

.getModel(EulerianMultiPhaseModel.class);

EulerianPhase eulerianPhase_0 =

((EulerianPhase)

eulerianMultiPhaseModel_0

.getPhaseManager()

.getPhase("Water"));

TurbulenceIntensityProfile turbulenceIntensityProfile_0 =

eulerianPhase_0

.get(ContinuumInitialConditionManager.class)

.get(TurbulenceIntensityProfile.class);

turbulenceIntensityProfile_0

.getMethod(ConstantScalarProfileMethod.class)

.getQuantity()

.setValue(0.06);

TurbulentViscosityRatioProfile turbulentViscosityRatioProfile_0 =

eulerianPhase_0

.get(ContinuumInitialConditionManager.class)

.get(TurbulentViscosityRatioProfile.class);

turbulentViscosityRatioProfile_0

.getMethod(ConstantScalarProfileMethod.class)

.getQuantity()

.setValue(255.0);

Boundary Conditions

MultiPhaseTurbulenceIntensityProfile

multiPhaseTurbulenceIntensityProfile_0 =

boundary_0

.getValues()

.get(

MultiPhaseTurbulenceIntensityProfile.class);

multiPhaseTurbulenceIntensityProfile_0

.getMethod(ConstantArrayProfileMethod.class)

.setArray(

new DoubleVector(

new double[] {0.05}));

Boundary boundary_0 =

region_0

.getBoundaryManager()

.getBoundary("Inlet");

PhaseConditions phaseConditions_0 =

((PhaseConditions) boundary_0

.get(PhaseConditionsManager.class) .getPhaseConditions("Water"));

TurbulenceIntensityProfile turbulenceIntensityProfile_0 =

phaseConditions_0

.getPhaseValueManager()

.get(

TurbulenceIntensityProfile

.class);

turbulenceIntensityProfile_0

.getMethod(

ConstantScalarProfileMethod.class)

.getQuantity()

.setValue(0.05);

k-epsilon Turbulence Solver

MultiPhaseKeTurbSolver multiPhaseKeTurbSolver_0 =

((MultiPhaseKeTurbSolver) simulation_0

.getSolverManager()

.getSolver(

MultiPhaseKeTurbSolver.class));

multiPhaseKeTurbSolver_0

.setUrf(0.5);

KeTurbSolver

keTurbSolver_0 =

((KeTurbSolver) simulation_0

.getSolverManager()

.getSolver(

KeTurbSolver.class));

keTurbSolver_0

.setUrf(0.5);

AMGLinearSolver aMGLinearSolver_0 =

keTurbSolver_0

.getAMGLinearSolver();

aMGLinearSolver_0

.getCycleOption()

.setSelected(

AMGCycleOption.V_CYCLE);

Enabling k-epsilon Turbulence Models

PhysicsContinuum

physicsContinuum_0 =

simulation_0

.getContinuumManager()

.createContinuum(

PhysicsContinuum.class);

physicsContinuum_0

.enable(

RansTurbulenceModel.class);

physicsContinuum_0

.enable(

KEpsilonTurbulence.class);

physicsContinuum_0

.enable(

MultiPhaseSkeTurbModel.class);

physicsContinuum_0

.enable(

MultiPhaseKeHighYplusWallTreatment

.class);

EulerianMultiPhaseModel eulerianMultiPhaseModel_0 =

physicsContinuum_0

.getModuleManager()

.getModel(

EulerianMultiPhaseModel.class);

EulerianPhase eulerianPhase_0 =

eulerianMultiPhaseModel_0

.createPhase();

eulerianPhase_0

.enable(

RansTurbulenceModel.class);

eulerianPhase_0

.enable(

KEpsilonTurbulence.class);

eulerianPhase_0

.enable(

SkeTurbModel.class);

eulerianPhase_0

.enable(

KeHighYplusWallTreatment.class)

Setting k-epsilon Turbulence Model Options

MultiPhaseSkeTurbModel multiPhaseSkeTurbModel_0 =

physicsContinuum_0

.getModelManager()

.getModel(

MultiPhaseSkeTurbModel.class);

multiPhaseSkeTurbModel_0

.getSecondaryGradientOption()

.setSelected(

SecondaryGradientOption.OFF);

EulerianMultiPhaseModel eulerianMultiPhaseModel_0 =

physicsContinuum_0

.getModelManager()

.getModel(

EulerianMultiPhaseModel.class);

EulerianPhase eulerianPhase_0 =

((EulerianPhase) eulerianMultiPhaseModel_0

.getPhaseManager()

.getPhase("Water"));

SkeTurbModel SkeTurbModel_0 =

eulerianPhase_0

.getModelManager()

.getModel(SkeTurbModel.class);

SkeTurbModel_0

.getSecondaryGradientOption()

.setSelected(

SecondaryGradientOption.OFF);