Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c07231a
Docs: Added example on one way fsi
MohammedAnsys Aug 26, 2025
ae0b4e9
Merge branch 'main' into docs/example_on_fsi_one_way
MohammedAnsys Aug 28, 2025
d9e2442
chore: adding changelog file 4407.added.md [dependabot-skip]
pyansys-ci-bot Aug 28, 2025
55b3950
chore: adding changelog file 4407.documentation.md [dependabot-skip]
pyansys-ci-bot Aug 28, 2025
90f53a5
Updated total displacement plot to isometric view
MohammedAnsys Sep 3, 2025
5e66b55
Merge branch 'main' into docs/example_on_fsi_one_way
MohammedAnsys Sep 3, 2025
ba03689
Updated as per review comments
MohammedAnsys Sep 8, 2025
8f8da6e
yml update
MohammedAnsys Sep 8, 2025
9f9540b
updated as per main
MohammedAnsys Sep 8, 2025
b392341
updated module_config file as per main
MohammedAnsys Sep 8, 2025
3d040d2
updated report.py file as per main
MohammedAnsys Sep 8, 2025
c994310
updated init.pu file as per main
MohammedAnsys Sep 8, 2025
59f6f62
updated filed_data.py file as per main
MohammedAnsys Sep 8, 2025
70fe656
updated session.py file as per main
MohammedAnsys Sep 8, 2025
5b427b3
updated single batter cell file as per main
MohammedAnsys Sep 8, 2025
8152e42
updated modeling cavitaion file as per main
MohammedAnsys Sep 8, 2025
42c108c
updated environment file as per main
MohammedAnsys Sep 8, 2025
3b02a38
fix to environment_variables.rst
abhishekchitwar Sep 8, 2025
747032b
Merge branch 'main' into docs/example_on_fsi_one_way
MohammedAnsys Sep 9, 2025
7452563
Fix: review changes + conflict resolution
MohammedAnsys Sep 17, 2025
fa84c36
Fix: review changes and conflict resolution
MohammedAnsys Sep 17, 2025
ddf8917
Merge branch 'main' into docs/example_on_fsi_one_way
MohammedAnsys Sep 17, 2025
02123d0
fix to ci.yml
MohammedAnsys Sep 18, 2025
3b2aed5
Merge branch 'main' into docs/example_on_fsi_one_way
MohammedAnsys Oct 13, 2025
5e2e2b2
Update examples/00-fluent/fsi_1way_workflow.py
MohammedAnsys Oct 24, 2025
e24af44
Merge branch 'main' into docs/example_on_fsi_one_way
MohammedAnsys Oct 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/execute-examples-weekly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,10 @@ jobs:
run: |
python examples/00-fluent/single_battery_cell_workflow.py

- name: Execute fsi_1way_workflow.py
run: |
python examples/00-fluent/fsi_1way_workflow.py

# https://github.com/ansys/pyfluent/issues/4157
# - name: Execute conjugate_heat_transfer.py
# run: |
Expand Down
Binary file added doc/source/_static/fsi_1way_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/source/_static/fsi_1way_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/source/_static/fsi_1way_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion doc/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ def _stop_fluent_container(gallery_conf, fname):
# path where to save gallery generated examples
"gallery_dirs": ["examples"],
# Pattern to search for example files
"filename_pattern": r"exhaust_system_settings_api\.py|external_compressible_flow\.py|mixing_elbow_settings_api\.py|modeling_cavitation\.py|species_transport\.py|ahmed_body_workflow\.py|brake\.py|DOE_ML\.py|radiation_headlamp\.py|parametric_static_mixer_1\.py|conjugate_heat_transfer\.py|tyler_sofrin_modes\.py|lunar_lander_thermal\.py|modeling_ablation\.py|frozen_rotor_workflow\.py|mixing_tank_workflow\.py|single_battery_cell_workflow\.py|",
"filename_pattern": r"exhaust_system_settings_api\.py|external_compressible_flow\.py|mixing_elbow_settings_api\.py|modeling_cavitation\.py|species_transport\.py|ahmed_body_workflow\.py|brake\.py|DOE_ML\.py|radiation_headlamp\.py|parametric_static_mixer_1\.py|conjugate_heat_transfer\.py|tyler_sofrin_modes\.py|lunar_lander_thermal\.py|modeling_ablation\.py|frozen_rotor_workflow\.py|mixing_tank_workflow\.py|single_battery_cell_workflow\fsi_1way_workflow\.py|",
# Do not execute examples
"plot_gallery": False,
# Remove the "Download all examples" button from the top level gallery
Expand Down
220 changes: 220 additions & 0 deletions examples/00-fluent/fsi_1way_workflow.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
# Copyright (C) 2021 - 2025 ANSYS, Inc. and/or its affiliates.
# SPDX-License-Identifier: MIT
#
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

""".. _One_Way_FSI_Simulation:

Modeling One-Way Fluid-Structure Interaction
-------------------------------------------------------------
"""

#######################################################################################
# Objective
# =====================================================================================
#
# The Simulation focuses on simulating turbulent airflow through a cylindrical test chamber
# containing a steel probe, and analyzing the deformation of the probe due to
# aerodynamic forces. The deformation is assumed to be small enough that it
# does not influence the fluid flow, allowing for a one-way coupling approach.

#######################################################################################
# Problem Description:
# =====================================================================================
#
# The cylindrical test chamber is 20 cm long, with a diameter of 10 cm.
# Turbulent air enters the chamber at 100 m/s, flows around and through
# the steel probe, and exits through a pressure outlet.
#
#
# .. image:: ../../_static/fsi_1way_1.png
# :align: center
# :alt: One-Way Fluid-Structure Interaction Model

#######################################################################################
# Import modules
# =====================================================================================

import os

import ansys.fluent.core as pyfluent
from ansys.fluent.core import FluentMode, Precision, examples

#######################################################################################
# Launch Fluent session in solver mode
# =====================================================================================

solver = pyfluent.launch_fluent(
precision=Precision.DOUBLE,
mode=FluentMode.SOLVER,
)

#######################################################################################
# Download and Read the journal file
# =====================================================================================
#
# .. note::
# Mesh file is required as input for the journal file.
#
# Journal file serves as a script that instructs Ansys Fluent on sequential operations

journal_file = examples.download_file(
"fsi_1way.jou",
"pyfluent/fsi_1way",
save_path=os.getcwd(),
)

examples.download_file(
"fsi_1way.msh.h5",
"pyfluent/fsi_1way",
save_path=os.getcwd(),
)

solver.tui.file.read_journal(journal_file) # Read the journal file

graphics_object = solver.settings.results.graphics
graphics_object.picture.x_resolution = 650
graphics_object.picture.y_resolution = 450
graphics_object.views.restore_view(view_name="front")

solver.settings.results.graphics.contour["contour-vel"].display()
graphics_object.picture.save_picture(file_name="fsi_1way_2.png")

# %%
# .. image:: ../../_static/fsi_1way_2.png
# :align: center
# :alt: Velocity Contour

#######################################################################################
# Structural model and Material
# =====================================================================================
# To analyze the deformation of a steel probe under fluid flow,
# Linear Elasticity Structural model is chosen

solver.settings.setup.models.structure.model = "linear-elasticity"

# Copy materials from the database and assign to solid zone

solver.settings.setup.materials.database.copy_by_name(type="solid", name="steel")
solver.settings.setup.cell_zone_conditions.solid["solid"] = {
"general": {"material": "steel"}
}

#######################################################################################
# Defining the boundary conditions
# =====================================================================================
# configure Fluent to define the steel probe's support and movement using
# structural boundary conditions

wall = solver.settings.setup.boundary_conditions.wall

# Configure solid-symmetry boundary
wall["solid-symmetry"] = {
"structure": {
"z_disp_boundary_value": 0,
"z_disp_boundary_condition": "Node Z-Displacement",
}
}

# Set solid-top boundary
wall["solid-top"] = {
"structure": {
"z_disp_boundary_value": 0,
"z_disp_boundary_condition": "Node Z-Displacement",
"y_disp_boundary_value": 0,
"y_disp_boundary_condition": "Node Y-Displacement",
"x_disp_boundary_value": 0,
"x_disp_boundary_condition": "Node X-Displacement",
}
}

# Copy boundary conditions from solid-symmetry to solid-symmetry:011
solver.settings.setup.boundary_conditions.copy(
from_="solid-symmetry", to=["solid-symmetry:011"]
)

# Configure FSI surface
wall["fsisurface-solid"] = {
"structure": {
"z_disp_boundary_condition": "Intrinsic FSI",
"y_disp_boundary_condition": "Intrinsic FSI",
"x_disp_boundary_condition": "Intrinsic FSI",
}
}

#######################################################################################
# Inclusion of Operating Pressure in Fluid-Structure Interaction Forces
# =====================================================================================
# Fluent uses gauge pressure for fluid-structure interaction force calculations.
# By setting ``include_pop_in_fsi_force`` to ``True``, Fluent uses absolute pressure.

solver.settings.setup.models.structure.expert.include_pop_in_fsi_force = True

#######################################################################################
# Configure flow settings
# =====================================================================================

solver.settings.solution.controls.equations["flow"] = False
solver.settings.solution.controls.equations["kw"] = False

#######################################################################################
# Run the simulation
# =====================================================================================

solver.settings.file.write_case(file_name="probe_fsi_1way.cas.h5") # save the case file

solver.settings.solution.run_calculation.iter_count = 2
solver.settings.solution.run_calculation.calculate()

#######################################################################################
# Post-Processing
# =====================================================================================

displacement_contour = solver.settings.results.graphics.contour.create(
"displacement_contour"
)
displacement_contour.field = "total-displacement"
displacement_contour.surfaces_list = ["fsisurface-solid"]
displacement_contour.range_options.compute()

graphics_object.views.restore_view(view_name="front")
displacement_contour.display()
graphics_object.picture.save_picture(file_name="fsi_1way_3.png")

# save the case and data file
solver.settings.file.write_case_data(file_name="probe_fsi_1way")

# %%
# .. image:: ../../_static/fsi_1way_3.png
# :align: center
# :alt: Structural Displacement Contour

#######################################################################################
# Close the solver
# =====================================================================================
solver.exit()

#######################################################################################
# References:
# =====================================================================================
# .. _Reference:
# [1] Modeling One-Way Fluid-Structure Interaction (FSI) Within Fluent, `Ansys Fluent documentation​ <https://ansyshelp.ansys.com/public/account/secured?returnurl=/Views/Secured/corp/v252/en/flu_tg/flu_tg_fsi_1way.html>`_.

# sphinx_gallery_thumbnail_path = '_static/fsi_1way_2.png'
Loading