zone densify command


zone densify keyword ... <range>

Primary keywords:

aspect-ratio    edge-limit    global    gradient-limit    local    maximum-length    segments    repeat

This command finds all zones in the range and subdivides them into smaller zones filling the same volume. This will create new zones, and in general will create new gridpoints. The new zones will copy the group assignments of the original.

Note that this can create “hanging” gridpoints that are not perfectly connected to the surrounding grid. The zone attach by-face command should be used before cycling, to ensure continuous model behavior.

See Densifying Grids for a discussion and examples of the use of zone densification, and Geometry-Based Densification: Octree Meshing for discussion and examples the process of creating an “octree” mesh based on geometric data.

Note that densification of meshes with degenerate zone types (wedges, tetra, pyramid, etc.) can be problematic. Densification of triangular faces will occur using a degenerate point where all lines converge. If that point is not the same on two zones connected across a triangular face the resulting geometry will not be well behaved and will produce small artificats in the solution even when attached. These geometries can also cause unexpected topological surfaces that could interact poorly with zone face separation. The command will attempt to detect that condition and warn the user.

aspect-ratio f

This option currently only works on hexahedral (brick) type zones. Attempting to use it on other types will cause an error.

If a zone is determined to have an aspect ratio above this limit, it is densified in that direction only using the multiplier value given for that degree-of-freedom. This can be used with the repeat keyword to systematically divide zones along the longest direction until the aspect ratio falls below the desired value.

edge-limit f

If the maximum edge length of the zone falls above this value, then it will be densified using the segments multiplier in all three directions. If it falls below this value it will be ignored. This value may be used in combination with repeat to systematically subdivide zones until the maximum edge length is less than the limit.

Note that this behavior is different than the maximum-length keyword which will calculate the number of subdivisions dynamically. When the repeat keyword is used the difference is only that the maximum-length keyword allows different length limits in different directions.


This specifies that the zone edges to which the segments keyword applies are the ones that most closely correspond to the global x, y and z axes.


Zones chosen for densification will be checked to attempt to ensure that adjacent zones differ by, at most, one level of densification. This may mean more zones will be densified than actually fall into the range.


This is to set the zones to be densified in a local segment order. The local segment order is along the edges of e1, e2 and e3, where e1, e2 and e3 are the edges of the first and second, first and third, and first and fourth gridpoints of this zone. This is the default setting.

maximum-length f1 <f2 <f3 >>

This specifies the maximum edge lengths to be densified, in order of local or global x, y, or z direction. If f2 and f3 are not specified, they will be set to the same number as f1. The number of divisions (used instead of what can specified with the segments keyword) is calculated for each zone in order to bring the resulting edge length below the maximum. The divisions resulting are constrained to fall in powers of 2 (1,2,4,8,…).

Note that this differs from the behavior of the edge-limit keyword, which will use the divisions specified in the segments keyword. When the repeat keyword is used the difference is only that the maximum-length keyword allows different length limits in different directions.

segments i1 <i2 <i3 >>

This specifies the subdivision number of zones to be densified, in order. If i2 and i3 are not specified, they will be set to the same number as i1.

Note using non-uniform segment values is not recommended on very irregular starting meshes - in particular the kind resulting from mesh generation tools like griddle. Adjacent zones may have very different local orientations and while use of the global keyword may mitigate these effects they will not eliminate them.

If you use non-uniform segment values you should choose numbers that are directly multiples of each other. For example 1,2,4 will tend to produce better meshes than 2,3,5.

repeat <i >

Repeats the densification i times, causing a recursive application of the range and densification settings. This can, for example, be used to create an octree grid. Note that if no number is given, then FLAC3D will repeat until the edge-limit is reached, applying the division specified in segments each time.