diff --git a/codegen/tuigen.py b/codegen/tuigen.py index 703502bd191f..5c1305753a75 100644 --- a/codegen/tuigen.py +++ b/codegen/tuigen.py @@ -195,10 +195,7 @@ def __init__( self._tui_module = "ansys.fluent.core." + self._tui_heading if Path(self._tui_doc_dir).exists(): shutil.rmtree(Path(self._tui_doc_dir)) - if meshing: - self.session = pyfluent.launch_fluent(mode="meshing") - else: - self.session = pyfluent.launch_fluent(mode="solver") + self.session = pyfluent.launch_fluent(mode="meshing" if meshing else "solver") self._service = self.session.fluent_connection.datamodel_service_tui self._main_menu = _TUIMenu([], "") diff --git a/doc/source/api/core/meshing/index.rst b/doc/source/api/core/meshing/index.rst index 4bb833456d0d..f71bda968b0f 100644 --- a/doc/source/api/core/meshing/index.rst +++ b/doc/source/api/core/meshing/index.rst @@ -11,12 +11,12 @@ Workflow example .. code:: python import ansys.fluent.core as pyfluent - session = pyfluent.launch_fluent(mode="meshing") - session.start_transcript() - session.meshing.workflow.InitializeWorkflow(WorkflowType='Watertight Geometry') - session.meshing.workflow.TaskObject['Import Geometry'].Arguments = dict(FileName='cylinder.agdb') - session.meshing.workflow.TaskObject['Import Geometry'].Execute() - session.meshing.tui.mesh.check_mesh() + meshing = pyfluent.launch_fluent(mode="meshing") + meshing.start_transcript() + meshing.workflow.InitializeWorkflow(WorkflowType='Watertight Geometry') + meshing.workflow.TaskObject['Import Geometry'].Arguments = dict(FileName='cylinder.agdb') + meshing.workflow.TaskObject['Import Geometry'].Execute() + meshing.tui.mesh.check_mesh() exit() You can manually convert existing Fluent meshing workflow @@ -53,49 +53,49 @@ and the equivalent PyFluent script. .. code:: python - session.meshing.workflow.InitializeWorkflow(WorkflowType="Watertight Geometry") - session.meshing.workflow.TaskObject["Import Geometry"].Arguments = dict( + meshing.workflow.InitializeWorkflow(WorkflowType="Watertight Geometry") + meshing.workflow.TaskObject["Import Geometry"].Arguments = dict( FileName=import_filename, LengthUnit="in" ) - session.meshing.workflow.TaskObject["Import Geometry"].Execute() - session.meshing.workflow.TaskObject["Add Local Sizing"].AddChildToTask() - session.meshing.workflow.TaskObject["Add Local Sizing"].Execute() - session.meshing.workflow.TaskObject["Generate the Surface Mesh"].Arguments = { + meshing.workflow.TaskObject["Import Geometry"].Execute() + meshing.workflow.TaskObject["Add Local Sizing"].AddChildToTask() + meshing.workflow.TaskObject["Add Local Sizing"].Execute() + meshing.workflow.TaskObject["Generate the Surface Mesh"].Arguments = { "CFDSurfaceMeshControls": {"MaxSize": 0.3} } - session.meshing.workflow.TaskObject["Generate the Surface Mesh"].Execute() - session.meshing.workflow.TaskObject["Describe Geometry"].UpdateChildTasks( + meshing.workflow.TaskObject["Generate the Surface Mesh"].Execute() + meshing.workflow.TaskObject["Describe Geometry"].UpdateChildTasks( SetupTypeChanged=False ) - session.meshing.workflow.TaskObject["Describe Geometry"].Arguments = dict( + meshing.workflow.TaskObject["Describe Geometry"].Arguments = dict( SetupType="The geometry consists of only fluid regions with no voids" ) - session.meshing.workflow.TaskObject["Describe Geometry"].UpdateChildTasks( + meshing.workflow.TaskObject["Describe Geometry"].UpdateChildTasks( SetupTypeChanged=True ) - session.meshing.workflow.TaskObject["Describe Geometry"].Execute() - session.meshing.workflow.TaskObject["Update Boundaries"].Arguments = { + meshing.workflow.TaskObject["Describe Geometry"].Execute() + meshing.workflow.TaskObject["Update Boundaries"].Arguments = { "BoundaryLabelList": ["wall-inlet"], "BoundaryLabelTypeList": ["wall"], "OldBoundaryLabelList": ["wall-inlet"], "OldBoundaryLabelTypeList": ["velocity-inlet"], } - session.meshing.workflow.TaskObject["Update Boundaries"].Execute() - session.meshing.workflow.TaskObject["Update Regions"].Execute() - session.meshing.workflow.TaskObject["Add Boundary Layers"].AddChildToTask() - session.meshing.workflow.TaskObject["Add Boundary Layers"].InsertCompoundChildTask() - session.meshing.workflow.TaskObject["smooth-transition_1"].Arguments = { + meshing.workflow.TaskObject["Update Boundaries"].Execute() + meshing.workflow.TaskObject["Update Regions"].Execute() + meshing.workflow.TaskObject["Add Boundary Layers"].AddChildToTask() + meshing.workflow.TaskObject["Add Boundary Layers"].InsertCompoundChildTask() + meshing.workflow.TaskObject["smooth-transition_1"].Arguments = { "BLControlName": "smooth-transition_1", } - session.meshing.workflow.TaskObject["Add Boundary Layers"].Arguments = {} - session.meshing.workflow.TaskObject["smooth-transition_1"].Execute() - session.meshing.workflow.TaskObject["Generate the Volume Mesh"].Arguments = { + meshing.workflow.TaskObject["Add Boundary Layers"].Arguments = {} + meshing.workflow.TaskObject["smooth-transition_1"].Execute() + meshing.workflow.TaskObject["Generate the Volume Mesh"].Arguments = { "VolumeFill": "poly-hexcore", "VolumeFillControls": { "HexMaxCellLength": 0.3, }, } - session.meshing.workflow.TaskObject["Generate the Volume Mesh"].Execute() + meshing.workflow.TaskObject["Generate the Volume Mesh"].Execute() TUI commands example -------------------- @@ -103,10 +103,10 @@ TUI commands example .. code:: python import ansys.fluent.core as pyfluent - session = pyfluent.launch_fluent(mode="meshing") - session.meshing.tui.file.read_case("elbow.cas.gz") - session.meshing.tui.switch_to_solution_mode("yes") - session.solver.tui.define.models.unsteady_2nd_order("yes") + meshing_session = pyfluent.launch_fluent(mode="meshing") + meshing_session.tui.file.read_case("elbow.cas.gz") + solver_session = meshing_session.switch_to_solver() + solver_session.tui.define.models.unsteady_2nd_order("yes") exit() .. currentmodule:: ansys.fluent.core.meshing diff --git a/doc/source/api/core/solver/settings.rst b/doc/source/api/core/solver/settings.rst index e3999603955f..1b1e900ebf6d 100644 --- a/doc/source/api/core/solver/settings.rst +++ b/doc/source/api/core/solver/settings.rst @@ -14,8 +14,8 @@ property of ``session.solver``. .. code-block:: >>> import ansys.fluent.core as pyfluent - >>> session = pyfluent.launch_fluent(mode="solver") - >>> root = session.solver + >>> solver = pyfluent.launch_fluent(mode="solver") + >>> root = solver The ``root`` object contains attributes such as ``file``, ``setup``, ``solution``, and ``results``. These objects are also instances of settings diff --git a/doc/source/getting_started/index.rst b/doc/source/getting_started/index.rst index 586d580d225b..26edf29316c8 100644 --- a/doc/source/getting_started/index.rst +++ b/doc/source/getting_started/index.rst @@ -50,8 +50,8 @@ You can launch Fluent from Python using the ``launch_fluent`` function: .. code:: python import ansys.fluent.core as pyfluent - session = pyfluent.launch_fluent(precision="double", processor_count=2, mode="solver") - session.check_health() + solver = pyfluent.launch_fluent(precision="double", processor_count=2, mode="solver") + solver.check_health() Fluent is now active. You can send commands to it as a genuine Python class. For example, if you wanted to read a case file, update a setting, and iterate the @@ -59,10 +59,10 @@ solver: .. code:: python - session.solver.tui.file.read_case(case_file_name='elbow.cas.h5') - session.solver.tui.define.models.unsteady_2nd_order("yes") - session.solver.tui.solve.initialize.initialize_flow() - session.solver.tui.solve.dual_time_iterate(2, 3) + solver.tui.file.read_case(case_file_name='elbow.cas.h5') + solver.tui.define.models.unsteady_2nd_order("yes") + solver.tui.solve.initialize.initialize_flow() + solver.tui.solve.dual_time_iterate(2, 3) In addition to all TUI commands being available in this package, there are the `ansys-fluent-parametric `_ and diff --git a/doc/source/user_guide/boundary_conditions.rst b/doc/source/user_guide/boundary_conditions.rst index 99a75b353dd5..d12c5b2eca49 100644 --- a/doc/source/user_guide/boundary_conditions.rst +++ b/doc/source/user_guide/boundary_conditions.rst @@ -28,9 +28,9 @@ Python code for defining velocity boundary conditions at inlets. .. code:: python import ansys.fluent.core as pyfluent - session = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") - session.solver.tui.file.read_case(case_file_name='file.cas.h5') - session.solver.tui.define.boundary_conditions.set.velocity_inlet( + solver = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") + solver.tui.file.read_case(case_file_name='file.cas.h5') + solver.tui.define.boundary_conditions.set.velocity_inlet( 'cold-inlet', (), 'vmag', @@ -38,7 +38,7 @@ Python code for defining velocity boundary conditions at inlets. 0.4, 'quit' ) - session.solver.tui.define.boundary_conditions.set.velocity_inlet( + solver.tui.define.boundary_conditions.set.velocity_inlet( 'cold-inlet', (), 'ke-spec', @@ -48,21 +48,21 @@ Python code for defining velocity boundary conditions at inlets. 'yes', 'quit' ) - session.solver.tui.define.boundary_conditions.set.velocity_inlet( + solver.tui.define.boundary_conditions.set.velocity_inlet( 'cold-inlet', (), 'turb-intensity', 5, 'quit' ) - session.solver.tui.define.boundary_conditions.set.velocity_inlet( + solver.tui.define.boundary_conditions.set.velocity_inlet( 'cold-inlet', (), 'turb-hydraulic-diam', 4, 'quit' ) - session.solver.tui.define.boundary_conditions.set.velocity_inlet( + solver.tui.define.boundary_conditions.set.velocity_inlet( 'cold-inlet', (), 'temperature', @@ -86,7 +86,7 @@ Python code for copying boundary conditions to other zones. .. code:: python - session.solver.tui.define.boundary_conditions.copy_bc('cold-inlet','hot-inlet','()') + solver.tui.define.boundary_conditions.copy_bc('cold-inlet','hot-inlet','()') Listing zones ~~~~~~~~~~~~~ @@ -103,7 +103,7 @@ Python code for printing to the Fluent console the types and IDs of all zones. .. code:: python - session.solver.tui.define.boundary_conditions.list_zones() + solver.tui.define.boundary_conditions.list_zones() Modifying cell zone conditions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -121,7 +121,7 @@ Python code for modifying cell zone conditions. .. code:: python #Enabling Laminar Zone - session.solver.tui.define.boundary_conditions.fluid( + solver.tui.define.boundary_conditions.fluid( 'elbow-fluid', 'no', 'no', @@ -159,20 +159,20 @@ Defining boundary conditions .. code:: python - session.solver.setup.boundary_conditions.velocity_inlet['cold-inlet'].vmag = { + solver.setup.boundary_conditions.velocity_inlet['cold-inlet'].vmag = { 'option': 'constant or expression', 'constant': 0.4, } - session.solver.setup.boundary_conditions.velocity_inlet[ + solver.setup.boundary_conditions.velocity_inlet[ 'cold-inlet' ].ke_spec = 'Intensity and Hydraulic Diameter' - session.solver.setup.boundary_conditions.velocity_inlet[ + solver.setup.boundary_conditions.velocity_inlet[ 'cold-inlet' ].turb_intensity = 5 - session.solver.setup.boundary_conditions.velocity_inlet[ + solver.setup.boundary_conditions.velocity_inlet[ 'cold-inlet' ].turb_hydraulic_diam = '4 [in]' - session.solver.setup.boundary_conditions.velocity_inlet['cold-inlet'].t = { + solver.setup.boundary_conditions.velocity_inlet['cold-inlet'].t = { 'option': 'constant or expression', 'constant': 293.15, } @@ -185,4 +185,4 @@ Modifying cell zone conditions .. code:: python #Enabling Laminar Zone - session.solver.setup.cell_zone_conditions.fluid['elbow-fluid'] = {'laminar' : True} \ No newline at end of file + solver.setup.cell_zone_conditions.fluid['elbow-fluid'] = {'laminar' : True} \ No newline at end of file diff --git a/doc/source/user_guide/general_settings.rst b/doc/source/user_guide/general_settings.rst index 6e83adf6d400..8d4c47f56d95 100644 --- a/doc/source/user_guide/general_settings.rst +++ b/doc/source/user_guide/general_settings.rst @@ -27,9 +27,9 @@ the verbosity (level 0 to 3). .. code:: python import ansys.fluent.core as pyfluent - session = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") - session.solver.tui.file.read_case(case_file_name='file.cas.h5') - session.solver.tui.mesh.check() + solver = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") + solver.tui.file.read_case(case_file_name='file.cas.h5') + solver.tui.mesh.check() Reporting mesh quality ---------------------- @@ -47,7 +47,7 @@ console, including the minimum orthogonal quality and maximum aspect ratio. .. code:: python - session.solver.tui.mesh.quality() + solver.tui.mesh.quality() Scaling mesh ------------ @@ -65,7 +65,7 @@ coordinate directions. .. code:: python - session.solver.tui.mesh.scale(1,1,1) + solver.tui.mesh.scale(1,1,1) Defining units -------------- @@ -82,4 +82,4 @@ Python code for setting the unit conversion factors. .. code:: python - session.solver.tui.define.units('length', 'in') \ No newline at end of file + solver.tui.define.units('length', 'in') \ No newline at end of file diff --git a/doc/source/user_guide/index.rst b/doc/source/user_guide/index.rst index d53616c3e5fd..8df261d30362 100644 --- a/doc/source/user_guide/index.rst +++ b/doc/source/user_guide/index.rst @@ -65,7 +65,7 @@ users: .. code:: python - tui = solver_session.solver.tui + tui = solver_session.tui tui.file.read_case(case_file_name="pipe.cas.h5") @@ -81,7 +81,7 @@ additional interface features that are not possible via the ``tui`` object: .. code:: python - root = solver_session.solver + root = solver_session root.file.read(file_type="case", file_name="pipe.cas.h5") @@ -106,7 +106,7 @@ straightforward and familiar command and settings interactions are available: .. code:: python - tui = meshing_session.meshing.tui + tui = meshing_session.tui tui.mesh.prepare_for_solve("yes") @@ -122,7 +122,7 @@ exposes directly: .. code:: python - workflow = meshing_session.meshing.workflow + workflow = meshing_session.workflow workflow.InitializeWorkflow(WorkflowType="Watertight Geometry") @@ -132,7 +132,7 @@ exposes directly: import_geometry.Execute() - meshing = meshing_session.meshing.meshing + meshing = meshing_session.meshing meshing.GlobalSettings.LengthUnit.setState("mm") diff --git a/doc/source/user_guide/launching_ansys_fluent.rst b/doc/source/user_guide/launching_ansys_fluent.rst index dcd4b7c1e2e6..d7228588a8c8 100644 --- a/doc/source/user_guide/launching_ansys_fluent.rst +++ b/doc/source/user_guide/launching_ansys_fluent.rst @@ -23,9 +23,7 @@ This example shows how you can start Fluent in solution mode: .. code:: python - solver_session_a = pyfluent.launch_fluent(mode="solver") - - solver_session_b = pyfluent.launch_fluent(mode="solver") + solver_session = pyfluent.launch_fluent(mode="solver") Meshing mode ~~~~~~~~~~~~ diff --git a/doc/source/user_guide/materials.rst b/doc/source/user_guide/materials.rst index f269652a69c0..719ed9ba621b 100644 --- a/doc/source/user_guide/materials.rst +++ b/doc/source/user_guide/materials.rst @@ -19,10 +19,10 @@ Python code for defining the fluid material being modelled on a cell zone. .. code:: python import ansys.fluent.core as pyfluent - session = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") - session.solver.tui.file.read_case(case_file_name='file.cas.h5') - session.solver.tui.define.materials.copy('fluid', 'water-liquid') - session.solver.tui.define.boundary_conditions.fluid( + solver = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") + solver.tui.file.read_case(case_file_name='file.cas.h5') + solver.tui.define.materials.copy('fluid', 'water-liquid') + solver.tui.define.boundary_conditions.fluid( 'elbow-fluid', 'yes', 'water-liquid', @@ -57,5 +57,5 @@ This example shows how you define materials using .. code:: python - session.solver.setup.materials.copy_database_material_by_name(type='fluid', name='water-liquid') - session.solver.setup.cell_zone_conditions.fluid['elbow-fluid'].material = 'water-liquid' \ No newline at end of file + solver.setup.materials.copy_database_material_by_name(type='fluid', name='water-liquid') + solver.setup.cell_zone_conditions.fluid['elbow-fluid'].material = 'water-liquid' \ No newline at end of file diff --git a/doc/source/user_guide/meshing_workflows.rst b/doc/source/user_guide/meshing_workflows.rst index 984579a4c6f0..6567c9e8d0f5 100644 --- a/doc/source/user_guide/meshing_workflows.rst +++ b/doc/source/user_guide/meshing_workflows.rst @@ -18,101 +18,101 @@ Import geometry from ansys.fluent.core import examples import_filename = examples.download_file('mixing_elbow.pmdb', 'pyfluent/mixing_elbow') - session = pyfluent.launch_fluent( - meshing_mode=True, precision='double', processor_count=2, mode="solver" + meshing = pyfluent.launch_fluent( + mode="meshing", precision='double', processor_count=2 ) - session.meshing.workflow.InitializeWorkflow(WorkflowType='Watertight Geometry') - session.meshing.workflow.TaskObject['Import Geometry'].Arguments = dict( + meshing.workflow.InitializeWorkflow(WorkflowType='Watertight Geometry') + meshing.workflow.TaskObject['Import Geometry'].Arguments = dict( FileName=import_filename, LengthUnit='in' ) - session.meshing.workflow.TaskObject['Import Geometry'].Execute() + meshing.workflow.TaskObject['Import Geometry'].Execute() Add local sizing ~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Add Local Sizing'].AddChildToTask() - session.meshing.workflow.TaskObject['Add Local Sizing'].Execute() + meshing.workflow.TaskObject['Add Local Sizing'].AddChildToTask() + meshing.workflow.TaskObject['Add Local Sizing'].Execute() Generate surface mesh ~~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Generate the Surface Mesh'].Arguments = { + meshing.workflow.TaskObject['Generate the Surface Mesh'].Arguments = { 'CFDSurfaceMeshControls': {'MaxSize': 0.3} } - session.meshing.workflow.TaskObject['Generate the Surface Mesh'].Execute() + meshing.workflow.TaskObject['Generate the Surface Mesh'].Execute() Describe geometry ~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Describe Geometry'].UpdateChildTasks( + meshing.workflow.TaskObject['Describe Geometry'].UpdateChildTasks( SetupTypeChanged=False ) - session.meshing.workflow.TaskObject['Describe Geometry'].Arguments = dict( + meshing.workflow.TaskObject['Describe Geometry'].Arguments = dict( SetupType='The geometry consists of only fluid regions with no voids' ) - session.meshing.workflow.TaskObject['Describe Geometry'].UpdateChildTasks( + meshing.workflow.TaskObject['Describe Geometry'].UpdateChildTasks( SetupTypeChanged=True ) - session.meshing.workflow.TaskObject['Describe Geometry'].Execute() + meshing.workflow.TaskObject['Describe Geometry'].Execute() Update boundaries ~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Update Boundaries'].Arguments = { + meshing.workflow.TaskObject['Update Boundaries'].Arguments = { 'BoundaryLabelList': ['wall-inlet'], 'BoundaryLabelTypeList': ['wall'], 'OldBoundaryLabelList': ['wall-inlet'], 'OldBoundaryLabelTypeList': ['velocity-inlet'], } - session.meshing.workflow.TaskObject['Update Boundaries'].Execute() + meshing.workflow.TaskObject['Update Boundaries'].Execute() Update regions ~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Update Regions'].Execute() + meshing.workflow.TaskObject['Update Regions'].Execute() Add boundary layers ~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Add Boundary Layers'].AddChildToTask() - session.meshing.workflow.TaskObject['Add Boundary Layers'].InsertCompoundChildTask() - session.meshing.workflow.TaskObject['smooth-transition_1'].Arguments = { + meshing.workflow.TaskObject['Add Boundary Layers'].AddChildToTask() + meshing.workflow.TaskObject['Add Boundary Layers'].InsertCompoundChildTask() + meshing.workflow.TaskObject['smooth-transition_1'].Arguments = { 'BLControlName': 'smooth-transition_1', } - session.meshing.workflow.TaskObject['Add Boundary Layers'].Arguments = {} - session.meshing.workflow.TaskObject['smooth-transition_1'].Execute() + meshing.workflow.TaskObject['Add Boundary Layers'].Arguments = {} + meshing.workflow.TaskObject['smooth-transition_1'].Execute() Generate volume mesh ~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Generate the Volume Mesh'].Arguments = { + meshing.workflow.TaskObject['Generate the Volume Mesh'].Arguments = { 'VolumeFill': 'poly-hexcore', 'VolumeFillControls': { 'HexMaxCellLength': 0.3, }, } - session.meshing.workflow.TaskObject['Generate the Volume Mesh'].Execute() + meshing.workflow.TaskObject['Generate the Volume Mesh'].Execute() Switch to solution mode ~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.tui.switch_to_solution_mode('yes') + solver = meshing.switch_to_solver() Using the fault-tolerant meshing workflow ----------------------------------------- @@ -129,15 +129,15 @@ Import CAD and part management import_filename = examples.download_file( 'exhaust_system.fmd', 'pyfluent/exhaust_system' ) - session = pyfluent.launch_fluent( - meshing_mode=True, precision='double', processor_count=2, mode="solver" + meshing = pyfluent.launch_fluent( + precision='double', processor_count=2, mode="meshing" ) - session.meshing.workflow.InitializeWorkflow(WorkflowType='Fault-tolerant Meshing') - session.meshing.PartManagement.InputFileChanged( + meshing.workflow.InitializeWorkflow(WorkflowType='Fault-tolerant Meshing') + meshing.PartManagement.InputFileChanged( FilePath=import_filename, IgnoreSolidNames=False, PartPerBody=False ) - session.meshing.PMFileManagement.FileManager.LoadFiles() - session.meshing.PartManagement.Node['Meshing Model'].Copy( + 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', @@ -146,10 +146,10 @@ Import CAD and part management '/dirty_manifold-for-wrapper,' + '1/dirty_manifold-for-wrapper,1/object1,1', ] ) - session.meshing.PartManagement.ObjectSetting[ + meshing.PartManagement.ObjectSetting[ 'DefaultObjectSetting' ].OneZonePer.setState('part') - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Import CAD and Part Management' ].Arguments.setState( { @@ -165,24 +165,24 @@ Import CAD and part management }, } ) - session.meshing.workflow.TaskObject['Import CAD and Part Management'].Execute() + meshing.workflow.TaskObject['Import CAD and Part Management'].Execute() Describe geometry and flow ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Describe Geometry and Flow'].Arguments.setState( + meshing.workflow.TaskObject['Describe Geometry and Flow'].Arguments.setState( { 'AddEnclosure': 'No', 'CloseCaps': 'Yes', 'FlowType': 'Internal flow through the object', } ) - session.meshing.workflow.TaskObject['Describe Geometry and Flow'].UpdateChildTasks( + meshing.workflow.TaskObject['Describe Geometry and Flow'].UpdateChildTasks( SetupTypeChanged=False ) - session.meshing.workflow.TaskObject['Describe Geometry and Flow'].Arguments.setState( + meshing.workflow.TaskObject['Describe Geometry and Flow'].Arguments.setState( { 'AddEnclosure': 'No', 'CloseCaps': 'Yes', @@ -193,17 +193,17 @@ Describe geometry and flow 'FlowType': 'Internal flow through the object', } ) - session.meshing.workflow.TaskObject['Describe Geometry and Flow'].UpdateChildTasks( + meshing.workflow.TaskObject['Describe Geometry and Flow'].UpdateChildTasks( SetupTypeChanged=False ) - session.meshing.workflow.TaskObject['Describe Geometry and Flow'].Execute() + meshing.workflow.TaskObject['Describe Geometry and Flow'].Execute() Enclose fluid regions (capping) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState( { @@ -215,7 +215,7 @@ Enclose fluid regions (capping) 'ZoneSelectionList': ['inlet.1'], } ) - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState( { @@ -237,16 +237,16 @@ Enclose fluid regions (capping) 'ZoneSelectionList': ['inlet.1'], } ) - session.meshing.workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildToTask() + meshing.workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildToTask() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].InsertCompoundChildTask() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState({}) - session.meshing.workflow.TaskObject['inlet-1'].Execute() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject['inlet-1'].Execute() + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState( { @@ -255,7 +255,7 @@ Enclose fluid regions (capping) 'ZoneSelectionList': ['inlet.2'], } ) - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState( { @@ -274,16 +274,16 @@ Enclose fluid regions (capping) 'ZoneSelectionList': ['inlet.2'], } ) - session.meshing.workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildToTask() + meshing.workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildToTask() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].InsertCompoundChildTask() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState({}) - session.meshing.workflow.TaskObject['inlet-2'].Execute() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject['inlet-2'].Execute() + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState( { @@ -292,7 +292,7 @@ Enclose fluid regions (capping) 'ZoneSelectionList': ['inlet'], } ) - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState( { @@ -311,16 +311,16 @@ Enclose fluid regions (capping) 'ZoneSelectionList': ['inlet'], } ) - session.meshing.workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildToTask() + meshing.workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildToTask() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].InsertCompoundChildTask() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState({}) - session.meshing.workflow.TaskObject['inlet-3'].Execute() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject['inlet-3'].Execute() + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState( { @@ -330,7 +330,7 @@ Enclose fluid regions (capping) 'ZoneType': 'pressure-outlet', } ) - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState( { @@ -350,48 +350,48 @@ Enclose fluid regions (capping) 'ZoneType': 'pressure-outlet', } ) - session.meshing.workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildToTask() + meshing.workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildToTask() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].InsertCompoundChildTask() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Enclose Fluid Regions (Capping)' ].Arguments.setState({}) - session.meshing.workflow.TaskObject['outlet-1'].Execute() + meshing.workflow.TaskObject['outlet-1'].Execute() Extract edge features ~~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Extract Edge Features'].Arguments.setState( + meshing.workflow.TaskObject['Extract Edge Features'].Arguments.setState( { 'ExtractMethodType': 'Intersection Loops', 'ObjectSelectionList': ['flow_pipe', 'main'], } ) - session.meshing.workflow.TaskObject['Extract Edge Features'].AddChildToTask() + meshing.workflow.TaskObject['Extract Edge Features'].AddChildToTask() - session.meshing.workflow.TaskObject['Extract Edge Features'].InsertCompoundChildTask() + meshing.workflow.TaskObject['Extract Edge Features'].InsertCompoundChildTask() - session.meshing.workflow.TaskObject['edge-group-1'].Arguments.setState( + meshing.workflow.TaskObject['edge-group-1'].Arguments.setState( { 'ExtractEdgesName': 'edge-group-1', 'ExtractMethodType': 'Intersection Loops', 'ObjectSelectionList': ['flow_pipe', 'main'], } ) - session.meshing.workflow.TaskObject['Extract Edge Features'].Arguments.setState({}) + meshing.workflow.TaskObject['Extract Edge Features'].Arguments.setState({}) - session.meshing.workflow.TaskObject['edge-group-1'].Execute() + meshing.workflow.TaskObject['edge-group-1'].Execute() Identify regions ~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Identify Regions'].Arguments.setState( + meshing.workflow.TaskObject['Identify Regions'].Arguments.setState( { 'SelectionType': 'zone', 'X': 377.322045740589, @@ -400,7 +400,7 @@ Identify regions 'ZoneSelectionList': ['main.1'], } ) - session.meshing.workflow.TaskObject['Identify Regions'].Arguments.setState( + meshing.workflow.TaskObject['Identify Regions'].Arguments.setState( { 'SelectionType': 'zone', 'X': 377.322045740589, @@ -419,11 +419,11 @@ Identify regions 'ZoneSelectionList': ['main.1'], } ) - session.meshing.workflow.TaskObject['Identify Regions'].AddChildToTask() + meshing.workflow.TaskObject['Identify Regions'].AddChildToTask() - session.meshing.workflow.TaskObject['Identify Regions'].InsertCompoundChildTask() + meshing.workflow.TaskObject['Identify Regions'].InsertCompoundChildTask() - session.meshing.workflow.TaskObject['fluid-region-1'].Arguments.setState( + meshing.workflow.TaskObject['fluid-region-1'].Arguments.setState( { 'MaterialPointsName': 'fluid-region-1', 'SelectionType': 'zone', @@ -443,10 +443,10 @@ Identify regions 'ZoneSelectionList': ['main.1'], } ) - session.meshing.workflow.TaskObject['Identify Regions'].Arguments.setState({}) + meshing.workflow.TaskObject['Identify Regions'].Arguments.setState({}) - session.meshing.workflow.TaskObject['fluid-region-1'].Execute() - session.meshing.workflow.TaskObject['Identify Regions'].Arguments.setState( + meshing.workflow.TaskObject['fluid-region-1'].Execute() + meshing.workflow.TaskObject['Identify Regions'].Arguments.setState( { 'MaterialPointsName': 'void-region-1', 'NewRegionType': 'void', @@ -456,20 +456,20 @@ Identify regions 'Z': -161.1700719416913, } ) - session.meshing.workflow.TaskObject['Identify Regions'].AddChildToTask() + meshing.workflow.TaskObject['Identify Regions'].AddChildToTask() - session.meshing.workflow.TaskObject['Identify Regions'].InsertCompoundChildTask() + meshing.workflow.TaskObject['Identify Regions'].InsertCompoundChildTask() - session.meshing.workflow.TaskObject['Identify Regions'].Arguments.setState({}) + meshing.workflow.TaskObject['Identify Regions'].Arguments.setState({}) - session.meshing.workflow.TaskObject['void-region-1'].Execute() + meshing.workflow.TaskObject['void-region-1'].Execute() Define leakage threshold ~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Define Leakage Threshold'].Arguments.setState( + meshing.workflow.TaskObject['Define Leakage Threshold'].Arguments.setState( { 'AddChild': 'yes', 'FlipDirection': True, @@ -477,12 +477,12 @@ Define leakage threshold 'RegionSelectionSingle': 'void-region-1', } ) - session.meshing.workflow.TaskObject['Define Leakage Threshold'].AddChildToTask() + meshing.workflow.TaskObject['Define Leakage Threshold'].AddChildToTask() - session.meshing.workflow.TaskObject[ + meshing.workflow.TaskObject[ 'Define Leakage Threshold' ].InsertCompoundChildTask() - session.meshing.workflow.TaskObject['leakage-1'].Arguments.setState( + meshing.workflow.TaskObject['leakage-1'].Arguments.setState( { 'AddChild': 'yes', 'FlipDirection': True, @@ -491,19 +491,19 @@ Define leakage threshold 'RegionSelectionSingle': 'void-region-1', } ) - session.meshing.workflow.TaskObject['Define Leakage Threshold'].Arguments.setState( + meshing.workflow.TaskObject['Define Leakage Threshold'].Arguments.setState( { 'AddChild': 'yes', } ) - session.meshing.workflow.TaskObject['leakage-1'].Execute() + meshing.workflow.TaskObject['leakage-1'].Execute() Update regions settings ~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Update Region Settings'].Arguments.setState( + meshing.workflow.TaskObject['Update Region Settings'].Arguments.setState( { 'AllRegionFilterCategories': ['2'] * 5 + ['1'] * 2, 'AllRegionLeakageSizeList': ['none'] * 6 + ['6.4'], @@ -537,7 +537,7 @@ Update regions settings 'RegionVolumeFillList': ['tet'], } ) - session.meshing.workflow.TaskObject['Update Region Settings'].Execute() + meshing.workflow.TaskObject['Update Region Settings'].Execute() Choose mesh control options @@ -545,46 +545,46 @@ Choose mesh control options .. code:: python - session.meshing.workflow.TaskObject['Choose Mesh Control Options'].Execute() + meshing.workflow.TaskObject['Choose Mesh Control Options'].Execute() Generating surface mesh ~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Generate the Surface Mesh'].Execute() + meshing.workflow.TaskObject['Generate the Surface Mesh'].Execute() Update boundaries ~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Update Boundaries'].Execute() + meshing.workflow.TaskObject['Update Boundaries'].Execute() Add boundary layers ~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Add Boundary Layers'].AddChildToTask() + meshing.workflow.TaskObject['Add Boundary Layers'].AddChildToTask() - session.meshing.workflow.TaskObject['Add Boundary Layers'].InsertCompoundChildTask() + meshing.workflow.TaskObject['Add Boundary Layers'].InsertCompoundChildTask() - session.meshing.workflow.TaskObject['aspect-ratio_1'].Arguments.setState( + meshing.workflow.TaskObject['aspect-ratio_1'].Arguments.setState( { 'BLControlName': 'aspect-ratio_1', } ) - session.meshing.workflow.TaskObject['Add Boundary Layers'].Arguments.setState({}) + meshing.workflow.TaskObject['Add Boundary Layers'].Arguments.setState({}) - session.meshing.workflow.TaskObject['aspect-ratio_1'].Execute() + meshing.workflow.TaskObject['aspect-ratio_1'].Execute() Generate volume mesh ~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.workflow.TaskObject['Generate the Volume Mesh'].Arguments.setState( + meshing.workflow.TaskObject['Generate the Volume Mesh'].Arguments.setState( { 'AllRegionNameList': [ 'main', @@ -600,11 +600,11 @@ Generate volume mesh 'EnableParallel': True, } ) - session.meshing.workflow.TaskObject['Generate the Volume Mesh'].Execute() + meshing.workflow.TaskObject['Generate the Volume Mesh'].Execute() Switch to solution mode ~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python - session.meshing.tui.switch_to_solution_mode('yes') \ No newline at end of file + solver = meshing.switch_to_solver() \ No newline at end of file diff --git a/doc/source/user_guide/models.rst b/doc/source/user_guide/models.rst index 1b15e744f00f..57cad74d11ef 100644 --- a/doc/source/user_guide/models.rst +++ b/doc/source/user_guide/models.rst @@ -22,9 +22,9 @@ Python code for enabling and disabling the energy model. .. code:: python import ansys.fluent.core as pyfluent - session = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") - session.solver.tui.file.read_case(case_file_name='file.cas.h5') - session.solver.tui.define.models.energy('yes', 'no', 'no', 'no', 'yes') + solver = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") + solver.tui.file.read_case(case_file_name='file.cas.h5') + solver.tui.define.models.energy('yes', 'no', 'no', 'no', 'yes') Enabling the viscous model ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -43,9 +43,9 @@ Python code for enabling and disabling the various viscous models. .. code:: python - session.solver.tui.define.models.viscous.laminar('yes') - session.solver.tui.define.models.viscous.kw_sst('yes') - session.solver.tui.define.models.viscous.ke_standard('yes') + solver.tui.define.models.viscous.laminar('yes') + solver.tui.define.models.viscous.kw_sst('yes') + solver.tui.define.models.viscous.ke_standard('yes') Enabling the radiation model ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -63,8 +63,8 @@ Python code for selecting different radiation models. .. code:: python - session.solver.tui.define.models.radiation.s2s('yes') - session.solver.tui.define.models.radiation.p1('yes') + solver.tui.define.models.radiation.s2s('yes') + solver.tui.define.models.radiation.p1('yes') Enabling the multiphase model ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -84,10 +84,10 @@ Python code for selecting different multiphase models. .. code:: python - session.solver.tui.define.models.multiphase.model('vof') - session.solver.tui.define.models.multiphase.model('eulerian') - session.solver.tui.define.models.multiphase.model('mixture') - session.solver.tui.define.models.multiphase.model('wetsteam') + solver.tui.define.models.multiphase.model('vof') + solver.tui.define.models.multiphase.model('eulerian') + solver.tui.define.models.multiphase.model('mixture') + solver.tui.define.models.multiphase.model('wetsteam') Using settings objects ---------------------- @@ -100,7 +100,7 @@ Enabling the energy model .. code:: python - session.solver.setup.models.energy.enabled = True + solver.setup.models.energy.enabled = True Enabling the viscous model ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -109,5 +109,5 @@ Enabling the viscous model .. code:: python - session.solver.setup.models.viscous.k_epsilon_model.enabled = True - session.solver.setup.models.viscous.k_omega_model.enabled = True \ No newline at end of file + solver.setup.models.viscous.k_epsilon_model.enabled = True + solver.setup.models.viscous.k_omega_model.enabled = True \ No newline at end of file diff --git a/doc/source/user_guide/solution.rst b/doc/source/user_guide/solution.rst index 6d0594d096e9..ce3d7331c53d 100644 --- a/doc/source/user_guide/solution.rst +++ b/doc/source/user_guide/solution.rst @@ -29,11 +29,11 @@ the gradient options. Five solution methods (Index-Model) are available: .. code:: python import ansys.fluent.core as pyfluent - session = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") - session.solver.tui.file.read_case(case_file_name='file.cas.h5') - session.solver.tui.solve.set.p_v_coupling(24) # Coupled - session.solver.tui.solve.set.gradient_scheme('yes') # Green-Gauss Node Based - session.solver.tui.solve.set.gradient_scheme('no','yes') # Least Squares Cell Based + solver = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") + solver.tui.file.read_case(case_file_name='file.cas.h5') + solver.tui.solve.set.p_v_coupling(24) # Coupled + solver.tui.solve.set.gradient_scheme('yes') # Green-Gauss Node Based + solver.tui.solve.set.gradient_scheme('no','yes') # Least Squares Cell Based Selecting solution controls ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -50,7 +50,7 @@ Python code for selecting the pressure velocity controls. .. code:: python - session.solver.tui.solve.set.p_v_controls(0.3,0.4) # Momentum and Pressure + solver.tui.solve.set.p_v_controls(0.3,0.4) # Momentum and Pressure Creating report definitions ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -67,7 +67,7 @@ Python code for creating report definitions. .. code:: python - session.solver.tui.solve.report_definitions.add( + solver.tui.solve.report_definitions.add( 'outlet-temp-avg', 'surface-massavg', 'field', @@ -94,8 +94,8 @@ Python code for initializing and performing a specified number of iterations. .. code:: python - session.solver.tui.solve.initialize.hyb_initialization() - session.solver.tui.solve.iterate(100) + solver.tui.solve.initialize.hyb_initialization() + solver.tui.solve.iterate(100) Using settings objects ---------------------- @@ -106,5 +106,5 @@ using :ref:`ref_settings`. .. code:: python - session.solver.solution.initialization.hybrid_initialize() - session.solver.solution.run_calculation.iterate(number_of_iterations=150) + solver.solution.initialization.hybrid_initialize() + solver.solution.run_calculation.iterate(number_of_iterations=150) diff --git a/doc/source/user_guide/solver_settings.rst b/doc/source/user_guide/solver_settings.rst index 33358b2624ae..0a85a0e26591 100644 --- a/doc/source/user_guide/solver_settings.rst +++ b/doc/source/user_guide/solver_settings.rst @@ -25,10 +25,10 @@ Python code for enabling and disabling the steady and unsteady solution model. .. code:: python import ansys.fluent.core as pyfluent - session = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") - session.solver.tui.file.read_case(case_file_name='file.cas.h5') - session.solver.tui.define.models.steady('yes') - session.solver.tui.define.models.unsteady_1st_order('yes') + solver = pyfluent.launch_fluent(precision='double', processor_count=2, mode="solver") + solver.tui.file.read_case(case_file_name='file.cas.h5') + solver.tui.define.models.steady('yes') + solver.tui.define.models.unsteady_1st_order('yes') Selecting a pressure-based or density-based solver -------------------------------------------------- @@ -48,9 +48,9 @@ models. .. code:: python - session.solver.tui.define.models.solver.density_based_explicit('yes') - session.solver.tui.define.models.solver.density_based_implicit('yes') - session.solver.tui.define.models.solver.pressure_based('yes') + solver.tui.define.models.solver.density_based_explicit('yes') + solver.tui.define.models.solver.density_based_implicit('yes') + solver.tui.define.models.solver.pressure_based('yes') Defining gravitational acceleration ----------------------------------- @@ -67,4 +67,4 @@ Python code for settings the gravitational acceleration .. code:: python - session.solver.tui.define.operating_conditions.gravity('yes','0','-9.81','0') + solver.tui.define.operating_conditions.gravity('yes','0','-9.81','0') diff --git a/src/ansys/fluent/core/session.py b/src/ansys/fluent/core/session.py index cb60cfab00b0..92b0c2f9f499 100644 --- a/src/ansys/fluent/core/session.py +++ b/src/ansys/fluent/core/session.py @@ -369,7 +369,7 @@ def create_from_server_info_file( server_info_filepath: str, cleanup_on_exit: bool = True, start_transcript: bool = True, - ) -> "BaseSession": + ): """Create a Session instance from server-info file. Parameters @@ -392,7 +392,7 @@ def create_from_server_info_file( Session instance """ ip, port, password = parse_server_info_file(server_info_filepath) - session = BaseSession( + session = cls( ip=ip, port=port, password=password, diff --git a/src/ansys/fluent/core/session_meshing.py b/src/ansys/fluent/core/session_meshing.py index cf8ec287a768..2b92ae37d86b 100644 --- a/src/ansys/fluent/core/session_meshing.py +++ b/src/ansys/fluent/core/session_meshing.py @@ -1,26 +1,13 @@ """Module containing class encapsulating Fluent connection.""" import grpc -from ansys.fluent.core.services.datamodel_se import PyMenuGeneric -from ansys.fluent.core.services.datamodel_tui import TUIMenuGeneric -from ansys.fluent.core.session import ( - _CODEGEN_MSG_TUI, - BaseSession, - parse_server_info_file, -) +from ansys.fluent.core.session_pure_meshing import PureMeshing from ansys.fluent.core.session_solver import Solver -from ansys.fluent.core.utils.logging import LOG -_CODEGEN_MSG_DATAMODEL = ( - "Currently calling the datamodel API in a generic manner. " - "Please run `python codegen/allapigen.py` from the top-level pyfluent " - "directory to generate the local datamodel API classes." -) - -class Meshing(BaseSession): +class Meshing(PureMeshing): """Encapsulates a Fluent - Meshing session connection. - Meshing(Session) holds the top-level objects + Meshing(PureMeshing) holds the top-level objects for meshing TUI and various meshing datamodel API calls.""" def __init__( @@ -44,54 +31,9 @@ def __init__( remote_instance=remote_instance, fluent_connection=fluent_connection, ) - self._tui_service = self.fluent_connection.datamodel_service_tui - self._se_service = self.fluent_connection.datamodel_service_se - self._tui = None - self._meshing = None - self._workflow = None - self._part_management = None - self._pm_file_management = None self.solver_switch = False - @classmethod - def create_from_server_info_file( - cls, - server_info_filepath: str, - cleanup_on_exit: bool = True, - start_transcript: bool = True, - ) -> "Meshing": - """Create a Session instance from server-info file. - - Parameters - ---------- - server_info_filepath : str - Path to server-info file written out by Fluent server - cleanup_on_exit : bool, optional - When True, the connected Fluent session will be shut down - when PyFluent is exited or exit() is called on the session - instance, by default True. - start_transcript : bool, optional - The Fluent transcript is started in the client only when - start_transcript is True. It can be started and stopped - subsequently via method calls on the Session object. - Defaults to true. - - Returns - ------- - Session - Session instance - """ - ip, port, password = parse_server_info_file(server_info_filepath) - meshing_session = Meshing( - ip=ip, - port=port, - password=password, - cleanup_on_exit=cleanup_on_exit, - start_transcript=start_transcript, - ) - return meshing_session - @property def tui(self): """Instance of ``main_menu`` on which Fluent's SolverTUI methods can be @@ -100,15 +42,7 @@ def tui(self): raise AttributeError( "Mesh-Session-specific attributes are not available in Solver-Session" ) - if self._tui is None: - try: - from ansys.fluent.core.meshing.tui import main_menu as MeshingMainMenu - - self._tui = MeshingMainMenu([], self._tui_service) - except (ImportError, ModuleNotFoundError): - LOG.warning(_CODEGEN_MSG_TUI) - self._tui = TUIMenuGeneric([], self._tui_service) - return self._tui + return super().tui @property def meshing(self): @@ -117,15 +51,7 @@ def meshing(self): raise AttributeError( "Mesh-Session-specific attributes are not available in Solver-Session" ) - if self._meshing is None: - try: - from ansys.fluent.core.datamodel.meshing import Root as meshing_root - - self._meshing = meshing_root(self._se_service, "meshing", []) - except (ImportError, ModuleNotFoundError): - LOG.warning(_CODEGEN_MSG_DATAMODEL) - self._meshing = PyMenuGeneric(self._se_service, "meshing") - return self._meshing + return super().meshing @property def workflow(self): @@ -134,15 +60,7 @@ def workflow(self): raise AttributeError( "Mesh-Session-specific attributes are not available in Solver-Session" ) - if self._workflow is None: - try: - from ansys.fluent.core.datamodel.workflow import Root as workflow_root - - self._workflow = workflow_root(self._se_service, "workflow", []) - except (ImportError, ModuleNotFoundError): - LOG.warning(_CODEGEN_MSG_DATAMODEL) - self._workflow = PyMenuGeneric(self._se_service, "workflow") - return self._workflow + return super().workflow @property def PartManagement(self): @@ -151,21 +69,7 @@ def PartManagement(self): raise AttributeError( "Mesh-Session-specific attributes are not available in Solver-Session" ) - if self._part_management is None: - try: - from ansys.fluent.core.datamodel.PartManagement import ( - Root as PartManagement_root, - ) - - self._part_management = PartManagement_root( - self._se_service, "PartManagement", [] - ) - except (ImportError, ModuleNotFoundError): - LOG.warning(_CODEGEN_MSG_DATAMODEL) - self._part_management = PyMenuGeneric( - self._se_service, "PartManagement" - ) - return self._part_management + return super().PartManagement @property def PMFileManagement(self): @@ -174,21 +78,7 @@ def PMFileManagement(self): raise AttributeError( "Mesh-Session-specific attributes are not available in Solver-Session" ) - if self._pm_file_management is None: - try: - from ansys.fluent.core.datamodel.PMFileManagement import ( - Root as PMFileManagement_root, - ) - - self._pm_file_management = PMFileManagement_root( - self._se_service, "PMFileManagement", [] - ) - except (ImportError, ModuleNotFoundError): - LOG.warning(_CODEGEN_MSG_DATAMODEL) - self._pm_file_management = PyMenuGeneric( - self._se_service, "PMFileManagement" - ) - return self._pm_file_management + return super().PMFileManagement def switch_to_solver(self): """A switch to move to the solver session from meshing.""" diff --git a/src/ansys/fluent/core/session_pure_meshing.py b/src/ansys/fluent/core/session_pure_meshing.py index 774a21b20d43..e65546660ad6 100644 --- a/src/ansys/fluent/core/session_pure_meshing.py +++ b/src/ansys/fluent/core/session_pure_meshing.py @@ -7,22 +7,16 @@ from ansys.fluent.core.services.datamodel_se import PyMenuGeneric from ansys.fluent.core.services.datamodel_tui import TUIMenuGeneric from ansys.fluent.core.session import ( + _CODEGEN_MSG_DATAMODEL, _CODEGEN_MSG_TUI, BaseSession, - parse_server_info_file, ) from ansys.fluent.core.utils.logging import LOG -_CODEGEN_MSG_DATAMODEL = ( - "Currently calling the datamodel API in a generic manner. " - "Please run `python codegen/allapigen.py` from the top-level pyfluent " - "directory to generate the local datamodel API classes." -) - class PureMeshing(BaseSession): """Encapsulates a Fluent - Pure Meshing session connection. - PureMeshing(Session) holds the top-level objects + PureMeshing(BaseSession) holds the top-level objects for meshing TUI and various meshing datamodel API calls.""" def __init__( @@ -54,44 +48,6 @@ def __init__( self._part_management = None self._pm_file_management = None - @classmethod - def create_from_server_info_file( - cls, - server_info_filepath: str, - cleanup_on_exit: bool = True, - start_transcript: bool = True, - ) -> "PureMeshing": - """Create a Session instance from server-info file. - - Parameters - ---------- - server_info_filepath : str - Path to server-info file written out by Fluent server - cleanup_on_exit : bool, optional - When True, the connected Fluent session will be shut down - when PyFluent is exited or exit() is called on the session - instance, by default True. - start_transcript : bool, optional - The Fluent transcript is started in the client only when - start_transcript is True. It can be started and stopped - subsequently via method calls on the Session object. - Defaults to true. - - Returns - ------- - Session - Session instance - """ - ip, port, password = parse_server_info_file(server_info_filepath) - meshing_session = PureMeshing( - ip=ip, - port=port, - password=password, - cleanup_on_exit=cleanup_on_exit, - start_transcript=start_transcript, - ) - return meshing_session - @property def tui(self): """Instance of ``main_menu`` on which Fluent's SolverTUI methods can be diff --git a/src/ansys/fluent/core/session_solver.py b/src/ansys/fluent/core/session_solver.py index 334b5d11006e..b369257e7f71 100644 --- a/src/ansys/fluent/core/session_solver.py +++ b/src/ansys/fluent/core/session_solver.py @@ -2,11 +2,7 @@ import grpc from ansys.fluent.core.services.datamodel_tui import TUIMenuGeneric -from ansys.fluent.core.session import ( - _CODEGEN_MSG_TUI, - BaseSession, - parse_server_info_file, -) +from ansys.fluent.core.session import _CODEGEN_MSG_TUI, BaseSession from ansys.fluent.core.solver.flobject import get_root as settings_get_root from ansys.fluent.core.utils.logging import LOG @@ -42,44 +38,6 @@ def __init__( self._tui = None self._settings_root = None - @classmethod - def create_from_server_info_file( - cls, - server_info_filepath: str, - cleanup_on_exit: bool = True, - start_transcript: bool = True, - ) -> "Solver": - """Create a Session instance from server-info file. - - Parameters - ---------- - server_info_filepath : str - Path to server-info file written out by Fluent server - cleanup_on_exit : bool, optional - When True, the connected Fluent session will be shut down - when PyFluent is exited or exit() is called on the session - instance, by default True. - start_transcript : bool, optional - The Fluent transcript is started in the client only when - start_transcript is True. It can be started and stopped - subsequently via method calls on the Session object. - Defaults to true. - - Returns - ------- - Session - Session instance - """ - ip, port, password = parse_server_info_file(server_info_filepath) - solver_session = Solver( - ip=ip, - port=port, - password=password, - cleanup_on_exit=cleanup_on_exit, - start_transcript=start_transcript, - ) - return solver_session - @property def tui(self): """Instance of ``main_menu`` on which Fluent's SolverTUI methods can be diff --git a/src/ansys/fluent/core/session_solver_lite.py b/src/ansys/fluent/core/session_solver_lite.py index fad215ff4c03..645a0f79476f 100644 --- a/src/ansys/fluent/core/session_solver_lite.py +++ b/src/ansys/fluent/core/session_solver_lite.py @@ -4,18 +4,10 @@ """ import grpc -from ansys.fluent.core.services.datamodel_tui import TUIMenuGeneric -from ansys.fluent.core.session import ( - _CODEGEN_MSG_TUI, - BaseSession, - parse_server_info_file, -) from ansys.fluent.core.session_solver import Solver -from ansys.fluent.core.solver.flobject import get_root as settings_get_root -from ansys.fluent.core.utils.logging import LOG -class SolverLite(BaseSession): +class SolverLite(Solver): """Encapsulates a Fluent - Solver(Lite) session connection. SolverLite(Session) holds the top-level objects for solver TUI and settings objects calls.""" @@ -46,64 +38,7 @@ def __init__( self._tui = None self._settings_root = None - @classmethod - def create_from_server_info_file( - cls, - server_info_filepath: str, - cleanup_on_exit: bool = True, - start_transcript: bool = True, - ) -> "SolverLite": - """Create a Session instance from server-info file. - - Parameters - ---------- - server_info_filepath : str - Path to server-info file written out by Fluent server - cleanup_on_exit : bool, optional - When True, the connected Fluent session will be shut down - when PyFluent is exited or exit() is called on the session - instance, by default True. - start_transcript : bool, optional - The Fluent transcript is started in the client only when - start_transcript is True. It can be started and stopped - subsequently via method calls on the Session object. - Defaults to true. - - Returns - ------- - Session - Session instance - """ - ip, port, password = parse_server_info_file(server_info_filepath) - solver_session = SolverLite( - ip=ip, - port=port, - password=password, - cleanup_on_exit=cleanup_on_exit, - start_transcript=start_transcript, - ) - return solver_session - - @property - def tui(self): - """Instance of ``main_menu`` on which Fluent's SolverTUI methods can be - executed.""" - if self._tui is None: - try: - from ansys.fluent.core.solver.tui import main_menu as SolverMainMenu - - self._tui = SolverMainMenu([], self._tui_service) - except (ImportError, ModuleNotFoundError): - LOG.warning(_CODEGEN_MSG_TUI) - self._tui = TUIMenuGeneric([], self._tui_service) - return self._tui - - @property - def root(self): - """root settings object.""" - if self._settings_root is None: - self._settings_root = settings_get_root(flproxy=self._settings_service) - return self._settings_root + # One can inherit methods from 'Solver' and re-define it here to make it unavailable in solver-Lite def switch_to_full_solver(self): """A switch to move to the full-solver session from solver-lite."""