A semi-automated design interpretation software, facilitating the recovery of a modified geometry resulting from a structural optimization, for further use in the design process and FEA reanalysis.

OSSmooth is embedded in HyperMesh.

OSSmooth can be used in three different ways: OSSmooth for geometry, FEA topology reanalysis, and FEA topography reanalysis.

OSSmooth (for geometry) has several uses and can be used to:
• Interpret topology optimization results, creating an iso-density boundary surface (Iso-surface)
• Interpret topography optimization results, creating beads or swags on the design surface
• Recover and smooth geometry resulting from a shape optimization
• Reduce the amount of surface data from a given set of triangular patches by combining smaller patches
• Smooth surface data given as triangular patches
For FEA topology reanalysis and FEA topography reanalysis, OSSmooth can be used to:
• Preserve component boundaries for multiple design components
• Recover geometry with or without an artificial layer of elements around a non-design space optionally
• Tetramesh Iso-surfaces 'by property'
• Preserve boundary conditions upon geometry recovery to enable quick reanalysis
The following flowchart provides an overview of how OSSmooth works to interpret optimization results from OptiStruct:

Each of the three applications of OSSmooth has a corresponding sub-panel in the OSSmooth panel in HyperMesh. OSSmooth (for geometry) is generally used to recover geometry by interpreting topology, topography, and shape optimization results, while FEA topology and FEA topography are used to generate recovered geometry with boundary conditions for FEA reanalysis.

OSSmooth (for geometry) requires a parameter file (generally has the file extension .oss) to run. This parameter file may be generated from the OSSmooth panel in HyperMesh, or it may be generated manually through a text editor. At the completion of an optimization run, OptiStruct automatically exports an OSSmooth parameter file <prefix>.oss with certain default settings depending on the type of optimization run.

In addition to the parameter file, OSSmooth (for geometry) also requires the input file (<prefix>.fem), the shape file (<prefix>.sh), and/or the grid file (<prefix>.grid) from an OptiStruct run. The grid file <prefix>.grid contains the grid point locations after a topography or shape optimization and is output at the end of a topography or shape optimization run. The shape file, <prefix>.sh, contains the element density information of a topology optimization and is output at the end of a topology optimization run.

FEA topology requires the input model (<prefix>.fem) to be loaded into HyperMesh before running, which is different from OSSmooth (for geometry). It also requires the shape file (<prefix>.sh) generated by a topology optimization. For processing of the non-design elements, two options (Keep smooth narrow layer around and Split all quads) are provided to recover geometry.

FEA topography requires a grid file (<prefix>.grid) to run. Similar to FEA topology, it also requires that the input model (<prefix>.fem) be loaded into HyperMesh first, with the option for iso-surface that performs the same functionality as FEA topology.
Note: OSSmooth currently does not recognize OptiStruct long-format input data. A possible work-around for this problem is to import the long-format input file into HyperMesh and export it using the regular OptiStruct template before running OSSmooth.

The interpreted design from OSSmooth can be exported as a finite element mesh in the Bulk Data format, as IGES surfaces, as a stereolithography file, or as a Config panel Hyper3D file.

## Parameter File

The OSSmooth parameter file is composed of a number of parameter statements.

The OSSmooth parameter file is composed of a number of parameter statements, each of which has the following format:
parameter_name arg1,arg2,...,argn

The parameter_name and arguments can be separated either by spaces or commas. The file is not case sensitive.

Comment lines in the OSSmooth parameter file should start with either '#' or '\$'.

The following is a list of allowable parameters and their respective arguments:
input_file
Identifies the files to be interpreted by OSSmooth.
Argument
Description
arg1
The file name (without extension) of the OptiStruct .fem, .sh, and/or .gridfiles to be interpreted by OSSmooth.
output_file
Name of the file to be output by OSSmooth.
Argument
Description
arg1
Full name of the file output by OSSmooth.
output_code
Identifies the type of output.
Argument
Description
arg1
Output format for iso-surface:
1
Bulk data trias
2
IGES patches
3 (Default)
STL trias
4
H3D trias
arg2
Output control for tet-meshing of volume enclosed by the iso-surface.
Default: no tet-meshing
1
Tetra4 + Tria3 elements
2
Tetra10 + Tria6 elements
3
Tetra4 elements
4
Tetra10 elements
The tet-mesh is written in OptiStruct input format to a file <input_file>_mesh.fem. In this file, the design space of the file <input_file>.fem is replaced with a tet-mesh for immediate reanalysis. Loads, boundary conditions, and non-design elements are carried over from the input file.
units
Defines output units for IGES format. This information gets written to the header of the IGES file and may be recognized by your CAD system.
Argument
Description
1 (Default)
inch
2
mm
4
foot
6
m
10
cm
autobead
Improves the recovered geometry from a topography optimization by applying automatic geometry creation.
Argument
Description
arg1
Operation flag [integer]:
0
1 (Default)
arg2
[real, between 0.0 and 1.0, default = 0.3]
1 (Default)
2
arg3
1 (Default)
2
isosurface
Generate threshold surface from a topology optimization by applying automatic geometry creation.
Argument
Description
arg1
Operation flag [integer]:
0
isosurface off
1 (Default)
isosurface on
arg2
Type of surface created [integer]:
0
isosurface only
1
isosurface with Optimization-based smoothing
3 (Default)
isosurface with Laplacian smoothing
For topology results, smoothing maintains the topology as suggested by OptiStruct, but it can deviate from the given density distribution. If option 1 or 3 is used, check the maximum and average smoothing error output by OSSmooth.
arg3
Density threshold for creating isosurface.
[real, between 0.0 and 1.0, default = 0.3]
opti_smoothing
Optimization-based smoothing [Only used if isosurface C2=1].
Argument
Description
arg1
Unit-less surface distance coefficient
[real, default = 0.0]
Defines closeness of the smooth surface from the threshold surface. The effect of this coefficient varies for different input meshes. Higher magnitudes (both positive and negative) give smoother results, but the surface deviates more from the original density distribution. The recommended range is from -50 to 50. When the coefficient is set between 0 and 50, the surface usually tends to smooth and shrink. When the coefficient is set between 0 and -50, the surface usually tends to smooth and expand.
arg2
Smooth isosurface boundary flag [integer]:
0 (Default)
Boundary not included in smoothing
1
Boundary included in smoothing
laplacian_smoothing
Laplacian smoothing [Only used if isosurface C2=3].
Argument
Description
arg1
Number of iteration for Laplacian smoothing.
[integer > 0, default = 10]
arg2
Feature angle threshold in degrees
[real, default = 30.0]
The feature angle is defined as the angle of normal between two intersected element planes. All corners with a feature angle larger than the threshold will be preserved in the smoothing process.
arg3
Smooth isosurface boundary flag [integer]:
0
Boundary not included in smoothing
1 (Default)
Boundary included in smoothing
remesh
Remesh autobead surface and/or isosurface flag [integer]:
Argument
Description
0
Remesh off
1
Remesh on
Remesh detects 2-layer elements around bead shape and/or boundary of isosurface. Use mixed type remesh if input mesh contains any QUAD elements, otherwise remesh with TRIA elements.
surface_reduction
Reduces the number of surfaces representing the geometry. Can reduce the number of surfaces by up to 80%.
Argument
Description
arg1
Surface reduction flag [integer]:
0 (Default)
No surface reduction
1
Do surface reduction
arg2
Feature angle threshold in degrees
[real, default = 10.0]
The feature angle is defined as the angle formed by the surface normal of two adjacent elements. The surface reduction will be performed on any two adjacent elements in which the feature angle between the two elements is smaller than the threshold. The greater the threshold, the more surface reduction will be conducted. The valid range of the threshold is [1.0, 80.0].
pure_surface_smoothing
Surface smoothing only.
Argument
Description
arg1
Pure surface smoothing flag [integer]:
0 (Default)
no surface smoothing
1
Optimization-based smoothing 2 - Laplacian smoothing
arg2
Number of iteration [Only used if G1=2]
[integer > 0, default = 10]
arg3
Feature angle threshold in degrees [Only used if G1=2]
[real, default = 30.0]
The feature angle is defined as the angle of normal between two intersected element planes. All corners with a feature angle larger than the threshold will be preserved in the smoothing process.
pure_surface_reduction
Surface reduction only.
Argument
Description
arg1
Pure surface reduction flag [integer]:
0 (Default)
No surface reduction
1
Do surface reduction
arg2
Feature angle threshold in degrees
[real, default = 10.0]
The feature angle is defined as the angle formed by the surface normal of two adjacent elements. The surface reduction will be performed on any two adjacent elements in which the feature angle between the two elements is smaller than the threshold. The greater the threshold, the more surface reduction will be conducted. The valid range of the threshold is [1.0, 80.0].

### Input File Example

Parameter
Description
input_file example
Identifies the root of the input files as example, so OSSmooth will look for the files example.fem, example.grid, and example.sh.
output_file example.stl
The resulting output will be example.stl.
output_code 3
The output will be in stereolithography format.
Autobead 1 0.3 1
Topography results will be interpreted using the autobead feature with a threshold value of 30% creating single depth beads.
Isosurface 1 3 0.3
Topology results will be interpreted by creating an iso-density boundary surface with at a density value of 30% and smooth using laplacian smoothing.
laplacian_smoothing 10 30 1
The Laplacian smoothing will run for 10 iterations, consider a feature angle of 30-degrees and including the boundary in the smoothing.
Remesh 1
The two rows of elements around the recovered geometry will be remeshed in an attempt to smooth the mesh transition.

## Run OSSmooth

### From the HyperMesh OSSmooth Panel

Note: OSSmooth checks out 42 Altair Units (21 leveled and 21 stacked).
1. Select the ossmooth panel on the post page.
2. Choose either OSSmooth (for geometry), FEA topology or FEA topography.
3. Select the OptiStruct input file (<prefix.fem> and/or <prefix.sh> and/or <prefix. grid>) using the file browser.
4. Edit the OSSmooth input data by making selections on the screen.
5. Click ossmooth.
OSSmooth (for geometry) will write a new <prefix.oss> file with the screen settings and load the geometry recovered into HyperMesh if the data format is IGES, STL, or Nastran. FEA topology and FEA topography will update the model in HyperMesh without outputting the result; if required, data can be exported from HyperMesh.

## Interpretation of Topology Optimization Results

The purpose of this functionality is to provide an iso-density surface based on the volumetric density information of a topology optimization, which is conducted using OptiStruct.

OSSmooth can handle both shell and solid elements with the same parameter setting. One example of post-processing of shell element topology optimization is shown below with the following parameter setting in the OSSmooth parameter file:
#general parameters
input_file            mattel
output_file           mattel.stl
output_code           3

#specific parameters
isosurface            1  3  0.300
laplacian_smoothing   10  30.000  1
surface_reduction     1  10.000

The parameter laplacian_smoothing is used for additional smoothing. In most cases, the threshold surface (isosurface with second argument 0) already creates a smooth shape. Additional smoothing (isosurface with second argument 3) maintains the topology as suggested by OptiStruct, but it can deviate from the given density distribution. If this option is used, the maximum and average smoothing error output by OSSmooth should be checked. The surface_reduction parameter is used to reduce the number of elements.

## Laplacian Smoothing

Used in the smoothing of the results of topology optimization.

The laplacian_smoothing statement controls the iteration number of when the Laplacian smoothing will be performed and the feature angle threshold to preserve normal discontinuity at corners. One smoothing result is shown below with the following parameter setting in the OSSmooth parameter file.
#general parameters
input_file            surf
output_file           surf.stl
output_code           3
isosurface            1  3  0.300

#specific parameters
laplacian_smoothing   10  30.000  1

Laplacian smoothing creates smooth boundary iso-surface by entering 1 as the 3rd argument of the laplacian_smoothing parameter statement. The comparison of the following two figures shows that the second figure is almost ready for casting.
The advantages of the laplacian_smoothing statement in OSSmooth include:
• The flexibility of controlling the number of smoothing iterations to obtain different degrees of smoothing (possibly a smoothing quality ready for casting). Normally, the iteration number ranges from 5 to 20.
• Smooth boundary of iso-surface with feature angle constrain are seamlessly incorporated into the smoothing process, which is more challenging in a pure CAD system.

## Interpretation of Topography Optimization Results

The autobead feature of OSSmooth allows OptiStruct topography optimization results to be interpreted as one or two level beads.

Figure 5 shows the level of detail captured in both cases; while the 2-level approach captures more details, it is more complicated to manufacture than the 1-level interpretation, often without significant performance gain.
One example of post-processing of topography optimization is shown below with the following parameter setting in the OSSmooth parameter file:
#general parameters
input_file            decklid
output_file           decklid.fem
output_code           1

#specific parameters
remesh                1
Some topography performances are relying on the half translation part. OSSmooth can interpolate topography optimization results to 2-layer autobead (autobead third argument 2). Here is one example of creating 2-layer autobead with the following parameter setting in the OSSmooth parameter file:
#general parameters
input_file            decklid
output_file           decklid.nas
output_code           1
#specific parameters
autobead              1  0.300  2

### Shape Optimization Results, Surface Reduction and Surface Smoothing

OSSmooth may also be used to reduce and smooth surfaces or the surfaces of a domain. The parameter statements pure_surf_reduction and pure_surf_smoothing may be used for this purpose.

The file defined by input_file must be in OptiStruct, and OSSmooth can smooth the surface or the surfaces of a domain of the model.

The usage of in the OSSmooth parameter file is as follows:
#general parameters
input_file            surf
output_file           surf.stl
output_code           3

#specific parameters
pure_surf_smoothing   2  10  30.000
pure_surf_reduction   1  10.000

## FEA Topology for Reanalysis

The purpose of this functionality is to provide an iso-density surface based on the volumetric density information from a topology optimization.

Through tetrameshing for 3D models and inheriting boundary conditions, the results from FEA topology can be used for quick reanalysis.

FEA topology support is available for first and second order shell and solid elements. For 3D models, the recovered iso-surface can be tetrameshed-by-property automatically. FEA topology provides two options for the processing of non-design elements: Keep smooth narrow layer around and Split all quads. Keep smooth narrow layer around will retain an artificial layer of elements around the non-design space in the interpretation and Split all quads will split quad elements in the non-design space, if present, to generate a tetra connection between design and non-design regions. Finally, FEA topology preserves boundary conditions by inheriting them from the original model (<prefix>.fem). Those boundary conditions unattached to nodes/elements after geometry recovery are deleted to ensure reanalysis.

 file block density threshold 0.300 Keep smooth narrow layer around off Split all quads on
The same model is run, this time with Keep smooth narrow layer around on, and Split all quads off. This approach creates a layer of elements around the non-design region and pyramids around the quad elements, if quads exist, to connect to the design space tetrahedral elements.
Tetramesh will be applied on the iso-surface result if there is one close volume at least. The advantages of the tetramesh in FEA topology include:
• Tetramesh can be performed by property.
• The flexibility of controlling the number of tetramesh retries by perturbing the density threshold value, in cases where tetramesh sometimes fails.

## FEA Topography for Reanalysis

The FEA topography option in OSSmooth allows the results from an OptiStruct topography optimization to be interpreted as one, or two-level beads and recover boundary conditions upon geometry extraction.

An option for iso surface is also provided for combined use, which performs the same functionality as FEA topology, with FEA topography. The following figure shows the level of detail captured in a 1-level bead and 2-level bead case while preserving boundary conditions for quick reanalysis. FEA topography support is available for first and second order elements.
 Grid file brkt Threshold 0.300 Layers 1
 Grid file brkt Threshold 0.300 Layers 2