# OpenFOAM-7 버전 설치 소개(SKL)

이 문서에서는 SKL 계산노드용OpenFOAM-7버전을 컴파일 하여 설치 하는 방법에 대해 예시로 소개합니다.

## **가. 설치 환경**

| 구분                      | 내용                     |
| ----------------------- | ---------------------- |
| 대상 시스템                  | 누리온                    |
| OS Version              | 리눅스 / CentOS 7.9       |
| CPU                     | <p>Intel Xeon Phi 7250 |
| <br>Intel Xeon 6148</p> |                        |
| 컴파일러                    | Intel 2018.3           |
| MPI                     | IntelMPI 2018.3        |
| 기타                      |                        |

***

## **나.설치 전 환경 설정**

OpenFOAM-7 버전 설치에 필요한 gmp, mpfr, mpc, boost, CGAL 는 누리온 시스템에 미리 설치된 /apps/common 라이브러리들을 사용합니다.\
만약 다른 버전의 gmp, mpfr, mpc, boost, CGAL 가 필요한 경우는 사용자의 홈 디렉터리(/home01/$USER)나 scratch 디렉터리(/scratch/$USER)에 설치 후 환경 설정을 해서 사용하시면 됩니다.

**\[ 환경 설정 ]**

```shell-session
$ module purge
$ module load cmake/3.12.3
$ module load intel/18.0.3 impi/18.0.3
```

## **다. OpenFOAM-v7 버전 설치 과정**

설치 과정 소개는 tar 를 이용한 압축 해제 방법과 설정 방법등 진행 절차를 위주로 설명하고, 소스 파일 다운로드 등은 생략합니다. 설치 소개 시 사용된 경로 <mark style="color:blue;">/Install\_Path/SKL</mark>는 설치 안내를 위한 경로이므로, 설치하시고자 하는 경로를 입력하여 설치 진행해주시기 바랍니다.

\[설치과정]

```shell-session
$ cd /Install_Path/SKL
$ tar xzvf OpenFOAM-7-20190902.tar.gz
$ tar xzvf ThirdParty-7-version-7.tar.gz
$ mv OpenFOAM-7-20190902 OpenFOAM-7
$ mv ThirdParty-7-version-7 ThirdParty-7
$ vi OpenFOAM-7/etc/config.sh/settings
- - - [settings 수정 사항] 참고 - - -
$ vi OpenFOAM-7/etc/bashrc
- - - [bashrc 수정 사항] 참고 - - -
$ vi ThirdParty-7/makeCGAL
- - - [makeCGAL 수정 사항] 참고 - - -
$ vi OpenFOAM-7/etc/config.sh/mpi
- - - [mpi 수정 사항] 참고 - - -
$ vi OpenFOAM-7/wmake/rules/linux64Icc/c++
- - - [c++ 수정 사항] 참고 - - -
$ vi ThirdParty-7/scotch_6.0.6/src/Makefile.inc
- - - [Makefile.inc 수정 사항] 참고 - - -
$ sed -i -e 's/\(boost_version=\)boost-system/\1boost_1_68_0/' OpenFOAM-7/etc/config.sh/CGAL
$ sed -i -e 's/\(cgal_version=\)cgal-system/\1CGAL-4.9.1/' OpenFOAM-7/etc/config.sh/CGAL
$ source OpenFOAM-7/etc/bashrc
$ mkdir -p $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER
$ ln -s /apps/common/gmp/6.1.2 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/gmp-system
$ ln -s /apps/common/mpfr/4.0.1 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/mpfr-system
$ ln -s /apps/common/mpc/1.1.0 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/mpc-system
$ ln -s /apps/common/boost/1.68.0 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/boost_1_68_0
$ ln -s /apps/common/CGAL/4.9.1 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/CGAL-4.9.1
$ ln -s /apps/applications/cmake/3.12.3 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/cmake-system

$ cd ThirdParty-7
$ ./Allwmake

$ cd $WM_PROJECT_DIR
$ ./Allwmake
```

**\[settings 수정 사항]**

| 수정 전 | <p>64)<br>WM\_ARCH=linux64<br>export WM\_COMPILER\_LIB\_ARCH=64<br>export WM\_CC='gcc'<br>export WM\_CXX='g++'<br>export WM\_CFLAGS='-m64 -fPIC'<br>export WM\_CXXFLAGS='-m64 -fPIC -std=c++0x'<br><br>export WM\_LDFLAGS='-m64'</p>                                                                                            |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 수정 후 | <p>64)<br>WM\_ARCH=linux64<br>export WM\_COMPILER\_LIB\_ARCH=64<br>export WM\_CC='icc'<br>export WM\_CXX='icpc'<br>export WM\_CFLAGS='-m64 -fPIC <mark style="color:blue;">-xCORE-AVX512</mark>'<br>export WM\_CXXFLAGS='-m64 -fPIC <mark style="color:blue;">-xCORE-AVX512</mark> -std=c++0x'<br>export WM\_LDFLAGS='-m64'</p> |

※ "<mark style="color:blue;">-xCORE-AVX512</mark>" 옵션은 <mark style="color:blue;">SKL CPU 타입 전용 옵션</mark>으로, SKL 계산노드와 KNL 계산노드 모두 실행을 희망하는 경우는 "-<mark style="color:blue;">xCOMMON-AVX512</mark>" 로 변경

**\[bashrc 수정 사항]**

<table><thead><tr><th width="121"></th><th></th></tr></thead><tbody><tr><td>수정 전</td><td><p>[ "$BASH" -o "$ZSH_NAME" ] &#x26;&#x26; </p><p>export FOAM_INST_DIR=$(cd $(dirname $)/../.. &#x26;&#x26; pwd -P) || </p><p>export FOAM_INST_DIR=$HOME/$WM_PROJECT<br><br>export WM_COMPILER=Gcc<br>export WM_MPLIB=SYSTEMOPENMPI</p></td></tr><tr><td>수정 후</td><td>export FOAM_INST_DIR=<mark style="color:blue;">/Install_Path/SKL</mark><br><br>export WM_COMPILER=Icc <em>(I는 대문자 cc는 소문자)</em><br>export WM_MPLIB=INTELMPI</td></tr></tbody></table>

※ 위 수정 예제에서 <mark style="color:blue;">/Install\_Path/SKL</mark> 경로는 설치 시 사용된 경로이므로 변경&#x20;

**\[makeCGAL] 수정 사항]**

| 수정 전 | <p>cgalPACKAGE=${cgal\_version:-CGAL-4.10}<br>boostPACKAGE=${boost\_version:-boost-system}</p>     |
| ---- | -------------------------------------------------------------------------------------------------- |
| 수정 후 | <p>cgalPACKAGE=${cgal\_version:-CGAL-4.9.1}<br>boostPACKAGE=${boost\_version:-boost\_1\_68\_0}</p> |

**\[mpi 수정 사항]**

| 수정 전 | libDir=\`mpicc --showme:link \| sed -e 's/.\*-L\\(\[^ ]\*\\).\*/\1/'\`  |
| ---- | ----------------------------------------------------------------------- |
| 수정 후 | libDir=\`mpiicc --showme:link \| sed -e 's/.\*-L\\(\[^ ]\*\\).\*/\1/'\` |

**\[c++ 수정 사항]**

| 수정 전 | CC = icpc -std=c++11 -fp-trap=common -fp-model precise                                                |
| ---- | ----------------------------------------------------------------------------------------------------- |
| 수정 후 | CC = icpc -std=c++11 <mark style="color:blue;">-xCORE-AVX512</mark> -fp-trap=common -fp-model precise |

**\[Makefile.inc 수정 사항]**

| 수정 전 | <p>AR = gcc<br>ARFLAGS = $(WM\_CFLAGS) -shared -o<br>CCS = gcc<br>CCP = mpicc<br>CCD = mpicc<br>CFLAGS = $(WM\_CFLAGS) -O3 -DCOMMON\_FILE\_COMPRESS\_GZ -DCOMMON\_RANDOM\_FIXED\_SEED - DSCOTCH\_RENAME -Drestrict=\_\_restrict<br>CLIBFLAGS = -shared</p>                           |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 수정 후 | <p>AR = icc<br>ARFLAGS = -m64 -fPIC -shared -o<br>CCS = icc<br>CCP = mpiicc<br>CCD = mpiicc<br>CFLAGS = -O3 -DCOMMON\_FILE\_COMPRESS\_GZ -DCOMMON\_RANDOM\_FIXED\_SEED -DSCOTCH\_RENAME -Drestrict=\_\_restrict -xCOMMON-AVX512<br><br>CLIBFLAGS = -shared -fPIC -xCOMMON-AVX512</p> |

## **라. 테스트**

```shell-session
$ module purge
$ module load intel/18.0.3 impi/18.0.3
$ source /Install_Path/SKL/OpenFOAM-7/etc/bashrc
$ mkdir -p $FOAM_RUN
$ run
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .
$ cd pitzDaily
$ blockMesh
$ simpleFoam
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-ksc.gitbook.io/blog/install/nurion/openfoam/openfoam-7-install-skl.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
