Topology Optimization Guidelines
Pre-Processing, Solution Settings, and Post- Processing
- Create the model geometry in Parasolid format (other formats are also supported).
- Import the Parasolid file in SimLab.
- Create the mesh with tetrahedrons or hexahedrons. A boundary layer mesh is not required for the design space, but it may be used in other regions.
- Create the flow setup with flow only, with or without turbulence modeling.
- Create the topology optimization setup as required.
- After setup the model can be run from optimization update.
- Post-processing can be done using either direct .log file read or through a .h3d file format.
General Pre-Processing Guidelines
- CAD preparation for the design space can be done using Inspire or another CAD tool.
- Simple and clean geometry is preferred. Complicated geometry can lead to large meshes and long run times.
- SimLab can be used to create simple geometries.
- The inlet and outlet regions are preferred to have non-design spaces or volumes. If only faces for inlet and outlet are exposed, it is preferred to extend them to obtain non-design regions. It is necessary to make sure that no back flow occurs in the outlet region.
- The design space is preferred to be at least two times larger than the intended connections between the inlet and the outlet regions.
Mesh Generation Guidelines
- The finite elements must be tetrahedral or hexahedral with linear interpolation.
- Boundary layer is not required for design space.
- At least minimum 6 or 8 nodes are recommended across the flow direction in the non-design space. For the design space the mesh resolution is preferable to be the same mesh size as the non-design space.
- For high Reynolds number denser mesh may be needed.
- It is good practice to evaluate the computed results to ensure the mesh resolution is adequate.
Solution Settings
- Auto Solution Strategy
- Max cases are recommended to be 1,000 and can be higher for hard to converge problems.
- Initial case time step should be at least 50 and may need to be increased to get better convergence from the initial conditions for the empty domain. During this cycle no topology optimization calculations are taking place.
- The default relaxation factor is set to 0.3. Other values may be used as appropriate based on the flow solution requirements.
- Boundary conditions
- Simple boundary and nodal boundary conditions for mass flow rate (volume flow rate) and velocity are supported.
- Topology optimization does not support the pressure inlet boundary condition.
- Turbulence related Settings
- Spalart-Allmaras is the only supported turbulence model.
- For low Reynolds with steady flow, turbulence model can be turned off.
- For moderate Reynolds numbers flows (unsteady flow or transition between laminar to Turbulent), the Spalart-Allmaras turbulence model is recommended.
- For high Reynolds number flows, the Spalart-Allmaras turbulence model is used.
The topology optimization is a steady state feature. If there is transient behavior during the simulation, the flow rate can be reduced to get a steady flow in an initial run. A second run can then be done, using the target flow rate, based on the results from the first run, where the design is used as initial condition. The nodal initial condition files may be created using the acuProj command. It is also preferred to use an updated darcy factor value for the second run, in case automatic darcy value was used in the simulation (set by topology_auto_darcy = on in the OPTIMIZATION command, see also below). The updated darcy factor values are written to the .log file.
Objectives and Constraints
- Topology optimization requires one main objective and optionally one or more constraints.
- For flow topology optimization the most common practice (the only option for objective in SimLab version 2022.3 and version 2023.1) is to minimize mechanical energy. This corresponds to minimizing the pressure drop for an incompressible fluid with inlet and outlet where mass flow rates are pre-defined.
- The additional option to minimize the occupied flow volume in the design domain can be included using objective_min_flow_volume = ON. The strength of this parameter can be controlled using objective_min_flow_volume_mult. The default value is 1, but the practical range for most problems is between 0.1 and 100. Typically, smaller values give smaller mechanical energy losses, while a larger number gives a smaller channel width.
- Instead of using the objective min flow option, design volume constraints can be used. This can be set using lower or upper bounds for the design volume fraction of the solid material. Thus, using a lower bound of 0.8 means that the solid material will occupy at least 80% of the design space.
- For problems with multiple outlets, it is possible to set mass flow constraints at the outlets. The target values can be set for each outlet and should total the inlet mass flow rate. The tolerance is generally set to 5-10% of the target value. This option may incur significant computation time (proportional to number of outlets). It may be best to make an initial run without mass balance and turn on the mass balance constraints in a second run using the solution from the first run as initial conditions. The two-stage approach has the additional advantage that the verification of the model setup is efficient.
- Automatic computation of the Darcy coefficient for the porosity model (representing solid material in the design domain) has been enabled as default.
- Initial Darcy can be larger (up to 1e6 to 1e8) for higher Reynolds number flows (beyond 10000 or higher) to speed up the convergence of the solution.
- Forchheimer coefficient is set to 0 for the design domain porosity model.
- Additional flow porosity is not recommended to be used (other than the porosity model for the design space).
- As part of the nodal output, the case output frequency can be adjusted as required. Currently, the default value is set to 20 in SimLab (case_output_frequency = 20 in the input file), but it can be changed under the optimization solver settings. Lowering the output frequency to below 20 can increase the usage of large disk space significantly. The parameter output_initial_case = ON specifies that the initial case should be output even if the case output frequency is greater than 1. Also make sure that num_saved_states = 0 to keep all results that are output. A value >0 can be used to limit the storage on the disk.
Post-Processing
- Direct read of AcuSolve .log file is available for post- processing within SimLab.
- Multiple types of outputs like h3d output, cgns and EnSight reader output can be used. These outputs are available from the acuTrans utility from the AcuSolve command line.
- Iso surface of level set at a value of 0 is recommended to get smoother output of the optimized shape.
- Iso surface of design volume at 0.5 can also be done to get the final optimized shape.
- The final optimized shape can be obtained using the deformed model under export results in stl format.
- Stl is imported into a new SimLab window to visualize the optimized design.
- Smoothing in SimLab is recommended if the surface appears uneven.
- Wrapping should be used only when necessary (when level set produces unclean geometry due to a coarse mesh).
- Use body fitted mesh (with boundary layers) when needed to obtain more accurate mechanical losses calculations compared to the values computed in the topology optimization solution.
- The response for mechanical losses (and other responses) may be used also
for the run with a body fitted mesh making it easy to verify the results.
The command is specified in the input file similar to the topology
optimization run:
RESPONSE_VARIABLE( "mechanical energy" ) { type = topology_variable topology_variable = mechanical_energy }
- AcuGetRsp can be used from the AcuSolve command line to get more detailed post-processing data for mechanical energy losses and other response output data. The first column gives the case identification number and the order of the remaining columns follows the order of the response commands in the AcuSolve input file.