Generating Zones
Zones in 3DEC are usually generated with commands. The basic commands are usually capable of meshing any block assembly with tetrahedra. The meshing is quite robust, but there are some drawbacks including lack of controls and slow generation in some cases. A new experimental method was added in Version 7 to address some of these issues. Both methods are descibed below.
In addition, Version 7 also added the ability to import zones from a different meshing program (e.g. Griddle). This is descibed in the Importing and Merging #importingandmerging document.
Generating Zones with Commands
The basic command for generating tetrahedral zones in block zone generate edgelength
. Different edge lengths may be specified for different blocks. Edge lengths must be constant within each blocks. If you require a gradation of zone sizes within a single block, you will need to cut the block into smaller blocks and joint them, or use the new zoning algorithms (New Zoning Commands #zonegeneration-new).
Zones are not generatred until edge lengths have been specified for ALL blocks. Once zones have been generated, subcontacts are also created. Constitutitve models and properties for zones and contacts can then be assigned.
The example below shows how smaller zones can be created close to a region of interest (in this case, a load applied at the surface).
model new
block create brick -20 20 -20 20 -20 0
block densify seg 10 10 5 join
block create brick -4 4 -4 4 0 4
block zone generate edgelength 0.5 range pos-x -8 8 pos-y -8 8 pos-z -4 4
; defining an edge length over a region that has already been assigned an edge length
; will not overwrite the previously assigned edge length.
block zone generate edgelength 1 range pos-x -16 16 pos-y -16 16 pos-z -8 0
block zone generate edgelength 2
The gridpoints across joints are guaranteed to match - as shown in Figure 1. This reduces discontinuities in stress across joint boundaries. For blocks with very bad geomtries, zoning may fail in some blocks. In this case you can use the alternate
to relax the constraint and allow mismatched gridpoints across faces. Note that this will result in stress concentrations at these boundaries.
Even though the gridpoints will always match across joints, faces may not. It is possible to have matching gridpoints and mismatched faces (see Figure 2). For this reason, it is recoommended to have at least two zones across each dimension (see Figure 3). Alternatively, the new zone generation algorithms (New Zoning Commands #zonegeneration-new) always ensure matching gridpoints AND faces.
The analysis of large models can also be aided by using the block zone generate center
command, which
is a variation of the block zone generate edgelength
command. This command allows the sizes of the tetrahedral
zones to be increased gradually, outward from a central point. There still must be a constant zone size within each block. This command is particularly useful in conjunction with the block create tunnel
command.
New Zoning Commands
New zoning algorithms were added in Version 7 to address some of the shortcomings described above. These can be accessed with the block zone generate-new
command. This is often preceded by the block zone size
command, which is used to specify desired zone sizes in different parts of the model prior to zoning.
Unlike the block zone generate edgelength
command, the block zone generate-new
command can only be given once. Zone sizes are specified with keywords in this command, or previously with block zone size
commands. Examples are given below.
With block zone generate-new
, we can specify the global parameters for the whole model such as the range for zone size (max-edge
, min-edge
) and the gradation (gradation-surface
, gradation-volume
).
By defaut, the zone size is equal to one-tenth the diagonal length of the model as shown in the example below.
block create brick 0 1
block zone generate-new
We can set the mean edge length in the whole model by setting only max-edge or min-edge:
block create brick 0 1
block zone generate-new max-edge 0.5
The block zone size
command is used to specify the ‘local’ zone size. We can specify the zone size for different parts in the model. Note that unlike the :kwd:block.zone.generate.edgelength` command, if the block zone size
command is given multiple times for the same range, then the last one wins. This is consistent with how all of the other 3DEC commands work.
Note also that the gridpoints (and faces) will match across joint boundaries as shown in the figure below.
block create brick 0 1
block densify segment 2
block zone size edge 0.1 range pos-z 0.5 1
block zone size edge 0.3 range pos-z 0 0.5
block zone generate-new min-edge 0.1 max-edge 0.3
Like the block zone generate
command, the zone size can be made to increase gradually from the center as shown. However, unlike the block zone generate center
comand, it is not necessary to split the model into separate blocks. The zone sizes can vary within a single block as shown:
block create brick -5 5 -1 1 -5 5
block zone size center 0,0,0 distance-1 0 edge-1 0.1 distance-2 5 edge-2 1
block zone generate-new min-edge 0.1 max-edge 1
It is also possible to specify the zone size near a particular gridpoint with the isolated-point
keyword as shown. The gradient-surface
keyword dictates the rate at which the zone size on the surfaces increases away from the specified point. A larger number means a faster gradation.
block create brick 0 1
block zone size isolated-point 0 0 0 edge 0.01
block zone generate-new min-edge 0.01 max-edge 0.2 grad-surface 0.5
This also works if a point is specified inside of the block (not at a gridpoint).
block create brick 0 1
block zone size isolated-point 0.5 0.5 0.5 edge 0.01
block zone generate-new min-edge 0.01 max-edge 0.2 grad-surface 0.5
The block zone size
command behaves differently depending on the element type following by
keyword in the range:
by block-gridpoint
: specify zone size for gridpoints in the range;by block-bface
: specify zone size on faces in the range;by block
: specify zone size inside blocks in the range (this is the default if no element is specified).
Note that for faces, you need to use by block-bface
rather than by block-face
. This refers to the original block faces before they are triangulated.
An example is given below.
block create brick 0 1
block create brick 2 3 0 1 0 1
block create brick 4 5 0 1 0 1
; In the first block, the zone size is uniform and equal to 0.2
block zone size edge 0.2 range pos-x 0 1
; In the second block, the zone size near the top face is set to 0.05
block zone size edge 0.05 range pos-x 2 3 pos-z 1 by block-bface
; In the third block, the zone size near the bottom left corner is set to 0.05
block zone size edge 0.05 range pos-x 4 pos-z 0 by block-gridpoint
;Now we set the zone size range for the whole model
block zone generate-new min-edge 0.05 max-edge 0.2
Was this helpful? ... | PFC © 2021, Itasca | Updated: Feb 25, 2024 |