// STAR-CCM+ macro: setupPost.java
// Written by STAR-CCM+ 12.02.010
package macro;

import java.util.*;

import star.common.*;
import star.base.neo.*;
import star.base.report.*;
import star.vis.*;
import star.flow.*;

public class setupPost extends StarMacro {

  public void execute() {
    execute0();
  }

  private void execute0() {

    Simulation simulation_0 = 
      getActiveSimulation();

    LabCoordinateSystem labCoordinateSystem_0 = 
      simulation_0.getCoordinateSystemManager().getLabCoordinateSystem();

    CylindricalCoordinateSystem cylindricalCoordinateSystem_1 = 
      labCoordinateSystem_0.getLocalCoordinateSystemManager().createLocalCoordinateSystem(CylindricalCoordinateSystem.class, "Cylindrical");

    cylindricalCoordinateSystem_1.setBasis0(new DoubleVector(new double[] {-1.0, 0.0, 0.0}));

    MaxReport maxReport_1 = 
      simulation_0.getReportManager().createReport(MaxReport.class);

    maxReport_1.getParts().setQuery(null);

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

    maxReport_1.getParts().setObjects(region_0);

    MinReport minReport_1 = 
      simulation_0.getReportManager().createReport(MinReport.class);

    minReport_1.getParts().setQuery(null);

    minReport_1.getParts().setObjects(region_0);

    FieldMeanMonitor fieldMeanMonitor_1 = 
      simulation_0.getMonitorManager().createMonitor(FieldMeanMonitor.class);

    fieldMeanMonitor_1.getParts().setQuery(null);

    fieldMeanMonitor_1.getParts().setObjects(region_0);

    PrimitiveFieldFunction primitiveFieldFunction_0 = 
      ((PrimitiveFieldFunction) simulation_0.getFieldFunctionManager().getFunction("StaticPressure"));

    fieldMeanMonitor_1.setFieldFunction(primitiveFieldFunction_0);

    StarUpdate starUpdate_0 = 
      fieldMeanMonitor_1.getStarUpdate();

    TimeStepUpdateFrequency timeStepUpdateFrequency_0 = 
      starUpdate_0.getTimeStepUpdateFrequency();

    timeStepUpdateFrequency_0.setStart(60);

    simulation_0.getMonitorManager().createMonitorAndPlot(new NeoObjectVector(new Object[] {maxReport_1, minReport_1}), false, "%1$s Plot");

    ReportMonitor reportMonitor_2 = 
      ((ReportMonitor) simulation_0.getMonitorManager().getMonitor("Maximum 1 Monitor"));

    MonitorPlot monitorPlot_2 = 
      simulation_0.getPlotManager().createMonitorPlot(new NeoObjectVector(new Object[] {reportMonitor_2}), "Maximum 1 Monitor Plot");

    ReportMonitor reportMonitor_3 = 
      ((ReportMonitor) simulation_0.getMonitorManager().getMonitor("Minimum 1 Monitor"));

    MonitorPlot monitorPlot_3 = 
      simulation_0.getPlotManager().createMonitorPlot(new NeoObjectVector(new Object[] {reportMonitor_3}), "Minimum 1 Monitor Plot");

    monitorPlot_2.open();

    monitorPlot_3.open();

    XYPlot xYPlot_1 = 
      simulation_0.getPlotManager().createPlot(XYPlot.class);

    xYPlot_1.open();

    xYPlot_1.getParts().setQuery(null);

    Boundary boundary_0 = 
      region_0.getBoundaryManager().getBoundary("Subtract.Cylinder.Cylinder Surface");

    xYPlot_1.getParts().setObjects(boundary_0);

    AxisType axisType_0 = 
      xYPlot_1.getXAxisType();

    axisType_0.setMode(AxisTypeMode.SCALAR);

    FieldFunctionUnits fieldFunctionUnits_0 = 
      axisType_0.getScalarFunction();

    PrimitiveFieldFunction primitiveFieldFunction_1 = 
      ((PrimitiveFieldFunction) simulation_0.getFieldFunctionManager().getFunction("Centroid"));

    VectorComponentFieldFunction vectorComponentFieldFunction_0 = 
      ((VectorComponentFieldFunction) primitiveFieldFunction_1.getFunctionInCoordinateSystem(cylindricalCoordinateSystem_1).getComponentFunction(1));

    fieldFunctionUnits_0.setFieldFunction(vectorComponentFieldFunction_0);

    Units units_0 = 
      ((Units) simulation_0.getUnitsManager().getObject("deg"));
    fieldFunctionUnits_0.setUnits(units_0);

    YAxisType yAxisType_0 = 
      ((YAxisType) xYPlot_1.getYAxes().getAxisType("Y Type 1"));

    FieldFunctionUnits fieldFunctionUnits_1 = 
      yAxisType_0.getScalarFunction();

    PrimitiveFieldFunction primitiveFieldFunction_2 = 
      ((PrimitiveFieldFunction) simulation_0.getFieldFunctionManager().getFunction("FieldMean1Monitor"));

    fieldFunctionUnits_1.setFieldFunction(primitiveFieldFunction_2);

    YAxisType yAxisType_2 = 
      xYPlot_1.getYAxes().createAxisType();

    FieldFunctionUnits fieldFunctionUnits_4 = 
      yAxisType_2.getScalarFunction();

    PrimitiveFieldFunction primitiveFieldFunction_4 = 
      ((PrimitiveFieldFunction) simulation_0.getFieldFunctionManager().getFunction("StaticPressure"));

    fieldFunctionUnits_4.setFieldFunction(primitiveFieldFunction_4);

    maxReport_1.setFieldFunction(primitiveFieldFunction_2);
    minReport_1.setFieldFunction(primitiveFieldFunction_2);

    // Make Scene
    simulation_0.getSceneManager().createScalarScene("Scalar Scene", "Outline", "Scalar");

    Scene scene_4 = 
      simulation_0.getSceneManager().getScene("Scalar Scene 1");

    scene_4.setPresentationName("Scalar Scene Vorticity");

    scene_4.initializeAndWait();

    PartDisplayer partDisplayer_3 = 
      ((PartDisplayer) scene_4.getDisplayerManager().getDisplayer("Outline 1"));

    partDisplayer_3.initialize();

    ScalarDisplayer scalarDisplayer_2 = 
      ((ScalarDisplayer) scene_4.getDisplayerManager().getDisplayer("Scalar 1"));

    scalarDisplayer_2.initialize();

    SceneUpdate sceneUpdate_0 = 
      scene_4.getSceneUpdate();

    HardcopyProperties hardcopyProperties_0 = 
      sceneUpdate_0.getHardcopyProperties();

    hardcopyProperties_0.setCurrentResolutionWidth(1614);

    hardcopyProperties_0.setCurrentResolutionHeight(689);

    scene_4.resetCamera();

    CurrentView currentView_0 = 
      scene_4.getCurrentView();


    currentView_0.setInput(new DoubleVector(new double[] {0.10213593081571568, -0.015157647380607072, -0.0015602095825624218}), new DoubleVector(new double[] {0.10213593081571568, -0.015157647380607072, 5.798773816609473}), new DoubleVector(new double[] {0.0, 1.0, 0.0}), 0.13254045039390994, 1);
    
    VorticityVectorFunction vorticityVectorFunction_0 = 
      ((VorticityVectorFunction) simulation_0.getFieldFunctionManager().getFunction("VorticityVector"));

    VectorMagnitudeFieldFunction vectorMagnitudeFieldFunction_0 = 
      ((VectorMagnitudeFieldFunction) vorticityVectorFunction_0.getMagnitudeFunction());

    scalarDisplayer_2.getScalarDisplayQuantity().setFieldFunction(vectorMagnitudeFieldFunction_0);

    scalarDisplayer_2.getScalarDisplayQuantity().setRange(new DoubleVector(new double[] {0.0, 41035.640625}));

    scalarDisplayer_2.getScalarDisplayQuantity().setRange(new DoubleVector(new double[] {0.0, 5000.0}));
 


  }
}
