Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

# Pdf output
*.pdf
!img/py/*.pdf

# recovery files
*~
Expand Down
File renamed without changes.
100 changes: 100 additions & 0 deletions img/pictures.tex
Original file line number Diff line number Diff line change
Expand Up @@ -497,3 +497,103 @@
\end{scope}
}
}

\pgfplotsset{width=7cm}
\pgfplotsset{colormap={white}{color=(gray!20) color=(white)},
colormap/white/.style={colormap name=white}}
\pgfplotsset{colormap={gray}{color=(gray) color=(gray!20)},
colormap/gray/.style={colormap name=gray}}
\pgfplotsset{empty axes/.style={
xtick=\empty,
ytick=\empty,
ztick=\empty,
draw=gray}}
\pgfplotsset{white style/.style={
surf,
colormap/gray,
mesh/interior colormap name=white,
mesh/interior colormap thresh=0.05,
samples=25, % 5 for fast rendering, 25 for accurate rendering
domain=0:1}}

\tikzset{
slab/.pic = {
\draw [fill=gray!20] coordinate (O) rectangle (3,2) coordinate (P);
\path (O) -- node [midway,below] {$l_x$} (O -| P);
\path (O -| P) -- node [midway,right] {$l_y$} (P);
},
slab1/.pic = {
\begin{axis}[empty axes,title={$1^\text{st}$ mode ($n=1$, $m=1$)}]
\addplot3 [white style] {sin(180*x) * sin(180*y)};
\end{axis}
},
slab2/.pic = {
\begin{axis}[empty axes,title={$2^\text{nd}$ mode ($n=2$, $m=1$)}]
\addplot3 [white style] {sin(360*x) * sin(180*y)};
\end{axis}
},
slab3/.pic = {
\begin{axis}[empty axes,title={$3^\text{rd}$ mode ($n=1$, $m=2$)}]
\addplot3 [white style] {sin(180*x) * sin(360*y)};
\end{axis}
},
slab4/.pic = {
\begin{axis}[empty axes,title={$4^\text{th}$ mode ($n=2$, $m=2$)}]
\addplot3 [white style] {sin(360*x) * sin(360*y)};
\end{axis}
}
}

\usetikzlibrary{decorations.pathmorphing, decorations.markings}

\tikzset{
mass/.style = {fill=gray!50, draw, minimum width=2cm, minimum height=1cm
},
smallmass/.style = {mass, minimum width=1cm, minimum height=.5cm
},
wheel/.style = {circle, fill=gray!25, draw, yshift=-0.25cm, minimum size=0.5cm
},
spring/.style = {thick, decorate, decoration={zigzag, pre length=0.3cm, post length=0.3cm, segment length=8}
},
damper/.style = {
thick, decorate, decoration={
markings, mark connection node=dmp, mark=at position 0.5 with {
\node (dmp) [thick, inner sep=0pt, transform shape, minimum width=10pt, minimum height=10pt, draw=none, fill=green!20] {};
\draw [thick] (dmp.south east) -- (dmp.south west) -- (dmp.north west) -- (dmp.north east);
\draw [thick] (dmp |- dmp.35) -- (dmp |- dmp.-35);
\draw [thick] (dmp.center) -- (dmp.east);
}
}
},
springmassdamper/.pic = {
\coordinate (O);
\coordinate (U) at (0,-.3);
\node [mass] (m) at (3,1) {$m$};
\node [wheel] at (m.220) {};
\node [wheel] at (m.320) {};
\draw [spring] (m.165 -| O) -- (m.165) node [midway,above] {$k$};
\draw [damper] (m.195 -| O) -- (m.195) node [midway,below=3pt] {$\xi$};
\draw [very thick,-latex] (m.north east) -- ++(1,0) node [right] {$F=F_0\sin(\Omega t + \phi)$};
\draw (O) -- (0,2);
\draw (O) -- (6,0);
\draw [|->,thick] (m |- U) -- ++(.8,0) node [right] {$u$};
},
springmassdampermass/.pic = {
\coordinate (O);
\coordinate (U) at (0,-.3);
\node [mass] (m) at (3,1) {$m$};
\node [wheel] at (m.220) {};
\node [wheel] at (m.320) {};
\draw [spring] (m.165 -| O) -- (m.165) node [midway,above] {$k$};
\draw [damper] (m.195 -| O) -- (m.195) node [midway,below=3pt] {$\xi$};
\draw [very thick,-latex] (m.north east) -- ++(1,0) node [right] {$F=F_0\sin(\Omega t + \phi)$};
\node [smallmass] (md) at (6,.75) {$m_d$};
\node [wheel] at (md.south) {};
\draw [spring] (md.160 -| m.east) -- (md.160) node [midway,above] {$k_d$};
\draw [damper] (md.200 -| m.east) -- (md.200) node [midway,below=2pt] {$\xi_d$};
\draw (O) -- (0,2);
\draw (O) -- (8,0);
\draw [|->,thick] (m |- U) -- ++(.8,0) node [right] {$u$};
\draw [|->,thick] (md |- U) -- ++(1,0) node [right] {$u+u_d$};
}
}
158 changes: 158 additions & 0 deletions img/py/mass_damper.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>

<body>

<h3>
<math display="inline">
<mi>H</mi><mo>=</mo>
<msqrt>
<mfrac>
<!-- Numerador -->
<mrow>
<msup>
<mrow>
<mo>(</mo>
<msup><mi>&eta;</mi><mn>2</mn></msup>
<mo>−</mo>
<msup><mi>&gamma;</mi><mn>2</mn></msup>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>
<mo>+</mo>
<mn>4</mn>
<msup><msub><mi>&xi;</mi><mi>d</mi></msub><mn>2</mn></msup>
<msup><mi>&gamma;</mi><mn>2</mn></msup>
<msup><mi>&eta;</mi><mn>2</mn></msup>
</mrow>

<!-- Denominador -->
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mrow>
<mo>(</mo>
<msup><mi>&eta;</mi><mn>2</mn></msup>
<mo>−</mo>
<msup><mi>&gamma;</mi><mn>2</mn></msup>
<mo>)</mo>
</mrow>
<mo>(</mo>
<mn>1</mn><mo>−</mo><msup><mi>&gamma;</mi><mn>2</mn></msup>
<mo>)</mo>
<mo>−</mo>
<mi>&rho;</mi>
<msup><mi>&gamma;</mi><mn>2</mn></msup>
<msup><mi>&eta;</mi><mn>2</mn></msup>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>

<mo>+</mo>

<msup>
<mrow>
<mo>(</mo>
<mn>2</mn>
<msub><mi>&xi;</mi><mi>d</mi></msub>
<mi>&gamma;</mi>
<mi>&eta;</mi>
<mo>(</mo>
<mn>1</mn><mo>−</mo>
<msup><mi>&gamma;</mi><mn>2</mn></msup>
<mo>(</mo><mn>1</mn><mo>+</mo><mi>&rho;</mi><mo>)</mo>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>
</mrow>
</mfrac>
</msqrt>

<!-- definiciones -->
<mspace width="1em"/>
<mo>,</mo>
<mspace width="0.5em"/>
<mi>&rho;</mi><mo>=</mo>
<mfrac><msub><mi>m</mi><mi>d</mi></msub><mi>m</mi></mfrac>
<mo>,</mo>
<mspace width="0.5em"/>
<mi>&eta;</mi><mo>=</mo>
<mfrac><msub><mi>&omega;</mi><mi>d</mi></msub><mi>&omega;</mi></mfrac>
</math>
</h3>


<label>ρ = <span id="rho_tag"></span></label><br>
<input type="range" id="rho" min="0" max="0.1" step="0.001" value="0.05" style="width:300px;"><br>
<label>η = <span id="eta_tag"></span></label><br>
<input type="range" id="eta" min="0.9" max="1.05" step="0.001" value="0.975" style="width:300px;"><br>
<label>ξd = <span id="xi_tag"></span></label><br>
<input type="range" id="xi" min="0" max="0.2" step="0.001" value="0.10" style="width:300px;"><br>

<div id="plot" style="width:800px;height:400px;"></div>

<script>
function updatePlot() {

let rho = parseFloat(document.getElementById("rho").value);
document.getElementById("rho_tag").innerHTML = rho;
let eta = parseFloat(document.getElementById("eta").value);
document.getElementById("eta_tag").innerHTML = eta;
let xi = parseFloat(document.getElementById("xi").value);
document.getElementById("xi_tag").innerHTML = xi;

let x = [];
let y = [];
let z = [];
for (let i=0; i<=3; i+=0.01) {
a = eta**2 - i**2;
b = 2*xi*i*eta;
c = a**2 + b**2;
d = (a*(1-i**2) -rho*i**2*eta**2)**2 + b**2*(1-i**2*(1+rho))**2;

f = Math.abs(1 - i*i);

x.push(i);
y.push(Math.sqrt(c/d));
z.push((f < 5e-2) ? NaN : 1/f);
}

Plotly.newPlot("plot", [
{
x: x,
y: y,
name: "H",
mode: "lines"
},{
x: x,
y: z,
name: "no mass damper",
mode: "none",
fill: "tozeroy",
fillcolor: "rgba(200,50,50,0.2)",
hoverinfo: "none"
}
], {
margin: { t: 10 },
dragmode: false
});
}

document.getElementById("rho").addEventListener("input", updatePlot);
document.getElementById("eta").addEventListener("input", updatePlot);
document.getElementById("xi").addEventListener("input", updatePlot);

updatePlot();
</script>

</body>
</html>
File renamed without changes.
Binary file added img/py/tmd-dampings.pdf
Binary file not shown.
Binary file added img/py/tmd-frequencies.pdf
Binary file not shown.
11 changes: 11 additions & 0 deletions include/beam_frequencies.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@

Analyitical expressions for the frequencies of vibration for beams can be found by means of the Rayleigh's method. Generally, sinusoidal functions are used, since the appropriate combination of them allow to consider multiple boundary conditions and the main modes of vibration.
The expressions shown in the table below coincide with the expressions proposed in most of the codes and application guidelines, see for instance \cite{sci-p354}. All of them are the result of applying the Raileigh's method with appropriate shape functions.

\begin{center}
\begin{tabular}{lcc}
Model & $f$ (Hz) & $M_\Psi$ \\ \hline
simply supp & $\displaystyle \frac{\pi}{2}\sqrt{\frac{EI}{L^3m}}$ & $\frac{m}{2}$ \\
cantilever & $\displaystyle \frac{\pi}{8\sqrt{3-8/\pi}}\sqrt{\frac{EI}{L^3m}}$ & $0.64m$ \\
\end{tabular}
\end{center}
Original file line number Diff line number Diff line change
@@ -1,30 +1,3 @@
\documentclass{article}

\usepackage{../sty/notes}
\notenum{2}

\pgfplotsset{width=7cm}
\pgfplotsset{colormap={white}{color=(gray!20) color=(white)},
colormap/white/.style={colormap name=white}}
\pgfplotsset{colormap={gray}{color=(gray) color=(gray!20)},
colormap/gray/.style={colormap name=gray}}
\pgfplotsset{empty axes/.style={
xtick=\empty,
ytick=\empty,
ztick=\empty,
draw=gray}}
\pgfplotsset{white style/.style={
surf,
colormap/gray,
mesh/interior colormap name=white,
mesh/interior colormap thresh=0.05,
samples=5, % 5 for fast rendering, 25 for accurate rendering
domain=0:1}}


\begin{document}

\section*{Natural frequencies of floor slabs}

The natural stiffness of a floor slab can be approximated making use of the Rayleigh's method using an appropriate shape function satisfying the boundary conditions. From the static equilibrium equation of a slab, the modal mass and modal stiffness are rewritten according to the follwong expressions:
\begin{equation*}
Expand All @@ -39,12 +12,8 @@ \section*{Natural frequencies of floor slabs}
$$

\begin{wrapfigure}{l}{4cm}
\vspace{-1em}
\begin{tikzpicture}
\draw [fill=gray!20] coordinate (O) rectangle (3,2) coordinate (P);
\path (O) -- node [midway,below] {$l_x$} (O -| P);
\path (O -| P) -- node [midway,right] {$l_y$} (P);
\end{tikzpicture}
\vspace{-1em}
\tikz \pic {slab};
\end{wrapfigure}

For a rectangular floor \emph{simply supported at the four sides}, the natural frequencies can be approximated using the following shape function, where $n$ and $m$ stand for the $i^\text{th}$ mode of vibration at the $x$ and $y$ directions,
Expand Down Expand Up @@ -75,8 +44,8 @@ \section*{Natural frequencies of floor slabs}
\begin{align*}
\omega^2 &= \frac{k_\psi}{m_\psi} = \frac{\pi^4D}{4}\frac{4}{\rho t}
\left(\frac{n^4}{l_x^4} + \frac{m^4}{l_y^4} + 2\frac{n^2m^2}{l_x^2l_y^2}\right)
= \frac{\pi^4D}{\rho t}\left(\frac{n^2}{l_x^2} + \frac{m^2}{l_m^2}\right)^2 \\
\omega &= \pi^2\sqrt{\frac{D}{\rho t}} \left(\frac{n^2}{l_x^2} + \frac{m^2}{l_y^2}\right)^2
= \frac{\pi^4D}{\rho t}\left(\frac{n^2}{l_x^2} + \frac{m^2}{l_m^2}\right)^2, \\
\omega &= \pi^2\sqrt{\frac{D}{\rho t}} \left(\frac{n^2}{l_x^2} + \frac{m^2}{l_y^2}\right),
\end{align*}
and the first natural frequency is
\begin{equation*}
Expand All @@ -85,30 +54,11 @@ \section*{Natural frequencies of floor slabs}


\begin{center}
\begin{tikzpicture}
\begin{axis}[empty axes,title={$1^\text{st}$ mode ($n=1$, $m=1$)}]
\addplot3 [white style] {sin(180*x) * sin(180*y)};
\end{axis}
\end{tikzpicture}
\tikz \pic {slab1};
\hspace{1em}
\begin{tikzpicture}
\begin{axis}[empty axes,title={$2^\text{nd}$ mode ($n=2$, $m=1$)}]
\addplot3 [white style] {sin(360*x) * sin(180*y)};
\end{axis}
\end{tikzpicture}
\tikz \pic {slab2};

\begin{tikzpicture}
\begin{axis}[empty axes,title={$3^\text{rd}$ mode ($n=1$, $m=2$)}]
\addplot3 [white style] {sin(180*x) * sin(360*y)};
\end{axis}
\end{tikzpicture}
\tikz \pic {slab3};
\hspace{1em}
\begin{tikzpicture}
\begin{axis}[empty axes,title={$4^\text{th}$ mode ($n=2$, $m=2$)}]
\addplot3 [white style] {sin(360*x) * sin(360*y)};
\end{axis}
\end{tikzpicture}
\tikz \pic {slab4};
\end{center}


\end{document}
Loading