Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
물리:자발_대칭_깨짐_spontaneous_symmetry_breaking [2022/01/16 00:16] – minwoo | 물리:자발_대칭_깨짐_spontaneous_symmetry_breaking [2023/09/05 15:46] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | 자발 대칭 깨짐(spontaneous symmetry breaking)이 일어나는 대표적인 | + | 자발적 대칭 깨짐(spontaneous symmetry breaking)이 일어나는 대표적인 |
- | 이징 모형의 경우, 해밀토니안은 | + | 이징 모형의 경우, |
$$E = -J \sum_{\left< | $$E = -J \sum_{\left< | ||
로 주어진다. | 로 주어진다. | ||
Line 7: | Line 7: | ||
위의 식에서, 모든 각각의 스핀 $\sigma_x, \sigma_y$ 의 부호를 반대로 뒤집어도 에너지는 똑같다. | 위의 식에서, 모든 각각의 스핀 $\sigma_x, \sigma_y$ 의 부호를 반대로 뒤집어도 에너지는 똑같다. | ||
즉, 스핀들이 선호하는 방향이 존재하지 않는 대칭적(symmetry)인 상황이지만, | 즉, 스핀들이 선호하는 방향이 존재하지 않는 대칭적(symmetry)인 상황이지만, | ||
+ | |||
이징모형에서는 마구잡이로 배열되어 있는 무질서한 상태(disorder)로 부터, | 이징모형에서는 마구잡이로 배열되어 있는 무질서한 상태(disorder)로 부터, | ||
한 방향의 스핀으로 배열(order)되려는 상태로 상전이가 일어난다. | 한 방향의 스핀으로 배열(order)되려는 상태로 상전이가 일어난다. | ||
Line 12: | Line 13: | ||
이러한 현상을 ' | 이러한 현상을 ' | ||
- | 아래의 그림은 각각 ' | + | 아래의 그림은 각각 ' |
2차원 이징모형 시뮬레이션 결과이다. | 2차원 이징모형 시뮬레이션 결과이다. | ||
- | $\beta=0.5$ 로 설정하였고, | + | $\beta=0.5$ 로 설정하였고, |
+ | |||
+ | (양(+)의 부호 스핀은 노란색, 음(-)의 부호 스핀은 남색) | ||
+ | |||
+ | 이때 1 MC step이라 함은 한번의 monte carlo step을 의미하며, | ||
{{:: | {{:: | ||
Line 26: | Line 31: | ||
- | 시뮬레이션은 아래의 C++ 코드로 | + | 시뮬레이션은 아래의 C++ 코드로 |
<code C++> | <code C++> | ||
#include < | #include < | ||
- | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
- | #include < | + | |
using namespace std; | using namespace std; | ||
+ | |||
int main() { | int main() { | ||
const int lsize=30; | const int lsize=30; | ||
const float beta = 0.5; | const float beta = 0.5; | ||
const float J = 1; | const float J = 1; | ||
- | const int MC_steps=1000; | ||
const int iter=lsize*lsize*5000; | const int iter=lsize*lsize*5000; | ||
- | |||
- | const int timepoint = 100000; | ||
- | |||
int i; int j; | int i; int j; | ||
float del_E; float mp_probability; | float del_E; float mp_probability; | ||
Line 55: | Line 54: | ||
uniform_int_distribution<> | uniform_int_distribution<> | ||
uniform_real_distribution<> | uniform_real_distribution<> | ||
+ | |||
for (int t=0; t< | for (int t=0; t< | ||
- | |||
if (t==0){ | if (t==0){ | ||
for (int a=0; | for (int a=0; | ||
Line 70: | Line 68: | ||
} | } | ||
} | } | ||
- | + | ||
- | if (t== iter-1){ | + | |
- | + | ||
- | for (int v = 0; v < lsize; v++) { | + | |
- | for (int w = 0; w < lsize; w++) { | + | |
- | if (w==0){ | + | |
- | cout<<" | + | |
- | } | + | |
- | if (w>=0 && w< | + | |
- | cout<< | + | |
- | } | + | |
- | else if (w==lsize-1){ | + | |
- | cout<< | + | |
- | } | + | |
- | if (w==lsize-1 && v==lsize-1){ | + | |
- | cout<<" | + | |
- | } | + | |
- | + | ||
- | } | + | |
- | cout<<","<<" | + | |
- | } | + | |
- | } | + | |
- | + | ||
else { | else { | ||
i = distri(gen); | i = distri(gen); | ||
j = distri(gen); | j = distri(gen); | ||
+ | |||
if (i< | if (i< | ||
del_E=2*J*(spin[i][j]*(spin[i-1][j] + spin[i+1][j] + spin[i][j-1] + spin[i][j+1])); | del_E=2*J*(spin[i][j]*(spin[i-1][j] + spin[i+1][j] + spin[i][j-1] + spin[i][j+1])); | ||
Line 103: | Line 79: | ||
del_E=2*J*(spin[i][j]*(spin[i-1][j] + spin[0][j] + spin[i][j-1] + spin[i][j+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< | else if (i< | ||
del_E=2*J*(spin[i][j]*(spin[i-1][j] + spin[i+1][j] + spin[i][j-1] + spin[i][0])); | 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){ | 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])); | 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){ | if (exp(-beta*del_E) < 1){ | ||
mp_probability = exp(-beta*del_E); | mp_probability = exp(-beta*del_E); | ||
} | } | ||
+ | |||
else if (exp(-beta*del_E) >= 1) { | else if (exp(-beta*del_E) >= 1) { | ||
mp_probability = 1; | mp_probability = 1; | ||
} | } | ||
- | + | ||
if (dist(gen) < mp_probability){ | if (dist(gen) < mp_probability){ | ||
spin[i][j] = spin[i][j]*(-1); | spin[i][j] = spin[i][j]*(-1); | ||
} | } | ||
} | } | ||
- | + | ||
} | } | ||
return 0; | return 0; | ||
Line 131: | Line 107: | ||
</ | </ | ||
+ | 2차원 이징 모형에 대한 더 자세한 개념 및 보다 효율적인 알고리즘에 대해서 알기 위해 아래의 게시글을 확인할 수 있다. | ||
+ | ====== 함께 보기 ====== | ||
+ | |||
+ | [[물리: | ||
+ | |||
+ | [[전산물리학: | ||