.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/00-fluent/exhaust_system_settings_api.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_00-fluent_exhaust_system_settings_api.py: .. _ref_exhaust_system_settings_api: Fault-tolerant meshing workflow using settings objects ------------------------------------------------------ This example sets up and solves a three-dimensional turbulent fluid flow in a manifold exhaust system, which is common in the automotive industry, using the PyFluent Settings API. Predicting the flow field in the area of the mixing region is important to designing the junction properly. This example uses the guided workflow for fault-tolerant meshing because it is appropriate for geometries that can have imperfections, such as gaps and leakages. **Workflow tasks** The fault-tolerant meshing workflow guides you through these tasks: - Import a CAD geometry and manage individual parts - Generate a surface mesh - Cap inlets and outlets - Extract a fluid region - Define leakages - Extract edge features - Set up size controls - Generate a volume mesh **Problem description** In the manifold exhaust system, air flows through the three inlets with a uniform velocity of 1 m/s. The air then exits through the outlet. A small pipe is placed in the main portion of the manifold where edge extraction is considered. The example also includes a known small leakage to demonstrate the automatic leakage detection aspects of the meshing workflow. .. GENERATED FROM PYTHON SOURCE LINES 37-46 Example Setup ------------- Before you can use the fault-tolerant meshing workflow, you must set up the example and initialize this workflow. Perform required imports ~~~~~~~~~~~~~~~~~~~~~~~~ Perform required imports, which includes downloading and importing the geometry file. .. GENERATED FROM PYTHON SOURCE LINES 46-54 .. code-block:: Python import ansys.fluent.core as pyfluent from ansys.fluent.core import examples import_file_name = examples.download_file( "exhaust_system.fmd", "pyfluent/exhaust_system" ) .. rst-class:: sphx-glr-script-out .. code-block:: none File already exists. File path: /home/ansys/.local/share/ansys_fluent_core/examples/exhaust_system.fmd .. GENERATED FROM PYTHON SOURCE LINES 56-60 Launch Fluent ~~~~~~~~~~~~~ Launch Fluent as a service in meshing mode with double precision running on two processors. .. GENERATED FROM PYTHON SOURCE LINES 60-67 .. code-block:: Python meshing = pyfluent.launch_fluent( precision="double", processor_count=2, mode="meshing", ) .. GENERATED FROM PYTHON SOURCE LINES 68-71 Initialize workflow ~~~~~~~~~~~~~~~~~~~ Initialize the fault-tolerant meshing workflow. .. GENERATED FROM PYTHON SOURCE LINES 71-74 .. code-block:: Python meshing.workflow.InitializeWorkflow(WorkflowType="Fault-tolerant Meshing") .. GENERATED FROM PYTHON SOURCE LINES 75-84 Fault-folerant meshing workflow ------------------------------- The fault-tolerant meshing workflow guides you through the many tasks that follow. Import CAD and manage parts ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Import the CAD geometry file (``exhaust_system.fmd``) and selectively manage some parts. .. GENERATED FROM PYTHON SOURCE LINES 84-118 .. code-block:: Python meshing.PartManagement.InputFileChanged( FilePath=import_file_name, IgnoreSolidNames=False, PartPerBody=False ) meshing.PMFileManagement.FileManager.LoadFiles() meshing.PartManagement.Node["Meshing Model"].Copy( Paths=[ "/dirty_manifold-for-wrapper," + "1/dirty_manifold-for-wrapper,1/main,1", "/dirty_manifold-for-wrapper," + "1/dirty_manifold-for-wrapper,1/flow-pipe,1", "/dirty_manifold-for-wrapper," + "1/dirty_manifold-for-wrapper,1/outpipe3,1", "/dirty_manifold-for-wrapper," + "1/dirty_manifold-for-wrapper,1/object2,1", "/dirty_manifold-for-wrapper," + "1/dirty_manifold-for-wrapper,1/object1,1", ] ) meshing.PartManagement.ObjectSetting["DefaultObjectSetting"].OneZonePer.set_state( "part" ) cad_import = meshing.workflow.TaskObject["Import CAD and Part Management"] cad_import.Arguments.set_state( { "Context": 0, "CreateObjectPer": "Custom", "FMDFileName": import_file_name, "FileLoaded": "yes", "ObjectSetting": "DefaultObjectSetting", "Options": { "Line": False, "Solid": False, "Surface": False, }, } ) cad_import.Execute() .. GENERATED FROM PYTHON SOURCE LINES 119-122 Describe geometry and flow ~~~~~~~~~~~~~~~~~~~~~~~~~~ Describe the geometry and the flow characteristics. .. GENERATED FROM PYTHON SOURCE LINES 122-146 .. code-block:: Python describe_geom = meshing.workflow.TaskObject["Describe Geometry and Flow"] describe_geom.Arguments.set_state( { "AddEnclosure": "No", "CloseCaps": "Yes", "FlowType": "Internal flow through the object", } ) describe_geom.UpdateChildTasks(SetupTypeChanged=False) describe_geom.Arguments.set_state( { "AddEnclosure": "No", "CloseCaps": "Yes", "DescribeGeometryAndFlowOptions": { "AdvancedOptions": True, "ExtractEdgeFeatures": "Yes", }, "FlowType": "Internal flow through the object", } ) describe_geom.UpdateChildTasks(SetupTypeChanged=False) describe_geom.Execute() .. GENERATED FROM PYTHON SOURCE LINES 147-150 Enclose openings ~~~~~~~~~~~~~~~~ Enclose (cap) any openings in the geometry. .. GENERATED FROM PYTHON SOURCE LINES 152-155 .. image:: /_static/exhaust_system_011.png :width: 400pt :align: center .. GENERATED FROM PYTHON SOURCE LINES 157-160 .. image:: /_static/exhaust_system_012.png :width: 400pt :align: center .. GENERATED FROM PYTHON SOURCE LINES 160-286 .. code-block:: Python capping = meshing.workflow.TaskObject["Enclose Fluid Regions (Capping)"] capping.Arguments.set_state( { "CreatePatchPreferences": { "ShowCreatePatchPreferences": False, }, "PatchName": "inlet-1", "SelectionType": "zone", "ZoneSelectionList": ["inlet.1"], } ) capping.Arguments.set_state( { "CreatePatchPreferences": { "ShowCreatePatchPreferences": False, }, "PatchName": "inlet-1", "SelectionType": "zone", "ZoneLocation": [ "1", "351.68205", "-361.34322", "-301.88668", "396.96205", "-332.84759", "-266.69751", "inlet.1", ], "ZoneSelectionList": ["inlet.1"], } ) capping.AddChildToTask() capping.InsertCompoundChildTask() capping.Arguments.set_state({}) meshing.workflow.TaskObject["inlet-1"].Execute() capping.Arguments.set_state( { "PatchName": "inlet-2", "SelectionType": "zone", "ZoneSelectionList": ["inlet.2"], } ) capping.Arguments.set_state( { "PatchName": "inlet-2", "SelectionType": "zone", "ZoneLocation": [ "1", "441.68205", "-361.34322", "-301.88668", "486.96205", "-332.84759", "-266.69751", "inlet.2", ], "ZoneSelectionList": ["inlet.2"], } ) capping.AddChildToTask() capping.InsertCompoundChildTask() capping.Arguments.set_state({}) meshing.workflow.TaskObject["inlet-2"].Execute() capping.Arguments.set_state( { "PatchName": "inlet-3", "SelectionType": "zone", "ZoneSelectionList": ["inlet"], } ) capping.Arguments.set_state( { "PatchName": "inlet-3", "SelectionType": "zone", "ZoneLocation": [ "1", "261.68205", "-361.34322", "-301.88668", "306.96205", "-332.84759", "-266.69751", "inlet", ], "ZoneSelectionList": ["inlet"], } ) capping.AddChildToTask() capping.InsertCompoundChildTask() capping.Arguments.set_state({}) meshing.workflow.TaskObject["inlet-3"].Execute() capping.Arguments.set_state( { "PatchName": "outlet-1", "SelectionType": "zone", "ZoneSelectionList": ["outlet"], "ZoneType": "pressure-outlet", } ) capping.Arguments.set_state( { "PatchName": "outlet-1", "SelectionType": "zone", "ZoneLocation": [ "1", "352.22702", "-197.8957", "84.102381", "394.41707", "-155.70565", "84.102381", "outlet", ], "ZoneSelectionList": ["outlet"], "ZoneType": "pressure-outlet", } ) capping.AddChildToTask() capping.InsertCompoundChildTask() capping.Arguments.set_state({}) meshing.workflow.TaskObject["outlet-1"].Execute() .. GENERATED FROM PYTHON SOURCE LINES 287-290 Extract edge features ~~~~~~~~~~~~~~~~~~~~~ Extract edge features. .. GENERATED FROM PYTHON SOURCE LINES 290-312 .. code-block:: Python edge_features = meshing.workflow.TaskObject["Extract Edge Features"] edge_features.Arguments.set_state( { "ExtractMethodType": "Intersection Loops", "ObjectSelectionList": ["flow_pipe", "main"], } ) edge_features.AddChildToTask() edge_features.InsertCompoundChildTask() edge_group = meshing.workflow.TaskObject["edge-group-1"] edge_group.Arguments.set_state( { "ExtractEdgesName": "edge-group-1", "ExtractMethodType": "Intersection Loops", "ObjectSelectionList": ["flow_pipe", "main"], } ) edge_features.Arguments.set_state({}) edge_group.Execute() .. GENERATED FROM PYTHON SOURCE LINES 313-316 Identify regions ~~~~~~~~~~~~~~~~ Identify regions. .. GENERATED FROM PYTHON SOURCE LINES 316-390 .. code-block:: Python identify_regions = meshing.workflow.TaskObject["Identify Regions"] identify_regions.Arguments.set_state( { "SelectionType": "zone", "X": 377.322045740589, "Y": -176.800676988458, "Z": -37.0764628583475, "ZoneSelectionList": ["main.1"], } ) identify_regions.Arguments.set_state( { "SelectionType": "zone", "X": 377.322045740589, "Y": -176.800676988458, "Z": -37.0764628583475, "ZoneLocation": [ "1", "213.32205", "-225.28068", "-158.25531", "541.32205", "-128.32068", "84.102381", "main.1", ], "ZoneSelectionList": ["main.1"], } ) identify_regions.AddChildToTask() identify_regions.InsertCompoundChildTask() fluid_region_1 = meshing.workflow.TaskObject["fluid-region-1"] fluid_region_1.Arguments.set_state( { "MaterialPointsName": "fluid-region-1", "SelectionType": "zone", "X": 377.322045740589, "Y": -176.800676988458, "Z": -37.0764628583475, "ZoneLocation": [ "1", "213.32205", "-225.28068", "-158.25531", "541.32205", "-128.32068", "84.102381", "main.1", ], "ZoneSelectionList": ["main.1"], } ) identify_regions.Arguments.set_state({}) fluid_region_1.Execute() identify_regions.Arguments.set_state( { "MaterialPointsName": "void-region-1", "NewRegionType": "void", "ObjectSelectionList": ["inlet-1", "inlet-2", "inlet-3", "main"], "X": 374.722045740589, "Y": -278.9775145640143, "Z": -161.1700719416913, } ) identify_regions.AddChildToTask() identify_regions.InsertCompoundChildTask() identify_regions.Arguments.set_state({}) meshing.workflow.TaskObject["void-region-1"].Execute() .. GENERATED FROM PYTHON SOURCE LINES 391-394 Define thresholds for leakages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Define thresholds for potential leakages. .. GENERATED FROM PYTHON SOURCE LINES 394-423 .. code-block:: Python leakage_threshold = meshing.workflow.TaskObject["Define Leakage Threshold"] leakage_threshold.Arguments.set_state( { "AddChild": "yes", "FlipDirection": True, "PlaneDirection": "X", "RegionSelectionSingle": "void-region-1", } ) leakage_threshold.AddChildToTask() leakage_threshold.InsertCompoundChildTask() leakage_1 = meshing.workflow.TaskObject["leakage-1"] leakage_1.Arguments.set_state( { "AddChild": "yes", "FlipDirection": True, "LeakageName": "leakage-1", "PlaneDirection": "X", "RegionSelectionSingle": "void-region-1", } ) leakage_threshold.Arguments.set_state( { "AddChild": "yes", } ) leakage_1.Execute() .. GENERATED FROM PYTHON SOURCE LINES 424-427 Review region settings ~~~~~~~~~~~~~~~~~~~~~~ Review the region settings. .. GENERATED FROM PYTHON SOURCE LINES 427-465 .. code-block:: Python update_region = meshing.workflow.TaskObject["Update Region Settings"] update_region.Arguments.set_state( { "AllRegionFilterCategories": ["2"] * 5 + ["1"] * 2, "AllRegionLeakageSizeList": ["none"] * 6 + ["6.4"], "AllRegionLinkedConstructionSurfaceList": ["n/a"] * 6 + ["no"], "AllRegionMeshMethodList": ["none"] * 6 + ["wrap"], "AllRegionNameList": [ "main", "flow_pipe", "outpipe3", "object2", "object1", "void-region-1", "fluid-region-1", ], "AllRegionOversetComponenList": ["no"] * 7, "AllRegionSourceList": ["object"] * 5 + ["mpt"] * 2, "AllRegionTypeList": ["void"] * 6 + ["fluid"], "AllRegionVolumeFillList": ["none"] * 6 + ["tet"], "FilterCategory": "Identified Regions", "OldRegionLeakageSizeList": [""], "OldRegionMeshMethodList": ["wrap"], "OldRegionNameList": ["fluid-region-1"], "OldRegionOversetComponenList": ["no"], "OldRegionTypeList": ["fluid"], "OldRegionVolumeFillList": ["hexcore"], "RegionLeakageSizeList": [""], "RegionMeshMethodList": ["wrap"], "RegionNameList": ["fluid-region-1"], "RegionOversetComponenList": ["no"], "RegionTypeList": ["fluid"], "RegionVolumeFillList": ["tet"], } ) update_region.Execute() .. GENERATED FROM PYTHON SOURCE LINES 466-469 Set mesh control options ~~~~~~~~~~~~~~~~~~~~~~~~ Set mesh control options. .. GENERATED FROM PYTHON SOURCE LINES 469-472 .. code-block:: Python meshing.workflow.TaskObject["Choose Mesh Control Options"].Execute() .. GENERATED FROM PYTHON SOURCE LINES 473-476 Generate surface mesh ~~~~~~~~~~~~~~~~~~~~~ Generate the surface mesh. .. GENERATED FROM PYTHON SOURCE LINES 478-481 .. image:: /_static/exhaust_system_013.png :width: 500pt :align: center .. GENERATED FROM PYTHON SOURCE LINES 481-484 .. code-block:: Python meshing.workflow.TaskObject["Generate the Surface Mesh"].Execute() .. GENERATED FROM PYTHON SOURCE LINES 485-488 Confirm and update boundaries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Confirm and update the boundaries. .. GENERATED FROM PYTHON SOURCE LINES 488-491 .. code-block:: Python meshing.workflow.TaskObject["Update Boundaries"].Execute() .. GENERATED FROM PYTHON SOURCE LINES 492-495 Add boundary layers ~~~~~~~~~~~~~~~~~~~ Add boundary layers. .. GENERATED FROM PYTHON SOURCE LINES 495-509 .. code-block:: Python meshing.workflow.TaskObject["Add Boundary Layers"].AddChildToTask() meshing.workflow.TaskObject["Add Boundary Layers"].InsertCompoundChildTask() meshing.workflow.TaskObject["aspect-ratio_1"].Arguments.set_state( { "BLControlName": "aspect-ratio_1", } ) meshing.workflow.TaskObject["Add Boundary Layers"].Arguments.set_state({}) meshing.workflow.TaskObject["aspect-ratio_1"].Execute() .. GENERATED FROM PYTHON SOURCE LINES 510-513 Generate volume mesh ~~~~~~~~~~~~~~~~~~~~ Generate the volume mesh. .. GENERATED FROM PYTHON SOURCE LINES 515-518 .. image:: /_static/exhaust_system_014.png :width: 500pt :align: center .. GENERATED FROM PYTHON SOURCE LINES 518-537 .. code-block:: Python volume_mesh_gen = meshing.workflow.TaskObject["Generate the Volume Mesh"] volume_mesh_gen.Arguments.set_state( { "AllRegionNameList": [ "main", "flow_pipe", "outpipe3", "object2", "object1", "void-region-1", "fluid-region-1", ], "AllRegionSizeList": ["11.33375"] * 7, "AllRegionVolumeFillList": ["none"] * 6 + ["tet"], "EnableParallel": True, } ) volume_mesh_gen.Execute() .. GENERATED FROM PYTHON SOURCE LINES 538-541 Check mesh ~~~~~~~~~~ Check the mesh. .. GENERATED FROM PYTHON SOURCE LINES 541-544 .. code-block:: Python meshing.tui.mesh.check_mesh() .. GENERATED FROM PYTHON SOURCE LINES 545-553 Solve and postprocess --------------------- Once you have completed the fault tolerate meshing workflow, you can solve and postprcess the results. Switch to solution mode ~~~~~~~~~~~~~~~~~~~~~~~ Switch to the solution mode. .. GENERATED FROM PYTHON SOURCE LINES 553-558 .. code-block:: Python solver = meshing.switch_to_solver() solver.mesh.check() .. GENERATED FROM PYTHON SOURCE LINES 559-562 Select turbulence model ~~~~~~~~~~~~~~~~~~~~~~~ Select the kw sst turbulence model. .. GENERATED FROM PYTHON SOURCE LINES 562-568 .. code-block:: Python viscous = solver.setup.models.viscous viscous.model = "k-omega" viscous.k_omega_model = "sst" .. GENERATED FROM PYTHON SOURCE LINES 569-573 Set velocity and turbulence boundary conditions for first inlet ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Set the velocity and turbulence boundary conditions for the first inlet (``inlet-1``). .. GENERATED FROM PYTHON SOURCE LINES 573-585 .. code-block:: Python boundary_conditions = solver.setup.boundary_conditions boundary_conditions.velocity_inlet["inlet-1"] = { "momentum": { "velocity_specification_method": "Magnitude, Normal to Boundary", "velocity": { "value": 1, }, }, } .. GENERATED FROM PYTHON SOURCE LINES 586-590 Set same boundary conditions for other velocity inlets ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Set the same boundary conditions for the other velocity inlets (``inlet_2`` and ``inlet_3``). .. GENERATED FROM PYTHON SOURCE LINES 590-596 .. code-block:: Python boundary_conditions.copy( from_="inlet-1", to=["inlet-2", "inlet-3"], ) .. GENERATED FROM PYTHON SOURCE LINES 597-600 Set boundary conditions at outlet ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Set the boundary conditions at the outlet (``outlet-1``). .. GENERATED FROM PYTHON SOURCE LINES 600-603 .. code-block:: Python boundary_conditions.pressure_outlet["outlet-1"].turbulence.turbulent_intensity = 0.05 .. GENERATED FROM PYTHON SOURCE LINES 604-607 Turn on residual plots ~~~~~~~~~~~~~~~~~~~~~~ Activate plotting of the solution residuals. .. GENERATED FROM PYTHON SOURCE LINES 607-610 .. code-block:: Python solver.solution.monitor.residual.options.plot = True .. GENERATED FROM PYTHON SOURCE LINES 611-614 Initialize flow field ~~~~~~~~~~~~~~~~~~~~~ Initialize the flow field using hybrid initialization. .. GENERATED FROM PYTHON SOURCE LINES 614-617 .. code-block:: Python solver.solution.initialization.hybrid_initialize() .. GENERATED FROM PYTHON SOURCE LINES 618-621 Start calculation ~~~~~~~~~~~~~~~~~ Start the calculation by requesting 100 iterations. .. GENERATED FROM PYTHON SOURCE LINES 623-626 .. image:: /_static/exhaust_system_015.png :width: 500pt :align: center .. GENERATED FROM PYTHON SOURCE LINES 626-629 .. code-block:: Python solver.solution.run_calculation.iterate(iter_count=100) .. GENERATED FROM PYTHON SOURCE LINES 630-632 Write the case and data files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 632-638 .. code-block:: Python solver.file.write( file_type="case-data", file_name="exhaust_system.cas.h5", ) .. GENERATED FROM PYTHON SOURCE LINES 639-644 Configure graphics picture export ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Since Fluent is being run without the GUI, we will need to export plots as picture files. Edit the picture settings to use a custom resolution so that the images are large enough. .. GENERATED FROM PYTHON SOURCE LINES 644-652 .. code-block:: Python graphics = solver.results.graphics # use_window_resolution option not available inside containers if not solver.connection_properties.inside_container: graphics.picture.use_window_resolution = False graphics.picture.x_resolution = 1920 graphics.picture.y_resolution = 1440 .. GENERATED FROM PYTHON SOURCE LINES 653-657 Create path lines ~~~~~~~~~~~~~~~~~ Create path lines highlighting the flow field, display it, then export the image for inspection. .. GENERATED FROM PYTHON SOURCE LINES 659-662 .. image:: /_static/exhaust_system_016.png :width: 500pt :align: center .. GENERATED FROM PYTHON SOURCE LINES 662-677 .. code-block:: Python graphics.pathline["pathlines-1"] = { "field": "time", "accuracy_control": { "tolerance": 0.001, }, "skip": 5, "release_from_surfaces": ["inlet-1", "inlet-2", "inlet-3"], } graphics.pathline["pathlines-1"].display() graphics.views.restore_view(view_name="isometric") graphics.views.auto_scale() graphics.picture.save_picture(file_name="pathlines-1.png") .. GENERATED FROM PYTHON SOURCE LINES 678-681 Create iso-surface ~~~~~~~~~~~~~~~~~~ Create an iso-surface through the manifold geometry. .. GENERATED FROM PYTHON SOURCE LINES 681-688 .. code-block:: Python solver.results.surfaces.iso_surface["surf-x-coordinate"] = { "field": "x-coordinate", "zones": ["fluid-region-1"], "iso_values": [0.38], } .. GENERATED FROM PYTHON SOURCE LINES 689-693 Create contours of velocity magnitude ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create contours of the velocity magnitude throughout the manifold along with the mesh. Display it and export the image for inspection. .. GENERATED FROM PYTHON SOURCE LINES 695-698 .. image:: /_static/exhaust_system_017.png :width: 500pt :align: center .. GENERATED FROM PYTHON SOURCE LINES 698-719 .. code-block:: Python graphics.contour["contour-velocity"] = { "field": "velocity-magnitude", "surfaces_list": ["surf-x-coordinate"], "node_values": False, "range_option": { "option": "auto-range-on", "auto_range_on": { "global_range": False, }, }, } graphics.mesh["mesh-1"] = { "surfaces_list": "*", } graphics.contour["contour-velocity"].display() graphics.views.restore_view(view_name="right") graphics.views.auto_scale() graphics.picture.save_picture(file_name="contour-velocity.png") .. GENERATED FROM PYTHON SOURCE LINES 720-724 Create scene ~~~~~~~~~~~~ Create a scene containing the mesh and the contours. Display it and export the image for inspection. .. GENERATED FROM PYTHON SOURCE LINES 726-729 .. image:: /_static/exhaust_system_018.png :width: 500pt :align: center .. GENERATED FROM PYTHON SOURCE LINES 729-742 .. code-block:: Python solver.results.scene["scene-1"] = {} scene1 = solver.results.scene["scene-1"] scene1.graphics_objects["mesh-1"] = { "transparency": 90, } scene1.graphics_objects["contour-velocity"] = {} scene1.display() graphics.views.camera.position(xyz=[1.70, 1.14, 0.29]) graphics.views.camera.up_vector(xyz=[-0.66, 0.72, -0.20]) graphics.picture.save_picture(file_name="scene-1.png") .. GENERATED FROM PYTHON SOURCE LINES 743-746 Close Fluent ~~~~~~~~~~~~ Close Fluent. .. GENERATED FROM PYTHON SOURCE LINES 746-748 .. code-block:: Python solver.exit() .. rst-class:: sphx-glr-timing **Total running time of the script:** (4 minutes 58.632 seconds) .. _sphx_glr_download_examples_00-fluent_exhaust_system_settings_api.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: exhaust_system_settings_api.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: exhaust_system_settings_api.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_