199 lines
7.6 KiB
Plaintext
199 lines
7.6 KiB
Plaintext
|
|
.. _stack:
|
||
|
|
|
||
|
|
 _place_holder;
|
||
|
|
|
||
|
|
## 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 ]
|
||
|
|
 _place_holder;
|
||
|
|
|
||
|
|
 _place_holder;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
EXAMPLES:
|
||
|
|
|
||
|
|
> cmo create cmo_stack
|
||
|
|
|
||
|
|
**stack/layers/avs**/ fsrf575.inp _place_holder; _place_holder;1/ fsrf09.inp _place_holder; _place_holder;2/ fsrf44.inp _place_holder; _place_holder;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 _place_holder; _place_holder;1/ _place_holder; fsrf09.inp _place_holder; _place_holder;2/fsrf44.inp _place_holder; _place_holder;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 _place_holder; _place_holder;1/ surf-5.inp _place_holder; _place_holder;2 _place_holder;3 _place_holder;/ surf5.inp _place_holder; _place_holder;3 _place_holder; _place_holder;/ surf2_slope.inp _place_holder; _place_holder;4/ surf25.inp _place_holder; _place_holder;4 _place_holder;1 _place_holder;/ **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 _place_holder; 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](../stack_demo.html)
|
||
|
|
|
||
|
|
|
||
|
|
[Advanced Examples for stack](../stack_demo2.html)
|
||
|
|
|