/sykofi2

Drugie wydanie książki "Symulacje Komputerowe w Fizyce" - kody źródłowe.

Primary LanguageC++

Zbiór kodów źródłowych, programów, ilustracji i animacji do książki. Kompletna lista materiałów z opisem znajduje się w książce.

Zbiór i opisy wybranych kodów źródłowych:

  • KodyZrodlowe/Rozdzial1/K_WahadloSprez2020.c
    • Symulacja punktu materialnego zawieszonego na sprężynie (całkowanie metodą Eulera). Wersja poprawiona (w stosunku do pierwszego wydania, w którym model nie do końca odpowiadał tej sytuacji fizycznej). Oryginalne kody z pierwszego wydania zostały zachowane w katalogu.

  • KodyZrodlowe/Rozdzial2/Tentacles/
    • Obiekt złożony ze sprężynek i punktów doczepionych do sztywnej kuli. Ruch kuli wprawia w ruch doczepione "włosy". Implementacja w języku C++ z użyciem OpenGL (GLUT).

  • KodyZrodlowe/Rozdzial3/Waves1d-2wydanie/
    • Rozwiązanie problemu fali w jednym wymiarze z użyciem pochodnej centralnej (dziękuję LB!). Program w wersjach z wizualizacją jako animacja, zapis klatek w czasie lub mapy kolorów reprezentujących ewoilucję czasową. Animacja:

  • KodyZrodlowe/Rozdzial3/Waves/
    • Rozwiązanie numeryczne równania falowego w dwóch wymiarach. Załączony jest kod w dwóch wersjach - zarówno jako duża aplikacja okienkowa z użyciem GUI (interfejs użytownika z użyciem Fox Toolkit) jak i wersja uproszczona bez interfejsu użytkownika - z samą wizualizacją. Program w wersji z interfejsem umożliwia interakcję, dodawanie źródeł, przeszkód. Dodatkowo zamieszczona została też wersja HTML5, którą można też uruchomić w internecie.

  • KodyZrodlowe/Rozdzial4/lbmfluid_book/
    • Implementacja C/C++ modelu Gazu Sieciowego Boltzmanna LBM w wersji jednofazowej z komentarzami odpowiadającymi układowi w rozdziale z książki. Jest to prosta implementacja modelu jednorelaksacyjnego z wizualizacją w OpenGL i biblioteką GLUT. Dodatkowo do kodu dołączone są procedury wizualizacji poprzez śledzenie ruchu cząsteczek płynu i ich rozsmarowywanie. Uwaga: możliwe są problemy z podwójnym buforowaniem na niektórych systemach operacyjnych, wtedy należy dokładniej przyjrzeć się sterownikom i działaniu OpenGL.

  • KodyZrodlowe/Rozdzial4/FldSurface
    • Zachowanie się płynu z powierzchnią swobodną, rozwiązanie uproszczonych równań płytkiej wody. Problemy z niestabilnością rozwiązania są rezultatem zastosowanej metody jawnej całkowania i mogą być wyeliminowane albo poprzez zmianę parametrów symulacji (mniejsze amplitudy fal początkowych), albo przez zastosowanie innych metod numerycznych.

  • KodyZrodlowe/Rozdzial4/Fluid13
    • Rozwiązanie numeryczne rownań Naviera-Stokesa dla cieczy nieściśliwej metodą cząstek w komórce (Marker-and-cell). Wersja dla Windows potrafi samodzielnie wygenerowaź animacje .avi przy użyciu biblioteki VFW (Video For Windows). Wersja dla linux pracuje w trybie tekstowym i generuje pliki .ppm (kolejne klatki animacji).

  • KodyZrodlowe/Rozdzial5/Schroedinger
    • Mechanika kwantowa - rozwiązanie numeryczne równania Schroedingera zależnego od czasu i wizualizacja modułu funkcji falowej w postaci funkcji 3D.

  • KodyZrodlowe/Bonus/81fractalifs
    • Program C/C++ generujący fraktal typu IFS (paproć). Kod wykonany na podstawie książki J. Kudrewicz, Fraktale i chaos, WNT 2015. Program generuje plik graficzny typu .ppm (Portable Pixel Map) - prosty format graficzny w trybie ASCII omówiony w książce w rozdziale o symulacji płynów.

  • KodyZrodlowe/Bonus/82IsingModel

    • Implementacja modelu sieciowego magnetyzmu (model Isinga), program w C++ z wizualizacją w OpenGL. Program pozwala na obserowanie ewolucji układu spinów w czasie dla różnej temperatury.
  • KodyZrodlowe/Bonus/ripple2d.html

    • Prosty automat komórkowy generujący rozchodzenie się fal w dwóch wymiarach. Kod w HTML5 z wizualizacją w przeglądarce.

  • KodyZrodlowe/Bonus/dla.html

    • Tworzenie struktur - fraktali - DLA (Diffusion Limited Aggregation) - bardzo proste, ale ciekawe zjawisko fizyczne i prosty model służący do jego symulacji. Program w JS/HTML5, wizualizacja w czasie rzeczywistym. Interakcja myszą pozwala na dokładanie nowych zarodków fraktala.
  • KodyZrodlowe/Bonus/lbm_turbulencje_compute_shaders/

    • Programy źródłowe symulacji zjawisk przepływów turbulentnych i wielofazowych wykonane przybliżeniem Smagorińskiego. Implementację modelu turbulencji opracował Nicholas Delbosc (dziękuję!). Kody zostały zaimplementowane w technologii programów cieniowania na karcie GPU (Compute Shaders).
  • KodyZrodlowe/Bonus/DrivenCavity-Sources/

    • Implementacja C++ trzech standardowe metod symulacji płynów używających bezpośredniej dyskretyzacji równań Naviera-Stokesa. Zaimplementowane są trzy metody: SIMPLE (Semi Implicit Method for Pressure Linked Equations), SIMPLER (Revised) oraz podejście z funkcją wirowości i prądu. Opis metod można znaleźć w Dokumenty/29-matyka-simple.pdf.
  • KodyZrodlowe/Bonus/PalabosCG/

    • Skrypt do biblioteki Palabos umożliwiający rendering 3D z użyciem RayTracingu (PovRay) powierzchni swobodnej płynu.

[(c) Maciej Matyka, 2002-2020](http://panoramix.ift.uni.wroc.pl/~maq/eng/)