Problem
Obecnie pracuję nad symulacją elementów skończonych Naviera Stokesa i chciałbym zbadać wpływ różnych parametrów. Niektóre parametry są określone w pliku wejściowym lub za pomocą opcji wiersza poleceń; inne parametry są dostarczane jako flagi w pliku Makefile, więc mój kod musi być rekompilowany za każdym razem, gdy zmieniam te opcje. Byłbym zainteresowany, aby uzyskać porady dotyczące dobrego sposobu systematycznego badania przestrzeni parametrów.
- Czy istnieją przydatne biblioteki / frameworki C ++ / Python, które mogą pomóc w tego typu sprawach? Na przykład odkrywanie boost.Program_options było dużą pomocą, ponieważ możliwe jest przeciążenie opcji pliku wejściowego argumentami wiersza poleceń. Widziałem także, jak niektórzy ludzie dość skutecznie używają pliku zadania opisującego każdy przypadek, a kolega zasugerował, że zapis parametrów w plikach vtu, ponieważ bloki komentarzy mogą również działać.
- Być może nie warto w to inwestować dużo czasu? Czy to tylko odwrócenie uwagi i drenaż czasu i najlepiej po prostu przećwiczyć proces brutalnej siły i ad hoc?
Kilka myśli
Obecnie robię rzeczy głównie ręcznie i napotkałem następujące problemy:
- Nazewnictwo przypadków testowych . Próbowałem przechowywać wyniki w folderach o nazwach z parametrami uruchamiania oddzielonymi podkreślnikami, np
Re100_dt02_BDF1...
. Te szybko stają się długie lub trudne do odczytania / tajemnicze, jeśli są za bardzo skracane. Ponadto parametry liczby rzeczywistej obejmują.
niezręczne / brzydkie. - Rejestrowanie danych przebiegu . Czasami chciałbym zobaczyć wyniki zapisane w terminalu, a także zapisane w pliku tekstowym. Na przykład odpowiedź StackOverflow jest nieco pomocna, ale rozwiązania wydają się nieco nachalne.
- Wykreślanie danych według parametru . Zebranie odpowiednich danych z różnych plików dziennika w jednym pliku, który mogę następnie wykreślić, zajmuje sporo czasu. Lepszy system może być łatwiejszy.
- Nagrywanie komentarzy do danych . Po sprawdzeniu wyników piszę kilka komentarzy w pliku tekstowym, ale utrzymanie synchronizacji z folderami wyników jest czasem trudne.