MFC:Pre_process
v1.0

This module provides a platform that is analagous to constructive solid geometry techniques and in this way allows for the creation of a wide variety of initial conditions. Several 1D, 2D and 3D fundamental geometries are included that may further be combined into more complex shapes. This is achieved by carefully setting up the order in which the patches are laid out in the domain and specifying the priority that each patch has over the preceeding ones. The resulting shapes may be identified both by the values of their primitive variables and the associated patch identities. Note that the user may choose to read in and modify a preexisting initial condition. The module m_start_up.f90 is responsible for reading in the relevant data files. More...
Data Types  
interface  s_assign_patch_xxxxx_primitive_variables 
Abstract interface to the two subroutines that assign the patch primitive variables, either mixture or species, depending on the subroutine, to a particular cell in the computational domain. More...  
Functions/Subroutines  
subroutine  s_assign_patch_mixture_primitive_variables (patch_id, j, k, l) 
This subroutine assigns the mixture primitive variables of the patch designated by the patch_id, to the cell that is designated by the indexes (j,k,l). In addition, the variable bookkeeping the patch identities in the entire domain is updated with the new assignment. Note that if the smoothing of the patch's boundaries is employed, the ensuing primitive variables in the cell will be a type of combination of the current patch's primitive variables with those of the smoothing patch. The specific details of the combination may be found in Shyue's work (1998). More...  
subroutine  s_assign_patch_species_primitive_variables_bubbles (patch_id, j, k, l) 
This subroutine assigns the species primitive variables. This follows s_assign_patch_species_primitive_variables with adaptation for ensembleaveraged bubble modeling. More...  
subroutine  s_assign_patch_species_primitive_variables (patch_id, j, k, l) 
This subroutine assigns the species primitive variables of the patch designated by the patch_id, to the cell that is designated by the indexes (j,k,l). In addition, the variable bookkeeping the patch identities in the entire domain is updated with the new assignment. Note that if the smoothing of the patch's boundaries is employed, the ensuing primitive variables in the cell will be a type of combination of the current patch's primitive variables with those of the smoothing patch. The specific details of the combination may be found in Shyue's work (1998). More...  
subroutine  s_initialize_initial_condition_module () 
Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the module. More...  
subroutine  s_generate_initial_condition () 
This subroutine peruses the patches and depending on the type of geometry associated with a particular patch, it calls the related subroutine to setup the said geometry on the grid using the primitive variables included with the patch parameters. The subroutine is complete once the primitive variables are converted to conservative ones. More...  
subroutine  s_convert_cylindrical_to_cartesian_coord (cyl_y, cyl_z) 
subroutine  s_convert_cylindrical_to_spherical_coord (cyl_x, cyl_y) 
subroutine  s_perturb_sphere () 
subroutine  s_perturb_surrounding_flow () 
subroutine  s_line_segment (patch_id) 
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 welldefined when its centroid and length in the xcoordinate direction are provided. Note that the line segment patch DOES NOT allow for the smearing of its boundaries. More...  
subroutine  s_spiral (patch_id) 
The spiral patch is a 2D geometry that may be used, The geometry of the patch is welldefined when its centroid and radius are provided. Note that the circular patch DOES allow for the smoothing of its boundary. More...  
real(kind(0d0)) function  f_r (myth, offset, a) 
Archimedes spiral function. More...  
subroutine  s_circle (patch_id) 
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 welldefined when its centroid and radius are provided. Note that the circular patch DOES allow for the smoothing of its boundary. More...  
subroutine  s_varcircle (patch_id) 
The varcircle patch is a 2D geometry that may be used . It generatres an annulus. More...  
subroutine  s_3dvarcircle (patch_id) 
subroutine  s_ellipse (patch_id) 
The elliptical patch is a 2D geometry. The geometry of the patch is welldefined when its centroid and radii are provided. Note that the elliptical patch DOES allow for the smoothing of its boundary. More...  
subroutine  s_ellipsoid (patch_id) 
The ellipsoidal patch is a 3D geometry. The geometry of the patch is welldefined when its centroid and radii are provided. Note that the ellipsoidal patch DOES allow for the smoothing of its boundary. More...  
subroutine  s_rectangle (patch_id) 
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. More...  
subroutine  s_sweep_line (patch_id) 
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 welldefined 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. More...  
subroutine  s_isentropic_vortex (patch_id) 
The isentropic vortex is a 2D geometry that may be used, for example, to generate an isentropic flow disturbance. Geometry of the patch is welldefined when its centroid and radius are provided. Notice that the patch DOES NOT allow for the smoothing of its boundary. More...  
subroutine  s_1d_analytical (patch_id) 
This patch assigns the primitive variables as analytical functions such that the code can be verified. More...  
subroutine  s_1d_bubble_pulse (patch_id) 
subroutine  s_2d_analytical (patch_id) 
This patch assigns the primitive variables as analytical functions such that the code can be verified. More...  
subroutine  s_3d_analytical (patch_id) 
This patch assigns the primitive variables as analytical functions such that the code can be verified. More...  
subroutine  s_spherical_harmonic (patch_id) 
This patch generates the shape of the spherical harmonics as a perturbation to a perfect sphere. More...  
subroutine  s_sphere (patch_id) 
The spherical patch is a 3D geometry that may be used, for example, in creating a bubble or a droplet. The patch geometry is welldefined when its centroid and radius are provided. Please note that the spherical patch DOES allow for the smoothing of its boundary. More...  
subroutine  s_cuboid (patch_id) 
The cuboidal patch is a 3D geometry that may be used, for example, in creating a solid boundary, or pre/postshock 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 zcoordinate directions are provided. Please notice that the cuboidal patch DOES NOT allow for the smearing of its boundaries. More...  
subroutine  s_cylinder (patch_id) 
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 welldefined when the centroid, the radius and the length along the cylinder's axis, parallel to the x, y or zcoordinate direction, are provided. Please note that the cylindrical patch DOES allow for the smoothing of its lateral boundary. More...  
subroutine  s_sweep_plane (patch_id) 
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 welldefined 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. More...  
subroutine  s_finalize_initial_condition_module () 
Deallocation procedures for the module. More...  
Variables  
type(scalar_field), dimension(:), allocatable  q_prim_vf 
primitive variables More...  
type(scalar_field), dimension(:), allocatable  q_cons_vf 
conservative variables More...  
type(scalar_field)  alf_sum 
real(kind(0d0))  x_centroid 
real(kind(0d0))  y_centroid 
real(kind(0d0))  z_centroid 
real(kind(0d0))  length_x 
real(kind(0d0))  length_y 
real(kind(0d0))  length_z 
real(kind(0d0))  radius 
real(kind(0d0))  epsilon 
real(kind(0d0))  beta 
integer  smooth_patch_id 
real(kind(0d0))  smooth_coeff 
These variables are analogous in both meaning and use to the similarly named components in the ic_patch_parameters type (see m_derived_types.f90 for additional details). They are employed as a means to more concisely perform the actions necessary to lay out a particular patch on the grid. More...  
type(bounds_info)  x_boundary 
type(bounds_info)  y_boundary 
type(bounds_info)  z_boundary 
These variables combine the centroid and length parameters associated with a particular patch to yield the locations of the patch boundaries in the x, y and zcoordinate directions. They are used as a means to concisely perform the actions necessary to lay out a particular patch on the grid. More...  
real(kind(0d0))  a 
real(kind(0d0))  b 
real(kind(0d0))  c 
real(kind(0d0))  d 
When a line or a plane sweep patch geometry is employed, these variables represent the coefficients associated with the equation describing the said line or plane. More...  
real(kind(0d0))  eta 
In the case that smoothing of patch boundaries is enabled and the boundary between two adjacent patches is to be smeared out, this variable's purpose is to act as a pseudo volume fraction to indicate the contribution of each patch toward the composition of a cell's fluid state. More...  
integer, dimension(:,:,:), allocatable  patch_id_fp 
Bookkepping variable used to track the patch identities (id) associated with each of the cells in the computational domain. Note that only one patch identity may be associated with any one cell. More...  
real(kind(0d0))  cart_y 
real(kind(0d0))  cart_z 
real(kind(0d0))  sph_phi 
Variables to be used to hold cell locations in Cartesian coordinates if 3D simulation is using cylindrical coordinates. More...  
procedure(s_assign_patch_xxxxx_primitive_variables), pointer  s_assign_patch_primitive_variables => NULL() 
This module provides a platform that is analagous to constructive solid geometry techniques and in this way allows for the creation of a wide variety of initial conditions. Several 1D, 2D and 3D fundamental geometries are included that may further be combined into more complex shapes. This is achieved by carefully setting up the order in which the patches are laid out in the domain and specifying the priority that each patch has over the preceeding ones. The resulting shapes may be identified both by the values of their primitive variables and the associated patch identities. Note that the user may choose to read in and modify a preexisting initial condition. The module m_start_up.f90 is responsible for reading in the relevant data files.
real(kind(0d0)) function m_initial_condition::f_r  (  real(kind(0d0)), intent(in)  myth, 
real(kind(0d0)), intent(in)  offset,  
real(kind(0d0)), intent(in)  a  
) 
Archimedes spiral function.
myth  Angle 
offset  Thickness 
a  Starting position 
Definition at line 1079 of file m_initial_condition.f90.
subroutine m_initial_condition::s_1d_analytical  (  integer, intent(in)  patch_id  ) 
This patch assigns the primitive variables as analytical functions such that the code can be verified.
patch_id  is the patch identifier 
Definition at line 1587 of file m_initial_condition.f90.
subroutine m_initial_condition::s_1d_bubble_pulse  (  integer, intent(in)  patch_id  ) 
Definition at line 1661 of file m_initial_condition.f90.
subroutine m_initial_condition::s_2d_analytical  (  integer, intent(in)  patch_id  ) 
This patch assigns the primitive variables as analytical functions such that the code can be verified.
patch_id  is the patch identifier 
Definition at line 1739 of file m_initial_condition.f90.
subroutine m_initial_condition::s_3d_analytical  (  integer, intent(in)  patch_id  ) 
This patch assigns the primitive variables as analytical functions such that the code can be verified.
patch_id  is the patch identifier 
Definition at line 1859 of file m_initial_condition.f90.
subroutine m_initial_condition::s_3dvarcircle  (  integer, intent(in)  patch_id  ) 
Definition at line 1208 of file m_initial_condition.f90.
subroutine m_initial_condition::s_assign_patch_mixture_primitive_variables  (  integer, intent(in)  patch_id, 
integer, intent(in)  j,  
integer, intent(in)  k,  
integer, intent(in)  l  
) 
This subroutine assigns the mixture primitive variables of the patch designated by the patch_id, to the cell that is designated by the indexes (j,k,l). In addition, the variable bookkeeping the patch identities in the entire domain is updated with the new assignment. Note that if the smoothing of the patch's boundaries is employed, the ensuing primitive variables in the cell will be a type of combination of the current patch's primitive variables with those of the smoothing patch. The specific details of the combination may be found in Shyue's work (1998).
patch_id  the patch identifier 
j  the xdir node index 
k  the ydir node index 
l  the zdir node index 
Definition at line 159 of file m_initial_condition.f90.
subroutine m_initial_condition::s_assign_patch_species_primitive_variables  (  integer, intent(in)  patch_id, 
integer, intent(in)  j,  
integer, intent(in)  k,  
integer, intent(in)  l  
) 
This subroutine assigns the species primitive variables of the patch designated by the patch_id, to the cell that is designated by the indexes (j,k,l). In addition, the variable bookkeeping the patch identities in the entire domain is updated with the new assignment. Note that if the smoothing of the patch's boundaries is employed, the ensuing primitive variables in the cell will be a type of combination of the current patch's primitive variables with those of the smoothing patch. The specific details of the combination may be found in Shyue's work (1998).
patch_id  the patch identifier 
j  the xdir node index 
k  the ydir node index 
l  the zdir node index 
Definition at line 528 of file m_initial_condition.f90.
subroutine m_initial_condition::s_assign_patch_species_primitive_variables_bubbles  (  integer, intent(in)  patch_id, 
integer, intent(in)  j,  
integer, intent(in)  k,  
integer, intent(in)  l  
) 
This subroutine assigns the species primitive variables. This follows s_assign_patch_species_primitive_variables with adaptation for ensembleaveraged bubble modeling.
patch_id  the patch identifier 
j  the xdir node index 
k  the ydir node index 
l  the zdir node index 
Definition at line 277 of file m_initial_condition.f90.
subroutine m_initial_condition::s_circle  (  integer, intent(in)  patch_id  ) 
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 welldefined when its centroid and radius are provided. Note that the circular patch DOES allow for the smoothing of its boundary.
patch_id  is the patch identifier 
Definition at line 1096 of file m_initial_condition.f90.
subroutine m_initial_condition::s_convert_cylindrical_to_cartesian_coord  (  real(kind(0d0)), intent(in)  cyl_y, 
real(kind(0d0)), intent(in)  cyl_z  
) 
subroutine m_initial_condition::s_convert_cylindrical_to_spherical_coord  (  real(kind(0d0)), intent(in)  cyl_x, 
real(kind(0d0)), intent(in)  cyl_y  
) 
subroutine m_initial_condition::s_cuboid  (  integer, intent(in)  patch_id  ) 
The cuboidal patch is a 3D geometry that may be used, for example, in creating a solid boundary, or pre/postshock 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 zcoordinate directions are provided. Please notice that the cuboidal patch DOES NOT allow for the smearing of its boundaries.
patch_id  is the patch identifier 
Definition at line 2212 of file m_initial_condition.f90.
subroutine m_initial_condition::s_cylinder  (  integer, intent(in)  patch_id  ) 
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 welldefined when the centroid, the radius and the length along the cylinder's axis, parallel to the x, y or zcoordinate direction, are provided. Please note that the cylindrical patch DOES allow for the smoothing of its lateral boundary.
patch_id  is the patch identifier 
Definition at line 2290 of file m_initial_condition.f90.
subroutine m_initial_condition::s_ellipse  (  integer, intent(in)  patch_id  ) 
The elliptical patch is a 2D geometry. The geometry of the patch is welldefined when its centroid and radii are provided. Note that the elliptical patch DOES allow for the smoothing of its boundary.
patch_id  is the patch identifier 
Definition at line 1269 of file m_initial_condition.f90.
subroutine m_initial_condition::s_ellipsoid  (  integer, intent(in)  patch_id  ) 
The ellipsoidal patch is a 3D geometry. The geometry of the patch is welldefined when its centroid and radii are provided. Note that the ellipsoidal patch DOES allow for the smoothing of its boundary.
patch_id  is the patch identifier 
Definition at line 1326 of file m_initial_condition.f90.
subroutine m_initial_condition::s_finalize_initial_condition_module  (  ) 
Deallocation procedures for the module.
Definition at line 2477 of file m_initial_condition.f90.
subroutine m_initial_condition::s_generate_initial_condition  (  ) 
This subroutine peruses the patches and depending on the type of geometry associated with a particular patch, it calls the related subroutine to setup the said geometry on the grid using the primitive variables included with the patch parameters. The subroutine is complete once the primitive variables are converted to conservative ones.
Definition at line 715 of file m_initial_condition.f90.
subroutine m_initial_condition::s_initialize_initial_condition_module  (  ) 
Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the module.
Definition at line 651 of file m_initial_condition.f90.
subroutine m_initial_condition::s_isentropic_vortex  (  integer, intent(in)  patch_id  ) 
The isentropic vortex is a 2D geometry that may be used, for example, to generate an isentropic flow disturbance. Geometry of the patch is welldefined when its centroid and radius are provided. Notice that the patch DOES NOT allow for the smoothing of its boundary.
patch_id  is the patch identifier 
Definition at line 1537 of file m_initial_condition.f90.
subroutine m_initial_condition::s_line_segment  (  integer, intent(in)  patch_id  ) 
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 welldefined when its centroid and length in the xcoordinate direction are provided. Note that the line segment patch DOES NOT allow for the smearing of its boundaries.
patch_id  patch identifier 
Definition at line 968 of file m_initial_condition.f90.
subroutine m_initial_condition::s_perturb_sphere  (  ) 
subroutine m_initial_condition::s_perturb_surrounding_flow  (  ) 
subroutine m_initial_condition::s_rectangle  (  integer, intent(in)  patch_id  ) 
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.
patch_id  is the patch identifier 
Definition at line 1402 of file m_initial_condition.f90.
subroutine m_initial_condition::s_sphere  (  integer, intent(in)  patch_id  ) 
The spherical patch is a 3D geometry that may be used, for example, in creating a bubble or a droplet. The patch geometry is welldefined when its centroid and radius are provided. Please note that the spherical patch DOES allow for the smoothing of its boundary.
patch_id  is the patch identifier 
Definition at line 2110 of file m_initial_condition.f90.
subroutine m_initial_condition::s_spherical_harmonic  (  integer, intent(in)  patch_id  ) 
This patch generates the shape of the spherical harmonics as a perturbation to a perfect sphere.
patch_id  is the patch identifier 
Definition at line 1981 of file m_initial_condition.f90.
subroutine m_initial_condition::s_spiral  (  integer, intent(in)  patch_id  ) 
The spiral patch is a 2D geometry that may be used, The geometry of the patch is welldefined when its centroid and radius are provided. Note that the circular patch DOES allow for the smoothing of its boundary.
patch_id  patch identifier 
Definition at line 1025 of file m_initial_condition.f90.
subroutine m_initial_condition::s_sweep_line  (  integer, intent(in)  patch_id  ) 
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 welldefined 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.
patch_id  is the patch identifier 
Definition at line 1476 of file m_initial_condition.f90.
subroutine m_initial_condition::s_sweep_plane  (  integer, intent(in)  patch_id  ) 
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 welldefined 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.
patch_id  is the patch identifier 
Definition at line 2405 of file m_initial_condition.f90.
subroutine m_initial_condition::s_varcircle  (  integer, intent(in)  patch_id  ) 
The varcircle patch is a 2D geometry that may be used . It generatres an annulus.
patch_id  is the patch identifier 
Definition at line 1155 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::a 
Definition at line 110 of file m_initial_condition.f90.
type(scalar_field) m_initial_condition::alf_sum 
Definition at line 90 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::b 
Definition at line 110 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::beta 
Definition at line 95 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::c 
Definition at line 110 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::cart_y 
Definition at line 128 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::cart_z 
Definition at line 128 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::d 
When a line or a plane sweep patch geometry is employed, these variables represent the coefficients associated with the equation describing the said line or plane.
Definition at line 110 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::epsilon 
Definition at line 95 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::eta 
In the case that smoothing of patch boundaries is enabled and the boundary between two adjacent patches is to be smeared out, this variable's purpose is to act as a pseudo volume fraction to indicate the contribution of each patch toward the composition of a cell's fluid state.
Definition at line 116 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::length_x 
Definition at line 93 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::length_y 
Definition at line 93 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::length_z 
Definition at line 93 of file m_initial_condition.f90.
integer, dimension(:,:,:), allocatable m_initial_condition::patch_id_fp 
Bookkepping variable used to track the patch identities (id) associated with each of the cells in the computational domain. Note that only one patch identity may be associated with any one cell.
Definition at line 123 of file m_initial_condition.f90.
type(scalar_field), dimension(:), allocatable m_initial_condition::q_cons_vf 
conservative variables
Definition at line 88 of file m_initial_condition.f90.
type(scalar_field), dimension(:), allocatable m_initial_condition::q_prim_vf 
primitive variables
Definition at line 86 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::radius 
Definition at line 94 of file m_initial_condition.f90.
procedure(s_assign_patch_xxxxx_primitive_variables), pointer m_initial_condition::s_assign_patch_primitive_variables => NULL() 
Definition at line 134 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::smooth_coeff 
These variables are analogous in both meaning and use to the similarly named components in the ic_patch_parameters type (see m_derived_types.f90 for additional details). They are employed as a means to more concisely perform the actions necessary to lay out a particular patch on the grid.
Definition at line 97 of file m_initial_condition.f90.
integer m_initial_condition::smooth_patch_id 
Definition at line 96 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::sph_phi 
Variables to be used to hold cell locations in Cartesian coordinates if 3D simulation is using cylindrical coordinates.
Definition at line 129 of file m_initial_condition.f90.
type(bounds_info) m_initial_condition::x_boundary 
Definition at line 103 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::x_centroid 
Definition at line 92 of file m_initial_condition.f90.
type(bounds_info) m_initial_condition::y_boundary 
Definition at line 103 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::y_centroid 
Definition at line 92 of file m_initial_condition.f90.
type(bounds_info) m_initial_condition::z_boundary 
These variables combine the centroid and length parameters associated with a particular patch to yield the locations of the patch boundaries in the x, y and zcoordinate directions. They are used as a means to concisely perform the actions necessary to lay out a particular patch on the grid.
Definition at line 103 of file m_initial_condition.f90.
real(kind(0d0)) m_initial_condition::z_centroid 
Definition at line 92 of file m_initial_condition.f90.