Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SBiCGの非対角同時計算とLOBPCG/SBiCG/TPQに対する複ベクトル高速化 #148

Open
wants to merge 58 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
c470af1
Backup
mitsuaki1987 Feb 15, 2019
8eca673
Merge branch 'develop' into kawamura1
mitsuaki1987 Feb 25, 2019
94b427e
Backup
mitsuaki1987 Feb 25, 2019
259bda0
Backup
mitsuaki1987 Mar 2, 2019
b84abfd
Backup
mitsuaki1987 Mar 3, 2019
2ae1014
Backup
mitsuaki1987 Mar 5, 2019
576e78f
Backup
mitsuaki1987 Mar 6, 2019
3350cc8
Merge branch 'develop' into kawamura1
mitsuaki1987 Mar 6, 2019
7a47d8a
Backup
mitsuaki1987 Mar 7, 2019
8913dd9
Backup
mitsuaki1987 Mar 7, 2019
d84960d
Backup
mitsuaki1987 Mar 7, 2019
0b9cfb1
Backup
mitsuaki1987 Mar 8, 2019
381d8a0
Backup
mitsuaki1987 Mar 10, 2019
c028534
Backup
mitsuaki1987 Mar 11, 2019
04bd7e1
Backup
mitsuaki1987 Mar 11, 2019
55dd4fd
backup
mitsuaki1987 Mar 14, 2019
bd22ba1
Backup
mitsuaki1987 Mar 17, 2019
f47ad16
Backup
mitsuaki1987 Mar 19, 2019
f76a0b7
Backup
mitsuaki1987 Mar 22, 2019
7082cf6
Backup
mitsuaki1987 Mar 22, 2019
4b8c549
Backup
mitsuaki1987 Mar 23, 2019
fb232a9
BugFix in TPQ
mitsuaki1987 Mar 24, 2019
c5351d7
Backup
mitsuaki1987 Mar 25, 2019
f2089fa
greenr2k output TPQ correlation function and its eerror like in the m…
mitsuaki1987 Mar 26, 2019
0576026
The first line has infinite temperature.
mitsuaki1987 Mar 26, 2019
54e1af6
Backup
mitsuaki1987 Mar 27, 2019
f10f5ff
Bagfix
mitsuaki1987 Mar 27, 2019
5b104c3
Backup
mitsuaki1987 Mar 28, 2019
3a11864
BagFix : When building without MPI, the v1buf was not allocated while…
mitsuaki1987 Mar 29, 2019
26daa11
Backup
mitsuaki1987 Mar 30, 2019
e001f0a
Bug fix in the third nearest of square lattice
mitsuaki1987 Mar 30, 2019
b0b9569
Add sample for the dinamical green's function with Fourier trans.
mitsuaki1987 Mar 30, 2019
b533d19
[Bugfix] The reciprocal lattice vector was incorrect.
mitsuaki1987 Mar 31, 2019
cfe2273
Update manual (JP):
mitsuaki1987 Apr 11, 2019
4407225
Implement CMA
mitsuaki1987 Apr 12, 2019
3c25813
Merge branch 'sz_omp' into kawamura1
mitsuaki1987 Oct 4, 2022
bd3466c
Merge remote-tracking branch 'remotes/origin/develop' into kawamura1
mitsuaki1987 Oct 5, 2022
c203e2b
Restore the deleted submodule
mitsuaki1987 Oct 5, 2022
ebf21cd
To pass the tests.
mitsuaki1987 Oct 18, 2022
32c5b57
Previous commit was failed in macos because of absence of inclusion.
mitsuaki1987 Oct 18, 2022
69febe0
FullDiag by ScaLAPACK did not work.
mitsuaki1987 Oct 18, 2022
8c598ee
Precious verion was not build in macos because of incomplete decleara…
mitsuaki1987 Oct 20, 2022
fa5ce0e
omega in spectrum appears as (w - e_j + e_i), not (w - e_j).
mitsuaki1987 Oct 24, 2022
2e3040c
Name of dynamical green's function was changed.
mitsuaki1987 Oct 25, 2022
22bc1de
Backup
mitsuaki1987 Oct 25, 2022
b52fccd
BugFix: All test passes
mitsuaki1987 Apr 20, 2023
84b2ad9
Merge remote-tracking branch 'remotes/origin/develop' into kawamura1
mitsuaki1987 Apr 20, 2023
68d9290
Bugfix in spectrum by BiCG with multiple eigenstates
mitsuaki1987 Apr 21, 2023
6c591ad
Update manual for dynamical green's function.
mitsuaki1987 Jun 7, 2023
a434670
Manual for dynamical correlation functions are updated
mitsuaki1987 Jun 8, 2023
a3610f9
This preamble must be included to avoid error in make tutorial-en-pdf
mitsuaki1987 Jun 8, 2023
464912d
Dry run should be executed in serial
mitsuaki1987 Oct 18, 2023
225d787
Merge branch 'kawamura1' of github.com:issp-center-dev/HPhi into kawa…
mitsuaki1987 Oct 18, 2023
8de7984
In Fugaku and FX1000, "work" variable for ZHEEVD mst be allocated pos…
mitsuaki1987 Oct 30, 2023
84a1aea
(Bug Fix) Tutorial for the spectrum calculation did not work after the
mitsuaki1987 Feb 1, 2024
d9e2072
Fix unstable behaviorin LOBPCG:
mitsuaki1987 Apr 19, 2024
23ae41c
Merge remote-tracking branch 'remotes/origin/develop' into kawamura1
mitsuaki1987 Apr 19, 2024
018bd55
Merge tag 'v3.5.2' into kawamura1
mitsuaki1987 Nov 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ enable_testing()
project(HPhi NONE)
option(USE_SCALAPACK "Use Scalapack" OFF)

set(CMAKE_C_FLAGS "-Wall")

if(CONFIG)
message(STATUS "Loading configration: " ${PROJECT_SOURCE_DIR}/config/${CONFIG}.cmake)
include(${PROJECT_SOURCE_DIR}/config/${CONFIG}.cmake)
Expand Down
49 changes: 29 additions & 20 deletions doc/en/source/algorithm/DynamicalGreen_en.rst
Original file line number Diff line number Diff line change
@@ -1,33 +1,42 @@
.. highlight:: none

Dynamical Greens function
Dynamical Green's function
--------------------------

Using :math:`{\mathcal H}\Phi`, we can calculate a dynamical Green’s
function
Using :math:`{\mathcal H}\Phi`, we can calculate a dynamical Green's function

.. math:: I(z) = \langle \Phi ' | \frac{1}{ {\mathcal H}- z\hat{I} } | \Phi '\rangle,
.. math:: G_n^{O_l,O_r}(z) = \langle \Phi_n | \hat{O}_l (z + E_n - \hat{\cal H})^{-1} \hat{O}_r| \Phi_n \rangle

where :math:`|\Phi ' \rangle = \hat{O} | \Phi _0 \rangle` is an
excited state and :math:`\hat{O}` is an excitation operator defined as a
single excitation operator
where :math:`\hat{O}_{l,r}` is a single exciation operator

.. math:: \sum_{i, \sigma_1} A_{i \sigma_1} c_{i \sigma_1} (c_{i\sigma_1}^{\dagger})
.. math:: \sum_{i, \sigma_1} A_{i \sigma_1} c_{i \sigma_1} \quad \textrm{or} \quad \sum_{i, \sigma_1} A_{i \sigma_1} c_{i\sigma_1}^{\dagger}

or a pair excitation operator
or a pair-exciation operator

.. math:: \sum_{i, j, \sigma_1, \sigma_2} A_{i \sigma_1 j \sigma_2} c_{i \sigma_1}c_{j \sigma_2}^{\dagger} (c_{i\sigma_1}^{\dagger}c_{j\sigma_2}).
.. math:: \sum_{i, j, \sigma_1, \sigma_2} A_{i \sigma_1 j \sigma_2} c_{i \sigma_1}c_{j \sigma_2}^{\dagger} \quad \textrm{or} \quad
\sum_{i, j, \sigma_1, \sigma_2} A_{i \sigma_1 j \sigma_2} c_{i\sigma_1}^{\dagger}c_{j\sigma_2}.

For example, the dynamical spin susceptibilities can be calculated by
defining :math:`\hat{O}` as
For example, to compute the dynamical spin susceptibility, we use pair excitation operators

.. math:: \hat{O} = \hat{S}({\bf k}) = \sum_{j}\hat{S}_j^z e^{i {\bf k} \cdot \bf {r}_j} = \sum_{j}\frac{1}{2} (c_{j\uparrow}^{\dagger}c_{j\uparrow}-c_{j\downarrow}^{\dagger}c_{j\downarrow})e^{i {\bf k} \cdot \bf {r}_j}.
.. math:: \hat{O}_r = \hat{S}_{\textbf{R}=\textbf{0}}^z = \frac{1}{2} (c_{\textbf{0}\uparrow}^{\dagger}c_{\textbf{0}\uparrow}-c_{\textbf{0}\downarrow}^{\dagger}c_{\textbf{0}\downarrow})
\\
\hat{O}_l = \hat{S}_{\textbf{R}}^z = \frac{1}{2} (c_{\textbf{R}\uparrow}^{\dagger}c_{\textbf{R}\uparrow}-c_{\textbf{R}\downarrow}^{\dagger}c_{\textbf{R}\downarrow})

There are two modes implemented in :math:`{\cal H}\Phi`. One is the
continued fraction expansion method by using Lanczos method
 [#]_ and the other is the shifted Krylov
method [#]_ . See the reference
for the details of each algorithm.
to generate :math:`G_n^{O_l,O_r}(z)\equiv G_n^{\textbf{R}}(z)`,
then perform the Fourier transformation

.. [#] \E. Dagotto, Rev. Mod. Phys. **66**, 763-840 (1994).
.. [#] \S.Yamamoto, T. Sogabe, T. Hoshi, S.-L. Zhang, T. Fujiwara, Journal of the Physical Society of Japan **77**, 114713 (2008).
.. math:: G_n^{\textbf{k}}(z) \equiv \sum_{\textbf{R}} \exp(i\textbf{k}\cdot\textbf{R}) G_n^{\textbf{R}}(z)

as a postprocess.

Three modes are implemented in :math:`{\cal H}\Phi`:
The continued fraction expansion method by using Lanczos method [1]_,
the shifted Krylov method [2]_, and
the Lehmann representation with the full diagonallization

.. math:: G_n^{O_l,O_r}(z) = \sum_{m} \frac{\langle \Phi_n | \hat{O}_l | \Phi_m \rangle \langle \Phi_m |\hat{O}_r| \Phi_n \rangle}{z + E_n - E_m}.

See the reference for the details of each algorithm.

.. [1] \E. Dagotto, Rev. Mod. Phys. **66**, 763-840 (1994).
.. [2] \S.Yamamoto, T. Sogabe, T. Hoshi, S.-L. Zhang, T. Fujiwara, Journal of the Physical Society of Japan **77**, 114713 (2008).
55 changes: 55 additions & 0 deletions doc/en/source/algorithm/Partition_en.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
.. highlight:: none

.. _Sec:sec_partion_function:

Partition function and quantities at finite-temperature
-------------------------------------------------------

To avoid overflow/underflow, we compute as follows:

Partition function

.. math::

Z(T) &= \sum_{i=1}^N \exp\left(-\frac{E_i}{T}\right)
\nonumber \\
&= \exp\left(-\frac{E_1}{T}\right) \left[
1 + \exp\left(-\frac{E_2-E_1}{T}\right)+ \exp\left(-\frac{E_3-E_1}{T}\right)
\cdots
+ \exp\left(-\frac{E_N-E_1}{T}\right)
\right]
\nonumber \\
&= \exp\left(-\frac{E_1}{T}\right) \left[
1 + \exp\left(-\frac{E_2-E_1}{T}\right)\left[
1 + \exp\left(-\frac{E_3-E_2}{T}\right)\left[
1 + \dots
\left[
1 + \exp\left(-\frac{E_N-E_{N-1}}{T}\right)
\right]
\right]
\right]
\right]

Quantity at finite tempearture

.. math::

O(T) &= \frac{1}{Z(T)}\sum_i O_i \exp\left(-\frac{E_i}{T}\right)
\nonumber \\
&= \exp\left(-\frac{E_1}{T}\right) \left[
O_1 + O_2 \exp\left(-\frac{E_2-E_1}{T}\right) + O_3\exp\left(-\frac{E_3-E_1}{T}\right)
\cdots
+ O_N\exp\left(-\frac{E_N-E_1}{T}\right)
\right]
\nonumber \\
&= \exp\left(-\frac{E_1}{T}\right) \left[
O_1 + \exp\left(-\frac{E_2-E_1}{T}\right)\left[
O_2 + \exp\left(-\frac{E_3-E_2}{T}\right)\left[
O_3 + \dots
\left[
O_{N-1} + O_N\exp\left(-\frac{E_N-E_{N-1}}{T}\right)
\right]
\right]
\right]
\right]

4 changes: 2 additions & 2 deletions doc/en/source/algorithm/TPQ_en.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Details of implementation
-------------------------

**Construction of the micro canonical TPQ (mTPQ) state**
^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Here, we explain how to construct the micro canonical TPQ (mTPQ) state [1]_,
which offers the simplest method for calculating finite-temperature properties.

Expand Down Expand Up @@ -59,7 +59,7 @@ we perform some independent calculations by changing :math:`|\Phi_{\rm rand}\ran
Since the temperature

**Construction of the canonical TPQ (cTPQ) state**
^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Here, we explain how to construct the canonical TPQ (cTPQ) state [2]_,
which is another way to construct the TPQ state.
In the cTPQ method, :math:`\exp[-\beta\hat{\mathcal H}/2]` is
Expand Down
1 change: 1 addition & 0 deletions doc/en/source/algorithm/al-index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ Algorithm
DynamicalGreen_en
Realtime_en
Bogoliubov_en
Partition_en

Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ CG method


TPQ (mTPQ/cTPQ) method
~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~

* ``Lanczos_max``

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,51 @@
PairExcitation file
-------------------

The operators to generate the pair excited state
:math:`c_{i\sigma_1}c_{j\sigma_2}^{\dagger}(c_{i\sigma_1}^{\dagger}c_{j\sigma_2})`
are defined. The type of pair excitation operators
(:math:`c_{i\sigma_1}c_{j\sigma_2}^{\dagger}` or
:math:`c_{i\sigma_1}^{\dagger}c_{j\sigma_2}`) must be same in the input
file. In the :math:`S_z` conserved system, :math:`\sigma_1` must be
equal to :math:`\sigma_2`. An example of the file format is as follows.
To compute the dynamical correlation function

.. math:: G_n^{O_l,O_r}(z) = \langle \Phi_n | \hat{O}_l (z + E_n - \hat{\cal H})^{-1} \hat{O}_r| \Phi_n \rangle,

we set a pair-excitation operator as

.. math::

\hat{O}_{l,r} = \sum_{i, j, \sigma_1, \sigma_2} A_{i \sigma_1 j \sigma_2}
c_{i \sigma_1}c_{j \sigma_2}^{\dagger} \quad \textrm{or} \quad
\sum_{i, j, \sigma_1, \sigma_2} A_{i \sigma_1 j \sigma_2}
c_{i\sigma_1}^{\dagger}c_{j\sigma_2}

We can compute efficiently by using single :math:`\hat{O}_r` and multiple :math:`\hat{O}_l`.

The type of pair excitation operators (:math:`c_{i\sigma_1}c_{j\sigma_2}^{\dagger}` or
:math:`c_{i\sigma_1}^{\dagger}c_{j\sigma_2}`) must be the same in the input file.

In the :math:`S_z` conserved system, :math:`\sigma_1` must be equal to :math:`\sigma_2`.

An example of the file format is as follows.

::

===============================
NPair 24
===============================
======== Pair Excitation ======
===============================
0 0 0 0 0 1.0 0.0
0 1 0 1 0 1.0 0.0
1 0 1 0 0 1.0 0.0
(continue...)
11 0 11 0 0 1.0 0.0
11 1 11 1 0 1.0 0.0
=============================================
NPair 9
=============================================
=============== Pair Excitation =============
=============================================
2
0 0 0 0 1 -0.500000000000000 0.0
0 1 0 1 1 0.500000000000000 0.0
2
0 0 0 0 1 -0.500000000000000 0.0
0 1 0 1 1 0.500000000000000 0.0
2
1 0 1 0 1 -0.500000000000000 0.0
1 1 1 1 1 0.500000000000000 0.0
2
2 0 2 0 1 -0.500000000000000 0.0
2 1 2 1 1 0.500000000000000 0.0
2
3 0 3 0 1 -0.500000000000000 0.0
3 1 3 1 1 0.500000000000000 0.0
:

.. _file_format_16:

Expand All @@ -39,7 +63,16 @@ File format
* Lines 3-5: Header

* Lines 6-:
[int02]  [int03]  [int04]  [int05]  [int06]  [double01]  [double02].

Repeat the following block [int01] times.
The first block corresponds to :math:`\hat{O}_{r}` and other blocks correspond to :math:`\hat{O}_{l}`.

::

[int02]
[int03] [int04] [int05] [int06] [int07] [double01] [double02]
:
(Repeat [int02] times)

.. _parameters_16:

Expand All @@ -57,17 +90,25 @@ Parameters

**Type :** Int (a blank parameter is not allowed)

**Description :** An integer giving the total number of pair
excitation operators.
**Description :** An integer giving the total number of pair-excitation operators
:math:`\hat{O}_r` and :math:`\hat{O}_l`.
For the above example, we have 9 operators (one :math:`\hat{O}_{r}` and 8 :math:`\hat{O}_{l}`),

* [int02], [int04]
* [int02]

**Type :** Int (a blank parameter is not allowed)

**Description :** An integer giving the total number of pair-excitation operators
included in each :math:`\hat{O}_r` and :math:`\hat{O}_l`.

* [int03], [int05]

**Type :** Int (a blank parameter is not allowed)

**Description :** An integer giving a site index
(:math:`0<=` [int02], [int04] :math:`<` ``Nsite``).

* [int03], [int05]
* [int04], [int06]

**Type :** Int (a blank parameter is not allowed)

Expand Down Expand Up @@ -121,4 +162,4 @@ Use rules

.. raw:: latex

\newpage
\newpage
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,37 @@
SingleExcitation file
---------------------

The operators to generate the single excited state
:math:`c_{i\sigma_1}(c_{i\sigma_1}^{\dagger})` are defined. An example
of the file format is as follows.
To compute the ynamical correlation function

.. math:: G_n^{O_l,O_r}(z) = \langle \Phi_n | \hat{O}_l (z + E_n - \hat{\cal H})^{-1} \hat{O}_r| \Phi_n \rangle,

we set a single-exciation operator

.. math::

\hat{O}_{l,r} = \sum_{i, \sigma_1} A_{i \sigma_1} c_{i \sigma_1} \quad
\textrm{or} \quad \sum_{i, \sigma_1} A_{i \sigma_1} c_{i\sigma_1}^{\dagger}.

We can compute efficiently by using single :math:`\hat{O}_r` and multiple :math:`\hat{O}_l`.

An example of the file format is as follows.

::

===============================
NSingle 24
NSingle 13
===============================
======== Single Excitation ======
===============================
0 0 0 1.0 0.0
0 1 0 1.0 0.0
1 0 0 1.0 0.0
(continue...)
11 0 0 1.0 0.0
11 1 0 1.0 0.0
1
0 0 0 1.0 0.0
1
0 0 0 1.0 0.0
1
1 0 0 1.0 0.0
(continue...)
1
11 0 0 1.0 0.0

.. _file_format_15:

Expand All @@ -34,7 +48,12 @@ File format

* Lines 3-5: Header

* Lines 6-: [int02]  [int03]  [int04]  [double01]  [double02].
* Lines 6-:
::

[int02]
[int03] [int04] [int05] [double01] [double02]
:

.. _parameters_15:

Expand All @@ -52,17 +71,25 @@ Parameters

**Type :** Int (a blank parameter is not allowed)

**Description :** An integer giving the total number of total number
of single excitation operators.
**Description :** An integer giving the total number of single excitation operators
:math:`\hat{O}_r` and :math:`\hat{O}_l`.
For the above example, we have 13 operators (one :math:`\hat{O}_{r}` and 12 :math:`\hat{O}_{l}`),

* [int02]

**Type :** Int (a blank parameter is not allowed)

**Description :** An integer giving the total number of single excitation operators
included in each :math:`\hat{O}_r` and :math:`\hat{O}_l`.

* [int03]

**Type :** Int (a blank parameter is not allowed)

**Description :** An integer giving a site index
(:math:`0<=` [int02] :math:`<` ``Nsite``).

* [int03]
* [int04]

**Type :** Int (a blank parameter is not allowed)

Expand All @@ -74,7 +101,7 @@ Parameters
| :math:`0, 1, \cdots, 2S+1` (corresponding to
-:math:`S-0.5, -S+0.5, \cdots S+0.5`).

* [int04]
* [int05]

**Type :** Int (a blank parameter is not allowed)

Expand Down Expand Up @@ -115,4 +142,4 @@ Use rules

.. raw:: latex

\newpage
\newpage
Loading
Loading