Maximizing the Stiffness of the Rib Oil Pan Example

This example shows the usage of the rib pattern restriction with an oil pan model.

See Also
About Checking the Quality of the Optimization Result
  1. Define input data and Design Variables:
    FEM_INPUT
      ID_NAME  = INPUT_FILE
      FILE     = topo_ribs_oilpan.inp
    END_
    
    DV_TOPO
      ID_NAME  = DESIGN_AREA
      EL_GROUP = ALL_ELEMENTS
    END_
    
  2. Define additional groups for frozen elements:
    GROUP_DEF
      ID_NAME = FROZEN
      TYPE    = ELEM
      FORMAT  = LIST
      LIST_BEGIN
    87593, ...
    END_
    
    GROUP_DEF
      ID_NAME = NON_FROZEN
      TYPE    = ELEM
      FORMAT  = LIST_SUBTRACT_GROUP
      LIST_BEGIN
    ALL_ELEMENTS, frozen
    END_
    
  3. To use the compliance in the objective, define a Design Response (DRESP) as follows:
    DRESP
      ID_NAME       = COMPLIANCE_TERM_1
      DEF_TYPE      = SYSTEM
      TYPE          = STRAIN_ENERGY
      EL_GROUP      = ALL_ELEMENTS
      UPDATE        = EVER
      GROUP_OPER    = SUM
    END_
    
  4. Define the Objective Function (OBJ_FUNC) as follows:
    OBJ_FUNC
      ID_NAME       = COMPLIANCE_OBJ
      DRESP         = COMPLIANCE_TERM_1
      TARGET        = MIN
    END_
    
  5. Define the rib pattern and frozen DVCONs:
    DVCON_TOPO
      ID_NAME       = FROZEN_AREA
      CHECK_TYPE    = FROZEN
      EL_GROUP      = FROZEN
    END_
    
    DVCON_TOPO
      ID_NAME       = DVCON_RIBS
      CHECK_TYPE    = RIB_DESIGN
      EL_GROUP      = NON_FROZEN
      CHECK_GROUP   = NON_FROZEN
      RIB_THICKNESS = 4
      RIB_DISTANCE  = 5
      RIB_DIRECTION = 0., 0., 1.
    END_
    
  6. Reference the Objective Function, Design Variables and Constraint as well as DVCON in the OPTIMIZE command:
    OPTIMIZE
      ID_NAME       = OPTIMIZE_1
      DV            = DESIGN_AREA
      OBJ_FUNC      = COMPLIANCE_OBJ
      DVCON         = FROZEN_AREA
      DVCON         = DVCON_RIBS
      STRATEGY      = TOPO_SENSITIVITY
    END_
    
  7. Set the maximum number of iterations to 100
    STOP
      ID_NAME  = GLOBAL_STOP_CONDITION
      ITER_MAX = 100
    END_
    

The optimization result looks as follows: