Il problema
Attualmente sto lavorando a una simulazione di Navier Stokes agli elementi finiti e vorrei studiare gli effetti di una varietà di parametri. Alcuni parametri sono specificati in un file di input o tramite le opzioni della riga di comando; altri parametri sono forniti come flag in un Makefile, quindi il mio codice deve essere ricompilato ogni volta che cambio quelle opzioni. Sarei interessato a ricevere qualche consiglio su un buon modo per esplorare sistematicamente lo spazio dei parametri.
- Ci sono utili librerie / framework C ++ / Python che possono aiutare in questo genere di cose? Ad esempio, scoprire boost.Program_options è stato di grande aiuto poiché è possibile sovraccaricare le opzioni del file di input con argomenti della riga di comando. Ho anche visto alcune persone usare un file di lavoro che descrive ogni caso in modo abbastanza efficace e un collega ha suggerito che scrivere parametri in file vtu come blocchi di commenti potrebbe funzionare anche.
- Forse non vale la pena investire molto tempo in questo? È solo una distrazione e una perdita di tempo ed è meglio solo muscolare attraverso il processo di test forza bruta e ad hoc?
Alcuni pensieri
Attualmente sto facendo le cose principalmente a mano e ho riscontrato i seguenti problemi:
- Casi di test di denominazione . Ho provato a memorizzare i risultati in cartelle denominate con i parametri di esecuzione separati da caratteri di sottolineatura, ad es
Re100_dt02_BDF1...
. Questi diventano rapidamente lunghi o difficili da leggere / criptici se vengono abbreviati troppo. Inoltre, i parametri dei numeri reali includono un.
che è scomodo / brutto. - Registrazione dei dati di esecuzione . A volte vorrei vedere i risultati scritti sul terminale e salvati anche in un file di testo. Questa risposta di StackOverflow, ad esempio, è in qualche modo utile, ma le soluzioni sembrano essere un po 'invadenti.
- Stampa dei dati in base al parametro . Ci vuole un po 'di tempo a raccogliere dati rilevanti da una varietà di file di registro in un singolo file che posso quindi tracciare, con un sistema migliore forse questo sarebbe più facile.
- Registrazione dei commenti sui dati . Dopo aver esaminato i risultati, scrivo alcuni commenti in un file di testo, ma mantenere questo è sincronizzato con le cartelle dei risultati a volte è difficile.