59 lines
1.4 KiB
Python
59 lines
1.4 KiB
Python
import sys
|
||
import os
|
||
|
||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||
|
||
from fdm.solver import solve
|
||
from fdm.visualizer import visualize_fdm
|
||
|
||
|
||
def print_header():
|
||
print("=" * 38)
|
||
print(" Heat Equation — FDM Solver")
|
||
print(" ∂T/∂t = α ∂²T/∂x²")
|
||
print("=" * 38)
|
||
|
||
|
||
def main_menu():
|
||
print("\nInitializing solver...")
|
||
print("Ready.\n")
|
||
|
||
T, x_vals, t_vals = None, None, None
|
||
|
||
while True:
|
||
print("\n" + "-" * 30)
|
||
print(" MAIN MENU")
|
||
print("-" * 30)
|
||
print("1. Risolvi e salva risultati")
|
||
print("2. Heatmap T(x,t)")
|
||
print("3. Animazione T(x) nel tempo")
|
||
print("4. Grafico T(t) in punti fissi")
|
||
print("0. Esci")
|
||
print("-" * 30)
|
||
|
||
choice = input("Select an option (0-4): ").strip()
|
||
|
||
if choice == "1":
|
||
T, x_vals, t_vals = solve()
|
||
print(f"Soluzione completata. Shape T: {T.shape}")
|
||
print(f"T range: [{T.min():.2f}, {T.max():.2f}] °C")
|
||
|
||
elif choice in ("2", "3", "4"):
|
||
if T is None:
|
||
print("Eseguire prima l'opzione 1.")
|
||
else:
|
||
visualize_fdm(T, x_vals, t_vals)
|
||
print("Grafici salvati in animations/fdm/")
|
||
|
||
elif choice == "0":
|
||
print("Uscita.")
|
||
sys.exit(0)
|
||
|
||
else:
|
||
print("Scelta non valida.")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
print_header()
|
||
main_menu()
|