Defining Parametric Workflows#
PyFluent supports parametric workflows in Fluent.
Parametric Study#
Here is a simple example:
Creating Input Parameters#
The following example demonstrates how you can create input parameters: inlet1_vel, inlet1_temp, inlet2_vel and inlet2_temp
from pathlib import Path
import ansys.fluent.core as pyfluent
from ansys.fluent.core import examples
from ansys.fluent.parametric import ParametricProject, ParametricStudy
session = pyfluent.launch_fluent(precision="double", processor_count=2)
import_filename = examples.download_file(
"Static_Mixer_main.cas.h5", "pyfluent/static_mixer"
)
session.solver.root.file.read(file_type="case", file_name=import_filename)
session.solver.root.solution.run_calculation.iterate(number_of_iterations=100)
session.solver.tui.define.parameters.enable_in_TUI("yes")
session.solver.tui.define.boundary_conditions.set.velocity_inlet(
"inlet1", (), "vmag", "yes", "inlet1_vel", 1, "quit"
)
session.solver.tui.define.boundary_conditions.set.velocity_inlet(
"inlet1", (), "temperature", "yes", "inlet1_temp", 300, "quit"
)
session.solver.tui.define.boundary_conditions.set.velocity_inlet(
"inlet2", (), "vmag", "yes", "no", "inlet2_vel", 1, "quit"
)
session.solver.tui.define.boundary_conditions.set.velocity_inlet(
"inlet2", (), "temperature", "yes", "no", "inlet2_temp", 350, "quit"
)
Creating Output Parameters#
The following example demonstrates how you can create output parameters: outlet-temp-avg and outlet-vel-avg
session.solver.root.solution.report_definitions.surface["outlet-temp-avg"] = {}
session.solver.root.solution.report_definitions.surface[
"outlet-temp-avg"
].report_type = "surface-areaavg"
session.solver.root.solution.report_definitions.surface[
"outlet-temp-avg"
].field = "temperature"
session.solver.root.solution.report_definitions.surface[
"outlet-temp-avg"
].surface_names = ["outlet"]
session.solver.root.solution.report_definitions.surface["outlet-vel-avg"] = {}
session.solver.root.solution.report_definitions.surface[
"outlet-vel-avg"
].report_type = "surface-areaavg"
session.solver.root.solution.report_definitions.surface[
"outlet-vel-avg"
].field = "velocity-magnitude"
session.solver.root.solution.report_definitions.surface[
"outlet-vel-avg"
].surface_names = ["outlet"]
session.solver.tui.define.parameters.enable_in_TUI("yes")
session.solver.tui.define.parameters.output_parameters.create(
"report-definition", "outlet-temp-avg"
)
session.solver.tui.define.parameters.output_parameters.create(
"report-definition", "outlet-vel-avg"
)
Instantiating a parametric study#
The following example demonstrates how you can instantiate a parametric study:
study_1 = ParametricStudy(session.solver.root.parametric_studies).initialize()
Accessing and Modifying Input Parameters of the Base Design Point#
The following example demonstrates how you can access and modify input parameters of the base design point:
input_parameters_update = study_1.design_points["Base DP"].input_parameters
input_parameters_update["inlet1_vel"] = 0.5
study_1.design_points["Base DP"].input_parameters = input_parameters_update
Updating the Current Design Point#
The following example demonstrates how you can update the current design point:
study_1.update_current_design_point()
Adding New Design Points#
The following example demonstrates how to add new design points:
design_point_1 = study_1.add_design_point()
design_point_1_input_parameters = study_1.design_points["DP1"].input_parameters
design_point_1_input_parameters["inlet1_temp"] = 500
design_point_1_input_parameters["inlet1_vel"] = 1
design_point_1_input_parameters["inlet2_vel"] = 1
study_1.design_points["DP1"].input_parameters = design_point_1_input_parameters
Duplicating Design Points#
The following example demonstrates how you can duplicate a design point:
design_point_2 = study_1.duplicate_design_point(design_point_1)
Updating All Design Points#
The following example demonstrates how you can update all design points in your study:
study_1.update_all_design_points()
Exporting the Design Point Table#
The following example demonstrates how you can export the design point table as a comma separated value (CSV) table:
design_point_table = str(
Path(pyfluent.EXAMPLES_PATH) / "design_point_table_study_1.csv"
)
study_1.export_design_table(design_point_table)
Deleting Design Points#
The following example demonstrates how you can remove design points:
study_1.delete_design_points([design_point_1])
Duplicating Design Points#
The following example demonstrates how you can copy design points:
study_2 = study_1.duplicate()
Renaming Studies#
The following example demonstrates how you can change the name of your study:
study_2.rename("New Study")
Deleting Studies#
The following example demonstrates how you can remove old parametric studies:
study_1.delete()
Saving Your Study and Closing Fluent#
The following example demonstrates how you can save your work and close the Fluent instance:
project_filepath = str(Path(pyfluent.EXAMPLES_PATH) / "static_mixer_study.flprj")
session.solver.tui.file.parametric_project.save_as(project_filepath)
session.exit()
Resuming Your Work#
The following example demonstrates how you can re-start Fluent and read in a previously saved project:
session = pyfluent.launch_fluent(precision="double", processor_count=2)
project_filepath_read = str(Path(pyfluent.EXAMPLES_PATH) / "static_mixer_study.flprj")
proj = ParametricProject(
session.solver.root.file.parametric_project,
session.solver.root.parametric_studies,
project_filepath_read,
)
Saving Your Work#
The following example demonstrates how you can save your current project:
proj.save()
Saving Your Work With a Different Name#
The following example demonstrates how you can save your current project to a different file name:
project_filepath_save_as = str(
Path(pyfluent.EXAMPLES_PATH) / "static_mixer_study_save_as.flprj"
)
proj.save_as(project_filepath=project_filepath_save_as)
Exporting Your Work#
The following example demonstrates how you can export the current project:
project_filepath_export = str(
Path(pyfluent.EXAMPLES_PATH) / "static_mixer_study_export.flprj"
)
proj.export(project_filepath=project_filepath_export)
Archiving Projects#
The following example demonstrates how you can archive your current project:
proj.archive()
Closing Fluent#
The following example demonstrates how you can end your Fluent session:
session.exit()