<?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 = "This section gives information how undercuts in optimized models can be prevented using design variable constraints."/><meta name = "description" content = "This section gives information how undercuts in optimized models can be prevented using design variable constraints."/><meta name = "DC.relation" scheme = "URI" content = "tso-t-user-TopOpt-DesArea-DemCon.htm#tso-t-user-TopOpt-DesArea-DemCon"/><meta name = "DC.relation" scheme = "URI" content = "tso-c-user-TopOpt-DesArea-StaRes.htm#tso-c-user-TopOpt-DesArea-StaRes"/><meta name = "DC.relation" scheme = "URI" content = "tso-m-user-TopOpt-DesArea-TighCon-sb.htm#tso-m-user-TopOpt-DesArea-TighCon-sb"/><meta name = "DC.format" content = "HTML5"/><meta name = "DC.identifier" content = "tso-c-user-TopOpt-DesArea-Undercut"/><meta name = "DC.language" content = "en"/><link rel = "stylesheet" type = "text/css" href = "../DSDocUI_XML34.css"/><title>About Prevention of Undercuts in the Model</title>
<script type = "text/javascript" src = "../DSDocUI_Highlight34.js">
  	/* */
  	</script></head><body onLoad = "highlightSearchTerms();" id = "tso-c-user-TopOpt-DesArea-Undercut">
<a name = "hj-top"> </a><table class = "table1" id = "table11"><tr><td><table class = "DocHeader"><tr><td class = "DocHeader1" colspan = "2"><h1>About Prevention of Undercuts in the 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 = "header"><p class = "abstract">
    <span class = "shortdesc">This section gives information how undercuts in optimized models can be prevented using design variable constraints.</span>

  </p>
<p>This page discusses: </p><ul><li><a href = "#tso-c-user-TopOpt-DesArea-Undercut__tso-c-user-TopOpt-DesArea-Undercut-cmdDef" id = "toc_rg" title = "">Command Definition</a></li><li><a href = "#tso-c-user-TopOpt-DesArea-Undercut__tso-c-user-TopOpt-DesArea-Undercut-groupDef" id = "toc_rg" title = "">Group Definitions</a></li><li><a href = "#tso-c-user-TopOpt-DesArea-Undercut__tso-c-user-TopOpt-DesArea-Undercut-planeTypes" id = "toc_rg" title = "">Midplane Types</a></li><li><a href = "#tso-c-user-TopOpt-DesArea-Undercut__tso-c-user-TopOpt-DesArea-Undercut-expl" id = "toc_rg" title = "">Example: Deformation Angle</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 = "You can define demold restrictions to ensure a demoldable surface." href = "tso-t-user-TopOpt-DesArea-DemCon.htm#tso-t-user-TopOpt-DesArea-DemCon">Defining Demold Restrictions</a></td></tr><tr><td><a title = "The stamping restriction means the following: If one element is removed from the structure, all elements positioned either behind or in front of the element (with respect to the pull direction) are removed too." href = "tso-c-user-TopOpt-DesArea-StaRes.htm#tso-c-user-TopOpt-DesArea-StaRes">Defining a Stamping Restriction</a></td></tr><tr><td><a title = "The manufacturing constraints for tightness represent a possibility to prevent the remaining structure from having holes and breakouts in the defined restriction area." href = "tso-m-user-TopOpt-DesArea-TighCon-sb.htm#tso-m-user-TopOpt-DesArea-TighCon-sb">Tightness Restriction</a></td></tr></table></td></tr></table>
  
  


  

  <div class = "body conbody">
    <p> In many cases where bending and torsion loads are applied, the topology optimization leads
      to models with hollow areas or models with undercuts. A direct manufacturing of these results
      can be very challenging or straight up infeasible. To convert the result of a nonrestricted
      topology optimization into a manufacturable design, a lot of manual post-processing changes
      are necessary. These changes might modify the mechanical properties dramatically. The solution
      for this problem is to include the manufacturing constraints directly in the topology
      optimization.</p>
    <p>
      The following figure shows the difference between the two optimization results: without manufacturing constraints (left) and with casting constraint to prevent undercuts (right):
    </p>
    <br/><img class = "image" id = "tso-c-user-TopOpt-DesArea-Undercut__image_4A119F8788E444EF94BC76C22A85ADAA" src = "../TsoUserImages/topo_demolding_example.png" width = "450"/><br/>
    <p>
      The formation of cavities and undercuts during the topology optimization
      can be prevented by using the casting constraint in the design variable
      constraint definition. This significantly simplifies the transfer of
      topology optimization results into manufacturable components. Solutions
      are limited as in the case of all other kinds of restrictions.
    </p>
    <p>
      <table class = "Remark" id = "table132"><tr><td class = "Remark"><span class = "run-in.tip">Tip:
				</span><span class = "notecontent">
        Usually, it is better to carry out the optimization without manufacturing restrictions
        first, and then to perform a second optimization with manufacturing restrictions.
      </span></td></tr></table>

    </p>

    <div class = "section" id = "tso-c-user-TopOpt-DesArea-Undercut__tso-c-user-TopOpt-DesArea-Undercut-cmdDef"><h2 class = "title sectiontitle">Command Definition</h2>
      
      <p>
        A manufacturing constraint for the prevention of undercuts (<code class = "ph codeph">CHECK_TYPE = CAST</code>) is usually defined by the following parameters:
        <ul class = "ul">
          <li class = "li">
            <code class = "ph codeph">ELEMENT_GROUP</code>: The group which the restriction should be applied on.
          </li>
          <li class = "li">
            <code class = "ph codeph">MID_PLANE</code>: The midplane generally defines the parting plane of the
            molds. It is also used indirectly to differ between a single extrusion, a split
            extrusion, or stamping. </li>
          <li class = "li">
            <code class = "ph codeph">PULL_DIR</code>: The direction in which the restriction should be enforced. In
            general, this is the direction in which the molds are pulled off the part to free it. In
            this section about the <a class = "xref" href = "tso-m-user-TopOpt-DesArea-ManuUndercuts-sb.htm" title = "Casting restrictions can be used to prevent undesired undercuts in optimized models.">prevention of undercuts</a>, the
            terms ‘casting direction,’ ‘demolding direction,’ and ‘pull direction’ are used as
            synonyms depending on the context. <div class = "note"><span class = "run-in.note">Note:
			</span><span class = "notecontent"> If a cylindrical coordinate system is used,
              the pull direction must be the polar axis (<code class = "ph codeph">1,0,0</code>). The restriction
              then prevents undercuts in radial directions. </span></div>

          </li>
        </ul>
      </p>
      <p>
        Refer to the <a class = "xref" href = "../TsoCmdMap/tso-r-cmd-dvconTopo.htm" title = "Defines restrictions of the design variables in topology optimization.">DVCON_TOPO</a>
        documentation for a full description of all available command items.
      </p>
    </div>


    <div class = "section" id = "tso-c-user-TopOpt-DesArea-Undercut__tso-c-user-TopOpt-DesArea-Undercut-groupDef"><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">Group Definitions</h2>
      
      <p>
        For a definition of a demold restriction, two element groups are needed:
        <ul class = "ul">
          <li class = "li"> The first group is the "casting group," defined by the <code class = "ph codeph">ELEMENT_GROUP</code>
            entry. It contains all elements where the restriction should be active. It must be a
            subset of the design element group. </li>
          <li class = "li"> The second group is the "check group," defined by the <code class = "ph codeph">CHECK_GROUP</code>
            entry. When it is checked if an element is allowed to be removed, this test is performed
            with respect to the elements in the check group. The check group should include all
            elements of the casting group. <p>
              <div class = "note"><span class = "run-in.note">Note:
			</span><span class = "notecontent"> The elements outside of the casting group are treated as a barrier if they are
                included in the check group. This means that the elements in the optimization group
                cannot be removed "through" these other elements. The same applies to frozen
                regions. If an element in the check group is frozen, the optimization result may
                contain a lot of unnecessary material to prevent undercuts behind this element. If
                this is not the desired result, the frozen elements simply must be removed from
                the check group. </span></div>

            </p>
          </li>
        </ul>
      </p>
    </div>


    <div class = "section" id = "tso-c-user-TopOpt-DesArea-Undercut__tso-c-user-TopOpt-DesArea-Undercut-planeTypes"><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">Midplane Types</h2>
      
      <p>There are four different variants to check for undercuts and cavities that can be selected
        by the parameter <code class = "ph codeph">MID_PLANE</code>: </p>
      <ol class = "ol">
        <li class = "li">
          Using a pull direction without the middle plane (<code class = "ph codeph">MID_PLANE = NONE</code>).
          Only the pull direction is defined. A fictitious middle plane lies outside of the component, so pulling takes place in only one
          direction.
        </li>
        <li class = "li">
          Using a pull direction with a fixed middle plane (<code class = "ph codeph">MID_PLANE = POINT</code>). A middle plane is defined by a point and the
          pull direction (vector perpendicular to the middle plane). It is checked that the
          component is demoldable in both directions away from the middle plane.
        </li>
        <li class = "li">
          Using a pull direction and the automatically defined middle plane
          (<code class = "ph codeph">MID_PLANE = AUTO</code>). <span class = "ph">Tosca Structure</span>
          determines the optimal position of the middle plane for each area.
        </li>
        <li class = "li">
          Using the normal directions of the original model surface (<code class = "ph codeph">MID_PLANE = SURFACE</code>).
          For each element, the pull direction is defined by the surface-normal at
          the closest surface point (only the surface of the elements from the
          casting group is considered and the direction is not updated during the optimization).
          The midplane type <code class = "ph codeph">SURFACE</code> is useful for models where the pull direction is not already
          known, as shown in the following figure: <br/><img class = "image" src = "../TsoUserImages/topo_check_type_surface.png" width = "288" height = "127"/><br/>
        </li>
      </ol>
      <p> A pull direction vector (<code class = "ph codeph">PULL_DIR</code>) must be defined for the types 1-3. The
        deformation angle (<code class = "ph codeph">ANGLE</code>) defines the necessary angle needed for ejection.
        Values between 0° and 20° are permitted. Checking the pull direction is made with the help
        of a pull cone starting at the centroid of the respective element. That the pull direction
        is maintained is checked using the pull cone with a certain base radius. This radius is
        based on the average element size and is usually determined from the model.
      </p>
    </div>


    <div class = "section" id = "tso-c-user-TopOpt-DesArea-Undercut__tso-c-user-TopOpt-DesArea-Undercut-expl"><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">Example: Deformation Angle</h2>
      
      <p>The following figure shows a pull cone with a deformation angle centered at the element enlarged by base radius r.</p>
      <br/><img class = "image" src = "../TsoUserImages/ag09bf3a.jpg" width = "450"/><br/>
      <p>
        The specification of this <code class = "ph codeph">RADIUS</code> is optional and is only
        necessary for models that have elements of very different sizes. If a
        value is specified, it should be larger than approximately 50% of the
        average element edge length.
      </p>
      <p>The following figure shows an engine mount with and without manufacturing restrictions:</p>
      <br/><img class = "image" src = "../TsoUserImages/ag09bf12.jpg" width = "450"/><br/>
      <p>
        Members of the specified element group are only modified if they
        can be removed from the model in the pull direction, so that internal
        cavities and recesses cannot be formed.
      </p>
      <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">
              Defining a pull restriction causes many restrictions for 2D models.
              If the topology optimization with pull direction is to be carried out
              on 2D models, the option <code class = "ph codeph">SPEED=SLOW</code> should be set using
              the command <code class = "ph codeph">OPT_PARAM</code> for the controller-based optimality criteria.
              If the sensitivity-based algorithm is used, the settings for the <code class = "ph codeph">DENSITY_UPDATE</code>
              and the <code class = "ph codeph">DENSITY_MOVE</code> might must be adjusted to smaller
              or more conservative values to ensure convergence of the algorithm.
            </li>
            <li class = "li">
              For a more strict avoidance of undercuts an additional material filter
              (<code class = "ph codeph">FILTER_MAT = YES</code>) can be switched on which is applied
              after each optimization cycle. The optimization result is changed based
              on purely geometric aspects. This might influence the objective values
              and even the convergence in a negative way. Thus apply only, if the standard
              casting restriction does not lead to sufficient results.
            </li>
          </ul>
        </span></td></tr></table>

      </p>
    </div>

  </div>


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