|
| subroutine | s_ib_circle (patch_id, ib_markers_sf) |
| | The circular patch is a 2D geometry that may be used, for example, in creating a bubble or a droplet. The geometry of the patch is well-defined when its centroid and radius are provided. Note that the circular patch DOES allow for the smoothing of its boundary.
|
| |
| subroutine | s_ib_airfoil (patch_id, ib_markers_sf) |
| |
| subroutine | s_ib_3d_airfoil (patch_id, ib_markers_sf) |
| |
| subroutine | s_ib_rectangle (patch_id, ib_markers_sf) |
| | The rectangular patch is a 2D geometry that may be used, for example, in creating a solid boundary, or pre-/post- shock region, in alignment with the axes of the Cartesian coordinate system. The geometry of such a patch is well- defined when its centroid and lengths in the x- and y- coordinate directions are provided. Please note that the rectangular patch DOES NOT allow for the smoothing of its boundaries.
|
| |
| subroutine | s_ib_sphere (patch_id, ib_markers_sf) |
| | The spherical patch is a 3D geometry that may be used, for example, in creating a bubble or a droplet. The patch geometry is well-defined when its centroid and radius are provided. Please note that the spherical patch DOES allow for the smoothing of its boundary.
|
| |
| subroutine | s_ib_cuboid (patch_id, ib_markers_sf) |
| | The cuboidal patch is a 3D geometry that may be used, for example, in creating a solid boundary, or pre-/post-shock region, which is aligned with the axes of the Cartesian coordinate system. The geometry of such a patch is well- defined when its centroid and lengths in the x-, y- and z-coordinate directions are provided. Please notice that the cuboidal patch DOES NOT allow for the smearing of its boundaries.
|
| |
| subroutine | s_ib_cylinder (patch_id, ib_markers_sf) |
| | The cylindrical patch is a 3D geometry that may be used, for example, in setting up a cylindrical solid boundary confinement, like a blood vessel. The geometry of this patch is well-defined when the centroid, the radius and the length along the cylinder's axis, parallel to the x-, y- or z-coordinate direction, are provided. Please note that the cylindrical patch DOES allow for the smoothing of its lateral boundary.
|
| |
| subroutine | s_ib_model (patch_id, ib_markers_sf, stl_levelset, stl_levelset_norm) |
| | The STL patch is a 2/3D geometry that is imported from an STL file.
|
| |
| subroutine, public | s_update_ib_rotation_matrix (patch_id) |
| | Subroutine that computes a rotation matrix for converting to the rotating frame of the boundary.
|
| |
| subroutine | s_convert_cylindrical_to_cartesian_coord (cyl_y, cyl_z) |
| |
| pure real(wp) function, dimension(1:3) | f_convert_cyl_to_cart (cyl) |
| |
| subroutine | s_convert_cylindrical_to_spherical_coord (cyl_x, cyl_y) |
| |
| pure elemental real(wp) function | f_r (myth, offset, a) |
| | Archimedes spiral function.
|
| |
|
| impure subroutine, public | s_apply_ib_patches (ib_markers_sf, levelset, levelset_norm) |
| |
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 momxe
- Sets momxe 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.
| subroutine m_ib_patches::s_ib_cylinder |
( |
integer, intent(in) | patch_id, |
|
|
integer, dimension(0:m, 0:n, 0:p), intent(inout) | ib_markers_sf ) |
The cylindrical patch is a 3D geometry that may be used, for example, in setting up a cylindrical solid boundary confinement, like a blood vessel. The geometry of this patch is well-defined when the centroid, the radius and the length along the cylinder's axis, parallel to the x-, y- or z-coordinate direction, are provided. Please note that the cylindrical patch DOES allow for the smoothing of its lateral boundary.
- Parameters
-
| patch_id | is the patch identifier |
| ib_markers_sf | Array to track patch ids |
| ib | True if this patch is an immersed boundary |