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:
- mniejsze komórki = mniejszy krok. Komórka 10 cm przy prędkościach rzędu 5 m/s daje krok ok. 0,02 s; 600 s symulacji to wtedy ok. 30 000 kroków;
- szybkie strugi skracają krok w całym modelu — wentylacja mechaniczna z dużymi prędkościami na nawiewach albo bardzo silny pożar potrafią zmniejszyć krok kilkukrotnie;
- T_END działa liniowo — dwa razy dłuższa symulacja to dwa razy więcej kroków.
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
- Podziel model na siatki o podobnej liczbie komórek i licz na tylu procesach, ile jest siatek (albo grupuj małe siatki na jednym procesie).
- Nie licz dłużej, niż wymaga scenariusz —
T_ENDustaw na czas potrzebny do oceny (np. czas ewakuacji z zapasem), a nie „na wszelki wypadek”. - Unikaj bardzo małych komórek przy szybkich nawiewach — to one najczęściej dyktują krok czasowy w garażach i tunelach.
- Dodaj
DT_RESTARTw&DUMP— po awarii maszyny obliczenia wznowisz od ostatniego zapisu, a nie od zera. - Sprawdź plik przed startem — błąd wykryty po 10 godzinach liczenia jest najdroższy.
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.