<?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 is about how to define an overhang constraint for topology optimization."/><meta name = "description" content = "This section is about how to define an overhang constraint for topology optimization."/><meta name = "DC.format" content = "HTML5"/><meta name = "DC.identifier" content = "tso-c-user-TopOpt-DesArea-OverhangsDefine"/><meta name = "DC.language" content = "en"/><link rel = "stylesheet" type = "text/css" href = "../DSDocUI_XML34.css"/><title>About the Definition of Overhang Restrictions</title>
<script type = "text/javascript" src = "../DSDocUI_Highlight34.js">
  	/* */
  	</script></head><body onLoad = "highlightSearchTerms();" id = "tso-c-user-TopOpt-DesArea-OverhangsDefine">
<a name = "hj-top"> </a><table class = "table1" id = "table11"><tr><td><table class = "DocHeader"><tr><td class = "DocHeader1" colspan = "2"><h1>About the Definition of Overhang Restrictions</h1></td></tr><tr><td class = "DocHeader4" colspan = "2"/></tr><tr><td class = "DocHeader3" colspan = "2"><table class = "DocThemeIntro" id = "table12"><tr><td class = "Intro1Only"><p class = "header"><p class = "abstract">
<span class = "shortdesc">This section is about how to define an overhang constraint for topology optimization.</span>

</p>
<p>This page discusses: </p><ul><li><a href = "#tso-c-user-TopOpt-DesArea-OverhangsDefine__tso-c-user-TopOpt-DesArea-Overhang-def" id = "toc_rg" title = "">Overhang Constraint Definition</a></li><li><a href = "#tso-c-user-TopOpt-DesArea-OverhangsDefine__tso-c-user-TopOpt-DesArea-Overhang-check" id = "toc_rg" title = "">Overhang Check</a></li><li><a href = "#tso-c-user-TopOpt-DesArea-OverhangsDefine__tso-c-user-TopOpt-DesArea-Overhang-example" id = "toc_rg" title = "">Example: 2D Beam</a></li><li><a href = "#tso-c-user-TopOpt-DesArea-OverhangsDefine__tso-c-user-TopOpt-DesArea-Overhang-plane_example" id = "toc_rg" title = "">Example: Define the Printing Bed</a></li><li><a href = "#tso-c-user-TopOpt-DesArea-OverhangsDefine__tso-c-user-TopOpt-DesArea-Overhang-frozen_example" id = "toc_rg" title = "">Example: Overhanging Functional Regions</a></li></ul>
</p></td></tr></table></td></tr></table>



<div class = "body conbody">

<div class = "section" id = "tso-c-user-TopOpt-DesArea-OverhangsDefine__tso-c-user-TopOpt-DesArea-Overhang-def"><h2 class = "title sectiontitle">Overhang Constraint Definition</h2>

<p>A printing restriction is activated by setting the check type of the design variable constraint to <code class = "ph codeph">OVERHANG</code>.
The restriction is defined by the following parameters:
<ul class = "ul">
<li class = "li"><code class = "ph codeph">ELEMENT_GROUP</code>: The group of elements for which the constraint is active.
If left out the constraint will be active for all design elements.</li>
<li class = "li"><code class = "ph codeph">CHECK_GROUP</code>: The group of elements that will be used in the internal check
if elements are properly supported and do not violate the overhang angle criteria.
All elements will be used if this parameter is not used.</li>
<li class = "li"><code class = "ph codeph">PRINT_DIR</code>: The direction in which the model is supposed to be printed. This is
      the only parameter that should always be set when using the overhang constraint.</li>
<li class = "li"><code class = "ph codeph">PRINT_CS</code>: The coordinate system the printing direction is defined in.
If omitted it is assumed that the direction is given in the default coordinates.</li>
<li class = "li"><code class = "ph codeph">ANGLE</code>: The maximum allowed angle of overhanging structures.
Overhangs that exceed this angle will be prevented.
The default value is 45 degrees.</li>
<li class = "li"><code class = "ph codeph">RADIUS</code>: With this parameter, you can define the size of the cones that are used
      in the internal check for the overhang criteria. Usually the default value of 1.5 times the
      average element length does not need to be changed.</li>
<li class = "li"><code class = "ph codeph">BASE_PLANE</code>: This parameter allows the definition of the printing bed. Only the elements that are situated above the printing bed need support.</li>
<li class = "li"><code class = "ph codeph">SUPPORT_FROZEN</code>: This switch enables the support of functional regions. By default, functional regions are not considered by the overhang constraint.</li>
</ul>
</p>
</div>


<div class = "section" id = "tso-c-user-TopOpt-DesArea-OverhangsDefine__tso-c-user-TopOpt-DesArea-Overhang-check"><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">Overhang Check</h2>

<p>To identify if a model contains critical overhangs, an internal check using element cones is used.
If all elements inside a cone are being removed due to the topology optimization process,
the cone top is not properly supported anymore in terms of the overhang criteria.
The top element will then be removed to ensure that the constraint is fulfilled.
A cone definition is described in the following figure:</p>

<table class = "table"><caption/><colgroup><col/></colgroup><tbody class = "tbody">
<tr class = "row">
<td class = "entry"><br/><img class = "image" src = "../TsoUserImages/alm_cone_def.png" width = "600"/><br/></td>
</tr>
</tbody></table>
</div>


<div class = "section" id = "tso-c-user-TopOpt-DesArea-OverhangsDefine__tso-c-user-TopOpt-DesArea-Overhang-example"><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: 2D Beam</h2>

<p>How the overhang constraint influences the design of the result can be seen in the example below.
    The model in this case is a simple 2D bending beam that is fixed on the left with a force
    applied at the lower-right corner. The figure shows the result for four different printing
    directions—each time limiting the overhang angle to a maximum of 45°.</p>
<br/><img class = "image" src = "../TsoUserImages/alm_beam_example.png" width = "600"/><br/>

<p>The parameter file command that is used in this example looks like the following:</p>
<pre class = "codeblock">
<code class = "ph codeph">
DVCON_TOPO
 ID_NAME    = MY_DVCON_TOPO
 EL_GROUP   = ALL_ELEMENTS
 CHECK_TYPE = OVERHANG
 PRINT_DIR  = 0.0, 1.0, 0.0
 ANGLE      = 45
END_
</code>
</pre>
</div>


<div class = "section" id = "tso-c-user-TopOpt-DesArea-OverhangsDefine__tso-c-user-TopOpt-DesArea-Overhang-plane_example"><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: Define the Printing Bed</h2>

<p>Some models contain overhanging structures. This means that the outer surface violate the angle
    criteria and would require support structures during printing. By default, the overhang
    constraint will try to remove all overhanging features so results do not need additional support
    structures. Depending on the geometry, this will lead to unreasonable results where, for
    example, the force is disconnected from the fixture. To give the user control how these global
    overhangs should be treated by the constraint the <code class = "ph codeph">BASE_PLANE</code> option was
    introduced.</p>

<br/><img class = "image" src = "../TsoUserImages/alm_base_plane_example.png" width = "600"/><br/>

<p>In the above image, the original model (a) contains multiple overhangs, one at the bottom and one
    above each of the holes. For a 45° angle, the default option of the constraint will always lead
    to a disconnection of the right-hand side since it is impossible to design without overhanging
    structures (b, <code class = "ph codeph">BASE_PLANE=AUTO</code>). However, if boundary elements should always be
    printable (c, <code class = "ph codeph">BASE_PLANE=NONE</code>), there are undesired overhangs remaining in the
    result above the holes. To obtain a result where the overhang at the bottom is ignored because
    it is mandatory but the regions above the holes are free of overhangs, the base plane (or
    printing bed) must be set to a user-defined point in space (d,
     <code class = "ph codeph">BASE_PLANE=POINT,X,Y;Z</code>). This point should be located above the required overhangs
    and under overhangs that should be removed.</p>

</div>


<div class = "section" id = "tso-c-user-TopOpt-DesArea-OverhangsDefine__tso-c-user-TopOpt-DesArea-Overhang-frozen_example"><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: Overhanging Functional Regions</h2>

<p>By default, the overhang constraint will not consider the functional/frozen regions that are present
    in the model. This can lead to optimization results where the functional regions remain as
    overhanging structures although an overhang constraint was used. With the
     <code class = "ph codeph">SUPPORT_FROZEN</code> option, the constraint tries to alter the design in such a way
    that frozen regions are not overhanging. However, it cannot be guaranteed that the functional
    regions will be fully supported by underlying material. It is strongly advised to not use this
    option on the first optimization run and only if the default result does not satisfy the
    requirements.</p>
<br/><img class = "image" src = "../TsoUserImages/alm_support_frozen_example.png" width = "600"/><br/>

<p>The parameter file command that is used in this example looks like the following:</p>
<pre class = "codeblock">
<code class = "ph codeph">
DVCON_TOPO
 ID_NAME        = MY_DVCON_TOPO
 EL_GROUP       = ALL_ELEMENTS
 CHECK_TYPE     = OVERHANG
 PRINT_DIR      = 0.0, 1.0, 0.0
 ANGLE          = 45
 SUPPORT_FROZEN = YES
END_
</code>
</pre>
<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">When an overhang constraint is used, the default sensitivity filter normally used in topology optimization is replaced with a density filter.
This can lead to an increased amount of intermediate density values in the result and therefore the extraction and smoothing parameters
will have much greater influence on the final geometry (thin members might disappear while smoothing).</li>
<li class = "li">The overhang constraint can only be used in combination with the sensitivity-based topology
       optimization approach.</li>
<li class = "li">The density filtering that is always used in combination with the overhang constraint will blur
       the borders of functional regions. If this behavior is undesired, it can be deactivated by the
       FILTER_TYPE=REDUCED_DENSITY setting in the optimization parameters:
       <pre class = "codeblock">
<code class = "ph codeph">
OPT_PARAM
 ID_NAME     = MY_OPT_PARAM
 OPTIMIZE    = MY_OPTIMIZATION
 ...
 FILTER_TYPE = REDUCED_DENSITY
 ...
END_
</code>
</pre>
      </li>
</ul>
</span></td></tr></table>

</p>
</div>

</div>

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