Sculpt Mesh Improvement

Sculpt options for modifying the mesh to improve mesh quality.

Automatic smoothing provides an effective method for improving element quality. However there may be some cases that cannot be improved with smoothing alone. The options included in this section will apply changes to the underlying hex mesh or to the volume fraction data to increase the opportunity for smoothing to produce a good quality mesh.


Mesh Improvement 		--improve 	-imp
  --pillow,		-p <args>	Set pillow criteria (1=surfaces)
  --pillow_surfaces,	-ps		Turn on pillowing for all surfaces
  --pillow_curves,	-pc		Turn on pillowing for bad quality at curves
  --pillow_boundaries,	-pb		Turn on pillowing at domain boundaries
  --pillow_curve_layers,	-pcl <args>	Number of elements to buffer at curves
  --pillow_curve_thresh,	-pct <args>	S.J. threshold to pillow hexes at curves
  --pillow_smooth_off,	-pso		Turn off smoothing following pillow operations
  --capture,		-c <args>	Project to facet geometry 
  --capture_angle,	-ca <args>	Angle at which to split surfaces 
  --capture_side,	-sc <args>	Project to facet geometry with surface ID
  --defeature,		-df <args>	Apply automatic defeaturing
  --min_vol_cells,	-mvs <args>	Minimum number of cells in a volume
  --defeature_bbox,	-dbb		Defeature Filtering at Bounding Box
  --defeature_iters,	-dfi <args>	Maximum Number of Defeaturing Iterations
  --micro_expand,	-me <args>	Expand Microstructure grid by N layers
  --micro_shave,	-ms		Remove isolated cells at micro. boundaries
  --remove_bad,		-rb <args>	Remove hexes with Scaled Jacobian < threshold

Sculpt Command Summary

Pillow

Command: pillow     Set pillow criteria (1=surfaces)

Long Name:     --pillow 
Short Name:     -p 
Argument Type:   integer (0, 1, 2, 3) 
Input arguments: off (0)
                 surfaces (1)
                 curves (2)
                 domain_boundaries (3)
                 surfaces_no_smoothing (100)
                 curves_2_layers (212)
                 curves_3_layers (213)
                 curves_4_layers (214)
                 curves_5_layers (215)
                 curves_2_layers_no_smoothing (202)
                 curves_3_layers_no_smoothing (203)
                 curves_4_layers_no_smoothing (204)
                 curves_5_layers_no_smoothing (205)
Command Description:

For models that have more than one material that share an interface, unless the geometry is precisely aligned with the global axis, it is usually a good idea to turn on pillowing. Pillowing automatically inserts an additional layer of hexes at interface boundaries to improve mesh quality. Without pillowing you may notice inverted or poor quality elements at curve interfaces where 2 or more materials meet.

The pillow option will generate an additional layer of hexes at surfaces as a means to improve element quality near curve interfaces. This is intended to eliminate the problem of 3 or more nodes from a single hex face lying on the same curve. Use one or more of the following options to set up pillowing:

See help on the above options for more information

Pillow All Surfaces

Command: pillow_surfaces     Turn on pillowing for all surfaces

Long Name:     --pillow_surfaces 
Short Name:     -ps 
Argument Type:   none 
Command Description: Pillow option to insert a layer of hexes surrounding each internal surface in the mesh. Where two volumes share a common interface is defined as a surface. All hexes that have at least one of its faces on a surface are defined as the "shrink set" of hexes. A separate shrink set is defined for each unique surface. Hexes in the set are shrunk away from their hex neighbors not in the shrink set. A layer of hexes is then inserted surrounding all hexes in each set. This enforces the condition where no more than one hex edge will lie on any single curve thus allowing more freedom for the smoother to improve element quality.

pillow-surface1

pillow-surface2

Fig 1. Example of surface pillowing, before and after smoothing

Surface pillowing is off by default. If both pillow_curves and pillow_surfaces options are used, curve pillowing will be performed before surface pillowing. See the pillow option for more information on setting additional options for pillowing.


Pillow Bad Quality at Curves

Command: pillow_curves     Turn on pillowing for bad quality at curves

Long Name:     --pillow_curves 
Short Name:     -pc 
Argument Type:   none 
Command Description: Pillow option to selectively pillow hexes at curves. Only hexes that have faces with 3 or more nodes on a curve will be pillowed. Additional buffer layers of hexes beyond the poor quads at the curves will be included in the pillow region. The number of buffer layers beyond the curve can be controlled with the pillow_curve_layers, where the default will be 3 layers.

pillow-curve1

pillow-curve2

Fig 2. Example of curve pillowing with four pillow_curve_layers, before and after smoothing

Curve pillowing is off by default. If both pillow_curves and pillow_surfaces options are used, curve pillowing will be performed before surface pillowing. See the pillow option for more information on setting additional options for pillowing.


Pillow at Domain Boundaries

Command: pillow_boundaries     Turn on pillowing at domain boundaries

Long Name:     --pillow_boundaries 
Short Name:     -pb 
Argument Type:   none 
Command Description: Pillow option to insert pillow layers at domain boundaries of the initial Cartesian grid definition. One layer of hexes is inserted on each of the six faces of the Cartesian Domain. This option is useful where the void option is used to generate a mesh in the full Cartesian grid and where the adapt option has been used. Without this option, it is likely that hexes with two faces on the same domain boundary will occur if the adaptation extends to the boundary. Turning on the pillow_boundaries option should correct for these cases.

boundary-pillow

Fig 3. Example of pillowing at boundaries on a microstructure RVE. (b) before smoothing (c) after smoothing

Boundary pillowing is off by default. The pillow_boundaries option may be used in the same input as pillow_surfaces or pillow_curves. The pillow_boundaries option must also be used with the mesh_void option to ensure hexes will exist at the Cartesian domain boundary. See the pillow option for more information on setting additional options for pillowing.


Number of Element Layers to Buffer Curves

Command: pillow_curve_layers     Number of elements to buffer at curves

Long Name:     --pillow_curve_layers 
Short Name:     -pcl 
Argument Type:   integer > 0 
Command Description: Used for setting the number of buffer hex layers when the pillow_curves option is used. When pillow_curves is used a shrink set is formed from hexes that would otherwise have two or more edges on the same curve. This value will control the extent to which neighboring hexes will be included in the shrink set. The default pillow_curve_layers is 3. Setting this value lower will localize the modifications to the hex mesh, whereas, more layers will extend the region that is affected in correcting the poor quality at curves.

Scaled Jacobian Threshold for Curve Pillowing

Command: pillow_curve_thresh     S.J. threshold to pillow hexes at curves

Long Name:     --pillow_curve_thresh 
Short Name:     -pct 
Argument Type:   floating point value (-1.0->1.0) 
Command Description: Used for setting the quality threshold for pillowing hexes at curves. When determining hexes to include in the shrink set, the pillow_curves option will look for hexes with more than two nodes of a hex on the same curve. If this condition is satisfied, it will test the mesh quality of quads on the adjacent surfaces that share the common curve. If at least 3 nodes are on a common curve and the Scaled Jacobian of any of the attached quads falls below the, pillow_curve_thresh scaled Jacobian metric, then the associated hexes will be included in the shrink set. Default for pillow_curve_thresh is 0.3. Increasing this value will tend to increase the total number of hexes added to the mesh, but may result in better mesh quality after smoothing. Lowering this value may reduce the number of additional hexes but could potentially result in more hexes with poor or bad Scaled Jacobian metrics.

Turn OFF Smoothing Following Pillow Operations

Command: pillow_smooth_off     Turn off smoothing following pillow operations

Long Name:     --pillow_smooth_off 
Short Name:     -pso 
Argument Type:   none 
Command Description: Controls the smoothing following pillow operations. To maximize element quality at pillowed hexes, smoothing is always performed after inserting the hex layers. The smoothing step may be omitted if pillow_smooth_off is set. This option can be useful for visualizing the pillow layers that have been inserted, but in most cases will generate poor quality or inverted elements.

Capture

Command: capture     Project to facet geometry 

Long Name:     --capture 
Short Name:     -c 
Argument Type:   integer (0, 1, 2) 
Input arguments: off (0)
                 on (1)
                 external_surfaces (2)
Command Description:

This is an experimental option still in development. Following meshing and smoothing, sculpt will project nodes to the initial triangle facets defined in the STL input file. Node projection is based only on the closet facet, so features (curves) may not be honored. This option may however be useful for models that do not contain sharp features. The capture argument is limited to 0=off, 1=on.


Capture Angle

Command: capture_angle     Angle at which to split surfaces 

Long Name:     --capture_angle 
Short Name:     -ca 
Argument Type:   floating point value (0 -> 360) 
Command Description:

This is an experimental option still in development. Feature angle for capture option.


Capture Side

Command: capture_side     Project to facet geometry with surface ID

Long Name:     --capture_side 
Short Name:     -sc 
Argument Type:   integer > 0 
Command Description:

Similar to the capture option, the capture_side option will project nodes to the initial triangle facets, however projections will be limited only to surface nodes closest to the surface ID specified by the argument. Note that the input STL file can identify and group facets according to a surface ID. However surface IDs are utilized only when using the gen_sidesets option with arguments 3 and 4. When using Cubit, the STL file written when using the sculpt parallel command with sideset options 3 and 4 will include surface identification for surfaces in the STL file. A workflow for using the capture_side option might include the following:

The result should be a mesh where surface nodes closest to the surfaces identified by the unique sideset ID will lie precisely on their closest surface.


Defeature

Command: defeature     Apply automatic defeaturing

Long Name:     --defeature 
Short Name:     -df 
Argument Type:   integer (0, 1, 2, 3) 
Input arguments: off (0)
                 filter (1)
                 collapse (2)
                 filter_and_collapse (3)
Command Description:

Option to automatically detect and remove small features. Primarily used for defeaturing microstructure data, however can be used with any input format. The following options are available:


Minimum Number of Cells in a Volume

Command: min_vol_cells     Minimum number of cells in a volume

Long Name:     --min_vol_cells 
Short Name:     -mvs 
Argument Type:   integer >= 0 
Command Description:

When used with defeature options filter (1) or filter_and_collapse (3),specifies the minimum number of cells below which a volume will be eliminated. The cells of small volumes will be absorbed into the predominant material of the neighboring cells. If not specified and defeature options filter (1) or filter_and_collapse (3) are used, the min_vol_cells value will be set to 5.


Defeature at Bounding Box

Command: defeature_bbox     Defeature Filtering at Bounding Box

Long Name:     --defeature_bbox 
Short Name:     -dbb 
Argument Type:   none 
Command Description:

The defeature_bbox option is used in conjunction with defeature = filter (1). It is used to modify the defeature filter criteria at cells that are immediately adjacent to the Cartesian grid's domain boundary. It is most effective for microstructure data but can be used with any input format. The defeature = filter (1) option will remove protrusions identified by cells that are surrounded on 4 or 5 sides by another material. For cells that are at the domain boundary, cells will have missing adjacent cells on at least one face. If the defeature_bbox=true option is used, the missing adjacent cells are considered a different material and counted in the 4 or 5 surrounding cells with a different material. In contrast, the defeature_bbox=false option will not count the missing adjacent cells. Using the defeature_bbox=true has the effect of more aggressively modifying cells at the domain boundaries to avoid protrusions. The default for this option is defeature_bbox=false. It will be ignored if defeature = filter (1) is not used.


Maximum Number of Defeature Iterations

Command: defeature_iters     Maximum Number of Defeaturing Iterations

Long Name:     --defeature_iters 
Short Name:     -dfi 
Argument Type:   integer >=0 
Command Description:

Used with the defeature option. Controls the maximum number of iterations of defeature filtering that will be performed. Setting this value greater than the default of 10 can be useful for very noisy data where a significant number of iterations will need to be performed to resolve the geometry. When performing non-manifold resolution, the defeature state of some of the cells may be effected. As a result, the defeaturing and non-manifold resolution procedures are performed in a loop until no further changes can be made. The defeature_iters sets the maximum number of defeature and non-manifold resolution procedures that will be performed. Note that if defeaturing reaches the maximum iteration value without completely resolving all non-manifold conditions, that subsequent sculpt procedures may not succeed. Set this value higher to allow the defeaturing and non-manifold resolution to run to completion. The stair = 1 option can be used to interrogate the model to see where non-manifold conditions may still exist.


Microstructure Expansion

Command: micro_expand     Expand Microstructure grid by N layers

Long Name:     --micro_expand 
Short Name:     -me 
Argument Type:   integer >= 0 
Command Description:

This option expands the Cartesian grid by a specified number of layers. It can be used with any of the following input options:

In some cases the interior material interfaces may intersect the domain boundaries at small acute angles. When this occurs it may be difficult or impossible to achieve computable mesh quality at these intersections. To address this problem, one or more layers of hexes may be added to the Cartesian grid. The volume fractions from cells at the boundary are copied to generate additional layers. This has the effect of increasing the angle of intersection for any material interfaces intersecting the domain boundary. Usualy a value of 1 or 2 is sufficient to sufficiently improve quality.

Note that the resulting mesh in the expanded layers serves only to improve mesh quality and will only duplicate existing data at the boundaries. It may not reflect the actual material structure within the expansion layers.

expansion-layers

Fig 7. (a) Initial mesh (b) One exapnsion layer added (c) Two expansion layers added

Microstructure Shave

Command: micro_shave     Remove isolated cells at micro. boundaries

Long Name:     --micro_shave 
Short Name:     -ms 
Argument Type:   integer >= 0 
Command Description:

This option potentially modifies the outermost layer of Cartesian cells of a microstructures file. It will identify isolated cells where the assigned material is unique from all of its surrounding cells at the boundary. When this occurs, the cell material is reassigned to the dominant nearby material.

This option is useful if it is noted that a cell structure just barely grazes the exterior planar boundary surface. Poor quality elements can often result with this condition. The micro_shave option will, in effect, remove material from the cell structure, but will result in better quality elements by removing the intersection region with the boundary.

micro_shave can be used with any of the following input options:


Remove bad elements below threshold

Command: remove_bad     Remove hexes with Scaled Jacobian < threshold

Long Name:     --remove_bad 
Short Name:     -rb 
Argument Type:   floating point value -1.0 >= 1.0 
Command Description:

Remove hexes below the specified scaled Jacobian metric.