<?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 = "description" content = "This section introduces the different interpolation schemes available in Tosca Structure."/><meta name = "DC.relation" scheme = "URI" content = "../TsoCmdMap/tso-r-cmd-optParam.htm#tso-r-cmd-optParam"/><meta name = "DC.format" content = "HTML5"/><meta name = "DC.identifier" content = "tso-c-user-TopOpt-Sett-Sensi-MatInt"/><meta name = "DC.language" content = "en"/><link rel = "stylesheet" type = "text/css" href = "../DSDocUI_XML34.css"/><title>Material Interpolation</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-user-TopOpt-Sett-Sensi-MatInt">
<a name = "hj-top"> </a><table class = "table1" id = "table11"><tr><td><table class = "DocHeader"><tr><td class = "DocHeader1" colspan = "2"><h1>Material Interpolation</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">
This section introduces the different interpolation schemes available in 
<span class = "ph">Tosca Structure</span>.
<p>This page discusses: </p><ul><li><a href = "#tso-c-user-TopOpt-Sett-Sensi-MatInt__" id = "toc_rg" title = "">SIMP Interpolation</a></li><li><a href = "#tso-c-user-TopOpt-Sett-Sensi-MatInt__" id = "toc_rg" title = "">RAMP Interpolation</a></li><li><a href = "#tso-c-user-TopOpt-Sett-Sensi-MatInt__" id = "toc_rg" title = "">PEDE Interpolation</a></li><li><a href = "#tso-c-user-TopOpt-Sett-Sensi-MatInt__" id = "toc_rg" title = "">MIMP Interpolation</a></li><li><a href = "#tso-c-user-TopOpt-Sett-Sensi-MatInt__" id = "toc_rg" title = "">4th-Order Interpolation</a></li><li><a href = "#tso-c-user-TopOpt-Sett-Sensi-MatInt__" id = "toc_rg" title = "">Command Examples</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 parameters to control optimization." href = "../TsoCmdMap/tso-r-cmd-optParam.htm#tso-r-cmd-optParam">OPT_PARAM</a></td></tr></table></td></tr></table>



<div class = "body conbody">

<p>Recall that the original topology optimization problem is formulated as an integer problem (see,
   for example, Bendsøe and Sigmund [2003])</p>

<table class = "table" id = "tso-c-user-TopOpt-Sett-Sensi-MatInt__ag581506"><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 ">p</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">e</mi></mrow></msub><mo class = "- topic/foreign ">=</mo><mn class = "- topic/foreign ">1</mn></mrow></math></span> 
or 
<span class = "ph inlineequation"><math class = "- topic/foreign "><mrow class = "- topic/foreign "><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">p</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">e</mi></mrow></msub><mo class = "- topic/foreign ">≈</mo><mn class = "- topic/foreign ">0</mn></mrow></math></span>
</p>
</td>
</tr>
</tbody></table>

<p>
meaning that each element should be filled up with material (solid
elements with the relative material volume equal to 1) or contain no
material (void elements with the relative material volume close to
0, but always positive). Thus, the relative material volume of each element
is defined as a design variable. Numerically, the above optimization
problem is an integer problem and difficult to solve for
a large number of design variables. Therefore, the above optimization
problem is relaxed so the relative densities can have values in between
0 and 1,</p>

<table class = "table" id = "tso-c-user-TopOpt-Sett-Sensi-MatInt__ag581524"><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 ">p</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">e</mi></mrow></msub><mo class = "- topic/foreign ">=</mo><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">]</mo><mn class = "- topic/foreign ">0</mn><mo class = "- topic/foreign ">,</mo><mn class = "- topic/foreign ">1</mn><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">]</mo></mrow></mrow></mrow></math></span>.
</p>
</td>
</tr>
</tbody></table>

<p>
The material interpolation schemes penalizing the Young’s modulus
E for the intermediate densities are introduced for obtaining the solution
of the relaxed problem resulting in all elements being either solid or
void elements. <span class = "ph">Tosca Structure</span>
contains multiple material interpolation schemes described in the following.</p>
<div class = "section"><h2 class = "title sectiontitle">SIMP Interpolation</h2>

<p>The <code class = "ph codeph">SIMP</code> (Solid Isotropic Material with Penalization) material interpolation
scheme is defined by</p>

<table class = "table" id = "tso-c-user-TopOpt-Sett-Sensi-MatInt__ag581544"><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 "><mi class = "- topic/foreign ">E</mi><mo class = "- topic/foreign ">=</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">E</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">0</mn></mrow></msub><msup class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ρ</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">p</mi></mrow></msup></mrow></math></span>
</p>
</td>
</tr>
</tbody></table>

<p>
and is very popular in the literature;  see, for example, Mlejnek (1992), Bendsøe and Sigmund
(1999), and Bendsøe and Sigmund (2003) and references therein. The Young’s modulus 
<span class = "ph inlineequation"><math class = "- topic/foreign "><mrow class = "- topic/foreign "><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">E</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">0</mn></mrow></msub></mrow></math></span>
is the Young’s modulus when the element is fully solid material, thus
being the Young’s modulus defined by the user. The penalty factor p defines to what extent the
solution is forced toward a solution with solid or void elements only. The penalty factor p
should be greater than 1. Numerical experiments indicate that p=3 is a good value.
</p>
</div>

<div class = "section"><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">RAMP Interpolation</h2>

<p>The <code class = "ph codeph">RAMP</code> (Rational Approximation of Material Properties) material
interpolation scheme is defined by</p>

<table class = "table" id = "tso-c-user-TopOpt-Sett-Sensi-MatInt__ag581575"><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 "><mi class = "- topic/foreign ">E</mi><mo class = "- topic/foreign ">=</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">E</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">0</mn></mrow></msub><mfrac class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ρ</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">1</mn><mo class = "- topic/foreign ">+</mo><mi class = "- topic/foreign ">p</mi><mo class = "- topic/foreign ">(</mo><mn class = "- topic/foreign ">1</mn><mo class = "- topic/foreign ">−</mo><mi class = "- topic/foreign ">ρ</mi><mo class = "- topic/foreign ">)</mo></mrow></mfrac></mrow></math></span>
</p>
</td>
</tr>
</tbody></table>

<p>
The RAMP interpolation scheme is desirable for dynamic problems because
the interpolation scheme is concave, see Hansen (2005) and Stolpe and
Svanberg (2001). For the RAMP interpolation scheme, the interpolation
factor p should be greater than 0. Numerical experiments indicate that
p=3 is a good value.</p>
<p>The following figure shows the interpolation of the Young’s modulus
for the SIMP and RAMP material scheme, respectively.</p>
<p>For p=1 in SIMP and p=0 in RAMP, the material interpolation is the so-called thickness
    optimization problem that leads to many elements having intermediate densities. By increasing
    the penalization factor p, the intermediate densities turn out to be computationally more
    expensive because elements having intermediate densities require a higher density for having the
    same stiffness as in the thickness optimization problem. Thus, when the penalty factor is
    increased, fewer elements have an intermediate density. However, one should not choose a too
    large penalty factor because then the likelihood for ending up in a local minimum during the
    optimization is significantly higher. If the penalty factor is extremely high, you will always
    end up in a local minimum.</p>
<p>Consequently, a compromise for the penalty factor will be to choose
a value in the interval between 2 and 4 that also agrees with the numerical
experiments.</p>

<table class = "table" id = "tso-c-user-TopOpt-Sett-Sensi-MatInt__ag621690"><caption/><colgroup><col/></colgroup><tbody class = "tbody">
<tr class = "row">
<td class = "entry">
<br/><img class = "image" id = "tso-c-user-TopOpt-Sett-Sensi-MatInt__image_296BE0FE7762482E8F56F9854BF20E92" src = "../TsoUserImages/topo_SIMP_RAMP.png" width = "435" height = "326"/><br/>
</td>
</tr>
</tbody></table>
</div>

  
<div class = "section"><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">PEDE Interpolation</h2>

<p>By default, the optimization algorithm chooses the SIMP interpolation scheme with p=3.
However, if at least one dynamic <span class = "ph">load case</span> 
is used or body loads are present in the model (for example, gravity), the
interpolation scheme is switched to PEDE automatically.</p>

<p> <span class = "ph">Tosca Structure</span>  
might generate different results if the optimization setup is changed in such a way
that would lead to a switch of the interpolation scheme. This can happen even if one
would not expect an influence of the change (for example, adding a nonactive frequency
constraint or changing to an otherwise identical gravity loading). Setting the
interpolation scheme in the optimization parameters will prevent the automatic switch.</p>
<p>The PEDE interpolation might lead to convergence problems if stresses play a role in the optimization. It is highly recommended to use MIMP interpolation in this case.</p>
<p>The <code class = "ph codeph">PEDE</code> material interpolation scheme is proprietary. Therefore, further
    details are omitted here.</p>
</div>

  
<div class = "section"><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">MIMP Interpolation</h2>

<p>The <code class = "ph codeph">MIMP</code> material interpolation is a combination of the SIMP for the
    constitutive material interpolation and a new material interpolation for the physical density.
    It is recommended for strength optimizations where the stress is applied in either objective or
    constraint, especially when mass-dependent quantities (for example, acceleration forces) are present.
    It also improves optimization results for setups with inactive, mass-related design responses,
    such as frequency, where <span class = "ph">Tosca Structure</span> would change per default the material interpolation to PEDE.</p>
<p>In contrast to the other interpolation schemes, when the MIMP interpolation is used,
<span class = "ph">Tosca Structure</span> 
applies the design variable filter algorithm instead of the sensitivities filter.</p>
<p>The <code class = "ph codeph">MIMP</code> material interpolation scheme is proprietary. Therefore, further
    details are omitted here.</p>
</div>

  
<div class = "section"><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">4th-Order Interpolation</h2>

<p>The <code class = "ph codeph">4_TH</code> (4th-order polynomial) material interpolation is defined by</p>

<table class = "table"><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 "><mi class = "- topic/foreign ">E</mi><mo class = "- topic/foreign ">=</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">E</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">0</mn></mrow></msub><mo class = "- topic/foreign ">(</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">a</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">4</mn></mrow></msub><msup class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ρ</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">4</mn></mrow></msup><mo class = "- topic/foreign ">+</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">a</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">3</mn></mrow></msub><msup class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ρ</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">3</mn></mrow></msup><mo class = "- topic/foreign ">+</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">a</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">2</mn></mrow></msub><msup class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ρ</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">2</mn></mrow></msup><mo class = "- topic/foreign ">+</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">a</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">1</mn></mrow></msub><mi class = "- topic/foreign ">ρ</mi><mo class = "- topic/foreign ">+</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">α</mi></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">0</mn></mrow></msub><mo class = "- topic/foreign ">)</mo></mrow></math></span>
</p>
</td>
</tr>
</tbody></table>

<p>This interpolation scheme should be used only by experienced users. The coefficients must be
    defined in a way that the material interpolation is positive in the given range of the relative
    density. It is up to the user that physical bounds are fulfilled; for example, the
    Hashin-Shtrikman bounds. By default, there is no penalization built in, meaning that one would
    not yield solid-void designs.</p>
</div>

    
<div class = "section"><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">Command Examples</h2>

<p>The user has the possibility to choose the interpolation scheme and
the value of the penalty factor using the commands <code class = "ph codeph">MAT_INTERPOLATION</code>
and <code class = "ph codeph">MAT_PENALTY</code>, respectively. The valid values for <code class = "ph codeph">MAT_INTERPOLATION</code>
parameter are <code class = "ph codeph">SIMP</code>, <code class = "ph codeph">RAMP</code>, <code class = "ph codeph">PEDE</code>, <code class = "ph codeph">MIMP</code> and <code class = "ph codeph">4_TH</code>.</p>
  
<p>For example, the SIMP material interpolation scheme and a penalty of 3.5 are used in the
following example:
</p>

<pre class = "codeblock">
OPT_PARAM
 ID_NAME           = opt_params
 OPTIMIZE          = id_of_optimize
 ...
 MAT_INTERPOLATION = SIMP
 MAT_PENALTY       = 3.5
END_
</pre>

<p>The RAMP material interpolation scheme and a penalty of 2.5 are used in
the following example:</p>

<pre class = "codeblock">
OPT_PARAM
 ID_NAME           = opt_params
 OPTIMIZE          = id_of_optimize
 ...               
 MAT_INTERPOLATION = RAMP
 MAT_PENALTY       = 2.5
END_
</pre>

<p>The 4_TH material interpolation scheme and the corresponding coefficients are
defined in <code class = "ph codeph">OPT_PARAM</code> command as follows:</p>

<pre class = "codeblock">
OPT_PARAM
 ID_NAME           = opt_params
 OPTIMIZE          = id_of_optimize
 ...
 MAT_INTERPOLATION = 4_TH
 MAT_0_TH_FACTOR   = 0.0
 MAT_1_TH_FACTOR   = 0.0
 MAT_2_TH_FACTOR   = 0.0
 MAT_3_TH_FACTOR   = 3.0
 MAT_4_TH_FACTOR   = 0.0
END_
</pre>

<p>For the 4_TH material interpolation scheme, the user should also set the required lower and
upper bounds for the relative density using, for example, the following commands:</p>
<pre class = "codeblock">
OPT_PARAM
 ...
 DENSITY_LOWER     = 0.4
 DENSITY_UPPER     = 0.9
 ...
END_
</pre>
</div>

</div>

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