2021.11

### 13Coreform Lattice GC

Coreform Lattice GC™ is a new product introduced in Coreform Cubit™ 2021.11 that implements Geometry-Compliant lattice structures. The geometry-compliant lattice structure technology defines the layout and shape of a lattice structure using a finite-element mesh into which a lattice is embedded. Each mesh element is assigned a lattice unit cell, and the element’s Jacobian applies a deformation to its unit cell which results in a deformed unit cell. In Coreform Lattice GC, a U-spline is used as the embedding mesh, enabling the construction of lattice structures with smooth intercellular interfaces and high-accuracy compliance to the CAD geometry on which the U-spline is built. Example workflows for building these lattice structures can also be found in the Cubit Workflows section under Building U-spline lattices.

#### 13.1Lattice GC command reference

##### 13.1.1build uspline lattice

This command will create and slice a U-spline lattice structure given an embedding U-spline mesh and a reference cell tessellation.

[build] uspline lattice <enum>ref_cell_tess <string>specifier base spline id <integer>id [j <integer>number_of_processors] [spsep <real>slice_plane_separation_value] [filename <string>cli_output_file_path] [filename for vtk vis <string>vtk_output_file_path] [filename for obj vis <string>obj_output_file_path] [tol <real>tolerance] [<boolean>visualize_only]

Remark: The ref_cell_tess enum indicates whether the reference cell is user-defined or one of the four packaged with Cubit.

To use a packaged reference cell, the ref_cell_tess enum should be the keyword uc and the valid specifier strings are jack, octettruss, truncatedsphere, or pvb.

To use a user-defined reference cell tessellation, the ref_cell_tess enum should be the keyword tess file path and the valid specifier strings are the filepath to the tessellation JSON file.

The file paths given may be absolute or relative to the Cubit run directory.

Remark: The value given to the j keyword should be an integer value greater than 1 and less than or equal to the number of processors on the machine.

When a value greater than the number of available processors on the machine, the command will attempt to determine and use the maximum number of available processors.

All other invalid entries will revert to the default value, which is 1. When j > 1, the set of slice planes are divided equally among the given processors and are handled in parallel. This can be used to speed up the slicing of large lattice structures.

Remark: The spsep keyword command specifies the minimum $z$ coordinate of the embedding mesh and sets the location of the first slice plane to that coordinate.

It then sets additional slice planes at the interval defined by the spsep keyword until it reaches the maximum $z$ coordinate of the embedding mesh.

If the spsep keyword is not present, then a default value of 0.025 will be used.

Slice planes are assumed to represent the bottom surface of a slice layer with some non-zero thickness. Consequently, slice planes will only produce slice loops if there is geometry immediately above them. For this reason, a slice plane that is coincident with the maximum $z$ coordinate of the embedding mesh will not produce any slice data.

Lowering the slice plane separation will increase the resolution of the resulting slice data, but will require more time to slice. Raising the slice plane separation can reduce the time to slice, but will decrease the resolution of the slice data and may cause some features to be missed.

Remark: The value given to the filename keyword should be the quoted string of the file path and filename, including a .cli extension, where the slice data will be stored.

If no filename is specified, the slice data will be written to a file named gcls_cli_output_(timestamp).cli.

Remark: The value for both the filename for vtk vis and the filename for obj vis keywords should be the quoted file path string, including the filename with the appropriate extension.

Visualization of large lattice structures can often be slow, with visualization of a .vtk file in Paraview often more performant than visualization of a .obj file in Cubit.

If a filename for a given visualization output format is not specified, then a visualization file will not be written.

Remark: The tol keyword will control the tolerance employed for comparing two floating point values during the slicing calculations. These floating point comparisons determine whether or not a slice plane intersects an element, whether or not a point lies on a slice plane or whether or not two points are considered coincident.

The given value should be a floating point value, and can be expressed in exponential form (e.g. $18$).

The default value for this parameter is $1e-8$, which has been shown to generally be appropriate when the element size in the embedding mesh is around 1.

In general, the floating point tolerance should increase or decrease with mesh size. A floating point tolerance that is too small or too large for a given element size may lead to situations where valid intersection loops cannot be created, resulting either in a critical error or erroneous data.

Remark: If the visualize_only Boolean is present, then slice data will not be calculated nor output. This Boolean must be used in conjunction with at least one of the visualization file name keywords or it will result in an invalid command.

##### 13.1.2fold uspline lattice ref geom

This command will partition the input geometry with planes defined by octahedaral symmetry and isolate the surfaces of the fundamental repeating unit into a group called “ folded_surfaces”.

fold uspline lattice ref geom <integer>volume_id [mesh <real>element_size]

Remark: The command will perform a check to see if the geometry lies within a unit cube bounding box centered on the origin. If the volume has geometry outside the bounding box, the command will return an error.

Remark: The command will not check to see if the geometry has the required octahedral symmetry or if it has geometry on the faces of the bounding box.

It is up to the user to ensure these conditions are met, otherwise the resulting folded tessellation will cause the slicing algorithm to fail or to produce a lattice that is not printable.

Remark: If the mesh keyword is present, the command will create a tri-mesh on the folded surfaces using the input element size. If the keyword is not present, the surfaces will not be automatically meshed.

##### 13.1.3export uspline lattice tessellation

This command will export the tessellation on surfaces in the input group to a JSON file.

export uspline lattice tessellation group name <string>group_name filepath <string>export_file_path

Remark: The group_name should be the quoted name of the group containing the meshed surfaces you wish to export.

Typically this will be “ folded_surfaces” because that is the group name created by the fold ref geom command. If that group name is changed, then the parameter input to the export tess command must reflect that change.

Remark: The export_file_path string is the quoted file path where the resulting JSON file is to be written.

This can be an absolute path or a path relative to the run directory. The file path must include a .json extension.