<?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 = "The demolding manufacturing constraint can be used to gain a demoldable surface. Looking at a single (surface) face, that face is demoldable if the angle between the face normal and the demolding direction is less than 90°."/><meta name = "description" content = "The demolding manufacturing constraint can be used to gain a demoldable surface. Looking at a single (surface) face, that face is demoldable if the angle between the face normal and the demolding direction is less than 90°."/><meta name = "DC.relation" scheme = "URI" content = "../TsoCmdMap/tso-r-cmd-linkShape.htm"/><meta name = "DC.format" content = "HTML5"/><meta name = "DC.identifier" content = "tso-c-usr-shape-desArea-lsSurfDemold"/><meta name = "DC.language" content = "en"/><link rel = "stylesheet" type = "text/css" href = "../DSDocUI_XML34.css"/><title>Demoldable Surface (SURF_DEMOLD)</title>
<script type = "text/javascript" src = "../DSDocUI_Highlight34.js">
  	/* */
  	</script><script type = "text/javascript" src = "../MathJax/MathJax.js?config=DS-default,local/local">
  		/* */
  		</script></head><body onLoad = "highlightSearchTerms();" id = "tso-c-usr-shape-desArea-lsSurfDemold">
<a name = "hj-top"> </a><table class = "table1" id = "table11"><tr><td><table class = "DocHeader"><tr><td class = "DocHeader1" colspan = "2"><h1>
Demoldable Surface (SURF_DEMOLD)
</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">
The demolding manufacturing constraint can be used to gain a demoldable surface. Looking at a single (surface) face, that face is demoldable if the angle between the face normal and the demolding direction is less than 90°.
</span>

</p>
<p>This page discusses: </p><ul><li><a href = "#tso-c-usr-shape-desArea-lsSurfDemold__tso-c-usr-shape-desArea-link-surfDemoldCtrl" id = "toc_rg" title = "">Controller-Based Optimization</a></li><li><a href = "#tso-c-usr-shape-desArea-lsSurfDemold__tso-c-usr-shape-desArea-link-surfDemoldSens" id = "toc_rg" title = "">Sensitivity-Based Optimization</a></li></ul>
</p></td></tr></table></td><td class = "DocHeader2"><table class = "DocTopicsSeeAlso" id = "table13"><tr><td class = "TopicsTitle">See Also</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 = "Defines link conditions (coupling conditions) for nodes in shape optimization." href = "../TsoCmdMap/tso-r-cmd-linkShape.htm">LINK_SHAPE</a></td></tr></table></td></tr></table>




<div class = "body conbody">

<p>
<table class = "table" id = "tso-c-usr-shape-desArea-lsSurfDemold__table_F81EFF10411A4C2485398DA97165873C"><caption/><colgroup><col style = "width:33.33333333333333%"/><col style = "width:33.33333333333333%"/><col style = "width:33.33333333333333%"/></colgroup><thead class = "thead">
<tr class = "row">
<th class = "entry" id = "tso-c-usr-shape-desArea-lsSurfDemold__table_F81EFF10411A4C2485398DA97165873C__entry__1">CLIENT / Applicable for</th>
<th class = "entry align-center" id = "tso-c-usr-shape-desArea-lsSurfDemold__table_F81EFF10411A4C2485398DA97165873C__entry__2">SHAPE_CONTROLLER</th>
<th class = "entry align-center" id = "tso-c-usr-shape-desArea-lsSurfDemold__table_F81EFF10411A4C2485398DA97165873C__entry__3">SHAPE_SENSITIVITY</th>
</tr>
</thead><tbody class = "tbody">
<tr class = "row">
<td class = "entry" headers = "tso-c-usr-shape-desArea-lsSurfDemold__table_F81EFF10411A4C2485398DA97165873C__entry__1">SURF_DEMOLD</td>
<td class = "entry align-center" headers = "tso-c-usr-shape-desArea-lsSurfDemold__table_F81EFF10411A4C2485398DA97165873C__entry__2">OK</td>
<td class = "entry align-center" headers = "tso-c-usr-shape-desArea-lsSurfDemold__table_F81EFF10411A4C2485398DA97165873C__entry__3">OK</td>
</tr>
</tbody></table>
</p>

<div class = "section" id = "tso-c-usr-shape-desArea-lsSurfDemold__tso-c-usr-shape-desArea-link-surfDemoldCtrl"><h2 class = "title sectiontitle">Controller-Based Optimization</h2>

<p>Defining a demolding or forging restriction involves specifying the
manufacturing direction. The area to restrict is defined using a node
group of surface nodes. Demolding in the specified direction or forging
against this direction is maintained during optimization and undercuts
are avoided. The link condition for the demold restriction is defined
as follows:</p>
<pre class = "codeblock">
<code class = "ph codeph">
CLIENT      = SURF_DEMOLD
DEMOLD_DIR  = &lt;x_1&gt;,&lt;x_2&gt;,&lt;x_3&gt;
CS          = name_of_coord_system
CHECK_GROUP = name_of_node_group
TOL         = &lt;tol_1&gt;, &lt;tol_2&gt;, &lt;tol_3&gt;
</code>
</pre>
<p>The direction defined by the <code class = "ph codeph">DEMOLD_DIR</code> specifies the demolding direction
        respectively the negative forging direction. All nodes in the node group are checked for
        undercuts and for demolding against the specified <code class = "ph codeph">CHECK_GROUP</code>. This group
        of surface nodes should qualify the cast sufficiently. In the simplest case, the group of
        all surface nodes can be chosen. In the following figure, node group 1 describes the
        demolding area. If the check group contains only node group 1 the undercut is not detected
        because the check group describes no restricting surface. Only node group 1 and 2 together
        qualify a surface to detect undercuts reliably.</p>
<p>In addition, an angle for the surface inclination might be specified using
the ANGLE parameter:</p><pre class = "codeblock"><code class = "ph codeph">ANGLE = &lt;<span class = "ph">real</span>&gt;        </code>
</pre>
<table class = "table" id = "tso-c-usr-shape-desArea-lsSurfDemold__ae233211"><caption/><colgroup><col/></colgroup><tbody class = "tbody">
<tr class = "row">
<td class = "entry"><br/><img class = "image" id = "tso-c-usr-shape-desArea-lsSurfDemold__image_D0BFBF0035CE479C83A786D11CFD485C" src = "../TsoUserImages/shape_demold.png" width = "450"/><br/></td>
</tr>
</tbody></table>

      
<p>
The undercut tolerance specifies the maximum valid undercut (default =
0):
</p>
<pre class = "codeblock"><code class = "ph codeph"> UNDERCUT_TOL = &lt;real&gt;</code>
</pre>
      
<table class = "Remark" id = "table132"><tr><td class = "Remark"><span class = "run-in.important">Important:
				</span><span class = "notecontent"><p><ul class = "ul" id = "tso-c-usr-shape-desArea-lsSurfDemold__ul_5A4125D84F484C8EAD385957C7C88730">
<li class = "li"> It is possible to define demolding restrictions for
              initial components that  are not demoldable at the beginning of the optimization
              procedure. However, this is not recommended as the conditions for demolding are met in
              the first design cycle. This might lead to large node displacements and a distorted
              finite element mesh.</li>
<li class = "li">
No single main nodes need to be determined for demolding restrictions.
The main criterion in this case is used to determine a priority rule
between nodes in the undercut and overlapping nodes.</li>
<li class = "li"> All <code class = "ph codeph">SURF_xxx</code> link commands have a
              parameter called <code class = "ph codeph">SURF_PARAM = &lt;main_areas&gt;, &lt;net_points&gt;</code>
              that are used to create a spline that defines the <code class = "ph codeph">surface</code> in the
                <code class = "ph codeph">SURF_xxx LINK_SHAPE</code> commands. The <code class = "ph codeph"> values
                &lt;main_areas&gt;, &lt;net_points&gt; </code> are integer values and
              automatically determined by <span class = "ph">Tosca Structure</span>.</li></ul></p></span></td></tr></table>

<ul class = "ul"><li class = "li">          In the event of an error like
<p><br/><img border = "1" class = "image" id = "tso-c-usr-shape-desArea-lsSurfDemold__image_F88C530C2A6044A0B001249BAA9C3678" src = "../TsoUserImages/shape_error_note.png" width = "450"/><br/></p><p>it might help setting SURF_PARAM. Important
is that &lt;main_areas&gt; must be larger than 4 and at least double
the size of &lt;net_points&gt;. Good values are, for example, SURF_PARAM = 12,
	4.</p>           
          
</li>
</ul>

<table class = "Remark" id = "table132"><tr><td class = "Remark"><span class = "run-in.important">Important:
				</span><span class = "notecontent"><p><ul class = "ul" id = "tso-c-usr-shape-desArea-lsSurfDemold__ul_03F1573E3BC5425F9C14E9E908FEC00B">
<li class = "li">
Another reason for the above error message is that there is not enough
nodes in the design area to create the <code class = "ph codeph">surface</code> for the
<code class = "ph codeph">SURF_xxx</code> condition.</li>
<li class = "li">
Default tolerances for all <code class = "ph codeph">SURF_xxx LINK_SHAPE</code> commands
are <code class = "ph codeph">TOL = 0.01, 0.01, 0.01</code>. If you have a mesh where
these values are either very large or very small consider setting them
to about <code class = "ph codeph">0.25 *</code> element edge length in design area.</li>
</ul></p></span></td></tr></table>

</div>


<div class = "section" id = "tso-c-usr-shape-desArea-lsSurfDemold__tso-c-usr-shape-desArea-link-surfDemoldSens"><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">Sensitivity-Based Optimization</h2>


<p>The commands used to set up the demold manufacturing constraint for sensitivity-based shape optimization does not differ much
from how to set it up for the controller-based shape optimization, but the enforcement happens in another way.
For the sensitivity approach, a face is enforced to be demoldable by adding a constraint to the optimization problem stating that 
the angle between the face normal vector and the demold direction must be less (or equal) to 90°.
<br/><img border = "1" class = "image" id = "tso-c-usr-shape-desArea-lsSurfDemold__image_24DFC6739DB7433A941FF8FD97C3E687" src = "../TsoUserImages/ls_surfdemold.png" width = "250"/><br/>
</p>
<p>Since too many optimization constraints slow down the optimization process too much, the constraints for one demold command are aggregated into one single constraint
by summing up the single constraints:
        
<table class = "table" id = "tso-c-usr-shape-desArea-lsSurfDemold__ag570725"><caption/><colgroup><col/></colgroup><tbody class = "tbody">
<tr class = "row">
<td class = "entry"><p><span class = "ph inlineequation"><math class = "- topic/foreign "><mrow class = "- topic/foreign "><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">c</mi></mrow><mrow class = "- topic/foreign "><mtext class = "- topic/foreign ">dem</mtext></mrow></msub><mo class = "- topic/foreign ">=</mo><msup class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">(</mo><mfrac class = "- topic/foreign "><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">1</mn></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">m</mi></mrow></mfrac><mrow class = "- topic/foreign "><munderover class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">∑</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">i</mi><mo class = "- topic/foreign ">=</mo><mn class = "- topic/foreign ">1</mn></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">m</mi></mrow></munderover><msup class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">(</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">g</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">k</mi></mrow></msub><mo class = "- topic/foreign ">(</mo><mi class = "- topic/foreign ">x</mi><mo class = "- topic/foreign ">)</mo><mo class = "- topic/foreign ">−</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">g</mi></mrow><mrow class = "- topic/foreign "><mtext class = "- topic/foreign ">shift</mtext></mrow></msub><mo class = "- topic/foreign ">)</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">p</mi></mrow></msup></mrow><mo class = "- topic/foreign ">)</mo></mrow><mrow class = "- topic/foreign "><mfrac class = "- topic/foreign "><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">1</mn></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">p</mi></mrow></mfrac></mrow></msup><mo class = "- topic/foreign ">+</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">g</mi></mrow><mrow class = "- topic/foreign "><mtext class = "- topic/foreign ">shift</mtext></mrow></msub></mrow></math></span></p></td>
</tr>
</tbody></table>
      
</p><p>Two parameters that influence the behavior of the aggregation are
<pre class = "codeblock"><code class = "ph codeph">AGGREGATION_PARAMETER</code>=&lt;real&gt;</pre>
and
<pre class = "codeblock"><code class = "ph codeph">AGGREGATION_NUM_CONSTRAINTS</code>=&lt;int&gt;</pre>.
<code class = "ph codeph">AGGREGATION_PARAMETER</code> is used as the power 
<span class = "ph inlineequation"><math class = "- topic/foreign "><mi class = "- topic/foreign ">p</mi></math></span>
in the aggregation method and <code class = "ph codeph">AGGREGATION_NUM_CONSTRAINTS</code> is used to switch back to the "one constraint per face" strategy.
To do so, select <code class = "ph codeph">AGGREGATION_NUM_CONSTRAINTS=-1</code></p>
<p>A command example might look like the following: <pre class = "codeblock">
<code class = "ph codeph">
LINK_SHAPE
  ID_NAME        = demold
  CLIENT         = SURF_DEMOLD
  DEMOLD_DIR     = 0.,0.,1.
  CS             = CS_0
  ANGLE          = 0.0
END_
 
DVCON_SHAPE
  ID_NAME        = dvcon_demold
  ND_GROUP       = demold_nodes
  CHECK_LINK     = demold
END_
</code>
</pre>
The faces covered by the node group <code class = "ph codeph">demold_nodes</code> will be demoldable in z-direction.
</p>
</div>

</div>

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