LevelOpt

LevelOpt is a level set structural topology optimization simulation (compliance minimization) which requires the topopt.exe to run and supports different CLI arguments. The scenario JSON file has a similar format to standard LinearElastic scenario JSON files with additional scenario "shape_exploration_data": {} information. A LevelOpt optimization performs a linear elasticity simulation and uses "Type": "LinearElasticity".

$ topopt --help

will produce output that looks like:

$ topopt   --help
A command line interface for Intact.Simulation topoology optimizer.
Usage:
  topopt [OPTION...]

  -h, --help                Print program usage
      --version             Print the software version
      --sample-sensitivity  Sample the sensitivity on the provided sampling
                            points
  -s, --scenario arg        Scenario json file

Materials

Supports all the same materials as linear elasticity.

Metadata

Supports all the same metadata as linear elasticity.

Because LevelOpt always first performs a linear elasticity simulation, the solver_override and integrator_override metadata provides control of the solver for the linear elasticity simulation.

Boundary Conditions

LevelOpt scenarios support the same boundary conditions as linear elasticity. Note additional load_case_id can be used for setting up multiple load cases

  "boundary_conditions": [
    {
      "boundary": "fixed1.stl",
      "type": "fixed",
      "load_case_id": 0
    }
  ]

Shape Exploration Data

  "shape_exploration_data": {
    "enable_fixed_interfaces": true,
    "opt_max_iter": 50,
    "vol_frac_cons": 0.2,
    "level_set_cell_size": 1.0,
    "move_limit": 1.0,
    "component_id": 0,
    "smooth_iter": 1,
    "fix_thickness": 4.0,
    "num_load_cases": 13,
    "starting_design_file": "" //"starting_design_file": "starting_design.ply"
  }

vol_frac_cons

Sets the target volume of the final design as a fraction of the initial volume. (volume fraction constraint)

level_set_cell_size

Determines the size of the level set grid cells as a fraction of the FEA grid cell size. (level set cell size)

move_limit

Controls the extent of changes per optimization step, as a factor of the voxelSize.

component_id

Specifies which component id in the "components": [] list is to be used as the design domain for assembly optimization.

opt_max_iter

Sets the maximum number of iterations for the optimization process. Each iteration refines the design by updating the topology based on the objective function and constraints. (optimization max iterations)

fix_thickness

Specifies the region around boundary conditions that remains unchanged as a factor of level set grid cell size.

smooth_iter

Defines the frequency the geometry is smoothed during the optimization process as a number of iterations.

enable_fixed_interfaces

Allows specifying if the interface between the design domain (optimized) and non-design domain should be fully preserved. A true input preserves the interface and false allows material to be removed at the interface.

num_load_cases

An input required for an optimization scenario with multiple load_case_id. This enables individual load cases to be considered separately during optimization instead of single net load.

starting_design_file

Optional geometry file input to start optimizing from, used to continue from final output of a previous optimization step for example.