MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_ib_patches Module Reference

Allocate memory and read initial condition data for IC extrusion. More...

Functions/Subroutines

subroutine s_ib_circle (patch_id, ib_markers, xp, yp)
 Mark cells inside a circular immersed boundary.
subroutine s_ib_airfoil (patch_id, ib_markers, xp, yp)
 Mark cells inside a 2D NACA 4-digit airfoil immersed boundary.
subroutine s_ib_3d_airfoil (patch_id, ib_markers, xp, yp, zp)
 Mark cells inside a 3D extruded NACA 4-digit airfoil immersed boundary with finite span.
subroutine s_ib_rectangle (patch_id, ib_markers, xp, yp)
 Mark cells inside a rectangular immersed boundary.
subroutine s_ib_sphere (patch_id, ib_markers, xp, yp, zp)
 Mark cells inside a spherical immersed boundary.
subroutine s_ib_cuboid (patch_id, ib_markers, xp, yp, zp)
 Mark cells inside a cuboidal immersed boundary.
subroutine s_ib_cylinder (patch_id, ib_markers, xp, yp, zp)
 Mark cells inside a cylindrical immersed boundary.
subroutine s_ib_ellipse (patch_id, ib_markers, xp, yp)
 Mark cells inside a 2D elliptical immersed boundary.
subroutine s_ib_model (patch_id, ib_markers, xp, yp)
 The STL patch is a 2D geometry that is imported from an STL file.
subroutine s_ib_3d_model (patch_id, ib_markers, xp, yp, zp)
 The STL patch is a 3D geometry that is imported from an STL file.
subroutine, public s_update_ib_rotation_matrix (patch_id)
 Compute a rotation matrix for converting to the rotating frame of the boundary.
subroutine get_bounding_indices (left_bound, right_bound, cell_centers, left_index, right_index)
subroutine s_encode_patch_periodicity (patch_id, x_periodicity, y_periodicity, z_periodicity, encoded_patch_id)
 Encode the patch ID with a unique offset containing periodicity information.
subroutine, public s_decode_patch_periodicity (encoded_patch_id, patch_id, x_periodicity, y_periodicity, z_periodicity)
 Decode the encoded ID to recover the original patch ID and periodicity.
subroutine s_get_periodicities (xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper)
 Determine the periodic wrapping bounds in each direction.
pure elemental real(wp) function f_r (myth, offset, a)
 Archimedes spiral function.
impure subroutine, public s_apply_ib_patches (ib_markers)
 Apply all immersed boundary patch geometries to mark interior cells in the IB marker array.

Detailed Description

Allocate memory and read initial condition data for IC extrusion.

This macro handles the complete initialization process for IC extrusion by:

Memory Allocation:

  • stored_values(xRows, yRows, sys_size) - stores primitive variable data from files
  • x_coords(nrows) - stores x-coordinates from input files
  • y_coords(nrows) - stores y-coordinates from input files (3D case only)

File Reading Operations:

  • Reads primitive variable data from multiple files with pattern: prim.<file_number>.00.<timestep>.dat where timestep uses zeros_default padding
  • Files are read from directory specified by init_dir parameter
  • Supports 1D, 2D, and 3D computational domains

Grid Structure Detection:

  • 1D/2D: Counts lines in first file to determine xRows
  • 3D: Analyzes coordinate patterns to determine xRows and yRows structure

MPI Domain Mapping:

  • Calculates global_offset_x and global_offset_y for MPI subdomain positioning
  • Maps file coordinates to local computational grid coordinates

Data Assignment:

  • Populates q_prim_vf primitive variable arrays with file data
  • Handles momentum component indexing with special treatment for eqn_idxmomend
  • Sets eqn_idxmomend component to zero for 2D/3D cases

State Management:

  • Uses files_loaded flag to prevent redundant file operations
  • Preserves data across multiple macro calls within same simulation
Note
File pattern uses zeros_default parameter (default: "000000") for timestep padding
Directory path is hardcoded in init_dir parameter - modify as needed
Warning
Aborts execution if file reading errors occur.

Immersed boundary patch geometry constructors for 2D and 3D shapes

Function/Subroutine Documentation

◆ f_r()

pure elemental real(wp) function m_ib_patches::f_r ( real(wp), intent(in) myth,
real(wp), intent(in) offset,
real(wp), intent(in) a )

Archimedes spiral function.

Definition at line 1928 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_bounding_indices()

subroutine m_ib_patches::get_bounding_indices ( real(wp), intent(in) left_bound,
real(wp), intent(in) right_bound,
real(wp), dimension(-buff_size:), intent(in) cell_centers,
integer, intent(inout) left_index,
integer, intent(inout) right_index )

Definition at line 1784 of file m_ib_patches.fpp.f90.

Here is the caller graph for this function:

◆ s_apply_ib_patches()

impure subroutine, public m_ib_patches::s_apply_ib_patches ( type(integer_field), intent(inout) ib_markers)

Apply all immersed boundary patch geometries to mark interior cells in the IB marker array.

IB Patches

IB Patches

Definition at line 403 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:

◆ s_decode_patch_periodicity()

subroutine, public m_ib_patches::s_decode_patch_periodicity ( integer, intent(in) encoded_patch_id,
integer, intent(out) patch_id,
integer, intent(out), optional x_periodicity,
integer, intent(out), optional y_periodicity,
integer, intent(out), optional z_periodicity )

Decode the encoded ID to recover the original patch ID and periodicity.

Definition at line 1842 of file m_ib_patches.fpp.f90.

◆ s_encode_patch_periodicity()

subroutine m_ib_patches::s_encode_patch_periodicity ( integer, intent(in) patch_id,
integer, intent(in) x_periodicity,
integer, intent(in) y_periodicity,
integer, intent(in) z_periodicity,
integer, intent(out) encoded_patch_id )

Encode the patch ID with a unique offset containing periodicity information.

Definition at line 1824 of file m_ib_patches.fpp.f90.

Here is the caller graph for this function:

◆ s_get_periodicities()

subroutine m_ib_patches::s_get_periodicities ( integer, intent(out) xp_lower,
integer, intent(out) xp_upper,
integer, intent(out) yp_lower,
integer, intent(out) yp_upper,
integer, intent(out), optional zp_lower,
integer, intent(out), optional zp_upper )

Determine the periodic wrapping bounds in each direction.

Definition at line 1885 of file m_ib_patches.fpp.f90.

Here is the caller graph for this function:

◆ s_ib_3d_airfoil()

subroutine m_ib_patches::s_ib_3d_airfoil ( integer, intent(in) patch_id,
type(integer_field), intent(inout) ib_markers,
integer, intent(in) xp,
integer, intent(in) yp,
integer, intent(in) zp )

Mark cells inside a 3D extruded NACA 4-digit airfoil immersed boundary with finite span.

Parameters
[in]zpintegers containing the periodicity projection information

Definition at line 805 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_ib_3d_model()

subroutine m_ib_patches::s_ib_3d_model ( integer, intent(in) patch_id,
type(integer_field), intent(inout) ib_markers,
integer, intent(in) xp,
integer, intent(in) yp,
integer, intent(in) zp )

The STL patch is a 3D geometry that is imported from an STL file.

Parameters
[in]zpintegers containing the periodicity projection information

Definition at line 1623 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_ib_airfoil()

subroutine m_ib_patches::s_ib_airfoil ( integer, intent(in) patch_id,
type(integer_field), intent(inout) ib_markers,
integer, intent(in) xp,
integer, intent(in) yp )

Mark cells inside a 2D NACA 4-digit airfoil immersed boundary.

Parameters
[in]ypintegers containing the periodicity projection information

Definition at line 536 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_ib_circle()

subroutine m_ib_patches::s_ib_circle ( integer, intent(in) patch_id,
type(integer_field), intent(inout) ib_markers,
integer, intent(in) xp,
integer, intent(in) yp )

Mark cells inside a circular immersed boundary.

Parameters
[in]ypintegers containing the periodicity projection information

Definition at line 464 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_ib_cuboid()

subroutine m_ib_patches::s_ib_cuboid ( integer, intent(in) patch_id,
type(integer_field), intent(inout) ib_markers,
integer, intent(in) xp,
integer, intent(in) yp,
integer, intent(in) zp )

Mark cells inside a cuboidal immersed boundary.

Parameters
[in]zpintegers containing the periodicity projection information

Definition at line 1248 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_ib_cylinder()

subroutine m_ib_patches::s_ib_cylinder ( integer, intent(in) patch_id,
type(integer_field), intent(inout) ib_markers,
integer, intent(in) xp,
integer, intent(in) yp,
integer, intent(in) zp )

Mark cells inside a cylindrical immersed boundary.

Parameters
[in]zpintegers containing the periodicity projection information

Definition at line 1339 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_ib_ellipse()

subroutine m_ib_patches::s_ib_ellipse ( integer, intent(in) patch_id,
type(integer_field), intent(inout) ib_markers,
integer, intent(in) xp,
integer, intent(in) yp )

Mark cells inside a 2D elliptical immersed boundary.

Parameters
[in]ypintegers containing the periodicity projection information

Definition at line 1434 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_ib_model()

subroutine m_ib_patches::s_ib_model ( integer, intent(in) patch_id,
type(integer_field), intent(inout) ib_markers,
integer, intent(in) xp,
integer, intent(in) yp )

The STL patch is a 2D geometry that is imported from an STL file.

Parameters
[in]ypintegers containing the periodicity projection information

Definition at line 1516 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_ib_rectangle()

subroutine m_ib_patches::s_ib_rectangle ( integer, intent(in) patch_id,
type(integer_field), intent(inout) ib_markers,
integer, intent(in) xp,
integer, intent(in) yp )

Mark cells inside a rectangular immersed boundary.

Parameters
[in]ypintegers containing the periodicity projection information

Definition at line 1075 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_ib_sphere()

subroutine m_ib_patches::s_ib_sphere ( integer, intent(in) patch_id,
type(integer_field), intent(inout) ib_markers,
integer, intent(in) xp,
integer, intent(in) yp,
integer, intent(in) zp )

Mark cells inside a spherical immersed boundary.

Parameters
[in]zpintegers containing the periodicity projection information

Definition at line 1158 of file m_ib_patches.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_update_ib_rotation_matrix()

subroutine, public m_ib_patches::s_update_ib_rotation_matrix ( integer, intent(in) patch_id)

Compute a rotation matrix for converting to the rotating frame of the boundary.

Definition at line 1740 of file m_ib_patches.fpp.f90.