From 786eb365c61605f00cfac1d82f0b7cfd1f47d6c5 Mon Sep 17 00:00:00 2001 From: Mainak Kundu Date: Thu, 7 Apr 2022 11:16:52 +0530 Subject: [PATCH] Remove the asynchronous decorator from TUI and datamodel command execution --- ansys/fluent/core/services/datamodel_se.py | 2 - ansys/fluent/core/services/datamodel_tui.py | 2 - ansys/fluent/core/utils/async_execution.py | 23 +++++- .../00-fluent/mixing_elbow_settings_api.py | 18 ++--- examples/00-fluent/mixing_elbow_tui_api.py | 76 +++++++++---------- 5 files changed, 69 insertions(+), 52 deletions(-) diff --git a/ansys/fluent/core/services/datamodel_se.py b/ansys/fluent/core/services/datamodel_se.py index 24f9b01c062c..64908726750c 100644 --- a/ansys/fluent/core/services/datamodel_se.py +++ b/ansys/fluent/core/services/datamodel_se.py @@ -10,7 +10,6 @@ from ansys.api.fluent.v0 import datamodel_se_pb2_grpc as DataModelGrpcModule from ansys.fluent.core.services.error_handler import catch_grpc_error from ansys.fluent.core.services.interceptors import TracingInterceptor -from ansys.fluent.core.utils.async_execution import asynchronous Path = List[Tuple[str, str]] @@ -550,7 +549,6 @@ def __init__( else: self.path = path - @asynchronous def __call__(self, *args, **kwds) -> Any: """Executes the command. diff --git a/ansys/fluent/core/services/datamodel_tui.py b/ansys/fluent/core/services/datamodel_tui.py index fe2fd29a6719..8c859f01bf65 100644 --- a/ansys/fluent/core/services/datamodel_tui.py +++ b/ansys/fluent/core/services/datamodel_tui.py @@ -9,7 +9,6 @@ from ansys.api.fluent.v0 import datamodel_tui_pb2_grpc as DataModelGrpcModule from ansys.fluent.core.services.error_handler import catch_grpc_error from ansys.fluent.core.services.interceptors import TracingInterceptor -from ansys.fluent.core.utils.async_execution import asynchronous Path = List[Tuple[str, str]] @@ -220,7 +219,6 @@ def set_state(self, value: Any) -> None: _convert_value_to_gvalue(value, request.state) self._service.set_state(request) - @asynchronous def _execute_command( self, request: DataModelProtoModule.ExecuteCommandRequest ) -> Any: diff --git a/ansys/fluent/core/utils/async_execution.py b/ansys/fluent/core/utils/async_execution.py index b945eb369b56..b6d602be07cf 100644 --- a/ansys/fluent/core/utils/async_execution.py +++ b/ansys/fluent/core/utils/async_execution.py @@ -5,7 +5,28 @@ def asynchronous(f): - """Use for decorating functions to execute asynchronously.""" + """Use for decorating functions to execute asynchronously. The decorated + function returns a `future`_ object. Calling `result()`_ on the future + object synchronizes the function execution. + + Examples + -------- + >>> # asynchronous execution using @asynchronous decorator + >>> @asynchronous + ... def asynchronous_solve(session, number_of_iterations): + ... session.tui.solver.solve.iterate(number_of_iterations) + >>> asynchronous_solve(session1, 100) + + >>> # using the asynchronous function directly + >>> asynchronous(session2.tui.solver.solve.iterate)(100) + + >>> # synchronous execution of above 2 calls + >>> asynchronous_solve(session1, 100).result() + >>> asynchronous(session2.tui.solver.solve.iterate)(100).result() + + .. _Future: https://docs.python.org/3/library/asyncio-future.html#future-object # noqa: E501 + .. _result(): https://docs.python.org/3/library/asyncio-future.html#asyncio.Future.result # noqa: E501 + """ @functools.wraps(f) def func(*args, **kwargs): diff --git a/examples/00-fluent/mixing_elbow_settings_api.py b/examples/00-fluent/mixing_elbow_settings_api.py index 6355e01d0240..ec2897c7af03 100644 --- a/examples/00-fluent/mixing_elbow_settings_api.py +++ b/examples/00-fluent/mixing_elbow_settings_api.py @@ -397,17 +397,17 @@ "3", "quit", ) -s.tui.solver.solve.convergence_conditions("frequency", "3", "quit").result() +s.tui.solver.solve.convergence_conditions("frequency", "3", "quit") ############################################################################### # Initialize the flow field using the Hybrid Initialization -s.tui.solver.solve.initialize.hyb_initialization().result() +s.tui.solver.solve.initialize.hyb_initialization() ############################################################################### # Solve for 150 Iterations. -s.tui.solver.solve.iterate(150).result() +s.tui.solver.solve.iterate(150) ############################################################################### @@ -479,7 +479,7 @@ # surface outlet. Name: z=0_outlet s.tui.solver.surface.iso_surface( "z-coordinate", "z=0_outlet", "outlet", "()", "()", "0", "()" -).result() +) # Create Contour on the iso-surface root.results.graphics.contour["contour-z_0_outlet"] = {} @@ -491,7 +491,7 @@ # root.results.graphics.contour["contour-z_0_outlet"].display() ############################################################################### -# s.tui.solver.file.write_case_data("mixing_elbow1_set.cas.h5").result() +# s.tui.solver.file.write_case_data("mixing_elbow1_set.cas.h5") # Display and save an XY plot of the temperature profile across the centerline # of the outlet for the initial solution @@ -505,8 +505,8 @@ "z=0_outlet", "()", "quit", -).result() -# s.tui.solver.display.objects.display("xy-outlet-temp").result() +) +# s.tui.solver.display.objects.display("xy-outlet-temp") # s.tui.solver.plot.plot( # "yes", # "temp-1.xy", @@ -520,11 +520,11 @@ # "0", # "z=0_outlet", # "()", -# ).result() +# ) ############################################################################### # Write final case and data. -# s.tui.solver.file.write_case_data('mixing_elbow2_set.cas.h5').result() +# s.tui.solver.file.write_case_data('mixing_elbow2_set.cas.h5') ############################################################################### diff --git a/examples/00-fluent/mixing_elbow_tui_api.py b/examples/00-fluent/mixing_elbow_tui_api.py index bf82867925da..6812e7656b4a 100644 --- a/examples/00-fluent/mixing_elbow_tui_api.py +++ b/examples/00-fluent/mixing_elbow_tui_api.py @@ -163,7 +163,7 @@ ############################################################################### # Check the mesh in Meshing mode -s.tui.meshing.mesh.check_mesh().result() +s.tui.meshing.mesh.check_mesh() ############################################################################### @@ -177,7 +177,7 @@ # mode, you can now switch to solver mode to complete the setup of the # simulation. We have just checked the mesh, so select Yes to switch to # solution mode. -s.tui.meshing.switch_to_solution_mode("yes").result() +s.tui.meshing.switch_to_solution_mode("yes") ############################################################################### @@ -187,7 +187,7 @@ # mesh features that are checked. Any errors in the mesh will be reported at # this time. Ensure that the minimum volume is not negative, since Ansys Fluent # cannot begin a calculation when this is the case. -s.tui.solver.mesh.check().result() +s.tui.solver.mesh.check() ############################################################################### @@ -197,17 +197,17 @@ # to change any other units in this problem. If you want a different working # unit for length, other than inches (for example, millimeters), make the # appropriate change. -s.tui.solver.define.units("length", "in").result() +s.tui.solver.define.units("length", "in") ############################################################################### # Enable heat transfer by activating the energy equation. -s.tui.solver.define.models.energy("yes", ", ", ", ", ", ", ", ").result() +s.tui.solver.define.models.energy("yes", ", ", ", ", ", ", ", ") ############################################################################### # Create a new material called water-liquid. -s.tui.solver.define.materials.copy("fluid", "water-liquid").result() +s.tui.solver.define.materials.copy("fluid", "water-liquid") ############################################################################### @@ -237,7 +237,7 @@ "no", "no", "no", -).result() +) ############################################################################### @@ -249,19 +249,19 @@ s.tui.solver.define.boundary_conditions.set.velocity_inlet( "cold-inlet", [], "vmag", "no", 0.4, "quit" -).result() +) s.tui.solver.define.boundary_conditions.set.velocity_inlet( "cold-inlet", [], "ke-spec", "no", "no", "no", "yes", "quit" -).result() +) s.tui.solver.define.boundary_conditions.set.velocity_inlet( "cold-inlet", [], "turb-intensity", 5, "quit" -).result() +) s.tui.solver.define.boundary_conditions.set.velocity_inlet( "cold-inlet", [], "turb-hydraulic-diam", 4, "quit" -).result() +) s.tui.solver.define.boundary_conditions.set.velocity_inlet( "cold-inlet", [], "temperature", "no", 293.15, "quit" -).result() +) ############################################################################### @@ -271,19 +271,19 @@ s.tui.solver.define.boundary_conditions.set.velocity_inlet( "hot-inlet", [], "vmag", "no", 1.2, "quit" -).result() +) s.tui.solver.define.boundary_conditions.set.velocity_inlet( "hot-inlet", [], "ke-spec", "no", "no", "no", "yes", "quit" -).result() +) s.tui.solver.define.boundary_conditions.set.velocity_inlet( "hot-inlet", [], "turb-intensity", 5, "quit" -).result() +) s.tui.solver.define.boundary_conditions.set.velocity_inlet( "hot-inlet", [], "turb-hydraulic-diam", 1, "quit" -).result() +) s.tui.solver.define.boundary_conditions.set.velocity_inlet( "hot-inlet", [], "temperature", "no", 313.15, "quit" -).result() +) ############################################################################### @@ -293,10 +293,10 @@ s.tui.solver.define.boundary_conditions.set.pressure_outlet( "outlet", [], "turb-intensity", 5, "quit" -).result() +) s.tui.solver.define.boundary_conditions.set.pressure_outlet( "outlet", [], "turb-viscosity-ratio", 4, "quit" -).result() +) ############################################################################### @@ -316,7 +316,7 @@ "outlet", "()", "quit", -).result() +) ############################################################################### @@ -342,7 +342,7 @@ # "run-index", # "0", # "quit", -# ).result() +# ) ############################################################################### @@ -381,23 +381,23 @@ "frequency", "3", "quit", -).result() -s.tui.solver.solve.convergence_conditions("frequency", "3", "quit").result() +) +s.tui.solver.solve.convergence_conditions("frequency", "3", "quit") ############################################################################### # Initialize the flow field using the Hybrid Initialization -s.tui.solver.solve.initialize.hyb_initialization().result() +s.tui.solver.solve.initialize.hyb_initialization() ############################################################################### # Save the case file (mixing_elbow1.cas.h5). -# s.tui.solver.file.write_case('mixing_elbow1.cas.h5').result() +# s.tui.solver.file.write_case('mixing_elbow1.cas.h5') ############################################################################### # Solve for 150 Iterations. -s.tui.solver.solve.iterate(150).result() +s.tui.solver.solve.iterate(150) ############################################################################### @@ -410,7 +410,7 @@ ############################################################################### # Save the data file (mixing_elbow1.dat.h5). -# s.tui.solver.file.write_data('mixing_elbow1.dat.h5').result() +# s.tui.solver.file.write_data('mixing_elbow1.dat.h5') ############################################################################### @@ -435,8 +435,8 @@ "coloring", "banded", "quit", -).result() -# s.tui.solver.display.objects.display("contour-vel").result() +) +# s.tui.solver.display.objects.display("contour-vel") ############################################################################### @@ -461,7 +461,7 @@ "smooth", "quit", ) -# s.tui.solver.display.objects.display("contour-temp").result() +# s.tui.solver.display.objects.display("contour-temp") ############################################################################### @@ -485,8 +485,8 @@ "skip", "2", "quit", -).result() -# s.tui.solver.display.objects.display("vector-vel").result() +) +# s.tui.solver.display.objects.display("vector-vel") ############################################################################### @@ -494,10 +494,10 @@ # surface outlet. Name: z=0_outlet s.tui.solver.surface.iso_surface( "z-coordinate", "z=0_outlet", "outlet", "()", "()", "0", "()" -).result() +) ############################################################################### -# s.tui.solver.file.write_case_data("mixing_elbow1_tui.cas.h5").result() +# s.tui.solver.file.write_case_data("mixing_elbow1_tui.cas.h5") # Display and save an XY plot of the temperature profile across the centerline # of the outlet for the initial solution @@ -510,8 +510,8 @@ "z=0_outlet", "()", "quit", -).result() -# s.tui.solver.display.objects.display("xy-outlet-temp").result() +) +# s.tui.solver.display.objects.display("xy-outlet-temp") # s.tui.solver.plot.plot( # "yes", # "temp-1.xy", @@ -525,11 +525,11 @@ # "0", # "z=0_outlet", # "()", -# ).result() +# ) ############################################################################### # Write final case and data. -# s.tui.solver.file.write_case_data("mixing_elbow2_tui.cas.h5").result() +# s.tui.solver.file.write_case_data("mixing_elbow2_tui.cas.h5") ###############################################################################