3.5. Geometry Definition
Last updated
Was this helpful?
Last updated
Was this helpful?
Definition: a wall is a surface dividing two adjacent layers of fluid cells that forbids flow across it.
Input array: walls is 2D with the second index identifying the wall definition and the first index specifying eight numbers that are required to define the wall surface
The asterisk (*) should be replaced by an integer that identifies the particular wall definition (≤ 500). The input elements, walls(1,*) to walls(6,*), specify the location and extent of the wall. walls(7,*) is the block number which must be always 1 for GASFLOW-MPI. Because a surface has only two dimensions, one of the three pairs of beginning and ending mesh indices must be the same. The last element walls(8,*) is reserved for specifying an input that is only required if heat transfer is invoked (by setting ihtflag = 1 in NAMELIST group rheat) but is otherwise ignored.
Example. Let's try to create two walls. The first one will be a wall at the i cell face index 2, and extends from j-index 1 to j-index 2 and from k-index 2 to k-index 10. It has the following inputs:
walls(1:8,1) = 2, 2, 1, 2, 2, 10, 1, 0,
The second one will be a wall that has a normal vector in the k-direction, or perpendicular to the first wall. It has the following imputs:
walls(1:8,2) = 2, 9, 1, 2, 2, 2, 1, 0,
Definition: An obstacle is a volume consisting of an arbitrary number of cells, namely obstacle cells, through which no fluid flow is allowed. In other words, obstacle cells are blocked out from the fluid-dynamics calculations. In problems involving heat transfer, heat conduction inside the obstacle cells is calculated. GASFLOW supports 500 definitions for walls and 3000 definitions for obstacles.
Input array: The asterisk (*) should be replaced by an integer that identifies the particular mobs definition (≤ 3000). The elements in the array mobs have the same meaning as those in walls, except for the last element, which is explained in Section 1, where solid heat conduction is discussed. However, mesh obstacles refer to a volume region where no flow is allowed to penetrate. Therefore, the beginning and ending i, j, and k mesh indices should define any two vertices of a three-dimensional volume that are orthogonal to each other.
Example: the following two mobs definitions specify obstacle regions with heat transfer ignored.
mobs(1:8,1) = 3, 7, 1, 2, 9, 10, 1, 0,
mobs(1:8,2) = 6, 9, 1, 2, 7, 9, 1, 0,
Definition: a hole is a 3D object that allows regions that have been removed as fluid cells by using obstacles or walls to be set back to fluid cells. It must be noted that all obstacles (mobs) and walls (walls) are processed first, and then the holes (holes) are positioned.
Input array: Each hole is defined by thirteen entries in the holes input array in the NAMELIST input block xput. The holes input variable array, [holes(i,*), i=1,13], is defined for the n-th hole where (*) is replaced by an integer that identifies the particular n-th hole definition.
The first seven entries in the holes input array have the same meaning as those in the obstacles. The meaning of the following seven is described in the figure below
The asterisk (*) should be replaced by an integer that identifies the particular holes definition (≤ 300). The number of holes is limited to 300.
Example. Consider a computational mesh, i.e., block 1, that has 10 fluid cells in each of the three coordinate directions x, y, and z. This means that including the boundary cells, there are 12 cells in each coordinate direction. There is an obstacle block that penetrates the entire computing domain that is 3 cells high, 7 cells wide, and 10 cells deep made of material 1; there is a horizontal wall (ceiling) 8 cells wide, 2 cells above the bottom boundary, and 10 cells deep made of material 2; and there is a vertical wall 4 cells high, 1 cell from the west or left side boundary, and 10 cells deep made of material 2. The input is as follows:
mobs(1:8,1) = 3, 10, 1, 11, 5, 8, 1, 1, ; Solid obstacle
walls(1:8,1) = 2, 10, 1, 11, 3, 3, 1, 2, ; Horizontal wall
walls(1:8,2) = 2, 2, 1, 11, 6, 10, 1, 2, ; Vertical wall
We wish to position 3 holes in the existing geometric model:
A hole with 2 vertical cells high penetrating the obstacle from the top
2. A vertical hole penetrating through the entire obstacle
3. A hole penetrating the horizontal wall.
This new configuration is shown in the figure below.
Coupling the holes and geomodel example. In figure a below we display an obstacle generated by the geomodel function and in figure b we show the same obstacle with a hole generated with the holes input variable.
The holes input variable, as applied to any given surface must be able to specify more than either a fluxing boundary condition or a no fluxing boundary condition. As seen in this example, a single holes statement is unable to define the hole in the appropriate manner because the upper surface has a mixed condition where part of the surface is no fluxing and part of it fluxing.
The mixed surface fluxing condition is invoked with a -1 input for the fluxing condition for the specified surfaces in the holes statement. Otherwise, the pure no-flux surface condition is input as 0 (zero) and the pure fluxing surface condition is input as 1.
GASFLOW-MPI examines computational cells with common surfaces to the holes cells and determines if the fluxing or no-fluxing condition is activated.
Example. We present a 20 degree section of a torus who's radius, d = 404 cm, and the distance of the torus center to the axis of rotation, D = 376.2 cm. We are interested in constructing three holes in the outside obstacle part displayed in the Figure. To do that, we use the new mixed surface condition for the holes option. We list the relevant input values that we used to generate this example below. Please note that in this listing the holes input arrays have been deactivated with the leading semicolon ( ; ), but to generate the results, one only needs to activate these holes statements by removing the leading semicolon
Definition: it is a generalized geometric modeler is able to develop walls and obstacles with complex geometric shapes. Included are all real quadric surfaces and additionally toroidal bodies of revolution about the z-axis. There are capabilities of coupling the GASFLOW-MPI geometric modeler to initial and boundary conditions through gasdef statements, which allows the user to specify complex initial conditions in a relatively easy manner.
Our generalized quadratic equation in three space variables is:
Input Array: the input for this GASFLOW geometric modeler is accomplished in the NAMELIST input block xput. The input variable array is geomodel(i,*), where i = 1,26, and is defined for the n-th geomodel where (*) is replaced by an integer that identifies the particular nth geomodel definition.
The idea behind the limiters is that the quadratic equation above is only constructed between the limits:
geomodel(20,*)<x<geomodel(21,*)
geomodel(22,*)<y<geomodel(23,*)
geomodel(24,*)<z<geomodel(25,*)
Note: it is possible to define smaller sub-zone inside a zone by using geomodel:
define the biggest zone first with geomodel, and then define the smaller sub-zones;
the sequence of geomodel definitions must be consistent with the sequence of gasdef (See section 3.7) definitions.
to couple gasdef with geomodel, make sure that the area defined in gasdef must be located inside the area defined by geomodel. The user has to give correct value to geomodel(1,*) according to the location of the area defined in gasdef.
When a curve such as a circle is revolved about a line lying in the same plane as the circle, the surface obtained is a circular torus or torus of revolution. Let d be the radius of the revolving circle and let D be the distance from its center to the axis of rotation, then the equation for a translated circle in the x-z plane is:
We present two examples of GASFLOW generated Toroids using the geometric modeler input variable array geomodel. In the first example, we will generate a torus in Cartesian geometry and in the second example, we will generate the same torus in cylindrical geometry. At any rate, we present a full torus with radius, d = 50 cm, and the distance from the torus center to the axis of rotation, D = 150 cm.
In this case the quadratic equation became:
where ; ; and d in the general equation is .
The input parameters and variables are listed below:
The computational domain is:
In the figure below are shown the computational block in Cartesian Coordinates and the generated torus.
The input parameters and variables are listed below:
One can construct a quadratic surface having one of the following relationship:
Real ellipsoid
Imaginary ellipsoid
Hyperboloid of one sheet
Hyperboloid of two sheets
Real quadratic cone
Imaginary quadric cone
Elliptic paraboloid
Hyperbolic paraboloid
Real elliptic cylinder
Immaginary elliptic cylinder
Hyperbolic cylinder
Real intersecting planes
Imaginary intersecting planes
Parabolic cylinder
Real parallel planes
Imaginary parallel planes
Coincident planes
GASFLOW-MPI is able to automatically generate all curves except 2, 6, 10, 16 an 17. This allows us to easily represent any of the curves with respect to a reference point .
Another aspect of the generalized quadratic equation is F. If F>0 we fill the outside of the desired curve with obstacles as shown for the real ellipsoid in figure below.
geomodel(1:26,1) = +1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.25, 1.0, 1.0, -1.0, ... ;
If F<0, we fill the inside of desired curve with obstacles.
geomodel(1:26,1) = -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.25, 1.0, 1.0, -1.0, ... ;
If F=0 we construct the desired curve with walls.
geomodel(1:26,1) = 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.25, 1.0, 1.0, -1.0, ... ;
These latter two cases are shown in next figure.
We can build a real ellipsoid (sphere in this case) centered at , where F = 0.0 with the following input:
geomodel(1:26,1) = 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0,-1.0, ... ;
A Hyperboloid of one sheet centered at has the following input:
geomodel(1:26,1) = 0.0, 1.0, 1.0, 0.0, 0.0, 0.0,1.0, 1.0,-1.0,-1.0, ...;
Now we can create a real quadric cone centered at , and a Hyperboloid of two sheets centered at , twice with F=0. The input are, respectively:
geomodel(1:26,1) = 0.0, 1.0, 1.0, 0.0, 0.0, 0.0,1.0, 1.0,-1.0, 0.0, ... ; Real quadric cone
geomodel(1:26,1) = 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0,-1.0, 1.0, ... ; Hyperboloid with two sheets
An elliptic paraboloid could be create with the following input:
A hyperbolic paraboloid has the following input:
We can also create a real elliptic cylinder (right circular cylinder in the images):
geomodel(1:26,1) = 0.0, 1.0, 1.0, 0.0, 0.0, 0.0,1.0, 0.0, 1.0,-1.0, ... ;
A Hyperbolic cylinder has the following input:
geomodel(1:26,1) = 0.0, 1.0, 1.0, 0.0, 0.0, 0.0,1.0, 0.0, -1.0,-1.0, ... ;
Real intersecting planes could be created with the following input
geomodel(1:26,1) = 0.0, 1.0, 1.0, 0.0, 0.0, 0.0,1.0, 0.0,-1.0, 0.0,... ;
A parabolic cylinder has the same input:
geomodel(1:26,1) = 0.0, 1.0, 1.0, 0.0, 0.0, 0.0,1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,-1.0, ... ;
Finally we can create real parallel planes
geomodel(1:26,1) = 0.0, 1.0, 1.0, 0.0, 0.0, 0.0,1.0, 0.0, 0.0,-1.0, ... ;
Multiple input statements can be used to create complex geometries with minimal effort. For example, a spherical annulus could be created using only two input statements, defining a solid sphere and an hollow sphere.
geomodel(1:26,1) = -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.25, 1.0, 1.0, -1.0, ... ; Solid sphere
geomodel(1:26,1) = +1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0,-9.0, ... ; Hollow sphere
We can create also more complex objects. A Volume with hemi-spherical cap, cylindrical mid-section, and hemi-elliptic bottom is created with the following input:
geomodel(1:26,1) = +1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0,-9.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.0,+3.0,-3.0,+3.0, 0.0,+3.0, 0.0, ; hemi-sphere
geomodel(1:26,2) = +1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0,-9.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,-3.0,+3.0,-3.0,+3.0,-2.0, 0.0, 0.0, ; cylinder
geomodel(1:26,3) = +1.0, 1.0, 1.0, 0.0, 0.0,-2.0, 0.11, 0.11, 1.0,-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,-3.0,+3.0,-3.0,+3.0,-3.0,-2.0, 0.0, ; hemi-ellipse
In the end, we can do a Volume with hemi-spherical cap, cylindrical mid-section, hemi-elliptic bottom, and some internals of various shapes. The first three input are the same of the latter example, then we have to add other 5 inputs that are listed below:
geomodel(1:26,4) = -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0,-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,-3.0,+3.0,-3.0,+3.0,-3.0,-1.0, 0.0, ; solid cylinder
geomodel(1:26,5) = -1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0,-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.0,+3.0,-3.0,+3.0,-3.0, 1.0, 0.0, ; solid hemi-sphere
geomodel(1:26,6) = -1.0, 1.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0,-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.0,+3.0,-3.0,+3.0, 1.0, 2.0, 0.0, ; solid cone
geomodel(1:26,7) = -1.0, 1.0, 1.0, 2.0, 0.0,-1.0, 1.0, 1.0, 1.0,-4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5,-0.5,+0.5,-1.5,-0.5, 0.0, ; cube
geomodel(1:26,8) = -1.0, 1.0, 1.0,-2.0, 0.0,-1.0, 1.0, 1.0, 1.0,-4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.5,-1.5,-0.5,+0.5,-1.5,-0.5, 0.0, ; cube
It is convenient at times to be able to easily input complex initial conditions. To this end, we have generalized the use of the gasdef input variable by coupling it to the geomodel input variable. Usually the gasdef statement specifies fluid conditions in rectangular regions in two space dimensions and hexahedral volumes in three space dimensions. However, as we demonstrate in the following example, we are now able to input any initial conditions that are consistent with the GASFLOW-MPI geometric modeler.
Example. In the two space dimensions shown in Figure below, we input a quarter circle with radius 500 cm of stoichiometric hydrogen-air concentrations in an air medium. This analysis is based a three-dimensional problem involving a hemispherical balloon with radius 300 cm, but for the purposes of display, we have reduced it to two-space dimensions by collapsing the y-coordinate dimension and increased the stoichiometric hydrogen-air concentrations to 500 cm.
It should be noted that geomodel is coupled with gasdef to define an initial condition. The obstacles or walls will not be generated by geomodel. In order to get the obstacles or walls, the user has to add another geomodel statement, like geomodel(1:26,2), and change the last number, geomodel(26,2), to 0.
geomodel(1:26,2) = 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, -25.0e+04, 0.0, 0.0, 0.0, 0.0, 0.0,0.0,0.0, 0.0,0.0, 1.0e+50,+1.0e+50,-1.0e+50,+1.0e+50,-1.0e+50,+1.0e+50, 0,
Because the geometric modeler can generate copious numbers of walls and obstacles, it could be that GASFLOW-MPI may not predict and therefore allocate sufficient memory arrays for all the heat transfer surfaces. If that is the case, GASFLOW-MPI will stop and tell the user that he should increase the size of either or both nobsgeo and/or nwallsgeo. These two variables are respectively an additional amount of memory allocation required because of the geometric modeler for obstacles and walls, respectively.
Function: Defining the locations of variable flow areas involved in complex geometrical representation. FAVOR object could be a 2D face or 3D volume.
Often when modelling complex geometries, the actual flow area is different from the structure that the computational mesh allows. GASFLOW-MPI has the capability to reduce the flow area and volumes of selected cells. The user can input a fractional area at the cell edge between two adjacent cells and GASFLOW-MPI will automatically include a sharp edge orifice flow loss at that location and calculate velocities based on the actual flow area, or alternatively, the user can activate a sub-grid mass flow rate model.
Input Array: Fractional area reductions, flow resistances, or sub-grid mass flow rates are input with the areardef array in the xput NAMELIST group. The first 7 locations in the areardef(1:7,*) array are defined in the usual way, where the asterisk (*) is replaced by a sequential integer (≤ 600); that is, GASFLOW-MPI supports 600 definitions for areardef.
areadef(12, *) if >0 activating a standard flow resistance model, if <0 activating the sub-grid mass flow rate model (default=1)
If areadef(12,*)>0, the drag term is given by
The drag coefficient for incompressible flows is given by
Which is valid only for orifice geometry. We can generalize the treatment by assuming that
where C-form is 'classical' form or pressure loss coefficient given in
and C-frictional is the Moody loss coefficient
involving the friction factor f, the lenght over which the loss occurs, L, and the equivalent diameter.
Finally we have the "total drag function":
areardef(8,*) : Fraction of geometric flow area available for fluid flow. If areardef(8,*) is less than zero and areardef(9,*) equals zero , then no flow loss coefficient is included at this location. If areardef(8,*) is less than zero and areardef(10,*) equals zero , then no drag loss is included at this location.
areardef(9,*) : User input flow loss coefficient. If areardef(9,*)is zero, then correlations for flow through an orifice are used to calculate the flow loss coefficient. If areardef(8,*) is less than zero and areardef(9,*) equals zero, then no flow loss coefficient is included at this location. Default is zero.
areardef(10,*) : Hydraulic diameter to be used for the laminar drag loss. If areardef(10,*) equals zero, then no laminar drag loss is included at this location. Default is zero.
areardef(11,*) : Coefficient in the laminar drag loss formula. Default is 64.
areardef(12,*) : Fraction of the cell-center distance between neighboring cells to be used in the laminar drag loss formula. Default is one.
areardef(8,*)<0, areardef(9,*)=0, areardef(10,*)=0. The flow loss function is identically zero, but GASFLOW-MPI solves the conservation equation based upon a reduced area specified by |areardef(8,*)|.
areardef(8,*) /= 0, areardef(9,*) = 0, then C-form is computed based upon the orifice coefficient. areardef(9,*) > 0, then C-form = areardef(9,*). areardef(10,*)=0, then C-frictional = 0. areardef(10,*) > 0, then C-frictional then the default values of areardef(11,*) = 64.0. areardef(12,*) = 1.0
areardef(8,*) = 0. The resistance of the flow loss approaches infinity, i.e., there will be no flow through such a plane specified by this input value.
To activate the sub-grid mass flow rate model [areardef(12,*) < 0], a frictionless adiabatic solution for this problem is provided as follows:
Example. In the following example shown in Figure below, we demonstrate a fractional cell face open for flow of 25%, only in the positive flow direction, with a 0.75 flow loss coefficient; using adjacent hole cells used for the flow computation as indicated by the large solid dots in the following figure.
areardef(1:12,1) = 10, 10, 12, 13, 22, 23, 1, -0.25, 0.0, 0.0, +1.0, 0.75,
Now, we demonstrate a fractional cell face open for flow of 50%, with both positive and negative flow directions, with a 0.85 flow loss coefficient; using nearly static pressure cells for the flow computation as presented by the large solid dots in the following figure.
areardef(1:12,1) = 10,10, 12,13, 22,23, 1, 0.50, -10102301, -11102301, 0.00, -0.85,
Definition: a rupture disk model to simulate any defined "wall" that can break or blowaway under a pressure load. The rupture disk model is always associated with a defined wall.
Input Array: when the heat transfer option is activated, i.e., ihtflag = 1 in NAMELIST RHEAT, the user does not have to exclude the wall section from the defining walldef. The code will automatically exclude any wall section that is also defined as a rupture disk from any heat transfer considerations.
The specifications for the rupture disks are required in input NAMELIST XPUT as follows:
rupdkdef(1,*)
Beginning i mesh index (cell face number).
rupdkdef(2,*)
Ending i mesh index (cell face number).
rupdkdef(3,*)
Beginning j mesh index (cell face number).
rupdkdef(4,*)
Ending j mesh index (cell face number).
rupdkdef(5,*)
Beginning k mesh index (cell face number).
rupdkdef(6,*)
Ending k mesh index (cell face number).
rupdkdef(7,*)
Block number.
rupdkdef(8,*)
Fraction of geometric flow area available for fluid flow after the rupture disk has failed. In GASFLOW-MPI, the user has to define this fraction of geometric flow area with areardef to enable the more complex features in areardef.
rupdkdef(9,*)
If 0< rupdkdef(9,*) < 1.e+10: failure criterion provided as a pressure difference in dynes/cm2
If 1.e+10 <rupdkdef(9,*)< 1.e+20: failure criterion provided as 1.e+10 times absolute failure pressure in dynes/cm2
If 1.e+20 <rupdkdef(9,*)< 1.e+30: failure criterion provided as 1.e+20 times gas temperature in K
If rupdkdef(9,*) < 0: failure criterion provided as the physical time is greater than ABS(rupdkdef(9,*))
rupdkdef(10,*)
If rupdkdef(10,*) = 0: default. The gas can flow through the area in two-way direction. It can be used to model the rupture disc.
If rupdkdef(10,*) = 1: the gas can flow through the area in one-way only when the pressure difference at (i_prefpst, j_prefpst, k_prefpst) and (i_prefcon, j_prefcon, k_prefcon) is greater than the value of rupdkdef(9,*) that must be less than 1.0e+10. It can be used to model the one-way non-return valve.
If rupdkdef(10,*) < 0: the area is closed when the pressure difference at (i_prefpst, j_prefpst, k_prefpst) and (i_prefcon, j_prefcon, k_prefcon) is less than ABS(rupdkdef(10,*)) in dynes/cm2. It can be used to model the safety valve that opens when the pressure difference is greater than rupdkdef(9,*) and closes when the pressure difference is less than ABS(rupdkdef(10,*)).
Note: when rupdkdef(10,*) /= 0, the value of rupdkdef(9,*) must be less than 1.e+10 meaning that the failure criterion provided as a pressure difference in dynes/cm2.
When rupdkdef(10,*) = 0, the rupture disc will be open and the gas can flow in and out through the area after the failure. The code may crash when the rupture disc fails under big pressure difference where sonic speed may occur. Therefore, the time step has to be reduced intentionally when the rupture disc is close to satisfy the failure criteria determined by pressure difference, absolute pressure, temperature or user-defined time. The coefficient, deltfcoef (default: 0.999), is used to reduce the time step when the value of the physical parameter is between deltfcoef*rupdkdef(9,*) and rupdkdef(9,*). The reduced time step is calculated by
∆t=cflnum×cell_size/deltrupvel
The default value of cflnum is 0.25. The gas velocity, deltrupvel, when the rupture disc fails has to be estimated by the user. For instance, the values of could be 1000 and 10000 for pressure differences at 10 kPa and 100 kPa. If the code still crashes, the user can adjust the values of deltfcoef and deltrupvel, and restart the calculation from where it fails. The input variables required in input NAMELIST XPUT are as follows:
deltfcoef
Coefficient used to reduce the time step when the value of the physical parameter is between deltfcoef*rupdkdef(9,*) and rupdkdef(9,*). Default: 0.999. Used for rupdkdef(10,*) = 0 only.
deltrupvel
Estimated gas velocity to calculated the reduced time step when the rupture disc close to fail. Default: 10000 cm/s. Used for rupdkdef(10,*) = 0 only.
When rupdkdef(10,*) /= 0, the user has to define two pressure reference points, CON(i_prefcon, j_prefcon, k_prefcon) that is located in the lower pressure side and PST(i_prefpst, j_prefpst, k_prefpst) that is located in the higher pressure side, to control the flow through the area defined by rupdkdef. The time step will be reduced automatically when the pressure difference at CON and PST is close to satisfy the failure criteria. deltfcoef and deltrupvel are not needed. When rupdkdef(10,*) = 1, the gas can flow through the area when the pressure difference at PST and CON is greater rupdkdef(9,*). When the pressure at PST is less than the one at CON, no gas will flow through the area. It can be used to model the one-way non-return valve. When rupdkdef(10,*) < 0, the gas will stop flowing through the area when the pressure difference at PST and CON is less than ABS(rupdkdef(10,*)). It can be used to model a safety valve that opens and closes under user-defined pressure differences. ipstank must be set to 1. Note: it can be used only when rupdkdef(9,*) < 1.e+10 meaning that the failure criterion provided as a pressure difference in dynes/cm2. CON(i_prefcon, j_prefcon, k_prefcon) and PST(i_prefpst, j_prefpst, k_prefpst) should not be located near the valves to minimize the effect of potential high-speed flows on the total pressure.
ipstank
Coefficient used to reduce the time step when the value of the physical parameter is between deltfcoef*rupdkdef(9,*) and rupdkdef(9,*). Default: 0. Used for rupdkdef(10,*) /= 0 only.
i_prefpst
Cell index i for reference point at higher pressure side. Default: 2. Used for rupdkdef(10,*) /= 0 only.
j_prefpst
Cell index j for reference point at higher pressure side. Default: 2. Used for rupdkdef(10,*) /= 0 only.
k_prefpst
Cell index k for reference point at higher pressure side. Default: 2. Used for rupdkdef(10,*) /= 0 only.
i_prefcon
Cell index i for reference point at lower pressure side. Default: 2. Used for rupdkdef(10,*) /= 0 only.
j_prefcon
Cell index j for reference point at lower pressure side. Default: 2. Used for rupdkdef(10,*) /= 0 only.
k_prefcon
Cell index k for reference point at lower pressure side. Default: 2. Used for rupdkdef(10,*) /= 0 only.
Example 1 specifies three rupture disks, with fractional area open to flow of 0.1 after failing with a pressure difference greater than 0.01 bar (104 dynes/cm2). The time step is reduced to 0.25×cell_size/2000 s when the pressure difference is between 9900 and 10000 dynes/cm2.
$xput
deltfcoef = 0.99,
deltrupvel = 2000,
walls (1:8,1) = 6, 6, 1,11, 1,11, 1, 1,
walls (1:8,2) = 1,11, 6, 6, 1,11, 1, 1,
walls (1:8,3) = 1,11, 1,11, 6, 6, 1, 1,
areardef (1:8,1) = 6, 6, 1,11, 1,11, 1, 0.1,
areardef (1:8,2) = 1,11, 6, 6, 1,11, 1, 0.1,
areardef (1:8,3) = 1,11, 1,11, 6, 6, 1, 0.1,
rupdkdef(1:9,1) = 6, 6, 3, 4, 3, 4, 1, 0.1, 1.0e+4,
rupdkdef(1:9,2) = 3, 4, 6, 6, 3, 4, 1, 0.1, 1.0e+4,
rupdkdef(1:9,3) = 3, 4, 3, 4, 6, 6, 1, 0.1, 1.0e+4,
$end
Example 2 specifies a one-way safety valve with fractional area open to flow of 0.8. The safety valve opens when the pressure difference at the cell (6,11,11) and (7,11,11) is greater than 0.5 bar (5e5 dynes/cm2). When the pressure at (7,11,11) is higher than the one at (6,11,11), the safety valve is closed.
$xput
ipstank = 1,
i_prefpst = 6,
j_prefpst = 11,
k_prefpst = 11,
i_prefcon = 7,
j_prefcon = 11,
k_prefcon = 11,
walls (1:8,1) = 6, 6, 1,11, 1,11, 1, 1,
areardef (1:8,1) = 6, 6, 1,11, 1,11, 1, 0.8,
rupdkdef(1:10,1) = 6, 6, 3, 4, 3, 4, 1, 0.8, 5e+5, 1,
$end
Example 3 specifies a safety valve that can open and close at user-defined pressures. The cell PST (6,11,11) should be located in the higher pressure volume. The safety valve opens when the pressure difference at (6,11,11) and (7,11,11) is higher than 0.25 bar (2.5_105 dynes/cm2), as defined by rupdkdef(9,1). The safety valve closes when the pressure difference at (6,11,11) and (7,11,11) is less than 0.24 bar (2.4_105 dynes/cm2), as defined by ABS(rupdkdef(10,1)).
$xput
ipstank = 1,
i_prefpst = 6,
j_prefpst = 11,
k_prefpst = 11,
i_prefcon = 7,
j_prefcon = 11,
k_prefcon = 11,
walls (1:8,1) = 6, 6, 1,11, 1,11, 1, 1,
areardef (1:8,1) = 6, 6, 1,11, 1,11, 1, 0.5,
rupdkdef(1:10,1) = 6, 6, 3, 4, 3, 4, 1, 0.5, 2.5e+5, -2.4e+5,
$end
GASFLOW supports 300 definitions for rupdkdef.
When setting up a new problem, especially one with a complex geometry, it is often helpful to review the mesh before the actual, desired computation is carried out. Knowing the mesh indices at all computational boundaries and where walls and obstacles are will help minimize errors in defining initial and boundary conditions.
After the input geometry and mesh definition have been read in and processed, GASFLOW-MPI writes a file called profiles.nc that contains the information of mesh and geometric model. After the file profiles.nc is read by pyscan, click "Configuration" - "Show mesh". The user can check the mesh and geometric model slide by slide through the X, Y and Z axis.
holes(1:13,1) = 5, 7, 4, 7, 6, 8, 1, 0, 0, 0, 0, 0, 1, ;
holes(1:13,2) = 8, 9, 5, 6, 5, 8, 1, 0, 0, 0, 0, 1, 1, ;
holes(1:13,3) = 8, 9, 5, 6, 2, 4, 1, 1, 1, 1, 1, 1, 1, ;