2013-07-09 55 views
0

我運行了大量的計算流體力學(CFD)計算。出於很多原因,我想編寫一個程序來監控CFD解算器給出的日誌文件的輸出,並相應地調整其控制參數。我有一些想法,但希望就如何做到這一點的最佳方式徵詢意見。CFD監控程序

我的想法:

  • 可以不斷地運行程序,並在一個固定的時間間隔導入收斂參數或當日志文件更改
  • 可以使用一些系統或平臺特定的實用程序來監測CFD過程
  • 的CFD在同一臺機器上並行運行,以便(可能)將需要一個方法來控制並行進程(我使用的CFD代碼是OpenFOAM其利用的openmpi到parallelise其過程)

爲了完整起見,我運行在Ubuntu 12.04上,並希望程序使用C/C++或Python編寫。

非常感謝

+2

您是否可以將明確的管理界面放入CFD求解程序中,或者代碼是以某種方式不可修改的,因此您需要通過讀取和寫入其輸出和輸入文件來「控制」它? –

+0

理論上,我可以根據需要修改CFD代碼,因爲它完全可以訪問。我爲此做了一些代碼開發,所以我非常肯定它是可行的,但我認爲可能外部應用程序實現起來會更簡單。 現在你已經提到過了,我會多想一想,畢竟這可能是一個更好的主意。謝謝! – Artur

回答

2

如果是我,我會嘗試改變CFD代碼是一個庫,而不是一個應用程序,然後我將其暴露到Python。然後,我會編寫一個Python腳本來調用庫並獲取結果,並根據需要進行迭代。如果CFD代碼不需要很長時間就可以運行一次迭代,這將比反覆啓動CFD獨立程序更有效。也許更重要的是,它將允許在CFD代碼和管理員之間交換豐富的數據,而不僅僅是文本文件。

+0

一次迭代通常需要20秒到幾分鐘的時間,具體取決於實際問題和解決方法等。總的收斂時間通常爲4-8小時,一次運行一天或兩天。 在數據交換方面,通過修改基準C++代碼,獲取更高級的數據會更容易(我認爲),因爲它存儲在一組對象中,形成多級層次結構(我相信您可以處理它在Python中我只是不知道如何)。 無論如何,我認爲這是一個比編寫單獨應用程序更好的途徑。 – Artur