<?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> <!-- 2020-06-14 dim. 12:31 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>Finite Element Model with Simscape</title> <meta name="generator" content="Org mode" /> <meta name="author" content="Dehaeze Thomas" /> <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script src="./js/jquery.min.js"></script> <script src="./js/bootstrap.min.js"></script> <script src="./js/jquery.stickytableheaders.min.js"></script> <script src="./js/readtheorg.js"></script> <script>MathJax = { tex: { tags: 'ams', macros: {bm: ["\\boldsymbol{#1}",1],} } }; </script> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></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">Finite Element Model with Simscape</h1> <div id="table-of-contents"> <h2>Table of Contents</h2> <div id="text-table-of-contents"> <ul> <li><a href="#org677afcf">1. Amplified Piezoelectric Actuator - 3D elements</a> <ul> <li><a href="#org966ca11">1.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li> <li><a href="#org4f69d52">1.2. Identification of the Dynamics</a></li> <li><a href="#orga73b4fa">1.3. Comparison with Ansys</a></li> <li><a href="#org7e1d6fb">1.4. Force Sensor</a></li> </ul> </li> </ul> </div> </div> <div id="outline-container-org677afcf" class="outline-2"> <h2 id="org677afcf"><span class="section-number-2">1</span> Amplified Piezoelectric Actuator - 3D elements</h2> <div class="outline-text-2" id="text-1"> <p> The idea here is to: </p> <ul class="org-ul"> <li>export a FEM of an amplified piezoelectric actuator from Ansys to Matlab</li> <li>import it into a Simscape model</li> <li>compare the obtained dynamics</li> <li>add 10kg mass on top of the actuator and identify the dynamics</li> <li>compare with results from Ansys where 10kg are directly added to the FEM</li> </ul> </div> <div id="outline-container-org966ca11" class="outline-3"> <h3 id="org966ca11"><span class="section-number-3">1.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3> <div class="outline-text-3" id="text-1-1"> <p> We first extract the stiffness and mass matrices. </p> <div class="org-src-container"> <pre class="src src-matlab">K = extractMatrix('piezo_amplified_3d_K.txt'); M = extractMatrix('piezo_amplified_3d_M.txt'); </pre> </div> <p> Then, we extract the coordinates of the interface nodes. </p> <div class="org-src-container"> <pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('piezo_amplified_3d.txt'); </pre> </div> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <colgroup> <col class="org-left" /> <col class="org-right" /> </colgroup> <tbody> <tr> <td class="org-left">Total number of Nodes</td> <td class="org-right">168959</td> </tr> <tr> <td class="org-left">Number of interface Nodes</td> <td class="org-right">13</td> </tr> <tr> <td class="org-left">Number of Modes</td> <td class="org-right">30</td> </tr> <tr> <td class="org-left">Size of M and K matrices</td> <td class="org-right">108</td> </tr> </tbody> </table> <div id="orgb472295" class="figure"> <p><img src="figs/amplified_piezo_interface_nodes.png" alt="amplified_piezo_interface_nodes.png" /> </p> <p><span class="figure-number">Figure 1: </span>Interface Nodes for the Amplified Piezo Actuator</p> </div> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <caption class="t-above"><span class="table-number">Table 1:</span> Coordinates of the interface nodes</caption> <colgroup> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> </colgroup> <thead> <tr> <th scope="col" class="org-right">Node i</th> <th scope="col" class="org-right">Node Number</th> <th scope="col" class="org-right">x [m]</th> <th scope="col" class="org-right">y [m]</th> <th scope="col" class="org-right">z [m]</th> </tr> </thead> <tbody> <tr> <td class="org-right">1.0</td> <td class="org-right">168947.0</td> <td class="org-right">0.0</td> <td class="org-right">0.03</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">2.0</td> <td class="org-right">168949.0</td> <td class="org-right">0.0</td> <td class="org-right">-0.03</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">3.0</td> <td class="org-right">168950.0</td> <td class="org-right">-0.035</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">4.0</td> <td class="org-right">168951.0</td> <td class="org-right">-0.028</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">5.0</td> <td class="org-right">168952.0</td> <td class="org-right">-0.021</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">6.0</td> <td class="org-right">168953.0</td> <td class="org-right">-0.014</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">7.0</td> <td class="org-right">168954.0</td> <td class="org-right">-0.007</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">8.0</td> <td class="org-right">168955.0</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">9.0</td> <td class="org-right">168956.0</td> <td class="org-right">0.007</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">10.0</td> <td class="org-right">168957.0</td> <td class="org-right">0.014</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">11.0</td> <td class="org-right">168958.0</td> <td class="org-right">0.021</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">12.0</td> <td class="org-right">168959.0</td> <td class="org-right">0.035</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> <tr> <td class="org-right">13.0</td> <td class="org-right">168960.0</td> <td class="org-right">0.028</td> <td class="org-right">0.0</td> <td class="org-right">0.0</td> </tr> </tbody> </table> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <caption class="t-above"><span class="table-number">Table 2:</span> First 10x10 elements of the Stiffness matrix</caption> <colgroup> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> </colgroup> <tbody> <tr> <td class="org-right">300000000.0</td> <td class="org-right">-30000.0</td> <td class="org-right">8000.0</td> <td class="org-right">-200.0</td> <td class="org-right">-30.0</td> <td class="org-right">-60000.0</td> <td class="org-right">20000000.0</td> <td class="org-right">-4000.0</td> <td class="org-right">500.0</td> <td class="org-right">8</td> </tr> <tr> <td class="org-right">-30000.0</td> <td class="org-right">100000000.0</td> <td class="org-right">400.0</td> <td class="org-right">30.0</td> <td class="org-right">200.0</td> <td class="org-right">-1</td> <td class="org-right">4000.0</td> <td class="org-right">-8000000.0</td> <td class="org-right">800.0</td> <td class="org-right">7</td> </tr> <tr> <td class="org-right">8000.0</td> <td class="org-right">400.0</td> <td class="org-right">50000000.0</td> <td class="org-right">-800000.0</td> <td class="org-right">-300.0</td> <td class="org-right">-40.0</td> <td class="org-right">300.0</td> <td class="org-right">100.0</td> <td class="org-right">5000000.0</td> <td class="org-right">40000.0</td> </tr> <tr> <td class="org-right">-200.0</td> <td class="org-right">30.0</td> <td class="org-right">-800000.0</td> <td class="org-right">20000.0</td> <td class="org-right">5</td> <td class="org-right">1</td> <td class="org-right">-10.0</td> <td class="org-right">-2</td> <td class="org-right">-40000.0</td> <td class="org-right">-300.0</td> </tr> <tr> <td class="org-right">-30.0</td> <td class="org-right">200.0</td> <td class="org-right">-300.0</td> <td class="org-right">5</td> <td class="org-right">40000.0</td> <td class="org-right">0.3</td> <td class="org-right">-4</td> <td class="org-right">-10.0</td> <td class="org-right">40.0</td> <td class="org-right">0.4</td> </tr> <tr> <td class="org-right">-60000.0</td> <td class="org-right">-1</td> <td class="org-right">-40.0</td> <td class="org-right">1</td> <td class="org-right">0.3</td> <td class="org-right">3000.0</td> <td class="org-right">7000.0</td> <td class="org-right">0.8</td> <td class="org-right">-1</td> <td class="org-right">0.0003</td> </tr> <tr> <td class="org-right">20000000.0</td> <td class="org-right">4000.0</td> <td class="org-right">300.0</td> <td class="org-right">-10.0</td> <td class="org-right">-4</td> <td class="org-right">7000.0</td> <td class="org-right">300000000.0</td> <td class="org-right">20000.0</td> <td class="org-right">3000.0</td> <td class="org-right">80.0</td> </tr> <tr> <td class="org-right">-4000.0</td> <td class="org-right">-8000000.0</td> <td class="org-right">100.0</td> <td class="org-right">-2</td> <td class="org-right">-10.0</td> <td class="org-right">0.8</td> <td class="org-right">20000.0</td> <td class="org-right">100000000.0</td> <td class="org-right">-4000.0</td> <td class="org-right">-100.0</td> </tr> <tr> <td class="org-right">500.0</td> <td class="org-right">800.0</td> <td class="org-right">5000000.0</td> <td class="org-right">-40000.0</td> <td class="org-right">40.0</td> <td class="org-right">-1</td> <td class="org-right">3000.0</td> <td class="org-right">-4000.0</td> <td class="org-right">50000000.0</td> <td class="org-right">800000.0</td> </tr> <tr> <td class="org-right">8</td> <td class="org-right">7</td> <td class="org-right">40000.0</td> <td class="org-right">-300.0</td> <td class="org-right">0.4</td> <td class="org-right">0.0003</td> <td class="org-right">80.0</td> <td class="org-right">-100.0</td> <td class="org-right">800000.0</td> <td class="org-right">20000.0</td> </tr> </tbody> </table> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <caption class="t-above"><span class="table-number">Table 3:</span> First 10x10 elements of the Mass matrix</caption> <colgroup> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> <col class="org-right" /> </colgroup> <tbody> <tr> <td class="org-right">0.03</td> <td class="org-right">2e-06</td> <td class="org-right">-2e-07</td> <td class="org-right">1e-08</td> <td class="org-right">2e-08</td> <td class="org-right">0.0002</td> <td class="org-right">-0.001</td> <td class="org-right">2e-07</td> <td class="org-right">-8e-08</td> <td class="org-right">-9e-10</td> </tr> <tr> <td class="org-right">2e-06</td> <td class="org-right">0.02</td> <td class="org-right">-5e-07</td> <td class="org-right">7e-09</td> <td class="org-right">3e-08</td> <td class="org-right">2e-08</td> <td class="org-right">-3e-07</td> <td class="org-right">0.0003</td> <td class="org-right">-1e-08</td> <td class="org-right">1e-10</td> </tr> <tr> <td class="org-right">-2e-07</td> <td class="org-right">-5e-07</td> <td class="org-right">0.02</td> <td class="org-right">-9e-05</td> <td class="org-right">4e-09</td> <td class="org-right">-1e-08</td> <td class="org-right">2e-07</td> <td class="org-right">-2e-08</td> <td class="org-right">-0.0006</td> <td class="org-right">-5e-06</td> </tr> <tr> <td class="org-right">1e-08</td> <td class="org-right">7e-09</td> <td class="org-right">-9e-05</td> <td class="org-right">1e-06</td> <td class="org-right">6e-11</td> <td class="org-right">4e-10</td> <td class="org-right">-1e-09</td> <td class="org-right">3e-11</td> <td class="org-right">5e-06</td> <td class="org-right">3e-08</td> </tr> <tr> <td class="org-right">2e-08</td> <td class="org-right">3e-08</td> <td class="org-right">4e-09</td> <td class="org-right">6e-11</td> <td class="org-right">1e-06</td> <td class="org-right">2e-10</td> <td class="org-right">-2e-09</td> <td class="org-right">2e-10</td> <td class="org-right">-7e-09</td> <td class="org-right">-4e-11</td> </tr> <tr> <td class="org-right">0.0002</td> <td class="org-right">2e-08</td> <td class="org-right">-1e-08</td> <td class="org-right">4e-10</td> <td class="org-right">2e-10</td> <td class="org-right">2e-06</td> <td class="org-right">-2e-06</td> <td class="org-right">-1e-09</td> <td class="org-right">-7e-10</td> <td class="org-right">-9e-12</td> </tr> <tr> <td class="org-right">-0.001</td> <td class="org-right">-3e-07</td> <td class="org-right">2e-07</td> <td class="org-right">-1e-09</td> <td class="org-right">-2e-09</td> <td class="org-right">-2e-06</td> <td class="org-right">0.03</td> <td class="org-right">-2e-06</td> <td class="org-right">-1e-07</td> <td class="org-right">-5e-09</td> </tr> <tr> <td class="org-right">2e-07</td> <td class="org-right">0.0003</td> <td class="org-right">-2e-08</td> <td class="org-right">3e-11</td> <td class="org-right">2e-10</td> <td class="org-right">-1e-09</td> <td class="org-right">-2e-06</td> <td class="org-right">0.02</td> <td class="org-right">-8e-07</td> <td class="org-right">-1e-08</td> </tr> <tr> <td class="org-right">-8e-08</td> <td class="org-right">-1e-08</td> <td class="org-right">-0.0006</td> <td class="org-right">5e-06</td> <td class="org-right">-7e-09</td> <td class="org-right">-7e-10</td> <td class="org-right">-1e-07</td> <td class="org-right">-8e-07</td> <td class="org-right">0.02</td> <td class="org-right">9e-05</td> </tr> <tr> <td class="org-right">-9e-10</td> <td class="org-right">1e-10</td> <td class="org-right">-5e-06</td> <td class="org-right">3e-08</td> <td class="org-right">-4e-11</td> <td class="org-right">-9e-12</td> <td class="org-right">-5e-09</td> <td class="org-right">-1e-08</td> <td class="org-right">9e-05</td> <td class="org-right">1e-06</td> </tr> </tbody> </table> <p> Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <code>Reduced Order Flexible Solid</code> simscape block. </p> </div> </div> <div id="outline-container-org4f69d52" class="outline-3"> <h3 id="org4f69d52"><span class="section-number-3">1.2</span> Identification of the Dynamics</h3> <div class="outline-text-3" id="text-1-2"> <p> The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block. </p> <p> To model the actuator, an <code>Internal Force</code> block is added between the nodes 3 and 12. A <code>Relative Motion Sensor</code> block is added between the nodes 1 and 2 to measure the displacement and the amplified piezo. </p> <p> One mass is fixed at one end of the piezo-electric stack actuator, the other end is fixed to the world frame. </p> <p> We first set the mass to be zero. </p> <div class="org-src-container"> <pre class="src src-matlab">m = 0; </pre> </div> <p> The dynamics is identified from the applied force to the measured relative displacement. </p> <div class="org-src-container"> <pre class="src src-matlab">%% Name of the Simulink File mdl = 'piezo_amplified_3d'; %% Input/Output definition clear io; io_i = 1; io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/y'], 1, 'openoutput'); io_i = io_i + 1; Gh = linearize(mdl, io); </pre> </div> <p> Then, we add 10Kg of mass: </p> <div class="org-src-container"> <pre class="src src-matlab">m = 10; </pre> </div> <p> And the dynamics is identified. </p> <p> The two identified dynamics are compared in Figure <a href="#orgfc13fe0">2</a>. </p> <div class="org-src-container"> <pre class="src src-matlab">%% Name of the Simulink File mdl = 'piezo_amplified_3d'; %% Input/Output definition clear io; io_i = 1; io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/y'], 1, 'openoutput'); io_i = io_i + 1; Ghm = linearize(mdl, io); </pre> </div> <div id="orgfc13fe0" class="figure"> <p><img src="figs/dynamics_act_disp_comp_mass.png" alt="dynamics_act_disp_comp_mass.png" /> </p> <p><span class="figure-number">Figure 2: </span>Dynamics from \(F\) to \(d\) without a payload and with a 10kg payload</p> </div> </div> </div> <div id="outline-container-orga73b4fa" class="outline-3"> <h3 id="orga73b4fa"><span class="section-number-3">1.3</span> Comparison with Ansys</h3> <div class="outline-text-3" id="text-1-3"> <p> Let’s import the results from an Harmonic response analysis in Ansys. </p> <div class="org-src-container"> <pre class="src src-matlab">Gresp0 = readtable('FEA_HarmResponse_00kg.txt'); Gresp10 = readtable('FEA_HarmResponse_10kg.txt'); </pre> </div> <p> The obtained dynamics from the Simscape model and from the Ansys analysis are compare in Figure <a href="#org587f215">3</a>. </p> <div id="org587f215" class="figure"> <p><img src="figs/dynamics_force_disp_comp_anasys.png" alt="dynamics_force_disp_comp_anasys.png" /> </p> <p><span class="figure-number">Figure 3: </span>Comparison of the obtained dynamics using Simscape with the harmonic response analysis using Ansys</p> </div> </div> </div> <div id="outline-container-org7e1d6fb" class="outline-3"> <h3 id="org7e1d6fb"><span class="section-number-3">1.4</span> Force Sensor</h3> <div class="outline-text-3" id="text-1-4"> <p> The dynamics is identified from internal forces applied between nodes 3 and 11 to the relative displacement of nodes 11 and 13. </p> <p> The obtained dynamics is shown in Figure <a href="#org2f215c1">4</a>. </p> <div class="org-src-container"> <pre class="src src-matlab">m = 0; </pre> </div> <div class="org-src-container"> <pre class="src src-matlab">%% Name of the Simulink File mdl = 'piezo_amplified_3d'; %% Input/Output definition clear io; io_i = 1; io(io_i) = linio([mdl, '/Fa'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Fs'], 1, 'openoutput'); io_i = io_i + 1; Gf = linearize(mdl, io); </pre> </div> <div class="org-src-container"> <pre class="src src-matlab">m = 10; </pre> </div> <div class="org-src-container"> <pre class="src src-matlab">%% Name of the Simulink File mdl = 'piezo_amplified_3d'; %% Input/Output definition clear io; io_i = 1; io(io_i) = linio([mdl, '/Fa'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Fs'], 1, 'openoutput'); io_i = io_i + 1; Gfm = linearize(mdl, io); </pre> </div> <div id="org2f215c1" class="figure"> <p><img src="figs/dynamics_force_force_sensor_comp_mass.png" alt="dynamics_force_force_sensor_comp_mass.png" /> </p> <p><span class="figure-number">Figure 4: </span>Dynamics from \(F\) to \(F_m\) for \(m=0\) and \(m = 10kg\)</p> </div> </div> </div> </div> </div> <div id="postamble" class="status"> <p class="author">Author: Dehaeze Thomas</p> <p class="date">Created: 2020-06-14 dim. 12:31</p> </div> </body> </html>