|
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. | |
| subroutine | s_convert_cylindrical_to_spherical_coord (cyl_x, cyl_y) |
| Compute the spherical azimuthal angle from cylindrical (x, r) coordinates. | |
| 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_x |
| real(wp) | cart_y |
| real(wp) | cart_z |
| real(wp) | sph_phi |
| Spherical phi for Cartesian conversion in cylindrical coordinates. | |
| 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 15233 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 15284 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 417 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 15207 of file m_icpp_patches.fpp.f90.
| subroutine m_icpp_patches::s_convert_cylindrical_to_spherical_coord | ( | real(wp), intent(in) | cyl_x, |
| real(wp), intent(in) | cyl_y ) |
Compute the spherical azimuthal angle from cylindrical (x, r) coordinates.
Definition at line 15259 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 10717 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 11348 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 9565 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 11403 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 4593 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 2315 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 12364 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 13262 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 5485 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 6625 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 532 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 15081 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 7526 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 11467 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 1166 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 8680 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 14185 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 3452 of file m_icpp_patches.fpp.f90.
| real(wp) m_icpp_patches::cart_x |
Definition at line 409 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 412 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.
| real(wp) m_icpp_patches::sph_phi |
Spherical phi for Cartesian conversion in cylindrical coordinates.
Definition at line 410 of file m_icpp_patches.fpp.f90.
| type(bounds_info) m_icpp_patches::x_boundary |
Definition at line 411 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 411 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 411 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.