이 글은 아래 MPICH + LAMMPS 설치 한 시스템에서 OpenFOAM을 올린 것 입니다.
1.OpenFOAM 다운로드. git repository에서 source를 받아옵니다. git이 안깔려 있으면 apt-get install git
mkdir OpenFOAM
cd OpenFOAM
git clone git://github.com/OpenCFD/OpenFOAM-2.0.x.git
이러면 OpenFOAM-1.7.x 폴더가 만들어지고 그 안에 소스가 들어가게됩니다.
cd OpenFOAM-1.7.x
이제 경로는 ~/OpenFOAM/OpenFOAM-1.7.x 이 됩니다. 왜이렇게 했냐면 설정파일에서 최대한 덜 손대려고 그랬던 것입니다. 아니면 etc/bashrc 에서 이거저거 바꿔줘야됨.
2. MPICH사용 위해 설정 변경
일단 예전에 MPICH2를 설치할 때, 아무 옵션없이 configure 해 줬으면 나중에 문제가 생기게 됩니다.
그러니 예전에 mpich2_install했던 디렉토리로 가서 아래와 같이 새로운 옵션으로 컴파일 해줍니다.
저같은 경우에 mipch2 source는 ~/mpich2-1.2.1p 에, 인스톨한 폴더는 ~/mpich2_install_1.2.1 입니다.
그러니
인스톨한 폴더로 가서..
cd ~/mpich2_install_1.2.1
다시 configure 해 줍니다. 아래와 같은 옵션으로..
{mpich2_source_folder}/configure \
--enable-fast \
--enable-sharedlibs=gcc \
--with-device=ch3:nemesis \
그리고
make
make install
3. OpenFOAM에서 MPICH2사용하도록 설정변경
cd ~/OpenFOAM/OpenFOAM-1.7.x/etc
vim bashrc
bashrc파일을 열어주고
#WM_MPLIB = SYSTEMMPI | OPENMPI | MPICH | MPICH-GM | HPMPI | MPI | QSMPI
: ${VM_MPILB:=OPENMPI}; export WM_MPLIB
여기를
#WM_MPLIB = SYSTEMMPI | OPENMPI | MPICH | MPICH-GM | HPMPI | MPI | QSMPI
: ${VM_MPILB:=MPICH}; export WM_MPLIB
요래 바꿔줍니다.
그리고 닫아주고
vim settings.sh
settings.sh 파일을 열어줍니다.
그리고
MPICH)
mpiversion={설치한mpi_version}
export MPI_HOME={mpich2_install 한 폴더, 저같은경우는 ~/mpich2_install_1.2.1}
export MPI_ARCH_PATH={mpich2_install 한 폴더, 저같은경우는 ~/mpich2_install_1.2.1}
와 같이 바꾸고
_foamAddPath 이하 아래부분은 그냥 놔둡니다.
그리고 ~/.bashrc 파일을 열어 맨 마지막 라인데
source ~/OpenFOAM/OpenFOAM-1.7.x/etc/bashrc를 추가합니다.
echo "source ~/OpenFOAM/OpenFOAM-1.7.x/etc/bashrc" >> ~/.bashrc
뭐 이렇게 하면 되겠죠
4. 필요한 패키지 밑 OpenFOAM 설치
새로 로그인을 해서 새로운 bash 설정으로 로드 한 후에 ( source ~/.bashrc가 이상하게 안먹힘....)
apt-get install zlib1g-dev
새로 필요한 패키지를 추가적으로 깔아줍니다.
그리고, 이제
cd ~/OpenFOAM/OpenFOAM-1.7.x
가서 ./Allwmake 해주면 완성~
(근데 가장 위의 폴더에서 Allwmake할 경우 상당히 오랜 시간이 걸립니다)
벤치마크들은 tutorials폴더에 있고, 제가 주로 사용한 벤치는 tutorials/incompressible/icoFoam/cavity 입니다.
각 벤치마다 돌려봐야 하는 파일들이 다르니 각 폴더에 있는 Allrun을 참고해 보면 뭐뭐를 돌려야 하는지 알 수 있습니다.
cavity같은경우엔 , blockMesh로 mesh 잡아주고, decomposePar로 각 프로세스가 해야할 일 나눠주고, icoFoam으로 실행~