// Reference: Epsilon Euskadi --- Formula One Rear Wing Optimization package macro; import java.util.*; import star.common.*; import star.base.neo.*; import star.vis.*; import star.base.report.*; import star.flow.*; import star.meshing.*; public class NACA extends StarMacro { public void execute() { execute0(); } private void execute0() { Simulation sim_0 = getActiveSimulation(); Units units_0 = sim_0.getUnitsManager().getPreferredUnits(new IntVector(new int[] {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0})); ImportManager importManager_0 = sim_0.getImportManager(); importManager_0.importStlSurface(resolvePath("srfMeshFolder\\srfMesh1.stl"), "OneBoundaryPerPatch", units_0, true, 1.0E-8); SurfaceRep surfaceRep_0 = ((SurfaceRep) sim_0.getRepresentationManager().getObject("Import")); Region region_0 = sim_0.getRegionManager().getRegion("Region 1"); surfaceRep_0.generateMeshReport(new NeoObjectVector(new Object[] {region_0})); importManager_0.importStlSurface(resolvePath("srfMeshFolder\\srfMesh2.stl"), "OneBoundaryPerPatch", units_0, true, 1.0E-8); Region region_1 = sim_0.getRegionManager().getRegion("Region 2"); surfaceRep_0.generateMeshReport(new NeoObjectVector(new Object[] {region_1})); importManager_0.importStlSurface(resolvePath("srfMeshFolder\\srfMesh3.stl"), "OneBoundaryPerPatch", units_0, true, 1.0E-8); Region region_2 = sim_0.getRegionManager().getRegion("Region 3"); surfaceRep_0.generateMeshReport(new NeoObjectVector(new Object[] {region_2})); Boundary boundary_0 = region_0.getBoundaryManager().getBoundary("catia"); boundary_0.setPresentationName("BODYWORK"); Region region_3 = sim_0.getRegionManager().getRegion("TUNNEL_CAR"); Boundary boundary_1 = region_3.getBoundaryManager().getBoundary("BODYWORK"); boundary_0.get(MeshConditionManager.class).copyProperties(boundary_1.get(MeshConditionManager.class)); boundary_0.get(MeshValueManager.class).copyProperties(boundary_1.get(MeshValueManager.class)); region_3.getBoundaryManager().removeBoundaries(new NeoObjectVector(new Object[] {boundary_1})); surfaceRep_0.combineRegions(new NeoObjectVector(new Object[] {region_3, region_0})); Boundary boundary_02 = region_1.getBoundaryManager().getBoundary("catia"); boundary_02.setPresentationName("Rear_wing_test1"); Boundary boundary_03 = region_3.getBoundaryManager().getBoundary("Rear_wing_test1"); boundary_02.get(MeshConditionManager.class).copyProperties(boundary_03.get(MeshConditionManager.class)); boundary_02.get(MeshValueManager.class).copyProperties(boundary_03.get(MeshValueManager.class)); region_3.getBoundaryManager().removeBoundaries(new NeoObjectVector(new Object[] {boundary_3})); surfaceRep_0.combineRegions(new NeoObjectVector(new Object[] {region_3, region_1})); Boundary boundary_04 = region_2.getBoundaryManager().getBoundary("catia"); boundary_04.setPresentationName("SYM"); Boundary boundary_05 = region_3.getBoundaryManager().getBoundary("SYM"); boundary_04.get(MeshConditionManager.class).copyProperties(boundary_05.get(MeshConditionManager.class)); boundary_04.get(MeshValueManager.class).copyProperties(boundary_05.get(MeshValueManager.class)); boundary_04.setBoundaryType(SymmetryBoundary.class); region_3.getBoundaryManager().removeBoundaries(new NeoObjectVector(new Object[] {boundary_05})); surfaceRep_0.combineRegions(new NeoObjectVector(new Object[] {region_3, region_2})); FeatureCurve featureCurve_0 = ((FeatureCurve) region_3.getFeatureCurveManager().getObject("CAR_CURVES")); region_3.getFeatureCurveManager().removeObjects(featureCurve_0); FeatureCurve featureCurve_1 = ((FeatureCurve) region_3.getFeatureCurveManager().getObject("TUNNEL_CURVES")); region_3.getFeatureCurveManager().removeObjects(featureCurve_1); Boundary boundary_06 = region_3.getBoundaryManager().getBoundary("INLET"); Boundary boundary_07 = region_3.getBoundaryManager().getBoundary("OUTLET"); Boundary boundary_08 = region_3.getBoundaryManager().getBoundary("GROUND_PRISM"); Boundary boundary_09 = region_3.getBoundaryManager().getBoundary("TUNNEL"); Boundary boundary_10 = region_3.getBoundaryManager().getBoundary("GROUND"); FeatureCurve featureCurve_2 = surfaceRep_0.createFeatureEdgesOnBoundaries(new NeoObjectVector(new Object[] {boundary_06, boundary_07, boundary_08, boundary_09, boundary_04, boundary_10}), true, true, true, true, true, true, 31.0); featureCurve_2.setPresentationName("Tunnel_curves"); Boundary boundary_11 = region_3.getBoundaryManager().getBoundary("TYRE"); Boundary boundary_12 = region_3.getBoundaryManager().getBoundary("RL_WISHBONES"); Boundary boundary_13 = region_3.getBoundaryManager().getBoundary("RIM"); Boundary boundary_14 = region_3.getBoundaryManager().getBoundary("RL_CALIPER"); Boundary boundary_15 = region_3.getBoundaryManager().getBoundary("RL_DRUM"); Boundary boundary_16 = region_3.getBoundaryManager().getBoundary("DIFFUSER"); Boundary boundary_17 = region_3.getBoundaryManager().getBoundary("UNDERFLOOR"); Boundary boundary_18 = region_3.getBoundaryManager().getBoundary("RL_DISC"); FeatureCurve featureCurve_3 = surfaceRep_0.createFeatureEdgesOnBoundaries(new NeoObjectVector(new Object[] {boundary_11, boundary_12, boundary_13, boundary_14, boundary_15, boundary_16, boundary_17, boundary_0, boundary_18, boundary_2}), true, true, true, true, true, true, 31.0); featureCurve_3.setPresentationName("Car_curves"); Scene scene_0 = sim_0.getSceneManager().createScene("Repair Surface"); scene_0.initializeAndWait(); SurfaceMeshWidget surfaceMeshWidget_0 = surfaceRep_0.startSurfaceMeshWidget(scene_0); surfaceMeshWidget_0.setActiveRegions(new NeoObjectVector(new Object[] {region_3})); surfaceMeshWidget_0.startSurfaceMeshDiagnostics(); surfaceMeshWidget_0.startSurfaceMeshRepair(); surfaceMeshWidget_0.startMergeImprintController(); surfaceMeshWidget_0.startIntersectController(); SurfaceMeshWidgetDiagnosticsController meshDiag_1 = surfaceMeshWidget_0.getControllers().getController(SurfaceMeshWidgetDiagnosticsController.class); meshDiag_1.setCheckPiercedFaces(true); meshDiag_1.setPiercedFacesActive(true); meshDiag_1.setCheckPoorQualityFaces(true); meshDiag_1.setPoorQualityFacesActive(true); meshDiag_1.setMinimumFaceQuality(0.01); meshDiag_1.setCheckCloseProximityFaces(true); meshDiag_1.setCloseProximityFacesActive(true); meshDiag_1.setMinimumFaceProximity(0.05); meshDiag_1.setCheckFreeEdges(true); meshDiag_1.setFreeEdgesActive(true); meshDiag_1.setCheckNonmanifoldEdges(true); meshDiag_1.setNonmanifoldEdgesActive(true); meshDiag_1.setCheckNonmanifoldVertices(true); meshDiag_1.setNonmanifoldVerticesActive(true); meshDiag_1.setCheckFeatureNumberEdges(true); meshDiag_1.setCheckFeatureLength(false); meshDiag_1.setCheckFeatureAngle(true); meshDiag_1.setCheckFeatureOpenCurve(true); meshDiag_1.setCheckFeatureSmallRegions(false); meshDiag_1.setMinNumberEdges(5); meshDiag_1.setMinFeatureLength(1.0E-4); meshDiag_1.setMaxFeatureAngle(121.0); meshDiag_1.setMinFeatureRegionArea(1.0E-4); meshDiag_1.runDiagnostics(); meshDiag_1.setCheckSoftFeatureErrors(false); meshDiag_1.setSoftFeatureErrorsActive(false); meshDiag_1.setCheckHardFeatureErrors(false); meshDiag_1.setHardFeatureErrorsActive(false); meshDiag_1.setCheckSoftFeatureErrors(false); meshDiag_1.setSoftFeatureErrorsActive(false); meshDiag_1.setCheckHardFeatureErrors(false); meshDiag_1.setHardFeatureErrorsActive(false); SurfaceMeshWidgetRepairController surfaceMeshWidgetRepairController_0 = surfaceMeshWidget_0.getControllers().getController(SurfaceMeshWidgetRepairController.class); SurfaceMeshWidgetMergeImprintOptions surfaceMeshWidgetMergeImprintOptions_0 = surfaceMeshWidgetRepairController_0.getOptions().getMergeImprintOptions(); surfaceMeshWidgetMergeImprintOptions_0.setMergeAction(SurfaceMeshWidgetMergedFaceOption.MAINTAIN_DEST_BOUNDARY); PartDisplayer partDisplayer_0 = ((PartDisplayer) scene_0.getHighlightDisplayer()); partDisplayer_0.initialize(); SurfaceMeshWidgetDisplayer surfaceMeshWidgetDisplayer_0 = ((SurfaceMeshWidgetDisplayer) scene_0.getDisplayerManager().getDisplayer("Widget displayer 1")); surfaceMeshWidgetDisplayer_0.initialize(); CurrentView currentView_0 = scene_0.getCurrentView(); currentView_0.setInput(new DoubleVector(new double[] {0.0, 0.0, 0.0}), new DoubleVector(new double[] {0.0, 0.0, 1.0}), new DoubleVector(new double[] {0.0, 1.0, 0.0}), -1.0, 0); meshDiag_1.selectFreeEdges(); surfaceMeshWidgetRepairController_0.zipSelectedEdges(); meshDiag_1.setCheckSoftFeatureErrors(false); meshDiag_1.setSoftFeatureErrorsActive(false); meshDiag_1.setCheckHardFeatureErrors(false); meshDiag_1.setHardFeatureErrorsActive(false); meshDiag_1.selectNonmanifoldEdges(); surfaceMeshWidget_0.stop(); sim_0.getSceneManager().deleteScenes(new NeoObjectVector(new Object[] {scene_0})); Solution solution_0 = sim_0.getSolution(); solution_0.clearSolution(); ForceReport forceReport_0 = ((ForceReport) sim_0.getReportManager().getReport("Fx")); forceReport_0.getParts().setObjects(boundary_2); ForceReport forceReport_1 = ((ForceReport) sim_0.getReportManager().getReport("Fz")); forceReport_1.getParts().setObjects(boundary_2); MeshPipelineController meshPipelineController_0 = sim_0.get(MeshPipelineController.class); meshPipelineController_0.generateVolumeMesh(); sim_0.saveState(resolvePath("runFolder\\newRun.sim")); } }