<?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 = "First, you define the Design Area and Frozen Area. Then the procedure varies depending on the approach."/><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-sensTopoIntForce"/><meta name = "DC.language" content = "en"/><link rel = "stylesheet" type = "text/css" href = "../DSDocUI_XML34.css"/><title>Defining Internal Forces as Design Response</title>
<script type = "text/javascript" src = "../DSDocUI_Highlight34.js">
  	/* */
  	</script></head><body onLoad = "highlightSearchTerms();" id = "tso-t-example-topo-sensTopoIntForce">
<a name = "hj-top"> </a><table class = "table1" id = "table11"><tr><td><table class = "DocHeader"><tr><td class = "DocHeader1" colspan = "2"><h1>Defining Internal Forces as Design Response </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">First, you define the Design Area and Frozen Area. Then the procedure varies depending on the approach.
<p>This task shows you how to:
					</p><ul><li><a href = "#t-DefiningtheDesignandFrozenArea" id = "toc_rg" title = "">Defining the Design Area and Frozen Area</a></li><li><a href = "#t-FirstApproach:Definingaconstraintbyinternalforces." id = "toc_rg" title = "In the first approach, a constraint is defined for the sum of internal forces through a cut in the y-direction of the beam structure.">First Approach: Defining a Constraint by Internal Forces</a></li><li><a href = "#t-SecondApproach:Definingaconstraintbyreactionforces." id = "toc_rg" title = "In the second approach, a constraint is defined for the sum of reaction forces in the y-direction for all the nodes on the left side of the beam structure.">Second Approach: Defining a Constraint by Reaction Forces</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 = "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 = "related-links"/>

<article class = "topic task nested1" aria-labelledby = "ariaid-title2" id = "t-DefiningtheDesignandFrozenArea">
<h2 class = "title topictitle2">Defining the Design Area and Frozen Area</h2>

<div class = "body taskbody">
<section><ol class = "ol steps"><li class = "li step stepexpand">
Define the Design Area as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DV_TOPO
  ID_NAME  = DESIGN_VARIABLES
  EL_GROUP = ALL_ELEMENTS
END_
</pre>
</div>
</li><li class = "li step stepexpand">
To define the Frozen Area, do the following:
<ol type = "a" class = "ol substeps">
<li class = "li substep">
Define a Group Definition (GROUP_DEF) with the elements that are supposed to be frozen:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
GROUP_DEF
  ID_NAME = TOP_FROZEN
  TYPE    = ELEM
  FORMAT  = LIST
  LIST_BEGIN
  9801-10000
END_
</pre>
</div>
</li>
<li class = "li substep">
Reference the Group Definition in a Design Variable Constraint (DVCON_TOPO):
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DVCON_TOPO
  ID_NAME    = DVCON_FROZEN
  EL_GROUP   = TOP_FROZEN
  CHECK_TYPE = FROZEN
END_
</pre>
</div>
</li>
</ol>
</li></ol></section>
</div>

</article>

<article class = "topic task nested1" aria-labelledby = "ariaid-title3" id = "t-FirstApproach:Definingaconstraintbyinternalforces.">
<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 topictitle2">First Approach: Defining a Constraint by Internal Forces</h2>


<div class = "body taskbody"><p class = "shortdesc">In the first approach, a constraint is defined for the sum of internal forces through a
cut in the y-direction of the beam structure.</p>

<section><ol class = "ol steps"><li class = "li step stepexpand">
Create a Group Definition (GROUP_DEF) for a node group as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
GROUP_DEF
  ID_NAME = ND_INTERNAL_GROUP
  TYPE    = NODE
  FORMAT  = LIST
  LIST_BEGIN
  149,476,751,1078,1353,1680,1955,2282,2557,2884,3159,3486,
  3761,4088,4363,4690,4965,5292,5567,5894,6169,6496,6771,
  7098,7373,7700,7975,8302,8577,8904,9179,9506,9781,10108,
  10383,10710,10985,11312,11587,11914,12189,12516,12791,
  13118,13393,13720,13995,14322,14597,14924,15199,
  15526-20551:201,
  20826,21153,21428,21755,22030,22357,22632,22959,23234,
  23561,23836,24163,24438,24765,25040,25367,25642,25969,
  26244,26571,26846,27173,27448,27775,28050,28377,28652,
  28979,29254,29581,29856,30183,30458,30785,31060,31387,
  31662,31989,32264,32591,32866,33193,33468,33795,34070,
  34397,34672,34999,35274,35601,35876,36604,36879,37206,
  37481,37808,38083,38410,38685,39012,39287,39614,39889,
  40216,40491,40818,41093,41420,41695,42022,42297,42624,
  42899,43226,43501,43828,44103,44430,44705,45032,45307,
  45634,45909,46236,46511,46838,47113,47440,47715,48042,
  48317,48644,48919,49246,49521,49848,50123,50450,50725,
  51052,51327
END_
</pre>
<p>This group sums up the internal forces in the y-direction. </p>
</div>
</li><li class = "li step stepexpand">
Create a Group Definition (GROUP_DEF) for an element group as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
GROUP_DEF
  ID_NAME = EL_INTERNAL_GROUP
  TYPE    = ELEM
  FORMAT  = LIST
  LIST_BEGIN
  75-9875:200
END_
</pre>
</div>
</li><li class = "li step stepexpand">
Create a Design Response (DRESP) as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DRESP
  ID_NAME    = DRESP_INT_Y_SUM
  TYPE       = INTERNAL_FORCE_Y
  DEF_TYPE   = SYSTEM
  GROUP_OPER = SUM
  ND_GROUP   = ND_INTERNAL_GROUP
  EL_GROUP   = EL_INTERNAL_GROUP
END_
</pre>
<p>In this approach the internal forces is summed up in the y-direction for the
previously defined node and element group yielding.</p><div class = "note"><span class = "run-in.note">Note:
			</span><span class = "notecontent">GROUP_OPER=SUM is extremely important because default is
GROUP_OPER=MAX. See also the User Manual.</span></div>

<p>In this approach, the internal forces is summed up in the y-direction for the
previously defined node and element group yielding.</p><div class = "note"><span class = "run-in.note">Note:
			</span><span class = "notecontent">GROUP_OPER=SUM is extremely important because the default is</span></div>

</div>
</li><li class = "li step stepexpand">
Create a constraint (CONSTRAINT) as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
CONSTRAINT
  ID_NAME   = CON_INT_Y_SUM
  DRESP     = DRESP_INT_Y_SUM
  MAGNITUDE = ABS
  GE_VALUE  = 0.0015
END_
</pre>
<p>The constraint enforces that more than half of the applied force P (P/2=0.00015) should be
transferred to the boundaries on the right side.</p>
</div>
</li><li class = "li step stepexpand">
To define the Objective Function, do the following:
<ol type = "a" class = "ol substeps">
<li class = "li substep">
Define a Design Response (DRESP) as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DRESP
  ID_NAME    = DRESP_SUM_ENERGY
  DEF_TYPE   = SYSTEM
  TYPE       = STRAIN_ENERGY
  EL_GROUP   = ALL_ELEMENTS
  GROUP_OPER = SUM
END
</pre>
</div>
</li>
<li class = "li substep">
Reference the Design Response in the Objective Function (OBJ_FUNC):
<div class = "itemgroup stepresult">
<pre class = "codeblock">
OBJ_FUNC
  ID_NAME = MAXIMIZE_STIFFNESS
  DRESP   = DRESP_SUM_ENERGY
  TARGET  = MIN
END_
</pre>
</div>
</li>
</ol>
<div class = "itemgroup stepresult">
<p>In this way, the sum of strain energy is minimized for
obtaining a stiff structure.</p>
</div>
</li><li class = "li step stepexpand">
To constrain the volume to 15 % compared to the existing model, do the following:
<ol type = "a" class = "ol substeps">
<li class = "li substep">
Define a Design Response (DRESP) as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DRESP
  ID_NAME    = DRESP_VOL_TOPO
  DEF_TYPE   = SYSTEM
  TYPE       = VOL_TOPO_FILL
  EL_GROUP   = ALL_ELEMENTS
  GROUP_OPER = SUM
END
</pre>
</div>
</li>
<li class = "li substep">
Reference the Design Response in a constraint (CONSTRAINT):
<div class = "itemgroup stepresult">
<pre class = "codeblock">
CONSTRAINT
  ID_NAME   = VOLUME_CONSTRAINT
  DRESP     = DRESP_VOL_TOPO
  MAGNITUDE = REL
  LE_VALUE  = 0.15
END_
</pre>
</div>
</li>
</ol>
</li><li class = "li step stepexpand">
Reference the Design Variables, Objective Function and Constraints in the OPTIMIZE command:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
OPTIMIZE
  ID_NAME    = TOPOLOGY_OPTIMIZATION
  DV         = DESIGN_VARIABLES
  OBJ_FUNC   = MAXIMIZE_STIFFNESS
  DVCON      = DVCON_FROZEN
  CONSTRAINT = VOLUME_CONSTRAINT
  CONSTRAINT = CON_INT_Y_SUM
END_
</pre>
</div>
</li><li class = "li step stepexpand">
To stabilize the optimization, define a stricter update of design variables as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
OPT_PARAM
  ID_NAME        = SPECIAL
  OPTIMIZE       = TOPOLOGY_OPTIMIZATION
  DENSITY_UPDATE = CONSERVATIVE
  DENSITY_MOVE   = 0.1
END_
</pre>
</div>
</li></ol></section>
<p class = "result">The result looks as follows:
<br/><img class = "image" src = "../TsoExampleImages/sensTopoInternForceApp1Res.png"/><br/>
</p>
</div>

</article>

<article class = "topic task nested1" aria-labelledby = "ariaid-title4" id = "t-SecondApproach:Definingaconstraintbyreactionforces.">
<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 topictitle2">Second Approach: Defining a Constraint by Reaction Forces</h2>


<div class = "body taskbody"><p class = "shortdesc">In the second approach, a constraint is defined for the sum of reaction forces in the
y-direction for all the nodes on the left side of the beam structure.</p>

<section><ol class = "ol steps"><li class = "li step stepexpand">
Create a Group Definition (GROUP_DEF) for a node group as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
GROUP_DEF
  ID_NAME = ND_INTERNAL_GROUP
  TYPE    = NODE
  FORMAT  = LIST
  LIST_BEGIN
  149,476,751,1078,1353,1680,1955,2282,2557,2884,3159,3486,
  3761,4088,4363,4690,4965,5292,5567,5894,6169,6496,6771,
  7098,7373,7700,7975,8302,8577,8904,9179,9506,9781,10108,
  10383,10710,10985,11312,11587,11914,12189,12516,12791,
  13118,13393,13720,13995,14322,14597,14924,15199,
  15526-20551:201,
  20826,21153,21428,21755,22030,22357,22632,22959,23234,
  23561,23836,24163,24438,24765,25040,25367,25642,25969,
  26244,26571,26846,27173,27448,27775,28050,28377,28652,
  28979,29254,29581,29856,30183,30458,30785,31060,31387,
  31662,31989,32264,32591,32866,33193,33468,33795,34070,
  34397,34672,34999,35274,35601,35876,36604,36879,37206,
  37481,37808,38083,38410,38685,39012,39287,39614,39889,
  40216,40491,40818,41093,41420,41695,42022,42297,42624,
  42899,43226,43501,43828,44103,44430,44705,45032,45307,
  45634,45909,46236,46511,46838,47113,47440,47715,48042,
  48317,48644,48919,49246,49521,49848,50123,50450,50725,
  51052,51327
END_
</pre>
<p>This group sums up the reaction forces in the y-direction. </p>
</div>
</li><li class = "li step stepexpand">
Create a Design Response (DRESP) as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DRESP
  ID_NAME    = DRESP_REAC_Y_SUM
  TYPE       = REACTION_FORCE_Y
  DEF_TYPE   = SYSTEM
  GROUP_OPER = SUM
  ND_GROUP   = ND_REACTION_GROUP
END_
</pre>
<div class = "note"><span class = "run-in.note">Note:
			</span><span class = "notecontent">GROUP_OPER=SUM is extremely important because the default is
GROUP_OPER=MAX. See also the User Manual.</span></div>

</div>
</li><li class = "li step stepexpand">
Create a constraint (CONSTRAINT) as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
CONSTRAINT
  ID_NAME   = CON_REAC_Y_SUM
  DRESP     = DRESP_REAC_Y_SUM
  MAGNITUDE = ABS
  LE_VALUE  = 0.0015
END_
</pre>
<p>The constraint enforces that more than half of the applied force P (P/2=0.00015)
should be transferred to the boundaries on the right side.</p>
</div>
</li><li class = "li step stepexpand">
To constrain the volume to 15 % compared to the existing model, do the following:
<ol type = "a" class = "ol substeps">
<li class = "li substep">
Define a Design Response (DRESP) as follows:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
DRESP
  ID_NAME    = DRESP_VOL_TOPO
  DEF_TYPE   = SYSTEM
  TYPE       = VOL_TOPO_FILL
  EL_GROUP   = ALL_ELEMENTS
  GROUP_OPER = SUM
END_
</pre>
</div>
</li>
<li class = "li substep">
Reference the Design Response in a constraint(CONSTRAINT):
<div class = "itemgroup stepresult">
<pre class = "codeblock">
CONSTRAINT
  ID_NAME   = VOLUME_CONSTRAINT
  DRESP     = DRESP_VOL_TOPO
  MAGNITUDE = REL
  LE_VALUE  = 0.15
END_
</pre>
</div>
</li>
</ol>
</li><li class = "li step stepexpand">
Reference the Design Variables, Objective Function and Constraints in the OPTIMIZE command:
<div class = "itemgroup stepresult">
<pre class = "codeblock">
OPTIMIZE
  ID_NAME    = TOPOLOGY_OPTIMIZATION
  DV         = DESIGN_VARIABLES
  OBJ_FUNC   = MAXIMIZE_STIFFNESS
  DVCON      = DVCON_FROZEN
  CONSTRAINT = VOLUME_CONSTRAINT
  CONSTRAINT = CON_REAC_Y_SUM
END_
</pre>
</div>
</li></ol></section>
<p class = "result">
The result looks as follows:
<br/><img class = "image" src = "../TsoExampleImages/sensTopoInternForceApp2Res.png"/><br/>
</p>
</div>

</article>
</td></tr></table><script type = "text/javascript" src = "../DSDocUI_Bottom34.js">/* */</script></body>
</html>
