COMPUTATIONAL STATISTICAL MECHANICS

Obiettivi formativi

Il corso di Computational Statistical Mechanics si propone di fornire le conoscenze necessarie per comprendere e saper applicare le tecniche numeriche classiche di dinamica molecolare e Monte Carlo. Si studieranno i metodi che consentono di generare traiettorie nello spazio delle fasi per il campionamento di diversi insiemi statistici. Verranno illustrate tecniche di calcolo dell'energia libera e verrà spiegato come usare tali informazioni nella descrizione del diagramma di fase di atomi e molecole. Al termine del corso, gli studenti avranno sviluppato doti di ragionamento quantitativo e abilità numeriche utili per descrivere, studiare e comprendere un'ampia classe di sistemi sia ordinati che disordinati. Inoltre, lo studente sarà anche in grado di utilizzare i più comuni programmi attualmente disponibili per lo studio di sistemi complessi (inclusi i sistemi colloidali e bio-molecolari) avendo sviluppato una piena conoscenza degli algoritmi e delle tecniche numeriche su cui tali programmi sono costruiti. In tale corso, verrà data particolare enfasi alla programmazione ad oggetti e alla programmazione generica nell'implementazione di un codice di simulazione. Nello specifico, verrà introdotto il linguaggio di programmazione C++ moderno, che verrà discusso nel contesto delle simulazioni atomistiche. Si illustrerà anche l'utilizzo del Python, tramite le librerie NumPy e MatPlotLib, per l'analisi e la visualizzazione dei dati prodotti dalle simulazioni. Durante il corso sono previste anche delle lezioni pratiche durante le quali gli studenti potranno applicare le conoscenze acquisite tramite l'implementazione di loro codici di simulazione. Gli studenti verranno anche stimolati a presentare i risultati ottenuti in modo da mettere alla prove le proprie abilità di comunicare in maniera chiara ed efficace tali risultati. Lo sviluppo di un codice di simulazione numerica costituirà per lo studente un'opportunità per ideare e sviluppare un proprio progetto con cui potrà mostrare, portandolo a termine, il proprio livello di apprendimento e la capacità di utilizzare autonomamente le conoscenze acquisite nel corso. OBIETTIVI A - Conoscenza e capacità di comprensione OF 1) Conoscere le principali tecniche per effettuare simulazioni al calcolatore. OF 2) Conoscere la programmazione a oggetti con l’applicazione al calcolo scientifico. OF 3) Conoscere i più comuni metodi di analisi dei dati prodotti dalle simulazioni. OF 4) Comprendere i dati prodotti dalle simulazioni. B – Capacità applicative OF 5) Saper implementare un proprio codice di simulazione. OF 6) Saper utilizzare le simulazioni per ottenere informazioni sulle proprietà fisiche dei sistemi studiati. OF 7) Essere in grado di scrivere i codici per analizzare i dati prodotti dalle simulazioni. C - Autonomia di giudizio OF 8) Essere in grado di analizzare criticamente i risultati di “esperimenti numerici”. OF 9) Integrare autonomamente le conoscenze acquisite al fine di affrontare nuovi problemi che richiedano ulteriori tecniche numeriche. OF 10) Saper individuare la tecnica migliore per risolvere e studiare un problema fisico numericamente. D – Abilità nella comunicazione OF 11) Saper comunicare con chiarezza a specialisti e non i risultati ottenuti tramite manoscritti e presentazioni. OF 12) Saper discutere in maniera chiara un argomento scientifico. OF 13) Saper riprodurre i calcoli relativi ad un determinato argomento scientifico in maniera critica e consapevole. E - Capacità di apprendere OF 14) Avere la capacità di imparare nuovi algoritmi e tecniche numeriche attingendo dalla letteratura scientifica. OF 15) Essere in grado di ideare e sviluppare un proprio progetto che consista nella scrittura di un codice di simulazione o nell’implementazione di una tecnica numerica. OF 16) Saper superare difficoltà e imprevisti nell’implementazione di tecniche numeriche tramite idee e soluzioni originali.

Canale 1
CRISTIANO DE MICHELE Scheda docente

Programmi - Frequenza - Esami

Programma
Il corso è dedicato allo studio di sistemi a molti corpi classici attraverso tecniche di simulazione numerica al calcolatore. Verranno discusse le simulazioni di dinamica molecolare (MD) e quelle Monte Carlo (MC) nell'ambito di un paradigma di programmazione oggetti, con particolare rifermento al linguaggio C++. Gli argomenti proposti durante il corso includono i seguenti: - paradigma a oggetti: incapsulamento, ereditarietà, overloading e programmazione generica - introduzione al linguaggio di programmazione C++ - scrittura di un codice di simulazioni in C++ - linguaggio Python: uno strumento efficace per analizzare i dati di simulazioni numeriche - richiami di meccanica statistica classica - potenziali di interazione tipici - risoluzione delle equazioni del moto con algoritmi simplettici - integratori con passi di integrazione multipli - algoritmi per il controllo della temperatura e pressione - algoritmi per la trattazione dei vincoli olonomi - dinamica dei corpi rigidi - dinamica browniana - metodi Monte Carlo - metodi per il calcolo della energia libera - umbrella sampling ed eventi rari
Prerequisiti
Potrà essere utile avere una conoscenza di base di linguaggi di programmazione quali il C o il Python.
Testi di riferimento
Teoria --------- - Understanding Molecular Simulation, D. Frenkel and B. Smit, Academic Press - Computer Simulation of Liquids, M. P. Allen and D. J. Tildesley, Clarendon Press - Oxford - The Art of Molecular Dynamics Simulation, D. C. Rapapaport, Cambridge University Press - Theory of Simple Liquids, J.-P. Hansen and I. R. McDonald, Academic Press - Statistical Mechanics: Theory and Molecular Simulation, Mark Tuckerman, Oxford Graduate Press - Oxford Libri sul C++ ---------------- - C++ How to program (5th edition), H. Deitel and P. Deitel, Prentice Hall [Libro introduttivo, adegauto per che è alle prime armi con C++] - The C++ Programming Language (4th edition), Bjarne Stroustrup, Addison-Wesley Professional [Libro di riferimento, è l'equivalente del libro di Kernighan-Ritchie per il linguaggio C] - Effective Modern C++, Scott Meyers, O'Reilly Media [Per chi conosce già il C++03 e vuole passare al C++ moderno ovvero agli standard C++11 e C++14]
Frequenza
Le lezioni frontali e le esercitazioni pratiche in laboratorio non sono obbligatorie
Modalità di esame
La valutazione finale consiste in un esame orale su almeno un argomento tra quelli trattati durante il corso (anche se lo studente non ha lavorato a un progetto finale, vedi sotto) e che sarà scelto dallo studente. L'elenco dei possibili argomenti sarà fornito dal docente prima dell'esame. Naturalmente, gli studenti possono anche sostenere un esame su tutti gli argomenti trattati durante il corso. Se si prepara solo un argomento, il voto finale dell'esame orale sarà al massimo di 27/30. Per superare l'esame, lo studente deve illustrare un argomento o elaborare un calcolo illustrato durante il corso. Inoltre, deve dimostrare la sua capacità di applicare i metodi appresi in situazioni simili a quelle già discusse. In particolare, la valutazione terrà conto di: - correttezza dei concetti presentati - chiarezza e rigore nelle risposte alle domande; - capacità di sviluppare analiticamente la teoria; - attitudine alla risoluzione dei problemi (metodo e risultati). Gli studenti sono inoltre incoraggiati a lavorare su un progetto che prevede lo sviluppo di un codice di simulazione e a preparare una tesina (non più di 10 pagine). Il codice di simulazione sarà sviluppato con l'aiuto del docente durante le lezioni pratiche. La tesina farà guadagnare un bonus di massimo 4 punti. Per ottenere la lode (30 e lode), dovrete ottenere un voto superiore o uguale a 32. Ad esempio, se otterrete un voto di 28 per l'esame orale finale e la vostra tesina sarà valutata con un voto di 4 (cioè il massimo), il vostro voto finale per l'esame sarà 32 (=28+4)=30 e lode.
Modalità di erogazione
Oltre alle lezioni standard, si terranno anche un certo numero (10-11) di lezioni pratiche, durante le quali gli studenti lavoreranno insieme al docente su semplici esercizi in C++ e saranno aiutati nello sviluppo del loro codice di simulazione in C++. L'obiettivo di queste lezioni pratiche è duplice: da un lato gli studenti avranno la possibilità di imparare il C++ con la pratica, dall'altro potranno implementare alcuni degli algoritmi discussi nelle lezioni standard.
CRISTIANO DE MICHELE Scheda docente

Programmi - Frequenza - Esami

Programma
Il corso è dedicato allo studio di sistemi a molti corpi classici attraverso tecniche di simulazione numerica al calcolatore. Verranno discusse le simulazioni di dinamica molecolare (MD) e quelle Monte Carlo (MC) nell'ambito di un paradigma di programmazione oggetti, con particolare rifermento al linguaggio C++. Gli argomenti proposti durante il corso includono i seguenti: - paradigma a oggetti: incapsulamento, ereditarietà, overloading e programmazione generica - introduzione al linguaggio di programmazione C++ - scrittura di un codice di simulazioni in C++ - linguaggio Python: uno strumento efficace per analizzare i dati di simulazioni numeriche - richiami di meccanica statistica classica - potenziali di interazione tipici - risoluzione delle equazioni del moto con algoritmi simplettici - integratori con passi di integrazione multipli - algoritmi per il controllo della temperatura e pressione - algoritmi per la trattazione dei vincoli olonomi - dinamica dei corpi rigidi - dinamica browniana - metodi Monte Carlo - metodi per il calcolo della energia libera - umbrella sampling ed eventi rari
Prerequisiti
Potrà essere utile avere una conoscenza di base di linguaggi di programmazione quali il C o il Python.
Testi di riferimento
Teoria --------- - Understanding Molecular Simulation, D. Frenkel and B. Smit, Academic Press - Computer Simulation of Liquids, M. P. Allen and D. J. Tildesley, Clarendon Press - Oxford - The Art of Molecular Dynamics Simulation, D. C. Rapapaport, Cambridge University Press - Theory of Simple Liquids, J.-P. Hansen and I. R. McDonald, Academic Press - Statistical Mechanics: Theory and Molecular Simulation, Mark Tuckerman, Oxford Graduate Press - Oxford Libri sul C++ ---------------- - C++ How to program (5th edition), H. Deitel and P. Deitel, Prentice Hall [Libro introduttivo, adegauto per che è alle prime armi con C++] - The C++ Programming Language (4th edition), Bjarne Stroustrup, Addison-Wesley Professional [Libro di riferimento, è l'equivalente del libro di Kernighan-Ritchie per il linguaggio C] - Effective Modern C++, Scott Meyers, O'Reilly Media [Per chi conosce già il C++03 e vuole passare al C++ moderno ovvero agli standard C++11 e C++14]
Frequenza
Le lezioni frontali e le esercitazioni pratiche in laboratorio non sono obbligatorie
Modalità di esame
La valutazione finale consiste in un esame orale su almeno un argomento tra quelli trattati durante il corso (anche se lo studente non ha lavorato a un progetto finale, vedi sotto) e che sarà scelto dallo studente. L'elenco dei possibili argomenti sarà fornito dal docente prima dell'esame. Naturalmente, gli studenti possono anche sostenere un esame su tutti gli argomenti trattati durante il corso. Se si prepara solo un argomento, il voto finale dell'esame orale sarà al massimo di 27/30. Per superare l'esame, lo studente deve illustrare un argomento o elaborare un calcolo illustrato durante il corso. Inoltre, deve dimostrare la sua capacità di applicare i metodi appresi in situazioni simili a quelle già discusse. In particolare, la valutazione terrà conto di: - correttezza dei concetti presentati - chiarezza e rigore nelle risposte alle domande; - capacità di sviluppare analiticamente la teoria; - attitudine alla risoluzione dei problemi (metodo e risultati). Gli studenti sono inoltre incoraggiati a lavorare su un progetto che prevede lo sviluppo di un codice di simulazione e a preparare una tesina (non più di 10 pagine). Il codice di simulazione sarà sviluppato con l'aiuto del docente durante le lezioni pratiche. La tesina farà guadagnare un bonus di massimo 4 punti. Per ottenere la lode (30 e lode), dovrete ottenere un voto superiore o uguale a 32. Ad esempio, se otterrete un voto di 28 per l'esame orale finale e la vostra tesina sarà valutata con un voto di 4 (cioè il massimo), il vostro voto finale per l'esame sarà 32 (=28+4)=30 e lode.
Modalità di erogazione
Oltre alle lezioni standard, si terranno anche un certo numero (10-11) di lezioni pratiche, durante le quali gli studenti lavoreranno insieme al docente su semplici esercizi in C++ e saranno aiutati nello sviluppo del loro codice di simulazione in C++. L'obiettivo di queste lezioni pratiche è duplice: da un lato gli studenti avranno la possibilità di imparare il C++ con la pratica, dall'altro potranno implementare alcuni degli algoritmi discussi nelle lezioni standard.
  • Codice insegnamento10616466
  • Anno accademico2025/2026
  • CorsoPhysics - Fisica
  • CurriculumPhysics for Advanced Technologies
  • Anno1º anno
  • Semestre1º semestre
  • SSDFIS/03
  • CFU6