<?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 = "This example shows the usage of the MIMP material interpolation."/><meta name = "DC.relation" scheme = "URI" content = "tso-c-example-topo-checkOptResult.htm#tso-c-example-topo-checkOptResult"/><meta name = "DC.relation" scheme = "URI" content = "../TsoUserMap/tso-c-user-TopOpt-Sett-Sensi-MatInt.htm#tso-c-user-TopOpt-Sett-Sensi-MatInt"/><meta name = "DC.format" content = "HTML5"/><meta name = "DC.identifier" content = "tso-t-example-topo-sens-MimpOptimize"/><meta name = "DC.language" content = "en"/><link rel = "stylesheet" type = "text/css" href = "../DSDocUI_XML34.css"/><title>Minimizing the Mass of the Upright Example (MIMP)</title>
<script type = "text/javascript" src = "../DSDocUI_Highlight34.js">
  	/* */
  	</script></head><body onLoad = "highlightSearchTerms();" id = "tso-t-example-topo-sens-MimpOptimize">
<a name = "hj-top"> </a><table class = "table1" id = "table11"><tr><td><table class = "DocHeader"><tr><td class = "DocHeader1" colspan = "2"><h1>Minimizing the Mass of the Upright Example (MIMP)</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">This example shows the usage of the MIMP material interpolation.
</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><table class = "DocTopicsInOtherGuides" id = "table14"><tr><td height = "8px"/></tr><tr><td class = "TopicsTitleNormal">In Other Guides</td></tr><tr><td><a title = "This section introduces the different interpolation schemes available in Tosca Structure." href = "../TsoUserMap/tso-c-user-TopOpt-Sett-Sensi-MatInt.htm#tso-c-user-TopOpt-Sett-Sensi-MatInt">Material Interpolation</a></td></tr></table></td></tr></table>



<div class = "body taskbody">
<section><ol class = "ol steps"><li class = "li step stepexpand">
Define input data and Design Variables:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
FEM_INPUT
  ID_NAME  = INPUT_FILE
  FILE     = upright_mimp.inp
END_

DV_TOPO
  ID_NAME  = globalDesignArea
  EL_GROUP = "Design_Space1"
END_
</pre>
</div>
</li><li class = "li step stepexpand">
Define additional groups by combining (LIST_GROUP) and subtracting (LIST_SUBTRACT_GROUP) existing groups:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
GROUP_DEF
  ID_NAME = globalFrozenRegion
  TYPE    = ELEM
  FORMAT  = LIST_GROUP
  LIST_BEGIN
"Functional Region1",
"Functional Region2",
"Functional Region3",
"Functional Region4",
"Functional Region5",
"Functional Region7",
"Functional Region8"
END_

GROUP_DEF
  ID_NAME = designAreaNonFrozen
  TYPE    = ELEM
  FORMAT  = LIST_SUBTRACT_GROUP
  LIST_BEGIN
"Design_Space1", globalFrozenRegion
END_
</pre>
</div>
</li><li class = "li step stepexpand">
To use mass in the objective, define a Design Response (DRESP) as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DRESP
  ID_NAME    = TASK_MASS
  DEF_TYPE   = SYSTEM
  TYPE       = WEIGHT
  EL_GROUP   = "Design_Space1"
  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 = MY_OBJECTIVE
  DRESP   = TASK_MASS
  TARGET  = MIN
END_
</pre>
</div>
</li><li class = "li step stepexpand">
To define the stress, displacement and frequency constraints, do the following:
<ol type = "a" class = "ol substeps">

<li class = "li substep">
Define the corresponding design responses (Here, one DRESP each for stress and displacement is shown instead of the total 4):
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DRESP
  ID_NAME  = StressConstraint1_LC1
  DEF_TYPE = SYSTEM
  TYPE     = SIG_TOPO_MISES
  EL_GROUP = designAreaNonFrozen
  LC_SET   = ALL,1,ALL
END_

DRESP
  ID_NAME  = DisplacementConstraint1_LC1
  DEF_TYPE = SYSTEM
  TYPE     = DISP_ABS
  ND_GROUP = "Displacement Constraint6"
  LC_SET   = ALL,1,ALL
END_

DRESP
  ID_NAME  = eig1
  DEF_TYPE = SYSTEM
  TYPE     = DYN_FREQ
  UPDATE   = EVER
  LC_SET   = MODAL,3,1
END_
</pre>
</div>
</li>
</ol>
</li><li class = "li step stepexpand">
Define the respective stress, displacement and frequency constraints (CONSTRAINT)
(Here, one CONSTRAINT each for stress and displacement is shown instead of the total 4):
<div class = "itemgroup stepresult">
<pre class = "codeblock">
CONSTRAINT
  ID_NAME   = CONSTRAINT_StressConstraint1_LC1
  DRESP     = StressConstraint1_LC1
  MAGNITUDE = ABS
  LE_VALUE  = 250000000.0
END_

CONSTRAINT
  ID_NAME   = CONSTRAINT_DisplacementConstraint1_LC1_MAX
  DRESP     = DisplacementConstraint1_LC1
  MAGNITUDE = ABS
  LE_VALUE  = 0.00012
END_

CONSTRAINT
  ID_NAME   = FreqCon
  DRESP     = eig1
  MAGNITUDE = ABS
  GE_VALUE  = 100.
END_
</pre>
</div>
</li><li class = "li step stepexpand">
Define frozen regions (Here, one exemplary DVCON is shown):
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DVCON_TOPO
  ID_NAME    = FunctionalRegion1
  CHECK_TYPE = FROZEN
  EL_GROUP   = globalFrozenRegion
END_
</pre>
</div>
</li><li class = "li step stepexpand">
Reference the Objective Function, Design Variables and Constraints as well as DVCONs in the OPTIMIZE command:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
OPTIMIZE
  ID_NAME    = OptimizationTask
  STRATEGY   = TOPO_SENSITIVITY
  DV         = globalDesignArea
  OBJ_FUNC   = OBJECTIVE_MIN_MASS
  CONSTRAINT = CONSTRAINT_StressConstraint1_LC1
  CONSTRAINT = CONSTRAINT_StressConstraint1_LC2
  CONSTRAINT = CONSTRAINT_DisplacementConstraint1_LC1_MAX
  CONSTRAINT = CONSTRAINT_DisplacementConstraint1_LC2_MAX
  CONSTRAINT = FreqCon
  DVCON      = FunctionalRegion
END_
</pre>
</div>
</li><li class = "li step stepexpand">
Deactivate the function to automatically freeze specific regions and set the minimum initial density to 0.1.
In addition set the material interpolation to MIMP:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
OPT_PARAM
  ID_NAME             = OptimizationTask_PARAMS
  OPTIMIZE            = OptimizationTask
  AUTO_FROZEN         = OFF
  MIN_INITIAL_DENSITY = 0.1
  MAT_INTERPOLATION   = MIMP
END_
</pre>
</div>
</li></ol></section>
<p class = "result">
The optimization result looks as follows: <p>The result using the default interpolation can
be seen below. The structure does not look converged and too much intermediate density is
present. Also, the smoothed result is not valid:</p>
<br/><img class = "image" src = "../TsoExampleImages/sensTopoSimpResult.png" width = "454"/><br/>
<p>Valid result using the MIMP interpolation. A layer of low density elements is present, but
as in the smoothed image, the structure is well connected and converged:</p>
<br/><img class = "image" src = "../TsoExampleImages/sensTopoMimpResult.png" width = "454"/><br/>
</p>
</div>

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