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

impure subroutine, public s_apply_ib_patches (ib_markers)
 Apply all immersed boundary patch geometries to mark interior cells in the IB marker array.
subroutine s_apply_ib_patches_grid_cell_parallelism (ib_markers)
subroutine s_apply_ib_patches_ib_parallelism (ib_markers)
subroutine, public s_initialize_ib_airfoils ()
 Initialize the NACA surface grids for all airfoil IB patches. Must be called after the grid is established (so dx is valid) and before s_apply_ib_patches or s_apply_levelset.
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 (patch, center, il, ir, jl, jr, kl, kr)
subroutine get_indices_from_bounds (left_bound, right_bound, cell_centers, left_index, right_index)
subroutine, public 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, public 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.

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 1390 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 ( type(ib_patch_parameters), intent(in) patch,
real(wp), dimension(3), intent(in) center,
integer, intent(out) il,
integer, intent(out) ir,
integer, intent(out) jl,
integer, intent(out) jr,
integer, intent(out) kl,
integer, intent(out) kr )

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

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

◆ get_indices_from_bounds()

subroutine m_ib_patches::get_indices_from_bounds ( 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 1211 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.

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

Here is the call graph for this function:

◆ s_apply_ib_patches_grid_cell_parallelism()

subroutine m_ib_patches::s_apply_ib_patches_grid_cell_parallelism ( type(integer_field), intent(inout) ib_markers)

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

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

◆ s_apply_ib_patches_ib_parallelism()

subroutine m_ib_patches::s_apply_ib_patches_ib_parallelism ( type(integer_field), intent(inout) ib_markers)

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

Here is the call graph for this function:
Here is the caller 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 1301 of file m_ib_patches.fpp.f90.

◆ s_encode_patch_periodicity()

subroutine, public 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 1267 of file m_ib_patches.fpp.f90.

Here is the caller graph for this function:

◆ s_get_periodicities()

subroutine, public 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 1344 of file m_ib_patches.fpp.f90.

Here is the caller graph for this function:

◆ s_initialize_ib_airfoils()

subroutine, public m_ib_patches::s_initialize_ib_airfoils

Initialize the NACA surface grids for all airfoil IB patches. Must be called after the grid is established (so dx is valid) and before s_apply_ib_patches or s_apply_levelset.

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

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 1027 of file m_ib_patches.fpp.f90.