Hotstart, czyli jak uratować przerwaną symulację w Mike21?

Ratowanie obliczeń w Mike21 z wykorzystaniem pliku hotstart

Dzisiejszy wpis nieświadomie sponsoruje DHI i niezapisujące się wyniki z symulacji Mike21.

Wprowadzenie

Tło: Symulacja, która liczy się od dobrego miesiąca, nagle przestała zapisywać wyniki do pliku Dfs2. Modelujemy spływ powierzchniowy powstały w wyniku deszczu nawalnego CDS (Chicago Design Storm) o 1% prawdopodobieństwie przewyższenia, czasie trwania 6h (z czego 2h to pre-rain), uwzględniamy sieć kanalizacyjną, która odbierze część deszczu oraz wykorzystujemy moduł infiltracji. Powierzchnia modelu to około 100 km2, rozdzielczość rastra 2 m. Nie chcę tracić dotychczasowych wyników, więc zamiast puszczać symulację od początku, wykorzystuję to co mamy i tworzę plik Hotstart, którego użyję do przygotowania nowego pliku m21.

Czym jest hotstart?

Plik hotstart jest użyteczny, gdy chcemy rozpocząć obliczenia w momencie, w którym mamy już do czynienia z jakąś dynamiką przepływu wody. Klasycznie, w najprostszym podejściu, przygotowując symulację zadajemy warunki początkowe, które mają stałe wartości w całej domenie. Na przykład modelując spływ powierzchniowy, zakładamy że głębokość wody w każdej komórce jest równa 0 (w praktyce wygląd tak to, że surface elevation == bathymetry, tylko item w pliku dfs2 jest inny), czyli jest sucho. Modelując zbiorniki na Skellefteälven przyjmowałem, że rzędna zwierciadła wody ma wszędzie stałą wartość, a prędkość przepływu jest zerowa i tak samo rozpoczynałem serię symulacji dla rzeki Klarälven. Plik hotstart wykorzystuje 3 parametry: głębokość wody*, P flux i Q flux. Głębokość jest oczywiście wyrażana w metrach, a flux to m^{3} \times s^{-1} \times m^{-1}. Te informacje wystarcza nam do wznowienia obliczeń. Do działa!

Przygotowanie pliku krok po kroku

Otwieramy Mike Zero i pierwszą rzeczą jaką robimy, to otwieramy Data Utility. Następnie w nowym oknie, które właśnie się pojawiło, wyszukujemy plik Dfs2 z naszymi wynikami i przechodzimy do zakładki Datatype and Delete values. Tam zmieniamy wartość Data Type z 0 na 1 i zapisujemy.

Generowanie pliku z Dfs2

Otwieramy toolboxa Mike21, rozwijamy Hydrodynamics po czym wybieramy Hot start File Generator. Przeskakujemy pierwszą stronę, a na drugiej rozpoczynamy od wskazania w kolumnie Results źródłowego pliku Dfs2. W nowym oknie od razu rzuca się w oczy jego dolna część. Widzimy, że wybrany przez nas plik musi zawierać 3 już wspomniane elementy, tj. Water Depth oraz dwa Flow Flux. Pierwszy to P, drugi to Q. Zwróćcie na to szczególną uwagę, ponieważ domyślnie Mike wybiera dwa razy P. Nie używam zagnieżdżenia, więc Number of areas zostawiam 1, a Time Step ustawiam zgodnie z tym, co miałem w oryginalnej symulacji, czyli 0,2. Jest to dobre miejsce, żeby zmienić tę wartość i zaoszczędzić w ten sposób czas obliczeń, ponieważ jesteśmy już w końcowej fazie deszczu i nie jest potrzebny aż tak krótki krok czasowy do zapewnienia stabilności obliczeń**. W kolumnie Output hot start files wskazujemy nazwę i ścieżkę nowego pliku, który będziemy tworzyć oraz, jeżeli jest taka potrzeba, zmieniamy Hot stat time, czyli czas, w którym ma się rozpocząć nowa symulacja. Pomimo tego, że ostatni zapisany krok czasowy ma czas 3:22, to ja cofam się do 3:20, ponieważ chcę zmienić częstotliwość zapisywania niektórych wyników z 2 na 10 minut. Po przejściu dalej ukazuje nam się bardzo ważne okienko, w którym definiujemy czy parametry Flood and dry będą uwzględnione w symulacji. Odpowiedź brzmi tak, więc zaznaczam tę opcję****. Nie ma możliwości zmiany tych wielkości i nie wiem czy Mike pobiera je z pliku Dfs2, ale są one zbliżone do tego, co było w oryginalnym pliku m21, a różnica jest jedynie we Flooding depth, które ma nową wartość 0,0015 zamiast 0,002, którego używałem wcześniej. Wydaje mi się, że mogę to zaakceptować***. Następnie wykonujemy operację naduszając (hehe) Execute i po chwili mamy gotowy plik.

Gdybyśmy teraz otworzyli ten plik w Data Utility, to zobaczylibyśmy, że utraciliśmy Static items, ale za to mamy aż 8 różnych Dynamic items. Dosyć zagadkowo wygląda Misc scalars. Zawiera on podstawowe informacje, które posłużą inicjalizacji nowych obliczeń.

Modyfikacja pliku symulacji

Pozostaje nam zmodyfikować plik m21, czyli samą symulację. Otwieramy ją, przechodzimy do Bathymetry i zmieniamy Type z Cold start na Hot start oraz plik na ten, który właśnie stworzyliśmy. W Simulation Period oraz Results musimy dostosować czas trwania symulacji i interwał zapisywania wyników. Ostatnią rzeczą do zmiany jest Eddy Viscosity*****, która jest zależna od rozdzielczości rastra, kroku czasowego i obliczamy ją według poniższego wzoru [źródło]:

E = 0,02 \times \frac{Δx^{2}}{Δt}

Jak widać – kilka minut i problem może być rozwiązany. Pozostaje jeszcze jednak kwestia, którą muszę rozwiązać, a mianowicie wartości Volumetric Water Content, w module infiltracji. Na razie nic więcej nie będę pisać, ale może kiedyś wpis doczeka się aktualizacji lub kontynuacji i odniosę się do tego.

Dokumentacja DHI

Pod tym linkiem znajduje się tabla z dokumentacji Mike 21 2022, która odnosi się do tego czym są poszczególne Data Types. Domyślnie każdy nowy plik dfs2 przyjmuje wartość Data Type równą 0, zaś Mike21 HD tworząc pliki wynikowe uzależnia tę wartość od zawartości. Jest to istotne z punktu widzenia post-processingu wyników, kiedy np. wyświetlamy wyniki w Mike Zero.

  • Jeżeli będą się znajdować w nim tylko podstawowe parametry czyli batymetria (static items) oraz H, P, Q (dynamic items), to Data Type przyjmie wartość 1 (Plot Composer będzie mógł na tej podstawie stworzyć i wyświetlić inne elementy, np. U i V)
  • Jeżeli uwzględnimy dodatkowe elementy, np. surface elevation, to Data Type = 0
  • Jeżeli plik dfs2 ma być plikiem hotstart, wtedy Data Type = 11

DHI nie zaleca ręcznego tworzenia plików Hotstart, jednak w niektórych sytuacjach jest to bardzo pomocne. Jeżeli wiemy, że nasza symulacja będzie kontynuowana, wówczas najlepiej pozwolić programowi stworzyć ten plik samodzielnie, wybierając odpowiednią opcję w zakładce Results.

* nie jestem pewny czy nie powinna być to rzędna zwierciadła wody

** Kolejna rzecz, której DHI nie zaleca, ale… gdyby to było złe, to DHI by inaczej Majka stworzyło #pdk. Na screenach widać 0,5 s, ale po wymianie mailu z DHI wycofałem się z tego, ale byłem już zbyt leniwy, żeby poprawić to we wpisie.

*** Czekam na odpowiedź w tej sprawie

**** Jednak tego nie zrobiłem. Pojawił się problem z symulacją, przy próbie uruchomienia pojawił się błąd: Inundation Staticstics meaningless without flooding and drying.

***** Eddy Viscosity dostoswane do kroku 0,5 s.

De Bever Piotr

Autor bloga, z wykształcenia geodeta, hydrolog, modelarz hydrauliczny i GISowiec