1114 lines
		
	
	
		
			62 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			1114 lines
		
	
	
		
			62 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-07-02 mar. 17:45 -->
 | 
						|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 | 
						|
<meta name="viewport" content="width=device-width, initial-scale=1" />
 | 
						|
<title>Modal Analysis</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</h1>
 | 
						|
<div id="table-of-contents">
 | 
						|
<h2>Table of Contents</h2>
 | 
						|
<div id="text-table-of-contents">
 | 
						|
<ul>
 | 
						|
<li><a href="#org356e5b0">1. Setup</a></li>
 | 
						|
<li><a href="#org8fdd762">2. Mode extraction and importation</a></li>
 | 
						|
<li><a href="#org689c124">3. Positions of the sensors</a></li>
 | 
						|
<li><a href="#org8972c45">4. Solids</a></li>
 | 
						|
<li><a href="#orgc79f768">5. From local coordinates to global coordinates</a></li>
 | 
						|
<li><a href="#orgaa2d870">6. Modal Matrices</a></li>
 | 
						|
<li><a href="#org16e1add">7. Modal Complexity</a></li>
 | 
						|
<li><a href="#orgc33fb24">8. Some notes about constraining the number of degrees of freedom</a></li>
 | 
						|
<li><a href="#orgd17ef15">9. <span class="todo TODO">TODO</span> Normalization of mode shapes?</a></li>
 | 
						|
<li><a href="#orgc7fe2ae">10. Compare Mode Shapes</a></li>
 | 
						|
<li><a href="#org1ec0de2">11. <span class="todo TODO">TODO</span> Synthesis of FRF curves</a></li>
 | 
						|
</ul>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-org356e5b0" class="outline-2">
 | 
						|
<h2 id="org356e5b0"><span class="section-number-2">1</span> Setup</h2>
 | 
						|
<div class="outline-text-2" id="text-1">
 | 
						|
 | 
						|
<div id="org44c15fe" class="figure">
 | 
						|
<p><img src="figs/nass-modal-test.png" alt="nass-modal-test.png" />
 | 
						|
</p>
 | 
						|
<p><span class="figure-number">Figure 1: </span>Position and orientation of the accelerometer used</p>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-org8fdd762" class="outline-2">
 | 
						|
<h2 id="org8fdd762"><span class="section-number-2">2</span> Mode extraction and importation</h2>
 | 
						|
<div class="outline-text-2" id="text-2">
 | 
						|
<p>
 | 
						|
First, we split the big <code>modes.asc</code> files into sub text files using <code>bash</code>.
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-bash">sed <span class="org-string">'/^\s*[0-9]*[XYZ][+-]:/!d'</span> modal_analysis_updated/modes.asc > mat/mode_shapes.txt
 | 
						|
sed <span class="org-string">'/freq/!d'</span> modal_analysis_updated/modes.asc | sed <span class="org-string">'s/.* = \(.*\)Hz/\1/'</span> > mat/mode_freqs.txt
 | 
						|
sed <span class="org-string">'/damp/!d'</span> modal_analysis_updated/modes.asc | sed <span class="org-string">'s/.* = \(.*\)\%/\1/'</span> > mat/mode_damps.txt
 | 
						|
sed <span class="org-string">'/modal A/!d'</span> modal_analysis_updated/modes.asc | sed <span class="org-string">'s/.* =\s\+\([-0-9.e]\++[0-9]\+\)\([-+0-9.e]\+\)i/\1 \2/'</span> > mat/mode_modal_a.txt
 | 
						|
sed <span class="org-string">'/modal B/!d'</span> modal_analysis_updated/modes.asc | sed <span class="org-string">'s/.* =\s\+\([-0-9.e]\++[0-9]\+\)\([-+0-9.e]\+\)i/\1 \2/'</span> > mat/mode_modal_b.txt
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>
 | 
						|
Then we import them on Matlab.
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">shapes = readtable<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/mode_shapes.txt', 'ReadVariableNames'</span>, false<span class="org-rainbow-delimiters-depth-1">)</span>; <span class="org-comment">% [Sign / Real / Imag]</span>
 | 
						|
freqs = table2array<span class="org-rainbow-delimiters-depth-1">(</span>readtable<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'mat/mode_freqs.txt', 'ReadVariableNames'</span>, false<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>; <span class="org-comment">% in [Hz]</span>
 | 
						|
damps = table2array<span class="org-rainbow-delimiters-depth-1">(</span>readtable<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'mat/mode_damps.txt', 'ReadVariableNames'</span>, false<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>; <span class="org-comment">% in [%]</span>
 | 
						|
modal_a = table2array<span class="org-rainbow-delimiters-depth-1">(</span>readtable<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'mat/mode_modal_a.txt', 'ReadVariableNames'</span>, false<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>; <span class="org-comment">% [Real / Imag]</span>
 | 
						|
modal_a = complex<span class="org-rainbow-delimiters-depth-1">(</span>modal_a<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>, modal_a<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
modal_b = table2array<span class="org-rainbow-delimiters-depth-1">(</span>readtable<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'mat/mode_modal_b.txt', 'ReadVariableNames'</span>, false<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>; <span class="org-comment">% [Real / Imag]</span>
 | 
						|
modal_b = complex<span class="org-rainbow-delimiters-depth-1">(</span>modal_b<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>, modal_b<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>
 | 
						|
We guess the number of modes identified from the length of the imported data.
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">acc_n = <span class="org-highlight-numbers-number">23</span>; <span class="org-comment">% Number of accelerometers</span>
 | 
						|
dir_n = <span class="org-highlight-numbers-number">3</span>; <span class="org-comment">% Number of directions</span>
 | 
						|
dirs = <span class="org-string">'XYZ'</span>;
 | 
						|
 | 
						|
mod_n = size<span class="org-rainbow-delimiters-depth-1">(</span>shapes,<span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">/</span>acc_n<span class="org-type">/</span>dir_n; <span class="org-comment">% Number of modes</span>
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>
 | 
						|
As the mode shapes are split into 3 parts (direction plus sign, real part and imaginary part), we aggregate them into one array of complex numbers.
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">T_sign = table2array<span class="org-rainbow-delimiters-depth-1">(</span>shapes<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
T_real = table2array<span class="org-rainbow-delimiters-depth-1">(</span>shapes<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
T_imag = table2array<span class="org-rainbow-delimiters-depth-1">(</span>shapes<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
 | 
						|
modes = zeros<span class="org-rainbow-delimiters-depth-1">(</span>mod_n, acc_n, dir_n<span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
 | 
						|
<span class="org-keyword">for</span> <span class="org-variable-name">mod_i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:mod_n</span>
 | 
						|
  <span class="org-keyword">for</span> <span class="org-variable-name">acc_i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:acc_n</span>
 | 
						|
    <span class="org-comment">% Get the correct section of the signs</span>
 | 
						|
    T = T_sign<span class="org-rainbow-delimiters-depth-1">(</span>acc_n<span class="org-type">*</span>dir_n<span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>mod_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>acc_n<span class="org-type">*</span>dir_n<span class="org-type">*</span>mod_i<span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
    <span class="org-keyword">for</span> <span class="org-variable-name">dir_i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:dir_n</span>
 | 
						|
      <span class="org-comment">% Get the line corresponding to the sensor</span>
 | 
						|
      <span class="org-constant">i</span> = find<span class="org-rainbow-delimiters-depth-1">(</span>contains<span class="org-rainbow-delimiters-depth-2">(</span>T, sprintf<span class="org-rainbow-delimiters-depth-3">(</span>'<span class="org-comment">%i</span>%s',acc_i, dirs(dir_i))), <span class="org-highlight-numbers-number">1</span>, 'first')<span class="org-type">+</span>acc_n<span class="org-type">*</span>dir_n<span class="org-type">*</span>(mod_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span>);
 | 
						|
      modes<span class="org-rainbow-delimiters-depth-4">(</span>mod_i, acc_i, dir_i<span class="org-rainbow-delimiters-depth-4">)</span> = str2num<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">[</span>T_sign<span class="org-rainbow-delimiters-depth-6">{</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-6">}(</span>end<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-6">)</span>, '<span class="org-highlight-numbers-number">1</span>'<span class="org-rainbow-delimiters-depth-5">]</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">*</span>complex<span class="org-rainbow-delimiters-depth-4">(</span>T_real<span class="org-rainbow-delimiters-depth-5">(</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-5">)</span>,T_imag<span class="org-rainbow-delimiters-depth-5">(</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span>;
 | 
						|
    <span class="org-keyword">end</span>
 | 
						|
  <span class="org-keyword">end</span>
 | 
						|
<span class="org-keyword">end</span>
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>
 | 
						|
The obtained mode frequencies and damping are shown below.
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">data2orgtable<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span>freqs, damps<span class="org-rainbow-delimiters-depth-2">]</span>, <span class="org-rainbow-delimiters-depth-2">{}</span>, <span class="org-rainbow-delimiters-depth-2">{</span>'Frequency <span class="org-rainbow-delimiters-depth-3">[</span>Hz<span class="org-rainbow-delimiters-depth-3">]</span>', 'Damping <span class="org-rainbow-delimiters-depth-3">[</span><span class="org-comment">%]'}, ' </span>%.<span class="org-highlight-numbers-number">1f</span> ');
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
 | 
						|
 | 
						|
 | 
						|
<colgroup>
 | 
						|
<col  class="org-right" />
 | 
						|
 | 
						|
<col  class="org-right" />
 | 
						|
</colgroup>
 | 
						|
<thead>
 | 
						|
<tr>
 | 
						|
<th scope="col" class="org-right">Frequency [Hz]</th>
 | 
						|
<th scope="col" class="org-right">Damping [%]</th>
 | 
						|
</tr>
 | 
						|
</thead>
 | 
						|
<tbody>
 | 
						|
<tr>
 | 
						|
<td class="org-right">11.4</td>
 | 
						|
<td class="org-right">8.7</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">18.5</td>
 | 
						|
<td class="org-right">11.8</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">37.6</td>
 | 
						|
<td class="org-right">6.4</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">39.4</td>
 | 
						|
<td class="org-right">3.6</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">54.0</td>
 | 
						|
<td class="org-right">0.2</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">56.1</td>
 | 
						|
<td class="org-right">2.8</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">69.7</td>
 | 
						|
<td class="org-right">4.6</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">71.6</td>
 | 
						|
<td class="org-right">0.6</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">72.4</td>
 | 
						|
<td class="org-right">1.6</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">84.9</td>
 | 
						|
<td class="org-right">3.6</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">90.6</td>
 | 
						|
<td class="org-right">0.3</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">91.0</td>
 | 
						|
<td class="org-right">2.9</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">95.8</td>
 | 
						|
<td class="org-right">3.3</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">105.4</td>
 | 
						|
<td class="org-right">3.3</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">106.8</td>
 | 
						|
<td class="org-right">1.9</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">112.6</td>
 | 
						|
<td class="org-right">3.0</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">116.8</td>
 | 
						|
<td class="org-right">2.7</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">124.1</td>
 | 
						|
<td class="org-right">0.6</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">145.4</td>
 | 
						|
<td class="org-right">1.6</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">150.1</td>
 | 
						|
<td class="org-right">2.2</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">164.7</td>
 | 
						|
<td class="org-right">1.4</td>
 | 
						|
</tr>
 | 
						|
</tbody>
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-org689c124" class="outline-2">
 | 
						|
<h2 id="org689c124"><span class="section-number-2">3</span> Positions of the sensors</h2>
 | 
						|
<div class="outline-text-2" id="text-3">
 | 
						|
<p>
 | 
						|
We process the file exported from the <code>modal</code> software containing the positions of the sensors using <code>bash</code>.
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-bash">cat modal_analysis_updated/id31_nanostation_modified.cfg | grep NODES -A <span class="org-highlight-numbers-number">23</span> | sed <span class="org-string">'/\s\+[0-9]\+/!d'</span> | sed <span class="org-string">'s/\(.*\)\s\+0\s\+.\+/\1/'</span> > mat/acc_pos.txt
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>
 | 
						|
We then import that on <code>matlab</code>, and sort them.
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">acc_pos = readtable<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/acc_pos.txt', 'ReadVariableNames'</span>, false<span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
acc_pos = table2array<span class="org-rainbow-delimiters-depth-1">(</span>acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">4</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
<span class="org-rainbow-delimiters-depth-1">[</span><span class="org-type">~</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">]</span> = sort<span class="org-rainbow-delimiters-depth-1">(</span>acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
acc_pos = acc_pos<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">2</span><span class="org-type">:</span><span class="org-highlight-numbers-number">4</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>
 | 
						|
The positions of the sensors relative to the point of interest are shown below.
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">data2orgtable<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1000</span><span class="org-type">*</span>acc_pos, <span class="org-rainbow-delimiters-depth-2">{}</span>, <span class="org-rainbow-delimiters-depth-2">{</span>'x <span class="org-rainbow-delimiters-depth-3">[</span>mm<span class="org-rainbow-delimiters-depth-3">]</span>', 'y <span class="org-rainbow-delimiters-depth-3">[</span>mm<span class="org-rainbow-delimiters-depth-3">]</span>', 'z <span class="org-rainbow-delimiters-depth-3">[</span>mm<span class="org-rainbow-delimiters-depth-3">]</span>'<span class="org-rainbow-delimiters-depth-2">}</span>, ' %.<span class="org-highlight-numbers-number">0f</span> ');
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
 | 
						|
 | 
						|
 | 
						|
<colgroup>
 | 
						|
<col  class="org-right" />
 | 
						|
 | 
						|
<col  class="org-right" />
 | 
						|
 | 
						|
<col  class="org-right" />
 | 
						|
</colgroup>
 | 
						|
<thead>
 | 
						|
<tr>
 | 
						|
<th scope="col" class="org-right">x [mm]</th>
 | 
						|
<th scope="col" class="org-right">y [mm]</th>
 | 
						|
<th scope="col" class="org-right">z [mm]</th>
 | 
						|
</tr>
 | 
						|
</thead>
 | 
						|
<tbody>
 | 
						|
<tr>
 | 
						|
<td class="org-right">-64</td>
 | 
						|
<td class="org-right">-64</td>
 | 
						|
<td class="org-right">-296</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">-64</td>
 | 
						|
<td class="org-right">64</td>
 | 
						|
<td class="org-right">-296</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">64</td>
 | 
						|
<td class="org-right">64</td>
 | 
						|
<td class="org-right">-296</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">64</td>
 | 
						|
<td class="org-right">-64</td>
 | 
						|
<td class="org-right">-296</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">-385</td>
 | 
						|
<td class="org-right">-300</td>
 | 
						|
<td class="org-right">-417</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">-420</td>
 | 
						|
<td class="org-right">280</td>
 | 
						|
<td class="org-right">-417</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">420</td>
 | 
						|
<td class="org-right">280</td>
 | 
						|
<td class="org-right">-417</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">380</td>
 | 
						|
<td class="org-right">-300</td>
 | 
						|
<td class="org-right">-417</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">-475</td>
 | 
						|
<td class="org-right">-414</td>
 | 
						|
<td class="org-right">-427</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">-465</td>
 | 
						|
<td class="org-right">407</td>
 | 
						|
<td class="org-right">-427</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">475</td>
 | 
						|
<td class="org-right">424</td>
 | 
						|
<td class="org-right">-427</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">475</td>
 | 
						|
<td class="org-right">-419</td>
 | 
						|
<td class="org-right">-427</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">-320</td>
 | 
						|
<td class="org-right">-446</td>
 | 
						|
<td class="org-right">-786</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">-480</td>
 | 
						|
<td class="org-right">534</td>
 | 
						|
<td class="org-right">-786</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">450</td>
 | 
						|
<td class="org-right">534</td>
 | 
						|
<td class="org-right">-786</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">295</td>
 | 
						|
<td class="org-right">-481</td>
 | 
						|
<td class="org-right">-786</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">-730</td>
 | 
						|
<td class="org-right">-526</td>
 | 
						|
<td class="org-right">-951</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">-735</td>
 | 
						|
<td class="org-right">814</td>
 | 
						|
<td class="org-right">-951</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">875</td>
 | 
						|
<td class="org-right">799</td>
 | 
						|
<td class="org-right">-951</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">865</td>
 | 
						|
<td class="org-right">-506</td>
 | 
						|
<td class="org-right">-951</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">-155</td>
 | 
						|
<td class="org-right">-90</td>
 | 
						|
<td class="org-right">-594</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">0</td>
 | 
						|
<td class="org-right">180</td>
 | 
						|
<td class="org-right">-594</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td class="org-right">155</td>
 | 
						|
<td class="org-right">-90</td>
 | 
						|
<td class="org-right">-594</td>
 | 
						|
</tr>
 | 
						|
</tbody>
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-org8972c45" class="outline-2">
 | 
						|
<h2 id="org8972c45"><span class="section-number-2">4</span> Solids</h2>
 | 
						|
<div class="outline-text-2" id="text-4">
 | 
						|
<p>
 | 
						|
We consider the following solid bodies:
 | 
						|
</p>
 | 
						|
<ul class="org-ul">
 | 
						|
<li>Bottom Granite</li>
 | 
						|
<li>Top Granite</li>
 | 
						|
<li>Translation Stage</li>
 | 
						|
<li>Tilt Stage</li>
 | 
						|
<li>Spindle</li>
 | 
						|
<li>Hexapod</li>
 | 
						|
</ul>
 | 
						|
 | 
						|
<p>
 | 
						|
We create a structure <code>solids</code> that contains the accelerometer number of each solid bodies (as shown on figure <a href="#org44c15fe">1</a>).
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">solids = <span class="org-rainbow-delimiters-depth-1">{}</span>;
 | 
						|
solids.granite_bot = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">17</span>, <span class="org-highlight-numbers-number">18</span>, <span class="org-highlight-numbers-number">19</span>, <span class="org-highlight-numbers-number">20</span><span class="org-rainbow-delimiters-depth-1">]</span>;
 | 
						|
solids.granite_top = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">13</span>, <span class="org-highlight-numbers-number">14</span>, <span class="org-highlight-numbers-number">15</span>, <span class="org-highlight-numbers-number">16</span><span class="org-rainbow-delimiters-depth-1">]</span>;
 | 
						|
solids.ty          = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">9</span>, <span class="org-highlight-numbers-number">10</span>, <span class="org-highlight-numbers-number">11</span>, <span class="org-highlight-numbers-number">12</span><span class="org-rainbow-delimiters-depth-1">]</span>;
 | 
						|
solids.ry          = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">5</span>, <span class="org-highlight-numbers-number">6</span>, <span class="org-highlight-numbers-number">7</span>, <span class="org-highlight-numbers-number">8</span><span class="org-rainbow-delimiters-depth-1">]</span>;
 | 
						|
solids.rz          = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">21</span>, <span class="org-highlight-numbers-number">22</span>, <span class="org-highlight-numbers-number">23</span><span class="org-rainbow-delimiters-depth-1">]</span>;
 | 
						|
solids.hexa        = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">4</span><span class="org-rainbow-delimiters-depth-1">]</span>;
 | 
						|
 | 
						|
solid_names = fields<span class="org-rainbow-delimiters-depth-1">(</span>solids<span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-orgc79f768" class="outline-2">
 | 
						|
<h2 id="orgc79f768"><span class="section-number-2">5</span> From local coordinates to global coordinates</h2>
 | 
						|
<div class="outline-text-2" id="text-5">
 | 
						|
 | 
						|
<div class="figure">
 | 
						|
<p><img src="Figures/local_to_global_coordinates.png" alt="local_to_global_coordinates.png" />
 | 
						|
</p>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>
 | 
						|
From the figure above, we can write:
 | 
						|
</p>
 | 
						|
\begin{align*}
 | 
						|
  \vec{v}_1 &= \vec{v} + \Omega \vec{p}_1\\
 | 
						|
  \vec{v}_2 &= \vec{v} + \Omega \vec{p}_2\\
 | 
						|
  \vec{v}_3 &= \vec{v} + \Omega \vec{p}_3\\
 | 
						|
  \vec{v}_4 &= \vec{v} + \Omega \vec{p}_4
 | 
						|
\end{align*}
 | 
						|
 | 
						|
<p>
 | 
						|
With
 | 
						|
</p>
 | 
						|
\begin{equation}
 | 
						|
  \Omega = \begin{bmatrix}
 | 
						|
  0 & -\Omega_z & \Omega_y \\
 | 
						|
  \Omega_z & 0 & -\Omega_x \\
 | 
						|
  -\Omega_y & \Omega_x & 0
 | 
						|
\end{bmatrix}
 | 
						|
\end{equation}
 | 
						|
<p>
 | 
						|
\(\vec{v}\) and \(\Omega\) represent to velocity and rotation of the solid expressed in the frame \(\{O\}\).
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
We can rearrange the equations in a matrix form:
 | 
						|
</p>
 | 
						|
 | 
						|
\begin{equation}
 | 
						|
\left[\begin{array}{ccc|ccc}
 | 
						|
  1 & 0 & 0 & 0 & p_{1z} & -p_{1y} \\
 | 
						|
  0 & 1 & 0 & -p_{1z} & 0 & p_{1x} \\
 | 
						|
  0 & 0 & 1 & p_{1y} & -p_{1x} & 0 \\ \hline
 | 
						|
    & \vdots &   &    & \vdots &   \\ \hline
 | 
						|
  1 & 0 & 0 & 0 & p_{4z} & -p_{4y} \\
 | 
						|
  0 & 1 & 0 & -p_{4z} & 0 & p_{4x} \\
 | 
						|
  0 & 0 & 1 & p_{4y} & -p_{4x} & 0
 | 
						|
\end{array}\right] \begin{bmatrix}
 | 
						|
  v_x \\ v_y \\ v_z \\ \hline \Omega_x \\ \Omega_y \\ \Omega_z
 | 
						|
\end{bmatrix} = \begin{bmatrix}
 | 
						|
  v_{1x} \\ v_{1y} \\ v_{1z} \\\hline \vdots \\\hline v_{4x} \\ v_{4y} \\ v_{4z}
 | 
						|
\end{bmatrix}
 | 
						|
\end{equation}
 | 
						|
 | 
						|
<p>
 | 
						|
and then we obtain the velocity and rotation of the solid in the wanted frame \(\{O\}\):
 | 
						|
</p>
 | 
						|
\begin{equation}
 | 
						|
\begin{bmatrix}
 | 
						|
  v_x \\ v_y \\ v_z \\ \hline \Omega_x \\ \Omega_y \\ \Omega_z
 | 
						|
\end{bmatrix} =
 | 
						|
\left[\begin{array}{ccc|ccc}
 | 
						|
  1 & 0 & 0 & 0 & p_{1z} & -p_{1y} \\
 | 
						|
  0 & 1 & 0 & -p_{1z} & 0 & p_{1x} \\
 | 
						|
  0 & 0 & 1 & p_{1y} & -p_{1x} & 0 \\ \hline
 | 
						|
    & \vdots &   &    & \vdots &   \\ \hline
 | 
						|
  1 & 0 & 0 & 0 & p_{4z} & -p_{4y} \\
 | 
						|
  0 & 1 & 0 & -p_{4z} & 0 & p_{4x} \\
 | 
						|
  0 & 0 & 1 & p_{4y} & -p_{4x} & 0
 | 
						|
\end{array}\right]^{-1} \begin{bmatrix}
 | 
						|
  v_{1x} \\ v_{1y} \\ v_{1z} \\\hline \vdots \\\hline v_{4x} \\ v_{4y} \\ v_{4z}
 | 
						|
\end{bmatrix}
 | 
						|
\end{equation}
 | 
						|
 | 
						|
<p>
 | 
						|
This inversion is equivalent to a mean square problem.
 | 
						|
</p>
 | 
						|
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">mode_shapes_O = zeros<span class="org-rainbow-delimiters-depth-1">(</span>mod_n, length<span class="org-rainbow-delimiters-depth-2">(</span>solid_names<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-highlight-numbers-number">6</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
 | 
						|
<span class="org-keyword">for</span> <span class="org-variable-name">mod_i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:mod_n</span>
 | 
						|
  <span class="org-keyword">for</span> <span class="org-variable-name">solid_i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">solid_names</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
 | 
						|
    solids_i = solids.<span class="org-rainbow-delimiters-depth-1">(</span>solid_names<span class="org-rainbow-delimiters-depth-2">{</span>solid_i<span class="org-rainbow-delimiters-depth-2">}</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
 | 
						|
    Y = reshape<span class="org-rainbow-delimiters-depth-1">(</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>modes<span class="org-rainbow-delimiters-depth-3">(</span>mod_i, solids_i, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>', <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
 | 
						|
    A = zeros<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span>length<span class="org-rainbow-delimiters-depth-2">(</span>solids_i<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-highlight-numbers-number">6</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
    <span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">solids_i</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
 | 
						|
      A<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-1">)</span> = eye<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
 | 
						|
      A<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">4</span><span class="org-type">:</span><span class="org-highlight-numbers-number">6</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">0</span> acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">-</span>acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span> ; <span class="org-type">-</span>acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-highlight-numbers-number">0</span> acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span> ; acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">-</span>acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-1">]</span>;
 | 
						|
    <span class="org-keyword">end</span>
 | 
						|
 | 
						|
    mode_shapes_O<span class="org-rainbow-delimiters-depth-1">(</span>mod_i, solid_i, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-1">)</span> = A<span class="org-type">\</span>Y;
 | 
						|
  <span class="org-keyword">end</span>
 | 
						|
<span class="org-keyword">end</span>
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-orgaa2d870" class="outline-2">
 | 
						|
<h2 id="orgaa2d870"><span class="section-number-2">6</span> Modal Matrices</h2>
 | 
						|
<div class="outline-text-2" id="text-6">
 | 
						|
<p>
 | 
						|
We want to obtain the two following matrices:
 | 
						|
\[ \Omega = \begin{bmatrix}
 | 
						|
  \omega_1^2 &        & 0 \\
 | 
						|
             & \ddots &   \\
 | 
						|
  0          &        & \omega_n^2
 | 
						|
\end{bmatrix}; \quad \Psi = \begin{bmatrix}
 | 
						|
  & & \\
 | 
						|
  \{\psi_1\} & \dots & \{\psi_n\} \\
 | 
						|
  & &
 | 
						|
\end{bmatrix} \]
 | 
						|
</p>
 | 
						|
 | 
						|
<ul class="org-ul">
 | 
						|
<li class="off"><code>[ ]</code> How to add damping to the eigen value matrix?</li>
 | 
						|
</ul>
 | 
						|
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">eigen_value_M = diag<span class="org-rainbow-delimiters-depth-1">(</span>freqs<span class="org-type">*</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
eigen_vector_M = reshape<span class="org-rainbow-delimiters-depth-1">(</span>mode_shapes_O, <span class="org-rainbow-delimiters-depth-2">[</span>mod_n, <span class="org-highlight-numbers-number">6</span><span class="org-type">*</span>length<span class="org-rainbow-delimiters-depth-3">(</span>solid_names<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>';
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>
 | 
						|
\[ \{\psi_1\} = \begin{Bmatrix} \psi_{1_x} & \psi_{2_x} & \dots & \psi_{6_x} & \psi_{1_x} & \dots & \psi_{1\Omega_x} & \dots & \psi_{6\Omega_z} \end{Bmatrix}^T \]
 | 
						|
</p>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-org16e1add" class="outline-2">
 | 
						|
<h2 id="org16e1add"><span class="section-number-2">7</span> Modal Complexity</h2>
 | 
						|
<div class="outline-text-2" id="text-7">
 | 
						|
<p>
 | 
						|
Complexity of one mode
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">mod_i = <span class="org-highlight-numbers-number">1</span>;
 | 
						|
i_max = convhull<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, imag<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
radius = max<span class="org-rainbow-delimiters-depth-1">(</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
theta = linspace<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span>, <span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
 | 
						|
<span class="org-type">figure</span>;
 | 
						|
hold on;
 | 
						|
plot<span class="org-rainbow-delimiters-depth-1">(</span>radius<span class="org-type">*</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>theta<span class="org-rainbow-delimiters-depth-2">)</span>, radius<span class="org-type">*</span>sin<span class="org-rainbow-delimiters-depth-2">(</span>theta<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
plot<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span>i_max, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, imag<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span>i_max, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
plot<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, imag<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'ko'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
hold off;
 | 
						|
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Real Part'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Imaginary Part'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
<span class="org-type">axis</span> manual equal
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<div id="org51e10de" class="figure">
 | 
						|
<p><img src="figs/modal_complexity.png" alt="modal_complexity.png" />
 | 
						|
</p>
 | 
						|
<p><span class="figure-number">Figure 3: </span>Modal Complexity of one mode</p>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>
 | 
						|
Complexity function of the mode order.
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">modes_complexity = zeros<span class="org-rainbow-delimiters-depth-1">(</span>mod_n, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
<span class="org-keyword">for</span> <span class="org-variable-name">mod_i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:mod_n</span>
 | 
						|
  <span class="org-constant">i</span> = convhull<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, imag<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
  area_complex = polyarea<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-constant">i</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, imag<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-constant">i</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
  area_circle = <span class="org-constant">pi</span><span class="org-type">*</span>max<span class="org-rainbow-delimiters-depth-1">(</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">^</span><span class="org-highlight-numbers-number">2</span>;
 | 
						|
  modes_complexity<span class="org-rainbow-delimiters-depth-1">(</span>mod_i<span class="org-rainbow-delimiters-depth-1">)</span> = area_complex<span class="org-type">/</span>area_circle;
 | 
						|
<span class="org-keyword">end</span>
 | 
						|
 | 
						|
<span class="org-type">figure</span>;
 | 
						|
plot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>mod_n, modes_complexity, <span class="org-string">'ok'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
ylim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Mode Number'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Modal Complexity'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<div id="org7388c3e" class="figure">
 | 
						|
<p><img src="figs/modal_complexities.png" alt="modal_complexities.png" />
 | 
						|
</p>
 | 
						|
<p><span class="figure-number">Figure 4: </span>Modal complexity for each mode</p>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-orgc33fb24" class="outline-2">
 | 
						|
<h2 id="orgc33fb24"><span class="section-number-2">8</span> Some notes about constraining the number of degrees of freedom</h2>
 | 
						|
<div class="outline-text-2" id="text-8">
 | 
						|
<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"> </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"> </td>
 | 
						|
<td class="org-right">9</td>
 | 
						|
<td class="org-right">9</td>
 | 
						|
<td class="org-right">18</td>
 | 
						|
<td class="org-left"> </td>
 | 
						|
</tr>
 | 
						|
</tbody>
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-orgd17ef15" class="outline-2">
 | 
						|
<h2 id="orgd17ef15"><span class="section-number-2">9</span> <span class="todo TODO">TODO</span> Normalization of mode shapes?</h2>
 | 
						|
<div class="outline-text-2" id="text-9">
 | 
						|
<p>
 | 
						|
We normalize each column of the eigen vector matrix.
 | 
						|
Then, each eigenvector as a norm of 1.
 | 
						|
</p>
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">eigen_vector_M = eigen_vector_M<span class="org-type">./</span>vecnorm<span class="org-rainbow-delimiters-depth-1">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-orgc7fe2ae" class="outline-2">
 | 
						|
<h2 id="orgc7fe2ae"><span class="section-number-2">10</span> Compare Mode Shapes</h2>
 | 
						|
<div class="outline-text-2" id="text-10">
 | 
						|
<p>
 | 
						|
Let's say we want to see for the first mode which DOFs can be neglected.
 | 
						|
In order to do so, we should estimate the motion of each stage in particular directions.
 | 
						|
If we look at the z motion for instance, we will find that we cannot neglect that motion (because of the tilt causing z motion).
 | 
						|
</p>
 | 
						|
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">mode_i = <span class="org-highlight-numbers-number">3</span>;
 | 
						|
dof_i = <span class="org-highlight-numbers-number">6</span>;
 | 
						|
 | 
						|
mode = eigen_vector_M<span class="org-rainbow-delimiters-depth-1">(</span>dof_i<span class="org-type">:</span><span class="org-highlight-numbers-number">6</span><span class="org-type">:</span>end, mode_i<span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
 | 
						|
<span class="org-type">figure</span>;
 | 
						|
hold on;
 | 
						|
<span class="org-keyword">for</span> <span class="org-variable-name">i</span>=<span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">mode</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
 | 
						|
  plot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>, real<span class="org-rainbow-delimiters-depth-3">(</span>mode<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">]</span>, <span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>, imag<span class="org-rainbow-delimiters-depth-3">(</span>mode<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">]</span>, <span class="org-string">'-', 'DisplayName'</span>, solid_names<span class="org-rainbow-delimiters-depth-2">{</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-2">}</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
<span class="org-keyword">end</span>
 | 
						|
hold off;
 | 
						|
legend<span class="org-rainbow-delimiters-depth-1">()</span>;
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab"><span class="org-type">figure</span>;
 | 
						|
subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
hold on;
 | 
						|
<span class="org-keyword">for</span> <span class="org-variable-name">i</span>=<span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">mode</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
 | 
						|
  plot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span>, norm<span class="org-rainbow-delimiters-depth-2">(</span>mode<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'o'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
<span class="org-keyword">end</span>
 | 
						|
hold off;
 | 
						|
ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Amplitude'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
 | 
						|
subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
hold on;
 | 
						|
<span class="org-keyword">for</span> <span class="org-variable-name">i</span>=<span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">mode</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
 | 
						|
  plot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">180</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle<span class="org-rainbow-delimiters-depth-2">(</span>mode<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'o', 'DisplayName'</span>, solid_names<span class="org-rainbow-delimiters-depth-2">{</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-2">}</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
<span class="org-keyword">end</span>
 | 
						|
hold off;
 | 
						|
ylim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span>, <span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; yticks<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-type">:</span><span class="org-highlight-numbers-number">90</span><span class="org-type">:</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Phase </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">deg</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
legend<span class="org-rainbow-delimiters-depth-1">()</span>;
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
 | 
						|
<div class="org-src-container">
 | 
						|
<pre class="src src-matlab">test = mode_shapes_O<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">10</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">/</span>norm<span class="org-rainbow-delimiters-depth-1">(</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>mode_shapes_O<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">10</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
test = mode_shapes_O<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">10</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">/</span>norm<span class="org-rainbow-delimiters-depth-1">(</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>mode_shapes_O<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">10</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
 | 
						|
</pre>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div id="outline-container-org1ec0de2" class="outline-2">
 | 
						|
<h2 id="org1ec0de2"><span class="section-number-2">11</span> <span class="todo TODO">TODO</span> Synthesis of FRF curves</h2>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
<div id="postamble" class="status">
 | 
						|
<p class="author">Author: Dehaeze Thomas</p>
 | 
						|
<p class="date">Created: 2019-07-02 mar. 17:45</p>
 | 
						|
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
 | 
						|
</div>
 | 
						|
</body>
 | 
						|
</html>
 |