STACK
The stack/layers command is used to
read surfaces and merge into a single stacked layers cmo.
The surfaces must have the same number of nodes, and the x,y coordinates
of each layer must be the same.
(i.e. x_n,y_n of surface M must equal x_n,y_n of surface N),
and the surfaces must be single valued functions of z.
The layers are stacked with the first file on the bottom, last file is the
top surface.
The lower elevation of each layer truncates the upper.
The second from last
surface can be made to truncate all lower surfaces, commonly done with
a topographic surface.
The stack/layers command adds three scalar attributes that are used
in the stack/fill command. See syntax below.
nlayers are the total number of layers
in the stacked cmo, this includes layers added for refinement.
nnperlayer are the number of nodes in each of the layers.
neperlayer are the number of elements in each of the layers.
The node attribute VINT layertyp is created to indicate what type
of layer each node is in.
-1 bottom surface
-2 top surface
0 original input surfaces (usually interfaces)
1 derived surface to buffer interfaces
2 derived surface added as refinement layer
The layers option is followed by a list of surface files and
their material numbers. Further options include the
file_type either AVS or GMV,
layer_refinement and
pinch_options.
stack/layers/
file_type / [xy_subset] / file_list / [buffer_opt]
[truncate_opt] [pinchout_opt] [flip_opt]
file_type
The third parameter indicates the type of files to read as surfaces.
avs
will read AVS UCD files as a surfaces.
gmv
will read GMV files as a surfaces.
xy_subset
This option allows a subset of the surfaces to be used. The syntax is
minx, miny, maxx, maxy
file_list
This is the list of files to read from bottom surface to top.
Each surface can be followed by an integer value to indicate
a material number, and an integer value to indicate the number
of layers to add as refinement between input surfaces.
The file list has this syntax:
file1 mat_num, file2 mat_num [ref_num], file3 mat_num [ref_num] ...
file1 thru filen
can be quad or tri surface files.
mat_num
is the material number for the unit defined by upper and
lower surface. These values will detirmine the element colors when
the layers are filled with element volumes.
ref_num
is the number of refinement layers to add between two surfaces.
Refinement is done proportionallly, creating new layers between
the choosen surfaces. The first filename can not have a refinement
number, units start at second file name. See examples below.
buffer_option
This optional parameter creates buffer layers around interfaces at a distance
equal to xvalue. It derives layers above and
below each surface that is read in to the stack routine. Buffers are not
created around refinement layers or on the top and bottom surfaces.
The buffer option has this syntax:
buffer xvalue
truncate_option
This optional parameter causes all layers below the choosen surface
to be truncated. The truncating surface is indicated by the integer
number. For instance 5 will truncate all layers below the 5th surface
by the 5th surface.
trunc nth_file
pinchout_options
These optional parameters control how layers are pinched out where they cross.
They will also help to control the minimum thickness in a unit between layers.
pinch xthick
real value xthick
is mininum thickness allowed in a layer.
This allows upper surface elevation to be equal to ower surface
elevation if upper surface dips below lower surface.
By default, pinch is set to 0.
dpinch dvalue
dmin mvalue
These options are used along with buffers to help elements to follow
the interface boundarys. These options differ from the simple
pinch option. This option uses the beads_ona_ring algrithm
to move points vertically after all the layers are stacked.
If layer thickness <= dvalue then thickness is set to zero.
If layer thickness is < dvalue < mvalue, set thickness to mvalue.
(default dvalue = mvalue = 0.0, no post processing)
flip
optional parameter will flip elements so the normals point positive Z direction.
stack/fill / cmo_3D / cmo_stack
is a command used after the files are stacked into a single cmo.
The units are filled between the layers with 3D elements.
For triangulated
surfaces, the elements will be prisms, and for quad sheets the filler
elements will be hex.
FORMAT:
stack/layers
[avs | gmv ]
[minx,miny, maxx,maxy]
filename(1) [matno] filename(i) [matnum, addnum]
filename(n) [matnum, addnum]
[ flip ]
[ buffer [xdistance] ]
[ pinch font face="Courier New,Courier">[xthick] ]
[ trunc [ifile]
[ dpinch xvalue /
dmin xvalue ]
EXAMPLES:
cmo create cmo_stack
stack/layers/avs/
fsrf575.inp 1/
fsrf09.inp 2/ fsrf44.inp 2
/flip/pinch 1.0
This command will read 3 triangulated
surface files, flip the normal from down to up, and pinch layers less than
1.0 meter apart. When converted to a 3D grid, this will be two elements
thick in the z direction.
A surface is assigned the material value that occurs with it on
the command line. When the surfaces are filled with volumes, the
nodes on the bottom surface will detirmine the material of volume
elements on and above that surface. So nodes on fsrf575.inp and above
will all have imt values of 1. Nodes on fsrf09.inp and above will
have imt equal to 2.
cmo create cmo_stack
stack/layers/avs /
fsrf575.inp 1/
fsrf09.inp 2/fsrf44.inp 2/
flip / buffer
3.0
/ dpinch 1.0 / dmin
3.0
Same surfaces are used but buffer
layers are added at 3 meters below and 3 meters above the unit interface
fsrf09.inp. The units are pinched at anything less than 1 meter and the
mininum distance to next layer is 3 meters.
cmo create cmo_stack
stack/layers/avs /
surf-12.inp 1/ surf-5.inp 2 3 /
surf5.inp 3 / surf2_slope.inp 4/
surf25.inp 4 1 /
truncate 4 / pinch 0.
stack/fill/cmohex/cmo_stack
hextotet//cmotet/cmohex
This command reads a list of quad
surfaces and assigns material values 1 through 4. The first unit (between
surf-12.inp and surf-5.inp) is refined by 3, so that 3 layers are
added between these surfaces. All materials will be 1 in this refined unit.
The next two units, material 2 and 3,
will have no refinement layers added. The last unit is
refined once, with a layer between the surfaces surf2_slope.inp and surf25.inp.
The fill option will fill the space between quad surfaces with
hex elements. This hex grid will have 4 units and 10 layers.
The hextotet command can be used to convert the hex grid to
a tet grid. Note that the second option to hextotet is defaulted.
This allows hextotet to check on the grid's mesh type and use the
appropriate tet conversion. There will be 6 tet from each hex and
there are 3 tets from each prism.
LINKS:
Simple Examples for stack
Advanced Examples for stack