Processing Results of Topology Optimization

Tosca Structure.smooth allows processing the design suggestion obtained by topology optimization in Tosca Structure. As the input, it takes the ONF model file and the ONF optimization result file, and produces the isosurface saved in one or more formats, suitable as input in CAD systems (STL, IGES and other) or as means for visualization (VTFX).

The following figures illustrate the process:



Original model (MODEL_fem.onf)

Tosca Structure calculates the optimal material distribution, represented by the block-like structure. It contains solid or shell finite elements, and therefore might be unsuitable for CAD systems; in addition, it might contain many elements in the inside that are not important since the shape is defined by the surface of the solid model only. The surface itself is rough, especially in case of a tetrahedral mesh, and therefore the smoothing is required.



Topology optimization result generated by Tosca Structure.report (TP_015.onf)

The model file and the optimization result file containing the optimized material density are loaded by Tosca Structure.smooth. Using these data, the isosurface separating the elements with zero and nonzero density is found.



Isosurface generated by Tosca Structure.smooth (no smoothing, no reduction)

The surface smoothing is done by displacing the nodes of the surface.



Isosurface after smoothing (no reduction)



Isosurface after smoothing and data reduction

Finally, the data reduction might be performed; it is turned off by default.

Note:

For a shell element model, the same actions are performed, with the difference that the smoothing is applied to the border nodes only. In both cases, the smoothing can be turned off, though it is not recommended.

To calculate a single isosurface, the setting


TASK = iso

should be used along with


DATABASE     = "opt_res_database"
DESIGN_CYCLE = <value>

Important:

If the DESIGN_CYCLE is omitted, the default value of LAST is used, that is the results from the last available design cycle are chosen. All output files are created in the same directory, and their names are constructed as some common part plus the corresponding suffix (if required) and extension. The parameter OUTPUT_FILE defines both the directory and this common part.

Example

Using


OUTPUT_FILE = c:\MyDirectory\MyOutput

with the output in VTFX and IGES format for slices using cubic splines results in the files


c:\MyDirectory\MyOutput.vtfx
c:\MyDirectory\MyOutput_slices.igs.

OUTPUT_FILE is set automatically to <jobname>/TOSCA_POST/<SMOOTH item name>, where <SMOOTH item name> is the name of the item in the Task Manager (SMOOTH_INSTANCE by default). If this parameter is omitted in the parameter file, it is set to <directory of ONF model>/<ID_NAME>.

There is also the possibility to visualize the optimization process by generating the isosurfaces for all optimization iterations and saving them in an animation sequence in a VTFX file. This is done if the parameter file contains the following lines:


TASK     = all_iterations
DATABASE = "opt_res_database"

In this case, "Task" field in Tosca Structure.gui (Tosca Structure.smooth screen) should be set to "Create Isosurface from all steps of the ONF files".

Both model data and optimization results are read from the results-database, which per default has the name "opt_res_database". The iteration numbers <NNN> run from 0 to the first number such that the result file for the following iteration does not exist. The resulting VTFX file gets the suffix _all; all other output files are generated for each iteration, each time with the suffix _<NNN>, where <NNN> is the current iteration number.

Note:

Note that the database name should be entered manually in the Tosca Structure.smooth screen of Tosca Structure.gui. In the Tosca Structure.pre screen of Tosca Structure.gui, it suffices to set the Task field to all_iterations.

The isovalues for the isosurfaces generated at each iteration are either constant or linearly increasing. In the first case, the parameter ISO_SEQUENCE should be set to const (this is its default value); the isovalue then is specified by the ISO_VALUE parameter. In the second case, ISO_SEQUENCE = incr should hold, and the isovalue for iteration i is iso_value * (i+1)/ (n+1), where iso_value is the value of the ISO_VALUE parameter and n is the number of the last iteration.