<?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 = "It is possible to apply a simple mode tracking function for the modal analysis using the modal assurance criterion (MAC) including a mass weighting. An example is given in the Tosca Structure Examples Guide"/><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-ModTrack"/><meta name = "DC.language" content = "en"/><link rel = "stylesheet" type = "text/css" href = "../DSDocUI_XML34.css"/><title>Mode Tracking</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-ModTrack">
<a name = "hj-top"> </a><table class = "table1" id = "table11"><tr><td><table class = "DocHeader"><tr><td class = "DocHeader1" colspan = "2"><h1>Mode Tracking</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">It is possible to apply a simple mode tracking function for the modal
analysis using the modal assurance criterion (<code class = "ph codeph">MAC</code>) including
a mass weighting.
An example is given in the Tosca Structure Examples Guide

</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>The mode tracking feature cannot be guaranteed to work properly for
   all examples due to the large material changes during topology optimization.</p>
<p>The modes of the different eigenfrequencies are compared in the modal
assurance criterion (<code class = "ph codeph">MAC</code>) for identifying if the eigenfrequencies
from optimization iteration to optimization iteration have been switching
yielding: </p>
<table class = "table" id = "tso-c-user-TopOpt-Sett-Sensi-ModTrack__ag570740"><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 ">M</mi><mi class = "- topic/foreign ">A</mi><mi class = "- topic/foreign ">C</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">i</mi><mo class = "- topic/foreign ">,</mo><mi class = "- topic/foreign ">j</mi></mrow></msub><mo class = "- topic/foreign ">=</mo><mfrac class = "- topic/foreign "><mrow class = "- topic/foreign "><msup class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">(</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><mi class = "- topic/foreign ">ϕ</mi><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">i</mi></mrow></msub><mo class = "- topic/foreign ">[</mo><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">M</mi><mi class = "- topic/foreign ">a</mi><mi class = "- topic/foreign ">s</mi><mi class = "- topic/foreign ">s</mi><mo class = "- topic/foreign ">]</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ϕ</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">f</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">n</mi><mi class = "- topic/foreign ">c</mi><mi class = "- topic/foreign ">e</mi></mrow></msub><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">j</mi></mrow></msub></mrow><mo class = "- topic/foreign ">)</mo></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">2</mn></mrow></msup></mrow><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">(</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><mi class = "- topic/foreign ">ϕ</mi><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">i</mi></mrow></msub><mo class = "- topic/foreign ">[</mo><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">M</mi><mi class = "- topic/foreign ">a</mi><mi class = "- topic/foreign ">s</mi><mi class = "- topic/foreign ">s</mi><mo class = "- topic/foreign ">]</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><mi class = "- topic/foreign ">ϕ</mi><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">i</mi></mrow></msub><mo class = "- topic/foreign ">)</mo><mo class = "- topic/foreign ">(</mo><mrow class = "- topic/foreign "><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ϕ</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">f</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">n</mi><mi class = "- topic/foreign ">c</mi><mi class = "- topic/foreign ">e</mi></mrow></msub><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">j</mi></mrow></msub><mo class = "- topic/foreign ">[</mo><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">M</mi><mi class = "- topic/foreign ">a</mi><mi class = "- topic/foreign ">s</mi><mi class = "- topic/foreign ">s</mi><mo class = "- topic/foreign ">]</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ϕ</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">f</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">n</mi><mi class = "- topic/foreign ">c</mi><mi class = "- topic/foreign ">e</mi></mrow></msub><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">j</mi></mrow></msub></mrow><mo class = "- topic/foreign ">)</mo></mrow></mrow></mrow></mfrac></mrow></math></span></p></td>
</tr>
</tbody></table>

<p>where the initial modes are equal to the modes of the first iteration. Here, 
<span class = "ph uicontrol">i</span> are the reference modes and <span class = "ph uicontrol">j</span> 
modes in the optimization iteration.
The modes in the first optimization iteration are used for identifying
the eigenfrequencies through the optimization iterations.</p>
<p>The <code class = "ph codeph">MAC</code> matrix is equal to the unity matrix if the initial modes are equal to
the modes in a given optimization iteration. However, this is only the
case in the first optimization iteration due to the optimization changes.
The largest components of the <code class = "ph codeph">MAC</code> matrix are determined in each
optimization iteration for determining if any mode switching should
be present. If significant off-diagonal terms exist in the <code class = "ph codeph">MAC</code>
matrix, it indicates that the mode switching is present. The <code class = "ph codeph">MAC</code>
matrix is printed in the TOSCA.OUT file. Then the user can see how close
to 1 the components of the MAC matrix are and whether mode switching
is present. If all the values in the <code class = "ph codeph">MAC</code> matrix are significantly
below 1, it indicates that the applied mode set does not contain enough
modes for mode tracking.</p>
<p>According to the above equation, mode tracking can lead to a significant
increase in CPU-time. First, all modes of the eigenfrequencies must
be cross-checked with each other. Sometimes a high number of cross-checks
is required. Second, more eigenfrequencies must be calculated by the
finite element solver.</p>
<p>During the optimization, the <code class = "ph codeph">MAC</code> Matrix can look like the following:</p>
<br/><img class = "image" src = "../TsoUserImages/MAC_matrix.png" width = "227"/><br/>
<p>Mode tracking is defined in <code class = "ph codeph">OPT_PARAM</code> command as in the example
below:</p>
<pre class = "codeblock">
<code class = "ph codeph">
OPT_PARAM
 ID_NAME      = opt_params
 OPTIMIZE     = id_of_optimize
 MODETRACKING = ON
 MODENUMBERS  = 15
END_
</code>
</pre>
<p>Setting the command <code class = "ph codeph">MODETRACKING</code> equal to ON activates the mode
tracking. Default for <code class = "ph codeph">MODETRACKING</code> is <code class = "ph codeph">OFF</code>.
Consequently, mode tracking will only be applied if the user requests
mode tracking.</p><p>The value of <code class = "ph codeph">MODENUMBERS</code> specifies how
many eigenfrequencies should be used in the mode tracking. The default
value of mode tracking is 5. In the above example, <code class = "ph codeph">MODENUMBERS</code>
is set to 15 meaning that 15 eigenfrequencies will be used for the mode
tracking. If, for example, one maximizes the first eigenfrequency, this eigenfrequency
will be compared to the 15 specified eigenfrequencies in the <code class = "ph codeph">MODETRACKING</code>
command. It is important that the modal analysis file specified by the
user also leads to an analysis having the same or more eigenfrequencies
than specified in the <code class = "ph codeph">MODENUMBERS</code> command. For this example,
the user should specify at least 15 eigenfrequencies in the finite element
file.</p>
<p>Sometimes it happens that many local modes having a low eigenfrequency appear during the
      optimization iterations. Normally, this will lead to high number for
        <code class = "ph codeph">MODENUMBERS</code>, which is not desirable because of high CPU-time. However, this
      can be partly circumvented by setting a number in the input finite element file avoiding the
      lower eigenfrequencies to be calculated. For example, if it is known that the initial eigenfrequency
      is around 200 Hz, then it should be specified in the finite element input file that the
      eigenfrequencies over 50 Hz only are to be calculated. </p>
<p>To improve the performance, it is additionally possible to restrict
mode tracking to a certain group of nodes in the model (for example, every
fifth node on the surface of the model) or nodes where lumped and rigid
masses are attached. In this case, the node group is referenced in the
<code class = "ph codeph">MODETRACKING</code> parameter as follows:</p>
<pre class = "codeblock">
<code class = "ph codeph">
OPT_PARAM
 ID_NAME      = opt_params
 OPTIMIZE     = id_of_optimize
 MODETRACKING = ON, node_group
 MODENUMBERS  = 15
END_
</code>
</pre>
<p>When a node group is applied in the mode tracking, then the modal assurance
criterion (<code class = "ph codeph">MAC</code>) yields: </p>
<table class = "table" id = "tso-c-user-TopOpt-Sett-Sensi-ModTrack__ag570980"><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 ">M</mi><mi class = "- topic/foreign ">A</mi><mi class = "- topic/foreign ">C</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">i</mi><mo class = "- topic/foreign ">,</mo><mi class = "- topic/foreign ">j</mi></mrow></msub><mo class = "- topic/foreign ">=</mo><mfrac class = "- topic/foreign "><mrow class = "- topic/foreign "><msup class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">(</mo><mo class = "- topic/foreign ">|</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><mi class = "- topic/foreign ">ϕ</mi><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">i</mi></mrow></msub><mo class = "- topic/foreign ">|</mo><mo class = "- topic/foreign ">|</mo><mrow class = "- topic/foreign "><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ϕ</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">f</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">n</mi><mi class = "- topic/foreign ">c</mi><mi class = "- topic/foreign ">e</mi></mrow></msub><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">j</mi></mrow></msub><mo class = "- topic/foreign ">|</mo></mrow><mo class = "- topic/foreign ">)</mo></mrow><mrow class = "- topic/foreign "><mn class = "- topic/foreign ">2</mn></mrow></msup></mrow><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">(</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><mi class = "- topic/foreign ">ϕ</mi><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">i</mi></mrow></msub><mrow class = "- topic/foreign "><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><mi class = "- topic/foreign ">ϕ</mi><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">i</mi></mrow></msub><mo class = "- topic/foreign ">)</mo><mo class = "- topic/foreign ">(</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ϕ</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">f</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">n</mi><mi class = "- topic/foreign ">c</mi><mi class = "- topic/foreign ">e</mi></mrow></msub><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">j</mi></mrow></msub><mrow class = "- topic/foreign "><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mo class = "- topic/foreign ">{</mo><msub class = "- topic/foreign "><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">ϕ</mi></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">f</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">r</mi><mi class = "- topic/foreign ">e</mi><mi class = "- topic/foreign ">n</mi><mi class = "- topic/foreign ">c</mi><mi class = "- topic/foreign ">e</mi></mrow></msub><mo class = "- topic/foreign ">}</mo></mrow><mrow class = "- topic/foreign "><mi class = "- topic/foreign ">j</mi></mrow></msub><mo class = "- topic/foreign ">)</mo></mrow></mrow></mrow></mfrac></mrow></math></span></p></td>
</tr>
</tbody></table>

<p>where the modes are not scaled with the mass. Therefore, the nodes
of the applied group are often chosen to be the nodes of frozen elements,
lumped, or rigid masses. </p>
<p><table class = "Remark" id = "table132"><tr><td class = "Remark"><span class = "run-in.important">Important:
				</span><span class = "notecontent"><ul class = "ul" id = "tso-c-user-TopOpt-Sett-Sensi-ModTrack__ul_AF65BBCFC4354214855C6A4DD5F932A1">
<li class = "li">The finite element input file specified by the user should contain a
modal analysis containing at least as many eigenfrequencies as the value
of the <code class = "ph codeph">MODENUMBERS</code> parameter.</li>
<li class = "li">A general rule for keeping the MODENUMBERS low and thereby saving
CPU-time is to specify a lower bound for the calculated eigenfrequencies
in the finite element file. Choosing 25% of the expected eigenfrequency
as the lower bound usually suffices. For example, if the initial eigenfrequency
of interest in the first optimization iteration is around 100 Hz, then
it can be specified that only the eigenfrequencies over 25 Hz are to
be calculated. </li>
<li class = "li">The mode tracking feature cannot be guaranteed to work for all examples.</li>
<li class = "li">Mode tracking is not recommended for the Kreisselmeier-Steinhauser
formulation.</li>
<li class = "li">Mode tracking can increase the CPU-time significantly for both the finite
element solver and <span class = "ph">SIMULIA Tosca Structure</span>.
Restrict mode tracking to a smaller representative group of nodes to
gain performance.</li>
</ul></span></td></tr></table>
</p>
 </div>

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