Insegnamenti

 

NANOELETTRONICA – [70/LM-0067]
NANOELETTRONICA – [60/68/19]

60/60/139 - FONDAMENTI DI FISICA COMPUTAZIONALE

Anno Accademico ​2020/2021

Docente
CLAUDIO ​MELIS (Tit.)
Periodo
Secondo Semestre ​
Modalità d'Erogazione
Convenzionale ​
Lingua Insegnamento
ITALIANO ​



Informazioni aggiuntive

CorsoPercorsoCFUDurata(h)
[60/60] ​ ​FISICA [60/00 - Ord. 2012] ​ ​PERCORSO COMUNE540
Obiettivi

Formulazione e soluzione tramite simulazione al calcolatore di semplici problemi di fisica con l’uso di metodi numerici implementati con un linguaggio di programmazione moderno.

1. Conoscenza e capacità di comprensione applicate

Le conoscenze acquisite in questo corso sono di tre tipi: a) elementi del linguaggio di programmazione python e del sistema operativo unix; b) elementi di matematica numerica discreta per la soluzione di equazioni differenziali, analisi di segnale etc.; c) elementi di nuova fisica rispetto a quella curricolare, sperimentata direttamente tramite simulazione.

2. Capacità applicative

Le capacità che vengono sviluppate sono a) la formulazione corretta, precisa, e pratica del problema fisico; b) la scelta di un algoritmo adatto al problema, sulla base della sua accuratezza e adeguatezza, anche in termini di costo computazionale e sforzo di programmazione; c) la scelta e realizzazione di soluzioni mirate ai problemi specifici, solo apparentemente elementari, che insorgono nella scrittura di programmi e nella scelta degli algoritmi (ad esempio: l’uso di strumenti non convenzionali come la manipolazione di liste o l’aritmetica vettoriale; la scelta di criteri di convergenza di un metodo iterativo o di individuazione ripetuta di quantità ottimali in un algoritmo).

3. Autonomia di giudizio

L’autonomia intellettuale viene stimolata da diversi fattori che concorrono alla realizzazione del lavoro: a) la scelta e il controllo e verifica delle approssimazioni da fare o non fare nel formulare il problema (ad esempio: un pendolo anarmonico tout court, o con una sola anarmonicità specifica ?); b) la formulazione numerica del problema in base all’accuratezza e alla prestazione dell’algoritmo, e l’esplorazione, test, e eventuale impiego di algoritmi alternativi; c) la continua analisi e valutazione dei risultati e della loro qualità, anche in vista dell’identificazione di possibili errori sia concettuali di formulazione, o di programmazione.

4. Abilita' nella comunicazione

Le capacità di comunicare viene stimolata a) dalla necessità di scrivere codici comprensibili e riutilizzabili, e b) di presentare i propri risultati, inclusi gli antefatti fisici e numerici, in modo organico, comprensibile, e ragionevolmente completo, ma nel contempo non farraginoso o inutilmente pesante.

5. Capacità di apprendere

Lo studente viene a contatto diretto con problemi di cui ha responsabilità personale, e che lo costringono a mantenere un’apertura mentale a diverse soluzioni e a sperimentare metodi diversi, nel frattempo assorbendo nuove informazioni, ad esempio su tecniche di programmazione, di grafica, e di realizzazione delle specifiche simulazioni, riutilizzabili in contesti diversi.

Prerequisiti

Sono necessari elementi di matematica superiore (derivate, integrali, sviluppo in serie, cioè almeno il corso di Analisi Matematica I), fisica di base (Fisica Generale I e II), e sono desiderabili elementi di sistemi operativi e linguaggi (come in Introduzione all’Informatica). I prerequisiti strettamente necessari sono richiamati nelle lezioni e nel testo, anche se questo non può sostituire uno studio dettagliato precedente. Per la parte informatica, vengono forniti materiali didattici e lezioni video su web con congruo anticipo sul corso (vedere Metodi e Altre info).

Contenuti

A-Elementi di base

Revisione del sistema operativo unix. Elementi di python (lungo tutto il corso). Rappresentazione finita dei numeri, discretizzazione, errore algoritmico e di arrotondamento e loro generazione e propagazione. Esempi: derivate discretizzate e integrali numerici semplici (trapezi, Simpson).

B-Equazioni differenziali

Equazione ordinaria di ordine n come sistema di n equazioni del I ordine. Origine, applicazioni, e fallimenti degli algoritmi di Euler e Euler-Cromer per l’integrazione numerica di sistemi del primo ordine. Algoritmo di Verlet e sua derivazione dal principio di azione stazionaria di Hamilton. Applicazioni a problemi di meccanica (eq. dei ordine 2): gravi, oscillatori, moto planetario. Elementi e classificazione di equazioni a derivate parziali per due variabili indipendenti.

Equazioni a derivate parziali in due variabili. Classificazione e analisi di stabilità (matriciale e di Neumann).
Equazioni paraboliche: equazione di diffusione con metodo FTCS (applicazioni: trasporto di calore in diverse configurazioni e c.a.c., diffusione neutronica in un modello di reattore), equazione di Schroedinger time-dependent (metodo Crank-Nicolson; animazione).
Equazioni ellittiche: Laplace-Poisson e metodi iterativi; applicazioni a vari casi di elettrostatica.
Equazioni iperboliche: cenni all’equazione delle onde e di Burgers (onde d’urto).

C-Trasformata di Fourier

Introduzione ai principi della tecnica di analisi di Fourier e alle peculiarità della versione discreta (leakage, aliasing, etc.). Semplici applicazioni di analisi di segnale (armoniche nelle note musicali, frequenze armoniche superiori nell’oscillatore anarmonico, filtro di trend lineari sovrapposti a oscillazioni, ripulitura di immagini per deconvoluzione, rumore colorato e sue caratteristiche, etc).

D-Metodo Montecarlo

Numeri pseudocasuali e loro test. Integrazione Montecarlo e importance sampling. Applicazioni al random walk e al decadimento. Metodo di Metropolis per la generazione di distribuzioni “arbitrarie”. Applicazioni: meccanica statistica di oscillatori; annealing simulato; problema del commesso viaggiatore.

Metodi Didattici

Le lezioni sono frontali con dimostrazioni informatiche: viene inquadrato il problema fisico, viene discusso l’algoritmo da sviluppare, e si procede allo sviluppo del codice, diretto e (prevalentemente) da zero, in aula. Gli studenti sono incoraggiati a portare il proprio computer e a seguire passo passo il materiale proposto. In aggiunta, circa 1/5 del tempo è dedicato a revisione periodica, con soluzione di problemi di programmazione e simili in aula insieme al tutore.

Un sito dedicato raccoglie i materiali forniti negli anni precedenti e in quello presente. Sono forniti dei web tutorial interattivi sulle diverse applicazioni sviluppate.

Prima del corso (circa 2 mesi in anticipo) sono forniti (o rinnovati) materiali video, testi, link per iniziare la familiarizzazione con il linguaggio di programmazione, l’elaborazione grafica, etc. Viene fornita una macchina virtuale dotata di tutti gli elementi software necessari, funzionante su qualunque sistema operativo, che permette di riallineare studenti dei più diversi background, e anche quelli non provvisti di computer proprio (p.es. computer casalingo o simili).

Verifica dell'apprendimento

Durante il corso (orientativamente a 1/3, 2/3 e al termine delle lezioni) vengono assegnati tre esercizi individuali da svolgere a casa, con scadenza di consegna fissata a circa un mese dall’assegnazione (e incentivata da un bonus di 1 punto per ogni esercizio). Ogni esercizio consiste nella realizzazione e utilizzo di codici per la simulazione di un dato problema fisico, e nella stesura di una relazione. Tipici problemi proposti sono ad esempio il moto planetario e precessione del perielio, calcolo del potenziale elettrostatico in configurazioni varie, diffusione del calore in un sistema a conduttività termica variabile, analisi di segnali, generazione di distribuzioni di numeri random, annealing simulato. Il voto viene assegnato in base a una valutazione complessiva (e comparativa tra tutti gli studenti) delle relazioni relative ai tre esercizi.

Testi

Il corso segue (in linea di massima) un testo del docente fornito in pdf sul sito del corso. Per il linguaggio di programmazione, esistono testi convenzionali resi disponibili, ma il grosso dell’informazione è comodamente accessibile su web (python.org e scipy.org, per esempio), anche in forum specialistici (stackoverflow.com, ad esempio).

Ci sono numerosi testi che gli studenti possono, e sono invitati a, consultare di volta in volta e a seconda del problema. Particolarmente utili sono R. Landau, M. Paez, C. Bordeianu, Survey on computational physics (con codici in python); N. Giordano, Computational Physics; W. Press et al., Numerical recipes, con dettagliate informazioni di analisi numerica e algoritmica. Un altro testo recente estremamente interessante è Learning Scientific Programming with Python, di Christian Hill; il sito associato (http://scipython.com) è pieno di utili suggerimenti e applicazioni.

[1] A. L. Garcia: Numerical methods for physics (presso il docente)
[2] R. Landau, M. Paez: Computational physics (PUV0356140)
[3] S. Koonin, D. Meredith: Computational physics (MIL0045727)
[4] W. Brainerd: Guide to Fortran 2003 Programming (pdf)
[5] W. Press et al.: Numerical recipes (NAP0388524)
[6] H. P. Langtangen: A Primer on Scientific Programming with Python (pdf)
[7] S. Blundell: Magnetism in condensed matter (RMS0137775)
[8] J. Binney et al.: The theory of critical phenomena (MIL0179482)
[9] C. Hill, Learning Scientific Programming with Python , CUP

Altre Informazioni

Un sito dedicato del corso (http://www.dsf.unica.it/~fiore/fcstuff.html) raccoglie tutti i materiali forniti negli anni precedenti e in quello in corso. Sono forniti dei web tutorial interattivi sulle diverse applicazioni sviluppate. Prima del corso (circa 2 mesi in anticipo) sono forniti materiali video, testi, link per iniziare la familiarizzazione con il linguaggio di programmazione. A tutti gli  studenti viene fornita (via web) una macchina virtuale unix dotata di tutti gli elementi software necessari e funzionante su qualunque sistema operativo. Questo permette di riallineare studenti di diverso background o eventualmente non provvisti di computer proprio (p.es. computer casalingo o simili).

RIcevimento su appuntamento via mail, al Dipartimento di Fisica, Cittadella Universitaria.

Per informazioni sul trattamento dei DSA vedere qui: http://corsi.unica.it/fisica/info-dsa/

credits unica.it | accessibilità Università degli Studi di Cagliari
C.F.: 80019600925 - P.I.: 00443370929
note legali | privacy

Nascondi la toolbar