ZaletelOps

Fortran module ZaletelOps: August 2017 (dj, updated)

Constructs the MPO for time evolution with the Zaletel algorithm based on the MPO of the Hamiltonian.

Authors

      1. Wall

    1. Jaschke

Details

The following procedures are important for call from other modules.

Procedures

include.f90

mpi.f90

zaletel_2nd

zaletel_4th

ZaletelOps_f90.extract_op_from_zaletel()[source]

fortran-subroutine - April 2016 (dj) Extract from the big exponential the smaller operator.

Arguments

OpTYPE(tensorc), inout

On exit, this is the matrix in the MPO to be applied to the local Hilbert space. Needs to be allocated before calling this subroutine.

ZalTYPE(tensorc), in

Is the operator in the Zaletel notation on the complete operator exponential space.

b1INTEGER, in

Pick element corresponding to b1.

b2INTEGER, in

Pick element corresponding to b2.

locdINTEGER, in

Local dimension of the Hilbert space.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.build_hcb_idb()[source]

fortran-subroutine - April 2016 (dj) Build the matrices Hcb and Idb, where Hcb is the creation operator for hard-core bosons and Idb is the identity matrix.

Arguments

HcbTYPE(tensor), out

Creation operator \begin{pmatrix} 0 & 0 \ 1 & 0 \end{pmatrix}.

IdbTYPE(tensor), out

Creation operator \begin{pmatrix} 1 & 0 \ 0 & 1 \end{pmatrix}.

Details

(template defined in ZaletelOps_template.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_expm_mpo()[source]

fortran-subroutine - April 2016 (dj) Build the exponential describing W_{A,a,\bar{a}} = langle 0 bar{0} | c_{a} c_{bar{a}}` \exp(c^{\dagger} A \bar{c}^{\dagger} + c^{\dagger} B \sqrt{dt} \sqrt{dt} C_{\bar{a}} \bar{c}_{a}^{\dagger} + t D | 0 \bar{0} \rangle.

Arguments

MatTYPE(matrixc), out

Contains on exit the argument in the exponential described above.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

AATYPE(tensor), in

Matrix belonging to the block A within the Zaletel nomenclature.

BBTYPE(tensor), in

Matrix belonging to the block B within the Zaletel nomenclature.

CCTYPE(tensor), in

Matrix belonging to the block C within the Zaletel nomenclature.

DDTYPE(tensor), in

Matrix belonging to the block D within the Zaletel nomenclature.

HcbTYPE(tensor), in

Auxiliary matrix (representing c^{dagger}, always?).

IdbTYPE(tensor), in

Auxiliary matrix (representing Id, always?).

locdINTEGER, in

Dimension of the local Hilbert space.

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_expm_mpoc()[source]

fortran-subroutine - April 2016 (dj) Build the exponential describing W_{A,a,\bar{a}} = langle 0 bar{0} | c_{a} c_{bar{a}}` \exp(c^{\dagger} A \bar{c}^{\dagger} + c^{\dagger} B \sqrt{dt} \sqrt{dt} C_{\bar{a}} \bar{c}_{a}^{\dagger} + t D | 0 \bar{0} \rangle.

Arguments

MatTYPE(matrixc), out

Contains on exit the argument in the exponential described above.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

AATYPE(tensorc), in

Matrix belonging to the block A within the Zaletel nomenclature.

BBTYPE(tensorc), in

Matrix belonging to the block B within the Zaletel nomenclature.

CCTYPE(tensorc), in

Matrix belonging to the block C within the Zaletel nomenclature.

DDTYPE(tensorc), in

Matrix belonging to the block D within the Zaletel nomenclature.

HcbTYPE(tensor), in

Auxiliary matrix (representing c^{dagger}, always?).

IdbTYPE(tensor), in

Auxiliary matrix (representing Id, always?).

locdINTEGER, in

Dimension of the local Hilbert space.

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_expm_qmpo()[source]

fortran-subroutine - April 2016 (dj) Build the exponential describing W_{A,a,\bar{a}} = langle 0 bar{0} | c_{a} c_{bar{a}}` \exp(c^{\dagger} A \bar{c}^{\dagger} + c^{\dagger} B \sqrt{dt} \sqrt{dt} C_{\bar{a}} \bar{c}_{a}^{\dagger} + t D | 0 \bar{0} \rangle.

Arguments

MatTYPE(matrixc), out

Contains on exit the argument in the exponential described above.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

AATYPE(qtensor), in

Matrix belonging to the block A within the Zaletel nomenclature.

BBTYPE(qtensor), in

Matrix belonging to the block B within the Zaletel nomenclature.

CCTYPE(qtensor), in

Matrix belonging to the block C within the Zaletel nomenclature.

DDTYPE(qtensor), in

Matrix belonging to the block D within the Zaletel nomenclature.

HcbTYPE(tensor), in

Auxiliary matrix (representing c^{dagger}, always?).

IdbTYPE(tensor), in

Auxiliary matrix (representing Id, always?).

locdINTEGER, in

Dimension of the local Hilbert space.

DmapTYPE(vector_int), in

Saving the dimensions of a block according to the hash.

StrmapTYPE(vector_int), in

Saving the sum of the previous dimension of smaller hashes in order to find the starting index writing a non-blocked matrix.

QidTYPE(qtensor), in

Identity matrix in q-notation.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_expm_qmpoc()[source]

fortran-subroutine - April 2016 (dj) Build the exponential describing W_{A,a,\bar{a}} = langle 0 bar{0} | c_{a} c_{bar{a}}` \exp(c^{\dagger} A \bar{c}^{\dagger} + c^{\dagger} B \sqrt{dt} \sqrt{dt} C_{\bar{a}} \bar{c}_{a}^{\dagger} + t D | 0 \bar{0} \rangle.

Arguments

MatTYPE(matrixc), out

Contains on exit the argument in the exponential described above.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

AATYPE(qtensorc), in

Matrix belonging to the block A within the Zaletel nomenclature.

BBTYPE(qtensorc), in

Matrix belonging to the block B within the Zaletel nomenclature.

CCTYPE(qtensorc), in

Matrix belonging to the block C within the Zaletel nomenclature.

DDTYPE(qtensorc), in

Matrix belonging to the block D within the Zaletel nomenclature.

HcbTYPE(tensor), in

Auxiliary matrix (representing c^{dagger}, always?).

IdbTYPE(tensor), in

Auxiliary matrix (representing Id, always?).

locdINTEGER, in

Dimension of the local Hilbert space.

DmapTYPE(vector_int), in

Saving the dimensions of a block according to the hash.

StrmapTYPE(vector_int), in

Saving the sum of the previous dimension of smaller hashes in order to find the starting index writing a non-blocked matrix.

QidTYPE(qtensorc), in

Identity matrix in q-notation.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_1st_site_tensor()[source]

fortran-subroutine - April 2016 (dj) Build the entries of the Zaletel MPO for the first (left) site in the system.

Arguments

ZalTYPE(sr_matrix_tensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of first (left) site.

HamTYPE(sr_matrix_tensor), in

MPO-matrix (rank-4 tensor) of the Hamiltonian of the first site.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_1st_site_tensorc()[source]

fortran-subroutine - April 2016 (dj) Build the entries of the Zaletel MPO for the first (left) site in the system.

Arguments

ZalTYPE(sr_matrix_tensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of first (left) site.

HamTYPE(sr_matrix_tensorc), in

MPO-matrix (rank-4 tensor) of the Hamiltonian of the first site.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_1st_site_qtensor()[source]

fortran-subroutine - April 2016 (dj) Build the entries of the Zaletel MPO for the first (left) site in the system.

Arguments

ZalTYPE(sr_matrix_qtensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of first (left) site.

HamTYPE(sr_matrix_qtensor), in

MPO-matrix (rank-4 tensor) of the Hamiltonian of the first site.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_1st_site_qtensorc()[source]

fortran-subroutine - April 2016 (dj) Build the entries of the Zaletel MPO for the first (left) site in the system.

Arguments

ZalTYPE(sr_matrix_qtensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of first (left) site.

HamTYPE(sr_matrix_qtensorc), in

MPO-matrix (rank-4 tensor) of the Hamiltonian of the first site.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.extract_qop_from_op_qtensor()[source]

fortran-subroutine - April 2016 (dj) Extract blocks according to quantum numbers from operator on complete local Hilbert space.

Arguments

QPropTYPE(qtensorc), out

On exit, the q matrix of Prop is generated according to the information given.

PropTYPE(tensorc), in

Matrix on without q-structure to be parsed.

DmapTYPE(vector_int), in

Vector containing the local dimensions of each block in the q-matrix (gained from identity).

StrmapTYPE(vector_int), in

Cumulative sum of the dimension of each block (gained from identity).

locdINTEGER, in

Dimension of the matrix Prop.

QRefTYPE(qtensor), in

If QRef has no entries (and therefore norm zero), QProp will be empty as well.

QidTYPE(qtensor), in

The identity matrix as q-matrix.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.extract_qop_from_op_qtensorc()[source]

fortran-subroutine - April 2016 (dj) Extract blocks according to quantum numbers from operator on complete local Hilbert space.

Arguments

QPropTYPE(qtensorc), out

On exit, the q matrix of Prop is generated according to the information given.

PropTYPE(tensorc), in

Matrix on without q-structure to be parsed.

DmapTYPE(vector_int), in

Vector containing the local dimensions of each block in the q-matrix (gained from identity).

StrmapTYPE(vector_int), in

Cumulative sum of the dimension of each block (gained from identity).

locdINTEGER, in

Dimension of the matrix Prop.

QRefTYPE(qtensorc), in

If QRef has no entries (and therefore norm zero), QProp will be empty as well.

QidTYPE(qtensorc), in

The identity matrix as q-matrix.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_mapping_qtensor()[source]

fortran-subroutine - April 2016 (dj) Get local dimension and position of each block in a q-matrix.

Arguments

QidTYPE(qtensor), in

Identity matrix as q-matrix representation. It is diagonal and used to identity the dimension and position of each block. Order of blocks is taken as is.

DmapTYPE(vector_int), out

Contains the dimension of each block.

StrmapTYPE(vector_int), out

Contains the cumulated dimensions of the previous blocks. The ii-th block starts therefore at Strmap%elem(ii) + 1.

locdINTEGER, out

Adds up the dimension of each block gaining the dimension of the matrix without q-representation.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_mapping_qtensorc()[source]

fortran-subroutine - April 2016 (dj) Get local dimension and position of each block in a q-matrix.

Arguments

QidTYPE(qtensorc), in

Identity matrix as q-matrix representation. It is diagonal and used to identity the dimension and position of each block. Order of blocks is taken as is.

DmapTYPE(vector_int), out

Contains the dimension of each block.

StrmapTYPE(vector_int), out

Contains the cumulated dimensions of the previous blocks. The ii-th block starts therefore at Strmap%elem(ii) + 1.

locdINTEGER, out

Adds up the dimension of each block gaining the dimension of the matrix without q-representation.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_last_site_tensor()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for the last (right) site of the system for a qMPO.

Arguments

ZalTYPE(sr_matrix_tensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of last (right) site.

HamTYPE(sr_matrix_tensor), in

MPO-matrix (rank-4 tensor) of the Hamiltonian of the last site.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_last_site_tensorc()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for the last (right) site of the system for a qMPO.

Arguments

ZalTYPE(sr_matrix_tensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of last (right) site.

HamTYPE(sr_matrix_tensorc), in

MPO-matrix (rank-4 tensor) of the Hamiltonian of the last site.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_last_site_qtensor()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for the last (right) site of the system.

Arguments

ZalTYPE(sr_matrix_qtensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of last (right) site.

HamTYPE(sr_matrix_qtensor), in

MPO-matrix (rank-4 tensor) of the Hamiltonian of the last site.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_last_site_qtensorc()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for the last (right) site of the system.

Arguments

ZalTYPE(sr_matrix_qtensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of last (right) site.

HamTYPE(sr_matrix_qtensorc), in

MPO-matrix (rank-4 tensor) of the Hamiltonian of the last site.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_bulk_site_tensor()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for the bulk sites of the system.

Arguments

ZalTYPE(sr_matrix_tensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of site.

HamTYPE(sr_matrix_tensor), in

MPO-matrix (rank-4 tensor) of the Hamiltonian.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_bulk_site_tensorc()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for the bulk sites of the system.

Arguments

ZalTYPE(sr_matrix_tensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of site.

HamTYPE(sr_matrix_tensorc), in

MPO-matrix (rank-4 tensor) of the Hamiltonian.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_bulk_site_qtensor()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for the bulk sites of the system for symmetry conserving qMPOs.

Arguments

ZalTYPE(sr_matrix_qtensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of site.

HamTYPE(sr_matrix_qtensor), in

MPO-matrix (rank-4 tensor) of the Hamiltonian.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_bulk_site_qtensorc()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for the bulk sites of the system for symmetry conserving qMPOs.

Arguments

ZalTYPE(sr_matrix_qtensorc), out

On exit, MPO-matrix (rank-4 tensor) for time evolution of site.

HamTYPE(sr_matrix_qtensorc), in

MPO-matrix (rank-4 tensor) of the Hamiltonian.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_mpo()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for all sites.

Arguments

ZalTYPE(mpoc), out

On exit this is the Zaletel-MPO for the time evolution of a time step dt.

HamTYPE(mpo), in

The MPO of the Hamiltonian is needed to build the Zaletel-MPO.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_mpoc()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for all sites.

Arguments

ZalTYPE(mpoc), out

On exit this is the Zaletel-MPO for the time evolution of a time step dt.

HamTYPE(mpoc), in

The MPO of the Hamiltonian is needed to build the Zaletel-MPO.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_qmpo()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for all sites.

Arguments

ZalTYPE(qmpoc), out

On exit this is the Zaletel-MPO for the time evolution of a time step dt.

HamTYPE(qmpo), in

The MPO of the Hamiltonian is needed to build the Zaletel-MPO.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.get_zaletel_qmpoc()[source]

fortran-subroutine - April 2016 (dj) Build the Zaletel MPO for all sites.

Arguments

ZalTYPE(qmpoc), out

On exit this is the Zaletel-MPO for the time evolution of a time step dt.

HamTYPE(qmpoc), in

The MPO of the Hamiltonian is needed to build the Zaletel-MPO.

dtCOMPLEX, in

Time step to be included in the exponential already multiplied with (- eye) and scalar according to order.

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.zaletel_2nd_mpo()[source]

fortran-subroutine - April 2016 (dj) Generate the Zaletel MPOs for 2nd order time evolution.

Arguments

ZalsTYPE(mpoc)(2), out

The array of MPOs is filled corresponding to the second order.

HamTYPE(mpo), in

Derive Zaletel MPO from this Hamiltonian-MPO.

dtREAL, in

Time step of the time evolution scaled with (- eye).

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.zaletel_2nd_mpoc()[source]

fortran-subroutine - April 2016 (dj) Generate the Zaletel MPOs for 2nd order time evolution.

Arguments

ZalsTYPE(mpoc)(2), out

The array of MPOs is filled corresponding to the second order.

HamTYPE(mpoc), in

Derive Zaletel MPO from this Hamiltonian-MPO.

dtREAL, in

Time step of the time evolution scaled with (- eye).

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.zaletel_2nd_qmpo()[source]

fortran-subroutine - April 2016 (dj) Generate the Zaletel MPOs for 2nd order time evolution.

Arguments

ZalsTYPE(qmpoc)(2), out

The array of MPOs is filled corresponding to the second order.

HamTYPE(qmpo), in

Derive Zaletel MPO from this Hamiltonian-MPO.

dtREAL, in

Time step of the time evolution scaled with (- eye).

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.zaletel_2nd_qmpoc()[source]

fortran-subroutine - April 2016 (dj) Generate the Zaletel MPOs for 2nd order time evolution.

Arguments

ZalsTYPE(qmpoc)(2), out

The array of MPOs is filled corresponding to the second order.

HamTYPE(qmpoc), in

Derive Zaletel MPO from this Hamiltonian-MPO.

dtREAL, in

Time step of the time evolution scaled with (- eye).

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.zaletel_4th_mpo()[source]

fortran-subroutine - April 2016 (dj) Generate the Zaletel MPOs for 4th order time evolution.

Arguments

ZalsTYPE(mpoc)(4), out

The array of MPOs is filled corresponding to the second order.

HamTYPE(mpo), in

Derive Zaletel MPO from this Hamiltonian-MPO.

dtREAL, in

Time step of the time evolution scaled with (- eye)

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.zaletel_4th_mpoc()[source]

fortran-subroutine - April 2016 (dj) Generate the Zaletel MPOs for 4th order time evolution.

Arguments

ZalsTYPE(mpoc)(4), out

The array of MPOs is filled corresponding to the second order.

HamTYPE(mpoc), in

Derive Zaletel MPO from this Hamiltonian-MPO.

dtREAL, in

Time step of the time evolution scaled with (- eye)

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.zaletel_4th_qmpo()[source]

fortran-subroutine - April 2016 (dj) Generate the Zaletel MPOs for 4th order time evolution.

Arguments

ZalsTYPE(qmpoc)(4), out

The array of MPOs is filled corresponding to the second order.

HamTYPE(qmpo), in

Derive Zaletel MPO from this Hamiltonian-MPO.

dtREAL, in

Time step of the time evolution scaled with (- eye)

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.zaletel_4th_qmpoc()[source]

fortran-subroutine - April 2016 (dj) Generate the Zaletel MPOs for 4th order time evolution.

Arguments

ZalsTYPE(qmpoc)(4), out

The array of MPOs is filled corresponding to the second order.

HamTYPE(qmpoc), in

Derive Zaletel MPO from this Hamiltonian-MPO.

dtREAL, in

Time step of the time evolution scaled with (- eye)

mpo_is_hermitianLOGICAL, in

Necessary to distighuish betweew exponentials used for local term.

Details

(template defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.LRK2_mpo()[source]

fortran-subroutine - August 2017 (dj, updated) Propagate Psi with the LRK algorithm.

Arguments

PsiTYPE(mpsc), inout

On entry current state, on exit MPS after evolution step.

deltatREAL, in

Time step already scaled with (- eye)

HamTYPE(mpo), inout

Hamiltonian MPO for evolution of this step.

CpTYPE(ConvParam), in

Maximal bond dimension \chi allowed for Psi.

convergedLOGICAL, out

On exit flag if step of algorithm converged according to convergence parameters.

cerrREAL, inout

The cumulated error. The error done during this subroutine is added to the incoming value.

initmethodCHARACTER, in

Not referenced, init method by default ‘F’ for LRK2

renormLOGICAL, in

Flag if state vector should be renormalized to 1 (true). ‘N’ : do not normalize (default); ‘M’ : normalize for MPS 1 / sqrt(norm);

pbcLOGICAL, in

If PBC are used in any rule set. There is a check before, but the debugging mode should ensure for now that there are no calls with such a check.

Details

Currently uses complete reorthogonalization for stability. (defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.LRK2_mpoc()[source]

fortran-subroutine - August 2017 (dj, updated) Propagate Psi with the LRK algorithm.

Arguments

PsiTYPE(mpsc), inout

On entry current state, on exit MPS after evolution step.

deltatREAL, in

Time step already scaled with (- eye)

HamTYPE(mpoc), inout

Hamiltonian MPO for evolution of this step.

CpTYPE(ConvParam), in

Maximal bond dimension \chi allowed for Psi.

convergedLOGICAL, out

On exit flag if step of algorithm converged according to convergence parameters.

cerrREAL, inout

The cumulated error. The error done during this subroutine is added to the incoming value.

initmethodCHARACTER, in

Not referenced, init method by default ‘F’ for LRK2

renormLOGICAL, in

Flag if state vector should be renormalized to 1 (true). ‘N’ : do not normalize (default); ‘M’ : normalize for MPS 1 / sqrt(norm);

pbcLOGICAL, in

If PBC are used in any rule set. There is a check before, but the debugging mode should ensure for now that there are no calls with such a check.

Details

Currently uses complete reorthogonalization for stability. (defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.LRK2_qmpo()[source]

fortran-subroutine - August 2017 (dj, updated) Propagate Psi with the LRK algorithm.

Arguments

PsiTYPE(qmpsc), inout

On entry current state, on exit MPS after evolution step.

deltatREAL, in

Time step already scaled with (- eye)

HamTYPE(qmpo), inout

Hamiltonian MPO for evolution of this step.

CpTYPE(ConvParam), in

Maximal bond dimension \chi allowed for Psi.

convergedLOGICAL, out

On exit flag if step of algorithm converged according to convergence parameters.

cerrREAL, inout

The cumulated error. The error done during this subroutine is added to the incoming value.

initmethodCHARACTER, in

Not referenced, init method by default ‘F’ for LRK2

renormLOGICAL, in

Flag if state vector should be renormalized to 1 (true). ‘N’ : do not normalize (default); ‘M’ : normalize for MPS 1 / sqrt(norm);

pbcLOGICAL, in

If PBC are used in any rule set. There is a check before, but the debugging mode should ensure for now that there are no calls with such a check.

Details

Currently uses complete reorthogonalization for stability. (defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.LRK2_qmpoc()[source]

fortran-subroutine - August 2017 (dj, updated) Propagate Psi with the LRK algorithm.

Arguments

PsiTYPE(qmpsc), inout

On entry current state, on exit MPS after evolution step.

deltatREAL, in

Time step already scaled with (- eye)

HamTYPE(qmpoc), inout

Hamiltonian MPO for evolution of this step.

CpTYPE(ConvParam), in

Maximal bond dimension \chi allowed for Psi.

convergedLOGICAL, out

On exit flag if step of algorithm converged according to convergence parameters.

cerrREAL, inout

The cumulated error. The error done during this subroutine is added to the incoming value.

initmethodCHARACTER, in

Not referenced, init method by default ‘F’ for LRK2

renormLOGICAL, in

Flag if state vector should be renormalized to 1 (true). ‘N’ : do not normalize (default); ‘M’ : normalize for MPS 1 / sqrt(norm);

pbcLOGICAL, in

If PBC are used in any rule set. There is a check before, but the debugging mode should ensure for now that there are no calls with such a check.

Details

Currently uses complete reorthogonalization for stability. (defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.LRK4_mpo()[source]

fortran-subroutine - August 2017 (dj, updated) Propagate psi with the TEBD algorithm.

Arguments

cerrREAL, inout

The cumulated error. The error done during this subroutine is added to the incoming value.

renormLOGICAL, in

Flag if state vector should be renormalized to 1 (true). ‘N’ : do not normalize (default); ‘M’ : normalize for MPS 1 / sqrt(norm);

pbcLOGICAL, in

If PBC are used in any rule set. There is a check before, but the debugging mode should ensure for now that there are no calls with such a check.

Details

Currently uses complete reorthogonalization for stability. (defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.LRK4_mpoc()[source]

fortran-subroutine - August 2017 (dj, updated) Propagate psi with the TEBD algorithm.

Arguments

cerrREAL, inout

The cumulated error. The error done during this subroutine is added to the incoming value.

renormLOGICAL, in

Flag if state vector should be renormalized to 1 (true). ‘N’ : do not normalize (default); ‘M’ : normalize for MPS 1 / sqrt(norm);

pbcLOGICAL, in

If PBC are used in any rule set. There is a check before, but the debugging mode should ensure for now that there are no calls with such a check.

Details

Currently uses complete reorthogonalization for stability. (defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.LRK4_qmpo()[source]

fortran-subroutine - August 2017 (dj, updated) Propagate psi with the TEBD algorithm.

Arguments

cerrREAL, inout

The cumulated error. The error done during this subroutine is added to the incoming value.

renormLOGICAL, in

Flag if state vector should be renormalized to 1 (true). ‘N’ : do not normalize (default); ‘M’ : normalize for MPS 1 / sqrt(norm);

pbcLOGICAL, in

If PBC are used in any rule set. There is a check before, but the debugging mode should ensure for now that there are no calls with such a check.

Details

Currently uses complete reorthogonalization for stability. (defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code
ZaletelOps_f90.LRK4_qmpoc()[source]

fortran-subroutine - August 2017 (dj, updated) Propagate psi with the TEBD algorithm.

Arguments

cerrREAL, inout

The cumulated error. The error done during this subroutine is added to the incoming value.

renormLOGICAL, in

Flag if state vector should be renormalized to 1 (true). ‘N’ : do not normalize (default); ‘M’ : normalize for MPS 1 / sqrt(norm);

pbcLOGICAL, in

If PBC are used in any rule set. There is a check before, but the debugging mode should ensure for now that there are no calls with such a check.

Details

Currently uses complete reorthogonalization for stability. (defined in ZaletelOps_include.f90)

Source Code

show / hide f90 code