Files
simulatore-induttori/main.py
T
davideandClaude Opus 5 14226234bd 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>
2026-08-03 09:10:11 +02:00

78 lines
2.0 KiB
Python

# Punto di ingresso unico del progetto: seleziona da riga di comando quale
# azione eseguire.
#
# python main.py mesh # disegna la sola mesh a elementi shell
# python main.py simula # genera il dataset di run
# python main.py grafico # grafici del primo run generato
# python main.py anima # animazione 2D della sezione
# python main.py anima3d # animazione 3D isometrica del barattolo
#
# Senza argomenti stampa l'elenco delle azioni disponibili.
import argparse
import sys
def _azione_mesh() -> None:
import plot_mesh
plot_mesh.main()
def _azione_simula() -> None:
import simulate
simulate.main()
def _azione_grafico() -> None:
import plot_csv
plot_csv.main()
def _azione_anima() -> None:
import plot_animazione
plot_animazione.main()
def _azione_anima3d() -> None:
import plot_animazione_3d
plot_animazione_3d.main()
# Chiave da riga di comando -> (funzione, descrizione mostrata nell'help).
AZIONI = {
"mesh": (_azione_mesh, "Disegna la mesh a elementi shell della fascetta"),
"simula": (_azione_simula, "Genera il dataset di run nella cartella di output"),
"grafico": (_azione_grafico, "Grafici temperatura e flusso del primo run"),
"anima": (_azione_anima, "Animazione 2D del campo di temperatura nella sezione"),
"anima3d": (_azione_anima3d, "Animazione 3D isometrica del barattolo"),
}
def main() -> None:
parser = argparse.ArgumentParser(
description="Simulatore termico della fascetta riscaldata a induzione.",
formatter_class=argparse.RawTextHelpFormatter,
)
parser.add_argument(
"azione",
nargs="?",
choices=list(AZIONI),
help="\n".join(f"{nome}: {descrizione}" for nome, (_, descrizione) in AZIONI.items()),
)
argomenti = parser.parse_args()
if argomenti.azione is None:
parser.print_help()
sys.exit(1)
AZIONI[argomenti.azione][0]()
if __name__ == "__main__":
main()