Пакет ALPS (Algorithms and libraries for Physics Simulation) - это программное обеспечение, позволяющее моделировать сильно коррелированные квантовомеханические системы с моделями решеток. Этот программный пакет свободно распространяется, управление происходит с помощью команд на языке Python. Пользователь составляет задание в формате данных XML, указывая в нем необходимые для расчета параметры. Программа позволяет проводить параллельное или последовательное численное моделирование с использованием методов Монте-Карло, точной диагонализации, метода ренормализационной группы матрицы плотности (DMRG).
Модели, определенные по умолчанию
Структура файла модели
<MODEL>
#Определение базисных состояний на узле:
<SITEBASIS name="..."> #условное обозначение базиса
...#описание
</SITEBASIS>
#Определение базиса на решетке:
<BASIS name="..."> #условное обозначение базиса
... #описание
</BASIS>
#Определение Гамильтониана:
<HAMILTONIAN name="…"> #условное обозначение Гамильтониана
... #описание
</HAMILTONIAN>
</MODEL>
Определение базисных состояний на узле
Атрибуты квантовых чисел:
ь min и max для квантового числа N:
ь type: bosonic (the default) or fermionic
Пример 1:
<SITEBASIS name="hardcore boson">
<QUANTUMNUMBER name="N" min="0" max="1"/> #описание квантового числа N
</SITEBASIS>
Пример 2:
Спин Ѕ на узле.
<SITEBASIS name="spin-1/2">
<QUANTUMNUMBER name="S" min="1/2" max="1/2"/> #описание квантового числа S
<QUANTUMNUMBER name="Sz" min="-1/2" max="1/2"/> #описание квантового числа Sz
</SITEBASIS>
Пример 3:
Фермион на узле.
<SITEBASIS name="fermion">
<QUANTUMNUMBER name="Nup" min="0" max="1" type="fermionic"/> #кв. число Nup
<QUANTUMNUMBER name="Ndown" min="0" max="1" type="fermionic"/> #кв. число Ndown
</SITEBASIS>
Введение параметров (определяем имя и значение по умолчанию):
<SITEBASIS name="boson">
<PARAMETER name="Nmax" default="infinity"/> #параметр Nmax
<QUANTUMNUMBER name="N" min="0" max="Nmax"/>
</SITEBASIS>
<SITEBASIS name="spin">
<PARAMETER name="local_spin" default="1/2"/>
<QUANTUMNUMBER name="S" min="local_spin" max="local_spin"/>
<QUANTUMNUMBER name="Sz" min="-S" max="S"/>
</SITEBASIS>
Определение через число частиц и спин:
<SITEBASIS name="t-J">
<QUANTUMNUMBER name="N" min="0" max="1" type="fermionic"/>
<QUANTUMNUMBER name="S" min="N/2" max="N/2"/>
<QUANTUMNUMBER name="Sz" min="-S" max="S"/>
</SITEBASIS>
Определение через число частиц спинов вверх и вниз:
<SITEBASIS name="alternative t-J">
<QUANTUMNUMBER name="Nup" min="0" max="1" type="fermionic"/>
<QUANTUMNUMBER name="Ndown" min="0" max="1-Nup" type="fermionic"/>
</SITEBASIS>
Определение решетки
Определение через ссылку на предопределенный базис узла:
<BASIS name="spin">
<SITEBASIS ref="spin"/>
</BASIS>
Определение базиса узла вместе с решеткой:
<BASIS name="spin">
<SITEBASIS name="spin-1">
<QUANTUMNUMBER name="S" min="1" max="1"/>
<QUANTUMNUMBER name="Sz" min="-1" max="1"/>
</SITEBASIS>
</BASIS>
Решетка с базисом:
<BASIS name="Kondo lattice">
<SITEBASIS type="0" ref="fermion"/> #узел типа "fermion"
<SITEBASIS type="1" ref="spin-1/2"/> #узел типа "spin-1/2"
</BASIS>
<BASIS name="spin">
<SITEBASIS type="0" ref="spin">
<PARAMETER name="local_spin" value="local_S0"/>
<PARAMETER name="local_S0" value="local_S"/>
<PARAMETER name="local_S" value="1/2"/>
</SITEBASIS>
<SITEBASIS type="1" ref="spin">
<PARAMETER name="local_spin" value="local_S1"/>
<PARAMETER name="local_S1" value="local_S"/>
<PARAMETER name="local_S" value="1/2"/>
</SITEBASIS>
</BASIS>
Операторы на узлах решетки
Оператор определяется через: имя, матричный элемент и изменение квантового числа.
Simple site operators
гильбертово пространство хаббард цепочка
Наш случай
Параметры Гамильтониана:
1. Модель "fermion Hubbard":
Бесконечные двумерные решетки
Пример 1. Два базисных вектора с координатами (1;0) и (0.5;1).
<LATTICE name="2D" dimension="2">
<BASIS>
<VECTOR> 1 0 </VECTOR>
<VECTOR> 0.5 1 </VECTOR>
</BASIS>
</LATTICE>
Пример 2. Два базисных вектора с координатами (a;0) и (b sin; b cos).
<LATTICE name="2D" dimension="2">
#Определение параметров:
<PARAMETER name="a" default="1"/>
<PARAMETER name="b" default="1"/>
<PARAMETER name="phi" default="Pi/2"/>
#Определение элементарной ячейки:
<BASIS>
<VECTOR> a 0 </VECTOR>
<VECTOR> b*sin(phi) b*cos(phi) </VECTOR>
</BASIS>
</LATTICE>
Конечные двумерные решетки
Пример 1. Решетка 5x3.
<FINITELATTICE name="5x3">
<LATTICE name="2D" dimension="2"/>
<EXTENT dimension="1" size="5"/> #5 ячеек по x
<EXTENT dimension="2" size="3"/> #3 ячеек по x
</FINITELATTICE>
Пример 2. Решетка 4x4.
<FINITELATTICE>
<LATTICE dimension="3"/>
<EXTENT size="4"/>
</FINITELATTICE>
Пример 3. Полубесконечная решетка x2.
<FINITELATTICE name="strip">
<LATTICE name="2D" dimension="2"/>
<EXTENT dimension="2" size="2"/>
</FINITELATTICE>
Пример 4. Конечная решетка LxW.
<FINITELATTICE>
<LATTICE name="2D" dimension="2"/>
<PARAMETER name="L" />
<PARAMETER name="W" default="2" /> #значение по умолчанию
<EXTENT dimension="1" size="L" />
<EXTENT dimension="2" size="W" />
</FINITELATTICE>
Пример 5. Конечная решетка LxWxH.
<FINITELATTICE>
<LATTICE name="3D" dimension="3"/>
<PARAMETER name="L" />
<PARAMETER name="W" default="L" /> #значение по умолчанию
<PARAMETER name="H" default="W" /> #значение по умолчанию
<EXTENT dimension="1" size="L" />
<EXTENT dimension="2" size="W" />
<EXTENT dimension="3" size="H" />
</FINITELATTICE>
Граничные условия
Пример 1. Периодическая в двух направлениях решетка LxL.
<FINITELATTICE>
<LATTICE name="2D" dimension="2"/>
<EXTENT size="L" />
<BOUNDARY type="periodic" />
</FINITELATTICE>
Пример 2. Периодическая в одном направлении решетка LxW.
<FINITELATTICE name="strip">
<LATTICE name="strip" dimension="2"/>
<PARAMETER name="W" default="2" />
<EXTENT dimension=1 size="L" />
<EXTENT dimension=2 size="W" />
<BOUNDARY dimension="1" type="periodic" /> #в x-направлении периодическая
<BOUNDARY dimension="2" type="open" /> #в y-направлении открытая
</FINITELATTICE>
Определение решеток наследыванием
Пример 1. “Полное” определение решетки LxW, периодической в обоих направлениях.
<FINITELATTICE name = "finite tilted 2D">
#Определение элементарной ячейки:
<LATTICE name="tilted 2D" dimension="2">
<BASIS>
<VECTOR> 1 0 </VECTOR>
<VECTOR> 0.5 1 </VECTOR>
</BASIS>
</LATTICE>
#конец определения элементарной ячейки
<PARAMETER name="BC" default="periodic" />
<EXTENT dimension="1" size="L" />
<EXTENT dimension="2" size="W" />
<BOUNDARY type="BC" />
</FINITELATTICE>
Пример 2. Определение наследыванием решетки LxW, периодической в обоих направлениях.
#Определение элементарной ячейки:
<LATTICE name="tilted 2D" dimension="2"
<BASIS>
<VECTOR> 1 0 </VECTOR>
<VECTOR> 0.5, 1 </VECTOR>
</BASIS>
</LATTICE>
#Определение решетки:
<FINITELATTICE name = "finite tilted 2D">
<LATTICE ref="tilted 2D"> #ссылка на ранее определеннную элементарную ячейку
<PARAMETER name="BC" default="periodic" />
<EXTENT dimension="1" size="L" />
<EXTENT dimension="2" size="W" />
<BOUNDARY type="BC" />
</FINITELATTICE>
Определенные в ALPS решетки
Наш случай:
5. Расчет спиновых цепочек
С помощью описанных в разделе 3 методов проведены следующие расчеты.
В приближении ближайших соседей гамильтониан Хаббарда записывается:
(2)
В программе ALPS принято другое написание (другой знак для t):
(3)
Тест 1. Одна частица на цепочке из четырех узлов. Произведено сравнение расчетов матрицы гамильтониана и ее спектра в двух программах: на ALPS и Matlab. В программе на Matlab был использован метод точной диагонализации гамильтониана, а на ALPS - метод DMRG, .
Фрагмент кода на ALPS:
Ниже показаны результаты расчетов программы на Matlab (матрица гамильтониана и ее спектр):
Как видно, совпадение в расчетах происходит до девятой значащей цифры.
Тест 2. Одна частица в периодической цепочке из N узлов, . Спектр энергии имеет вид
, , (4)
где для гамильтониана вида (2).
Программа, написанная в системе Matlab, дает весь спектр вида (3), ALPS дает энергию основного состояния. Все сходится (в случае ALPS при больших N, поскольку в нем считаются только открытые, а не периодические цепочки).
Тест 3. Запускаем расчет энергии основного состояния двух противоположно направленных спинов на цепочке длиной L (L - число узлов). Считаем энергию связи димера: , где - энергия (основного состояния) одного спина, - энергия пары. Действительно, энергия пары оказывается меньше, чем удвоенная энергия одного, т.е. димер устойчив. Считаем энергию связи димера по формуле (используется гамильтониана вида (2), т.е. ):
, (5)
Также считаем погрешность приближения этого значения численным расчетом (расчеты проведены на ALPS). Получаем нижеприведенный график (рис.1), из которого видно, что погрешность убывает по закону .
Рис. 1. Погрешность приближения численного расчета энергии связи димера
5.
6. Методы расчета фазовой диаграммы связанных цепочек атомов
Обозначения:
Химпотенциал:
Магнитное поле:
Большая каноническая энергия:
- число узлов цепочки
Фазовые переходы:
1. Линия “поляризованый газ - неполяризованный газ” (из фазы P=0 в фазу P>0).
Разностные формулы для производных ():
2. Линия “вакуум - неполяризованный газ”.
Стартуем из точки , увеличивая , до точки появления первой пары. При появлении пары большая каноническая энергия системы (одной пары) равна энергии вакуума:
, где .
Отсюда, уравнение границы - горизонталь .
3. Линия “вакуум - полностью поляризованный газ”.
Пусть полностью поляризованный газ состоит из одной частицы:
,
тогда - уравнение границы.
, где .
4. Линия “полностью поляризованный газ - частично поляризованный газ”.
Полностью поляризованный газ: , частично поляризованный газ: . Тогда:
.
5. Линия “полностью поляризованный газ 1 - полностью поляризованный газ 2”.
Фаза FP1 (полностью поляризованный газ 1): ,
Фаза FP2 (полностью поляризованный газ 2): ,
Потенциалы фаз:
,
.
Приравниваем потенциалы фаз на границе раздела с учетом того, что для фазы FP1 на границе , а так же и для обоих фаз одинаковы:
.
С учетом того, что , получим уравнение фазовой границы:
.
Если сравнить с уравнением линии 3 (), то видно, что они параллельны.
Расчет второй производной энергии основного состояния по полному числу частиц
Обозначения:
- число узлов цепочки;
- число частиц со спинами вверх, - число частиц со спинами вниз;
, ;
Преобразования между переменными :
,
Преобразования между переменными :
Химпотенциал:
Магнитное поле:
Разностные формулы для производных:
Шаблон для расчета величин (точки 1 и 2), (точки 1 и 3) и (точки 0, 1 и 2):
7.
8. Результаты расчетов фазовых диаграмм
Ниже приведены полученные результаты расчетов фазовых диаграмм.
7.1 Одна цепочка атомов
Рис. 2. Фазовая диаграмма одномерной цепочки при U = -1
Рис. 3. Фазовая диаграмма одномерной цепочки при U = -2
Рис. 4. Фазовая диаграмма одномерной цепочки при U = -5
Результаты расчетов (см. рис 4):
|
№ точки |
||||||
|
1 |
10 |
5 |
1.27 |
-3.19 |
0.00215 |
|
|
2 |
20 |
10 |
1.43 |
-3.13 |
0.0052 |
|
|
3 |
40 |
20 |
2.00 |
-2.81 |
0.0140 |
|
|
4 |
60 |
30 |
2.61 |
-2.33 |
0.0145 |
Рис. 5. Фазовая диаграмма одномерной цепочки при U = -7
7.2 Две взаимодействующие цепочки атомов
Рис. 6. Фазовая диаграмма двух связанных цепочек при U = -7
7.3 Три взаимодействующие цепочки атомов
Рис. 7. Фазовая диаграмма трех связанных цепочек при U = -7
Заключение
В ходе выполнения магистерской диссертации было разработано программное обеспечение для расчета энергетического спектра одномерной цепочки спинов методом прямой диагонализации в рамках модели Хаббарда. Проведен расчет фазовой диаграммы одной, двух и трех связанных цепочек холодных атомов в рамках модели Хаббарда с притяжением для различных значений параметров модели. Выявлены основные закономерности эволюции фазовых диаграмм таких систем при изменении параметров модели и изменении числа взаимодействующих цепочек атомов. Стоит отметить, что расчет диаграммы трех связанных цепочек атомов уже выходил за первоначально выданное задание.