PIbd-42_SSPR/macros_generator.py

1340 lines
50 KiB
Python

def recycling_calculation(alpha: float, gas_consumption: float, air_consumption: float, recycling: float) -> dict:
recycling_percent = recycling / 100
init_concentrations = {'CO2': 1.03, 'N2': 7.67, 'H2O': 2.17, 'O2': 9.69 * (alpha - 1)}
# init_concentrations_N = 73.5
init_concentrations_O2 = 23.15
amount_flue_gases = 0
for v in init_concentrations.values():
amount_flue_gases = amount_flue_gases + v
amount_flue_gases = amount_flue_gases * gas_consumption
return_recirculation = amount_flue_gases * recycling_percent
init_data_of_gases = dict()
for k, v in init_concentrations.items():
init_data_of_gases[k] = v * gas_consumption
gas_volume = dict()
for k, v in init_data_of_gases.items():
gas_volume[k] = v * recycling_percent
recycling_composition = {'CO2': gas_volume['CO2'] / air_consumption, 'H2O': gas_volume['H2O'] / air_consumption}
recycling_composition['O2'] = ((air_consumption - return_recirculation) * init_concentrations_O2 / 100 + gas_volume[
'O2']) / air_consumption
amount_percent_gases = 1
for v in recycling_composition.values():
amount_percent_gases = amount_percent_gases - v
recycling_composition['N2'] = amount_percent_gases
return recycling_composition
def load_calculation(steam_consumption: float, diameters: dict, alpha=None) -> dict:
# перевод из миллиметров в метры
for key, value in diameters.items():
diameters[key] = value / 1000
gas_density = 0.670723907
if alpha is None:
alpha = (-0.0000000496 * steam_consumption ** 3 + 0.0000597347 * steam_consumption ** 2 - 0.0237830036 *
steam_consumption + 4.1600366991)
total_gas_consumption = (-0.0004574291 * steam_consumption ** 3 + 0.4767036785 * steam_consumption ** 2 -
77.847437247 * steam_consumption + 15542.3008630679)
gas_consumption = total_gas_consumption / 8
air_consumption = 9.69 * alpha * gas_consumption
hydraulic_diameter_pa = diameters['d3'] - diameters['d4']
hydraulic_diameter_sa = diameters['d1'] - diameters['d2']
# hydraulic_diameter_g = diametrs['d5'] - diametrs['d6']
air_inlet_ratio_pa = hydraulic_diameter_pa / (hydraulic_diameter_pa + hydraulic_diameter_sa)
air_inlet_ratio_sa = 1 - air_inlet_ratio_pa
# print(air_inlet_ratio_pa, air_inlet_ratio_sa)
primary_air_consumption = 4 * (air_consumption / 3600 * air_inlet_ratio_sa) / (
3.14 * (diameters['d1'] / 2) ** 2 - 3.14 * (diameters['d2'] / 2) ** 2)
secondary_air_consumption = 4 * (air_consumption / 3600 * air_inlet_ratio_pa) / (
3.14 * (diameters['d3'] / 2) ** 2 - 3.14 * (diameters['d4'] / 2) ** 2)
gas_inlet_rate = gas_consumption / 3600 / (3.14 * (diameters['d5'] / 2) ** 2 - 3.14 * (diameters['d6'] / 2) ** 2)
gas_inlet_consumption = gas_consumption * gas_density / 3600
# print(alpha, total_gas_consumption, gas_consumption, air_consumption, primary_air_consumption, secondary_air_consumption, gas_inlet_rate, gas_inlet_consumption)
outlet_data = {'alpha': alpha, 'gas_consumption': gas_consumption, 'air_consumption': air_consumption,
'primary_air_consumption': primary_air_consumption,
'secondary_air_consumption': secondary_air_consumption, 'gas_inlet_rate': gas_inlet_rate,
'gas_inlet_consumption': gas_inlet_consumption}
return outlet_data
def preprocessor_settings(path, model_parameters, model_path):
macros_file = open(path, 'w')
macros_file.write("""
import java.util.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import star.combustion.*;
import star.combustion.fgm.*;
import star.combustion.tablegenerators.*;
import star.common.*;
import star.mapping.*;
import star.base.neo.*;
import star.cadmodeler.*;
import star.dualmesher.VolumeControlDualMesherSizeOption;
import star.emissions.NoxModel;
import star.emissions.NoxSolver;
import star.emissions.NoxThreeEquationZeldovichModel;
import star.energy.StaticTemperatureProfile;
import star.flow.MassFlowRateProfile;
import star.flow.VelocityMagnitudeProfile;
import star.keturb.KEpsilonTurbulence;
import star.keturb.KeTwoLayerAllYplusWallTreatment;
import star.keturb.RkeTwoLayerTurbModel;
import star.material.MaterialDataBaseManager;
import star.material.MultiComponentGasModel;
import star.meshing.*;
import star.reactions.ReactingModel;
import star.resurfacer.VolumeControlResurfacerSizeOption;
import star.segregatedenergy.SegregatedFluidEnthalpyModel;
import star.segregatedflow.SegregatedFlowModel;
import star.turbulence.RansTurbulenceModel;
import star.turbulence.TurbulentModel;
import star.vis.*;
public class preprocess_macro extends StarMacro {
String geometry_path = resolvePath("%s");
String chemkin_path = resolvePath("%s");
String grimech30_path = chemkin_path + "/grimech30.dat";
String thermo30_path = chemkin_path + "/thermo30.dat";
String transport_path = chemkin_path + "/transport.dat";
String init_model_folder = resolvePath("%s");
public void execute() {
/*Simulation sim =
getActiveSimulation();*/
long startTime = System.currentTimeMillis();
importGeometry();
createCylinderParts();
createVolumeMeshControl();
createBoundaries();
generateVolumeMesh();
settingPhysicsContinuum();
createFgmTable();
setInitialConditions();
createLineSection();
createPlaneSection();
createScene();
createPlot();
createXYZTable();
//initializeSolution();
saveState();
long endTime = System.currentTimeMillis();
long durationInMilliseconds = endTime - startTime;
double durationInSeconds = durationInMilliseconds / 1000.0;
String filename = init_model_folder + "/exec_time.txt";
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) {
writer.write("Время создания модели: " + durationInSeconds + "\\n");
} catch (IOException e) {
//sim.println("Ошибка при записи в файл: " + e.getMessage());
}
}
private void importGeometry() {
Simulation simulation =
getActiveSimulation();
CadModel cadModel =
simulation.get(SolidModelManager.class).createSolidModel();
cadModel.resetSystemOptions();
ImportCadFileFeature importCadFileFeature =
cadModel.importCadFile(resolvePath(geometry_path), true, false, false, false, false, false, false, true, false, true, NeoProperty.fromString("{\'NX\': 1, \'STEP\': 1, \'SE\': 1, \'CGR\': 1, \'SW\': 1, \'IFC\': 1, \'ACIS\': 1, \'JT\': 1, \'IGES\': 1, \'CATIAV5\': 1, \'CATIAV4\': 1, \'3DXML\': 1, \'CREO\': 1, \'INV\': 1}"), false, true);
star.cadmodeler.Body cadmodelerBody =
((star.cadmodeler.Body) importCadFileFeature.getBodyByIndex(1));
Face face_0 =
((Face) importCadFileFeature.getFaceByLocation(cadmodelerBody,new DoubleVector(new double[] {0.01, 0.72, 0})));
cadModel.setFaceNameAttributes(new NeoObjectVector(new Object[] {face_0}), "Air inlet", false);
ArrayList<double[]> coordinates = calculateCoordinatesClockwise(0.314, (int) %s);
ArrayList<Face> faces = new ArrayList<>();
for (double[] coordinate : coordinates) {
faces.add((Face) importCadFileFeature.getFaceByLocation(cadmodelerBody,new DoubleVector(coordinate)));
}
cadModel.setFaceNameAttributes(faces, "Air blades", false);
Face face_2 =
((Face) importCadFileFeature.getFaceByLocation(cadmodelerBody,new DoubleVector(new double[] {0.01, 0.153, 0})));
cadModel.setFaceNameAttributes(new NeoObjectVector(new Object[] {face_2}), "CH4", false);
Face face_3 =
((Face) importCadFileFeature.getFaceByLocation(cadmodelerBody,new DoubleVector(new double[] {0.01, 0.114, 0})));
cadModel.setFaceNameAttributes(new NeoObjectVector(new Object[] {face_3}), "No Gas 1", false);
Face face_4 =
((Face) importCadFileFeature.getFaceByLocation(cadmodelerBody,new DoubleVector(new double[] {0.01, 0.07, 0})));
cadModel.setFaceNameAttributes(new NeoObjectVector(new Object[] {face_4}), "No Gas 2", false);
Face face_5 =
((Face) importCadFileFeature.getFaceByLocation(cadmodelerBody,new DoubleVector(new double[] {-10.667, 0.6180132, -0.6180132})));
cadModel.setFaceNameAttributes(new NeoObjectVector(new Object[] {face_5}), "Outlet", false);
cadModel.update();
simulation.get(SolidModelManager.class).endEditCadModel(cadModel);
cadModel.createParts(new NeoObjectVector(new Object[] {cadmodelerBody}), new NeoObjectVector(new Object[] {}), true, false, 1, false, false, 3, "SharpEdges", 30.0, 2, true, 1.0E-5, false);
}
private void createCylinderParts() {
Simulation simulation =
getActiveSimulation();
Units units_0 =
simulation.getUnitsManager().getPreferredUnits(Dimensions.Builder().length(1).build());
MeshPartFactory meshPartFactory =
simulation.get(MeshPartFactory.class);
SimpleCylinderPart simpleCylinderPart_0 =
meshPartFactory.createNewCylinderPart(simulation.get(SimulationPartManager.class));
simpleCylinderPart_0.setDoNotRetessellate(true);
LabCoordinateSystem labCoordinateSystem_0 =
simulation.getCoordinateSystemManager().getLabCoordinateSystem();
simpleCylinderPart_0.setCoordinateSystem(labCoordinateSystem_0);
simpleCylinderPart_0.getStartCoordinate().setCoordinateSystem(labCoordinateSystem_0);
simpleCylinderPart_0.getStartCoordinate().setCoordinate(units_0, units_0, units_0, new DoubleVector(new double[] {0.01, 0.0, 0.0}));
simpleCylinderPart_0.getEndCoordinate().setCoordinateSystem(labCoordinateSystem_0);
simpleCylinderPart_0.getEndCoordinate().setCoordinate(units_0, units_0, units_0, new DoubleVector(new double[] {-0.667, 0.0, 0.0}));
simpleCylinderPart_0.getRadius().setUnits(units_0);
simpleCylinderPart_0.getRadius().setValue(0.721);
simpleCylinderPart_0.getTessellationDensityOption().setSelected(TessellationDensityOption.Type.MEDIUM);
simpleCylinderPart_0.rebuildSimpleShapePart();
simpleCylinderPart_0.setDoNotRetessellate(false);
SimpleCylinderPart simpleCylinderPart_1 =
meshPartFactory.createNewCylinderPart(simulation.get(SimulationPartManager.class));
simpleCylinderPart_1.setDoNotRetessellate(true);
simpleCylinderPart_1.setCoordinateSystem(labCoordinateSystem_0);
simpleCylinderPart_1.getStartCoordinate().setCoordinateSystem(labCoordinateSystem_0);
simpleCylinderPart_1.getStartCoordinate().setCoordinate(units_0, units_0, units_0, new DoubleVector(new double[] {-0.667, 0.0, 0.0}));
simpleCylinderPart_1.getEndCoordinate().setCoordinateSystem(labCoordinateSystem_0);
simpleCylinderPart_1.getEndCoordinate().setCoordinate(units_0, units_0, units_0, new DoubleVector(new double[] {-1.111, 0.0, 0.0}));
simpleCylinderPart_1.getRadius().setUnits(units_0);
simpleCylinderPart_1.getRadius().setValue(0.535);
simpleCylinderPart_1.getTessellationDensityOption().setSelected(TessellationDensityOption.Type.MEDIUM);
simpleCylinderPart_1.rebuildSimpleShapePart();
simpleCylinderPart_1.setDoNotRetessellate(false);
SimpleCylinderPart simpleCylinderPart_2 =
meshPartFactory.createNewCylinderPart(simulation.get(SimulationPartManager.class));
simpleCylinderPart_2.setDoNotRetessellate(true);
simpleCylinderPart_2.setCoordinateSystem(labCoordinateSystem_0);
simpleCylinderPart_2.getStartCoordinate().setCoordinateSystem(labCoordinateSystem_0);
simpleCylinderPart_2.getStartCoordinate().setCoordinate(units_0, units_0, units_0, new DoubleVector(new double[] {-1.111, 0.0, 0.0}));
simpleCylinderPart_2.getEndCoordinate().setCoordinateSystem(labCoordinateSystem_0);
simpleCylinderPart_2.getEndCoordinate().setCoordinate(units_0, units_0, units_0, new DoubleVector(new double[] {-10.667, 0.0, 0.0}));
simpleCylinderPart_2.getRadius().setUnits(units_0);
simpleCylinderPart_2.getRadius().setValue(1.5);
simpleCylinderPart_2.getTessellationDensityOption().setSelected(TessellationDensityOption.Type.MEDIUM);
simpleCylinderPart_2.rebuildSimpleShapePart();
simpleCylinderPart_2.setDoNotRetessellate(false);
}
private void createVolumeMeshControl(){
Simulation simulation =
getActiveSimulation();
Units units_0 =
((Units) simulation.getUnitsManager().getObject("m"));
SimpleCylinderPart simpleCylinderPart_0 =
((SimpleCylinderPart) simulation.get(SimulationPartManager.class).getPart("Cylinder"));
SimpleCylinderPart simpleCylinderPart_1 =
((SimpleCylinderPart) simulation.get(SimulationPartManager.class).getPart("Cylinder 2"));
SimpleCylinderPart simpleCylinderPart_2 =
((SimpleCylinderPart) simulation.get(SimulationPartManager.class).getPart("Cylinder 3"));
SolidModelPart solidModelPart_0 =
((SolidModelPart) simulation.get(SimulationPartManager.class).getPart("Body 1"));
AutoMeshOperation autoMeshOperation =
simulation.get(MeshOperationManager.class).createAutoMeshOperation(new StringVector(new String[] {}), new NeoObjectVector(new Object[] {solidModelPart_0}));
autoMeshOperation.getMeshers().setMeshersByNames(new StringVector(new String[] {"star.resurfacer.ResurfacerAutoMesher", "star.dualmesher.DualAutoMesher"}));
VolumeCustomMeshControl volumeCustomMeshControl_0 =
autoMeshOperation.getCustomMeshControls().createVolumeControl();
VolumeCustomMeshControl volumeCustomMeshControl_1 =
autoMeshOperation.getCustomMeshControls().createVolumeControl();
VolumeCustomMeshControl volumeCustomMeshControl_2 =
autoMeshOperation.getCustomMeshControls().createVolumeControl();
SurfaceCustomMeshControl surfaceCustomMeshControl_0 =
autoMeshOperation.getCustomMeshControls().createSurfaceControl();
volumeCustomMeshControl_0.getGeometryObjects().setQuery(null);
volumeCustomMeshControl_0.getGeometryObjects().setObjects(simpleCylinderPart_0);
volumeCustomMeshControl_1.getGeometryObjects().setQuery(null);
volumeCustomMeshControl_1.getGeometryObjects().setObjects(simpleCylinderPart_1);
volumeCustomMeshControl_2.getGeometryObjects().setQuery(null);
volumeCustomMeshControl_2.getGeometryObjects().setObjects(simpleCylinderPart_2);
surfaceCustomMeshControl_0.getGeometryObjects().setQuery(null);
PartSurface partSurface_0 =
((PartSurface) solidModelPart_0.getPartSurfaceManager().getPartSurface("Default"));
PartSurface partSurface_1 =
((PartSurface) solidModelPart_0.getPartSurfaceManager().getPartSurface("Outlet"));
surfaceCustomMeshControl_0.getGeometryObjects().setObjects(partSurface_0, partSurface_1);
surfaceCustomMeshControl_0.getCustomConditions().get(PartsTargetSurfaceSizeOption.class).setSelected(PartsTargetSurfaceSizeOption.Type.CUSTOM);
PartsTargetSurfaceSize partsTargetSurfaceSize_0 =
surfaceCustomMeshControl_0.getCustomValues().get(PartsTargetSurfaceSize.class);
Units units_1 =
((Units) simulation.getUnitsManager().getObject(""));
partsTargetSurfaceSize_0.getRelativeSizeScalar().setValueAndUnits(20.0, units_1);
VolumeControlResurfacerSizeOption volumeControlResurfacerSizeOption_0 =
volumeCustomMeshControl_0.getCustomConditions().get(VolumeControlResurfacerSizeOption.class);
volumeControlResurfacerSizeOption_0.setVolumeControlBaseSizeOption(true);
VolumeControlDualMesherSizeOption volumeControlDualMesherSizeOption_0 =
volumeCustomMeshControl_0.getCustomConditions().get(VolumeControlDualMesherSizeOption.class);
volumeControlDualMesherSizeOption_0.setVolumeControlBaseSizeOption(true);
VolumeControlSize volumeControlSize_0 =
volumeCustomMeshControl_0.getCustomValues().get(VolumeControlSize.class);
volumeControlSize_0.getRelativeSizeScalar().setValueAndUnits(2.0, units_1);
VolumeControlResurfacerSizeOption volumeControlResurfacerSizeOption_1 =
volumeCustomMeshControl_1.getCustomConditions().get(VolumeControlResurfacerSizeOption.class);
volumeControlResurfacerSizeOption_1.setVolumeControlBaseSizeOption(true);
VolumeControlDualMesherSizeOption volumeControlDualMesherSizeOption_1 =
volumeCustomMeshControl_1.getCustomConditions().get(VolumeControlDualMesherSizeOption.class);
volumeControlDualMesherSizeOption_1.setVolumeControlBaseSizeOption(true);
VolumeControlSize volumeControlSize_1 =
volumeCustomMeshControl_1.getCustomValues().get(VolumeControlSize.class);
volumeControlSize_1.getRelativeSizeScalar().setValueAndUnits(2.0, units_1);
VolumeControlResurfacerSizeOption volumeControlResurfacerSizeOption_2 =
volumeCustomMeshControl_2.getCustomConditions().get(VolumeControlResurfacerSizeOption.class);
volumeControlResurfacerSizeOption_2.setVolumeControlBaseSizeOption(true);
VolumeControlDualMesherSizeOption volumeControlDualMesherSizeOption_2 =
volumeCustomMeshControl_2.getCustomConditions().get(VolumeControlDualMesherSizeOption.class);
volumeControlDualMesherSizeOption_2.setVolumeControlBaseSizeOption(true);
VolumeControlSize volumeControlSize_2 =
volumeCustomMeshControl_2.getCustomValues().get(VolumeControlSize.class);
volumeControlSize_2.getRelativeSizeScalar().setValueAndUnits(5.0, units_1);
autoMeshOperation.getDefaultValues().get(BaseSize.class).setValueAndUnits(%s, units_0);
autoMeshOperation.getMesherParallelModeOption().setSelected(MesherParallelModeOption.Type.PARALLEL);
}
private void createBoundaries() {
Simulation simulation =
getActiveSimulation();
Region region =
simulation.getRegionManager().createEmptyRegion(null);
region.setPresentationName("Body 1");
SolidModelPart solidModelPart_0 =
((SolidModelPart) simulation.get(SimulationPartManager.class).getPart("Body 1"));
region.getPartGroup().addObjects(solidModelPart_0);
Boundary boundary_0 =
region.getBoundaryManager().createEmptyBoundary("", null);
boundary_0.setPresentationName("Air blades");
InletBoundary inletBoundary =
((InletBoundary) simulation.get(ConditionTypeManager.class).get(InletBoundary.class));
boundary_0.setBoundaryType(inletBoundary);
boundary_0.getGeometryPartEntityGroup().setQuery(null);
PartSurface partSurface_2 =
((PartSurface) solidModelPart_0.getPartSurfaceManager().getPartSurface("Air blades"));
boundary_0.getGeometryPartEntityGroup().setObjects(partSurface_2);
Boundary boundary_1 =
region.getBoundaryManager().createEmptyBoundary("", null);
boundary_1.setPresentationName("Air inlet");
boundary_1.getGeometryPartEntityGroup().setQuery(null);
PartSurface partSurface_3 =
((PartSurface) solidModelPart_0.getPartSurfaceManager().getPartSurface("Air inlet"));
boundary_1.getGeometryPartEntityGroup().setObjects(partSurface_3);
boundary_1.setBoundaryType(inletBoundary);
Boundary boundary_2 =
region.getBoundaryManager().createEmptyBoundary("", null);
boundary_2.setPresentationName("CH4");
boundary_2.getGeometryPartEntityGroup().setQuery(null);
PartSurface partSurface_4 =
((PartSurface) solidModelPart_0.getPartSurfaceManager().getPartSurface("CH4"));
boundary_2.getGeometryPartEntityGroup().setObjects(partSurface_4);
MassFlowBoundary massFlowBoundary =
((MassFlowBoundary) simulation.get(ConditionTypeManager.class).get(MassFlowBoundary.class));
boundary_2.setBoundaryType(massFlowBoundary);
Boundary boundary_3 =
region.getBoundaryManager().createEmptyBoundary("", null);
boundary_3.setPresentationName("No Gas 1");
boundary_3.getGeometryPartEntityGroup().setQuery(null);
PartSurface partSurface_5 =
((PartSurface) solidModelPart_0.getPartSurfaceManager().getPartSurface("No Gas 1"));
boundary_3.getGeometryPartEntityGroup().setObjects(partSurface_5);
Boundary boundary_4 =
region.getBoundaryManager().createEmptyBoundary("", null);
boundary_4.setPresentationName("No Gas 2");
boundary_4.getGeometryPartEntityGroup().setQuery(null);
PartSurface partSurface_6 =
((PartSurface) solidModelPart_0.getPartSurfaceManager().getPartSurface("No Gas 2"));
boundary_4.getGeometryPartEntityGroup().setObjects(partSurface_6);
Boundary boundary_5 =
region.getBoundaryManager().createEmptyBoundary("", null);
boundary_5.setPresentationName("Outlet");
boundary_5.getGeometryPartEntityGroup().setQuery(null);
PartSurface partSurface_1 =
((PartSurface) solidModelPart_0.getPartSurfaceManager().getPartSurface("Outlet"));
boundary_5.getGeometryPartEntityGroup().setObjects(partSurface_1);
PressureBoundary pressureBoundary =
((PressureBoundary) simulation.get(ConditionTypeManager.class).get(PressureBoundary.class));
boundary_5.setBoundaryType(pressureBoundary);
}
private void generateVolumeMesh() {
Simulation simulation =
getActiveSimulation();
MeshPipelineController meshPipelineController =
simulation.get(MeshPipelineController.class);
meshPipelineController.generateVolumeMesh();
}
private void settingPhysicsContinuum() {
Simulation simulation =
getActiveSimulation();
PhysicsContinuum physicsContinuum =
((PhysicsContinuum) simulation.getContinuumManager().getContinuum("Physics 1"));
physicsContinuum.enable(SteadyModel.class);
physicsContinuum.enable(MultiComponentGasModel.class);
physicsContinuum.enable(ReactingModel.class);
physicsContinuum.enable(FlameletBasedModel.class);
physicsContinuum.enable(FgmCombustionModel.class);
physicsContinuum.enable(FgmReactionModel.class);
physicsContinuum.enable(SegregatedFluidEnthalpyModel.class);
physicsContinuum.enable(FgmIdealGasModel.class);
physicsContinuum.enable(TurbulentModel.class);
physicsContinuum.enable(RansTurbulenceModel.class);
physicsContinuum.enable(SegregatedFlowModel.class);
physicsContinuum.enable(KEpsilonTurbulence.class);
physicsContinuum.enable(RkeTwoLayerTurbModel.class);
physicsContinuum.enable(KeTwoLayerAllYplusWallTreatment.class);
physicsContinuum.enable(TfcCombustionPartiallyPremixedModel.class);
physicsContinuum.enable(SolutionInterpolationModel.class);
physicsContinuum.enable(NoxModel.class);
physicsContinuum.enable(NoxThreeEquationZeldovichModel.class);
ProgressVariableIgnitor progressVariableIgnitor =
physicsContinuum.get(IgnitorManager.class).createIgnitor(ProgressVariableIgnitor.class);
progressVariableIgnitor.getGeometryPartGroup().setQuery(null);
SimpleCylinderPart simpleCylinderPart_0 =
((SimpleCylinderPart) simulation.get(SimulationPartManager.class).getPart("Cylinder 3"));
progressVariableIgnitor.getGeometryPartGroup().setObjects(simpleCylinderPart_0);
PulseActivator pulseActivator =
((PulseActivator) progressVariableIgnitor.getActivator());
Units units_0 =
((Units) simulation.getUnitsManager().getObject(""));
pulseActivator.getBegin().setValueAndUnits(200.0, units_0);
pulseActivator.getEnd().setValueAndUnits(250.0, units_0);
TfcCombustionPartiallyPremixedModel tfcCombustionPartiallyPremixedModel_0 =
physicsContinuum.getModelManager().getModel(TfcCombustionPartiallyPremixedModel.class);
tfcCombustionPartiallyPremixedModel_0.getLaminarFlameSpeedOptions().setMethod(LaminarFlameSpeedGulderOption.class);
}
private void createFgmTable() {
Simulation simulation =
getActiveSimulation();
PhysicsContinuum physicsContinuum =
((PhysicsContinuum) simulation.getContinuumManager().getContinuum("Physics 1"));
FgmTableGenerator fgmTableGenerator =
physicsContinuum.get(FgmTableGenerator.class);
FgmTableParameters fgmTableParameters =
((FgmTableParameters) fgmTableGenerator.getTableParameters());
fgmTableParameters.getTableProgressVariableDefinition().setSelected(TableProgressVariableDefinitionOption.Type.CHEMENTHALPY);
Fgm0dIgnitionNumericalSettings fgm0dIgnitionNumericalSettings =
((Fgm0dIgnitionNumericalSettings) fgmTableParameters.getFgm0dIgnitionNumericalSettings());
TableAxisParameters tableAxisParameters =
((TableAxisParameters) fgm0dIgnitionNumericalSettings.getTableAxisParametersManager().getComponent("Heat Loss Ratio"));
tableAxisParameters.setAdapt(true);
FixedGridParameters fixedGridParameters =
tableAxisParameters.getFixedGridParameters();
IntegerValue integerValue_0 =
fixedGridParameters.getDimensionSizeValue();
integerValue_0.getQuantity().setValue(1.0);
TableChemistryDefinition tableChemistryDefinition =
((TableChemistryDefinition) fgmTableGenerator.getTableChemistryDefinition());
tableChemistryDefinition.importCaseFromChemkin(resolvePath(grimech30_path), resolvePath(thermo30_path), resolvePath(transport_path), "", "");
TableFluidStreamCollection tableFluidStreamCollection =
((TableFluidStreamCollection) fgmTableGenerator.getTableFluidStreamCollection());
TableFluidStream tableFluidStream_0 =
((TableFluidStream) tableFluidStreamCollection.getOxidizerStream());
Units units_1 =
((Units) simulation.getUnitsManager().getObject("K"));
tableFluidStream_0.getTemperature().setValueAndUnits(483.0, units_1);
tableFluidStream_0.getFluidStreamComposition().setArray(new DoubleVector(new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.233, 0.0}));
TableFluidStream tableFluidStream_1 =
((TableFluidStream) tableFluidStreamCollection.getFuelStream());
tableFluidStream_1.getFluidStreamComposition().setArray(new DoubleVector(new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}));
TableSpeciesForPostProcessing tableSpeciesForPostProcessing_0 =
((TableSpeciesForPostProcessing) fgmTableParameters.getTableSpeciesForPostProcessing());
((TableSpeciesGroup) tableSpeciesForPostProcessing_0.getTableSpeciesGroup()).setQuery(null);
star.material.MaterialDataBase materialMaterialDataBase =
simulation.get(MaterialDataBaseManager.class).getMatlDataBase("Table Generator");
star.material.DataBaseMaterialManager materialDataBaseMaterialManager =
materialMaterialDataBase.getFolder("Physics 1-Fgm");
star.material.DataBaseGas materialDataBaseGas_0 =
((star.material.DataBaseGas) materialDataBaseMaterialManager.getMaterial("CH4_Gas"));
star.material.DataBaseGas materialDataBaseGas_1 =
((star.material.DataBaseGas) materialDataBaseMaterialManager.getMaterial("CO_Gas"));
star.material.DataBaseGas materialDataBaseGas_2 =
((star.material.DataBaseGas) materialDataBaseMaterialManager.getMaterial("CO2_Gas"));
star.material.DataBaseGas materialDataBaseGas_3 =
((star.material.DataBaseGas) materialDataBaseMaterialManager.getMaterial("H2O_Gas"));
star.material.DataBaseGas materialDataBaseGas_4 =
((star.material.DataBaseGas) materialDataBaseMaterialManager.getMaterial("N2_Gas"));
star.material.DataBaseGas materialDataBaseGas_5 =
((star.material.DataBaseGas) materialDataBaseMaterialManager.getMaterial("NO_Gas"));
star.material.DataBaseGas materialDataBaseGas_6 =
((star.material.DataBaseGas) materialDataBaseMaterialManager.getMaterial("NO2_Gas"));
star.material.DataBaseGas materialDataBaseGas_7 =
((star.material.DataBaseGas) materialDataBaseMaterialManager.getMaterial("O2_Gas"));
star.material.DataBaseGas materialDataBaseGas_8 =
((star.material.DataBaseGas) materialDataBaseMaterialManager.getMaterial("OH_Gas"));
((TableSpeciesGroup) tableSpeciesForPostProcessing_0.getTableSpeciesGroup()).setObjects(materialDataBaseGas_0, materialDataBaseGas_1, materialDataBaseGas_2, materialDataBaseGas_3, materialDataBaseGas_4, materialDataBaseGas_5, materialDataBaseGas_6, materialDataBaseGas_7, materialDataBaseGas_8);
FgmCombustionSolver fgmCombustionSolver =
((FgmCombustionSolver) simulation.getSolverManager().getSolver(FgmCombustionSolver.class));
fgmCombustionSolver.setDifferentURFNumber(true);
Units units_2 =
((Units) simulation.getUnitsManager().getObject(""));
fgmCombustionSolver.getUrfProgressVariableQuantity().setValueAndUnits(0.8, units_2);
NoxSolver noxSolver =
((NoxSolver) simulation.getSolverManager().getSolver(NoxSolver.class));
noxSolver.getUrfQuantity().setValueAndUnits(0.8, units_2);
FgmTable fgmTable =
((FgmTable) fgmTableGenerator.getFgmTable());
fgmTable.constructTable();
}
private void setInitialConditions() {
Simulation simulation =
getActiveSimulation();
Region region =
simulation.getRegionManager().getRegion("Body 1");
Boundary boundary =
region.getBoundaryManager().getBoundary("CH4");
MixtureFractionArrayProfile mixtureFractionArrayProfile =
boundary.getValues().get(MixtureFractionArrayProfile.class);
mixtureFractionArrayProfile.getMethod(ConstantArrayProfileMethod.class).getQuantity().setArray(new DoubleVector(new double[] {1.0}));
}
private void createPlaneSection() {
Simulation simulation =
getActiveSimulation();
PlaneSection planeSection =
(PlaneSection) simulation.getPartManager().createImplicitPart(new NeoObjectVector(new Object[] {}), new DoubleVector(new double[] {0.0, 0.0, 1.0}), new DoubleVector(new double[] {0.0, 0.0, 0.0}), 0, 1, new DoubleVector(new double[] {0.0}), null);
planeSection.getInputParts().setQuery(null);
Region region =
simulation.getRegionManager().getRegion("Body 1");
planeSection.getInputParts().setObjects(region);
}
private void createScene() {
Simulation simulation =
getActiveSimulation();
simulation.getSceneManager().createScalarScene("Scalar Scene", "Outline", "Scalar", null);
Scene scene =
simulation.getSceneManager().getScene("Scalar Scene 1");
scene.initializeAndWait();
ScalarDisplayer scalarDisplayer =
((ScalarDisplayer) scene.getDisplayerManager().getObject("Scalar 1"));
Legend legend =
scalarDisplayer.getLegend();
PredefinedLookupTable predefinedLookupTable =
((PredefinedLookupTable) simulation.get(LookupTableManager.class).getObject("blue-yellow-red"));
legend.setLookupTable(predefinedLookupTable);
SceneUpdate sceneUpdate =
scene.getSceneUpdate();
HardcopyProperties hardcopyProperties =
sceneUpdate.getHardcopyProperties();
hardcopyProperties.setCurrentResolutionWidth(1440);
hardcopyProperties.setCurrentResolutionHeight(720);
scene.resetCamera();
scene.closeInteractive();
PartDisplayer partDisplayer =
((PartDisplayer) scene.getDisplayerManager().getObject("Outline 1"));
partDisplayer.setOutline(false);
scalarDisplayer.getInputParts().setQuery(null);
PlaneSection planeSection =
((PlaneSection) simulation.getPartManager().getObject("Plane Section"));
scalarDisplayer.getInputParts().setObjects(planeSection);
scalarDisplayer.setFillMode(ScalarFillMode.NODE_SMOOTH);
}
private void createLineSection() {
Simulation simulation =
getActiveSimulation();
LineSection lineSection =
simulation.getPartManager().createLineSection(new NeoObjectVector(new Object[] {}), new DoubleVector(new double[] {0.0, 0.0, 0.0}), new DoubleVector(new double[] {0.0, 0.0, 1.0}), 0, true, null);
lineSection.getInputParts().setQuery(null);
Region region =
simulation.getRegionManager().getRegion("Body 1");
lineSection.getInputParts().setObjects(region);
LineSectionPointPoint lineSectionPointPoint =
lineSection.getPointPoint();
Units units_1 =
((Units) simulation.getUnitsManager().getObject("m"));
lineSectionPointPoint.getStartPointCoordinate().setCoordinate(units_1, units_1, units_1, new DoubleVector(new double[] {-10.666999816894531, 0.0, 0.0}));
lineSectionPointPoint.getEndPointCoordinate().setCoordinate(units_1, units_1, units_1, new DoubleVector(new double[] {0.009999999776482582, 0.0, 0.0}));
}
private void createPlot() {
Simulation simulation =
getActiveSimulation();
XYPlot xYPlot =
simulation.getPlotManager().create("star.common.XYPlot");
PlotUpdate plotUpdate =
xYPlot.getPlotUpdate();
HardcopyProperties hardcopyProperties =
plotUpdate.getHardcopyProperties();
hardcopyProperties.setCurrentResolutionWidth(1440);
hardcopyProperties.setCurrentResolutionHeight(720);
xYPlot.getParts().setQuery(null);
LineSection lineSection_1 =
((LineSection) simulation.getPartManager().getObject("Line Section"));
xYPlot.getParts().setObjects(lineSection_1);
YAxisType yAxisType_0 =
((YAxisType) xYPlot.getYAxes().getAxisType("Y Type 1"));
FieldFunctionUnits fieldFunctionUnits_0 =
yAxisType_0.getScalarFunction();
PrimitiveFieldFunction primitiveFieldFunction_0 =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction("Temperature"));
fieldFunctionUnits_0.setFieldFunction(primitiveFieldFunction_0);
YAxisType yAxisType_1 =
xYPlot.getYAxes().createAxisType();
FieldFunctionUnits fieldFunctionUnits_1 =
yAxisType_1.getScalarFunction();
PrimitiveFieldFunction primitiveFieldFunction_1 =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction("NitrogenOxide"));
fieldFunctionUnits_1.setFieldFunction(primitiveFieldFunction_1);
YAxisType yAxisType_2 =
xYPlot.getYAxes().createAxisType();
FieldFunctionUnits fieldFunctionUnits_2 =
yAxisType_2.getScalarFunction();
PrimitiveFieldFunction primitiveFieldFunction_2 =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction("MassFractionCO2"));
fieldFunctionUnits_2.setFieldFunction(primitiveFieldFunction_2);
YAxisType yAxisType_3 =
xYPlot.getYAxes().createAxisType();
FieldFunctionUnits fieldFunctionUnits_3 =
yAxisType_3.getScalarFunction();
PrimitiveFieldFunction primitiveFieldFunction_3 =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction("MassFractionCO"));
fieldFunctionUnits_3.setFieldFunction(primitiveFieldFunction_3);
AxisType axisType_0 =
xYPlot.getXAxisType();
Units units_1 =
((Units) simulation.getUnitsManager().getObject("m"));
axisType_0.getDirectionVector().setComponentsAndUnits(-1.0, 0.0, 0.0, units_1);
}
private void createXYZTable() {
Simulation simulation =
getActiveSimulation();
XyzInternalTable xyzInternalTable =
simulation.getTableManager().create("star.common.XyzInternalTable");
PrimitiveFieldFunction primitiveFieldFunction_0 =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction("NitrogenOxide"));
PrimitiveFieldFunction primitiveFieldFunction_1 =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction("Temperature"));
PrimitiveFieldFunction primitiveFieldFunction_2 =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction("MassFractionCO"));
PrimitiveFieldFunction primitiveFieldFunction_3 =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction("MassFractionCO2"));
PrimitiveFieldFunction primitiveFieldFunction_4 =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction("Volume"));
xyzInternalTable.setFieldFunctions(new NeoObjectVector(new Object[] {primitiveFieldFunction_4, primitiveFieldFunction_0, primitiveFieldFunction_1, primitiveFieldFunction_2, primitiveFieldFunction_3}));
xyzInternalTable.getParts().setQuery(null);
Region region =
simulation.getRegionManager().getRegion("Body 1");
xyzInternalTable.getParts().setObjects(region);
}
private void initializeSolution() {
Simulation simulation =
getActiveSimulation();
Solution solution =
simulation.getSolution();
solution.initializeSolution();
}
private void saveState() {
Simulation simulation =
getActiveSimulation();
simulation.saveState(resolvePath("%s"));
}
public static ArrayList<double[]> calculateCoordinatesClockwise(double R, int bladeCount) {
double stepDegrees = 360.0/bladeCount;
ArrayList<double[]> coordinates = new ArrayList<>();
for (double theta = 360.0; theta > 0; theta -= stepDegrees) {
double radianTheta = Math.toRadians(theta);
double x = (double) (R * Math.cos(radianTheta));
double y = (double) (R * Math.sin(radianTheta));
double z = 0.01;
coordinates.add(new double[] {z, x, y});
}
return coordinates;
}
}
""" % (model_parameters['geometry_path'],
model_parameters['chemkin_path'],
model_parameters['init_model_folder'],
str(model_parameters['bladeCount']),
str(model_parameters['mesh_base_size']),
model_path))
macros_file.close()
def fuel_settings(path, fuel_parameters, model_path):
macros_file = open(path, 'w')
macros_file.write("""
import java.util.*;
import star.common.*;
import star.base.neo.*;
import star.flow.*;
public class fuel_macro extends StarMacro {
public void execute() {
setInitialConditions();
}
private void setInitialConditions() {
Simulation simulation = getActiveSimulation();
Solution solution =
simulation.getSolution();
simulation.clearSolution();
Region region =
simulation.getRegionManager().getRegion("Body 1");
Boundary boundary_0 =
region.getBoundaryManager().getBoundary("Air blades");
VelocityMagnitudeProfile velocityMagnitudeProfile_0 =
boundary_0.getValues().get(VelocityMagnitudeProfile.class);
Units units_0 =
((Units) simulation.getUnitsManager().getObject("m/s"));
velocityMagnitudeProfile_0.getMethod(ConstantScalarProfileMethod.class).getQuantity().setValueAndUnits(%s, units_0);
Boundary boundary_1 =
region.getBoundaryManager().getBoundary("Air inlet");
VelocityMagnitudeProfile velocityMagnitudeProfile_1 =
boundary_1.getValues().get(VelocityMagnitudeProfile.class);
velocityMagnitudeProfile_1.getMethod(ConstantScalarProfileMethod.class).getQuantity().setValueAndUnits(%s, units_0);
Boundary boundary_2 =
region.getBoundaryManager().getBoundary("CH4");
MassFlowRateProfile massFlowRateProfile_0 =
boundary_2.getValues().get(MassFlowRateProfile.class);
Units units_1 =
((Units) simulation.getUnitsManager().getObject("kg/s"));
massFlowRateProfile_0.getMethod(ConstantScalarProfileMethod.class).getQuantity().setValueAndUnits(%s, units_1);
simulation.saveState(resolvePath("%s"));
}
}
""" % (str(fuel_parameters['secondary_air_consumption']),
str(fuel_parameters['primary_air_consumption']),
str(fuel_parameters['gas_inlet_consumption']),
model_path))
macros_file.close()
def fgm_table_settings(path, recycling_parameters, model_path):
macros_file = open(path, 'w')
macros_file.write("""
package macro;
import java.util.*;
import star.common.*;
import star.base.neo.*;
import star.combustion.fgm.*;
import star.combustion.tablegenerators.*;
public class recycle_macro extends StarMacro {
public void execute() {
execute0();
}
private void execute0() {
Simulation simulation_0 =
getActiveSimulation();
PhysicsContinuum physicsContinuum_0 =
((PhysicsContinuum) simulation_0.getContinuumManager().getContinuum("Physics 1"));
FgmTableGenerator fgmTableGenerator_0 =
physicsContinuum_0.get(FgmTableGenerator.class);
FgmTable fgmTable_0 =
((FgmTable) fgmTableGenerator_0.getFgmTable());
fgmTable_0.deleteTable();
TableFluidStreamCollection tableFluidStreamCollection_0 =
((TableFluidStreamCollection) fgmTableGenerator_0.getTableFluidStreamCollection());
TableFluidStream tableFluidStream_0 =
((TableFluidStream) tableFluidStreamCollection_0.getOxidizerStream());
tableFluidStream_0.getFluidStreamComposition().setArray(new DoubleVector(new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, %s, 0.0, 0.0, 0.0, %s, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, %s, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, %s, 0.0}));
fgmTable_0.constructTable();
Solution solution_0 =
simulation_0.getSolution();
solution_0.initializeSolution();
simulation_0.saveState(resolvePath("%s"));
}
}
""" % (str(recycling_parameters['CO2']),
str(recycling_parameters['H2O']),
str(recycling_parameters['N2']),
str(recycling_parameters['O2']),
model_path))
macros_file.close()
def setting_and_running_solver(path, solver_parameters, model_path):
macros_file = open(path, 'w')
macros_file.write("""
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
import star.combustion.*;
import star.combustion.fgm.*;
import star.combustion.tablegenerators.*;
import star.common.*;
import star.mapping.*;
import star.base.neo.*;
import star.cadmodeler.*;
import star.dualmesher.VolumeControlDualMesherSizeOption;
import star.emissions.NoxModel;
import star.emissions.NoxSolver;
import star.emissions.NoxThreeEquationZeldovichModel;
import star.energy.StaticTemperatureProfile;
import star.flow.MassFlowRateProfile;
import star.flow.VelocityMagnitudeProfile;
import star.keturb.KEpsilonTurbulence;
import star.keturb.KeTwoLayerAllYplusWallTreatment;
import star.keturb.RkeTwoLayerTurbModel;
import star.material.MaterialDataBaseManager;
import star.material.MultiComponentGasModel;
import star.meshing.*;
import star.reactions.ReactingModel;
import star.resurfacer.VolumeControlResurfacerSizeOption;
import star.segregatedenergy.SegregatedFluidEnthalpyModel;
import star.segregatedflow.SegregatedFlowModel;
import star.turbulence.RansTurbulenceModel;
import star.turbulence.TurbulentModel;
import star.vis.*;
public class run_macros extends StarMacro {
List<String> sceneParameters = Arrays.asList("Temperature", "NitrogenOxide", "MassFractionCO", "MassFractionCO2");
String experiment_path = "%s";
public void execute() {
Simulation sim =
getActiveSimulation();
long startTime = System.currentTimeMillis();
setStoppingCriterion();
runSimulation();
for (String param : sceneParameters) {
changeSceneFieldFunction(param);
String scene_path = experiment_path + System.getProperty("file.separator") + "scenes" + System.getProperty("file.separator") + param + ".png";
saveScene(scene_path);
}
String path_plot = experiment_path + System.getProperty("file.separator") + "plot.csv";
savePlotData(path_plot);
String data_table_path = experiment_path + System.getProperty("file.separator") + "data_table.csv";
saveXYZTable(data_table_path);
saveState();
long endTime = System.currentTimeMillis();
long durationInMilliseconds = endTime - startTime;
double durationInSeconds = durationInMilliseconds / 1000.0;
String filename = experiment_path + "/exec_time.txt";
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename, true))) {
writer.write("Время расчета модели: " + durationInSeconds + "\\n");
} catch (IOException e) {
//sim.println("Ошибка при добавлении строки в файл: " + e.getMessage());
}
}
private void setStoppingCriterion() {
Simulation simulation =
getActiveSimulation();
StepStoppingCriterion stepStoppingCriterion =
((StepStoppingCriterion) simulation.getSolverStoppingCriterionManager().getSolverStoppingCriterion("Maximum Steps"));
IntegerValue integerValue =
stepStoppingCriterion.getMaximumNumberStepsObject();
integerValue.getQuantity().setValue(%s);
}
private void runSimulation() {
Simulation simulation =
getActiveSimulation();
Solution solution =
simulation.getSolution();
solution.initializeSolution();
ResidualPlot residualPlot =
((ResidualPlot) simulation.getPlotManager().getPlot("Residuals"));
residualPlot.openInteractive();
simulation.getSimulationIterator().run();
}
private void changeSceneFieldFunction(String FieldFunction) {
Simulation simulation =
getActiveSimulation();
Scene scene =
simulation.getSceneManager().getScene("Scalar Scene 1");
ScalarDisplayer scalarDisplayer =
((ScalarDisplayer) scene.getDisplayerManager().getObject("Scalar 1"));
PrimitiveFieldFunction primitiveFieldFunction =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction(FieldFunction));
scalarDisplayer.getScalarDisplayQuantity().setFieldFunction(primitiveFieldFunction);
}
private void changePlotFieldFunction(String fieldFunction) {
Simulation simulation =
getActiveSimulation();
XYPlot xYPlot =
((XYPlot) simulation.getPlotManager().getPlot("XY Plot 1"));
YAxisType yAxisType =
((YAxisType) xYPlot.getYAxes().getAxisType("Y Type 1"));
FieldFunctionUnits fieldFunctionUnits =
yAxisType.getScalarFunction();
PrimitiveFieldFunction primitiveFieldFunction =
((PrimitiveFieldFunction) simulation.getFieldFunctionManager().getFunction(fieldFunction));
fieldFunctionUnits.setFieldFunction(primitiveFieldFunction);
}
private void saveScene(String pathName) {
Simulation simulation =
getActiveSimulation();
Scene scene =
simulation.getSceneManager().getScene("Scalar Scene 1");
scene.resetCamera();
scene.printAndWait(resolvePath(pathName), 1, 1920, 1080, true, false);
}
private void saveXYZTable(String pathName) {
Simulation simulation =
getActiveSimulation();
XyzInternalTable xyzInternalTable =
((XyzInternalTable) simulation.getTableManager().getTable("XYZ Internal Table"));
xyzInternalTable.extract();
xyzInternalTable.export(resolvePath(pathName), ";");
}
private void savePlotData(String save_path) {
Simulation simulation =
getActiveSimulation();
XYPlot xYPlot =
((XYPlot) simulation.getPlotManager().getPlot("XY Plot 1"));
xYPlot.export(resolvePath(save_path), ",");
}
private void saveState() {
Simulation simulation =
getActiveSimulation();
simulation.saveState(resolvePath("%s"));
}
}
""" % (solver_parameters['experiment_path'],
str(solver_parameters['stopping_criterion']),
model_path))
macros_file.close()