Numerické metody ve fyzice II - TMF058 (LS 2015-16)

Aktuální informace:(27.5.2016) Termíny zkoušek jsou v SIS (9., 23. a 28. června), po individuální domluvě mohu vyzkoušet i jindy, ale patrně ne koncem července ani v srpnu. Zkouška bude opět sestávat z prezentace zápočtové úlohy a povídání na dvě témata z nichž jedno se bude týkat teorie k zápočtové úloze.

Finalizoval jsem letošní zápočtové úlohy. Vyberte si každý jednu a tu zpracujte ve vhodném programovací jazyce v aritmetice s pohyblivou řádovou čárkou. V zadání některých úloh se odkazuji na knihu Stevena Koonina, "Computational Physics", konkrétně na  kapitolu 6,  kapitolu 7  a na kapitolu 8, v těchto příkladech jde spíše o rozsáhlejší úlohy.

Zde je aktualizovaný sylabus a řešené úlohy, které jsme probrali na přednášce.

LEKCE 1 - Diferenční metody (metoda sítí) pro počáteční úlohu. (viz [2],[3] a [6], tabulka metod)

Demonstrace:

  1. Nestabilita integrace rovnice vedení tepla ............................ DemoL01.01_Difusion.py
  2. Divergující vlastní módy jednokrokového operátoru ............DemoL01.02_Eigmode.py
  3. Stabilní propagace implicitní Eulerovou metodou..................DemoL01.03_Dif_IE.py
  4. Norma mocniny matice (ke stabilitě multikrok formulí).........DemoL02.01_matmul.py
  5. Ke stabilite metody "Leap-Frog"........................................ DemoL02.02_LFgroth.py
  6. Schrodinger 1D, pohyb volného balíku metodou CN.......... DemoL03.01_Schrodinger1D_0.py
  7. Schrodinger 1D, odraz od bariery...................................... DemoL03.02_Schrodinger1D_V.py
  8. Schrodinger 1D, komplexní absorb. okraj. podmínka......... DemoL03.03_Schrodinger1D_absorb.py

LEKCE 2 - Diferenční a relaxační metody pro okrajové úlohy. (viz [5, 6] a [2], úvodní část poznámek)

Demonstrace:

  1. 2D kondenzátor Jakobiho metodou  .....................................................................DemoL04.01_Jacobi.py
  2. Totéž, ale srovnání rychlosti konvergence různých relax. metod  ............................DemoL04.02_compare.py
  3. Totéž, ale rychl. konverg. při zjemnění sítě, pro analyt. řešitelnou okraj. podm........DemoL04.03_convergN.py
  4. Totéž, ale pro správnou fyzikální okraj. podmínku.................................................DemoL04.04_Kondenzator.py

 

LEKCE 3 - Základní principy metody konečných prvků (FEM). (viz [8], odkaz na FreeFEM++)

Demonstrace:

Místo demonstrací jsme si prohlíželi manuál a řešené úlohy v programovém balíku  FreeFEM++.

LEKCE 4 - Gradientní a Krylovovské metody řešení soustav lineárních rovnic. (viz [2, 4] a [5])

Demonstrace:

  1. Porovnání met. největšího spádu a CG pro náhod. matici 5x5...................DemoL05.01_SDxCG.py
  2. Porovnání konvergence CG pro různé typy matic ....................................DemoL05.02_CG_tst.py
  3. Vliv preconditioningu na konvergenci CG (příklad z [4])...........................DemoL05.03_CG_prekond.py
  4. Rychlost konverg. CG pro náhod. matici s daným spektrem......................DemoL05.04_CG_cluster.py

LEKCE 5 - Metoda Monte-Carlo. (viz [6], úvodní část poznámek)

Demonstrace:

  1. MC výpočet čísla pi a rychlost konvergence ......................................DemoL06.01_MCpi.py
  2. Distribuční funkce pro součet náhodných proměnných.........................DemoL06.02_x+y.py

LEKCE 5 - Metody založené na Fourierově transformaci a spektrální metody. ()

DOPORUČENÁ LITERATURA:

Opírám se především o [3], [5] a [6]. Jako vhodný doplněk pro praktickou implementaci algoritmů lze vždy doporučit [2]. Ostatní uvedené knihy jsou vhodným doplňkem k různým tématům, viz zelené poznámky.

Poznámka k Pythonu: Výše uvedené příklady v Pythonu používají knihovny numpy a matplotlib. Python lze stáhnout zdarma. Jedna z možností je:

1 jít na https://www.continuum.io/downloads stáhnout anacondu dle vlastniho výběru
2 nainstalovat 3 spustit Anaconda Launcher
4 spustit Spyder - IDE (obsahuje i interaktivní konzoli) nebo spustit Ipython-qtconsole - interaktivni python .


Loňské stránky Karla Houfka jsou zde.


Numerické knihovny pro fyziku (přehled užitečných, osvědčených balíků nad Num.Rec.)

Některé z níže zmíněných knihoven jak ve FORTRANU tak v c, a mnohé další, pro řadu speciálních problémů, lze najít na www.netlib.org.

1) CPC - Library, (hlavně FORTRAN)

Knihovna programů časopisu "Computer Physics Communications", kde lze nalézt články popisující metody. Obsahuje řešení pro mnoho úloh s nimiž se setkáte ve fyzice, včetně pokročilých metod, npř. různé speciální funkce, řešení Hartree-Fockových rovnic, ...Dostupné v doméně fakulty.

2) GSL (Gnu scientific library) (orientovano na C, ale je zde i překladač a knihovny pro F90)

Široké spektrum matematických procedur různého zaměření, vše volně k dispozici.

3) BLAS, EISPACK, LINPACK, LAPACK (Primárně FORTRAN 77, FORTRAN 90, existuje C++ verze)

BLAS je základní balík pro manipulaci s vektory a maticemi (jeho náhrada, která se umí maximálně efektinvě přizpůsobit hardware (optimální využití cache paměti procesoru pro násobení matic atd.) se jmenuje ATLAS). Na něj staví EISPACK pro diagonalizaci matic a LINPACK pro lineární algebru. Jejich sloučením vznikl LAPACK, který obsahuje velké množství procedur pro numerickou lineární algebru.

4) Intel Fortran (C) MKL - library

Matematické knihovny dodávané k intelovským překladačům FORTRANU a C. Obsahují mimo jiné LAPACK a SPARSE SOLVER pro inverzi obecných řídkých matic.

5) NAG library

Komerční profesionální balík matematických knihoven.

6) Super LU - Berkeley

LU dekompozice pro obecné řídké matice.

7) Quadpack

Adaptibilní kvadratury .