Numerické metody ve fyzice II - TMF058 (LS 2019-20)

Aktuální informace:

(8.6.2020) Doplnil jsem výpis tabulí z poslední zoom přednášky (28. května) a vytvořil uložiště kam jsem dal videozáznamy zoom přednášek (Apr16FEM, Apr23FEM+, Apr30CG, May07MCI, May14MCII, May21QMC, May28FT). Prvních pár tam chybí, protože jsem je začal zaznamenávat až na vaši výslovnou žádost později, ale tabule, jsou kompletní (viz níže).

 (25.5.2020) Vypsal jsem zatím tři termíny zkoušek: pátky 29.května a 5.června a čtvtek 18 června. Určitě vypíšu něco i po prázdninách v září. Pokud Vám žádný nevyhovuje, napište mi. Jinak jsem dopřednášel zkoušenou látku. Ještě budu přes zoom tento čtvrtek (28.5.) ukazovat pár numerických demonstrací a ve čtvrtek 4.6. udělám dodatečnou přednášku o numerické Fourierově transformaci a jejím použití (nebudu zkoušet). Přidal jsem kopie tabulí z posledních tří přednášek: 7. května: základy Monte Carlo metody, 14 května: Monte Carlo a generování náhodné proměnný s danou distribuční funkcí a 21. května: Kvantové Monte Carlo metody.

(21.5.2020) Vyberte si nekterou ze starych zapoctovych uloh, bud z 2016 nebo 2018. Pokud budete mit vlastni napad, ktery zapada do sylabu prednasky, muzeme se dohodnout i na necem jinem podobneho rozsahu.

Mám video záznam posledních 3 přednášek, pošlu Vám link na youtube přes SIS.

KORONAVIROVA KARANTENA: Nyní pravidelně přednáším online pomocí Google Zoom, vždy ve čtvrtek od 14 hodin. Link na telekonferenci posílám všem, kdo mají zapsanou přednášku. Dodatečným zájemcům mohu poslat na požádání. Kopie tabulí z předchozích seancí jsou zde: 2. dubna: Řešení okrajových úloh, 9. dubna: Multigridové metody, 16. dubna: Základy FEM, 23. dubna: FEM ve více dimenzích a začátek gradientních metod, 30. dubna: Gradientní a Krylovovské iterační maticové metody.

 (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 .