2010-09-22 33 views

回答

3

下面是一些閱讀列表。不知道它對你來說是否太基礎:

Writing Scientific Software:一個很好的後續基本的「學習在C++程序」或其他。

Parallel Scientific Computing in C++ and MPI:如果你不打算平行你的應用程序,你應該。

Engineering and Scientific C++:一個很好的,特定領域的C++編程入門。語言細節有點過時,但整體方法還沒有老化。

我建議你閱讀所有答案,例如'我應該如何設計一個大型C++程序?'。爲其他可能感興趣的書提供建議。

至於最佳做法,這裏有一些建議。再次,我不確定你的出發點,所以有些可能太基本了:

  • 正如我上面寫的,你應該從一開始就計劃開發一個並行程序。如果羣集上的消息傳遞不是你的一杯茶,那麼至少應該考慮爲多核桌面共享內存編程。 OpenMP值得調查。
  • 讓自己熟悉現有的工作。 BOOST庫可能是必不可少的。雖然我讚賞你打算自己製作的意圖,但不要忽略現有的已建立的數字圖書館,例如你會在Netlib找到的BLAS和LAPACK。根據您的開發平臺和工具集,您可能會發現它們已經安裝。
  • 如果您來自科學背景,您可能想要提高您對軟件工程的知識和技能。問題如:源代碼管理;測試;代碼剖析和優化;深入瞭解你的編譯器可以做什麼。根據我的經驗,許多計算科學家在所有這些東西中都有薄弱的背景。
  • 您應該計劃花費(大約)儘可能多的時間來設計和測試程序,而不是實際編碼它。即使在你自己工作之前,在你開始編碼之前,有一個很好的行動計劃是很重要的。沒有理由爲什麼它必須在開始時的每一個細節都完整,但沒有地圖就不會進入領土。
  • 你對你想模擬的物理世界的方面保持沉默。在各種物理模擬中有很多現有技術,如果你更具體一些,SO可能會提供一些更具體的建議。
+0

嗨。非常感謝您的幫助和廣泛的答覆。關於你的最後一點,這個想法是開發一些新的分子動力學代碼。一些建議在這裏?謝謝 – flow 2010-10-01 09:51:08

+0

分子動力學超出了我的肯定,但我看到維基百科文章有一些指向軟件的指針。如果您無法找到開放源代碼進行檢查,那麼我會感到非常驚訝,並且文獻非常廣泛。 – 2010-10-01 11:12:55

1

開始Numerical recipes: the art of scientific computing。一個相當全面的內容。但是,請記住兩件事:

  • 它包含C++和Fortran 90代碼示例。
  • 實際上忘記了使用您的項目中的任何代碼示例 - AFAIK它們都是受版權保護的,必須單獨獲得許可才能重用。

不過,如果您需要它用於教育目的,這本書是強烈推薦閱讀。

+0

那麼,當然,如果您爲許可證付費,您可以使用來自Numerical Recipes的代碼。這樣的許可證並不昂貴。 – 2010-09-30 18:13:38