COMPUTATIONAL PHYSICS LABORATORY
1° Anno - Primo Semestre
Frequenza Non obbligatoria
- 6 CFU
- 72 ore
- ITALIANO
- Sede di Trieste
- Opzionale
- Convenzionale
- Orale
- SSD FIS/01
Il corso intende fornire allo studente alcuni algoritmi numerici fondamentali e gli strumenti di base per applicarli in codici numerici per risolvere problemi di fisica classica e semplici problemi di fisica quantistica.
Il corso ha i seguenti obiettivi specifici:
- CONOSCENZA E CAPACITÀ DI COMPRENSIONE: fornire allo studente gli elementi concettuali fondamentali del calcolo scientifico e delle simulazioni numeriche sia di tipo deterministico che stocastico, e alcuni algoritmi per la risoluzione di problemi.
- CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: fornire allo studente gli strumenti di base per saper identificare un algoritmo risolutivo, implementarlo in un linguaggio di programmazione, eseguire la simulazione numerica ed analizzare e visualizzare i risultati ottenuti.
- AUTONOMIA DI GIUDIZIO: rendere lo studente in grado di applicare concetti e strumenti appresi in modo critico, individuando anche eventuali soluzioni non affidabili (ad esempio, sapere riconoscere se un algoritmo è stato implementato in modo corretto utilizzando il codice in situazioni facilmente controllabili anche analiticamente (casi limite, "benchmark")); al raggiungimento di questo obiettivo contribuisce il training continuo nella soluzione numerica dei problemi; il modo in cui sono risolti gli homework e il progetto finale costituisce una chiara verifica.
- ABILITÀ COMUNICATIVE: rendere lo studente in grado di spiegare le conoscenze apprese e di trasmetterle ad altri, e di saper inquadrare un problema specifico in un contesto più ampio; al raggiungimento di questo obiettivo contribuiscono significativamente i momenti di interazione con il docente e di discussione con i compagni di corso. Il report scritto sul progetto individuale e la prova orale permettono di verificare chiaramente il raggiungimento di tali abilità.
- CAPACITÀ DI APPRENDIMENTO: rendere lo studente capace di apprendere in modo critico concetti e strumenti risolutivi. Per facilitare questa capacità, lo studente è stimolato ad interagire durante le lezioni frontali e soprattutto durante le esercitazioni, e a proporre anche nuovi algoritmi risolutivi o a migliorare quelli proposti. Gli homework proposti durante il corso aiutano a sviluppare questa capacità di apprendimento in modo graduale e progressivo, a partire da concetti e problemi semplici per arrivare a quelli più complessi.
Tali obiettivi specifici sono coerenti con quelli generali del Corso di studi di formare laureati con solida preparazione scientifica di base, capacità di “problem solving” e capacità operative specifiche (a cui questo specifico insegnamento contribuisce per quanto riguarda competenze di tipo computazionali) nel campo delle Scienze Fisiche ma anche in applicazioni in diversi campi.
Conoscenze di base sull'uso del computer, un sistema operativo, visualizzazione scientifica dei dati (plot); conoscenza di base di un linguaggio di programmazione scientifico (quale ad es. Fortran 90). Conoscenze standard in fisica classica e meccanica statistica acquisite da un corso di laurea triennale di tipo tecnico-scientifico; limitatamente ad alcuni algoritmi e loro applicazioni affrontati nel corso, conoscenze di base di meccanica quantistica.
- Errori e incertezze nei calcoli. Rappresentazione finita di numeri in un computer.
- Metodi numerici di risoluzione di equazioni differenziali, con particolare riferimento all'equazione di Schroedinger in una dimensione e per un potenziale a simmetria sferica.
- Numeri (pseudo)casuali (generatori, proprietà, distribuzioni uniformi)
- Numeri (pseudo)casuali con distribuzioni non uniformi metodo di trasformazione inversa e altri algoritmi per distribuzioni specifiche. Processi casuali: decadimento radioattivo.
- Introduzione ai “random walks” (RW); proprietà. Simulazione Monte Carlo di RD 1D e 2D. RW per simulare i processi di diffusione.
- Integrazione numerica in 1 dimensione: algoritmo deterministico e stima degli errori; Algoritmi Monte Carlo (accettazione-rifiuto, media del campione, campionamento d'importanza) e gestione degli errori (riduzione della varianza: deviazioni standard della media, blocco)
- Integrazione numerica multidimensionale: confronto tra metodi deterministici e Monte Carlo. Integrazione numerica unidimensionale: quadratura gaussiana; uso di subroutine da libreria di “Numerical Recipes”. Numeri casuali con distribuzione Guassiana: algoritmo di Box-Muller; il teorema del limite centrale.
- Metodo Metropolis Monte Carlo per generare arbitrarie distribuzioni di probabilità non uniformi. Riduzione della varianza: deviazioni standard della media (ulteriori dettagli, motivazione).
- Concetti di base di meccanica statistica, revisione. Ordine / disordine, macro / microstati, entropia (con l’esempio di un efficiente algoritmo computazionale per il calcolo). Il metodo Metropolis nell'insieme canonico. La distribuzione di Boltzmann come risultato del metodo Metropolis.
- Il modello di Ising: introduzione. Simulazione con il metodo Metropolis. Equilibrazione. La transizione di fase di Ising: temperatura critica. Suscettibilità magnetica e calore specifico. Ulteriori dettagli sul modello di Ising. Esponenti critici.
- Gas su reticolo; esempio di diffusione di vacanze in solidi cristallini. Frattali: diffusione e aggregazione. Modello per la crescita di superfici. Percolazione.
- Monte Carlo in Meccanica quantistica: MC variazionale.
- Caos e determinismo. Biliardi classici e caos. Mappe logistiche. Esponenti di Lyapunov.
- Cenni a modelli evolutivi ed epidemiologici per la dinamica delle popolazioni.
- "Introduction to Computer simulation Methods: application to Physical Systems", H. Gould, J. Tobochnik and W. Christian, Addison Wesley (2006), III Ed.; H. Gould and J. Tobochnik, Addison Wesley (1995), II Ed.
- "Statistical and Thermal Physics", H. Gould and J. Tobochnik, Princeton University Press (2010).
- "Computational Physics: problem solving with computers", R.H. Landau, M.J. Paez, J. Wiley & Sons (1997, I ed.; 2007, II ed., enlarged, M.J. Paez and C.C. Bordeianu).
- "A Survey of Computational Physics: Introductory Computational Science", R.H. Landau, M.J. Paez and C.C. Bordeianu, Princeton University Press (2008).
-"A First Course in Scientific Computing", R.H. Landau, Princeton University Press (2005).
- "Understanding Molecular Simulations: From Algorithms to Applications", by Daan Frenkel and Berend Smit, Academic Press (2nd edition, 2001)
- Errori e incertezze nei calcoli. Rappresentazione finita di numeri in un computer, in particolare manipolazione dei numeri con i compilatori Fortran.
- Metodi numerici di risoluzione di equazioni differenziali, con particolare riferimento all'equazione di Schroedinger in una dimensione e per un potenziale a simmetria sferica.
- Numeri (pseudo)casuali (generatori, proprietà, distribuzioni uniformi)
- Numeri (pseudo)casuali con distribuzioni non uniformi metodo di trasformazione inversa e altri algoritmi per distribuzioni specifiche. Processi casuali: decadimento radioattivo.
- Introduzione ai “random walks” (RW); proprietà. Simulazione Monte Carlo di RD 1D e 2D. RW per simulare i processi di diffusione.
- Integrazione numerica in 1 dimensione: algoritmo deterministico e stima degli errori; Algoritmi Monte Carlo (accettazione-rifiuto, media del campione, campionamento d'importanza) e gestione degli errori (riduzione della varianza: deviazioni standard della media, blocco)
- Integrazione numerica multidimensionale: confronto tra metodi deterministici e Monte Carlo. Integrazione numerica unidimensionale: quadratura gaussiana; uso di subroutine da libreria di “Numerical Recipes”. Numeri casuali con distribuzione Guassiana: algoritmo di Box-Muller; il teorema del limite centrale.
- Metodo Metropolis Monte Carlo per generare arbitrarie distribuzioni di probabilità non uniformi. Riduzione della varianza: deviazioni standard della media (ulteriori dettagli, motivazione).
- Concetti di base di meccanica statistica, revisione. Ordine / disordine, macro / microstati, entropia (con l’esempio di un efficiente algoritmo computazionale per il calcolo). Il metodo Metropolis nell'insieme canonico. La distribuzione di Boltzmann come risultato del metodo Metropolis.
- Il modello di Ising: introduzione. Simulazione con il metodo Metropolis. Equilibrazione. La transizione di fase di Ising: temperatura critica. Suscettibilità magnetica e calore specifico. Ulteriori dettagli sul modello di Ising. Esponenti critici.
- Gas su reticolo; esempio di diffusione di vacanze in solidi cristallini. Frattali: diffusione e aggregazione. Modello per la crescita di superfici. Percolazione.
- Fluidi classici: simulazione Monte Carlo. Concetti di base di simulazioni di dinamica molecolare.
- Monte Carlo in Meccanica quantistica: MC variazionale.
- Caos e determinismo. Biliardi classici e caos. Mappe logistiche. Esponenti di Lyapunov.
- Modelli legati alla biologia (evoluzione di popolazioni con eq. di Lotka-Volterra e con approcci stocastici; algoritmi genetici; modelli epidemiologici)
Lezioni frontali ed esercitazioni numeriche assistite in laboratori informatici. Nelle lezioni frontali vengono discussi alcuni problemi ed algoritmi, e vengono proposti agli studenti esercizi da svolgere numericamente. Questi includono: semplici esercizi introduttivi (con implementazione e utilizzo di diversi algoritmi di base di analisi numerica) per i quali vengono forniti codici esemplificativi tipicamente in Fortran 90 per recuperare alcune competenze di base proprie di un linguaggio compilato (ad es. la gestione della precisione); per la gestione degli errori; esercizi per applicazioni e simulazioni specifiche, raccolta e analisi di dati, visualizzazione; comprensione, uso e revisione di codici già forniti e implementazione personale di nuovi codici e/o interfacciamento di parti di codici in linguaggi diversi.
Tra la lezione frontale e le esercitazioni assistite gli studenti sono invitati a cominciare ad affrontare individualmente gli esercizi proposti, per poi riprendere il lavoro nelle sessioni di esercitazioni assistite in Laboratorio informatico, confrontandosi a gruppi e interagendo con i docenti.
Videoregistrazioni delle lezioni (non delle esercitazioni) tramite MS Teams disponibili per 12 mesi dalla data della registrazione. Materiale del corso (slide delle lezioni, parti di codici, materiale di approfondimento) su: https://moodle2.units.it
L'insegnamento non ha l'obiettivo di insegnare un linguaggio di programmazione specifico, ma è occasione per applicare abilità informatiche, eventualmente apprese durante altre attività formative, in particolare nell'uso di diversi linguaggi, compilati e non, loro interfacciamento e complementarietà allo scopo di migliorare l'efficienza dei codici.
La verifica dell'approndimento prevede degli homework in itinere e un progetto finale con report scritto e discussione orale. Negli homework (tipicamente due o tre) in itinere sono proposti esercizi da risolvere numericamente con codici forniti o scritti in modo autonomo e originale, entro una data prestabilita (tipicamente una decina di giorni dalla data di assegnazione); un breve report va consegnato caricandolo sulla piattaforma moodle2. La verifica finale prevede lo svolgimento di un progetto individuale di simulazione numerica, scelto dallo studente da una rosa di progetti proposti o anche di altro tipo, purché concordato con i docenti. Lo studente ha a disposizione tipicamente una decina di giorni per lo svolgimento del progetto, e alla fine deve consegnare un breve report che contenga in modo sintetico ma esaustivo gli elementi essenziali del problema affrontato, dell'algoritmo risolutivo utilizzato, delle specifiche della sua implementazione, dati di input, risultati e loro analisi. Il report va consegnato via mail ai docenti il giorno prima della discussione orale, che parte dal progetto stesso e prevede domande di approfondimento che possono estendersi anche a tutti gli argomenti trattati durante il corso. Al voto finale (voto unico, in trentesimi) concorre anche la valutazione del progetto svolto e degli esercizi intermedi (homework). In caso di impossibilità da parte dello studente di rispettare le consegne degli homework per motivi giustificati, l'esame può essere fatto integrando comunque il progetto con lo svolgimento degli esercizi degli homework.
Questo insegnamento approfondisce argomenti strettamente connessi a uno o più obiettivi dell’Agenda 2030 per lo Sviluppo Sostenibile delle Nazioni Unite.
L'acquisizione di competenze computazionali è utile per la trasformazione digitale che accompagna l'innovazione.