Optimizing the Control Arm Model

In this example, you are going to follow the workflow for a standard controller-based topology optimization task:

  1. Define input data and design variables.
  2. Define the Constraint of the optimization task (DRESP, CONSTRAINT).
  3. Define the Objective Function (DRESP, OBJ_FUNC).
  4. Define the Demold Restriction (DVCON_TOPO)
  5. Define the OPTIMIZE command.
  6. Set up a SMOOTH command.

  1. Define input data and Design Variables.
    FEM_INPUT
      ID_NAME  = MY_INPUT_FILES
      FILE     = control_arm.inp
    END_
    
    DV_TOPO
      ID_NAME  = DESIGN_AREA
      EL_GROUP = DESIGN_ELEMENTS
    END_
    
  2. Create a constraint for the volume.
    1. Define a Design Response (DRESP) with the volume:
      DRESP
        ID_NAME    = TOSCA_DRESP_2_VOLUME_CONSTRAINT_1
        LIST       = LIST
        DEF_TYPE   = SYSTEM
        EL_GROUP   = ALL_ELEMENTS
        TYPE       = VOLUME
        UPDATE     = EVER
        GROUP_OPER = Sum
      END_
      
    2. Reference the Design Response in a constraint (CONSTRAINT) and constrain it to 70% of the initial volume:
      CONSTRAINT
        ID_NAME   = CONSTRAINT_1_VOLUME_CONSTRAINT_1
        DRESP     = TOSCA_DRESP_2_VOLUME_CONSTRAINT_1
        MAGNITUDE = REL
        EQ_VALUE  = 0.7
      END_
      
  3. To define the Objective Function (OBJ_FUNC) for the compliance (STRAIN_ENERGY), do the following:
    1. Create a Design Response (DRESP):
      DRESP
        ID_NAME    = TOSCA_DRESP_1_COMPLIANCE_TERM_1
        LIST       = LIST
        DEF_TYPE   = SYSTEM
        EL_GROUP   = ALL_ELEMENTS
        TYPE       = STRAIN_ENERGY
        UPDATE     = EVER
        GROUP_OPER = Sum
      END_
      
    2. Reference the Design Response in the Objective Function (OBJ_FUNC) and minimize it:
      OBJ_FUNC
        ID_NAME = OBJ_FUNC_1_OBJ_FUNC_ITEM_1
        TARGET  = MIN
        DRESP   = TOSCA_DRESP_1_COMPLIANCE_TERM_1
      END_
      
    3. Define the DVCON_TOPO for the demold restriction.
      DVCON_TOPO
        ID_NAME           = DVCON_TOPO_1_DEMOLD_CONTROL_1
        EL_GROUP          = DESIGN_ELEMENTS
        CHECK_TYPE        = CAST
        PULL_DIR          = 0.,0.,1.
        CHECK_GROUP       = ALL_ELEMENTS
        MID_PLANE         = NONE
        PULL_CS           = CS_0
        CREATE_PULL_GROUP = NO
      END_
      
  4. Reference the Design Variables, Objective Function and Constraints as well as DVCON in the OPTIMIZE command:
    OPTIMIZE
      ID_NAME    = OPTIMIZE_1_TOPOLOGY_OPTIMIZATION_SENSITIVITY
      DV         = DESIGN_AREA
      OBJ_FUNC   = OBJ_FUNC_1_OBJ_FUNC_ITEM_1
      DVCON      = DVCON_TOPO_1_DEMOLD_CONTROL_1
      CONSTRAINT = CONSTRAINT_1_VOLUME_CONSTRAINT_1
      STRATEGY   = TOPO_CONTROLLER
    END_
    
  5. Define the smooth command.
    SMOOTH
      ID_NAME                 = ISO_SMOOTHING_0_3
      TASK                    = iso
      ISO_VALUE               = 0.3
      SELF_INTERSECTION_CHECK = runtime
      SMOOTH_CYCLES           = 10
      REDUCTION_RATE          = 60
      REDUCTION_ANGEL         = 5.0
      FORMAT                  = vtf
      FORMAT                  = stl
      FORMAT                  = onf
    END_
    

The optimization result looks as follows: