Continuum Mechanics¶

da PowerShell -- jupyter nbconvert --to html notebook.ipynb

Trave elastica soggetta a peso proprio, isostatica¶

Entra in gioco la derivata quarta¶

In [49]:
# Entra in gioco la derivata quarta

import numpy as np
import matplotlib.pyplot as plt

# -----------------------------
# Parametri fisici
# -----------------------------
L = 1.0          # lunghezza trave
E = 210e9        # modulo di Young [Pa]
I = 1e-6         # momento d'inerzia [m^4]
q = 1000.0       # carico distribuito [N/m]

# -----------------------------
# Dominio numerico
# -----------------------------
Nx = 100
x = np.linspace(0, L, Nx)
dx = x[1] - x[0]

# -----------------------------
# Matrice operatore quarta derivata
# -----------------------------
A = np.zeros((Nx, Nx))
b = np.ones(Nx) * q / (E * I)

for i in range(2, Nx-2):
    A[i, i-2] = 1
    A[i, i-1] = -4
    A[i, i]   = 6
    A[i, i+1] = -4
    A[i, i+2] = 1

A /= dx**4

# -----------------------------
# Condizioni al contorno
# w(0)=0, w(L)=0
# M(0)=w''(0)=0, M(L)=0
# -----------------------------
# w(0)=0
A[0, :] = 0
A[0, 0] = 1
b[0] = 0

# w(L)=0
A[-1, :] = 0
A[-1, -1] = 1
b[-1] = 0

# w''(0)=0
A[1, :] = 0
A[1, 0] = 1
A[1, 1] = -2
A[1, 2] = 1
b[1] = 0

# w''(L)=0
A[-2, :] = 0
A[-2, -3] = 1
A[-2, -2] = -2
A[-2, -1] = 1
b[-2] = 0

# -----------------------------
# Risoluzione sistema
# -----------------------------
w = np.linalg.solve(A, b)

# -----------------------------
# Confronto con soluzione analitica
# -----------------------------
w_analytical = (q / (24 * E * I)) * x * (L**3 - 2*L*x**2 + x**3)

def sinusoid(x):
    return -6.2e-5*np.sin(np.pi*x)
f = sinusoid(x)
# -----------------------------
# Plot
# -----------------------------
plt.figure()
plt.plot(x, (-w_analytical-f)*5, label="Scarto da Sinusode")
plt.plot(x, -w, label="Numerica")
plt.plot(x, -w_analytical, "--", label="Analitica")
plt.xlabel("x")
plt.ylabel("Freccia w(x)")
plt.legend()
plt.grid()
plt.show()

print("Freccia massima numerica:", np.min(w))
print("Freccia massima analitica:", np.min(w_analytical))
No description has been provided for this image
Freccia massima numerica: 0.0
Freccia massima analitica: 0.0

Spiegazione delle condizioni al contorno¶

Significato della matrice $A$ e del vettore $b$ nel problema della trave semplicemente appoggiata}¶

Idea di base¶

Un calcolatore non risolve direttamente equazioni differenziali. Ogni problema di meccanica del continuo, dopo la discretizzazione, viene ricondotto a un sistema algebrico del tipo: $$\large \boxed{ A\,\mathbf{w} = \mathbf{b} } $$

dove:

  • $\mathbf{w}$ è il vettore delle incognite,
  • $A$ è la matrice che rappresenta l'operatore differenziale e i vincoli,
  • $\mathbf{b}$ è il vettore dei carichi applicati.

Il vettore delle incognite $\mathbf{w}$¶

La trave viene suddivisa in $N$ punti lungo la coordinata $x$. Ad ogni punto $x_i$ è associata una freccia: $$\large \mathbf{w} = \begin{bmatrix} w_0 \\ w_1 \\ w_2 \\ \vdots \\ w_{N-1} \end{bmatrix} $$

dove $w_i$ rappresenta l'abbassamento verticale della trave nel punto $x_i$.

L'obiettivo del problema è determinare tutte le componenti del vettore $\mathbf{w}$.

Significato fisico della matrice $A$¶

La matrice $A$ rappresenta:

  • l'operatore di flessione della trave di Eulero--Bernoulli,
  • le condizioni al contorno (vincoli).

In forma continua, l'equazione della trave è: $$\large EI\,\frac{d^4 w}{dx^4} = q $$

Dopo la discretizzazione mediante differenze finite, la derivata quarta in un punto interno $x_i$ diventa: $$\large \frac{w_{i-2} - 4w_{i-1} + 6w_i - 4w_{i+1} + w_{i+2}}{\Delta x^4} $$

I coefficienti: $$\large 1,\,-4,\,6,\,-4,\,1 $$

costituiscono una riga tipica della matrice $A$.

Essi descrivono come la freccia in un punto dipende dalle frecce nei punti vicini, cioè la $\textbf{rigidezza flessionale}$ della trave.

Righe di $A$ associate ai vincoli¶

Alcune righe della matrice $A$ non rappresentano l'equazione della trave, ma impongono condizioni al contorno.

Condizione di appoggio¶

La condizione: $$\large w(0) = 0 $$

viene imposta algebraicamente come: $$\large w_0 = 0 $$

Questa condizione sostituisce una riga della matrice con: $$\large A_{0,0} = 1, \qquad b_0 = 0 $$

Condizione di momento nullo¶

Un appoggio semplice non trasmette momento: $$\large M = EI\,w'' = 0 $$

La derivata seconda discreta è approssimata come: $$\large w''(0) \approx \frac{w_0 - 2w_1 + w_2}{\Delta x^2} $$

Imponendo $w''(0)=0$ si ottiene: $$\large w_0 - 2w_1 + w_2 = 0 $$

che corrisponde a un'altra riga speciale della matrice $A$.

Significato del vettore $b$¶

Il vettore $\mathbf{b}$ rappresenta la $\textbf{forzante esterna}$ del problema.

Per i punti interni della trave: $$\large b_i = \frac{q}{EI} $$

dove $q$ è il carico distribuito uniforme (peso proprio).

Per le righe associate ai vincoli: $$\large b_i = 0 $$

poiché i vincoli non applicano carichi noti, ma solo condizioni geometriche.

Interpretazione fisica complessiva¶

Il sistema algebrico: $$\large A\,\mathbf{w} = \mathbf{b} $$

può essere interpretato come:

  • $A$: rigidezza della trave e dei vincoli,
  • $\mathbf{w}$: deformata cercata,
  • $\mathbf{b}$: carichi applicati.

Risolvere il sistema significa trovare la configurazione di equilibrio che minimizza l'energia elastica della trave.

Collegamento con la meccanica del continuo¶

$$\large \text{Continuo:} \qquad EI\,w''''(x) = q $$$$\large \text{Discreto:} \qquad A\,\mathbf{w} = \mathbf{b} $$

La fisica del problema resta invariata: cambia solo la rappresentazione matematica utilizzata per risolverlo numericamente.

In [ ]: