분자동역학(Molecular Dynamics)에서 Time Integration의 개념.

분자동역학 (molecular dynamics, MD) 시뮬레이션은 앙상블(ensemble)을 구성해 계산을 진행한다. 앙상블은 가장 기초적인 형태인 NVE ('microcanonical ensemble', 원자수, 체적, 에너지가 일정한 앙상블)부터 NVT ('canonical ensemble', 원자수, 체적, 온도가 일정한 앙상블), NPT ('isobaric-isothermal ensemble', 원자수, 압력, 온도가 일정한 앙상블) 등의 세 가지가 가장 많이 사용된다.

그 중에서도 가장 많이 사용되는 앙상블의 종류는 NVT인데, 이는 일반적으로 우리가 실제로 어떤 실험을 하거나 어떤 시스템을 제어하는 경우에 '에너지'를 기준으로 측정/제어하지 않고 대체로 온도를 지표로 이용하기 때문에 NVE ensemble로 실조건을 모사하는데 어려움이 있고, 반대로 NPT의 경우에는 압력 조건을 강제하기 때문에 원치 않는 인위가 발생하여 compressive / tensile stress와 같은 기계적 물성치 예측이나 phase transformation 등 내부 응력에 민감한 실험을 진행할 경우 적절한 결과를 얻기 어렵기 때문이다.

아무튼 간에, 우리가 계를 해석하는데 적절한 앙상블 종류를 선택하고 나면, 실제로 MD 계산을 돌리기 위해서는 앙상블 형태에 맞는 time integrator를 준비해야 한다. Time integrator란 현재 우리가 관찰하고 있는 계의 거동을 지정된 time step의 크기마다 한번씩 예측해나가는 장치로서, 이를 통해 한 단계 한 단계 계산해 나가면 (= time evolution) 결국 우리가 예측하고자 하는 계의 평형상태를 계산해 낼 수 있다.

앞서 소개한 NVT 앙상블에서 time integrator의 사용을 예로 들어보자. 우리가 MD 코드에 넘겨주는 정보는 각 원자들의 초기 좌표값과 온도이다. (MD의 기본원리와 개념에 대해서는 나중에 포스팅 하겠다.)  MD는 이 두 가지 정보를 이용해 계가 가질 수 있는 무수히 많은 상태 중 하나를 임의적으로 선택한다. 어떻게? 주어진 온도 조건을 이용해 각 원자들이 갖는 운동에너지를 임의로 흩뿌려 주는 방식으로.

쉽게 생각하자. MD는 제1원리 계산과 달리 '고전역학'을 사용한다. 고전역학에서 어떠한 입자가 갖는 에너지는 퍼텐셜 에너지와 운동 에너지 두 가지로 구성된다. 우리가 초기 조건으로 넣어준 원자들의 좌표가 부여하는 에너지는 퍼텐셜 에너지다. 원자들은 서로 멀어지면 붙으려고 하고, 반대로 너무 가까워지면 밀어낸다. 따라서 원자들의 초기 좌표 값은 이러한 퍼텐셜 에너지를 부여한다. 운동 에너지는 우리가 지정한 계의 온도에 의해 설정된다.

 후에 좀더 자세하게 다루겠지만, MD라는 것이 계산하는 것은 결국 각 원자들의 다음 위치, 그리고 각 원자들이 받는 힘 벡터이다. 이 두가지만 있으면 우리는 특정 원자, 혹은 전체 계의 에너지를 계산해 낼 수 있으며, 나아가서 여러 열역학적 관계식을 통해 압력, 온도, 엔트로피 등등의 특성값들을 뽑아낼 수 있다.

먼저 온도가 한없이 절대 0도에 가까운 아주 간단한 계에 대해서 먼저 생각해보도록 하자. 만약 원자들이 경계면을 갖는 어떤 상자에 담겨 있다고 치면, 경계조건을 부여하는데 아주 골치가 아파지므로, 우리가 다루는 계는 모든 좌표방향에 대해 주기성을 띄어 (이런 경우를 periodic conditions라 한다.) 일종의 bulk system으로 볼 수 있다고 치자. 이 경우, 계를 이루는 원자들의 시간에 따른 운동을 기술하기 위해 필요한 정보는 초기(t=0)에 모두 주어진다.

우리는 수학적으로 모델링된 퍼텐셜장(potential field)을 이미 갖고 있기 때문에, 원자들의 좌표를 알고 있다면 언제나 그 계의 퍼텐셜 에너지를 구해낼 수 있다. 여기서 우리가 가정하는 조건의 특이성을 다시 생각해보자. 우리의 시스템은 절대 0도에 무한히 가깝다. 즉, 원자들이 계의 온도에 의해 갖는 운동에너지는 없다. 그렇다면, 이 원자들은 전혀 움직이지 않을까? 그렇지 않다! 왜냐? 원자들의 배열에 따라 받는 퍼텐셜 에너지가 운동에너지로 전환 돼 원자들이 움직이기 때문이다. 이를 두고 우리는 퍼텐셜에 의해 형성된 force-field에서 원자가 움직인다고 한다. 일상에서 알기쉬운 예를 들어보자. 발로 축구공 뻥 차면 공은 어떤 형태로든 움직이며 운동을 할 것이다. 그런데 우리가 굳이 축구공을 발로 차지 않아도, 아파트 옥상에서 공을 자유낙하 시켜도 이 공은 퍼텐셜 에너지에 의해 지상층으로 가속운동을 할 것이다.

다시 우리가 다루고 있는 원자 시스템으로 돌아와서, 원자들이 절대 0도에 가까운 환경에서도어떤 식으로든 운동을 한다고 받아들인다고 치면 이제 다음 질문이 떠오른다. '어떻게 운동할 것인가?' 앞서 예로든 축구공의 운동을 생각해보면 그 답을 직관적으로 생각해 낼 수 있다. 원자들은 계의 퍼텐셜 에너지가 낮아지는 방향으로 이동할 것이다. 수학적으로 이것은 아주 자명하다. Force-field는 potential field에 gradient를 취한 뒤 부호를 바꿔준 것과 같기 때문이다. 다만, 이 경우 원자들이 퍼텐셜 에너지를 최소로 하는 방향으로 움직인다고 해서 그 원리가 MD의 통상적인 energy minisation과 같지 않으므로 이 부분을 아주 주의해야 한다. (여기서 간단히 비교하자면, 위에서 소개한 방식은 time-integration, minimisation은 space-integration에 해당한다.)

 주어진 계가 절대 0도에 있을 때, 즉, 계가 갖는 운동에너지가 '0'일 때(=원자들이 특정 위치로 모두 고정돼 있을 때) 계가 갖는 에너지를 계산할 수 있다. 그런데, 우리가 0K에 한없이 가까운 온도에서 time integration을 진행하면, 계는 퍼텐셜 에너지가 최소가 될 수 있는 방향으로 운동한다. 왜냐? 원자들의 배열에 따라 받는 퍼텐셜 에너지가 운동에너지로 전환 돼 원자들이 움직이기 때문이다. 이를 두고 우리는 퍼텐셜에 의한 force-field에서 원자가 움직인다고 한다. 따라서, 계의 퍼텐셜 에너지를 최소하 하려는 원자들의 움직임은 아주 자연스러운 현상으로, time integration 중에서도 진행이 된다. 다만, 그 원리에 있어서는 통상적인 energy minisation과 분명히 다르므로 이 부분을 주의해야 한다.

자, 우리는 앞서의 논의에서 계가 절대 0도에 한없이 가까울 때, 그러니까 계에 주어진 운동에너지가 0 일 때에도 원자가 움직일 수 있으며, 그 움직임은 계의 퍼텐셜 에너지를 최소화하는 방향으로 진행될 것이라는 점을 알았다. 그렇다면 계가 절대 0도 이상의 어떤 온도를 가질 때 time-integration을 하면 원자들은 어떤 움직임을 갖게 될까?

NVT 조건에서는 매 시간마다 목표온도가 정해지는데, 만약 당신이 계의 초기온도와 최종온도를 동일하게 놓았다면 목표온도는 매 time-step에서 항상 초기온도(=최종온도)와 같은 것이며, 초기온도와 최종온도가 다르다면, 목표온도는 지정된 time-interation 수행 횟수 (= number of run for time-integration)에 따라 매 time-step마다 일정한 크기만큼 목표온도가 증가하는 방식으로 부여될 것이다.

물론 이렇게 각 step에서의 온도값을 알려주기만 한다고 마법처럼 원자들이 그 온도에 맞춰 움직이지는 않는다. 실제적으로는, 주어진 목표온도와 등가(=equivalent)관계를 가질수 있도록 계를 구성하는 원자들에게 임의의 속도를 부여하며, 이것이 각 원자들의 힘벡터에 저장되며, 이와 같이 원자들에게 계의 온도에 상응하는 속도를 흩뿌려주는 행위를 보통 'temperature(=velocity) rescaling'이라 칭한다. 이 과정은 아주 엄밀하진 않지만 '무작위적인' 방식으로 원자들에게 운동속도를 흩뿌리며, 대신 통계적인 관점에서 적절하게 정규분포를 이루는 방식으로 이루어진다. (물론, 계산을 수행하는 사람이 원한다면 특정 원자에게만 에너지를 몰빵해줄수도 있겠지만, 당연히 일반적인 원자시스템의 거동에서 크게 벗어나므로 계산상 이득이 전혀 없을 것이다.)

여기까지의 논의를 잘 따라왔다면, 이제 우리는 time integration을 수행할 때 각 step에서 퍼텐셜 에너지를 계산하고, 이것을 통해 퍼텐셜에너지에 따른 원자들의 운동과 온도에 의한 원자들의 운동을 기술할 수 있다는 것을 알았다. 우리가 모르는 것은 실제로 이러한 정보를 이용해 어떻게 다음 time step에서의 원자 위치와 속도를 결정하는가, 하는 문제이다. 이 문제에 대한 답을 얻기 위해서는 MD에서 사용되는 time integrator의 작동원리를 살펴봐야한다. 가장 대표적이며, 널리 사용되는 것으로는 Velocity Verlet algorithm이 있는데, 다음에는 이것에 대해 살펴보겠다.



Comments

Popular posts from this blog

비리얼(virial)이란 무엇인가?

Reciprocal lattice란 무엇인가?