|
MFC
Exascale flow solver
|
Allocate memory and read initial condition data for IC extrusion. More...
Functions/Subroutines | |
| subroutine | s_icpp_line_segment (patch_id, patch_id_fp, q_prim_vf) |
| The line segment patch is a 1D geometry that may be used, for example, in creating a Riemann problem. The geometry of the patch is well-defined when its centroid and length in the x-coordinate direction are provided. Note that the line segment patch DOES NOT allow for the smearing of its boundaries. | |
| impure subroutine | s_icpp_spiral (patch_id, patch_id_fp, q_prim_vf) |
| The spiral patch is a 2D geometry that may be used, 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_icpp_circle (patch_id, patch_id_fp, q_prim_vf) |
| 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_icpp_varcircle (patch_id, patch_id_fp, q_prim_vf) |
| The varcircle patch is a 2D geometry that may be used . It generatres an annulus. | |
| subroutine | s_icpp_3dvarcircle (patch_id, patch_id_fp, q_prim_vf) |
| Initialize a 3D variable-thickness circular annulus patch extruded along the z-axis. | |
| subroutine | s_icpp_ellipse (patch_id, patch_id_fp, q_prim_vf) |
| The elliptical patch is a 2D geometry. The geometry of the patch is well-defined when its centroid and radii are provided. Note that the elliptical patch DOES allow for the smoothing of its boundary. | |
| subroutine | s_icpp_ellipsoid (patch_id, patch_id_fp, q_prim_vf) |
| The ellipsoidal patch is a 3D geometry. The geometry of the patch is well-defined when its centroid and radii are provided. Note that the ellipsoidal patch DOES allow for the smoothing of its boundary. | |
| subroutine | s_icpp_rectangle (patch_id, patch_id_fp, q_prim_vf) |
| 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_icpp_sweep_line (patch_id, patch_id_fp, q_prim_vf) |
| The swept line patch is a 2D geometry that may be used, for example, in creating a solid boundary, or pre-/post- shock region, at an angle with respect to the axes of the Cartesian coordinate system. The geometry of the patch is well-defined when its centroid and normal vector, aimed in the sweep direction, are provided. Note that the sweep line patch DOES allow the smoothing of its boundary. | |
| subroutine | s_icpp_2d_taylorgreen_vortex (patch_id, patch_id_fp, q_prim_vf) |
| The Taylor Green vortex is 2D decaying vortex that may be used, for example, to verify the effects of viscous attenuation. Geometry of the patch is well-defined when its centroid are provided. | |
| subroutine | s_icpp_1d_bubble_pulse (patch_id, patch_id_fp, q_prim_vf) |
| Initialize a 1D bubble-pulse patch with analytical primitive variable profiles. | |
| subroutine | s_icpp_2d_modal (patch_id, patch_id_fp, q_prim_vf) |
| 2D modal (Fourier) patch. theta = atan2(y - y_centroid, x - x_centroid). Additive (modal_use_exp_form false): R = radius + sum_n [fourier_cos*cos(n*theta)+fourier_sin*sin(n*theta)]; coefficients are absolute (same units as radius). R is clipped to max(R,0). If modal_clip_r_to_min, R = max(R, modal_r_min). Exponential (modal_use_exp_form true): R = radius*exp(sum); coefficients are relative (dimensionless). | |
| subroutine | s_icpp_3d_spherical_harmonic (patch_id, patch_id_fp, q_prim_vf) |
| 3D spherical harmonic patch. Surface r = radius + sum_lm sph_har_coeff(l,m)*Y_lm(theta,phi). theta = acos(z/r), phi = atan2(y,x) relative to centroid. | |
| subroutine | s_icpp_sphere (patch_id, patch_id_fp, q_prim_vf) |
| 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_icpp_cuboid (patch_id, patch_id_fp, q_prim_vf) |
| 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_icpp_cylinder (patch_id, patch_id_fp, q_prim_vf) |
| 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_icpp_sweep_plane (patch_id, patch_id_fp, q_prim_vf) |
| The swept plane patch is a 3D geometry that may be used, for example, in creating a solid boundary, or pre-/post- shock region, at an angle with respect to the axes of the Cartesian coordinate system. The geometry of the patch is well-defined when its centroid and normal vector, aimed in the sweep direction, are provided. Note that the sweep plane patch DOES allow the smoothing of its boundary. | |
| subroutine | s_icpp_model (patch_id, patch_id_fp, q_prim_vf) |
| The STL patch is a 2/3D geometry that is imported from an STL file. | |
| subroutine | s_convert_cylindrical_to_cartesian_coord (cyl_y, cyl_z) |
| Convert cylindrical (r, theta) coordinates to Cartesian (y, z) module variables. | |
| real(wp) function, dimension(1:3) | f_convert_cyl_to_cart (cyl) |
| Return a 3D Cartesian coordinate vector from a cylindrical (x, r, theta) input vector. | |
| elemental real(wp) function | f_r (myth, offset, a) |
| Archimedes spiral function. | |
| impure subroutine, public | s_apply_icpp_patches (patch_id_fp, q_prim_vf) |
| Dispatch each initial condition patch to its geometry-specific initialization routine. | |
Variables | |
| real(wp) | x_centroid |
| real(wp) | y_centroid |
| real(wp) | z_centroid |
| real(wp) | length_x |
| real(wp) | length_y |
| real(wp) | length_z |
| integer | smooth_patch_id |
| real(wp) | smooth_coeff |
| Smoothing coefficient (mirrors ic_patch_parameterssmooth_coeff). | |
| real(wp) | eta |
| Pseudo volume fraction for patch boundary smoothing. | |
| real(wp) | cart_y |
| real(wp) | cart_z |
| type(bounds_info) | x_boundary |
| type(bounds_info) | y_boundary |
| type(bounds_info) | z_boundary |
| Patch boundary locations in x, y, z. | |
| character(len=5) | istr |
| string to store int to string result for error checking | |
Allocate memory and read initial condition data for IC extrusion.
This macro handles the complete initialization process for IC extrusion by:
Memory Allocation:
File Reading Operations:
Grid Structure Detection:
MPI Domain Mapping:
Data Assignment:
State Management:
Constructs initial condition patch geometries (lines, circles, rectangles, spheres, etc.) on the grid
| real(wp) function, dimension(1:3) m_icpp_patches::f_convert_cyl_to_cart | ( | real(wp), dimension(1:3), intent(in) | cyl | ) |
Return a 3D Cartesian coordinate vector from a cylindrical (x, r, theta) input vector.
Definition at line 16263 of file m_icpp_patches.fpp.f90.
| elemental real(wp) function m_icpp_patches::f_r | ( | real(wp), intent(in) | myth, |
| real(wp), intent(in) | offset, | ||
| real(wp), intent(in) | a ) |
Archimedes spiral function.
Definition at line 16289 of file m_icpp_patches.fpp.f90.
| impure subroutine, public m_icpp_patches::s_apply_icpp_patches | ( | integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, |
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
Dispatch each initial condition patch to its geometry-specific initialization routine.
ICPP Patches
ICPP Patches
Definition at line 416 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_convert_cylindrical_to_cartesian_coord | ( | real(wp), intent(in) | cyl_y, |
| real(wp), intent(in) | cyl_z ) |
Convert cylindrical (r, theta) coordinates to Cartesian (y, z) module variables.
Definition at line 16237 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_1d_bubble_pulse | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
Initialize a 1D bubble-pulse patch with analytical primitive variable profiles.
Definition at line 11720 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_2d_modal | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
2D modal (Fourier) patch. theta = atan2(y - y_centroid, x - x_centroid). Additive (modal_use_exp_form false): R = radius + sum_n [fourier_cos*cos(n*theta)+fourier_sin*sin(n*theta)]; coefficients are absolute (same units as radius). R is clipped to max(R,0). If modal_clip_r_to_min, R = max(R, modal_r_min). Exponential (modal_use_exp_form true): R = radius*exp(sum); coefficients are relative (dimensionless).
Definition at line 12381 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_2d_taylorgreen_vortex | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
The Taylor Green vortex is 2D decaying vortex that may be used, for example, to verify the effects of viscous attenuation. Geometry of the patch is well-defined when its centroid are provided.
Definition at line 10406 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_3d_spherical_harmonic | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
3D spherical harmonic patch. Surface r = radius + sum_lm sph_har_coeff(l,m)*Y_lm(theta,phi). theta = acos(z/r), phi = atan2(y,x) relative to centroid.
Definition at line 12436 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_3dvarcircle | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
Initialize a 3D variable-thickness circular annulus patch extruded along the z-axis.
Definition at line 5109 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_circle | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
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.
Definition at line 2506 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_cuboid | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
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.
Definition at line 13397 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_cylinder | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
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.
Definition at line 14295 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_ellipse | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
The elliptical patch is a 2D geometry. The geometry of the patch is well-defined when its centroid and radii are provided. Note that the elliptical patch DOES allow for the smoothing of its boundary.
Definition at line 6001 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_ellipsoid | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
The ellipsoidal patch is a 3D geometry. The geometry of the patch is well-defined when its centroid and radii are provided. Note that the ellipsoidal patch DOES allow for the smoothing of its boundary.
Definition at line 7304 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_line_segment | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
The line segment patch is a 1D geometry that may be used, for example, in creating a Riemann problem. The geometry of the patch is well-defined when its centroid and length in the x-coordinate direction are provided. Note that the line segment patch DOES NOT allow for the smearing of its boundaries.
Definition at line 531 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_model | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
The STL patch is a 2/3D geometry that is imported from an STL file.
Definition at line 16113 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_rectangle | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
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.
Definition at line 8205 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_sphere | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
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.
Definition at line 12500 of file m_icpp_patches.fpp.f90.
| impure subroutine m_icpp_patches::s_icpp_spiral | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
The spiral patch is a 2D geometry that may be used, 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.
Definition at line 1195 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_sweep_line | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
The swept line patch is a 2D geometry that may be used, for example, in creating a solid boundary, or pre-/post- shock region, at an angle with respect to the axes of the Cartesian coordinate system. The geometry of the patch is well-defined when its centroid and normal vector, aimed in the sweep direction, are provided. Note that the sweep line patch DOES allow the smoothing of its boundary.
Definition at line 9521 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_sweep_plane | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
The swept plane patch is a 3D geometry that may be used, for example, in creating a solid boundary, or pre-/post- shock region, at an angle with respect to the axes of the Cartesian coordinate system. The geometry of the patch is well-defined when its centroid and normal vector, aimed in the sweep direction, are provided. Note that the sweep plane patch DOES allow the smoothing of its boundary.
Definition at line 15217 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_icpp_varcircle | ( | integer, intent(in) | patch_id, |
| integer, dimension(0:m,0:n,0:p), intent(inout) | patch_id_fp, | ||
| type(scalar_field), dimension(1:sys_size), intent(inout) | q_prim_vf ) |
The varcircle patch is a 2D geometry that may be used . It generatres an annulus.
Definition at line 3806 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::cart_y |
Definition at line 409 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::cart_z |
Definition at line 409 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::eta |
Pseudo volume fraction for patch boundary smoothing.
Definition at line 408 of file m_icpp_patches.fpp.f90.
| character(len=5) m_icpp_patches::istr |
string to store int to string result for error checking
Definition at line 411 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::length_x |
Definition at line 405 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::length_y |
Definition at line 405 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::length_z |
Definition at line 405 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::smooth_coeff |
Smoothing coefficient (mirrors ic_patch_parameterssmooth_coeff).
Definition at line 407 of file m_icpp_patches.fpp.f90.
| integer m_icpp_patches::smooth_patch_id |
Definition at line 406 of file m_icpp_patches.fpp.f90.
| type(bounds_info) m_icpp_patches::x_boundary |
Definition at line 410 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::x_centroid |
Definition at line 404 of file m_icpp_patches.fpp.f90.
| type(bounds_info) m_icpp_patches::y_boundary |
Definition at line 410 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::y_centroid |
Definition at line 404 of file m_icpp_patches.fpp.f90.
| type(bounds_info) m_icpp_patches::z_boundary |
Patch boundary locations in x, y, z.
Definition at line 410 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::z_centroid |
Definition at line 404 of file m_icpp_patches.fpp.f90.