Optimizing the Shaft Model

This example shows the usage of the SURF_TURN manufacturing constraint.

  1. Define input data, additional groups, and design variables.
    FEM_INPUT
      ID_NAME        = MY_INPUT_FILES
      FILE           = shaft_surfturn_sens.inp
    END_
    
    include, shaft_surfturn_sens.inc
    
    GROUP_DEF
      ID_NAME        = NODES_FOR_DISP
      TYPE           = NODE
      FORMAT         = LIST
      LIST_BEGIN
      13, 440
    END_
    
    DV_SHAPE
      ID_NAME        = MY_DV_SHAPE
      ND_GROUP       = design_nodes
    END_
    
  2. Create geometrical constraints.
    1. Rotational Symmetry (SURF_TURN):
      LINK_SHAPE
        ID_NAME        = LS_TURN
        CLIENT         = SURF_TURN
        MAIN         = AUTO
        CLIENT_DIR     = 0, 1, 0
        CS             = CS_0
      END_
      
      DVCON_SHAPE
        ID_NAME        = DVCON_SHAPE_SURF_TURN
        CHECK_BC       = NO
        ND_GROUP       = design_nodes
        CHECK_LINK     = LS_TURN
      END_
      
    2. Node fixations:
      CS_DEF
        ID_NAME        = MY_CS
        DEF_TYPE       = LOCAL
        CS_TYPE        = CYLINDRICAL
        CS_REF         = CS_0
        ORIGIN_123     = 0, 0, 0
        ROTATION_321   = 0, 0, 270
      END_
      
      DVCON_SHAPE
        ID_NAME        = DVCON_SHAPE_FIXED
        CHECK_BC       = NO
        ND_GROUP       = nodes_fixed
        CHECK_DOF      = MY_CS, FIX , FREE, FREE
      END_
      
    3. Shrink control:
      DVCON_SHAPE
        ID_NAME        = SHRINK_CTRL
        CHECK_SHRINK   = 3.
        ND_GROUP       = design_nodes
      END_
      
  3. Create a constraint for the volume.
    1. Define a Design Response with the volume (DRESP):
      DRESP
       ID_NAME    = DRESP_VOLUME
       LIST       = NO_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 100%.
      CONSTRAINT
       ID_NAME   = VOLUME_CONSTRAINT
       DRESP     = DRESP_VOLUME
       MAGNITUDE = REL
       LE_VALUE  = 1.0
      END_
      
  4. To define the Objective Function (OBJ_FUNC) for the plastic equivalent magnitude (PEMAG) in the second load case, do the following:
    1. Create a Design Response (DRESP).
      DRESP
       ID_NAME  = DRESP_PEMAG
       DEF_TYPE = SYSTEM
       TYPE     = PEMAG
       EL_GROUP = ALL_ELEMENTS
      END_
      
    2. Define the objective function.
      OBJ_FUNC
       ID_NAME = OBJ_FUNCTION
       TARGET  = MIN
       DRESP   = DRESP_PEMAG
      END_
      
  5. Design responses and optimization functions
    DRESP
      ID_NAME    = VOLUME
      DEF_TYPE   = SYSTEM
      TYPE       = VOLUME
      EL_GROUP   = ALL_ELEMENTS
    END_
    
    DRESP
      ID_NAME    = DISPLACEMENT_X
      DEF_TYPE   = SYSTEM
      TYPE       = DISP_X_ABS
      ND_GROUP   = NODES_FOR_DISP
      GROUP_OPER = Max
      CS_REF     = CS_0
    END_
    
    DRESP
      ID_NAME    = DISPLACEMENT_Z
      DEF_TYPE   = SYSTEM
      TYPE       = DISP_Z_ABS
      ND_GROUP   = NODES_FOR_DISP
      GROUP_OPER = Max
      CS_REF     = CS_0
    END_
    
    OBJ_FUNC
      ID_NAME    = MY_OBJ_FUNC
      TARGET     = MINMAX
      DRESP      = DISPLACEMENT_X, ,
      DRESP      = DISPLACEMENT_Z, ,
    END_
    
    CONSTRAINT
      ID_NAME    = VOLUME_CONSTRAINT
      MAGNITUDE  = REL
      DRESP      = VOLUME
      LE_VALUE   = 1.0
    END_
    
  6. Mesh regularization
    MESH_SMOOTH
      ID_NAME             = MY_MESH_SMOOTH
      CORRECT_ELEMENTS    = YES
      FREE_SF             = FREE
      MS_LAYER            = design_nodes, 4
      FREEZE_DESIGN_NODES = YES
    END_
    
  7. Reference the Design Variables, Objective Function, and Constraints as well as DVCONs in the OPTIMIZE command.
    OPTIMIZE
      ID_NAME        = MY_OPTIMIZATION_TASK
      OBJ_FUNC       = MY_OBJ_FUNC
      DV             = MY_DV_SHAPE
      CONSTRAINT     = VOLUME_CONSTRAINT
      STRATEGY       = SHAPE_SENSITIVITY
      DVCON          = DVCON_SHAPE_SURF_TURN
      DVCON          = DVCON_SHAPE_FIXED
      DVCON          = SHRINK_CTRL
      MESH_SMOOTH    = MY_MESH_SMOOTH
    END_
    
  8. Set stop condition.
    STOP
      ID_NAME        = MY_STOP
      ITER_MAX       = 150
    END_
    

The optimization result looks as follows: