LPTNOps

Fortran module LPTNOps: September 2017 (dj, updated)

Containing basic operations for local purified tensor networks (LPTN)

Authors

    1. Jaschke

      1. Wall

Details

The error status can be decoded the following way

The following subroutines / functions are defined for the applicable data type

Procedure

include.f90

mpi.f90

omp.f90

build_kraus_first_order

X

canonize

X

canonize_svd

X

check

X

copy

X

corr_init_lptn

X

corr_init_l_lptn

X

corr_meas_lptn

X

corr_meas_l_lptn

X

create

X

destroy

X

fidelity

X

gaugesite_qr

X

gaugesite_rq

X

gaugesite_rsvd

X

gaugesite_lsvd

X

maxchi

X

maxkappa

X

meas_mpo (dummy)

X

norm

X

randomize

X

rho_kk

X

rhoij_init_lptn

X

rhoij_meas_lptn

X

scale

X

write

X

purity

X

read

X

print

X

orthonormalize

X

LPTNOps_f90.apply_kraus_tensorc()[source]

fortran-subroutine - September 2017 (dj) Contract a set of Kraus operators with the tensor for a site and compress.

Arguments

TensTYPE(tensorc), inout

On entry, tensor representing the site in the LPTN, on exit tensor of the site after application of the Kraus operators.

KrausTYPE(tensorc), inout

Kraus operators represented as rank-3 tensor.

max_kappaINTEGER, in

The hard-cut off for the kappa bond dimension.

local_tolREAL, in

Local tolerance for cutting singular values.

renormCHARACTER, in

Control on renormalization of the singular values.

cerrREAL, inout

Cumulative error. The error from the splitting inside this subroutine is added.

Source Code

show / hide f90 code
LPTNOps_f90.apply_kraus_qtensorc()[source]

fortran-subroutine - September 2017 (dj) Contract a set of Kraus operators with the tensor for a site and compress.

Arguments

TensTYPE(qtensorc), inout

On entry, tensor representing the site in the LPTN, on exit tensor of the site after application of the Kraus operators.

KrausTYPE(qtensorc), inout

Kraus operators represented as rank-3 tensor.

max_kappaINTEGER, in

The hard-cut off for the kappa bond dimension.

local_tolREAL, in

Local tolerance for cutting singular values.

renormCHARACTER, in

Control on renormalization of the singular values.

cerrREAL, inout

Cumulative error. The error from the splitting inside this subroutine is added.

Source Code

show / hide f90 code
LPTNOps_f90.canonize_lptn()[source]

fortran-subroutine - June 2017 (dj, updated) Canonize the LPTN with gauged matrices.

Arguments

RhoTYPE(lptn), inout

Bring this LPTN into a canonical form using QR decompositions.

k0INTEGER, in

This is the new orthogonality center for the LPTN.

klINTEGER, OPTIONAL, in

This optional argument can provide the information where to start with gauging the LPTN from the left side of the LPTN. If not given, the maximum of the 1 and the present orthogonality center is choosen.

krINTEGER, OPTIONAL, in

This optional argument can provide the information where to start with gauging the LPTN from the right side of the LPTN. If not given, the minimum of the system size and the present orthogonality center is choosen.

Details

Put the LPTN into the canonical form where all matrices to the left of k_0 (optionally down to k_l) are gauged according to the left-handed condition \sum_i A_i^T A_i=I and all matrices to the right of k_0 (optionally up to k_r) are gauged according to the right-handed condition \sum_i A_i A_i^T=I for OBC. This routine uses the QR decomposition - the fastest method - but it is not rank revealing and so inappropriate for compression. Additionally, the Schmidt coefficients are not returned and so entropies cannot be computed.

Source Code

show / hide f90 code
LPTNOps_f90.canonize_svd_lptn()[source]

fortran-subroutine - June 2017 (dj, updated) Put the LPTN into a canonical form using SVD.

Arguments

RhoTYPE(lptn), inout

LPTN to be canonized with SVDs. Updated on exit.

k0INTEGER, in

The new orthogonality center on exit is at the site k0. All matrices to the left and right are gauged accordingly.

klINTEGER, OPTIONAL, in

start SVD from the left on this site. If not present SVD start at site 1 or the ortogonality center.

krINTEGER, OPTIONAL, in

start SVD from the right on this site. If not present, SVD starts on the last site or the orthogonality center.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Details

Put the LPTN into the canonical form where all matrices to the left of k_0 (optionally down to k_l) are gauged according to the left-handed condition \sum_i A_i^T A_i=I and all matrices to the right of k_0 (optionally up to k_r) are gauged according to the right-handed condition \sum_i A_i A_i^T=I for OBC. This routine uses the SVD decomposition, which is rank revealing and so appropriate for compression. Additionally, the Schmidt coefficients are returned and so entropies can be computed.

Source Code

show / hide f90 code
LPTNOps_f90.canonize_lptnc()[source]

fortran-subroutine - June 2017 (dj, updated) Canonize the LPTN with gauged matrices.

Arguments

RhoTYPE(lptnc), inout

Bring this LPTN into a canonical form using QR decompositions.

k0INTEGER, in

This is the new orthogonality center for the LPTN.

klINTEGER, OPTIONAL, in

This optional argument can provide the information where to start with gauging the LPTN from the left side of the LPTN. If not given, the maximum of the 1 and the present orthogonality center is choosen.

krINTEGER, OPTIONAL, in

This optional argument can provide the information where to start with gauging the LPTN from the right side of the LPTN. If not given, the minimum of the system size and the present orthogonality center is choosen.

Details

Put the LPTN into the canonical form where all matrices to the left of k_0 (optionally down to k_l) are gauged according to the left-handed condition \sum_i A_i^T A_i=I and all matrices to the right of k_0 (optionally up to k_r) are gauged according to the right-handed condition \sum_i A_i A_i^T=I for OBC. This routine uses the QR decomposition - the fastest method - but it is not rank revealing and so inappropriate for compression. Additionally, the Schmidt coefficients are not returned and so entropies cannot be computed.

Source Code

show / hide f90 code
LPTNOps_f90.canonize_svd_lptnc()[source]

fortran-subroutine - June 2017 (dj, updated) Put the LPTN into a canonical form using SVD.

Arguments

RhoTYPE(lptnc), inout

LPTN to be canonized with SVDs. Updated on exit.

k0INTEGER, in

The new orthogonality center on exit is at the site k0. All matrices to the left and right are gauged accordingly.

klINTEGER, OPTIONAL, in

start SVD from the left on this site. If not present SVD start at site 1 or the ortogonality center.

krINTEGER, OPTIONAL, in

start SVD from the right on this site. If not present, SVD starts on the last site or the orthogonality center.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Details

Put the LPTN into the canonical form where all matrices to the left of k_0 (optionally down to k_l) are gauged according to the left-handed condition \sum_i A_i^T A_i=I and all matrices to the right of k_0 (optionally up to k_r) are gauged according to the right-handed condition \sum_i A_i A_i^T=I for OBC. This routine uses the SVD decomposition, which is rank revealing and so appropriate for compression. Additionally, the Schmidt coefficients are returned and so entropies can be computed.

Source Code

show / hide f90 code
LPTNOps_f90.canonize_qlptn()[source]

fortran-subroutine - June 2017 (dj, updated) Canonize the LPTN with gauged matrices.

Arguments

RhoTYPE(qlptn), inout

Bring this LPTN into a canonical form using QR decompositions.

k0INTEGER, in

This is the new orthogonality center for the LPTN.

klINTEGER, OPTIONAL, in

This optional argument can provide the information where to start with gauging the LPTN from the left side of the LPTN. If not given, the maximum of the 1 and the present orthogonality center is choosen.

krINTEGER, OPTIONAL, in

This optional argument can provide the information where to start with gauging the LPTN from the right side of the LPTN. If not given, the minimum of the system size and the present orthogonality center is choosen.

Details

Put the LPTN into the canonical form where all matrices to the left of k_0 (optionally down to k_l) are gauged according to the left-handed condition \sum_i A_i^T A_i=I and all matrices to the right of k_0 (optionally up to k_r) are gauged according to the right-handed condition \sum_i A_i A_i^T=I for OBC. This routine uses the QR decomposition - the fastest method - but it is not rank revealing and so inappropriate for compression. Additionally, the Schmidt coefficients are not returned and so entropies cannot be computed.

Source Code

show / hide f90 code
LPTNOps_f90.canonize_svd_qlptn()[source]

fortran-subroutine - June 2017 (dj, updated) Put the LPTN into a canonical form using SVD.

Arguments

RhoTYPE(qlptn), inout

LPTN to be canonized with SVDs. Updated on exit.

k0INTEGER, in

The new orthogonality center on exit is at the site k0. All matrices to the left and right are gauged accordingly.

klINTEGER, OPTIONAL, in

start SVD from the left on this site. If not present SVD start at site 1 or the ortogonality center.

krINTEGER, OPTIONAL, in

start SVD from the right on this site. If not present, SVD starts on the last site or the orthogonality center.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Details

Put the LPTN into the canonical form where all matrices to the left of k_0 (optionally down to k_l) are gauged according to the left-handed condition \sum_i A_i^T A_i=I and all matrices to the right of k_0 (optionally up to k_r) are gauged according to the right-handed condition \sum_i A_i A_i^T=I for OBC. This routine uses the SVD decomposition, which is rank revealing and so appropriate for compression. Additionally, the Schmidt coefficients are returned and so entropies can be computed.

Source Code

show / hide f90 code
LPTNOps_f90.canonize_qlptnc()[source]

fortran-subroutine - June 2017 (dj, updated) Canonize the LPTN with gauged matrices.

Arguments

RhoTYPE(qlptnc), inout

Bring this LPTN into a canonical form using QR decompositions.

k0INTEGER, in

This is the new orthogonality center for the LPTN.

klINTEGER, OPTIONAL, in

This optional argument can provide the information where to start with gauging the LPTN from the left side of the LPTN. If not given, the maximum of the 1 and the present orthogonality center is choosen.

krINTEGER, OPTIONAL, in

This optional argument can provide the information where to start with gauging the LPTN from the right side of the LPTN. If not given, the minimum of the system size and the present orthogonality center is choosen.

Details

Put the LPTN into the canonical form where all matrices to the left of k_0 (optionally down to k_l) are gauged according to the left-handed condition \sum_i A_i^T A_i=I and all matrices to the right of k_0 (optionally up to k_r) are gauged according to the right-handed condition \sum_i A_i A_i^T=I for OBC. This routine uses the QR decomposition - the fastest method - but it is not rank revealing and so inappropriate for compression. Additionally, the Schmidt coefficients are not returned and so entropies cannot be computed.

Source Code

show / hide f90 code
LPTNOps_f90.canonize_svd_qlptnc()[source]

fortran-subroutine - June 2017 (dj, updated) Put the LPTN into a canonical form using SVD.

Arguments

RhoTYPE(qlptnc), inout

LPTN to be canonized with SVDs. Updated on exit.

k0INTEGER, in

The new orthogonality center on exit is at the site k0. All matrices to the left and right are gauged accordingly.

klINTEGER, OPTIONAL, in

start SVD from the left on this site. If not present SVD start at site 1 or the ortogonality center.

krINTEGER, OPTIONAL, in

start SVD from the right on this site. If not present, SVD starts on the last site or the orthogonality center.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Details

Put the LPTN into the canonical form where all matrices to the left of k_0 (optionally down to k_l) are gauged according to the left-handed condition \sum_i A_i^T A_i=I and all matrices to the right of k_0 (optionally up to k_r) are gauged according to the right-handed condition \sum_i A_i A_i^T=I for OBC. This routine uses the SVD decomposition, which is rank revealing and so appropriate for compression. Additionally, the Schmidt coefficients are returned and so entropies can be computed.

Source Code

show / hide f90 code
LPTNOps_f90.check_lptn()[source]

fortran-subroutine - August 2017 (dj) Run basic checks on LPTN, such as left-right unitary and normed.

Arguments

RhoTYPE(lptn), in

Run checks on this LPTN.

Source Code

show / hide f90 code
LPTNOps_f90.check_lptnc()[source]

fortran-subroutine - August 2017 (dj) Run basic checks on LPTN, such as left-right unitary and normed.

Arguments

RhoTYPE(lptnc), in

Run checks on this LPTN.

Source Code

show / hide f90 code
LPTNOps_f90.check_qlptn()[source]

fortran-subroutine - August 2017 (dj) Run basic checks on LPTN, such as left-right unitary and normed.

Arguments

RhoTYPE(qlptn), in

Run checks on this LPTN.

Source Code

show / hide f90 code
LPTNOps_f90.check_qlptnc()[source]

fortran-subroutine - August 2017 (dj) Run basic checks on LPTN, such as left-right unitary and normed.

Arguments

RhoTYPE(qlptnc), in

Run checks on this LPTN.

Source Code

show / hide f90 code
LPTNOps_f90.copy_lptn_lptn()[source]

fortran-subroutine - September 2017 (dj, updated) Make a copy of a LPTN

Arguments

Rho_newTYPE(LPTN_TYPE), out

Store a copy of Rho_old here.

Rho_inTYPE(LPTN_TYPE), in

Copy this LPTN

Source Code

show / hide f90 code
LPTNOps_f90.copy_lptnc_lptnc()[source]

fortran-subroutine - September 2017 (dj, updated) Make a copy of a LPTN

Arguments

Rho_newTYPE(LPTN_TYPE), out

Store a copy of Rho_old here.

Rho_inTYPE(LPTN_TYPE), in

Copy this LPTN

Source Code

show / hide f90 code
LPTNOps_f90.copy_qlptn_qlptn()[source]

fortran-subroutine - September 2017 (dj, updated) Make a copy of a LPTN

Arguments

Rho_newTYPE(LPTN_TYPE), out

Store a copy of Rho_old here.

Rho_inTYPE(LPTN_TYPE), in

Copy this LPTN

Source Code

show / hide f90 code
LPTNOps_f90.copy_qlptnc_qlptnc()[source]

fortran-subroutine - September 2017 (dj, updated) Make a copy of a LPTN

Arguments

Rho_newTYPE(LPTN_TYPE), out

Store a copy of Rho_old here.

Rho_inTYPE(LPTN_TYPE), in

Copy this LPTN

Source Code

show / hide f90 code
LPTNOps_f90.copy_lptnc_lptn()[source]

fortran-subroutine - September 2017 (dj, updated) Make a copy of a LPTN

Arguments

Rho_newTYPE(LPTN_TYPE), out

Store a copy of Rho_old here.

Rho_inTYPE(LPTN_TYPE), in

Copy this LPTN

Source Code

show / hide f90 code
LPTNOps_f90.copy_qlptnc_qlptn()[source]

fortran-subroutine - September 2017 (dj, updated) Make a copy of a LPTN

Arguments

Rho_newTYPE(LPTN_TYPE), out

Store a copy of Rho_old here.

Rho_inTYPE(LPTN_TYPE), in

Copy this LPTN

Source Code

show / hide f90 code
LPTNOps_f90.copy_lptn_mps()[source]

fortran-subroutine - September 2017 (dj) Copy an MPS wave function Psi to a LPTN density matrix Rho.

Arguments

RhoTYPE(lptn), inout

Copy MPS into this LPTN.

PsiTYPE(mps), in

MPS to be converted to an LPTN

scalarREAL, OPTIONAL, in

Scale Rho by a factor.

Source Code

show / hide f90 code
LPTNOps_f90.copy_lptnc_mps()[source]

fortran-subroutine - September 2017 (dj) Copy an MPS wave function Psi to a LPTN density matrix Rho.

Arguments

RhoTYPE(lptnc), inout

Copy MPS into this LPTN.

PsiTYPE(mps), in

MPS to be converted to an LPTN

scalarREAL, OPTIONAL, in

Scale Rho by a factor.

Source Code

show / hide f90 code
LPTNOps_f90.copy_lptnc_mpsc()[source]

fortran-subroutine - September 2017 (dj) Copy an MPS wave function Psi to a LPTN density matrix Rho.

Arguments

RhoTYPE(lptnc), inout

Copy MPS into this LPTN.

PsiTYPE(mpsc), in

MPS to be converted to an LPTN

scalarREAL, OPTIONAL, in

Scale Rho by a factor.

Source Code

show / hide f90 code
LPTNOps_f90.copy_qlptn_qmps()[source]

fortran-subroutine - September 2017 (dj) Copy an MPS wave function Psi to a LPTN density matrix Rho.

Arguments

RhoTYPE(qlptn), inout

Copy MPS into this LPTN.

PsiTYPE(qmps), in

MPS to be converted to an LPTN

scalarREAL, OPTIONAL, in

Scale Rho by a factor.

Source Code

show / hide f90 code
LPTNOps_f90.copy_qlptnc_qmps()[source]

fortran-subroutine - September 2017 (dj) Copy an MPS wave function Psi to a LPTN density matrix Rho.

Arguments

RhoTYPE(qlptnc), inout

Copy MPS into this LPTN.

PsiTYPE(qmps), in

MPS to be converted to an LPTN

scalarREAL, OPTIONAL, in

Scale Rho by a factor.

Source Code

show / hide f90 code
LPTNOps_f90.copy_qlptnc_qmpsc()[source]

fortran-subroutine - September 2017 (dj) Copy an MPS wave function Psi to a LPTN density matrix Rho.

Arguments

RhoTYPE(qlptnc), inout

Copy MPS into this LPTN.

PsiTYPE(qmpsc), in

MPS to be converted to an LPTN

scalarREAL, OPTIONAL, in

Scale Rho by a factor.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_lptn_tensor_tensor()[source]

fortran-subroutine - September 2017 (dj) Initialize the left overlap for a right-moving correlation measure.

Arguments

TenskkTYPE(tensor), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(tensor), out

On exit, left overlap for correlation measurement.

OpTYPE(tensor), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_lptn_tensorc_tensor()[source]

fortran-subroutine - September 2017 (dj) Initialize the left overlap for a right-moving correlation measure.

Arguments

TenskkTYPE(tensorc), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(tensorc), out

On exit, left overlap for correlation measurement.

OpTYPE(tensor), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_lptn_tensorc_tensorc()[source]

fortran-subroutine - September 2017 (dj) Initialize the left overlap for a right-moving correlation measure.

Arguments

TenskkTYPE(tensorc), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(tensorc), out

On exit, left overlap for correlation measurement.

OpTYPE(tensorc), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_lptn_qtensor_qtensor()[source]

fortran-subroutine - September 2017 (dj) Initialize the left overlap for a right-moving correlation measure.

Arguments

TenskkTYPE(qtensor), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(qtensor), out

On exit, left overlap for correlation measurement.

OpTYPE(qtensor), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_lptn_qtensorc_qtensor()[source]

fortran-subroutine - September 2017 (dj) Initialize the left overlap for a right-moving correlation measure.

Arguments

TenskkTYPE(qtensorc), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(qtensorc), out

On exit, left overlap for correlation measurement.

OpTYPE(qtensor), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_lptn_qtensorc_qtensorc()[source]

fortran-subroutine - September 2017 (dj) Initialize the left overlap for a right-moving correlation measure.

Arguments

TenskkTYPE(qtensorc), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(qtensorc), out

On exit, left overlap for correlation measurement.

OpTYPE(qtensorc), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_l_lptn_tensor_tensor()[source]

fortran-subroutine - September 2017 (dj) Calculate the correlation with a left-moving contraction. This is the initialization.

Arguments

TenskkTYPE(tensor), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(tensor), out

On exit, left overlap for correlation measurement.

OpTYPE(tensor), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_l_lptn_tensorc_tensor()[source]

fortran-subroutine - September 2017 (dj) Calculate the correlation with a left-moving contraction. This is the initialization.

Arguments

TenskkTYPE(tensorc), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(tensorc), out

On exit, left overlap for correlation measurement.

OpTYPE(tensor), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_l_lptn_tensorc_tensorc()[source]

fortran-subroutine - September 2017 (dj) Calculate the correlation with a left-moving contraction. This is the initialization.

Arguments

TenskkTYPE(tensorc), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(tensorc), out

On exit, left overlap for correlation measurement.

OpTYPE(tensorc), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_l_lptn_qtensor_qtensor()[source]

fortran-subroutine - September 2017 (dj) Calculate the correlation with a left-moving contraction. This is the initialization.

Arguments

TenskkTYPE(qtensor), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(qtensor), out

On exit, left overlap for correlation measurement.

OpTYPE(qtensor), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_l_lptn_qtensorc_qtensor()[source]

fortran-subroutine - September 2017 (dj) Calculate the correlation with a left-moving contraction. This is the initialization.

Arguments

TenskkTYPE(qtensorc), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(qtensorc), out

On exit, left overlap for correlation measurement.

OpTYPE(qtensor), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_init_l_lptn_qtensorc_qtensorc()[source]

fortran-subroutine - September 2017 (dj) Calculate the correlation with a left-moving contraction. This is the initialization.

Arguments

TenskkTYPE(qtensorc), inout

Tensor representing the first site of the correlation measurement.

ThetaTYPE(qtensorc), out

On exit, left overlap for correlation measurement.

OpTYPE(qtensorc), inout

Operator for the correlation measurement on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_lptn_tensor_tensor()[source]

fortran-subroutine - September 2017 (dj) Measure correlation and propagate. Right-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(tensor), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(tensor), inout

The left overlap starting on the first site of the correlation measurement.

OpTYPE(tensor), inout

Operator for the correlation measurement.

PhaseOpTYPE(tensor), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_lptn_tensorc_tensor()[source]

fortran-subroutine - September 2017 (dj) Measure correlation and propagate. Right-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(tensorc), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(tensorc), inout

The left overlap starting on the first site of the correlation measurement.

OpTYPE(tensor), inout

Operator for the correlation measurement.

PhaseOpTYPE(tensor), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_lptn_tensorc_tensorc()[source]

fortran-subroutine - September 2017 (dj) Measure correlation and propagate. Right-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(tensorc), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(tensorc), inout

The left overlap starting on the first site of the correlation measurement.

OpTYPE(tensorc), inout

Operator for the correlation measurement.

PhaseOpTYPE(tensorc), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_lptn_qtensor_qtensor()[source]

fortran-subroutine - September 2017 (dj) Measure correlation and propagate. Right-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(qtensor), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(qtensor), inout

The left overlap starting on the first site of the correlation measurement.

OpTYPE(qtensor), inout

Operator for the correlation measurement.

PhaseOpTYPE(qtensor), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_lptn_qtensorc_qtensor()[source]

fortran-subroutine - September 2017 (dj) Measure correlation and propagate. Right-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(qtensorc), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(qtensorc), inout

The left overlap starting on the first site of the correlation measurement.

OpTYPE(qtensor), inout

Operator for the correlation measurement.

PhaseOpTYPE(qtensor), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_lptn_qtensorc_qtensorc()[source]

fortran-subroutine - September 2017 (dj) Measure correlation and propagate. Right-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(qtensorc), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(qtensorc), inout

The left overlap starting on the first site of the correlation measurement.

OpTYPE(qtensorc), inout

Operator for the correlation measurement.

PhaseOpTYPE(qtensorc), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_l_lptn_tensor_tensor()[source]

fortran-subroutine - September 2017 (dj) Measurement process for correlations. Propagation of overlap for next measurement. Left-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(tensor), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(tensor), inout

The right overlap starting on the first site of the correlation measurement.

OpTYPE(tensor), inout

Operator for the correlation measurement.

PhaseOpTYPE(tensor), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_l_lptn_tensorc_tensor()[source]

fortran-subroutine - September 2017 (dj) Measurement process for correlations. Propagation of overlap for next measurement. Left-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(tensorc), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(tensorc), inout

The right overlap starting on the first site of the correlation measurement.

OpTYPE(tensor), inout

Operator for the correlation measurement.

PhaseOpTYPE(tensor), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_l_lptn_tensorc_tensorc()[source]

fortran-subroutine - September 2017 (dj) Measurement process for correlations. Propagation of overlap for next measurement. Left-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(tensorc), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(tensorc), inout

The right overlap starting on the first site of the correlation measurement.

OpTYPE(tensorc), inout

Operator for the correlation measurement.

PhaseOpTYPE(tensorc), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_l_lptn_qtensor_qtensor()[source]

fortran-subroutine - September 2017 (dj) Measurement process for correlations. Propagation of overlap for next measurement. Left-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(qtensor), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(qtensor), inout

The right overlap starting on the first site of the correlation measurement.

OpTYPE(qtensor), inout

Operator for the correlation measurement.

PhaseOpTYPE(qtensor), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_l_lptn_qtensorc_qtensor()[source]

fortran-subroutine - September 2017 (dj) Measurement process for correlations. Propagation of overlap for next measurement. Left-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(qtensorc), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(qtensorc), inout

The right overlap starting on the first site of the correlation measurement.

OpTYPE(qtensor), inout

Operator for the correlation measurement.

PhaseOpTYPE(qtensor), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.corr_meas_l_lptn_qtensorc_qtensorc()[source]

fortran-subroutine - September 2017 (dj) Measurement process for correlations. Propagation of overlap for next measurement. Left-moving version.

Arguments

valsREAL, out

Outcome of the correlation measurement.

TenskkTYPE(qtensorc), inout

Tensor representing site kk of the system.

kkINTEGER, in

Site index of the current tensor.

llINTEGER, in

System size.

ThetaTYPE(qtensorc), inout

The right overlap starting on the first site of the correlation measurement.

OpTYPE(qtensorc), inout

Operator for the correlation measurement.

PhaseOpTYPE(qtensorc), inout

Phase operator for propagation for the following correlation measurements.

hasphaseLOGICAL, in

Flag if phase operator is contracted (.true.).

Source Code

show / hide f90 code
LPTNOps_f90.create_lptn()[source]

fortran-subroutine - December 2014 (dj) Initialize LPTN

Arguments

RhoTYPE(lptn), out

LPTN to be initialized

llINTEGER, in

number of sites in the system

fillCHARACTER, in

‘N’ : allocate, but do not initialize ‘Z’ : fill with zeros ‘O’ : fill with ones ‘I’ : start with the identity / maximally mixed state (chi and kappa not necessary) ‘R’ : random numbers

ddINTEGER(*), in

dimension of the local Hilbert space SIZE(dd) = 1 : all sites have the same size SIZE(dd) = ll: site dependent local Hilbert space

chiINTEGER(*), OPTIONAL, in

dimension of the bond dimension to nearest neighbor SIZE(chi) = 1 : all sites have the same bond dimension boundary effects are considered SIZE(chi) = ll - 1: site dependent bond dimension, boundary effects have to be considered in the array.

kappaINTEGER(*), OPTIONAL, in

dimension of the kraus link to complex conjugated tensor SIZE(kappa) = 1 : all sites have the same bond dimension SIZE(kappa) = ll: site dependent Kraus dimension

Source Code

show / hide f90 code
LPTNOps_f90.create_lptnc()[source]

fortran-subroutine - December 2014 (dj) Initialize LPTN

Arguments

RhoTYPE(lptnc), out

LPTN to be initialized

llINTEGER, in

number of sites in the system

fillCHARACTER, in

‘N’ : allocate, but do not initialize ‘Z’ : fill with zeros ‘O’ : fill with ones ‘I’ : start with the identity / maximally mixed state (chi and kappa not necessary) ‘R’ : random numbers

ddINTEGER(*), in

dimension of the local Hilbert space SIZE(dd) = 1 : all sites have the same size SIZE(dd) = ll: site dependent local Hilbert space

chiINTEGER(*), OPTIONAL, in

dimension of the bond dimension to nearest neighbor SIZE(chi) = 1 : all sites have the same bond dimension boundary effects are considered SIZE(chi) = ll - 1: site dependent bond dimension, boundary effects have to be considered in the array.

kappaINTEGER(*), OPTIONAL, in

dimension of the kraus link to complex conjugated tensor SIZE(kappa) = 1 : all sites have the same bond dimension SIZE(kappa) = ll: site dependent Kraus dimension

Source Code

show / hide f90 code
LPTNOps_f90.destroy_lptn()[source]

fortran-subroutine - September 2017 (dj, updated) Deallocate a LPTN

Arguments

RhoTYPE(lptn), inout

deallocate the LPTN

Source Code

show / hide f90 code
LPTNOps_f90.destroy_lptnc()[source]

fortran-subroutine - September 2017 (dj, updated) Deallocate a LPTN

Arguments

RhoTYPE(lptnc), inout

deallocate the LPTN

Source Code

show / hide f90 code
LPTNOps_f90.destroy_qlptn()[source]

fortran-subroutine - September 2017 (dj, updated) Deallocate a LPTN

Arguments

RhoTYPE(qlptn), inout

deallocate the LPTN

Source Code

show / hide f90 code
LPTNOps_f90.destroy_qlptnc()[source]

fortran-subroutine - September 2017 (dj, updated) Deallocate a LPTN

Arguments

RhoTYPE(qlptnc), inout

deallocate the LPTN

Source Code

show / hide f90 code
LPTNOps_f90.distance_lptn_mps()[source]

fortran-function - September 2017 (dj) Measure the distance between an LPTN and an MPS.

Arguments

RhoTYPE(lptn), in

Density matrix for distance measure.

PsiTYPE(mps), in

Pure state in the distance measure.

dist_typeCHARACTER, OPTIONAL, in

Specify the distance to be calculated. Only option right now is ‘F’ (fidelity, default).

Source Code

show / hide f90 code
LPTNOps_f90.distance_lptn_mpsc()[source]

fortran-function - September 2017 (dj) Measure the distance between an LPTN and an MPS.

Arguments

RhoTYPE(lptn), in

Density matrix for distance measure.

PsiTYPE(mpsc), in

Pure state in the distance measure.

dist_typeCHARACTER, OPTIONAL, in

Specify the distance to be calculated. Only option right now is ‘F’ (fidelity, default).

Source Code

show / hide f90 code
LPTNOps_f90.distance_lptnc_mps()[source]

fortran-function - September 2017 (dj) Measure the distance between an LPTN and an MPS.

Arguments

RhoTYPE(lptnc), in

Density matrix for distance measure.

PsiTYPE(mps), in

Pure state in the distance measure.

dist_typeCHARACTER, OPTIONAL, in

Specify the distance to be calculated. Only option right now is ‘F’ (fidelity, default).

Source Code

show / hide f90 code
LPTNOps_f90.distance_lptnc_mpsc()[source]

fortran-function - September 2017 (dj) Measure the distance between an LPTN and an MPS.

Arguments

RhoTYPE(lptnc), in

Density matrix for distance measure.

PsiTYPE(mpsc), in

Pure state in the distance measure.

dist_typeCHARACTER, OPTIONAL, in

Specify the distance to be calculated. Only option right now is ‘F’ (fidelity, default).

Source Code

show / hide f90 code
LPTNOps_f90.distance_qlptn_qmps()[source]

fortran-function - September 2017 (dj) Measure the distance between an LPTN and an MPS.

Arguments

RhoTYPE(qlptn), in

Density matrix for distance measure.

PsiTYPE(qmps), in

Pure state in the distance measure.

dist_typeCHARACTER, OPTIONAL, in

Specify the distance to be calculated. Only option right now is ‘F’ (fidelity, default).

Source Code

show / hide f90 code
LPTNOps_f90.distance_qlptn_qmpsc()[source]

fortran-function - September 2017 (dj) Measure the distance between an LPTN and an MPS.

Arguments

RhoTYPE(qlptn), in

Density matrix for distance measure.

PsiTYPE(qmpsc), in

Pure state in the distance measure.

dist_typeCHARACTER, OPTIONAL, in

Specify the distance to be calculated. Only option right now is ‘F’ (fidelity, default).

Source Code

show / hide f90 code
LPTNOps_f90.distance_qlptnc_qmps()[source]

fortran-function - September 2017 (dj) Measure the distance between an LPTN and an MPS.

Arguments

RhoTYPE(qlptnc), in

Density matrix for distance measure.

PsiTYPE(qmps), in

Pure state in the distance measure.

dist_typeCHARACTER, OPTIONAL, in

Specify the distance to be calculated. Only option right now is ‘F’ (fidelity, default).

Source Code

show / hide f90 code
LPTNOps_f90.distance_qlptnc_qmpsc()[source]

fortran-function - September 2017 (dj) Measure the distance between an LPTN and an MPS.

Arguments

RhoTYPE(qlptnc), in

Density matrix for distance measure.

PsiTYPE(qmpsc), in

Pure state in the distance measure.

dist_typeCHARACTER, OPTIONAL, in

Specify the distance to be calculated. Only option right now is ‘F’ (fidelity, default).

Source Code

show / hide f90 code
LPTNOps_f90.fidelity_lptn_mps()[source]

fortran-function - September 2017 (dj) Calculate the fidelity between a density matrix represented as LPTN and a state represented as MPS.

Arguments

RhoTYPE(lptn), inout

Density matrix for distance measure.

PsiTYPE(mps), in

Pure state in the distance measure.

Details

With \sigma = | \psi \rangle \langle \psi | the fidelity is F = Tr \sqrt{ \sqrt{\sigma} \rho \sqrt{\sigma}}. It simplifies to F = \sqrt{\langle \psi | \rho | \psi \rangle}

The two layers of the MPS and the LPTN are contracted. After fusing the chi-links we remain with an MPS-like construct. The local dimension is represented with the kappa-links. This norm of this MPS construct yields the actual distance.

Source Code

show / hide f90 code
LPTNOps_f90.fidelity_lptn_mpsc()[source]

fortran-function - September 2017 (dj) Calculate the fidelity between a density matrix represented as LPTN and a state represented as MPS.

Arguments

RhoTYPE(lptn), inout

Density matrix for distance measure.

PsiTYPE(mpsc), in

Pure state in the distance measure.

Details

With \sigma = | \psi \rangle \langle \psi | the fidelity is F = Tr \sqrt{ \sqrt{\sigma} \rho \sqrt{\sigma}}. It simplifies to F = \sqrt{\langle \psi | \rho | \psi \rangle}

The two layers of the MPS and the LPTN are contracted. After fusing the chi-links we remain with an MPS-like construct. The local dimension is represented with the kappa-links. This norm of this MPS construct yields the actual distance.

Source Code

show / hide f90 code
LPTNOps_f90.fidelity_lptnc_mps()[source]

fortran-function - September 2017 (dj) Calculate the fidelity between a density matrix represented as LPTN and a state represented as MPS.

Arguments

RhoTYPE(lptnc), inout

Density matrix for distance measure.

PsiTYPE(mps), in

Pure state in the distance measure.

Details

With \sigma = | \psi \rangle \langle \psi | the fidelity is F = Tr \sqrt{ \sqrt{\sigma} \rho \sqrt{\sigma}}. It simplifies to F = \sqrt{\langle \psi | \rho | \psi \rangle}

The two layers of the MPS and the LPTN are contracted. After fusing the chi-links we remain with an MPS-like construct. The local dimension is represented with the kappa-links. This norm of this MPS construct yields the actual distance.

Source Code

show / hide f90 code
LPTNOps_f90.fidelity_lptnc_mpsc()[source]

fortran-function - September 2017 (dj) Calculate the fidelity between a density matrix represented as LPTN and a state represented as MPS.

Arguments

RhoTYPE(lptnc), inout

Density matrix for distance measure.

PsiTYPE(mpsc), in

Pure state in the distance measure.

Details

With \sigma = | \psi \rangle \langle \psi | the fidelity is F = Tr \sqrt{ \sqrt{\sigma} \rho \sqrt{\sigma}}. It simplifies to F = \sqrt{\langle \psi | \rho | \psi \rangle}

The two layers of the MPS and the LPTN are contracted. After fusing the chi-links we remain with an MPS-like construct. The local dimension is represented with the kappa-links. This norm of this MPS construct yields the actual distance.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_qr_tensor()[source]

fortran-subroutine - June 2017 (dj, updated) Shift gauge for two tensor to the right with a QR-decomposition.

Arguments

TlTYPE(tensor), inout

Run QR decomposition on last index vs the other ones.

TrTYPE(tensor), inout

On exit, this tensor is the new orhtogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_rq_tensor()[source]

fortran-subroutine - June 2017 (dj, updated) Shift gauge for two tensors to the left with a RQ-decompistion.

Arguments

TlTYPE(tensor), inout

On exit, this tensor is the new orhtogonality center.

TrTYPE(tensor), inout

Run RQ decomposition on first index vs the other ones.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_qr_tensorc()[source]

fortran-subroutine - June 2017 (dj, updated) Shift gauge for two tensor to the right with a QR-decomposition.

Arguments

TlTYPE(tensorc), inout

Run QR decomposition on last index vs the other ones.

TrTYPE(tensorc), inout

On exit, this tensor is the new orhtogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_rq_tensorc()[source]

fortran-subroutine - June 2017 (dj, updated) Shift gauge for two tensors to the left with a RQ-decompistion.

Arguments

TlTYPE(tensorc), inout

On exit, this tensor is the new orhtogonality center.

TrTYPE(tensorc), inout

Run RQ decomposition on first index vs the other ones.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_qr_qtensor()[source]

fortran-subroutine - June 2017 (dj, updated) Shift gauge for two tensor to the right with a QR-decomposition.

Arguments

TlTYPE(qtensor), inout

Run QR decomposition on last index vs the other ones.

TrTYPE(qtensor), inout

On exit, this tensor is the new orhtogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_rq_qtensor()[source]

fortran-subroutine - June 2017 (dj, updated) Shift gauge for two tensors to the left with a RQ-decompistion.

Arguments

TlTYPE(qtensor), inout

On exit, this tensor is the new orhtogonality center.

TrTYPE(qtensor), inout

Run RQ decomposition on first index vs the other ones.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_qr_qtensorc()[source]

fortran-subroutine - June 2017 (dj, updated) Shift gauge for two tensor to the right with a QR-decomposition.

Arguments

TlTYPE(qtensorc), inout

Run QR decomposition on last index vs the other ones.

TrTYPE(qtensorc), inout

On exit, this tensor is the new orhtogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_rq_qtensorc()[source]

fortran-subroutine - June 2017 (dj, updated) Shift gauge for two tensors to the left with a RQ-decompistion.

Arguments

TlTYPE(qtensorc), inout

On exit, this tensor is the new orhtogonality center.

TrTYPE(qtensorc), inout

Run RQ decomposition on first index vs the other ones.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_rsvd_tensor()[source]

fortran-subroutine - June 2017 (dj, updated) Shift the gauge from the left site to the right running an SVD.

Arguments

TlTYPE(tensor), inout

SVD decompose this tensor between the last index and the other ones.

LambTYPE(tensor), inout

Contains the singular values on exit.

TrTYPE(tensor), inout

On exit, this tensor is the new orthogonality center.

haslambdaLOGICAL, inout

Flag if singular values are already allocated.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_lsvd_tensor()[source]

fortran-subroutine - June 2017 (dj, updated) Shift the gauge from the right site to the left running an SVD.

Arguments

TlTYPE(tensor), inout

This tensor will be the new orthogonality center on exit.

LambTYPE(tensor), inout

Contains the singular values on exit.

TrTYPE(tensor), inout

SVD decompose this tensor between the first index and the other ones.

haslambdaLOGICAL, inout

Flag if singular values are already allocated.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_rsvd_tensorc()[source]

fortran-subroutine - June 2017 (dj, updated) Shift the gauge from the left site to the right running an SVD.

Arguments

TlTYPE(tensorc), inout

SVD decompose this tensor between the last index and the other ones.

LambTYPE(tensor), inout

Contains the singular values on exit.

TrTYPE(tensorc), inout

On exit, this tensor is the new orthogonality center.

haslambdaLOGICAL, inout

Flag if singular values are already allocated.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_lsvd_tensorc()[source]

fortran-subroutine - June 2017 (dj, updated) Shift the gauge from the right site to the left running an SVD.

Arguments

TlTYPE(tensorc), inout

This tensor will be the new orthogonality center on exit.

LambTYPE(tensor), inout

Contains the singular values on exit.

TrTYPE(tensorc), inout

SVD decompose this tensor between the first index and the other ones.

haslambdaLOGICAL, inout

Flag if singular values are already allocated.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_rsvd_qtensor()[source]

fortran-subroutine - June 2017 (dj, updated) Shift the gauge from the left site to the right running an SVD.

Arguments

TlTYPE(qtensor), inout

SVD decompose this tensor between the last index and the other ones.

LambTYPE(qtensor), inout

Contains the singular values on exit.

TrTYPE(qtensor), inout

On exit, this tensor is the new orthogonality center.

haslambdaLOGICAL, inout

Flag if singular values are already allocated.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_lsvd_qtensor()[source]

fortran-subroutine - June 2017 (dj, updated) Shift the gauge from the right site to the left running an SVD.

Arguments

TlTYPE(qtensor), inout

This tensor will be the new orthogonality center on exit.

LambTYPE(qtensor), inout

Contains the singular values on exit.

TrTYPE(qtensor), inout

SVD decompose this tensor between the first index and the other ones.

haslambdaLOGICAL, inout

Flag if singular values are already allocated.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_rsvd_qtensorc()[source]

fortran-subroutine - June 2017 (dj, updated) Shift the gauge from the left site to the right running an SVD.

Arguments

TlTYPE(qtensorc), inout

SVD decompose this tensor between the last index and the other ones.

LambTYPE(qtensor), inout

Contains the singular values on exit.

TrTYPE(qtensorc), inout

On exit, this tensor is the new orthogonality center.

haslambdaLOGICAL, inout

Flag if singular values are already allocated.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Source Code

show / hide f90 code
LPTNOps_f90.gaugesite_lsvd_qtensorc()[source]

fortran-subroutine - June 2017 (dj, updated) Shift the gauge from the right site to the left running an SVD.

Arguments

TlTYPE(qtensorc), inout

This tensor will be the new orthogonality center on exit.

LambTYPE(qtensor), inout

Contains the singular values on exit.

TrTYPE(qtensorc), inout

SVD decompose this tensor between the first index and the other ones.

haslambdaLOGICAL, inout

Flag if singular values are already allocated.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

Source Code

show / hide f90 code
LPTNOps_f90.maxchi_lptn()[source]

fortran-function - September 2017 (dj, updated) Get the maximal bond dimension to nearest neighbors of the LPTN.

Arguments

RhoTYPE(lptn), in

Get the maximal bond dimension present in the LPTN for the link between nearest neighbors.

Source Code

show / hide f90 code
LPTNOps_f90.maxchi_lptnc()[source]

fortran-function - September 2017 (dj, updated) Get the maximal bond dimension to nearest neighbors of the LPTN.

Arguments

RhoTYPE(lptnc), in

Get the maximal bond dimension present in the LPTN for the link between nearest neighbors.

Source Code

show / hide f90 code
LPTNOps_f90.maxchi_qlptn()[source]

fortran-function - September 2017 (dj, updated) Get the maximal bond dimension to nearest neighbors of the LPTN.

Arguments

RhoTYPE(qlptn), in

Get the maximal bond dimension present in the LPTN for the link between nearest neighbors.

Source Code

show / hide f90 code
LPTNOps_f90.maxchi_qlptnc()[source]

fortran-function - September 2017 (dj, updated) Get the maximal bond dimension to nearest neighbors of the LPTN.

Arguments

RhoTYPE(qlptnc), in

Get the maximal bond dimension present in the LPTN for the link between nearest neighbors.

Source Code

show / hide f90 code
LPTNOps_f90.maxkappa_lptn()[source]

fortran-function - September 2017 (dj, updated) Get the maximal bond dimension to conjugate tensors of the LPTN.

Arguments

RhoTYPE(lptn), in

Get the maximal bond dimension present in the LPTN for the link between the complex conjugate tensors.

Source Code

show / hide f90 code
LPTNOps_f90.maxkappa_lptnc()[source]

fortran-function - September 2017 (dj, updated) Get the maximal bond dimension to conjugate tensors of the LPTN.

Arguments

RhoTYPE(lptnc), in

Get the maximal bond dimension present in the LPTN for the link between the complex conjugate tensors.

Source Code

show / hide f90 code
LPTNOps_f90.maxkappa_qlptn()[source]

fortran-function - September 2017 (dj, updated) Get the maximal bond dimension to conjugate tensors of the LPTN.

Arguments

RhoTYPE(qlptn), in

Get the maximal bond dimension present in the LPTN for the link between the complex conjugate tensors.

Source Code

show / hide f90 code
LPTNOps_f90.maxkappa_qlptnc()[source]

fortran-function - September 2017 (dj, updated) Get the maximal bond dimension to conjugate tensors of the LPTN.

Arguments

RhoTYPE(qlptnc), in

Get the maximal bond dimension present in the LPTN for the link between the complex conjugate tensors.

Source Code

show / hide f90 code
LPTNOps_f90.meas_mpo_lptn_mpo()[source]

fortran-subroutine - November 2017 (dj) Compute the expectation value of an MPO on a LPTN.

Arguments

valREAL_OR_COMPLEX, out

Result of the measurement of the MPO applied to Psi.

HTYPE(mpo), inout

Representation of the MPO to be measured.

RhoTYPE(lptn), inout

Measure this density matrix.

Source Code

show / hide f90 code
LPTNOps_f90.meas_mpo_lptnc_mpo()[source]

fortran-subroutine - November 2017 (dj) Compute the expectation value of an MPO on a LPTN.

Arguments

valREAL_OR_COMPLEX, out

Result of the measurement of the MPO applied to Psi.

HTYPE(mpo), inout

Representation of the MPO to be measured.

RhoTYPE(lptnc), inout

Measure this density matrix.

Source Code

show / hide f90 code
LPTNOps_f90.meas_mpo_lptnc_mpoc()[source]

fortran-subroutine - November 2017 (dj) Compute the expectation value of an MPO on a LPTN.

Arguments

valREAL_OR_COMPLEX, out

Result of the measurement of the MPO applied to Psi.

HTYPE(mpoc), inout

Representation of the MPO to be measured.

RhoTYPE(lptnc), inout

Measure this density matrix.

Source Code

show / hide f90 code
LPTNOps_f90.meas_mpo_qlptn_qmpo()[source]

fortran-subroutine - November 2017 (dj) Compute the expectation value of an MPO on a LPTN.

Arguments

valREAL_OR_COMPLEX, out

Result of the measurement of the MPO applied to Psi.

HTYPE(qmpo), inout

Representation of the MPO to be measured.

RhoTYPE(qlptn), inout

Measure this density matrix.

Source Code

show / hide f90 code
LPTNOps_f90.meas_mpo_qlptnc_qmpo()[source]

fortran-subroutine - November 2017 (dj) Compute the expectation value of an MPO on a LPTN.

Arguments

valREAL_OR_COMPLEX, out

Result of the measurement of the MPO applied to Psi.

HTYPE(qmpo), inout

Representation of the MPO to be measured.

RhoTYPE(qlptnc), inout

Measure this density matrix.

Source Code

show / hide f90 code
LPTNOps_f90.meas_mpo_qlptnc_qmpoc()[source]

fortran-subroutine - November 2017 (dj) Compute the expectation value of an MPO on a LPTN.

Arguments

valREAL_OR_COMPLEX, out

Result of the measurement of the MPO applied to Psi.

HTYPE(qmpoc), inout

Representation of the MPO to be measured.

RhoTYPE(qlptnc), inout

Measure this density matrix.

Source Code

show / hide f90 code
LPTNOps_f90.ptm_left_mpo_lptn_tensor_tensor()[source]

fortran-subroutine - November 2017 (dj) Build transfer matrix for site between a state and a Hamiltonian (or MPO).

Arguments

MatTYPE(tensorlist), inout

On exit, new transfer matrix. If ‘Matin’ is not given, this is treated as incoming transfer matrix.

BraketTYPE(tensor), in

Represent the state of the LPTN on this site.

HmatTYPE(tensor), inout

Represents the Hamiltonian on this site.

rightmostLOGICAL, in

Flag if this is the first site. If true, there is no transfer matrix on the right.

MatinTYPE(tensorlist), OPTIONAL, in

Transfer matrix of the site to the right. Not referenced if rightmost is true.

Details

In contrast to the MPS method, the LPTN method only works for the same state.

Source Code

show / hide f90 code
LPTNOps_f90.ptm_left_mpo_lptn_tensorc_tensor()[source]

fortran-subroutine - November 2017 (dj) Build transfer matrix for site between a state and a Hamiltonian (or MPO).

Arguments

MatTYPE(tensorlistc), inout

On exit, new transfer matrix. If ‘Matin’ is not given, this is treated as incoming transfer matrix.

BraketTYPE(tensorc), in

Represent the state of the LPTN on this site.

HmatTYPE(tensorc), inout

Represents the Hamiltonian on this site.

rightmostLOGICAL, in

Flag if this is the first site. If true, there is no transfer matrix on the right.

MatinTYPE(tensorlistc), OPTIONAL, in

Transfer matrix of the site to the right. Not referenced if rightmost is true.

Details

In contrast to the MPS method, the LPTN method only works for the same state.

Source Code

show / hide f90 code
LPTNOps_f90.ptm_left_mpo_lptn_tensorc_tensorc()[source]

fortran-subroutine - November 2017 (dj) Build transfer matrix for site between a state and a Hamiltonian (or MPO).

Arguments

MatTYPE(tensorlistc), inout

On exit, new transfer matrix. If ‘Matin’ is not given, this is treated as incoming transfer matrix.

BraketTYPE(tensorc), in

Represent the state of the LPTN on this site.

HmatTYPE(tensorc), inout

Represents the Hamiltonian on this site.

rightmostLOGICAL, in

Flag if this is the first site. If true, there is no transfer matrix on the right.

MatinTYPE(tensorlistc), OPTIONAL, in

Transfer matrix of the site to the right. Not referenced if rightmost is true.

Details

In contrast to the MPS method, the LPTN method only works for the same state.

Source Code

show / hide f90 code
LPTNOps_f90.ptm_left_mpo_lptn_qtensor_qtensor()[source]

fortran-subroutine - November 2017 (dj) Build transfer matrix for site between a state and a Hamiltonian (or MPO).

Arguments

MatTYPE(qtensorlist), inout

On exit, new transfer matrix. If ‘Matin’ is not given, this is treated as incoming transfer matrix.

BraketTYPE(qtensor), in

Represent the state of the LPTN on this site.

HmatTYPE(qtensor), inout

Represents the Hamiltonian on this site.

rightmostLOGICAL, in

Flag if this is the first site. If true, there is no transfer matrix on the right.

MatinTYPE(qtensorlist), OPTIONAL, in

Transfer matrix of the site to the right. Not referenced if rightmost is true.

Details

In contrast to the MPS method, the LPTN method only works for the same state.

Source Code

show / hide f90 code
LPTNOps_f90.ptm_left_mpo_lptn_qtensorc_qtensor()[source]

fortran-subroutine - November 2017 (dj) Build transfer matrix for site between a state and a Hamiltonian (or MPO).

Arguments

MatTYPE(qtensorclist), inout

On exit, new transfer matrix. If ‘Matin’ is not given, this is treated as incoming transfer matrix.

BraketTYPE(qtensorc), in

Represent the state of the LPTN on this site.

HmatTYPE(qtensorc), inout

Represents the Hamiltonian on this site.

rightmostLOGICAL, in

Flag if this is the first site. If true, there is no transfer matrix on the right.

MatinTYPE(qtensorclist), OPTIONAL, in

Transfer matrix of the site to the right. Not referenced if rightmost is true.

Details

In contrast to the MPS method, the LPTN method only works for the same state.

Source Code

show / hide f90 code
LPTNOps_f90.ptm_left_mpo_lptn_qtensorc_qtensorc()[source]

fortran-subroutine - November 2017 (dj) Build transfer matrix for site between a state and a Hamiltonian (or MPO).

Arguments

MatTYPE(qtensorclist), inout

On exit, new transfer matrix. If ‘Matin’ is not given, this is treated as incoming transfer matrix.

BraketTYPE(qtensorc), in

Represent the state of the LPTN on this site.

HmatTYPE(qtensorc), inout

Represents the Hamiltonian on this site.

rightmostLOGICAL, in

Flag if this is the first site. If true, there is no transfer matrix on the right.

MatinTYPE(qtensorclist), OPTIONAL, in

Transfer matrix of the site to the right. Not referenced if rightmost is true.

Details

In contrast to the MPS method, the LPTN method only works for the same state.

Source Code

show / hide f90 code
LPTNOps_f90.norm_lptn()[source]

fortran-function - September 2017 (dj) Calculate the norm of the density matrix defined as the trace.

Arguments

RhoTYPE(lptn), in

Rho is density matrix represented as LPTN with an orthogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.norm_lptnc()[source]

fortran-function - September 2017 (dj) Calculate the norm of the density matrix defined as the trace.

Arguments

RhoTYPE(lptnc), in

Rho is density matrix represented as LPTN with an orthogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.norm_qlptn()[source]

fortran-function - September 2017 (dj) Calculate the norm of the density matrix defined as the trace.

Arguments

RhoTYPE(qlptn), in

Rho is density matrix represented as LPTN with an orthogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.norm_qlptnc()[source]

fortran-function - September 2017 (dj) Calculate the norm of the density matrix defined as the trace.

Arguments

RhoTYPE(qlptnc), in

Rho is density matrix represented as LPTN with an orthogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.randomize_lptn()[source]

fortran-subroutine - September 2014 (dj) Fill the tensors of a LPTN with random number.

Arguments

RhoTYPE(lptn), inout

Fill the tensor of each site with random number. This operations destroys gauges/isometry.

Source Code

show / hide f90 code
LPTNOps_f90.randomize_lptnc()[source]

fortran-subroutine - September 2014 (dj) Fill the tensors of a LPTN with random number.

Arguments

RhoTYPE(lptnc), inout

Fill the tensor of each site with random number. This operations destroys gauges/isometry.

Source Code

show / hide f90 code
LPTNOps_f90.randomize_qlptn()[source]

fortran-subroutine - September 2014 (dj) Fill the tensors of a LPTN with random number.

Arguments

RhoTYPE(qlptn), inout

Fill the tensor of each site with random number. This operations destroys gauges/isometry.

Source Code

show / hide f90 code
LPTNOps_f90.randomize_qlptnc()[source]

fortran-subroutine - September 2014 (dj) Fill the tensors of a LPTN with random number.

Arguments

RhoTYPE(qlptnc), inout

Fill the tensor of each site with random number. This operations destroys gauges/isometry.

Source Code

show / hide f90 code
LPTNOps_f90.read_lptn()[source]

fortran-subroutine - June 2016 (dj, updated) Read an LPTN given a filename and a unit (assuming you know the type already).

Arguments

RhoTYPE(lptn), in

Read LPTN in file to this LPTN

flnmCHARACTER(100), in

the LPTN is stored in this file.

unitINTEGER, in

open file on this unit

formCHARACTER, in

Binary (‘B’) or human readable (‘H’)

skipLOGICAL, OPTIONAL, in

.true. : the first two lines were already read somewhere. Do not read them here (those lines contain the information about the type of the LPTN in the file, real/complex, no symm/symmetries). Default to .false.

errflagINTEGER, out

0 : could read LPTN; 1 : type of LPTN does not correspond type of the LPTN in the file (only checked for skip1st2=false).

Details

The file for LPTN has the general form defined as below. Following these rules, it is possible to provide states to OpenLPTN. * logical if LPTN is real or complex valued (real=True, complex=False) [line 1] * logical if LPTN or qLPTN (qLPTN=True, non-symmetry LPTN=False) [line 2] * integer with number of size [line 3] * integer with position of the orthogonality center [line 4] * “H” : in a loop over the pairs of haslambda and can are written in l lines. “B” : the array of can is read, then haslambda. * In a loop over the sites of the system, the tensors of the LPTN are written. The way how to write the tensors is specified in the corresponding subroutine. * Depending on the value of haslambda, read the vector (vectorlist) with the corresponding subroutine.

Source Code

show / hide f90 code
LPTNOps_f90.read_lptnc()[source]

fortran-subroutine - June 2016 (dj, updated) Read an LPTN given a filename and a unit (assuming you know the type already).

Arguments

RhoTYPE(lptnc), in

Read LPTN in file to this LPTN

flnmCHARACTER(100), in

the LPTN is stored in this file.

unitINTEGER, in

open file on this unit

formCHARACTER, in

Binary (‘B’) or human readable (‘H’)

skipLOGICAL, OPTIONAL, in

.true. : the first two lines were already read somewhere. Do not read them here (those lines contain the information about the type of the LPTN in the file, real/complex, no symm/symmetries). Default to .false.

errflagINTEGER, out

0 : could read LPTN; 1 : type of LPTN does not correspond type of the LPTN in the file (only checked for skip1st2=false).

Details

The file for LPTN has the general form defined as below. Following these rules, it is possible to provide states to OpenLPTN. * logical if LPTN is real or complex valued (real=True, complex=False) [line 1] * logical if LPTN or qLPTN (qLPTN=True, non-symmetry LPTN=False) [line 2] * integer with number of size [line 3] * integer with position of the orthogonality center [line 4] * “H” : in a loop over the pairs of haslambda and can are written in l lines. “B” : the array of can is read, then haslambda. * In a loop over the sites of the system, the tensors of the LPTN are written. The way how to write the tensors is specified in the corresponding subroutine. * Depending on the value of haslambda, read the vector (vectorlist) with the corresponding subroutine.

Source Code

show / hide f90 code
LPTNOps_f90.read_qlptn()[source]

fortran-subroutine - June 2016 (dj, updated) Read an LPTN given a filename and a unit (assuming you know the type already).

Arguments

RhoTYPE(qlptn), in

Read LPTN in file to this LPTN

flnmCHARACTER(100), in

the LPTN is stored in this file.

unitINTEGER, in

open file on this unit

formCHARACTER, in

Binary (‘B’) or human readable (‘H’)

skipLOGICAL, OPTIONAL, in

.true. : the first two lines were already read somewhere. Do not read them here (those lines contain the information about the type of the LPTN in the file, real/complex, no symm/symmetries). Default to .false.

errflagINTEGER, out

0 : could read LPTN; 1 : type of LPTN does not correspond type of the LPTN in the file (only checked for skip1st2=false).

Details

The file for LPTN has the general form defined as below. Following these rules, it is possible to provide states to OpenLPTN. * logical if LPTN is real or complex valued (real=True, complex=False) [line 1] * logical if LPTN or qLPTN (qLPTN=True, non-symmetry LPTN=False) [line 2] * integer with number of size [line 3] * integer with position of the orthogonality center [line 4] * “H” : in a loop over the pairs of haslambda and can are written in l lines. “B” : the array of can is read, then haslambda. * In a loop over the sites of the system, the tensors of the LPTN are written. The way how to write the tensors is specified in the corresponding subroutine. * Depending on the value of haslambda, read the vector (vectorlist) with the corresponding subroutine.

Source Code

show / hide f90 code
LPTNOps_f90.read_qlptnc()[source]

fortran-subroutine - June 2016 (dj, updated) Read an LPTN given a filename and a unit (assuming you know the type already).

Arguments

RhoTYPE(qlptnc), in

Read LPTN in file to this LPTN

flnmCHARACTER(100), in

the LPTN is stored in this file.

unitINTEGER, in

open file on this unit

formCHARACTER, in

Binary (‘B’) or human readable (‘H’)

skipLOGICAL, OPTIONAL, in

.true. : the first two lines were already read somewhere. Do not read them here (those lines contain the information about the type of the LPTN in the file, real/complex, no symm/symmetries). Default to .false.

errflagINTEGER, out

0 : could read LPTN; 1 : type of LPTN does not correspond type of the LPTN in the file (only checked for skip1st2=false).

Details

The file for LPTN has the general form defined as below. Following these rules, it is possible to provide states to OpenLPTN. * logical if LPTN is real or complex valued (real=True, complex=False) [line 1] * logical if LPTN or qLPTN (qLPTN=True, non-symmetry LPTN=False) [line 2] * integer with number of size [line 3] * integer with position of the orthogonality center [line 4] * “H” : in a loop over the pairs of haslambda and can are written in l lines. “B” : the array of can is read, then haslambda. * In a loop over the sites of the system, the tensors of the LPTN are written. The way how to write the tensors is specified in the corresponding subroutine. * Depending on the value of haslambda, read the vector (vectorlist) with the corresponding subroutine.

Source Code

show / hide f90 code
LPTNOps_f90.rho_kk_lptn()[source]

fortran-subroutine - September 2017 (dj) Calculate the reduced density matrix represented as tensor.

Arguments

RhokkTYPE(tensor), out

The density matrix is stored in this tensor

RhoTYPE(lptn), in

Calculate reduced density matrix for this LPTN.

kkINTEGER, in

Select site where reduced density matrix should be calculated. It must be the orthogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.rho_kk_lptnc()[source]

fortran-subroutine - September 2017 (dj) Calculate the reduced density matrix represented as tensor.

Arguments

RhokkTYPE(tensorc), out

The density matrix is stored in this tensor

RhoTYPE(lptnc), in

Calculate reduced density matrix for this LPTN.

kkINTEGER, in

Select site where reduced density matrix should be calculated. It must be the orthogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.rho_kk_qlptn()[source]

fortran-subroutine - September 2017 (dj) Calculate the reduced density matrix represented as tensor.

Arguments

RhokkTYPE(qtensor), out

The density matrix is stored in this tensor

RhoTYPE(qlptn), in

Calculate reduced density matrix for this LPTN.

kkINTEGER, in

Select site where reduced density matrix should be calculated. It must be the orthogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.rho_kk_qlptnc()[source]

fortran-subroutine - September 2017 (dj) Calculate the reduced density matrix represented as tensor.

Arguments

RhokkTYPE(qtensorc), out

The density matrix is stored in this tensor

RhoTYPE(qlptnc), in

Calculate reduced density matrix for this LPTN.

kkINTEGER, in

Select site where reduced density matrix should be calculated. It must be the orthogonality center.

Source Code

show / hide f90 code
LPTNOps_f90.rhoij_init_lptn_tensor()[source]

fortran-subroutine - September 2017 (dj) Initialize the measurement for the two-site density matrix, i.e., building the left overlap leaving the local Hilbert space uncontractred.

Arguments

TenskkTYPE(tensor), inout

Tensor representing the site kk, should be the orthgonality center.

ThetaTYPE(tensor), out

On exit, contraction of the tensor on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.rhoij_init_lptn_tensorc()[source]

fortran-subroutine - September 2017 (dj) Initialize the measurement for the two-site density matrix, i.e., building the left overlap leaving the local Hilbert space uncontractred.

Arguments

TenskkTYPE(tensorc), inout

Tensor representing the site kk, should be the orthgonality center.

ThetaTYPE(tensorc), out

On exit, contraction of the tensor on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.rhoij_init_lptn_qtensor()[source]

fortran-subroutine - September 2017 (dj) Initialize the measurement for the two-site density matrix, i.e., building the left overlap leaving the local Hilbert space uncontractred.

Arguments

TenskkTYPE(qtensor), inout

Tensor representing the site kk, should be the orthgonality center.

ThetaTYPE(qtensor), out

On exit, contraction of the tensor on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.rhoij_init_lptn_qtensorc()[source]

fortran-subroutine - September 2017 (dj) Initialize the measurement for the two-site density matrix, i.e., building the left overlap leaving the local Hilbert space uncontractred.

Arguments

TenskkTYPE(qtensorc), inout

Tensor representing the site kk, should be the orthgonality center.

ThetaTYPE(qtensorc), out

On exit, contraction of the tensor on site kk.

Source Code

show / hide f90 code
LPTNOps_f90.rhoij_meas_lptn_tensor_tensor()[source]

fortran-subroutine - September 2017 (dj) Measure two-site reduced density matrix for sites i and j and propagate for the next measurement.

Arguments

RhosijTYPE(tensor)(*, *), inout

Matrix containing two-site density matrices.

TensjjTYPE(tensor), inout

Tensor representing the current site to be contracted.

iiINTEGER, inout

Index of the left site of the density matrix kept in Theta.

jjINTEGER, inout

Index of the tensors Tensjj.

llINTEGER, inout

Number of sites in the system, used to detect when propagation is stopped.

ThetaTYPE(tensor), inout

Tensor containing the contractions from the left part of the system.

PhaseOpTYPE(tensor), inout

Phase operator to be contracted within the propagation.

hasphaseLOGICAL, inout

Flag if phase operator is present (.true.).

skipLOGICAL, OPTIONAL, inout

If present and true, the measurement of the density matrix is skiped and it is only propagated.

Source Code

show / hide f90 code
LPTNOps_f90.rhoij_meas_lptn_tensorc_tensor()[source]

fortran-subroutine - September 2017 (dj) Measure two-site reduced density matrix for sites i and j and propagate for the next measurement.

Arguments

RhosijTYPE(tensorc)(*, *), inout

Matrix containing two-site density matrices.

TensjjTYPE(tensorc), inout

Tensor representing the current site to be contracted.

iiINTEGER, inout

Index of the left site of the density matrix kept in Theta.

jjINTEGER, inout

Index of the tensors Tensjj.

llINTEGER, inout

Number of sites in the system, used to detect when propagation is stopped.

ThetaTYPE(tensorc), inout

Tensor containing the contractions from the left part of the system.

PhaseOpTYPE(tensor), inout

Phase operator to be contracted within the propagation.

hasphaseLOGICAL, inout

Flag if phase operator is present (.true.).

skipLOGICAL, OPTIONAL, inout

If present and true, the measurement of the density matrix is skiped and it is only propagated.

Source Code

show / hide f90 code
LPTNOps_f90.rhoij_meas_lptn_tensorc_tensorc()[source]

fortran-subroutine - September 2017 (dj) Measure two-site reduced density matrix for sites i and j and propagate for the next measurement.

Arguments

RhosijTYPE(tensorc)(*, *), inout

Matrix containing two-site density matrices.

TensjjTYPE(tensorc), inout

Tensor representing the current site to be contracted.

iiINTEGER, inout

Index of the left site of the density matrix kept in Theta.

jjINTEGER, inout

Index of the tensors Tensjj.

llINTEGER, inout

Number of sites in the system, used to detect when propagation is stopped.

ThetaTYPE(tensorc), inout

Tensor containing the contractions from the left part of the system.

PhaseOpTYPE(tensorc), inout

Phase operator to be contracted within the propagation.

hasphaseLOGICAL, inout

Flag if phase operator is present (.true.).

skipLOGICAL, OPTIONAL, inout

If present and true, the measurement of the density matrix is skiped and it is only propagated.

Source Code

show / hide f90 code
LPTNOps_f90.rhoij_meas_lptn_qtensor_qtensor()[source]

fortran-subroutine - September 2017 (dj) Measure two-site reduced density matrix for sites i and j and propagate for the next measurement.

Arguments

RhosijTYPE(qtensor)(*, *), inout

Matrix containing two-site density matrices.

TensjjTYPE(qtensor), inout

Tensor representing the current site to be contracted.

iiINTEGER, inout

Index of the left site of the density matrix kept in Theta.

jjINTEGER, inout

Index of the tensors Tensjj.

llINTEGER, inout

Number of sites in the system, used to detect when propagation is stopped.

ThetaTYPE(qtensor), inout

Tensor containing the contractions from the left part of the system.

PhaseOpTYPE(qtensor), inout

Phase operator to be contracted within the propagation.

hasphaseLOGICAL, inout

Flag if phase operator is present (.true.).

skipLOGICAL, OPTIONAL, inout

If present and true, the measurement of the density matrix is skiped and it is only propagated.

Source Code

show / hide f90 code
LPTNOps_f90.rhoij_meas_lptn_qtensorc_qtensor()[source]

fortran-subroutine - September 2017 (dj) Measure two-site reduced density matrix for sites i and j and propagate for the next measurement.

Arguments

RhosijTYPE(qtensorc)(*, *), inout

Matrix containing two-site density matrices.

TensjjTYPE(qtensorc), inout

Tensor representing the current site to be contracted.

iiINTEGER, inout

Index of the left site of the density matrix kept in Theta.

jjINTEGER, inout

Index of the tensors Tensjj.

llINTEGER, inout

Number of sites in the system, used to detect when propagation is stopped.

ThetaTYPE(qtensorc), inout

Tensor containing the contractions from the left part of the system.

PhaseOpTYPE(qtensor), inout

Phase operator to be contracted within the propagation.

hasphaseLOGICAL, inout

Flag if phase operator is present (.true.).

skipLOGICAL, OPTIONAL, inout

If present and true, the measurement of the density matrix is skiped and it is only propagated.

Source Code

show / hide f90 code
LPTNOps_f90.rhoij_meas_lptn_qtensorc_qtensorc()[source]

fortran-subroutine - September 2017 (dj) Measure two-site reduced density matrix for sites i and j and propagate for the next measurement.

Arguments

RhosijTYPE(qtensorc)(*, *), inout

Matrix containing two-site density matrices.

TensjjTYPE(qtensorc), inout

Tensor representing the current site to be contracted.

iiINTEGER, inout

Index of the left site of the density matrix kept in Theta.

jjINTEGER, inout

Index of the tensors Tensjj.

llINTEGER, inout

Number of sites in the system, used to detect when propagation is stopped.

ThetaTYPE(qtensorc), inout

Tensor containing the contractions from the left part of the system.

PhaseOpTYPE(qtensorc), inout

Phase operator to be contracted within the propagation.

hasphaseLOGICAL, inout

Flag if phase operator is present (.true.).

skipLOGICAL, OPTIONAL, inout

If present and true, the measurement of the density matrix is skiped and it is only propagated.

Source Code

show / hide f90 code
LPTNOps_f90.rho_red_lptn()[source]

fortran-subroutine - June 2018 (dj) Build a general reduced density matrix on multiple sites.

Arguments

RedTYPE(tensor), out

On exit the reduced density matrix with the sites specified. The first half of the indices corresponds to the kets on each site. The second half corresponds to the bra-indices.

RhoTYPE(lptn), in

LPTN to build reduced density matrix from.

sitesINTEGER(*), in

List of sites for the reduced density matrix.

contLOGICAL, in

Indicator if sites are one continuous block of indices (true) or separated by indices to be traced out (false).

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

errREAL, out

Truncation error for tracking it from calling routine.

Source Code

show / hide f90 code
LPTNOps_f90.rho_red_lptnc()[source]

fortran-subroutine - June 2018 (dj) Build a general reduced density matrix on multiple sites.

Arguments

RedTYPE(tensorc), out

On exit the reduced density matrix with the sites specified. The first half of the indices corresponds to the kets on each site. The second half corresponds to the bra-indices.

RhoTYPE(lptnc), in

LPTN to build reduced density matrix from.

sitesINTEGER(*), in

List of sites for the reduced density matrix.

contLOGICAL, in

Indicator if sites are one continuous block of indices (true) or separated by indices to be traced out (false).

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

errREAL, out

Truncation error for tracking it from calling routine.

Source Code

show / hide f90 code
LPTNOps_f90.rho_red_qlptn()[source]

fortran-subroutine - June 2018 (dj) Build a general reduced density matrix on multiple sites.

Arguments

RedTYPE(qtensor), out

On exit the reduced density matrix with the sites specified. The first half of the indices corresponds to the kets on each site. The second half corresponds to the bra-indices.

RhoTYPE(qlptn), in

LPTN to build reduced density matrix from.

sitesINTEGER(*), in

List of sites for the reduced density matrix.

contLOGICAL, in

Indicator if sites are one continuous block of indices (true) or separated by indices to be traced out (false).

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

errREAL, out

Truncation error for tracking it from calling routine.

Source Code

show / hide f90 code
LPTNOps_f90.rho_red_qlptnc()[source]

fortran-subroutine - June 2018 (dj) Build a general reduced density matrix on multiple sites.

Arguments

RedTYPE(qtensorc), out

On exit the reduced density matrix with the sites specified. The first half of the indices corresponds to the kets on each site. The second half corresponds to the bra-indices.

RhoTYPE(qlptnc), in

LPTN to build reduced density matrix from.

sitesINTEGER(*), in

List of sites for the reduced density matrix.

contLOGICAL, in

Indicator if sites are one continuous block of indices (true) or separated by indices to be traced out (false).

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for MPS). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

errREAL, out

Truncation error for tracking it from calling routine.

Source Code

show / hide f90 code
LPTNOps_f90.scale_real_lptn()[source]

fortran-subroutine - June 2017 (dj, updated) Rescale Rho by some factor. The square is taken since X from rho = xxdagger is normalized.

Arguments

scalefactorreal, in

some real number to scale LPTN

RhoTYPE(lptn), inout

Mutliply the orthogonality center (or 1 if no orthogonality center) with a scalar factor).

Details

The tensor is multiplied with sqrt(sc), after the contraction with the complex conjugate this step results in sc.

Source Code

show / hide f90 code
LPTNOps_f90.scale_real_lptnc()[source]

fortran-subroutine - June 2017 (dj, updated) Rescale Rho by some factor. The square is taken since X from rho = xxdagger is normalized.

Arguments

scalefactorreal, in

some real number to scale LPTN

RhoTYPE(lptnc), inout

Mutliply the orthogonality center (or 1 if no orthogonality center) with a scalar factor).

Details

The tensor is multiplied with sqrt(sc), after the contraction with the complex conjugate this step results in sc.

Source Code

show / hide f90 code
LPTNOps_f90.scale_real_qlptn()[source]

fortran-subroutine - June 2017 (dj, updated) Rescale Rho by some factor. The square is taken since X from rho = xxdagger is normalized.

Arguments

scalefactorreal, in

some real number to scale LPTN

RhoTYPE(qlptn), inout

Mutliply the orthogonality center (or 1 if no orthogonality center) with a scalar factor).

Details

The tensor is multiplied with sqrt(sc), after the contraction with the complex conjugate this step results in sc.

Source Code

show / hide f90 code
LPTNOps_f90.scale_real_qlptnc()[source]

fortran-subroutine - June 2017 (dj, updated) Rescale Rho by some factor. The square is taken since X from rho = xxdagger is normalized.

Arguments

scalefactorreal, in

some real number to scale LPTN

RhoTYPE(qlptnc), inout

Mutliply the orthogonality center (or 1 if no orthogonality center) with a scalar factor).

Details

The tensor is multiplied with sqrt(sc), after the contraction with the complex conjugate this step results in sc.

Source Code

show / hide f90 code
LPTNOps_f90.scale_complex_lptnc()[source]

fortran-subroutine - June 2017 (dj, updated) Rescale Rho by some factor. The square is taken since X from rho = xxdagger is normalized.

Arguments

scalefactorcomplex, in

some real number to scale LPTN

RhoTYPE(lptnc), inout

Mutliply the orthogonality center (or 1 if no orthogonality center) with a scalar factor).

Details

The tensor is multiplied with sqrt(sc), after the contraction with the complex conjugate this step results in sc.

Source Code

show / hide f90 code
LPTNOps_f90.scale_complex_qlptnc()[source]

fortran-subroutine - June 2017 (dj, updated) Rescale Rho by some factor. The square is taken since X from rho = xxdagger is normalized.

Arguments

scalefactorcomplex, in

some real number to scale LPTN

RhoTYPE(qlptnc), inout

Mutliply the orthogonality center (or 1 if no orthogonality center) with a scalar factor).

Details

The tensor is multiplied with sqrt(sc), after the contraction with the complex conjugate this step results in sc.

Source Code

show / hide f90 code
LPTNOps_f90.set_q_kappa_qtensor()[source]

fortran-subroutine - October 2017 (dj) Set the quantum number on the kappa link.

Arguments

QtTYPE(qtensor), inout

Tensor to be modified. The quantum numbers of the third leg connecting to the complex conjugate tensor of the LPTN will be set.

Source Code

show / hide f90 code
LPTNOps_f90.set_q_kappa_qtensorc()[source]

fortran-subroutine - October 2017 (dj) Set the quantum number on the kappa link.

Arguments

QtTYPE(qtensorc), inout

Tensor to be modified. The quantum numbers of the third leg connecting to the complex conjugate tensor of the LPTN will be set.

Source Code

show / hide f90 code
LPTNOps_f90.set_q_kappa_tensor()[source]

fortran-subroutine - October 2017 (dj) Set the quantum number on the kappa link.

Arguments

TensTYPE(tensor), inout

Dummy subroutine to provide interface.

Source Code

show / hide f90 code
LPTNOps_f90.set_q_kappa_tensorc()[source]

fortran-subroutine - October 2017 (dj) Set the quantum number on the kappa link.

Arguments

TensTYPE(tensorc), inout

Dummy subroutine to provide interface.

Source Code

show / hide f90 code
LPTNOps_f90.set_0_kappa_qtensor()[source]

fortran-subroutine - October 2017 (dj) Set the quantum number on the kappa link to zero.

Arguments

QtTYPE(qtensor), inout

Tensor to be modified. The quantum numbers of the third leg connecting to the complex conjugate tensor of the LPTN will be set to zero.

Source Code

show / hide f90 code
LPTNOps_f90.set_0_kappa_qtensorc()[source]

fortran-subroutine - October 2017 (dj) Set the quantum number on the kappa link to zero.

Arguments

QtTYPE(qtensorc), inout

Tensor to be modified. The quantum numbers of the third leg connecting to the complex conjugate tensor of the LPTN will be set to zero.

Source Code

show / hide f90 code
LPTNOps_f90.set_0_kappa_tensor()[source]

fortran-subroutine - October 2017 (dj) Set the quantum number on the kappa link to zero.

Arguments

TensTYPE(tensor), inout

Dummy subroutine to provide interface.

Source Code

show / hide f90 code
LPTNOps_f90.set_0_kappa_tensorc()[source]

fortran-subroutine - October 2017 (dj) Set the quantum number on the kappa link to zero.

Arguments

TensTYPE(tensorc), inout

Dummy subroutine to provide interface.

Source Code

show / hide f90 code
LPTNOps_f90.swap_lptn_tensor()[source]

fortran-subroutine - May 2018 (dj) Swap two nearest-neighbor sites in an LPTN.

Arguments

TensaTYPE(tensor), inout

The second index of this tensor is on exit contained in Tensb.

TensbTYPE(tensor), inout

The second index of this tensor is on exit contained in Tensa.

LamTYPE(tensor), inout

On exit, new singular values at splitting Tensa/Tensb.

dirINTEGER, in

Multiply singular values to Tensa for dir < 0 and to Tensa for dir > 0 to Tensb.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

cerrREAL, OPTIONAL, inout

Cumulative error from SVDs.

Source Code

show / hide f90 code
LPTNOps_f90.swap_lptn_tensorc()[source]

fortran-subroutine - May 2018 (dj) Swap two nearest-neighbor sites in an LPTN.

Arguments

TensaTYPE(tensorc), inout

The second index of this tensor is on exit contained in Tensb.

TensbTYPE(tensorc), inout

The second index of this tensor is on exit contained in Tensa.

LamTYPE(tensor), inout

On exit, new singular values at splitting Tensa/Tensb.

dirINTEGER, in

Multiply singular values to Tensa for dir < 0 and to Tensa for dir > 0 to Tensb.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

cerrREAL, OPTIONAL, inout

Cumulative error from SVDs.

Source Code

show / hide f90 code
LPTNOps_f90.swap_lptn_qtensor()[source]

fortran-subroutine - May 2018 (dj) Swap two nearest-neighbor sites in an LPTN.

Arguments

TensaTYPE(qtensor), inout

The second index of this tensor is on exit contained in Tensb.

TensbTYPE(qtensor), inout

The second index of this tensor is on exit contained in Tensa.

LamTYPE(qtensor), inout

On exit, new singular values at splitting Tensa/Tensb.

dirINTEGER, in

Multiply singular values to Tensa for dir < 0 and to Tensa for dir > 0 to Tensb.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

cerrREAL, OPTIONAL, inout

Cumulative error from SVDs.

Source Code

show / hide f90 code
LPTNOps_f90.swap_lptn_qtensorc()[source]

fortran-subroutine - May 2018 (dj) Swap two nearest-neighbor sites in an LPTN.

Arguments

TensaTYPE(qtensorc), inout

The second index of this tensor is on exit contained in Tensb.

TensbTYPE(qtensorc), inout

The second index of this tensor is on exit contained in Tensa.

LamTYPE(qtensor), inout

On exit, new singular values at splitting Tensa/Tensb.

dirINTEGER, in

Multiply singular values to Tensa for dir < 0 and to Tensa for dir > 0 to Tensb.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

cerrREAL, OPTIONAL, inout

Cumulative error from SVDs.

Source Code

show / hide f90 code
LPTNOps_f90.transposed_lptn()[source]

fortran-subroutine - June 2018 (dj) Permute the local Hilbert spaces.

Arguments

PsiTYPE(lptn), inout

Permute LPTN sites in-place. Error can be introduced due to SVDs.

permINTEGER(*), in

Permutation array has length equal to the number of sites L in the LPTN with unique entries 1 to L.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

cerrREAL, OPTIONAL, inout

Cumulative error from SVDs.

Source Code

show / hide f90 code
LPTNOps_f90.transposed_lptnc()[source]

fortran-subroutine - June 2018 (dj) Permute the local Hilbert spaces.

Arguments

PsiTYPE(lptnc), inout

Permute LPTN sites in-place. Error can be introduced due to SVDs.

permINTEGER(*), in

Permutation array has length equal to the number of sites L in the LPTN with unique entries 1 to L.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

cerrREAL, OPTIONAL, inout

Cumulative error from SVDs.

Source Code

show / hide f90 code
LPTNOps_f90.transposed_qlptn()[source]

fortran-subroutine - June 2018 (dj) Permute the local Hilbert spaces.

Arguments

PsiTYPE(qlptn), inout

Permute LPTN sites in-place. Error can be introduced due to SVDs.

permINTEGER(*), in

Permutation array has length equal to the number of sites L in the LPTN with unique entries 1 to L.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

cerrREAL, OPTIONAL, inout

Cumulative error from SVDs.

Source Code

show / hide f90 code
LPTNOps_f90.transposed_qlptnc()[source]

fortran-subroutine - June 2018 (dj) Permute the local Hilbert spaces.

Arguments

PsiTYPE(qlptnc), inout

Permute LPTN sites in-place. Error can be introduced due to SVDs.

permINTEGER(*), in

Permutation array has length equal to the number of sites L in the LPTN with unique entries 1 to L.

truncREAL, OPTIONAL, in

Keep infidelity below trunc (infidelity is sum of squared discarded singular values for LPTN). Default does not truncate.

ncutINTEGER, OPTIONAL, in

Maximal bond dimension / number of singular values. Default is keeping all singular values.

cerrREAL, OPTIONAL, inout

Cumulative error from SVDs.

Source Code

show / hide f90 code
LPTNOps_f90.write_lptn()[source]

fortran-subroutine - August 2015 (dj) Write an LPTN to file

Arguments

RhoTYPE(lptn), in

save this LPTN

unitINTEGER, in

open file on this unit

formCHARACTER, in

Binary (‘B’), human readable (‘H’), or user-friendly (“6”).

Details

For details see the description of the order which the information is written, please see read_lptn

Source Code

show / hide f90 code
LPTNOps_f90.write_lptnc()[source]

fortran-subroutine - August 2015 (dj) Write an LPTN to file

Arguments

RhoTYPE(lptnc), in

save this LPTN

unitINTEGER, in

open file on this unit

formCHARACTER, in

Binary (‘B’), human readable (‘H’), or user-friendly (“6”).

Details

For details see the description of the order which the information is written, please see read_lptnc

Source Code

show / hide f90 code
LPTNOps_f90.write_qlptn()[source]

fortran-subroutine - August 2015 (dj) Write an LPTN to file

Arguments

RhoTYPE(qlptn), in

save this LPTN

unitINTEGER, in

open file on this unit

formCHARACTER, in

Binary (‘B’), human readable (‘H’), or user-friendly (“6”).

Details

For details see the description of the order which the information is written, please see read_qlptn

Source Code

show / hide f90 code
LPTNOps_f90.write_qlptnc()[source]

fortran-subroutine - August 2015 (dj) Write an LPTN to file

Arguments

RhoTYPE(qlptnc), in

save this LPTN

unitINTEGER, in

open file on this unit

formCHARACTER, in

Binary (‘B’), human readable (‘H’), or user-friendly (“6”).

Details

For details see the description of the order which the information is written, please see read_qlptnc

Source Code

show / hide f90 code