::목표::
- Xu et al. 이 진행하였던 시뮬레이션을 모사해봅니다.
- 하이드레이트 저해제를 시스템에 투여해볼 수 있습니다.
- 하이드레이트의 성장과 저해를 관찰해볼 수 있습니다.
- 논문에서 제시한 데이터들을 출력해 볼 수 있습니다.
Table of Contents:
1. 개요
Natural product Pectin은 여러 문헌에서 하이드레이트 저해제로써 효과가 상당하다고 알려져 있습니다. 2016년, Xu et al.은 MD simulation을 통해 pectin의 하이드레이트 저해 효능을 성공적으로 모사하였습니다. 상세한 내용은 아래 링크를 타고 가시면 확인해보실 수 있습니다.

이미 많은 MD simulation들이 즐비한 상황이지만, 해당 논문을 이 튜토리얼에서 모사하는 이유로는,
- 시뮬레이션 시간이 짧다
- 시뮬레이션 관련 정보가 상세히 제공되었다
- 많은 문헌들에서 인용되었다
정도의 이유를 들 수 있겠습니다. 해당 문헌에서 진행한 시뮬레이션이 과연 진짜로 재현되는지, 한 번 이 튜토리얼에서 확인해보세요.
2. 방법 파헤치기
우선, 저자들이 사용한 시뮬레이션 시스템 및 방법들에 대해서 상세히 알아볼 필요가 있습니다.
Materials
- 펙틴 (Pectin, gromos53a6)

- Water (TIP4P-2005)
- Methane (united-atom, Lennard-Jones)
Barostat & Thermostat
- Barostat: Parrinello-Rahman
- Thermostat: Nose-Hoover
Constraint algorithm
LINCS
Short-range interaction
truncated at 10Å
Long-range interaction
PME
Source code
GROMACS
Simulation box
2.376 x 2.376 x 4.752
Simulation procedure
- Energy minimization (steepest descent algorithm으로 추정)
- NVT simulation (260 K, 30 ps)
- NPT simulation (260 K, 15 MPa, 30 ps)
- Production run (NPT, 260 K, 15 MPa, 20 ns)
3. 시뮬레이션 셋팅
본격적인 시뮬레이션 셋팅에 앞서, 편의를 위해 논문에서의 셋팅을 조금 수정해보겠습니다.
- United atom 모델이었던 메탄 분자를 All-atom 모델로 변경하겠습니다.
- 메탄 힘장을 LJ 에서 OPLS-AA로 수정하겠습니다.
- Pectin 힘장 역시 gromos53a6에서 OPLS-AA로 수정하겠습니다.
나머지 셋팅은 논문과 거의 동일하게 맞춰서 진행하겠습니다.
(1) Obtaining pectin structure
논문에 따르면, sI 하이드레이트 slab 은 2 x 2 x 2 크기로 디자인하였고, liquid region에는 368개의 물 분자, 64 개의 메탄 분자를 넣었다고 합니다.
논문에서 사용한 pectin 2.46% 및 3.62%는 pectin chain 길이에 따른 농도임을 알 수 있습니다 (각각 dimer, trimer라고 지칭하겠습니다).

이에 기반하여, dimer와 trimer 파일들을 다음과 같이 얻을 수 있었습니다.
.gro 파일 및 .itp 파일들을 모두 다운로드 받아 디렉토리 내에 아래와 같이 저장해주세요.

이제 Packmol을 설치해야 합니다. 기존 컴퓨터에 Packmol이 이미 설치되어 있다면, 그것을 활용해주세요.
packmol source code 설치하기
아래 압축 파일을 디렉토리에 저장 후, 커맨드들을 입력하면 설치가 완료됩니다.
packmol.tar.gz 97.2KB
$ tar -zxf packmol.tar.gz$ cd packmol/$ ./configure$ make
(2) Hydrate slab 만들기
2 x 2 x 2 sI CH4 hydrate 슬래브를 만들어야 합니다.
아래 링크를 활용하면 쉽게 하이드레이트 구조를 만들 수 있습니다.
Google Colaboratorycolab.research.google.com
코랩 내에서 셋팅 값을 위와 같이 설정한 후, 아래와 같은 하이드레이트 슬래브가 만들어졌는지 확인합니다.

성공적으로 만들었다면, 다음과 같은 Slab.gro 파일을 다운로드 할 수 있습니다.
Slab.gro 79.5KB
(3) Packmol 구동하기
이제 주어진 파일들을 바탕으로, packmol 을 구동합니다.
그 전에, packmol은 input 파일로 .pdb 포맷만을 지원하므로, 우리는 모든 .gro 파일을 먼저 .pdb 파일로 변경 할 필요가 있습니다.
여러 가지 방법이 있겠지만, 제가 추천하는 방법은 gmx editconf 플러그인을 활용하는 것입니다. GROMACS가 실행되는 컴퓨터에서 다음 bash 파일을 실행해보세요.
vi ./gro2pdb.sh./gro2pdb.sh 파일 생성하여 편집하기. #!/bin/bash
# gro2pdb.sh
gmx editconf -f DIM.gro -o DIM.pdb;
gmx editconf -f TRI.gro -o TRI.pdb;
gmx editconf -f Slab.gro -o Slab.pdb./gro2pdb.sh 내부에 입력할 내용들 chmod +x * && ./gro2pdb.sh.gro2pdb.sh 실행하기 이와 더불어, 물 분자와 메테인 분자의 .pdb 파일들도 packmol 구동을 위해 별도로 다운로드 합니다. 추후 사용을 위해, _U1M.itp 및 tip4p-2005 파일 역시 미리 다운로드 해주세요.
이제, 아래와 같은 packmolinput.inp 파일을 만들어 실행시킬 준비를 합니다.
vi packmolinput.inppackmolinput.inp 파일 형성하기 tolerance 2.0
output finalbox.pdb
filetype pdb
# sidemax 50000.d0
nloop0 1000
##############################################
# PECTIN DIMER
##############################################
# Locating 1 pc of PECTIN DIMER molecule in the right-hand side.
structure DIM.pdb
number 1
resnumbers 2
inside box 5. 5. 30.0 19. 19. 40.0
end structure
##############################################
# Liquid water molecules
##############################################
# Locating 368 water molecules in the right-hand side.
structure water.pdb
number 368
resnumbers 2
inside box 0. 0. 24.1 24.1 24.1 47.5
end structure
##############################################
# CH4 molecules
##############################################
# Locating 64 CH4 (entitled as _U1M) molecules in the right-hands side.
structure _U1M.pdb
number 64
resnumbers 2
inside box 0. 0. 24.1 24.1 24.1 47.5
end structure
##############################################
# sI slab
##############################################
# Placing sI at the left of the PBC box.
structure Slab.pdb
number 1
resnumbers 2
inside box 0. 0. 0. 24.1 24.1 24.1
end structurepackmolinput.inp 파일 내에 넣을 내용들./packmol < packmolinput.inppackmolinput.inp 실행하기생성된 finalbox.pdb 를 확인해봅니다. 다음과 같은 파일이 형성되어 있으면 정상입니다.
finalbox.pdb 286.8KB

finalbox.pdb를 가시화한 결과.(4) editconf 활용하여 시뮬레이션 최종 준비
논문에서의 셋팅을 참고하여, 시뮬레이션 박스 크기를 최종 결정해줍니다.
gmx editconf -f finalbox.pdb -c -box 2.376 2.376 4.752 -o finalbox.gro그러면 아래와 같은 final.gro 파일이 생성됩니다.
finalbox.gro 159.3KB
마지막으로, EM → NVT → NPT → NPT production run 구동에 필요한 .mdp 파일들을 사용해야합니다. 내부 셋팅들은 논문에 있는 값들을 최대한 반영하였습니다. (⚠️ 꼭 구동 전 내부 내용을 숙지하시기 바랍니다!)
em.mdp 1.0KB
nvt.mdp 2.1KB
npt.mdp 2.1KB
prod.mdp 2.0KB
해당 파일들을 모두 다운로드 하여 현재 디렉토리에 위치시킵니다.
(5) oplsaa.ff 힘장 폴더 준비 및 topol.top 작성하기
앞서 말씀드린 것처럼, 저희는 OPLS-AA 힘장을 사용할 예정입니다.
아래 bash 스크립트를 실행하여 oplsaa.ff/ 폴더를 현재 디렉토리에 위치시키고, 미리 준비한 .itp 파일들을 oplsaa.ff/ 폴더로 모두 옮깁니다.
vi prepareopls.shprepareopls.sh 파일 편집하기#!/bin/bash
# prepareopls.sh
# 해당 스크립트는 현재 디렉토리의 `.itp` 파일들을 모두 `oplsaa.ff/` 폴더 안으로 옮기고, `oplsaa.ff/` 폴더 내에 있는 `DIM.itp`가 정상적으로 시뮬레이션에서 불러와질 수 있도록 파일 내 내용 정리를 도와줍니다.
# 힘장을 로컬 디렉토리에 위치시킵니다.
cp -r /usr/local/gromacs/share/gromacs/top/oplsaa.ff/ ./oplsaa.ff/ &&
mv ./_U1M.itp ./oplsaa.ff/_U1M.itp;
# DIM.itp 파일 내부의 일부 내용을 `ffnonbonded.itp` 파일에 옮겨넣고, `DIM.itp` 파일을 힘장 폴더 안으로 위치시킵니다.
awk '/\[ atomtypes \]/{flag=1;next}/\[ moleculetype \]/{flag=0}flag' DIM.itp >> ./oplsaa.ff/ffnonbonded.itp;
sed -i '1,/\[ moleculetype \]/{/\[ moleculetype \]/!d}' DIM.itp;
mv ./DIM.itp ./oplsaa.ff/DIM.itp
# tip4p-2005 파일 내부의 일부 내용을 `ffnonbonded.itp` 파일에 옮겨넣고, `tip4p-2005.itp` 파일을 힘장 폴더 안으로 위치시킵니다.
awk '/\[ atomtypes \]/{flag=1;next}/\[ moleculetype \]/{flag=0}flag' tip4p-2005.itp >> ./oplsaa.ff/ffnonbonded.itp;
sed -i '1,/\[ moleculetype \]/{/\[ moleculetype \]/!d}' tip4p-2005.itp;
mv ./tip4p-2005.itp ./oplsaa.ff/tip4p-2005.itp;prepareopls.sh 내에 들어 갈 내용chmod +x prepareopls.sh && ./prepareopls.shprepareopls.sh 실행하기topol.top 파일은 아래와 같습니다. 현재 디렉토리에 마찬가지로 넣어주세요.
vi topol.toptopol.top 파일 만들기 ; Include forcefield parameters
#include "oplsaa.ff/forcefield.itp"
#include "oplsaa.ff/DIM.itp"
#include "oplsaa.ff/tip4p-2005.itp"
#include "oplsaa.ff/_U1M.itp"
[ system ]
; PECTINDIMER
[ molecules ]
; Compound #mols
LIG 1
SOL 368
_U1M 64
SOL 368
_U1M 64topol.top에 들어 갈 내용 4. 시뮬레이션 구동
구동은 아래 bash file 을 실행하여 EM → NVT → NPT → production NPT 순서로 진행하시면 됩니다.
vi runsim.shrunsim.sh 파일 형성하기 #!/bin/bash
# runsim.sh
echo "EM 시뮬레이션을 시작합니다."
sleep 1
gmx grompp -f em.mdp -c finalbox.gro -p topol.top -o em.tpr -maxwarn 10;
gmx mdrun -v -deffnm em;
echo "NVT 시뮬레이션을 시작합니다."
sleep 1
gmx grompp -f nvt.mdp -c em.gro -r em.gro -p topol.top -o nvt.tpr -maxwarn 10;
gmx mdrun -v -deffnm nvt;
echo "NPT 시뮬레이션을 시작합니다."
sleep 1
gmx grompp -f npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -o npt.tpr -maxwarn 10;
gmx mdrun -v -deffnm npt;
echo "Production run을 시작합니다."
sleep 1
gmx grompp -f prod.mdp -c npt.gro -r npt.gro -t npt.cpt -p topol.top -o prod.tpr -maxwarn 10;
gmx mdrun -v -deffnm prod
echo "모든 시뮬레이션이 종료되었습니다."
sleep 2
exit
runsim.sh파일에 추가 할 내용 chmod +x runsim.sh && ./runsim.shrunsim.sh파일 실행하기 5. 트래젝토리 분석
(1) 문헌 내 스냅샷 모사해보기
우선, 시뮬레이션이 정상적으로 구동되었는 지 확인하기 위해, production run 트래젝토리를 가시화해줍니다.
#!/bin/bash
gmx trjconv -f nvt.trr -s nvt.tpr -o nvt_trjconv.gro << EOF
0
EOF
gmx trjconv -f npt.trr -s npt.tpr -o npt_trjconv.gro << EOF
0
EOF
gmx trjconv -f prod.trr -s prod.tpr -o prod_trjconv.gro << EOF
0
EOF
echo "트래젝토리를 빠르게 확인해보세요."
sleep 2
exittrjconv.shchmod +x trjconv.sh && ./trjconv.sh만약 relaxation이 잘 되었는지 확인하려면 nvt_trjconv.gro나 npt_trjconv.gro를, production run이 잘 되었는지 확인하려면 prod_trjconv.gro를 가시화 소프트웨어에서 불러오면 됩니다.
저는 OVITO를 활용하여 가시화해보겠습니다.

2.46%의 펙틴이 존재해도 하이드레이트가 잘 자라는 것을 확인할 수 있습니다.

이 경향은 문헌에서도 보여진 바 있으므로, 시뮬레이션이 잘 재현되었다고 말할 수 있겠습니다.
문제는 저희가 출력한 prod_trjconv.gro로는 문헌 그림에서처럼 저해제와 하이드레이트, 그리고 메테인 분자를 구분 지어 표현할 수 없다는 점인데, 이는 모든 분자들이 단 하나의 .gro 파일로 출력되었기 때문입니다.
종류 별 분자들을 구분지어 보고 싶을 때에는 다음과 같이 개별적으로 파일들을 출력해봅니다.
#!/bin/bash
gmx trjconv -f prod.trr -s prod.tpr -o prod_trjconv_water.gro << EOF
5
EOF
gmx trjconv -f prod.trr -s prod.tpr -o prod_trjconv_methane.gro << EOF
3
EOF
gmx trjconv -f prod.trr -s prod.tpr -o prod_trjconv_246PECTIN.gro << EOF
2
EOF
echo "종류 별로 분자들을 관찰하세요."
sleep 2
exittrjconv2.shchmod +x trjconv2.sh && ./trjconv2.sh출력된 세 가지 서로 다른 .gro 파일을 visualization 소프트웨어에 업로드해봅니다.
저는 OVITO에 이 세 가지 파일들을 전부 로딩한 후, 최대한 문헌과 비슷한 그림이 출력될 수 있도록 간단히 칼라 코드를 만져보았습니다. 그 결과,

즉, Pectin dimer와 물, 그리고 메테인 분자들을 모두 구분지어 표현할 수 있습니다.
(2) 하이드레이트 구조 식별해보기
OVITO 내에 implemented 되어 있는 CHILL+ 플러그인을 사용하면, 복잡한 코딩 없이 손 쉽게 하이드레이트 구조만 식별할 수 있습니다.
이전에 CHILL+ 코드를 사용하기 위해서는 포트란으로 작성된 코드를 구동시켜 한 프레임, 한 프레임에 대해서 하이드레이트 식별을 진행해야 했으나, Henrik Andersen Sveinsson의 도움으로 OVITO 내에서 마우스 클릭만으로도 해당 식별 코드를 사용할 수 있게 되었습니다. 상세한 내용은 여기를 확인해주세요.
물론, 하이드레이트 식별 코드를 혼자서 작성해볼 수도 있겠지만, visualization 프로그램 내에서 인터랙티브하게 하이드레이트 구조를 알아볼 수 있다는 점, 그리고 식별 속도가 커스텀 코드에 비해서 매우 빠르다는 것 등 여러 장점 때문에 왠만해서는 OVITO 내 코드를 사용하는 것이 빠르고 편합니다.
Xu et al.은 문헌 내에서 하이드레이트 식별을 별도로 진행하지 않았지만, 해당 튜토리얼에서는 하이드레이트가 얼마나 자랐는지 육안으로 직접 확인해보기 위해 바로 CHILL+을 적용해보도록 하겠습니다.
CHILL+ 트래젝토리에 쉽게 적용하고 시각화하기
- OVITO를 열고
prod_trjconv_water.gro파일을 로드한다. Select type을 클릭한다.
Particle Type을 선택한다.
X,H를 클릭한다.
Modification탭의Delete selected를 클릭한다.
- 2~3 과정을 반복하고, 이번에는
O를 클릭한다.
Structure identification-Chill+을 클릭한다.
Select type파이프라인을 추가한 후,Hydrate만 제외 모든 항목에 체크를 누른다.
- 다시
Delete selected파이프라인을 클릭한다. Visualization탭의Create bonds파이프라인을 클릭한다.
Pair-wise cutoffs를 체크하고, 나머지 값은 모두 비운 채 O - O cutoff 값을 3.5로 설정한다 (O…O 수소 결합 길이 = 3.5 Å).
- 하이드레이트 구조만 식별되는 것을 확인할 수 있다.

- 정상적으로 파이프라인들을 쌓았다면 다음과 같은 모습일텐데,

다음에 이 스택들을 또 쌓지 않기 위해 프리셋에 저장해둔다.

맨 밑의 아이콘을 누른다.

New…를 탭하고
쌓은 파이프라인들에 모두 체크하고,
Template name에 내 프리셋 이름을 저장해둔다.
잘 저장되었음을 알 수 있다.
위 방법을 통해 CHILL+ 을 적용하고, 칼라코드를 적당히 잘 손보면, 다음과 같은 visualization이 가능해집니다.

6. 몇 가지 정량 분석들
시뮬레이션을 통해 얻어 낸 결과 파일들을 통해, 몇 가지 정량 분석들을 진행해보겠습니다. 정량 분석은 참고 문헌에서 진행한 것을 최대한 따라해보겠습니다.
해당 논문에서는
- Radial distribution functions (RDFs) analysis (시간 별 - RDF 추이 비교; ⇒ Carbon atom of molecule)
- 시간 별 potential energy 추이 비교
를 정량 분석으로 진행하였습니다.
(1) , , 구해보기
참고 논문에서는 아래와 같이 시스템 내 원자들 간의 RDF, 원자들 간의 RDF, 그리고 와 간의 RDF 프로파일들을 비교하였습니다. 이 튜토리얼에서도 과연 가능한지 시도해보겠습니다.


다음 bash 코드를 실행시키면, .xvg라는 확장자의 RDF 결과 파일들을 Cm-Cm_RDF/ , Ow-Ow_RDF/, 그리고 Op-Ow_RDF/폴더 안에서 발견할 수 있습니다.
analrdf.sh 및 실행
#!/bin/bash
########
# 인덱싱 #
########
# 메테인의 C 원자들을 인덱싱
gmx make_ndx -f prod.gro -o Cm_index.ndx << EOF
a C
q
EOF
# 물 분자의 O 원자들과 펙틴 분자들의 O 원자들을 모두 인덱싱
gmx make_ndx -f prod.gro -o Ow+Op_index.ndx << EOF
a O
a O00 O05 O08 O0C O0G O0N O0P O0Q O0S O0V O0Z O11 O12
q
EOF
#####################
# Cm-Cm RDF 분석 진행 #
#####################
# 1. 0 ~ 1 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_0-1ns_Cm-Cm.xvg -tu ns -b 0 -e 1 -n Cm_index.ndx << EOF
7
7
EOF
# 2. 9 ~ 10 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_9-10ns_Cm-Cm.xvg -tu ns -b 9 -e 10 -n Cm_index.ndx << EOF
7
7
EOF
# 3. 19 ~ 20 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_19-20ns_Cm-Cm.xvg -tu ns -b 19 -e 20 -n Cm_index.ndx << EOF
7
7
EOF
#####################
# Ow-Ow RDF 분석 진행 #
#####################
# 1. 0 ~ 1 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_0-1ns_Ow-Ow.xvg -tu ns -b 0 -e 1 -n Ow+Op_index.ndx << EOF
7
7
EOF
# 2. 9 ~ 10 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_9-10ns_Ow-Ow.xvg -tu ns -b 9 -e 10 -n Ow+Op_index.ndx << EOF
7
7
EOF
# 3. 19 ~ 20 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_19-20ns_Ow-Ow.xvg -tu ns -b 19 -e 20 -n Ow+Op_index.ndx << EOF
7
7
EOF
#####################
# Ow-Op RDF 분석 진행 #
#####################
# 1. 0 ~ 1 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_0-1ns_Ow-Op.xvg -tu ns -b 0 -e 1 -n Ow+Op_index.ndx << EOF
7
8
EOF
# 2. 9 ~ 10 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_9-10ns_Ow-Op.xvg -tu ns -b 9 -e 10 -n Ow+Op_index.ndx << EOF
7
8
EOF
# 3. 19 ~ 20 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_19-20ns_Ow-Op.xvg -tu ns -b 19 -e 20 -n Ow+Op_index.ndx << EOF
7
8
EOF
##############
# 파일 정리하기 #
##############
# 출력된 `.xvg` 파일들을 한 폴더 안에 묶기
mkdir Cm-Cm_RDF/;
mv ./rdf_*ns_Cm-Cm.xvg ./Cm-Cm_RDF/;
mkdir Ow-Ow_RDF/;
mv ./rdf_*ns_Ow-Ow.xvg ./Ow-Ow_RDF/;
mkdir Ow-Op_RDF/;
mv ./rdf_*ns_Ow-Op.xvg ./Ow-Op_RDF/;
echo "RDF 분석이 완료되었습니다."
sleep 2
exit;
analrdf.shchmod +x analrdf.sh && ./analrdf.shxmgrace 가 작동되는 컴퓨터라면 다음과 같은 커맨드를 타이핑하여 RDF가 잘 출력되었는지 확인해보세요.
xmgrace ./Cm-Cm_RDF/*.xvg # Cm-Cm RDF 확인xmgrace ./Ow-Ow_RDF/*.xvg # Ow-Ow RDF 확인xmgrace ./Ow-Op_RDF/*.xvg # Ow-Op RDF 확인a.

b. + 동시 플롯해보기
동시 플롯은 다음 커맨드를 이용하여 진행했습니다.
xmgrace ./Ow-Ow_RDF/*0-1ns* ./Ow-Op_RDF/*0-1ns*
레퍼런스와 비교했을 때 거의 비슷한 경향을 보입니다.
다만, 노이즈가 심하게 끼는 경향을 볼 수 있는데, 이는 RDF 탐색 구간을 더욱 길게 하여 그래프를 스무딩 하면 해결할 수 있을 것으로 보입니다.
(2) Potential energy 추이 구해보기
이 튜토리얼에서는 2.46% pectin 포함 시스템만 구동하였으나,
pectin이 포함되지 않은 시스템 (control)과 3.62% pectin 포함 시스템을 구동시킨 후 비교하면 저해제가 들어갔을 때 하이드레이트의 성장이 저해되었는지를 확인할 수 있을 것입니다.
따라서 여기서는 potential energy를 얻는 방법만 제시하고, 각 시스템 별 비교는 직접 구동을 진행하여 해보시기를 권장드립니다.
아래 bash 스크립트를 이용하여 potential energy를 플롯해보세요.
#!/bin/bash
gmx energy -f prod.edr -o potenergy.xvg << EOF
11
EOF
xmgrace potenergy.xvg
potenganal.shchmod +x potenganal.sh && ./potenganal.sh
- 실제 문헌에서의 potential energy 값과는 다소 차이가 있습니다. 왜냐하면 이 튜토리얼에서는 all-atom CH4을 사용하였고, 문헌에서는 united-atom CH4 모델을 사용하였기 때문입니다.
- 중요한 것은 pectin 3.62% 혹은 non-pectin 시스템과의 경향 비교입니다.
→ pectin 투여에 의해 효과적으로 하이드레이트 저해가 일어났다면, pectin을 투여한 시스템에서 potential energy 감소가 더 나중에 일어날 것입니다 (potential energy 낮아질 수록 하이드레이트 성장).
◻️

