제일원리 계산은 유용한 도구이고 실제로 많은 분야에 사용되고 있기는 하지만, 계산할 수 있는 재료의 크기 및 시뮬레이션 시간이 제한적이라는 한계가 있다. 이는 제일원리 계산량이 재료에 포함된 전자 수의 세제곱에 비례하여 증가하기 때문이다. 때문에, 제일원리 계산을 통해서는 실제 디바이스 크기의 시뮬레이션이나 장시간의 시뮬레이션은 불가능하다. 이를 해결하기 위한 대안이 바로 분자동역학(Molecular dynamics)이다.
사실 엄밀히 말하면, 제일원리 계산과 분자동역학은 같은 범주에 들어가는 방법은 아니다. 즉, 제일원리 계산을 쓰거나 분자동역학 계산을 쓰거나 선택해야 하는 것이 아니라는 의미이다. 실제로, 제일원리 계산을 이용하여 분자동역학 계산을 수행하기도 한다. 제일원리 계산을 통해 일정 시간의 시뮬레이션을 하는 경우, '일정 시간 말 안에 분자동역학 시뮬레이션을 한다는 의미가 포함된 경우가 많다(물론, 아닌 경우도 있다). 좀 더 쉽게 설명하면, 분자동역학이라는 장난감 자동차에 제일원리 계산이라는 모터를 넣는다고 이해하면 좋다. 이 제일원리 계산이라는 모터를 이용할 경우 자동차의 조작감이 좋아지고 자동차에 가해지는 부담도 적지만 높은 속도를 내기는 어렵다는 단점이 있다. 따라서 우리가 이 자동차를 경주에 내보내고 싶다면 다른 모터를 사용할 필요가 있는데, 이 다른 이름의 모터가 바로 Classical Force Field이다. 한글 명칭을 몰라 영어로 쓰는 점 양해 부탁드린다. 저번 포스팅에서, 제일원리 계산은 원자의 전자구조를 계산한다고 설명한 바 있다. 반면, Classical Force Field는 전자를 따로 고려하지 않고, 원자를 일종의 점처럼 간주한다. 그다음, 각 원자 간의 상호작용을 단순화된 함수를 이용해 계산한다. 이때, 원자 간의 상호작용은 두 개의 원자 간 상호작용(원자 간 거리), 세 개의 원자 간 상호작용(원자 세 개가 이루는 각도) 및 네 개의 원자 간 상호작용(이면체 각도, dihedral angle)로 나타내는 경우가 많다. 실제 계산을 할 때는 각 원자에 대해, 그 원자로부터 일정 거리 안에 있는 '주변 원자'를 구하고, 이 주변 원자들과 중심 원자에 대한 원자 간 상호작용을 계산한 뒤 이를 전부 합하는 방식으로 재료의 에너지를 구하게 된다. 눈치 빠른 독자라면 짐작하겠지만, 분자동역학으로 에너지를 구하는 과정은 원자 별로, 상호작용별로 개별적으로 계산할 수 있기 때문에 계산을 병렬화하기가 상대적으로 용이하다. 또한, Classical Force Field를 이용한 계산은 원자 수에 비례해서 계산량이 증가하기 때문에 계산의 Scalability 역시 제일원리 계산을 이용했을 때 비해 훨씬 빠르다. 따라서 이를 활용했을 경우 훨씬 더 큰 시스템에 대해 더 오랜 시간을 계산할 수 있게 된다.
지금까지 분자동역학을 돌리는 모터 역할을 하는 Classical Force Field에 대하여 설명했다. 원자간 상호작용을 간단한 수식을 통해 계산하고 이를 합쳐서 재료의 '에너지'를 구한다고 말이다. 이제는 모터가 어떻게 자동차의 바퀴를 돌리는지를 알아볼 시간이다. 즉, 분자동역학이 어떤 과정을 거쳐 시간에 따른 재료의 변화를 시뮬레이션할 수 있는지 알아보도록 하겠다. 분자동역학은 그 지배 방정식으로 뉴턴의 운동방정식을 사용한다. 고등학교 물리학 과정을 기억하는 독자라면 F=ma라는 식을 기억할 것이다. 뉴턴의 제 2 법칙인데, 가속도의 법칙이라고도 한다. 여기서 F는 힘, m은 질량, 그리고 a는 가속도이다. 여기서 우리가 주목해야 할 것은 a, 가속도이다. 가속도를 적분하면 속도가 되고, 속도를 적분하면 이동 거리가 되기 때문이다. 즉, 특정 시점에서 어떤 원자의 위치, 속도, 가속도를 알 경우, 그로부터 일정 시간(일반적으로 dt로 표현한다)이 지난 시점에서 그 원자의 위치를 알 수 있게 되는 것이다. 다시 위의 식을 보자. 우리가 원하는 것은 a이므로 이를 구하려면 F, m에 대해 알아야 한다. 그런데 여기서 m은 원자의 질량이므로, 상수이다. 따라서 F만 알 수 있다면 우리는 재료의 시간 경과에 따른 움직임 변화를 계산하는 데 필요한 a를 계산할 수 있다. 그러면 F는 어떻게 계산할까? 앞에서 Classical Force Field를 이용하여 재료의 '에너지'를 계산할 수 있다고 했던 것이 기억나는가? F, 힘은 에너지의 미분을 이용하여 구할 수 있다. 정확하게는 F=-dE/dx로, 에너지를 거리에 대해 미분한 뒤 부호를 바꿔 준 값이다. 이제 우리는 분자동역학에 대해 전부 알게 되었다. Classical Force Field로 재료의 에너지를 구하고, 이를 미분해 재료 내 각 원자에 걸리는 힘을 구하고 나면 각 재료에 걸리는 가속도를 구할 수 있기 때문에, 이를 이용해 다음 시간의 원자들 위치를 계산하는 방법으로 한 스텝씩 다음 단계로 나아가는 것이다. 그렇다면 이제 제일원리 계산을 이용해서 분자동역학을 수행하는 원리 역시 알 수 있을 것이다. Classical Force Field 대신 제일원리 계산을 이용하여 재료의 에너지를 구하면 되는 것이다. 이렇게 분자동역학의 원리에 대해 알아보았으니 다음 포스팅에서는 제일원리 계산 때와 마찬가지로 재료공학에서 분자동역학을 어떻게 응용할 수 있는가에 대해 알아보도록 하겠다. '동역학'이라는 명칭대로 분자동역학은 주로 재료의 움직임과 관련된 시뮬레이션에 활용하게 되므로, 어떤 연구 분야에서 재료의 시간에 따른 움직임이 중요한지 알아보는 포스팅이 될 것이다.
'과학 > 재료공학' 카테고리의 다른 글
기계학습을 이용한 Force Field(Machine Learning Force Field, MLFF) 소개 (0) | 2022.06.19 |
---|---|
분자동역학의 응용 분야 및 한계 (0) | 2022.06.18 |
제일원리 계산 알고리즘, 응용 및 한계 (0) | 2022.06.16 |
제일원리 계산 소개 (0) | 2022.06.16 |
재료 시뮬레이션의 활용 방법 (0) | 2022.06.14 |
댓글