2010-09-22 34 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