fdsrun

Ile trwa symulacja FDS i od czego to zależy

Redakcja fdsrun · · 5 min czytania

Liczba komórek, krok czasowy, T_END i podział na procesy: z czego wynika czas obliczeń FDS i jak go oszacować przed startem.

Czas obliczeń FDS da się rozłożyć na dwa czynniki: liczbę kroków czasowych potrzebnych, żeby dojść do T_END, i czas jednego kroku. Pierwszy zależy od rozmiaru komórek i prędkości przepływu, drugi — od tego, ile komórek przypada na najbardziej obciążony proces. Kiedy zrozumiesz te dwie rzeczy, łatwo przewidzisz, czy model policzy się w godzinę, czy w trzy dni.

1. Ile kroków czasowych: warunek CFL

FDS liczy jawnie (explicit), więc krok czasowy musi być na tyle mały, żeby płyn w jednym kroku nie przeszedł więcej niż jednej komórki. To warunek Couranta–Friedrichsa–Lewy'ego (CFL): CFL = δt·|u|/δx < 1. Domyślnie FDS utrzymuje CFL między 0,8 a 1,0 i sam koryguje krok w trakcie obliczeń; startowy krok wynika z rozmiaru najmniejszej komórki i prędkości charakterystycznej pióropusza (FDS User Guide, rozdz. 6.2.2 i 19.3.1).

W praktyce oznacza to, że:

2. Ile trwa jeden krok: komórki na najwolniejszym procesie

W każdym kroku FDS przelicza wszystkie komórki. Jeśli model jest podzielony na kilka siatek i procesów MPI, procesy liczą równolegle, ale na koniec kroku czekają na najwolniejszego. Dlatego o tempie decyduje nie łączna liczba komórek, tylko liczba komórek na najbardziej obciążonym procesie (więcej w poradniku o podziale na siatki i MPI).

W naszych pomiarach (FDS 6.10.1, serwery w chmurze w UE) jeden krok czasowy zajmował średnio ok. 3–4 µs na komórkę najbardziej obciążonego procesu. To dobry punkt odniesienia do szybkiego szacunku.

3. Przykład: szacunek w minutę

Model: 1 000 000 komórek po 10 cm, 10 siatek po 100 000 komórek, 10 procesów MPI, T_END=600.

  • krok: ok. 0,02 s → 600 s / 0,02 s = 30 000 kroków;
  • jeden krok: 100 000 komórek × 3,5 µs ≈ 0,35 s;
  • razem: 30 000 × 0,35 s ≈ 10 500 s ≈ 2,9 h.

Ten sam model na jednej siatce i jednym procesie: 1 000 000 × 3,5 µs = 3,5 s na krok, czyli ok. 29 h.

4. Dlaczego zmniejszenie komórki tak bardzo wydłuża obliczenia

Zmniejszenie komórki o połowę oznacza 8 razy więcej komórek (trzy wymiary) i mniej więcej 2 razy mniejszy krok. Razem daje to około 16 razy dłuższe obliczenia przy tej samej liczbie procesów. Dlatego rozdzielczość warto dobierać świadomie — patrz rozmiar komórki i D*/δx — a drobną siatkę stosować tylko tam, gdzie jest potrzebna (wokół źródła pożaru), z resztą domeny na siatkach grubszych w stosunku 2:1.

5. Jak skrócić czas obliczeń bez utraty jakości

Szacunek a rzeczywistość

Każda prognoza ma rozrzut: krok czasowy zmienia się w trakcie symulacji (rozwój pożaru, uruchomienie wentylacji), a na serwerach współdzielonych tempo potrafi się wahać o kilkadziesiąt procent. Najpewniejszy jest pomiar z pierwszych minut obliczeń — plik CHID.out podaje krok czasowy i czas symulacji, a fdsrun na tej podstawie przelicza prognozę na bieżąco w trakcie liczenia.

Inne poradniki

Źródła: FDS User Guide (NIST SP 1019), rozdz. 3.3.1, 6.2.2, 19.3.1; pomiary własne fdsrun. FDS i Smokeview to oprogramowanie National Institute of Standards and Technology; NIST nie jest powiązany z fdsrun.

Na pewno?