diff --git a/doc/source/cheatsheet/cheat_sheet.qmd b/doc/source/cheatsheet/cheat_sheet.qmd index 3dc3d93f0fe9..35a06209a724 100644 --- a/doc/source/cheatsheet/cheat_sheet.qmd +++ b/doc/source/cheatsheet/cheat_sheet.qmd @@ -65,8 +65,8 @@ solver = pyfluent.launch_fluent( ```{python} fluent = pyfluent.connect_to_fluent( - ip="127.0.0.1", - port=50000, + ip="127.0.0.1", + port=50000, password="abcdefg") ``` @@ -392,7 +392,7 @@ solution.run_calculation.iterate(iter_count=100) from ansys.fluent.core import examples from ansys.fluent.core.filereader.case_file import CaseFile case_file_name = examples.download_file( - "Static_Mixer_Parameters.cas.h5", + "Static_Mixer_Parameters.cas.h5", "pyfluent/static_mixer") reader = CaseFile(case_file_name=case_file_name) reader.precision() @@ -432,7 +432,7 @@ from ansys.fluent.core.filereader.data_file import DataFile from ansys.fluent.core.filereader.case_file import CaseFile data_file_name = examples.download_file("elbow1.dat.h5", "pyfluent/file_session") reader = DataFile( - data_file_name=data_file_name, + data_file_name=data_file_name, case_file_handle=CaseFile(case_file_name)) reader.case_file reader.variables() @@ -461,10 +461,10 @@ fs.fields.field_info.get_scalar_fields_info() from ansys.fluent.core import examples from ansys.fluent.core.file_session import FileSession case_file_name = examples.download_file( - "mixing_elbow_mul_ph.cas.h5", + "mixing_elbow_mul_ph.cas.h5", "pyfluent/file_session") data_file_name = examples.download_file( - "mixing_elbow_mul_ph.dat.h5", + "mixing_elbow_mul_ph.dat.h5", "pyfluent/file_session") fs = FileSession() fs.read_case(case_file_name) @@ -525,11 +525,11 @@ velocity_vector.display("w3") import ansys.fluent.core as pyfluent from ansys.fluent.core import examples case_path = examples.download_file( - file_name="exhaust_system.cas.h5", + file_name="exhaust_system.cas.h5", directory="pyfluent/exhaust_system" ) data_path = examples.download_file( - file_name="exhaust_system.dat.h5", + file_name="exhaust_system.dat.h5", directory="pyfluent/exhaust_system" ) solver = pyfluent.launch_fluent( @@ -545,13 +545,13 @@ field_data = solver.fields.field_data ```{python} from ansys.fluent.core.services.field_data import SurfaceDataType data = field_data.get_surface_data( - surfaces=["inlet"], + surfaces=["inlet"], data_types=[SurfaceDataType.Vertices] ) data["inlet"][SurfaceDataType.Vertices].shape data["inlet"][SurfaceDataType.Vertices][5] faces_normal_and_centroid_data = field_data.get_surface_data( - data_types=[SurfaceDataType.FacesNormal, + data_types=[SurfaceDataType.FacesNormal, SurfaceDataType.FacesCentroid], surfaces=["inlet"] ) @@ -559,7 +559,7 @@ inlet = faces_normal_and_centroid_data["inlet"] inlet[SurfaceDataType.FacesNormal].shape inlet[SurfaceDataType.FacesCentroid][15] faces_connectivity_data = field_data.get_surface_data( - data_types=[SurfaceDataType.FacesConnectivity], + data_types=[SurfaceDataType.FacesConnectivity], surfaces=["inlet"] ) inlet = faces_connectivity_data["inlet"] @@ -570,7 +570,7 @@ inlet[SurfaceDataType.FacesConnectivity][5] ```{python} abs_press_data = field_data.get_scalar_field_data( - field_name="absolute-pressure", + field_name="absolute-pressure", surfaces=["inlet"] ) abs_press_data["inlet"].shape @@ -581,7 +581,7 @@ abs_press_data["inlet"][120] ```{python} velocity_vector_data = field_data.get_vector_field_data( - field_name="velocity", + field_name="velocity", surfaces=["inlet", "inlet1"] ) velocity_vector_data["inlet"].shape @@ -592,7 +592,7 @@ velocity_vector_data["inlet1"].shape ```{python} path_lines_data = field_data.get_pathlines_field_data( - field_name="velocity", + field_name="velocity", surfaces=["inlet"] ) path_lines_data["inlet"]["vertices"].shape @@ -638,10 +638,10 @@ solver1 = pyfluent.launch_fluent( mode=pyfluent.FluentMode.SOLVER ) case_path = download_file( - file_name="exhaust_system.cas.h5", + file_name="exhaust_system.cas.h5", directory="pyfluent/exhaust_system") data_path = download_file( - file_name="exhaust_system.dat.h5", + file_name="exhaust_system.dat.h5", directory="pyfluent/exhaust_system") solver1.settings.file.read_case_data( file_name=case_path @@ -651,11 +651,11 @@ solver2 = pyfluent.launch_fluent( mode=pyfluent.FluentMode.SOLVER ) case_path = download_file( - "elbow1.cas.h5", + "elbow1.cas.h5", "pyfluent/file_session" ) data_path = download_file( - "elbow1.dat.h5", + "elbow1.dat.h5", "pyfluent/file_session" ) solver2.settings.file.read_case_data( @@ -676,7 +676,7 @@ solver.fields.reduction.area( locations=[inlet["inlet1"]] ) solver.fields.reduction.area( - locations=["inlet1"], + locations=["inlet1"], ctxt=solver) ``` @@ -767,7 +767,7 @@ zone_info.zone_type ```{python} wall_fluid_info = solution_variable_info.get_variables_info( - zone_names=['wall' , "fluid"], + zone_names=['wall' , "fluid"], domain_name="mixture") wall_fluid_info.solution_variables solution_variable_info_centroid = wall_fluid_info['SV_CENTROID'] @@ -782,7 +782,7 @@ solution_variable_info_centroid.field_type ```{python} sv_t_wall_fluid= solution_variable_data.get_data( variable_name="SV_T", - zone_names=["fluid", "wall"], + zone_names=["fluid", "wall"], domain_name="mixture") sv_t_wall_fluid.domain sv_t_wall_fluid.zones @@ -814,14 +814,14 @@ solution_variable_data.set_data( transaction = solver.fields.field_data.new_transaction() transaction.add_surfaces_request( - surfaces=[1], - data_types=[SurfaceDataType.Vertices, + surfaces=[1], + data_types=[SurfaceDataType.Vertices, SurfaceDataType.FacesCentroid] ) transaction.add_scalar_fields_request( - surfaces=[1, 2], - field_name="pressure", - node_value=True, + surfaces=[1, 2], + field_name="pressure", + node_value=True, boundary_value=True ) transaction.add_vector_fields_request( @@ -862,11 +862,11 @@ import_case = examples.download_file( import_data = examples.download_file( file_name="exhaust_system.dat.h5", directory="pyfluent/exhaust_system" ) -solver.file.read_case_data(file_name=import_case) +solver.settings.file.read_case_data(file_name=import_case) # check the active report plot monitors using the settings relevant object solver.settings.solution.monitor.report_plots() # initialize so that monitors object is usable -solver.solution.initialization.hybrid_initialize() +solver.settings.solution.initialization.hybrid_initialize() # check which monitors are available sorted(solver.monitors.get_monitor_set_names()) # create and register a callback function that will @@ -896,7 +896,7 @@ def display_monitor_table( register_id = solver.monitors.register_callback( display_monitor_table()) # run the solver and see the full tabulated monitor data on each iteration -solver.solution.run_calculation.iterate( +solver.settings.solution.run_calculation.iterate( iter_count=10) ``` @@ -969,21 +969,21 @@ from ansys.fluent.core import examples from ansys.fluent.core.utils.file_transfer_service import StandaloneFileTransferStrategy mesh_file_name = examples.download_file( - "mixing_elbow.msh.h5", + "mixing_elbow.msh.h5", "pyfluent/mixing_elbow") meshing_session = pyfluent.launch_fluent( - mode=pyfluent.FluentMode.MESHING, + mode=pyfluent.FluentMode.MESHING, file_transfer_service= StandaloneFileTransferStrategy()) meshing_session.upload( - file_name=mesh_file_name, + file_name=mesh_file_name, remote_file_name="elbow.msh.h5") meshing_session.meshing.File.ReadMesh( FileName="elbow.msh.h5") meshing_session.meshing.File.WriteMesh( FileName="write_elbow.msh.h5") meshing_session.download( - file_name="write_elbow.msh.h5", + file_name="write_elbow.msh.h5", local_directory="") ``` @@ -995,21 +995,21 @@ from ansys.fluent.core import examples from ansys.fluent.core.utils.file_transfer_service import ContainerFileTransferStrategy case_file_name = examples.download_file( - "mixing_elbow.cas.h5", + "mixing_elbow.cas.h5", "pyfluent/mixing_elbow") solver_session = pyfluent.launch_fluent( - mode=pyfluent.FluentMode.SOLVER, + mode=pyfluent.FluentMode.SOLVER, file_transfer_service= ContainerFileTransferStrategy()) solver_session.upload( - file_name=case_file_name, + file_name=case_file_name, remote_file_name="elbow.cas.h5") -solver_session.file.read_case( +solver_session.settings.file.read_case( file_name="elbow.cas.h5") -solver_session.file.write_case( +solver_session.settings.file.write_case( file_name="write_elbow.cas.h5") solver_session.download( - file_name="write_elbow.cas.h5", + file_name="write_elbow.cas.h5", local_directory="") ``` @@ -1044,7 +1044,7 @@ import ansys.fluent.core as pyfluent pyfluent.search("font") # Whole word search -pyfluent.search("ApplicationFontSize", +pyfluent.search("ApplicationFontSize", match_whole_word=True) # Wildcard pattern search @@ -1081,8 +1081,8 @@ import ansys.fluent.core as pyfluent os.environ["ANSYSLMD_LICENSE_FILE"] = "" custom_config = { - 'fluent_image': 'ansys_inc:latest', - 'mount_source': f"{os.getcwd()}", + 'fluent_image': 'ansys_inc:latest', + 'mount_source': f"{os.getcwd()}", 'auto_remove': False} solver = pyfluent.launch_fluent( diff --git a/doc/source/user_guide/fields/reduction.rst b/doc/source/user_guide/fields/reduction.rst index 054ef80d023e..ccb23e218a87 100644 --- a/doc/source/user_guide/fields/reduction.rst +++ b/doc/source/user_guide/fields/reduction.rst @@ -251,7 +251,7 @@ Functional: >>> reduction.area_average( ... expression=VariableCatalog.ABSOLUTE_PRESSURE, - ... locations=solver_session.setup.boundary_conditions.velocity_inlet, + ... locations=solver_session.settings.setup.boundary_conditions.velocity_inlet, ... ) 101957.2452989816 @@ -271,8 +271,8 @@ Object-Oriented: >>> reduction.minimum( ... expression=VariableCatalog.ABSOLUTE_PRESSURE, - ... locations=solver1.setup.boundary_conditions.pressure_outlet - ... + solver2.setup.boundary_conditions.pressure_outlet, + ... locations=solver1.settings.setup.boundary_conditions.pressure_outlet + ... + solver2.settings.setup.boundary_conditions.pressure_outlet, ... ) 101325.0 diff --git a/doc/source/user_guide/file_transfer.rst b/doc/source/user_guide/file_transfer.rst index de1ded3ac963..09b7dee8dcb7 100644 --- a/doc/source/user_guide/file_transfer.rst +++ b/doc/source/user_guide/file_transfer.rst @@ -3,15 +3,15 @@ File transfer ============= -PyFluent provides a file transfer service that manages how files are uploaded to and downloaded from the Fluent server. -This service allows file-based API methods like `read_case()` and `write_mesh()` to work seamlessly—even when Fluent is running remotely, +PyFluent provides a file transfer service that manages how files are uploaded to and downloaded from the Fluent server. +This service allows file-based API methods like `read_case()` and `write_mesh()` to work seamlessly—even when Fluent is running remotely, in a container, or in a PIM-managed environment. Depending on how Fluent is launched, different file transfer strategies are available: 1. **PIM file transfer service** - When launching Fluent through the `Product Instance Management (PIM) `_ file transfer is fully automated. + When launching Fluent through the `Product Instance Management (PIM) `_ file transfer is fully automated. You don’t need to call `upload()` or `download()`—files are transferred transparently when you use file-based API methods. Use this service when: @@ -29,13 +29,13 @@ Depending on how Fluent is launched, different file transfer strategies are avai >>> case_file = examples.download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") >>> session = pyfluent.launch_fluent() - >>> session.file.read_case(file_name=case_file) - >>> session.file.write_case(file_name="write_mixing_elbow.cas.h5") + >>> session.settings.file.read_case(file_name=case_file) + >>> session.settings.file.write_case(file_name="write_mixing_elbow.cas.h5") 2. **Container file transfer service** - When Fluent runs in a Docker container, files cannot be shared directly between client and server. + When Fluent runs in a Docker container, files cannot be shared directly between client and server. The remote file transfer service uses a gRPC-based mechanism to manage transfers. Use this service when: @@ -56,13 +56,13 @@ Depending on how Fluent is launched, different file transfer strategies are avai >>> file_transfer_service = ContainerFileTransferStrategy() >>> container_dict = {"mount_source": file_transfer_service.mount_source} >>> session = pyfluent.launch_fluent(file_transfer_service=file_transfer_service, container_dict=container_dict) - >>> session.file.read_case(file_name=case_file) - >>> session.file.write_case(file_name="write_mixing_elbow.cas.h5") + >>> session.settings.file.read_case(file_name=case_file) + >>> session.settings.file.write_case(file_name="write_mixing_elbow.cas.h5") 3. **Standalone file transfer service** - When Fluent is launched in standalone mode on the same machine as the Python client, files can be accessed directly from the local file system. + When Fluent is launched in standalone mode on the same machine as the Python client, files can be accessed directly from the local file system. In this case, the local file transfer service is used. Use this service when: diff --git a/doc/source/user_guide/monitors.rst b/doc/source/user_guide/monitors.rst index be24bfe55167..3fc8e66fb616 100644 --- a/doc/source/user_guide/monitors.rst +++ b/doc/source/user_guide/monitors.rst @@ -6,7 +6,7 @@ Using monitors Monitors in PyFluent allow you to dynamically observe the convergence of your solution by tracking the values of solution variables and residuals. They enable you to visualize the progress of the solver, helping ensure that -the solution is progressing as expected and allowing you to diagnose issues +the solution is progressing as expected and allowing you to diagnose issues early on. You can integrate PyFluent's monitor callback mechanism with visualization @@ -49,7 +49,7 @@ callback mechanism to perform a simple tabulation of monitored values per iterat >>> "point-vel-rplot", >>> "residual" >>> ] - >>> # create and register a callback function that will + >>> # create and register a callback function that will >>> def display_monitor_table(monitor_set_name="mass-bal-rplot"): >>> def display_table(): >>> data = solver_session.monitors.get_monitor_set_data(monitor_set_name=monitor_set_name) @@ -73,4 +73,4 @@ callback mechanism to perform a simple tabulation of monitored values per iterat >>> >>> register_id = solver_session.monitors.register_callback(display_monitor_table()) >>> # run the solver and see the full tabulated monitor data on each iteration - >>> solver_session.solution.run_calculation.iterate(iter_count=10) + >>> solver_session.settings.solution.run_calculation.iterate(iter_count=10) diff --git a/doc/source/user_guide/physical_variables.rst b/doc/source/user_guide/physical_variables.rst index 1b76da1efeb4..d5e52d740505 100644 --- a/doc/source/user_guide/physical_variables.rst +++ b/doc/source/user_guide/physical_variables.rst @@ -32,7 +32,7 @@ Here’s how to use ``VariableCatalog`` to read and reduce field data using unit solver_session = launch_fluent() case_path = examples.download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") - solver_session.file.read(file_type="case", file_name=case_path) + solver_session.settings.file.read(file_type="case", file_name=case_path) solver_session.settings.solution.initialization.hybrid_initialize() @@ -67,7 +67,7 @@ You can also use physical quantities in report definitions to improve clarity an surface_report.field = temperature # Note: using VariableCatalog, not a string surface_report.surface_names = locations - result = solver_session.solution.report_definitions.compute(report_defs=["avg_temp"]) + result = solver_session.settings.solution.report_definitions.compute(report_defs=["avg_temp"]) print(result[0]["avg_temp"][0]) Notes diff --git a/doc/source/user_guide/session/launching_ansys_fluent.rst b/doc/source/user_guide/session/launching_ansys_fluent.rst index bbac748e0d32..f657709d6cf3 100644 --- a/doc/source/user_guide/session/launching_ansys_fluent.rst +++ b/doc/source/user_guide/session/launching_ansys_fluent.rst @@ -3,12 +3,12 @@ Launching and connecting to Fluent ================================== -This document provides a comprehensive guide for launching and connecting to Ansys Fluent sessions using PyFluent, the Python interface for Fluent. -It covers multiple methods to start Fluent, including launching from a local installation, containerized environments (Docker or Podman), and connecting +This document provides a comprehensive guide for launching and connecting to Ansys Fluent sessions using PyFluent, the Python interface for Fluent. +It covers multiple methods to start Fluent, including launching from a local installation, containerized environments (Docker or Podman), and connecting to existing Fluent sessions. Detailed examples illustrate how to initialize Fluent in various modes such as meshing, solution, and pre/post processing. -Additionally, the guide explains advanced launching options such as setting precision, dimensions, and parallel execution configurations. -It also covers integration with job schedulers like Slurm, enabling efficient high-performance computing workflows. +Additionally, the guide explains advanced launching options such as setting precision, dimensions, and parallel execution configurations. +It also covers integration with job schedulers like Slurm, enabling efficient high-performance computing workflows. Furthermore, instructions for launching Fluent within PIM environments and detailed procedures for cross-platform remote connections and file transfers between Windows, Linux, and WSL hosts are provided. This reference aims to equip users with the knowledge and tools required to flexibly and efficiently manage Fluent sessions in diverse computing environments. @@ -35,7 +35,7 @@ Use this method when: solver = pyfluent.Solver.from_install() solver_aero = pyfluent.SolverAero.from_install() solver_icing = pyfluent.SolverIcing.from_install() - pre_post = pyfluent.PrePost.from_install() + pre_post = pyfluent.PrePost.from_install() Launch in a container @@ -120,7 +120,7 @@ Use this method when: solver = pyfluent.Solver.from_pim() solver_aero = pyfluent.SolverAero.from_pim() solver_icing = pyfluent.SolverIcing.from_pim() - pre_post = pyfluent.PrePost.from_pim() + pre_post = pyfluent.PrePost.from_pim() .. vale Google.Spacing = YES @@ -173,7 +173,7 @@ These two examples show equivalent ways to launch Fluent in solution mode: .. code:: python >>> solver_session = pyfluent.launch_fluent(mode=pyfluent.FluentMode.SOLVER) - + .. code:: python @@ -409,9 +409,9 @@ using the ``additional_arguments`` parameter for distributed parallel processing Launching a `PIM `_ session --------------------------------------------------------------------------- -When PyFluent is used within a `PIM `_ configured environment, -the :func:`launch_fluent() ` function automatically launches -Fluent session in `PIM `_ mode and in that same environment it +When PyFluent is used within a `PIM `_ configured environment, +the :func:`launch_fluent() ` function automatically launches +Fluent session in `PIM `_ mode and in that same environment it can be launched explicitly using :func:`create_launcher() ` as follows: .. code:: python @@ -458,7 +458,7 @@ Launch Fluent in container mode via PyFluent: >>> from ansys.fluent.core import examples >>> solver_session = pyfluent.launch_fluent(start_container=True, use_docker_compose=True) >>> case_file_name = examples.download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") - >>> solver_session.file.read(file_name=case_file_name, file_type="case") + >>> solver_session.settings.file.read(file_name=case_file_name, file_type="case") >>> solver_session.exit() @@ -503,7 +503,7 @@ Connecting to a Fluent container running inside Linux from a Windows host Connecting to Fluent on Windows from a Linux or WSL host -------------------------------------------------------- -This guide describes how to connect to an ANSYS Fluent instance running on a Windows machine from a Linux or WSL host. +This guide describes how to connect to an ANSYS Fluent instance running on a Windows machine from a Linux or WSL host. It also includes steps to enable remote file transfer. Prerequisites: @@ -527,7 +527,7 @@ A. **Set Up Fluent and File Transfer Server on Windows** 2. **Retrieve Connection Details** - Get the IP address, port, and password from the `server_info.txt` file. + Get the IP address, port, and password from the `server_info.txt` file. Example: - IP: ``10.18.44.179`` - Port: ``51344`` @@ -569,16 +569,16 @@ Run the following Python code to connect to Fluent and transfer files: solver_session = connect_to_fluent(ip="10.18.44.179", port=51344, password="5scj6c8l", file_transfer_service=file_service) # `mixing_elbow.cas.h5` will be uploaded to remote Fluent working directory - solver_session.file.read_case(file_name="/home/user_name/mixing_elbow.cas.h5") + solver_session.settings.file.read_case(file_name="/home/user_name/mixing_elbow.cas.h5") # `elbow_remote.cas.h5` will be downloaded to local working directory - solver_session.file.write_case(file_name="elbow_remote.cas.h5") + solver_session.settings.file.write_case(file_name="elbow_remote.cas.h5") Connecting to Fluent on Linux or WSL from a Windows host -------------------------------------------------------- -This guide describes how to connect to an ANSYS Fluent instance running on a Linux or WSL machine from a Windows host. +This guide describes how to connect to an ANSYS Fluent instance running on a Linux or WSL machine from a Windows host. It also includes steps to enable remote file transfer. Prerequisites: @@ -602,7 +602,7 @@ A. **Set Up Fluent and File Transfer Server on Linux or WSL** 2. **Retrieve Connection Details** - Get the IP address, port, and password from the `server_info.txt` file. + Get the IP address, port, and password from the `server_info.txt` file. Example: - IP: ``10.18.19.150`` - Port: ``41429`` @@ -629,8 +629,8 @@ Run the following Python code to connect to Fluent and transfer files: solver_session = connect_to_fluent(ip="10.18.19.150", port=41429, password="u5s3iivh", file_transfer_service=file_service) # `mixing_elbow.cas.h5` will be uploaded to remote Fluent working directory - solver_session.file.read_case(file_name="D:\path_to_file\mixing_elbow.cas.h5") + solver_session.settings.file.read_case(file_name="D:\path_to_file\mixing_elbow.cas.h5") # `elbow_remote.cas.h5` will be downloaded to local working directory - solver_session.file.write_case(file_name="elbow_remote.cas.h5") + solver_session.settings.file.write_case(file_name="elbow_remote.cas.h5") diff --git a/doc/source/user_guide/solver_settings/solver_settings_contents.rst b/doc/source/user_guide/solver_settings/solver_settings_contents.rst index d264019c024f..b99a45e7922e 100644 --- a/doc/source/user_guide/solver_settings/solver_settings_contents.rst +++ b/doc/source/user_guide/solver_settings/solver_settings_contents.rst @@ -6,7 +6,7 @@ Solver settings objects .. vale Google.Spacing = NO Solver settings objects provide a natural way to access and modify Fluent solver -settings and issue commands to be executed in the Fluent solver. +settings and issue commands to be executed in the Fluent solver. An appropriate call to the :func:`~ansys.fluent.core.launcher.launcher.launch_fluent` function returns an object whose interface directly exposes the :ref:`ref_root` of the solver settings hierarchy. @@ -16,9 +16,9 @@ function returns an object whose interface directly exposes the :ref:`ref_root` New format for accessing solver settings objects ------------------------------------------------ -To simplify the usage of Fluent solver settings and improve readability, -you can now instantiate settings objects directly using a more intuitive syntax. -This new approach allows for straightforward access to various settings without +To simplify the usage of Fluent solver settings and improve readability, +you can now instantiate settings objects directly using a more intuitive syntax. +This new approach allows for straightforward access to various settings without navigating through the hierarchical structure of the solver settings. Example usage @@ -32,15 +32,15 @@ Example usage >>> inlet1 = VelocityInlet(settings_source=solver_session, name="inlet-1") -This format provides a more natural way to create and interact with settings objects, -making your code easier to read and maintain. By abstracting the underlying hierarchy, -users can focus on the specific settings they need without dealing with potential changes +This format provides a more natural way to create and interact with settings objects, +making your code easier to read and maintain. By abstracting the underlying hierarchy, +users can focus on the specific settings they need without dealing with potential changes in the Fluent API structure. Accessing solver settings ------------------------- -Following the introduction of the new format, the traditional method remains available for those +Following the introduction of the new format, the traditional method remains available for those who prefer the existing hierarchy. .. code-block:: python @@ -365,12 +365,12 @@ Also, when you have one or more velocity inlets with "inlet" in their names:: For string lists with allowed values, for instance:: - >>> solver_session.results.graphics.contour['contour-1'].surfaces_list = 'in*' + >>> solver_session.settings.results.graphics.contour['contour-1'].surfaces_list = 'in*' sets ``surfaces_list`` to all matches of surface names starting with ``in``, so when you prompt for the list of surfaces:: - >>> solver_session.results.graphics.contour['contour-1'].surfaces_list() + >>> solver_session.settings.results.graphics.contour['contour-1'].surfaces_list() ['in1', 'in2'] The following list summarizes common wildcards: diff --git a/doc/source/user_guide/usability.rst b/doc/source/user_guide/usability.rst index 6c93e4fc5714..230e56d2f720 100644 --- a/doc/source/user_guide/usability.rst +++ b/doc/source/user_guide/usability.rst @@ -116,7 +116,7 @@ Examples .tui.results.report.simulation_reports.read_simulation_report_template_file (Command) (similarity: 100.0%) >>> >>> # Whole word search - >>> pyfluent.search("iteration_at_creation_or_edit", match_whole_word=True) + >>> pyfluent.search("iteration_at_creation_or_edit", match_whole_word=True) .solution.monitor.convergence_conditions.convergence_reports[""].iteration_at_creation_or_edit (Parameter) >>> >>> # Whole word search within a specific API object @@ -144,7 +144,7 @@ Examples ... >>> >> # Wildcard pattern search within a specific API object - >>> pyfluent.search("iter*", api_path=".parallel.multidomain") + >>> pyfluent.search("iter*", api_path=".parallel.multidomain") .parallel.multidomain.conjugate_heat_transfer.set.coupling.iter_per_coupling_count (Parameter) .parallel.multidomain.conjugate_heat_transfer.set.coupling.single_session_coupling.iteration (Parameter) .parallel.multidomain.solve.dual_time_iterate (Command) diff --git a/examples/00-fluent/DOE_ML.py b/examples/00-fluent/DOE_ML.py index 95e4c34bbc36..03b101ae7255 100644 --- a/examples/00-fluent/DOE_ML.py +++ b/examples/00-fluent/DOE_ML.py @@ -1,3 +1,16 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# "matplotlib", +# "numpy", +# "pandas", +# "plotly", +# "scikit-learn", +# "seaborn", +# "tensorflow", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -32,7 +45,7 @@ # # Water enters a Mixing Elbow from two Inlets; Hot (313 K) and Cold (293 K) and exits # from Outlet. Using PyFluent in the background, this example runs Design of Experiments -# with Cold Inlet Velocity and Hot Inlet Velocity as Input Parameters and Outlet +# (DOE) with Cold Inlet Velocity and Hot Inlet Velocity as Input Parameters and Outlet # Temperature as an Output Parameter. # # Results can be visualized using a Response Surface. Finally, Supervised Machine @@ -84,8 +97,7 @@ solver_session = pyfluent.launch_fluent( precision="double", - processor_count=2, - version="3d", + processor_count=4, ) print(solver_session.get_fluent_version()) diff --git a/examples/00-fluent/ahmed_body_workflow.py b/examples/00-fluent/ahmed_body_workflow.py index bedd64f8e8e0..910e48ec019f 100644 --- a/examples/00-fluent/ahmed_body_workflow.py +++ b/examples/00-fluent/ahmed_body_workflow.py @@ -1,3 +1,10 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# "ansys-fluent-visualization", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -302,8 +309,10 @@ "zones": ["wall_ahmed_body_main", "wall_ahmed_body_front", "wall_ahmed_body_rear"], "force_vector": [0, 0, 1], } -session.parameters.output_parameters.report_definitions.create(name="parameter-1") -session.parameters.output_parameters.report_definitions["parameter-1"] = { +session.settings.parameters.output_parameters.report_definitions.create( + name="parameter-1" +) +session.settings.parameters.output_parameters.report_definitions["parameter-1"] = { "report_definition": "cd-mon1" } @@ -322,9 +331,9 @@ ####################################################################################### # Post-Processing Workflow # ===================================================================================== -session.results.surfaces.iso_surface.create(name="xmid") -session.results.surfaces.iso_surface["xmid"].field = "x-coordinate" -session.results.surfaces.iso_surface["xmid"] = {"iso_values": [0]} +session.settings.results.surfaces.iso_surface.create(name="xmid") +session.settings.results.surfaces.iso_surface["xmid"].field = "x-coordinate" +session.settings.results.surfaces.iso_surface["xmid"] = {"iso_values": [0]} contour1 = Contour(solver=session, field="velocity-magnitude", surfaces=["xmid"]) disp1 = GraphicsWindow() diff --git a/examples/00-fluent/brake.py b/examples/00-fluent/brake.py index 8adf1750a8e4..e1e6424ebaec 100644 --- a/examples/00-fluent/brake.py +++ b/examples/00-fluent/brake.py @@ -1,3 +1,11 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# "ansys-fluent-visualization", +# "matplotlib", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -64,7 +72,7 @@ # Launch Fluent session with solver mode and print Fluent version # --------------------------------------------------------------- -session = pyfluent.launch_fluent(precision="double", processor_count=2, version="3d") +session = pyfluent.launch_fluent(precision="double", processor_count=2, dimension=3) print(session.get_fluent_version()) #################################################################################### diff --git a/examples/00-fluent/conjugate_heat_transfer.py b/examples/00-fluent/conjugate_heat_transfer.py index afe05d990dee..2a60b972ed52 100644 --- a/examples/00-fluent/conjugate_heat_transfer.py +++ b/examples/00-fluent/conjugate_heat_transfer.py @@ -1,3 +1,12 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# "ansys-fluent-visualization", +# "matplotlib", +# "pyvista", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -86,7 +95,6 @@ meshing_session = pyfluent.launch_fluent( mode="meshing", - dimension=3, precision="double", processor_count=4, ) @@ -477,7 +485,7 @@ # Mesh Check; Review Fluent transcript for errors # =============================================== -solver_session.mesh.check() +solver_session.settings.mesh.check() ############################################################################# # Create a few boundary list for display and post-processing @@ -521,66 +529,78 @@ # * Enable Energy Equation # * Enable Laminar Viscous Model -solver_session.setup.general.units.set_units( +solver_session.settings.setup.general.units.set_units( quantity="temperature", units_name="C", scale_factor=1.0, offset=273.15 ) -solver_session.setup.models.energy.enabled = True -solver_session.setup.models.viscous.model.set_state("laminar") +solver_session.settings.setup.models.energy.enabled = True +solver_session.settings.setup.models.viscous.model.set_state("laminar") ############################################################################# # Change a few material properties of default Air # =============================================== -air_dict = solver_session.setup.materials.fluid["air"].get_state() +air_dict = solver_session.settings.setup.materials.fluid["air"].get_state() air_dict["density"]["value"] = 1.2 air_dict["viscosity"]["value"] = 1.5e-5 air_dict["thermal_conductivity"]["value"] = 0.026 air_dict["specific_heat"]["value"] = 1006.0 -solver_session.setup.materials.fluid["air"].set_state(air_dict) +solver_session.settings.setup.materials.fluid["air"].set_state(air_dict) ############################################################################# # Change a few material properties of default Aluminum # ==================================================== -al_dict = solver_session.setup.materials.solid["aluminum"].get_state() +al_dict = solver_session.settings.setup.materials.solid["aluminum"].get_state() al_dict["density"]["value"] = 2719.0 al_dict["thermal_conductivity"]["value"] = 200.0 al_dict["specific_heat"]["value"] = 871.0 -solver_session.setup.materials.solid["aluminum"].set_state(al_dict) +solver_session.settings.setup.materials.solid["aluminum"].set_state(al_dict) ############################################################################# # Copy Copper and change a few material properties of default Copper # ================================================================== -solver_session.setup.materials.database.copy_by_name(type="solid", name="copper") -cu_dict = solver_session.setup.materials.solid["copper"].get_state() +solver_session.settings.setup.materials.database.copy_by_name( + type="solid", name="copper" +) +cu_dict = solver_session.settings.setup.materials.solid["copper"].get_state() cu_dict["density"]["value"] = 8978.0 cu_dict["thermal_conductivity"]["value"] = 340.0 cu_dict["specific_heat"]["value"] = 381.0 -solver_session.setup.materials.solid["copper"].set_state(cu_dict) +solver_session.settings.setup.materials.solid["copper"].set_state(cu_dict) ############################################################################# # Set Tube Cell Zone Material as Copper # ===================================== -tube_dict = solver_session.setup.cell_zone_conditions.solid["solid-tube-1"].get_state() +tube_dict = solver_session.settings.setup.cell_zone_conditions.solid[ + "solid-tube-1" +].get_state() tube_dict["material"] = "copper" -solver_session.setup.cell_zone_conditions.solid["solid-tube-1"].set_state(tube_dict) +solver_session.settings.setup.cell_zone_conditions.solid["solid-tube-1"].set_state( + tube_dict +) -tube_dict = solver_session.setup.cell_zone_conditions.solid["solid-tube-2"].get_state() +tube_dict = solver_session.settings.setup.cell_zone_conditions.solid[ + "solid-tube-2" +].get_state() tube_dict["material"] = "copper" -solver_session.setup.cell_zone_conditions.solid["solid-tube-2"].set_state(tube_dict) +solver_session.settings.setup.cell_zone_conditions.solid["solid-tube-2"].set_state( + tube_dict +) ############################################################################# # Set Boundary Condition for Inlet and Outlet # =========================================== -solver_session.setup.boundary_conditions.velocity_inlet["inlet"].momentum.velocity = 4.0 -solver_session.setup.boundary_conditions.velocity_inlet["inlet"].thermal.temperature = ( - 293.15 # Need to specify in Kelvin -) +solver_session.settings.setup.boundary_conditions.velocity_inlet[ + "inlet" +].momentum.velocity = 4.0 +solver_session.settings.setup.boundary_conditions.velocity_inlet[ + "inlet" +].thermal.temperature = 293.15 # Need to specify in Kelvin -solver_session.setup.boundary_conditions.pressure_outlet[ +solver_session.settings.setup.boundary_conditions.pressure_outlet[ "outlet" ].thermal.backflow_total_temperature = 293.15 @@ -588,17 +608,17 @@ # Set Thermal Boundary Condition for Wall Inner Tube # ================================================== -solver_session.setup.boundary_conditions.wall[ +solver_session.settings.setup.boundary_conditions.wall[ "wall-inner-tube-1" ].thermal.thermal_condition = "Convection" -solver_session.setup.boundary_conditions.wall[ +solver_session.settings.setup.boundary_conditions.wall[ "wall-inner-tube-1" ].thermal.heat_transfer_coeff = 1050.0 -solver_session.setup.boundary_conditions.wall[ +solver_session.settings.setup.boundary_conditions.wall[ "wall-inner-tube-1" ].thermal.free_stream_temp = 353.15 -solver_session.setup.boundary_conditions.copy( +solver_session.settings.setup.boundary_conditions.copy( from_="wall-inner-tube-1", to="wall-inner-tube-2" ) @@ -606,53 +626,55 @@ # Enable HOTR # =========== -solver_session.solution.methods.high_order_term_relaxation.enable = True +solver_session.settings.solution.methods.high_order_term_relaxation.enable = True ############################################################################# # Define Report Definitions # ========================= -solver_session.solution.report_definitions.surface["outlet-enthalpy-flow"] = {} -solver_session.solution.report_definitions.surface[ +solver_session.settings.solution.report_definitions.surface["outlet-enthalpy-flow"] = {} +solver_session.settings.solution.report_definitions.surface[ "outlet-enthalpy-flow" ].report_type = "surface-flowrate" -solver_session.solution.report_definitions.surface["outlet-enthalpy-flow"].field = ( - "enthalpy" -) -solver_session.solution.report_definitions.surface[ +solver_session.settings.solution.report_definitions.surface[ + "outlet-enthalpy-flow" +].field = "enthalpy" +solver_session.settings.solution.report_definitions.surface[ "outlet-enthalpy-flow" ].surface_names = ["outlet"] -solver_session.solution.report_definitions.surface["avg-pressure-inlet"] = {} -solver_session.solution.report_definitions.surface["avg-pressure-inlet"].report_type = ( - "surface-areaavg" -) -solver_session.solution.report_definitions.surface["avg-pressure-inlet"].field = ( - "pressure" -) -solver_session.solution.report_definitions.surface[ +solver_session.settings.solution.report_definitions.surface["avg-pressure-inlet"] = {} +solver_session.settings.solution.report_definitions.surface[ + "avg-pressure-inlet" +].report_type = "surface-areaavg" +solver_session.settings.solution.report_definitions.surface[ + "avg-pressure-inlet" +].field = "pressure" +solver_session.settings.solution.report_definitions.surface[ "avg-pressure-inlet" ].surface_names = ["inlet"] -solver_session.solution.report_definitions.volume["max-vel-louvers4"] = {} -solver_session.solution.report_definitions.volume["max-vel-louvers4"].report_type = ( - "volume-max" -) -solver_session.solution.report_definitions.volume["max-vel-louvers4"].field = ( +solver_session.settings.solution.report_definitions.volume["max-vel-louvers4"] = {} +solver_session.settings.solution.report_definitions.volume[ + "max-vel-louvers4" +].report_type = "volume-max" +solver_session.settings.solution.report_definitions.volume["max-vel-louvers4"].field = ( "velocity-magnitude" ) -solver_session.solution.report_definitions.volume["max-vel-louvers4"].cell_zones = [ - "fluid-tet-4" -] - -solver_session.solution.report_definitions.surface["wall-shear-int"] = {} -solver_session.solution.report_definitions.surface["wall-shear-int"].report_type = ( - "surface-integral" -) -solver_session.solution.report_definitions.surface["wall-shear-int"].field = ( +solver_session.settings.solution.report_definitions.volume[ + "max-vel-louvers4" +].cell_zones = ["fluid-tet-4"] + +solver_session.settings.solution.report_definitions.surface["wall-shear-int"] = {} +solver_session.settings.solution.report_definitions.surface[ + "wall-shear-int" +].report_type = "surface-integral" +solver_session.settings.solution.report_definitions.surface["wall-shear-int"].field = ( "wall-shear" ) -solver_session.solution.report_definitions.surface["wall-shear-int"].surface_names = [ +solver_session.settings.solution.report_definitions.surface[ + "wall-shear-int" +].surface_names = [ "wall-fluid-sweep-fin-solid-sweep-fin-shadow", "wall-fluid-tet-1-solid-tet-1", "wall-fluid-tet-2-solid-tet-2", @@ -660,46 +682,48 @@ "wall-fluid-tet-4-solid-tet-4", ] -solver_session.solution.monitor.report_plots.create(name="outlet-enthalpy-flow-plot") -solver_session.solution.monitor.report_plots[ +solver_session.settings.solution.monitor.report_plots.create( + name="outlet-enthalpy-flow-plot" +) +solver_session.settings.solution.monitor.report_plots[ "outlet-enthalpy-flow-plot" ].report_defs = "outlet-enthalpy-flow" -solver_session.solution.monitor.report_files["outlet-enthalpy-flow-file"] = {} -solver_session.solution.monitor.report_files["outlet-enthalpy-flow-file"] = { +solver_session.settings.solution.monitor.report_files["outlet-enthalpy-flow-file"] = {} +solver_session.settings.solution.monitor.report_files["outlet-enthalpy-flow-file"] = { "report_defs": ["outlet-enthalpy-flow"], "file_name": r"outlet-enthalpy-flow.out", } -solver_session.solution.monitor.report_plots["avg-pressure-inlet-plot"] = {} -solver_session.solution.monitor.report_plots["avg-pressure-inlet-plot"] = { +solver_session.settings.solution.monitor.report_plots["avg-pressure-inlet-plot"] = {} +solver_session.settings.solution.monitor.report_plots["avg-pressure-inlet-plot"] = { "report_defs": ["avg-pressure-inlet"] } -solver_session.solution.monitor.report_files["avg-pressure-inlet-file"] = {} -solver_session.solution.monitor.report_files["avg-pressure-inlet-file"] = { +solver_session.settings.solution.monitor.report_files["avg-pressure-inlet-file"] = {} +solver_session.settings.solution.monitor.report_files["avg-pressure-inlet-file"] = { "report_defs": ["avg-pressure-inlet"], "file_name": r"avg-pressure-inlet.out", } -solver_session.solution.monitor.report_plots["max-vel-louvers4-plot"] = {} -solver_session.solution.monitor.report_plots["max-vel-louvers4-plot"] = { +solver_session.settings.solution.monitor.report_plots["max-vel-louvers4-plot"] = {} +solver_session.settings.solution.monitor.report_plots["max-vel-louvers4-plot"] = { "report_defs": ["max-vel-louvers4"] } -solver_session.solution.monitor.report_files["max-vel-louvers4-file"] = {} -solver_session.solution.monitor.report_files["max-vel-louvers4-file"] = { +solver_session.settings.solution.monitor.report_files["max-vel-louvers4-file"] = {} +solver_session.settings.solution.monitor.report_files["max-vel-louvers4-file"] = { "report_defs": ["max-vel-louvers4"], "file_name": r"max-vel-louvers4.out", } -solver_session.solution.monitor.report_plots["wall-shear-int-plot"] = {} -solver_session.solution.monitor.report_plots["wall-shear-int-plot"] = { +solver_session.settings.solution.monitor.report_plots["wall-shear-int-plot"] = {} +solver_session.settings.solution.monitor.report_plots["wall-shear-int-plot"] = { "report_defs": ["wall-shear-int"] } -solver_session.solution.monitor.report_files["wall-shear-int-file"] = {} -solver_session.solution.monitor.report_files["wall-shear-int-file"] = { +solver_session.settings.solution.monitor.report_files["wall-shear-int-file"] = {} +solver_session.settings.solution.monitor.report_files["wall-shear-int-file"] = { "report_defs": ["wall-shear-int"], "file_name": r"wall-shear-int.out", } @@ -708,26 +732,26 @@ # Hybrid Initialization; Slit Interior between Solid Zones; Save Case # =================================================================== -solver_session.solution.initialization.initialization_type = "hybrid" -solver_session.solution.initialization.hybrid_initialize() +solver_session.settings.solution.initialization.initialization_type = "hybrid" +solver_session.settings.solution.initialization.hybrid_initialize() -solver_session.setup.boundary_conditions.slit_interior_between_diff_solids() -solver_session.file.write(file_type="case", file_name="hx-fin-2mm.cas.h5") +solver_session.settings.setup.boundary_conditions.slit_interior_between_diff_solids() +solver_session.settings.file.write(file_type="case", file_name="hx-fin-2mm.cas.h5") ############################################################################# # Set Aggressive Length Scale Method; Run Calculation & Save Data # =============================================================== -solver_session.solution.run_calculation.pseudo_time_settings.time_step_method.time_step_method = ( +solver_session.settings.solution.run_calculation.pseudo_time_settings.time_step_method.time_step_method = ( "automatic" ) -solver_session.solution.run_calculation.pseudo_time_settings.time_step_method.length_scale_methods = ( +solver_session.settings.solution.run_calculation.pseudo_time_settings.time_step_method.length_scale_methods = ( "aggressive" ) -solver_session.solution.run_calculation.iterate(iter_count=250) +solver_session.settings.solution.run_calculation.iterate(iter_count=250) -solver_session.file.write(file_type="case-data", file_name="hx-fin-2mm.dat.h5") +solver_session.settings.file.write(file_type="case-data", file_name="hx-fin-2mm.dat.h5") ############################################################################# # Post-Processing Mass Balance Report @@ -843,9 +867,13 @@ # Create Iso-Surface of X=0.012826 m # ================================== -solver_session.results.surfaces.iso_surface["x=0.012826"] = {} -solver_session.results.surfaces.iso_surface["x=0.012826"].field = "x-coordinate" -solver_session.results.surfaces.iso_surface["x=0.012826"] = {"iso_values": [0.012826]} +solver_session.settings.results.surfaces.iso_surface["x=0.012826"] = {} +solver_session.settings.results.surfaces.iso_surface["x=0.012826"].field = ( + "x-coordinate" +) +solver_session.settings.results.surfaces.iso_surface["x=0.012826"] = { + "iso_values": [0.012826] +} ############################################################################# # Vector Plot diff --git a/examples/00-fluent/exhaust_system_settings_api.py b/examples/00-fluent/exhaust_system_settings_api.py index 79ee3abed548..b8fc53189855 100644 --- a/examples/00-fluent/exhaust_system_settings_api.py +++ b/examples/00-fluent/exhaust_system_settings_api.py @@ -1,3 +1,9 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -105,7 +111,6 @@ # Import the CAD geometry file (``exhaust_system.fmd``) and selectively manage some # parts. -meshing_session.upload(import_file_name) meshing_session.PartManagement.InputFileChanged( FilePath=import_file_name, IgnoreSolidNames=False, PartPerBody=False ) @@ -577,14 +582,14 @@ solver_session = meshing_session.switch_to_solver() -solver_session.mesh.check() +solver_session.settings.mesh.check() ############################################################################### # Select turbulence model # ~~~~~~~~~~~~~~~~~~~~~~~ # Select the kw sst turbulence model. -viscous = solver_session.setup.models.viscous +viscous = solver_session.settings.setup.models.viscous viscous.model = "k-omega" viscous.k_omega_model = "sst" @@ -595,7 +600,7 @@ # Set the velocity and turbulence boundary conditions for the first inlet # (``inlet-1``). -boundary_conditions = solver_session.setup.boundary_conditions +boundary_conditions = solver_session.settings.setup.boundary_conditions boundary_conditions.velocity_inlet["inlet-1"] = { "momentum": { @@ -623,13 +628,16 @@ # Set the boundary conditions at the outlet (``outlet-1``). boundary_conditions.pressure_outlet["outlet-1"].turbulence.turbulent_intensity = 0.05 +boundary_conditions.pressure_outlet[ + "outlet-1" +].turbulence.backflow_turbulent_intensity = 0.05 ############################################################################### # Initialize flow field # ~~~~~~~~~~~~~~~~~~~~~ # Initialize the flow field using hybrid initialization. -solver_session.solution.initialization.hybrid_initialize() +solver_session.settings.solution.initialization.hybrid_initialize() ############################################################################### # Start calculation @@ -641,13 +649,13 @@ # :width: 500pt # :align: center -solver_session.solution.run_calculation.iterate(iter_count=100) +solver_session.settings.solution.run_calculation.iterate(iter_count=100) ############################################################################### # Write the case and data files # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -solver_session.file.write( +solver_session.settings.file.write( file_type="case-data", file_name="exhaust_system.cas.h5", ) @@ -659,7 +667,7 @@ # picture files. Edit the picture settings to use a custom resolution so that # the images are large enough. -graphics = solver_session.results.graphics +graphics = solver_session.settings.results.graphics # use_window_resolution option not active inside containers or Ansys Lab environment if graphics.picture.use_window_resolution.is_active(): graphics.picture.use_window_resolution = False @@ -697,7 +705,7 @@ # ~~~~~~~~~~~~~~~~~~ # Create an iso-surface through the manifold geometry. -solver_session.results.surfaces.iso_surface["surf-x-coordinate"] = { +solver_session.settings.results.surfaces.iso_surface["surf-x-coordinate"] = { "field": "x-coordinate", "zones": ["fluid-region-1"], "iso_values": [0.38], @@ -745,8 +753,8 @@ # :width: 500pt # :align: center -solver_session.results.scene["scene-1"] = {} -scene1 = solver_session.results.scene["scene-1"] +solver_session.settings.results.scene["scene-1"] = {} +scene1 = solver_session.settings.results.scene["scene-1"] scene1.graphics_objects.add(name="mesh-1") scene1.graphics_objects["mesh-1"].transparency = 90 scene1.graphics_objects.add(name="contour-velocity") diff --git a/examples/00-fluent/external_compressible_flow.py b/examples/00-fluent/external_compressible_flow.py index 5c584a74da61..5f8bbde2cd69 100644 --- a/examples/00-fluent/external_compressible_flow.py +++ b/examples/00-fluent/external_compressible_flow.py @@ -1,3 +1,9 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -111,7 +117,6 @@ } ) -meshing_session.upload(wing_intermediary_file) geo_import.Execute() ############################################################################### @@ -258,7 +263,7 @@ # reports a number of other mesh features that are checked. Any errors in the # mesh are reported. -solver_session.mesh.check() +solver_session.settings.mesh.check() ############################################################################### # Define model @@ -268,7 +273,7 @@ # model : k-omega # k-omega model : sst -viscous = solver_session.setup.models.viscous +viscous = solver_session.settings.setup.models.viscous viscous.model = "k-omega" viscous.k_omega_model = "sst" @@ -285,7 +290,7 @@ # reference temperature : 273.11 [K] # effective temperature : 110.56 [K] -air = solver_session.setup.materials.fluid["air"] +air = solver_session.settings.setup.materials.fluid["air"] air.density.option = "ideal-gas" @@ -312,9 +317,11 @@ # turbulent intensity : 5 [%] # turbulent viscosity ratio : 10 -pressure_farfield = solver_session.setup.boundary_conditions.pressure_far_field[ - "pressure_farfield" -] +pressure_farfield = ( + solver_session.settings.setup.boundary_conditions.pressure_far_field[ + "pressure_farfield" + ] +) pressure_farfield.momentum.gauge_pressure = 0 @@ -337,35 +344,39 @@ # operating pressure : 80600 [Pa] -solver_session.setup.general.operating_conditions.operating_pressure = 80600 +solver_session.settings.setup.general.operating_conditions.operating_pressure = 80600 ############################################################################### # Initialize flow field # ~~~~~~~~~~~~~~~~~~~~~ # Initialize the flow field using hybrid initialization. -solver_session.solution.initialization.hybrid_initialize() +solver_session.settings.solution.initialization.hybrid_initialize() ############################################################################### # Save case file # ~~~~~~~~~~~~~~ # Save the case file ``external_compressible1.cas.h5``. -solver_session.file.write(file_name="external_compressible.cas.h5", file_type="case") +solver_session.settings.file.write( + file_name="external_compressible.cas.h5", file_type="case" +) ############################################################################### # Solve for 25 iterations # ~~~~~~~~~~~~~~~~~~~~~~~~ # Solve for 25 iterations (100 iterations is recommended, however for this example 25 is sufficient). -solver_session.solution.run_calculation.iterate(iter_count=25) +solver_session.settings.solution.run_calculation.iterate(iter_count=25) ############################################################################### # Write final case file and data # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Write the final case file and the data. -solver_session.file.write(file_name="external_compressible1.cas.h5", file_type="case") +solver_session.settings.file.write( + file_name="external_compressible1.cas.h5", file_type="case" +) ############################################################################### # Close Fluent diff --git a/examples/00-fluent/frozen_rotor_workflow.py b/examples/00-fluent/frozen_rotor_workflow.py index b2a08a34a304..e54d4f93b1ea 100644 --- a/examples/00-fluent/frozen_rotor_workflow.py +++ b/examples/00-fluent/frozen_rotor_workflow.py @@ -1,3 +1,9 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -50,9 +56,9 @@ ################################################################################################################ # Outline # ============================================================================================================== - +# # The example demonstrates the following: - +# # *Overview & Problem description # *Launching Fluent in solver mode. # *Downloading a mesh files from the examples repository. @@ -70,7 +76,6 @@ # *Saving the case file # *Closing the solver - ################################################################################################################ # Import required libraries/modules # ============================================================================================================== diff --git a/examples/00-fluent/lunar_lander_thermal.py b/examples/00-fluent/lunar_lander_thermal.py index fdc9bfbe618c..ac1677dc1493 100644 --- a/examples/00-fluent/lunar_lander_thermal.py +++ b/examples/00-fluent/lunar_lander_thermal.py @@ -1,3 +1,12 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# "matplotlib", +# "numpy", +# "pandas", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -265,7 +274,7 @@ def get_surf_mean_temp( # Load the mesh # ~~~~~~~~~~~~~ -solver_session.file.read_mesh(file_name=lander_mesh_file) +solver_session.settings.file.read_mesh(file_name=lander_mesh_file) ############################################################################### # Case Setup @@ -280,10 +289,10 @@ def get_surf_mean_temp( # 1. # Set solution to transient -solver_session.setup.general.solver.time = "unsteady-2nd-order" +solver_session.settings.setup.general.solver.time = "unsteady-2nd-order" # Set transient settings -trans_controls = solver_session.solution.run_calculation.transient_controls +trans_controls = solver_session.settings.solution.run_calculation.transient_controls trans_controls.type = "Fixed" trans_controls.max_iter_per_time_step = 20 trans_controls.time_step_count = 1 @@ -295,7 +304,7 @@ def get_surf_mean_temp( # Enable the energy model. Since fluid flow is not simulated, we will set the # viscosity model to laminar. -models = solver_session.setup.models +models = solver_session.settings.setup.models models.energy.enabled = True models.viscous.model = "laminar" @@ -345,7 +354,7 @@ def get_surf_mean_temp( # --- Properties of vacuum --- # Thermal conductivity: 0 -vacuum = solver_session.setup.materials.solid.create("vacuum") +vacuum = solver_session.settings.setup.materials.solid.create("vacuum") vacuum.chemical_formula = "" vacuum.thermal_conductivity.value = 0 vacuum.absorption_coefficient.value = 0 @@ -356,7 +365,7 @@ def get_surf_mean_temp( # Specific heat capacity: 1050 [J kg^-1 K^-1] # Thermal conductivity: 9.22e-4*(1 + 1.48*(temperature/350 K)^3) [W m^-1 K^-1] -fluff = solver_session.setup.materials.solid.create("fluff") +fluff = solver_session.settings.setup.materials.solid.create("fluff") fluff.chemical_formula = "" fluff.density.value = 1000 fluff.specific_heat.value = 1050 @@ -370,7 +379,7 @@ def get_surf_mean_temp( # Specific heat capacity: 1050 [J kg^-1 K^-1] # Thermal conductivity: 9.30e-4*(1 + 0.73*(temperature/350 K)^3) [W m^-1 K^-1] -regolith = solver_session.setup.materials.solid.create("regolith") +regolith = solver_session.settings.setup.materials.solid.create("regolith") regolith.chemical_formula = "" regolith.density.value = 2000 regolith.specific_heat.value = 1050 @@ -387,7 +396,7 @@ def get_surf_mean_temp( # lander. This cell zone must be set to be a solid so that the fluid equations # are not solved there, then it must be assigned to the vacuum material. -cellzones = solver_session.setup.cell_zone_conditions +cellzones = solver_session.settings.setup.cell_zone_conditions cellzones.set_zone_type( zone_list=["geom-2_domain"], new_type="solid", @@ -408,7 +417,7 @@ def get_surf_mean_temp( # Surface absorptivity: 0.87 # Surface emissivity: 0.97 -regolith_bc = solver_session.setup.boundary_conditions.wall["regolith"] +regolith_bc = solver_session.settings.setup.boundary_conditions.wall["regolith"] regolith_bc.thermal.q.value = 0.031 regolith_bc.thermal.planar_conduction = True @@ -448,7 +457,7 @@ def get_surf_mean_temp( # Absorptivity: 1 # Solar flux: 1414 [W m^-2] -space_bc = solver_session.setup.boundary_conditions.wall["space"] +space_bc = solver_session.settings.setup.boundary_conditions.wall["space"] space_bc.thermal.thermal_bc = "Temperature" space_bc.thermal.t.value = 3 @@ -473,7 +482,7 @@ def get_surf_mean_temp( # Absorptivity: 0.05 # Emissivity: 0.05 -sc_mli_bc = solver_session.setup.boundary_conditions.wall["sc-mli"] +sc_mli_bc = solver_session.settings.setup.boundary_conditions.wall["sc-mli"] sc_mli_bc.thermal.planar_conduction = True sc_mli_bc.thermal.shell_conduction = [ @@ -497,7 +506,7 @@ def get_surf_mean_temp( # Absorptivity: 0.17 # Emissivity: 0.09 below 273 K, 0.70 otherwise -sc_rad_bc = solver_session.setup.boundary_conditions.wall["sc-radiator"] +sc_rad_bc = solver_session.settings.setup.boundary_conditions.wall["sc-radiator"] sc_rad_bc.thermal.planar_conduction = True sc_rad_bc.thermal.shell_conduction = [ @@ -516,7 +525,7 @@ def get_surf_mean_temp( # definitions on them in the next step. The entire domain will be initialized # to a temperature of 230 K, or -43 °C. -sim_init = solver_session.solution.initialization +sim_init = solver_session.settings.solution.initialization sim_init.defaults["temperature"] = 230 sim_init.initialize() @@ -525,7 +534,7 @@ def get_surf_mean_temp( # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Create reports for the spacecraft's minimum, mean, and maximum temperatures. -surf_report_defs = solver_session.solution.report_definitions.surface +surf_report_defs = solver_session.settings.solution.report_definitions.surface sc_surfs = ["sc-radiator", "sc-mli"] @@ -551,7 +560,7 @@ def get_surf_mean_temp( # Create reports for the mean temperatures of each regolith layer. We will # store the report names for use later. -surf_report_defs = solver_session.solution.report_definitions.surface +surf_report_defs = solver_session.settings.solution.report_definitions.surface # Loop over all regolith reports to set common properties regolith_report_names = [] @@ -574,7 +583,7 @@ def get_surf_mean_temp( # ~~~~~~~~~~~~~~~~~~~~~~~~ # Create temperature report files for post-processing. -surf_report_files = solver_session.solution.monitor.report_files +surf_report_files = solver_session.settings.solution.monitor.report_files # Spacecraft temperatures surf_report_files["sc-temps-rfile"] = { @@ -591,7 +600,7 @@ def get_surf_mean_temp( # ~~~~~~~~ # Set the case to save only the data file at each timestep for post-processing. -autosave = solver_session.file.auto_save +autosave = solver_session.settings.file.auto_save autosave.case_frequency = "if-mesh-is-modified" autosave.data_frequency = 1 @@ -604,7 +613,7 @@ def get_surf_mean_temp( # Turn off the convergence criteria pertaining to fluid flow as there is no # fluid flow in this simulation. Keep only the energy convergence criterion. -residuals = solver_session.solution.monitor.residual.equations +residuals = solver_session.settings.solution.monitor.residual.equations for criterion in ["continuity", "x-velocity", "y-velocity", "z-velocity"]: residuals[criterion].check_convergence = False @@ -615,8 +624,8 @@ def get_surf_mean_temp( # ~~~~~~~~~~~~~~~ # Write the case file. Enable overwrite. -solver_session.file.batch_options.confirm_overwrite = True -solver_session.file.write( +solver_session.settings.file.batch_options.confirm_overwrite = True +solver_session.settings.file.write( file_name="lunar_lander_thermal.cas.h5", file_type="case", ) @@ -650,7 +659,7 @@ def get_surf_mean_temp( ) # Set beam direction - solver_session.setup.boundary_conditions.wall[ + solver_session.settings.setup.boundary_conditions.wall[ "space" ].radiation.direct_irradiation_settings.beam_direction = [ beam_x, @@ -665,7 +674,7 @@ def get_surf_mean_temp( ) # Simulate closing louvers below 273 K by changing emissivity - radiation_emission = solver_session.setup.boundary_conditions.wall[ + radiation_emission = solver_session.settings.setup.boundary_conditions.wall[ "sc-radiator" ].radiation.internal_emissivity_band["thermal-ir"] if rad_mean_temp < 273: @@ -674,7 +683,7 @@ def get_surf_mean_temp( radiation_emission.value = 0.70 # Run simulation for 1 timestep - solver_session.solution.run_calculation.calculate() + solver_session.settings.solution.run_calculation.calculate() ############################################################################### # Close Fluent @@ -783,7 +792,7 @@ def clean_col_names(df): regolith_df.plot( x="flow-time", - y=[f"regolith-layer-{i+1}-temp" for i in range(5)], + y=[f"regolith-layer-{i + 1}-temp" for i in range(5)], title="Regolith temperatures", ax=ax1, ) diff --git a/examples/00-fluent/mixing_elbow_settings_api.py b/examples/00-fluent/mixing_elbow_settings_api.py index ee37a1ad470d..a11c9e725e95 100644 --- a/examples/00-fluent/mixing_elbow_settings_api.py +++ b/examples/00-fluent/mixing_elbow_settings_api.py @@ -1,3 +1,9 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -81,22 +87,24 @@ # in the mesh are reported. Ensure that the minimum volume is not negative because # Fluent cannot begin a calculation when this is the case. -solver_session.file.read_case(file_name=import_file_name) -solver_session.mesh.check() +solver_session.settings.file.read_case(file_name=import_file_name) +solver_session.settings.mesh.check() ############################################################################### # Enable heat transfer # ~~~~~~~~~~~~~~~~~~~~ # Enable heat transfer by activating the energy equation. -solver_session.setup.models.energy.enabled = True +solver_session.settings.setup.models.energy.enabled = True ############################################################################### # Create material # ~~~~~~~~~~~~~~~ # Create a material named ``"water-liquid"``. -solver_session.setup.materials.database.copy_by_name(type="fluid", name="water-liquid") +solver_session.settings.setup.materials.database.copy_by_name( + type="fluid", name="water-liquid" +) ############################################################################### # Set up cell zone conditions @@ -104,9 +112,9 @@ # Set up the cell zone conditions for the fluid zone (``elbow-fluid``). Set ``material`` # to ``"water-liquid"``. -solver_session.setup.cell_zone_conditions.fluid["elbow-fluid"].general.material = ( - "water-liquid" -) +solver_session.settings.setup.cell_zone_conditions.fluid[ + "elbow-fluid" +].general.material = "water-liquid" ############################################################################### # Set up boundary conditions for CFD analysis @@ -121,7 +129,9 @@ # Turbulent Intensity: 5 [%] # Hydraulic Diameter: 4 [inch] # Temperature: 293.15 [K] -cold_inlet = solver_session.setup.boundary_conditions.velocity_inlet["cold-inlet"] +cold_inlet = solver_session.settings.setup.boundary_conditions.velocity_inlet[ + "cold-inlet" +] cold_inlet.momentum.velocity_magnitude.value = 0.4 cold_inlet.turbulence.turbulence_specification = "Intensity and Hydraulic Diameter" @@ -136,7 +146,9 @@ # Turbulent Intensity: 5 [%] # Hydraulic Diameter: 1 [inch] # Temperature: 313.15 [K] -hot_inlet = solver_session.setup.boundary_conditions.velocity_inlet["hot-inlet"] +hot_inlet = solver_session.settings.setup.boundary_conditions.velocity_inlet[ + "hot-inlet" +] hot_inlet.momentum.velocity_magnitude.value = 1.2 hot_inlet.turbulence.turbulence_specification = "Intensity and Hydraulic Diameter" @@ -147,23 +159,26 @@ # Backflow Turbulent Intensity: 5 [%] # Backflow Turbulent Viscosity Ratio: 4 -solver_session.setup.boundary_conditions.pressure_outlet[ +solver_session.settings.setup.boundary_conditions.pressure_outlet[ "outlet" ].turbulence.turbulent_viscosity_ratio = 4 +solver_session.settings.setup.boundary_conditions.pressure_outlet[ + "outlet" +].turbulence.backflow_turbulent_intensity = 0.05 ############################################################################### # Initialize flow field # ~~~~~~~~~~~~~~~~~~~~~ # Initialize the flow field using hybrid initialization. -solver_session.solution.initialization.hybrid_initialize() +solver_session.settings.solution.initialization.hybrid_initialize() ############################################################################### # Solve for 150 iterations # ~~~~~~~~~~~~~~~~~~~~~~~~ # Solve for 150 iterations. -solver_session.solution.run_calculation.iterate(iter_count=150) +solver_session.settings.solution.run_calculation.iterate(iter_count=150) ############################################################################### # Configure graphics picture export @@ -172,7 +187,7 @@ # picture files. Edit the picture settings to use a custom resolution so that # the images are large enough. -graphics = solver_session.results.graphics +graphics = solver_session.settings.results.graphics # use_window_resolution option not active inside containers or Ansys Lab environment if graphics.picture.use_window_resolution.is_active(): graphics.picture.use_window_resolution = False @@ -186,10 +201,12 @@ # Create and display velocity vectors on the ``symmetry-xyplane`` plane, then # export the image for inspection. -graphics = solver_session.results.graphics +graphics = solver_session.settings.results.graphics graphics.vector["velocity_vector_symmetry"] = {} -velocity_symmetry = solver_session.results.graphics.vector["velocity_vector_symmetry"] +velocity_symmetry = solver_session.settings.results.graphics.vector[ + "velocity_vector_symmetry" +] velocity_symmetry.print_state() velocity_symmetry.field = "velocity-magnitude" velocity_symmetry.surfaces_list = [ @@ -212,9 +229,11 @@ # Compute mass flow rate # ~~~~~~~~~~~~~~~~~~~~~~ # Compute the mass flow rate. -solver_session.solution.report_definitions.flux["mass_flow_rate"] = {} +solver_session.settings.solution.report_definitions.flux["mass_flow_rate"] = {} -mass_flow_rate = solver_session.solution.report_definitions.flux["mass_flow_rate"] +mass_flow_rate = solver_session.settings.solution.report_definitions.flux[ + "mass_flow_rate" +] mass_flow_rate.boundaries.allowed_values() mass_flow_rate.boundaries = [ "cold-inlet", @@ -222,7 +241,9 @@ "outlet", ] mass_flow_rate.print_state() -solver_session.solution.report_definitions.compute(report_defs=["mass_flow_rate"]) +solver_session.settings.solution.report_definitions.compute( + report_defs=["mass_flow_rate"] +) ######################################################################### # Close Fluent diff --git a/examples/00-fluent/mixing_tank_workflow.py b/examples/00-fluent/mixing_tank_workflow.py index e0c75d3363a6..8213f5b64b23 100644 --- a/examples/00-fluent/mixing_tank_workflow.py +++ b/examples/00-fluent/mixing_tank_workflow.py @@ -1,3 +1,9 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -264,7 +270,7 @@ liquid_level_bc.momentum.shear_condition = "Specified Shear" # Change the Zone type for internal walls to interior -solver_session.setup.boundary_conditions.set_zone_type( +solver_session.settings.setup.boundary_conditions.set_zone_type( zone_list=["fluid_mrf_1-fluid_tank"], new_type="interior" ) diff --git a/examples/00-fluent/modeling_ablation.py b/examples/00-fluent/modeling_ablation.py index d1becd1645ac..a5adea2379c8 100644 --- a/examples/00-fluent/modeling_ablation.py +++ b/examples/00-fluent/modeling_ablation.py @@ -1,3 +1,10 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# "ansys-fluent-visualization", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -98,7 +105,6 @@ # ================================================================================== solver_session = pyfluent.launch_fluent( - dimension=3, precision="double", processor_count=4, ) @@ -108,52 +114,54 @@ # Import mesh # ================================================================================== -solver_session.file.read_case(file_name=import_filename) +solver_session.settings.file.read_case(file_name=import_filename) #################################################################################### # Define models # ================================================================================== -solver_session.setup.general.solver.type = "density-based-implicit" -solver_session.setup.general.solver.time = "unsteady-1st-order" -solver_session.setup.general.operating_conditions.operating_pressure = 0.0 -solver_session.setup.models.energy = {"enabled": True} -solver_session.setup.models.ablation = {"enabled": True} +solver_session.settings.setup.general.solver.type = "density-based-implicit" +solver_session.settings.setup.general.solver.time = "unsteady-1st-order" +solver_session.settings.setup.general.operating_conditions.operating_pressure = 0.0 +solver_session.settings.setup.models.energy = {"enabled": True} +solver_session.settings.setup.models.ablation = {"enabled": True} ################################################################### # Define material # ================================================================= -solver_session.setup.materials.fluid["air"] = { +solver_session.settings.setup.materials.fluid["air"] = { "density": {"option": "ideal-gas"}, "molecular_weight": {"value": 28.966, "option": "constant"}, } -solver_session.setup.materials.fluid["air"] = {"density": {"option": "ideal-gas"}} +solver_session.settings.setup.materials.fluid["air"] = { + "density": {"option": "ideal-gas"} +} ############################ # Define boundary conditions # ========================== -solver_session.setup.boundary_conditions.set_zone_type( +solver_session.settings.setup.boundary_conditions.set_zone_type( zone_list=["inlet"], new_type="pressure-far-field" ) -solver_session.setup.boundary_conditions.pressure_far_field[ +solver_session.settings.setup.boundary_conditions.pressure_far_field[ "inlet" ].momentum.gauge_pressure = 13500 -solver_session.setup.boundary_conditions.pressure_far_field[ +solver_session.settings.setup.boundary_conditions.pressure_far_field[ "inlet" ].momentum.mach_number = 3 -solver_session.setup.boundary_conditions.pressure_far_field[ +solver_session.settings.setup.boundary_conditions.pressure_far_field[ "inlet" ].thermal.temperature = 4500 -solver_session.setup.boundary_conditions.pressure_far_field[ +solver_session.settings.setup.boundary_conditions.pressure_far_field[ "inlet" ].turbulence.turbulent_intensity = 0.001 -solver_session.setup.boundary_conditions.pressure_outlet[ +solver_session.settings.setup.boundary_conditions.pressure_outlet[ "outlet" ].momentum.gauge_pressure = 13500 -solver_session.setup.boundary_conditions.pressure_outlet[ +solver_session.settings.setup.boundary_conditions.pressure_outlet[ "outlet" ].momentum.prevent_reverse_flow = True @@ -165,13 +173,13 @@ # Remeshing options, #creates the wall-ablation dynamic mesh zone, and configure # appropriate dynamic mesh settings. -solver_session.setup.boundary_conditions.wall[ +solver_session.settings.setup.boundary_conditions.wall[ "wall_ablation" ].ablation.ablation_select_model = "Vielle's Model" -solver_session.setup.boundary_conditions.wall[ +solver_session.settings.setup.boundary_conditions.wall[ "wall_ablation" ].ablation.ablation_vielle_a = 5 -solver_session.setup.boundary_conditions.wall[ +solver_session.settings.setup.boundary_conditions.wall[ "wall_ablation" ].ablation.ablation_vielle_n = 0.1 @@ -278,9 +286,11 @@ # Define solver settings # ======================= -solver_session.setup.general.solver.time = "unsteady-2nd-order" -solver_session.solution.controls.limits = {"max_temperature": 25000} -solver_session.solution.monitor.residual.equations["energy"].absolute_criteria = 1e-06 +solver_session.settings.setup.general.solver.time = "unsteady-2nd-order" +solver_session.settings.solution.controls.limits = {"max_temperature": 25000} +solver_session.settings.solution.monitor.residual.equations[ + "energy" +].absolute_criteria = 1e-06 ############################################ # Create report definitions @@ -350,21 +360,23 @@ # Initialize and Save case # ======================== -solver_session.solution.initialization.compute_defaults( +solver_session.settings.solution.initialization.compute_defaults( from_zone_type="pressure-far-field", from_zone_name="inlet", phase="mixture" ) -solver_session.solution.initialization.initialization_type = "standard" -solver_session.solution.initialization.standard_initialize() -solver_session.solution.run_calculation.transient_controls.time_step_size = 1e-06 +solver_session.settings.solution.initialization.initialization_type = "standard" +solver_session.settings.solution.initialization.standard_initialize() +solver_session.settings.solution.run_calculation.transient_controls.time_step_size = ( + 1e-06 +) -solver_session.file.write(file_type="case", file_name="ablation.cas.h5") +solver_session.settings.file.write(file_type="case", file_name="ablation.cas.h5") ############################################ # Run the calculation # =================== # Note: It may take about half an hour to finish the calculation. -solver_session.solution.run_calculation.dual_time_iterate( +solver_session.settings.solution.run_calculation.dual_time_iterate( time_step_count=100, max_iter_per_step=20 ) @@ -372,7 +384,9 @@ # Save simulation data # ==================== # Write case and data files -solver_session.file.write(file_type="case-data", file_name="ablation_Solved.cas.h5") +solver_session.settings.file.write( + file_type="case-data", file_name="ablation_Solved.cas.h5" +) #################################################################################### # Post Processing @@ -419,22 +433,22 @@ # ================ # Following contours are displayed in the Fluent GUI: -solver_session.results.surfaces.plane_surface.create(name="mid_plane") -solver_session.results.surfaces.plane_surface["mid_plane"].method = "zx-plane" +solver_session.settings.results.surfaces.plane_surface.create(name="mid_plane") +solver_session.settings.results.surfaces.plane_surface["mid_plane"].method = "zx-plane" -solver_session.results.graphics.contour.create(name="contour_pressure") -solver_session.results.graphics.contour["contour_pressure"] = { +solver_session.settings.results.graphics.contour.create(name="contour_pressure") +solver_session.settings.results.graphics.contour["contour_pressure"] = { "field": "pressure", "surfaces_list": ["mid_plane"], } -solver_session.results.graphics.contour.display(object_name="contour_pressure") +solver_session.settings.results.graphics.contour.display(object_name="contour_pressure") -solver_session.results.graphics.contour.create(name="contour_mach") -solver_session.results.graphics.contour["contour_mach"] = { +solver_session.settings.results.graphics.contour.create(name="contour_mach") +solver_session.settings.results.graphics.contour["contour_mach"] = { "field": "mach-number", "surfaces_list": ["mid_plane"], } -solver_session.results.graphics.contour.display(object_name="contour_mach") +solver_session.settings.results.graphics.contour.display(object_name="contour_mach") ############################################### # Post processing with PyVista (3D visualization) diff --git a/examples/00-fluent/modeling_cavitation.py b/examples/00-fluent/modeling_cavitation.py index 848a5c042c9a..38555042457d 100644 --- a/examples/00-fluent/modeling_cavitation.py +++ b/examples/00-fluent/modeling_cavitation.py @@ -1,3 +1,9 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # diff --git a/examples/00-fluent/parametric_static_mixer_1.py b/examples/00-fluent/parametric_static_mixer_1.py index b7aa8c114b7d..bfe459bfdd41 100644 --- a/examples/00-fluent/parametric_static_mixer_1.py +++ b/examples/00-fluent/parametric_static_mixer_1.py @@ -1,3 +1,9 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # diff --git a/examples/00-fluent/radiation_headlamp.py b/examples/00-fluent/radiation_headlamp.py index 43150031ea65..7c2fa1c5f139 100644 --- a/examples/00-fluent/radiation_headlamp.py +++ b/examples/00-fluent/radiation_headlamp.py @@ -1,3 +1,9 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -484,7 +490,7 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~ # Enable residual plots and set the convergence criteria to 'none'. -solver_session.solution.monitor.residual.options.criterion_type = "none" +solver_session.settings.solution.monitor.residual.options.criterion_type = "none" ########################################################################################################### # Define surface reports diff --git a/examples/00-fluent/single_battery_cell_workflow.py b/examples/00-fluent/single_battery_cell_workflow.py index 221a82fb0462..a461b51b5857 100644 --- a/examples/00-fluent/single_battery_cell_workflow.py +++ b/examples/00-fluent/single_battery_cell_workflow.py @@ -1,3 +1,9 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # diff --git a/examples/00-fluent/species_transport.py b/examples/00-fluent/species_transport.py index 7bc213c44136..0a729d8eb8f3 100644 --- a/examples/00-fluent/species_transport.py +++ b/examples/00-fluent/species_transport.py @@ -1,3 +1,9 @@ +# /// script +# dependencies = [ +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # diff --git a/examples/00-fluent/steady_vortex.py b/examples/00-fluent/steady_vortex.py index 3157db724391..3c5718a262cf 100644 --- a/examples/00-fluent/steady_vortex.py +++ b/examples/00-fluent/steady_vortex.py @@ -1,3 +1,10 @@ +# /// script +# dependencies = [ +# "imageio", +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # diff --git a/examples/00-fluent/tyler_sofrin_modes.py b/examples/00-fluent/tyler_sofrin_modes.py index 6055efe60567..7a6822f58bc1 100644 --- a/examples/00-fluent/tyler_sofrin_modes.py +++ b/examples/00-fluent/tyler_sofrin_modes.py @@ -1,3 +1,11 @@ +# /// script +# dependencies = [ +# "matplotlib", +# "numpy", +# "ansys-fluent-core", +# ] +# /// + # Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates. # SPDX-License-Identifier: MIT # @@ -101,7 +109,6 @@ # Post-Processing Implementation # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ####################################################################################### # Import required libraries/modules # ===================================================================================== @@ -146,7 +153,7 @@ # .. note:: # The dat file should correspond to the already completed DFT simulation. -session.file.read(file_type="case-data", file_name=import_filename) +session.settings.file.read(file_type="case-data", file_name=import_filename) ####################################################################################### # Define User constant/variables @@ -181,8 +188,8 @@ x = math.cos(math.radians(angle)) * r y = math.sin(math.radians(angle)) * r pt_name = "point-" + str(angle) - session.results.surfaces.point_surface[pt_name] = {} - session.results.surfaces.point_surface[pt_name].point = [x, y, z] + session.settings.results.surfaces.point_surface[pt_name] = {} + session.settings.results.surfaces.point_surface[pt_name].point = [x, y, z] ####################################################################################### # Compute Fourier coefficients at each monitor point (An, Bn) @@ -193,12 +200,12 @@ for angle_ind, angle in enumerate(range(0, 360, d_theta)): for n_ind, variable in enumerate(varname): if len(variable) >= 4 and variable[:4] == "mean": - session.solution.report_definitions.surface["mag-report"] = { + session.settings.solution.report_definitions.surface["mag-report"] = { "report_type": "surface-vertexavg", "surface_names": ["point-" + str(angle)], "field": str(variable), } - mag = session.solution.report_definitions.compute( + mag = session.settings.solution.report_definitions.compute( report_defs=["mag-report"] ) mag = mag[0]["mag-report"][0] @@ -210,16 +217,16 @@ "surface_names": ["point-" + str(angle)], "field": str(variable) + "-mag", } - mag = session.solution.report_definitions.compute( + mag = session.settings.solution.report_definitions.compute( report_defs=["mag-report"] ) mag = mag[0]["mag-report"][0] - session.solution.report_definitions.surface["phase-report"] = { + session.settings.solution.report_definitions.surface["phase-report"] = { "report_type": "surface-vertexavg", "surface_names": ["point-" + str(angle)], "field": str(variable) + "-phase", } - phase = session.solution.report_definitions.compute( + phase = session.settings.solution.report_definitions.compute( report_defs=["phase-report"] ) phase = phase[0]["phase-report"][0] diff --git a/src/ansys/fluent/core/examples/downloads.py b/src/ansys/fluent/core/examples/downloads.py index f41527e71ccd..7dc848fc73dc 100644 --- a/src/ansys/fluent/core/examples/downloads.py +++ b/src/ansys/fluent/core/examples/downloads.py @@ -27,6 +27,7 @@ from pathlib import Path import re import shutil +from typing import TypeAlias import zipfile import ansys.fluent.core as pyfluent @@ -71,10 +72,13 @@ def _get_file_url(file_name: str, directory: str | None = None) -> str: return f"https://github.com/ansys/example-data/raw/main/{file_name}" +PathType: TypeAlias = "os.PathLike[str | bytes] | str | bytes" + + def _retrieve_file( url: str, file_name: str, - save_path: str | None = None, + save_path: "PathType | None" = None, return_without_path: bool | None = False, ) -> str: """Download specified file from specified URL.""" @@ -121,7 +125,7 @@ def _retrieve_file( def download_file( file_name: str, directory: str | None = None, - save_path: str | None = None, + save_path: "PathType | None" = None, return_without_path: bool | None = None, ) -> str: """Download specified example file from the Ansys example data repository. diff --git a/src/ansys/fluent/core/launcher/standalone_launcher.py b/src/ansys/fluent/core/launcher/standalone_launcher.py index 34ca6a85640e..504c7b095ab5 100644 --- a/src/ansys/fluent/core/launcher/standalone_launcher.py +++ b/src/ansys/fluent/core/launcher/standalone_launcher.py @@ -306,13 +306,13 @@ def __call__(self): elif self.argvals["lightweight_mode"]: session.read_case_lightweight(self.argvals["case_file_name"]) else: - session.file.read( + session.settings.file.read( file_type="case", file_name=self.argvals["case_file_name"], ) if self.argvals["case_data_file_name"]: if not FluentMode.is_meshing(self.argvals["mode"]): - session.file.read( + session.settings.file.read( file_type="case-data", file_name=self.argvals["case_data_file_name"], ) diff --git a/src/ansys/fluent/core/parametric.py b/src/ansys/fluent/core/parametric.py index fb5c9ae19e79..a13f38837745 100644 --- a/src/ansys/fluent/core/parametric.py +++ b/src/ansys/fluent/core/parametric.py @@ -60,7 +60,7 @@ def convert_design_point_parameter_units( - value: Dict[str, float | int | str] + value: Dict[str, float | int | str], ) -> Dict[str, float | int]: """Convert design point parameter units.""" diff --git a/src/ansys/fluent/core/services/batch_ops.py b/src/ansys/fluent/core/services/batch_ops.py index acf2e83adca9..441ffd09ced2 100644 --- a/src/ansys/fluent/core/services/batch_ops.py +++ b/src/ansys/fluent/core/services/batch_ops.py @@ -68,7 +68,7 @@ class BatchOps: -------- >>> with pyfluent.BatchOps(solver): >>> solver.tui.file.read_case("mixing_elbow.cas.h5") - >>> solver.results.graphics.mesh["mesh-1"] = {} + >>> solver.settings.results.graphics.mesh["mesh-1"] = {} Above code will execute both operations through a single gRPC call upon exiting the ``with`` block. @@ -83,10 +83,10 @@ class BatchOps: >>> with pyfluent.BatchOps(solver): >>> solver.tui.file.read_case("mixing_elbow.cas.h5") - >>> solver.results.graphics.mesh["mesh-1"] = {} - >>> solver.results.graphics.mesh["mesh-1"].surfaces_list = ["wall-elbow"] + >>> solver.settings.results.graphics.mesh["mesh-1"] = {} + >>> solver.settings.results.graphics.mesh["mesh-1"].surfaces_list = ["wall-elbow"] - will throw a ``KeyError`` as ``solver.results.graphics.mesh["mesh-1"]`` attempts to + will throw a ``KeyError`` as ``solver.settings.results.graphics.mesh["mesh-1"]`` attempts to access the ``mesh-1`` mesh object which has not been created yet. """ diff --git a/src/ansys/fluent/core/session_solver.py b/src/ansys/fluent/core/session_solver.py index 364684d0c7ae..2669eafd0217 100644 --- a/src/ansys/fluent/core/session_solver.py +++ b/src/ansys/fluent/core/session_solver.py @@ -326,7 +326,9 @@ def read_case_lightweight(self, file_name: str): Case file name """ - self.file.read(file_type="case", file_name=file_name, lightweight_setup=True) + self.settings.file.read( + file_type="case", file_name=file_name, lightweight_setup=True + ) launcher_args = dict(self._launcher_args) launcher_args.pop("lightweight_mode", None) launcher_args["case_file_name"] = file_name diff --git a/src/ansys/fluent/core/solver/function/reduction.py b/src/ansys/fluent/core/solver/function/reduction.py index ff4c412a91f0..5d71a310e2a3 100644 --- a/src/ansys/fluent/core/solver/function/reduction.py +++ b/src/ansys/fluent/core/solver/function/reduction.py @@ -62,23 +62,24 @@ >>> # condition surfaces of the given solver >>> reduction.area_average( ... expr = "AbsolutePressure", -... locations = solver.setup.boundary_conditions.velocity_inlet +... locations = solver.settings.setup.boundary_conditions.velocity_inlet ... ) 10623.0 >>> from ansys.fluent.core.solver.function import reduction >>> # Compute the minimum of the square of velocity magnitude >>> # for all pressure outlets across two solvers ->>> named_exprs = solver1.setup.named_expressions +>>> named_exprs = solver1.settings.setup.named_expressions >>> vsquared = named_exprs["vsquared"] = {} >>> vsquared.definition = "VelocityMagnitude ** 2" >>> reduction.minimum( ... expr = vsquared, -... locations = solver1.setup.boundary_conditions.pressure_outlet -... + solver2.setup.boundary_conditions.pressure_outlet +... locations = solver1.settings.setup.boundary_conditions.pressure_outlet +... + solver2.settings.setup.boundary_conditions.pressure_outlet ... ) 19.28151 """ + from collections.abc import Iterable from enum import Enum @@ -189,7 +190,7 @@ def _locns(locns, ctxt): def _eval_expr(solver, expr_str): - named_exprs = solver.setup.named_expressions + named_exprs = solver.settings.setup.named_expressions expr_name = "temp_expr_1" named_exprs[expr_name] = {} # request feature: anonymous name object creation diff --git a/src/ansys/fluent/core/utils/data_transfer.py b/src/ansys/fluent/core/utils/data_transfer.py index 5a55b17708b7..f1a9f124fe1d 100644 --- a/src/ansys/fluent/core/utils/data_transfer.py +++ b/src/ansys/fluent/core/utils/data_transfer.py @@ -49,9 +49,11 @@ def _read_case_into(solver, file_type, file_name, full_file_name_container=None) except AttributeError: pass if full_file_name_container: - solver.file.read(file_name=full_file_name_container, file_type=file_type) + solver.settings.file.read( + file_name=full_file_name_container, file_type=file_type + ) else: - solver.file.read(file_name=file_name, file_type=file_type) + solver.settings.file.read(file_name=file_name, file_type=file_type) network_logger.info(f"Have read case: {file_name}") diff --git a/src/ansys/fluent/core/utils/file_transfer_service.py b/src/ansys/fluent/core/utils/file_transfer_service.py index e78738252196..7dc70976f5f1 100644 --- a/src/ansys/fluent/core/utils/file_transfer_service.py +++ b/src/ansys/fluent/core/utils/file_transfer_service.py @@ -224,8 +224,8 @@ class ContainerFileTransferStrategy(FileTransferStrategy): >>> case_file_name = examples.download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") >>> solver_session = pyfluent.launch_fluent(file_transfer_service=ContainerFileTransferStrategy()) >>> solver_session.upload(file_name=case_file_name, remote_file_name="elbow.cas.h5") - >>> solver_session.file.read_case(file_name="elbow.cas.h5") - >>> solver_session.file.write_case(file_name="write_elbow.cas.h5") + >>> solver_session.settings.file.read_case(file_name="elbow.cas.h5") + >>> solver_session.settings.file.write_case(file_name="write_elbow.cas.h5") >>> solver_session.download(file_name="write_elbow.cas.h5", local_directory="") """ @@ -339,7 +339,7 @@ def upload(self, file_name: list[str] | str, remote_file_name: str | None = None >>> case_file_name = examples.download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") >>> solver_session = pyfluent.launch_fluent(file_transfer_service=ContainerFileTransferStrategy()) >>> solver_session.upload(file_name=case_file_name, remote_file_name="elbow.cas.h5") - >>> solver_session.file.read_case(file_name="elbow.cas.h5") + >>> solver_session.settings.file.read_case(file_name="elbow.cas.h5") """ files = _get_files(file_name) if self.client: @@ -379,7 +379,7 @@ def download(self, file_name: list[str] | str, local_directory: str | None = Non >>> from ansys.fluent.core.utils.file_transfer_service import ContainerFileTransferStrategy >>> case_file_name = examples.download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") >>> solver_session = pyfluent.launch_fluent(file_transfer_service=ContainerFileTransferStrategy()) - >>> solver_session.file.write_case(file_name="write_elbow.cas.h5") + >>> solver_session.settings.file.write_case(file_name="write_elbow.cas.h5") >>> solver_session.download(file_name="write_elbow.cas.h5", local_directory="") """ files = _get_files(file_name) diff --git a/tests/conftest.py b/tests/conftest.py index f286c7ca8b6d..ba16f5e735f8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -365,7 +365,7 @@ def new_solver_session_2d(): def static_mixer_settings_session(new_solver_session): solver = new_solver_session case_name = download_file("Static_Mixer_main.cas.h5", "pyfluent/static_mixer") - solver.file.read( + solver.settings.file.read( file_type="case", file_name=case_name, lightweight_setup=True, @@ -377,7 +377,7 @@ def static_mixer_settings_session(new_solver_session): def static_mixer_case_session(new_solver_session): solver = new_solver_session case_name = download_file("Static_Mixer_main.cas.h5", "pyfluent/static_mixer") - solver.file.read(file_type="case", file_name=case_name) + solver.settings.file.read(file_type="case", file_name=case_name) return solver @@ -433,7 +433,7 @@ def mixing_elbow_param_case_data_session(new_solver_session): def disk_settings_session(new_solver_session_2d): solver = new_solver_session_2d case_name = download_file("disk.cas.h5", "pyfluent/rotating_disk") - solver.file.read( + solver.settings.file.read( file_type="case", file_name=case_name, lightweight_setup=True, @@ -445,7 +445,7 @@ def disk_settings_session(new_solver_session_2d): def disk_case_session(new_solver_session_2d): solver = new_solver_session_2d case_name = download_file("disk.cas.h5", "pyfluent/rotating_disk") - solver.file.read(file_type="case", file_name=case_name) + solver.settings.file.read(file_type="case", file_name=case_name) return solver @@ -456,7 +456,7 @@ def periodic_rot_settings_session(new_solver_session): "periodic_rot.cas.h5", "pyfluent/periodic_rot", ) - solver.file.read( + solver.settings.file.read( file_type="case", file_name=case_name, lightweight_setup=True, diff --git a/tests/fluent_fixtures.py b/tests/fluent_fixtures.py index 19992dc821aa..afcf2050d341 100644 --- a/tests/fluent_fixtures.py +++ b/tests/fluent_fixtures.py @@ -108,7 +108,7 @@ def new_solver_session_2d(globals): def static_mixer_settings_session(globals): solver = new_solver_session(globals) case_name = download_file("Static_Mixer_main.cas.h5", "pyfluent/static_mixer") - solver.file.read( + solver.settings.file.read( file_type="case", file_name=case_name, lightweight_setup=True, @@ -120,7 +120,7 @@ def static_mixer_settings_session(globals): def static_mixer_case_session(globals): solver = new_solver_session(globals) case_name = download_file("Static_Mixer_main.cas.h5", "pyfluent/static_mixer") - solver.file.read(file_type="case", file_name=case_name) + solver.settings.file.read(file_type="case", file_name=case_name) return solver @@ -158,7 +158,7 @@ def mixing_elbow_param_case_data_session(globals): def disk_settings_session(globals): solver = new_solver_session_2d(globals) case_name = download_file("disk.cas.h5", "pyfluent/rotating_disk") - solver.file.read( + solver.settings.file.read( file_type="case", file_name=case_name, lightweight_setup=True, @@ -170,7 +170,7 @@ def disk_settings_session(globals): def disk_case_session(globals): solver = new_solver_session_2d(globals) case_name = download_file("disk.cas.h5", "pyfluent/rotating_disk") - solver.file.read(file_type="case", file_name=case_name) + solver.settings.file.read(file_type="case", file_name=case_name) return solver @@ -181,7 +181,7 @@ def periodic_rot_settings_session(globals): "periodic_rot.cas.h5", "pyfluent/periodic_rot", ) - solver.file.read( + solver.settings.file.read( file_type="case", file_name=case_name, lightweight_setup=True, @@ -213,5 +213,5 @@ def new_solver_session2(globals): def static_mixer_case_session2(globals): session = new_solver_session2(globals) case_name = download_file("Static_Mixer_main.cas.h5", "pyfluent/static_mixer") - session.file.read(file_type="case", file_name=case_name) + session.settings.file.read(file_type="case", file_name=case_name) return session diff --git a/tests/parametric/test_parametric_workflow.py b/tests/parametric/test_parametric_workflow.py index 7d1ec9f50f74..8d3d06c9cab6 100644 --- a/tests/parametric/test_parametric_workflow.py +++ b/tests/parametric/test_parametric_workflow.py @@ -65,9 +65,9 @@ def test_parametric_workflow(): else: inside_container = False solver_session = pyfluent.launch_fluent(processor_count=2, cwd=tmp_save_path) - solver_session.file.read_case(file_name=import_file_name) - solver_session.solution.run_calculation.iter_count = 100 - solver_session.tui.define.parameters.enable_in_TUI("yes") + solver_session.settings.file.read_case(file_name=import_file_name) + solver_session.settings.solution.run_calculation.iter_count = 100 + solver_session.tui.define.settings.parameters.enable_in_TUI("yes") velocity_inlet = solver_session.tui.define.boundary_conditions.set.velocity_inlet velocity_inlet("inlet1", (), "vmag", "yes", "inlet1_vel", 1, "quit") @@ -75,23 +75,25 @@ def test_parametric_workflow(): velocity_inlet("inlet2", (), "vmag", "yes", "no", "inlet2_vel", 1, "quit") velocity_inlet("inlet2", (), "temperature", "yes", "no", "inlet2_temp", 350, "quit") - solver_session.solution.report_definitions.surface["outlet-temp-avg"] = {} - outlet_temp_avg = solver_session.solution.report_definitions.surface[ + solver_session.settings.solution.report_definitions.surface["outlet-temp-avg"] = {} + outlet_temp_avg = solver_session.settings.solution.report_definitions.surface[ "outlet-temp-avg" ] outlet_temp_avg.report_type = "surface-areaavg" outlet_temp_avg.field = "temperature" outlet_temp_avg.surface_names = ["outlet"] - solver_session.solution.report_definitions.surface["outlet-vel-avg"] = {} - outlet_vel_avg = solver_session.solution.report_definitions.surface[ + solver_session.settings.solution.report_definitions.surface["outlet-vel-avg"] = {} + outlet_vel_avg = solver_session.settings.solution.report_definitions.surface[ "outlet-vel-avg" ] outlet_vel_avg.report_type = "surface-areaavg" outlet_vel_avg.field = "velocity-magnitude" outlet_vel_avg.surface_names = ["outlet"] - create_output_param = solver_session.tui.define.parameters.output_parameters.create + create_output_param = ( + solver_session.tui.define.settings.parameters.output_parameters.create + ) create_output_param("report-definition", "outlet-temp-avg") create_output_param("report-definition", "outlet-vel-avg") @@ -102,11 +104,11 @@ def test_parametric_workflow(): write_case_path = str(container_workdir / "Static_Mixer_Parameters.cas.h5") else: write_case_path = str(case_path) - solver_session.file.write(file_type="case", file_name=write_case_path) + solver_session.settings.file.write(file_type="case", file_name=write_case_path) assert case_path.exists() assert len(solver_session.parametric_studies) == 0 - solver_session.parametric_studies.initialize() + solver_session.settings.parametric_studies.initialize() assert len(solver_session.parametric_studies) == 1 study1_name = "Static_Mixer_main-Solve" assert study1_name in solver_session.parametric_studies @@ -166,16 +168,20 @@ def test_parametric_workflow(): write_design_table = str(container_workdir / "design_point_table_study_1.csv") else: write_design_table = str(design_point_table) - solver_session.parametric_studies.export_design_table(filepath=write_design_table) + solver_session.settings.parametric_studies.export_design_table( + filepath=write_design_table + ) assert design_point_table.exists() study1.design_points.delete_design_points(design_points=[dp1.obj_name]) assert len(study1.design_points) == 2 - study_names = set([*solver_session.parametric_studies.keys()]) - solver_session.parametric_studies.duplicate() + study_names = set([*solver_session.settings.parametric_studies.keys()]) + solver_session.settings.parametric_studies.duplicate() assert len(solver_session.parametric_studies) == 2 study2_name = ( - set([*solver_session.parametric_studies.keys()]).difference(study_names).pop() + set([*solver_session.settings.parametric_studies.keys()]) + .difference(study_names) + .pop() ) study2 = solver_session.parametric_studies[study2_name] assert len(study2.design_points) == 2 @@ -190,7 +196,7 @@ def test_parametric_workflow(): else: write_project_file_name = str(project_file_name) - solver_session.file.parametric_project.save_as( + solver_session.settings.file.parametric_project.save_as( project_filename=write_project_file_name ) assert project_file_name.exists() @@ -211,10 +217,10 @@ def test_parametric_workflow(): else: solver_session = pyfluent.launch_fluent(processor_count=2, cwd=tmp_save_path) - solver_session.file.parametric_project.open( + solver_session.settings.file.parametric_project.open( project_filename=write_project_file_name ) - solver_session.file.parametric_project.save() + solver_session.settings.file.parametric_project.save() project_save_as_name = Path(tmp_save_path) / "static_mixer_study_save_as.flprj" if inside_container: write_project_save_as_name = str( @@ -223,7 +229,7 @@ def test_parametric_workflow(): else: write_project_save_as_name = str(project_save_as_name) - solver_session.file.parametric_project.save_as( + solver_session.settings.file.parametric_project.save_as( project_filename=write_project_save_as_name ) assert project_save_as_name.exists() @@ -237,7 +243,7 @@ def test_parametric_workflow(): ) else: write_project_save_as_copy_name = str(project_save_as_copy_name) - solver_session.file.parametric_project.save_as_copy( + solver_session.settings.file.parametric_project.save_as_copy( project_filename=write_project_save_as_copy_name ) assert project_save_as_copy_name.exists() @@ -247,7 +253,9 @@ def test_parametric_workflow(): write_archive_name = str(container_workdir / "static_mixer_study.flprz") else: write_archive_name = str(archive_name) - solver_session.file.parametric_project.archive(archive_name=write_archive_name) + solver_session.settings.file.parametric_project.archive( + archive_name=write_archive_name + ) assert archive_name.exists() solver_session.exit() @@ -263,14 +271,18 @@ def test_parameters_list_function(static_mixer_settings_session): velocity_inlet("inlet2", (), "vmag", "yes", "no", "inlet2_vel", 1, "quit") velocity_inlet("inlet2", (), "temperature", "yes", "no", "inlet2_temp", 350, "quit") - solver.solution.report_definitions.surface["outlet-temp-avg"] = {} - outlet_temp_avg = solver.solution.report_definitions.surface["outlet-temp-avg"] + solver.settings.solution.report_definitions.surface["outlet-temp-avg"] = {} + outlet_temp_avg = solver.settings.solution.report_definitions.surface[ + "outlet-temp-avg" + ] outlet_temp_avg.report_type = "surface-areaavg" outlet_temp_avg.field = "temperature" outlet_temp_avg.surface_names = ["outlet"] - solver.solution.report_definitions.surface["outlet-vel-avg"] = {} - outlet_vel_avg = solver.solution.report_definitions.surface["outlet-vel-avg"] + solver.settings.solution.report_definitions.surface["outlet-vel-avg"] = {} + outlet_vel_avg = solver.settings.solution.report_definitions.surface[ + "outlet-vel-avg" + ] outlet_vel_avg.report_type = "surface-areaavg" outlet_vel_avg.field = "velocity-magnitude" outlet_vel_avg.surface_names = ["outlet"] @@ -288,8 +300,8 @@ def test_parameters_list_function(static_mixer_settings_session): unitless_quantity.surface_names = ["outlet"] unitless_quantity.output_parameter = True - input_parameters_list = solver.parameters.input_parameters.list() - output_parameters_list = solver.parameters.output_parameters.list() + input_parameters_list = solver.settings.parameters.input_parameters.list() + output_parameters_list = solver.settings.parameters.output_parameters.list() fluent_version = solver.get_fluent_version() if fluent_version >= FluentVersion.v261: assert input_parameters_list == { diff --git a/tests/podman_compose.py b/tests/podman_compose.py index 0888f612f40d..1b533fb67e8d 100644 --- a/tests/podman_compose.py +++ b/tests/podman_compose.py @@ -33,5 +33,5 @@ solver = pyfluent.launch_fluent(container_dict=container_dict, use_podman_compose=True) assert len(solver._container.ports) == 2 case_file_name = examples.download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") -solver.file.read(file_name=case_file_name, file_type="case") +solver.settings.file.read(file_name=case_file_name, file_type="case") solver.exit() diff --git a/tests/test_batch_ops.py b/tests/test_batch_ops.py index 5d3400a27318..ca33b2c532e4 100644 --- a/tests/test_batch_ops.py +++ b/tests/test_batch_ops.py @@ -29,12 +29,12 @@ @pytest.mark.fluent_version(">=24.1") def test_batch_ops_create_mesh(new_solver_session): solver = new_solver_session - mesh = solver.results.graphics.mesh + mesh = solver.settings.results.graphics.mesh case_file_name = examples.download_file( "mixing_elbow.cas.h5", "pyfluent/mixing_elbow" ) with pyfluent.BatchOps(solver): - solver.file.read( + solver.settings.file.read( file_name=case_file_name, file_type="case", lightweight_setup=True ) mesh["mesh-1"] = {} @@ -47,13 +47,13 @@ def test_batch_ops_create_mesh(new_solver_session): @pytest.mark.fluent_version(">=24.1") def test_batch_ops_create_mesh_and_access_fails(new_solver_session): solver = new_solver_session - mesh = solver.results.graphics.mesh + mesh = solver.settings.results.graphics.mesh case_file_name = examples.download_file( "mixing_elbow.cas.h5", "pyfluent/mixing_elbow" ) with pytest.raises(KeyError): with pyfluent.BatchOps(solver): - solver.file.read( + solver.settings.file.read( file_name=case_file_name, file_type="case", lightweight_setup=True ) mesh["mesh-1"] = {} diff --git a/tests/test_builtin_settings.py b/tests/test_builtin_settings.py index 68dc61fd5aed..8f59aedf0605 100644 --- a/tests/test_builtin_settings.py +++ b/tests/test_builtin_settings.py @@ -38,24 +38,27 @@ def test_builtin_settings(mixing_elbow_case_data_session): solver = mixing_elbow_case_data_session fluent_version = solver.get_fluent_version() assert Setup(settings_source=solver) == solver.setup - assert General(settings_source=solver) == solver.setup.general - assert Models(settings_source=solver) == solver.setup.models - assert Multiphase(settings_source=solver) == solver.setup.models.multiphase - assert Energy(settings_source=solver) == solver.setup.models.energy - assert Viscous(settings_source=solver) == solver.setup.models.viscous + assert General(settings_source=solver) == solver.settings.setup.general + assert Models(settings_source=solver) == solver.settings.setup.models + assert Multiphase(settings_source=solver) == solver.settings.setup.models.multiphase + assert Energy(settings_source=solver) == solver.settings.setup.models.energy + assert Viscous(settings_source=solver) == solver.settings.setup.models.viscous if fluent_version >= FluentVersion.v232: - assert Radiation(settings_source=solver) == solver.setup.models.radiation + assert ( + Radiation(settings_source=solver) == solver.settings.setup.models.radiation + ) else: with pytest.raises(RuntimeError): Radiation(settings_source=solver) if fluent_version >= FluentVersion.v232: - assert Species(settings_source=solver) == solver.setup.models.species + assert Species(settings_source=solver) == solver.settings.setup.models.species else: with pytest.raises(RuntimeError): Species(settings_source=solver) if fluent_version >= FluentVersion.v231: assert ( - DiscretePhase(settings_source=solver) == solver.setup.models.discrete_phase + DiscretePhase(settings_source=solver) + == solver.settings.setup.models.discrete_phase ) else: with pytest.raises(RuntimeError): @@ -63,7 +66,7 @@ def test_builtin_settings(mixing_elbow_case_data_session): if fluent_version >= FluentVersion.v231: assert ( Injections(settings_source=solver) - == solver.setup.models.discrete_phase.injections + == solver.settings.setup.models.discrete_phase.injections ) else: with pytest.raises(RuntimeError): @@ -71,91 +74,102 @@ def test_builtin_settings(mixing_elbow_case_data_session): if fluent_version >= FluentVersion.v231: assert ( VirtualBladeModel(settings_source=solver) - == solver.setup.models.virtual_blade_model + == solver.settings.setup.models.virtual_blade_model ) else: with pytest.raises(RuntimeError): VirtualBladeModel(settings_source=solver) if fluent_version >= FluentVersion.v231: - assert Optics(settings_source=solver) == solver.setup.models.optics + assert Optics(settings_source=solver) == solver.settings.setup.models.optics else: with pytest.raises(RuntimeError): Optics(settings_source=solver) if fluent_version >= FluentVersion.v232: - assert Structure(settings_source=solver) == solver.setup.models.structure + assert ( + Structure(settings_source=solver) == solver.settings.setup.models.structure + ) else: with pytest.raises(RuntimeError): Structure(settings_source=solver) if fluent_version >= FluentVersion.v232: - assert Ablation(settings_source=solver) == solver.setup.models.ablation + assert Ablation(settings_source=solver) == solver.settings.setup.models.ablation else: with pytest.raises(RuntimeError): Ablation(settings_source=solver) if fluent_version >= FluentVersion.v241: - assert EChemistry(settings_source=solver) == solver.setup.models.echemistry + assert ( + EChemistry(settings_source=solver) + == solver.settings.setup.models.echemistry + ) else: with pytest.raises(RuntimeError): EChemistry(settings_source=solver) if fluent_version >= FluentVersion.v241: - assert Battery(settings_source=solver) == solver.setup.models.battery + assert Battery(settings_source=solver) == solver.settings.setup.models.battery else: with pytest.raises(RuntimeError): Battery(settings_source=solver) if fluent_version >= FluentVersion.v241: assert ( SystemCoupling(settings_source=solver) - == solver.setup.models.system_coupling + == solver.settings.setup.models.system_coupling ) else: with pytest.raises(RuntimeError): SystemCoupling(settings_source=solver) if fluent_version >= FluentVersion.v241: - assert Sofc(settings_source=solver) == solver.setup.models.sofc + assert Sofc(settings_source=solver) == solver.settings.setup.models.sofc else: with pytest.raises(RuntimeError): Sofc(settings_source=solver) if fluent_version >= FluentVersion.v242: - assert Pemfc(settings_source=solver) == solver.setup.models.pemfc + assert Pemfc(settings_source=solver) == solver.settings.setup.models.pemfc else: with pytest.raises(RuntimeError): Pemfc(settings_source=solver) - assert Materials(settings_source=solver) == solver.setup.materials - assert FluidMaterials(settings_source=solver) == solver.setup.materials.fluid + assert Materials(settings_source=solver) == solver.settings.setup.materials + assert ( + FluidMaterials(settings_source=solver) == solver.settings.setup.materials.fluid + ) assert ( FluidMaterial(settings_source=solver, name="air") - == solver.setup.materials.fluid["air"] + == solver.settings.setup.materials.fluid["air"] + ) + assert ( + SolidMaterials(settings_source=solver) == solver.settings.setup.materials.solid ) - assert SolidMaterials(settings_source=solver) == solver.setup.materials.solid assert ( SolidMaterial(settings_source=solver, name="aluminum") - == solver.setup.materials.solid["aluminum"] + == solver.settings.setup.materials.solid["aluminum"] ) assert ( - CellZoneConditions(settings_source=solver) == solver.setup.cell_zone_conditions + CellZoneConditions(settings_source=solver) + == solver.settings.setup.cell_zone_conditions ) if fluent_version >= FluentVersion.v231: assert ( CellZoneCondition(settings_source=solver, name="elbow-fluid") - == solver.setup.cell_zone_conditions["elbow-fluid"] + == solver.settings.setup.cell_zone_conditions["elbow-fluid"] ) else: with pytest.raises(RuntimeError): CellZoneCondition(settings_source=solver, name="elbow-fluid") assert ( FluidCellZones(settings_source=solver) - == solver.setup.cell_zone_conditions.fluid + == solver.settings.setup.cell_zone_conditions.fluid ) assert ( FluidCellZone(settings_source=solver, name="elbow-fluid") - == solver.setup.cell_zone_conditions.fluid["elbow-fluid"] + == solver.settings.setup.cell_zone_conditions.fluid["elbow-fluid"] ) assert ( - BoundaryConditions(settings_source=solver) == solver.setup.boundary_conditions + BoundaryConditions(settings_source=solver) + == solver.settings.setup.boundary_conditions ) if fluent_version >= FluentVersion.v231: assert ( BoundaryCondition(settings_source=solver, name="cold-inlet") - == solver.setup.boundary_conditions["cold-inlet"] + == solver.settings.setup.boundary_conditions["cold-inlet"] ) else: with pytest.raises(RuntimeError): @@ -164,47 +178,57 @@ def test_builtin_settings(mixing_elbow_case_data_session): BoundaryCondition(settings_source=solver, new_instance_name="bc-1") assert ( VelocityInlets(settings_source=solver) - == solver.setup.boundary_conditions.velocity_inlet + == solver.settings.setup.boundary_conditions.velocity_inlet ) assert ( VelocityInlet(settings_source=solver, name="cold-inlet") - == solver.setup.boundary_conditions.velocity_inlet["cold-inlet"] + == solver.settings.setup.boundary_conditions.velocity_inlet["cold-inlet"] ) assert ( InteriorBoundaries(settings_source=solver) - == solver.setup.boundary_conditions.interior + == solver.settings.setup.boundary_conditions.interior ) assert ( PressureOutlets(settings_source=solver) - == solver.setup.boundary_conditions.pressure_outlet + == solver.settings.setup.boundary_conditions.pressure_outlet ) assert ( PressureOutlet(settings_source=solver, name="outlet") - == solver.setup.boundary_conditions.pressure_outlet["outlet"] + == solver.settings.setup.boundary_conditions.pressure_outlet["outlet"] ) assert ( - WallBoundaries(settings_source=solver) == solver.setup.boundary_conditions.wall + WallBoundaries(settings_source=solver) + == solver.settings.setup.boundary_conditions.wall ) assert ( WallBoundary(settings_source=solver, name="wall-elbow") - == solver.setup.boundary_conditions.wall["wall-elbow"] + == solver.settings.setup.boundary_conditions.wall["wall-elbow"] ) if fluent_version >= FluentVersion.v231 and fluent_version < FluentVersion.v251: with pytest.raises(AttributeError): WallBoundary(settings_source=solver, new_instance_name="wall-1") if fluent_version >= FluentVersion.v232: - assert MeshInterfaces(settings_source=solver) == solver.setup.mesh_interfaces + assert ( + MeshInterfaces(settings_source=solver) + == solver.settings.setup.mesh_interfaces + ) else: with pytest.raises(RuntimeError): MeshInterfaces(settings_source=solver) if fluent_version >= FluentVersion.v251: - assert DynamicMesh(settings_source=solver) == solver.setup.dynamic_mesh + assert DynamicMesh(settings_source=solver) == solver.settings.setup.dynamic_mesh else: with pytest.raises(RuntimeError): DynamicMesh(settings_source=solver) - assert ReferenceValues(settings_source=solver) == solver.setup.reference_values + assert ( + ReferenceValues(settings_source=solver) + == solver.settings.setup.reference_values + ) if fluent_version >= FluentVersion.v232: - assert ReferenceFrames(settings_source=solver) == solver.setup.reference_frames + assert ( + ReferenceFrames(settings_source=solver) + == solver.settings.setup.reference_frames + ) else: with pytest.raises(RuntimeError): ReferenceFrames(settings_source=solver) @@ -213,101 +237,114 @@ def test_builtin_settings(mixing_elbow_case_data_session): if fluent_version != FluentVersion.v251: assert ( ReferenceFrame(settings_source=solver, name="global") - == solver.setup.reference_frames["global"] + == solver.settings.setup.reference_frames["global"] ) else: with pytest.raises(RuntimeError): ReferenceFrame(settings_source=solver, name="global") if fluent_version >= FluentVersion.v232: assert ( - NamedExpressions(settings_source=solver) == solver.setup.named_expressions + NamedExpressions(settings_source=solver) + == solver.settings.setup.named_expressions ) else: with pytest.raises(RuntimeError): NamedExpressions(settings_source=solver) - assert Methods(settings_source=solver) == solver.solution.methods - assert Controls(settings_source=solver) == solver.solution.controls + assert Methods(settings_source=solver) == solver.settings.solution.methods + assert Controls(settings_source=solver) == solver.settings.solution.controls assert ( - ReportDefinitions(settings_source=solver) == solver.solution.report_definitions + ReportDefinitions(settings_source=solver) + == solver.settings.solution.report_definitions ) if fluent_version >= FluentVersion.v231: - assert Monitor(settings_source=solver) == solver.solution.monitor + assert Monitor(settings_source=solver) == solver.settings.solution.monitor if fluent_version >= FluentVersion.v241: - assert Residual(settings_source=solver) == solver.solution.monitor.residual + assert ( + Residual(settings_source=solver) + == solver.settings.solution.monitor.residual + ) else: with pytest.raises(RuntimeError): Residual(settings_source=solver) assert ( - ReportFiles(settings_source=solver) == solver.solution.monitor.report_files + ReportFiles(settings_source=solver) + == solver.settings.solution.monitor.report_files ) assert ( ReportFile(settings_source=solver, new_instance_name="report-file-1") - == solver.solution.monitor.report_files["report-file-1"] + == solver.settings.solution.monitor.report_files["report-file-1"] ) assert ( ReportFile(settings_source=solver, name="report-file-1") - == solver.solution.monitor.report_files["report-file-1"] + == solver.settings.solution.monitor.report_files["report-file-1"] ) if fluent_version >= FluentVersion.v251: assert ( ReportFile(settings_source=solver) - == solver.solution.monitor.report_files["report-file-2"] + == solver.settings.solution.monitor.report_files["report-file-2"] ) assert ( - ReportPlots(settings_source=solver) == solver.solution.monitor.report_plots + ReportPlots(settings_source=solver) + == solver.settings.solution.monitor.report_plots ) assert ( ReportPlot(settings_source=solver, new_instance_name="report-plot-1") - == solver.solution.monitor.report_plots["report-plot-1"] + == solver.settings.solution.monitor.report_plots["report-plot-1"] ) assert ( ReportPlot(settings_source=solver, name="report-plot-1") - == solver.solution.monitor.report_plots["report-plot-1"] + == solver.settings.solution.monitor.report_plots["report-plot-1"] ) if fluent_version >= FluentVersion.v251: assert ( ReportPlot(settings_source=solver) - == solver.solution.monitor.report_plots["report-plot-2"] + == solver.settings.solution.monitor.report_plots["report-plot-2"] ) assert ( ConvergenceConditions(settings_source=solver) - == solver.solution.monitor.convergence_conditions + == solver.settings.solution.monitor.convergence_conditions ) else: with pytest.raises(RuntimeError): Monitor(settings_source=solver) if fluent_version >= FluentVersion.v231: - assert CellRegisters(settings_source=solver) == solver.solution.cell_registers + assert ( + CellRegisters(settings_source=solver) + == solver.settings.solution.cell_registers + ) assert ( CellRegister(settings_source=solver, new_instance_name="cell_register_1") - == solver.solution.cell_registers["cell_register_1"] + == solver.settings.solution.cell_registers["cell_register_1"] ) assert ( CellRegister(settings_source=solver, name="cell_register_1") - == solver.solution.cell_registers["cell_register_1"] + == solver.settings.solution.cell_registers["cell_register_1"] ) if fluent_version >= FluentVersion.v251: assert ( CellRegister(settings_source=solver) - == solver.solution.cell_registers["cell_register_2"] + == solver.settings.solution.cell_registers["cell_register_2"] ) else: with pytest.raises(RuntimeError): CellRegisters(settings_source=solver) - assert Initialization(settings_source=solver) == solver.solution.initialization + assert ( + Initialization(settings_source=solver) + == solver.settings.solution.initialization + ) if fluent_version >= FluentVersion.v231: assert ( CalculationActivity(settings_source=solver) - == solver.solution.calculation_activity + == solver.settings.solution.calculation_activity ) assert ( ExecuteCommands(settings_source=solver) - == solver.solution.calculation_activity.execute_commands + == solver.settings.solution.calculation_activity.execute_commands ) if fluent_version >= FluentVersion.v241: assert ( CaseModification(settings_source=solver) - == solver.solution.calculation_activity.case_modification + == solver.settings.solution.calculation_activity.case_modification ) else: with pytest.raises(RuntimeError): @@ -315,23 +352,29 @@ def test_builtin_settings(mixing_elbow_case_data_session): else: with pytest.raises(RuntimeError): CalculationActivity(settings_source=solver) - assert RunCalculation(settings_source=solver) == solver.solution.run_calculation + assert ( + RunCalculation(settings_source=solver) + == solver.settings.solution.run_calculation + ) assert Solution(settings_source=solver) == solver.solution assert Results(settings_source=solver) == solver.results - assert Surfaces(settings_source=solver) == solver.results.surfaces + assert Surfaces(settings_source=solver) == solver.settings.results.surfaces if fluent_version >= FluentVersion.v232: assert ( PointSurfaces(settings_source=solver) - == solver.results.surfaces.point_surface + == solver.settings.results.surfaces.point_surface ) assert ( - LineSurfaces(settings_source=solver) == solver.results.surfaces.line_surface + LineSurfaces(settings_source=solver) + == solver.settings.results.surfaces.line_surface ) assert ( - RakeSurfaces(settings_source=solver) == solver.results.surfaces.rake_surface + RakeSurfaces(settings_source=solver) + == solver.settings.results.surfaces.rake_surface ) assert ( - IsoSurfaces(settings_source=solver) == solver.results.surfaces.iso_surface + IsoSurfaces(settings_source=solver) + == solver.settings.results.surfaces.iso_surface ) else: with pytest.raises(RuntimeError): @@ -343,50 +386,57 @@ def test_builtin_settings(mixing_elbow_case_data_session): with pytest.raises(RuntimeError): IsoSurfaces(settings_source=solver) assert ( - PlaneSurfaces(settings_source=solver) == solver.results.surfaces.plane_surface + PlaneSurfaces(settings_source=solver) + == solver.settings.results.surfaces.plane_surface ) assert ( PlaneSurface(settings_source=solver, new_instance_name="plane-1") - == solver.results.surfaces.plane_surface["plane-1"] + == solver.settings.results.surfaces.plane_surface["plane-1"] ) assert ( PlaneSurface(settings_source=solver, name="plane-1") - == solver.results.surfaces.plane_surface["plane-1"] + == solver.settings.results.surfaces.plane_surface["plane-1"] ) if fluent_version >= FluentVersion.v241: - assert IsoClips(settings_source=solver) == solver.results.surfaces.iso_clip + assert ( + IsoClips(settings_source=solver) + == solver.settings.results.surfaces.iso_clip + ) else: with pytest.raises(RuntimeError): IsoClips(settings_source=solver) if fluent_version >= FluentVersion.v241: assert ( - ZoneSurfaces(settings_source=solver) == solver.results.surfaces.zone_surface + ZoneSurfaces(settings_source=solver) + == solver.settings.results.surfaces.zone_surface ) assert ( PartitionSurfaces(settings_source=solver) - == solver.results.surfaces.partition_surface + == solver.settings.results.surfaces.partition_surface ) assert ( TransformSurfaces(settings_source=solver) - == solver.results.surfaces.transform_surface + == solver.settings.results.surfaces.transform_surface ) assert ( ImprintSurfaces(settings_source=solver) - == solver.results.surfaces.imprint_surface + == solver.settings.results.surfaces.imprint_surface ) assert ( - PlaneSlices(settings_source=solver) == solver.results.surfaces.plane_slice + PlaneSlices(settings_source=solver) + == solver.settings.results.surfaces.plane_slice ) assert ( - SphereSlices(settings_source=solver) == solver.results.surfaces.sphere_slice + SphereSlices(settings_source=solver) + == solver.settings.results.surfaces.sphere_slice ) assert ( QuadricSurfaces(settings_source=solver) - == solver.results.surfaces.quadric_surface + == solver.settings.results.surfaces.quadric_surface ) assert ( SurfaceCells(settings_source=solver) - == solver.results.surfaces.surface_cells + == solver.settings.results.surfaces.surface_cells ) else: with pytest.raises(RuntimeError): @@ -408,38 +458,41 @@ def test_builtin_settings(mixing_elbow_case_data_session): if fluent_version >= FluentVersion.v251: assert ( ExpressionVolumes(settings_source=solver) - == solver.results.surfaces.expression_volume + == solver.settings.results.surfaces.expression_volume ) assert ( GroupSurfaces(settings_source=solver) - == solver.results.surfaces.group_surface + == solver.settings.results.surfaces.group_surface ) else: with pytest.raises(RuntimeError): ExpressionVolumes(settings_source=solver) with pytest.raises(RuntimeError): GroupSurfaces(settings_source=solver) - assert Graphics(settings_source=solver) == solver.results.graphics - assert Meshes(settings_source=solver) == solver.results.graphics.mesh - assert Contours(settings_source=solver) == solver.results.graphics.contour + assert Graphics(settings_source=solver) == solver.settings.results.graphics + assert Meshes(settings_source=solver) == solver.settings.results.graphics.mesh + assert Contours(settings_source=solver) == solver.settings.results.graphics.contour assert ( Contour(settings_source=solver, new_instance_name="contour-1") - == solver.results.graphics.contour["contour-1"] + == solver.settings.results.graphics.contour["contour-1"] ) assert ( Contour(settings_source=solver, name="contour-1") - == solver.results.graphics.contour["contour-1"] + == solver.settings.results.graphics.contour["contour-1"] ) - assert Vectors(settings_source=solver) == solver.results.graphics.vector - assert LICs(settings_source=solver) == solver.results.graphics.lic + assert Vectors(settings_source=solver) == solver.settings.results.graphics.vector + assert LICs(settings_source=solver) == solver.settings.results.graphics.lic if fluent_version >= FluentVersion.v231: - assert Pathlines(settings_source=solver) == solver.results.graphics.pathline + assert ( + Pathlines(settings_source=solver) + == solver.settings.results.graphics.pathline + ) assert ( ParticleTracks(settings_source=solver) - == solver.results.graphics.particle_track + == solver.settings.results.graphics.particle_track ) - assert Plots(settings_source=solver) == solver.results.plot - assert XYPlots(settings_source=solver) == solver.results.plot.xy_plot + assert Plots(settings_source=solver) == solver.settings.results.plot + assert XYPlots(settings_source=solver) == solver.settings.results.plot.xy_plot else: with pytest.raises(RuntimeError): Pathlines(settings_source=solver) @@ -450,10 +503,12 @@ def test_builtin_settings(mixing_elbow_case_data_session): with pytest.raises(RuntimeError): XYPlots(settings_source=solver) if fluent_version >= FluentVersion.v241: - assert Histogram(settings_source=solver) == solver.results.plot.histogram + assert ( + Histogram(settings_source=solver) == solver.settings.results.plot.histogram + ) assert ( CumulativePlots(settings_source=solver) - == solver.results.plot.cumulative_plot + == solver.settings.results.plot.cumulative_plot ) else: with pytest.raises(RuntimeError): @@ -461,10 +516,13 @@ def test_builtin_settings(mixing_elbow_case_data_session): with pytest.raises(RuntimeError): CumulativePlots(settings_source=solver) if fluent_version >= FluentVersion.v242: - assert ProfileData(settings_source=solver) == solver.results.plot.profile_data + assert ( + ProfileData(settings_source=solver) + == solver.settings.results.plot.profile_data + ) assert ( InterpolatedData(settings_source=solver) - == solver.results.plot.interpolated_data + == solver.settings.results.plot.interpolated_data ) else: with pytest.raises(RuntimeError): @@ -472,36 +530,36 @@ def test_builtin_settings(mixing_elbow_case_data_session): with pytest.raises(RuntimeError): InterpolatedData(settings_source=solver) if fluent_version >= FluentVersion.v231: - assert Scenes(settings_source=solver) == solver.results.scene + assert Scenes(settings_source=solver) == solver.settings.results.scene else: with pytest.raises(RuntimeError): Scenes(settings_source=solver) if fluent_version >= FluentVersion.v241: assert ( SceneAnimation(settings_source=solver) - == solver.results.animations.scene_animation + == solver.settings.results.animations.scene_animation ) else: with pytest.raises(RuntimeError): SceneAnimation(settings_source=solver) if fluent_version >= FluentVersion.v231: - assert Report(settings_source=solver) == solver.results.report + assert Report(settings_source=solver) == solver.settings.results.report assert ( DiscretePhaseHistogram(settings_source=solver) - == solver.results.report.discrete_phase.histogram + == solver.settings.results.report.discrete_phase.histogram ) - assert Fluxes(settings_source=solver) == solver.results.report.fluxes + assert Fluxes(settings_source=solver) == solver.settings.results.report.fluxes assert ( SurfaceIntegrals(settings_source=solver) - == solver.results.report.surface_integrals + == solver.settings.results.report.surface_integrals ) assert ( VolumeIntegrals(settings_source=solver) - == solver.results.report.volume_integrals + == solver.settings.results.report.volume_integrals ) assert ( SimulationReports(settings_source=solver) - == solver.results.report.simulation_reports + == solver.settings.results.report.simulation_reports ) else: with pytest.raises(RuntimeError): @@ -519,11 +577,11 @@ def test_builtin_settings(mixing_elbow_case_data_session): if fluent_version >= FluentVersion.v241: assert ( InputParameters(settings_source=solver) - == solver.parameters.input_parameters + == solver.settings.parameters.input_parameters ) assert ( OutputParameters(settings_source=solver) - == solver.parameters.output_parameters + == solver.settings.parameters.output_parameters ) else: with pytest.raises(RuntimeError): @@ -533,13 +591,16 @@ def test_builtin_settings(mixing_elbow_case_data_session): if fluent_version >= FluentVersion.v251: assert ( CustomFieldFunctions(settings_source=solver) - == solver.results.custom_field_functions + == solver.settings.results.custom_field_functions ) else: with pytest.raises(RuntimeError): CustomFieldFunctions(settings_source=solver) if fluent_version >= FluentVersion.v241: - assert CustomVectors(settings_source=solver) == solver.results.custom_vectors + assert ( + CustomVectors(settings_source=solver) + == solver.settings.results.custom_vectors + ) else: with pytest.raises(RuntimeError): CustomVectors(settings_source=solver) @@ -563,13 +624,16 @@ def test_builtin_settings(mixing_elbow_case_data_session): ) == solver.parametric_studies["mixing_elbow-Solve"].design_points["Base DP"] ) - assert ReadCase(settings_source=solver) == solver.file.read_case - assert ReadData(settings_source=solver) == solver.file.read_data - assert ReadCaseData(settings_source=solver) == solver.file.read_case_data + assert ReadCase(settings_source=solver) == solver.settings.file.read_case + assert ReadData(settings_source=solver) == solver.settings.file.read_data + assert ReadCaseData(settings_source=solver) == solver.settings.file.read_case_data if fluent_version >= FluentVersion.v241: - assert WriteCase(settings_source=solver) == solver.file.write_case - assert WriteData(settings_source=solver) == solver.file.write_data - assert WriteCaseData(settings_source=solver) == solver.file.write_case_data + assert WriteCase(settings_source=solver) == solver.settings.file.write_case + assert WriteData(settings_source=solver) == solver.settings.file.write_data + assert ( + WriteCaseData(settings_source=solver) + == solver.settings.file.write_case_data + ) else: with pytest.raises(RuntimeError): WriteCase(settings_source=solver) @@ -578,15 +642,20 @@ def test_builtin_settings(mixing_elbow_case_data_session): with pytest.raises(RuntimeError): WriteCaseData(settings_source=solver) assert ( - Initialize(settings_source=solver) == solver.solution.initialization.initialize + Initialize(settings_source=solver) + == solver.settings.solution.initialization.initialize ) assert ( - Calculate(settings_source=solver) == solver.solution.run_calculation.calculate + Calculate(settings_source=solver) + == solver.settings.solution.run_calculation.calculate + ) + assert ( + Iterate(settings_source=solver) + == solver.settings.solution.run_calculation.iterate ) - assert Iterate(settings_source=solver) == solver.solution.run_calculation.iterate assert ( DualTimeIterate(settings_source=solver) - == solver.solution.run_calculation.dual_time_iterate + == solver.settings.solution.run_calculation.dual_time_iterate ) @@ -608,20 +677,20 @@ def test_builtin_singleton_setting_assign_session( assert models.path == "setup/models" assert not models.is_active() case_name = download_file("Static_Mixer_main.cas.h5", "pyfluent/static_mixer") - solver.file.read( + solver.settings.file.read( file_type="case", file_name=case_name, lightweight_setup=True, ) assert models.is_active() - assert models == solver.setup.models + assert models == solver.settings.setup.models with pytest.raises(AttributeError): # re-assignment is not allowed models.settings_source = solver models = Models() assert isinstance(models, Models) models.settings_source = solver.settings - assert models == solver.setup.models + assert models == solver.settings.setup.models assert models.settings_source == solver.settings @@ -663,7 +732,7 @@ def test_builtin_creatable_named_object_setting_assign_session( with pytest.raises(TypeError): report_file.settings_source = meshing report_file.settings_source = solver - assert report_file == solver.solution.monitor.report_files["report-file-1"] + assert report_file == solver.settings.solution.monitor.report_files["report-file-1"] assert report_file.settings_source == solver.settings with pytest.raises(AttributeError): # re-assignment is not allowed report_file.settings_source = solver @@ -671,20 +740,23 @@ def test_builtin_creatable_named_object_setting_assign_session( report_file = ReportFile(name="report-file-1") assert isinstance(report_file, ReportFile) report_file.settings_source = solver - assert report_file == solver.solution.monitor.report_files["report-file-1"] + assert report_file == solver.settings.solution.monitor.report_files["report-file-1"] assert report_file.settings_source == solver.settings report_file = ReportFile(name="report-file-1") assert isinstance(report_file, ReportFile) report_file.settings_source = solver.settings - assert report_file == solver.solution.monitor.report_files["report-file-1"] + assert report_file == solver.settings.solution.monitor.report_files["report-file-1"] assert report_file.settings_source == solver.settings if solver.get_fluent_version() >= FluentVersion.v251: report_file = ReportFile() assert isinstance(report_file, ReportFile) report_file.settings_source = solver - assert report_file == solver.solution.monitor.report_files["report-file-2"] + assert ( + report_file + == solver.settings.solution.monitor.report_files["report-file-2"] + ) assert report_file.settings_source == solver.settings @@ -697,11 +769,11 @@ def test_context_manager_1(mixing_elbow_case_data_session): # Test that the context manager works with a solver session with using(solver): assert Setup() == solver.setup - assert General() == solver.setup.general - assert Models() == solver.setup.models - assert Multiphase() == solver.setup.models.multiphase - assert Energy() == solver.setup.models.energy - assert Viscous() == solver.setup.models.viscous + assert General() == solver.settings.setup.general + assert Models() == solver.settings.setup.models + assert Multiphase() == solver.settings.setup.models.multiphase + assert Energy() == solver.settings.setup.models.energy + assert Viscous() == solver.settings.setup.models.viscous # Test that the context manager works with multiple threads def run_solver_context(): diff --git a/tests/test_cad_to_post_ftm.py b/tests/test_cad_to_post_ftm.py index 260ba41f7c41..67e23d210fcf 100644 --- a/tests/test_cad_to_post_ftm.py +++ b/tests/test_cad_to_post_ftm.py @@ -502,7 +502,7 @@ def test_exhaust_system( ############################################################################### # Assert the returned mass flow rate report definition value - flux = solver_session.solution.report_definitions.flux + flux = solver_session.settings.solution.report_definitions.flux flux["mass_flow_rate"] = {} flux["mass_flow_rate"].zone_names = [ "inlet-1", @@ -513,7 +513,7 @@ def test_exhaust_system( check_report_definition = partial( check_report_definition_result, - report_definitions=solver_session.solution.report_definitions, + report_definitions=solver_session.settings.solution.report_definitions, ) check_report_definition( @@ -524,10 +524,10 @@ def test_exhaust_system( ############################################################################### # Assert the returned velocity-magnitude report definition value on the outlet # surface - solver_session.solution.report_definitions.surface[ + solver_session.settings.solution.report_definitions.surface[ "velocity_magnitude_outlet" ] = {} - vmag_outlet = solver_session.solution.report_definitions.surface[ + vmag_outlet = solver_session.settings.solution.report_definitions.surface[ "velocity_magnitude_outlet" ] vmag_outlet.report_type = "surface-areaavg" @@ -536,7 +536,7 @@ def test_exhaust_system( check_report_definition = partial( check_report_definition_result, - report_definitions=solver_session.solution.report_definitions, + report_definitions=solver_session.settings.solution.report_definitions, ) check_report_definition( diff --git a/tests/test_cad_to_post_wtm.py b/tests/test_cad_to_post_wtm.py index 3099a6fa565a..ef3ac2a1edbc 100644 --- a/tests/test_cad_to_post_wtm.py +++ b/tests/test_cad_to_post_wtm.py @@ -238,7 +238,7 @@ def test_mixing_elbow( ############################################################################### # Assert the returned mass flow rate report definition value - flux = solver_session.solution.report_definitions.flux + flux = solver_session.settings.solution.report_definitions.flux flux["mass_flow_rate"] = {} flux["mass_flow_rate"].zone_names = [ "cold-inlet", @@ -248,7 +248,7 @@ def test_mixing_elbow( check_report_definition = partial( check_report_definition_result, - report_definitions=solver_session.solution.report_definitions, + report_definitions=solver_session.settings.solution.report_definitions, ) check_report_definition( @@ -258,8 +258,10 @@ def test_mixing_elbow( ############################################################################### # Assert the returned temperature report definition value on the outlet surface - solver_session.solution.report_definitions.surface["temperature_outlet"] = {} - temp_outlet = solver_session.solution.report_definitions.surface[ + solver_session.settings.solution.report_definitions.surface[ + "temperature_outlet" + ] = {} + temp_outlet = solver_session.settings.solution.report_definitions.surface[ "temperature_outlet" ] temp_outlet.report_type = "surface-massavg" diff --git a/tests/test_creatable.py b/tests/test_creatable.py index c325756b1888..fbd4d065ed84 100644 --- a/tests/test_creatable.py +++ b/tests/test_creatable.py @@ -30,12 +30,12 @@ def test_creatable(mixing_elbow_case_data_session) -> None: solver = mixing_elbow_case_data_session fluent_version = solver.get_fluent_version() has_not = ( - solver.setup.boundary_conditions.velocity_inlet, - solver.setup.cell_zone_conditions.fluid, + solver.settings.setup.boundary_conditions.velocity_inlet, + solver.settings.setup.cell_zone_conditions.fluid, ) has = ( - solver.results.graphics.contour, - solver.results.graphics.vector, + solver.settings.results.graphics.contour, + solver.settings.results.graphics.vector, ) for obj in has_not: diff --git a/tests/test_datamodel_service.py b/tests/test_datamodel_service.py index 534541598cc9..6c2743134189 100644 --- a/tests/test_datamodel_service.py +++ b/tests/test_datamodel_service.py @@ -430,9 +430,9 @@ def test_named_object_specific_methods_using_flserver(new_solver_session): "mixing_elbow.cas.h5", "pyfluent/mixing_elbow" ) solver = new_solver_session - solver.file.read(file_type="case", file_name=import_file_name) - solver.solution.initialization.hybrid_initialize() - solver.solution.run_calculation.iterate(iter_count=10) + solver.settings.file.read(file_type="case", file_name=import_file_name) + solver.settings.solution.initialization.hybrid_initialize() + solver.settings.solution.run_calculation.iterate(iter_count=10) solver.tui.display.objects.create( "contour", "contour-z1", diff --git a/tests/test_field_data.py b/tests/test_field_data.py index 543418da5acb..e402c9727201 100644 --- a/tests/test_field_data.py +++ b/tests/test_field_data.py @@ -52,33 +52,37 @@ def test_field_data_batches_deprecated_interface(new_solver_session) -> None: import_file_name = examples.download_file( "mixing_elbow.msh.h5", "pyfluent/mixing_elbow" ) - solver.file.read(file_type="case", file_name=import_file_name) - solver.mesh.check() + solver.settings.file.read(file_type="case", file_name=import_file_name) + solver.settings.mesh.check() - solver.setup.models.energy.enabled = True - solver.setup.materials.database.copy_by_name(type="fluid", name="water-liquid") - solver.setup.cell_zone_conditions.fluid["elbow-fluid"].material = "water-liquid" + solver.settings.setup.models.energy.enabled = True + solver.settings.setup.materials.database.copy_by_name( + type="fluid", name="water-liquid" + ) + solver.settings.setup.cell_zone_conditions.fluid["elbow-fluid"].material = ( + "water-liquid" + ) # Set up boundary conditions for CFD analysis - cold_inlet = solver.setup.boundary_conditions.velocity_inlet["cold-inlet"] + cold_inlet = solver.settings.setup.boundary_conditions.velocity_inlet["cold-inlet"] cold_inlet.momentum.velocity = 0.4 cold_inlet.turbulence.turbulent_specification = "Intensity and Hydraulic Diameter" cold_inlet.turbulence.turbulent_intensity = 0.05 cold_inlet.turbulence.hydraulic_diameter = "4 [in]" cold_inlet.thermal.t = 293.15 - hot_inlet = solver.setup.boundary_conditions.velocity_inlet["hot-inlet"] + hot_inlet = solver.settings.setup.boundary_conditions.velocity_inlet["hot-inlet"] hot_inlet.momentum.velocity = 1.2 hot_inlet.turbulence.turbulent_specification = "Intensity and Hydraulic Diameter" hot_inlet.turbulence.hydraulic_diameter = "1 [in]" hot_inlet.thermal.t = HOT_INLET_TEMPERATURE - solver.solution.monitor.residual.options.plot = False + solver.settings.solution.monitor.residual.options.plot = False # Initialize flow field - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() - iterate = solver.solution.run_calculation.iterate + iterate = solver.settings.solution.run_calculation.iterate iterate.get_attr("arguments") iterate(iter_count=10) @@ -133,33 +137,37 @@ def test_field_data_batches(new_solver_session) -> None: import_file_name = examples.download_file( "mixing_elbow.msh.h5", "pyfluent/mixing_elbow" ) - solver.file.read(file_type="case", file_name=import_file_name) - solver.mesh.check() + solver.settings.file.read(file_type="case", file_name=import_file_name) + solver.settings.mesh.check() - solver.setup.models.energy.enabled = True - solver.setup.materials.database.copy_by_name(type="fluid", name="water-liquid") - solver.setup.cell_zone_conditions.fluid["elbow-fluid"].material = "water-liquid" + solver.settings.setup.models.energy.enabled = True + solver.settings.setup.materials.database.copy_by_name( + type="fluid", name="water-liquid" + ) + solver.settings.setup.cell_zone_conditions.fluid["elbow-fluid"].material = ( + "water-liquid" + ) # Set up boundary conditions for CFD analysis - cold_inlet = solver.setup.boundary_conditions.velocity_inlet["cold-inlet"] + cold_inlet = solver.settings.setup.boundary_conditions.velocity_inlet["cold-inlet"] cold_inlet.momentum.velocity = 0.4 cold_inlet.turbulence.turbulent_specification = "Intensity and Hydraulic Diameter" cold_inlet.turbulence.turbulent_intensity = 0.05 cold_inlet.turbulence.hydraulic_diameter = "4 [in]" cold_inlet.thermal.t = 293.15 - hot_inlet = solver.setup.boundary_conditions.velocity_inlet["hot-inlet"] + hot_inlet = solver.settings.setup.boundary_conditions.velocity_inlet["hot-inlet"] hot_inlet.momentum.velocity = 1.2 hot_inlet.turbulence.turbulent_specification = "Intensity and Hydraulic Diameter" hot_inlet.turbulence.hydraulic_diameter = "1 [in]" hot_inlet.thermal.t = HOT_INLET_TEMPERATURE - solver.solution.monitor.residual.options.plot = False + solver.settings.solution.monitor.residual.options.plot = False # Initialize flow field - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() - iterate = solver.solution.run_calculation.iterate + iterate = solver.settings.solution.run_calculation.iterate iterate.get_attr("arguments") iterate(iter_count=10) @@ -217,7 +225,12 @@ def test_field_data_batches(new_solver_session) -> None: surface_request_with_faces_connectivity_deprecated, ) data = batch.add_requests( - su2, sux, sc1, sc2, vc1, pt1 # 'sux' is duplicate and will be ignored + su2, + sux, + sc1, + sc2, + vc1, + pt1, # 'sux' is duplicate and will be ignored ).get_response() # adding multiple requests. with pytest.raises(ValueError): @@ -325,14 +338,14 @@ def test_field_data_attributes(new_solver_session) -> None: assert [] == field_data.scalar_fields.allowed_values() - solver.file.read(file_type="case", file_name=import_file_name) + solver.settings.file.read(file_type="case", file_name=import_file_name) allowed_args_no_init = field_data.scalar_fields.allowed_values() assert len(allowed_args_no_init) != 0 assert not field_data.is_data_valid() - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() assert field_data.is_data_valid() @@ -356,14 +369,14 @@ def test_field_data_objects_3d_deprecated_interface(new_solver_session) -> None: assert [] == field_data.scalar_fields.allowed_values() - solver.file.read(file_type="case", file_name=import_file_name) + solver.settings.file.read(file_type="case", file_name=import_file_name) allowed_args_no_init = field_data.scalar_fields.allowed_values() assert len(allowed_args_no_init) != 0 assert not field_data.is_data_valid() - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() assert field_data.is_data_valid() @@ -469,14 +482,14 @@ def test_field_data_objects_3d(new_solver_session) -> None: assert [] == field_data.scalar_fields.allowed_values() - solver.file.read(file_type="case", file_name=import_file_name) + solver.settings.file.read(file_type="case", file_name=import_file_name) allowed_args_no_init = field_data.scalar_fields.allowed_values() assert len(allowed_args_no_init) != 0 assert not field_data.is_data_valid() - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() assert field_data.is_data_valid() @@ -608,7 +621,7 @@ def test_field_data_objects_2d(disk_case_session) -> None: assert not field_data.is_data_valid() - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() assert field_data.is_data_valid() @@ -678,7 +691,7 @@ def test_field_data_errors(new_solver_session) -> None: field_name="partition-neighbors", surfaces=[0] ) - solver.file.read(file_type="case", file_name=import_file_name) + solver.settings.file.read(file_type="case", file_name=import_file_name) with pytest.raises(FieldUnavailable): solver.fields.field_data.get_scalar_field_data( @@ -696,7 +709,7 @@ def test_field_data_errors(new_solver_session) -> None: assert partition_neighbors and isinstance(partition_neighbors, dict) # Initialize flow field - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() # Get field data object assert solver.fields.field_data @@ -718,7 +731,7 @@ def test_field_data_does_not_modify_case(new_solver_session): solver = new_solver_session case_path = download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") download_file("mixing_elbow.dat.h5", "pyfluent/mixing_elbow") - solver.file.read_case_data(file_name=case_path) + solver.settings.file.read_case_data(file_name=case_path) solver.scheme.eval("(%save-case-id)") assert not solver.scheme.eval("(case-modified?)") solver.fields.field_data.get_scalar_field_data( @@ -817,8 +830,8 @@ def test_field_data_objects_3d_with_location_objects(new_solver_session) -> None "mixing_elbow.msh.h5", "pyfluent/mixing_elbow" ) field_data = solver.fields.field_data - solver.file.read(file_type="case", file_name=import_file_name) - solver.solution.initialization.hybrid_initialize() + solver.settings.file.read(file_type="case", file_name=import_file_name) + solver.settings.solution.initialization.hybrid_initialize() assert field_data.is_data_valid() # Check different iterations with location objects @@ -834,7 +847,7 @@ def test_field_data_objects_3d_with_location_objects(new_solver_session) -> None scalar_object_from_surface_objects = ScalarFieldDataRequest( field_name="absolute-pressure", - surfaces=solver.setup.boundary_conditions.velocity_inlet, + surfaces=solver.settings.setup.boundary_conditions.velocity_inlet, ) abs_press_data = field_data.get_field_data(scalar_object_from_surface_objects) assert list(abs_press_data) == ["hot-inlet", "cold-inlet"] @@ -845,8 +858,8 @@ def test_field_data_objects_3d_with_location_objects(new_solver_session) -> None scalar_object_from_surface_objects = ScalarFieldDataRequest( field_name="absolute-pressure", surfaces=[ - solver.setup.boundary_conditions.velocity_inlet["hot-inlet"], - solver.setup.boundary_conditions.velocity_inlet["cold-inlet"], + solver.settings.setup.boundary_conditions.velocity_inlet["hot-inlet"], + solver.settings.setup.boundary_conditions.velocity_inlet["cold-inlet"], ], ) abs_press_data = field_data.get_field_data(scalar_object_from_surface_objects) @@ -884,8 +897,8 @@ def test_field_data_objects_3d_with_location_objects_overall( "mixing_elbow.msh.h5", "pyfluent/mixing_elbow" ) field_data = solver.fields.field_data - solver.file.read(file_type="case", file_name=import_file_name) - solver.solution.initialization.hybrid_initialize() + solver.settings.file.read(file_type="case", file_name=import_file_name) + solver.settings.solution.initialization.hybrid_initialize() assert field_data.is_data_valid() su1 = SurfaceFieldDataRequest( diff --git a/tests/test_file_transfer_service.py b/tests/test_file_transfer_service.py index 8b892a43a24c..27f8451f915f 100644 --- a/tests/test_file_transfer_service.py +++ b/tests/test_file_transfer_service.py @@ -58,10 +58,10 @@ def test_remote_grpc_fts_container(): file_transfer_service=file_transfer_service, container_dict=container_dict ) - session.file.read_case(file_name=case_file) + session.settings.file.read_case(file_name=case_file) assert session.file_exists_on_remote("mixing_elbow.cas.h5") - session.file.write_case(file_name="write_mixing_elbow.cas.h5") + session.settings.file.write_case(file_name="write_mixing_elbow.cas.h5") assert session.file_exists_on_remote("write_mixing_elbow.cas.h5") session.exit() @@ -85,22 +85,22 @@ def test_read_case_and_data(monkeypatch): file_transfer_service=StandaloneFileTransferStrategy() ) - solver.file.read(file_type="case-data", file_name=case_file_name) - solver.file.write(file_type="case-data", file_name="write_data.cas.h5") + solver.settings.file.read(file_type="case-data", file_name=case_file_name) + solver.settings.file.write(file_type="case-data", file_name="write_data.cas.h5") - solver.file.read_case_data(file_name=case_file_name) - solver.file.write_case_data(file_name="write_case_data.cas.h5") + solver.settings.file.read_case_data(file_name=case_file_name) + solver.settings.file.write_case_data(file_name="write_case_data.cas.h5") solver.exit() solver = pyfluent.launch_fluent( file_transfer_service=StandaloneFileTransferStrategy(server_cwd=os.getcwd()) ) - solver.file.read(file_type="case-data", file_name=case_file_name) - solver.file.write(file_type="case-data", file_name="write_data.cas.h5") + solver.settings.file.read(file_type="case-data", file_name=case_file_name) + solver.settings.file.write(file_type="case-data", file_name="write_data.cas.h5") - solver.file.read_case_data(file_name=case_file_name) - solver.file.write_case_data(file_name="write_case_data.cas.h5") + solver.settings.file.read_case_data(file_name=case_file_name) + solver.settings.file.write_case_data(file_name="write_case_data.cas.h5") solver.exit() diff --git a/tests/test_flobject.py b/tests/test_flobject.py index ff513b2d5bb6..a3e5be06dab2 100644 --- a/tests/test_flobject.py +++ b/tests/test_flobject.py @@ -693,16 +693,16 @@ class a_2(Boolean): def test_accessor_methods_on_settings_object(static_mixer_settings_session): solver = static_mixer_settings_session - existing = solver.file.read.file_type.get_attr("allowed-values") - modified = solver.file.read.file_type.allowed_values() + existing = solver.settings.file.read.file_type.get_attr("allowed-values") + modified = solver.settings.file.read.file_type.allowed_values() assert existing == modified - existing = solver.file.read.file_type.get_attr("read-only?", bool) - modified = solver.file.read.file_type.is_read_only() + existing = solver.settings.file.read.file_type.get_attr("read-only?", bool) + modified = solver.settings.file.read.file_type.is_read_only() assert existing == modified - velocity_inlet = solver.setup.boundary_conditions.velocity_inlet + velocity_inlet = solver.settings.setup.boundary_conditions.velocity_inlet existing = velocity_inlet.get_attr("user-creatable?", bool) modified = velocity_inlet.user_creatable() assert existing == modified @@ -735,37 +735,37 @@ def test_accessor_methods_on_settings_object(static_mixer_settings_session): assert turbulent_viscosity_ratio.get_attr("max") is False assert turbulent_viscosity_ratio.max() is None - default_attrs = solver.setup.boundary_conditions.velocity_inlet["inlet1"].get_attrs( - ["default"], recursive=True - ) + default_attrs = solver.settings.setup.boundary_conditions.velocity_inlet[ + "inlet1" + ].get_attrs(["default"], recursive=True) assert count_key_recursive(default_attrs, "default") > 5 - mesh = solver.results.graphics.mesh.create("mesh-1") + mesh = solver.settings.results.graphics.mesh.create("mesh-1") if solver.get_fluent_version() < FluentVersion.v242: assert mesh.name.is_read_only() else: assert not mesh.name.is_read_only() - assert solver.results.graphics.mesh.get_object_names() == ["mesh-1"] + assert solver.settings.results.graphics.mesh.get_object_names() == ["mesh-1"] - solver.results.graphics.mesh["mesh-1"].rename("mesh_new") - assert solver.results.graphics.mesh.get_object_names() == ["mesh_new"] + solver.settings.results.graphics.mesh["mesh-1"].rename("mesh_new") + assert solver.settings.results.graphics.mesh.get_object_names() == ["mesh_new"] - solver.results.graphics.mesh.rename(new="mesh_242", old="mesh_new") - assert solver.results.graphics.mesh.get_object_names() == ["mesh_242"] + solver.settings.results.graphics.mesh.rename(new="mesh_242", old="mesh_new") + assert solver.settings.results.graphics.mesh.get_object_names() == ["mesh_242"] @pytest.mark.fluent_version("latest") def test_accessor_methods_on_settings_object_types(static_mixer_settings_session): solver = static_mixer_settings_session - assert solver.setup.general.solver.type.allowed_values() == [ + assert solver.settings.setup.general.solver.type.allowed_values() == [ "pressure-based", "density-based-implicit", "density-based-explicit", ] accuracy_control = ( - solver.setup.models.discrete_phase.numerics.tracking.accuracy_control + solver.settings.setup.models.discrete_phase.numerics.tracking.accuracy_control ) if solver.get_fluent_version() < FluentVersion.v241: max_refinements = accuracy_control.max_number_of_refinements @@ -843,41 +843,41 @@ def test_settings_wild_card_access(new_solver_session) -> None: solver = new_solver_session case_path = download_file("elbow_source_terms.cas.h5", "pyfluent/mixing_elbow") - solver.file.read_case(file_name=case_path) + solver.settings.file.read_case(file_name=case_path) - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() if solver.get_fluent_version() >= FluentVersion.v251: assert ( - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "*1" ].momentum.velocity_magnitude.value()["inlet1"]["momentum"][ "velocity_magnitude" ][ "value" ] - == solver.setup.boundary_conditions.velocity_inlet[ + == solver.settings.setup.boundary_conditions.velocity_inlet[ "inlet1" ].momentum.velocity.value() ) else: assert ( - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "*1" ].momentum.velocity.value()["inlet1"]["momentum"]["velocity"]["value"] - == solver.setup.boundary_conditions.velocity_inlet[ + == solver.settings.setup.boundary_conditions.velocity_inlet[ "inlet1" ].momentum.velocity.value() ) - assert solver.setup.boundary_conditions.wall["*"]() + assert solver.settings.setup.boundary_conditions.wall["*"]() with pytest.raises(AttributeError) as msg: - solver.setup.boundary_conditions.velocity_inlet["*1"].inlet1() + solver.settings.setup.boundary_conditions.velocity_inlet["*1"].inlet1() assert msg.value.args[0] == "'velocity_inlet' has no attribute 'inlet1'.\n" with pytest.raises(KeyError) as msg: - solver.setup.boundary_conditions.velocity_inlet["inlet-1"] + solver.settings.setup.boundary_conditions.velocity_inlet["inlet-1"] assert ( msg.value.args[0] == "'velocity_inlet' has no attribute 'inlet-1'.\n" "The most similar names are: inlet1, inlet2" @@ -889,17 +889,17 @@ def test_settings_matching_names(new_solver_session) -> None: solver = new_solver_session case_path = download_file("elbow_source_terms.cas.h5", "pyfluent/mixing_elbow") - solver.file.read_case(file_name=case_path) + solver.settings.file.read_case(file_name=case_path) - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() with pytest.raises(AttributeError) as msg: - solver.setup.mod + solver.settings.setup.mod assert msg.value.args[0].startswith("'setup' object has no attribute 'mod'.") with pytest.raises(ValueError) as msg: - solver.setup.models.viscous.model = "k_epsilon" + solver.settings.setup.models.viscous.model = "k_epsilon" assert ( msg.value.args[0] == "'model' has no attribute 'k_epsilon'.\n" @@ -913,10 +913,10 @@ def test_settings_api_names_exception(new_solver_session): solver = new_solver_session case_path = download_file("mixing_elbow.msh.h5", "pyfluent/mixing_elbow") - solver.file.read_case(file_name=case_path) + solver.settings.file.read_case(file_name=case_path) with pytest.raises(RuntimeError): - solver.setup.boundary_conditions["cold-inlet"].name = "hot-inlet" + solver.settings.setup.boundary_conditions["cold-inlet"].name = "hot-inlet" @pytest.mark.fluent_version(">=24.2") @@ -1003,10 +1003,12 @@ def test_strings_with_allowed_values(static_mixer_settings_session): solver = static_mixer_settings_session with pytest.raises(AttributeError) as e: - solver.file.auto_save.root_name.allowed_values() + solver.settings.file.auto_save.root_name.allowed_values() assert e.value.args[0] == "'root_name' object has no attribute 'allowed_values'" - string_with_allowed_values = solver.setup.general.solver.type.allowed_values() + string_with_allowed_values = ( + solver.settings.setup.general.solver.type.allowed_values() + ) assert string_with_allowed_values == [ "pressure-based", "density-based-implicit", @@ -1017,9 +1019,9 @@ def test_strings_with_allowed_values(static_mixer_settings_session): @pytest.mark.fluent_version(">=24.2") def test_parent_class_attributes(static_mixer_settings_session): solver = static_mixer_settings_session - assert solver.setup.models.energy.enabled + assert solver.settings.setup.models.energy.enabled with pytest.raises(AttributeError): - solver.setup.models.energy.__class__.enabled + solver.settings.setup.models.energy.__class__.enabled def _check_vector_units(obj, units): @@ -1038,7 +1040,7 @@ def _check_vector_units(obj, units): def test_ansys_units_integration(mixing_elbow_settings_session): solver = mixing_elbow_settings_session assert isinstance(solver.settings.state_with_units(), dict) - hot_inlet = solver.setup.boundary_conditions.velocity_inlet["hot-inlet"] + hot_inlet = solver.settings.setup.boundary_conditions.velocity_inlet["hot-inlet"] turbulence = hot_inlet.turbulence turbulence.turbulent_specification = "Intensity and Hydraulic Diameter" hydraulic_diameter = turbulence.hydraulic_diameter @@ -1079,7 +1081,7 @@ def test_ansys_units_integration(mixing_elbow_settings_session): "value": (12.0, "m s^-1"), } # https://github.com/ansys/pyfluent/issues/3738 - # clip_factor = solver.setup.models.viscous.options.production_limiter.clip_factor + # clip_factor = solver.settings.setup.models.viscous.options.production_limiter.clip_factor # clip_factor.set_state(1.2) # assert clip_factor() == 1.2 # assert clip_factor.as_quantity() == ansys.units.Quantity(1.2, "") @@ -1091,10 +1093,11 @@ def test_ansys_units_integration(mixing_elbow_settings_session): # assert clip_factor.units() == "" _check_vector_units( - solver.setup.general.operating_conditions.reference_pressure_location, "m" + solver.settings.setup.general.operating_conditions.reference_pressure_location, + "m", ) _check_vector_units( - solver.setup.reference_frames[ + solver.settings.setup.reference_frames[ "global" ].initial_state.orientation.first_axis.axis_to.vector, "", @@ -1105,7 +1108,7 @@ def test_ansys_units_integration(mixing_elbow_settings_session): def test_ansys_units_integration_nested_state(mixing_elbow_settings_session): solver = mixing_elbow_settings_session - hot_inlet = solver.setup.boundary_conditions.velocity_inlet["hot-inlet"] + hot_inlet = solver.settings.setup.boundary_conditions.velocity_inlet["hot-inlet"] assert hot_inlet.state_with_units() == { "momentum": { @@ -1140,20 +1143,20 @@ def test_ansys_units_integration_nested_state(mixing_elbow_settings_session): def test_bug_1001124_quantity_assignment(mixing_elbow_settings_session): speed = ansys.units.Quantity(100, "m s^-1") solver = mixing_elbow_settings_session - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "hot-inlet" ].momentum.velocity.value = speed.value assert ( - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "hot-inlet" ].momentum.velocity.value() == speed.value ) - solver.setup.boundary_conditions.velocity_inlet["hot-inlet"].momentum.velocity = ( - speed - ) + solver.settings.setup.boundary_conditions.velocity_inlet[ + "hot-inlet" + ].momentum.velocity = speed assert ( - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "hot-inlet" ].momentum.velocity.value() == speed.value @@ -1223,7 +1226,7 @@ def test_default_argument_names_for_commands(static_mixer_settings_session): solver = static_mixer_settings_session if solver.get_fluent_version() >= FluentVersion.v251: - assert set(solver.results.graphics.contour.command_names) == { + assert set(solver.settings.results.graphics.contour.command_names) == { "create", "delete", "rename", @@ -1235,7 +1238,7 @@ def test_default_argument_names_for_commands(static_mixer_settings_session): "clear_history", } else: - assert set(solver.results.graphics.contour.command_names) == { + assert set(solver.settings.results.graphics.contour.command_names) == { "delete", "rename", "list", @@ -1247,10 +1250,15 @@ def test_default_argument_names_for_commands(static_mixer_settings_session): "clear_history", } - assert solver.results.graphics.contour.rename.argument_names == ["new", "old"] - assert solver.results.graphics.contour.delete.argument_names == ["name_list"] + assert solver.settings.results.graphics.contour.rename.argument_names == [ + "new", + "old", + ] + assert solver.settings.results.graphics.contour.delete.argument_names == [ + "name_list" + ] # The following is the default behavior when no arguments are associated with the command. - assert solver.results.graphics.contour.list.argument_names == [] + assert solver.settings.results.graphics.contour.list.argument_names == [] @pytest.mark.fluent_version(">=25.1") @@ -1261,7 +1269,7 @@ def test_bc_set_state_performance(static_mixer_settings_session, monkeypatch): with monkeypatch.context() as m: m.setattr(TracingInterceptor, "_intercept_call", mock_interceptor) - solver.setup.boundary_conditions.velocity_inlet["inlet1"] = { + solver.settings.setup.boundary_conditions.velocity_inlet["inlet1"] = { "momentum": {"velocity_magnitude": 11.0} } @@ -1282,7 +1290,7 @@ def test_bc_set_state_performance(static_mixer_settings_session, monkeypatch): ) assert ( - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "inlet1" ].momentum.velocity_magnitude.value() == 11.0 diff --git a/tests/test_fluent_fixes.py b/tests/test_fluent_fixes.py index 1adbce019ef6..39a1a5f7e1e7 100644 --- a/tests/test_fluent_fixes.py +++ b/tests/test_fluent_fixes.py @@ -35,11 +35,11 @@ def test_allowed_values_on_report_definitions_1364(new_solver_session): "elbow.cas.h5", "pyfluent/examples/DOE-ML-Mixing-Elbow" ) - solver.file.read( + solver.settings.file.read( file_name=import_file_name, file_type="case", lightweight_setup=True ) - report_def = solver.solution.report_definitions.volume.create("xxx") + report_def = solver.settings.solution.report_definitions.volume.create("xxx") report_def.set_state( { @@ -69,8 +69,8 @@ def test_monitors_list_set_data_637_974_1744_2188(new_solver_session): file_name="exhaust_system.dat.h5", directory="pyfluent/exhaust_system" ) - solver_session.file.read_case_data(file_name=import_case) - solver_session.solution.run_calculation.iterate(iter_count=1) + solver_session.settings.file.read_case_data(file_name=import_case) + solver_session.settings.solution.run_calculation.iterate(iter_count=1) monitors_list = solver_session.monitors.get_monitor_set_names() @@ -90,13 +90,13 @@ def test_monitors_list_set_data_637_974_1744_2188(new_solver_session): assert mp - sample_report_plot = solver_session.solution.monitor.report_plots.create( + sample_report_plot = solver_session.settings.solution.monitor.report_plots.create( "sample-report-plot" ) sample_report_plot.report_defs = "mass-bal" - solver_session.solution.initialization.hybrid_initialize() - solver_session.solution.run_calculation.iterate(iter_count=1) + solver_session.settings.solution.initialization.hybrid_initialize() + solver_session.settings.solution.run_calculation.iterate(iter_count=1) new_monitors_list = solver_session.monitors.get_monitor_set_names() @@ -125,9 +125,9 @@ def test_empty_vector_field_data_2339(new_solver_session): assert import_case assert import_data - solver.file.read_case(file_name=import_case) + solver.settings.file.read_case(file_name=import_case) - solver.file.read_data(file_name=import_data) + solver.settings.file.read_data(file_name=import_data) assert [ a[0] diff --git a/tests/test_fluent_session.py b/tests/test_fluent_session.py index bbd38a931bbe..e33dd69765ac 100644 --- a/tests/test_fluent_session.py +++ b/tests/test_fluent_session.py @@ -44,9 +44,9 @@ def _read_case(session, lightweight_setup=True): case_path = download_file("Static_Mixer_main.cas.h5", "pyfluent/static_mixer") # Ignore lightweight_setup variable for Fluent < 23.1 because not supported if session.get_fluent_version() < FluentVersion.v231: - session.file.read(file_name=case_path, file_type="case") + session.settings.file.read(file_name=case_path, file_type="case") else: - session.file.read( + session.settings.file.read( file_name=case_path, file_type="case", lightweight_setup=lightweight_setup ) @@ -243,13 +243,13 @@ def _freeze_fluent(s): @pytest.mark.fluent_version(">=23.1") def test_interrupt(static_mixer_case_session): solver = static_mixer_case_session - solver.setup.general.solver.time = "unsteady-2nd-order" - solver.solution.initialization.standard_initialize() - asynchronous(solver.solution.run_calculation.dual_time_iterate)( + solver.settings.setup.general.solver.time = "unsteady-2nd-order" + solver.settings.solution.initialization.standard_initialize() + asynchronous(solver.settings.solution.run_calculation.dual_time_iterate)( time_step_count=100, max_iter_per_step=20 ) time.sleep(5) - solver.solution.run_calculation.interrupt() + solver.settings.solution.run_calculation.interrupt() assert solver.scheme.eval("(rpgetvar 'time-step)") < 100 diff --git a/tests/test_launcher.py b/tests/test_launcher.py index 39b454ca7c32..8b4dbca0c0e6 100644 --- a/tests/test_launcher.py +++ b/tests/test_launcher.py @@ -240,10 +240,10 @@ def test_case_load(): session = pyfluent.launch_fluent(case_file_name=case_name) # Case loaded - assert session.setup.boundary_conditions.is_active() + assert session.settings.setup.boundary_conditions.is_active() # Mesh available because not lightweight if not session.get_fluent_version() < FluentVersion.v231: - assert session.mesh.quality.is_active() + assert session.settings.mesh.quality.is_active() # Data not loaded assert not session.fields.field_data.is_data_valid() @@ -264,9 +264,9 @@ def test_case_lightweight_setup(): ) # Case loaded - assert session.setup.boundary_conditions.is_active() + assert session.settings.setup.boundary_conditions.is_active() # Mesh not available because lightweight - assert not session.mesh.quality.is_active() + assert not session.settings.mesh.quality.is_active() # Data not loaded assert not session.fields.field_data.is_data_valid() @@ -285,10 +285,10 @@ def test_case_data_load(): session = pyfluent.launch_fluent(case_data_file_name=case_name) # Case loaded - assert session.setup.boundary_conditions.is_active() + assert session.settings.setup.boundary_conditions.is_active() # Mesh available because not lightweight if not session.get_fluent_version() < FluentVersion.v231: - assert session.mesh.quality.is_active() + assert session.settings.mesh.quality.is_active() # Data loaded assert session.fields.field_data.is_data_valid() @@ -661,7 +661,7 @@ def test_docker_compose(monkeypatch): case_file_name = examples.download_file( "mixing_elbow.cas.h5", "pyfluent/mixing_elbow" ) - solver.file.read_case(file_name=case_file_name) + solver.settings.file.read_case(file_name=case_file_name) solver.exit() diff --git a/tests/test_launcher_remote.py b/tests/test_launcher_remote.py index c2fdb0778c92..ee0fd201d081 100644 --- a/tests/test_launcher_remote.py +++ b/tests/test_launcher_remote.py @@ -264,13 +264,13 @@ def test_file_purpose_on_remote_instance( suffix = uuid.uuid4().hex import_file_name = rename_downloaded_file(import_file_name, f"_{suffix}") - solver_session.file.read_case(file_name=import_file_name) + solver_session.settings.file.read_case(file_name=import_file_name) assert file_service.is_configured() assert file_service.uploads() assert len(file_service.uploads()) == 1 assert file_service.uploads()[0] == import_file_name - solver_session.file.write_case(file_name=import_file_name) + solver_session.settings.file.write_case(file_name=import_file_name) assert file_service.downloads() assert len(file_service.downloads()) == 1 assert file_service.downloads()[0] == import_file_name diff --git a/tests/test_reduction.py b/tests/test_reduction.py index db4130856f85..e303fd4a08d6 100644 --- a/tests/test_reduction.py +++ b/tests/test_reduction.py @@ -33,8 +33,8 @@ def _test_locn_extraction(solver1, solver2): - solver1_boundary_conditions = solver1.setup.boundary_conditions - solver2_boundary_conditions = solver2.setup.boundary_conditions + solver1_boundary_conditions = solver1.settings.setup.boundary_conditions + solver2_boundary_conditions = solver2.settings.setup.boundary_conditions locns = _locn_names_and_objs(["inlet1"]) assert locns == [["inlet1", ["inlet1"]]] @@ -90,10 +90,10 @@ def _test_locn_extraction(solver1, solver2): def _test_context(solver): - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() assert solver.fields.reduction.area( - locations=[solver.setup.boundary_conditions.velocity_inlet["inlet1"]], + locations=[solver.settings.setup.boundary_conditions.velocity_inlet["inlet1"]], ctxt=solver, ) @@ -101,8 +101,8 @@ def _test_context(solver): def _test_area_average(solver): - solver.solution.initialization.hybrid_initialize() - solver_named_expressions = solver.setup.named_expressions + solver.settings.solution.initialization.hybrid_initialize() + solver_named_expressions = solver.settings.setup.named_expressions solver_named_expressions["test_expr_1"] = {} solver_named_expressions["test_expr_1"].definition = ( "AreaAve(AbsolutePressure, ['inlet1'])" @@ -111,7 +111,7 @@ def _test_area_average(solver): assert isinstance(expr_val, float) and expr_val != 0.0 val = solver.fields.reduction.area_average( expression=VariableCatalog.ABSOLUTE_PRESSURE, - locations=solver.setup.boundary_conditions.velocity_inlet, + locations=solver.settings.setup.boundary_conditions.velocity_inlet, ) assert val == expr_val solver_named_expressions.pop(key="test_expr_1") @@ -120,24 +120,24 @@ def _test_area_average(solver): def _test_min(solver1, solver2): s1_min = solver1.fields.reduction.minimum( expression=VariableCatalog.ABSOLUTE_PRESSURE, - locations=solver1.setup.boundary_conditions.velocity_inlet, + locations=solver1.settings.setup.boundary_conditions.velocity_inlet, ) s2_min = solver2.fields.reduction.minimum( expression=VariableCatalog.ABSOLUTE_PRESSURE, - locations=solver2.setup.boundary_conditions.velocity_inlet, + locations=solver2.settings.setup.boundary_conditions.velocity_inlet, ) result = reduction.minimum( expression=VariableCatalog.ABSOLUTE_PRESSURE, - locations=solver1.setup.boundary_conditions.velocity_inlet - + solver2.setup.boundary_conditions.velocity_inlet, + locations=solver1.settings.setup.boundary_conditions.velocity_inlet + + solver2.settings.setup.boundary_conditions.velocity_inlet, ) assert result == min(s1_min, s2_min) def _test_count(solver): - solver.solution.initialization.hybrid_initialize() - solver_named_expressions = solver.setup.named_expressions - s_velocity_inlet = solver.setup.boundary_conditions.velocity_inlet + solver.settings.solution.initialization.hybrid_initialize() + solver_named_expressions = solver.settings.setup.named_expressions + s_velocity_inlet = solver.settings.setup.boundary_conditions.velocity_inlet solver_named_expressions["test_expr_1"] = {} solver_named_expressions["test_expr_1"].definition = "Count(['inlet1'])" expr_val_1 = solver_named_expressions["test_expr_1"].get_value() @@ -156,9 +156,9 @@ def _test_count(solver): def _test_count_if(solver): - solver.solution.initialization.hybrid_initialize() - solver_named_expressions = solver.setup.named_expressions - s_velocity_inlet = solver.setup.boundary_conditions.velocity_inlet + solver.settings.solution.initialization.hybrid_initialize() + solver_named_expressions = solver.settings.setup.named_expressions + s_velocity_inlet = solver.settings.setup.boundary_conditions.velocity_inlet solver_named_expressions["test_expr_1"] = {} solver_named_expressions["test_expr_1"].definition = ( "CountIf(AbsolutePressure > 0[Pa], ['inlet1'])" @@ -189,9 +189,9 @@ def _test_count_if(solver): def _test_centroid(solver): - solver.solution.initialization.hybrid_initialize() - solver_named_expressions = solver.setup.named_expressions - velocity_inlet = solver.setup.boundary_conditions.velocity_inlet + solver.settings.solution.initialization.hybrid_initialize() + solver_named_expressions = solver.settings.setup.named_expressions + velocity_inlet = solver.settings.setup.boundary_conditions.velocity_inlet solver_named_expressions["test_expr_1"] = {} solver_named_expressions["test_expr_1"].definition = "Centroid(['inlet1'])" expr_val_1 = solver_named_expressions["test_expr_1"].get_value() @@ -211,12 +211,12 @@ def _test_centroid(solver): def _test_area_integrated_average(solver1, solver2): - solver1.solution.initialization.hybrid_initialize() - solver2.solution.initialization.hybrid_initialize() - solver1_boundary_conditions = solver1.setup.boundary_conditions - solver2_boundary_conditions = solver2.setup.boundary_conditions - solver1_named_expr = solver1.setup.named_expressions - solver2_named_expr = solver2.setup.named_expressions + solver1.settings.solution.initialization.hybrid_initialize() + solver2.settings.solution.initialization.hybrid_initialize() + solver1_boundary_conditions = solver1.settings.setup.boundary_conditions + solver2_boundary_conditions = solver2.settings.setup.boundary_conditions + solver1_named_expr = solver1.settings.setup.named_expressions + solver2_named_expr = solver2.settings.setup.named_expressions solver1_named_expr["test_expr_1"] = {} solver1_named_expr["test_expr_1"].definition = ( @@ -302,25 +302,25 @@ def _test_error_handling(solver): with pytest.raises(RuntimeError): solver.fields.reduction.area_average( expression="AbsoluteVelocity", # This is a wrong expression intentionally passed - locations=solver.setup.boundary_conditions.velocity_inlet, + locations=solver.settings.setup.boundary_conditions.velocity_inlet, ) def _test_force(solver): - solver.solution.initialization.hybrid_initialize() - solver_named_expressions = solver.setup.named_expressions + solver.settings.solution.initialization.hybrid_initialize() + solver_named_expressions = solver.settings.setup.named_expressions solver_named_expressions["test_expr_1"] = {} solver_named_expressions["test_expr_1"].definition = "Force(['wall'])" expr_val_1 = solver_named_expressions["test_expr_1"].get_value() red_total_force = solver.fields.reduction.force( - locations=solver.setup.boundary_conditions.wall + locations=solver.settings.setup.boundary_conditions.wall ) red_pressure_force = solver.fields.reduction.pressure_force( - locations=solver.setup.boundary_conditions.wall + locations=solver.settings.setup.boundary_conditions.wall ) red_viscous_force = solver.fields.reduction.viscous_force( - locations=solver.setup.boundary_conditions.wall + locations=solver.settings.setup.boundary_conditions.wall ) assert [red_total_force[0], red_total_force[1], red_total_force[2]] == expr_val_1 @@ -335,9 +335,9 @@ def _test_force(solver): def _test_moment(solver): - solver.solution.initialization.hybrid_initialize() - solver_named_expressions = solver.setup.named_expressions - location = solver.setup.boundary_conditions.wall + solver.settings.solution.initialization.hybrid_initialize() + solver_named_expressions = solver.settings.setup.named_expressions + location = solver.settings.setup.boundary_conditions.wall solver_named_expressions["test_expr_1"] = {} solver_named_expressions["test_expr_1"].definition = ( "Moment(Force(['wall']),['wall'])" @@ -366,55 +366,55 @@ def _test_moment(solver): def _test_sum(solver): - solver.solution.initialization.hybrid_initialize() - solver.setup.named_expressions["test_expr_1"] = {} - solver.setup.named_expressions["test_expr_1"].definition = ( + solver.settings.solution.initialization.hybrid_initialize() + solver.settings.setup.named_expressions["test_expr_1"] = {} + solver.settings.setup.named_expressions["test_expr_1"].definition = ( "Sum(AbsolutePressure, ['inlet1'], Weight=Area)" ) - expr_val = solver.setup.named_expressions["test_expr_1"].get_value() + expr_val = solver.settings.setup.named_expressions["test_expr_1"].get_value() assert isinstance(expr_val, float) and expr_val != 0.0 val = solver.fields.reduction.sum( expression=VariableCatalog.ABSOLUTE_PRESSURE, - locations=[solver.setup.boundary_conditions.velocity_inlet["inlet1"]], + locations=[solver.settings.setup.boundary_conditions.velocity_inlet["inlet1"]], weight="Area", ) assert val == expr_val - solver.setup.named_expressions.pop(key="test_expr_1") + solver.settings.setup.named_expressions.pop(key="test_expr_1") def _test_sum_if(solver): - solver.solution.initialization.hybrid_initialize() - solver.setup.named_expressions["test_expr_1"] = {} - solver.setup.named_expressions["test_expr_1"].definition = ( + solver.settings.solution.initialization.hybrid_initialize() + solver.settings.setup.named_expressions["test_expr_1"] = {} + solver.settings.setup.named_expressions["test_expr_1"].definition = ( "SumIf(AbsolutePressure, AbsolutePressure > 0[Pa], ['inlet1'], Weight=Area)" ) - expr_val = solver.setup.named_expressions["test_expr_1"].get_value() + expr_val = solver.settings.setup.named_expressions["test_expr_1"].get_value() assert isinstance(expr_val, float) and expr_val != 0.0 val = solver.fields.reduction.sum_if( expression=VariableCatalog.ABSOLUTE_PRESSURE, condition="AbsolutePressure > 0[Pa]", - locations=[solver.setup.boundary_conditions.velocity_inlet["inlet1"]], + locations=[solver.settings.setup.boundary_conditions.velocity_inlet["inlet1"]], weight=solver.fields.reduction.weight.AREA, ) assert val == expr_val - solver.setup.named_expressions.pop(key="test_expr_1") + solver.settings.setup.named_expressions.pop(key="test_expr_1") def _test_centroid_2_sources(solver1, solver2): s1_cent = solver1.fields.reduction.centroid( - locations=solver1.setup.boundary_conditions.velocity_inlet + locations=solver1.settings.setup.boundary_conditions.velocity_inlet ) s2_cent = solver2.fields.reduction.centroid( - locations=solver2.setup.boundary_conditions.velocity_inlet + locations=solver2.settings.setup.boundary_conditions.velocity_inlet ) result = reduction.centroid( - locations=solver1.setup.boundary_conditions.velocity_inlet - + solver2.setup.boundary_conditions.velocity_inlet + locations=solver1.settings.setup.boundary_conditions.velocity_inlet + + solver2.settings.setup.boundary_conditions.velocity_inlet ) assert [round(x, 5) for x in result] == [ (round(x, 5) + round(y, 5)) / 2 for x, y in zip(*[s1_cent, s2_cent]) @@ -451,10 +451,10 @@ def test_reductions( download_file( file_name="exhaust_system.dat.h5", directory="pyfluent/exhaust_system" ) - solver1.file.read_case_data(file_name=case_path) + solver1.settings.file.read_case_data(file_name=case_path) case_path1 = download_file("elbow1.cas.h5", "pyfluent/file_session") download_file("elbow1.dat.h5", "pyfluent/file_session") - solver2.file.read_case_data(file_name=case_path1) + solver2.settings.file.read_case_data(file_name=case_path1) _test_min(solver1, solver2) _test_centroid_2_sources(solver1, solver2) @@ -462,13 +462,13 @@ def test_reductions( @pytest.mark.fluent_version(">=24.2") def test_reduction_does_not_modify_case(static_mixer_case_session: Any): solver = static_mixer_case_session - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() # After reading the static-mixer case in Fluent, case-modified? flag is somehow True solver.scheme.eval("(%save-case-id)") assert not solver.scheme.eval("(case-modified?)") solver.reduction.area_average( expression="AbsolutePressure", - locations=solver.setup.boundary_conditions.velocity_inlet, + locations=solver.settings.setup.boundary_conditions.velocity_inlet, ) assert not solver.scheme.eval("(case-modified?)") @@ -476,7 +476,7 @@ def test_reduction_does_not_modify_case(static_mixer_case_session: Any): @pytest.mark.fluent_version(">=24.2") def test_fix_for_invalid_location_inputs(static_mixer_case_session: Any): solver = static_mixer_case_session - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() assert solver.fields.reduction.area(locations=["inlet1"], ctxt=solver) @@ -485,7 +485,9 @@ def test_fix_for_invalid_location_inputs(static_mixer_case_session: Any): with pytest.raises(KeyError): assert solver.fields.reduction.area( - locations=[solver.setup.boundary_conditions.velocity_inlet["inlet-1"]] + locations=[ + solver.settings.setup.boundary_conditions.velocity_inlet["inlet-1"] + ] ) assert solver.fields.reduction.area(locations=["inlet1"]) @@ -495,15 +497,15 @@ def test_fix_for_invalid_location_inputs(static_mixer_case_session: Any): with pytest.raises(DisallowedValuesError): solver.fields.reduction.area( - locations=[solver.setup.boundary_conditions.velocity_inlet] + locations=[solver.settings.setup.boundary_conditions.velocity_inlet] ) with pytest.raises(DisallowedValuesError): reduction.minimum( expression="AbsolutePressure", locations=[ - solver.setup.boundary_conditions.velocity_inlet, - solver.setup.boundary_conditions.velocity_inlet, + solver.settings.setup.boundary_conditions.velocity_inlet, + solver.settings.setup.boundary_conditions.velocity_inlet, ], ) @@ -511,7 +513,7 @@ def test_fix_for_invalid_location_inputs(static_mixer_case_session: Any): @pytest.mark.fluent_version(">=25.2") def test_fix_for_empty_location_inputs(static_mixer_case_session: Any): solver = static_mixer_case_session - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() assert solver.fields.reduction.area(locations=["inlet1"]) diff --git a/tests/test_rp_vars.py b/tests/test_rp_vars.py index 45df1565f21c..392a0bf87fdf 100644 --- a/tests/test_rp_vars.py +++ b/tests/test_rp_vars.py @@ -57,7 +57,7 @@ def test_get_all_rp_vars(new_solver_session) -> None: assert len(all_vars) == pytest.approx(9000, 10) # refresh - solver.file.write(file_type="case", file_name=case_path) + solver.settings.file.write(file_type="case", file_name=case_path) solver.tui.file.read_case(case_path) # all vars again diff --git a/tests/test_session.py b/tests/test_session.py index 0be502bbcabc..92ec0d8915f0 100644 --- a/tests/test_session.py +++ b/tests/test_session.py @@ -397,7 +397,7 @@ def test_read_case_using_lightweight_mode(): solver = pyfluent.launch_fluent( case_file_name=import_file_name, lightweight_mode=True ) - solver.setup.models.energy.enabled = False + solver.settings.setup.models.energy.enabled = False old_fluent_connection_id = id(solver._fluent_connection) timeout_loop( id(solver._fluent_connection) != old_fluent_connection_id, @@ -405,7 +405,7 @@ def test_read_case_using_lightweight_mode(): idle_period=1, ) timeout_loop( - not solver.setup.models.energy.enabled(), + not solver.settings.setup.models.energy.enabled(), timeout=60, idle_period=1, ) @@ -436,7 +436,7 @@ def test_read_case_using_lightweight_mode_exiting(): def test_help_does_not_throw(new_solver_session): - help(new_solver_session.file.read) + help(new_solver_session.settings.file.read) @pytest.fixture @@ -568,7 +568,7 @@ def test_general_exception_behaviour_in_session(new_solver_session): match="solution.run_calculation.iterate' is currently inactive.", ) as exec_info: # The object is not active - solver.solution.run_calculation.iterate(iter_count=5) + solver.settings.solution.run_calculation.iterate(iter_count=5) # Assert that exception is not propagated from the Fluent server assert not isinstance(exec_info.value.__context__, grpc.RpcError) @@ -578,11 +578,11 @@ def test_general_exception_behaviour_in_session(new_solver_session): match="file.write' is currently inactive.", ) as exec_info: # Uninitialized case - solver.file.write(file_name="sample.cas.h5", file_type="case") + solver.settings.file.write(file_name="sample.cas.h5", file_type="case") # Assert that exception is not propagated from the Fluent server assert not isinstance(exec_info.value.__context__, grpc.RpcError) - graphics = solver.results.graphics + graphics = solver.settings.results.graphics fluent_version = solver.get_fluent_version() @@ -597,7 +597,7 @@ def test_general_exception_behaviour_in_session(new_solver_session): "pyfluent/mixing_elbow", ) solver.settings.file.read(file_type="case", file_name=case_file) - solver.file.write(file_name="sample.cas.h5", file_type="case") + solver.settings.file.write(file_name="sample.cas.h5", file_type="case") graphics.mesh["mesh-1"] = {"surfaces_list": "*"} graphics.mesh["mesh-1"].display() @@ -613,7 +613,7 @@ def test_general_exception_behaviour_in_session(new_solver_session): # Assert that exception is propagated from the Fluent server assert isinstance(exec_info.value.__context__, grpc.RpcError) - solver.solution.run_calculation.iterate(iter_count=5) + solver.settings.solution.run_calculation.iterate(iter_count=5) graphics.contour["contour-velocity"] = { "field": "velocity-magnitude", "surfaces_list": ["wall-elbow"], diff --git a/tests/test_settings_api.py b/tests/test_settings_api.py index 02f746011c55..f1a395620501 100644 --- a/tests/test_settings_api.py +++ b/tests/test_settings_api.py @@ -45,11 +45,11 @@ def test_setup_models_viscous_model_settings(new_solver_session) -> None: solver_session = new_solver_session case_path = download_file("elbow_source_terms.cas.h5", "pyfluent/mixing_elbow") - solver_session.file.read( + solver_session.settings.file.read( file_name=case_path, file_type="case", lightweight_setup=True ) - viscous_model = solver_session.setup.models.viscous + viscous_model = solver_session.settings.setup.models.viscous assert viscous_model.model() == "k-epsilon" assert "inviscid" in viscous_model.model.get_attr("allowed-values") @@ -63,8 +63,10 @@ def test_setup_models_viscous_model_settings(new_solver_session) -> None: def test_wildcard(new_solver_session): solver = new_solver_session case_path = download_file("elbow_source_terms.cas.h5", "pyfluent/mixing_elbow") - solver.file.read(file_name=case_path, file_type="case", lightweight_setup=True) - boundary_conditions = solver.setup.boundary_conditions + solver.settings.file.read( + file_name=case_path, file_type="case", lightweight_setup=True + ) + boundary_conditions = solver.settings.setup.boundary_conditions if solver.get_fluent_version() >= FluentVersion.v251: assert boundary_conditions.velocity_inlet[ "inl*" @@ -136,7 +138,7 @@ def test_wildcard(new_solver_session): "inlet2": {"momentum": {"velocity": {"option": "value", "value": 10}}}, "inlet1": {"momentum": {"velocity": {"option": "value", "value": 10}}}, } - cell_zone_conditions = solver.setup.cell_zone_conditions + cell_zone_conditions = solver.settings.setup.cell_zone_conditions if solver.get_fluent_version() >= FluentVersion.v242: sources = cell_zone_conditions.fluid["*"].sources.terms sources_key = "sources" @@ -176,11 +178,11 @@ def test_wildcard(new_solver_session): def test_wildcard_fnmatch(new_solver_session): solver = new_solver_session case_path = download_file("elbow_source_terms.cas.h5", "pyfluent/mixing_elbow") - solver.file.read_case(file_name=case_path) + solver.settings.file.read_case(file_name=case_path) - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() - mesh = solver.results.graphics.mesh + mesh = solver.settings.results.graphics.mesh assert mesh.create("mesh-a").name() == "mesh-a" mesh.create("mesh-bc") if solver.get_fluent_version() >= FluentVersion.v251: @@ -205,9 +207,11 @@ def test_wildcard_fnmatch(new_solver_session): def test_wildcard_path_is_iterable(new_solver_session): solver = new_solver_session case_path = download_file("elbow_source_terms.cas.h5", "pyfluent/mixing_elbow") - solver.file.read(file_name=case_path, file_type="case", lightweight_setup=True) + solver.settings.file.read( + file_name=case_path, file_type="case", lightweight_setup=True + ) - velocity_inlet = solver.setup.boundary_conditions.velocity_inlet + velocity_inlet = solver.settings.setup.boundary_conditions.velocity_inlet assert [x for x in velocity_inlet] == ["inlet2", "inlet1"] assert [x for x in velocity_inlet["*let*"]] == ["inlet2", "inlet1"] assert [x for x in velocity_inlet["*1*"]] == ["inlet1"] @@ -237,7 +241,7 @@ def test_api_upgrade(new_solver_session, capsys): case_path = download_file("Static_Mixer_main.cas.h5", "pyfluent/static_mixer") solver.tui.file.read_case(case_path) timeout_loop( - lambda: ".settings.file.read_case" in capsys.readouterr().out, + lambda: ".file.read_case" in capsys.readouterr().out, timeout=5, ) @@ -249,137 +253,164 @@ def test_deprecated_settings_with_custom_aliases(new_solver_session): solver = new_solver_session case_path = download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") download_file("mixing_elbow.dat.h5", "pyfluent/mixing_elbow") - solver.file._setattr("_child_aliases", {"rcd": ("read_case_data", "rcd")}) + solver.settings.file._setattr("_child_aliases", {"rcd": ("read_case_data", "rcd")}) with pytest.warns(DeprecatedSettingWarning): - solver.file.rcd(file_name=case_path) + solver.settings.file.rcd(file_name=case_path) - solver.setup.boundary_conditions.velocity_inlet.child_object_type._child_aliases[ + solver.settings.setup.boundary_conditions.velocity_inlet.child_object_type._child_aliases[ "mom" - ] = ("momentum", "mom") + ] = ( + "momentum", + "mom", + ) with pytest.warns(DeprecatedSettingWarning): - solver.setup.boundary_conditions.velocity_inlet["hot-inlet"].mom.velocity = 20 + solver.settings.setup.boundary_conditions.velocity_inlet[ + "hot-inlet" + ].mom.velocity = 20 assert ( - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "hot-inlet" ].momentum.velocity.value() == 20 ) with pytest.warns(DeprecatedSettingWarning): - solver.setup.boundary_conditions.velocity_inlet["cold-inlet"].mom.velocity = 2 + solver.settings.setup.boundary_conditions.velocity_inlet[ + "cold-inlet" + ].mom.velocity = 2 assert ( - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "cold-inlet" ].momentum.velocity.value() == 2 ) - solver.setup.boundary_conditions.wall["wall-inlet"].thermal.thermal_bc = ( + solver.settings.setup.boundary_conditions.wall["wall-inlet"].thermal.thermal_bc = ( "Temperature" ) assert ( len( - solver.setup.boundary_conditions.wall[ + solver.settings.setup.boundary_conditions.wall[ "wall-inlet" ].thermal.temperature._child_aliases ) > 0 ) - assert solver.setup.boundary_conditions.wall[ + assert solver.settings.setup.boundary_conditions.wall[ "wall-inlet" ].thermal.temperature._child_aliases["constant"] == ("value", "constant") with pytest.warns(DeprecatedSettingWarning): - solver.setup.boundary_conditions.wall[ + solver.settings.setup.boundary_conditions.wall[ "wall-inlet" ].thermal.temperature.constant = 400 assert ( - solver.setup.boundary_conditions.wall["wall-inlet"].thermal.temperature.value() + solver.settings.setup.boundary_conditions.wall[ + "wall-inlet" + ].thermal.temperature.value() == 400 ) assert ( len( - solver.setup.boundary_conditions.wall[ + solver.settings.setup.boundary_conditions.wall[ "wall-inlet" ].thermal.temperature._child_aliases ) > 0 ) assert isinstance( - solver.setup.boundary_conditions.wall[ + solver.settings.setup.boundary_conditions.wall[ "wall-inlet" ].thermal.temperature._child_alias_objs["constant"], _Alias, ) with pytest.warns(DeprecatedSettingWarning): - solver.setup.boundary_conditions.wall["wall-inlet"].thermal.t.value = 410 + solver.settings.setup.boundary_conditions.wall["wall-inlet"].thermal.t.value = ( + 410 + ) assert ( - solver.setup.boundary_conditions.wall["wall-inlet"].thermal.temperature.value() + solver.settings.setup.boundary_conditions.wall[ + "wall-inlet" + ].thermal.temperature.value() == 410 ) - solver.setup.boundary_conditions._setattr("_child_aliases", {"w": ("wall", "w")}) + solver.settings.setup.boundary_conditions._setattr( + "_child_aliases", {"w": ("wall", "w")} + ) with pytest.warns(DeprecatedSettingWarning): - solver.setup.boundary_conditions.w["wall-inlet"].thermal.temperature.value = 420 + solver.settings.setup.boundary_conditions.w[ + "wall-inlet" + ].thermal.temperature.value = 420 assert ( - solver.setup.boundary_conditions.wall["wall-inlet"].thermal.temperature.value() + solver.settings.setup.boundary_conditions.wall[ + "wall-inlet" + ].thermal.temperature.value() == 420 ) - solver.setup._setattr("_child_aliases", {"bc": ("boundary_conditions", "bc")}) + solver.settings.setup._setattr( + "_child_aliases", {"bc": ("boundary_conditions", "bc")} + ) with pytest.warns(DeprecatedSettingWarning): - solver.setup.bc.wall["wall-inlet"].thermal.temperature.value = 430 + solver.settings.setup.bc.wall["wall-inlet"].thermal.temperature.value = 430 assert ( - solver.setup.boundary_conditions.wall["wall-inlet"].thermal.temperature.value() + solver.settings.setup.boundary_conditions.wall[ + "wall-inlet" + ].thermal.temperature.value() == 430 ) with pytest.warns(DeprecatedSettingWarning): - solver.setup.boundary_conditions.wall[ + solver.settings.setup.boundary_conditions.wall[ "wall-inlet" ].thermal.temperature.constant = 400 assert ( - solver.setup.boundary_conditions.wall["wall-inlet"].thermal.temperature.value() + solver.settings.setup.boundary_conditions.wall[ + "wall-inlet" + ].thermal.temperature.value() == 400 ) - solver.results._setattr("_child_aliases", {"gr": ("graphics", "gr")}) + solver.settings.results._setattr("_child_aliases", {"gr": ("graphics", "gr")}) with pytest.warns(DeprecatedSettingWarning): - solver.results.gr.contour.create("c1") + solver.settings.results.gr.contour.create("c1") with pytest.warns(DeprecatedSettingWarning): - solver.results.gr.contour["c1"].field = "pressure" + solver.settings.results.gr.contour["c1"].field = "pressure" - assert solver.results.graphics.contour["c1"].field() == "pressure" + assert solver.settings.results.graphics.contour["c1"].field() == "pressure" with pytest.warns(DeprecatedSettingWarning): - del solver.results.gr.contour["c1"] + del solver.settings.results.gr.contour["c1"] - assert "c1" not in solver.results.graphics.contour + assert "c1" not in solver.settings.results.graphics.contour - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "hot-inlet" ].momentum.velocity._child_aliases["hd"] = ( "../../turbulence/hydraulic_diameter", "hd", ) with pytest.warns(DeprecatedSettingWarning): - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "hot-inlet" ].momentum.velocity.hd = 10 assert ( - solver.setup.boundary_conditions.velocity_inlet[ + solver.settings.setup.boundary_conditions.velocity_inlet[ "hot-inlet" ].turbulence.hydraulic_diameter() == 10 ) - solver.setup.cell_zone_conditions.fluid["elbow-fluid"] = {"material": "air"} + solver.settings.setup.cell_zone_conditions.fluid["elbow-fluid"] = { + "material": "air" + } - solver.setup.boundary_conditions.wall["wall-inlet"] = { + solver.settings.setup.boundary_conditions.wall["wall-inlet"] = { "thermal": {"q_dot": {"value": 2000000000}, "wall_thickness": {"value": 0.002}} } @@ -446,12 +477,12 @@ def test_command_return_type(new_solver_session): version = solver.get_fluent_version() case_path = download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") download_file("mixing_elbow.dat.h5", "pyfluent/mixing_elbow") - ret = solver.file.read_case_data(file_name=case_path) + ret = solver.settings.file.read_case_data(file_name=case_path) assert ret is None if version >= FluentVersion.v242 else not None - solver.solution.report_definitions.surface["surface-1"] = dict( + solver.settings.solution.report_definitions.surface["surface-1"] = dict( surface_names=["cold-inlet"] ) - ret = solver.solution.report_definitions.compute(report_defs=["surface-1"]) + ret = solver.settings.solution.report_definitions.compute(report_defs=["surface-1"]) assert ret is not None @@ -466,7 +497,7 @@ def warning_record(): @pytest.mark.fluent_version(">=24.2") def test_generated_code_special_cases(new_solver_session): solver = new_solver_session - icing_cls = solver.setup.boundary_conditions._child_classes[ + icing_cls = solver.settings.setup.boundary_conditions._child_classes[ "velocity_inlet" ].child_object_type._child_classes["icing"] fensapice_drop_vrh_cls = icing_cls._child_classes["fensapice_drop_vrh"] @@ -478,17 +509,17 @@ def test_generated_code_special_cases(new_solver_session): assert fensapice_drop_vrh_cls.__name__ != fensapice_drop_vrh_1_cls.__name__ assert ( - solver.file.read_case.file_name.fluent_name - == solver.file.write_case.file_name.fluent_name + solver.settings.file.read_case.file_name.fluent_name + == solver.settings.file.write_case.file_name.fluent_name ) assert ( - solver.file.read_case.file_name.__class__.__name__ - != solver.file.write_case.file_name.__class__.__name__ + solver.settings.file.read_case.file_name.__class__.__name__ + != solver.settings.file.write_case.file_name.__class__.__name__ ) - read_file_bases = solver.file.read_case.file_name.__class__.__bases__ + read_file_bases = solver.settings.file.read_case.file_name.__class__.__bases__ assert _InputFile in read_file_bases assert _OutputFile not in read_file_bases - write_file_bases = solver.file.write_case.file_name.__class__.__bases__ + write_file_bases = solver.settings.file.write_case.file_name.__class__.__bases__ assert _InputFile not in write_file_bases assert _OutputFile in write_file_bases @@ -611,7 +642,7 @@ def test_deprecated_command_arguments(mixing_elbow_case_data_session): with pytest.warns( PyFluentUserWarning, match=( - "Unknown keyword 'all_boundary_zones' for command '.settings.results.report.fluxes.mass_flow'. " + "Unknown keyword 'all_boundary_zones' for command '.results.report.fluxes.mass_flow'. " "It will be ignored." ), ): @@ -758,7 +789,9 @@ def test_runtime_python_classes( use_runtime_python_classes, mixing_elbow_settings_session ): solver = mixing_elbow_settings_session - solver.setup.materials.database.copy_by_name(type="fluid", name="water-liquid") + solver.settings.setup.materials.database.copy_by_name( + type="fluid", name="water-liquid" + ) solver.settings.setup.cell_zone_conditions.fluid["elbow-fluid"] = { "material": "water-liquid" } diff --git a/tests/test_solution_variables.py b/tests/test_solution_variables.py index 1220b34d080a..e518e7ee9560 100644 --- a/tests/test_solution_variables.py +++ b/tests/test_solution_variables.py @@ -40,7 +40,7 @@ def test_solution_variables(new_solver_session): assert solution_variable_info == solver.svar_info assert solution_variable_data == solver.svar_data - solver.file.read_case_data(file_name=import_file_name) + solver.settings.file.read_case_data(file_name=import_file_name) zones_info = solution_variable_info.get_zones_info() @@ -153,7 +153,7 @@ def test_solution_variables_single_precision(new_solver_session_sp): assert solution_variable_info == solver.svar_info assert solution_variable_data == solver.svar_data - solver.file.read_case_data(file_name=import_file_name) + solver.settings.file.read_case_data(file_name=import_file_name) zones_info = solution_variable_info.get_zones_info() @@ -225,7 +225,7 @@ def test_solution_variable_does_not_modify_case(new_solver_session): solver = new_solver_session case_path = download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow") download_file("mixing_elbow.dat.h5", "pyfluent/mixing_elbow") - solver.file.read_case_data(file_name=case_path) + solver.settings.file.read_case_data(file_name=case_path) solver.scheme.eval("(%save-case-id)") assert not solver.scheme.eval("(case-modified?)") solver.fields.solution_variable_data.get_data( diff --git a/tests/test_solver_monitors.py b/tests/test_solver_monitors.py index 49e3b7da2c40..8c2cce29ca69 100644 --- a/tests/test_solver_monitors.py +++ b/tests/test_solver_monitors.py @@ -28,14 +28,13 @@ @pytest.mark.fluent_version(">=23.2") def test_solver_monitors(new_solver_session): - solver = new_solver_session import_case = examples.download_file( file_name="exhaust_system.cas.h5", directory="pyfluent/exhaust_system" ) - solver.file.read_case(file_name=import_case) + solver.settings.file.read_case(file_name=import_case) ordered_report_plot_names = [ "mass-bal-rplot", @@ -57,13 +56,13 @@ def test_solver_monitors(new_solver_session): file_name="exhaust_system.dat.h5", directory="pyfluent/exhaust_system" ) - solver.file.read_data(file_name=import_data) + solver.settings.file.read_data(file_name=import_data) # monitor set names remains unavailable after loading data assert timeout_loop(lambda: len(solver.monitors.get_monitor_set_names()) == 0, 5) # monitor set names becomes available after initializing - solver.solution.initialization.hybrid_initialize() + solver.settings.solution.initialization.hybrid_initialize() monitor_set_names = ordered_report_plot_names + ["residual"] assert timeout_loop( @@ -85,7 +84,7 @@ def all_elements_empty(name): ), f"Monitor set '{name}' contains non-empty elements." # run the solver... - solver.solution.run_calculation.iterate(iter_count=1) + solver.settings.solution.run_calculation.iterate(iter_count=1) # ...data is in monitors def all_elements_non_empty(name): @@ -111,6 +110,6 @@ def monitor_callback(): # trigger callback by running the solver assert not monitor_callback.called - solver.solution.run_calculation.iterate(iter_count=1) + solver.settings.solution.run_calculation.iterate(iter_count=1) assert timeout_loop(lambda: monitor_callback.called, 5) assert monitor_callback.called diff --git a/tests/test_solvermode/test_boundaries.py b/tests/test_solvermode/test_boundaries.py index 04527891876b..bbadf875a160 100644 --- a/tests/test_solvermode/test_boundaries.py +++ b/tests/test_solvermode/test_boundaries.py @@ -35,9 +35,11 @@ @pytest.mark.codegen_required def test_boundaries_elbow(mixing_elbow_settings_session): solver_session = mixing_elbow_settings_session - solver_session.setup.models.energy.enabled = True + solver_session.settings.setup.models.energy.enabled = True - cold_inlet = solver_session.setup.boundary_conditions.velocity_inlet["cold-inlet"] + cold_inlet = solver_session.settings.setup.boundary_conditions.velocity_inlet[ + "cold-inlet" + ] assert D(1) == cold_inlet.momentum.velocity() assign_dict_val(cold_inlet.momentum.velocity, 0.4) assert D(0.4) == cold_inlet.momentum.velocity() @@ -63,7 +65,9 @@ def test_boundaries_elbow(mixing_elbow_settings_session): "thermal": {"t": {"option": "value", "value": 293.15}}, } == cold_inlet() - hot_inlet = solver_session.setup.boundary_conditions.velocity_inlet["hot-inlet"] + hot_inlet = solver_session.settings.setup.boundary_conditions.velocity_inlet[ + "hot-inlet" + ] assign_dict_val(hot_inlet.momentum.velocity, 1.2) hot_inlet.turbulence.turbulent_specification = "Intensity and Hydraulic Diameter" hot_inlet.turbulence.hydraulic_diameter = "1 [in]" @@ -85,11 +89,11 @@ def test_boundaries_elbow(mixing_elbow_settings_session): "thermal": {"t": {"option": "value", "value": 313.15}}, } == hot_inlet() - solver_session.setup.boundary_conditions.pressure_outlet[ + solver_session.settings.setup.boundary_conditions.pressure_outlet[ "outlet" ].turbulence.turbulent_viscosity_ratio = 4 assert ( - solver_session.setup.boundary_conditions.pressure_outlet[ + solver_session.settings.setup.boundary_conditions.pressure_outlet[ "outlet" ].turbulence.turbulent_viscosity_ratio() == 4 @@ -106,7 +110,7 @@ def test_boundaries_periodic(periodic_rot_settings_session): boundary_exp = json.load(open(_DATA_FILE)) boundary_test = dict() boundary_tested = dict() - for name, boundary in solver_session.setup.boundary_conditions.items(): + for name, boundary in solver_session.settings.setup.boundary_conditions.items(): boundary_test[name] = boundary() boundary_tested["val_1"] = boundary_test @@ -115,11 +119,11 @@ def test_boundaries_periodic(periodic_rot_settings_session): boundary_test = dict() for ( boundary_type - ) in solver_session.setup.boundary_conditions.get_active_child_names(): + ) in solver_session.settings.setup.boundary_conditions.get_active_child_names(): if boundary_type in ["non_reflecting_bc", "perforated_wall", "settings"]: continue for name, boundary in getattr( - solver_session.setup.boundary_conditions, boundary_type + solver_session.settings.setup.boundary_conditions, boundary_type ).items(): boundary_test[name] = boundary() boundary_tested["val_2"] = boundary_test @@ -129,15 +133,19 @@ def test_boundaries_periodic(periodic_rot_settings_session): selected_bou_test = get_name_info(boundary_tested["val_1"], boundaries_check) selected_bou_exp = get_name_info(boundary_exp["val_1"], boundaries_check) TestCase().assertDictEqual(selected_bou_test, selected_bou_exp) - solver_session.setup.boundary_conditions.wall["pipe_2_wall"].rename("pipe2_wall") - solver_session.setup.boundary_conditions.pressure_outlet["outlet"].rename("out") - solver_session.setup.boundary_conditions.velocity_inlet[ + solver_session.settings.setup.boundary_conditions.wall["pipe_2_wall"].rename( + "pipe2_wall" + ) + solver_session.settings.setup.boundary_conditions.pressure_outlet["outlet"].rename( + "out" + ) + solver_session.settings.setup.boundary_conditions.velocity_inlet[ "inlet" ].momentum.velocity = 5.0 - solver_session.setup.boundary_conditions["inlet"].momentum.velocity = 10.0 + solver_session.settings.setup.boundary_conditions["inlet"].momentum.velocity = 10.0 boundaries_check = ["inlet", "out", "pipe2_wall"] boundary_test = dict() - for name, boundary in solver_session.setup.boundary_conditions.items(): + for name, boundary in solver_session.settings.setup.boundary_conditions.items(): boundary_test[name] = boundary() boundary_tested["val_3"] = boundary_test TestCase().assertDictEqual(boundary_tested["val_3"], boundary_exp["val_3"]) diff --git a/tests/test_solvermode/test_calculationactivities.py b/tests/test_solvermode/test_calculationactivities.py index 9999c158e80d..a4289119e041 100644 --- a/tests/test_solvermode/test_calculationactivities.py +++ b/tests/test_solvermode/test_calculationactivities.py @@ -35,8 +35,8 @@ def test_solver_calculation(static_mixer_case_session): solver_session.tui.solve.monitors.residual.plot("no") assert scheme_eval("(client-get-var 'residuals/plot?)") is False assert scheme_eval("(data-valid?)") is False - solver_session.solution.initialization.hybrid_initialize() + solver_session.settings.solution.initialization.hybrid_initialize() assert scheme_eval("(data-valid?)") is True - # solver_session.solution.run_calculation.iterate.get_attr("arguments") - # solver_session.solution.run_calculation.number_of_iterations = 5 - # assert solver_session.solution.run_calculation.number_of_iterations == 5 + # solver_session.settings.solution.run_calculation.iterate.get_attr("arguments") + # solver_session.settings.solution.run_calculation.number_of_iterations = 5 + # assert solver_session.settings.solution.run_calculation.number_of_iterations == 5 diff --git a/tests/test_solvermode/test_controls.py b/tests/test_solvermode/test_controls.py index e0094d393d0f..31c50d23b8f3 100644 --- a/tests/test_solvermode/test_controls.py +++ b/tests/test_solvermode/test_controls.py @@ -27,21 +27,21 @@ @pytest.mark.fluent_version("latest") def test_controls(mixing_elbow_settings_session): solver = mixing_elbow_settings_session - solver.setup.models.multiphase.models = "vof" - assert solver.setup.models.multiphase.models() == "vof" - solver.setup.general.operating_conditions.gravity = { + solver.settings.setup.models.multiphase.models = "vof" + assert solver.settings.setup.models.multiphase.models() == "vof" + solver.settings.setup.general.operating_conditions.gravity = { "enable": True, "components": [0.0, 0.0, -9.81], } - assert solver.setup.general.operating_conditions.gravity.components() == [ + assert solver.settings.setup.general.operating_conditions.gravity.components() == [ 0, 0, -9.81, ] - solver.setup.general.solver.time = "steady" - assert solver.setup.general.solver.time() == "steady" + solver.settings.setup.general.solver.time = "steady" + assert solver.settings.setup.general.solver.time() == "steady" param_coarsening = ( - solver.solution.controls.advanced.multi_grid.amg_controls.coupled_parameters.coarsening_parameters + solver.settings.solution.controls.advanced.multi_grid.amg_controls.coupled_parameters.coarsening_parameters ) param_coarsening.laplace_coarsening = True assert param_coarsening() == { @@ -69,7 +69,7 @@ def test_controls(mixing_elbow_settings_session): assert param_coarsening.aggressive_coarsening() is True param_fixed_cycle = ( - solver.solution.controls.advanced.multi_grid.amg_controls.scalar_parameters.fixed_cycle_parameters + solver.settings.solution.controls.advanced.multi_grid.amg_controls.scalar_parameters.fixed_cycle_parameters ) param_fixed_cycle.max_cycle = 300 assert param_fixed_cycle.max_cycle() == 300 @@ -85,46 +85,52 @@ def test_controls(mixing_elbow_settings_session): "post_sweeps": 2, "max_cycle": 350, } - solver.solution.methods.p_v_coupling.flow_scheme = "Coupled" - assert solver.solution.methods.p_v_coupling.flow_scheme() == "Coupled" - solver.solution.methods.p_v_coupling.coupled_form = True - assert solver.solution.methods.p_v_coupling.coupled_form() is True - solver.solution.controls.advanced.multi_grid.amg_controls.scalar_parameters.smoother_type = ( + solver.settings.solution.methods.p_v_coupling.flow_scheme = "Coupled" + assert solver.settings.solution.methods.p_v_coupling.flow_scheme() == "Coupled" + solver.settings.solution.methods.p_v_coupling.coupled_form = True + assert solver.settings.solution.methods.p_v_coupling.coupled_form() is True + solver.settings.solution.controls.advanced.multi_grid.amg_controls.scalar_parameters.smoother_type = ( "Gauss-Seidel" ) assert ( - solver.solution.controls.advanced.multi_grid.amg_controls.scalar_parameters.smoother_type() + solver.settings.solution.controls.advanced.multi_grid.amg_controls.scalar_parameters.smoother_type() == "Gauss-Seidel" ) - assert solver.solution.controls.pseudo_time_explicit_relaxation_factor() == { - "global_dt_pseudo_relax": { - "turb-viscosity": 1.0, - "body-force": 1.0, - "k": 0.75, - "omega": 0.75, - "mp": 0.5, - "density": 1.0, - "temperature": 0.75, + assert ( + solver.settings.solution.controls.pseudo_time_explicit_relaxation_factor() + == { + "global_dt_pseudo_relax": { + "turb-viscosity": 1.0, + "body-force": 1.0, + "k": 0.75, + "omega": 0.75, + "mp": 0.5, + "density": 1.0, + "temperature": 0.75, + } } - } - solver.solution.controls.pseudo_time_explicit_relaxation_factor = { + ) + solver.settings.solution.controls.pseudo_time_explicit_relaxation_factor = { "global_dt_pseudo_relax": {"turb-viscosity": 0.9, "body-force": 0.8} } - assert solver.solution.controls.pseudo_time_explicit_relaxation_factor() == { - "global_dt_pseudo_relax": { - "turb-viscosity": 0.9, - "body-force": 0.8, - "k": 0.75, - "omega": 0.75, - "mp": 0.5, - "density": 1.0, - "temperature": 0.75, + assert ( + solver.settings.solution.controls.pseudo_time_explicit_relaxation_factor() + == { + "global_dt_pseudo_relax": { + "turb-viscosity": 0.9, + "body-force": 0.8, + "k": 0.75, + "omega": 0.75, + "mp": 0.5, + "density": 1.0, + "temperature": 0.75, + } } - } - solver.solution.methods.p_v_coupling.flow_scheme = "SIMPLE" - solver.solution.controls.under_relaxation = {"pressure": 0.9} - solver.solution.controls.under_relaxation = {"density": 0.9} - assert solver.solution.controls.under_relaxation() == { + ) + solver.settings.solution.methods.p_v_coupling.flow_scheme = "SIMPLE" + solver.settings.solution.controls.under_relaxation = {"pressure": 0.9} + solver.settings.solution.controls.under_relaxation = {"density": 0.9} + assert solver.settings.solution.controls.under_relaxation() == { "mom": 0.7, "turb-viscosity": 1, "density": 0.9, @@ -135,12 +141,12 @@ def test_controls(mixing_elbow_settings_session): "k": 0.8, "temperature": 1.0, } - solver.solution.controls.under_relaxation = { + solver.settings.solution.controls.under_relaxation = { "body-force": 0.7, "density": 0.75, "mom": 0.8, } - assert solver.solution.controls.under_relaxation() == { + assert solver.settings.solution.controls.under_relaxation() == { "mom": 0.8, "turb-viscosity": 1, "density": 0.75, diff --git a/tests/test_solvermode/test_general.py b/tests/test_solvermode/test_general.py index 2615c1432fa8..5afe19c08710 100644 --- a/tests/test_solvermode/test_general.py +++ b/tests/test_solvermode/test_general.py @@ -37,14 +37,14 @@ def test_solver_import_mixingelbow(mixing_elbow_settings_session): file_name = Path(pyfluent.config.examples_path) / "jou_test_general.py" solver_session.journal.start(file_name.as_posix()) ### - assert solver_session.setup.models.energy.enabled() + assert solver_session.settings.setup.models.energy.enabled() scheme_eval = solver_session.scheme.eval assert scheme_eval("(case-valid?)") ### solver_session.tui.mesh.check() solver_session.tui.define.units("length", "in") assert scheme_eval('(units/quantity-info "length")')[-1] == "in" - general_solver = solver_session.setup.general.solver + general_solver = solver_session.settings.setup.general.solver general_solver.time.allowed_values() assert general_solver.time.allowed_values() == [ "steady", @@ -58,8 +58,8 @@ def test_solver_import_mixingelbow(mixing_elbow_settings_session): general_solver.time = "unsteady-2nd-order-bounded" general_solver.time = "steady" - # solver.setup.general.gravity = {"gravity": True, "y_component": -9.81} - # solver.mesh.scale(x_scale=0.001, y_scale=0.001, z_scale=0.001) + # solver.settings.setup.general.gravity = {"gravity": True, "y_component": -9.81} + # solver.settings.mesh.scale(x_scale=0.001, y_scale=0.001, z_scale=0.001) assert general_solver.type.get_attr("allowed-values") == [ "pressure-based", @@ -72,7 +72,7 @@ def test_solver_import_mixingelbow(mixing_elbow_settings_session): "density-based-explicit", ] # Below line is commented due to TFS Bug 714494 - # assert solver_session.setup.general.solver.type.default_value() == "pressure-based" + # assert solver_session.settings.setup.general.solver.type.default_value() == "pressure-based" assert general_solver.type.is_active() assert not general_solver.type.is_read_only() general_solver.type = "density-based-implicit" @@ -82,7 +82,7 @@ def test_solver_import_mixingelbow(mixing_elbow_settings_session): general_solver.type = "pressure-based" assert general_solver.type() == "pressure-based" - auto_save = solver_session.file.auto_save + auto_save = solver_session.settings.file.auto_save auto_save.data_frequency = 10 assert auto_save.data_frequency.default_value() == 0 assert auto_save.data_frequency() == 10 @@ -90,7 +90,7 @@ def test_solver_import_mixingelbow(mixing_elbow_settings_session): assert auto_save.case_frequency() == "each-time" auto_save.root_name = "file_auto_save" assert auto_save.root_name() == "file_auto_save" - solver_session.setup.reference_values.compute( + solver_session.settings.setup.reference_values.compute( from_zone_name="outlet", from_zone_type="pressure-outlet" ) solver_session.journal.stop() @@ -110,11 +110,11 @@ def test_disk_2d_setup(disk_settings_session): assert session.settings.is_active() assert session.is_server_healthy() ### - assert not session.setup.models.energy.enabled() + assert not session.settings.setup.models.energy.enabled() assert session.scheme.eval("(case-valid?)") session.tui.mesh.check() - session_solver = session.setup.general.solver + session_solver = session.settings.setup.general.solver assert session_solver.two_dim_space.get_attr("allowed-values") == [ "swirl", "axisymmetric", @@ -128,4 +128,4 @@ def test_disk_2d_setup(disk_settings_session): session_solver.two_dim_space = "planar" assert session_solver.two_dim_space() == "planar" # Bug 682773 - # session.setup.general.gravity = {"gravity": True, "x_component": -9.81} + # session.settings.setup.general.gravity = {"gravity": True, "x_component": -9.81} diff --git a/tests/test_solvermode/test_initialization.py b/tests/test_solvermode/test_initialization.py index 4625b13a4db0..0496539e9d44 100644 --- a/tests/test_solvermode/test_initialization.py +++ b/tests/test_solvermode/test_initialization.py @@ -23,6 +23,7 @@ import pytest from ansys.fluent.core.examples.downloads import download_file +from ansys.fluent.core.session_solver import Solver @pytest.mark.settings_only @@ -32,26 +33,28 @@ def test_initialization_settings(new_solver_session): "wigley.cas.h5", "pyfluent/wigley_hull", ) - solver.file.read( + solver.settings.file.read( file_type="case", file_name=case_name, lightweight_setup=True, ) - solver.parallel.partition.set.laplace_smoothing.enabled = True - solver.parallel.partition.method(partition_method="metis", count=2) - copy_by_name = solver.setup.materials.database.copy_by_name + solver.settings.parallel.partition.set.laplace_smoothing.enabled = True + solver.settings.parallel.partition.method(partition_method="metis", count=2) + copy_by_name = solver.settings.setup.materials.database.copy_by_name copy_by_name(type="fluid", name="air") copy_by_name(type="fluid", name="water-liquid") - solver.setup.models.multiphase.models = "vof" - solver.setup.general.operating_conditions.gravity = { + solver.settings.setup.models.multiphase.models = "vof" + solver.settings.setup.general.operating_conditions.gravity = { "enable": True, "components": [0.0, 0.0, -9.81], } - solver.setup.general.solver.time = "steady" + solver.settings.setup.general.solver.time = "steady" solver.tui.define.models.multiphase.vof_sub_models("yes", "no") solver.tui.define.phases.set_domain_properties.change_phases_names("water", "air") - solver.setup.boundary_conditions.pressure_inlet["inflow"].phase["mixture"] = { + solver.settings.setup.boundary_conditions.pressure_inlet["inflow"].phase[ + "mixture" + ] = { "multiphase": { "open_channel": True, "vmag": 1.452, @@ -63,7 +66,9 @@ def test_initialization_settings(new_solver_session): "turbulent_viscosity_ratio": 1, }, } - solver.setup.boundary_conditions.pressure_outlet["outflow"].phase["mixture"] = { + solver.settings.setup.boundary_conditions.pressure_outlet["outflow"].phase[ + "mixture" + ] = { "multiphase": { "open_channel": True, "ht_bottom": -0.941875, @@ -79,27 +84,27 @@ def test_initialization_settings(new_solver_session): }, } - solver.solution.methods.p_v_coupling.flow_scheme = "Coupled" - solver.solution.methods.p_v_coupling.coupled_form = True - solver.solution.controls.advanced.multi_grid.amg_controls.coupled_parameters.coarsening_parameters.laplace_coarsening = ( + solver.settings.solution.methods.p_v_coupling.flow_scheme = "Coupled" + solver.settings.solution.methods.p_v_coupling.coupled_form = True + solver.settings.solution.controls.advanced.multi_grid.amg_controls.coupled_parameters.coarsening_parameters.laplace_coarsening = ( True ) - solver.solution.initialization.open_channel_auto_init = { + solver.settings.solution.initialization.open_channel_auto_init = { "boundary_zone": 3, "flat_init": True, } - assert solver.solution.initialization.open_channel_auto_init() == { + assert solver.settings.solution.initialization.open_channel_auto_init() == { "boundary_zone": 3, "flat_init": True, } @pytest.mark.fluent_version(">=24.1") -def test_fmg_initialize(new_solver_session): +def test_fmg_initialize(new_solver_session: Solver): solver = new_solver_session case_name = download_file("vki_turbine.cas.gz", "pyfluent/vki_turbine") - solver.file.read(file_type="case", file_name=case_name) - solver.mesh.check() - solver.solution.initialization.standard_initialize() - solver.solution.initialization.fmg.fmg_initialize() + solver.settings.file.read(file_type="case", file_name=case_name) + solver.settings.mesh.check() + solver.settings.solution.initialization.standard_initialize() + solver.settings.solution.initialization.fmg.fmg_initialize() solver.tui.solve.iterate(2) diff --git a/tests/test_solvermode/test_materials.py b/tests/test_solvermode/test_materials.py index 2bbf640fb693..0d94a15901f0 100644 --- a/tests/test_solvermode/test_materials.py +++ b/tests/test_solvermode/test_materials.py @@ -28,9 +28,11 @@ @pytest.mark.fluent_version("latest") def test_solver_material(mixing_elbow_settings_session): solver_session = mixing_elbow_settings_session - setup_materials = solver_session.setup.materials + setup_materials = solver_session.settings.setup.materials copy_database_material(materials=setup_materials, type="fluid", name="water-liquid") - elbow_fluid = solver_session.setup.cell_zone_conditions.fluid["elbow-fluid"] + elbow_fluid = solver_session.settings.setup.cell_zone_conditions.fluid[ + "elbow-fluid" + ] assert "water-liquid" not in elbow_fluid.material() elbow_fluid.material = "water-liquid" diff --git a/tests/test_solvermode/test_methods.py b/tests/test_solvermode/test_methods.py index f0185a690777..f1235d61a2fd 100644 --- a/tests/test_solvermode/test_methods.py +++ b/tests/test_solvermode/test_methods.py @@ -27,22 +27,22 @@ @pytest.mark.fluent_version("latest") def test_methods(mixing_elbow_settings_session): solver = mixing_elbow_settings_session - solver.setup.models.multiphase.models = "vof" - solver.setup.general.operating_conditions.gravity = { + solver.settings.setup.models.multiphase.models = "vof" + solver.settings.setup.general.operating_conditions.gravity = { "enable": True, "components": [0.0, 0.0, -9.81], } - solver.setup.general.solver.time = "steady" + solver.settings.setup.general.solver.time = "steady" - p_v_coupling = solver.solution.methods.p_v_coupling + p_v_coupling = solver.settings.solution.methods.p_v_coupling p_v_coupling.flow_scheme = "Coupled" p_v_coupling.coupled_form = False assert p_v_coupling() == { "flow_scheme": "Coupled", "coupled_form": False, } - solver.solution.methods.discretization_scheme = {"pressure": "presto!"} - assert solver.solution.methods.discretization_scheme() == { + solver.settings.solution.methods.discretization_scheme = {"pressure": "presto!"} + assert solver.settings.solution.methods.discretization_scheme() == { "mom": "second-order-upwind", "omega": "second-order-upwind", "mp": "compressive", @@ -50,19 +50,25 @@ def test_methods(mixing_elbow_settings_session): "k": "second-order-upwind", "temperature": "second-order-upwind", } - solver.solution.methods.gradient_scheme = "least-square-cell-based" - assert solver.solution.methods.gradient_scheme() == "least-square-cell-based" + solver.settings.solution.methods.gradient_scheme = "least-square-cell-based" + assert ( + solver.settings.solution.methods.gradient_scheme() == "least-square-cell-based" + ) - enable_warped_face = solver.solution.methods.warped_face_gradient_correction + enable_warped_face = ( + solver.settings.solution.methods.warped_face_gradient_correction + ) enable_warped_face(enable=True, mode="fast") enable_warped_face(enable=False, mode="fast") - solver.solution.methods.expert.numerics_pbns.velocity_formulation = "relative" + solver.settings.solution.methods.expert.numerics_pbns.velocity_formulation = ( + "relative" + ) assert ( - solver.solution.methods.expert.numerics_pbns.velocity_formulation() + solver.settings.solution.methods.expert.numerics_pbns.velocity_formulation() == "relative" ) - solver.solution.methods.expert.numerics_pbns = { + solver.settings.solution.methods.expert.numerics_pbns = { "implicit_bodyforce_treatment": True, "velocity_formulation": "absolute", "physical_velocity_formulation": True, @@ -70,7 +76,7 @@ def test_methods(mixing_elbow_settings_session): "presto_pressure_scheme": False, "first_to_second_order_blending": 1.0, } - assert solver.solution.methods.expert.numerics_pbns() == { + assert solver.settings.solution.methods.expert.numerics_pbns() == { "implicit_bodyforce_treatment": True, "velocity_formulation": "absolute", "physical_velocity_formulation": True, @@ -78,10 +84,15 @@ def test_methods(mixing_elbow_settings_session): "presto_pressure_scheme": False, "first_to_second_order_blending": 1.0, } - solver.solution.methods.expert.numerics_pbns.presto_pressure_scheme = True - assert solver.solution.methods.expert.numerics_pbns.presto_pressure_scheme() is True - solver.solution.methods.gradient_scheme = "green-gauss-node-based" - assert solver.solution.methods.gradient_scheme() == "green-gauss-node-based" - solver.solution.methods.warped_face_gradient_correction( + solver.settings.solution.methods.expert.numerics_pbns.presto_pressure_scheme = True + assert ( + solver.settings.solution.methods.expert.numerics_pbns.presto_pressure_scheme() + is True + ) + solver.settings.solution.methods.gradient_scheme = "green-gauss-node-based" + assert ( + solver.settings.solution.methods.gradient_scheme() == "green-gauss-node-based" + ) + solver.settings.solution.methods.warped_face_gradient_correction( enable=True, mode="memory-saving" ) diff --git a/tests/test_solvermode/test_models.py b/tests/test_solvermode/test_models.py index 01a88aa1ae08..cc7fa4537d33 100644 --- a/tests/test_solvermode/test_models.py +++ b/tests/test_solvermode/test_models.py @@ -27,7 +27,7 @@ @pytest.mark.fluent_version("latest") def test_solver_models(mixing_elbow_settings_session): solver_session = mixing_elbow_settings_session - models = solver_session.setup.models + models = solver_session.settings.setup.models assert models.energy.enabled() models.energy.enabled = False assert not models.energy.enabled() @@ -47,9 +47,9 @@ def test_solver_models(mixing_elbow_settings_session): @pytest.mark.fluent_version("latest") def test_disk_2d_models(disk_settings_session): solver_session = disk_settings_session - models = solver_session.setup.models - solver_session.setup.general.solver.two_dim_space = "axisymmetric" - solver_session.setup.general.solver.two_dim_space = "swirl" + models = solver_session.settings.setup.models + solver_session.settings.setup.general.solver.two_dim_space = "axisymmetric" + solver_session.settings.setup.general.solver.two_dim_space = "swirl" models.viscous.model = "k-epsilon" near_wall = models.viscous.near_wall_treatment diff --git a/tests/test_solvermode/test_named_expressions.py b/tests/test_solvermode/test_named_expressions.py index 053e4a0557e0..cd1bdae259ba 100644 --- a/tests/test_solvermode/test_named_expressions.py +++ b/tests/test_solvermode/test_named_expressions.py @@ -28,8 +28,8 @@ def test_expression(mixing_elbow_settings_session): solver_session = mixing_elbow_settings_session # Case file already has energy model turned on - # solver_session.setup.models.energy.enabled = True - expressions = solver_session.setup.named_expressions + # solver_session.settings.setup.models.energy.enabled = True + expressions = solver_session.settings.setup.named_expressions expressions["r"] = {} expressions["r"] = {"definition": "(Position.z**2.0 +Position.x**2.0)**0.5"} expressions["r1"] = {} @@ -44,7 +44,7 @@ def test_expression(mixing_elbow_settings_session): assert expressions["v1"].definition() == "r1**(1.0/6.0)" assert expressions["vel_cold"].definition() == "1.264 * 1.43 [m s^-1] * max(0,v1)" - velocity_inlet = solver_session.setup.boundary_conditions.velocity_inlet + velocity_inlet = solver_session.settings.setup.boundary_conditions.velocity_inlet velocity_inlet["cold-inlet"].momentum = {"velocity": "vel_cold"} velocity_inlet["hot-inlet"].momentum = {"velocity": "max(vel_cold, 1.5 [m/s])"} assert velocity_inlet["cold-inlet"].momentum.velocity() == { diff --git a/tests/test_solvermode/test_post_vector.py b/tests/test_solvermode/test_post_vector.py index 27c0d9e5998f..846c143be6b8 100644 --- a/tests/test_solvermode/test_post_vector.py +++ b/tests/test_solvermode/test_post_vector.py @@ -26,10 +26,10 @@ @pytest.mark.settings_only @pytest.mark.fluent_version("latest") def test_post_elbow(mixing_elbow_settings_session): - mixing_elbow_settings_session.results.graphics.vector[ + mixing_elbow_settings_session.settings.results.graphics.vector[ "velocity_vector_symmetry" ] = {} - vector_graphics = mixing_elbow_settings_session.results.graphics.vector[ + vector_graphics = mixing_elbow_settings_session.settings.results.graphics.vector[ "velocity_vector_symmetry" ] vector_graphics.field = "temperature" diff --git a/tests/test_solvermode/test_species_model.py b/tests/test_solvermode/test_species_model.py index a62939569056..2972649cb2fe 100644 --- a/tests/test_solvermode/test_species_model.py +++ b/tests/test_solvermode/test_species_model.py @@ -29,14 +29,14 @@ def test_change_create_mixture(mixing_elbow_settings_session): solver_session = mixing_elbow_settings_session # Test turning on species transport model - species_mdl = solver_session.setup.models.species.model + species_mdl = solver_session.settings.setup.models.species.model assert species_mdl.option() == "off" species_mdl.option = "species-transport" assert species_mdl.option() == "species-transport" # Test command names list - materials = solver_session.setup.materials + materials = solver_session.settings.setup.materials assert sorted(materials.mixture.command_names) == sorted( ["delete", "list", "list_properties", "make_a_copy", "rename"] ) @@ -65,7 +65,7 @@ def test_change_create_mixture(mixing_elbow_settings_session): assert "mixture-template" not in materials.mixture.keys() # Test that mixture contains correct species - mix_species = solver_session.setup.materials.mixture[ + mix_species = solver_session.settings.setup.materials.mixture[ "custom-mixture" ].species.volumetric_species.keys() assert "custom-species-1" in mix_species @@ -79,7 +79,7 @@ def test_change_create_mixture(mixing_elbow_settings_session): assert "custom-mixture-copy" in materials.mixture.keys() # Test changing cellzone mixture - elbow_zone = solver_session.setup.cell_zone_conditions.fluid["elbow-fluid"] + elbow_zone = solver_session.settings.setup.cell_zone_conditions.fluid["elbow-fluid"] assert elbow_zone.material() == "custom-mixture" elbow_zone.material = "custom-mixture-copy" assert elbow_zone.material() == "custom-mixture-copy" diff --git a/tests/test_tui_api.py b/tests/test_tui_api.py index a3e19f341868..d6212dd70954 100644 --- a/tests/test_tui_api.py +++ b/tests/test_tui_api.py @@ -66,10 +66,7 @@ def test_api_upgrade_message(new_solver_session): solver.tui.file.read_case(case_name) s = f.getvalue() if solver.get_fluent_version() >= FluentVersion.v251: - assert ( - s.split("\n")[-2].split("(")[0] - == r".settings.file.read_case" - ) + assert s.split("\n")[-2].split("(")[0] == r".file.read_case" else: assert s.split("\n")[-2].split("(")[0] == r".file.read_case"