<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html
  SYSTEM "about:legacy-compat">
<html xmlns:mml = "http://www.w3.org/1998/Math/MathML" lang = "en"><head><meta charset = "UTF-8"/><meta name = "copyright" content = "(C) Copyright 2020"/><meta name = "DC.rights.owner" content = "(C) Copyright 2020"/><meta name = "DC.type" content = "task"/><meta name = "description" content = "Depending on the used solver, the analysis can be performed in one or two solver runs."/><meta name = "DC.relation" scheme = "URI" content = "tso-c-example-topo-checkOptResult.htm#tso-c-example-topo-checkOptResult"/><meta name = "DC.format" content = "HTML5"/><meta name = "DC.identifier" content = "tso-t-example-topo-sensTopoCraneHookMiniVol"/><meta name = "DC.language" content = "en"/><link rel = "stylesheet" type = "text/css" href = "../DSDocUI_XML34.css"/><title>Minimizing the Volume of the Crane Hook Model</title>
<script type = "text/javascript" src = "../DSDocUI_Highlight34.js">
  	/* */
  	</script></head><body onLoad = "highlightSearchTerms();" id = "tso-t-example-topo-sensTopoCraneHookMiniVol">
<a name = "hj-top"> </a><table class = "table1" id = "table11"><tr><td><table class = "DocHeader"><tr><td class = "DocHeader1" colspan = "2"><h1>Minimizing the Volume of the Crane Hook Model </h1></td></tr><tr><td class = "DocHeader4" colspan = "2"/></tr><tr><td class = "DocHeader3"><table class = "DocHeaderIntro" id = "table12"><tr><td class = "Intro1Only"><p class = "shortdesc">Depending on the used solver, the analysis can be performed in one
or two solver runs. 
</p></td></tr></table></td><td class = "DocHeader2"><table class = "DocTopicsSeeAlso" id = "table13"><tr><td class = "TopicsTitle">See Also</td></tr><tr><td><a title = "To get an impression of the quality of the optimization, it is necessary to check the values of the constraints and the objective at the end of the optimization." href = "tso-c-example-topo-checkOptResult.htm#tso-c-example-topo-checkOptResult">About Checking the Quality of the Optimization Result</a></td></tr></table></td></tr></table>



<div class = "body taskbody">
<section><ol class = "ol steps"><li class = "li step stepexpand">
Depending on your solver, you have two options to specify the input file:
<ol type = "a" class = "ol substeps">
<li class = "li substep">
If the solver supports the combined analysis, define the following FEM_INPUT:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
FEM_INPUT
  ID_NAME = MY_INPUT_FILES
  FILE    = cranehook_stat_freq.inp
END_
</pre>
<p>The static <span class = "ph">load cases</span> are the
<span class = "ph">load cases</span> with
number 1 and 2. The frequency <span class = "ph">load case</span> is then number 3.</p>
</div>
</li>
<li class = "li substep">
If the solver does NOT support the combined analysis, the FEM_INPUT
command contains two entries for the FILE item:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
FEM_INPUT
  ID_NAME = MY_INPUT_FILES
  FILE    = cranehook_stat.ext
  FILE    = cranehook_freq.ext
END_
</pre>
<p>The referenced <span class = "ph">load case</span>
numbers of the second file are then shifted by 10.000. Therefore, the
modal analysis must be referenced with the <span class = "ph">load case</span> number
(boundary conditions set number) 10.001.</p>
</div>
</li>
</ol>
</li><li class = "li step stepexpand">
To use the volume in objective,
define a Design Response (DRESP) as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DRESP
  ID_NAME    = TOSCA_DRESP_1_VOLUME_TERM_1
  LIST       = NO_LIST
  DEF_TYPE   = SYSTEM
  EL_GROUP   = ALL_ELEMENTS
  TYPE       = VOLUME
  UPDATE     = EVER
  GROUP_OPER = Sum
END_
</pre>
</div>
</li><li class = "li step stepexpand">
Define the Objective Function (OBJ_FUNC) as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
OBJ_FUNC
  ID_NAME = OBJ_FUNC_1_OBJ_FUNC_ITEM_1
  TARGET  = MIN
  DRESP   = TOSCA_DRESP_1_VOLUME_TERM_1
END_
</pre>
</div>
</li><li class = "li step stepexpand">
Define a Design Response for the displacement in Y-direction for a given node for each <span class = "ph">load case</span>:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DRESP
  ID_NAME    = TOSCA_DRESP_2_DISPLACEMENT_CONSTRAINT_1
  LIST       = NO_LIST
  DEF_TYPE   = SYSTEM
  NODE       = 13298
  TYPE       = DISP_ABS
  GROUP_OPER = MAX
  LC_SET     = STATIC,1,
  CS_REF     = CS_0
END_

DRESP
  ID_NAME    = TOSCA_DRESP_3_DISPLACEMENT_CONSTRAINT_2
  IST        = NO_LIST
  DEF_TYPE   = SYSTEM
  NODE       = 13298
  TYPE       = DISP_ABS
  GROUP_OPER = MAX
  LC_SET     = STATIC,2,
  CS_REF     = CS_0
END_
</pre>
</div>
</li><li class = "li step stepexpand">
Define the displacement constraints as absolute constraint (CONSTRAINT):
<div class = "itemgroup stepresult">
<pre class = "codeblock">
CONSTRAINT
  ID_NAME   = DISPLACEMENT_CONSTRAINT_1
  DRESP     = TOSCA_DRESP_2_DISPLACEMENT_CONSTRAINT_1
  MAGNITUDE = ABS
  LE_VALUE  = 0.8
END_

CONSTRAINT
  ID_NAME   = DISPLACEMENT_CONSTRAINT_2
  DRESP     = TOSCA_DRESP_3_DISPLACEMENT_CONSTRAINT_2
  MAGNITUDE = ABS
  LE_VALUE  = 0.8
END_
</pre>
</div>
</li><li class = "li step stepexpand">
The geometric restriction of frozen areas and demolding can be defined as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DVCON_TOPO
  ID_NAME    = DVCON_TOPO_1_FROZEN_AREA_1
  EL_GROUP   = FROZEN
  CHECK_TYPE = FROZEN
END_

DVCON_TOPO
  ID_NAME           = DVCON_TOPO_2_DEMOLD_CONTROL_2
  EL_GROUP          = ALL_ELEMENTS
  CHECK_TYPE        = CAST
  PULL_DIR          = 0.,0.,1.
  CHECK_GROUP       = ALL_ELEMENTS
  MID_PLANE         = STAMP
  !MID_PLANE         = AUTO
  PULL_CS           = CS_0
  CREATE_PULL_GROUP = NO
END_
</pre>
</div>
</li><li class = "li step stepexpand">
In addition, you could define constraints for the first and second eigenfrequencies from
the third <span class = "ph">load case</span> to be above 250 and 500 Hz, respectively:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DRESP
  ID_NAME   = DRESP_FREQ_1
  TYPE      = DYN_FREQ
  DEF_TYPE  = SYSTEM
  LC_SET    = Modal,3,1
END_

DRESP
  ID_NAME   = DRESP_FREQ_2
  TYPE      = DYN_FREQ
  DEF_TYPE  = SYSTEM
  LC_SET    = Modal,3,2
END_

CONSTRAINT
  ID_NAME   = DRESP_FREQ_1_CON
  DRESP     = DRESP_FREQ_1
  MAGNITUDE = ABS
  GE_VALUE  = 250.0
END_

CONSTRAINT
  ID_NAME   = DRESP_FREQ_2_CON
  DRESP     = DRESP_FREQ_2
  MAGNITUDE = ABS
  GE_VALUE  = 500.0
END_
</pre>
</div>
</li><li class = "li step stepexpand">
Reference the Objective Function, Design Variables and constraints in the OPTIMIZE command:
<div class = "itemgroup stepresult">
 <pre class = "codeblock">
OPTIMIZE
  ID_NAME    = OPTIMIZE_1_TOPOLOGY_OPTIMIZATION_SENSITIVITY
  DV         = DESIGN_AREA
  OBJ_FUNC   = OBJ_FUNC_1_OBJ_FUNC_ITEM_1
  DVCON      = DVCON_TOPO_1_FROZEN_AREA_1
  DVCON      = DVCON_TOPO_2_DEMOLD_CONTROL_2
  CONSTRAINT = DISPLACEMENT_CONSTRAINT_1
  CONSTRAINT = DISPLACEMENT_CONSTRAINT_2
  !CONSTRAINT = DRESP_FREQ_1_CON
  !CONSTRAINT = DRESP_FREQ_2_CON
END
</pre>
</div>
</li></ol></section>
<p class = "result">The optimization result without the frequency constraints with stamping midplane looks as
follows:
<br/><img class = "image" src = "../TsoExampleImages/sensTopoCraneHookSemResult.png" width = "300"/><br/>
<br/><img class = "image" src = "../TsoExampleImages/sensTopoCraneHookSemResultSmooth.png" width = "300"/><br/>
Adding the frequency constraints and changing to an auto midplane, you obtain:
<br/><img class = "image" src = "../TsoExampleImages/sensTopoCraneHookSemFreq.png" width = "300"/><br/>
<br/><img class = "image" src = "../TsoExampleImages/sensTopoCraneHookSemFreqSmooth.png" width = "300"/><br/>
</p>
</div>

<div class = "related-links"/>
</td></tr></table><script type = "text/javascript" src = "../DSDocUI_Bottom34.js">/* */</script></body>
</html>
