diff --git a/disturbances/figs b/disturbances/figs new file mode 120000 index 0000000..8ea5186 --- /dev/null +++ b/disturbances/figs @@ -0,0 +1 @@ +../figs \ No newline at end of file diff --git a/disturbances/index.html b/disturbances/index.html new file mode 100644 index 0000000..f5fd4ff --- /dev/null +++ b/disturbances/index.html @@ -0,0 +1,527 @@ + + + + + + + +Simscape Uniaxial Model + + + + + + + + + + + + + + + +
+ UP + | + HOME +
+

Simscape Uniaxial Model

+
+

Table of Contents

+ +
+ +

+The goal here is to extract the Power Spectral Density of the sources of perturbation. +

+ +

+The sources of perturbations are: +

+ + +

+Because we cannot measure directly the perturbation forces, we have the measure the effect of those perturbations on the system (in terms of velocity for instance using geophones) and then, using a model, compute the forces that induced such velocity. +

+ + + +
+

1 Identification

+
+

+ +

+ +
+
%% Options for Linearized
+options = linearizeOptions;
+options.SampleTime = 0;
+
+%% Name of the Simulink File
+mdl = 'sim_micro_station_disturbances';
+
+
+ +
+
%% Micro-Hexapod
+% Input/Output definition
+io(1)  = linio([mdl, '/Dw'],   1, 'input');  % Ground Motion
+io(2)  = linio([mdl, '/Fty'], 1, 'input');  % Parasitic force Ty
+io(3)  = linio([mdl, '/Frz'], 1, 'input');  % Parasitic force Rz
+io(4)  = linio([mdl, '/Dgm'],  1, 'output'); % Absolute motion - Granite
+io(5)  = linio([mdl, '/Dhm'],  1, 'output'); % Absolute Motion - Hexapod
+io(6)  = linio([mdl, '/Vm'],   1, 'output'); % Relative Velocity hexapod/granite
+
+
+ +
+
% Run the linearization
+G = linearize(mdl, io, 0);
+
+% Input/Output names
+G.InputName  = {'Dw', 'Fty', 'Frz'};
+G.OutputName = {'Dgm', 'Dhm', 'Vm'};
+
+
+
+
+ +
+

2 Sensitivity to Disturbances

+
+

+ +

+ +
+

sensitivity_dist_gm.png +

+

Figure 1: Sensitivity to Ground Motion (png, pdf)

+
+ + + +
+

sensitivity_dist_fty.png +

+

Figure 2: Sensitivity to vertical forces applied by the Ty stage (png, pdf)

+
+ + + +
+

sensitivity_dist_frz.png +

+

Figure 3: Sensitivity to vertical forces applied by the Rz stage (png, pdf)

+
+
+
+ +
+

3 Power Spectral Density of the effect of the disturbances

+
+

+ +The PSD of the relative velocity between the hexapod and the marble in \([(m/s)^2/Hz]\) are loaded for the following sources of disturbance: +

+
    +
  • Slip Ring Rotation
  • +
  • Scan of the translation stage (effect in the vertical direction and in the horizontal direction)
  • +
+ +

+Also, the Ground Motion is measured. +

+ +
+
gm  = load('./disturbances/mat/psd_gm.mat', 'f', 'psd_gm', 'psd_gv');
+rz  = load('./disturbances/mat/pxsp_r.mat', 'f', 'pxsp_r');
+tyz = load('./disturbances/mat/pxz_ty_r.mat', 'f', 'pxz_ty_r');
+tyx = load('./disturbances/mat/pxe_ty_r.mat', 'f', 'pxe_ty_r');
+
+
+ +

+We now compute the relative velocity between the hexapod and the granite due to ground motion. +

+
+
gm.psd_rv = gm.psd_gm.*abs(squeeze(freqresp(G('Vm', 'Dw'), gm.f, 'Hz'))).^2;
+
+
+ +

+The Power Spectral Density of the relative motion/velocity of the hexapod with respect to the granite are shown in figures 4 and 5. +

+ +

+The Cumulative Amplitude Spectrum of the relative motion is shown in figure 6. +

+ + +
+

dist_effect_relative_velocity.png +

+

Figure 4: Amplitude Spectral Density of the relative velocity of the hexapod with respect to the granite due to different sources of perturbation (png, pdf)

+
+ + + +
+

dist_effect_relative_motion.png +

+

Figure 5: Amplitude Spectral Density of the relative displacement of the hexapod with respect to the granite due to different sources of perturbation (png, pdf)

+
+ + +
+

dist_effect_relative_motion_cas.png +

+

Figure 6: Cumulative Amplitude Spectrum of the relative motion due to different sources of perturbation (png, pdf)

+
+
+
+ +
+

4 Compute the Power Spectral Density of the disturbance force

+
+

+ +

+ +

+Now, from the extracted transfer functions from the disturbance force to the relative motion of the hexapod with respect to the granite (section 2) and from the measured PSD of the relative motion (section 3), we can compute the PSD of the disturbance force. +

+ +
+
rz.psd_f  = rz.pxsp_r./abs(squeeze(freqresp(G('Vm', 'Frz'), rz.f, 'Hz'))).^2;
+tyz.psd_f = tyz.pxz_ty_r./abs(squeeze(freqresp(G('Vm', 'Fty'), tyz.f, 'Hz'))).^2;
+
+
+ + +
+

dist_force_psd.png +

+

Figure 7: Amplitude Spectral Density of the disturbance force (png, pdf)

+
+
+
+ +
+

5 Noise Budget

+
+

+Now, from the compute spectral density of the disturbance sources, we can compute the resulting relative motion of the Hexapod with respect to the granite using the model. +We should verify that this is coherent with the measurements. +

+ + +
+

psd_effect_dist_verif.png +

+

Figure 8: Computed Effect of the disturbances on the relative displacement hexapod/granite (png, pdf)

+
+ + + +
+

cas_computed_relative_displacement.png +

+

Figure 9: CAS of the total Relative Displacement due to all considered sources of perturbation (png, pdf)

+
+
+
+ +
+

6 Save

+
+

+The PSD of the disturbance force are now saved for further noise budgeting when control is applied. +

+ +
+
dist_f = struct();
+dist_f.f = gm.f; % Frequency Vector [Hz]
+dist_f.psd_gm = gm.psd_gm; % Power Spectral Density of the Ground Motion [m^2/Hz]
+dist_f.psd_ty = tyz.psd_f; % Power Spectral Density of the force induced by the Ty stage in the Z direction [N^2/Hz]
+dist_f.psd_rz = rz.psd_f; % Power Spectral Density of the force induced by the Rz stage in the Z direction [N^2/Hz]
+
+save('./disturbances/mat/disturbance-forces.mat', 'dist_f');
+
+
+
+
+
+
+

Author: Dehaeze Thomas

+

Created: 2019-11-04 lun. 15:46

+

Validate

+
+ + diff --git a/disturbances/index.org b/disturbances/index.org new file mode 100644 index 0000000..854a7f5 --- /dev/null +++ b/disturbances/index.org @@ -0,0 +1,379 @@ +#+TITLE: Simscape Uniaxial Model +:DRAWER: +#+STARTUP: overview + +#+LANGUAGE: en +#+EMAIL: dehaeze.thomas@gmail.com +#+AUTHOR: Dehaeze Thomas + +#+HTML_LINK_HOME: ../index.html +#+HTML_LINK_UP: ../index.html + +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: + +#+HTML_MATHJAX: align: center tagside: right font: TeX + +#+PROPERTY: header-args:matlab :session *MATLAB* +#+PROPERTY: header-args:matlab+ :comments org +#+PROPERTY: header-args:matlab+ :results none +#+PROPERTY: header-args:matlab+ :exports both +#+PROPERTY: header-args:matlab+ :eval no-export +#+PROPERTY: header-args:matlab+ :output-dir figs +#+PROPERTY: header-args:matlab+ :tangle matlab/modal_frf_coh.m +#+PROPERTY: header-args:matlab+ :mkdirp yes + +#+PROPERTY: header-args:shell :eval no-export + +#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/}{config.tex}") +#+PROPERTY: header-args:latex+ :imagemagick t :fit yes +#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 +#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 +#+PROPERTY: header-args:latex+ :results raw replace :buffer no +#+PROPERTY: header-args:latex+ :eval no-export +#+PROPERTY: header-args:latex+ :exports both +#+PROPERTY: header-args:latex+ :mkdirp yes +#+PROPERTY: header-args:latex+ :output-dir figs +:END: + +* Introduction :ignore: +The goal here is to extract the Power Spectral Density of the sources of perturbation. + +The sources of perturbations are: +- Ground Motion +- Parasitic forces applied in the system when scanning with the Translation Stage and the Spindle. + These forces can be due to imperfect guiding for instance. + +Because we cannot measure directly the perturbation forces, we have the measure the effect of those perturbations on the system (in terms of velocity for instance using geophones) and then, using a model, compute the forces that induced such velocity. + +- Section [[sec:identification]]: transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup + +* Matlab Init :noexport:ignore: +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) + <> +#+end_src + +#+begin_src matlab :exports none :results silent :noweb yes + <> +#+end_src + +#+begin_src matlab :tangle no + simulinkproject('../'); +#+end_src + +#+begin_src matlab + open 'simscape/sim_micro_station_disturbances.slx' +#+end_src + +* Identification +<> + +#+begin_src matlab +%% Options for Linearized +options = linearizeOptions; +options.SampleTime = 0; + +%% Name of the Simulink File +mdl = 'sim_micro_station_disturbances'; +#+end_src + +#+begin_src matlab +%% Micro-Hexapod +% Input/Output definition +io(1) = linio([mdl, '/Dw'], 1, 'input'); % Ground Motion +io(2) = linio([mdl, '/Fty'], 1, 'input'); % Parasitic force Ty +io(3) = linio([mdl, '/Frz'], 1, 'input'); % Parasitic force Rz +io(4) = linio([mdl, '/Dgm'], 1, 'output'); % Absolute motion - Granite +io(5) = linio([mdl, '/Dhm'], 1, 'output'); % Absolute Motion - Hexapod +io(6) = linio([mdl, '/Vm'], 1, 'output'); % Relative Velocity hexapod/granite +#+end_src + +#+begin_src matlab +% Run the linearization +G = linearize(mdl, io, 0); + +% Input/Output names +G.InputName = {'Dw', 'Fty', 'Frz'}; +G.OutputName = {'Dgm', 'Dhm', 'Vm'}; +#+end_src + +* Sensitivity to Disturbances +<> +#+begin_src matlab :exports none + freqs = logspace(0, 3, 1000); + + figure; + title('$D_w$ to $D$'); + hold on; + plot(freqs, abs(squeeze(freqresp(G('Vm', 'Dw')/s, freqs, 'Hz'))), 'k-'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/m]'); xlabel('Frequency [Hz]'); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/sensitivity_dist_gm.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:sensitivity_dist_gm +#+CAPTION: Sensitivity to Ground Motion ([[./figs/sensitivity_dist_gm.png][png]], [[./figs/sensitivity_dist_gm.pdf][pdf]]) +[[file:figs/sensitivity_dist_gm.png]] + + +#+begin_src matlab :exports none + freqs = logspace(0, 3, 1000); + + figure; + title('$F_{ty}$ to $D$'); + hold on; + plot(freqs, abs(squeeze(freqresp(G('Vm', 'Fty')/s, freqs, 'Hz'))), 'k-'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]'); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/sensitivity_dist_fty.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:sensitivity_dist_fty +#+CAPTION: Sensitivity to vertical forces applied by the Ty stage ([[./figs/sensitivity_dist_fty.png][png]], [[./figs/sensitivity_dist_fty.pdf][pdf]]) +[[file:figs/sensitivity_dist_fty.png]] + + +#+begin_src matlab :exports none + freqs = logspace(0, 3, 1000); + + figure; + title('$F_{rz}$ to $D$'); + hold on; + plot(freqs, abs(squeeze(freqresp(G('Vm', 'Frz')/s, freqs, 'Hz'))), 'k-'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]'); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/sensitivity_dist_frz.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:sensitivity_dist_frz +#+CAPTION: Sensitivity to vertical forces applied by the Rz stage ([[./figs/sensitivity_dist_frz.png][png]], [[./figs/sensitivity_dist_frz.pdf][pdf]]) +[[file:figs/sensitivity_dist_frz.png]] + +* Power Spectral Density of the effect of the disturbances +<> +The PSD of the relative velocity between the hexapod and the marble in $[(m/s)^2/Hz]$ are loaded for the following sources of disturbance: +- Slip Ring Rotation +- Scan of the translation stage (effect in the vertical direction and in the horizontal direction) + +Also, the Ground Motion is measured. + +#+begin_src matlab + gm = load('./disturbances/mat/psd_gm.mat', 'f', 'psd_gm', 'psd_gv'); + rz = load('./disturbances/mat/pxsp_r.mat', 'f', 'pxsp_r'); + tyz = load('./disturbances/mat/pxz_ty_r.mat', 'f', 'pxz_ty_r'); + tyx = load('./disturbances/mat/pxe_ty_r.mat', 'f', 'pxe_ty_r'); +#+end_src + +#+begin_src matlab :exports none + gm.f = gm.f(2:end); + rz.f = rz.f(2:end); + tyz.f = tyz.f(2:end); + tyx.f = tyx.f(2:end); +#+end_src + +#+begin_src matlab :exports none + gm.psd_gm = gm.psd_gm(2:end); % PSD of Ground Motion [m^2/Hz] + gm.psd_gv = gm.psd_gv(2:end); % PSD of Ground Velocity [(m/s)^2/Hz] + rz.pxsp_r = rz.pxsp_r(2:end); % PSD of Relative Velocity [(m/s)^2/Hz] + tyz.pxz_ty_r = tyz.pxz_ty_r(2:end); % PSD of Relative Velocity [(m/s)^2/Hz] + tyx.pxe_ty_r = tyx.pxe_ty_r(2:end); % PSD of Relative Velocity [(m/s)^2/Hz] +#+end_src + +We now compute the relative velocity between the hexapod and the granite due to ground motion. +#+begin_src matlab + gm.psd_rv = gm.psd_gm.*abs(squeeze(freqresp(G('Vm', 'Dw'), gm.f, 'Hz'))).^2; +#+end_src + +The Power Spectral Density of the relative motion/velocity of the hexapod with respect to the granite are shown in figures [[fig:dist_effect_relative_velocity]] and [[fig:dist_effect_relative_motion]]. + +The Cumulative Amplitude Spectrum of the relative motion is shown in figure [[fig:dist_effect_relative_motion_cas]]. + +#+begin_src matlab :exports none + figure; + hold on; + plot(gm.f, sqrt(gm.psd_rv), 'DisplayName', 'Ground Motion'); + plot(tyz.f, sqrt(tyz.pxz_ty_r), 'DisplayName', 'Ty'); + plot(rz.f, sqrt(rz.pxsp_r), 'DisplayName', 'Rz'); + hold off; + set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); + xlabel('Frequency [Hz]'); ylabel('ASD of the measured velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$') + legend('Location', 'southwest'); + xlim([2, 500]); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/dist_effect_relative_velocity.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:dist_effect_relative_velocity +#+CAPTION: Amplitude Spectral Density of the relative velocity of the hexapod with respect to the granite due to different sources of perturbation ([[./figs/dist_effect_relative_velocity.png][png]], [[./figs/dist_effect_relative_velocity.pdf][pdf]]) +[[file:figs/dist_effect_relative_velocity.png]] + + +#+begin_src matlab :exports none + figure; + hold on; + plot(gm.f, sqrt(gm.psd_rv)./(2*pi*gm.f), 'DisplayName', 'Ground Motion'); + plot(tyz.f, sqrt(tyz.pxz_ty_r)./(2*pi*tyz.f), 'DisplayName', 'Ty'); + plot(rz.f, sqrt(rz.pxsp_r)./(2*pi*rz.f), 'DisplayName', 'Rz'); + hold off; + set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); + xlabel('Frequency [Hz]'); ylabel('ASD of the displacement $\left[\frac{m}{\sqrt{Hz}}\right]$') + legend('Location', 'southwest'); + xlim([2, 500]); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/dist_effect_relative_motion.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:dist_effect_relative_motion +#+CAPTION: Amplitude Spectral Density of the relative displacement of the hexapod with respect to the granite due to different sources of perturbation ([[./figs/dist_effect_relative_motion.png][png]], [[./figs/dist_effect_relative_motion.pdf][pdf]]) +[[file:figs/dist_effect_relative_motion.png]] + +#+begin_src matlab :exports none + figure; + hold on; + plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(gm.psd_rv./((2*pi*gm.f).^2))))), 'DisplayName', 'Ground Motion'); + plot(tyz.f, flip(sqrt(-cumtrapz(flip(tyz.f), flip(tyz.pxz_ty_r./((2*pi*tyz.f).^2))))), 'DisplayName', 'Ty'); + plot(rz.f, flip(sqrt(-cumtrapz(flip(rz.f), flip(rz.pxsp_r./((2*pi*rz.f).^2))))), 'DisplayName', 'Rz'); + hold off; + set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); + xlabel('Frequency [Hz]'); ylabel('CAS of the relative displacement $[m]$') + legend('Location', 'southwest'); + xlim([2, 500]); ylim([1e-11, 1e-6]); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/dist_effect_relative_motion_cas.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:dist_effect_relative_motion_cas +#+CAPTION: Cumulative Amplitude Spectrum of the relative motion due to different sources of perturbation ([[./figs/dist_effect_relative_motion_cas.png][png]], [[./figs/dist_effect_relative_motion_cas.pdf][pdf]]) +[[file:figs/dist_effect_relative_motion_cas.png]] + +* Compute the Power Spectral Density of the disturbance force +<> + +Now, from the extracted transfer functions from the disturbance force to the relative motion of the hexapod with respect to the granite (section [[sec:sensitivity_disturbances]]) and from the measured PSD of the relative motion (section [[sec:psd_dist]]), we can compute the PSD of the disturbance force. + +#+begin_src matlab + rz.psd_f = rz.pxsp_r./abs(squeeze(freqresp(G('Vm', 'Frz'), rz.f, 'Hz'))).^2; + tyz.psd_f = tyz.pxz_ty_r./abs(squeeze(freqresp(G('Vm', 'Fty'), tyz.f, 'Hz'))).^2; +#+end_src + +#+begin_src matlab :exports none + figure; + hold on; + set(gca,'ColorOrderIndex',2); + plot(tyz.f, sqrt(tyz.psd_f), 'DisplayName', 'F - Ty'); + plot(rz.f, sqrt(rz.psd_f), 'DisplayName', 'F - Rz'); + hold off; + set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); + xlabel('Frequency [Hz]'); ylabel('ASD of the disturbance force $\left[\frac{F}{\sqrt{Hz}}\right]$') + legend('Location', 'southwest'); + xlim([2, 500]); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/dist_force_psd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:dist_force_psd +#+CAPTION: Amplitude Spectral Density of the disturbance force ([[./figs/dist_force_psd.png][png]], [[./figs/dist_force_psd.pdf][pdf]]) +[[file:figs/dist_force_psd.png]] + +* Noise Budget +Now, from the compute spectral density of the disturbance sources, we can compute the resulting relative motion of the Hexapod with respect to the granite using the model. +We should verify that this is coherent with the measurements. + +#+begin_src matlab :exports none + % Power Spectral Density of the relative Displacement + psd_gm_d = gm.psd_gm.*abs(squeeze(freqresp(G('Vm', 'Dw')/s, gm.f, 'Hz'))).^2; + psd_ty_d = tyz.psd_f.*abs(squeeze(freqresp(G('Vm', 'Fty')/s, tyz.f, 'Hz'))).^2; + psd_rz_d = rz.psd_f.*abs(squeeze(freqresp(G('Vm', 'Frz')/s, rz.f, 'Hz'))).^2; +#+end_src + +#+begin_src matlab :exports none + figure; + hold on; + plot(gm.f, sqrt(psd_gm_d), 'DisplayName', 'Ground Motion'); + plot(tyz.f, sqrt(psd_ty_d), 'DisplayName', 'Ty'); + plot(rz.f, sqrt(psd_rz_d), 'DisplayName', 'Rz'); + plot(rz.f, sqrt(psd_gm_d + psd_ty_d + psd_rz_d), 'k--', 'DisplayName', 'tot'); + hold off; + set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); + xlabel('Frequency [Hz]'); ylabel('ASD of the relative motion $\left[\frac{m}{\sqrt{Hz}}\right]$') + legend('Location', 'southwest'); + xlim([2, 500]); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/psd_effect_dist_verif.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:psd_effect_dist_verif +#+CAPTION: Computed Effect of the disturbances on the relative displacement hexapod/granite ([[./figs/psd_effect_dist_verif.png][png]], [[./figs/psd_effect_dist_verif.pdf][pdf]]) +[[file:figs/psd_effect_dist_verif.png]] + + +#+begin_src matlab :exports none + figure; + hold on; + plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_gm_d)))), 'DisplayName', 'Ground Motion'); + plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_ty_d)))), 'DisplayName', 'Ty'); + plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_rz_d)))), 'DisplayName', 'Rz'); + plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_gm_d + psd_ty_d + psd_rz_d)))), 'k-', 'DisplayName', 'tot'); + hold off; + set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); + xlabel('Frequency [Hz]'); ylabel('Cumulative Amplitude Spectrum [m]') + legend('location', 'northeast'); + xlim([2, 500]); ylim([1e-11, 1e-6]); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/cas_computed_relative_displacement.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:cas_computed_relative_displacement +#+CAPTION: CAS of the total Relative Displacement due to all considered sources of perturbation ([[./figs/cas_computed_relative_displacement.png][png]], [[./figs/cas_computed_relative_displacement.pdf][pdf]]) +[[file:figs/cas_computed_relative_displacement.png]] + +* Save +The PSD of the disturbance force are now saved for further noise budgeting when control is applied. + +#+begin_src matlab + dist_f = struct(); + dist_f.f = gm.f; % Frequency Vector [Hz] + dist_f.psd_gm = gm.psd_gm; % Power Spectral Density of the Ground Motion [m^2/Hz] + dist_f.psd_ty = tyz.psd_f; % Power Spectral Density of the force induced by the Ty stage in the Z direction [N^2/Hz] + dist_f.psd_rz = rz.psd_f; % Power Spectral Density of the force induced by the Rz stage in the Z direction [N^2/Hz] + + save('./disturbances/mat/disturbance-forces.mat', 'dist_f'); +#+end_src diff --git a/disturbances/mat/dist_psd.mat b/disturbances/mat/dist_psd.mat new file mode 100644 index 0000000..64412d6 Binary files /dev/null and b/disturbances/mat/dist_psd.mat differ diff --git a/disturbances/mat/psd_gm.mat b/disturbances/mat/psd_gm.mat new file mode 100644 index 0000000..ea78259 Binary files /dev/null and b/disturbances/mat/psd_gm.mat differ diff --git a/disturbances/mat/pxe_ty_r.mat b/disturbances/mat/pxe_ty_r.mat new file mode 100644 index 0000000..6ba0112 Binary files /dev/null and b/disturbances/mat/pxe_ty_r.mat differ diff --git a/disturbances/mat/pxsp_r.mat b/disturbances/mat/pxsp_r.mat new file mode 100644 index 0000000..f7d9f96 Binary files /dev/null and b/disturbances/mat/pxsp_r.mat differ diff --git a/disturbances/mat/pxz_ty_r.mat b/disturbances/mat/pxz_ty_r.mat new file mode 100644 index 0000000..6c5dc4d Binary files /dev/null and b/disturbances/mat/pxz_ty_r.mat differ diff --git a/disturbances/mat/tf_dist.mat b/disturbances/mat/tf_dist.mat new file mode 100644 index 0000000..c8f04e0 Binary files /dev/null and b/disturbances/mat/tf_dist.mat differ diff --git a/figs/cas_computed_relative_displacement.png b/figs/cas_computed_relative_displacement.png new file mode 100644 index 0000000..2832ae4 Binary files /dev/null and b/figs/cas_computed_relative_displacement.png differ diff --git a/figs/dist_effect_relative_motion.png b/figs/dist_effect_relative_motion.png new file mode 100644 index 0000000..3699563 Binary files /dev/null and b/figs/dist_effect_relative_motion.png differ diff --git a/figs/dist_effect_relative_motion_cas.png b/figs/dist_effect_relative_motion_cas.png new file mode 100644 index 0000000..b30e2bb Binary files /dev/null and b/figs/dist_effect_relative_motion_cas.png differ diff --git a/figs/dist_effect_relative_velocity.png b/figs/dist_effect_relative_velocity.png new file mode 100644 index 0000000..239c343 Binary files /dev/null and b/figs/dist_effect_relative_velocity.png differ diff --git a/figs/dist_force_psd.png b/figs/dist_force_psd.png new file mode 100644 index 0000000..3312296 Binary files /dev/null and b/figs/dist_force_psd.png differ diff --git a/figs/identification_comp_bot_stages.png b/figs/identification_comp_bot_stages.png new file mode 100644 index 0000000..e230dd7 Binary files /dev/null and b/figs/identification_comp_bot_stages.png differ diff --git a/figs/identification_comp_mid_stages.png b/figs/identification_comp_mid_stages.png new file mode 100644 index 0000000..e2c8e59 Binary files /dev/null and b/figs/identification_comp_mid_stages.png differ diff --git a/figs/identification_comp_top_stages.png b/figs/identification_comp_top_stages.png new file mode 100644 index 0000000..7cfc2d5 Binary files /dev/null and b/figs/identification_comp_top_stages.png differ