VariationalOps

Fortran module VariationalOps: July 2017 (dj, updated)

Containing the variational algorithms for tensor networks.

Authors

    1. Jaschke

      1. Wall

Details

The following subroutines / functions are defined for the symmetric tensors.

procedure

include.f90

mpi.f90

omp.f90

find_groundstate_two

X

grow_system

X

Fit_HPsi

X

FitMPS

X

orth

X

VariationalOps_f90.find_excited_two_mps_mpo()[source]

fortran-subroutine - ?? (mlw) Find the excited state Psi (represented as an MPS) of the Hamiltonian H (represented as an MPO) variationally. Psi should contain the initial guess on input.

Arguments

PsiTYPE(mps), inout

On entry the initial guess, on exit the excited state.

PsibsTYPE(mps), inout

Energetically lower lying states which are required to orthogonalize against those states.

neINTEGER, in

Excited state to be found.

HtsTYPE(sr_matrix_tensor)(*), inout

List of all nearest-neighbor two-site MPO matrices.

HamTYPE(mpo), inout

Hamiltonian for the system, represented as MPO.

LRTYPE(tensorlist)(*), inout

Left right overlaps with Hamiltonian / MPO.

LRABTYPE(tensorlist)(*), inout

Left right overlaps with energetically lower lying states.

CpTYPE(ConvParam), in

Contains the convergence parameters for the excited state search.

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.

Source Code

show / hide f90 code
VariationalOps_f90.find_excited_two_mpsc_mpoc()[source]

fortran-subroutine - ?? (mlw) Find the excited state Psi (represented as an MPS) of the Hamiltonian H (represented as an MPO) variationally. Psi should contain the initial guess on input.

Arguments

PsiTYPE(mpsc), inout

On entry the initial guess, on exit the excited state.

PsibsTYPE(mpsc), inout

Energetically lower lying states which are required to orthogonalize against those states.

neINTEGER, in

Excited state to be found.

HtsTYPE(sr_matrix_tensorc)(*), inout

List of all nearest-neighbor two-site MPO matrices.

HamTYPE(mpoc), inout

Hamiltonian for the system, represented as MPO.

LRTYPE(tensorlistc)(*), inout

Left right overlaps with Hamiltonian / MPO.

LRABTYPE(tensorlistc)(*), inout

Left right overlaps with energetically lower lying states.

CpTYPE(ConvParam), in

Contains the convergence parameters for the excited state search.

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.

Source Code

show / hide f90 code
VariationalOps_f90.find_excited_two_qmps_qmpo()[source]

fortran-subroutine - ?? (mlw) Find the excited state Psi (represented as an MPS) of the Hamiltonian H (represented as an MPO) variationally. Psi should contain the initial guess on input.

Arguments

PsiTYPE(qmps), inout

On entry the initial guess, on exit the excited state.

PsibsTYPE(qmps), inout

Energetically lower lying states which are required to orthogonalize against those states.

neINTEGER, in

Excited state to be found.

HtsTYPE(sr_matrix_qtensor)(*), inout

List of all nearest-neighbor two-site MPO matrices.

HamTYPE(qmpo), inout

Hamiltonian for the system, represented as MPO.

LRTYPE(qtensorlist)(*), inout

Left right overlaps with Hamiltonian / MPO.

LRABTYPE(qtensorlist)(*), inout

Left right overlaps with energetically lower lying states.

CpTYPE(ConvParam), in

Contains the convergence parameters for the excited state search.

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.

Source Code

show / hide f90 code
VariationalOps_f90.find_excited_two_qmpsc_qmpoc()[source]

fortran-subroutine - ?? (mlw) Find the excited state Psi (represented as an MPS) of the Hamiltonian H (represented as an MPO) variationally. Psi should contain the initial guess on input.

Arguments

PsiTYPE(qmpsc), inout

On entry the initial guess, on exit the excited state.

PsibsTYPE(qmpsc), inout

Energetically lower lying states which are required to orthogonalize against those states.

neINTEGER, in

Excited state to be found.

HtsTYPE(sr_matrix_qtensorc)(*), inout

List of all nearest-neighbor two-site MPO matrices.

HamTYPE(qmpoc), inout

Hamiltonian for the system, represented as MPO.

LRTYPE(qtensorclist)(*), inout

Left right overlaps with Hamiltonian / MPO.

LRABTYPE(qtensorclist)(*), inout

Left right overlaps with energetically lower lying states.

CpTYPE(ConvParam), in

Contains the convergence parameters for the excited state search.

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.

Source Code

show / hide f90 code
VariationalOps_f90.find_groundstate_two_mpo()[source]

fortran-subroutine - July 2017 (dj, updated) Find the ground state psi (represented as an MPS) of an Hamiltonian H.

Arguments

PsiTYPE(mps), inout

Find the ground state based on the initial guess Psi. On exit the optimized wave function.

HtsTYPE(sr_matrix_tensor)(*), inout

All nearest neighbor two-site MPO matrices.

HamTYPE(mpo), inout

The Hamiltonian represented as MPO.

LRTYPE(tensorlist), inout

The left-right overlap of the wave-function Psi with the Hamiltonian H.

max_chiINTEGER, in

Maximal bond dimension.

max_lanczos_iterINTEGER, in

Maximal number of Lanczos vectors generated.

lanczos_tolREAL, in

Tolerance for the Lanczos algorithm as soft cut-off before reaching max_lanczos_iter.

local_tolREAL, in

Defining the soft cut-off for the singular values.

conv_tolREAL, in

The tolerance criterion, either for the variance or the maximum relative difference for the first singular values.

conv_methodCHARACTER, in

‘V’ for variance and ‘S’ for relative difference between the first singular values.

energyREAL, out

Energy of Psi.

convergedLOGICAL, out

Flag for convergence of the ground state search.

conv_valREAL, out

The actual value of the convergence criterion achieved, either the variance or the relative difference for the first singular values.

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.

Source Code

show / hide f90 code
VariationalOps_f90.find_groundstate_two_mpoc()[source]

fortran-subroutine - July 2017 (dj, updated) Find the ground state psi (represented as an MPS) of an Hamiltonian H.

Arguments

PsiTYPE(mpsc), inout

Find the ground state based on the initial guess Psi. On exit the optimized wave function.

HtsTYPE(sr_matrix_tensorc)(*), inout

All nearest neighbor two-site MPO matrices.

HamTYPE(mpoc), inout

The Hamiltonian represented as MPO.

LRTYPE(tensorlistc), inout

The left-right overlap of the wave-function Psi with the Hamiltonian H.

max_chiINTEGER, in

Maximal bond dimension.

max_lanczos_iterINTEGER, in

Maximal number of Lanczos vectors generated.

lanczos_tolREAL, in

Tolerance for the Lanczos algorithm as soft cut-off before reaching max_lanczos_iter.

local_tolREAL, in

Defining the soft cut-off for the singular values.

conv_tolREAL, in

The tolerance criterion, either for the variance or the maximum relative difference for the first singular values.

conv_methodCHARACTER, in

‘V’ for variance and ‘S’ for relative difference between the first singular values.

energyREAL, out

Energy of Psi.

convergedLOGICAL, out

Flag for convergence of the ground state search.

conv_valREAL, out

The actual value of the convergence criterion achieved, either the variance or the relative difference for the first singular values.

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.

Source Code

show / hide f90 code
VariationalOps_f90.find_groundstate_two_qmpo()[source]

fortran-subroutine - July 2017 (dj, updated) Find the ground state psi (represented as an MPS) of an Hamiltonian H.

Arguments

PsiTYPE(qmps), inout

Find the ground state based on the initial guess Psi. On exit the optimized wave function.

HtsTYPE(sr_matrix_qtensor)(*), inout

All nearest neighbor two-site MPO matrices.

HamTYPE(qmpo), inout

The Hamiltonian represented as MPO.

LRTYPE(qtensorlist), inout

The left-right overlap of the wave-function Psi with the Hamiltonian H.

max_chiINTEGER, in

Maximal bond dimension.

max_lanczos_iterINTEGER, in

Maximal number of Lanczos vectors generated.

lanczos_tolREAL, in

Tolerance for the Lanczos algorithm as soft cut-off before reaching max_lanczos_iter.

local_tolREAL, in

Defining the soft cut-off for the singular values.

conv_tolREAL, in

The tolerance criterion, either for the variance or the maximum relative difference for the first singular values.

conv_methodCHARACTER, in

‘V’ for variance and ‘S’ for relative difference between the first singular values.

energyREAL, out

Energy of Psi.

convergedLOGICAL, out

Flag for convergence of the ground state search.

conv_valREAL, out

The actual value of the convergence criterion achieved, either the variance or the relative difference for the first singular values.

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.

Source Code

show / hide f90 code
VariationalOps_f90.find_groundstate_two_qmpoc()[source]

fortran-subroutine - July 2017 (dj, updated) Find the ground state psi (represented as an MPS) of an Hamiltonian H.

Arguments

PsiTYPE(qmpsc), inout

Find the ground state based on the initial guess Psi. On exit the optimized wave function.

HtsTYPE(sr_matrix_qtensorc)(*), inout

All nearest neighbor two-site MPO matrices.

HamTYPE(qmpoc), inout

The Hamiltonian represented as MPO.

LRTYPE(qtensorclist), inout

The left-right overlap of the wave-function Psi with the Hamiltonian H.

max_chiINTEGER, in

Maximal bond dimension.

max_lanczos_iterINTEGER, in

Maximal number of Lanczos vectors generated.

lanczos_tolREAL, in

Tolerance for the Lanczos algorithm as soft cut-off before reaching max_lanczos_iter.

local_tolREAL, in

Defining the soft cut-off for the singular values.

conv_tolREAL, in

The tolerance criterion, either for the variance or the maximum relative difference for the first singular values.

conv_methodCHARACTER, in

‘V’ for variance and ‘S’ for relative difference between the first singular values.

energyREAL, out

Energy of Psi.

convergedLOGICAL, out

Flag for convergence of the ground state search.

conv_valREAL, out

The actual value of the convergence criterion achieved, either the variance or the relative difference for the first singular values.

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.

Source Code

show / hide f90 code
VariationalOps_f90.grow_system_mpo()[source]

fortran-subroutine - July 2017 (dj, updated) Use the infinite size algorithm to grow the system up to a size L.

Arguments

PsiTYPE(mps), inout

On exit, the initial guess for the ground state built with the iMPS algorithm.

llINTEGER, in

Number of sites in the MPS.

HamTYPE(mpo), in

This is the MPO representing the Hamiltonian where the ground state should be found.

LRTYPE(tensorlist), inout

One exit, the left-right overlap of the state and the MPO.

nqsINTEGER, in

Number of abelian and discrete symmetries.

qsINTEGER(*), in

The quantum numbers of both symmetries. Only accessed for for simulations with quantum numbers.

IOObjTYPE(IOObject), in

Contains name of the file with the quantum numbers and the unit to open the file. Only accessed for simulations with quantum numbers.

CpTYPE(convparam), in

Contains the convergence parameters for the algorithms.

hasexcitedLOGICAL, in

Intended use to prevent deleting file with initial state in ground state search, where initial state is needed as well for the excited state.

Source Code

show / hide f90 code
VariationalOps_f90.grow_system_mpoc()[source]

fortran-subroutine - July 2017 (dj, updated) Use the infinite size algorithm to grow the system up to a size L.

Arguments

PsiTYPE(mpsc), inout

On exit, the initial guess for the ground state built with the iMPS algorithm.

llINTEGER, in

Number of sites in the MPS.

HamTYPE(mpoc), in

This is the MPO representing the Hamiltonian where the ground state should be found.

LRTYPE(tensorlistc), inout

One exit, the left-right overlap of the state and the MPO.

nqsINTEGER, in

Number of abelian and discrete symmetries.

qsINTEGER(*), in

The quantum numbers of both symmetries. Only accessed for for simulations with quantum numbers.

IOObjTYPE(IOObject), in

Contains name of the file with the quantum numbers and the unit to open the file. Only accessed for simulations with quantum numbers.

CpTYPE(convparam), in

Contains the convergence parameters for the algorithms.

hasexcitedLOGICAL, in

Intended use to prevent deleting file with initial state in ground state search, where initial state is needed as well for the excited state.

Source Code

show / hide f90 code
VariationalOps_f90.grow_system_qmpo()[source]

fortran-subroutine - July 2017 (dj, updated) Use the infinite size algorithm to grow the system up to a size L.

Arguments

PsiTYPE(qmps), inout

On exit, the initial guess for the ground state built with the iMPS algorithm.

llINTEGER, in

Number of sites in the MPS.

HamTYPE(qmpo), in

This is the MPO representing the Hamiltonian where the ground state should be found.

LRTYPE(qtensorlist), inout

One exit, the left-right overlap of the state and the MPO.

nqsINTEGER, in

Number of abelian and discrete symmetries.

qsINTEGER(*), in

The quantum numbers of both symmetries. Only accessed for for simulations with quantum numbers.

IOObjTYPE(IOObject), in

Contains name of the file with the quantum numbers and the unit to open the file. Only accessed for simulations with quantum numbers.

CpTYPE(convparam), in

Contains the convergence parameters for the algorithms.

hasexcitedLOGICAL, in

Intended use to prevent deleting file with initial state in ground state search, where initial state is needed as well for the excited state.

Source Code

show / hide f90 code
VariationalOps_f90.grow_system_qmpoc()[source]

fortran-subroutine - July 2017 (dj, updated) Use the infinite size algorithm to grow the system up to a size L.

Arguments

PsiTYPE(qmpsc), inout

On exit, the initial guess for the ground state built with the iMPS algorithm.

llINTEGER, in

Number of sites in the MPS.

HamTYPE(qmpoc), in

This is the MPO representing the Hamiltonian where the ground state should be found.

LRTYPE(qtensorclist), inout

One exit, the left-right overlap of the state and the MPO.

nqsINTEGER, in

Number of abelian and discrete symmetries.

qsINTEGER(*), in

The quantum numbers of both symmetries. Only accessed for for simulations with quantum numbers.

IOObjTYPE(IOObject), in

Contains name of the file with the quantum numbers and the unit to open the file. Only accessed for simulations with quantum numbers.

CpTYPE(convparam), in

Contains the convergence parameters for the algorithms.

hasexcitedLOGICAL, in

Intended use to prevent deleting file with initial state in ground state search, where initial state is needed as well for the excited state.

Source Code

show / hide f90 code
VariationalOps_f90.Fit_Hpsi_mps_mpo()[source]

fortran-subroutine - April 2016 (updated, dj) Fit p to | \psi \rangle \approx H \cdot | \phi \rangle using a two-site variational algorithm.

Arguments

PsiTYPE(mps), inout

The new fitted MPS representing H | r \rangle.

HamTYPE(mpo), inout

MPO to be applied, e.g. propagator.

PhiTYPE(mps), inout

Apply the MPO to this MPS and try to target this state H p in fit.

CpTYPE(ConvParam), in

Convergence parameter for the fit.

errREAL, out

Summing up the local errors done during the procedure.

convergedLOGICAL, out

Flag if fit converged according the convergence parameters.

initmethodCHARACTER, in

‘R’ for randomization of whole MPS, ‘F’ for adding fluctuations, else initial guess is a copy of p. (Currently methods ‘R’ and ‘F’ are equal).

convmethodCHARACTER, in

‘V’ check on convergence by checking on the variance measuring the MPO squared. ‘E’ uses the error for the estimate of convergence.

renormCHARACTER, in

Flag if the singular values should be renormalized when splitting two sites. ‘N’ : no normalization; ‘M’ normalize for MPS.

Details

(template defined in VariationalOps_transfer.f90)

Source Code

show / hide f90 code
VariationalOps_f90.Fit_Hpsi_mpsc_mpo()[source]

fortran-subroutine - April 2016 (updated, dj) Fit p to | \psi \rangle \approx H \cdot | \phi \rangle using a two-site variational algorithm.

Arguments

PsiTYPE(mpsc), inout

The new fitted MPS representing H | r \rangle.

HamTYPE(mpo), inout

MPO to be applied, e.g. propagator.

PhiTYPE(mpsc), inout

Apply the MPO to this MPS and try to target this state H p in fit.

CpTYPE(ConvParam), in

Convergence parameter for the fit.

errREAL, out

Summing up the local errors done during the procedure.

convergedLOGICAL, out

Flag if fit converged according the convergence parameters.

initmethodCHARACTER, in

‘R’ for randomization of whole MPS, ‘F’ for adding fluctuations, else initial guess is a copy of p. (Currently methods ‘R’ and ‘F’ are equal).

convmethodCHARACTER, in

‘V’ check on convergence by checking on the variance measuring the MPO squared. ‘E’ uses the error for the estimate of convergence.

renormCHARACTER, in

Flag if the singular values should be renormalized when splitting two sites. ‘N’ : no normalization; ‘M’ normalize for MPS.

Details

(template defined in VariationalOps_transfer.f90)

Source Code

show / hide f90 code
VariationalOps_f90.Fit_Hpsi_mpsc_mpoc()[source]

fortran-subroutine - April 2016 (updated, dj) Fit p to | \psi \rangle \approx H \cdot | \phi \rangle using a two-site variational algorithm.

Arguments

PsiTYPE(mpsc), inout

The new fitted MPS representing H | r \rangle.

HamTYPE(mpoc), inout

MPO to be applied, e.g. propagator.

PhiTYPE(mpsc), inout

Apply the MPO to this MPS and try to target this state H p in fit.

CpTYPE(ConvParam), in

Convergence parameter for the fit.

errREAL, out

Summing up the local errors done during the procedure.

convergedLOGICAL, out

Flag if fit converged according the convergence parameters.

initmethodCHARACTER, in

‘R’ for randomization of whole MPS, ‘F’ for adding fluctuations, else initial guess is a copy of p. (Currently methods ‘R’ and ‘F’ are equal).

convmethodCHARACTER, in

‘V’ check on convergence by checking on the variance measuring the MPO squared. ‘E’ uses the error for the estimate of convergence.

renormCHARACTER, in

Flag if the singular values should be renormalized when splitting two sites. ‘N’ : no normalization; ‘M’ normalize for MPS.

Details

(template defined in VariationalOps_transfer.f90)

Source Code

show / hide f90 code
VariationalOps_f90.Fit_Hpsi_qmps_qmpo()[source]

fortran-subroutine - April 2016 (updated, dj) Fit p to | \psi \rangle \approx H \cdot | \phi \rangle using a two-site variational algorithm.

Arguments

PsiTYPE(qmps), inout

The new fitted MPS representing H | r \rangle.

HamTYPE(qmpo), inout

MPO to be applied, e.g. propagator.

PhiTYPE(qmps), inout

Apply the MPO to this MPS and try to target this state H p in fit.

CpTYPE(ConvParam), in

Convergence parameter for the fit.

errREAL, out

Summing up the local errors done during the procedure.

convergedLOGICAL, out

Flag if fit converged according the convergence parameters.

initmethodCHARACTER, in

‘R’ for randomization of whole MPS, ‘F’ for adding fluctuations, else initial guess is a copy of p. (Currently methods ‘R’ and ‘F’ are equal).

convmethodCHARACTER, in

‘V’ check on convergence by checking on the variance measuring the MPO squared. ‘E’ uses the error for the estimate of convergence.

renormCHARACTER, in

Flag if the singular values should be renormalized when splitting two sites. ‘N’ : no normalization; ‘M’ normalize for MPS.

Details

(template defined in VariationalOps_transfer.f90)

Source Code

show / hide f90 code
VariationalOps_f90.Fit_Hpsi_qmpsc_qmpo()[source]

fortran-subroutine - April 2016 (updated, dj) Fit p to | \psi \rangle \approx H \cdot | \phi \rangle using a two-site variational algorithm.

Arguments

PsiTYPE(qmpsc), inout

The new fitted MPS representing H | r \rangle.

HamTYPE(qmpo), inout

MPO to be applied, e.g. propagator.

PhiTYPE(qmpsc), inout

Apply the MPO to this MPS and try to target this state H p in fit.

CpTYPE(ConvParam), in

Convergence parameter for the fit.

errREAL, out

Summing up the local errors done during the procedure.

convergedLOGICAL, out

Flag if fit converged according the convergence parameters.

initmethodCHARACTER, in

‘R’ for randomization of whole MPS, ‘F’ for adding fluctuations, else initial guess is a copy of p. (Currently methods ‘R’ and ‘F’ are equal).

convmethodCHARACTER, in

‘V’ check on convergence by checking on the variance measuring the MPO squared. ‘E’ uses the error for the estimate of convergence.

renormCHARACTER, in

Flag if the singular values should be renormalized when splitting two sites. ‘N’ : no normalization; ‘M’ normalize for MPS.

Details

(template defined in VariationalOps_transfer.f90)

Source Code

show / hide f90 code
VariationalOps_f90.Fit_Hpsi_qmpsc_qmpoc()[source]

fortran-subroutine - April 2016 (updated, dj) Fit p to | \psi \rangle \approx H \cdot | \phi \rangle using a two-site variational algorithm.

Arguments

PsiTYPE(qmpsc), inout

The new fitted MPS representing H | r \rangle.

HamTYPE(qmpoc), inout

MPO to be applied, e.g. propagator.

PhiTYPE(qmpsc), inout

Apply the MPO to this MPS and try to target this state H p in fit.

CpTYPE(ConvParam), in

Convergence parameter for the fit.

errREAL, out

Summing up the local errors done during the procedure.

convergedLOGICAL, out

Flag if fit converged according the convergence parameters.

initmethodCHARACTER, in

‘R’ for randomization of whole MPS, ‘F’ for adding fluctuations, else initial guess is a copy of p. (Currently methods ‘R’ and ‘F’ are equal).

convmethodCHARACTER, in

‘V’ check on convergence by checking on the variance measuring the MPO squared. ‘E’ uses the error for the estimate of convergence.

renormCHARACTER, in

Flag if the singular values should be renormalized when splitting two sites. ‘N’ : no normalization; ‘M’ normalize for MPS.

Details

(template defined in VariationalOps_transfer.f90)

Source Code

show / hide f90 code
VariationalOps_f90.FitMPS_mps_real()[source]

fortran-subroutine - July 2017 (dj, updated) Fit Psi to sum_k weight(k)*Phis(k)

Arguments

rTYPE(mps), inout

??

weightREAL_OR_COMPLEX(*), in

on input some scaling factor

Phis, inout

??

maxbondDINTEGER, in

maximal bond dimension for splitting up T-sites.

errREAL, inout

error done during subroutine (exact definition ??)

convergedLOGICAL, inout

Convergence flag (exact definition?)

Source Code

show / hide f90 code
VariationalOps_f90.FitMPS_mpsc_real()[source]

fortran-subroutine - July 2017 (dj, updated) Fit Psi to sum_k weight(k)*Phis(k)

Arguments

rTYPE(mpsc), inout

??

weightREAL_OR_COMPLEX(*), in

on input some scaling factor

Phis, inout

??

maxbondDINTEGER, in

maximal bond dimension for splitting up T-sites.

errREAL, inout

error done during subroutine (exact definition ??)

convergedLOGICAL, inout

Convergence flag (exact definition?)

Source Code

show / hide f90 code
VariationalOps_f90.FitMPS_mpsc_complex()[source]

fortran-subroutine - July 2017 (dj, updated) Fit Psi to sum_k weight(k)*Phis(k)

Arguments

rTYPE(mpsc), inout

??

weightREAL_OR_COMPLEX(*), in

on input some scaling factor

Phis, inout

??

maxbondDINTEGER, in

maximal bond dimension for splitting up T-sites.

errREAL, inout

error done during subroutine (exact definition ??)

convergedLOGICAL, inout

Convergence flag (exact definition?)

Source Code

show / hide f90 code
VariationalOps_f90.FitMPS_qmps_real()[source]

fortran-subroutine - July 2017 (dj, updated) Fit Psi to sum_k weight(k)*Phis(k)

Arguments

rTYPE(qmps), inout

??

weightREAL_OR_COMPLEX(*), in

on input some scaling factor

Phis, inout

??

maxbondDINTEGER, in

maximal bond dimension for splitting up T-sites.

errREAL, inout

error done during subroutine (exact definition ??)

convergedLOGICAL, inout

Convergence flag (exact definition?)

Source Code

show / hide f90 code
VariationalOps_f90.FitMPS_qmpsc_real()[source]

fortran-subroutine - July 2017 (dj, updated) Fit Psi to sum_k weight(k)*Phis(k)

Arguments

rTYPE(qmpsc), inout

??

weightREAL_OR_COMPLEX(*), in

on input some scaling factor

Phis, inout

??

maxbondDINTEGER, in

maximal bond dimension for splitting up T-sites.

errREAL, inout

error done during subroutine (exact definition ??)

convergedLOGICAL, inout

Convergence flag (exact definition?)

Source Code

show / hide f90 code
VariationalOps_f90.FitMPS_qmpsc_complex()[source]

fortran-subroutine - July 2017 (dj, updated) Fit Psi to sum_k weight(k)*Phis(k)

Arguments

rTYPE(qmpsc), inout

??

weightREAL_OR_COMPLEX(*), in

on input some scaling factor

Phis, inout

??

maxbondDINTEGER, in

maximal bond dimension for splitting up T-sites.

errREAL, inout

error done during subroutine (exact definition ??)

convergedLOGICAL, inout

Convergence flag (exact definition?)

Source Code

show / hide f90 code
VariationalOps_f90.orth_mps()[source]

fortran-subroutine - Orthogonalize Psi against other MPS Phis.

Arguments

PsiTYP(mps), inout

Orthogonalize this MPS against the MPSs Phis.

Phis, inout

The MPS Psi will be orthogonal to these MPSs.

minnINTEGER, in

First MPS in Phis to be orthogonal to Psi.

maxnINTEGER, in

First MPS in Phis to be orthogonal to Psi.

LRTYPE(tensorlist), inout

The partial overlaps at the orthogonality center.

errREAL, out

Sum of all errors from splitting.

convergedLOGICAL, out

Flag for convergence of the variational orthogonalization.

Source Code

show / hide f90 code
VariationalOps_f90.orth_mpsc()[source]

fortran-subroutine - Orthogonalize Psi against other MPS Phis.

Arguments

PsiTYP(mpsc), inout

Orthogonalize this MPS against the MPSs Phis.

Phis, inout

The MPS Psi will be orthogonal to these MPSs.

minnINTEGER, in

First MPS in Phis to be orthogonal to Psi.

maxnINTEGER, in

First MPS in Phis to be orthogonal to Psi.

LRTYPE(tensorlistc), inout

The partial overlaps at the orthogonality center.

errREAL, out

Sum of all errors from splitting.

convergedLOGICAL, out

Flag for convergence of the variational orthogonalization.

Source Code

show / hide f90 code
VariationalOps_f90.orth_qmps()[source]

fortran-subroutine - Orthogonalize Psi against other MPS Phis.

Arguments

PsiTYP(qmps), inout

Orthogonalize this MPS against the MPSs Phis.

Phis, inout

The MPS Psi will be orthogonal to these MPSs.

minnINTEGER, in

First MPS in Phis to be orthogonal to Psi.

maxnINTEGER, in

First MPS in Phis to be orthogonal to Psi.

LRTYPE(qtensorlist), inout

The partial overlaps at the orthogonality center.

errREAL, out

Sum of all errors from splitting.

convergedLOGICAL, out

Flag for convergence of the variational orthogonalization.

Source Code

show / hide f90 code
VariationalOps_f90.orth_qmpsc()[source]

fortran-subroutine - Orthogonalize Psi against other MPS Phis.

Arguments

PsiTYP(qmpsc), inout

Orthogonalize this MPS against the MPSs Phis.

Phis, inout

The MPS Psi will be orthogonal to these MPSs.

minnINTEGER, in

First MPS in Phis to be orthogonal to Psi.

maxnINTEGER, in

First MPS in Phis to be orthogonal to Psi.

LRTYPE(qtensorclist), inout

The partial overlaps at the orthogonality center.

errREAL, out

Sum of all errors from splitting.

convergedLOGICAL, out

Flag for convergence of the variational orthogonalization.

Source Code

show / hide f90 code
VariationalOps_f90.state_first_mps()[source]

fortran-subroutine - July 2017 (dj, updated) Generate an initial guess for the first two sites when growing an MPS.

Arguments

ThetaTYPE(tensor), inout

On exit the guess for the two sites.

locdimINTEGER, in

Local dimension of a site.

HwTYPE(sr_matrix_tensor), in

MPO matrix to extract local dimension.

nqsINTEGER, in

Number of abelian and discrete symmetries.

qsINTEGER(*), in

Quantum number of the total system for both symmetries.

IOObjTYPE(IOObject), in

Dummy for the interface.

Source Code

show / hide f90 code
VariationalOps_f90.state_first_mpsc()[source]

fortran-subroutine - July 2017 (dj, updated) Generate an initial guess for the first two sites when growing an MPS.

Arguments

ThetaTYPE(tensorc), inout

On exit the guess for the two sites.

locdimINTEGER, in

Local dimension of a site.

HwTYPE(sr_matrix_tensorc), in

MPO matrix to extract local dimension.

nqsINTEGER, in

Number of abelian and discrete symmetries.

qsINTEGER(*), in

Quantum number of the total system for both symmetries.

IOObjTYPE(IOObject), in

Dummy for the interface.

Source Code

show / hide f90 code
VariationalOps_f90.state_iter_mps()[source]

fortran-subroutine - July 2017 (dj, updated) Create an initial guess for two sites when growing the MPS during the iterations.

Arguments

ThetaTYPE(tensor), inout

On exit, the initial guess for the two-site tensor.

TlTYPE(tensor), in

The tensor to the left of the new two-site tensor Theta.

TrTYPE(tensor), in

The tensor to the right of the new two-site tensor Theta.

LamTYPE(tensor), in

Contains the singular values needed to follow an iMPS type of guess. These are the values of the last splitting.

LamprevTYPE(tensor), in

Contains the singular values needed to follow an iMPS type of guess. These are the values of the second last splitting.

locdimINTEGER, in

The local dimension of the Hilbert space of a single site.

unitINTEGER, in

Dummy variable for interface. Not accessed without symmetries.

nnINTEGER, in

nn-th iteration in growing the system.

Source Code

show / hide f90 code
VariationalOps_f90.state_iter_mpsc()[source]

fortran-subroutine - July 2017 (dj, updated) Create an initial guess for two sites when growing the MPS during the iterations.

Arguments

ThetaTYPE(tensorc), inout

On exit, the initial guess for the two-site tensor.

TlTYPE(tensorc), in

The tensor to the left of the new two-site tensor Theta.

TrTYPE(tensorc), in

The tensor to the right of the new two-site tensor Theta.

LamTYPE(tensor), in

Contains the singular values needed to follow an iMPS type of guess. These are the values of the last splitting.

LamprevTYPE(tensor), in

Contains the singular values needed to follow an iMPS type of guess. These are the values of the second last splitting.

locdimINTEGER, in

The local dimension of the Hilbert space of a single site.

unitINTEGER, in

Dummy variable for interface. Not accessed without symmetries.

nnINTEGER, in

nn-th iteration in growing the system.

Source Code

show / hide f90 code
VariationalOps_f90.state_single_mps()[source]

fortran-subroutine - July 2017 (dj, updated) Random guess for the last site of an odd system size.

Arguments

ThetaTYPE(tensor), inout

On exit, the initial guess for the single-site tensor.

TlTYPE(tensor), in

The tensor to the left of the new single-site tensor Theta.

TrTYPE(tensor), in

The tensor to the right of the new single-site tensor Theta.

locdimINTEGER, in

The local dimension of the Hilbert space of a single site.

unitINTEGER, in

Dummy variable for interface. Not accessed without symmetries.

Source Code

show / hide f90 code
VariationalOps_f90.state_single_mpsc()[source]

fortran-subroutine - July 2017 (dj, updated) Random guess for the last site of an odd system size.

Arguments

ThetaTYPE(tensorc), inout

On exit, the initial guess for the single-site tensor.

TlTYPE(tensorc), in

The tensor to the left of the new single-site tensor Theta.

TrTYPE(tensorc), in

The tensor to the right of the new single-site tensor Theta.

locdimINTEGER, in

The local dimension of the Hilbert space of a single site.

unitINTEGER, in

Dummy variable for interface. Not accessed without symmetries.

Source Code

show / hide f90 code
VariationalOps_f90.state_finalize_mps()[source]

fortran-subroutine - July 2017 (dj) Finalize the state, meaning closing the open unit if symmetries are used.

Arguments

unitINTEGER, in

Dummy variable for interface. Not accessed without symmetries.

hasexcitedLOGICAL, in

Intended use to prevent deleting file with initial state in ground state search, where initial state is needed as well for the excited state.

Source Code

show / hide f90 code
VariationalOps_f90.state_finalize_mpsc()[source]

fortran-subroutine - July 2017 (dj) Finalize the state, meaning closing the open unit if symmetries are used.

Arguments

unitINTEGER, in

Dummy variable for interface. Not accessed without symmetries.

hasexcitedLOGICAL, in

Intended use to prevent deleting file with initial state in ground state search, where initial state is needed as well for the excited state.

Source Code

show / hide f90 code
VariationalOps_f90.state_first_qmps()[source]

fortran-subroutine - July 2017 (dj, updated) Random guess for systems with symmetries for the first two sites.

Arguments

ThetaTYPE(qtensor), inout

On exit the guess for the two sites.

locdimINTEGER, in

Dummy variable for interface.

HwTYPE(sr_matrix_qtensor), in

Dummy variable for interface.

nqsINTEGER, in

Number of abelian and discrete symmetries.

qsINTEGER(*), in

Quantum number of the total system for both symmetries.

IOObjTYPE(IOObject), in

Contains name of the file with the quantum numbers and the unit to open the file.

Details

The subroutine can be used to create the first two-site tensor in the qIMPS. Therefore the total incoming charge is set to zero (left tensor will be first site at the end) and the total outgoing charge are the total charges. (Right tensor will be last site at the end of the intialization.)

Source Code

show / hide f90 code
VariationalOps_f90.state_first_qmpsc()[source]

fortran-subroutine - July 2017 (dj, updated) Random guess for systems with symmetries for the first two sites.

Arguments

ThetaTYPE(qtensorc), inout

On exit the guess for the two sites.

locdimINTEGER, in

Dummy variable for interface.

HwTYPE(sr_matrix_qtensorc), in

Dummy variable for interface.

nqsINTEGER, in

Number of abelian and discrete symmetries.

qsINTEGER(*), in

Quantum number of the total system for both symmetries.

IOObjTYPE(IOObject), in

Contains name of the file with the quantum numbers and the unit to open the file.

Details

The subroutine can be used to create the first two-site tensor in the qIMPS. Therefore the total incoming charge is set to zero (left tensor will be first site at the end) and the total outgoing charge are the total charges. (Right tensor will be last site at the end of the intialization.)

Source Code

show / hide f90 code
VariationalOps_f90.state_iter_qmps()[source]

fortran-subroutine - July 2017 (dj, updated) Generate a random state for two site when growing the MPS.

Arguments

ThetaTYPE(qtensor), inout

On exit, the initial guess for the two-site tensor.

TlTYPE(qtensor), in

The tensor to the left of the new two-site tensor Theta.

TrTYPE(qtensor), in

The tensor to the right of the new two-site tensor Theta.

LamTYPE(qtensor), in

Dummy variable for interface. Not accessed with symmetries.

LamprevTYPE(qtensor), in

Dummy variable for interface. Not accessed with symmetries.

locdimINTEGER, in

Dummy variable for interface. Not accessed with symmetries.

unitINTEGER, in

On this unit the file with the quantum numbers for the symmetries.

nnINTEGER, in

nn-th iteration in growing the system. Not referenced in symmetric version.

Source Code

show / hide f90 code
VariationalOps_f90.state_iter_qmpsc()[source]

fortran-subroutine - July 2017 (dj, updated) Generate a random state for two site when growing the MPS.

Arguments

ThetaTYPE(qtensorc), inout

On exit, the initial guess for the two-site tensor.

TlTYPE(qtensorc), in

The tensor to the left of the new two-site tensor Theta.

TrTYPE(qtensorc), in

The tensor to the right of the new two-site tensor Theta.

LamTYPE(qtensor), in

Dummy variable for interface. Not accessed with symmetries.

LamprevTYPE(qtensor), in

Dummy variable for interface. Not accessed with symmetries.

locdimINTEGER, in

Dummy variable for interface. Not accessed with symmetries.

unitINTEGER, in

On this unit the file with the quantum numbers for the symmetries.

nnINTEGER, in

nn-th iteration in growing the system. Not referenced in symmetric version.

Source Code

show / hide f90 code
VariationalOps_f90.state_single_qmps()[source]

fortran-subroutine - July 2018 (dj, updated) Generate the random guess for the last site for system with odd number of sites and symmetry.

Arguments

ThetaTYPE(qtensor), inout

On exit, the initial guess for the single-site tensor.

TlTYPE(qtensor), inout

The tensor to the left of the new single-site tensor Theta.

TrTYPE(qtensor), inout

The tensor to the right of the new single-site tensor Theta.

locdimINTEGER, in

Dummy variable for interface. Not accessed with symmetries.

unitINTEGER, in

On this unit the file with the quantum numbers for the symmetries.

Source Code

show / hide f90 code
VariationalOps_f90.state_single_qmpsc()[source]

fortran-subroutine - July 2018 (dj, updated) Generate the random guess for the last site for system with odd number of sites and symmetry.

Arguments

ThetaTYPE(qtensorc), inout

On exit, the initial guess for the single-site tensor.

TlTYPE(qtensorc), inout

The tensor to the left of the new single-site tensor Theta.

TrTYPE(qtensorc), inout

The tensor to the right of the new single-site tensor Theta.

locdimINTEGER, in

Dummy variable for interface. Not accessed with symmetries.

unitINTEGER, in

On this unit the file with the quantum numbers for the symmetries.

Source Code

show / hide f90 code
VariationalOps_f90.state_finalize_qmps()[source]

fortran-subroutine - June 2018 (dj, updated) Finalize the state, meaning closing the open unit if symmetries are used.

Arguments

unitINTEGER, in

This is unit was open to read to quantum numbers. Close and delete file.

hasexcitedLOGICAL, in

Intended use to prevent deleting file with initial state in ground state search, where initial state is needed as well for the excited state.

Source Code

show / hide f90 code
VariationalOps_f90.state_finalize_qmpsc()[source]

fortran-subroutine - June 2018 (dj, updated) Finalize the state, meaning closing the open unit if symmetries are used.

Arguments

unitINTEGER, in

This is unit was open to read to quantum numbers. Close and delete file.

hasexcitedLOGICAL, in

Intended use to prevent deleting file with initial state in ground state search, where initial state is needed as well for the excited state.

Source Code

show / hide f90 code