Aggiunge la mesh a elementi shell della fascetta e il main.py

Introduce mesh.py, che costruisce una griglia strutturata di quadrilateri
a 4 nodi sulla superficie media del cilindro, chiusa lungo la
circonferenza, come base per la futura analisi FEM. plot_mesh.py la
visualizza in vista isometrica e main.py raccoglie tutte le azioni del
progetto dietro un unico punto di ingresso.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-03 09:10:11 +02:00
co-authored by Claude Opus 5
parent 560c6a6a62
commit 14226234bd
5 changed files with 272 additions and 6 deletions
+59
View File
@@ -0,0 +1,59 @@
# Visualizzazione della sola mesh a elementi shell della fascetta, in vista
# isometrica: facce chiare con i bordi degli elementi in evidenza.
from pathlib import Path
import matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
from mesh import genera_mesh, riepilogo_mesh
def main() -> None:
dati = genera_mesh()
print(riepilogo_mesh(dati))
nodi = dati["nodi"]
facce = nodi[dati["elementi"]]
raggio_m = dati["raggio_m"]
lunghezza_m = dati["lunghezza_m"]
fig = plt.figure(figsize=(9, 7))
ax = fig.add_subplot(projection="3d")
ax.view_init(elev=35.264, azim=45)
ax.set_box_aspect((lunghezza_m, 2 * raggio_m, 2 * raggio_m))
ax.set_axis_off()
collezione = Poly3DCollection(
facce,
facecolors="#d9e3f0",
edgecolors="#2b3a55",
linewidths=0.4,
shade=True,
lightsource=matplotlib.colors.LightSource(azdeg=315, altdeg=45),
)
ax.add_collection3d(collezione)
ax.set_xlim(0.0, lunghezza_m)
ax.set_ylim(-raggio_m, raggio_m)
ax.set_zlim(-raggio_m, raggio_m)
ax.set_title(
f"Mesh shell: {dati['n_elementi_x']} × "
f"{dati['n_elementi_circonferenza']} elementi quadrangolari"
)
if matplotlib.get_backend().lower() == "agg":
cartella = Path("dataset")
cartella.mkdir(parents=True, exist_ok=True)
percorso = cartella / "mesh.png"
fig.savefig(percorso, dpi=150)
print(f"Backend non interattivo: immagine salvata in {percorso}")
return
plt.show()
if __name__ == "__main__":
main()