MicroSoft Windows에서 OpenFOAM 사용 방법 - 도커 이용



OpenFOAM은 리눅스에서 개발된 프로그램이라 윈도우즈에 직접 설치할 수 없다. 따라서 리눅스 가상머신이나 리눅스용 윈도우 하위 시스템(WSL : Windows Subsystem for Linux)에 설치하여 사용하는 방법이 있다. 여기서는 좀 더 쉽게 도커(Docker)를 이용하는 방법을 소개한다.

1. 설치 및 사용법 - 넥스트폼이 제공하는 설치 파일 이용


먼저 도커를 설치해야 되는데 윈도우 7 이상에서 설치할 수 있다. windows7, windows 10 home은 "Docker Toolbox"를 windows 10 pro에서는 "Docker for Windows" 를 설치하면 된다.

도커를 설치하고 나면 gnuplot 등의 그래픽 프로그램을 사용하기 위해 VcXsrv라는 프로그램을 설치해야 한다. 

그리고 OpenFOAM이 설치된 Docker 이미지를 실행하면 된다.

위의 전체 과정을 하나의 설치 파일로 만들어 넥스트폼의 홈페이지(http://nextfoam.co.kr/pd-Baram.php)에 공개하였다.

설치 방법은 아래의 사이트를 참고


설치를 완료하면 바탕화면에 OpenFOAM-v6라는 아이콘이 생성된다. 아이콘을 더블 클릭하면 openfoam6 환경의 터미널이 나타나고 여기서 OpenFOAM을 사용할 수 있다. /home/nextfoam 폴더 아래에 자신의 사용자 폴더가 공유되어 있다.



2. 직접 설치

openfoam6이 아닌 다른 버전의 OpenFOAM을 사용하려면 직접 도커와 X를 설치하고 해당 도커 이미지를 실행한다.

2-1. 도커 설치

도커 설치 방법은 아래의 사이트를 포함한 많은 웹 페이지에 잘 설명되어 있어 쉽게 설치할 수 있다.

https://steemit.com/kr/@mystarlight/docker

"Docker Toolbox"를 설치하면 바탕화면에 "Oracle VM VirtualBox"와 "Docker Quickstart Terminal"이라는 아이콘이 생긴다.  "Docker Quickstart Terminal" 아이콘을 더블 클릭하면 리눅스 터미널과 유사한 창(MINGW64)이 나타난다. 여기서 리눅스에서와 같이 실행하면 된다.


2-2. 도커 실행

"Docker Quickstart Terminal" 아이콘을 선택하고 마우스 오른쪽 버튼을 누르고 "속성"을 선택한다.
"시작 위치"를 자신의 홈 디렉토리로 설정한다. (사용자 계정이 bykim이라면 "C:\Users/bykim")
"Docker Quickstart Terminal"  아이콘을 더블 클릭하면 터미널이 열린다.



2-3. OpenFOAM 도커 이미지 실행

openfoam7을 사용하고 싶다면 넥스트폼이 도커 허브에 올려 놓은 nextfoam/openfoam7 이미지를 실행하면 된다. 

이미지 실행은 명령이 길어서 스크립트 파일어 실행하는 것이 편리하다.

스크립트 파일 예

-----------------------------------------------------------
#!/bin/bash
home="${1:-$HOME}"

docker run --rm -it  \
    -e DISPLAY=xxx.xxx.xx.xx:0.0  \
    -v ${home}:/home/DATA  \
    -w /home/DATA  \
    nextfoam/openfoam7  \
    /bin/bash --rcfile /opt/openfoam7/etc/bashrc
-----------------------------------------------------------

위에서 빨간색 xxx.xx.xx.xx는 자기 컴퓨터의 IP 주소를 적어준다. /home/DATA는 사용자계정 폴더의 데이터를 공유할 폴더 이름으로 원하는 이름을 적어주면 된다. openfoam7 대신 openfoam6를 사용할 수 있다.

도커 터미널에서 위의 파일을 실행하면 openfoam7을 사용할 수 있는 ubuntu 18.04 터미널 환경이 된다.  처음 실행할 때 도커 허브에서 이미지를 내 컴퓨터로 가져오는데 이 때 몇 분정도의 시간이 소요된다.

이렇게 하면 터미널의 사용자계정이 root가 된다. root 계정으로 사용하는 것이 불편하면 별도의 사용자계정을 만들어 사용할 수 있다.

2-4. 사용자계정 만들어 사용하기

먼저 도커 터미널에서 nextfoam/openfoam7 이미지를 실행한다.
$ docker run --rm -it nextfoam/openfoam7

임의의 사용자 계정(여기서는 nextfoam)을 추가한다.
$ useradd --user-group --create-home --shell /bin/bash nextfoam
$ echo "nextfoam ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

이제 nextfoam 이라는 사용자계정이 추가되었다. 도커를 종료하면 추가된 사항들은 모두 사라지기 때문에 변경 사항을 다른 이름(여기서는 myopenfoam7)으로 저장해 주어야 한다.

다른 도커 터미널을 열고 현재 실행중인 도커를 확인한다.
$ docker ps


위의 명령을 실행하면 아래 그림과 같이 현재 실행중인 CONTAINER ID 를 확인할 수 있다.




CONTAINER ID와 새로운 이름으로 도커 이미지를 저장한다.
$ docker commit a291b63df892 myopenfoam7

빨간색 부분이 CONATINER ID 와 새로운 이름이다. 이제 myopenfoam7 이라는 새로운 도커 이미지가 생성되었다.

실행중인 도커를 종료한다.


임의의 이름으로 다음과 같은 스크립트 파일을 만들어 실행하면 된다.
-----------------------------------------------------------
#!/bin/bash
home="${1:-$HOME}"

docker run --rm -it  --user 1000  \
    -e USER=nextfoam  \
    -e DISPLAY=xxx.xxx.xx.xx:0.0  \
    -v ${home}:/home/nextfoam  \
    -w /home/nextfoam  \
    myopenfoam7  \
    /bin/bash --rcfile /opt/openfoam7/etc/bashrc
-----------------------------------------------------------
이제는 nextoam 이라는 사용자계정에서 OpenFOAM® 을 사용할 수 있다 .

터미널에서 다음의 명령을 실행하면 pitzDaily 튜토리얼을 실행할 수 있다.

$ cp -r /opt/openfoam7/tutorials/incompressible/simpleFoam/pitzDaily ./
$ cd pitzDaily
$ blockMesh
$ simpleFoam

2-5. 그래픽 사용을 위한 xLaunch 설정

paraFoam, gnuplot 등을 사용하기 위해서는 도커가 Graphic User Interface를 지원해야 한다.  이를 위해 VcXsrv 를 설치해야 한다. 설치는 아래 사이트에서 다운받아서 설치한다.

xLaunch가 실행되고 있어야 그래픽을 사용할 수 있는데 실행시 설정방법은 다음과 같다.

3. 전후처리

OpenFOAM 전처리(문제의 설정) 과정은 모두 테스트 파일 편집이기 때문에 윈도우즈에서 편한 에디터를 사용하면 된다. 후처리는 윈도우즈용 ParaView를 설치해서 사용해도 되고 도커에 있는 ParaView를 사용해도 된다.


4. 지금까지 사용된 도커의 기능들 

도커의 기본적인 실행 명령은 "docker run <options> <image> <command>" 이다. 위에서 사용된 이미지는 "nextfoam/openfoam7" 이다. 여기에 --rm, -it, -v, -w, -e 등의 옵션이 사용되었다. command는 "/bin/bash"를 --rcfile 옵션과 함께 사용하였다.

--rm 옵션은 프로세스 종료시 컨테이너 자동 제거 옵션이다.
-it 옵션은 터미널 입력을 위한 옵션으로 키보드 입력을 컨테이너에 연결하는 것이다.
-v 옵션은 호스트의 디렉토리를 컨테이너에 마운트하는 것이다. 위에서 자신의 홈 디렉토리(/c/Users/<사용자이름>) 를 컨테이너의 /home/nextfoam 에 마운트해서 홈 디렉토리의 모든 파일을 터미널에서 사용할 수 있게 하였다.
-w 옵션은 시작 디렉토리를 지정한 것이다.
-e 옵션은 환경설정이다.

도커 이미지 제작 방법은 아래 글을 참고


window에서 openfoam 사용




댓글

이 블로그의 인기 게시물

BARAM 설치가이드(WINDOW)

BARAM 설치가이드(LINUX)