資源描述:
《lammps如何在windows編譯步驟》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、LAMMPS如何在windows編譯步驟(翻譯整理Lammps上海大學上海市應用數(shù)學與力學研究所,版權所有,據最新版06年6月份的,原說明在SRC/MAKE/WINDOWS目錄下)2004/11/20(該方法由JinMa(OkalahhomaStateUniversity)給出,聯(lián)系Jin.Ma@okstate.edu)編譯環(huán)境為微軟windows的VC++6.0,不帶MPI(并行處理)和FFT算法。創(chuàng)建一個空的win32控制臺工程(win32consoleproject),添加Src目錄下所有的.h文件和.cpp文件到工程。1.變量的重定義問題代碼中約有8
2、0處地方,變量出現(xiàn)重定義問題。大部分都出現(xiàn)在循環(huán)過程中,可以很容易修正。例如這樣的循環(huán):for(inti=0;i<5;i++){something}for(inti=0;i<5;i++{somethingelse}這種情況在Linux下的g++編譯環(huán)境中是允許的,但是在VC環(huán)境中會認為第二次循環(huán)時變量i被重定義,因此變量的范圍是不同的。這在代碼中有很多,因此在編譯錯誤修正時只需要把定義整形變量i的定義放在語句中,而不是放在循環(huán)體中。2.fft問題在文件fft3d.h的開頭增加#ifndefFFT_NONE#defineFFT_NONE#endif取消FFT功
3、能的編譯,即不編譯文件3.input文件的修改在input文件中修改下面的語句//#include"unistd.h"(注銷)#include"direct.h"(增加)4.處理MPI問題把文件mpi.h和mpi.cpp(在STUBS目錄內)包括進工程中來,并且在mpi.cpp文件中注釋掉語句//#include(和Linux系統(tǒng)下的取時間有關,windows不支持)同時注釋調所有和時間有關的語句,即函數(shù)MPI_Wtime()中的原始代碼,保持函數(shù)格式,讓內容為空,并給予返回值為0(return0;)5.創(chuàng)建系統(tǒng)文件system.cp
4、p的修改由于輸入說明列表在linux和windows下的某些不同,在文件中system.cpp作如下修改行83:intiarg=2;(修改,默認輸入的問題)行172:inflag=1;(增加改行不知道原因暫時)(原因:因為在dos行命令下運行程序時,給出的變量數(shù)目在G++環(huán)境和VC++環(huán)境中有所不同,也可能和MPI相關,這個不同只是其中之一,一旦上面說的修改成功,程序輸入命令的個數(shù)才正確)之后2005年1月修改。4-a.輸入文件問題(由TimLau補充,MIT,ttl@mit.edu在variable.cpp文件中進行修改頭文件//#include"unis
5、td.h"#include"direct.h"#include"windows.h"另外修改usleep(100000)為Sleep(100)修改說明:因為當Sleep發(fā)生在毫秒時而usleep發(fā)生在微妙,所以這個值被1000分開。(不明白何意思)7.新版erfc錯誤新版本的LAMMPS程序會調用下列函數(shù)而報錯doubleerfc(double),該函數(shù)屬于GNU的C庫函數(shù),在VC環(huán)境是不存在的。有三種修改方法:一從其他的庫中尋找到函數(shù)erfc()二是因為該函數(shù)是被pair_modify表選項調用的,我們可以在該函數(shù)的表選項中把值設為0,避免調用該函數(shù)三是自
6、己動手寫該函數(shù)補充:在新版的目錄下有這樣的兩個文件erfc.h,erfc.cpp已經被加入到工程中,只需要在所有使用到erfc()函數(shù)的文件頭中增加調用命令#include"erfc.h"即可。注意這兩個函數(shù)為經仔細測試,需謹慎使用。8.重建工程,指定正確的輸入文件運行程序,windows下的結果可能會和unix環(huán)境的結果有所不同,請注意。(JinMajin.ma@okstate.eduOklahomaStateUniversityMarch7,2005)最近增加:如果要增加MPI和FFT,則如下(由TimothyLau聯(lián)系ttl@MIT.EDU給出,相關步
7、驟參考之前的說明如果你想使用FFT,先在載源碼FFTW2.1.5,然后解壓(dump)全部的文件到和LAMMPS相同的目錄下,然后包括所有FFTW的文件(.c文件和.h文件)到工程中,接下來修改上述第三個關于FFTW的問題。在文件fft3d.h中修改為#ifndefFFT_FFTW#defineFFT_FFTW#endif你必須小心的檢查visualstidoe編譯中關于“WIN32”變量的定義,盡管visualstudio可能會自動定義它,涉及到文件fftw.h的行137處。如果你還要增加MPI功能,即在微軟visualvistdo環(huán)境下的,多核處理器或者
8、windows結點結構(cluster)并行機上運行