<?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 = "concept"/><meta name = "abstract" content = "Constraints are fundamental parts of the definition for an optimization task. The purpose of having constraints is to ensure that the optimized design is feasible."/><meta name = "description" content = "Constraints are fundamental parts of the definition for an optimization task. The purpose of having constraints is to ensure that the optimized design is feasible."/><meta name = "DC.relation" scheme = "URI" content = "../TsoCmdMap/tso-r-cmd-constraint.htm#tso-r-cmd-constraint"/><meta name = "DC.relation" scheme = "URI" content = "tso-m-usr-terms-constraint-sb.htm#tso-m-usr-terms-constraint-sb"/><meta name = "DC.relation" scheme = "URI" content = "tso-m-usr-terms-dresps-sb.htm#tso-m-usr-terms-dresps-sb"/><meta name = "DC.format" content = "HTML5"/><meta name = "DC.identifier" content = "tso-c-user-TopOpt-Con"/><meta name = "DC.language" content = "en"/><link rel = "stylesheet" type = "text/css" href = "../DSDocUI_XML34.css"/><title>Constraints</title>
<script type = "text/javascript" src = "../DSDocUI_Highlight34.js">
  	/* */
  	</script></head><body onLoad = "highlightSearchTerms();" id = "tso-c-user-TopOpt-Con">
<a name = "hj-top"> </a><table class = "table1" id = "table11"><tr><td><table class = "DocHeader"><tr><td class = "DocHeader1" colspan = "2"><h1>Constraints</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 = "header"><p class = "abstract">
<span class = "shortdesc">Constraints are fundamental parts of the definition for an
optimization task. The purpose of having constraints is
to ensure that the optimized design is feasible. </span>

</p>
<p>This page discusses: </p><ul><li><a href = "#tso-c-user-TopOpt-Con__tso-c-user-TopOpt-Con-ovw" id = "toc_rg" title = "">Overview</a></li><li><a href = "#tso-c-user-TopOpt-Con__tso-c-user-TopOpt-Con-MulMatCon" id = "toc_rg" title = "">Multiple Material Constraints and Constitutive Laws</a></li></ul>
</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 = "Normally, optimization tasks have some restrictions. These restrictions limit the values of the design responses or linear combinations of the design responses. If the constraint is not fulfilled the optimization result is not feasible." href = "tso-m-usr-terms-constraint-sb.htm#tso-m-usr-terms-constraint-sb">Constraints</a></td></tr><tr><td><a title = "Most design responses are only available for certain analysis types. Others are independent of the analysis type because they are directly linked to the geometry of the FE-model. Each design response represents one scalar value which can be extracted from the model information (like the volume) or from the FE-results." href = "tso-m-usr-terms-dresps-sb.htm#tso-m-usr-terms-dresps-sb">Design Responses</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 = "Definition of an equality or inequality (less or equal/ greater or equal) constraint. The constraint is defined with respect to a design response." href = "../TsoCmdMap/tso-r-cmd-constraint.htm#tso-r-cmd-constraint">CONSTRAINT</a></td></tr></table></td></tr></table>




<div class = "body conbody">

<div class = "section" id = "tso-c-user-TopOpt-Con__tso-c-user-TopOpt-Con-ovw"><h2 class = "title sectiontitle">Overview</h2>
 
The following table gives an overview of all supported design responses as a constraint in topology optimization:
<table class = "table" id = "tso-c-user-TopOpt-Con__table_topo_dresps_con"><caption/><colgroup><col/><col/></colgroup><tbody class = "tbody">
<tr class = "row">
<td class = "entry"><span class = "ph uicontrol">Static analysis</span></td>
<td class = "entry"><span class = "ph uicontrol">Description</span></td>
</tr>
<tr class = "row">
<td class = "entry"><p>CENTER_GRAVITY_X</p>
                      <p>CENTER_GRAVITY_Y</p>
                      <p>CENTER_GRAVITY_Z</p></td>
<td class = "entry"><p>Center of gravity design responses</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>DENSITY_MEASURE</p></td>
<td class = "entry"><p>Density measure design response</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>DISP_ABS</p>
                      <p>DISP_X</p>
                      <p>DISP_Y</p>
                      <p>DISP_Z</p>
                      <p>DISP_X_ABS</p>
                      <p>DISP_Y_ABS</p>
                      <p>DISP_Z_ABS</p></td>
<td class = "entry"><p>Displacement design responses</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>ENERGY_STIFF_MEASURE</p></td>
<td class = "entry"><p>Energy Stiffness Measure design response</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>INERTIA_XX</p>
                      <p>INERTIA_XY</p>
                      <p>INERTIA_XZ</p>
                      <p>INERTIA_YY</p>
                      <p>INERTIA_YZ</p>
                      <p>INERTIA_ZZ</p></td>
<td class = "entry"><p>Moment of inertia design responses</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>INTERNAL_FORCE_ABS</p>
                      <p>INTERNAL_FORCE_X</p>
                      <p>INTERNAL_FORCE_Y</p>
                      <p>INTERNAL_FORCE_Z</p>
                      <p>INTERNAL_FORCE_X_ABS</p>
                      <p>INTERNAL_FORCE_Y_ABS</p>
                      <p>INTERNAL_FORCE_Z_ABS</p></td>
<td class = "entry"><p>Internal force design responses</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>INTERNAL_MOMENT_ABS</p>
                      <p>INTERNAL_MOMENT_X</p>
                      <p>INTERNAL_MOMENT_Y</p>
                      <p>INTERNAL_MOMENT_Z</p>
                      <p>INTERNAL_MOMENT_X_ABS</p>
                      <p>INTERNAL_MOMENT_Y_ABS</p>
                      <p>INTERNAL_MOMENT_Z_ABS</p></td>
<td class = "entry"><p>Internal moment design responses</p></td>
</tr>

<tr class = "row">
<td class = "entry"><p>REACTION_FORCE_ABS</p>
                      <p>REACTION_FORCE_X</p>
                      <p>REACTION_FORCE_Y</p>
                      <p>REACTION_FORCE_Z</p>
                      <p>REACTION_FORCE_X_ABS</p>
                      <p>REACTION_FORCE_Y_ABS</p>
                      <p>REACTION_FORCE_Z_ABS</p></td>
<td class = "entry"><p>Reaction force design responses</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>REACTION_MOMENT_ABS</p>
                      <p>REACTION_MOMENT_X</p>
                      <p>REACTION_MOMENT_Y</p>
                      <p>REACTION_MOMENT_Z</p>
                      <p>REACTION_MOMENT_X_ABS</p>
                      <p>REACTION_MOMENT_Y_ABS</p>
                      <p>REACTION_MOMENT_Z_ABS</p></td>
<td class = "entry"><p>Reaction moment design responses</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>ROT_ABS</p>
                      <p>ROT_X</p>
                      <p>ROT_Y</p>
                      <p>ROT_Z</p>
                      <p>ROT_X_ABS</p>
                      <p>ROT_Y_ABS</p>
                      <p>ROT_Z_ABS</p></td>
<td class = "entry"><p>Rotation design responses</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>SIG_1</p></td>
<td class = "entry"><p>Maximum principal stress.</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>SIG_3</p></td>
<td class = "entry"><p>Minimum principal stress.</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>SIG_SENS_MISES</p></td>
<td class = "entry"><p>Von Mises Stress design responses</p>
                      <p><code class = "ph codeph">SIG_SENS_MISES</code> is used 
                         for sensitivity calculation.</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>SIG_SIGNED_MISES</p></td>
<td class = "entry"><p>Signed von Mises stress failure criteria.</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>SIG_GLINKA_EEQ</p>
	                  <p>SIG_GLINKA_PEEQ</p>
	                  <p>SIG_GLINKA_SEQ</p>
	                  <p>SIG_NEUBER_EEQ</p>
	                  <p>SIG_NEUBER_PEEQ</p>
	                  <p>SIG_NEUBER_SEQ</p></td>
<td class = "entry"><p>Glinka and Neuber formulations for equivalent strain (_EEQ), stress (_SEQ) and plastic strain (_PEEQ) using the plastic correction factor, respectively**.</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>STRAIN_ENERGY</p></td>
<td class = "entry"><p>Strain energy design response*</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>WEIGHT</p></td>
<td class = "entry"><p>Weight design response</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>VOLUME</p></td>
<td class = "entry"><p>Volume design response</p></td>
</tr>
<tr class = "row">
<td class = "entry"><span class = "ph uicontrol">Modal analysis</span></td>
<td class = "entry"><span class = "ph uicontrol">Description</span></td>
</tr>
<tr class = "row">
<td class = "entry"><p>DYN_FREQ</p></td>
<td class = "entry"><p>Dynamic frequency design response</p></td>
</tr>
<tr class = "row">
<td class = "entry"><span class = "ph uicontrol">Thermal analysis</span></td>
<td class = "entry"><span class = "ph uicontrol">Description</span></td>
</tr>
<tr class = "row">
<td class = "entry"><p>ENERGY_THERMAL_MEASURE</p></td>
<td class = "entry"><p>Energy thermal measure design response</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>INTERNAL_HFLUX</p></td>
<td class = "entry"><p>Internal heat flux design response</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>REACTION_HFLUX</p></td>
<td class = "entry"><p>Reaction heat flux design response</p></td>
</tr>
<tr class = "row">
<td class = "entry"><p>TEMPERATURE</p></td>
<td class = "entry"><p>Temperature design response</p></td>
</tr>




</tbody></table>
<p>
<table class = "Remark" id = "table132"><tr><td class = "Remark"><span class = "run-in.important">Important:
				</span><span class = "notecontent">
<ul class = "ul">
<li class = "li"> Only design responses marked
with <code class = "ph codeph">*</code> are allowed in the controller-based algorithm
(<code class = "ph codeph">TOPO_CONTROLLER</code>). For the sensitivity algorithm,
the same functionality is achieved using <code class = "ph codeph">DVCON_TOPO</code>
instead.</li>
<li class = "li"> The Gravity / Inertia design
response types are usable only if at least one design response of the
other types is used in the objective function or constraints.</li>
<li class = "li">Design responses marked with <code class = "ph codeph">**</code> are only allowed using
<span class = "ph">Abaqus</span> sensitivities.</li>
</ul>
</span></td></tr></table>

</p>
</div>


<div class = "section" id = "tso-c-user-TopOpt-Con__tso-c-user-TopOpt-Con-MulMatCon"><p><map name = "FPMap1"><area href = "#hj-top" title = "Back to Top" shape = "rect" coords = "416, 0, 435, 10"/></map><span class = "itemsprite"/></p><h2 class = "title sectiontitle">Multiple Material Constraints and Constitutive Laws</h2>

<p>Multiple material constraints and constitutive laws are allowed in
the design domain. That is, different sub domains of the total design domain
can be subject to different material volume constraints. In addition,
different sub domains are allowed to have different constitutive material
laws. </p>
<p><table class = "Remark" id = "table132"><tr><td class = "Remark"><span class = "run-in.important">Important:
				</span><span class = "notecontent">The <code class = "ph codeph">DRESP WEIGHT_TOPO_FILL</code> is not allowed when the
design area contains different materials. </span></td></tr></table>
</p>
<p>The following figure shows the design domain consisting of three different
materials. Two volume constraints are applied in the design domain. The
elements on the left side have the volume constraint of 20%, and the
elements on the right side have the volume constraint of 40%.</p>
<table class = "table" id = "tso-c-user-TopOpt-Con__ag811092"><caption/><colgroup><col/></colgroup><tbody class = "tbody">
<tr class = "row">
<td class = "entry"><br/><img class = "image" id = "tso-c-user-TopOpt-Con__image_595C697300C34982AD4908CB3C082EBF" src = "../TsoUserImages/topo_design_domain_materials.png" width = "277" height = "238"/><br/></td>
</tr>
</tbody></table>

<p> The design element group contains all elements:</p>
<pre class = "codeblock">
<code class = "ph codeph">
DV_TOPO
 ID_NAME    = DESIGN_VARIABLES
 EL_GROUP   = ALL_ELEMENTS
END_
</code>
</pre>
<p>Then, using the groups <code class = "ph codeph">ELEM_LEFT</code> (left part of the
model) and <code class = "ph codeph">ELEM_RIGHT</code> (right part of the model), two
separate design responses are defined:</p>
<pre class = "codeblock">
<code class = "ph codeph">
DRESP
 ID_NAME    = DRESP_VOL_TOPO_LEFT
 DEF_TYPE   = SYSTEM
 TYPE       = VOLUME
 EL_GROUP   = ELEM_LEFT
 GROUP_OPER = SUM
END_
 
DRESP
 ID_NAME    = DRESP_VOL_TOPO_RIGHT
 DEF_TYPE   = SYSTEM
 TYPE       = VOLUME
 EL_GROUP   = ELEM_RIGHT
 GROUP_OPER = SUM
 END_
</code>
</pre>
<p>Afterward, these design responses are applied in the relative volume constraints:</p>
<pre class = "codeblock">
<code class = "ph codeph">
CONSTRAINT
 ID_NAME    = VOLUME_CONSTRAINT_LEFT
 DRESP      = DRESP_VOL_TOPO_LEFT
 MAGNITUDE  = REL
 LE_VALUE   = 0.2
END_
 
CONSTRAINT
 ID_NAME    = VOLUME_CONSTRAINT_RIGHT
 DRESP      = DRESP_VOL_TOPO_RIGHT
 MAGNITUDE  = REL
 LE_VALUE   = 0.4
 END_
</code>
</pre>
<p>It is not allowed for the element groups with different volume constraints to have common
elements. In other words, each element can be used in no more than one volume constraint.
The compliance is minimized in the objective to maximize the stiffness:</p>
<pre class = "codeblock">
<code class = "ph codeph">
DRESP
 ID_NAME    = DRESP_SUM_ENERGY
 DEF_TYPE   = SYSTEM
 TYPE       = STRAIN_ENERGY
 EL_GROUP   = ALL_ELEMENTS
 GROUP_OPER = SUM
END_

OBJ_FUNC
 ID_NAME    = MAXIMIZE_STIFFNESS
 DRESP      = DRESP_SUM_ENERGY
 TARGET     = MIN
END_
</code>
</pre>
<p>Finally, the commands defined above are referenced in <code class = "ph codeph">OPTIMIZE</code> command:</p>
<pre class = "codeblock">
<code class = "ph codeph">
OPTIMIZE
 ID_NAME    = TOPOLOGY_OPTIMIZATION
 DV         = DESIGN_VARIABLES
 OBJ_FUNC   = MAXIMIZE_STIFFNESS
 CONSTRAINT = VOLUME_CONSTRAINT_LEFT
 CONSTRAINT = VOLUME_CONSTRAINT_RIGHT
END_
</code>
</pre>
<p>The following figures show the results of the optimization.</p>
<table class = "table" id = "tso-c-user-TopOpt-Con__ag618746"><caption/><colgroup><col/><col/><col/></colgroup><tbody class = "tbody">
<tr class = "row">
<td class = "entry"><p><span class = "ph">Abaqus</span></p></td>
<td class = "entry"><p><span class = "ph">ANSYS®</span></p></td>
<td class = "entry"><p><span class = "ph">Nastran</span></p></td>
</tr>
<tr class = "row">
<td class = "entry"><br/><img class = "image" id = "tso-c-user-TopOpt-Con__image_474CE4FE21454770BCF3EE1657598AD5" src = "../TsoUserImages/topo_solution_multiple_solvers1.png" width = "160" height = "80"/><br/></td>
<td class = "entry"><br/><img class = "image" id = "tso-c-user-TopOpt-Con__image_474CE4FE21454770BCF3EE1657598AD6" src = "../TsoUserImages/topo_solution_multiple_solvers2.png" width = "160" height = "80"/><br/></td>
<td class = "entry"><br/><img class = "image" id = "tso-c-user-TopOpt-Con__image_36ED97A02B544907BC00DE6677463780" src = "../TsoUserImages/topo_solution_multiple_solvers3.png" width = "160" height = "80"/><br/></td>
</tr>
</tbody></table>
</div>

</div>


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