물리:자발_대칭_깨짐_spontaneous_symmetry_breaking

This is an old revision of the document!


자발 대칭 깨짐(spontaneous symmetry breaking)이 일어나는 대표적인 경우로, 2차원 이징 모형을 예로 들 수 있다.

이징 모형의 경우, 해밀토니안은 $$E = -J \sum_{\left< xy \right>} \sigma_x \sigma_y$$ 로 주어진다.

위의 식에서, 모든 각각의 스핀 $\sigma_x, \sigma_y$ 의 부호를 반대로 뒤집어도 에너지는 똑같다. 즉, 스핀들이 선호하는 방향이 존재하지 않는 대칭적(symmetry)인 상황이지만,

이징모형에서는 마구잡이로 배열되어 있는 무질서한 상태(disorder)로 부터, 한 방향의 스핀으로 배열(order)되려는 상태로 상전이가 일어난다.

이러한 현상을 '자발 대칭 깨짐(spontaneous symmetry breaking)' 이라고 한다.

아래의 그림은 각각 '초기의 스핀 배열 상태' , '100 MC steps 지난 상태' , '1100 MC steps 지난 상태' , '5000 MC steps 지난 상태' 의 2차원 이징모형 시뮬레이션 결과이다.

$\beta=0.5$ 로 설정하였고, 편의상 $J$=1 로 두었다. 전체 스핀의 개수는 900개 이다.

(양(+)의 부호 스핀은 노란색, 음(-)의 부호 스핀은 남색)

이때 1 MC step이라 함은 한번의 monte carlo step을 의미하며, 설정 상 전체 스핀의 개수가 30×30 임을 고려하였다.

실제로 한 방향의 스핀의 부호가 지배임을 알 수 있으며, 이번 시행에서 그 부호는 음의 부호이다. 또 다른 시행에서는 다음과 같다.

이 경우는 양의 부호가 지배적이다.

시뮬레이션은 아래의 C++ 코드로 수행하였고, cout을 이용하여 spin을 담아둔 matrix를 원하는 MC step에 출력하여 그렸다.

#include <iostream>
#include <cstdlib>
#include <cmath>
#include <random>
#include <vector>
 
using namespace std;
 
int main() {
	const int lsize=30;
	const float beta = 0.5;
	const float J = 1;
	const int iter=lsize*lsize*5000;
	int i; int j;
	float del_E; float mp_probability; // mp means metropolis
	float spin[lsize][lsize] = { 0 };
	random_device rd;
	mt19937 gen(rd());
	bernoulli_distribution distrib(0.5);
	uniform_int_distribution<> distri(0, lsize - 1);
	uniform_real_distribution<> dist(0, 1);
 
	for (int t=0; t<iter;t++){
		if (t==0){
			for (int a=0;a<lsize;a++){
				for (int b=0;b<lsize;b++){
					if (distrib(gen)){
						spin[a][b]=1;
					}				
					else {
						spin[a][b]=-1;
					}
				}
			}
		}
 
		else {
			i = distri(gen);
			j = distri(gen);
 
			if (i<lsize-1 && j<lsize-1){
				del_E=2*J*(spin[i][j]*(spin[i-1][j] + spin[i+1][j] + spin[i][j-1] + spin[i][j+1])); // periodic boundary condition
			}
			else if (i==lsize-1 && j<lsize-1){
				del_E=2*J*(spin[i][j]*(spin[i-1][j] + spin[0][j] + spin[i][j-1] + spin[i][j+1]));
			}
 
			else if (i<lsize-1 && j==lsize-1){
				del_E=2*J*(spin[i][j]*(spin[i-1][j] + spin[i+1][j] + spin[i][j-1] + spin[i][0]));			
			}
 
			else if (i==lsize-1 && j==lsize-1){
				del_E=2*J*(spin[i][j]*(spin[i-1][j] + spin[0][j] + spin[i][j-1] + spin[i][0])); 
			}
 
			if (exp(-beta*del_E) < 1){
				mp_probability = exp(-beta*del_E);
			}
 
			else if (exp(-beta*del_E) >= 1) {
				mp_probability = 1;
			}
 
			if (dist(gen) < mp_probability){
				spin[i][j] = spin[i][j]*(-1);
			}
		}
 
}
	return 0;
}

2차원 이징 모형에 대한 더 자세한 개념 및 보다 효율적인 알고리즘에 대해서 알기 위해 아래의 게시글을 확인할 수 있다.

함께 보기

  • 물리/자발_대칭_깨짐_spontaneous_symmetry_breaking.1642261581.txt.gz
  • Last modified: 2023/09/05 15:46
  • (external edit)