배우고 나누는 사람

모두에게 더 넓고 더 깊은 세상을 향해

프로그래밍 이것저것

VS Code에서 OpenMC 실습해 보기

Jeongwon Seo 2024. 9. 20. 10:28

이전 포스팅으로 VS Code를 이용해서 OpenMC를 잘 설치하셨을 거라 생각합니다. 그렇다면 이번 포스팅에서는 설치된 OpenMC로 간단한 실습을 해보도록 하겠습니다. 만약 설치를 안 하신 분이 있다면 여기(Windows 사용자를 위한 VS Code로 OpenMC 설치하기)로 가셔서 설치를 진행하시길 바랍니다.

 

실습을 진행할 폴더를 준비해주세요. 새로 만드시거나 혹은 기존에 있다면 그 폴더를 사용하셔도 됩니다. 먼저 다운로드하여야 할 것이 또 있는데요. 바로 중성자 단면적 등의 정보를 포함하고 있는 핵 데이터(Nuclear data)입니다.

 

https://openmc.org/official-data-libraries/

 

Official Data Libraries | OpenMC

Official Data Libraries The data libraries listed here have been produced by the OpenMC development team and are as complete as possible. HDF5 files are created by first processing source ENDF files into ACE files and then using the openmc.data Python modu

openmc.org

여기 사이트로 가시면 아래의 그림에 나온것 같이 ENDF/B-VII.1 파일을 다운로드하고 압축을 푼다음 저희가 실습할 폴더로 옮겨주세요. 

다음으로 바로 실습을 위한 테스트와 예시파일들이 있는 소스코드를 한꺼번에 다운로드 받아줄게요. 먼저 VS Code를 실행시켜 주시고 방금 핵 데이터를 옮겼던, 실습을 진행할 폴더를 열어주세요. 파일 탭의 Open Folder를 이용하시면 됩니다. 그리고 만약 터미널이 WSL이 아니라면 WSL로 바꿔주세요. 

위의 그림에 보시는 것 처럼 빨간색 안에 있는 단어가 wsl 이어야 하고 아닐 경우 "+" 버튼을 눌러서 새로 터미널을 여시 거나 그 옆에 아래 화살표로 된 부분을 눌러서 현재의 터미널을 WSL로 변경해 주시면 됩니다. OpenMC의 소스코드를 받기 위해서는 깃 명령어를 입력하시면 됩니다. 아래의 명령어를 입력해 주세요. 

git clone https://github.com/openmc-dev/openmc.git

그러면 폴더가 여러개 생성되었고 그중에 저희가 실습을 해볼 "examples"라는 폴더와 "tests"라는 폴더도 있을 겁니다. 그리고 ".bashrc" 파일을 생성해서 거기에 아래와 같이 텍스트 에디터로 넣어준 다음 저장하고 나와주세요.

export OPENMC_CROSS_SECTIONS="<path_to_library>/endfb-viii.0-hdf5/cross_sections.xml"

그리고 아래를 타입해 줍니다.

source .bashrc

이렇게 하시면 일단 어느정도 준비는 되었고요. 이제 지난번에 만들었던 OpenMC의 환경변수로 접근을 할게요. 명령어는 다음과 같습니다.

conda activate openmc-env

제 환경변수의 이름은 "openmc-env"인데 지난 포스팅에서 정한 이름이나 아니면 새로 만드셨다면 그 변수를 사용하시면 됩니다. 환경변수가 적용이 되었다면 이제 OpenMC의 Python API를 더욱 효율적으로 사용하기 위해 jupyter notebook도 설치하겠습니다. 이게 버전이 너무 높으면 셀 단위의 기능들이 잘 먹히지 않는 것 같아서 최신 버전은 7이지만 6.5.4 버전으로 내려서 설치하겠습니다. 명령어는 다음과 같습니다.

conda install notebook=6.5.4

이렇게 jupyter notebook까지 설치했으면 만반에 준비가 되었다고 볼 수 있습니다.

 

그럼 이제 본격적인 실습을 해볼까요. 먼저 테스트를 해보기 위해 tests 폴더로 이동해 줍니다. 그리고 regression_tests, 다음으로 albedo_box 폴더까지 이동해줄게요. 

cd tests/regression_tests/albedo_box

폴더 안에는 OpenMC 실행을 위한 모든 파일이 포함되어 있습니다. WSL 명령어 창에 openmc 라고만 입력해 주세요. 그럼 실행이 될 겁니다. OpenMC의 화려한 문양과 함께 시작돼서 뭘 읽었다고 어쩌고저쩌고 나오다가 RESULTS라고 해서 

 

============================>     RESULTS     <============================

k-effective (Collision)     = 1.16979 +/- 0.02747
 k-effective (Track-length)  = 1.12803 +/- 0.04997
 k-effective (Absorption)    = 1.14669 +/- 0.03272
 Combined k-effective        = 1.14834 +/- 0.03737
 Leakage Fraction            = 0.00000 +/- 0.00000

 

위와 같이 나올건데요. 몬테카를로, 즉 확률적인 입자의 운동을 추적하는 시뮬레이션이기 때문에 결과는 조금씩 다를 수 있습니다. 방금 해본 실습은 openmc라는 명령어를 터미널에 입력해서 처리한 방식인데요. 이번엔. py을 실습해 보겠습니다. 이번에는 examples 폴더 아래의 pincell 폴더로 이동해 볼게요.

cd ../../../examples/pincell

폴더를 열어보시면 build_xml.py 파일과 plot_spectrum.py 파일이 보이실 거에요. 아래와 같은 명령어로 xml 파일들부터 생성할게요.

python build_xml.py

그러면 geometry.xml, materials.xml, settings.xml, tallies.xml 이 생성될 것이고 그리고 마찬가지로 아래 명령어를 입력해서 시뮬레이션을 실행시켜 주세요.

openmc

이번에는 주피터노트북으로 해당 명령어들을 처리해 볼게요. 먼저 주피터노트북을 터미널에서 실행시켜 줍니다.

jupyter notebook

그러면 아래와 같은 창이 보일 텐데요. 아래에서 두세 번째 줄 즈음에 http://localhost로 시작하는 줄에 마우스를 가져다 놓고 ctrl 키를 유지한 상태로 클릭하세요. 그러면 인터넷창에서 jupyter notebook이 실행되는 것을 볼 수 있습니다. 혹은 VS Code의 jupyter notebook 확장자(extension)를 설치하셔도 됩니다.

아마도 저희가 작업을 하던 폴더에서 노트북이 열릴 겁니다. 그렇지 않다면 해당 폴더를 찾아갑니다. 그래서 노트북 파일을 하나 생성해 줍니다. 저처럼 Python이 두 개 보이셔도 상관없이 Python3 (ipykernel)을 선택해 주세요.

새로 생성한. ipynb 파일의 이름을 적절하게 바꿔주시고 첫 셀에 import openmc를 입력하고 ctrl+enter 혹은 shift+enter로 실행시켜 보세요. 만약 에러가 나지 않았다면 아주 좋습니다. 노트북 셀에서. py 파일을 실행시키고자 한다면 느낌표를 앞에 붙여야 합니다. 따라서 build_xml.py 파일을 실행시키고 싶다면 아래와 같이 입력해 주시고. 

!python build_xml.py

마찬가지로 OpenMC를 실행시키고 싶으시다면 아래를 입력해 주세요.

!openmc

자 여기까지 실습을 해보았는데요. 다음 포스팅에서는 OpenMC 실습 때 사용했던 모델에 대한 약간의 설명과 나온 결과를 분석하는 방법에 대해서 말씀드리도록 할게요.

728x90
반응형