nass-micro-station-measurem.../modal-analysis/mathematical_model.html

508 lines
19 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2019-10-08 mar. 10:48 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Modal Analysis - Derivation of Mathematical Models</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { width: 90%; }
/*]]>*/-->
</style>
<link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
<link rel="stylesheet" type="text/css" href="../css/zenburn.css"/>
<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript" src="../js/bootstrap.min.js"></script>
<script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="../js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2019 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
displayAlign: "center",
displayIndent: "0em",
"HTML-CSS": { scale: 100,
linebreaks: { automatic: "false" },
webFont: "TeX"
},
SVG: {scale: 100,
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em"
}
});
</script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
</head>
<body>
<div id="org-div-home-and-up">
<a accesskey="h" href="./index.html"> UP </a>
|
<a accesskey="H" href="../index.html"> HOME </a>
</div><div id="content">
<h1 class="title">Modal Analysis - Derivation of Mathematical Models</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org93dde66">1. Type of Model</a></li>
<li><a href="#orgfd7d140">2. <span class="todo TODO">TODO</span> Extract Physical Matrices</a></li>
<li><a href="#orgdaaea25">3. Some notes about constraining the number of degrees of freedom</a></li>
</ul>
</div>
</div>
<div id="outline-container-org93dde66" class="outline-2">
<h2 id="org93dde66"><span class="section-number-2">1</span> Type of Model</h2>
<div class="outline-text-2" id="text-1">
<p>
The model that we want to obtain is a <b>multi-body model</b>.
It is composed of several <b>solid bodies connected with springs and dampers</b>.
The solid bodies are represented with different colors on figure <a href="#org4703119">1</a>.
</p>
<p>
In the simscape model, the solid bodies are:
</p>
<ul class="org-ul">
<li>the granite (1 or 2 solids)</li>
<li>the translation stage</li>
<li>the tilt stage</li>
<li>the spindle and slip-ring</li>
<li>the hexapod</li>
</ul>
<div id="org4703119" class="figure">
<p><img src="img/nass_solidworks.png" alt="nass_solidworks.png" width="800px" />
</p>
<p><span class="figure-number">Figure 1: </span>CAD view of the ID31 Micro-Station</p>
</div>
<p>
However, each of the DOF of the system may not be relevant for the modes present in the frequency band of interest.
For instance, the translation stage may not vibrate in the Z direction for all the modes identified. Then, we can block this DOF and this simplifies the model.
</p>
<p>
The modal identification done here will thus permit us to determine <b>which DOF can be neglected</b>.
</p>
</div>
</div>
<div id="outline-container-orgfd7d140" class="outline-2">
<h2 id="orgfd7d140"><span class="section-number-2">2</span> <span class="todo TODO">TODO</span> Extract Physical Matrices</h2>
<div class="outline-text-2" id="text-2">
<p>
<a class='org-ref-reference' href="#wang11_extrac_real_modes_physic_matric">wang11_extrac_real_modes_physic_matric</a>
</p>
<p>
Let's recall that:
\[ \Lambda = \begin{bmatrix}
s_1 & & 0 \\
& \ddots & \\
0 & & s_N
\end{bmatrix}_{N \times N}; \quad \Psi = \begin{bmatrix}
& & \\
\{\psi_1\} & \dots & \{\psi_N\} \\
& &
\end{bmatrix}_{M \times N} ; \quad A = \begin{bmatrix}
a_1 & & 0 \\
& \ddots & \\
0 & & a_N
\end{bmatrix}_{N \times N}; \]
</p>
\begin{align}
M &= \frac{1}{2} \left[ \text{Re}(\Psi A^{-1} \Lambda \Psi^T ) \right]^{-1} \\
C &= -2 M \text{Re}(\Psi A^{-1} \Lambda^2 A^{-1} \Psi^T ) M \\
K &= -\frac{1}{2} \left[ \text{Re}(\Psi \Lambda^{-1} A^{-1} \Psi^T) \right]^{-1}
\end{align}
<div class="org-src-container">
<pre class="src src-matlab">psi = eigen_vec_CoM;
a = modal_a_M;
lambda = eigen_val_M;
M = <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">5</span><span class="org-type">*</span>inv<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>psi<span class="org-type">*</span>inv<span class="org-rainbow-delimiters-depth-3">(</span>a<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">*</span>lambda<span class="org-type">*</span>psi'<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
C = <span class="org-type">-</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span>M<span class="org-type">*</span>real<span class="org-rainbow-delimiters-depth-1">(</span>psi<span class="org-type">*</span>inv<span class="org-rainbow-delimiters-depth-2">(</span>a<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span>lambda<span class="org-type">^</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span>inv<span class="org-rainbow-delimiters-depth-2">(</span>a<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span>psi'<span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">*</span>M;
K = <span class="org-type">-</span><span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">5</span><span class="org-type">*</span>inv<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>psi<span class="org-type">*</span>inv<span class="org-rainbow-delimiters-depth-3">(</span>lambda<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">*</span>inv<span class="org-rainbow-delimiters-depth-3">(</span>a<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">*</span>psi'<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<p>
From <a class='org-ref-reference' href="#ewins00_modal">ewins00_modal</a>
</p>
\begin{align}
[M] &= [\Phi]^{-T} [I] [\Phi]^{-1} \\
[K] &= [\Phi]^{-T} [\lambda_r^2] [\Phi]^{-1}
\end{align}
</div>
</div>
<div id="outline-container-orgdaaea25" class="outline-2">
<h2 id="orgdaaea25"><span class="section-number-2">3</span> Some notes about constraining the number of degrees of freedom</h2>
<div class="outline-text-2" id="text-3">
<p>
We want to have the two eigen matrices.
</p>
<p>
They should have the same size \(n \times n\) where \(n\) is the number of modes as well as the number of degrees of freedom.
Thus, if we consider 21 modes, we should restrict our system to have only 21 DOFs.
</p>
<p>
Actually, we are measured 6 DOFs of 6 solids, thus we have 36 DOFs.
</p>
<p>
From the mode shapes animations, it seems that in the frequency range of interest, the two marbles can be considered as one solid.
We thus have 5 solids and 30 DOFs.
</p>
<p>
In order to determine which DOF can be neglected, two solutions seems possible:
</p>
<ul class="org-ul">
<li>compare the mode shapes</li>
<li>compare the FRFs</li>
</ul>
<p>
The question is: in which base (frame) should be express the modes shapes and FRFs?
Is it meaningful to compare mode shapes as they give no information about the amplitudes of vibration?
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Stage</th>
<th scope="col" class="org-right">Motion DOFs</th>
<th scope="col" class="org-right">Parasitic DOF</th>
<th scope="col" class="org-right">Total DOF</th>
<th scope="col" class="org-left">Description of DOF</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Granite</td>
<td class="org-right">0</td>
<td class="org-right">3</td>
<td class="org-right">3</td>
<td class="org-left">&#xa0;</td>
</tr>
<tr>
<td class="org-left">Ty</td>
<td class="org-right">1</td>
<td class="org-right">2</td>
<td class="org-right">3</td>
<td class="org-left">Ty, Rz</td>
</tr>
<tr>
<td class="org-left">Ry</td>
<td class="org-right">1</td>
<td class="org-right">2</td>
<td class="org-right">3</td>
<td class="org-left">Ry,</td>
</tr>
<tr>
<td class="org-left">Rz</td>
<td class="org-right">1</td>
<td class="org-right">2</td>
<td class="org-right">3</td>
<td class="org-left">Rz, Rx, Ry</td>
</tr>
<tr>
<td class="org-left">Hexapod</td>
<td class="org-right">6</td>
<td class="org-right">0</td>
<td class="org-right">6</td>
<td class="org-left">Txyz, Rxyz</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left">&#xa0;</td>
<td class="org-right">9</td>
<td class="org-right">9</td>
<td class="org-right">18</td>
<td class="org-left">&#xa0;</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>
<h1 class='org-ref-bib-h1'>Bibliography</h1>
<ul class='org-ref-bib'><li><a id="wang11_extrac_real_modes_physic_matric">[wang11_extrac_real_modes_physic_matric]</a> <a name="wang11_extrac_real_modes_physic_matric"></a>Tong Wang, Lingmi Zhang & Kong Fah Tee, Extraction of Real Modes and Physical Matrices From Modal Testing, <i>Earthquake Engineering and Engineering Vibration</i>, <b>10(2)</b>, 219-227 (2011). <a href="https://doi.org/10.1007/s11803-011-0060-6">link</a>. <a href="http://dx.doi.org/10.1007/s11803-011-0060-6">doi</a>.</li>
<li><a id="ewins00_modal">[ewins00_modal]</a> <a name="ewins00_modal"></a>Ewins, Modal testing: theory, practice and application, Wiley-Blackwell (2000).</li>
</ul>
</p>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2019-10-08 mar. 10:48</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>