nass-micro-station-measurem.../ground-motion/index.html

439 lines
19 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-11-12 jeu. 10:28 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Ground Motion Measurements</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.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">Ground Motion Measurements</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org98d0be2">1. Experimental Setup</a></li>
<li><a href="#org7e6d21c">2. Measurement Analysis</a>
<ul>
<li><a href="#orgb4815e7">2.1. Load data</a></li>
<li><a href="#org76505c6">2.2. Time domain plots of the measured voltage</a></li>
<li><a href="#orge77c65d">2.3. Computation of the ASD of the measured voltage</a></li>
<li><a href="#org7f9c12d">2.4. Scaling to take into account the sensibility of the geophone and the voltage amplifier</a></li>
<li><a href="#org7f5940d">2.5. Time domain plots of the ground motion</a></li>
<li><a href="#org02ba5d0">2.6. Computation of the ASD of the velocity and displacement</a></li>
<li><a href="#org1e033f3">2.7. Save</a></li>
<li><a href="#org8d373fd">2.8. Comparison with other measurements of ground motion</a>
<ul>
<li><a href="#orgad95d8a">2.8.1. Load the measurement data</a></li>
<li><a href="#orgd5a5c4f">2.8.2. Compute PSD of the measurements</a></li>
<li><a href="#org4688ea2">2.8.3. Compare PSD of Cern, ID09 and ID31</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-org98d0be2" class="outline-2">
<h2 id="org98d0be2"><span class="section-number-2">1</span> Experimental Setup</h2>
<div class="outline-text-2" id="text-1">
<p>
The goal here is to compare the ground motion at the location of the micro-station (ID31 beamline at ESRF) with other measurements of the ground motion.
</p>
<p>
This will also permit to confirm that the device use for the measurement (geophones, amplifiers, ADC) are working well and that the data processing is correct.
</p>
<p>
One L22 geophone is put on the ID31 floor.
The signal is then filtered with a first order low pass filter with a cut-off frequency of \(1kHz\).
Then the signal is amplified by a Voltage Amplifier with the following settings:
</p>
<ul class="org-ul">
<li>AC/DC option set to DC</li>
<li>Amplification of 60dB (1000)</li>
<li>Low pass filter at the output with a cut-off frequency of \(1kHz\)</li>
</ul>
<p>
On figure <a href="#orgb7f8464">1</a> is an overview of multiple measurements made at famous location.
</p>
<div id="orgb7f8464" class="figure">
<p><img src="./img/ground_motion_measurements.png" alt="ground_motion_measurements.png" width="800px" />
</p>
<p><span class="figure-number">Figure 1: </span>Power spectral density of ground vibration in the vertical direction at multiple locations (<a href="https://vibration.desy.de/">source</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org7e6d21c" class="outline-2">
<h2 id="org7e6d21c"><span class="section-number-2">2</span> Measurement Analysis</h2>
<div class="outline-text-2" id="text-2">
<p>
<a id="orgcc23e80"></a>
</p>
<div class="note" id="org6e1fb83">
<p>
All the files (data and Matlab scripts) are accessible <a href="data/ground_meas_id31.zip">here</a>.
</p>
</div>
</div>
<div id="outline-container-orgb4815e7" class="outline-3">
<h3 id="orgb4815e7"><span class="section-number-3">2.1</span> Load data</h3>
<div class="outline-text-3" id="text-2-1">
<div class="org-src-container">
<pre class="src src-matlab">data = load(<span class="org-string">'mat/data_028.mat'</span>, <span class="org-string">'data'</span>); data = data.data;
</pre>
</div>
</div>
</div>
<div id="outline-container-org76505c6" class="outline-3">
<h3 id="org76505c6"><span class="section-number-3">2.2</span> Time domain plots of the measured voltage</h3>
<div class="outline-text-3" id="text-2-2">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot(data(<span class="org-type">:</span>, 3), data(<span class="org-type">:</span>, 1));
hold off;
xlabel(<span class="org-string">'Time [s]'</span>); ylabel(<span class="org-string">'Voltage [V]'</span>);
xlim([0, 100]);
</pre>
</div>
<div id="org32fab28" class="figure">
<p><img src="figs/ground_motion_id31_time.png" alt="ground_motion_id31_time.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Measurement of the ground motion - Time domain</p>
</div>
</div>
</div>
<div id="outline-container-orge77c65d" class="outline-3">
<h3 id="orge77c65d"><span class="section-number-3">2.3</span> Computation of the ASD of the measured voltage</h3>
<div class="outline-text-3" id="text-2-3">
<div class="org-src-container">
<pre class="src src-matlab">dt = data(2, 3) <span class="org-type">-</span> data(1, 3);
Fs = 1<span class="org-type">/</span>dt;
win = hanning(ceil(10<span class="org-type">*</span>Fs));
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">[px_dc, f] = pwelch(data(<span class="org-type">:</span>, 1), win, [], [], Fs);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot(f, sqrt(px_dc));
hold off;
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>);
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'Amplitude Spectral Density $\left[\frac{V}{\sqrt{Hz}}\right]$'</span>)
xlim([0.1, 500]);
</pre>
</div>
<div id="org46dd80c" class="figure">
<p><img src="figs/ground_motion_id31_asd_volt.png" alt="ground_motion_id31_asd_volt.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Amplitude Spectral Density of the measured Voltage</p>
</div>
</div>
</div>
<div id="outline-container-org7f9c12d" class="outline-3">
<h3 id="org7f9c12d"><span class="section-number-3">2.4</span> Scaling to take into account the sensibility of the geophone and the voltage amplifier</h3>
<div class="outline-text-3" id="text-2-4">
<p>
The Geophone used are L22. Their sensibility is shown on figure <a href="#org8006b4c">4</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">S0 = 88; <span class="org-comment">% Sensitivity [V/(m/s)]</span>
f0 = 2; <span class="org-comment">% Cut-off frequency [Hz]</span>
S = S0<span class="org-type">*</span>(s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>f0)<span class="org-type">/</span>(1<span class="org-type">+</span>s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>f0);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">freqs = logspace(<span class="org-type">-</span>1, 2, 1000);
<span class="org-type">figure</span>;
hold on;
plot(f, abs(squeeze(freqresp(S, f, <span class="org-string">'Hz'</span>))));
hold off;
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'Magnitude $\left[\frac{V}{m/s}\right]$'</span>);
xlim([0.1, 100]);
</pre>
</div>
<div id="org8006b4c" class="figure">
<p><img src="figs/geophone_sensibility.png" alt="geophone_sensibility.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Sensibility of the Geophone</p>
</div>
<p>
We also take into account the gain of the electronics which is here set to be \(60dB\).
</p>
<div class="org-src-container">
<pre class="src src-matlab">G0_db = 60; <span class="org-comment">% [dB]</span>
G0 = 10<span class="org-type">^</span>(G0_db<span class="org-type">/</span>20); <span class="org-comment">% [abs]</span>
</pre>
</div>
<p>
We divide the PSD measured (in \(\text{V^2}/\sqrt{Hz}\)) by the square of the gain of the voltage amplifier to obtain the PSD of the voltage across the geophone.
We further divide the result by the square of the magnitude of sensibility of the Geophone to obtain the PSD of the velocity in \((m/s)^2/Hz\).
</p>
<div class="org-src-container">
<pre class="src src-matlab">psd_gv = px_dc<span class="org-type">./</span>abs(squeeze(freqresp(G0<span class="org-type">*</span>S, f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
</pre>
</div>
<p>
Finally, we obtain the PSD of the ground motion in \(m^2/Hz\) by dividing by the square of the frequency in \(rad/s\).
</p>
<div class="org-src-container">
<pre class="src src-matlab">psd_gm = psd_gv<span class="org-type">./</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>f)<span class="org-type">.^</span>2;
</pre>
</div>
</div>
</div>
<div id="outline-container-org7f5940d" class="outline-3">
<h3 id="org7f5940d"><span class="section-number-3">2.5</span> Time domain plots of the ground motion</h3>
<div class="outline-text-3" id="text-2-5">
<p>
We can inverse the dynamics of the geophone to convert the measured voltage into the estimated ground motion.
</p>
<div class="org-src-container">
<pre class="src src-matlab">est_vel = lsim(inv(G0<span class="org-type">*</span>S)<span class="org-type">*</span>(s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span>)<span class="org-type">/</span>(1<span class="org-type">+</span>s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span>), data(<span class="org-type">:</span>, 1), data(<span class="org-type">:</span>, 3)); <span class="org-comment">% Estimated velocity above 1Hz</span>
est_vel = est_vel <span class="org-type">-</span> mean(est_vel(data(<span class="org-type">:</span>,3)<span class="org-type">&gt;</span>10)); <span class="org-comment">% The mean value of the velocity if removed</span>
est_dis = lsim(1<span class="org-type">/</span>(1<span class="org-type">+</span>s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span>), est_vel, data(<span class="org-type">:</span>, 3)); <span class="org-comment">% The velocity is integrated above 1Hz</span>
</pre>
</div>
<div id="org3674cd1" class="figure">
<p><img src="figs/time_domain_velocity.png" alt="time_domain_velocity.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Time domain velocity (<a href="./figs/time_domain_velocity.png">png</a>, <a href="./figs/time_domain_velocity.pdf">pdf</a>)</p>
</div>
<div id="org39fbab6" class="figure">
<p><img src="figs/time_domain_displacement.png" alt="time_domain_displacement.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Time domain absolute displacement (<a href="./figs/time_domain_displacement.png">png</a>, <a href="./figs/time_domain_displacement.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org02ba5d0" class="outline-3">
<h3 id="org02ba5d0"><span class="section-number-3">2.6</span> Computation of the ASD of the velocity and displacement</h3>
<div class="outline-text-3" id="text-2-6">
<p>
The ASD of the measured velocity is shown on figure <a href="#orgddc47d6">7</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot(f, sqrt(psd_gv));
hold off;
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>);
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'ASD of the measured Velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$'</span>)
xlim([0.1, 500]);
</pre>
</div>
<div id="orgddc47d6" class="figure">
<p><img src="figs/ground_motion_id31_asd_velocity.png" alt="ground_motion_id31_asd_velocity.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Amplitude Spectral Density of the Velocity</p>
</div>
<p>
We also plot the ASD in displacement (figure <a href="#org9eb24d7">8</a>);
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot(f, sqrt(psd_gm));
hold off;
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'ASD of the displacement $\left[\frac{m}{\sqrt{Hz}}\right]$'</span>)
xlim([0.1, 500]);
</pre>
</div>
<div id="org9eb24d7" class="figure">
<p><img src="figs/ground_motion_id31_asd_displacement.png" alt="ground_motion_id31_asd_displacement.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Amplitude Spectral Density of the Displacement</p>
</div>
<p>
And we also plot the PSD of the displacement in \(\frac{{\mu u}^2}{Hz}\) as it is a usual unit used (figure <a href="#org5008310">9</a>).
One can then compare this curve with the figure <a href="#orgb7f8464">1</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot(f, psd_gm<span class="org-type">.*</span>1e12);
hold off;
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>);
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'PSD of the measured displacement $\left[\frac{{ \mu m }^2}{Hz}\right]$'</span>)
xlim([0.1, 500]); ylim([1e<span class="org-type">-</span>13, 1e3]);
</pre>
</div>
<div id="org5008310" class="figure">
<p><img src="figs/ground_motion_id31_psd_displacement.png" alt="ground_motion_id31_psd_displacement.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Power Spectral Density of the measured displacement</p>
</div>
</div>
</div>
<div id="outline-container-org1e033f3" class="outline-3">
<h3 id="org1e033f3"><span class="section-number-3">2.7</span> Save</h3>
<div class="outline-text-3" id="text-2-7">
<p>
We save the PSD of the ground motion for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./mat/psd_gm.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'psd_gm'</span>, <span class="org-string">'psd_gv'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org8d373fd" class="outline-3">
<h3 id="org8d373fd"><span class="section-number-3">2.8</span> Comparison with other measurements of ground motion</h3>
<div class="outline-text-3" id="text-2-8">
<p>
Now we will compare with other measurements.
</p>
</div>
<div id="outline-container-orgad95d8a" class="outline-4">
<h4 id="orgad95d8a"><span class="section-number-4">2.8.1</span> Load the measurement data</h4>
<div class="outline-text-4" id="text-2-8-1">
<p>
First we load the measurement data.
Here we have one measurement of the floor motion made at the ESRF in 2018, and one measurement made at CERN.
</p>
<div class="org-src-container">
<pre class="src src-matlab">id09 = load(<span class="org-string">'./mat/id09_floor_september2018.mat'</span>);
cern = load(<span class="org-string">'./mat/ground_motion_dist.mat'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgd5a5c4f" class="outline-4">
<h4 id="orgd5a5c4f"><span class="section-number-4">2.8.2</span> Compute PSD of the measurements</h4>
<div class="outline-text-4" id="text-2-8-2">
<p>
We compute the Power Spectral Densities of the measurements.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Fs_id09 = 1<span class="org-type">/</span>(id09.time3(2)<span class="org-type">-</span>id09.time3(1));
win_id09 = hanning(ceil(10<span class="org-type">*</span>Fs_id09));
[id09_pxx, id09_f] = pwelch(1e<span class="org-type">-</span>6<span class="org-type">*</span>id09.x_y_z(<span class="org-type">:</span>, 3), win_id09, [], [], Fs_id09);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Fs_cern = 1<span class="org-type">/</span>(cern.gm.time(2)<span class="org-type">-</span>cern.gm.time(1));
win_cern = hanning(ceil(10<span class="org-type">*</span>Fs_cern));
[cern_pxx, cern_f] = pwelch(cern.gm.signal, win_cern, [], [], Fs_cern);
</pre>
</div>
</div>
</div>
<div id="outline-container-org4688ea2" class="outline-4">
<h4 id="org4688ea2"><span class="section-number-4">2.8.3</span> Compare PSD of Cern, ID09 and ID31</h4>
<div class="outline-text-4" id="text-2-8-3">
<p>
And we compare all the measurements (figure <a href="#orgbef99fa">10</a>).
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot(id09_f, id09_pxx, <span class="org-string">'DisplayName'</span>, <span class="org-string">'ID09'</span>);
plot(cern_f, cern_pxx, <span class="org-string">'DisplayName'</span>, <span class="org-string">'CERN'</span>);
plot(f, psd_gm, <span class="org-string">'k'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'ID31'</span>);
hold off;
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'log'</span>);
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'PSD [$m^2/Hz$]'</span>);
legend(<span class="org-string">'Location'</span>, <span class="org-string">'northeast'</span>);
xlim([0.1, 500]);
</pre>
</div>
<div id="orgbef99fa" class="figure">
<p><img src="figs/ground_motion_compare.png" alt="ground_motion_compare.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Comparison of the PSD of the ground motion measured at different location</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-11-12 jeu. 10:28</p>
</div>
</body>
</html>