Numerické metody ve fyzice II - TMF058 (LS 2017-18)

Aktuální informace: (25.5.2018) Jako doplněk ke studiu přikládám kopie svých poznámek k přednášce: Lekce1 – sítě, Lekce 2 – relaxace, Lekce 3 – FEM, Lekce 4 – MC, Lekce 5 – FT.

(22.5.2018) Zkoušky jsem vypsal na čtvrtky. Na zkoušku si přineste řešení zápočtové úlohy, jejíž zadání je zde. Ještě lepší bude, když mi řešení pošlete předem, abych si jej mohl trochu prohlédnout. Pokud chcete řešit úlohu programem Freefem++ můžete jej stáhnout na této stránce a zkuste si přečíst strany 23 až 28 z manuálu jako úvod. Pro řešení zápočtové úlohy programem Freefem potřebujete ještě umět integrovat řešení, což lze udělat podobně jako je ukázáno zde.

 Aktualizoval jsem sylabus ke zkoušce. Šedá témata jsem pořádně nestihl a nezkouším je. Do čtvrtka ještě doplním kopie naskenovanych poznámek k 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 – Fourierovské a spektrální metody – letmý úvod

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 .