From 0fdc5fe27fee9b94f69123d014f2be26e2444c62 Mon Sep 17 00:00:00 2001 From: Tsuyoshi Okubo Date: Mon, 12 Jun 2023 20:05:07 +0900 Subject: [PATCH 01/25] update mptensor --- deps/mptensor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/mptensor b/deps/mptensor index e3cda9b3..33760780 160000 --- a/deps/mptensor +++ b/deps/mptensor @@ -1 +1 @@ -Subproject commit e3cda9b3d7fae02700d7080d7652d43ebb87978e +Subproject commit 33760780dc98d3e060b39450c5e22fcfe80cbe76 From 50232c8b269e77ac4b62f4b64f45095ee5c2056c Mon Sep 17 00:00:00 2001 From: Tsuyoshi Okubo Date: Tue, 13 Jun 2023 16:53:33 +0900 Subject: [PATCH 02/25] core implementation of finite temperature calculation (untested) --- src/iTPS/core/CMakeLists.txt | 2 +- src/iTPS/core/ctm.hpp | 76 +++ src/iTPS/core/ctm_single.cpp | 1126 ++++++++++++++++++++++++++++++++++ src/iTPS/iTPS.cpp | 14 + src/iTPS/iTPS.hpp | 11 +- src/iTPS/measure.cpp | 123 ++++ src/iTPS/onesite_obs.cpp | 68 ++ src/iTPS/optimize.cpp | 9 + src/iTPS/simple_update.cpp | 222 +++++++ src/iTPS/tensors.cpp | 75 +++ src/iTPS/twosite_obs.cpp | 220 +++++++ 11 files changed, 1944 insertions(+), 2 deletions(-) create mode 100644 src/iTPS/core/ctm_single.cpp diff --git a/src/iTPS/core/CMakeLists.txt b/src/iTPS/core/CMakeLists.txt index 39761f36..4e42d4b7 100644 --- a/src/iTPS/core/CMakeLists.txt +++ b/src/iTPS/core/CMakeLists.txt @@ -1,5 +1,5 @@ add_subdirectory(contract_ctm) add_subdirectory(contract_mf) -add_library(iTPS_core STATIC ctm.cpp simple_update.cpp full_update.cpp local_gauge.cpp) +add_library(iTPS_core STATIC ctm.cpp ctm_single.cpp simple_update.cpp full_update.cpp local_gauge.cpp) target_link_libraries(iTPS_core PUBLIC iTPS_contract_ctm iTPS_contract_mf) diff --git a/src/iTPS/core/ctm.hpp b/src/iTPS/core/ctm.hpp index 77ef0732..7d3a2710 100644 --- a/src/iTPS/core/ctm.hpp +++ b/src/iTPS/core/ctm.hpp @@ -34,7 +34,15 @@ void Calc_projector_left_block(const tensor &C1, const tensor &C4, const tensor &Tn1, const tensor &Tn4, const PEPS_Parameters peps_parameters, tensor &PU, tensor &PL); +template +void Calc_projector_left_block_single(const tensor &C1, const tensor &C4, + const tensor &eT1, const tensor &eT6, + const tensor &eT7, const tensor &eT8, + const tensor &Tn1, const tensor &Tn4, + const PEPS_Parameters peps_parameters, + tensor &PU, tensor &PL); + template void Calc_projector_updown_blocks( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, @@ -43,6 +51,15 @@ void Calc_projector_updown_blocks( const tensor &Tn1, const tensor &Tn2, const tensor &Tn3, const tensor &Tn4, const PEPS_Parameters peps_parameters, tensor &PU, tensor &PL); +template +void Calc_projector_updown_blocks_single( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &eT7, const tensor &eT8, + const tensor &Tn1, const tensor &Tn2, const tensor &Tn3, const tensor &Tn4, + const PEPS_Parameters peps_parameters, tensor &PU, tensor &PL); + + template void Calc_Next_CTM(const tensor &C1, const tensor &C4, const tensor &eT1, const tensor &eT6, const tensor &PU, const tensor &PL, @@ -52,6 +69,16 @@ template void Calc_Next_eT(const tensor &eT8, const tensor &Tn1, const tensor &PU, const tensor &PL, tensor &eT_out); +template +void Calc_Next_CTM_single(const tensor &C1, const tensor &C4, const tensor &eT1, + const tensor &eT6, const tensor &PU, const tensor &PL, + tensor &C1_out, tensor &C4_out); + +template +void Calc_Next_eT_single(const tensor &eT8, const tensor &Tn1, const tensor &PU, + const tensor &PL, tensor &eT_out); + + template void Left_move(std::vector &C1, const std::vector &C2, const std::vector &C3, std::vector &C4, @@ -106,6 +133,55 @@ int Calc_CTM_Environment(std::vector &C1, std::vector &C2, const PEPS_Parameters peps_parameters, const SquareLattice lattice, bool initialize = true); + + +template +void Left_move_single(std::vector &C1, const std::vector &C2, + const std::vector &C3, std::vector &C4, + const std::vector &eTt, const std::vector &eTr, + const std::vector &eTb, std::vector &eTl, + const std::vector &Tn, const int ix, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice); + +template +void Right_move_single(const std::vector &C1, std::vector &C2, + std::vector &C3, const std::vector &C4, + const std::vector &eTt, std::vector &eTr, + const std::vector &eTb, const std::vector &eTl, + const std::vector &Tn, const int ix, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice); + +template +void Top_move_single(std::vector &C1, std::vector &C2, + const std::vector &C3, const std::vector &C4, + std::vector &eTt, const std::vector &eTr, + const std::vector &eTb, const std::vector &eTl, + const std::vector &Tn, const int iy, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice); + +template +void Bottom_move_single(const std::vector &C1, const std::vector &C2, + std::vector &C3, std::vector &C4, + const std::vector &eTt, const std::vector &eTr, + std::vector &eTb, const std::vector &eTl, + const std::vector &Tn, const int iy, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice); + +template +int Calc_CTM_Environment_density(std::vector &C1, std::vector &C2, + std::vector &C3, std::vector &C4, + std::vector &eTt, std::vector &eTr, + std::vector &eTb, std::vector &eTl, + const std::vector &Tn, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice, bool initialize = true); + +template +std::vector Make_single_tensor_density(const std::vector &Tn); } // end of namespace core } // namespace itps } // namespace tenes diff --git a/src/iTPS/core/ctm_single.cpp b/src/iTPS/core/ctm_single.cpp new file mode 100644 index 00000000..6b60e1c4 --- /dev/null +++ b/src/iTPS/core/ctm_single.cpp @@ -0,0 +1,1126 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "ctm.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../../SquareLattice.hpp" +#include "../../tensor.hpp" +#include "../PEPS_Parameters.hpp" + +namespace tenes { +namespace itps { +namespace core { + +using mptensor::Axes; +using mptensor::Index; +using mptensor::Shape; + +template +std::vector Make_single_tensor_density(const std::vector &Tn){ + std::vector Tn_single; + Index index; + for (int num = 0; num < Tn.size(); ++num) { + const auto comm = Tn[num].get_comm(); + tensor identity_matrix(comm, Shape(Tn[num].shape()[4], Tn[num].shape()[4])); + for (int i = 0; i < identity_matrix.local_size(); i++) { + index = identity_matrix.global_index(i); + if (index[0] == index[1]) { + identity_matrix.set_value(index, 1.0); + } else { + identity_matrix.set_value(index, 0.0); + } + } + + //Tn_single.push_back(mptensor:trace(Tn[num], Axes(4), Axes(5))); + Tn_single.push_back(tensordot(Tn[num], identity_matrix, Axes(4,5), Axes(0,1))); + } + return Tn_single; +} + +template +class Mult_col_single { + public: + Mult_col_single(const tensor <, const tensor &LB) : LT_(LT), LB_(LB){}; + tensor operator()(const tensor &T_in) { + return tensordot(LT_, tensordot(LB_, T_in, Axes(1), Axes(0)), + Axes(0), Axes(0)); + } + + private: + const tensor <_; + const tensor &LB_; +}; + +template +class Mult_row_single { + public: + Mult_row_single(const tensor <, const tensor &LB) : LT_(LT), LB_(LB){}; + tensor operator()(const tensor &T_in) { + return tensordot(tensordot(T_in, LT_, Axes(0), Axes(1)), LB_, + Axes(1), Axes(0)); + } + + private: + const tensor <_; + const tensor &LB_; +}; + +template +class Mult_col_ud_single { + public: + Mult_col_ud_single(const tensor <, const tensor &RT, const tensor &RB, + const tensor &LB) + : LT_(LT), RT_(RT), RB_(RB), LB_(LB){}; + tensor operator()(const tensor &T_in) { + return tensordot( + RT_, + tensordot( + LT_, + tensordot(LB_, tensordot(RB_, T_in, Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(0), Axes(0)), + Axes(0), Axes(0)); + } + + private: + const tensor <_; + const tensor &RT_; + const tensor &RB_; + const tensor &LB_; +}; + +template +class Mult_row_ud_single { + public: + Mult_row_ud_single(const tensor <, const tensor &RT, const tensor &RB, + const tensor &LB) + : LT_(LT), RT_(RT), RB_(RB), LB_(LB){}; + tensor operator()(const tensor &T_in) { + return tensordot( + tensordot(tensordot(tensordot(T_in, RT_, Axes(0), Axes(1)), + LT_, Axes(1), Axes(1)), + LB_, Axes(1), Axes(0)), + RB_, Axes(1), Axes(0)); + } + + private: + const tensor <_; + const tensor &RT_; + const tensor &RB_; + const tensor &LB_; +}; + +template +void Calc_projector_left_block_single(const tensor &C1, const tensor &C4, + const tensor &eT1, const tensor &eT6, + const tensor &eT7, const tensor &eT8, + const tensor &Tn1_s, const tensor &Tn4_s, + const PEPS_Parameters peps_parameters, + tensor &PU, tensor &PL) { + // Original (cheaper version of P. Corboz, T.M.Rice and M. Troyer, PRL 113, + // 046402(2014)) + + int e12 = eT1.shape()[1]; + int e56 = eT6.shape()[0]; + int e78 = eT8.shape()[0]; + int t12 = Tn1_s.shape()[2]; + int t41 = Tn1_s.shape()[3]; + int t34 = Tn4_s.shape()[2]; + + if (t41 != 1) { + /* + ############################## + # (((C1*eT1)*eT8)*Tn1_s) + # cpu_cost= 2.1e+08 memory= 2.01e+06 + # final_bond_order (e78, t41, e12, t12) + ############################## + */ + tensor LT = + reshape(tensordot(tensordot(tensordot(C1, eT1, Axes(1), Axes(0)), eT8, + Axes(0), Axes(1)), + Tn1_s, Axes(1, 3), Axes(1, 0)).transpose(Axes(1, 3, 0, 2)), + Shape(e78 * t41, e12 * t12)); + + /* + ############################## + # (((C4*eT7)*eT6)*Tn4_s) + # cpu_cost= 2.1e+08 memory= 2.01e+06 + # final_bond_order (e78, t41, e56, t34) + ############################## + */ + tensor LB = + reshape(tensordot(tensordot(tensordot(C4, eT7, Axes(1), Axes(0)), eT6, + Axes(0), Axes(1)), + Tn4_s, Axes(1, 3), Axes(0, 3)).transpose(Axes(0, 2, 1, 3)), + Shape(e78 * t41, e56 * t34)); + + // tensor R1 = LT; + // tensor R2 = LB; + if ((t12 != 1 && t34 != 1) && peps_parameters.Use_RSVD) { + Mult_col_single m_col(LT, LB); + Mult_row_single m_row(LT, LB); + + tensor U; + tensor VT; + std::vector s; + + Shape shape_row(e12 * t12); + Shape shape_col(e56 * t34); + + /*int info ()= */ + rsvd(m_row, m_col, shape_row, shape_col, U, s, VT, e78, + static_cast(peps_parameters.RSVD_Oversampling_factor * e78)); + double denom = s[0]; + + for (int i = 0; i < e78; ++i) { + if (s[i] / denom > peps_parameters.Inverse_projector_cut) { + s[i] = 1.0 / sqrt(s[i]); + } else { + s[i] = 0.0; + } + } + + U.multiply_vector(s, 1); + VT.multiply_vector(s, 0); + + PU = reshape(tensordot(LB, conj(VT), Axes(1), Axes(1)), Shape(e78, t41, e78)); + PL = reshape(tensordot(LT, conj(U), Axes(1), Axes(0)), Shape(e78, t41, e78)); + + } else { + // full svd // + tensor U; + tensor VT; + std::vector s; + + /* int info = */ + svd(tensordot(LT, LB, Axes(0), Axes(0)), Axes(1), + Axes(1), U, s, VT); + double denom = s[0]; + std::vector s_c; + s_c.resize(e78); + + for (int i = 0; i < e78; ++i) { + if (s[i] / denom > peps_parameters.Inverse_projector_cut) { + s_c[i] = 1.0 / sqrt(s[i]); + } else { + s_c[i] = 0.0; + } + } + // O(D^{10}) + tensor U_c = mptensor::slice(U, 1, 0, e78); + tensor VT_c = mptensor::slice(VT, 0, 0, e78); + + U_c.multiply_vector(s_c, 1); + VT_c.multiply_vector(s_c, 0); + + PU = reshape(tensordot(LB, conj(VT), Axes(1), Axes(1)), Shape(e78, t41, e78)); + PL = reshape(tensordot(LT, conj(U), Axes(1), Axes(0)), Shape(e78, t41, e78)); + } + } else { + const auto comm = C1.get_comm(); + tensor identity_matrix(comm, Shape(e78, e78)); + Index index; + for (int i = 0; i < identity_matrix.local_size(); i++) { + index = identity_matrix.global_index(i); + if (index[0] == index[1]) { + identity_matrix.set_value(index, 1.0); + } else { + identity_matrix.set_value(index, 0.0); + } + } + PU = reshape(identity_matrix, Shape(e78, t41, e78)); + PL = reshape(identity_matrix, Shape(e78, t41, e78)); + } +} + +template +void Calc_projector_updown_blocks_single( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &eT7, const tensor &eT8, + const tensor &Tn1_s, const tensor &Tn2_s, const tensor &Tn3_s, const tensor &Tn4_s, + const PEPS_Parameters peps_parameters, tensor &PU, tensor &PL) { + // based on P. Corboz, T.M.Rice and M. Troyer, PRL 113, 046402(2014) + + // comment out for unused variables + int e12 = eT1.shape()[1]; + int e34 = eT3.shape()[1]; + int e56 = eT5.shape()[1]; + int e78 = eT7.shape()[1]; + int t12 = Tn1_s.shape()[2]; + int t23 = Tn2_s.shape()[3]; + int t34 = Tn3_s.shape()[0]; + int t41 = Tn4_s.shape()[1]; + + if (t41 != 1) { + /* + ############################## + # (((C1*eT1)*eT8)*Tn1_s) + # cpu_cost= 2.1e+08 memory= 2.01e+06 + # final_bond_order (e78, t41, e12, t12) + ############################## + */ + tensor LT = + reshape(tensordot(tensordot(tensordot(C1, eT1, Axes(1), Axes(0)), eT8, + Axes(0), Axes(1)), + Tn1_s, Axes(1, 3), Axes(1, 0)).transpose(Axes(1, 3, 0, 2)), + Shape(e78 * t41, e12 * t12)); + + /* + ############################## + # (((C2*eT3)*eT2)*Tn2_s) + # cpu_cost= 2.1e+08 memory= 2.01e+06 + # final_bond_order (e12, t12, e34, t23) + ############################## + */ + + tensor RT = + reshape(tensordot(tensordot(tensordot(C2, eT3, Axes(1), Axes(0)), eT2, + Axes(0), Axes(1)), + Tn2_s, Axes(1, 3), Axes(2, 1)).transpose(Axes(1, 2, 0, 3)), + Shape(e12 * t12, e34 * t23)); + + /* + ############################## + # (((C3*eT5)*eT4)*Tn3_s) + # cpu_cost= 2.1e+08 memory= 2.01e+06 + # final_bond_order (e56, t34, e34, t23) + ############################## + */ + tensor RB = + reshape(tensordot(tensordot(tensordot(C3, eT5, Axes(1), Axes(0)), eT4, + Axes(0), Axes(1)), + Tn3_s, Axes(1, 3), Axes(3, 2)).transpose(Axes(0, 2, 1, 3)), + Shape(e56 * t34, e34 * t23)); + + /* + ############################## + # (((C4*eT7)*eT6)*Tn4_s) + # cpu_cost= 2.1e+08 memory= 2.01e+06 + # final_bond_order (e78, t41, e56, t34) + ############################## + */ + tensor LB = + reshape(tensordot(tensordot(tensordot(C4, eT7, Axes(1), Axes(0)), eT6, + Axes(0), Axes(1)), + Tn4_s, Axes(1, 3), Axes(0, 3)).transpose(Axes(0, 2, 1, 3)), + Shape(e78 * t41, e56 * t34)); + + if (t23 != 1 && peps_parameters.Use_RSVD) { + Mult_col_ud_single m_col(LT, RT, RB, LB); + Mult_row_ud_single m_row(LT, RT, RB, LB); + + tensor U; + tensor VT; + std::vector s; + + Shape shape_row(e34 * t23); + Shape shape_col(e34 * t23); + + /* int info = */ + rsvd(m_row, m_col, shape_row, shape_col, U, s, VT, e78, + static_cast(peps_parameters.RSVD_Oversampling_factor * e78)); + double denom = s[0]; + + for (int i = 0; i < e78; ++i) { + if (s[i] / denom > peps_parameters.Inverse_projector_cut) { + s[i] = 1.0 / sqrt(s[i]); + } else { + s[i] = 0.0; + } + } + + U.multiply_vector(s, 1); + VT.multiply_vector(s, 0); + + PU = reshape(tensordot(LB, tensordot(RB, conj(VT), Axes(1), Axes(1)), + Axes(1), Axes(0)), + Shape(e78, t41, e78)); + PL = reshape(tensordot(LT, tensordot(RT, conj(U), Axes(1), Axes(0)), + Axes(1), Axes(0)), + Shape(e78, t41, e78)); + + } else { + // full svd + tensor R1 = tensordot(RT, LT, Axes(0), Axes(1)); + tensor R2 = tensordot(RB, LB, Axes(0), Axes(1)); + + tensor U; + tensor VT; + std::vector s; + + /* int info = */ + svd(tensordot(R1, R2, Axes(1), Axes(1)), Axes(0), + Axes(0), U, s, VT); + double denom = s[0]; + std::vector s_c; + s_c.resize(e78); + + for (int i = 0; i < e78; ++i) { + if (s[i] / denom > peps_parameters.Inverse_projector_cut) { + s_c[i] = 1.0 / sqrt(s[i]); + } else { + s_c[i] = 0.0; + } + } + tensor U_c = mptensor::slice(U, 1, 0, e78); + tensor VT_c = mptensor::slice(VT, 0, 0, e78); + + U_c.multiply_vector(s_c, 1); + VT_c.multiply_vector(s_c, 0); + + PU = reshape(tensordot(R2, conj(VT_c), Axes(0), Axes(1)), Shape(e78, t41, e78)); + PL = reshape(tensordot(R1, conj(U_c), Axes(0), Axes(0)), Shape(e78, t41, e78)); + } + } else { + const MPI_Comm comm = C1.get_comm(); + tensor identity_matrix(comm, Shape(e78, e78)); + Index index; + for (int i = 0; i < identity_matrix.local_size(); i++) { + index = identity_matrix.global_index(i); + if (index[0] == index[1]) { + identity_matrix.set_value(index, 1.0); + } else { + identity_matrix.set_value(index, 0.0); + } + } + PU = reshape(identity_matrix, Shape(e78, t41, e78)); + PL = reshape(identity_matrix, Shape(e78, t41, e78)); + } +} + +template +void Calc_Next_CTM_single(const tensor &C1, const tensor &C4, const tensor &eT1, + const tensor &eT6, const tensor &PU, const tensor &PL, + tensor &C1_out, tensor &C4_out) { + C1_out = tensordot(PU, tensordot(C1, eT1, Axes(1), Axes(0)), Axes(0, 1), + Axes(0, 2)); + C4_out = tensordot(tensordot(eT6, C4, Axes(1), Axes(0)), PL, Axes(2, 1), + Axes(0, 1)); + + + double max_all = max_abs(C1_out); + C1_out /= max_all; + max_all = max_abs(C4_out); + C4_out /= max_all; +} + +template +void Calc_Next_eT_single(const tensor &eT8, const tensor &Tn1_s, const tensor &PU, + const tensor &PL, tensor &eT_out) { + /* + ############################## + # ((Tn1_s*(eT8*PL))*PU) + # cpu_cost= 3e+08 memory= 2.11e+06 + # final_bond_order (n0, n1, k2) + ############################## + */ + + eT_out = tensordot(tensordot(Tn1_s, + tensordot(eT8, PL, Axes(1), Axes(0)), + Axes(0, 1), Axes(1, 2)), + PU, Axes(1, 2), Axes(1, 0)) + .transpose(Axes(2, 1, 0)); + + + double max_all = max_abs(eT_out); + eT_out /= max_all; +} + +/* + * corner and edge tensor + * + * C1 t C2 + * l . r + * C4 b C3 + */ + +template +void Left_move_single(std::vector &C1, const std::vector &C2, + const std::vector &C3, std::vector &C4, + const std::vector &eTt, const std::vector &eTr, + const std::vector &eTb, std::vector &eTl, + const std::vector &Tn_single, const int ix, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice) { + /* Do one step left move absoving X=ix column + part of C1, C4, eTl will be modified */ + + std::vector PUs, PLs; + PUs.resize(lattice.LY); + PLs.resize(lattice.LY); + int i, j, k, l; + for (int iy = 0; iy < lattice.LY; ++iy) { + i = lattice.index_fast(ix, iy); + j = lattice.right(i); + k = lattice.bottom(j); + l = lattice.left(k); + + if (peps_parameters.CTM_Projector_corner) { + Calc_projector_left_block_single(C1[i], C4[l], eTt[i], eTb[l], eTl[l], eTl[i], + Tn_single[i], Tn_single[l], peps_parameters, PUs[iy], + PLs[iy]); + } else { + Calc_projector_updown_blocks_single(C1[i], C2[j], C3[k], C4[l], eTt[i], eTt[j], + eTr[j], eTr[k], eTb[k], eTb[l], eTl[l], + eTl[i], Tn_single[i], Tn_single[j], Tn_single[k], Tn_single[l], + peps_parameters, PUs[iy], PLs[iy]); + } + } + // update + std::vector C1_bak(lattice.N_UNIT), C4_bak(lattice.N_UNIT), + eTl_bak(lattice.N_UNIT); + for (int num = 0; num < lattice.N_UNIT; num++) { + C1_bak[num] = C1[num]; + C4_bak[num] = C4[num]; + eTl_bak[num] = eTl[num]; + } + int iy_up, iy_down; + for (int iy = 0; iy < lattice.LY; ++iy) { + i = lattice.index_fast(ix, iy); + j = lattice.right(i); + k = lattice.bottom(j); + l = lattice.left(k); + iy_up = (iy + 1) % lattice.LY; + iy_down = (iy - 1 + lattice.LY) % lattice.LY; + + Calc_Next_CTM_single(C1_bak[i], C4_bak[l], eTt[i], eTb[l], PUs[iy_up], + PLs[iy_down], C1[j], C4[k]); + Calc_Next_eT_single(eTl_bak[i], Tn_single[i], PUs[iy], PLs[iy_up], eTl[j]); + Calc_Next_eT_single(eTl_bak[l], Tn_single[l], PUs[iy_down], PLs[iy], eTl[k]); + } +} + +template +void Right_move_single(const std::vector &C1, std::vector &C2, + std::vector &C3, const std::vector &C4, + const std::vector &eTt, std::vector &eTr, + const std::vector &eTb, const std::vector &eTl, + const std::vector &Tn_single, const int ix, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice) { + /* + Do one step right move absorbing X=ix column + part of C2, C3, eTr will be modified + */ + std::vector PUs, PLs; + PUs.resize(lattice.LY); + PLs.resize(lattice.LY); + int i, j, k, l; + for (int iy = 0; iy < lattice.LY; ++iy) { + k = lattice.index_fast(ix, iy); + l = lattice.left(k); + i = lattice.top(l); + j = lattice.right(i); + + if (peps_parameters.CTM_Projector_corner) { + Calc_projector_left_block_single(C3[k], C2[j], eTb[k], eTt[j], eTr[j], eTr[k], + transpose(Tn_single[k], Axes(2, 3, 0, 1)), + transpose(Tn_single[j], Axes(2, 3, 0, 1)), + peps_parameters, PUs[iy], PLs[iy]); + } else { + Calc_projector_updown_blocks_single( + C3[k], C4[l], C1[i], C2[j], eTb[k], eTb[l], eTl[l], eTl[i], eTt[i], + eTt[j], eTr[j], eTr[k], transpose(Tn_single[k], Axes(2, 3, 0, 1)), + transpose(Tn_single[l], Axes(2, 3, 0, 1)), + transpose(Tn_single[i], Axes(2, 3, 0, 1)), + transpose(Tn_single[j], Axes(2, 3, 0, 1)), peps_parameters, PUs[iy], + PLs[iy]); + } + } + // update + std::vector C2_bak(lattice.N_UNIT), C3_bak(lattice.N_UNIT), + eTr_bak(lattice.N_UNIT); + for (int num = 0; num < lattice.N_UNIT; num++) { + C2_bak[num] = C2[num]; + C3_bak[num] = C3[num]; + eTr_bak[num] = eTr[num]; + } + int iy_up, iy_down; + for (int iy = 0; iy < lattice.LY; ++iy) { + k = lattice.index_fast(ix, iy); + l = lattice.left(k); + i = lattice.top(l); + j = lattice.right(i); + + iy_up = (iy + 1) % lattice.LY; + iy_down = (iy - 1 + lattice.LY) % lattice.LY; + + Calc_Next_CTM_single(C3_bak[k], C2_bak[j], eTb[k], eTt[j], PUs[iy_down], + PLs[iy_up], C3[l], C2[i]); + + Calc_Next_eT_single(eTr_bak[k], transpose(Tn_single[k], Axes(2, 3, 0, 1)), PUs[iy], + PLs[iy_down], eTr[l]); + Calc_Next_eT_single(eTr_bak[j], transpose(Tn_single[j], Axes(2, 3, 0, 1)), PUs[iy_up], + PLs[iy], eTr[i]); + } +} + +template +void Top_move_single(std::vector &C1, std::vector &C2, + const std::vector &C3, const std::vector &C4, + std::vector &eTt, const std::vector &eTr, + const std::vector &eTb, const std::vector &eTl, + const std::vector &Tn_single, const int iy, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice) { + /* + ## Do one step top move absorbing Y=iy row + ## part of C1, C2, eTt will be modified + */ + std::vector PUs, PLs; + PUs.resize(lattice.LX); + PLs.resize(lattice.LX); + int i, j, k, l; + for (int ix = 0; ix < lattice.LX; ++ix) { + j = lattice.index_fast(ix, iy); + k = lattice.bottom(j); + l = lattice.left(k); + i = lattice.top(l); + + if (peps_parameters.CTM_Projector_corner) { + Calc_projector_left_block_single(C2[j], C1[i], eTr[j], eTl[i], eTt[i], eTt[j], + transpose(Tn_single[j], Axes(1, 2, 3, 0)), + transpose(Tn_single[i], Axes(1, 2, 3, 0)), + peps_parameters, PUs[ix], PLs[ix]); + } else { + Calc_projector_updown_blocks_single( + C2[j], C3[k], C4[l], C1[i], eTr[j], eTr[k], eTb[k], eTb[l], eTl[l], + eTl[i], eTt[i], eTt[j], transpose(Tn_single[j], Axes(1, 2, 3, 0)), + transpose(Tn_single[k], Axes(1, 2, 3, 0)), + transpose(Tn_single[l], Axes(1, 2, 3, 0)), + transpose(Tn_single[i], Axes(1, 2, 3, 0)), peps_parameters, PUs[ix], + PLs[ix]); + } + } + // update + std::vector C1_bak(lattice.N_UNIT), C2_bak(lattice.N_UNIT), + eTt_bak(lattice.N_UNIT); + for (int num = 0; num < lattice.N_UNIT; num++) { + C1_bak[num] = C1[num]; + C2_bak[num] = C2[num]; + eTt_bak[num] = eTt[num]; + } + int ix_right, ix_left; + for (int ix = 0; ix < lattice.LX; ++ix) { + j = lattice.index_fast(ix, iy); + k = lattice.bottom(j); + l = lattice.left(k); + i = lattice.top(l); + + ix_right = (ix + 1) % lattice.LX; + ix_left = (ix - 1 + lattice.LX) % lattice.LX; + + Calc_Next_CTM_single(C2_bak[j], C1_bak[i], eTr[j], eTl[i], PUs[ix_right], + PLs[ix_left], C2[k], C1[l]); + + Calc_Next_eT_single(eTt_bak[j], transpose(Tn_single[j], Axes(1, 2, 3, 0)), PUs[ix], + PLs[ix_right], eTt[k]); + Calc_Next_eT_single(eTt_bak[i], transpose(Tn_single[i], Axes(1, 2, 3, 0)), + PUs[ix_left], PLs[ix], eTt[l]); + } +} + +template +void Bottom_move_single(const std::vector &C1, const std::vector &C2, + std::vector &C3, std::vector &C4, + const std::vector &eTt, const std::vector &eTr, + std::vector &eTb, const std::vector &eTl, + const std::vector &Tn_single, const int iy, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice) { + /* + ## Do one step bottom move absorbing Y=iy row + ## part of C3, C4, eTb will be modified + */ + + std::vector PUs, PLs; + PUs.resize(lattice.LX); + PLs.resize(lattice.LX); + int i, j, k, l; + for (int ix = 0; ix < lattice.LX; ++ix) { + l = lattice.index_fast(ix, iy); + i = lattice.top(l); + j = lattice.right(i); + k = lattice.bottom(j); + + if (peps_parameters.CTM_Projector_corner) { + Calc_projector_left_block_single(C4[l], C3[k], eTl[l], eTr[k], eTb[k], eTb[l], + transpose(Tn_single[l], Axes(3, 0, 1, 2)), + transpose(Tn_single[k], Axes(3, 0, 1, 2)), + peps_parameters, PUs[ix], PLs[ix]); + } else { + Calc_projector_updown_blocks_single( + C4[l], C1[i], C2[j], C3[k], eTl[l], eTl[i], eTt[i], eTt[j], eTr[j], + eTr[k], eTb[k], eTb[l], transpose(Tn_single[l], Axes(3, 0, 1, 2)), + transpose(Tn_single[i], Axes(3, 0, 1, 2)), + transpose(Tn_single[j], Axes(3, 0, 1, 2)), + transpose(Tn_single[k], Axes(3, 0, 1, 2)), peps_parameters, PUs[ix], + PLs[ix]); + } + } + + // update + std::vector C3_bak(lattice.N_UNIT), C4_bak(lattice.N_UNIT), + eTb_bak(lattice.N_UNIT); + for (int num = 0; num < lattice.N_UNIT; num++) { + C3_bak[num] = C3[num]; + C4_bak[num] = C4[num]; + eTb_bak[num] = eTb[num]; + } + int ix_left, ix_right; + for (int ix = 0; ix < lattice.LX; ++ix) { + l = lattice.index_fast(ix, iy); + i = lattice.top(l); + j = lattice.right(i); + k = lattice.bottom(j); + + ix_right = (ix + 1) % lattice.LX; + ix_left = (ix - 1 + lattice.LX) % lattice.LX; + + Calc_Next_CTM_single(C4_bak[l], C3_bak[k], eTl[l], eTr[k], PUs[ix_left], + PLs[ix_right], C4[i], C3[j]); + + Calc_Next_eT_single(eTb_bak[l], transpose(Tn_single[l], Axes(3, 0, 1, 2)), PUs[ix], + PLs[ix_left], eTb[i]); + Calc_Next_eT_single(eTb_bak[k], transpose(Tn_single[k], Axes(3, 0, 1, 2)), + PUs[ix_right], PLs[ix], eTb[j]); + } +} + +template +int Calc_CTM_Environment_density(std::vector &C1, std::vector &C2, + std::vector &C3, std::vector &C4, + std::vector &eTt, std::vector &eTr, + std::vector &eTb, std::vector &eTl, + const std::vector &Tn, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice, bool initialize) { + /* + ## Calc environment tensors + ## C1,C2,C3,C4 and eTt,eTl,eTr,eTb will be modified + */ + // Initialize + + std::vector Tn_single = Make_single_tensor_density(Tn); + if (initialize) { + int num, d1, d2, d34; + Index index; + tensor Projector; + + for (int i = 0; i < lattice.N_UNIT; ++i) { + num = lattice.top(lattice.left(i)); + d1 = Tn[num].shape()[3]; + d2 = Tn[num].shape()[2]; + C1[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 0, 0, 1), 1, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); + if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { + C1[i] = extend(C1[i], Shape(peps_parameters.CHI, peps_parameters.CHI)); + + } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { + C1[i] = mptensor::slice(mptensor::slice(C1[i], 0, 0, peps_parameters.CHI), 1, 0, + peps_parameters.CHI); + } else if (d1 < peps_parameters.CHI) { + // d2 >= CHI + C1[i] = extend(mptensor::slice(C1[i], 1, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI)); + } else { + // d1 >= CHI + // d2 < CHI + + C1[i] = extend(mptensor::slice(C1[i], 0, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI)); + } + + num = lattice.top(lattice.right(i)); + d1 = Tn[num].shape()[0]; + d2 = Tn[num].shape()[3]; + C1[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 0, 0, 1), 1, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); + + C2[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 1, 0, 1), 2, 0, 1), Shape(d1,d2)); + + if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { + C2[i] = extend(C2[i], Shape(peps_parameters.CHI, peps_parameters.CHI)); + } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { + C2[i] = mptensor::slice(mptensor::slice(C2[i], 0, 0, peps_parameters.CHI), 1, 0, + peps_parameters.CHI); + } else if (d1 < peps_parameters.CHI) { + // d2 >= CHI + C2[i] = extend(mptensor::slice(C2[i], 1, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI)); + } else { + // d1 >= CHI + // d2 < CHI + C2[i] = extend(mptensor::slice(C2[i], 0, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI)); + } + + num = lattice.bottom(lattice.right(i)); + d1 = Tn[num].shape()[1]; + d2 = Tn[num].shape()[0]; + C3[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 2, 0, 1), 3, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); + + if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { + C3[i] = extend(C3[i], Shape(peps_parameters.CHI, peps_parameters.CHI)); + } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { + C3[i] = mptensor::slice(mptensor::slice(C3[i], 0, 0, peps_parameters.CHI), 1, 0, + peps_parameters.CHI); + } else if (d1 < peps_parameters.CHI) { + // d2 >= CHI + C3[i] = extend(mptensor::slice(C3[i], 1, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI)); + } else { + // d1 >= CHI + // d2 < CHI + C3[i] = extend(mptensor::slice(C3[i], 0, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI)); + } + + num = lattice.bottom(lattice.left(i)); + d1 = Tn[num].shape()[2] * Tn[num].shape()[2]; + d2 = Tn[num].shape()[1] * Tn[num].shape()[1]; + C4[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 0, 0, 1), 3, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); + + if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { + C4[i] = extend(C4[i], Shape(peps_parameters.CHI, peps_parameters.CHI)); + } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { + C4[i] = mptensor::slice(mptensor::slice(C4[i], 0, 0, peps_parameters.CHI), 1, 0, + peps_parameters.CHI); + } else if (d1 < peps_parameters.CHI) { + // d2 >= CHI + C4[i] = extend(mptensor::slice(C4[i], 1, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI)); + } else { + // d1 >= CHI + // d2 < CHI + C4[i] = extend(mptensor::slice(C4[i], 0, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI)); + } + + num = lattice.top(i); + d1 = Tn[num].shape()[0]; + d2 = Tn[num].shape()[2]; + d34 = Tn[num].shape()[3]; + eTt[i] = reshape(mptensor::slice(Tn_single[num], 1, 0, 1), Shape(d1, d2, d34)); + + if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { + eTt[i] = extend( + eTt[i], Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { + eTt[i] = mptensor::slice(mptensor::slice(eTt[i], 0, 0, peps_parameters.CHI), 1, 0, + peps_parameters.CHI); + } else if (d1 < peps_parameters.CHI) { + // d2 >= CHI + eTt[i] = + extend(mptensor::slice(eTt[i], 1, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } else { + // d1 >= CHI + // d2 < CHI + eTt[i] = + extend(mptensor::slice(eTt[i], 0, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } + + num = lattice.right(i); + d1 = Tn[num].shape()[1]; + d2 = Tn[num].shape()[3]; + d34 = Tn[num].shape()[0]; + eTr[i] = reshape(mptensor::slice(Tn_single[num], 2, 0, 1), Shape(d34, d1, d2)).transpose(Axes(1, 2, 0)); + + if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { + eTr[i] = extend( + eTr[i], Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { + eTr[i] = mptensor::slice(mptensor::slice(eTr[i], 0, 0, peps_parameters.CHI), 1, 0, + peps_parameters.CHI); + } else if (d1 < peps_parameters.CHI) { + // d2 >= CHI + eTr[i] = + extend(mptensor::slice(eTr[i], 1, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } else { + // d1 >= CHI + // d2 < CHI + eTr[i] = + extend(mptensor::slice(eTr[i], 0, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } + + num = lattice.bottom(i); + d1 = Tn[num].shape()[2]; + d2 = Tn[num].shape()[0]; + d34 = Tn[num].shape()[1]; + eTb[i] = reshape(mptensor::slice(Tn_single[num], 3, 0, 1), Shape(d2, d34, d1)).transpose(Axes(2, 0, 1)); + + if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { + eTb[i] = extend( + eTb[i], Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { + eTb[i] = mptensor::slice(mptensor::slice(eTb[i], 0, 0, peps_parameters.CHI), 1, 0, + peps_parameters.CHI); + } else if (d1 < peps_parameters.CHI) { + // d2 >= CHI + eTb[i] = + extend(mptensor::slice(eTb[i], 1, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } else { + // d1 >= CHI + // d2 < CHI + eTb[i] = + extend(mptensor::slice(eTb[i], 0, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } + + num = lattice.left(i); + d1 = Tn[num].shape()[3]; + d2 = Tn[num].shape()[1]; + d34 = Tn[num].shape()[2]; + eTl[i] = reshape(mptensor::slice(Tn_single[num], 0, 0, 1), Shape(d2, d34, d1)).transpose(Axes(2, 0, 1)); + + if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { + eTl[i] = extend( + eTl[i], Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { + eTl[i] = mptensor::slice(mptensor::slice(eTl[i], 0, 0, peps_parameters.CHI), 1, 0, + peps_parameters.CHI); + } else if (d1 < peps_parameters.CHI) { + // d2 >= CHI + eTl[i] = + extend(mptensor::slice(eTl[i], 1, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } else { + // d1 >= CHI + // d2 < CHI + eTl[i] = + extend(mptensor::slice(eTl[i], 0, 0, peps_parameters.CHI), + Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); + } + } + } + // Initialize done + + bool convergence = false; + int count = 0; + std::vector C1_old = C1; + std::vector C2_old = C2; + std::vector C3_old = C3; + std::vector C4_old = C4; + + double sig_max = 0.0; + while ((!convergence) && (count < peps_parameters.Max_CTM_Iteration)) { + // left move + for (int ix = 0; ix < lattice.LX; ++ix) { + Left_move_single(C1, C2, C3, C4, eTt, eTr, eTb, eTl, Tn_single, ix, peps_parameters, + lattice); + } + + // right move + for (int ix = 0; ix > -lattice.LX; --ix) { + Right_move_single(C1, C2, C3, C4, eTt, eTr, eTb, eTl, Tn_single, + (ix + 1 + lattice.LX) % lattice.LX, peps_parameters, lattice); + } + + // top move + for (int iy = 0; iy > -lattice.LY; --iy) { + Top_move_single(C1, C2, C3, C4, eTt, eTr, eTb, eTl, Tn_single, + (iy + 1 + lattice.LY) % lattice.LY, peps_parameters, lattice); + } + + // bottom move + + for (int iy = 0; iy < lattice.LY; ++iy) { + Bottom_move_single(C1, C2, C3, C4, eTt, eTr, eTb, eTl, Tn_single, iy, peps_parameters, + lattice); + } + + convergence = + Check_Convergence_CTM(C1, C2, C3, C4, C1_old, C2_old, C3_old, C4_old, + peps_parameters, lattice, sig_max); + count += 1; + + C1_old = C1; + C2_old = C2; + C3_old = C3; + C4_old = C4; + if (peps_parameters.print_level >= PrintLevel::debug) { + std::cout << "CTM: count, sig_max " << count << " " << sig_max + << std::endl; + } + } + + if (!convergence && peps_parameters.print_level >= PrintLevel::warn) { + std::cout << "Warning: CTM did not converge! count, sig_max = " << count + << " " << sig_max << std::endl; + } + if (peps_parameters.print_level >= PrintLevel::debug) { + std::cout << "CTM: count to convergence= " << count << std::endl; + } + return count; +} + + +// template instantiate + +template void Calc_projector_left_block_single( + const real_tensor &C1, const real_tensor &C4, const real_tensor &eT1, + const real_tensor &eT6, const real_tensor &eT7, const real_tensor &eT8, + const real_tensor &Tn1, const real_tensor &Tn4, + const PEPS_Parameters peps_parameters, real_tensor &PU, real_tensor &PL); +template void Calc_projector_left_block_single( + const complex_tensor &C1, const complex_tensor &C4, + const complex_tensor &eT1, const complex_tensor &eT6, + const complex_tensor &eT7, const complex_tensor &eT8, + const complex_tensor &Tn1, const complex_tensor &Tn4, + const PEPS_Parameters peps_parameters, complex_tensor &PU, + complex_tensor &PL); + +template void Calc_projector_updown_blocks_single( + const real_tensor &C1, const real_tensor &C2, const real_tensor &C3, + const real_tensor &C4, const real_tensor &eT1, const real_tensor &eT2, + const real_tensor &eT3, const real_tensor &eT4, const real_tensor &eT5, + const real_tensor &eT6, const real_tensor &eT7, const real_tensor &eT8, + const real_tensor &Tn1, const real_tensor &Tn2, const real_tensor &Tn3, + const real_tensor &Tn4, const PEPS_Parameters peps_parameters, + real_tensor &PU, real_tensor &PL); +template void Calc_projector_updown_blocks_single( + const complex_tensor &C1, const complex_tensor &C2, + const complex_tensor &C3, const complex_tensor &C4, + const complex_tensor &eT1, const complex_tensor &eT2, + const complex_tensor &eT3, const complex_tensor &eT4, + const complex_tensor &eT5, const complex_tensor &eT6, + const complex_tensor &eT7, const complex_tensor &eT8, + const complex_tensor &Tn1, const complex_tensor &Tn2, + const complex_tensor &Tn3, const complex_tensor &Tn4, + const PEPS_Parameters peps_parameters, complex_tensor &PU, + complex_tensor &PL); + +template void Calc_Next_CTM_single(const real_tensor &C1, const real_tensor &C4, + const real_tensor &eT1, const real_tensor &eT6, + const real_tensor &PU, const real_tensor &PL, + real_tensor &C1_out, real_tensor &C4_out); +template void Calc_Next_CTM_single(const complex_tensor &C1, const complex_tensor &C4, + const complex_tensor &eT1, + const complex_tensor &eT6, const complex_tensor &PU, + const complex_tensor &PL, complex_tensor &C1_out, + complex_tensor &C4_out); + +template void Calc_Next_eT_single(const real_tensor &eT8, const real_tensor &Tn1, + const real_tensor &PU, const real_tensor &PL, + real_tensor &eT_out); +template void Calc_Next_eT_single(const complex_tensor &eT8, const complex_tensor &Tn1, + const complex_tensor &PU, const complex_tensor &PL, + complex_tensor &eT_out); + +template void Left_move_single( + std::vector &C1, const std::vector &C2, + const std::vector &C3, std::vector &C4, + const std::vector &eTt, const std::vector &eTr, + const std::vector &eTb, std::vector &eTl, + const std::vector &Tn, const int ix, + const PEPS_Parameters peps_parameters, const SquareLattice lattice); +template void Left_move_single( + std::vector &C1, const std::vector &C2, + const std::vector &C3, std::vector &C4, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, std::vector &eTl, + const std::vector &Tn, const int ix, + const PEPS_Parameters peps_parameters, const SquareLattice lattice); + +template void Right_move_single( + const std::vector &C1, std::vector &C2, + std::vector &C3, const std::vector &C4, + const std::vector &eTt, std::vector &eTr, + const std::vector &eTb, const std::vector &eTl, + const std::vector &Tn, const int ix, + const PEPS_Parameters peps_parameters, const SquareLattice lattice); +template void Right_move_single( + const std::vector &C1, std::vector &C2, + std::vector &C3, const std::vector &C4, + const std::vector &eTt, std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector &Tn, const int ix, + const PEPS_Parameters peps_parameters, const SquareLattice lattice); + +template void Top_move_single( + std::vector &C1, std::vector &C2, + const std::vector &C3, const std::vector &C4, + std::vector &eTt, const std::vector &eTr, + const std::vector &eTb, const std::vector &eTl, + const std::vector &Tn, const int iy, + const PEPS_Parameters peps_parameters, const SquareLattice lattice); +template void Top_move_single(std::vector &C1, + std::vector &C2, + const std::vector &C3, + const std::vector &C4, + std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector &Tn, const int iy, + const PEPS_Parameters peps_parameters, + const SquareLattice lattice); + +template void Bottom_move_single( + const std::vector &C1, const std::vector &C2, + std::vector &C3, std::vector &C4, + const std::vector &eTt, const std::vector &eTr, + std::vector &eTb, const std::vector &eTl, + const std::vector &Tn, const int iy, + const PEPS_Parameters peps_parameters, const SquareLattice lattice); +template void Bottom_move_single( + const std::vector &C1, + const std::vector &C2, std::vector &C3, + std::vector &C4, const std::vector &eTt, + const std::vector &eTr, std::vector &eTb, + const std::vector &eTl, + const std::vector &Tn, const int iy, + const PEPS_Parameters peps_parameters, const SquareLattice lattice); + + +template int Calc_CTM_Environment_density( + std::vector &C1, std::vector &C2, + std::vector &C3, std::vector &C4, + std::vector &eTt, std::vector &eTr, + std::vector &eTb, std::vector &eTl, + const std::vector &Tn, const PEPS_Parameters peps_parameters, + const SquareLattice lattice, bool initialize); + +template int Calc_CTM_Environment_density( + std::vector &C1, std::vector &C2, + std::vector &C3, std::vector &C4, + std::vector &eTt, std::vector &eTr, + std::vector &eTb, std::vector &eTl, + const std::vector &Tn, + const PEPS_Parameters peps_parameters, const SquareLattice lattice, + bool initialize); + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/iTPS.cpp b/src/iTPS/iTPS.cpp index 3916d85c..fb8a9100 100644 --- a/src/iTPS/iTPS.cpp +++ b/src/iTPS/iTPS.cpp @@ -232,6 +232,20 @@ void iTPS::update_CTM() { time_environment += timer.elapsed(); } +template +void iTPS::update_CTM_density() { + Timer<> timer; + core::Calc_CTM_Environment_density(C1, C2, C3, C4, eTt, eTr, eTb, eTl, Tn, + peps_parameters, lattice); + time_environment += timer.elapsed(); +} + +template +std::vector iTPS::make_single_tensor_density(){ + return core::Make_single_tensor_density(Tn); +} + + // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/iTPS.hpp b/src/iTPS/iTPS.hpp index 683fc4fa..8b995b31 100644 --- a/src/iTPS/iTPS.hpp +++ b/src/iTPS/iTPS.hpp @@ -82,30 +82,39 @@ class iTPS { //! initialize tensors void initialize_tensors(); - + void initialize_tensors_density(); + std::vector make_single_tensor_density(); + //! update corner transfer matrices void update_CTM(); + void update_CTM_density(); //! perform simple update void simple_update(); + void simple_update_density(); + void simple_update_density_purification(); //! perform full update void full_update(); //! optimize tensors void optimize(); + void optimize_density(); //! measure expectation value of observables void measure(); + void measure_density(); //! print elapsed time void summary() const; //! measure expectation value of onesite observables std::vector> measure_onesite(); + // std::vector> measure_onesite_density(); //! measure expectation value of twosite observables std::vector> measure_twosite(); + // std::vector> measure_twosite_density(); //! measure correlation functions std::vector measure_correlation(); diff --git a/src/iTPS/measure.cpp b/src/iTPS/measure.cpp index e3e94593..70272eb0 100644 --- a/src/iTPS/measure.cpp +++ b/src/iTPS/measure.cpp @@ -192,6 +192,129 @@ void iTPS::summary() const { } } +/* +template +void iTPS::measure_density() { + if (peps_parameters.print_level >= PrintLevel::info) { + std::cout << "Start calculating observables" << std::endl; + std::cout << " Start updating environment" << std::endl; + } + if (!peps_parameters.MeanField_Env) { + update_CTM_density(); + } + + if (peps_parameters.print_level >= PrintLevel::info) { + std::cout << " Start calculating onesite operators" << std::endl; + } + auto onesite_obs = measure_onesite_density(); + save_onesite(onesite_obs); + + if (peps_parameters.print_level >= PrintLevel::info) { + std::cout << " Start calculating twosite operators" << std::endl; + } + auto twosite_obs = measure_twosite_density(); + save_twosite(twosite_obs); + + if (mpirank == 0) { + std::vector loc_obs(num_onesite_operators); + int numsites = 0; + for (int i = 0; i < N_UNIT; ++i) { + if (lattice.physical_dims[i] > 1) { + ++numsites; + for (int ilops = 0; ilops < num_onesite_operators; ++ilops) { + loc_obs[ilops] += onesite_obs[ilops][i]; + } + } + } + std::vector two_obs(num_twosite_operators); + for (int iops = 0; iops < num_twosite_operators; ++iops) { + for (const auto &obs : twosite_obs[iops]) { + two_obs[iops] += obs.second; + } + } + + auto energy = 0.0; + for (const auto &obs : twosite_obs[0]) { + energy += std::real(obs.second); + } + + { + const double invV = 1.0 / numsites; + std::string filename = outdir + "/density.dat"; + std::ofstream ofs(filename.c_str()); + ofs << std::scientific + << std::setprecision(std::numeric_limits::max_digits10); + + if (mpirank == 0) { + for (int ilops = 0; ilops < num_onesite_operators; ++ilops) { + if (onesite_operator_counts[ilops] == 0){ + continue; + } + const auto v = loc_obs[ilops] * invV; + ofs << onesite_operator_names[ilops] << " = "; + if (std::real(v) >= 0.0) { + ofs << " "; + } + ofs << std::real(v) << " "; + if (std::imag(v) >= 0.0) { + ofs << " "; + } + ofs << std::imag(v) << std::endl; + } + + for (int ilops = 0; ilops < num_twosite_operators; ++ilops) { + if (twosite_operator_counts[ilops] == 0){ + continue; + } + const auto v = two_obs[ilops] * invV; + ofs << twosite_operator_names[ilops] << " = "; + if (std::real(v) >= 0.0) { + ofs << " "; + } + ofs << std::real(v) << " "; + if (std::imag(v) >= 0.0) { + ofs << " "; + } + ofs << std::imag(v) << std::endl; + } + std::cout << " Save observable densities to " << filename + << std::endl; + } + } + { + std::string filename = outdir + "/parameters.dat"; + std::ofstream ofs(filename.c_str(), std::ios::out | std::ios::app); + ofs << "finish_datetime = " << util::datetime() << std::endl; + } + + if (peps_parameters.print_level >= PrintLevel::info) { + const double invV = 1.0 / numsites; + std::cout << std::endl; + + std::cout << "Onesite observables per site:" << std::endl; + for (int ilops = 0; ilops < num_onesite_operators; ++ilops) { + if ( onesite_operator_counts[ilops] == 0) { + continue; + } + const auto v = loc_obs[ilops] * invV; + std::cout << " " << onesite_operator_names[ilops] << " = " + << std::real(v) << " " << std::imag(v) << std::endl; + } + + std::cout << "Twosite observables per site:" << std::endl; + for (int ilops = 0; ilops < num_twosite_operators; ++ilops) { + if ( twosite_operator_counts[ilops] == 0) { + continue; + } + const auto v = two_obs[ilops] * invV; + std::cout << " " << twosite_operator_names[ilops] << " = " + << std::real(v) << " " << std::imag(v) << std::endl; + } + } + } // end of if(mpirank == 0) +} + */ + // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/onesite_obs.cpp b/src/iTPS/onesite_obs.cpp index cf9d1694..7803bf58 100644 --- a/src/iTPS/onesite_obs.cpp +++ b/src/iTPS/onesite_obs.cpp @@ -143,7 +143,75 @@ void iTPS::save_onesite( } } } + /* +template +auto iTPS::measure_onesite_density() + -> std::vector::tensor_type>> { + Timer<> timer; + const int nlops = num_onesite_operators; + std::vector> local_obs( + nlops, std::vector( + N_UNIT, std::numeric_limits::quiet_NaN())); + std::vector norm(N_UNIT); + + if (peps_parameters.MeanField_Env) { + std::vector Tn_(Tn); + for (int i = 0; i < N_UNIT; ++i) { + for (int leg = 0; leg < nleg; ++leg) { + const std::vector mf = lambda_tensor[i][leg]; + Tn_[i].multiply_vector(mf, leg); + } + } + + for (int i = 0; i < N_UNIT; ++i) { + norm[i] = core::Contract_one_site_MF_density(Tn_[i], op_identity[i]); + } + + for (auto const &op : onesite_operators) { + const int i = op.source_site; + const auto val = core::Contract_one_site_MF_density(Tn_[i], op.op); + local_obs[op.group][i] = val / norm[i]; + } + } else { + for (int i = 0; i < N_UNIT; ++i) { + norm[i] = + core::Contract_one_site_density(C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], + eTb[i], eTl[i], Tn[i], op_identity[i]); + } + for (auto const &op : onesite_operators) { + const int i = op.source_site; + const auto val = + core::Contract_one_site_density(C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], + eTb[i], eTl[i], Tn[i], op.op); + local_obs[op.group][i] = val / norm[i]; + } + } + double norm_real_min = 1e100; + double norm_imag_abs_max = 0.0; + for (int i = 0; i < N_UNIT; ++i) { + norm_real_min = std::min(std::real(norm[i]), norm_real_min); + norm_imag_abs_max = + std::max(std::abs(std::imag(norm[i])), norm_imag_abs_max); + } + if (mpirank == 0) { + if (norm_real_min <= 0.0) { + std::cerr << "WARNING: Norm is negative [min(real(NORM)) = " << norm_real_min <<"].\n"; + std::cerr << "HINT: Increase the bond dimension of CTM." << std::endl; + } + if (norm_imag_abs_max > 1e-6) { + std::cerr << "WARNING: Norm is not real [max(abs(imag(NORM))) = " + << norm_imag_abs_max << " > 1e-6].\n"; + std::cerr << "HINT: Increase the bond dimension of CTM." << std::endl; + } + } + local_obs.push_back(norm); + + time_observable += timer.elapsed(); + return local_obs; +} + */ + // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/optimize.cpp b/src/iTPS/optimize.cpp index bbaa91e1..74c8e9ba 100644 --- a/src/iTPS/optimize.cpp +++ b/src/iTPS/optimize.cpp @@ -36,6 +36,15 @@ void iTPS::optimize() { } } + +template +void iTPS::optimize_density() { + if (peps_parameters.print_level >= PrintLevel::info) { + std::cout << "Start simple update for density matrix" << std::endl; + } + simple_update_density(); +} + // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/simple_update.cpp b/src/iTPS/simple_update.cpp index 9cb44900..bdc36745 100644 --- a/src/iTPS/simple_update.cpp +++ b/src/iTPS/simple_update.cpp @@ -122,6 +122,228 @@ void iTPS::simple_update() { time_simple_update += timer.elapsed(); } + +template +void iTPS::simple_update_density() { + Timer<> timer; + tensor Tn1_new(comm); + tensor Tn2_new(comm); + std::vector lambda_c; + const int nsteps = peps_parameters.num_simple_step; + double next_report = 10.0; + + for (int int_tau = 0; int_tau < nsteps; ++int_tau) { + for (auto up : simple_updates) { + if (up.is_onesite()) { + const int source = up.source_site; + Tn[source] = tensordot(Tn[source], up.op, mptensor::Axes(4), mptensor::Axes(0)); + Tn[source] = tensordot(Tn[source], conj(up.op), mptensor::Axes(4), mptensor::Axes(1)); + } else { + const int source = up.source_site; + const int source_leg = up.source_leg; + const int target = lattice.neighbor(source, source_leg); + const int target_leg = (source_leg + 2) % 4; + core::Simple_update_bond(reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), lambda_tensor[source], + lambda_tensor[target], mptensor::kron(up.op,conj(up.op.transpose(mptensor::Shape(2,3,0,1)))), source_leg, + peps_parameters, Tn1_new, Tn2_new, lambda_c); + lambda_tensor[source][source_leg] = lambda_c; + lambda_tensor[target][target_leg] = lambda_c; + Tn[source] = reshape(Tn1_new,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],up.op.shape()[2],up.op.shape()[0])); + Tn[target] = reshape(Tn2_new,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],up.op.shape()[3],up.op.shape()[1])); + } + } + + // local gauge fixing + const int maxiter_gauge = peps_parameters.Simple_Gauge_maxiter; + const double conv_tol_gauge = + peps_parameters.Simple_Gauge_Convergence_Epsilon; + if (peps_parameters.Simple_Gauge_Fix) { + int iter_gauge = 0; + for (iter_gauge = 0; iter_gauge < maxiter_gauge; ++iter_gauge) { + for (int parity : {1, -1}) { + for (int source_leg : {2, 1}) { + int target_leg = (source_leg + 2) % 4; + for (int source = 0; source < N_UNIT; ++source) { + if (lattice.parity(source) != parity) { + continue; + } + if (lattice.virtual_dims[source][source_leg] <= 1) { + continue; + } + int target = lattice.neighbor(source, source_leg); + core::fix_local_gauge( + reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), + reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), + lambda_tensor[source], + lambda_tensor[target], source_leg, peps_parameters, Tn1_new, + Tn2_new, lambda_c); + lambda_tensor[source][source_leg] = lambda_c; + lambda_tensor[target][target_leg] = lambda_c; + Tn[source] = reshape(Tn1_new,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4],Tn[source].shape()[5])); + Tn[target] = reshape(Tn2_new,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4],Tn[target].shape()[5])); + } + } + } + + // convergence check + double score = 0.0; + for (int site = 0; site < N_UNIT; ++site) { + for (int leg = 0; leg < nleg; ++leg) { + if (lattice.virtual_dims[site][leg] <= 1) { + continue; + } + auto M = core::boundary_tensor(reshape(Tn[site],mptensor::Shape(Tn[site].shape()[0],Tn[site].shape()[1],Tn[site].shape()[2],Tn[site].shape()[3],Tn[site].shape()[4]*Tn[site].shape()[5])), + lambda_tensor[site], leg, + peps_parameters); + tensor U; + std::vector D; + eigh(M, mptensor::Axes(0), mptensor::Axes(1), D, U); + for (auto d : D) { + score = std::max(score, std::abs(d - 1.0)); + } + } + } // end of for (source) + // std::cout << int_tau << " " << iter_gauge << " " << score + // << std::endl; + if (score < conv_tol_gauge) { + // std::cout << int_tau << " " << iter_gauge << " " << score + // << std::endl; + break; + } + } // end of for (iter_gauge) + } // end of if (Simple_Gauge_Fix) + + if (peps_parameters.print_level >= PrintLevel::info) { + double r_tau = 100.0 * (int_tau + 1) / nsteps; + if (r_tau >= next_report) { + while (r_tau >= next_report) { + next_report += 10.0; + } + std::cout << " " << next_report - 10.0 << "% [" << int_tau + 1 << "/" + << nsteps << "] done" << std::endl; + } + } + } + time_simple_update += timer.elapsed(); +} + +template +void iTPS::simple_update_density_purification() { + Timer<> timer; + tensor Tn1_new(comm); + tensor Tn2_new(comm); + std::vector lambda_c; + const int nsteps = peps_parameters.num_simple_step; + double next_report = 10.0; + + for (int int_tau = 0; int_tau < nsteps; ++int_tau) { + for (auto up : simple_updates) { + if (up.is_onesite()) { + const int source = up.source_site; + Tn[source] = tensordot(Tn[source], up.op, mptensor::Axes(4), mptensor::Axes(0)); + Tn[source] = tensordot(Tn[source], conj(up.op), mptensor::Axes(4), mptensor::Axes(1)); + } else { + const int source = up.source_site; + const int source_leg = up.source_leg; + const int target = lattice.neighbor(source, source_leg); + const int target_leg = (source_leg + 2) % 4; + + + tensor identity(comm, mptensor::Shape(Tn[source].shape()[5],Tn[target].shape()[5],Tn[source].shape()[5],Tn[target].shape()[5])); + for (int j1 = 0; j1 < Tn[source].shape()[5]; ++j1) { + for (int k1 = 0; k1 < Tn[target].shape()[5]; ++k1) { + for (int j2 = 0; j2 < Tn[source].shape()[5]; ++j2) { + for (int k2 = 0; k2 < Tn[target].shape()[5]; ++k2) { + identity.set_value(mptensor::Index(j1, k1, j2, k2), (j1 == j2 && k1 == k2 ? 1.0 : 0.0)); + } + } + } + } + + core::Simple_update_bond(reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), lambda_tensor[source], + lambda_tensor[target], mptensor::kron(up.op,identity), source_leg, + peps_parameters, Tn1_new, Tn2_new, lambda_c); + lambda_tensor[source][source_leg] = lambda_c; + lambda_tensor[target][target_leg] = lambda_c; + Tn[source] = reshape(Tn1_new,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],up.op.shape()[2],Tn[source].shape()[5])); + Tn[target] = reshape(Tn2_new,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],up.op.shape()[3],Tn[target].shape()[5])); + } + } + + // local gauge fixing + const int maxiter_gauge = peps_parameters.Simple_Gauge_maxiter; + const double conv_tol_gauge = + peps_parameters.Simple_Gauge_Convergence_Epsilon; + if (peps_parameters.Simple_Gauge_Fix) { + int iter_gauge = 0; + for (iter_gauge = 0; iter_gauge < maxiter_gauge; ++iter_gauge) { + for (int parity : {1, -1}) { + for (int source_leg : {2, 1}) { + int target_leg = (source_leg + 2) % 4; + for (int source = 0; source < N_UNIT; ++source) { + if (lattice.parity(source) != parity) { + continue; + } + if (lattice.virtual_dims[source][source_leg] <= 1) { + continue; + } + int target = lattice.neighbor(source, source_leg); + core::fix_local_gauge( + reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), + reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), + lambda_tensor[source], + lambda_tensor[target], source_leg, peps_parameters, Tn1_new, + Tn2_new, lambda_c); + lambda_tensor[source][source_leg] = lambda_c; + lambda_tensor[target][target_leg] = lambda_c; + Tn[source] = reshape(Tn1_new,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4],Tn[source].shape()[5])); + Tn[target] = reshape(Tn2_new,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4],Tn[target].shape()[5])); + } + } + } + + // convergence check + double score = 0.0; + for (int site = 0; site < N_UNIT; ++site) { + for (int leg = 0; leg < nleg; ++leg) { + if (lattice.virtual_dims[site][leg] <= 1) { + continue; + } + auto M = core::boundary_tensor(reshape(Tn[site],mptensor::Shape(Tn[site].shape()[0],Tn[site].shape()[1],Tn[site].shape()[2],Tn[site].shape()[3],Tn[site].shape()[4]*Tn[site].shape()[5])), + lambda_tensor[site], leg, + peps_parameters); + tensor U; + std::vector D; + eigh(M, mptensor::Axes(0), mptensor::Axes(1), D, U); + for (auto d : D) { + score = std::max(score, std::abs(d - 1.0)); + } + } + } // end of for (source) + // std::cout << int_tau << " " << iter_gauge << " " << score + // << std::endl; + if (score < conv_tol_gauge) { + // std::cout << int_tau << " " << iter_gauge << " " << score + // << std::endl; + break; + } + } // end of for (iter_gauge) + } // end of if (Simple_Gauge_Fix) + + if (peps_parameters.print_level >= PrintLevel::info) { + double r_tau = 100.0 * (int_tau + 1) / nsteps; + if (r_tau >= next_report) { + while (r_tau >= next_report) { + next_report += 10.0; + } + std::cout << " " << next_report - 10.0 << "% [" << int_tau + 1 << "/" + << nsteps << "] done" << std::endl; + } + } + } + time_simple_update += timer.elapsed(); +} + // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/tensors.cpp b/src/iTPS/tensors.cpp index 59ada2bf..006d4e42 100644 --- a/src/iTPS/tensors.cpp +++ b/src/iTPS/tensors.cpp @@ -411,6 +411,81 @@ void iTPS::load_tensors_v0() { } } + /* +void iTPS::initialize_tensors_density() { + using mptensor::Shape; + + Tn.clear(); + eTt.clear(); + eTr.clear(); + eTb.clear(); + eTl.clear(); + C1.clear(); + C2.clear(); + C3.clear(); + C4.clear(); + lambda_tensor.clear(); + + for (int i = 0; i < N_UNIT; ++i) { + const auto pdim = lattice.physical_dims[i]; + const auto vdim = lattice.virtual_dims[i]; + + Tn.push_back(ptensor(comm, Shape(vdim[0], vdim[1], vdim[2], vdim[3], pdim, pdim))); + eTt.push_back(ptensor(comm, Shape(CHI, CHI, vdim[1]))); + eTr.push_back(ptensor(comm, Shape(CHI, CHI, vdim[2]))); + eTb.push_back(ptensor(comm, Shape(CHI, CHI, vdim[3]))); + eTl.push_back(ptensor(comm, Shape(CHI, CHI, vdim[0]))); + C1.push_back(ptensor(comm, Shape(CHI, CHI))); + C2.push_back(ptensor(comm, Shape(CHI, CHI))); + C3.push_back(ptensor(comm, Shape(CHI, CHI))); + C4.push_back(ptensor(comm, Shape(CHI, CHI))); + + std::vector> lambda(nleg); + for (int j = 0; j < nleg; ++j) { + lambda[j] = std::vector(vdim[j], 1.0); + } + lambda_tensor.push_back(lambda); + + ptensor id(comm, mptensor::Shape(pdim, pdim)); + for (int j = 0; j < pdim; ++j) { + for (int k = 0; k < pdim; ++k) { + id.set_value(mptensor::Index(j, k), (j == k ? 1.0 : 0.0)); + } + } + op_identity.push_back(id); + } + + std::mt19937 gen(peps_parameters.seed); + // use another rng for backward compatibility + std::mt19937 gen_im(peps_parameters.seed * 11 + 137); + std::uniform_real_distribution dist(-1.0, 1.0); + + if (peps_parameters.tensor_load_dir.empty()) { + mptensor::Index index; + for (int i = 0; i < lattice.N_UNIT; ++i) { + const auto pdim = lattice.physical_dims[i]; + const auto vdim = lattice.virtual_dims[i]; + + for (int n = 0; n < Tn[i].local_size(); ++n) { + index = Tn[i].global_index(n); + if (index[0] == 0 && index[1] == 0 && index[2] == 0 && index[3] == 0 && index[4] == index[5]) { + Tn[i].set_value(index, to_tensor_type(1.0)); + } else { + Tn[i].set_value(index, to_tensor_type(0.0)); + } + } + } + } else { + load_tensors(); + if (peps_parameters.print_level >= PrintLevel::info) { + std::cout << "Tensors loaded from " << peps_parameters.tensor_load_dir + << std::endl; + } + } // end of else part of if(load_dir.empty()) +} + */ + + // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/twosite_obs.cpp b/src/iTPS/twosite_obs.cpp index e2aa3746..29afd313 100644 --- a/src/iTPS/twosite_obs.cpp +++ b/src/iTPS/twosite_obs.cpp @@ -315,6 +315,226 @@ void iTPS::save_twosite( } + /* +template +auto iTPS::measure_twosite_density() + -> std::vector::tensor_type>> { + Timer<> timer; + + const int nlops = num_twosite_operators; + std::vector> ret(nlops); + + constexpr int nmax = 4; + + std::map norms; + + for (const auto &op : twosite_operators) { + const int source = op.source_site; + const int dx = op.dx[0]; + const int dy = op.dy[0]; + + const int ncol = std::abs(dx) + 1; + const int nrow = std::abs(dy) + 1; + if (ncol > nmax || nrow > nmax) { + std::cerr + << "Warning: now version of TeNeS does not support too long-ranged " + "operator" + << std::endl; + std::cerr << "group = " << op.group << " (dx = " << dx << ", dy = " << dy + << ")" << std::endl; + continue; + } + + std::vector C_(4, nullptr); + std::vector eTt_(ncol, nullptr); + std::vector eTr_(nrow, nullptr); + std::vector eTb_(ncol, nullptr); + std::vector eTl_(nrow, nullptr); + + std::vector> Tn_( + nrow, std::vector(ncol, nullptr)); + std::vector> op_( + nrow, std::vector(ncol, nullptr)); + + std::vector> indices(nrow, std::vector(ncol)); + std::vector boundaries; + + int source_col, source_row, target_col, target_row; + + if (dx >= 0) { + source_col = 0; + target_col = ncol - 1; + } else { + source_col = ncol - 1; + target_col = 0; + } + if (dy >= 0) { + source_row = nrow - 1; + target_row = 0; + } else { + source_row = 0; + target_row = nrow - 1; + } + + if (peps_parameters.MeanField_Env) { + int iboundary = 0; + const int nboundary = 2 * (ncol + nrow - 2); + boundaries.reserve(nboundary); + + for (int row = 0; row < nrow; ++row) { + for (int col = 0; col < ncol; ++col) { + const int index = + lattice.other(source, col - source_col, source_row - row); + indices[row][col] = index; + op_[row][col] = &(op_identity[index]); + if ((0 < row && row < nrow - 1) && (0 < col && col < ncol - 1)) { + Tn_[row][col] = &(Tn[index]); + } else { + boundaries.push_back(Tn[index]); + Tn_[row][col] = &(boundaries[iboundary++]); + } + } + } + assert(boundaries.size() == nboundary); + + // absorb MF ENV into center tensors on boundary + for (int row = 0; row < nrow; ++row) { + const_cast(Tn_[row][0]) + ->multiply_vector(lambda_tensor[indices[row][0]][0], 0); + const_cast(Tn_[row][ncol - 1]) + ->multiply_vector(lambda_tensor[indices[row][ncol - 1]][2], 2); + } + for (int col = 0; col < ncol; ++col) { + const_cast(Tn_[0][col]) + ->multiply_vector(lambda_tensor[indices[0][col]][1], 1); + const_cast(Tn_[nrow - 1][col]) + ->multiply_vector(lambda_tensor[indices[nrow - 1][col]][3], 3); + } + } else { // Use CTM + for (int row = 0; row < nrow; ++row) { + for (int col = 0; col < ncol; ++col) { + const int index = + lattice.other(source, col - source_col, source_row - row); + indices[row][col] = index; + op_[row][col] = &(op_identity[index]); + Tn_[row][col] = &(Tn[index]); + } + eTl_[row] = &(eTl[indices[row][0]]); + eTr_[row] = &(eTr[indices[row][ncol - 1]]); + } + for (int col = 0; col < ncol; ++col) { + eTt_[col] = &(eTt[indices[0][col]]); + eTb_[col] = &(eTb[indices[nrow - 1][col]]); + } + C_[0] = &(C1[indices[0][0]]); + C_[1] = &(C2[indices[0][ncol - 1]]); + C_[2] = &(C3[indices[nrow - 1][ncol - 1]]); + C_[3] = &(C4[indices[nrow - 1][0]]); + } + + const auto norm_key = Bond{indices[nrow-1][0], nrow-1, ncol-1}; + if (norms.count(norm_key) == 0) { + if (peps_parameters.MeanField_Env) { + norms[norm_key] = core::Contract_MF_density(Tn_, op_); + } else { + norms[norm_key] = core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + } + } + auto norm = norms[norm_key]; + + tensor_type value = 0.0; + if (op.ops_indices.empty()) { + if (nrow * ncol == 2) { + if (nrow == 2) { + const int top = indices[0][0]; + const int bottom = indices[1][0]; + ptensor o = + (top == source ? op.op + : mptensor::transpose(op.op, {1, 0, 3, 2})); + value = peps_parameters.MeanField_Env + ? core::Contract_two_sites_vertical_op12_MF_density( + *(Tn_[0][0]), *(Tn_[1][0]), o) + : core::Contract_two_sites_vertical_op12_density( + C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], + eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], + eTl[top], Tn[top], Tn[bottom], o); + } else { // ncol == 2 + const int left = indices[0][0]; + const int right = indices[0][1]; + ptensor o = + (left == source ? op.op + : mptensor::transpose(op.op, {1, 0, 3, 2})); + value = peps_parameters.MeanField_Env + ? core::Contract_two_sites_horizontal_op12_MF_density( + *(Tn_[0][0]), *(Tn_[0][1]), o) + : core::Contract_two_sites_horizontal_op12_density( + C1[left], C2[right], C3[right], C4[left], eTt[left], + eTt[right], eTr[right], eTb[right], eTb[left], + eTl[left], Tn[left], Tn[right], o); + } + } else { + ptensor U, VT; + std::vector s; + mptensor::svd(op.op, {0, 2}, {1, 3}, U, s, VT); + const int ns = s.size(); + for (int is = 0; is < ns; ++is) { + ptensor source_op = + reshape(slice(U, 2, is, is + 1), {U.shape()[0], U.shape()[0]}); + op_[source_row][source_col] = &source_op; + ptensor target_op = + reshape(slice(VT, 0, is, is + 1), {VT.shape()[1], VT.shape()[1]}); + op_[target_row][target_col] = &target_op; + auto localvalue = + peps_parameters.MeanField_Env + ? core::Contract_MF_density(Tn_, op_) + : core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + value += localvalue * s[is]; + } + } + } else { + op_[source_row][source_col] = + &(onesite_operators[siteoperator_index(op.source_site, + op.ops_indices[0])] + .op); + const int target_site = lattice.other(op.source_site, dx, dy); + op_[target_row][target_col] = &( + onesite_operators[siteoperator_index(target_site, op.ops_indices[1])] + .op); + auto localvalue = + peps_parameters.MeanField_Env + ? core::Contract_MF_density(Tn_, op_) + : core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + value += localvalue; + } + ret[op.group][{op.source_site, op.dx[0], op.dy[0]}] = value / norm; + } + ret.push_back(norms); + + double norm_real_min = 1e100; + double norm_imag_abs_max = 0.0; + for(auto & r: norms){ + double norm_re = std::real(r.second); + double norm_im = std::imag(r.second); + norm_real_min = std::min(norm_re, norm_real_min); + norm_imag_abs_max = std::max(std::abs(norm_im), norm_imag_abs_max); + } + if(mpirank == 0){ + if(norm_real_min < 0.0){ + std::cerr << "WARNING: Norm is negative [min(real(NORM)) = " << norm_real_min << "].\n"; + std::cerr << "HINT: Increase the bond dimension of CTM." << std::endl; + } + if(norm_imag_abs_max > 1.0e-6){ + std::cerr << "WARNING: Norm is not real [max(abs(imag(NORM))) = " << norm_imag_abs_max << " > 1e-6].\n"; + std::cerr << "HINT: Increase the bond dimension of CTM." << std::endl; + } + } + + time_observable += timer.elapsed(); + return ret; +} +*/ + + // template specialization template class iTPS; template class iTPS; From 5e6fd9b28a34502346610efdd6e8c1f4266bbfa8 Mon Sep 17 00:00:00 2001 From: Tsuyoshi Okubo Date: Tue, 13 Jun 2023 16:59:11 +0900 Subject: [PATCH 03/25] uncomment initialize_tensors_density --- src/iTPS/tensors.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/iTPS/tensors.cpp b/src/iTPS/tensors.cpp index 006d4e42..30fb17e7 100644 --- a/src/iTPS/tensors.cpp +++ b/src/iTPS/tensors.cpp @@ -411,7 +411,8 @@ void iTPS::load_tensors_v0() { } } - /* + +template void iTPS::initialize_tensors_density() { using mptensor::Shape; @@ -483,7 +484,6 @@ void iTPS::initialize_tensors_density() { } } // end of else part of if(load_dir.empty()) } - */ // template specialization From d2193d922133d516d39818c0d0e5254794b35563 Mon Sep 17 00:00:00 2001 From: Tsuyoshi Okubo Date: Tue, 13 Jun 2023 17:45:26 +0900 Subject: [PATCH 04/25] use mptensor::contract --- src/iTPS/core/ctm_single.cpp | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/iTPS/core/ctm_single.cpp b/src/iTPS/core/ctm_single.cpp index 6b60e1c4..8a9e5a8a 100644 --- a/src/iTPS/core/ctm_single.cpp +++ b/src/iTPS/core/ctm_single.cpp @@ -43,21 +43,8 @@ using mptensor::Shape; template std::vector Make_single_tensor_density(const std::vector &Tn){ std::vector Tn_single; - Index index; for (int num = 0; num < Tn.size(); ++num) { - const auto comm = Tn[num].get_comm(); - tensor identity_matrix(comm, Shape(Tn[num].shape()[4], Tn[num].shape()[4])); - for (int i = 0; i < identity_matrix.local_size(); i++) { - index = identity_matrix.global_index(i); - if (index[0] == index[1]) { - identity_matrix.set_value(index, 1.0); - } else { - identity_matrix.set_value(index, 0.0); - } - } - - //Tn_single.push_back(mptensor:trace(Tn[num], Axes(4), Axes(5))); - Tn_single.push_back(tensordot(Tn[num], identity_matrix, Axes(4,5), Axes(0,1))); + Tn_single.push_back(mptensor::contract(Tn[num], Axes(4), Axes(5))); } return Tn_single; } From bfc4c3329e1e698257f0867d31e2ce06a858ce0c Mon Sep 17 00:00:00 2001 From: Tsuyoshi Okubo Date: Tue, 13 Jun 2023 18:42:20 +0900 Subject: [PATCH 05/25] implement contract_density and measurements --- src/iTPS/core/contract_ctm.hpp | 36 +++ src/iTPS/core/contract_ctm/ctm.cpp | 203 ++++++++++++++++ .../core/contract_ctm/instantiate_ctm.hpp | 33 +++ src/iTPS/iTPS.hpp | 4 +- src/iTPS/measure.cpp | 3 +- src/iTPS/onesite_obs.cpp | 31 ++- src/iTPS/twosite_obs.cpp | 224 +++++++++--------- 7 files changed, 400 insertions(+), 134 deletions(-) diff --git a/src/iTPS/core/contract_ctm.hpp b/src/iTPS/core/contract_ctm.hpp index ee0236c3..7d726df4 100644 --- a/src/iTPS/core/contract_ctm.hpp +++ b/src/iTPS/core/contract_ctm.hpp @@ -158,6 +158,42 @@ typename tensor::value_type FinishCorrelation( template void TransferMatrix_MatVec(tensor &inoutvec, const tensor &eT1); + + +template +typename tensor::value_type Contract_one_site_density( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &Tn1, const tensor &op1); + +template +typename tensor::value_type Contract_two_sites_horizontal_density( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op1, const tensor &op2); + +template +typename tensor::value_type Contract_two_sites_vertical_density( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op1, const tensor &op2); + +template +typename tensor::value_type Contract_two_sites_horizontal_op12_density( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op12); + +template +typename tensor::value_type Contract_two_sites_vertical_op12_density( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op12); + } // end of namespace core } // namespace itps } // namespace tenes diff --git a/src/iTPS/core/contract_ctm/ctm.cpp b/src/iTPS/core/contract_ctm/ctm.cpp index a8d56a50..7a7f7601 100644 --- a/src/iTPS/core/contract_ctm/ctm.cpp +++ b/src/iTPS/core/contract_ctm/ctm.cpp @@ -392,6 +392,209 @@ typename tensor::value_type Contract_four_sites( Axes(0, 1, 2, 3, 4, 5), Axes(0, 3, 1, 4, 2, 5)); } + +template +typename tensor::value_type Contract_one_site_density( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &Tn1, const tensor &op1) { + + //////////////////////////////////////////////////////////// + // contract_one_site_density.dat + //////////////////////////////////////////////////////////// + // (op1*(Tn1*((eT1*(C1*eT4))*((C2*eT2)*(C3*(C4*eT3)))))) + // cpu_cost= 5.96e+06 memory= 130004 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op1, tensordot( + Tn1, tensordot( + tensordot( + eT1, tensordot( + C1, eT4, Axes(0), Axes(1) + ), Axes(0), Axes(0) + ), tensordot( + tensordot( + C2, eT2, Axes(1), Axes(0) + ), tensordot( + C3, tensordot( + C4, eT3, Axes(0), Axes(1) + ), Axes(1), Axes(1) + ), Axes(1), Axes(0) + ), Axes(0, 2), Axes(0, 2) + ), Axes(0, 1, 2, 3), Axes(1, 0, 2, 3) + ), Axes(0, 1), Axes(0, 1) + ); +} + +template +typename tensor::value_type Contract_two_sites_horizontal_density( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op1, const tensor &op2) { + //////////////////////////////////////////////////////////// + // contract_two_site_horizontal_density.dat + //////////////////////////////////////////////////////////// + // (op1*(Tn1*((eT1*(C1*eT6))*((C4*eT5)*(eT2*((Tn2*op2)*(eT4*(C2*(C3*eT3))))))))) + // cpu_cost= 1.16e+07 memory= 178408 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op1, tensordot( + Tn1, tensordot( + tensordot( + eT1, tensordot( + C1, eT6, Axes(0), Axes(1) + ), Axes(0), Axes(0) + ), tensordot( + tensordot( + C4, eT5, Axes(0), Axes(1) + ), tensordot( + eT2, tensordot( + tensordot( + Tn2, op2, Axes(4, 5), Axes(0, 1) + ), tensordot( + eT4, tensordot( + C2, tensordot( + C3, eT3, Axes(0), Axes(1) + ), Axes(1), Axes(1) + ), Axes(0), Axes(1) + ), Axes(2, 3), Axes(3, 1) + ), Axes(1, 2), Axes(3, 1) + ), Axes(1), Axes(2) + ), Axes(0, 2), Axes(2, 0) + ), Axes(0, 1, 2, 3), Axes(1, 0, 3, 2) + ), Axes(0, 1), Axes(0, 1) + ); +} + +template +typename tensor::value_type Contract_two_sites_vertical_density( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op1, const tensor &op2) { + + //////////////////////////////////////////////////////////// + // contract_two_site_vertical_density.dat + //////////////////////////////////////////////////////////// + // (op1*(Tn1*((eT1*(C1*eT6))*((C2*eT2)*(eT3*((Tn2*op2)*(eT5*(C3*(C4*eT4))))))))) + // cpu_cost= 1.16e+07 memory= 178408 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op1, tensordot( + Tn1, tensordot( + tensordot( + eT1, tensordot( + C1, eT6, Axes(0), Axes(1) + ), Axes(0), Axes(0) + ), tensordot( + tensordot( + C2, eT2, Axes(1), Axes(0) + ), tensordot( + eT3, tensordot( + tensordot( + Tn2, op2, Axes(4, 5), Axes(0, 1) + ), tensordot( + eT5, tensordot( + C3, tensordot( + C4, eT4, Axes(0), Axes(1) + ), Axes(1), Axes(1) + ), Axes(0), Axes(1) + ), Axes(0, 3), Axes(1, 3) + ), Axes(1, 2), Axes(3, 1) + ), Axes(1), Axes(0) + ), Axes(0, 2), Axes(0, 3) + ), Axes(0, 1, 2, 3), Axes(1, 0, 2, 3) + ), Axes(0, 1), Axes(0, 1) + ); +} + +template +typename tensor::value_type Contract_two_sites_horizontal_op12_density( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op12) { + + //////////////////////////////////////////////////////////// + // contract_two_site_horizontal_op12_density.dat + //////////////////////////////////////////////////////////// + // (op12*((eT1*(Tn1*(eT5*(C1*(C4*eT6)))))*(eT2*(Tn2*(eT4*(C2*(C3*eT3))))))) + // cpu_cost= 4.0384e+07 memory= 296816 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op12, tensordot( + tensordot( + eT1, tensordot( + Tn1, tensordot( + eT5, tensordot( + C1, tensordot( + C4, eT6, Axes(1), Axes(0) + ), Axes(0), Axes(1) + ), Axes(1), Axes(1) + ), Axes(0, 3), Axes(3, 1) + ), Axes(0, 2), Axes(5, 0) + ), tensordot( + eT2, tensordot( + Tn2, tensordot( + eT4, tensordot( + C2, tensordot( + C3, eT3, Axes(0), Axes(1) + ), Axes(1), Axes(1) + ), Axes(0), Axes(1) + ), Axes(2, 3), Axes(3, 1) + ), Axes(1, 2), Axes(5, 1) + ), Axes(0, 1, 4), Axes(0, 1, 4) + ), Axes(0, 1, 2, 3), Axes(0, 2, 1, 3) + ); + +} + +template +typename tensor::value_type Contract_two_sites_vertical_op12_density( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op12) { + + //////////////////////////////////////////////////////////// + // contract_two_site_vertical_op12_density.dat + //////////////////////////////////////////////////////////// + // (op12*((eT2*(Tn1*(eT6*(C1*(C2*eT1)))))*(eT3*(Tn2*(eT5*(C3*(C4*eT4))))))) + // cpu_cost= 4.0384e+07 memory= 296816 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op12, tensordot( + tensordot( + eT2, tensordot( + Tn1, tensordot( + eT6, tensordot( + C1, tensordot( + C2, eT1, Axes(0), Axes(1) + ), Axes(1), Axes(1) + ), Axes(1), Axes(0) + ), Axes(0, 1), Axes(1, 3) + ), Axes(0, 2), Axes(5, 0) + ), tensordot( + eT3, tensordot( + Tn2, tensordot( + eT5, tensordot( + C3, tensordot( + C4, eT4, Axes(0), Axes(1) + ), Axes(1), Axes(1) + ), Axes(0), Axes(1) + ), Axes(0, 3), Axes(1, 3) + ), Axes(1, 2), Axes(5, 1) + ), Axes(0, 1, 4), Axes(0, 1, 4) + ), Axes(0, 1, 2, 3), Axes(0, 2, 1, 3) + ); +} + } // namespace core } // namespace itps } // namespace tenes diff --git a/src/iTPS/core/contract_ctm/instantiate_ctm.hpp b/src/iTPS/core/contract_ctm/instantiate_ctm.hpp index ea407e5b..e33caabe 100644 --- a/src/iTPS/core/contract_ctm/instantiate_ctm.hpp +++ b/src/iTPS/core/contract_ctm/instantiate_ctm.hpp @@ -80,6 +80,39 @@ template TENSOR_TYPE::value_type Contract_four_sites( const TENSOR_TYPE &Tn4, const TENSOR_TYPE &op1, const TENSOR_TYPE &op2, const TENSOR_TYPE &op3, const TENSOR_TYPE &op4); +template TENSOR_TYPE::value_type Contract_one_site_density( + const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, + const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, + const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &Tn1, + const TENSOR_TYPE &op1); + +template TENSOR_TYPE::value_type Contract_two_sites_horizontal_density( + const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, + const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, + const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, + const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, + const TENSOR_TYPE &op1, const TENSOR_TYPE &op2); + +template TENSOR_TYPE::value_type Contract_two_sites_vertical_density( + const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, + const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, + const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, + const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, + const TENSOR_TYPE &op1, const TENSOR_TYPE &op2); + +template TENSOR_TYPE::value_type Contract_two_sites_horizontal_op12_density( + const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, + const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, + const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, + const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, + const TENSOR_TYPE &op12); + +template TENSOR_TYPE::value_type Contract_two_sites_vertical_op12_density( + const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, + const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, + const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, + const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, + const TENSOR_TYPE &op12); } // namespace core } // namespace itps } // namespace tenes diff --git a/src/iTPS/iTPS.hpp b/src/iTPS/iTPS.hpp index 8b995b31..da55ff21 100644 --- a/src/iTPS/iTPS.hpp +++ b/src/iTPS/iTPS.hpp @@ -110,11 +110,11 @@ class iTPS { //! measure expectation value of onesite observables std::vector> measure_onesite(); - // std::vector> measure_onesite_density(); + std::vector> measure_onesite_density(); //! measure expectation value of twosite observables std::vector> measure_twosite(); - // std::vector> measure_twosite_density(); + std::vector> measure_twosite_density(); //! measure correlation functions std::vector measure_correlation(); diff --git a/src/iTPS/measure.cpp b/src/iTPS/measure.cpp index 70272eb0..694e0940 100644 --- a/src/iTPS/measure.cpp +++ b/src/iTPS/measure.cpp @@ -192,7 +192,7 @@ void iTPS::summary() const { } } -/* + template void iTPS::measure_density() { if (peps_parameters.print_level >= PrintLevel::info) { @@ -313,7 +313,6 @@ void iTPS::measure_density() { } } // end of if(mpirank == 0) } - */ // template specialization template class iTPS; diff --git a/src/iTPS/onesite_obs.cpp b/src/iTPS/onesite_obs.cpp index 7803bf58..7eac0280 100644 --- a/src/iTPS/onesite_obs.cpp +++ b/src/iTPS/onesite_obs.cpp @@ -143,7 +143,7 @@ void iTPS::save_onesite( } } } - /* + template auto iTPS::measure_onesite_density() -> std::vector::tensor_type>> { @@ -154,6 +154,7 @@ auto iTPS::measure_onesite_density() N_UNIT, std::numeric_limits::quiet_NaN())); std::vector norm(N_UNIT); + /* if (peps_parameters.MeanField_Env) { std::vector Tn_(Tn); for (int i = 0; i < N_UNIT; ++i) { @@ -172,20 +173,20 @@ auto iTPS::measure_onesite_density() const auto val = core::Contract_one_site_MF_density(Tn_[i], op.op); local_obs[op.group][i] = val / norm[i]; } - } else { - for (int i = 0; i < N_UNIT; ++i) { - norm[i] = - core::Contract_one_site_density(C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], - eTb[i], eTl[i], Tn[i], op_identity[i]); - } - for (auto const &op : onesite_operators) { - const int i = op.source_site; - const auto val = - core::Contract_one_site_density(C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], - eTb[i], eTl[i], Tn[i], op.op); - local_obs[op.group][i] = val / norm[i]; - } + } else {*/ + for (int i = 0; i < N_UNIT; ++i) { + norm[i] = + core::Contract_one_site_density(C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], + eTb[i], eTl[i], Tn[i], op_identity[i]); } + for (auto const &op : onesite_operators) { + const int i = op.source_site; + const auto val = + core::Contract_one_site_density(C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], + eTb[i], eTl[i], Tn[i], op.op); + local_obs[op.group][i] = val / norm[i]; + } + // } double norm_real_min = 1e100; double norm_imag_abs_max = 0.0; for (int i = 0; i < N_UNIT; ++i) { @@ -209,8 +210,6 @@ auto iTPS::measure_onesite_density() time_observable += timer.elapsed(); return local_obs; } - */ - // template specialization template class iTPS; diff --git a/src/iTPS/twosite_obs.cpp b/src/iTPS/twosite_obs.cpp index 29afd313..273d22bc 100644 --- a/src/iTPS/twosite_obs.cpp +++ b/src/iTPS/twosite_obs.cpp @@ -315,7 +315,6 @@ void iTPS::save_twosite( } - /* template auto iTPS::measure_twosite_density() -> std::vector::tensor_type>> { @@ -324,7 +323,7 @@ auto iTPS::measure_twosite_density() const int nlops = num_twosite_operators; std::vector> ret(nlops); - constexpr int nmax = 4; + //constexpr int nmax = 4; std::map norms; @@ -335,7 +334,7 @@ auto iTPS::measure_twosite_density() const int ncol = std::abs(dx) + 1; const int nrow = std::abs(dy) + 1; - if (ncol > nmax || nrow > nmax) { + if (ncol * nrow != 2) { std::cerr << "Warning: now version of TeNeS does not support too long-ranged " "operator" @@ -376,63 +375,29 @@ auto iTPS::measure_twosite_density() target_row = nrow - 1; } - if (peps_parameters.MeanField_Env) { - int iboundary = 0; - const int nboundary = 2 * (ncol + nrow - 2); - boundaries.reserve(nboundary); - - for (int row = 0; row < nrow; ++row) { - for (int col = 0; col < ncol; ++col) { - const int index = - lattice.other(source, col - source_col, source_row - row); - indices[row][col] = index; - op_[row][col] = &(op_identity[index]); - if ((0 < row && row < nrow - 1) && (0 < col && col < ncol - 1)) { - Tn_[row][col] = &(Tn[index]); - } else { - boundaries.push_back(Tn[index]); - Tn_[row][col] = &(boundaries[iboundary++]); - } - } - } - assert(boundaries.size() == nboundary); - - // absorb MF ENV into center tensors on boundary - for (int row = 0; row < nrow; ++row) { - const_cast(Tn_[row][0]) - ->multiply_vector(lambda_tensor[indices[row][0]][0], 0); - const_cast(Tn_[row][ncol - 1]) - ->multiply_vector(lambda_tensor[indices[row][ncol - 1]][2], 2); - } - for (int col = 0; col < ncol; ++col) { - const_cast(Tn_[0][col]) - ->multiply_vector(lambda_tensor[indices[0][col]][1], 1); - const_cast(Tn_[nrow - 1][col]) - ->multiply_vector(lambda_tensor[indices[nrow - 1][col]][3], 3); - } - } else { // Use CTM - for (int row = 0; row < nrow; ++row) { - for (int col = 0; col < ncol; ++col) { - const int index = - lattice.other(source, col - source_col, source_row - row); - indices[row][col] = index; - op_[row][col] = &(op_identity[index]); - Tn_[row][col] = &(Tn[index]); - } - eTl_[row] = &(eTl[indices[row][0]]); - eTr_[row] = &(eTr[indices[row][ncol - 1]]); - } + for (int row = 0; row < nrow; ++row) { for (int col = 0; col < ncol; ++col) { - eTt_[col] = &(eTt[indices[0][col]]); - eTb_[col] = &(eTb[indices[nrow - 1][col]]); + const int index = + lattice.other(source, col - source_col, source_row - row); + indices[row][col] = index; + op_[row][col] = &(op_identity[index]); + Tn_[row][col] = &(Tn[index]); } - C_[0] = &(C1[indices[0][0]]); - C_[1] = &(C2[indices[0][ncol - 1]]); - C_[2] = &(C3[indices[nrow - 1][ncol - 1]]); - C_[3] = &(C4[indices[nrow - 1][0]]); + eTl_[row] = &(eTl[indices[row][0]]); + eTr_[row] = &(eTr[indices[row][ncol - 1]]); } + for (int col = 0; col < ncol; ++col) { + eTt_[col] = &(eTt[indices[0][col]]); + eTb_[col] = &(eTb[indices[nrow - 1][col]]); + } + C_[0] = &(C1[indices[0][0]]); + C_[1] = &(C2[indices[0][ncol - 1]]); + C_[2] = &(C3[indices[nrow - 1][ncol - 1]]); + C_[3] = &(C4[indices[nrow - 1][0]]); + const auto norm_key = Bond{indices[nrow-1][0], nrow-1, ncol-1}; + /* if (norms.count(norm_key) == 0) { if (peps_parameters.MeanField_Env) { norms[norm_key] = core::Contract_MF_density(Tn_, op_); @@ -440,73 +405,105 @@ auto iTPS::measure_twosite_density() norms[norm_key] = core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); } } - auto norm = norms[norm_key]; - - tensor_type value = 0.0; - if (op.ops_indices.empty()) { - if (nrow * ncol == 2) { - if (nrow == 2) { + */ + + if (norms.count(norm_key) == 0) { + if (nrow == 2){ const int top = indices[0][0]; const int bottom = indices[1][0]; - ptensor o = - (top == source ? op.op - : mptensor::transpose(op.op, {1, 0, 3, 2})); - value = peps_parameters.MeanField_Env - ? core::Contract_two_sites_vertical_op12_MF_density( - *(Tn_[0][0]), *(Tn_[1][0]), o) - : core::Contract_two_sites_vertical_op12_density( + norms[norm_key] = core::Contract_two_sites_vertical_density( C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], - eTl[top], Tn[top], Tn[bottom], o); - } else { // ncol == 2 + eTl[top], Tn[top], Tn[bottom], op_identity[top], op_identity[bottom]); + }else{ const int left = indices[0][0]; const int right = indices[0][1]; - ptensor o = - (left == source ? op.op - : mptensor::transpose(op.op, {1, 0, 3, 2})); - value = peps_parameters.MeanField_Env - ? core::Contract_two_sites_horizontal_op12_MF_density( - *(Tn_[0][0]), *(Tn_[0][1]), o) - : core::Contract_two_sites_horizontal_op12_density( + norms[norm_key] = core::Contract_two_sites_horizontal_density( C1[left], C2[right], C3[right], C4[left], eTt[left], eTt[right], eTr[right], eTb[right], eTb[left], - eTl[left], Tn[left], Tn[right], o); - } - } else { - ptensor U, VT; - std::vector s; - mptensor::svd(op.op, {0, 2}, {1, 3}, U, s, VT); - const int ns = s.size(); - for (int is = 0; is < ns; ++is) { - ptensor source_op = - reshape(slice(U, 2, is, is + 1), {U.shape()[0], U.shape()[0]}); - op_[source_row][source_col] = &source_op; - ptensor target_op = - reshape(slice(VT, 0, is, is + 1), {VT.shape()[1], VT.shape()[1]}); - op_[target_row][target_col] = &target_op; - auto localvalue = - peps_parameters.MeanField_Env - ? core::Contract_MF_density(Tn_, op_) - : core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); - value += localvalue * s[is]; - } + eTl[left], Tn[left], Tn[right], op_identity[left], op_identity[right]); } - } else { - op_[source_row][source_col] = - &(onesite_operators[siteoperator_index(op.source_site, - op.ops_indices[0])] - .op); - const int target_site = lattice.other(op.source_site, dx, dy); - op_[target_row][target_col] = &( - onesite_operators[siteoperator_index(target_site, op.ops_indices[1])] - .op); - auto localvalue = - peps_parameters.MeanField_Env - ? core::Contract_MF_density(Tn_, op_) - : core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); - value += localvalue; } - ret[op.group][{op.source_site, op.dx[0], op.dy[0]}] = value / norm; + auto norm = norms[norm_key]; + + tensor_type value = 0.0; + // if (op.ops_indices.empty()) { + if (nrow * ncol == 2) { + if (nrow == 2) { + const int top = indices[0][0]; + const int bottom = indices[1][0]; + ptensor o = + (top == source ? op.op + : mptensor::transpose(op.op, {1, 0, 3, 2})); + /* + value = peps_parameters.MeanField_Env + ? core::Contract_two_sites_vertical_op12_MF_density( + *(Tn_[0][0]), *(Tn_[1][0]), o) + : core::Contract_two_sites_vertical_op12_density( + C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], + eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], + eTl[top], Tn[top], Tn[bottom], o); + */ + value = core::Contract_two_sites_vertical_op12_density( + C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], + eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], + eTl[top], Tn[top], Tn[bottom], o); + + } else { // ncol == 2 + const int left = indices[0][0]; + const int right = indices[0][1]; + ptensor o = + (left == source ? op.op + : mptensor::transpose(op.op, {1, 0, 3, 2})); + /* + value = peps_parameters.MeanField_Env + ? core::Contract_two_sites_horizontal_op12_MF_density( + *(Tn_[0][0]), *(Tn_[0][1]), o) + : core::Contract_two_sites_horizontal_op12_density( + C1[left], C2[right], C3[right], C4[left], eTt[left], + eTt[right], eTr[right], eTb[right], eTb[left], + eTl[left], Tn[left], Tn[right], o); + */ + value = core::Contract_two_sites_horizontal_op12_density( + C1[left], C2[right], C3[right], C4[left], eTt[left], + eTt[right], eTr[right], eTb[right], eTb[left], + eTl[left], Tn[left], Tn[right], o); + } + } /*else { + ptensor U, VT; + std::vector s; + mptensor::svd(op.op, {0, 2}, {1, 3}, U, s, VT); + const int ns = s.size(); + for (int is = 0; is < ns; ++is) { + ptensor source_op = + reshape(slice(U, 2, is, is + 1), {U.shape()[0], U.shape()[0]}); + op_[source_row][source_col] = &source_op; + ptensor target_op = + reshape(slice(VT, 0, is, is + 1), {VT.shape()[1], VT.shape()[1]}); + op_[target_row][target_col] = &target_op; + auto localvalue = + peps_parameters.MeanField_Env + ? core::Contract_MF_density(Tn_, op_) + : core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + value += localvalue * s[is]; + } + } + } else { + op_[source_row][source_col] = + &(onesite_operators[siteoperator_index(op.source_site, + op.ops_indices[0])] + .op); + const int target_site = lattice.other(op.source_site, dx, dy); + op_[target_row][target_col] = &( + onesite_operators[siteoperator_index(target_site, op.ops_indices[1])] + .op); + auto localvalue = + peps_parameters.MeanField_Env + ? core::Contract_MF_density(Tn_, op_) + : core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + value += localvalue; + }*/ + ret[op.group][{op.source_site, op.dx[0], op.dy[0]}] = value / norm; } ret.push_back(norms); @@ -532,8 +529,7 @@ auto iTPS::measure_twosite_density() time_observable += timer.elapsed(); return ret; } -*/ - + // template specialization template class iTPS; From 5c7f65daaf55c98df024f84cca77beb2d596dd12 Mon Sep 17 00:00:00 2001 From: Tsuyoshi Okubo Date: Thu, 15 Jun 2023 16:54:28 +0900 Subject: [PATCH 06/25] adopt updte of num_simple_step in develop --- src/iTPS/simple_update.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/iTPS/simple_update.cpp b/src/iTPS/simple_update.cpp index 576e04bc..40106b46 100644 --- a/src/iTPS/simple_update.cpp +++ b/src/iTPS/simple_update.cpp @@ -139,11 +139,12 @@ void iTPS::simple_update() { template void iTPS::simple_update_density() { + const int group = 0; Timer<> timer; tensor Tn1_new(comm); tensor Tn2_new(comm); std::vector lambda_c; - const int nsteps = peps_parameters.num_simple_step; + const int nsteps = peps_parameters.num_simple_step[group]; double next_report = 10.0; for (int int_tau = 0; int_tau < nsteps; ++int_tau) { @@ -243,11 +244,12 @@ void iTPS::simple_update_density() { template void iTPS::simple_update_density_purification() { + const int group = 0; Timer<> timer; tensor Tn1_new(comm); tensor Tn2_new(comm); std::vector lambda_c; - const int nsteps = peps_parameters.num_simple_step; + const int nsteps = peps_parameters.num_simple_step[group]; double next_report = 10.0; for (int int_tau = 0; int_tau < nsteps; ++int_tau) { From 0f8bfa3d216975d25522d2ce9aa9a6548f84fa1e Mon Sep 17 00:00:00 2001 From: Tsuyoshi Okubo Date: Tue, 27 Jun 2023 21:49:24 +0900 Subject: [PATCH 07/25] bug fixed in calculation of energy density --- src/iTPS/density.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/iTPS/density.cpp b/src/iTPS/density.cpp index 8f589e2a..6c2f1353 100644 --- a/src/iTPS/density.cpp +++ b/src/iTPS/density.cpp @@ -61,12 +61,12 @@ void iTPS::save_density( auto energy = 0.0; for (int iops=0; iops Date: Tue, 27 Jun 2023 21:50:33 +0900 Subject: [PATCH 08/25] implement main program together with many bug fix --- src/iTPS/CMakeLists.txt | 1 + src/iTPS/core/ctm_single.cpp | 139 ++++++++++----- src/iTPS/finite_temperature.cpp | 80 +++++++++ src/iTPS/iTPS.cpp | 17 +- src/iTPS/iTPS.hpp | 10 +- src/iTPS/main.cpp | 34 ++++ src/iTPS/measure.cpp | 125 ++------------ src/iTPS/multisite_obs.cpp | 9 + src/iTPS/optimize.cpp | 8 - src/iTPS/simple_update.cpp | 298 ++++++++++++++------------------ src/iTPS/twosite_obs.cpp | 143 ++++++++------- 11 files changed, 462 insertions(+), 402 deletions(-) create mode 100644 src/iTPS/finite_temperature.cpp diff --git a/src/iTPS/CMakeLists.txt b/src/iTPS/CMakeLists.txt index 8b039c3d..649ed740 100644 --- a/src/iTPS/CMakeLists.txt +++ b/src/iTPS/CMakeLists.txt @@ -20,6 +20,7 @@ add_library( full_update.cpp optimize.cpp time_evolution.cpp + finite_temperature.cpp correlation_function.cpp correlation_length.cpp transfer_matrix.cpp) diff --git a/src/iTPS/core/ctm_single.cpp b/src/iTPS/core/ctm_single.cpp index 8a9e5a8a..ac579ac7 100644 --- a/src/iTPS/core/ctm_single.cpp +++ b/src/iTPS/core/ctm_single.cpp @@ -129,8 +129,6 @@ void Calc_projector_left_block_single(const tensor &C1, const tensor &C4, const tensor &Tn1_s, const tensor &Tn4_s, const PEPS_Parameters peps_parameters, tensor &PU, tensor &PL) { - // Original (cheaper version of P. Corboz, T.M.Rice and M. Troyer, PRL 113, - // 046402(2014)) int e12 = eT1.shape()[1]; int e56 = eT6.shape()[0]; @@ -180,23 +178,32 @@ void Calc_projector_left_block_single(const tensor &C1, const tensor &C4, Shape shape_col(e56 * t34); /*int info ()= */ - rsvd(m_row, m_col, shape_row, shape_col, U, s, VT, e78, - static_cast(peps_parameters.RSVD_Oversampling_factor * e78)); + int cut = std::min(std::min(std::min(peps_parameters.CHI, e78 * t41), e12 * t12), e56 * t34); + rsvd(m_row, m_col, shape_row, shape_col, U, s, VT, cut, + static_cast(peps_parameters.RSVD_Oversampling_factor * cut)); double denom = s[0]; + std::vector s_c; + s_c.resize(cut); - for (int i = 0; i < e78; ++i) { + for (int i = 0; i < s_c.size(); ++i) { if (s[i] / denom > peps_parameters.Inverse_projector_cut) { - s[i] = 1.0 / sqrt(s[i]); + s_c[i] = 1.0 / sqrt(s[i]); } else { - s[i] = 0.0; + s_c[i] = 0.0; + cut = i; + break; } } - U.multiply_vector(s, 1); - VT.multiply_vector(s, 0); + tensor U_c = mptensor::slice(U, 1, 0, cut); + tensor VT_c = mptensor::slice(VT, 0, 0, cut); + s_c.resize(cut); + + U_c.multiply_vector(s_c, 1); + VT_c.multiply_vector(s_c, 0); - PU = reshape(tensordot(LB, conj(VT), Axes(1), Axes(1)), Shape(e78, t41, e78)); - PL = reshape(tensordot(LT, conj(U), Axes(1), Axes(0)), Shape(e78, t41, e78)); + PU = reshape(tensordot(LB, conj(VT_c), Axes(1), Axes(1)), Shape(e78, t41, cut)); + PL = reshape(tensordot(LT, conj(U_c), Axes(1), Axes(0)), Shape(e78, t41, cut)); } else { // full svd // @@ -205,28 +212,40 @@ void Calc_projector_left_block_single(const tensor &C1, const tensor &C4, std::vector s; /* int info = */ - svd(tensordot(LT, LB, Axes(0), Axes(0)), Axes(1), + svd(tensordot(LT, LB, Axes(0), Axes(0)), Axes(0), Axes(1), U, s, VT); double denom = s[0]; std::vector s_c; - s_c.resize(e78); - - for (int i = 0; i < e78; ++i) { + //s_c.resize(e78); + int cut = std::min(std::min(std::min(peps_parameters.CHI, e78 * t41), e12 * t12), e56 * t34); + s_c.resize(cut); + for (int i = 0; i < cut; ++i) { if (s[i] / denom > peps_parameters.Inverse_projector_cut) { s_c[i] = 1.0 / sqrt(s[i]); } else { s_c[i] = 0.0; + cut = i; + break; } } // O(D^{10}) - tensor U_c = mptensor::slice(U, 1, 0, e78); - tensor VT_c = mptensor::slice(VT, 0, 0, e78); + //tensor U_c = mptensor::slice(U, 1, 0, e78); + //tensor VT_c = mptensor::slice(VT, 0, 0, e78); + tensor U_c = mptensor::slice(U, 1, 0, cut); + tensor VT_c = mptensor::slice(VT, 0, 0, cut); + s_c.resize(cut); + U_c.multiply_vector(s_c, 1); VT_c.multiply_vector(s_c, 0); - PU = reshape(tensordot(LB, conj(VT), Axes(1), Axes(1)), Shape(e78, t41, e78)); - PL = reshape(tensordot(LT, conj(U), Axes(1), Axes(0)), Shape(e78, t41, e78)); + + //PU = reshape(tensordot(LB, conj(VT), Axes(1), Axes(1)), Shape(e78, t41, e78)); + //PL = reshape(tensordot(LT, conj(U), Axes(1), Axes(0)), Shape(e78, t41, e78)); + PU = reshape(tensordot(LB, conj(VT_c), Axes(1), Axes(1)), Shape(e78, t41, cut)); + PL = reshape(tensordot(LT, conj(U_c), Axes(1), Axes(0)), Shape(e78, t41, cut)); + + } } else { const auto comm = C1.get_comm(); @@ -330,27 +349,36 @@ void Calc_projector_updown_blocks_single( Shape shape_col(e34 * t23); /* int info = */ - rsvd(m_row, m_col, shape_row, shape_col, U, s, VT, e78, - static_cast(peps_parameters.RSVD_Oversampling_factor * e78)); + int cut = std::min(peps_parameters.CHI, e34 * t23); + rsvd(m_row, m_col, shape_row, shape_col, U, s, VT, cut, + static_cast(peps_parameters.RSVD_Oversampling_factor * cut)); double denom = s[0]; + std::vector s_c; + s_c.resize(cut); - for (int i = 0; i < e78; ++i) { + for (int i = 0; i < s.size(); ++i) { if (s[i] / denom > peps_parameters.Inverse_projector_cut) { - s[i] = 1.0 / sqrt(s[i]); + s_c[i] = 1.0 / sqrt(s[i]); } else { - s[i] = 0.0; + s_c[i] = 0.0; + cut = i; + break; } } - U.multiply_vector(s, 1); - VT.multiply_vector(s, 0); + tensor U_c = mptensor::slice(U, 1, 0, cut); + tensor VT_c = mptensor::slice(VT, 0, 0, cut); + s_c.resize(cut); - PU = reshape(tensordot(LB, tensordot(RB, conj(VT), Axes(1), Axes(1)), + U_c.multiply_vector(s_c, 1); + VT_c.multiply_vector(s_c, 0); + + PU = reshape(tensordot(LB, tensordot(RB, conj(VT_c), Axes(1), Axes(1)), Axes(1), Axes(0)), - Shape(e78, t41, e78)); - PL = reshape(tensordot(LT, tensordot(RT, conj(U), Axes(1), Axes(0)), + Shape(e78, t41, cut)); + PL = reshape(tensordot(LT, tensordot(RT, conj(U_c), Axes(1), Axes(0)), Axes(1), Axes(0)), - Shape(e78, t41, e78)); + Shape(e78, t41, cut)); } else { // full svd @@ -366,23 +394,29 @@ void Calc_projector_updown_blocks_single( Axes(0), U, s, VT); double denom = s[0]; std::vector s_c; - s_c.resize(e78); + int cut = std::min(peps_parameters.CHI, e34 * t23); + s_c.resize(cut); for (int i = 0; i < e78; ++i) { if (s[i] / denom > peps_parameters.Inverse_projector_cut) { s_c[i] = 1.0 / sqrt(s[i]); } else { s_c[i] = 0.0; + cut = i; + break; } } - tensor U_c = mptensor::slice(U, 1, 0, e78); - tensor VT_c = mptensor::slice(VT, 0, 0, e78); + //tensor U_c = mptensor::slice(U, 1, 0, e78); + //tensor VT_c = mptensor::slice(VT, 0, 0, e78); + tensor U_c = mptensor::slice(U, 1, 0, cut); + tensor VT_c = mptensor::slice(VT, 0, 0, cut); + s_c.resize(cut); U_c.multiply_vector(s_c, 1); VT_c.multiply_vector(s_c, 0); - PU = reshape(tensordot(R2, conj(VT_c), Axes(0), Axes(1)), Shape(e78, t41, e78)); - PL = reshape(tensordot(R1, conj(U_c), Axes(0), Axes(0)), Shape(e78, t41, e78)); + PU = reshape(tensordot(R2, conj(VT_c), Axes(0), Axes(1)), Shape(e78, t41, cut)); + PL = reshape(tensordot(R1, conj(U_c), Axes(0), Axes(0)), Shape(e78, t41, cut)); } } else { const MPI_Comm comm = C1.get_comm(); @@ -410,7 +444,6 @@ void Calc_Next_CTM_single(const tensor &C1, const tensor &C4, const tensor &eT1, C4_out = tensordot(tensordot(eT6, C4, Axes(1), Axes(0)), PL, Axes(2, 1), Axes(0, 1)); - double max_all = max_abs(C1_out); C1_out /= max_all; max_all = max_abs(C4_out); @@ -468,6 +501,7 @@ void Left_move_single(std::vector &C1, const std::vector &C2, k = lattice.bottom(j); l = lattice.left(k); + if (peps_parameters.CTM_Projector_corner) { Calc_projector_left_block_single(C1[i], C4[l], eTt[i], eTb[l], eTl[l], eTl[i], Tn_single[i], Tn_single[l], peps_parameters, PUs[iy], @@ -725,6 +759,7 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C d1 = Tn[num].shape()[3]; d2 = Tn[num].shape()[2]; C1[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 0, 0, 1), 1, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); + /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { C1[i] = extend(C1[i], Shape(peps_parameters.CHI, peps_parameters.CHI)); @@ -742,14 +777,13 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C C1[i] = extend(mptensor::slice(C1[i], 0, 0, peps_parameters.CHI), Shape(peps_parameters.CHI, peps_parameters.CHI)); } + */ num = lattice.top(lattice.right(i)); d1 = Tn[num].shape()[0]; d2 = Tn[num].shape()[3]; - C1[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 0, 0, 1), 1, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); - C2[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 1, 0, 1), 2, 0, 1), Shape(d1,d2)); - + /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { C2[i] = extend(C2[i], Shape(peps_parameters.CHI, peps_parameters.CHI)); } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { @@ -765,12 +799,13 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C C2[i] = extend(mptensor::slice(C2[i], 0, 0, peps_parameters.CHI), Shape(peps_parameters.CHI, peps_parameters.CHI)); } - + */ num = lattice.bottom(lattice.right(i)); d1 = Tn[num].shape()[1]; d2 = Tn[num].shape()[0]; C3[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 2, 0, 1), 3, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); + /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { C3[i] = extend(C3[i], Shape(peps_parameters.CHI, peps_parameters.CHI)); } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { @@ -786,12 +821,14 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C C3[i] = extend(mptensor::slice(C3[i], 0, 0, peps_parameters.CHI), Shape(peps_parameters.CHI, peps_parameters.CHI)); } - + */ + num = lattice.bottom(lattice.left(i)); - d1 = Tn[num].shape()[2] * Tn[num].shape()[2]; - d2 = Tn[num].shape()[1] * Tn[num].shape()[1]; + d1 = Tn[num].shape()[2]; + d2 = Tn[num].shape()[1]; C4[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 0, 0, 1), 3, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); + /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { C4[i] = extend(C4[i], Shape(peps_parameters.CHI, peps_parameters.CHI)); } else if (d1 >= peps_parameters.CHI && d2 >= peps_parameters.CHI) { @@ -807,6 +844,7 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C C4[i] = extend(mptensor::slice(C4[i], 0, 0, peps_parameters.CHI), Shape(peps_parameters.CHI, peps_parameters.CHI)); } + */ num = lattice.top(i); d1 = Tn[num].shape()[0]; @@ -814,6 +852,7 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C d34 = Tn[num].shape()[3]; eTt[i] = reshape(mptensor::slice(Tn_single[num], 1, 0, 1), Shape(d1, d2, d34)); + /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { eTt[i] = extend( eTt[i], Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); @@ -832,13 +871,15 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C extend(mptensor::slice(eTt[i], 0, 0, peps_parameters.CHI), Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); } - + */ + num = lattice.right(i); d1 = Tn[num].shape()[1]; d2 = Tn[num].shape()[3]; d34 = Tn[num].shape()[0]; eTr[i] = reshape(mptensor::slice(Tn_single[num], 2, 0, 1), Shape(d34, d1, d2)).transpose(Axes(1, 2, 0)); + /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { eTr[i] = extend( eTr[i], Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); @@ -857,13 +898,15 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C extend(mptensor::slice(eTr[i], 0, 0, peps_parameters.CHI), Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); } - + */ + num = lattice.bottom(i); d1 = Tn[num].shape()[2]; d2 = Tn[num].shape()[0]; d34 = Tn[num].shape()[1]; eTb[i] = reshape(mptensor::slice(Tn_single[num], 3, 0, 1), Shape(d2, d34, d1)).transpose(Axes(2, 0, 1)); + /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { eTb[i] = extend( eTb[i], Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); @@ -882,13 +925,15 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C extend(mptensor::slice(eTb[i], 0, 0, peps_parameters.CHI), Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); } - + */ + num = lattice.left(i); d1 = Tn[num].shape()[3]; d2 = Tn[num].shape()[1]; d34 = Tn[num].shape()[2]; eTl[i] = reshape(mptensor::slice(Tn_single[num], 0, 0, 1), Shape(d2, d34, d1)).transpose(Axes(2, 0, 1)); + /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { eTl[i] = extend( eTl[i], Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); @@ -907,10 +952,10 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C extend(mptensor::slice(eTl[i], 0, 0, peps_parameters.CHI), Shape(peps_parameters.CHI, peps_parameters.CHI, d34)); } + */ } } // Initialize done - bool convergence = false; int count = 0; std::vector C1_old = C1; diff --git a/src/iTPS/finite_temperature.cpp b/src/iTPS/finite_temperature.cpp new file mode 100644 index 00000000..61f61012 --- /dev/null +++ b/src/iTPS/finite_temperature.cpp @@ -0,0 +1,80 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "iTPS.hpp" + +namespace tenes { +namespace itps { + +template +void iTPS::finite_temperature() { + Timer<> timer; + double time_measure = 0.0; + double next_report = 10.0; + double beta = 0.0; + measure_density(beta, "FT_"); + + const int num_groups = num_simple_update_groups; + + for (int group = 0; group < num_groups; ++group) { + const int nsteps = peps_parameters.num_simple_step[group]; + const double dt = peps_parameters.tau_simple_step[group]; + int measure_interval = peps_parameters.measure_interval[group]; + + for (int int_tau = 0; int_tau < nsteps; ++int_tau) { + auto const& evols = simple_updates; + for (auto up : evols) { + if (up.group != group) { + continue; + } + simple_update_density(up); + } + beta += dt * 2.0; + // local gauge fixing + if (peps_parameters.Simple_Gauge_Fix) { + fix_local_gauge_density(); + } + if ((int_tau + 1) % measure_interval == 0) { + Timer<> timer_m; + measure_density(beta, "FT_"); + time_measure += timer_m.elapsed(); + } + if (peps_parameters.print_level >= PrintLevel::info) { + double r_tau = 100.0 * (int_tau + 1) / nsteps; + if (r_tau >= next_report) { + while (r_tau >= next_report) { + next_report += 10.0; + } + std::cout << " " << next_report - 10.0 << "% [" << int_tau + 1 << "/" + << nsteps << "] done" << std::endl; + } + } + } // end of for (int_tau) + if (nsteps % measure_interval != 0) { + Timer<> timer_m; + measure_density(beta, "TE_"); + time_measure += timer_m.elapsed(); + } + time_simple_update += timer.elapsed() - time_measure; + } +} + +// template specialization +template class iTPS; +template class iTPS; + +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/iTPS.cpp b/src/iTPS/iTPS.cpp index 25cdeff9..2f04bc65 100644 --- a/src/iTPS/iTPS.cpp +++ b/src/iTPS/iTPS.cpp @@ -123,8 +123,15 @@ iTPS::iTPS(MPI_Comm comm_, PEPS_Parameters peps_parameters_, std::cout << "Bond dimensions:\n"; std::cout << " D (Bulk): " << Dmax << "\n"; std::cout << " chi (CTM): " << CHI << std::endl; - if (CHI < Dmax * Dmax) { - std::cerr << "WARNING: CTM may be too small (chi < D*D)" << std::endl; + if (peps_parameters.calcmode == PEPS_Parameters::CalculationMode::finite_temperature){ + if (CHI < Dmax) { + std::cerr << "WARNING: CTM may be too small (chi < D) for finite_temperature mode" << std::endl; + } + else { + if (CHI < Dmax * Dmax) { + std::cerr << "WARNING: CTM may be too small (chi < D*D)" << std::endl; + } + } } } @@ -163,7 +170,11 @@ iTPS::iTPS(MPI_Comm comm_, PEPS_Parameters peps_parameters_, throw tenes::runtime_error(ss.str()); } - initialize_tensors(); + if (peps_parameters.calcmode == PEPS_Parameters::CalculationMode::finite_temperature){ + initialize_tensors_density(); + } else { + initialize_tensors(); + } std::set simple_update_groups; bool notwarned = true; diff --git a/src/iTPS/iTPS.hpp b/src/iTPS/iTPS.hpp index b6569e8c..1dbd9db3 100644 --- a/src/iTPS/iTPS.hpp +++ b/src/iTPS/iTPS.hpp @@ -116,7 +116,10 @@ class iTPS { void simple_update(EvolutionOperator const &up); void fix_local_gauge(); void simple_update_density(); + void simple_update_density(EvolutionOperator const &up); void simple_update_density_purification(); + void simple_update_density_purification(EvolutionOperator const &up); + void fix_local_gauge_density(); //! perform full update void full_update(); @@ -124,18 +127,20 @@ class iTPS { //! optimize tensors void optimize(); - void optimize_density(); + //void optimize_density(); //! measure expectation value of observables void measure(boost::optional time = boost::optional(), std::string filename_prefix = ""); - void measure_density(); + void measure_density(double beta, std::string filename_prefix = "FT_"); //! print elapsed time void summary() const; void time_evolution(); + void finite_temperature(); + //! measure expectation value of onesite observables std::vector> measure_onesite(); std::vector> measure_onesite_density(); @@ -146,6 +151,7 @@ class iTPS { //! measure expectation value of multisite observables std::vector> measure_multisite(); + std::vector> measure_multisite_density(); //! measure correlation functions std::vector measure_correlation(); diff --git a/src/iTPS/main.cpp b/src/iTPS/main.cpp index c22f6f65..f994f992 100644 --- a/src/iTPS/main.cpp +++ b/src/iTPS/main.cpp @@ -177,6 +177,27 @@ int run_timeevolution(MPI_Comm comm, PEPS_Parameters peps_parameters, return 0; } +template +int run_finitetemperature(MPI_Comm comm, PEPS_Parameters peps_parameters, + SquareLattice lattice, + EvolutionOperators simple_updates, + EvolutionOperators full_updates, + Operators onesite_operators, + Operators twosite_operators, + Operators multisite_operators, + CorrelationParameter corparam, + TransferMatrix_Parameters clength_param) { + iTPS tns(comm, peps_parameters, lattice, simple_updates, full_updates, + onesite_operators, twosite_operators, multisite_operators, + corparam, clength_param); + std::cout << " " << "done tns" << std::endl; + tns.finite_temperature(); + tns.summary(); + return 0; +} + + + int itps_main(const char* input_filename, MPI_Comm comm, PrintLevel print_level) { return itps_main(std::string(input_filename), comm, print_level); @@ -309,7 +330,20 @@ int itps_main(std::string input_filename, MPI_Comm comm, return run_timeevolution(comm, peps_parameters, lattice, simple_updates, full_updates, onesite_obs, twosite_obs, multisite_obs, corparam, clength_param); + } else if (peps_parameters.calcmode == + PEPS_Parameters::CalculationMode::finite_temperature) { + if (is_real) { + return run_finitetemperature(comm, peps_parameters, lattice, + to_real(simple_updates), to_real(full_updates), + to_real(onesite_obs), to_real(twosite_obs), + to_real(multisite_obs), corparam, clength_param); + } else { + return run_finitetemperature(comm, peps_parameters, lattice, simple_updates, + full_updates, onesite_obs, twosite_obs, + multisite_obs, corparam, clength_param); + } } else { + return 1; } } diff --git a/src/iTPS/measure.cpp b/src/iTPS/measure.cpp index 25bd2bc9..af0660f4 100644 --- a/src/iTPS/measure.cpp +++ b/src/iTPS/measure.cpp @@ -108,124 +108,23 @@ void iTPS::summary() const { template -void iTPS::measure_density() { - if (peps_parameters.print_level >= PrintLevel::info) { - std::cout << "Start calculating observables" << std::endl; - std::cout << " Start updating environment" << std::endl; - } - if (!peps_parameters.MeanField_Env) { - update_CTM_density(); - } +void iTPS::measure_density(double beta, std::string filename_prefix) { + //if (!peps_parameters.MeanField_Env) { + update_CTM_density(); + // } - if (peps_parameters.print_level >= PrintLevel::info) { - std::cout << " Start calculating onesite operators" << std::endl; - } auto onesite_obs = measure_onesite_density(); - save_onesite(onesite_obs); + save_onesite(onesite_obs, beta, filename_prefix); - if (peps_parameters.print_level >= PrintLevel::info) { - std::cout << " Start calculating twosite operators" << std::endl; - } auto twosite_obs = measure_twosite_density(); - save_twosite(twosite_obs); - - if (mpirank == 0) { - std::vector loc_obs(num_onesite_operators); - int numsites = 0; - for (int i = 0; i < N_UNIT; ++i) { - if (lattice.physical_dims[i] > 1) { - ++numsites; - for (int ilops = 0; ilops < num_onesite_operators; ++ilops) { - loc_obs[ilops] += onesite_obs[ilops][i]; - } - } - } - std::vector two_obs(num_twosite_operators); - for (int iops = 0; iops < num_twosite_operators; ++iops) { - for (const auto &obs : twosite_obs[iops]) { - two_obs[iops] += obs.second; - } - } + save_twosite(twosite_obs, beta, filename_prefix); - auto energy = 0.0; - for (const auto &obs : twosite_obs[0]) { - energy += std::real(obs.second); - } - - { - const double invV = 1.0 / numsites; - std::string filename = outdir + "/density.dat"; - std::ofstream ofs(filename.c_str()); - ofs << std::scientific - << std::setprecision(std::numeric_limits::max_digits10); - - if (mpirank == 0) { - for (int ilops = 0; ilops < num_onesite_operators; ++ilops) { - if (onesite_operator_counts[ilops] == 0){ - continue; - } - const auto v = loc_obs[ilops] * invV; - ofs << onesite_operator_names[ilops] << " = "; - if (std::real(v) >= 0.0) { - ofs << " "; - } - ofs << std::real(v) << " "; - if (std::imag(v) >= 0.0) { - ofs << " "; - } - ofs << std::imag(v) << std::endl; - } - - for (int ilops = 0; ilops < num_twosite_operators; ++ilops) { - if (twosite_operator_counts[ilops] == 0){ - continue; - } - const auto v = two_obs[ilops] * invV; - ofs << twosite_operator_names[ilops] << " = "; - if (std::real(v) >= 0.0) { - ofs << " "; - } - ofs << std::real(v) << " "; - if (std::imag(v) >= 0.0) { - ofs << " "; - } - ofs << std::imag(v) << std::endl; - } - std::cout << " Save observable densities to " << filename - << std::endl; - } - } - { - std::string filename = outdir + "/parameters.dat"; - std::ofstream ofs(filename.c_str(), std::ios::out | std::ios::app); - ofs << "finish_datetime = " << util::datetime() << std::endl; - } - - if (peps_parameters.print_level >= PrintLevel::info) { - const double invV = 1.0 / numsites; - std::cout << std::endl; - - std::cout << "Onesite observables per site:" << std::endl; - for (int ilops = 0; ilops < num_onesite_operators; ++ilops) { - if ( onesite_operator_counts[ilops] == 0) { - continue; - } - const auto v = loc_obs[ilops] * invV; - std::cout << " " << onesite_operator_names[ilops] << " = " - << std::real(v) << " " << std::imag(v) << std::endl; - } - - std::cout << "Twosite observables per site:" << std::endl; - for (int ilops = 0; ilops < num_twosite_operators; ++ilops) { - if ( twosite_operator_counts[ilops] == 0) { - continue; - } - const auto v = two_obs[ilops] * invV; - std::cout << " " << twosite_operator_names[ilops] << " = " - << std::real(v) << " " << std::imag(v) << std::endl; - } - } - } // end of if(mpirank == 0) + // In finite temperature simplation, multisite operators are not supported so far. + auto multisite_obs = measure_multisite_density(); + if (multisite_operators.size() > 0) { + save_multisite(multisite_obs, beta, filename_prefix); + } + save_density(onesite_obs, twosite_obs, multisite_obs, beta, filename_prefix); } // template specialization diff --git a/src/iTPS/multisite_obs.cpp b/src/iTPS/multisite_obs.cpp index bbaa401d..3f4b77ff 100644 --- a/src/iTPS/multisite_obs.cpp +++ b/src/iTPS/multisite_obs.cpp @@ -306,6 +306,15 @@ void iTPS::save_multisite( } } + + +template +auto iTPS::measure_multisite_density() + -> std::vector::tensor_type>> { + // not implemented yet + std::vector> ret(0); + return ret; +} // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/optimize.cpp b/src/iTPS/optimize.cpp index abaf2522..18afc94b 100644 --- a/src/iTPS/optimize.cpp +++ b/src/iTPS/optimize.cpp @@ -37,14 +37,6 @@ void iTPS::optimize() { } -template -void iTPS::optimize_density() { - if (peps_parameters.print_level >= PrintLevel::info) { - std::cout << "Start simple update for density matrix" << std::endl; - } - simple_update_density(); -} - // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/simple_update.cpp b/src/iTPS/simple_update.cpp index 40106b46..dfed05ff 100644 --- a/src/iTPS/simple_update.cpp +++ b/src/iTPS/simple_update.cpp @@ -137,96 +137,109 @@ void iTPS::simple_update() { } +template +void iTPS::simple_update_density(EvolutionOperator const &up) { + if (up.is_onesite()) { + const int source = up.source_site; + Tn[source] = tensordot(Tn[source], up.op, mptensor::Axes(4), mptensor::Axes(0)); + Tn[source] = tensordot(Tn[source], conj(up.op), mptensor::Axes(4), mptensor::Axes(1)); + } else { + tensor Tn1_work(comm), Tn2_work(comm); + std::vector lambda_work; + const int source = up.source_site; + const int source_leg = up.source_leg; + const int target = lattice.neighbor(source, source_leg); + const int target_leg = (source_leg + 2) % 4; + core::Simple_update_bond(reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), lambda_tensor[source], + lambda_tensor[target], mptensor::kron(up.op,conj(up.op).transpose(mptensor::Shape(2,3,0,1))), source_leg, + peps_parameters, Tn1_work, Tn2_work, lambda_work); + lambda_tensor[source][source_leg] = lambda_work; + lambda_tensor[target][target_leg] = lambda_work; + Tn[source] = reshape(Tn1_work,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],up.op.shape()[2],up.op.shape()[0])); + Tn[target] = reshape(Tn2_work,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],up.op.shape()[3],up.op.shape()[1])); + } +} + + +template +void iTPS::fix_local_gauge_density() { + tensor Tn1_work(comm), Tn2_work(comm); + std::vector lambda_work; + const int maxiter_gauge = peps_parameters.Simple_Gauge_maxiter; + const double conv_tol_gauge = + peps_parameters.Simple_Gauge_Convergence_Epsilon; + int iter_gauge = 0; + for (iter_gauge = 0; iter_gauge < maxiter_gauge; ++iter_gauge) { + for (int parity : {1, -1}) { + for (int source_leg : {2, 1}) { + int target_leg = (source_leg + 2) % 4; + for (int source = 0; source < N_UNIT; ++source) { + if (lattice.parity(source) != parity) { + continue; + } + if (lattice.virtual_dims[source][source_leg] <= 1) { + continue; + } + int target = lattice.neighbor(source, source_leg); + core::fix_local_gauge( + reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), + reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), + lambda_tensor[source], + lambda_tensor[target], source_leg, peps_parameters, Tn1_work, + Tn2_work, lambda_work); + lambda_tensor[source][source_leg] = lambda_work; + lambda_tensor[target][target_leg] = lambda_work; + Tn[source] = reshape(Tn1_work,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4],Tn[source].shape()[5])); + Tn[target] = reshape(Tn2_work,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4],Tn[target].shape()[5])); + } + } + } + + // convergence check + double score = 0.0; + for (int site = 0; site < N_UNIT; ++site) { + for (int leg = 0; leg < nleg; ++leg) { + if (lattice.virtual_dims[site][leg] <= 1) { + continue; + } + auto M = core::boundary_tensor(reshape(Tn[site],mptensor::Shape(Tn[site].shape()[0],Tn[site].shape()[1],Tn[site].shape()[2],Tn[site].shape()[3],Tn[site].shape()[4]*Tn[site].shape()[5])), + lambda_tensor[site], leg, + peps_parameters); + + tensor U; + std::vector D; + eigh(M, mptensor::Axes(0), mptensor::Axes(1), D, U); + for (auto d : D) { + score = std::max(score, std::abs(d - 1.0)); + } + } + } // end of for (source) + if (score < conv_tol_gauge) { + break; + } + } // end of for (iter_gauge) +} + + template void iTPS::simple_update_density() { const int group = 0; Timer<> timer; - tensor Tn1_new(comm); - tensor Tn2_new(comm); - std::vector lambda_c; const int nsteps = peps_parameters.num_simple_step[group]; double next_report = 10.0; for (int int_tau = 0; int_tau < nsteps; ++int_tau) { for (auto up : simple_updates) { - if (up.is_onesite()) { - const int source = up.source_site; - Tn[source] = tensordot(Tn[source], up.op, mptensor::Axes(4), mptensor::Axes(0)); - Tn[source] = tensordot(Tn[source], conj(up.op), mptensor::Axes(4), mptensor::Axes(1)); - } else { - const int source = up.source_site; - const int source_leg = up.source_leg; - const int target = lattice.neighbor(source, source_leg); - const int target_leg = (source_leg + 2) % 4; - core::Simple_update_bond(reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), lambda_tensor[source], - lambda_tensor[target], mptensor::kron(up.op,conj(up.op.transpose(mptensor::Shape(2,3,0,1)))), source_leg, - peps_parameters, Tn1_new, Tn2_new, lambda_c); - lambda_tensor[source][source_leg] = lambda_c; - lambda_tensor[target][target_leg] = lambda_c; - Tn[source] = reshape(Tn1_new,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],up.op.shape()[2],up.op.shape()[0])); - Tn[target] = reshape(Tn2_new,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],up.op.shape()[3],up.op.shape()[1])); + if (up.group != group) { + continue; } + simple_update_density(up); } // local gauge fixing - const int maxiter_gauge = peps_parameters.Simple_Gauge_maxiter; - const double conv_tol_gauge = - peps_parameters.Simple_Gauge_Convergence_Epsilon; if (peps_parameters.Simple_Gauge_Fix) { - int iter_gauge = 0; - for (iter_gauge = 0; iter_gauge < maxiter_gauge; ++iter_gauge) { - for (int parity : {1, -1}) { - for (int source_leg : {2, 1}) { - int target_leg = (source_leg + 2) % 4; - for (int source = 0; source < N_UNIT; ++source) { - if (lattice.parity(source) != parity) { - continue; - } - if (lattice.virtual_dims[source][source_leg] <= 1) { - continue; - } - int target = lattice.neighbor(source, source_leg); - core::fix_local_gauge( - reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), - reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), - lambda_tensor[source], - lambda_tensor[target], source_leg, peps_parameters, Tn1_new, - Tn2_new, lambda_c); - lambda_tensor[source][source_leg] = lambda_c; - lambda_tensor[target][target_leg] = lambda_c; - Tn[source] = reshape(Tn1_new,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4],Tn[source].shape()[5])); - Tn[target] = reshape(Tn2_new,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4],Tn[target].shape()[5])); - } - } - } - - // convergence check - double score = 0.0; - for (int site = 0; site < N_UNIT; ++site) { - for (int leg = 0; leg < nleg; ++leg) { - if (lattice.virtual_dims[site][leg] <= 1) { - continue; - } - auto M = core::boundary_tensor(reshape(Tn[site],mptensor::Shape(Tn[site].shape()[0],Tn[site].shape()[1],Tn[site].shape()[2],Tn[site].shape()[3],Tn[site].shape()[4]*Tn[site].shape()[5])), - lambda_tensor[site], leg, - peps_parameters); - tensor U; - std::vector D; - eigh(M, mptensor::Axes(0), mptensor::Axes(1), D, U); - for (auto d : D) { - score = std::max(score, std::abs(d - 1.0)); - } - } - } // end of for (source) - // std::cout << int_tau << " " << iter_gauge << " " << score - // << std::endl; - if (score < conv_tol_gauge) { - // std::cout << int_tau << " " << iter_gauge << " " << score - // << std::endl; - break; - } - } // end of for (iter_gauge) - } // end of if (Simple_Gauge_Fix) + fix_local_gauge_density(); + } if (peps_parameters.print_level >= PrintLevel::info) { double r_tau = 100.0 * (int_tau + 1) / nsteps; @@ -242,109 +255,62 @@ void iTPS::simple_update_density() { time_simple_update += timer.elapsed(); } + +template +void iTPS::simple_update_density_purification(EvolutionOperator const &up) { + if (up.is_onesite()) { + const int source = up.source_site; + Tn[source] = tensordot(Tn[source], up.op, mptensor::Axes(5), mptensor::Axes(0)); + } else { + tensor Tn1_work(comm), Tn2_work(comm); + std::vector lambda_work; + const int source = up.source_site; + const int source_leg = up.source_leg; + const int target = lattice.neighbor(source, source_leg); + const int target_leg = (source_leg + 2) % 4; + + + tensor identity(comm, mptensor::Shape(Tn[source].shape()[5],Tn[target].shape()[5],Tn[source].shape()[5],Tn[target].shape()[5])); + for (int j1 = 0; j1 < Tn[source].shape()[5]; ++j1) { + for (int k1 = 0; k1 < Tn[target].shape()[5]; ++k1) { + for (int j2 = 0; j2 < Tn[source].shape()[5]; ++j2) { + for (int k2 = 0; k2 < Tn[target].shape()[5]; ++k2) { + identity.set_value(mptensor::Index(j1, k1, j2, k2), (j1 == j2 && k1 == k2 ? 1.0 : 0.0)); + } + } + } + } + + core::Simple_update_bond(reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), lambda_tensor[source], + lambda_tensor[target], mptensor::kron(up.op,identity), source_leg, + peps_parameters, Tn1_work, Tn2_work, lambda_work); + lambda_tensor[source][source_leg] = lambda_work; + lambda_tensor[target][target_leg] = lambda_work; + Tn[source] = reshape(Tn1_work,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],up.op.shape()[2],Tn[source].shape()[5])); + Tn[target] = reshape(Tn2_work,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],up.op.shape()[3],Tn[target].shape()[5])); + } +} + + template void iTPS::simple_update_density_purification() { const int group = 0; Timer<> timer; - tensor Tn1_new(comm); - tensor Tn2_new(comm); - std::vector lambda_c; const int nsteps = peps_parameters.num_simple_step[group]; double next_report = 10.0; for (int int_tau = 0; int_tau < nsteps; ++int_tau) { for (auto up : simple_updates) { - if (up.is_onesite()) { - const int source = up.source_site; - Tn[source] = tensordot(Tn[source], up.op, mptensor::Axes(4), mptensor::Axes(0)); - Tn[source] = tensordot(Tn[source], conj(up.op), mptensor::Axes(4), mptensor::Axes(1)); - } else { - const int source = up.source_site; - const int source_leg = up.source_leg; - const int target = lattice.neighbor(source, source_leg); - const int target_leg = (source_leg + 2) % 4; - - - tensor identity(comm, mptensor::Shape(Tn[source].shape()[5],Tn[target].shape()[5],Tn[source].shape()[5],Tn[target].shape()[5])); - for (int j1 = 0; j1 < Tn[source].shape()[5]; ++j1) { - for (int k1 = 0; k1 < Tn[target].shape()[5]; ++k1) { - for (int j2 = 0; j2 < Tn[source].shape()[5]; ++j2) { - for (int k2 = 0; k2 < Tn[target].shape()[5]; ++k2) { - identity.set_value(mptensor::Index(j1, k1, j2, k2), (j1 == j2 && k1 == k2 ? 1.0 : 0.0)); - } - } - } - } - - core::Simple_update_bond(reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), lambda_tensor[source], - lambda_tensor[target], mptensor::kron(up.op,identity), source_leg, - peps_parameters, Tn1_new, Tn2_new, lambda_c); - lambda_tensor[source][source_leg] = lambda_c; - lambda_tensor[target][target_leg] = lambda_c; - Tn[source] = reshape(Tn1_new,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],up.op.shape()[2],Tn[source].shape()[5])); - Tn[target] = reshape(Tn2_new,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],up.op.shape()[3],Tn[target].shape()[5])); + if (up.group != group) { + continue; } + simple_update_density_purification(up); } // local gauge fixing - const int maxiter_gauge = peps_parameters.Simple_Gauge_maxiter; - const double conv_tol_gauge = - peps_parameters.Simple_Gauge_Convergence_Epsilon; if (peps_parameters.Simple_Gauge_Fix) { - int iter_gauge = 0; - for (iter_gauge = 0; iter_gauge < maxiter_gauge; ++iter_gauge) { - for (int parity : {1, -1}) { - for (int source_leg : {2, 1}) { - int target_leg = (source_leg + 2) % 4; - for (int source = 0; source < N_UNIT; ++source) { - if (lattice.parity(source) != parity) { - continue; - } - if (lattice.virtual_dims[source][source_leg] <= 1) { - continue; - } - int target = lattice.neighbor(source, source_leg); - core::fix_local_gauge( - reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), - reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), - lambda_tensor[source], - lambda_tensor[target], source_leg, peps_parameters, Tn1_new, - Tn2_new, lambda_c); - lambda_tensor[source][source_leg] = lambda_c; - lambda_tensor[target][target_leg] = lambda_c; - Tn[source] = reshape(Tn1_new,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4],Tn[source].shape()[5])); - Tn[target] = reshape(Tn2_new,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4],Tn[target].shape()[5])); - } - } - } - - // convergence check - double score = 0.0; - for (int site = 0; site < N_UNIT; ++site) { - for (int leg = 0; leg < nleg; ++leg) { - if (lattice.virtual_dims[site][leg] <= 1) { - continue; - } - auto M = core::boundary_tensor(reshape(Tn[site],mptensor::Shape(Tn[site].shape()[0],Tn[site].shape()[1],Tn[site].shape()[2],Tn[site].shape()[3],Tn[site].shape()[4]*Tn[site].shape()[5])), - lambda_tensor[site], leg, - peps_parameters); - tensor U; - std::vector D; - eigh(M, mptensor::Axes(0), mptensor::Axes(1), D, U); - for (auto d : D) { - score = std::max(score, std::abs(d - 1.0)); - } - } - } // end of for (source) - // std::cout << int_tau << " " << iter_gauge << " " << score - // << std::endl; - if (score < conv_tol_gauge) { - // std::cout << int_tau << " " << iter_gauge << " " << score - // << std::endl; - break; - } - } // end of for (iter_gauge) - } // end of if (Simple_Gauge_Fix) + fix_local_gauge_density(); + } if (peps_parameters.print_level >= PrintLevel::info) { double r_tau = 100.0 * (int_tau + 1) / nsteps; @@ -356,7 +322,7 @@ void iTPS::simple_update_density_purification() { << nsteps << "] done" << std::endl; } } - } + } time_simple_update += timer.elapsed(); } diff --git a/src/iTPS/twosite_obs.cpp b/src/iTPS/twosite_obs.cpp index 95efd256..082db68a 100644 --- a/src/iTPS/twosite_obs.cpp +++ b/src/iTPS/twosite_obs.cpp @@ -354,6 +354,15 @@ auto iTPS::measure_twosite_density() std::map norms; + for (const auto &op : twosite_operators) { + const int dx = op.dx[0]; + const int dy = op.dy[0]; + + const int ncol = std::abs(dx) + 1; + const int nrow = std::abs(dy) + 1; + } + + for (const auto &op : twosite_operators) { const int source = op.source_site; const int dx = op.dx[0]; @@ -433,7 +442,7 @@ auto iTPS::measure_twosite_density() } } */ - + if (norms.count(norm_key) == 0) { if (nrow == 2){ const int top = indices[0][0]; @@ -454,12 +463,12 @@ auto iTPS::measure_twosite_density() auto norm = norms[norm_key]; tensor_type value = 0.0; - // if (op.ops_indices.empty()) { if (nrow * ncol == 2) { - if (nrow == 2) { - const int top = indices[0][0]; - const int bottom = indices[1][0]; - ptensor o = + if (op.ops_indices.empty()) { + if (nrow == 2) { + const int top = indices[0][0]; + const int bottom = indices[1][0]; + ptensor o = (top == source ? op.op : mptensor::transpose(op.op, {1, 0, 3, 2})); /* @@ -471,65 +480,73 @@ auto iTPS::measure_twosite_density() eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], eTl[top], Tn[top], Tn[bottom], o); */ - value = core::Contract_two_sites_vertical_op12_density( - C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], - eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], - eTl[top], Tn[top], Tn[bottom], o); - - } else { // ncol == 2 - const int left = indices[0][0]; - const int right = indices[0][1]; - ptensor o = + value = core::Contract_two_sites_vertical_op12_density( + C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], + eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], + eTl[top], Tn[top], Tn[bottom], o); + + } else { // ncol == 2 + const int left = indices[0][0]; + const int right = indices[0][1]; + ptensor o = (left == source ? op.op - : mptensor::transpose(op.op, {1, 0, 3, 2})); - /* - value = peps_parameters.MeanField_Env - ? core::Contract_two_sites_horizontal_op12_MF_density( - *(Tn_[0][0]), *(Tn_[0][1]), o) - : core::Contract_two_sites_horizontal_op12_density( - C1[left], C2[right], C3[right], C4[left], eTt[left], - eTt[right], eTr[right], eTb[right], eTb[left], - eTl[left], Tn[left], Tn[right], o); - */ - value = core::Contract_two_sites_horizontal_op12_density( - C1[left], C2[right], C3[right], C4[left], eTt[left], - eTt[right], eTr[right], eTb[right], eTb[left], - eTl[left], Tn[left], Tn[right], o); - } - } /*else { - ptensor U, VT; - std::vector s; - mptensor::svd(op.op, {0, 2}, {1, 3}, U, s, VT); - const int ns = s.size(); - for (int is = 0; is < ns; ++is) { - ptensor source_op = - reshape(slice(U, 2, is, is + 1), {U.shape()[0], U.shape()[0]}); - op_[source_row][source_col] = &source_op; - ptensor target_op = - reshape(slice(VT, 0, is, is + 1), {VT.shape()[1], VT.shape()[1]}); - op_[target_row][target_col] = &target_op; - auto localvalue = - peps_parameters.MeanField_Env - ? core::Contract_MF_density(Tn_, op_) - : core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); - value += localvalue * s[is]; - } + : mptensor::transpose(op.op, {1, 0, 3, 2})); + /* + value = peps_parameters.MeanField_Env + ? core::Contract_two_sites_horizontal_op12_MF_density( + *(Tn_[0][0]), *(Tn_[0][1]), o) + : core::Contract_two_sites_horizontal_op12_density( + C1[left], C2[right], C3[right], C4[left], eTt[left], + eTt[right], eTr[right], eTb[right], eTb[left], + eTl[left], Tn[left], Tn[right], o); + */ + value = core::Contract_two_sites_horizontal_op12_density( + C1[left], C2[right], C3[right], C4[left], eTt[left], + eTt[right], eTr[right], eTb[right], eTb[left], + eTl[left], Tn[left], Tn[right], o); + } + } else { + if (nrow == 2) { + const int top = indices[0][0]; + const int bottom = indices[1][0]; + const int target_site = lattice.other(op.source_site, dx, dy); + + ptensor op_t, op_b; + + if (top == source){ + op_t = onesite_operators[siteoperator_index(op.source_site,op.ops_indices[0])].op; + op_b = onesite_operators[siteoperator_index(target_site, op.ops_indices[1])].op; + } else{ + op_t = onesite_operators[siteoperator_index(target_site, op.ops_indices[1])].op; + op_b = onesite_operators[siteoperator_index(op.source_site,op.ops_indices[0])].op; + } + + value = core::Contract_two_sites_vertical_density( + C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], + eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], + eTl[top], Tn[top], Tn[bottom], op_t, op_b); + + } else { // ncol == 2 + const int left = indices[0][0]; + const int right = indices[0][1]; + const int target_site = lattice.other(op.source_site, dx, dy); + + ptensor op_l, op_r; + + if (left == source){ + op_l = onesite_operators[siteoperator_index(op.source_site,op.ops_indices[0])].op; + op_r = onesite_operators[siteoperator_index(target_site, op.ops_indices[1])].op; + } else{ + op_l = onesite_operators[siteoperator_index(target_site, op.ops_indices[1])].op; + op_r = onesite_operators[siteoperator_index(op.source_site,op.ops_indices[0])].op; + value = core::Contract_two_sites_horizontal_density( + C1[left], C2[right], C3[right], C4[left], eTt[left], + eTt[right], eTr[right], eTb[right], eTb[left], + eTl[left], Tn[left], Tn[right], op_l, op_r); + } + } } - } else { - op_[source_row][source_col] = - &(onesite_operators[siteoperator_index(op.source_site, - op.ops_indices[0])] - .op); - const int target_site = lattice.other(op.source_site, dx, dy); - op_[target_row][target_col] = &( - onesite_operators[siteoperator_index(target_site, op.ops_indices[1])] - .op); - auto localvalue = - peps_parameters.MeanField_Env - ? core::Contract_MF_density(Tn_, op_) - : core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); - value += localvalue; - }*/ + } ret[op.group][{op.source_site, op.dx[0], op.dy[0]}] = value / norm; } ret.push_back(norms); From 7370260cea39bd1d39679875d97867ba07bc2777 Mon Sep 17 00:00:00 2001 From: Tsuyoshi Okubo Date: Tue, 27 Jun 2023 22:04:51 +0900 Subject: [PATCH 09/25] sample code for finite temperature --- sample/08_finitetemperature/README.md | 30 +++ sample/08_finitetemperature/plot_e.plt | 178 ++++++++++++++++++ sample/08_finitetemperature/plot_mx.plt | 178 ++++++++++++++++++ sample/08_finitetemperature/plot_mz.plt | 178 ++++++++++++++++++ sample/08_finitetemperature/run.sh | 10 + .../simple_ft_middle.toml | 30 +++ .../simple_ft_strong.toml | 30 +++ .../08_finitetemperature/simple_ft_weak.toml | 30 +++ 8 files changed, 664 insertions(+) create mode 100644 sample/08_finitetemperature/README.md create mode 100644 sample/08_finitetemperature/plot_e.plt create mode 100644 sample/08_finitetemperature/plot_mx.plt create mode 100644 sample/08_finitetemperature/plot_mz.plt create mode 100644 sample/08_finitetemperature/run.sh create mode 100644 sample/08_finitetemperature/simple_ft_middle.toml create mode 100644 sample/08_finitetemperature/simple_ft_strong.toml create mode 100644 sample/08_finitetemperature/simple_ft_weak.toml diff --git a/sample/08_finitetemperature/README.md b/sample/08_finitetemperature/README.md new file mode 100644 index 00000000..1b034950 --- /dev/null +++ b/sample/08_finitetemperature/README.md @@ -0,0 +1,30 @@ +- how to run + - `export PATH=${WHERE_TENES_INSTALLED}/bin:$PATH` + - `sh run.sh` + - `gnuplot -persist plot_e.plt` for generate a figure of energy + - `gnuplot -persist plot_mz.plt` for generate a figure of manetization alog Sz + - `gnuplot -persist plot_mx.plt` for generate a figure of magnetization alog Sx +- model + - Ferromagnetic Ising model on the square lattice + - Transverse field is also considered + - The critical value is about hx = 1.5 +- Inputs + - `simple_ft_strong.toml` + - Finite temperature simulation under the strong field + - `Jz = -1` + - `hx = 2.0` + - `simple_ft_middle.toml` + - Finite temperature simulation under the moderate field + - `Jz = -1` + - `hx = 0.8` + - `simple_ft_weak.toml` + - Finite temperature simulation under the weak field + - `Jz = -1` + - `hx = 0.5` + +- Observables + - Magnetization along Sz + - Magnetization along Sx + - Energy +- Unitcell + - 2x2 diff --git a/sample/08_finitetemperature/plot_e.plt b/sample/08_finitetemperature/plot_e.plt new file mode 100644 index 00000000..459a880c --- /dev/null +++ b/sample/08_finitetemperature/plot_e.plt @@ -0,0 +1,178 @@ +#!/opt/homebrew/Cellar/gnuplot/5.4.7/bin/gnuplot +# +# +# G N U P L O T +# Version 5.4 patchlevel 7 last modified 2023-05-16 +# +# Copyright (C) 1986-1993, 1998, 2004, 2007-2023 +# Thomas Williams, Colin Kelley and many others +# +# gnuplot home: http://www.gnuplot.info +# faq, bugs, etc: type "help FAQ" +# immediate help: type "help" (plot window: hit 'h') +# set terminal qt 0 font "Times,18" +# set output +unset clip points +set clip one +unset clip two +unset clip radial +set errorbars front 1.000000 +set border 31 front lt black linewidth 1.000 dashtype solid +set zdata +set ydata +set xdata +set y2data +set x2data +set boxwidth +set boxdepth 0 +set style fill empty border +set style rectangle back fc bgnd fillstyle solid 1.00 border lt -1 +set style circle radius graph 0.02 +set style ellipse size graph 0.05, 0.03 angle 0 units xy +set dummy x, y +set format x "% h" +set format y "% h" +set format x2 "% h" +set format y2 "% h" +set format z "% h" +set format cb "% h" +set format r "% h" +set ttics format "% h" +set timefmt "%d/%m/%y,%H:%M" +set angles radians +set tics back +unset grid +unset raxis +set theta counterclockwise right +set style parallel front lt black linewidth 2.000 dashtype solid +set key notitle +set key fixed right bottom vertical Right noreverse enhanced autotitle nobox +set key noinvert samplen 4 spacing 1 width 0 height 0 +set key maxcolumns 0 maxrows 0 +set key noopaque +unset label +unset arrow +unset style line +unset style arrow +set style histogram clustered gap 2 title textcolor lt -1 +unset object +unset walls +set style textbox transparent margins 1.0, 1.0 border lt -1 linewidth 1.0 +set offsets 0, 0, 0, 0 +set pointsize 1 +set pointintervalbox 1 +set encoding default +unset polar +unset parametric +unset spiderplot +unset decimalsign +unset micro +unset minussign +set view 60, 30, 1, 1 +set view azimuth 0 +set rgbmax 255 +set samples 100, 100 +set isosamples 10, 10 +set surface implicit +set surface +unset contour +set cntrlabel format '%8.3g' font '' start 5 interval 20 +set mapping cartesian +set datafile separator whitespace +set datafile nocolumnheaders +unset hidden3d +set cntrparam order 4 +set cntrparam linear +set cntrparam levels 5 +set cntrparam levels auto +set cntrparam firstlinetype 0 unsorted +set cntrparam points 5 +set size ratio 1 1,1 +set origin 0,0 +set style data points +set style function lines +unset xzeroaxis +unset yzeroaxis +unset zzeroaxis +unset x2zeroaxis +unset y2zeroaxis +set xyplane relative 0.5 +set tics scale 1, 0.5, 1, 1, 1 +set mxtics default +set mytics default +set mztics default +set mx2tics default +set my2tics default +set mcbtics default +set mrtics default +set nomttics +set xtics border in scale 1,0.5 mirror norotate autojustify +set xtics norangelimit autofreq +set ytics border in scale 1,0.5 mirror norotate autojustify +set ytics norangelimit autofreq +set ztics border in scale 1,0.5 nomirror norotate autojustify +set ztics norangelimit autofreq +unset x2tics +unset y2tics +set cbtics border in scale 1,0.5 mirror norotate autojustify +set cbtics norangelimit autofreq +set rtics axis in scale 1,0.5 nomirror norotate autojustify +set rtics norangelimit autofreq +unset ttics +set title "" +set title font "" textcolor lt -1 norotate +set timestamp bottom +set timestamp "" +set timestamp font "" textcolor lt -1 norotate +set trange [ * : * ] noreverse nowriteback +set urange [ * : * ] noreverse nowriteback +set vrange [ * : * ] noreverse nowriteback +set xlabel "T" +set xlabel font "" textcolor lt -1 norotate +set x2label "" +set x2label font "" textcolor lt -1 norotate +set xrange [ * : * ] noreverse writeback +set x2range [ * : * ] noreverse writeback +set ylabel "E" +set ylabel font "" textcolor lt -1 rotate +set y2label "" +set y2label font "" textcolor lt -1 rotate +set yrange [ * : * ] noreverse writeback +set y2range [ * : * ] noreverse writeback +set zlabel "" +set zlabel font "" textcolor lt -1 norotate +set zrange [ * : * ] noreverse writeback +set cblabel "" +set cblabel font "" textcolor lt -1 rotate +set cbrange [ * : * ] noreverse writeback +set rlabel "" +set rlabel font "" textcolor lt -1 norotate +set rrange [ * : * ] noreverse writeback +unset logscale +unset jitter +set zero 1e-08 +set lmargin -1 +set bmargin -1 +set rmargin -1 +set tmargin -1 +set locale "ja_JP.UTF-8" +set pm3d explicit at s +set pm3d scansautomatic +set pm3d interpolate 1,1 flush begin noftriangles noborder corners2color mean +set pm3d clip z +set pm3d nolighting +set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB +set palette rgbformulae 7, 5, 15 +set colorbox default +set colorbox vertical origin screen 0.9, 0.2 size screen 0.05, 0.6 front noinvert bdefault +set style boxplot candles range 1.50 outliers pt 7 separation 1 labels auto unsorted +set loadpath +set fontpath +set psdir +set fit brief errorvariables nocovariancevariables errorscaling prescale nowrap v5 +GNUTERM = "qt" +I = {0.0, 1.0} +VoxelDistance = 0.0 +## Last datafile plotted: "energy_strong.dat" +p "energy_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "energy_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "energy_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" +# EOF diff --git a/sample/08_finitetemperature/plot_mx.plt b/sample/08_finitetemperature/plot_mx.plt new file mode 100644 index 00000000..f4893eea --- /dev/null +++ b/sample/08_finitetemperature/plot_mx.plt @@ -0,0 +1,178 @@ +#!/opt/homebrew/Cellar/gnuplot/5.4.7/bin/gnuplot +# +# +# G N U P L O T +# Version 5.4 patchlevel 7 last modified 2023-05-16 +# +# Copyright (C) 1986-1993, 1998, 2004, 2007-2023 +# Thomas Williams, Colin Kelley and many others +# +# gnuplot home: http://www.gnuplot.info +# faq, bugs, etc: type "help FAQ" +# immediate help: type "help" (plot window: hit 'h') +# set terminal qt 0 font "Times,18" +# set output +unset clip points +set clip one +unset clip two +unset clip radial +set errorbars front 1.000000 +set border 31 front lt black linewidth 1.000 dashtype solid +set zdata +set ydata +set xdata +set y2data +set x2data +set boxwidth +set boxdepth 0 +set style fill empty border +set style rectangle back fc bgnd fillstyle solid 1.00 border lt -1 +set style circle radius graph 0.02 +set style ellipse size graph 0.05, 0.03 angle 0 units xy +set dummy x, y +set format x "% h" +set format y "% h" +set format x2 "% h" +set format y2 "% h" +set format z "% h" +set format cb "% h" +set format r "% h" +set ttics format "% h" +set timefmt "%d/%m/%y,%H:%M" +set angles radians +set tics back +unset grid +unset raxis +set theta counterclockwise right +set style parallel front lt black linewidth 2.000 dashtype solid +set key notitle +set key fixed right top vertical Right noreverse enhanced autotitle nobox +set key noinvert samplen 4 spacing 1 width 0 height 0 +set key maxcolumns 0 maxrows 0 +set key noopaque +unset label +unset arrow +unset style line +unset style arrow +set style histogram clustered gap 2 title textcolor lt -1 +unset object +unset walls +set style textbox transparent margins 1.0, 1.0 border lt -1 linewidth 1.0 +set offsets 0, 0, 0, 0 +set pointsize 1 +set pointintervalbox 1 +set encoding default +unset polar +unset parametric +unset spiderplot +unset decimalsign +unset micro +unset minussign +set view 60, 30, 1, 1 +set view azimuth 0 +set rgbmax 255 +set samples 100, 100 +set isosamples 10, 10 +set surface implicit +set surface +unset contour +set cntrlabel format '%8.3g' font '' start 5 interval 20 +set mapping cartesian +set datafile separator whitespace +set datafile nocolumnheaders +unset hidden3d +set cntrparam order 4 +set cntrparam linear +set cntrparam levels 5 +set cntrparam levels auto +set cntrparam firstlinetype 0 unsorted +set cntrparam points 5 +set size ratio 1 1,1 +set origin 0,0 +set style data points +set style function lines +unset xzeroaxis +unset yzeroaxis +unset zzeroaxis +unset x2zeroaxis +unset y2zeroaxis +set xyplane relative 0.5 +set tics scale 1, 0.5, 1, 1, 1 +set mxtics default +set mytics default +set mztics default +set mx2tics default +set my2tics default +set mcbtics default +set mrtics default +set nomttics +set xtics border in scale 1,0.5 mirror norotate autojustify +set xtics norangelimit autofreq +set ytics border in scale 1,0.5 mirror norotate autojustify +set ytics norangelimit autofreq +set ztics border in scale 1,0.5 nomirror norotate autojustify +set ztics norangelimit autofreq +unset x2tics +unset y2tics +set cbtics border in scale 1,0.5 mirror norotate autojustify +set cbtics norangelimit autofreq +set rtics axis in scale 1,0.5 nomirror norotate autojustify +set rtics norangelimit autofreq +unset ttics +set title "" +set title font "" textcolor lt -1 norotate +set timestamp bottom +set timestamp "" +set timestamp font "" textcolor lt -1 norotate +set trange [ * : * ] noreverse nowriteback +set urange [ * : * ] noreverse nowriteback +set vrange [ * : * ] noreverse nowriteback +set xlabel "T" +set xlabel font "" textcolor lt -1 norotate +set x2label "" +set x2label font "" textcolor lt -1 norotate +set xrange [ * : * ] noreverse writeback +set x2range [ * : * ] noreverse writeback +set ylabel "" +set ylabel font "" textcolor lt -1 rotate +set y2label "" +set y2label font "" textcolor lt -1 rotate +set yrange [ * : * ] noreverse writeback +set y2range [ * : * ] noreverse writeback +set zlabel "" +set zlabel font "" textcolor lt -1 norotate +set zrange [ * : * ] noreverse writeback +set cblabel "" +set cblabel font "" textcolor lt -1 rotate +set cbrange [ * : * ] noreverse writeback +set rlabel "" +set rlabel font "" textcolor lt -1 norotate +set rrange [ * : * ] noreverse writeback +unset logscale +unset jitter +set zero 1e-08 +set lmargin -1 +set bmargin -1 +set rmargin -1 +set tmargin -1 +set locale "ja_JP.UTF-8" +set pm3d explicit at s +set pm3d scansautomatic +set pm3d interpolate 1,1 flush begin noftriangles noborder corners2color mean +set pm3d clip z +set pm3d nolighting +set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB +set palette rgbformulae 7, 5, 15 +set colorbox default +set colorbox vertical origin screen 0.9, 0.2 size screen 0.05, 0.6 front noinvert bdefault +set style boxplot candles range 1.50 outliers pt 7 separation 1 labels auto unsorted +set loadpath +set fontpath +set psdir +set fit brief errorvariables nocovariancevariables errorscaling prescale nowrap v5 +GNUTERM = "qt" +I = {0.0, 1.0} +VoxelDistance = 0.0 +## Last datafile plotted: "magnetization_x_strong.dat" +p [:5]"magnetization_x_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "magnetization_x_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "magnetization_x_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" +# EOF diff --git a/sample/08_finitetemperature/plot_mz.plt b/sample/08_finitetemperature/plot_mz.plt new file mode 100644 index 00000000..d5ffc3ca --- /dev/null +++ b/sample/08_finitetemperature/plot_mz.plt @@ -0,0 +1,178 @@ +#!/opt/homebrew/Cellar/gnuplot/5.4.7/bin/gnuplot +# +# +# G N U P L O T +# Version 5.4 patchlevel 7 last modified 2023-05-16 +# +# Copyright (C) 1986-1993, 1998, 2004, 2007-2023 +# Thomas Williams, Colin Kelley and many others +# +# gnuplot home: http://www.gnuplot.info +# faq, bugs, etc: type "help FAQ" +# immediate help: type "help" (plot window: hit 'h') +# set terminal qt 0 font "Times,18" +# set output +unset clip points +set clip one +unset clip two +unset clip radial +set errorbars front 1.000000 +set border 31 front lt black linewidth 1.000 dashtype solid +set zdata +set ydata +set xdata +set y2data +set x2data +set boxwidth +set boxdepth 0 +set style fill empty border +set style rectangle back fc bgnd fillstyle solid 1.00 border lt -1 +set style circle radius graph 0.02 +set style ellipse size graph 0.05, 0.03 angle 0 units xy +set dummy x, y +set format x "% h" +set format y "% h" +set format x2 "% h" +set format y2 "% h" +set format z "% h" +set format cb "% h" +set format r "% h" +set ttics format "% h" +set timefmt "%d/%m/%y,%H:%M" +set angles radians +set tics back +unset grid +unset raxis +set theta counterclockwise right +set style parallel front lt black linewidth 2.000 dashtype solid +set key notitle +set key fixed right top vertical Right noreverse enhanced autotitle nobox +set key noinvert samplen 4 spacing 1 width 0 height 0 +set key maxcolumns 0 maxrows 0 +set key noopaque +unset label +unset arrow +unset style line +unset style arrow +set style histogram clustered gap 2 title textcolor lt -1 +unset object +unset walls +set style textbox transparent margins 1.0, 1.0 border lt -1 linewidth 1.0 +set offsets 0, 0, 0, 0 +set pointsize 1 +set pointintervalbox 1 +set encoding default +unset polar +unset parametric +unset spiderplot +unset decimalsign +unset micro +unset minussign +set view 60, 30, 1, 1 +set view azimuth 0 +set rgbmax 255 +set samples 100, 100 +set isosamples 10, 10 +set surface implicit +set surface +unset contour +set cntrlabel format '%8.3g' font '' start 5 interval 20 +set mapping cartesian +set datafile separator whitespace +set datafile nocolumnheaders +unset hidden3d +set cntrparam order 4 +set cntrparam linear +set cntrparam levels 5 +set cntrparam levels auto +set cntrparam firstlinetype 0 unsorted +set cntrparam points 5 +set size ratio 1 1,1 +set origin 0,0 +set style data points +set style function lines +unset xzeroaxis +unset yzeroaxis +unset zzeroaxis +unset x2zeroaxis +unset y2zeroaxis +set xyplane relative 0.5 +set tics scale 1, 0.5, 1, 1, 1 +set mxtics default +set mytics default +set mztics default +set mx2tics default +set my2tics default +set mcbtics default +set mrtics default +set nomttics +set xtics border in scale 1,0.5 mirror norotate autojustify +set xtics norangelimit autofreq +set ytics border in scale 1,0.5 mirror norotate autojustify +set ytics norangelimit autofreq +set ztics border in scale 1,0.5 nomirror norotate autojustify +set ztics norangelimit autofreq +unset x2tics +unset y2tics +set cbtics border in scale 1,0.5 mirror norotate autojustify +set cbtics norangelimit autofreq +set rtics axis in scale 1,0.5 nomirror norotate autojustify +set rtics norangelimit autofreq +unset ttics +set title "" +set title font "" textcolor lt -1 norotate +set timestamp bottom +set timestamp "" +set timestamp font "" textcolor lt -1 norotate +set trange [ * : * ] noreverse nowriteback +set urange [ * : * ] noreverse nowriteback +set vrange [ * : * ] noreverse nowriteback +set xlabel "T" +set xlabel font "" textcolor lt -1 norotate +set x2label "" +set x2label font "" textcolor lt -1 norotate +set xrange [ * : * ] noreverse writeback +set x2range [ * : * ] noreverse writeback +set ylabel "" +set ylabel font "" textcolor lt -1 rotate +set y2label "" +set y2label font "" textcolor lt -1 rotate +set yrange [ * : * ] noreverse writeback +set y2range [ * : * ] noreverse writeback +set zlabel "" +set zlabel font "" textcolor lt -1 norotate +set zrange [ * : * ] noreverse writeback +set cblabel "" +set cblabel font "" textcolor lt -1 rotate +set cbrange [ * : * ] noreverse writeback +set rlabel "" +set rlabel font "" textcolor lt -1 norotate +set rrange [ * : * ] noreverse writeback +unset logscale +unset jitter +set zero 1e-08 +set lmargin -1 +set bmargin -1 +set rmargin -1 +set tmargin -1 +set locale "ja_JP.UTF-8" +set pm3d explicit at s +set pm3d scansautomatic +set pm3d interpolate 1,1 flush begin noftriangles noborder corners2color mean +set pm3d clip z +set pm3d nolighting +set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB +set palette rgbformulae 7, 5, 15 +set colorbox default +set colorbox vertical origin screen 0.9, 0.2 size screen 0.05, 0.6 front noinvert bdefault +set style boxplot candles range 1.50 outliers pt 7 separation 1 labels auto unsorted +set loadpath +set fontpath +set psdir +set fit brief errorvariables nocovariancevariables errorscaling prescale nowrap v5 +GNUTERM = "qt" +I = {0.0, 1.0} +VoxelDistance = 0.0 +## Last datafile plotted: "magnetization_strong.dat" +p [:5]"magnetization_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "magnetization_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "magnetization_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" +# EOF diff --git a/sample/08_finitetemperature/run.sh b/sample/08_finitetemperature/run.sh new file mode 100644 index 00000000..2f4f40ec --- /dev/null +++ b/sample/08_finitetemperature/run.sh @@ -0,0 +1,10 @@ +for name in weak middle strong; do + #tenes_simple -o std_ft_${name}.toml simple_ft_${name}.toml + #tenes_std -o input_ft_${name}.toml std_ft_${name}.toml + #tenes input_ft_${name}.toml + + awk '$2 == 0 {print $1, $3, $4}' output_ft_${name}/FT_density.dat > energy_${name}.dat + awk '$2 == 1 {print $1, $3, $4}' output_ft_${name}/FT_density.dat > magnetization_${name}.dat + awk '$2 == 2 {print $1, $3, $4}' output_ft_${name}/FT_density.dat > magnetization_x_${name}.dat +done + diff --git a/sample/08_finitetemperature/simple_ft_middle.toml b/sample/08_finitetemperature/simple_ft_middle.toml new file mode 100644 index 00000000..ae24df01 --- /dev/null +++ b/sample/08_finitetemperature/simple_ft_middle.toml @@ -0,0 +1,30 @@ +[parameter] +[parameter.general] +mode = "finite" +is_real = false +output = "output_ft_middle" + +[parameter.simple_update] +num_step = 500 +tau = 0.005 + +[parameter.full_update] +num_step = 0 +tau = 0.0 + +[parameter.ctm] +iteration_max = 10 +dimension = 10 + +[lattice] +type = "square lattice" +L = 2 +W = 2 +virtual_dim = 3 + +[model] +type = "spin" +Jz = -1.0 +Jx = 0.0 +Jy = 0.0 +hx = 0.8 diff --git a/sample/08_finitetemperature/simple_ft_strong.toml b/sample/08_finitetemperature/simple_ft_strong.toml new file mode 100644 index 00000000..b963f583 --- /dev/null +++ b/sample/08_finitetemperature/simple_ft_strong.toml @@ -0,0 +1,30 @@ +[parameter] +[parameter.general] +mode = "finite" +is_real = false +output = "output_ft_strong" + +[parameter.simple_update] +num_step = 500 +tau = 0.005 + +[parameter.full_update] +num_step = 0 +tau = 0.0 + +[parameter.ctm] +iteration_max = 10 +dimension = 10 + +[lattice] +type = "square lattice" +L = 2 +W = 2 +virtual_dim = 3 + +[model] +type = "spin" +Jz = -1.0 +Jx = 0.0 +Jy = 0.0 +hx = 2.0 diff --git a/sample/08_finitetemperature/simple_ft_weak.toml b/sample/08_finitetemperature/simple_ft_weak.toml new file mode 100644 index 00000000..7f03a07b --- /dev/null +++ b/sample/08_finitetemperature/simple_ft_weak.toml @@ -0,0 +1,30 @@ +[parameter] +[parameter.general] +mode = "finite" +is_real = false +output = "output_ft_weak" + +[parameter.simple_update] +num_step = 500 +tau = 0.005 + +[parameter.full_update] +num_step = 0 +tau = 0.0 + +[parameter.ctm] +iteration_max = 10 +dimension = 10 + +[lattice] +type = "square lattice" +L = 2 +W = 2 +virtual_dim = 3 + +[model] +type = "spin" +Jz = -1.0 +Jx = 0.0 +Jy = 0.0 +hx = 0.5 From e7faf6a61147ab9a2394eb12a2cda724b17faa96 Mon Sep 17 00:00:00 2001 From: Tsuyoshi Okubo Date: Tue, 27 Jun 2023 23:11:57 +0900 Subject: [PATCH 10/25] update tutorial for finite temperature --- sample/08_finitetemperature/plot_e.plt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sample/08_finitetemperature/plot_e.plt b/sample/08_finitetemperature/plot_e.plt index 459a880c..e4a4bb7a 100644 --- a/sample/08_finitetemperature/plot_e.plt +++ b/sample/08_finitetemperature/plot_e.plt @@ -174,5 +174,5 @@ GNUTERM = "qt" I = {0.0, 1.0} VoxelDistance = 0.0 ## Last datafile plotted: "energy_strong.dat" -p "energy_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "energy_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "energy_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" +p [:5]"energy_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "energy_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "energy_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" # EOF From 686d53b44a0fef77642ff2d015b4bca3f2b78886 Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Wed, 28 Jun 2023 10:54:20 +0900 Subject: [PATCH 11/25] update test --- test/data/AntiferroHeisenberg_complex.toml | 2 +- test/data/AntiferroHeisenberg_real.toml | 2 +- test/data/J1J2_AFH.toml | 4 ++-- test/data/TE_singlespin.toml | 2 +- test/data/output_TE_singlespin/TE_density.dat | 2 +- test/data/output_TE_singlespin/TE_onesite_obs.dat | 2 +- test/data/output_TE_singlespin/TE_singlespin.toml | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/data/AntiferroHeisenberg_complex.toml b/test/data/AntiferroHeisenberg_complex.toml index 26a54f06..0b9e6542 100644 --- a/test/data/AntiferroHeisenberg_complex.toml +++ b/test/data/AntiferroHeisenberg_complex.toml @@ -51,7 +51,7 @@ elements = """ """ [[observable.twosite]] -name = "bond hamiltonian" +name = "bond_hamiltonian" group = 0 bonds = """ 0 1 0 diff --git a/test/data/AntiferroHeisenberg_real.toml b/test/data/AntiferroHeisenberg_real.toml index 7e59f71f..be64345f 100644 --- a/test/data/AntiferroHeisenberg_real.toml +++ b/test/data/AntiferroHeisenberg_real.toml @@ -42,7 +42,7 @@ elements = """ """ [[observable.twosite]] -name = "bond hamiltonian" +name = "bond_hamiltonian" group = 0 bonds = """ 0 1 0 diff --git a/test/data/J1J2_AFH.toml b/test/data/J1J2_AFH.toml index b15c65b0..45d6cd44 100644 --- a/test/data/J1J2_AFH.toml +++ b/test/data/J1J2_AFH.toml @@ -42,7 +42,7 @@ elements = """ """ [[observable.twosite]] -name = "bond hamiltonian" +name = "bond_hamiltonian" group = 0 bonds = """ 0 1 0 @@ -64,7 +64,7 @@ elements = """ 1 1 1 1 0.25 0.0 """ [[observable.twosite]] -name = "bond hamiltonian" +name = "bond_hamiltonian" group = 0 bonds = """ 0 1 1 diff --git a/test/data/TE_singlespin.toml b/test/data/TE_singlespin.toml index fdb5063e..425a3ae3 100644 --- a/test/data/TE_singlespin.toml +++ b/test/data/TE_singlespin.toml @@ -25,7 +25,7 @@ noise = 0.01 [observable] [[observable.onesite]] -name = "bond hamiltonian" +name = "site_hamiltonian" group = 0 sites = [] dim = 2 diff --git a/test/data/output_TE_singlespin/TE_density.dat b/test/data/output_TE_singlespin/TE_density.dat index 59d086c1..f2d9841f 100644 --- a/test/data/output_TE_singlespin/TE_density.dat +++ b/test/data/output_TE_singlespin/TE_density.dat @@ -5,7 +5,7 @@ # $4: imag # The meaning of observable IDs are the following: # 0: Energy -# 1: bond hamiltonian +# 1: site_hamiltonian # 2: Sz # 3: Sx # 4: Sy diff --git a/test/data/output_TE_singlespin/TE_onesite_obs.dat b/test/data/output_TE_singlespin/TE_onesite_obs.dat index 5a068b99..3f913da5 100644 --- a/test/data/output_TE_singlespin/TE_onesite_obs.dat +++ b/test/data/output_TE_singlespin/TE_onesite_obs.dat @@ -5,7 +5,7 @@ # $4: real # $5: imag # The names of op_group are the following: -# 0: bond hamiltonian +# 0: site_hamiltonian # 1: Sz # 2: Sx # 3: Sy diff --git a/test/data/output_TE_singlespin/TE_singlespin.toml b/test/data/output_TE_singlespin/TE_singlespin.toml index fdb5063e..425a3ae3 100644 --- a/test/data/output_TE_singlespin/TE_singlespin.toml +++ b/test/data/output_TE_singlespin/TE_singlespin.toml @@ -25,7 +25,7 @@ noise = 0.01 [observable] [[observable.onesite]] -name = "bond hamiltonian" +name = "site_hamiltonian" group = 0 sites = [] dim = 2 From 17e64ddbf2c0081d05ad915d6df13305fd0f3097 Mon Sep 17 00:00:00 2001 From: Tsuyoshi Okubo Date: Wed, 28 Jun 2023 13:55:45 +0900 Subject: [PATCH 12/25] update initialization of CTM_single --- sample/08_finitetemperature/README.md | 5 + sample/08_finitetemperature/plot_c.plt | 189 ++++++++++++++++++ sample/08_finitetemperature/plot_e.plt | 2 +- sample/08_finitetemperature/plot_mx.plt | 2 +- sample/08_finitetemperature/plot_mz.plt | 2 +- sample/08_finitetemperature/run.sh | 8 +- .../08_finitetemperature/simple_ft_zero.toml | 30 +++ src/iTPS/core/ctm_single.cpp | 57 +++++- 8 files changed, 279 insertions(+), 16 deletions(-) create mode 100644 sample/08_finitetemperature/plot_c.plt create mode 100644 sample/08_finitetemperature/simple_ft_zero.toml diff --git a/sample/08_finitetemperature/README.md b/sample/08_finitetemperature/README.md index 1b034950..23351b9b 100644 --- a/sample/08_finitetemperature/README.md +++ b/sample/08_finitetemperature/README.md @@ -2,6 +2,7 @@ - `export PATH=${WHERE_TENES_INSTALLED}/bin:$PATH` - `sh run.sh` - `gnuplot -persist plot_e.plt` for generate a figure of energy + - `gnuplot -persist plot_c.plt` for generate a figure of specific heat - `gnuplot -persist plot_mz.plt` for generate a figure of manetization alog Sz - `gnuplot -persist plot_mx.plt` for generate a figure of magnetization alog Sx - model @@ -21,6 +22,10 @@ - Finite temperature simulation under the weak field - `Jz = -1` - `hx = 0.5` + - `simple_ft_zero.toml` + - Finite temperature simulation under the zero field + - `Jz = -1` + - `hx = 0` - Observables - Magnetization along Sz diff --git a/sample/08_finitetemperature/plot_c.plt b/sample/08_finitetemperature/plot_c.plt new file mode 100644 index 00000000..dc87b45d --- /dev/null +++ b/sample/08_finitetemperature/plot_c.plt @@ -0,0 +1,189 @@ +#!/opt/homebrew/Cellar/gnuplot/5.4.7/bin/gnuplot +# +# +# G N U P L O T +# Version 5.4 patchlevel 7 last modified 2023-05-16 +# +# Copyright (C) 1986-1993, 1998, 2004, 2007-2023 +# Thomas Williams, Colin Kelley and many others +# +# gnuplot home: http://www.gnuplot.info +# faq, bugs, etc: type "help FAQ" +# immediate help: type "help" (plot window: hit 'h') +# set terminal qt 0 font "Times,18" +# set output +unset clip points +set clip one +unset clip two +unset clip radial +set errorbars front 1.000000 +set border 31 front lt black linewidth 1.000 dashtype solid +set zdata +set ydata +set xdata +set y2data +set x2data +set boxwidth +set boxdepth 0 +set style fill empty border +set style rectangle back fc bgnd fillstyle solid 1.00 border lt -1 +set style circle radius graph 0.02 +set style ellipse size graph 0.05, 0.03 angle 0 units xy +set dummy x, y +set format x "% h" +set format y "% h" +set format x2 "% h" +set format y2 "% h" +set format z "% h" +set format cb "% h" +set format r "% h" +set ttics format "% h" +set timefmt "%d/%m/%y,%H:%M" +set angles radians +set tics back +unset grid +unset raxis +set theta counterclockwise right +set style parallel front lt black linewidth 2.000 dashtype solid +set key notitle +set key fixed right top vertical Right noreverse enhanced autotitle nobox +set key noinvert samplen 4 spacing 1 width 0 height 0 +set key maxcolumns 0 maxrows 0 +set key noopaque +unset label +unset arrow +unset style line +unset style arrow +set style histogram clustered gap 2 title textcolor lt -1 +unset object +unset walls +set style textbox transparent margins 1.0, 1.0 border lt -1 linewidth 1.0 +set offsets 0, 0, 0, 0 +set pointsize 1 +set pointintervalbox 1 +set encoding default +unset polar +unset parametric +unset spiderplot +unset decimalsign +unset micro +unset minussign +set view 60, 30, 1, 1 +set view azimuth 0 +set rgbmax 255 +set samples 100, 100 +set isosamples 10, 10 +set surface implicit +set surface +unset contour +set cntrlabel format '%8.3g' font '' start 5 interval 20 +set mapping cartesian +set datafile separator whitespace +set datafile nocolumnheaders +unset hidden3d +set cntrparam order 4 +set cntrparam linear +set cntrparam levels 5 +set cntrparam levels auto +set cntrparam firstlinetype 0 unsorted +set cntrparam points 5 +set size ratio 1 1,1 +set origin 0,0 +set style data points +set style function lines +unset xzeroaxis +unset yzeroaxis +unset zzeroaxis +unset x2zeroaxis +unset y2zeroaxis +set xyplane relative 0.5 +set tics scale 1, 0.5, 1, 1, 1 +set mxtics default +set mytics default +set mztics default +set mx2tics default +set my2tics default +set mcbtics default +set mrtics default +set nomttics +set xtics border in scale 1,0.5 mirror norotate autojustify +set xtics norangelimit autofreq +set ytics border in scale 1,0.5 mirror norotate autojustify +set ytics norangelimit autofreq +set ztics border in scale 1,0.5 nomirror norotate autojustify +set ztics norangelimit autofreq +unset x2tics +unset y2tics +set cbtics border in scale 1,0.5 mirror norotate autojustify +set cbtics norangelimit autofreq +set rtics axis in scale 1,0.5 nomirror norotate autojustify +set rtics norangelimit autofreq +unset ttics +set title "" +set title font "" textcolor lt -1 norotate +set timestamp bottom +set timestamp "" +set timestamp font "" textcolor lt -1 norotate +set trange [ * : * ] noreverse nowriteback +set urange [ * : * ] noreverse nowriteback +set vrange [ * : * ] noreverse nowriteback +set xlabel "T" +set xlabel font "" textcolor lt -1 norotate +set x2label "" +set x2label font "" textcolor lt -1 norotate +set xrange [ * : * ] noreverse writeback +set x2range [ * : * ] noreverse writeback +set ylabel "C" +set ylabel font "" textcolor lt -1 rotate +set y2label "" +set y2label font "" textcolor lt -1 rotate +set yrange [ * : * ] noreverse writeback +set y2range [ * : * ] noreverse writeback +set zlabel "" +set zlabel font "" textcolor lt -1 norotate +set zrange [ * : * ] noreverse writeback +set cblabel "" +set cblabel font "" textcolor lt -1 rotate +set cbrange [ * : * ] noreverse writeback +set rlabel "" +set rlabel font "" textcolor lt -1 norotate +set rrange [ * : * ] noreverse writeback +unset logscale +unset jitter +set zero 1e-08 +set lmargin -1 +set bmargin -1 +set rmargin -1 +set tmargin -1 +set locale "ja_JP.UTF-8" +set pm3d explicit at s +set pm3d scansautomatic +set pm3d interpolate 1,1 flush begin noftriangles noborder corners2color mean +set pm3d clip z +set pm3d nolighting +set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB +set palette rgbformulae 7, 5, 15 +set colorbox default +set colorbox vertical origin screen 0.9, 0.2 size screen 0.05, 0.6 front noinvert bdefault +set style boxplot candles range 1.50 outliers pt 7 separation 1 labels auto unsorted +set loadpath +set fontpath +set psdir +set fit brief errorvariables nocovariancevariables errorscaling prescale nowrap v5 +d2(x,y) = ($0 == 0) ? (x1 = x, y1 = y, 1/0) : (x2 = x1, x1 = x, y2 = y1, y1 = y, (y1-y2)/(x1-x2)) +dx(x) = ($0 == 0) ? (dx1 = x, 1/0) : (dx2 = dx1, dx1 = x, (dx1+dx2) * 0.5) +dxs(x) = ($0 == 0) ? (dxs1 = x, 1/0) : (dxs2 = dxs1, dxs1 = x, (dx1+dx2)**2 * 0.25) +GNUTERM = "qt" +I = {0.0, 1.0} +VoxelDistance = 0.0 +x1 = 4.99999999999994 +y1 = -1.0642246504554 +y2 = -1.06412623796841 +x2 = 4.89999999999994 +dx1 = 4.99999999999994 +dx2 = 4.89999999999994 +dxs1 = 4.99999999999994 +dxs2 = 4.89999999999994 +## Last datafile plotted: "energy_strong.dat" +p [:5] "energy_zero.dat" u (1/dx($1)) : (-dxs($1)*d2($1,$2)) w lp ti "h_x = 0", "energy_weak.dat" u (1/dx($1)) : (-dxs($1)*d2($1,$2)) w lp ti "h_x = 0.5", "energy_middle.dat" u (1/dx($1)) : (-dxs($1)*d2($1,$2)) w lp ti "h_x = 0.8", "energy_strong.dat" u (1/dx($1)) : (-dxs($1)*d2($1,$2)) w lp ti "h_x = 2.0" +# EOF diff --git a/sample/08_finitetemperature/plot_e.plt b/sample/08_finitetemperature/plot_e.plt index e4a4bb7a..9f600915 100644 --- a/sample/08_finitetemperature/plot_e.plt +++ b/sample/08_finitetemperature/plot_e.plt @@ -174,5 +174,5 @@ GNUTERM = "qt" I = {0.0, 1.0} VoxelDistance = 0.0 ## Last datafile plotted: "energy_strong.dat" -p [:5]"energy_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "energy_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "energy_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" +p [:5] "energy_zero.dat" u (1/$1):2 w lp ti "h_x = 0", "energy_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "energy_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "energy_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" # EOF diff --git a/sample/08_finitetemperature/plot_mx.plt b/sample/08_finitetemperature/plot_mx.plt index f4893eea..666502d3 100644 --- a/sample/08_finitetemperature/plot_mx.plt +++ b/sample/08_finitetemperature/plot_mx.plt @@ -174,5 +174,5 @@ GNUTERM = "qt" I = {0.0, 1.0} VoxelDistance = 0.0 ## Last datafile plotted: "magnetization_x_strong.dat" -p [:5]"magnetization_x_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "magnetization_x_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "magnetization_x_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" +p [:5] "magnetization_x_zero.dat" u (1/$1):2 w lp ti "h_x = 0", "magnetization_x_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "magnetization_x_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "magnetization_x_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" # EOF diff --git a/sample/08_finitetemperature/plot_mz.plt b/sample/08_finitetemperature/plot_mz.plt index d5ffc3ca..d0ab2e06 100644 --- a/sample/08_finitetemperature/plot_mz.plt +++ b/sample/08_finitetemperature/plot_mz.plt @@ -174,5 +174,5 @@ GNUTERM = "qt" I = {0.0, 1.0} VoxelDistance = 0.0 ## Last datafile plotted: "magnetization_strong.dat" -p [:5]"magnetization_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "magnetization_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "magnetization_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" +p [:5] "magnetization_zero.dat" u (1/$1):(abs($2)) w lp ti "h_x = 0","magnetization_weak.dat" u (1/$1):(abs($2)) w lp ti "h_x = 0.5", "magnetization_middle.dat" u (1/$1):(abs($2)) w lp ti "h_x = 0.8", "magnetization_strong.dat" u (1/$1):(abs($2)) w lp ti "h_x = 2.0" # EOF diff --git a/sample/08_finitetemperature/run.sh b/sample/08_finitetemperature/run.sh index 2f4f40ec..317eb35d 100644 --- a/sample/08_finitetemperature/run.sh +++ b/sample/08_finitetemperature/run.sh @@ -1,7 +1,7 @@ -for name in weak middle strong; do - #tenes_simple -o std_ft_${name}.toml simple_ft_${name}.toml - #tenes_std -o input_ft_${name}.toml std_ft_${name}.toml - #tenes input_ft_${name}.toml +for name in zero weak middle strong; do + tenes_simple -o std_ft_${name}.toml simple_ft_${name}.toml + tenes_std -o input_ft_${name}.toml std_ft_${name}.toml + tenes input_ft_${name}.toml awk '$2 == 0 {print $1, $3, $4}' output_ft_${name}/FT_density.dat > energy_${name}.dat awk '$2 == 1 {print $1, $3, $4}' output_ft_${name}/FT_density.dat > magnetization_${name}.dat diff --git a/sample/08_finitetemperature/simple_ft_zero.toml b/sample/08_finitetemperature/simple_ft_zero.toml new file mode 100644 index 00000000..bcc50a16 --- /dev/null +++ b/sample/08_finitetemperature/simple_ft_zero.toml @@ -0,0 +1,30 @@ +[parameter] +[parameter.general] +mode = "finite" +is_real = false +output = "output_ft_zero" + +[parameter.simple_update] +num_step = 500 +tau = 0.005 + +[parameter.full_update] +num_step = 0 +tau = 0.0 + +[parameter.ctm] +iteration_max = 10 +dimension = 10 + +[lattice] +type = "square lattice" +L = 2 +W = 2 +virtual_dim = 2 + +[model] +type = "spin" +Jz = -1.0 +Jx = 0.0 +Jy = 0.0 +hx = 0.0 diff --git a/src/iTPS/core/ctm_single.cpp b/src/iTPS/core/ctm_single.cpp index ac579ac7..90a4b66e 100644 --- a/src/iTPS/core/ctm_single.cpp +++ b/src/iTPS/core/ctm_single.cpp @@ -753,12 +753,21 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C int num, d1, d2, d34; Index index; tensor Projector; - + + tensor uniform_vector1, uniform_vector2; + const auto comm = Tn[0].get_comm(); + for (int i = 0; i < lattice.N_UNIT; ++i) { num = lattice.top(lattice.left(i)); d1 = Tn[num].shape()[3]; d2 = Tn[num].shape()[2]; - C1[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 0, 0, 1), 1, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); + + uniform_vector1 = tensor(comm, std::vector(Tn_single[num].shape()[0], 1.0)); + uniform_vector2 = tensor(comm, std::vector(Tn_single[num].shape()[1], 1.0)); + + C1[i] = mptensor::tensordot(mptensor::tensordot(Tn_single[num], uniform_vector1, Axes(0), Axes(0)), uniform_vector2, Axes(0), Axes(0)).transpose(Axes(1, 0)); + + //C1[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 0, 0, 1), 1, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { C1[i] = extend(C1[i], Shape(peps_parameters.CHI, peps_parameters.CHI)); @@ -782,7 +791,13 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C num = lattice.top(lattice.right(i)); d1 = Tn[num].shape()[0]; d2 = Tn[num].shape()[3]; - C2[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 1, 0, 1), 2, 0, 1), Shape(d1,d2)); + + uniform_vector1 = tensor(comm, std::vector(Tn_single[num].shape()[1], 1.0)); + uniform_vector2 = tensor(comm, std::vector(Tn_single[num].shape()[2], 1.0)); + + C2[i] = mptensor::tensordot(mptensor::tensordot(Tn_single[num], uniform_vector1, Axes(1), Axes(0)), uniform_vector2, Axes(1), Axes(0)); + + // C2[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 1, 0, 1), 2, 0, 1), Shape(d1,d2)); /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { C2[i] = extend(C2[i], Shape(peps_parameters.CHI, peps_parameters.CHI)); @@ -803,7 +818,13 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C num = lattice.bottom(lattice.right(i)); d1 = Tn[num].shape()[1]; d2 = Tn[num].shape()[0]; - C3[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 2, 0, 1), 3, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); + + uniform_vector1 = tensor(comm, std::vector(Tn_single[num].shape()[2], 1.0)); + uniform_vector2 = tensor(comm, std::vector(Tn_single[num].shape()[3], 1.0)); + + C3[i] = mptensor::tensordot(mptensor::tensordot(Tn_single[num], uniform_vector1, Axes(2), Axes(0)), uniform_vector2, Axes(2), Axes(0)).transpose(Axes(1,0)); + + //C3[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 2, 0, 1), 3, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { @@ -826,7 +847,12 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C num = lattice.bottom(lattice.left(i)); d1 = Tn[num].shape()[2]; d2 = Tn[num].shape()[1]; - C4[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 0, 0, 1), 3, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); + + uniform_vector1 = tensor(comm, std::vector(Tn_single[num].shape()[0], 1.0)); + uniform_vector2 = tensor(comm, std::vector(Tn_single[num].shape()[3], 1.0)); + C4[i] = mptensor::tensordot(mptensor::tensordot(Tn_single[num], uniform_vector1, Axes(0), Axes(0)), uniform_vector2, Axes(2), Axes(0)).transpose(Axes(1,0)); + + //C4[i] = reshape(mptensor::slice(mptensor::slice(Tn_single[num], 0, 0, 1), 3, 0, 1), Shape(d2, d1)).transpose(Axes(1, 0)); /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { @@ -850,7 +876,11 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C d1 = Tn[num].shape()[0]; d2 = Tn[num].shape()[2]; d34 = Tn[num].shape()[3]; - eTt[i] = reshape(mptensor::slice(Tn_single[num], 1, 0, 1), Shape(d1, d2, d34)); + + + uniform_vector1 = tensor(comm, std::vector(Tn_single[num].shape()[1], 1.0)); + eTt[i] = mptensor::tensordot(Tn_single[num], uniform_vector1, Axes(1), Axes(0)); + //eTt[i] = reshape(mptensor::slice(Tn_single[num], 1, 0, 1), Shape(d1, d2, d34)); /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { @@ -877,7 +907,11 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C d1 = Tn[num].shape()[1]; d2 = Tn[num].shape()[3]; d34 = Tn[num].shape()[0]; - eTr[i] = reshape(mptensor::slice(Tn_single[num], 2, 0, 1), Shape(d34, d1, d2)).transpose(Axes(1, 2, 0)); + + uniform_vector1 = tensor(comm, std::vector(Tn_single[num].shape()[2], 1.0)); + eTr[i] = mptensor::tensordot(Tn_single[num], uniform_vector1, Axes(2), Axes(0)).transpose(Axes(1, 2, 0)); + + //eTr[i] = reshape(mptensor::slice(Tn_single[num], 2, 0, 1), Shape(d34, d1, d2)).transpose(Axes(1, 2, 0)); /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { @@ -904,7 +938,10 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C d1 = Tn[num].shape()[2]; d2 = Tn[num].shape()[0]; d34 = Tn[num].shape()[1]; - eTb[i] = reshape(mptensor::slice(Tn_single[num], 3, 0, 1), Shape(d2, d34, d1)).transpose(Axes(2, 0, 1)); + + uniform_vector1 = tensor(comm, std::vector(Tn_single[num].shape()[3], 1.0)); + eTb[i] = mptensor::tensordot(Tn_single[num], uniform_vector1, Axes(3), Axes(0)).transpose(Axes(2, 0, 1)); + //eTb[i] = reshape(mptensor::slice(Tn_single[num], 3, 0, 1), Shape(d2, d34, d1)).transpose(Axes(2, 0, 1)); /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { @@ -931,7 +968,9 @@ int Calc_CTM_Environment_density(std::vector &C1, std::vector &C d1 = Tn[num].shape()[3]; d2 = Tn[num].shape()[1]; d34 = Tn[num].shape()[2]; - eTl[i] = reshape(mptensor::slice(Tn_single[num], 0, 0, 1), Shape(d2, d34, d1)).transpose(Axes(2, 0, 1)); + uniform_vector1 = tensor(comm, std::vector(Tn_single[num].shape()[0], 1.0)); + eTl[i] = mptensor::tensordot(Tn_single[num], uniform_vector1, Axes(0), Axes(0)).transpose(Axes(2, 0, 1)); + //eTl[i] = reshape(mptensor::slice(Tn_single[num], 0, 0, 1), Shape(d2, d34, d1)).transpose(Axes(2, 0, 1)); /* if (d1 < peps_parameters.CHI && d2 < peps_parameters.CHI) { From f7b9106080724606c8f6c4eb5b4f7eebea4b4066 Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Thu, 6 Jul 2023 11:28:30 +0900 Subject: [PATCH 13/25] added a regression test (FT_TFI_square) --- test/CMakeLists.txt | 2 +- test/data/FT_TFI_square.toml | 496 ++++++++++++++++++ .../output_FT_TFI_square/FT_TFI_square.toml | 496 ++++++++++++++++++ test/data/output_FT_TFI_square/FT_density.dat | 63 +++ .../output_FT_TFI_square/FT_onesite_obs.dat | 108 ++++ .../output_FT_TFI_square/FT_twosite_obs.dat | 255 +++++++++ test/data/output_FT_TFI_square/parameters.dat | 39 ++ test/fulltest.py.in | 4 + 8 files changed, 1462 insertions(+), 1 deletion(-) create mode 100644 test/data/FT_TFI_square.toml create mode 100644 test/data/output_FT_TFI_square/FT_TFI_square.toml create mode 100644 test/data/output_FT_TFI_square/FT_density.dat create mode 100644 test/data/output_FT_TFI_square/FT_onesite_obs.dat create mode 100644 test/data/output_FT_TFI_square/FT_twosite_obs.dat create mode 100644 test/data/output_FT_TFI_square/parameters.dat diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8011e2ae..30b7a752 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -36,7 +36,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/restart.py.in ${CMAKE_CURRENT_BINARY_DIR}/restart.py @ONLY) foreach(name AntiferroHeisenberg_real AntiferroHeisenberg_complex J1J2_AFH - TE_singlespin) + TE_singlespin FT_TFI_square) add_test(NAME ${name} COMMAND ${TENES_PYTHON_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/fulltest.py ${name}) endforeach() diff --git a/test/data/FT_TFI_square.toml b/test/data/FT_TFI_square.toml new file mode 100644 index 00000000..b039ab18 --- /dev/null +++ b/test/data/FT_TFI_square.toml @@ -0,0 +1,496 @@ +[parameter] +[parameter.general] +mode = 'finite' +is_real = false +output = 'output_FT_TFI_square' +measure_interval = 100 +[parameter.simple_update] +num_step = 500 +tau = 0.005 +[parameter.full_update] +num_step = 0 +tau = 0.0 +[parameter.ctm] +iteration_max = 10 +dimension = 10 + +[tensor] +L_sub = [2, 2] +skew = 0 +[[tensor.unitcell]] +index = [] +physical_dim = 2 +virtual_dim = [3, 3, 3, 3] +initial_state = [0.0] +noise = 0.01 + +[observable] +[[observable.onesite]] +name = "Sz" +group = 0 +sites = [] +dim = 2 +elements = """ +0 0 0.5 0.0 +1 1 -0.5 0.0 +""" +[[observable.onesite]] +name = "Sx" +group = 1 +sites = [] +dim = 2 +elements = """ +1 0 0.5 0.0 +0 1 0.5 0.0 +""" +[[observable.onesite]] +name = "Sy" +group = 2 +sites = [] +dim = 2 +elements = """ +1 0 0.0 0.5 +0 1 0.0 -0.5 +""" + +[[observable.twosite]] +name = "bond_hamiltonian" +group = 0 +bonds = """ +0 1 0 +1 1 0 +2 1 0 +3 1 0 +0 0 1 +1 0 1 +2 0 1 +3 0 1 +""" +dim = [2, 2] +elements = """ +0 0 0 0 -0.25 0.0 +1 0 0 0 -0.125 0.0 +0 1 0 0 -0.125 0.0 +0 0 1 0 -0.125 0.0 +1 0 1 0 0.25 0.0 +1 1 1 0 -0.125 0.0 +0 0 0 1 -0.125 0.0 +0 1 0 1 0.25 0.0 +1 1 0 1 -0.125 0.0 +1 0 1 1 -0.125 0.0 +0 1 1 1 -0.125 0.0 +1 1 1 1 -0.25 0.0 +""" +[[observable.twosite]] +name = "SzSz" +group = 1 +bonds = """ +0 1 0 +1 1 0 +2 1 0 +3 1 0 +0 0 1 +1 0 1 +2 0 1 +3 0 1 +""" +ops = [0, 0] +[[observable.twosite]] +name = "SxSx" +group = 2 +bonds = """ +0 1 0 +1 1 0 +2 1 0 +3 1 0 +0 0 1 +1 0 1 +2 0 1 +3 0 1 +""" +ops = [1, 1] +[[observable.twosite]] +name = "SySy" +group = 3 +bonds = """ +0 1 0 +1 1 0 +2 1 0 +3 1 0 +0 0 1 +1 0 1 +2 0 1 +3 0 1 +""" +ops = [2, 2] + + +[evolution] +[[evolution.simple]] +group = 0 +source_site = 0 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 1 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 2 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 3 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 0 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 1 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 2 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 3 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 0 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 1 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 2 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 3 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 0 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 1 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 2 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 3 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" diff --git a/test/data/output_FT_TFI_square/FT_TFI_square.toml b/test/data/output_FT_TFI_square/FT_TFI_square.toml new file mode 100644 index 00000000..b039ab18 --- /dev/null +++ b/test/data/output_FT_TFI_square/FT_TFI_square.toml @@ -0,0 +1,496 @@ +[parameter] +[parameter.general] +mode = 'finite' +is_real = false +output = 'output_FT_TFI_square' +measure_interval = 100 +[parameter.simple_update] +num_step = 500 +tau = 0.005 +[parameter.full_update] +num_step = 0 +tau = 0.0 +[parameter.ctm] +iteration_max = 10 +dimension = 10 + +[tensor] +L_sub = [2, 2] +skew = 0 +[[tensor.unitcell]] +index = [] +physical_dim = 2 +virtual_dim = [3, 3, 3, 3] +initial_state = [0.0] +noise = 0.01 + +[observable] +[[observable.onesite]] +name = "Sz" +group = 0 +sites = [] +dim = 2 +elements = """ +0 0 0.5 0.0 +1 1 -0.5 0.0 +""" +[[observable.onesite]] +name = "Sx" +group = 1 +sites = [] +dim = 2 +elements = """ +1 0 0.5 0.0 +0 1 0.5 0.0 +""" +[[observable.onesite]] +name = "Sy" +group = 2 +sites = [] +dim = 2 +elements = """ +1 0 0.0 0.5 +0 1 0.0 -0.5 +""" + +[[observable.twosite]] +name = "bond_hamiltonian" +group = 0 +bonds = """ +0 1 0 +1 1 0 +2 1 0 +3 1 0 +0 0 1 +1 0 1 +2 0 1 +3 0 1 +""" +dim = [2, 2] +elements = """ +0 0 0 0 -0.25 0.0 +1 0 0 0 -0.125 0.0 +0 1 0 0 -0.125 0.0 +0 0 1 0 -0.125 0.0 +1 0 1 0 0.25 0.0 +1 1 1 0 -0.125 0.0 +0 0 0 1 -0.125 0.0 +0 1 0 1 0.25 0.0 +1 1 0 1 -0.125 0.0 +1 0 1 1 -0.125 0.0 +0 1 1 1 -0.125 0.0 +1 1 1 1 -0.25 0.0 +""" +[[observable.twosite]] +name = "SzSz" +group = 1 +bonds = """ +0 1 0 +1 1 0 +2 1 0 +3 1 0 +0 0 1 +1 0 1 +2 0 1 +3 0 1 +""" +ops = [0, 0] +[[observable.twosite]] +name = "SxSx" +group = 2 +bonds = """ +0 1 0 +1 1 0 +2 1 0 +3 1 0 +0 0 1 +1 0 1 +2 0 1 +3 0 1 +""" +ops = [1, 1] +[[observable.twosite]] +name = "SySy" +group = 3 +bonds = """ +0 1 0 +1 1 0 +2 1 0 +3 1 0 +0 0 1 +1 0 1 +2 0 1 +3 0 1 +""" +ops = [2, 2] + + +[evolution] +[[evolution.simple]] +group = 0 +source_site = 0 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 1 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 2 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 3 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 0 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 1 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 2 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 3 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.0012511723635353 0.0 +1 0 0 0 0.0006250003255208119 0.0 +0 1 0 0 0.0006250003255207743 0.0 +1 1 0 0 3.907879129179791e-07 0.0 +0 0 1 0 0.0006250003255208067 0.0 +1 0 1 0 0.998751171386973 0.0 +0 1 1 0 3.904623921101451e-07 0.0 +1 1 1 0 0.0006250003255209479 0.0 +0 0 0 1 0.0006250003255207418 0.0 +1 0 0 1 3.904623921091203e-07 0.0 +0 1 0 1 0.9987511713869726 0.0 +1 1 0 1 0.0006250003255204389 0.0 +0 0 1 1 3.9078791291805874e-07 0.0 +1 0 1 1 0.0006250003255209529 0.0 +0 1 1 1 0.0006250003255204434 0.0 +1 1 1 1 1.001251172363535 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 0 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 1 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 2 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 3 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 0 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 1 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 2 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 3 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 0.9999999999999997 0.0 +1 0 0 0 -3.810071501181251e-17 0.0 +0 1 0 0 -1.0307269829587057e-16 0.0 +1 1 0 0 -4.6347783526594477e-17 0.0 +0 0 1 0 -3.810071501181251e-17 0.0 +1 0 1 0 0.9999999999999999 0.0 +0 1 1 0 -4.257181012970271e-17 0.0 +1 1 1 0 7.515066840859902e-17 0.0 +0 0 0 1 -1.0307269829587057e-16 0.0 +1 0 0 1 -4.257181012970271e-17 0.0 +0 1 0 1 0.9999999999999997 0.0 +1 1 0 1 -4.061549491098926e-16 0.0 +0 0 1 1 -4.6347783526594477e-17 0.0 +1 0 1 1 7.515066840859902e-17 0.0 +0 1 1 1 -4.061549491098926e-16 0.0 +1 1 1 1 0.9999999999999993 0.0 +""" diff --git a/test/data/output_FT_TFI_square/FT_density.dat b/test/data/output_FT_TFI_square/FT_density.dat new file mode 100644 index 00000000..a10ac3fc --- /dev/null +++ b/test/data/output_FT_TFI_square/FT_density.dat @@ -0,0 +1,63 @@ +# The meaning of each column is the following: +# $1: inverse temperature +# $2: observable ID +# $3: real +# $4: imag +# The meaning of observable IDs are the following: +# 0: Energy +# 1: Sz +# 2: Sx +# 3: Sy +# 4: bond_hamiltonian +# 5: SzSz +# 6: SxSx +# 7: SySy + +0.00000000000000000e+00 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 4 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 5 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 6 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 7 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 0 -3.34192414597392351e-01 0.00000000000000000e+00 +1.00000000000000067e+00 1 -4.45914017444298684e-06 0.00000000000000000e+00 +1.00000000000000067e+00 2 2.15626114410613551e-01 0.00000000000000000e+00 +1.00000000000000067e+00 3 0.00000000000000000e+00 -1.29338520080078964e-15 +1.00000000000000067e+00 4 -3.34192414597392351e-01 0.00000000000000000e+00 +1.00000000000000067e+00 5 5.93102484480938635e-02 0.00000000000000000e+00 +1.00000000000000067e+00 6 4.66208539825588922e-02 0.00000000000000000e+00 +1.00000000000000067e+00 7 -3.70729770886718069e-03 0.00000000000000000e+00 +2.00000000000000133e+00 0 -5.67020007705581919e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 3.40386436356256594e-01 0.00000000000000000e+00 +2.00000000000000133e+00 2 2.80914990578991608e-01 0.00000000000000000e+00 +2.00000000000000133e+00 3 0.00000000000000000e+00 -5.92889272861819050e-15 +2.00000000000000133e+00 4 -5.67020007705581919e-01 0.00000000000000000e+00 +2.00000000000000133e+00 5 1.43078114629712844e-01 0.00000000000000000e+00 +2.00000000000000133e+00 6 8.41269294928397721e-02 0.00000000000000000e+00 +2.00000000000000133e+00 7 -1.07717464413599265e-02 0.00000000000000000e+00 +2.99999999999998002e+00 0 -6.23467380925981862e-01 0.00000000000000000e+00 +2.99999999999998002e+00 1 4.17939243014534889e-01 0.00000000000000000e+00 +2.99999999999998002e+00 2 2.64442607232005022e-01 0.00000000000000000e+00 +2.99999999999998002e+00 3 0.00000000000000000e+00 -4.37886089097802123e-15 +2.99999999999998002e+00 4 -6.23467380925981862e-01 0.00000000000000000e+00 +2.99999999999998002e+00 5 1.79528422072132016e-01 0.00000000000000000e+00 +2.99999999999998002e+00 6 7.77638431999712609e-02 0.00000000000000000e+00 +2.99999999999998002e+00 7 -1.09235258435055899e-02 0.00000000000000000e+00 +3.99999999999995870e+00 0 -6.29604680334907130e-01 0.00000000000000000e+00 +3.99999999999995870e+00 1 4.24601357771075827e-01 0.00000000000000000e+00 +3.99999999999995870e+00 2 2.62249424842199930e-01 0.00000000000000000e+00 +3.99999999999995870e+00 3 0.00000000000000000e+00 -2.68536550602339804e-15 +3.99999999999995870e+00 4 -6.29604680334907130e-01 0.00000000000000000e+00 +3.99999999999995870e+00 5 1.83692098869460529e-01 0.00000000000000000e+00 +3.99999999999995870e+00 6 7.69710777304430244e-02 0.00000000000000000e+00 +3.99999999999995870e+00 7 -1.11567748574718014e-02 0.00000000000000000e+00 +4.99999999999993783e+00 0 -6.30638664849884290e-01 0.00000000000000000e+00 +4.99999999999993783e+00 1 4.25689252094072101e-01 0.00000000000000000e+00 +4.99999999999993783e+00 2 2.61900971750838152e-01 0.00000000000000000e+00 +4.99999999999993783e+00 3 0.00000000000000000e+00 -2.65961445091730780e-15 +4.99999999999993783e+00 4 -6.30638664849884290e-01 0.00000000000000000e+00 +4.99999999999993783e+00 5 1.84382995073632816e-01 0.00000000000000000e+00 +4.99999999999993783e+00 6 7.68435200376310495e-02 0.00000000000000000e+00 +4.99999999999993783e+00 7 -1.12416913798278860e-02 0.00000000000000000e+00 diff --git a/test/data/output_FT_TFI_square/FT_onesite_obs.dat b/test/data/output_FT_TFI_square/FT_onesite_obs.dat new file mode 100644 index 00000000..0dafce1b --- /dev/null +++ b/test/data/output_FT_TFI_square/FT_onesite_obs.dat @@ -0,0 +1,108 @@ +# The meaning of each column is the following: +# $1: inverse temperature +# $2: op_group +# $3: site_index +# $4: real +# $5: imag +# The names of op_group are the following: +# 0: Sz +# 1: Sx +# 2: Sy +# -1: norm + +0.00000000000000000e+00 0 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 0 2.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 1 2.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 2 2.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 3 2.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 -4.45914043113356526e-06 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 -4.45913991631167907e-06 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 -4.45913991661728771e-06 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 -4.45914043370941363e-06 0.00000000000000000e+00 +1.00000000000000067e+00 1 0 2.15626114410614050e-01 0.00000000000000000e+00 +1.00000000000000067e+00 1 1 2.15626114410613551e-01 0.00000000000000000e+00 +1.00000000000000067e+00 1 2 2.15626114410613301e-01 0.00000000000000000e+00 +1.00000000000000067e+00 1 3 2.15626114410613273e-01 0.00000000000000000e+00 +1.00000000000000067e+00 2 0 0.00000000000000000e+00 -3.51451506040383512e-15 +1.00000000000000067e+00 2 1 0.00000000000000000e+00 4.36585721789296011e-17 +1.00000000000000067e+00 2 2 0.00000000000000000e+00 -3.27439291341971894e-16 +1.00000000000000067e+00 2 3 0.00000000000000000e+00 -1.37524502363628128e-15 +1.00000000000000067e+00 -1 0 1.27148343293847921e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 1 1.27148343293848010e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 2 1.27148343293848054e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 3 1.27148343293848121e+00 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 3.40386436356255206e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 3.40386436356256483e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 3.40386436356256483e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 3.40386436356258038e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 0 2.80914990578993218e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 1 2.80914990578992330e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 2 2.80914990578990997e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 3 2.80914990578989721e-01 0.00000000000000000e+00 +2.00000000000000133e+00 2 0 0.00000000000000000e+00 -1.01785783663423369e-14 +2.00000000000000133e+00 2 1 0.00000000000000000e+00 -4.28843657059093467e-15 +2.00000000000000133e+00 2 2 0.00000000000000000e+00 -5.32179478037188241e-15 +2.00000000000000133e+00 2 3 0.00000000000000000e+00 -3.92676119716760489e-15 +2.00000000000000133e+00 -1 0 1.07438351398059972e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 1 1.07438351398059950e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 2 1.07438351398059950e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 3 1.07438351398059884e+00 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 4.17939243014608108e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 4.17939243014460837e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 4.17939243014609052e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 4.17939243014461559e-01 0.00000000000000000e+00 +2.99999999999998002e+00 1 0 2.64442607231915205e-01 0.00000000000000000e+00 +2.99999999999998002e+00 1 1 2.64442607232096671e-01 0.00000000000000000e+00 +2.99999999999998002e+00 1 2 2.64442607231914151e-01 0.00000000000000000e+00 +2.99999999999998002e+00 1 3 2.64442607232094007e-01 0.00000000000000000e+00 +2.99999999999998002e+00 2 0 0.00000000000000000e+00 -5.35961522302681530e-15 +2.99999999999998002e+00 2 1 0.00000000000000000e+00 -6.40943676155763275e-15 +2.99999999999998002e+00 2 2 0.00000000000000000e+00 -3.20471838077892169e-15 +2.99999999999998002e+00 2 3 0.00000000000000000e+00 -2.54167319854871480e-15 +2.99999999999998002e+00 -1 0 1.00465825350632065e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 1 1.00465825350635329e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 2 1.00465825350632021e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 3 1.00465825350635396e+00 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 4.24601357771075827e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 4.24601357771075771e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 4.24601357771076049e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 4.24601357771075716e-01 0.00000000000000000e+00 +3.99999999999995870e+00 1 0 2.62249424842198819e-01 0.00000000000000000e+00 +3.99999999999995870e+00 1 1 2.62249424842200374e-01 0.00000000000000000e+00 +3.99999999999995870e+00 1 2 2.62249424842199430e-01 0.00000000000000000e+00 +3.99999999999995870e+00 1 3 2.62249424842201095e-01 0.00000000000000000e+00 +3.99999999999995870e+00 2 0 0.00000000000000000e+00 -5.07929599588921688e-15 +3.99999999999995870e+00 2 1 0.00000000000000000e+00 -2.30372441343609497e-15 +3.99999999999995870e+00 2 2 0.00000000000000000e+00 -3.38619733059281218e-15 +3.99999999999995870e+00 2 3 0.00000000000000000e+00 2.77557158245312553e-17 +3.99999999999995870e+00 -1 0 9.99994948467435973e-01 0.00000000000000000e+00 +3.99999999999995870e+00 -1 1 9.99994948467435085e-01 0.00000000000000000e+00 +3.99999999999995870e+00 -1 2 9.99994948467435640e-01 0.00000000000000000e+00 +3.99999999999995870e+00 -1 3 9.99994948467435418e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 4.25689252094073378e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 4.25689252094076709e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 4.25689252094073045e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 4.25689252094065107e-01 0.00000000000000000e+00 +4.99999999999993783e+00 1 0 2.61900971750837264e-01 0.00000000000000000e+00 +4.99999999999993783e+00 1 1 2.61900971750830214e-01 0.00000000000000000e+00 +4.99999999999993783e+00 1 2 2.61900971750836209e-01 0.00000000000000000e+00 +4.99999999999993783e+00 1 3 2.61900971750848810e-01 0.00000000000000000e+00 +4.99999999999993783e+00 2 0 0.00000000000000000e+00 -3.66374042899208687e-14 +4.99999999999993783e+00 2 1 0.00000000000000000e+00 -2.24990883054100527e-15 +4.99999999999993783e+00 2 2 0.00000000000000000e+00 -3.36097491969706140e-15 +4.99999999999993783e+00 2 3 0.00000000000000000e+00 3.16098302364897042e-14 +4.99999999999993783e+00 -1 0 9.99241211176251976e-01 0.00000000000000000e+00 +4.99999999999993783e+00 -1 1 9.99241211176253419e-01 0.00000000000000000e+00 +4.99999999999993783e+00 -1 2 9.99241211176252198e-01 0.00000000000000000e+00 +4.99999999999993783e+00 -1 3 9.99241211176252642e-01 0.00000000000000000e+00 diff --git a/test/data/output_FT_TFI_square/FT_twosite_obs.dat b/test/data/output_FT_TFI_square/FT_twosite_obs.dat new file mode 100644 index 00000000..bf1a4b1c --- /dev/null +++ b/test/data/output_FT_TFI_square/FT_twosite_obs.dat @@ -0,0 +1,255 @@ +# The meaning of each column is the following: +# $1: inverse temperature +# $2: op_group +# $3: source_site +# $4: dx +# $5: dy +# $6: real +# $7: imag +# The names of op_group are the following: +# 0: bond_hamiltonian +# 1: SzSz +# 2: SxSx +# 3: SySy +# -1: norm + +0.00000000000000000e+00 0 0 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 0 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 2 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 3 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 0 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 2 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 3 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 0 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 2 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 3 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 0 0 1 4.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 0 1 0 4.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 1 0 1 4.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 1 1 0 4.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 2 0 1 4.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 2 1 0 4.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 3 0 1 4.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 3 1 0 4.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 0 1 -1.67108118107608006e-01 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 1 0 -1.67054070433312746e-01 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 0 1 -1.67108118107609227e-01 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 1 0 -1.67084147453779530e-01 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 0 1 -1.67138493200084448e-01 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 1 0 -1.67054070433311802e-01 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 0 1 -1.67138493200084864e-01 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 1 0 -1.67084147453778836e-01 0.00000000000000000e+00 +1.00000000000000067e+00 1 0 0 1 5.92950609014090552e-02 0.00000000000000000e+00 +1.00000000000000067e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 1 1 0 1 5.92950609014103944e-02 0.00000000000000000e+00 +1.00000000000000067e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 1 2 0 1 5.93254359947776935e-02 0.00000000000000000e+00 +1.00000000000000067e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 1 3 0 1 5.93254359947783111e-02 0.00000000000000000e+00 +1.00000000000000067e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 2 0 0 1 4.66206051779802649e-02 0.00000000000000000e+00 +1.00000000000000067e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 2 1 0 1 4.66206051779801262e-02 0.00000000000000000e+00 +1.00000000000000067e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 2 2 0 1 4.66211027871376651e-02 0.00000000000000000e+00 +1.00000000000000067e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 2 3 0 1 4.66211027871375264e-02 0.00000000000000000e+00 +1.00000000000000067e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 3 0 0 1 -3.69252502925376466e-03 0.00000000000000000e+00 +1.00000000000000067e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 3 1 0 1 -3.69252502925384229e-03 0.00000000000000000e+00 +1.00000000000000067e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 3 2 0 1 -3.72207038848054988e-03 0.00000000000000000e+00 +1.00000000000000067e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 3 3 0 1 -3.72207038848056636e-03 0.00000000000000000e+00 +1.00000000000000067e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 0 0 1 1.60599159864501706e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 0 1 0 1.60599153784112514e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 1 0 1 1.60599141051818828e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 1 1 0 1.60599153784112758e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 2 0 1 1.60599159864501884e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 2 1 0 1.60599145777840779e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 3 0 1 1.60599141051819094e+00 0.00000000000000000e+00 +1.00000000000000067e+00 -1 3 1 0 1.60599145777840868e+00 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 1 -2.83521616616646654e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 0 -2.83470477991318359e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 1 -2.83521616616646599e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 0 -2.83498319121582298e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 0 1 -2.83549601681616692e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 1 0 -2.83470477991318137e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 0 1 -2.83549601681616525e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 1 0 -2.83498319121582132e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 0 0 1 1.43064122867304744e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 1 1 0 1 1.43064122867305576e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 1 2 0 1 1.43092106392120222e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 1 3 0 1 1.43092106392120860e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 2 0 0 1 8.41154491552443678e-02 0.00000000000000000e+00 +2.00000000000000133e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 2 1 0 1 8.41154491552434103e-02 0.00000000000000000e+00 +2.00000000000000133e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 2 2 0 1 8.41384098304361477e-02 0.00000000000000000e+00 +2.00000000000000133e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 2 3 0 1 8.41384098304351763e-02 0.00000000000000000e+00 +2.00000000000000133e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 3 0 0 1 -1.07443992413802127e-02 0.00000000000000000e+00 +2.00000000000000133e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 3 1 0 1 -1.07443992413799976e-02 0.00000000000000000e+00 +2.00000000000000133e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 3 2 0 1 -1.07990936413398537e-02 0.00000000000000000e+00 +2.00000000000000133e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 3 3 0 1 -1.07990936413396420e-02 0.00000000000000000e+00 +2.00000000000000133e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 0 0 1 1.13119967056629811e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 0 1 0 1.13119859803999590e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 1 0 1 1.13120270590614314e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 1 1 0 1.13119859803999523e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 2 0 1 1.13119967056629900e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 2 1 0 1.13120199584838632e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 3 0 1 1.13120270590614291e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 3 1 0 1.13120199584838677e+00 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 0 1 -3.11741405199165822e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 1 0 -3.11709406838994840e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 0 1 -3.11741405199156552e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 1 0 -3.11725903745057986e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 0 1 -3.11758046068755235e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 1 0 -3.11709406838994174e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 0 1 -3.11758046068745576e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 1 0 -3.11725903745057709e-01 0.00000000000000000e+00 +2.99999999999998002e+00 1 0 0 1 1.79520101691566042e-01 0.00000000000000000e+00 +2.99999999999998002e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 1 1 0 1 1.79520101691466483e-01 0.00000000000000000e+00 +2.99999999999998002e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 1 2 0 1 1.79536742452797604e-01 0.00000000000000000e+00 +2.99999999999998002e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 1 3 0 1 1.79536742452697934e-01 0.00000000000000000e+00 +2.99999999999998002e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 2 0 0 1 7.77458723449624550e-02 0.00000000000000000e+00 +2.99999999999998002e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 2 1 0 1 7.77458723450712985e-02 0.00000000000000000e+00 +2.99999999999998002e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 2 2 0 1 7.77818140548711540e-02 0.00000000000000000e+00 +2.99999999999998002e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 2 3 0 1 7.77818140549801085e-02 0.00000000000000000e+00 +2.99999999999998002e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 3 0 0 1 -1.08972193002095531e-02 0.00000000000000000e+00 +2.99999999999998002e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 3 1 0 1 -1.08972193002303749e-02 0.00000000000000000e+00 +2.99999999999998002e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 3 2 0 1 -1.09498323867807789e-02 0.00000000000000000e+00 +2.99999999999998002e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 3 3 0 1 -1.09498323868016528e-02 0.00000000000000000e+00 +2.99999999999998002e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 0 0 1 1.00894135784969263e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 0 1 0 1.00894169999792127e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 1 0 1 1.00894144250386919e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 1 1 0 1.00894169999798278e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 2 0 1 1.00894135784969330e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 2 1 0 1.00894179317917088e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 3 0 1 1.00894144250386986e+00 0.00000000000000000e+00 +2.99999999999998002e+00 -1 3 1 0 1.00894179317923371e+00 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 0 1 -3.14809375738424546e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 1 0 -3.14780500977249633e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 0 1 -3.14809375738425157e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 1 0 -3.14795237114487925e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 0 1 -3.14824246839651212e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 1 0 -3.14780500977249966e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 0 1 -3.14824246839651878e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 1 0 -3.14795237114488147e-01 0.00000000000000000e+00 +3.99999999999995870e+00 1 0 0 1 1.83684663320369701e-01 0.00000000000000000e+00 +3.99999999999995870e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 1 1 0 1 1.83684663320369507e-01 0.00000000000000000e+00 +3.99999999999995870e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 1 2 0 1 1.83699534418551608e-01 0.00000000000000000e+00 +3.99999999999995870e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 1 3 0 1 1.83699534418551358e-01 0.00000000000000000e+00 +3.99999999999995870e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 2 0 0 1 7.69521811656496690e-02 0.00000000000000000e+00 +3.99999999999995870e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 2 1 0 1 7.69521811656504323e-02 0.00000000000000000e+00 +3.99999999999995870e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 2 2 0 1 7.69899742952355470e-02 0.00000000000000000e+00 +3.99999999999995870e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 2 3 0 1 7.69899742952364213e-02 0.00000000000000000e+00 +3.99999999999995870e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 3 0 0 1 -1.11305441528952824e-02 0.00000000000000000e+00 +3.99999999999995870e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 3 1 0 1 -1.11305441528953847e-02 0.00000000000000000e+00 +3.99999999999995870e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 3 2 0 1 -1.11830055620482389e-02 0.00000000000000000e+00 +3.99999999999995870e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 3 3 0 1 -1.11830055620482979e-02 0.00000000000000000e+00 +3.99999999999995870e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 -1 0 0 1 9.99911694427448872e-01 0.00000000000000000e+00 +3.99999999999995870e+00 -1 0 1 0 9.99911696444840126e-01 0.00000000000000000e+00 +3.99999999999995870e+00 -1 1 0 1 9.99911545622212516e-01 0.00000000000000000e+00 +3.99999999999995870e+00 -1 1 1 0 9.99911696444839015e-01 0.00000000000000000e+00 +3.99999999999995870e+00 -1 2 0 1 9.99911694427448539e-01 0.00000000000000000e+00 +3.99999999999995870e+00 -1 2 1 0 9.99911551304461743e-01 0.00000000000000000e+00 +3.99999999999995870e+00 -1 3 0 1 9.99911545622212850e-01 0.00000000000000000e+00 +3.99999999999995870e+00 -1 3 1 0 9.99911551304460300e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 0 1 -3.15326226985149893e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 1 0 -3.15297996703212902e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 0 1 -3.15326226985149338e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 1 0 -3.15312371270156100e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 0 1 -3.15340734741250517e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 1 0 -3.15297996703212569e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 0 1 -3.15340734741249962e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 1 0 -3.15312371270156211e-01 0.00000000000000000e+00 +4.99999999999993783e+00 1 0 0 1 1.84375741281435385e-01 0.00000000000000000e+00 +4.99999999999993783e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 1 1 0 1 1.84375741281433608e-01 0.00000000000000000e+00 +4.99999999999993783e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 1 2 0 1 1.84390248865832024e-01 0.00000000000000000e+00 +4.99999999999993783e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 1 3 0 1 1.84390248865830192e-01 0.00000000000000000e+00 +4.99999999999993783e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 2 0 0 1 7.68244190307558611e-02 0.00000000000000000e+00 +4.99999999999993783e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 2 1 0 1 7.68244190307574848e-02 0.00000000000000000e+00 +4.99999999999993783e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 2 2 0 1 7.68626210445045588e-02 0.00000000000000000e+00 +4.99999999999993783e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 2 3 0 1 7.68626210445062796e-02 0.00000000000000000e+00 +4.99999999999993783e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 3 0 0 1 -1.12154524489489673e-02 0.00000000000000000e+00 +4.99999999999993783e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 3 1 0 1 -1.12154524489491668e-02 0.00000000000000000e+00 +4.99999999999993783e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 3 2 0 1 -1.12679303107066017e-02 0.00000000000000000e+00 +4.99999999999993783e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 3 3 0 1 -1.12679303107068134e-02 0.00000000000000000e+00 +4.99999999999993783e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 -1 0 0 1 9.98420535233081163e-01 0.00000000000000000e+00 +4.99999999999993783e+00 -1 0 1 0 9.98420506861229629e-01 0.00000000000000000e+00 +4.99999999999993783e+00 -1 1 0 1 9.98420378072290005e-01 0.00000000000000000e+00 +4.99999999999993783e+00 -1 1 1 0 9.98420506861231072e-01 0.00000000000000000e+00 +4.99999999999993783e+00 -1 2 0 1 9.98420535233082052e-01 0.00000000000000000e+00 +4.99999999999993783e+00 -1 2 1 0 9.98420352732450445e-01 0.00000000000000000e+00 +4.99999999999993783e+00 -1 3 0 1 9.98420378072290227e-01 0.00000000000000000e+00 +4.99999999999993783e+00 -1 3 1 0 9.98420352732451777e-01 0.00000000000000000e+00 diff --git a/test/data/output_FT_TFI_square/parameters.dat b/test/data/output_FT_TFI_square/parameters.dat new file mode 100644 index 00000000..c5621a71 --- /dev/null +++ b/test/data/output_FT_TFI_square/parameters.dat @@ -0,0 +1,39 @@ +simple_num_step = [500] +simple_tau = [0.005] +simple_inverse_lambda_cutoff = 1e-12 +simple_gauge_fix = 0 +simple_gauge_maxiter = 100 +simple_gauge_convergence_epsilon = 0.01 + +full_num_step = [0] +full_inverse_projector_cutoff = 1e-12 +full_inverse_precision = 1e-12 +full_convergence_epsilon = 1e-06 +full_iteration_max = 100 +full_gauge_fix = true +full_fastfullupdate = true + +ctm_dimension = 10 +ctm_inverse_projector_cutoff = 1e-12 +ctm_convergence_epsilon = 1e-06 +ctm_iteration_max = 10 +ctm_projector_corner = true +use_rsvd = false +rsvd_oversampling_factor = 2 +meanfield_env = false + +mode = finite temperature +simple +Lcor = 0 +seed = 11 +is_real = 0 +iszero_tol = 0 +measure = 1 +tensor_load_dir = +tensor_save_dir = +outdir = output_FT_TFI_square + +Lsub = [ 2 , 2 ] +skew = 0 + +start_datetime = 2023-07-06T10:42:20+09:00 diff --git a/test/fulltest.py.in b/test/fulltest.py.in index 03f3259b..70cf5a33 100644 --- a/test/fulltest.py.in +++ b/test/fulltest.py.in @@ -153,6 +153,10 @@ elif mode.startswith("time"): result = check("TE_density.dat", resdir, refdir, rtol=rtol, atol=atol) and result result = check("TE_onesite_obs.dat", resdir, refdir, rtol=rtol, atol=atol) and result result = check("TE_twosite_obs.dat", resdir, refdir, rtol=rtol, atol=atol) and result +elif mode.startswith("finite"): + result = check("FT_density.dat", resdir, refdir, rtol=rtol, atol=atol) and result + result = check("FT_onesite_obs.dat", resdir, refdir, rtol=rtol, atol=atol) and result + result = check("FT_twosite_obs.dat", resdir, refdir, rtol=rtol, atol=atol) and result else: raise ValueError("unknown mode: {}".format(mode)) From 6cad4c7b38da784fd90ec7078dcd65ec2c1b5593 Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Fri, 7 Jul 2023 09:22:33 +0900 Subject: [PATCH 14/25] fixed twosite_obs_density --- src/iTPS/twosite_obs.cpp | 2 +- test/data/output_FT_TFI_square/FT_density.dat | 30 ++--- .../output_FT_TFI_square/FT_twosite_obs.dat | 120 +++++++++--------- test/data/output_FT_TFI_square/parameters.dat | 2 +- 4 files changed, 77 insertions(+), 77 deletions(-) diff --git a/src/iTPS/twosite_obs.cpp b/src/iTPS/twosite_obs.cpp index 082db68a..597995be 100644 --- a/src/iTPS/twosite_obs.cpp +++ b/src/iTPS/twosite_obs.cpp @@ -539,11 +539,11 @@ auto iTPS::measure_twosite_density() } else{ op_l = onesite_operators[siteoperator_index(target_site, op.ops_indices[1])].op; op_r = onesite_operators[siteoperator_index(op.source_site,op.ops_indices[0])].op; + } value = core::Contract_two_sites_horizontal_density( C1[left], C2[right], C3[right], C4[left], eTt[left], eTt[right], eTr[right], eTb[right], eTb[left], eTl[left], Tn[left], Tn[right], op_l, op_r); - } } } } diff --git a/test/data/output_FT_TFI_square/FT_density.dat b/test/data/output_FT_TFI_square/FT_density.dat index a10ac3fc..9e5b8be3 100644 --- a/test/data/output_FT_TFI_square/FT_density.dat +++ b/test/data/output_FT_TFI_square/FT_density.dat @@ -26,38 +26,38 @@ 1.00000000000000067e+00 2 2.15626114410613551e-01 0.00000000000000000e+00 1.00000000000000067e+00 3 0.00000000000000000e+00 -1.29338520080078964e-15 1.00000000000000067e+00 4 -3.34192414597392351e-01 0.00000000000000000e+00 -1.00000000000000067e+00 5 5.93102484480938635e-02 0.00000000000000000e+00 -1.00000000000000067e+00 6 4.66208539825588922e-02 0.00000000000000000e+00 -1.00000000000000067e+00 7 -3.70729770886718069e-03 0.00000000000000000e+00 +1.00000000000000067e+00 5 1.18566300185918100e-01 0.00000000000000000e+00 +1.00000000000000067e+00 6 9.32416432331395623e-02 0.00000000000000000e+00 +1.00000000000000067e+00 7 -7.35592821667938219e-03 0.00000000000000000e+00 2.00000000000000133e+00 0 -5.67020007705581919e-01 0.00000000000000000e+00 2.00000000000000133e+00 1 3.40386436356256594e-01 0.00000000000000000e+00 2.00000000000000133e+00 2 2.80914990578991608e-01 0.00000000000000000e+00 2.00000000000000133e+00 3 0.00000000000000000e+00 -5.92889272861819050e-15 2.00000000000000133e+00 4 -5.67020007705581919e-01 0.00000000000000000e+00 -2.00000000000000133e+00 5 1.43078114629712844e-01 0.00000000000000000e+00 -2.00000000000000133e+00 6 8.41269294928397721e-02 0.00000000000000000e+00 -2.00000000000000133e+00 7 -1.07717464413599265e-02 0.00000000000000000e+00 +2.00000000000000133e+00 5 2.86105018672010825e-01 0.00000000000000000e+00 +2.00000000000000133e+00 6 1.68212744535495951e-01 0.00000000000000000e+00 +2.00000000000000133e+00 7 -2.14352210593965233e-02 0.00000000000000000e+00 2.99999999999998002e+00 0 -6.23467380925981862e-01 0.00000000000000000e+00 2.99999999999998002e+00 1 4.17939243014534889e-01 0.00000000000000000e+00 2.99999999999998002e+00 2 2.64442607232005022e-01 0.00000000000000000e+00 2.99999999999998002e+00 3 0.00000000000000000e+00 -4.37886089097802123e-15 2.99999999999998002e+00 4 -6.23467380925981862e-01 0.00000000000000000e+00 -2.99999999999998002e+00 5 1.79528422072132016e-01 0.00000000000000000e+00 -2.99999999999998002e+00 6 7.77638431999712609e-02 0.00000000000000000e+00 -2.99999999999998002e+00 7 -1.09235258435055899e-02 0.00000000000000000e+00 +2.99999999999998002e+00 5 3.59024773801258967e-01 0.00000000000000000e+00 +2.99999999999998002e+00 6 1.55457759327272821e-01 0.00000000000000000e+00 +2.99999999999998002e+00 7 -2.17425756855145341e-02 0.00000000000000000e+00 3.99999999999995870e+00 0 -6.29604680334907130e-01 0.00000000000000000e+00 3.99999999999995870e+00 1 4.24601357771075827e-01 0.00000000000000000e+00 3.99999999999995870e+00 2 2.62249424842199930e-01 0.00000000000000000e+00 3.99999999999995870e+00 3 0.00000000000000000e+00 -2.68536550602339804e-15 3.99999999999995870e+00 4 -6.29604680334907130e-01 0.00000000000000000e+00 -3.99999999999995870e+00 5 1.83692098869460529e-01 0.00000000000000000e+00 -3.99999999999995870e+00 6 7.69710777304430244e-02 0.00000000000000000e+00 -3.99999999999995870e+00 7 -1.11567748574718014e-02 0.00000000000000000e+00 +3.99999999999995870e+00 5 3.67355255495715682e-01 0.00000000000000000e+00 +3.99999999999995870e+00 6 1.53868102420410935e-01 0.00000000000000000e+00 +3.99999999999995870e+00 7 -2.22093409757638735e-02 0.00000000000000000e+00 4.99999999999993783e+00 0 -6.30638664849884290e-01 0.00000000000000000e+00 4.99999999999993783e+00 1 4.25689252094072101e-01 0.00000000000000000e+00 4.99999999999993783e+00 2 2.61900971750838152e-01 0.00000000000000000e+00 4.99999999999993783e+00 3 0.00000000000000000e+00 -2.65961445091730780e-15 4.99999999999993783e+00 4 -6.30638664849884290e-01 0.00000000000000000e+00 -4.99999999999993783e+00 5 1.84382995073632816e-01 0.00000000000000000e+00 -4.99999999999993783e+00 6 7.68435200376310495e-02 0.00000000000000000e+00 -4.99999999999993783e+00 7 -1.12416913798278860e-02 0.00000000000000000e+00 +4.99999999999993783e+00 5 3.68737693268760991e-01 0.00000000000000000e+00 +4.99999999999993783e+00 6 1.53612086503005008e-01 0.00000000000000000e+00 +4.99999999999993783e+00 7 -2.23791378491471522e-02 0.00000000000000000e+00 diff --git a/test/data/output_FT_TFI_square/FT_twosite_obs.dat b/test/data/output_FT_TFI_square/FT_twosite_obs.dat index bf1a4b1c..d9770c1a 100644 --- a/test/data/output_FT_TFI_square/FT_twosite_obs.dat +++ b/test/data/output_FT_TFI_square/FT_twosite_obs.dat @@ -62,29 +62,29 @@ 1.00000000000000067e+00 0 3 0 1 -1.67138493200084864e-01 0.00000000000000000e+00 1.00000000000000067e+00 0 3 1 0 -1.67084147453778836e-01 0.00000000000000000e+00 1.00000000000000067e+00 1 0 0 1 5.92950609014090552e-02 0.00000000000000000e+00 -1.00000000000000067e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 1 0 1 0 5.92410132271758497e-02 0.00000000000000000e+00 1.00000000000000067e+00 1 1 0 1 5.92950609014103944e-02 0.00000000000000000e+00 -1.00000000000000067e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 1 1 1 0 5.92710902484732544e-02 0.00000000000000000e+00 1.00000000000000067e+00 1 2 0 1 5.93254359947776935e-02 0.00000000000000000e+00 -1.00000000000000067e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 1 2 1 0 5.92410132271751766e-02 0.00000000000000000e+00 1.00000000000000067e+00 1 3 0 1 5.93254359947783111e-02 0.00000000000000000e+00 -1.00000000000000067e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 1 3 1 0 5.92710902484726715e-02 0.00000000000000000e+00 1.00000000000000067e+00 2 0 0 1 4.66206051779802649e-02 0.00000000000000000e+00 -1.00000000000000067e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 2 0 1 0 4.66205448801091452e-02 0.00000000000000000e+00 1.00000000000000067e+00 2 1 0 1 4.66206051779801262e-02 0.00000000000000000e+00 -1.00000000000000067e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 2 1 1 0 4.66210336210523893e-02 0.00000000000000000e+00 1.00000000000000067e+00 2 2 0 1 4.66211027871376651e-02 0.00000000000000000e+00 -1.00000000000000067e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 2 2 1 0 4.66205448801089509e-02 0.00000000000000000e+00 1.00000000000000067e+00 2 3 0 1 4.66211027871375264e-02 0.00000000000000000e+00 -1.00000000000000067e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 2 3 1 0 4.66210336210521673e-02 0.00000000000000000e+00 1.00000000000000067e+00 3 0 0 1 -3.69252502925376466e-03 0.00000000000000000e+00 -1.00000000000000067e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 3 0 1 0 -3.63402743866023765e-03 0.00000000000000000e+00 1.00000000000000067e+00 3 1 0 1 -3.69252502925384229e-03 0.00000000000000000e+00 -1.00000000000000067e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 3 1 1 0 -3.66323357696418184e-03 0.00000000000000000e+00 1.00000000000000067e+00 3 2 0 1 -3.72207038848054988e-03 0.00000000000000000e+00 -1.00000000000000067e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 3 2 1 0 -3.63402743866022334e-03 0.00000000000000000e+00 1.00000000000000067e+00 3 3 0 1 -3.72207038848056636e-03 0.00000000000000000e+00 -1.00000000000000067e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 3 3 1 0 -3.66323357696415929e-03 0.00000000000000000e+00 1.00000000000000067e+00 -1 0 0 1 1.60599159864501706e+00 0.00000000000000000e+00 1.00000000000000067e+00 -1 0 1 0 1.60599153784112514e+00 0.00000000000000000e+00 1.00000000000000067e+00 -1 1 0 1 1.60599141051818828e+00 0.00000000000000000e+00 @@ -102,29 +102,29 @@ 2.00000000000000133e+00 0 3 0 1 -2.83549601681616525e-01 0.00000000000000000e+00 2.00000000000000133e+00 0 3 1 0 -2.83498319121582132e-01 0.00000000000000000e+00 2.00000000000000133e+00 1 0 0 1 1.43064122867304744e-01 0.00000000000000000e+00 -2.00000000000000133e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 1 0 1 0 1.43012984252511299e-01 0.00000000000000000e+00 2.00000000000000133e+00 1 1 0 1 1.43064122867305576e-01 0.00000000000000000e+00 -2.00000000000000133e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 1 1 1 0 1.43040823832083663e-01 0.00000000000000000e+00 2.00000000000000133e+00 1 2 0 1 1.43092106392120222e-01 0.00000000000000000e+00 -2.00000000000000133e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 1 2 1 0 1.43012984252512299e-01 0.00000000000000000e+00 2.00000000000000133e+00 1 3 0 1 1.43092106392120860e-01 0.00000000000000000e+00 -2.00000000000000133e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 1 3 1 0 1.43040823832084579e-01 0.00000000000000000e+00 2.00000000000000133e+00 2 0 0 1 8.41154491552443678e-02 0.00000000000000000e+00 -2.00000000000000133e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 2 0 1 0 8.40744651793688402e-02 0.00000000000000000e+00 2.00000000000000133e+00 2 1 0 1 8.41154491552434103e-02 0.00000000000000000e+00 -2.00000000000000133e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 2 1 1 0 8.40971649059447240e-02 0.00000000000000000e+00 2.00000000000000133e+00 2 2 0 1 8.41384098304361477e-02 0.00000000000000000e+00 -2.00000000000000133e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 2 2 1 0 8.40744651793676190e-02 0.00000000000000000e+00 2.00000000000000133e+00 2 3 0 1 8.41384098304351763e-02 0.00000000000000000e+00 -2.00000000000000133e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 2 3 1 0 8.40971649059434889e-02 0.00000000000000000e+00 2.00000000000000133e+00 3 0 0 1 -1.07443992413802127e-02 0.00000000000000000e+00 -2.00000000000000133e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 3 0 1 0 -1.06363709528246950e-02 0.00000000000000000e+00 2.00000000000000133e+00 3 1 0 1 -1.07443992413799976e-02 0.00000000000000000e+00 -2.00000000000000133e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 3 1 1 0 -1.06905782832486234e-02 0.00000000000000000e+00 2.00000000000000133e+00 3 2 0 1 -1.07990936413398537e-02 0.00000000000000000e+00 -2.00000000000000133e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 3 2 1 0 -1.06363709528246222e-02 0.00000000000000000e+00 2.00000000000000133e+00 3 3 0 1 -1.07990936413396420e-02 0.00000000000000000e+00 -2.00000000000000133e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.00000000000000133e+00 3 3 1 0 -1.06905782832484413e-02 0.00000000000000000e+00 2.00000000000000133e+00 -1 0 0 1 1.13119967056629811e+00 0.00000000000000000e+00 2.00000000000000133e+00 -1 0 1 0 1.13119859803999590e+00 0.00000000000000000e+00 2.00000000000000133e+00 -1 1 0 1 1.13120270590614314e+00 0.00000000000000000e+00 @@ -142,29 +142,29 @@ 2.99999999999998002e+00 0 3 0 1 -3.11758046068745576e-01 0.00000000000000000e+00 2.99999999999998002e+00 0 3 1 0 -3.11725903745057709e-01 0.00000000000000000e+00 2.99999999999998002e+00 1 0 0 1 1.79520101691566042e-01 0.00000000000000000e+00 -2.99999999999998002e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 1 0 1 0 1.79488103329198262e-01 0.00000000000000000e+00 2.99999999999998002e+00 1 1 0 1 1.79520101691466483e-01 0.00000000000000000e+00 -2.99999999999998002e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 1 1 1 0 1.79504600129055142e-01 0.00000000000000000e+00 2.99999999999998002e+00 1 2 0 1 1.79536742452797604e-01 0.00000000000000000e+00 -2.99999999999998002e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 1 2 1 0 1.79488103329198762e-01 0.00000000000000000e+00 2.99999999999998002e+00 1 3 0 1 1.79536742452697934e-01 0.00000000000000000e+00 -2.99999999999998002e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 1 3 1 0 1.79504600129055586e-01 0.00000000000000000e+00 2.99999999999998002e+00 2 0 0 1 7.77458723449624550e-02 0.00000000000000000e+00 -2.99999999999998002e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 2 0 1 0 7.76761174858739689e-02 0.00000000000000000e+00 2.99999999999998002e+00 2 1 0 1 7.77458723450712985e-02 0.00000000000000000e+00 -2.99999999999998002e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 2 1 1 0 7.77117147687301363e-02 0.00000000000000000e+00 2.99999999999998002e+00 2 2 0 1 7.77818140548711540e-02 0.00000000000000000e+00 -2.99999999999998002e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 2 2 1 0 7.76761174858729281e-02 0.00000000000000000e+00 2.99999999999998002e+00 2 3 0 1 7.77818140549801085e-02 0.00000000000000000e+00 -2.99999999999998002e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 2 3 1 0 7.77117147687292065e-02 0.00000000000000000e+00 2.99999999999998002e+00 3 0 0 1 -1.08972193002095531e-02 0.00000000000000000e+00 -2.99999999999998002e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 3 0 1 0 -1.07929901096560435e-02 0.00000000000000000e+00 2.99999999999998002e+00 3 1 0 1 -1.08972193002303749e-02 0.00000000000000000e+00 -2.99999999999998002e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 3 1 1 0 -1.08451095743620201e-02 0.00000000000000000e+00 2.99999999999998002e+00 3 2 0 1 -1.09498323867807789e-02 0.00000000000000000e+00 -2.99999999999998002e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 3 2 1 0 -1.07929901096557347e-02 0.00000000000000000e+00 2.99999999999998002e+00 3 3 0 1 -1.09498323868016528e-02 0.00000000000000000e+00 -2.99999999999998002e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +2.99999999999998002e+00 3 3 1 0 -1.08451095743619854e-02 0.00000000000000000e+00 2.99999999999998002e+00 -1 0 0 1 1.00894135784969263e+00 0.00000000000000000e+00 2.99999999999998002e+00 -1 0 1 0 1.00894169999792127e+00 0.00000000000000000e+00 2.99999999999998002e+00 -1 1 0 1 1.00894144250386919e+00 0.00000000000000000e+00 @@ -182,29 +182,29 @@ 3.99999999999995870e+00 0 3 0 1 -3.14824246839651878e-01 0.00000000000000000e+00 3.99999999999995870e+00 0 3 1 0 -3.14795237114488147e-01 0.00000000000000000e+00 3.99999999999995870e+00 1 0 0 1 1.83684663320369701e-01 0.00000000000000000e+00 -3.99999999999995870e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 1 0 1 0 1.83655788559122207e-01 0.00000000000000000e+00 3.99999999999995870e+00 1 1 0 1 1.83684663320369507e-01 0.00000000000000000e+00 -3.99999999999995870e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 1 1 1 0 1.83670524693388154e-01 0.00000000000000000e+00 3.99999999999995870e+00 1 2 0 1 1.83699534418551608e-01 0.00000000000000000e+00 -3.99999999999995870e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 1 2 1 0 1.83655788559122291e-01 0.00000000000000000e+00 3.99999999999995870e+00 1 3 0 1 1.83699534418551358e-01 0.00000000000000000e+00 -3.99999999999995870e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 1 3 1 0 1.83670524693388099e-01 0.00000000000000000e+00 3.99999999999995870e+00 2 0 0 1 7.69521811656496690e-02 0.00000000000000000e+00 -3.99999999999995870e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 2 0 1 0 7.68783055224197126e-02 0.00000000000000000e+00 3.99999999999995870e+00 2 1 0 1 7.69521811656504323e-02 0.00000000000000000e+00 -3.99999999999995870e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 2 1 1 0 7.69157438575157476e-02 0.00000000000000000e+00 3.99999999999995870e+00 2 2 0 1 7.69899742952355470e-02 0.00000000000000000e+00 -3.99999999999995870e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 2 2 1 0 7.68783055224199902e-02 0.00000000000000000e+00 3.99999999999995870e+00 2 3 0 1 7.69899742952364213e-02 0.00000000000000000e+00 -3.99999999999995870e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 2 3 1 0 7.69157438575162472e-02 0.00000000000000000e+00 3.99999999999995870e+00 3 0 0 1 -1.11305441528952824e-02 0.00000000000000000e+00 -3.99999999999995870e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 3 0 1 0 -1.10265824729048768e-02 0.00000000000000000e+00 3.99999999999995870e+00 3 1 0 1 -1.11305441528953847e-02 0.00000000000000000e+00 -3.99999999999995870e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 3 1 1 0 -1.10785497636793594e-02 0.00000000000000000e+00 3.99999999999995870e+00 3 2 0 1 -1.11830055620482389e-02 0.00000000000000000e+00 -3.99999999999995870e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 3 2 1 0 -1.10265824729046339e-02 0.00000000000000000e+00 3.99999999999995870e+00 3 3 0 1 -1.11830055620482979e-02 0.00000000000000000e+00 -3.99999999999995870e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +3.99999999999995870e+00 3 3 1 0 -1.10785497636794253e-02 0.00000000000000000e+00 3.99999999999995870e+00 -1 0 0 1 9.99911694427448872e-01 0.00000000000000000e+00 3.99999999999995870e+00 -1 0 1 0 9.99911696444840126e-01 0.00000000000000000e+00 3.99999999999995870e+00 -1 1 0 1 9.99911545622212516e-01 0.00000000000000000e+00 @@ -222,29 +222,29 @@ 4.99999999999993783e+00 0 3 0 1 -3.15340734741249962e-01 0.00000000000000000e+00 4.99999999999993783e+00 0 3 1 0 -3.15312371270156211e-01 0.00000000000000000e+00 4.99999999999993783e+00 1 0 0 1 1.84375741281435385e-01 0.00000000000000000e+00 -4.99999999999993783e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 1 0 1 0 1.84347510995519659e-01 0.00000000000000000e+00 4.99999999999993783e+00 1 1 0 1 1.84375741281433608e-01 0.00000000000000000e+00 -4.99999999999993783e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 1 1 1 0 1.84361885394739272e-01 0.00000000000000000e+00 4.99999999999993783e+00 1 2 0 1 1.84390248865832024e-01 0.00000000000000000e+00 -4.99999999999993783e+00 1 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 1 2 1 0 1.84347510995519132e-01 0.00000000000000000e+00 4.99999999999993783e+00 1 3 0 1 1.84390248865830192e-01 0.00000000000000000e+00 -4.99999999999993783e+00 1 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 1 3 1 0 1.84361885394734720e-01 0.00000000000000000e+00 4.99999999999993783e+00 2 0 0 1 7.68244190307558611e-02 0.00000000000000000e+00 -4.99999999999993783e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 2 0 1 0 7.67496439574265471e-02 0.00000000000000000e+00 4.99999999999993783e+00 2 1 0 1 7.68244190307574848e-02 0.00000000000000000e+00 -4.99999999999993783e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 2 1 1 0 7.67874889733186211e-02 0.00000000000000000e+00 4.99999999999993783e+00 2 2 0 1 7.68626210445045588e-02 0.00000000000000000e+00 -4.99999999999993783e+00 2 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 2 2 1 0 7.67496439574266165e-02 0.00000000000000000e+00 4.99999999999993783e+00 2 3 0 1 7.68626210445062796e-02 0.00000000000000000e+00 -4.99999999999993783e+00 2 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 2 3 1 0 7.67874889733239918e-02 0.00000000000000000e+00 4.99999999999993783e+00 3 0 0 1 -1.12154524489489673e-02 0.00000000000000000e+00 -4.99999999999993783e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 3 0 1 0 -1.11114547412811803e-02 0.00000000000000000e+00 4.99999999999993783e+00 3 1 0 1 -1.12154524489491668e-02 0.00000000000000000e+00 -4.99999999999993783e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 3 1 1 0 -1.11634381973567311e-02 0.00000000000000000e+00 4.99999999999993783e+00 3 2 0 1 -1.12679303107066017e-02 0.00000000000000000e+00 -4.99999999999993783e+00 3 2 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 3 2 1 0 -1.11114547412812202e-02 0.00000000000000000e+00 4.99999999999993783e+00 3 3 0 1 -1.12679303107068134e-02 0.00000000000000000e+00 -4.99999999999993783e+00 3 3 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999993783e+00 3 3 1 0 -1.11634381973579246e-02 0.00000000000000000e+00 4.99999999999993783e+00 -1 0 0 1 9.98420535233081163e-01 0.00000000000000000e+00 4.99999999999993783e+00 -1 0 1 0 9.98420506861229629e-01 0.00000000000000000e+00 4.99999999999993783e+00 -1 1 0 1 9.98420378072290005e-01 0.00000000000000000e+00 diff --git a/test/data/output_FT_TFI_square/parameters.dat b/test/data/output_FT_TFI_square/parameters.dat index c5621a71..b7bb4411 100644 --- a/test/data/output_FT_TFI_square/parameters.dat +++ b/test/data/output_FT_TFI_square/parameters.dat @@ -36,4 +36,4 @@ outdir = output_FT_TFI_square Lsub = [ 2 , 2 ] skew = 0 -start_datetime = 2023-07-06T10:42:20+09:00 +start_datetime = 2023-07-07T09:21:21+09:00 From 0e10618d10b56a8d7b0ab88d6e0e477d169d75ee Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Thu, 6 Jul 2023 10:12:46 +0900 Subject: [PATCH 15/25] update contractions --- .../en/file_specification/output_format.rst | 8 + .../file_specification/parameter_section.rst | 13 +- .../ja/file_specification/output_format.rst | 7 + .../file_specification/parameter_section.rst | 14 +- misc/contraction/cont.jl | 14 +- misc/contraction/cont.sh | 5 + misc/contraction/cont_density.jl | 446 ++++++++++++++++++ misc/contraction/cont_density.sh | 5 + misc/contraction/cont_mf.jl | 340 +++++++++++++ misc/contraction/cont_mf.sh | 5 + src/iTPS/core/CMakeLists.txt | 12 +- .../core/contract_density_ctm/CMakeLists.txt | 10 + src/iTPS/core/contract_density_ctm/ctm.cpp | 285 +++++++++++ .../core/contract_density_ctm/ctm_1x1.cpp | 78 +++ .../core/contract_density_ctm/ctm_1x2.cpp | 89 ++++ .../core/contract_density_ctm/ctm_1x3.cpp | 101 ++++ .../core/contract_density_ctm/ctm_1x4.cpp | 115 +++++ .../core/contract_density_ctm/ctm_2x1.cpp | 94 ++++ .../core/contract_density_ctm/ctm_2x2.cpp | 97 ++++ .../core/contract_density_ctm/ctm_2x3.cpp | 116 +++++ .../core/contract_density_ctm/ctm_2x4.cpp | 143 ++++++ .../core/contract_density_ctm/ctm_3x1.cpp | 101 ++++ .../core/contract_density_ctm/ctm_3x2.cpp | 116 +++++ .../core/contract_density_ctm/ctm_3x3.cpp | 153 ++++++ .../core/contract_density_ctm/ctm_3x4.cpp | 232 +++++++++ .../core/contract_density_ctm/ctm_4x1.cpp | 115 +++++ .../core/contract_density_ctm/ctm_4x2.cpp | 143 ++++++ .../core/contract_density_ctm/ctm_4x3.cpp | 232 +++++++++ .../core/contract_density_ctm/ctm_4x4.cpp | 232 +++++++++ .../core/contract_density_ctm/instantiate.hpp | 29 ++ .../contract_density_ctm/instantiate_ctm.hpp | 77 +++ ...contract_ctm.hpp => contract_itps_ctm.hpp} | 94 ++-- .../CMakeLists.txt | 4 +- .../correlation.cpp | 56 ++- .../ctm.cpp | 272 +++++------ .../ctm_1x1.cpp | 8 +- .../ctm_1x2.cpp | 8 +- .../ctm_1x3.cpp | 8 +- .../ctm_1x4.cpp | 8 +- .../ctm_2x1.cpp | 8 +- .../ctm_2x2.cpp | 8 +- .../ctm_2x3.cpp | 8 +- .../ctm_2x4.cpp | 8 +- .../ctm_3x1.cpp | 8 +- .../ctm_3x2.cpp | 8 +- .../ctm_3x3.cpp | 8 +- .../ctm_3x4.cpp | 8 +- .../ctm_4x1.cpp | 8 +- .../ctm_4x2.cpp | 8 +- .../ctm_4x3.cpp | 8 +- .../ctm_4x4.cpp | 8 +- .../instantiate.hpp | 18 +- .../instantiate_ctm.hpp | 48 +- .../{contract_mf.hpp => contract_itps_mf.hpp} | 46 +- .../CMakeLists.txt | 4 +- .../correlation.cpp | 58 ++- .../instantiate.hpp | 6 +- .../instantiate_mf.hpp | 14 +- .../{contract_mf => contract_itps_mf}/mf.cpp | 30 +- .../mf_1x1.cpp | 4 +- .../mf_1x2.cpp | 4 +- .../mf_1x3.cpp | 4 +- .../mf_1x4.cpp | 4 +- .../mf_2x1.cpp | 4 +- .../mf_2x2.cpp | 4 +- .../mf_2x3.cpp | 4 +- .../mf_2x4.cpp | 4 +- .../mf_3x1.cpp | 4 +- .../mf_3x2.cpp | 4 +- .../mf_3x3.cpp | 4 +- .../mf_3x4.cpp | 4 +- .../mf_4x1.cpp | 4 +- .../mf_4x2.cpp | 4 +- .../mf_4x3.cpp | 4 +- .../mf_4x4.cpp | 4 +- src/iTPS/correlation_function.cpp | 222 ++++++--- src/iTPS/iTPS.cpp | 33 +- src/iTPS/measure.cpp | 22 +- src/iTPS/multisite_obs.cpp | 41 +- src/iTPS/onesite_obs.cpp | 73 ++- src/iTPS/transfer_matrix.cpp | 189 ++++++-- src/iTPS/twosite_obs.cpp | 309 ++++++------ test/data/FT_TFI_square.toml | 4 + .../output_FT_TFI_square/FT_TFI_square.toml | 4 + .../output_FT_TFI_square/FT_correlation.dat | 302 ++++++++++++ .../FT_correlation_length.dat | 28 ++ test/data/output_FT_TFI_square/parameters.dat | 2 +- 87 files changed, 4706 insertions(+), 792 deletions(-) create mode 100644 misc/contraction/cont.sh create mode 100644 misc/contraction/cont_density.jl create mode 100644 misc/contraction/cont_density.sh create mode 100644 misc/contraction/cont_mf.jl create mode 100644 misc/contraction/cont_mf.sh create mode 100644 src/iTPS/core/contract_density_ctm/CMakeLists.txt create mode 100644 src/iTPS/core/contract_density_ctm/ctm.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_1x1.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_1x2.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_1x3.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_1x4.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_2x1.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_2x2.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_2x3.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_2x4.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_3x1.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_3x2.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_3x3.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_3x4.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_4x1.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_4x2.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_4x3.cpp create mode 100644 src/iTPS/core/contract_density_ctm/ctm_4x4.cpp create mode 100644 src/iTPS/core/contract_density_ctm/instantiate.hpp create mode 100644 src/iTPS/core/contract_density_ctm/instantiate_ctm.hpp rename src/iTPS/core/{contract_ctm.hpp => contract_itps_ctm.hpp} (58%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/CMakeLists.txt (60%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/correlation.cpp (72%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm.cpp (77%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_1x1.cpp (94%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_1x2.cpp (95%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_1x3.cpp (96%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_1x4.cpp (97%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_2x1.cpp (95%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_2x2.cpp (96%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_2x3.cpp (97%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_2x4.cpp (98%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_3x1.cpp (96%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_3x2.cpp (97%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_3x3.cpp (98%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_3x4.cpp (99%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_4x1.cpp (97%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_4x2.cpp (98%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_4x3.cpp (99%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/ctm_4x4.cpp (99%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/instantiate.hpp (58%) rename src/iTPS/core/{contract_ctm => contract_itps_ctm}/instantiate_ctm.hpp (61%) rename src/iTPS/core/{contract_mf.hpp => contract_itps_mf.hpp} (67%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/CMakeLists.txt (60%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/correlation.cpp (55%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/instantiate.hpp (92%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/instantiate_mf.hpp (85%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf.cpp (88%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_1x1.cpp (95%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_1x2.cpp (96%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_1x3.cpp (96%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_1x4.cpp (97%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_2x1.cpp (96%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_2x2.cpp (97%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_2x3.cpp (97%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_2x4.cpp (98%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_3x1.cpp (96%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_3x2.cpp (97%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_3x3.cpp (98%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_3x4.cpp (99%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_4x1.cpp (97%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_4x2.cpp (98%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_4x3.cpp (99%) rename src/iTPS/core/{contract_mf => contract_itps_mf}/mf_4x4.cpp (99%) create mode 100644 test/data/output_FT_TFI_square/FT_correlation.dat create mode 100644 test/data/output_FT_TFI_square/FT_correlation_length.dat diff --git a/docs/sphinx/en/file_specification/output_format.rst b/docs/sphinx/en/file_specification/output_format.rst index c938beae..b2c2489c 100644 --- a/docs/sphinx/en/file_specification/output_format.rst +++ b/docs/sphinx/en/file_specification/output_format.rst @@ -479,3 +479,11 @@ Example:: 2.00000000000000039e-01 1 1 1.63323696507474692e-01 6.12281023136305169e+00 6.12281023136305169e+00 7.83104916294462416e+00 ... Skipped ... 4.99999999999993783e+00 1 1 4.61585992965019176e-01 2.16644355600232430e+00 2.16644355600232430e+00 2.29497956495965427e+00 + + +For finite temperature calculation mode +======================================== + +The formats of the files are the same as those in the real time evolution mode. +The only difference is that the file name starts with ``FT_`` instead of ``TE_``, and the first column is the inverse temperature :math:`\beta = 1/T` instead of the time :math:`t`. + diff --git a/docs/sphinx/en/file_specification/parameter_section.rst b/docs/sphinx/en/file_specification/parameter_section.rst index 0729af03..9da3c8b7 100644 --- a/docs/sphinx/en/file_specification/parameter_section.rst +++ b/docs/sphinx/en/file_specification/parameter_section.rst @@ -29,12 +29,17 @@ General parameters for ``tenes``. - ``"ground state"`` - Search for the ground state of the Hamiltonian - - ``tenes_std`` calculates the imaginary time evolution operator :math:`e^{-\tau H}` from the Hamiltonian + - ``tenes_std`` calculates the imaginary time evolution operator :math:`U(\tau) = e^{-\tau H}` from the Hamiltonian :math:`H` - ``"time evolution"`` - - Calculate the time evolution from the initial state - - ``tenes_std`` calculates the time evolution operator :math:`e^{-it H}` from the Hamiltonian + - Calculate the time evolution of the observables from the initial state + - ``tenes_std`` calculates the time evolution operator :math:`U(t) = e^{-it H}` from the Hamiltonian :math:`H` + + - ``"finite temperature"`` + + - Calculate the finite temperature expectation values of the observables + - ``tenes_std`` calculates the imaginary time evolution operator :math:`U(\tau) = e^{-\tau H}` from the Hamiltonian :math:`H` - ``is_real`` @@ -93,6 +98,8 @@ Parameters in the simple update procedure. - ``tenes_std`` uses it to calculate the imaginary time evolution operator :math:`e^{-\tau H}` from the Hamiltonian - ``tenes`` uses it to calculate the time of each measurement + - For finite temperature calculation, note that the inverse temperature increase :math:`2\tau` at a step because :math:`\rho(\beta + 2\tau) = U(\tau)\rho(\beta)\bar{U}(\tau)` + - When a list is specified, the time step can be changed for each group of time evolution operators - ``num_step`` diff --git a/docs/sphinx/ja/file_specification/output_format.rst b/docs/sphinx/ja/file_specification/output_format.rst index 57c00397..3116276f 100644 --- a/docs/sphinx/ja/file_specification/output_format.rst +++ b/docs/sphinx/ja/file_specification/output_format.rst @@ -480,3 +480,10 @@ multisite 演算子の期待値が出力されます。 2.00000000000000039e-01 1 1 1.63323696507474692e-01 6.12281023136305169e+00 6.12281023136305169e+00 7.83104916294462416e+00 ... Skipped ... 4.99999999999993783e+00 1 1 4.61585992965019176e-01 2.16644355600232430e+00 2.16644355600232430e+00 2.29497956495965427e+00 + + +有限温度計算モード +==================== + +実時間発展計算モードと同様のファイルが出力されます。 +ファイル名の先頭が ``TE_`` のかわりに ``FT_`` になっていることと、1列目が時間 :math:`t` ではなく逆温度 :math:`\beta = 1/T` になっていることが異なります。 diff --git a/docs/sphinx/ja/file_specification/parameter_section.rst b/docs/sphinx/ja/file_specification/parameter_section.rst index 9b13ca4c..40479993 100644 --- a/docs/sphinx/ja/file_specification/parameter_section.rst +++ b/docs/sphinx/ja/file_specification/parameter_section.rst @@ -30,12 +30,17 @@ - ``"ground state"`` - 基底状態計算 - - ``tenes_std`` は虚時間発展演算子を計算します + - ``tenes_std`` は虚時間発展演算子 :math:`U(\tau) = \exp(-\tau \mathcal{H})` を計算します - ``"time evolution"`` - 実時間発展計算 - - ``tenes_std`` は実時間発展演算子を計算します + - ``tenes_std`` は実時間発展演算子 :math:`U(t) = \exp(-it \mathcal{H})` を計算します + + - ``"finite temperature"`` + + - 有限温度計算 + - ``tenes_std`` は虚時間発展演算子 :math:`U(\tau) = \exp(-\tau \mathcal{H})` を計算します - ``is_real`` @@ -93,7 +98,10 @@ simple update に関するパラメータ - (虚)時間発展演算子における(虚)時間刻み :math:`\tau` を指定します - ``tenes_std`` では時間発展演算子を計算するために用いられます - - ``tenes`` では各ステップでの経過時間を求めるために用いられます + - ``tenes`` では各ステップでの経過時間・逆温度を求めるために用いられます + + - For finite temperature calculation, note that the inverse temperature increase :math:`2\tau` at a step because :math:`\rho(\beta + 2\tau) = U(\tau)\rho(\beta)\bar{U}(\tau)` + - 有限温度計算の場合、 :math:`\rho(\beta + 2\tau) = U(\tau)\rho(\beta)\bar{U}(\tau)` なので、 ステップごとに逆温度は :math:`2\tau` だけ増加することに注意してください。 - リストを指定すると、時間発展演算子のグループごとに刻み幅を変えることができます diff --git a/misc/contraction/cont.jl b/misc/contraction/cont.jl index 75f6189a..da07f4b7 100644 --- a/misc/contraction/cont.jl +++ b/misc/contraction/cont.jl @@ -336,13 +336,13 @@ function dump_fn_declare(io::IO, tensors::Tensors; lang::AbstractString="cpp", p println(io, "typename tensor::value_type") println(io, "Contract_$(tensors.nrow)x$(tensors.ncol)(") if pass_as_vector - println(io, " std::vector &C,") - println(io, " std::vector &eTt,") - println(io, " std::vector &eTr,") - println(io, " std::vector &eTb,") - println(io, " std::vector &eTl,") - println(io, " std::vector> &Tn,") - println(io, " std::vector> &op") + println(io, " const std::vector &C,") + println(io, " const std::vector &eTt,") + println(io, " const std::vector &eTr,") + println(io, " const std::vector &eTb,") + println(io, " const std::vector &eTl,") + println(io, " const std::vector> &Tn,") + println(io, " const std::vector> &op") else args = String[] for T in iter diff --git a/misc/contraction/cont.sh b/misc/contraction/cont.sh new file mode 100644 index 00000000..a43c0094 --- /dev/null +++ b/misc/contraction/cont.sh @@ -0,0 +1,5 @@ +for nrow in 1 2 3; do + for ncol in 1 2 3; do + julia ./cont.jl --output=${nrow}_${ncol}.dat --pass_as_vector --tdt_path="./tdt.py" ${nrow} ${ncol} + done +done diff --git a/misc/contraction/cont_density.jl b/misc/contraction/cont_density.jl new file mode 100644 index 00000000..eb0ee666 --- /dev/null +++ b/misc/contraction/cont_density.jl @@ -0,0 +1,446 @@ +# /* TeNeS - Massively parallel tensor network solver / +# / Copyright (C) 2019- The University of Tokyo */ +# +# /* This program is free software: you can redistribute it and/or modify / +# / it under the terms of the GNU General Public License as published by / +# / the Free Software Foundation, either version 3 of the License, or / +# / (at your option) any later version. */ +# +# /* This program is distributed in the hope that it will be useful, / +# / but WITHOUT ANY WARRANTY; without even the implied warranty of / +# / MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +# / GNU General Public License for more details. */ +# +# /* You should have received a copy of the GNU General Public License / +# / along with this program. If not, see http://www.gnu.org/licenses/. */ + +using DocOpt + +mutable struct Tensor + name :: String + bonds :: Vector{String} +end + +mutable struct Tensors + corners :: Vector{Tensor} + edges :: Vector{Tensor} + centers :: Vector{Tensor} + ops :: Vector{Tensor} + nrow :: Int + ncol :: Int + function Tensors(nrow::Integer, ncol::Integer; orig::Integer=0, pass_as_vector::Bool=false) + corners = gen_corners(orig=orig, pass_as_vector=pass_as_vector) + edges = gen_edges(nrow, ncol, orig=orig, pass_as_vector=pass_as_vector) + centers = gen_centers(nrow, ncol, orig=orig, pass_as_vector=pass_as_vector) + ops = gen_ops(nrow, ncol, orig=orig, pass_as_vector=pass_as_vector) + tns = new(corners, edges, centers, ops, nrow, ncol) + contract!(tns) + check_bonds(tns) + return tns + end +end + +function gen_corners(; orig::Integer=0, pass_as_vector::Bool=false) + corners = Tensor[] + if pass_as_vector + for i in 0:3 + index = orig+i + push!(corners, Tensor("*(C[$(index)])", ["C_$(index)_0", "C_$(index)_1"])) + end + else + push!(corners, Tensor("C_tl", ["C_tl_b", "C_tl_r"])) + push!(corners, Tensor("C_tr", ["C_tr_l", "C_tr_b"])) + push!(corners, Tensor("C_br", ["C_br_t", "C_br_l"])) + push!(corners, Tensor("C_bl", ["C_bl_r", "C_bl_t"])) + end + return corners +end + +function gen_edges(nrow, ncol; orig=0, pass_as_vector::Bool=false) + edges = Tensor[] + for icol in 1:ncol + i = orig+icol-1 + name = pass_as_vector ? "*(eTt[$(i)])" : "eTt_$(i)" + push!(edges, Tensor(name, ["$(name)_$dir" for dir in ("l", "r", "b")])) + end + for irow in 1:nrow + i = orig+irow-1 + name = pass_as_vector ? "*(eTr[$(i)])" : "eTr_$(i)" + push!(edges, Tensor(name, ["$(name)_$dir" for dir in ("t", "b", "l")])) + end + for icol in reverse(1:ncol) + i = orig+icol-1 + name = pass_as_vector ? "*(eTb[$(i)])" : "eTb_$(i)" + push!(edges, Tensor(name, ["$(name)_$dir" for dir in ("r", "l", "t")])) + end + for irow in reverse(1:nrow) + i = orig+irow-1 + name = pass_as_vector ? "*(eTl[$(i)])" : "eTl_$(i)" + push!(edges, Tensor(name, ["$(name)_$dir" for dir in ("b", "t", "r")])) + end + return edges +end + +function gen_centers(nrow, ncol; orig::Integer=0, pass_as_vector::Bool=false) + centers = Tensor[] + for irow in 1:nrow + irow = orig+irow-1 + for icol in 1:ncol + icol = orig+icol-1 + bond_base = "Tn_$(irow)_$(icol)" + name = pass_as_vector ? "*(Tn[$(irow)][$(icol)])" : "Tn_$(irow)_$(icol)" + bonds = ["$(bond_base)_$dir" for dir in ("l", "t", "r", "b")] + push!(bonds, "p_$(irow)_$(icol)") + push!(bonds, "Cp_$(irow)_$(icol)") + push!(centers, Tensor(name, bonds)) + end + end + return centers +end + +function gen_ops(nrow, ncol; orig=0, pass_as_vector::Bool=false) + ops = Tensor[] + for irow in 1:nrow + irow = orig + irow -1 + for icol in 1:ncol + icol = orig + icol -1 + name = pass_as_vector ? "*(op[$(irow)][$(icol)])" : "op_$(irow)_$(icol)" + push!(ops, Tensor(name, ["p_$(irow)_$icol", "Cp_$(irow)_$icol"] )) + end + end + return ops +end + +function contract!(tensors::Tensors) + nrow = tensors.nrow + ncol = tensors.ncol + corners = tensors.corners + edges = tensors.edges + centers = tensors.centers + ops = tensors.ops + + function coord2index(irow, icol) + return icol + ncol*(irow-1) + end + + # contract corners + corners[1].bonds[1] = edges[end].bonds[2] + corners[1].bonds[2] = edges[1].bonds[1] + + corners[2].bonds[1] = edges[ncol ].bonds[2] + corners[2].bonds[2] = edges[ncol+1].bonds[1] + + corners[3].bonds[1] = edges[ncol+nrow ].bonds[2] + corners[3].bonds[2] = edges[ncol+nrow+1].bonds[1] + + corners[4].bonds[1] = edges[2ncol+nrow ].bonds[2] + corners[4].bonds[2] = edges[2ncol+nrow+1].bonds[1] + + # contract top/bottom edges + for icol in 1:ncol + ie = icol + ie2 = icol + ncol+nrow + if icol < ncol + edges[ie].bonds[2] = edges[ie+1].bonds[1] + edges[ie2].bonds[2] = edges[ie2+1].bonds[1] + end + edges[ie].bonds[3] = centers[ie].bonds[2] + edges[ie2].bonds[3] = centers[coord2index(nrow, ncol-icol+1)].bonds[4] + end + + # contract right/left edges + for irow in 1:nrow + ie = irow+ncol + ie2 = ie + ncol+nrow + if irow < nrow + edges[ie].bonds[2] = edges[ie+1].bonds[1] + edges[ie2].bonds[2] = edges[ie2+1].bonds[1] + end + edges[ie].bonds[3] = centers[coord2index(irow, ncol)].bonds[3] + edges[ie2].bonds[3] = centers[coord2index(nrow-irow+1, 1)].bonds[1] + end + + # contract centers + for icol in 1:ncol + for irow in 1:nrow + index = coord2index(irow, icol) + if icol > 1 + centers[index].bonds[1] = centers[coord2index(irow, icol-1)].bonds[3] + end + if irow > 1 + centers[index].bonds[2] = centers[coord2index(irow-1, icol)].bonds[4] + end + if icol < ncol + centers[index].bonds[3] = centers[coord2index(irow, icol+1)].bonds[1] + end + if irow < nrow + centers[index].bonds[4] = centers[coord2index(irow+1, icol)].bonds[2] + end + end + end +end + +function phys_bonds(tensors::Tensors) + ret = Set{String}() + for op in tensors.ops + push!(ret, op.bonds[1]) + push!(ret, op.bonds[2]) + end + return ret +end + +function virtual_bonds(tensors::Tensors) + ret = Set{String}() + for c in tensors.centers + for b in c.bonds + push!(ret, b) + end + end + return ret +end + +function ctm_bonds(tensors::Tensors) + ret = Set{String}() + for e in tensors.edges + push!(ret, e.bonds[1]) + push!(ret, e.bonds[2]) + end + return ret +end + +function check_bonds(tensors::Tensors) + counts = Dict{String, Int}() + for T in Iterators.flatten((tensors.corners, tensors.edges, tensors.centers, tensors.ops)) + for b in T.bonds + c = get(counts, b, 0) + if c>1 + push!(fails, b) + end + counts[b] = c+1 + end + end + OK = true + for (b,c) in counts + if c != 2 + println("FAILED: bond $(b) appears $(c) time(s)") + OK = false + end + if !OK + dump_tensors(stdout, tensors) + error("some bonds have trouble") + end + end +end + + +import Base: print +function print(io::IO, tensor::Tensor) + print(io, "tensor ", tensor.name, " ") + for b in tensor.bonds + print(io, " ", b) + end +end + +function dump(tensors::Tensors; args...) + dump(stdout, tensors; args...) +end + +function dump_tensors(io::IO, tensors::Tensors) + for t in tensors.corners + println(io, t) + end + println(io) + + for t in tensors.edges + println(io, t) + end + println(io) + + for t in tensors.centers + println(io, t) + end + println(io) + + for t in tensors.ops + println(io, t) + end + println(io) +end + +function dump(io::IO, tensors::Tensors; pdim::Integer=2, vdim::Integer=4, Cdim::Integer=vdim^2, lang::AbstractString="cpp") + dump_tensors(io, tensors) + + print(io, "bond_dim ", pdim) + for b in phys_bonds(tensors) + print(io, " ", b) + end + println(io) + + print(io, "bond_dim ", vdim) + for b in virtual_bonds(tensors) + print(io, " ", b) + end + println(io) + + print(io, "bond_dim ", Cdim) + for b in ctm_bonds(tensors) + print(io, " ", b) + end + println(io) + println(io) + + if lang == "cpp" + indent = 2 + style = "mptensor" + else + indent = 4 + style = "numpy" + end + + println(io, "style ", style) + println(io, "indent ", indent) +end + +function dump_fn_declare(io::IO, tensors::Tensors; lang::AbstractString="cpp", pass_as_vector::Bool=false) + + iter = Iterators.flatten((tensors.corners, tensors.edges, tensors.centers, tensors.ops)) + + if lang=="cpp" + println(io, "template ") + println(io, "typename tensor::value_type") + println(io, "Contract_density_$(tensors.nrow)x$(tensors.ncol)(") + if pass_as_vector + println(io, " const std::vector &C,") + println(io, " const std::vector &eTt,") + println(io, " const std::vector &eTr,") + println(io, " const std::vector &eTb,") + println(io, " const std::vector &eTl,") + println(io, " const std::vector> &Tn,") + println(io, " const std::vector> &op") + else + args = String[] + for T in iter + push!(args, " const tensor &$(T.name)") + end + println(io, join(args, ",\n")) + end + println(io, ")") + else + println(io, "def Contract_density_$(tensors.nrow)x$(tensors.ncol)(") + if pass_as_vector + println(io, " C: List[np.ndarray],") + println(io, " eTt: List[np.ndarray],") + println(io, " eTr: List[np.ndarray],") + println(io, " eTb: List[np.ndarray],") + println(io, " eTl: List[np.ndarray],") + println(io, " Tn: List[List[np.ndarray]],") + println(io, " op: List[List[np.ndarray]]") + else + args = String[] + for T in iter + push!(args, " $(T.name): np.ndarray") + end + println(io, join(args, ",\n")) + end + println(io, ") -> np.ndarray:") + end +end + +if abspath(PROGRAM_FILE) == abspath(@__FILE__) + doc = """ + + Usage: + cont.jl [--output=] [--pdim=] [--vdim=] [--cdim=] [--lang=] [--tdt_path=] [--pass_as_vector] + + Options: + --output= filename to be saved [default: STDOUT] + --pdim= dim. of physical bonds [default: 2] + --vdim= dim. of virtual bonds [default: 4] + --cdim= dim. of ctm bonds [default: vdim^2] + --lang= cpp or python [default: cpp] + --tdt_path= path to tdt.py (if empty, don't run tdt.py) [default: ""] + --pass_as_vector generate API as a function of vectors + """ + + ARGS_ORIG = ARGS[:] + args = docopt(doc, version=v"1.0.0") + output = args["--output"] + io = output=="STDOUT" ? stdout : open(output, "w") + pdim = parse(Int, args["--pdim"]) + vdim = parse(Int, args["--vdim"]) + cdim = args["--cdim"] == "vdim^2" ? vdim^2 : parse(Int, args["--cdim"]) + lang = args["--lang"] + tdt_path = args["--tdt_path"] + pass_as_vector = args["--pass_as_vector"] + + tensors = Tensors(parse(Int, args[""]), parse(Int, args[""]), orig=0, pass_as_vector=pass_as_vector) + + println(io, """ + # This file is generated by $(PROGRAM_FILE) $(join(ARGS_ORIG, " ")) + """) + + dump(io, tensors, pdim=pdim, vdim=vdim, Cdim=cdim, lang=lang) + println(io) + println(io) + dump_fn_declare(io, tensors, lang=lang, pass_as_vector=pass_as_vector) + + if io != stdout && length(tdt_path) > 0 + close(io) + res = read(`python $(tdt_path) $(output)`, String) + open(output, "a") do io + if lang == "cpp" + println(io, "{") + indent = " " + write_return = false + + if pass_as_vector + println(io, "#ifndef NDEBUG") + println(io, " const size_t nrow = Tn.size();") + println(io, " const size_t ncol = Tn[0].size();") + println(io, " for(const auto& r: Tn) assert(r.size() == ncol);") + println(io, " assert(C.size() == 4);") + println(io, " assert(eTt.size() == ncol);") + println(io, " assert(eTr.size() == nrow);") + println(io, " assert(eTb.size() == ncol);") + println(io, " assert(eTl.size() == nrow);") + println(io, " assert(op.size() == nrow);") + println(io, " for(const auto& r: op) assert(r.size() == ncol);") + println(io, "#endif") + end + else + indent = " " + + if pass_as_vector + println(io, " nrow = len(Tn)") + println(io, " ncol = len(Tn[0])") + println(io, " for r in Tn:") + println(io, " assert(len(r) == ncol)") + println(io, " assert(len(C) == 4)") + println(io, " assert(len(eTt) == ncol)") + println(io, " assert(len(eTr) == nrow)") + println(io, " assert(len(eTb) == ncol)") + println(io, " assert(len(eTl) == nrow)") + println(io, " assert(len(op) == nrow") + println(io, " for r in op:") + println(io, " assert(len(r) == ncol)") + end + end + for line in split(res, "\n") + if length(line) == 0 + continue + end + if lang == "cpp" && !write_return + if ! startswith(line, "//") + write_return = true + println(io, indent, "return") + end + end + println(io, indent, line) + end + if lang == "cpp" + println(io, indent, ";") + println(io, "}") + end + end + end +end diff --git a/misc/contraction/cont_density.sh b/misc/contraction/cont_density.sh new file mode 100644 index 00000000..a5c4d1d3 --- /dev/null +++ b/misc/contraction/cont_density.sh @@ -0,0 +1,5 @@ +for nrow in 1 2 3 4; do + for ncol in 1 2 3 4; do + julia ./cont_density.jl --output=${nrow}_${ncol}_den.dat --pass_as_vector --tdt_path="./tdt.py" ${nrow} ${ncol} + done +done diff --git a/misc/contraction/cont_mf.jl b/misc/contraction/cont_mf.jl new file mode 100644 index 00000000..781fa0ea --- /dev/null +++ b/misc/contraction/cont_mf.jl @@ -0,0 +1,340 @@ +# /* TeNeS - Massively parallel tensor network solver / +# / Copyright (C) 2019- The University of Tokyo */ +# +# /* This program is free software: you can redistribute it and/or modify / +# / it under the terms of the GNU General Public License as published by / +# / the Free Software Foundation, either version 3 of the License, or / +# / (at your option) any later version. */ +# +# /* This program is distributed in the hope that it will be useful, / +# / but WITHOUT ANY WARRANTY; without even the implied warranty of / +# / MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +# / GNU General Public License for more details. */ +# +# /* You should have received a copy of the GNU General Public License / +# / along with this program. If not, see http://www.gnu.org/licenses/. */ + +using DocOpt + +mutable struct Tensor + name :: String + bonds :: Vector{String} +end + +mutable struct Tensors + centers :: Vector{Tensor} + Ccenters :: Vector{Tensor} + ops :: Vector{Tensor} + nrow :: Int + ncol :: Int + function Tensors(nrow::Integer, ncol::Integer; orig::Integer=0, pass_as_vector::Bool=false) + centers = gen_centers(nrow, ncol; orig, pass_as_vector) + Ccenters = gen_centers(nrow, ncol; conj=true, orig, pass_as_vector) + ops = gen_ops(nrow, ncol, orig=orig, pass_as_vector=pass_as_vector) + tns = new(centers, Ccenters, ops, nrow, ncol) + contract!(tns) + check_bonds(tns) + return tns + end +end + +function gen_centers(nrow, ncol; conj::Bool=false, orig::Integer=0, pass_as_vector::Bool=false) + centers = Tensor[] + for irow in 1:nrow + irow = orig+irow-1 + for icol in 1:ncol + icol = orig+icol-1 + bond_base = "Tn_$(irow)_$(icol)" + if conj + name = pass_as_vector ? "conj(*(Tn[$(irow)][$(icol)]))" : "conj(Tn_$(irow)_$(icol))" + bond_prefix = "C" + else + name = pass_as_vector ? "*(Tn[$(irow)][$(icol)])" : "Tn_$(irow)_$(icol)" + bond_prefix = "" + end + bonds = ["$(bond_prefix)$(bond_base)_$dir" for dir in ("l", "t", "r", "b")] + push!(bonds, "$(bond_prefix)p_$(irow)_$(icol)") + push!(centers, Tensor(name, bonds)) + end + end + return centers +end + +function gen_ops(nrow, ncol; orig=0, pass_as_vector::Bool=false) + ops = Tensor[] + for irow in 1:nrow + irow = orig + irow -1 + for icol in 1:ncol + icol = orig + icol -1 + name = pass_as_vector ? "*(op[$(irow)][$(icol)])" : "op_$(irow)_$(icol)" + push!(ops, Tensor(name, ["p_$(irow)_$icol", "Cp_$(irow)_$icol"] )) + end + end + return ops +end + +function contract!(tensors::Tensors) + nrow = tensors.nrow + ncol = tensors.ncol + centers = tensors.centers + Ccenters = tensors.Ccenters + ops = tensors.ops + + function coord2index(irow, icol) + return icol + ncol*(irow-1) + end + + # contract centers + for icol in 1:ncol + for irow in 1:nrow + index = coord2index(irow, icol) + if icol == 1 + Ccenters[index].bonds[1] = centers[index].bonds[1] + else + centers[index].bonds[1] = centers[coord2index(irow, icol-1)].bonds[3] + Ccenters[index].bonds[1] = Ccenters[coord2index(irow, icol-1)].bonds[3] + end + if icol == ncol + Ccenters[index].bonds[3] = centers[index].bonds[3] + end + + if irow == 1 + Ccenters[index].bonds[2] = centers[index].bonds[2] + else + centers[index].bonds[2] = centers[coord2index(irow-1, icol)].bonds[4] + Ccenters[index].bonds[2] = Ccenters[coord2index(irow-1, icol)].bonds[4] + end + if irow == nrow + Ccenters[index].bonds[4] = centers[index].bonds[4] + end + end + end +end + +function phys_bonds(tensors::Tensors) + ret = Set{String}() + for op in tensors.ops + push!(ret, op.bonds[1]) + push!(ret, op.bonds[2]) + end + return ret +end + +function virtual_bonds(tensors::Tensors) + ret = Set{String}() + for c in tensors.centers + for b in c.bonds + push!(ret, b) + end + end + for c in tensors.Ccenters + for b in c.bonds + push!(ret, b) + end + end + return ret +end + +function check_bonds(tensors::Tensors) + counts = Dict{String, Int}() + for T in Iterators.flatten((tensors.centers, tensors.Ccenters, tensors.ops)) + for b in T.bonds + c = get(counts, b, 0) + if c>1 + push!(fails, b) + end + counts[b] = c+1 + end + end + OK = true + for (b,c) in counts + if c != 2 + println("FAILED: bond $(b) appears $(c) time(s)") + OK = false + end + end + if !OK + dump_tensors(stdout, tensors) + error("some bonds have trouble") + end +end + + +import Base: print +function print(io::IO, tensor::Tensor) + print(io, "tensor ", tensor.name, " ") + for b in tensor.bonds + print(io, " ", b) + end +end + +function dump(tensors::Tensors; args...) + dump(stdout, tensors; args...) +end + +function dump_tensors(io::IO, tensors::Tensors) + for t in tensors.centers + println(io, t) + end + println(io) + + for t in tensors.Ccenters + println(io, t) + end + println(io) + + for t in tensors.ops + println(io, t) + end + println(io) +end + +function dump(io::IO, tensors::Tensors; pdim::Integer=2, vdim::Integer=4, lang::AbstractString="cpp") + dump_tensors(io, tensors) + + print(io, "bond_dim ", pdim) + for b in phys_bonds(tensors) + print(io, " ", b) + end + println(io) + + print(io, "bond_dim ", vdim) + for b in virtual_bonds(tensors) + print(io, " ", b) + end + println(io) + println(io) + + if lang == "cpp" + indent = 2 + style = "mptensor" + else + indent = 4 + style = "numpy" + end + + println(io, "style ", style) + println(io, "indent ", indent) +end + +function dump_fn_declare(io::IO, tensors::Tensors; lang::AbstractString="cpp", pass_as_vector::Bool=false) + + iter = Iterators.flatten((tensors.centers, tensors.ops)) + + if lang=="cpp" + println(io, "template ") + println(io, "typename tensor::value_type") + println(io, "Contract_MF_$(tensors.nrow)x$(tensors.ncol)(") + if pass_as_vector + println(io, " const std::vector> &Tn,") + println(io, " const std::vector> &op") + else + args = String[] + for T in iter + push!(args, " const tensor &$(T.name)") + end + println(io, join(args, ",\n")) + end + println(io, ")") + else + println(io, "def Contract_MF_$(tensors.nrow)x$(tensors.ncol)(") + if pass_as_vector + println(io, " Tn: List[List[np.ndarray]],") + println(io, " op: List[List[np.ndarray]]") + else + args = String[] + for T in iter + push!(args, " $(T.name): np.ndarray") + end + println(io, join(args, ",\n")) + end + println(io, ") -> np.ndarray:") + end +end + +if abspath(PROGRAM_FILE) == abspath(@__FILE__) + doc = """ + + Usage: + cont.jl [--output=] [--pdim=] [--vdim=] [--lang=] [--tdt_path=] [--pass_as_vector] + + Options: + --output= filename to be saved [default: STDOUT] + --pdim= dim. of physical bonds [default: 2] + --vdim= dim. of virtual bonds [default: 4] + --lang= cpp or python [default: cpp] + --tdt_path= path to tdt.py (if empty, don't run tdt.py) [default: ""] + --pass_as_vector generate API as a function of vectors + """ + + ARGS_ORIG = ARGS[:] + args = docopt(doc, version=v"1.0.0") + output = args["--output"] + io = output=="STDOUT" ? stdout : open(output, "w") + pdim = parse(Int, args["--pdim"]) + vdim = parse(Int, args["--vdim"]) + lang = args["--lang"] + tdt_path = args["--tdt_path"] + pass_as_vector = args["--pass_as_vector"] + + tensors = Tensors(parse(Int, args[""]), parse(Int, args[""]), orig=0, pass_as_vector=pass_as_vector) + + println(io, """ + # This file is generated by $(PROGRAM_FILE) $(join(ARGS_ORIG, " ")) + """) + + dump(io, tensors, pdim=pdim, vdim=vdim, lang=lang) + println(io) + println(io) + dump_fn_declare(io, tensors, lang=lang, pass_as_vector=pass_as_vector) + + if io != stdout && length(tdt_path) > 0 + close(io) + res = read(`python $(tdt_path) $(output)`, String) + open(output, "a") do io + if lang == "cpp" + println(io, "{") + indent = " " + write_return = false + + if pass_as_vector + println(io, "#ifndef NDEBUG") + println(io, " const size_t nrow = Tn.size();") + println(io, " const size_t ncol = Tn[0].size();") + println(io, " for(const auto& r: Tn) assert(r.size() == ncol);") + println(io, " assert(op.size() == nrow);") + println(io, " for(const auto& r: op) assert(r.size() == ncol);") + println(io, "#endif") + end + else + indent = " " + + if pass_as_vector + println(io, " nrow = len(Tn)") + println(io, " ncol = len(Tn[0])") + println(io, " for r in Tn:") + println(io, " assert(len(r) == ncol)") + println(io, " assert(len(op) == nrow") + println(io, " for r in op:") + println(io, " assert(len(r) == ncol)") + end + end + for line in split(res, "\n") + if length(line) == 0 + continue + end + if lang == "cpp" && !write_return + if ! startswith(line, "//") + write_return = true + println(io, indent, "return") + end + end + println(io, indent, line) + end + if lang == "cpp" + println(io, indent, ";") + println(io, "}") + end + end + end +end diff --git a/misc/contraction/cont_mf.sh b/misc/contraction/cont_mf.sh new file mode 100644 index 00000000..d3e22d1e --- /dev/null +++ b/misc/contraction/cont_mf.sh @@ -0,0 +1,5 @@ +for nrow in 1 2 3 4; do + for ncol in 1 2 3 4; do + julia ./cont_mf.jl --output=${nrow}_${ncol}_mf.dat --vdim=8 --pass_as_vector --tdt_path="./tdt.py" ${nrow} ${ncol} + done +done diff --git a/src/iTPS/core/CMakeLists.txt b/src/iTPS/core/CMakeLists.txt index 4e42d4b7..c31b036a 100644 --- a/src/iTPS/core/CMakeLists.txt +++ b/src/iTPS/core/CMakeLists.txt @@ -1,5 +1,9 @@ -add_subdirectory(contract_ctm) -add_subdirectory(contract_mf) +add_subdirectory(contract_itps_ctm) +add_subdirectory(contract_itps_mf) +add_subdirectory(contract_density_ctm) -add_library(iTPS_core STATIC ctm.cpp ctm_single.cpp simple_update.cpp full_update.cpp local_gauge.cpp) -target_link_libraries(iTPS_core PUBLIC iTPS_contract_ctm iTPS_contract_mf) +add_library(iTPS_core STATIC ctm.cpp ctm_single.cpp simple_update.cpp + full_update.cpp local_gauge.cpp) +target_link_libraries( + iTPS_core PUBLIC iTPS_contract_itps_ctm iTPS_contract_itps_mf + iTPS_contract_density_ctm) diff --git a/src/iTPS/core/contract_density_ctm/CMakeLists.txt b/src/iTPS/core/contract_density_ctm/CMakeLists.txt new file mode 100644 index 00000000..0a528fe2 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/CMakeLists.txt @@ -0,0 +1,10 @@ +unset(src_files) +set(src_files ctm.cpp correlation.cpp) +foreach(row 1 2 3 4) + foreach(col 1 2 3 4) + list(APPEND src_files ctm_${row}x${col}.cpp) + endforeach() +endforeach() + +add_library(iTPS_contract_density_ctm STATIC ${src_files}) +target_link_libraries(iTPS_contract_density_ctm PUBLIC tensor) diff --git a/src/iTPS/core/contract_density_ctm/ctm.cpp b/src/iTPS/core/contract_density_ctm/ctm.cpp new file mode 100644 index 00000000..45f11b8e --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm.cpp @@ -0,0 +1,285 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +/* + * + Basic routines independent on unit cell structures. + Using mptensor libraries + (Test version) + 2015 Dec. Tsuyoshi Okubo +*/ + +#include "../contract_density_ctm.hpp" + +#include "../../../tensor.hpp" + +namespace tenes { +namespace itps { +namespace core { + +using mptensor::Axes; + +/*! @brief contract tensors with CTM + * + * @param[in] C corner transfer matrix + * @param[in] eTt top edge tensors + * @param[in] eTr right edge tensors + * @param[in] eTb bottom edge tensors + * @param[in] eTl left edge tensors + * @param[in] Tn center tensors + * @param[in] op onesite operators + */ +template +typename tensor::value_type Contract_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + +#define CALL_CONTRACT(NROW, NCOL) \ + do { \ + if (nrow == NROW && ncol == NCOL) { \ + return Contract_##NROW##x##NCOL##_density_CTM(C, eTt, eTr, eTb, eTl, Tn, \ + op); \ + } \ + } while (false) + + CALL_CONTRACT(1, 1); + CALL_CONTRACT(2, 1); + CALL_CONTRACT(1, 2); + CALL_CONTRACT(2, 2); + CALL_CONTRACT(3, 1); + CALL_CONTRACT(1, 3); + CALL_CONTRACT(3, 2); + CALL_CONTRACT(2, 3); + CALL_CONTRACT(3, 3); + CALL_CONTRACT(1, 4); + CALL_CONTRACT(4, 1); + CALL_CONTRACT(2, 4); + CALL_CONTRACT(4, 2); + CALL_CONTRACT(4, 3); + CALL_CONTRACT(3, 4); + CALL_CONTRACT(4, 4); + +#undef CALL_CONTRACT + + std::stringstream ss; + ss << "Contract_density_" << nrow << "_" << ncol << " is not implemented"; + throw std::runtime_error(ss.str()); +} + +template +typename tensor::value_type Contract_one_site_density_CTM( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &Tn1, const tensor &op1) { + //////////////////////////////////////////////////////////// + // contract_one_site_density.dat + //////////////////////////////////////////////////////////// + // (op1*(Tn1*((eT1*(C1*eT4))*((C2*eT2)*(C3*(C4*eT3)))))) + // cpu_cost= 5.96e+06 memory= 130004 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op1, + tensordot( + Tn1, + tensordot( + tensordot(eT1, tensordot(C1, eT4, Axes(0), Axes(1)), Axes(0), + Axes(0)), + tensordot(tensordot(C2, eT2, Axes(1), Axes(0)), + tensordot(C3, tensordot(C4, eT3, Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(1), Axes(0)), + Axes(0, 2), Axes(0, 2)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +template +typename tensor::value_type Contract_two_sites_horizontal_density_CTM( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op1, const tensor &op2) { + //////////////////////////////////////////////////////////// + // contract_two_site_horizontal_density.dat + //////////////////////////////////////////////////////////// + // (op1*(Tn1*((eT1*(C1*eT6))*((C4*eT5)*(eT2*((Tn2*op2)*(eT4*(C2*(C3*eT3))))))))) + // cpu_cost= 1.16e+07 memory= 178408 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op1, + tensordot( + Tn1, + tensordot( + tensordot(eT1, tensordot(C1, eT6, Axes(0), Axes(1)), Axes(0), + Axes(0)), + tensordot( + tensordot(C4, eT5, Axes(0), Axes(1)), + tensordot( + eT2, + tensordot(tensordot(Tn2, op2, Axes(4, 5), Axes(0, 1)), + tensordot(eT4, + tensordot(C2, + tensordot(C3, eT3, Axes(0), + Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(3, 1)), + Axes(1), Axes(2)), + Axes(0, 2), Axes(2, 0)), + Axes(0, 1, 2, 3), Axes(1, 0, 3, 2)), + Axes(0, 1), Axes(0, 1)); +} + +template +typename tensor::value_type Contract_two_sites_vertical_density_CTM( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op1, const tensor &op2) { + //////////////////////////////////////////////////////////// + // contract_two_site_vertical_density.dat + //////////////////////////////////////////////////////////// + // (op1*(Tn1*((eT1*(C1*eT6))*((C2*eT2)*(eT3*((Tn2*op2)*(eT5*(C3*(C4*eT4))))))))) + // cpu_cost= 1.16e+07 memory= 178408 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op1, + tensordot( + Tn1, + tensordot( + tensordot(eT1, tensordot(C1, eT6, Axes(0), Axes(1)), Axes(0), + Axes(0)), + tensordot( + tensordot(C2, eT2, Axes(1), Axes(0)), + tensordot( + eT3, + tensordot(tensordot(Tn2, op2, Axes(4, 5), Axes(0, 1)), + tensordot(eT5, + tensordot(C3, + tensordot(C4, eT4, Axes(0), + Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(3, 1)), + Axes(1), Axes(0)), + Axes(0, 2), Axes(0, 3)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +template +typename tensor::value_type Contract_two_sites_horizontal_op12_density_CTM( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op12) { + //////////////////////////////////////////////////////////// + // contract_two_site_horizontal_op12_density.dat + //////////////////////////////////////////////////////////// + // (op12*((eT1*(Tn1*(eT5*(C1*(C4*eT6)))))*(eT2*(Tn2*(eT4*(C2*(C3*eT3))))))) + // cpu_cost= 4.0384e+07 memory= 296816 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op12, + tensordot( + tensordot( + eT1, + tensordot( + Tn1, + tensordot(eT5, + tensordot(C1, tensordot(C4, eT6, Axes(1), Axes(0)), + Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(0, 3), Axes(3, 1)), + Axes(0, 2), Axes(5, 0)), + tensordot( + eT2, + tensordot( + Tn2, + tensordot(eT4, + tensordot(C2, tensordot(C3, eT3, Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(5, 1)), + Axes(0, 1, 4), Axes(0, 1, 4)), + Axes(0, 1, 2, 3), Axes(0, 2, 1, 3)); +} + +template +typename tensor::value_type Contract_two_sites_vertical_op12_density_CTM( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op12) { + //////////////////////////////////////////////////////////// + // contract_two_site_vertical_op12_density.dat + //////////////////////////////////////////////////////////// + // (op12*((eT2*(Tn1*(eT6*(C1*(C2*eT1)))))*(eT3*(Tn2*(eT5*(C3*(C4*eT4))))))) + // cpu_cost= 4.0384e+07 memory= 296816 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op12, + tensordot( + tensordot( + eT2, + tensordot( + Tn1, + tensordot(eT6, + tensordot(C1, tensordot(C2, eT1, Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(1), Axes(0)), + Axes(0, 1), Axes(1, 3)), + Axes(0, 2), Axes(5, 0)), + tensordot( + eT3, + tensordot( + Tn2, + tensordot(eT5, + tensordot(C3, tensordot(C4, eT4, Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(5, 1)), + Axes(0, 1, 4), Axes(0, 1, 4)), + Axes(0, 1, 2, 3), Axes(0, 2, 1, 3)); +} + +} // namespace core +} // namespace itps +} // namespace tenes + +#undef TENSOR_TYPE +#define TENSOR_TYPE real_tensor +#include "./instantiate_ctm.hpp" +#undef TENSOR_TYPE +#define TENSOR_TYPE complex_tensor +#include "./instantiate_ctm.hpp" +#undef TENSOR_TYPE diff --git a/src/iTPS/core/contract_density_ctm/ctm_1x1.cpp b/src/iTPS/core/contract_density_ctm/ctm_1x1.cpp new file mode 100644 index 00000000..e0aa9518 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_1x1.cpp @@ -0,0 +1,78 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_1x1_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 1_1_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*((*(C[1])**(eTr[0]))*(*(C[2])*(*(C[3])**(eTb[0]))))))) + // cpu_cost= 266256 memory= 14352 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot(tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot(tensordot(*(C[1]), *(eTr[0]), Axes(1), Axes(0)), + tensordot(*(C[2]), + tensordot(*(C[3]), *(eTb[0]), Axes(0), + Axes(1)), + Axes(1), Axes(1)), + Axes(1), Axes(0)), + Axes(0, 2), Axes(0, 2)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 1, 1); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 1, 1); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_1x2.cpp b/src/iTPS/core/contract_density_ctm/ctm_1x2.cpp new file mode 100644 index 00000000..de6b52c8 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_1x2.cpp @@ -0,0 +1,89 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_1x2_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 1_2_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*((*(C[3])**(eTb[0]))*(*(eTt[1])*((*(Tn[0][1])**(op[0][1]))*(*(eTb[1])*(*(C[1])*(*(C[2])**(eTr[0])))))))))) + // cpu_cost= 466960 memory= 20768 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + tensordot(*(C[3]), *(eTb[0]), Axes(0), Axes(1)), + tensordot( + *(eTt[1]), + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot(*(eTb[1]), + tensordot(*(C[1]), + tensordot(*(C[2]), *(eTr[0]), + Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(3, 1)), + Axes(1), Axes(2)), + Axes(0, 2), Axes(2, 0)), + Axes(0, 1, 2, 3), Axes(1, 0, 3, 2)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 1, 2); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 1, 2); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_1x3.cpp b/src/iTPS/core/contract_density_ctm/ctm_1x3.cpp new file mode 100644 index 00000000..57ebddc4 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_1x3.cpp @@ -0,0 +1,101 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_1x3_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 1_3_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*((*(C[3])**(eTb[0]))*(*(eTt[1])*((*(Tn[0][1])**(op[0][1]))*(*(eTb[1])*(*(eTt[2])*((*(Tn[0][2])**(op[0][2]))*(*(eTb[2])*(*(C[1])*(*(C[2])**(eTr[0]))))))))))))) + // cpu_cost= 667664 memory= 26928 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + tensordot(*(C[3]), *(eTb[0]), Axes(0), Axes(1)), + tensordot( + *(eTt[1]), + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[1]), + tensordot( + *(eTt[2]), + tensordot( + tensordot(*(Tn[0][2]), *(op[0][2]), + Axes(4, 5), Axes(0, 1)), + tensordot( + *(eTb[2]), + tensordot( + *(C[1]), + tensordot(*(C[2]), *(eTr[0]), + Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(3, 1)), + Axes(0), Axes(2)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(3, 1)), + Axes(1), Axes(2)), + Axes(0, 2), Axes(2, 0)), + Axes(0, 1, 2, 3), Axes(1, 0, 3, 2)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 1, 3); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 1, 3); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_1x4.cpp b/src/iTPS/core/contract_density_ctm/ctm_1x4.cpp new file mode 100644 index 00000000..2521aeee --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_1x4.cpp @@ -0,0 +1,115 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_1x4_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 1_4_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*((*(C[3])**(eTb[0]))*(*(eTt[1])*((*(Tn[0][1])**(op[0][1]))*(*(eTb[1])*(*(eTt[2])*((*(Tn[0][2])**(op[0][2]))*(*(eTb[2])*(*(eTt[3])*((*(Tn[0][3])**(op[0][3]))*(*(eTb[3])*(*(C[1])*(*(C[2])**(eTr[0])))))))))))))))) + // cpu_cost= 868368 memory= 33088 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + tensordot(*(C[3]), *(eTb[0]), Axes(0), Axes(1)), + tensordot( + *(eTt[1]), + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[1]), + tensordot( + *(eTt[2]), + tensordot( + tensordot(*(Tn[0][2]), *(op[0][2]), + Axes(4, 5), Axes(0, 1)), + tensordot( + *(eTb[2]), + tensordot( + *(eTt[3]), + tensordot( + tensordot(*(Tn[0][3]), + *(op[0][3]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[3]), + tensordot( + *(C[1]), + tensordot(*(C[2]), + *(eTr[0]), + Axes(0), + Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(3, 1)), + Axes(0), Axes(2)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(3, 1)), + Axes(0), Axes(2)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(3, 1)), + Axes(1), Axes(2)), + Axes(0, 2), Axes(2, 0)), + Axes(0, 1, 2, 3), Axes(1, 0, 3, 2)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 1, 4); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 1, 4); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_2x1.cpp b/src/iTPS/core/contract_density_ctm/ctm_2x1.cpp new file mode 100644 index 00000000..577516b9 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_2x1.cpp @@ -0,0 +1,94 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type +Contract_2x1_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op +) +{ +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for(const auto& r: Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for(const auto& r: op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 2_1_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*((*(C[1])**(eTr[0]))*(*(eTr[1])*((*(Tn[1][0])**(op[1][0]))*(*(eTl[1])*(*(C[2])*(*(C[3])**(eTb[0])))))))))) + // cpu_cost= 466960 memory= 20768 + // final_bond_order () + //////////////////////////////////////////////////////////// + return + trace( + *(op[0][0]), tensordot( + *(Tn[0][0]), tensordot( + tensordot( + *(eTt[0]), tensordot( + *(C[0]), *(eTl[0]), Axes(0), Axes(1) + ), Axes(0), Axes(0) + ), tensordot( + tensordot( + *(C[1]), *(eTr[0]), Axes(1), Axes(0) + ), tensordot( + *(eTr[1]), tensordot( + tensordot( + *(Tn[1][0]), *(op[1][0]), Axes(4, 5), Axes(0, 1) + ), tensordot( + *(eTl[1]), tensordot( + *(C[2]), tensordot( + *(C[3]), *(eTb[0]), Axes(0), Axes(1) + ), Axes(1), Axes(1) + ), Axes(0), Axes(1) + ), Axes(0, 3), Axes(1, 3) + ), Axes(1, 2), Axes(3, 1) + ), Axes(1), Axes(0) + ), Axes(0, 2), Axes(0, 3) + ), Axes(0, 1, 2, 3), Axes(1, 0, 2, 3) + ), Axes(0, 1), Axes(0, 1) + ) + ; +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 2, 1); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 2, 1); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_2x2.cpp b/src/iTPS/core/contract_density_ctm/ctm_2x2.cpp new file mode 100644 index 00000000..f3c28f27 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_2x2.cpp @@ -0,0 +1,97 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_2x2_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 2_2_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*(((*(Tn[0][1])**(op[0][1]))*(*(eTt[1])*(*(C[1])**(eTr[0]))))*(((*(Tn[1][0])**(op[1][0]))*(*(eTb[0])*(*(C[3])**(eTl[1]))))*((*(Tn[1][1])**(op[1][1]))*(*(eTr[1])*(*(C[2])**(eTb[1]))))))))) + // cpu_cost= 1.13051e+06 memory= 31296 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot(*(eTt[1]), + tensordot(*(C[1]), *(eTr[0]), Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(1, 2), Axes(1, 3)), + tensordot(tensordot(tensordot(*(Tn[1][0]), *(op[1][0]), + Axes(4, 5), Axes(0, 1)), + tensordot(*(eTb[0]), + tensordot(*(C[3]), *(eTl[1]), + Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(0, 3), Axes(3, 1)), + tensordot(tensordot(*(Tn[1][1]), *(op[1][1]), + Axes(4, 5), Axes(0, 1)), + tensordot(*(eTr[1]), + tensordot(*(C[2]), *(eTb[1]), + Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(2, 3), Axes(1, 3)), + Axes(1, 2), Axes(0, 3)), + Axes(1, 3), Axes(2, 3)), + Axes(0, 2), Axes(1, 3)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 2, 2); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 2, 2); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_2x3.cpp b/src/iTPS/core/contract_density_ctm/ctm_2x3.cpp new file mode 100644 index 00000000..fe1e5b80 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_2x3.cpp @@ -0,0 +1,116 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_2x3_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 2_3_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*(((*(Tn[1][0])**(op[1][0]))*(*(eTb[0])*(*(C[3])**(eTl[1]))))*(*(eTt[1])*((*(Tn[0][1])**(op[0][1]))*((*(Tn[1][1])**(op[1][1]))*(*(eTb[1])*(((*(Tn[0][2])**(op[0][2]))*(*(eTt[2])*(*(C[1])**(eTr[0]))))*((*(Tn[1][2])**(op[1][2]))*(*(eTr[1])*(*(C[2])**(eTb[2]))))))))))))) + // cpu_cost= 2.18728e+06 memory= 52784 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + tensordot( + tensordot(*(Tn[1][0]), *(op[1][0]), Axes(4, 5), + Axes(0, 1)), + tensordot(*(eTb[0]), + tensordot(*(C[3]), *(eTl[1]), Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(0, 3), Axes(3, 1)), + tensordot( + *(eTt[1]), + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot(*(Tn[1][1]), *(op[1][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[1]), + tensordot( + tensordot( + tensordot(*(Tn[0][2]), *(op[0][2]), + Axes(4, 5), Axes(0, 1)), + tensordot( + *(eTt[2]), + tensordot(*(C[1]), *(eTr[0]), + Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(1, 2), Axes(1, 3)), + tensordot( + tensordot(*(Tn[1][2]), *(op[1][2]), + Axes(4, 5), Axes(0, 1)), + tensordot( + *(eTr[1]), + tensordot(*(C[2]), *(eTb[2]), + Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(2, 3), Axes(1, 3)), + Axes(1, 3), Axes(1, 2)), + Axes(0), Axes(3)), + Axes(2, 3), Axes(4, 1)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(4, 1)), + Axes(1, 2), Axes(2, 3)), + Axes(0, 2), Axes(2, 1)), + Axes(0, 1, 2, 3), Axes(1, 0, 3, 2)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 2, 3); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 2, 3); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_2x4.cpp b/src/iTPS/core/contract_density_ctm/ctm_2x4.cpp new file mode 100644 index 00000000..09913316 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_2x4.cpp @@ -0,0 +1,143 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_2x4_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 2_4_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*(((*(Tn[1][0])**(op[1][0]))*(*(eTb[0])*(*(C[3])**(eTl[1]))))*(*(eTt[1])*((*(Tn[0][1])**(op[0][1]))*((*(Tn[1][1])**(op[1][1]))*(*(eTb[1])*(*(eTt[2])*((*(Tn[0][2])**(op[0][2]))*((*(Tn[1][2])**(op[1][2]))*(*(eTb[2])*(((*(Tn[0][3])**(op[0][3]))*(*(eTt[3])*(*(C[1])**(eTr[0]))))*((*(Tn[1][3])**(op[1][3]))*(*(eTr[1])*(*(C[2])**(eTb[3]))))))))))))))))) + // cpu_cost= 3.24405e+06 memory= 63056 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + tensordot( + tensordot(*(Tn[1][0]), *(op[1][0]), Axes(4, 5), + Axes(0, 1)), + tensordot(*(eTb[0]), + tensordot(*(C[3]), *(eTl[1]), Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(0, 3), Axes(3, 1)), + tensordot( + *(eTt[1]), + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot(*(Tn[1][1]), *(op[1][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[1]), + tensordot( + *(eTt[2]), + tensordot( + tensordot(*(Tn[0][2]), *(op[0][2]), + Axes(4, 5), Axes(0, 1)), + tensordot( + tensordot(*(Tn[1][2]), + *(op[1][2]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[2]), + tensordot( + tensordot( + tensordot(*(Tn[0][3]), + *(op[0][3]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTt[3]), + tensordot( + *(C[1]), + *(eTr[0]), + Axes(1), + Axes(0)), + Axes(1), Axes(0)), + Axes(1, 2), + Axes(1, 3)), + tensordot( + tensordot(*(Tn[1][3]), + *(op[1][3]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTr[1]), + tensordot( + *(C[2]), + *(eTb[3]), + Axes(1), + Axes(0)), + Axes(1), Axes(0)), + Axes(2, 3), + Axes(1, 3)), + Axes(1, 3), Axes(1, 2)), + Axes(0), Axes(3)), + Axes(2, 3), Axes(4, 1)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(4, 1)), + Axes(0), Axes(3)), + Axes(2, 3), Axes(4, 1)), + Axes(2, 3), Axes(4, 1)), + Axes(1, 2), Axes(4, 1)), + Axes(1, 2), Axes(2, 3)), + Axes(0, 2), Axes(2, 1)), + Axes(0, 1, 2, 3), Axes(1, 0, 3, 2)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 2, 4); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 2, 4); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_3x1.cpp b/src/iTPS/core/contract_density_ctm/ctm_3x1.cpp new file mode 100644 index 00000000..4a8732aa --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_3x1.cpp @@ -0,0 +1,101 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_3x1_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 3_1_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*((*(C[1])**(eTr[0]))*(*(eTr[1])*((*(Tn[1][0])**(op[1][0]))*(*(eTl[1])*(*(eTr[2])*((*(Tn[2][0])**(op[2][0]))*(*(eTl[2])*(*(C[2])*(*(C[3])**(eTb[0]))))))))))))) + // cpu_cost= 667664 memory= 26928 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + tensordot(*(C[1]), *(eTr[0]), Axes(1), Axes(0)), + tensordot( + *(eTr[1]), + tensordot( + tensordot(*(Tn[1][0]), *(op[1][0]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[1]), + tensordot( + *(eTr[2]), + tensordot( + tensordot(*(Tn[2][0]), *(op[2][0]), + Axes(4, 5), Axes(0, 1)), + tensordot( + *(eTl[2]), + tensordot( + *(C[2]), + tensordot(*(C[3]), *(eTb[0]), + Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(3, 1)), + Axes(0), Axes(2)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(3, 1)), + Axes(1), Axes(0)), + Axes(0, 2), Axes(0, 3)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 3, 1); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 3, 1); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_3x2.cpp b/src/iTPS/core/contract_density_ctm/ctm_3x2.cpp new file mode 100644 index 00000000..118fc93c --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_3x2.cpp @@ -0,0 +1,116 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_3x2_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 3_2_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*(((*(Tn[0][1])**(op[0][1]))*(*(eTt[1])*(*(C[1])**(eTr[0]))))*(*(eTr[1])*((*(Tn[1][1])**(op[1][1]))*((*(Tn[1][0])**(op[1][0]))*(*(eTl[1])*(((*(Tn[2][0])**(op[2][0]))*(*(eTb[0])*(*(C[3])**(eTl[2]))))*((*(Tn[2][1])**(op[2][1]))*(*(eTr[2])*(*(C[2])**(eTb[1]))))))))))))) + // cpu_cost= 2.18728e+06 memory= 52784 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot(*(eTt[1]), + tensordot(*(C[1]), *(eTr[0]), Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(1, 2), Axes(1, 3)), + tensordot( + *(eTr[1]), + tensordot( + tensordot(*(Tn[1][1]), *(op[1][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot(*(Tn[1][0]), *(op[1][0]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[1]), + tensordot( + tensordot( + tensordot(*(Tn[2][0]), *(op[2][0]), + Axes(4, 5), Axes(0, 1)), + tensordot( + *(eTb[0]), + tensordot(*(C[3]), *(eTl[2]), + Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(0, 3), Axes(3, 1)), + tensordot( + tensordot(*(Tn[2][1]), *(op[2][1]), + Axes(4, 5), Axes(0, 1)), + tensordot( + *(eTr[2]), + tensordot(*(C[2]), *(eTb[1]), + Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(2, 3), Axes(1, 3)), + Axes(1, 2), Axes(0, 3)), + Axes(0), Axes(1)), + Axes(0, 3), Axes(1, 2)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(4, 1)), + Axes(1, 3), Axes(1, 0)), + Axes(0, 2), Axes(1, 3)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 3, 2); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 3, 2); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_3x3.cpp b/src/iTPS/core/contract_density_ctm/ctm_3x3.cpp new file mode 100644 index 00000000..94a4585d --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_3x3.cpp @@ -0,0 +1,153 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_3x3_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 3_3_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*(*(eTt[1])*((*(Tn[0][1])**(op[0][1]))*(((*(Tn[0][2])**(op[0][2]))*(*(eTt[2])*(*(C[1])**(eTr[0]))))*(*(eTr[1])*((*(Tn[1][2])**(op[1][2]))*((*(Tn[1][1])**(op[1][1]))*((*(Tn[1][0])**(op[1][0]))*(*(eTl[1])*(((*(Tn[2][0])**(op[2][0]))*(*(eTb[0])*(*(C[3])**(eTl[2]))))*((*(Tn[2][1])**(op[2][1]))*(*(eTb[1])*((*(Tn[2][2])**(op[2][2]))*(*(eTr[2])*(*(C[2])**(eTb[2])))))))))))))))))) + // cpu_cost= 9.01531e+06 memory= 160336 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + *(eTt[1]), + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot(tensordot(*(Tn[0][2]), *(op[0][2]), + Axes(4, 5), Axes(0, 1)), + tensordot(*(eTt[2]), + tensordot(*(C[1]), *(eTr[0]), + Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(1, 2), Axes(1, 3)), + tensordot( + *(eTr[1]), + tensordot( + tensordot(*(Tn[1][2]), *(op[1][2]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[1][1]), *(op[1][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[1][0]), *(op[1][0]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[1]), + tensordot( + tensordot( + tensordot( + *(Tn[2][0]), + *(op[2][0]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[0]), + tensordot( + *(C[3]), + *(eTl[2]), + Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(0, 3), Axes(3, 1)), + tensordot( + tensordot(*(Tn[2][1]), + *(op[2][1]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[1]), + tensordot( + tensordot( + *(Tn[2][2]), + *(op[2][2]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTr[2]), + tensordot( + *(C[2]), + *(eTb[2]), + Axes(1), + Axes(0)), + Axes(1), + Axes(0)), + Axes(2, 3), + Axes(1, 3)), + Axes(0), Axes(3)), + Axes(2, 3), Axes(2, 1)), + Axes(1, 2), Axes(0, 2)), + Axes(0), Axes(1)), + Axes(0, 3), Axes(1, 2)), + Axes(0, 3), Axes(1, 3)), + Axes(0, 3), Axes(1, 4)), + Axes(1, 2), Axes(5, 1)), + Axes(1, 3), Axes(1, 0)), + Axes(2, 3), Axes(0, 2)), + Axes(1, 2), Axes(2, 1)), + Axes(0, 2), Axes(0, 3)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 3, 3); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 3, 3); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_3x4.cpp b/src/iTPS/core/contract_density_ctm/ctm_3x4.cpp new file mode 100644 index 00000000..1b93c68d --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_3x4.cpp @@ -0,0 +1,232 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_3x4_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 3_4_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*(*(eTl[1])*((*(Tn[1][0])**(op[1][0]))*(((*(Tn[2][0])**(op[2][0]))*(*(eTb[0])*(*(C[3])**(eTl[2]))))*(*(eTt[1])*((*(Tn[0][1])**(op[0][1]))*((*(Tn[1][1])**(op[1][1]))*((*(Tn[2][1])**(op[2][1]))*(*(eTb[1])*(*(eTt[2])*((*(Tn[0][2])**(op[0][2]))*((*(Tn[1][2])**(op[1][2]))*((*(Tn[2][2])**(op[2][2]))*(*(eTb[2])*(((*(Tn[0][3])**(op[0][3]))*(*(eTt[3])*(*(C[1])**(eTr[0]))))*((*(Tn[1][3])**(op[1][3]))*(*(eTr[1])*((*(Tn[2][3])**(op[2][3]))*(*(eTr[2])*(*(C[2])**(eTb[3]))))))))))))))))))))))) + // cpu_cost= 1.42705e+07 memory= 174720 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + *(eTl[1]), + tensordot( + tensordot(*(Tn[1][0]), *(op[1][0]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot(tensordot(*(Tn[2][0]), *(op[2][0]), + Axes(4, 5), Axes(0, 1)), + tensordot(*(eTb[0]), + tensordot(*(C[3]), *(eTl[2]), + Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(0, 3), Axes(3, 1)), + tensordot( + *(eTt[1]), + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[1][1]), *(op[1][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[2][1]), *(op[2][1]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[1]), + tensordot( + *(eTt[2]), + tensordot( + tensordot( + *(Tn[0][2]), + *(op[0][2]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[1][2]), + *(op[1][2]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[2][2]), + *(op[2][2]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[2]), + tensordot( + tensordot( + tensordot( + *(Tn[0] + [3]), + *(op[0] + [3]), + Axes( + 4, + 5), + Axes( + 0, + 1)), + tensordot( + *(eTt[3]), + tensordot( + *(C[1]), + *(eTr[0]), + Axes( + 1), + Axes( + 0)), + Axes( + 1), + Axes( + 0)), + Axes( + 1, + 2), + Axes( + 1, + 3)), + tensordot( + tensordot( + *(Tn[1] + [3]), + *(op[1] + [3]), + Axes( + 4, + 5), + Axes( + 0, + 1)), + tensordot( + *(eTr[1]), + tensordot( + tensordot( + *(Tn[2] + [3]), + *(op[2] + [3]), + Axes( + 4, + 5), + Axes( + 0, + 1)), + tensordot( + *(eTr[2]), + tensordot( + *(C[2]), + *(eTb[3]), + Axes( + 1), + Axes( + 0)), + Axes( + 1), + Axes( + 0)), + Axes( + 2, + 3), + Axes( + 1, + 3)), + Axes( + 1), + Axes( + 2)), + Axes( + 2, + 3), + Axes( + 1, + 3)), + Axes(1, + 3), + Axes(1, + 2)), + Axes(0), + Axes(4)), + Axes(2, 3), + Axes(5, 1)), + Axes(2, 3), + Axes(5, 1)), + Axes(2, 3), Axes(4, 1)), + Axes(1, 2), Axes(5, 1)), + Axes(0), Axes(4)), + Axes(2, 3), Axes(5, 1)), + Axes(2, 3), Axes(5, 1)), + Axes(2, 3), Axes(5, 1)), + Axes(1, 2), Axes(5, 1)), + Axes(1, 2), Axes(3, 4)), + Axes(2, 3), Axes(4, 0)), + Axes(0, 2), Axes(2, 0)), + Axes(0, 2), Axes(2, 0)), + Axes(0, 1, 2, 3), Axes(1, 0, 3, 2)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 3, 4); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 3, 4); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_4x1.cpp b/src/iTPS/core/contract_density_ctm/ctm_4x1.cpp new file mode 100644 index 00000000..2166d362 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_4x1.cpp @@ -0,0 +1,115 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_4x1_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 4_1_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*((*(C[1])**(eTr[0]))*(*(eTr[1])*((*(Tn[1][0])**(op[1][0]))*(*(eTl[1])*(*(eTr[2])*((*(Tn[2][0])**(op[2][0]))*(*(eTl[2])*(*(eTr[3])*((*(Tn[3][0])**(op[3][0]))*(*(eTl[3])*(*(C[2])*(*(C[3])**(eTb[0])))))))))))))))) + // cpu_cost= 868368 memory= 33088 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + tensordot(*(C[1]), *(eTr[0]), Axes(1), Axes(0)), + tensordot( + *(eTr[1]), + tensordot( + tensordot(*(Tn[1][0]), *(op[1][0]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[1]), + tensordot( + *(eTr[2]), + tensordot( + tensordot(*(Tn[2][0]), *(op[2][0]), + Axes(4, 5), Axes(0, 1)), + tensordot( + *(eTl[2]), + tensordot( + *(eTr[3]), + tensordot( + tensordot(*(Tn[3][0]), + *(op[3][0]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[3]), + tensordot( + *(C[2]), + tensordot(*(C[3]), + *(eTb[0]), + Axes(0), + Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(3, 1)), + Axes(0), Axes(2)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(3, 1)), + Axes(0), Axes(2)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(3, 1)), + Axes(1), Axes(0)), + Axes(0, 2), Axes(0, 3)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 4, 1); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 4, 1); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_4x2.cpp b/src/iTPS/core/contract_density_ctm/ctm_4x2.cpp new file mode 100644 index 00000000..89a7f388 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_4x2.cpp @@ -0,0 +1,143 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_4x2_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 4_2_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*(((*(Tn[0][1])**(op[0][1]))*(*(eTt[1])*(*(C[1])**(eTr[0]))))*(*(eTr[1])*((*(Tn[1][1])**(op[1][1]))*((*(Tn[1][0])**(op[1][0]))*(*(eTl[1])*(*(eTr[2])*((*(Tn[2][1])**(op[2][1]))*((*(Tn[2][0])**(op[2][0]))*(*(eTl[2])*(((*(Tn[3][0])**(op[3][0]))*(*(eTb[0])*(*(C[3])**(eTl[3]))))*((*(Tn[3][1])**(op[3][1]))*(*(eTr[3])*(*(C[2])**(eTb[1]))))))))))))))))) + // cpu_cost= 3.24405e+06 memory= 63056 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot(*(eTt[1]), + tensordot(*(C[1]), *(eTr[0]), Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(1, 2), Axes(1, 3)), + tensordot( + *(eTr[1]), + tensordot( + tensordot(*(Tn[1][1]), *(op[1][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot(*(Tn[1][0]), *(op[1][0]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[1]), + tensordot( + *(eTr[2]), + tensordot( + tensordot(*(Tn[2][1]), *(op[2][1]), + Axes(4, 5), Axes(0, 1)), + tensordot( + tensordot(*(Tn[2][0]), + *(op[2][0]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[2]), + tensordot( + tensordot( + tensordot(*(Tn[3][0]), + *(op[3][0]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[0]), + tensordot( + *(C[3]), + *(eTl[3]), + Axes(1), + Axes(0)), + Axes(1), Axes(0)), + Axes(0, 3), + Axes(3, 1)), + tensordot( + tensordot(*(Tn[3][1]), + *(op[3][1]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTr[3]), + tensordot( + *(C[2]), + *(eTb[1]), + Axes(1), + Axes(0)), + Axes(1), Axes(0)), + Axes(2, 3), + Axes(1, 3)), + Axes(1, 2), Axes(0, 3)), + Axes(0), Axes(1)), + Axes(0, 3), Axes(1, 2)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(4, 1)), + Axes(0), Axes(3)), + Axes(0, 3), Axes(1, 4)), + Axes(0, 3), Axes(1, 4)), + Axes(1, 2), Axes(4, 1)), + Axes(1, 3), Axes(1, 0)), + Axes(0, 2), Axes(1, 3)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 4, 2); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 4, 2); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_4x3.cpp b/src/iTPS/core/contract_density_ctm/ctm_4x3.cpp new file mode 100644 index 00000000..06dfe00d --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_4x3.cpp @@ -0,0 +1,232 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_4x3_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 4_3_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*(*(eTt[1])*((*(Tn[0][1])**(op[0][1]))*(((*(Tn[0][2])**(op[0][2]))*(*(eTt[2])*(*(C[1])**(eTr[0]))))*(*(eTr[1])*((*(Tn[1][2])**(op[1][2]))*((*(Tn[1][1])**(op[1][1]))*((*(Tn[1][0])**(op[1][0]))*(*(eTl[1])*(*(eTr[2])*((*(Tn[2][2])**(op[2][2]))*((*(Tn[2][1])**(op[2][1]))*((*(Tn[2][0])**(op[2][0]))*(*(eTl[2])*(((*(Tn[3][0])**(op[3][0]))*(*(eTb[0])*(*(C[3])**(eTl[3]))))*((*(Tn[3][1])**(op[3][1]))*(*(eTb[1])*((*(Tn[3][2])**(op[3][2]))*(*(eTr[3])*(*(C[2])**(eTb[2]))))))))))))))))))))))) + // cpu_cost= 1.42705e+07 memory= 174720 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + *(eTt[1]), + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot(tensordot(*(Tn[0][2]), *(op[0][2]), + Axes(4, 5), Axes(0, 1)), + tensordot(*(eTt[2]), + tensordot(*(C[1]), *(eTr[0]), + Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(1, 2), Axes(1, 3)), + tensordot( + *(eTr[1]), + tensordot( + tensordot(*(Tn[1][2]), *(op[1][2]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[1][1]), *(op[1][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[1][0]), *(op[1][0]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[1]), + tensordot( + *(eTr[2]), + tensordot( + tensordot( + *(Tn[2][2]), + *(op[2][2]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[2][1]), + *(op[2][1]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[2][0]), + *(op[2][0]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[2]), + tensordot( + tensordot( + tensordot( + *(Tn[3] + [0]), + *(op[3] + [0]), + Axes( + 4, + 5), + Axes( + 0, + 1)), + tensordot( + *(eTb[0]), + tensordot( + *(C[3]), + *(eTl[3]), + Axes( + 1), + Axes( + 0)), + Axes( + 1), + Axes( + 0)), + Axes( + 0, + 3), + Axes( + 3, + 1)), + tensordot( + tensordot( + *(Tn[3] + [1]), + *(op[3] + [1]), + Axes( + 4, + 5), + Axes( + 0, + 1)), + tensordot( + *(eTb[1]), + tensordot( + tensordot( + *(Tn[3] + [2]), + *(op[3] + [2]), + Axes( + 4, + 5), + Axes( + 0, + 1)), + tensordot( + *(eTr[3]), + tensordot( + *(C[2]), + *(eTb[2]), + Axes( + 1), + Axes( + 0)), + Axes( + 1), + Axes( + 0)), + Axes( + 2, + 3), + Axes( + 1, + 3)), + Axes( + 0), + Axes( + 3)), + Axes( + 2, + 3), + Axes( + 2, + 1)), + Axes(1, + 2), + Axes(0, + 2)), + Axes(0), + Axes(1)), + Axes(0, 3), + Axes(1, 2)), + Axes(0, 3), + Axes(1, 3)), + Axes(0, 3), Axes(1, 4)), + Axes(1, 2), Axes(5, 1)), + Axes(0), Axes(4)), + Axes(0, 3), Axes(1, 5)), + Axes(0, 3), Axes(1, 5)), + Axes(0, 3), Axes(1, 5)), + Axes(1, 2), Axes(5, 1)), + Axes(1, 3), Axes(1, 0)), + Axes(2, 3), Axes(0, 2)), + Axes(1, 2), Axes(2, 1)), + Axes(0, 2), Axes(0, 3)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 4, 3); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 4, 3); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/ctm_4x4.cpp b/src/iTPS/core/contract_density_ctm/ctm_4x4.cpp new file mode 100644 index 00000000..1f55956d --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/ctm_4x4.cpp @@ -0,0 +1,232 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../contract_density_ctm.hpp" +#include "instantiate.hpp" + +namespace tenes { +namespace itps { +namespace core { +using mptensor::Axes; + +template +typename tensor::value_type Contract_4x4_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op) { +#ifndef NDEBUG + const size_t nrow = Tn.size(); + const size_t ncol = Tn[0].size(); + for (const auto &r : Tn) assert(r.size() == ncol); + assert(C.size() == 4); + assert(eTt.size() == ncol); + assert(eTr.size() == nrow); + assert(eTb.size() == ncol); + assert(eTl.size() == nrow); + assert(op.size() == nrow); + for (const auto &r : op) assert(r.size() == ncol); +#endif + //////////////////////////////////////////////////////////// + // 4_4_den.dat + //////////////////////////////////////////////////////////// + // (*(op[0][0])*(*(Tn[0][0])*((*(eTt[0])*(*(C[0])**(eTl[0])))*(*(eTt[1])*((*(Tn[0][1])**(op[0][1]))*(*(eTl[1])*((*(Tn[1][0])**(op[1][0]))*((*(Tn[1][1])**(op[1][1]))*(((*(Tn[1][2])**(op[1][2]))*((*(Tn[0][2])**(op[0][2]))*(*(eTt[2])*((*(Tn[1][3])**(op[1][3]))*(*(eTr[1])*((*(Tn[0][3])**(op[0][3]))*(*(eTt[3])*(*(C[1])**(eTr[0])))))))))*(((*(Tn[2][1])**(op[2][1]))*((*(Tn[2][0])**(op[2][0]))*(*(eTl[2])*((*(Tn[3][1])**(op[3][1]))*(*(eTb[1])*((*(Tn[3][0])**(op[3][0]))*(*(eTb[0])*(*(C[3])**(eTl[3])))))))))*((*(Tn[2][2])**(op[2][2]))*((*(Tn[2][3])**(op[2][3]))*(*(eTr[2])*((*(Tn[3][2])**(op[3][2]))*(*(eTb[2])*((*(Tn[3][3])**(op[3][3]))*(*(eTr[3])*(*(C[2])**(eTb[3]))))))))))))))))))) + // cpu_cost= 4.88899e+07 memory= 289104 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + *(op[0][0]), + tensordot( + *(Tn[0][0]), + tensordot( + tensordot(*(eTt[0]), + tensordot(*(C[0]), *(eTl[0]), Axes(0), Axes(1)), + Axes(0), Axes(0)), + tensordot( + *(eTt[1]), + tensordot( + tensordot(*(Tn[0][1]), *(op[0][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[1]), + tensordot( + tensordot(*(Tn[1][0]), *(op[1][0]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot(*(Tn[1][1]), *(op[1][1]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + tensordot( + *(Tn[1][2]), *(op[1][2]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot( + *(Tn[0][2]), *(op[0][2]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTt[2]), + tensordot( + tensordot( + *(Tn[1][3]), + *(op[1][3]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTr[1]), + tensordot( + tensordot( + *(Tn[0][3]), + *(op[0][3]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTt[3]), + tensordot( + *(C[1]), + *(eTr[0]), + Axes(1), + Axes(0)), + Axes(1), + Axes(0)), + Axes(1, 2), + Axes(1, 3)), + Axes(0), Axes(3)), + Axes(1, 2), Axes(3, 1)), + Axes(1), Axes(4)), + Axes(1, 2), Axes(1, 5)), + Axes(1, 2), Axes(1, 3)), + tensordot( + tensordot( + tensordot(*(Tn[2][1]), + *(op[2][1]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot(*(Tn[2][0]), + *(op[2][0]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTl[2]), + tensordot( + tensordot(*(Tn[3][1]), + *(op[3][1]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[1]), + tensordot( + tensordot( + *(Tn[3] + [0]), + *(op[3] + [0]), + Axes(4, + 5), + Axes(0, + 1)), + tensordot( + *(eTb[0]), + tensordot( + *(C[3]), + *(eTl[3]), + Axes( + 1), + Axes( + 0)), + Axes(1), + Axes(0)), + Axes(0, 3), + Axes(3, 1)), + Axes(1), Axes(2)), + Axes(0, 3), + Axes(3, 1)), + Axes(0), Axes(4)), + Axes(0, 3), Axes(1, 5)), + Axes(0, 3), Axes(1, 3)), + tensordot( + tensordot(*(Tn[2][2]), + *(op[2][2]), Axes(4, 5), + Axes(0, 1)), + tensordot( + tensordot(*(Tn[2][3]), + *(op[2][3]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTr[2]), + tensordot( + tensordot(*(Tn[3][2]), + *(op[3][2]), + Axes(4, 5), + Axes(0, 1)), + tensordot( + *(eTb[2]), + tensordot( + tensordot( + *(Tn[3] + [3]), + *(op[3] + [3]), + Axes(4, + 5), + Axes(0, + 1)), + tensordot( + *(eTr[3]), + tensordot( + *(C[2]), + *(eTb[3]), + Axes( + 1), + Axes( + 0)), + Axes(1), + Axes(0)), + Axes(2, 3), + Axes(1, 3)), + Axes(0), Axes(3)), + Axes(2, 3), + Axes(2, 1)), + Axes(1), Axes(4)), + Axes(2, 3), Axes(1, 5)), + Axes(2, 3), Axes(0, 4)), + Axes(1, 4, 5), Axes(0, 4, 5)), + Axes(1, 4, 5), Axes(3, 4, 5)), + Axes(2, 3), Axes(0, 3)), + Axes(2, 3), Axes(0, 4)), + Axes(0, 2), Axes(5, 0)), + Axes(2, 3), Axes(3, 2)), + Axes(1, 2), Axes(4, 1)), + Axes(0, 2), Axes(0, 2)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); +} + +//! @cond +INSTANTIATE_CONTRACT_DENSITY(real_tensor, 4, 4); +INSTANTIATE_CONTRACT_DENSITY(complex_tensor, 4, 4); +//! @endcond + +} // end of namespace core +} // namespace itps +} // namespace tenes diff --git a/src/iTPS/core/contract_density_ctm/instantiate.hpp b/src/iTPS/core/contract_density_ctm/instantiate.hpp new file mode 100644 index 00000000..2d6c0450 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/instantiate.hpp @@ -0,0 +1,29 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +#include "../../../tensor.hpp" + +#ifndef INSTANTIATE_CONTRACT_DENSITY +#define INSTANTIATE_CONTRACT_DENSITY(tensor_type, NROW, NCOL) \ + template tensor_type::value_type Contract_##NROW##x##NCOL##_density_CTM( \ + const std::vector &C, \ + const std::vector &eTt, \ + const std::vector &eTr, \ + const std::vector &eTb, \ + const std::vector &eTl, \ + const std::vector> &Tn, \ + const std::vector> &op) +#endif // INSTANTIATE_CONTRACT diff --git a/src/iTPS/core/contract_density_ctm/instantiate_ctm.hpp b/src/iTPS/core/contract_density_ctm/instantiate_ctm.hpp new file mode 100644 index 00000000..d2fab356 --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/instantiate_ctm.hpp @@ -0,0 +1,77 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +/* + * + Basic routines independent on unit cell structures. + Using mptensor libraries + (Test version) + 2015 Dec. Tsuyoshi Okubo +*/ + +//! @cond + +namespace tenes { +namespace itps { +namespace core { + +template TENSOR_TYPE::value_type Contract_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op); + +template TENSOR_TYPE::value_type Contract_one_site_density_CTM( + const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, + const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, + const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &Tn1, + const TENSOR_TYPE &op1); + +template TENSOR_TYPE::value_type Contract_two_sites_horizontal_density_CTM( + const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, + const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, + const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, + const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, + const TENSOR_TYPE &op1, const TENSOR_TYPE &op2); + +template TENSOR_TYPE::value_type Contract_two_sites_vertical_density_CTM( + const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, + const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, + const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, + const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, + const TENSOR_TYPE &op1, const TENSOR_TYPE &op2); + +template TENSOR_TYPE::value_type Contract_two_sites_horizontal_op12_density_CTM( + const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, + const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, + const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, + const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, + const TENSOR_TYPE &op12); + +template TENSOR_TYPE::value_type Contract_two_sites_vertical_op12_density_CTM( + const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, + const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, + const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, + const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, + const TENSOR_TYPE &op12); +} // namespace core +} // namespace itps +} // namespace tenes + +//! @endcond diff --git a/src/iTPS/core/contract_ctm.hpp b/src/iTPS/core/contract_itps_ctm.hpp similarity index 58% rename from src/iTPS/core/contract_ctm.hpp rename to src/iTPS/core/contract_itps_ctm.hpp index 7d726df4..3cda81f9 100644 --- a/src/iTPS/core/contract_ctm.hpp +++ b/src/iTPS/core/contract_itps_ctm.hpp @@ -22,8 +22,8 @@ 2015 Dec. Tsuyoshi Okubo */ -#ifndef TENES_SRC_ITPS_CORE_CONTRACT_CTM_HPP_ -#define TENES_SRC_ITPS_CORE_CONTRACT_CTM_HPP_ +#ifndef TENES_SRC_ITPS_CORE_CONTRACT_iTPS_CTM_HPP_ +#define TENES_SRC_ITPS_CORE_CONTRACT_iTPS_CTM_HPP_ #include #include @@ -43,7 +43,7 @@ namespace core { * @param[in] op onesite operators */ template -typename tensor::value_type Contract( +typename tensor::value_type Contract_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -57,7 +57,7 @@ Declare template functions like template typename tensor::value_type -Contract_1x1 ( +Contract_1x1_iTPS_CTM ( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -67,15 +67,15 @@ Contract_1x1 ( const std::vector> &op ) */ -#define DECLARE_CONTRACT(NROW, NCOL) \ - template \ - typename tensor::value_type Contract_##NROW##x##NCOL( \ - const std::vector &C, \ - const std::vector &eTt, \ - const std::vector &eTr, \ - const std::vector &eTb, \ - const std::vector &eTl, \ - const std::vector> &Tn, \ +#define DECLARE_CONTRACT(NROW, NCOL) \ + template \ + typename tensor::value_type Contract_##NROW##x##NCOL##_iTPS_CTM( \ + const std::vector &C, \ + const std::vector &eTt, \ + const std::vector &eTr, \ + const std::vector &eTb, \ + const std::vector &eTl, \ + const std::vector> &Tn, \ const std::vector> &op) //! @cond @@ -97,44 +97,44 @@ DECLARE_CONTRACT(3, 4); DECLARE_CONTRACT(4, 4); //! @endcond -#undef DECLARE_CONTRACT +#undef DECLARE_CONTRACT_iTPS_CTM template -typename tensor::value_type Contract_one_site( +typename tensor::value_type Contract_one_site_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &Tn1, const tensor &op1); template -typename tensor::value_type Contract_two_sites_horizontal( +typename tensor::value_type Contract_two_sites_horizontal_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, const tensor &op1, const tensor &op2); template -typename tensor::value_type Contract_two_sites_vertical( +typename tensor::value_type Contract_two_sites_vertical_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, const tensor &op1, const tensor &op2); template -typename tensor::value_type Contract_two_sites_horizontal_op12( +typename tensor::value_type Contract_two_sites_horizontal_op12_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, const tensor &op12); template -typename tensor::value_type Contract_two_sites_vertical_op12( +typename tensor::value_type Contract_two_sites_vertical_op12_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, const tensor &op12); template -typename tensor::value_type Contract_four_sites( +typename tensor::value_type Contract_four_sites_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &eT7, const tensor &eT8, @@ -142,60 +142,24 @@ typename tensor::value_type Contract_four_sites( const tensor &op1, const tensor &op2, const tensor &op3, const tensor &op4); template -void StartCorrelation(tensor &A, const tensor &C1, const tensor &C4, - const tensor &eT1, const tensor &eT3, const tensor &eT4, - const tensor &Tn1, const tensor &op); +void StartCorrelation_iTPS_CTM(tensor &A, const tensor &C1, const tensor &C4, + const tensor &eT1, const tensor &eT3, + const tensor &eT4, const tensor &Tn1, + const tensor &op); template -void Transfer(tensor &A, const tensor &eT1, const tensor &eT3, - const tensor &Tn1); +void Transfer_iTPS_CTM(tensor &A, const tensor &eT1, const tensor &eT3, + const tensor &Tn1); template -typename tensor::value_type FinishCorrelation( +typename tensor::value_type FinishCorrelation_iTPS_CTM( const tensor &A, const tensor &C2, const tensor &C3, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &Tn1, const tensor &op); template -void TransferMatrix_MatVec(tensor &inoutvec, const tensor &eT1); - - - -template -typename tensor::value_type Contract_one_site_density( - const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, - const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, - const tensor &Tn1, const tensor &op1); - -template -typename tensor::value_type Contract_two_sites_horizontal_density( - const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, - const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, - const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, - const tensor &op1, const tensor &op2); - -template -typename tensor::value_type Contract_two_sites_vertical_density( - const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, - const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, - const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, - const tensor &op1, const tensor &op2); - -template -typename tensor::value_type Contract_two_sites_horizontal_op12_density( - const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, - const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, - const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, - const tensor &op12); - -template -typename tensor::value_type Contract_two_sites_vertical_op12_density( - const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, - const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, - const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, - const tensor &op12); - +void TransferMatrix_MatVec_iTPS_CTM(tensor &inoutvec, const tensor &eT1); } // end of namespace core } // namespace itps } // namespace tenes -#endif // TENES_SRC_ITPS_CORE_CONTRACT_CTM_HPP_ +#endif // TENES_SRC_ITPS_CORE_CONTRACT_iTPS_CTM_HPP_ diff --git a/src/iTPS/core/contract_ctm/CMakeLists.txt b/src/iTPS/core/contract_itps_ctm/CMakeLists.txt similarity index 60% rename from src/iTPS/core/contract_ctm/CMakeLists.txt rename to src/iTPS/core/contract_itps_ctm/CMakeLists.txt index 70e9b4a1..482df23f 100644 --- a/src/iTPS/core/contract_ctm/CMakeLists.txt +++ b/src/iTPS/core/contract_itps_ctm/CMakeLists.txt @@ -6,5 +6,5 @@ foreach(row 1 2 3 4) endforeach() endforeach() -add_library(iTPS_contract_ctm STATIC ${src_files}) -target_link_libraries(iTPS_contract_ctm PUBLIC tensor) +add_library(iTPS_contract_itps_ctm STATIC ${src_files}) +target_link_libraries(iTPS_contract_itps_ctm PUBLIC tensor) diff --git a/src/iTPS/core/contract_ctm/correlation.cpp b/src/iTPS/core/contract_itps_ctm/correlation.cpp similarity index 72% rename from src/iTPS/core/contract_ctm/correlation.cpp rename to src/iTPS/core/contract_itps_ctm/correlation.cpp index aae26227..6534cc87 100644 --- a/src/iTPS/core/contract_ctm/correlation.cpp +++ b/src/iTPS/core/contract_itps_ctm/correlation.cpp @@ -22,7 +22,7 @@ 2015 Dec. Tsuyoshi Okubo */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "../../../tensor.hpp" namespace tenes { @@ -32,9 +32,10 @@ namespace core { using mptensor::Axes; template -void StartCorrelation(tensor &A, const tensor &C1, const tensor &C4, - const tensor &eT1, const tensor &eT3, const tensor &eT4, - const tensor &Tn1, const tensor &op) { +void StartCorrelation_iTPS_CTM(tensor &A, const tensor &C1, const tensor &C4, + const tensor &eT1, const tensor &eT3, + const tensor &eT4, const tensor &Tn1, + const tensor &op) { //////////////////////////////////////////////////////////// // (eT1*(Tn1*((Tn2*op)*(eT3*(C1*(C4*eT4)))))) // cpu_cost= 7.5525e+06 memory= 192500 @@ -58,8 +59,8 @@ void StartCorrelation(tensor &A, const tensor &C1, const tensor &C4, } template -void Transfer(tensor &A, const tensor &eT1, const tensor &eT3, - const tensor &Tn1) { +void Transfer_iTPS_CTM(tensor &A, const tensor &eT1, const tensor &eT3, + const tensor &Tn1) { //////////////////////////////////////////////////////////// // (eT1*(Tn1*(Tn2*(A*eT3)))) // cpu_cost= 7.5e+06 memory= 192500 @@ -77,7 +78,7 @@ void Transfer(tensor &A, const tensor &eT1, const tensor &eT3, } template -typename tensor::value_type FinishCorrelation( +typename tensor::value_type FinishCorrelation_iTPS_CTM( const tensor &A, const tensor &C2, const tensor &C3, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &Tn1, const tensor &op) { //////////////////////////////////////////////////////////// @@ -103,33 +104,36 @@ typename tensor::value_type FinishCorrelation( Axes(0, 1), Axes(0, 1)); } -template void StartCorrelation(real_tensor &A, const real_tensor &C1, - const real_tensor &C4, const real_tensor &eT1, - const real_tensor &eT3, const real_tensor &eT4, - const real_tensor &Tn1, const real_tensor &op); -template void StartCorrelation(complex_tensor &A, const complex_tensor &C1, - const complex_tensor &C4, - const complex_tensor &eT1, - const complex_tensor &eT3, - const complex_tensor &eT4, - const complex_tensor &Tn1, - const complex_tensor &op); - -template void Transfer(real_tensor &A, const real_tensor &eT1, - const real_tensor &eT3, const real_tensor &Tn1); -template void Transfer(complex_tensor &A, const complex_tensor &eT1, - const complex_tensor &eT3, const complex_tensor &Tn1); - -template typename real_tensor::value_type FinishCorrelation( +// start of explicit instantiation + +template void StartCorrelation_iTPS_CTM( + real_tensor &A, const real_tensor &C1, const real_tensor &C4, + const real_tensor &eT1, const real_tensor &eT3, const real_tensor &eT4, + const real_tensor &Tn1, const real_tensor &op); +template void StartCorrelation_iTPS_CTM( + complex_tensor &A, const complex_tensor &C1, const complex_tensor &C4, + const complex_tensor &eT1, const complex_tensor &eT3, + const complex_tensor &eT4, const complex_tensor &Tn1, + const complex_tensor &op); + +template void Transfer_iTPS_CTM(real_tensor &A, const real_tensor &eT1, + const real_tensor &eT3, const real_tensor &Tn1); +template void Transfer_iTPS_CTM(complex_tensor &A, const complex_tensor &eT1, + const complex_tensor &eT3, + const complex_tensor &Tn1); + +template typename real_tensor::value_type FinishCorrelation_iTPS_CTM( const real_tensor &A, const real_tensor &C2, const real_tensor &C3, const real_tensor &eT1, const real_tensor &eT2, const real_tensor &eT3, const real_tensor &Tn1, const real_tensor &op); -template typename complex_tensor::value_type FinishCorrelation( +template typename complex_tensor::value_type FinishCorrelation_iTPS_CTM( const complex_tensor &A, const complex_tensor &C2, const complex_tensor &C3, const complex_tensor &eT1, const complex_tensor &eT2, const complex_tensor &eT3, const complex_tensor &Tn1, const complex_tensor &op); +// end of explicit instantiation + } // end of namespace core } // namespace itps } // namespace tenes diff --git a/src/iTPS/core/contract_ctm/ctm.cpp b/src/iTPS/core/contract_itps_ctm/ctm.cpp similarity index 77% rename from src/iTPS/core/contract_ctm/ctm.cpp rename to src/iTPS/core/contract_itps_ctm/ctm.cpp index 7a7f7601..84808a91 100644 --- a/src/iTPS/core/contract_ctm/ctm.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm.cpp @@ -22,7 +22,7 @@ 2015 Dec. Tsuyoshi Okubo */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "../../../tensor.hpp" @@ -43,7 +43,7 @@ using mptensor::Axes; * @param[in] op onesite operators */ template -typename tensor::value_type Contract( +typename tensor::value_type Contract_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -54,11 +54,12 @@ typename tensor::value_type Contract( const size_t nrow = Tn.size(); const size_t ncol = Tn[0].size(); -#define CALL_CONTRACT(NROW, NCOL) \ - do { \ - if (nrow == NROW && ncol == NCOL) { \ - return Contract_##NROW##x##NCOL(C, eTt, eTr, eTb, eTl, Tn, op); \ - } \ +#define CALL_CONTRACT(NROW, NCOL) \ + do { \ + if (nrow == NROW && ncol == NCOL) { \ + return Contract_##NROW##x##NCOL##_iTPS_CTM(C, eTt, eTr, eTb, eTl, Tn, \ + op); \ + } \ } while (false) CALL_CONTRACT(1, 1); @@ -81,12 +82,12 @@ typename tensor::value_type Contract( #undef CALL_CONTRACT std::stringstream ss; - ss << "Contract_" << nrow << "_" << ncol << " is not implemented"; + ss << "Contract_" << nrow << "_" << ncol << "_iTPS_CTM is not implemented"; throw std::runtime_error(ss.str()); } template -typename tensor::value_type Contract_one_site( +typename tensor::value_type Contract_one_site_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &Tn1, const tensor &op1) { @@ -112,7 +113,7 @@ typename tensor::value_type Contract_one_site( } template -typename tensor::value_type Contract_two_sites_horizontal( +typename tensor::value_type Contract_two_sites_horizontal_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, @@ -160,7 +161,7 @@ typename tensor::value_type Contract_two_sites_horizontal( } template -typename tensor::value_type Contract_two_sites_vertical( +typename tensor::value_type Contract_two_sites_vertical_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, @@ -210,7 +211,7 @@ typename tensor::value_type Contract_two_sites_vertical( } template -typename tensor::value_type Contract_two_sites_horizontal_op12( +typename tensor::value_type Contract_two_sites_horizontal_op12_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, @@ -263,7 +264,7 @@ typename tensor::value_type Contract_two_sites_horizontal_op12( } template -typename tensor::value_type Contract_two_sites_vertical_op12( +typename tensor::value_type Contract_two_sites_vertical_op12_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, @@ -318,7 +319,7 @@ typename tensor::value_type Contract_two_sites_vertical_op12( } template -typename tensor::value_type Contract_four_sites( +typename tensor::value_type Contract_four_sites_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &eT7, const tensor &eT8, @@ -392,13 +393,11 @@ typename tensor::value_type Contract_four_sites( Axes(0, 1, 2, 3, 4, 5), Axes(0, 3, 1, 4, 2, 5)); } - template -typename tensor::value_type Contract_one_site_density( +typename tensor::value_type Contract_one_site_density_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &Tn1, const tensor &op1) { - //////////////////////////////////////////////////////////// // contract_one_site_density.dat //////////////////////////////////////////////////////////// @@ -407,28 +406,23 @@ typename tensor::value_type Contract_one_site_density( // final_bond_order () //////////////////////////////////////////////////////////// return trace( - op1, tensordot( - Tn1, tensordot( - tensordot( - eT1, tensordot( - C1, eT4, Axes(0), Axes(1) - ), Axes(0), Axes(0) - ), tensordot( - tensordot( - C2, eT2, Axes(1), Axes(0) - ), tensordot( - C3, tensordot( - C4, eT3, Axes(0), Axes(1) - ), Axes(1), Axes(1) - ), Axes(1), Axes(0) - ), Axes(0, 2), Axes(0, 2) - ), Axes(0, 1, 2, 3), Axes(1, 0, 2, 3) - ), Axes(0, 1), Axes(0, 1) - ); + op1, + tensordot( + Tn1, + tensordot( + tensordot(eT1, tensordot(C1, eT4, Axes(0), Axes(1)), Axes(0), + Axes(0)), + tensordot(tensordot(C2, eT2, Axes(1), Axes(0)), + tensordot(C3, tensordot(C4, eT3, Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(1), Axes(0)), + Axes(0, 2), Axes(0, 2)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); } template -typename tensor::value_type Contract_two_sites_horizontal_density( +typename tensor::value_type Contract_two_sites_horizontal_density_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, @@ -441,41 +435,37 @@ typename tensor::value_type Contract_two_sites_horizontal_density( // final_bond_order () //////////////////////////////////////////////////////////// return trace( - op1, tensordot( - Tn1, tensordot( - tensordot( - eT1, tensordot( - C1, eT6, Axes(0), Axes(1) - ), Axes(0), Axes(0) - ), tensordot( - tensordot( - C4, eT5, Axes(0), Axes(1) - ), tensordot( - eT2, tensordot( - tensordot( - Tn2, op2, Axes(4, 5), Axes(0, 1) - ), tensordot( - eT4, tensordot( - C2, tensordot( - C3, eT3, Axes(0), Axes(1) - ), Axes(1), Axes(1) - ), Axes(0), Axes(1) - ), Axes(2, 3), Axes(3, 1) - ), Axes(1, 2), Axes(3, 1) - ), Axes(1), Axes(2) - ), Axes(0, 2), Axes(2, 0) - ), Axes(0, 1, 2, 3), Axes(1, 0, 3, 2) - ), Axes(0, 1), Axes(0, 1) - ); + op1, + tensordot( + Tn1, + tensordot( + tensordot(eT1, tensordot(C1, eT6, Axes(0), Axes(1)), Axes(0), + Axes(0)), + tensordot( + tensordot(C4, eT5, Axes(0), Axes(1)), + tensordot( + eT2, + tensordot(tensordot(Tn2, op2, Axes(4, 5), Axes(0, 1)), + tensordot(eT4, + tensordot(C2, + tensordot(C3, eT3, Axes(0), + Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(3, 1)), + Axes(1), Axes(2)), + Axes(0, 2), Axes(2, 0)), + Axes(0, 1, 2, 3), Axes(1, 0, 3, 2)), + Axes(0, 1), Axes(0, 1)); } template -typename tensor::value_type Contract_two_sites_vertical_density( +typename tensor::value_type Contract_two_sites_vertical_density_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, const tensor &op1, const tensor &op2) { - //////////////////////////////////////////////////////////// // contract_two_site_vertical_density.dat //////////////////////////////////////////////////////////// @@ -483,42 +473,38 @@ typename tensor::value_type Contract_two_sites_vertical_density( // cpu_cost= 1.16e+07 memory= 178408 // final_bond_order () //////////////////////////////////////////////////////////// - return trace( - op1, tensordot( - Tn1, tensordot( - tensordot( - eT1, tensordot( - C1, eT6, Axes(0), Axes(1) - ), Axes(0), Axes(0) - ), tensordot( - tensordot( - C2, eT2, Axes(1), Axes(0) - ), tensordot( - eT3, tensordot( - tensordot( - Tn2, op2, Axes(4, 5), Axes(0, 1) - ), tensordot( - eT5, tensordot( - C3, tensordot( - C4, eT4, Axes(0), Axes(1) - ), Axes(1), Axes(1) - ), Axes(0), Axes(1) - ), Axes(0, 3), Axes(1, 3) - ), Axes(1, 2), Axes(3, 1) - ), Axes(1), Axes(0) - ), Axes(0, 2), Axes(0, 3) - ), Axes(0, 1, 2, 3), Axes(1, 0, 2, 3) - ), Axes(0, 1), Axes(0, 1) - ); + return trace( + op1, + tensordot( + Tn1, + tensordot( + tensordot(eT1, tensordot(C1, eT6, Axes(0), Axes(1)), Axes(0), + Axes(0)), + tensordot( + tensordot(C2, eT2, Axes(1), Axes(0)), + tensordot( + eT3, + tensordot(tensordot(Tn2, op2, Axes(4, 5), Axes(0, 1)), + tensordot(eT5, + tensordot(C3, + tensordot(C4, eT4, Axes(0), + Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(3, 1)), + Axes(1), Axes(0)), + Axes(0, 2), Axes(0, 3)), + Axes(0, 1, 2, 3), Axes(1, 0, 2, 3)), + Axes(0, 1), Axes(0, 1)); } template -typename tensor::value_type Contract_two_sites_horizontal_op12_density( +typename tensor::value_type Contract_two_sites_horizontal_op12_density_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, const tensor &op12) { - //////////////////////////////////////////////////////////// // contract_two_site_horizontal_op12_density.dat //////////////////////////////////////////////////////////// @@ -527,40 +513,38 @@ typename tensor::value_type Contract_two_sites_horizontal_op12_density( // final_bond_order () //////////////////////////////////////////////////////////// return trace( - op12, tensordot( - tensordot( - eT1, tensordot( - Tn1, tensordot( - eT5, tensordot( - C1, tensordot( - C4, eT6, Axes(1), Axes(0) - ), Axes(0), Axes(1) - ), Axes(1), Axes(1) - ), Axes(0, 3), Axes(3, 1) - ), Axes(0, 2), Axes(5, 0) - ), tensordot( - eT2, tensordot( - Tn2, tensordot( - eT4, tensordot( - C2, tensordot( - C3, eT3, Axes(0), Axes(1) - ), Axes(1), Axes(1) - ), Axes(0), Axes(1) - ), Axes(2, 3), Axes(3, 1) - ), Axes(1, 2), Axes(5, 1) - ), Axes(0, 1, 4), Axes(0, 1, 4) - ), Axes(0, 1, 2, 3), Axes(0, 2, 1, 3) - ); - + op12, + tensordot( + tensordot( + eT1, + tensordot( + Tn1, + tensordot(eT5, + tensordot(C1, tensordot(C4, eT6, Axes(1), Axes(0)), + Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(0, 3), Axes(3, 1)), + Axes(0, 2), Axes(5, 0)), + tensordot( + eT2, + tensordot( + Tn2, + tensordot(eT4, + tensordot(C2, tensordot(C3, eT3, Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(2, 3), Axes(3, 1)), + Axes(1, 2), Axes(5, 1)), + Axes(0, 1, 4), Axes(0, 1, 4)), + Axes(0, 1, 2, 3), Axes(0, 2, 1, 3)); } template -typename tensor::value_type Contract_two_sites_vertical_op12_density( +typename tensor::value_type Contract_two_sites_vertical_op12_density_iTPS_CTM( const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, const tensor &op12) { - //////////////////////////////////////////////////////////// // contract_two_site_vertical_op12_density.dat //////////////////////////////////////////////////////////// @@ -569,30 +553,30 @@ typename tensor::value_type Contract_two_sites_vertical_op12_density( // final_bond_order () //////////////////////////////////////////////////////////// return trace( - op12, tensordot( - tensordot( - eT2, tensordot( - Tn1, tensordot( - eT6, tensordot( - C1, tensordot( - C2, eT1, Axes(0), Axes(1) - ), Axes(1), Axes(1) - ), Axes(1), Axes(0) - ), Axes(0, 1), Axes(1, 3) - ), Axes(0, 2), Axes(5, 0) - ), tensordot( - eT3, tensordot( - Tn2, tensordot( - eT5, tensordot( - C3, tensordot( - C4, eT4, Axes(0), Axes(1) - ), Axes(1), Axes(1) - ), Axes(0), Axes(1) - ), Axes(0, 3), Axes(1, 3) - ), Axes(1, 2), Axes(5, 1) - ), Axes(0, 1, 4), Axes(0, 1, 4) - ), Axes(0, 1, 2, 3), Axes(0, 2, 1, 3) - ); + op12, + tensordot( + tensordot( + eT2, + tensordot( + Tn1, + tensordot(eT6, + tensordot(C1, tensordot(C2, eT1, Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(1), Axes(0)), + Axes(0, 1), Axes(1, 3)), + Axes(0, 2), Axes(5, 0)), + tensordot( + eT3, + tensordot( + Tn2, + tensordot(eT5, + tensordot(C3, tensordot(C4, eT4, Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(0, 3), Axes(1, 3)), + Axes(1, 2), Axes(5, 1)), + Axes(0, 1, 4), Axes(0, 1, 4)), + Axes(0, 1, 2, 3), Axes(0, 2, 1, 3)); } } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_1x1.cpp b/src/iTPS/core/contract_itps_ctm/ctm_1x1.cpp similarity index 94% rename from src/iTPS/core/contract_ctm/ctm_1x1.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_1x1.cpp index 43803052..c6bedd15 100644 --- a/src/iTPS/core/contract_ctm/ctm_1x1.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_1x1.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_1x1( +typename tensor::value_type Contract_1x1_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -72,8 +72,8 @@ typename tensor::value_type Contract_1x1( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 1, 1); -INSTANTIATE_CONTRACT(complex_tensor, 1, 1); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 1, 1); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 1, 1); //! @endcond } // end of namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_1x2.cpp b/src/iTPS/core/contract_itps_ctm/ctm_1x2.cpp similarity index 95% rename from src/iTPS/core/contract_ctm/ctm_1x2.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_1x2.cpp index 40958e20..f30fd945 100644 --- a/src/iTPS/core/contract_ctm/ctm_1x2.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_1x2.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_1x2( +typename tensor::value_type Contract_1x2_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -87,8 +87,8 @@ typename tensor::value_type Contract_1x2( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 1, 2); -INSTANTIATE_CONTRACT(complex_tensor, 1, 2); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 1, 2); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 1, 2); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_1x3.cpp b/src/iTPS/core/contract_itps_ctm/ctm_1x3.cpp similarity index 96% rename from src/iTPS/core/contract_ctm/ctm_1x3.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_1x3.cpp index 8465806a..7bd31ea5 100644 --- a/src/iTPS/core/contract_ctm/ctm_1x3.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_1x3.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_1x3( +typename tensor::value_type Contract_1x3_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -104,8 +104,8 @@ typename tensor::value_type Contract_1x3( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 1, 3); -INSTANTIATE_CONTRACT(complex_tensor, 1, 3); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 1, 3); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 1, 3); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_1x4.cpp b/src/iTPS/core/contract_itps_ctm/ctm_1x4.cpp similarity index 97% rename from src/iTPS/core/contract_ctm/ctm_1x4.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_1x4.cpp index 0799803d..89136e2c 100644 --- a/src/iTPS/core/contract_ctm/ctm_1x4.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_1x4.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_1x4( +typename tensor::value_type Contract_1x4_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -133,8 +133,8 @@ typename tensor::value_type Contract_1x4( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 1, 4); -INSTANTIATE_CONTRACT(complex_tensor, 1, 4); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 1, 4); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 1, 4); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_2x1.cpp b/src/iTPS/core/contract_itps_ctm/ctm_2x1.cpp similarity index 95% rename from src/iTPS/core/contract_ctm/ctm_2x1.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_2x1.cpp index 0693396a..025a6324 100644 --- a/src/iTPS/core/contract_ctm/ctm_2x1.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_2x1.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_2x1( +typename tensor::value_type Contract_2x1_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -87,8 +87,8 @@ typename tensor::value_type Contract_2x1( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 2, 1); -INSTANTIATE_CONTRACT(complex_tensor, 2, 1); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 2, 1); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 2, 1); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_2x2.cpp b/src/iTPS/core/contract_itps_ctm/ctm_2x2.cpp similarity index 96% rename from src/iTPS/core/contract_ctm/ctm_2x2.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_2x2.cpp index dd37838f..3dc73779 100644 --- a/src/iTPS/core/contract_ctm/ctm_2x2.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_2x2.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_2x2( +typename tensor::value_type Contract_2x2_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -103,8 +103,8 @@ typename tensor::value_type Contract_2x2( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 2, 2); -INSTANTIATE_CONTRACT(complex_tensor, 2, 2); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 2, 2); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 2, 2); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_2x3.cpp b/src/iTPS/core/contract_itps_ctm/ctm_2x3.cpp similarity index 97% rename from src/iTPS/core/contract_ctm/ctm_2x3.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_2x3.cpp index 6c2e91ff..c64d2e2e 100644 --- a/src/iTPS/core/contract_ctm/ctm_2x3.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_2x3.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_2x3( +typename tensor::value_type Contract_2x3_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -140,8 +140,8 @@ typename tensor::value_type Contract_2x3( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 2, 3); -INSTANTIATE_CONTRACT(complex_tensor, 2, 3); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 2, 3); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 2, 3); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_2x4.cpp b/src/iTPS/core/contract_itps_ctm/ctm_2x4.cpp similarity index 98% rename from src/iTPS/core/contract_ctm/ctm_2x4.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_2x4.cpp index b4d3da8d..61c795e9 100644 --- a/src/iTPS/core/contract_ctm/ctm_2x4.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_2x4.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_2x4( +typename tensor::value_type Contract_2x4_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -224,8 +224,8 @@ typename tensor::value_type Contract_2x4( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 2, 4); -INSTANTIATE_CONTRACT(complex_tensor, 2, 4); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 2, 4); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 2, 4); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_3x1.cpp b/src/iTPS/core/contract_itps_ctm/ctm_3x1.cpp similarity index 96% rename from src/iTPS/core/contract_ctm/ctm_3x1.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_3x1.cpp index 6bd8d8ce..de3e472e 100644 --- a/src/iTPS/core/contract_ctm/ctm_3x1.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_3x1.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_3x1( +typename tensor::value_type Contract_3x1_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -104,8 +104,8 @@ typename tensor::value_type Contract_3x1( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 3, 1); -INSTANTIATE_CONTRACT(complex_tensor, 3, 1); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 3, 1); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 3, 1); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_3x2.cpp b/src/iTPS/core/contract_itps_ctm/ctm_3x2.cpp similarity index 97% rename from src/iTPS/core/contract_ctm/ctm_3x2.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_3x2.cpp index a55e6af7..ee3ae35b 100644 --- a/src/iTPS/core/contract_ctm/ctm_3x2.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_3x2.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_3x2( +typename tensor::value_type Contract_3x2_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -140,8 +140,8 @@ typename tensor::value_type Contract_3x2( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 3, 2); -INSTANTIATE_CONTRACT(complex_tensor, 3, 2); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 3, 2); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 3, 2); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_3x3.cpp b/src/iTPS/core/contract_itps_ctm/ctm_3x3.cpp similarity index 98% rename from src/iTPS/core/contract_ctm/ctm_3x3.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_3x3.cpp index 59cadeba..0e0ab2aa 100644 --- a/src/iTPS/core/contract_ctm/ctm_3x3.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_3x3.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_3x3( +typename tensor::value_type Contract_3x3_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -251,8 +251,8 @@ typename tensor::value_type Contract_3x3( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 3, 3); -INSTANTIATE_CONTRACT(complex_tensor, 3, 3); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 3, 3); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 3, 3); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_3x4.cpp b/src/iTPS/core/contract_itps_ctm/ctm_3x4.cpp similarity index 99% rename from src/iTPS/core/contract_ctm/ctm_3x4.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_3x4.cpp index ee0dac64..57cb0895 100644 --- a/src/iTPS/core/contract_ctm/ctm_3x4.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_3x4.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_3x4( +typename tensor::value_type Contract_3x4_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -234,8 +234,8 @@ typename tensor::value_type Contract_3x4( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 3, 4); -INSTANTIATE_CONTRACT(complex_tensor, 3, 4); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 3, 4); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 3, 4); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_4x1.cpp b/src/iTPS/core/contract_itps_ctm/ctm_4x1.cpp similarity index 97% rename from src/iTPS/core/contract_ctm/ctm_4x1.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_4x1.cpp index 13dac6ea..a10da4bb 100644 --- a/src/iTPS/core/contract_ctm/ctm_4x1.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_4x1.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_4x1( +typename tensor::value_type Contract_4x1_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -133,8 +133,8 @@ typename tensor::value_type Contract_4x1( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 4, 1); -INSTANTIATE_CONTRACT(complex_tensor, 4, 1); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 4, 1); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 4, 1); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_4x2.cpp b/src/iTPS/core/contract_itps_ctm/ctm_4x2.cpp similarity index 98% rename from src/iTPS/core/contract_ctm/ctm_4x2.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_4x2.cpp index 2dbcb5c8..b8584e02 100644 --- a/src/iTPS/core/contract_ctm/ctm_4x2.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_4x2.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_4x2( +typename tensor::value_type Contract_4x2_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -224,8 +224,8 @@ typename tensor::value_type Contract_4x2( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 4, 2); -INSTANTIATE_CONTRACT(complex_tensor, 4, 2); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 4, 2); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 4, 2); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_4x3.cpp b/src/iTPS/core/contract_itps_ctm/ctm_4x3.cpp similarity index 99% rename from src/iTPS/core/contract_ctm/ctm_4x3.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_4x3.cpp index a476dde8..233eb675 100644 --- a/src/iTPS/core/contract_ctm/ctm_4x3.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_4x3.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_4x3( +typename tensor::value_type Contract_4x3_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -283,8 +283,8 @@ typename tensor::value_type Contract_4x3( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 4, 3); -INSTANTIATE_CONTRACT(complex_tensor, 4, 3); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 4, 3); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 4, 3); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/ctm_4x4.cpp b/src/iTPS/core/contract_itps_ctm/ctm_4x4.cpp similarity index 99% rename from src/iTPS/core/contract_ctm/ctm_4x4.cpp rename to src/iTPS/core/contract_itps_ctm/ctm_4x4.cpp index 40bfde1f..fdd02e92 100644 --- a/src/iTPS/core/contract_ctm/ctm_4x4.cpp +++ b/src/iTPS/core/contract_itps_ctm/ctm_4x4.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_ctm.hpp" +#include "../contract_itps_ctm.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_4x4( +typename tensor::value_type Contract_4x4_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -274,8 +274,8 @@ typename tensor::value_type Contract_4x4( } //! @cond -INSTANTIATE_CONTRACT(real_tensor, 4, 4); -INSTANTIATE_CONTRACT(complex_tensor, 4, 4); +INSTANTIATE_CONTRACT_ITPS_CTM(real_tensor, 4, 4); +INSTANTIATE_CONTRACT_ITPS_CTM(complex_tensor, 4, 4); //! @endcond } // namespace core diff --git a/src/iTPS/core/contract_ctm/instantiate.hpp b/src/iTPS/core/contract_itps_ctm/instantiate.hpp similarity index 58% rename from src/iTPS/core/contract_ctm/instantiate.hpp rename to src/iTPS/core/contract_itps_ctm/instantiate.hpp index 5fbe8dad..62b81ed1 100644 --- a/src/iTPS/core/contract_ctm/instantiate.hpp +++ b/src/iTPS/core/contract_itps_ctm/instantiate.hpp @@ -16,14 +16,14 @@ #include "../../../tensor.hpp" -#ifndef INSTANTIATE_CONTRACT -#define INSTANTIATE_CONTRACT(tensor_type, NROW, NCOL) \ - template tensor_type::value_type Contract_##NROW##x##NCOL( \ - const std::vector &C, \ - const std::vector &eTt, \ - const std::vector &eTr, \ - const std::vector &eTb, \ - const std::vector &eTl, \ - const std::vector> &Tn, \ +#ifndef INSTANTIATE_CONTRACT_ITPS_CTM +#define INSTANTIATE_CONTRACT_ITPS_CTM(tensor_type, NROW, NCOL) \ + template tensor_type::value_type Contract_##NROW##x##NCOL##_iTPS_CTM( \ + const std::vector &C, \ + const std::vector &eTt, \ + const std::vector &eTr, \ + const std::vector &eTb, \ + const std::vector &eTl, \ + const std::vector> &Tn, \ const std::vector> &op) #endif // INSTANTIATE_CONTRACT diff --git a/src/iTPS/core/contract_ctm/instantiate_ctm.hpp b/src/iTPS/core/contract_itps_ctm/instantiate_ctm.hpp similarity index 61% rename from src/iTPS/core/contract_ctm/instantiate_ctm.hpp rename to src/iTPS/core/contract_itps_ctm/instantiate_ctm.hpp index e33caabe..07900f05 100644 --- a/src/iTPS/core/contract_ctm/instantiate_ctm.hpp +++ b/src/iTPS/core/contract_itps_ctm/instantiate_ctm.hpp @@ -28,7 +28,7 @@ namespace tenes { namespace itps { namespace core { -template TENSOR_TYPE::value_type Contract( +template TENSOR_TYPE::value_type Contract_iTPS_CTM( const std::vector &C, const std::vector &eTt, const std::vector &eTr, @@ -37,41 +37,41 @@ template TENSOR_TYPE::value_type Contract( const std::vector> &Tn, const std::vector> &op); -template TENSOR_TYPE::value_type Contract_one_site( +template TENSOR_TYPE::value_type Contract_one_site_iTPS_CTM( const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &op1); -template TENSOR_TYPE::value_type Contract_two_sites_horizontal( +template TENSOR_TYPE::value_type Contract_two_sites_horizontal_iTPS_CTM( const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, const TENSOR_TYPE &op1, const TENSOR_TYPE &op2); -template TENSOR_TYPE::value_type Contract_two_sites_vertical( +template TENSOR_TYPE::value_type Contract_two_sites_vertical_iTPS_CTM( const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, const TENSOR_TYPE &op1, const TENSOR_TYPE &op2); -template TENSOR_TYPE::value_type Contract_two_sites_horizontal_op12( +template TENSOR_TYPE::value_type Contract_two_sites_horizontal_op12_iTPS_CTM( const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, const TENSOR_TYPE &op12); -template TENSOR_TYPE::value_type Contract_two_sites_vertical_op12( +template TENSOR_TYPE::value_type Contract_two_sites_vertical_op12_iTPS_CTM( const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, const TENSOR_TYPE &op12); -template TENSOR_TYPE::value_type Contract_four_sites( +template TENSOR_TYPE::value_type Contract_four_sites_iTPS_CTM( const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, @@ -79,40 +79,6 @@ template TENSOR_TYPE::value_type Contract_four_sites( const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, const TENSOR_TYPE &Tn3, const TENSOR_TYPE &Tn4, const TENSOR_TYPE &op1, const TENSOR_TYPE &op2, const TENSOR_TYPE &op3, const TENSOR_TYPE &op4); - -template TENSOR_TYPE::value_type Contract_one_site_density( - const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, - const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, - const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &Tn1, - const TENSOR_TYPE &op1); - -template TENSOR_TYPE::value_type Contract_two_sites_horizontal_density( - const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, - const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, - const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, - const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, - const TENSOR_TYPE &op1, const TENSOR_TYPE &op2); - -template TENSOR_TYPE::value_type Contract_two_sites_vertical_density( - const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, - const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, - const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, - const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, - const TENSOR_TYPE &op1, const TENSOR_TYPE &op2); - -template TENSOR_TYPE::value_type Contract_two_sites_horizontal_op12_density( - const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, - const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, - const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, - const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, - const TENSOR_TYPE &op12); - -template TENSOR_TYPE::value_type Contract_two_sites_vertical_op12_density( - const TENSOR_TYPE &C1, const TENSOR_TYPE &C2, const TENSOR_TYPE &C3, - const TENSOR_TYPE &C4, const TENSOR_TYPE &eT1, const TENSOR_TYPE &eT2, - const TENSOR_TYPE &eT3, const TENSOR_TYPE &eT4, const TENSOR_TYPE &eT5, - const TENSOR_TYPE &eT6, const TENSOR_TYPE &Tn1, const TENSOR_TYPE &Tn2, - const TENSOR_TYPE &op12); } // namespace core } // namespace itps } // namespace tenes diff --git a/src/iTPS/core/contract_mf.hpp b/src/iTPS/core/contract_itps_mf.hpp similarity index 67% rename from src/iTPS/core/contract_mf.hpp rename to src/iTPS/core/contract_itps_mf.hpp index 3ca26529..f6c1cd95 100644 --- a/src/iTPS/core/contract_mf.hpp +++ b/src/iTPS/core/contract_itps_mf.hpp @@ -22,8 +22,8 @@ 2015 Dec. Tsuyoshi Okubo */ -#ifndef TENES_SRC_ITPS_CORE_CONTRACT_MF_HPP_ -#define TENES_SRC_ITPS_CORE_CONTRACT_MF_HPP_ +#ifndef TENES_SRC_ITPS_CORE_CONTRACT_ITPS_iTPS_MF_HPP_ +#define TENES_SRC_ITPS_CORE_CONTRACT_ITPS_iTPS_MF_HPP_ #include #include @@ -41,34 +41,34 @@ namespace core { * Tn should absorb MF environment */ template -typename tensor::value_type Contract_MF( +typename tensor::value_type Contract_iTPS_MF( const std::vector> &Tn, const std::vector> &op); template -typename tensor::value_type Contract_one_site_MF(const tensor &Tn_0_0, - const tensor &op_0_0); +typename tensor::value_type Contract_one_site_iTPS_MF(const tensor &Tn_0_0, + const tensor &op_0_0); template -typename tensor::value_type Contract_two_sites_vertical_MF( +typename tensor::value_type Contract_two_sites_vertical_iTPS_MF( const tensor &Tn_0_0, const tensor &Tn_1_0, const tensor &op_0_0, const tensor &op_1_0); template -typename tensor::value_type Contract_two_sites_horizontal_MF( +typename tensor::value_type Contract_two_sites_horizontal_iTPS_MF( const tensor &Tn_0_0, const tensor &Tn_0_1, const tensor &op_0_0, const tensor &op_0_1); template -typename tensor::value_type Contract_two_sites_horizontal_op12_MF( +typename tensor::value_type Contract_two_sites_horizontal_op12_iTPS_MF( const tensor &Tn_0_0, const tensor &Tn_0_1, const tensor &op12); template -typename tensor::value_type Contract_two_sites_vertical_op12_MF( +typename tensor::value_type Contract_two_sites_vertical_op12_iTPS_MF( const tensor &Tn_0_0, const tensor &Tn_1_0, const tensor &op12); template -typename tensor::value_type Contract_four_sites_MF( +typename tensor::value_type Contract_four_sites_iTPS_MF( const tensor &Tn_0_0, const tensor &Tn_0_1, const tensor &Tn_1_0, const tensor &Tn_1_1, const tensor &op_0_0, const tensor &op_0_1, const tensor &op_1_0, const tensor &op_1_1); @@ -78,16 +78,16 @@ Declare template functions like template typename tensor::value_type -Contract_MF_1x1 ( +Contract_1x1_iTPS_MF ( const std::vector> &Tn, const std::vector> &op ) */ -#define DECLARE_CONTRACT(NROW, NCOL) \ - template \ - typename tensor::value_type Contract_MF_##NROW##x##NCOL( \ - const std::vector> &Tn, \ +#define DECLARE_CONTRACT(NROW, NCOL) \ + template \ + typename tensor::value_type Contract_##NROW##x##NCOL##_iTPS_MF( \ + const std::vector> &Tn, \ const std::vector> &op) //! @cond @@ -113,22 +113,22 @@ DECLARE_CONTRACT(4, 4); /* Lambda tensors should be absorbed before entering */ template -void StartCorrelation_MF(tensor &A, const tensor &Tn, const tensor &op, - size_t direction); +void StartCorrelation_iTPS_MF(tensor &A, const tensor &Tn, const tensor &op, + size_t direction); /* Lambda tensors should be absorbed before entering */ template -void Transfer_MF(tensor &A, const tensor &Tn, size_t direction); +void Transfer_iTPS_MF(tensor &A, const tensor &Tn, size_t direction); /* Lambda tensors should be absorbed before entering */ template -typename tensor::value_type FinishCorrelation_MF(const tensor &A, - const tensor &Tn, - const tensor &op, - size_t direction); +typename tensor::value_type FinishCorrelation_iTPS_MF(const tensor &A, + const tensor &Tn, + const tensor &op, + size_t direction); } // end of namespace core } // namespace itps } // namespace tenes -#endif // TENES_SRC_ITPS_CORE_CONTRACT_MF_HPP_ +#endif // TENES_SRC_ITPS_CORE_CONTRACT_iTPS_MF_HPP_ diff --git a/src/iTPS/core/contract_mf/CMakeLists.txt b/src/iTPS/core/contract_itps_mf/CMakeLists.txt similarity index 60% rename from src/iTPS/core/contract_mf/CMakeLists.txt rename to src/iTPS/core/contract_itps_mf/CMakeLists.txt index de8e9f14..07991150 100644 --- a/src/iTPS/core/contract_mf/CMakeLists.txt +++ b/src/iTPS/core/contract_itps_mf/CMakeLists.txt @@ -6,6 +6,6 @@ foreach(row 1 2 3 4) endforeach() endforeach() -add_library(iTPS_contract_mf STATIC ${src_files}) +add_library(iTPS_contract_itps_mf STATIC ${src_files}) -target_link_libraries(iTPS_contract_mf PUBLIC tensor) +target_link_libraries(iTPS_contract_itps_mf PUBLIC tensor) diff --git a/src/iTPS/core/contract_mf/correlation.cpp b/src/iTPS/core/contract_itps_mf/correlation.cpp similarity index 55% rename from src/iTPS/core/contract_mf/correlation.cpp rename to src/iTPS/core/contract_itps_mf/correlation.cpp index b21adc1c..7b2a0d21 100644 --- a/src/iTPS/core/contract_mf/correlation.cpp +++ b/src/iTPS/core/contract_itps_mf/correlation.cpp @@ -22,7 +22,7 @@ 2015 Dec. Tsuyoshi Okubo */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "../../../tensor.hpp" namespace tenes { @@ -33,8 +33,8 @@ using mptensor::Axes; /* Lambda tensors should be absorbed before entering */ template -void StartCorrelation_MF(tensor &A, const tensor &Tn, const tensor &op, - size_t direction) { +void StartCorrelation_iTPS_MF(tensor &A, const tensor &Tn, const tensor &op, + size_t direction) { Axes axes; for (size_t dir = 0; dir < direction; ++dir) { axes.push(dir); @@ -49,7 +49,7 @@ void StartCorrelation_MF(tensor &A, const tensor &Tn, const tensor &op, /* Lambda tensors should be absorbed before entering */ template -void Transfer_MF(tensor &A, const tensor &Tn, size_t direction) { +void Transfer_iTPS_MF(tensor &A, const tensor &Tn, size_t direction) { size_t direction2 = (direction + 2) % 4; Axes axes; @@ -66,41 +66,47 @@ void Transfer_MF(tensor &A, const tensor &Tn, size_t direction) { /* Lambda tensors should be absorbed before entering */ template -typename tensor::value_type FinishCorrelation_MF(const tensor &A, - const tensor &Tn, - const tensor &op, - size_t direction) { +typename tensor::value_type FinishCorrelation_iTPS_MF(const tensor &A, + const tensor &Tn, + const tensor &op, + size_t direction) { direction += 2; direction %= 4; Axes axes; - for (size_t dir = 0; dir < direction; ++dir) { - axes.push(dir); - } - for (size_t dir = direction + 1; dir < 4; ++dir) { - axes.push(dir); + for(int d=0; d<4; ++d){ + if (d == direction) continue; + axes.push(d); } axes.push(4); - tensor B = - tensordot(Tn, tensordot(conj(Tn), op, Axes(4), Axes(1)), axes, axes); - return trace(tensordot(A, B, Axes(0, 1), Axes(0, 1))); + //////////////////////////////////////////////////////////// + // (A*(Tn*(conj(Tn)*op))) + // cpu_cost= 2.0001e+06 memory= 300200 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace(A, + tensordot(Tn, tensordot(conj(Tn), op, Axes(4), Axes(1)), + axes, axes), + Axes(0, 1), Axes(0, 1)); } -template void StartCorrelation_MF(real_tensor &A, const real_tensor &Tn, - const real_tensor &op, size_t direction); -template void StartCorrelation_MF(complex_tensor &A, const complex_tensor &Tn, - const complex_tensor &op, size_t direction); +template void StartCorrelation_iTPS_MF(real_tensor &A, const real_tensor &Tn, + const real_tensor &op, size_t direction); +template void StartCorrelation_iTPS_MF(complex_tensor &A, + const complex_tensor &Tn, + const complex_tensor &op, + size_t direction); -template void Transfer_MF(real_tensor &A, const real_tensor &Tn, - size_t direction); -template void Transfer_MF(complex_tensor &A, const complex_tensor &Tn, - size_t direction); +template void Transfer_iTPS_MF(real_tensor &A, const real_tensor &Tn, + size_t direction); +template void Transfer_iTPS_MF(complex_tensor &A, const complex_tensor &Tn, + size_t direction); -template typename real_tensor::value_type FinishCorrelation_MF( +template typename real_tensor::value_type FinishCorrelation_iTPS_MF( const real_tensor &A, const real_tensor &Tn, const real_tensor &op, size_t direction); -template typename complex_tensor::value_type FinishCorrelation_MF( +template typename complex_tensor::value_type FinishCorrelation_iTPS_MF( const complex_tensor &A, const complex_tensor &Tn, const complex_tensor &op, size_t direction); diff --git a/src/iTPS/core/contract_mf/instantiate.hpp b/src/iTPS/core/contract_itps_mf/instantiate.hpp similarity index 92% rename from src/iTPS/core/contract_mf/instantiate.hpp rename to src/iTPS/core/contract_itps_mf/instantiate.hpp index a32b4a06..5d1b4375 100644 --- a/src/iTPS/core/contract_mf/instantiate.hpp +++ b/src/iTPS/core/contract_itps_mf/instantiate.hpp @@ -17,8 +17,8 @@ #include "../../../tensor.hpp" #ifndef INSTANTIATE_CONTRACT -#define INSTANTIATE_CONTRACT(tensor_type, NROW, NCOL) \ - template tensor_type::value_type Contract_MF_##NROW##x##NCOL( \ - const std::vector> &Tn, \ +#define INSTANTIATE_CONTRACT(tensor_type, NROW, NCOL) \ + template tensor_type::value_type Contract_##NROW##x##NCOL##_iTPS_MF( \ + const std::vector> &Tn, \ const std::vector> &op) #endif // INSTANTIATE_CONTRACT diff --git a/src/iTPS/core/contract_mf/instantiate_mf.hpp b/src/iTPS/core/contract_itps_mf/instantiate_mf.hpp similarity index 85% rename from src/iTPS/core/contract_mf/instantiate_mf.hpp rename to src/iTPS/core/contract_itps_mf/instantiate_mf.hpp index abb21c37..0795b377 100644 --- a/src/iTPS/core/contract_mf/instantiate_mf.hpp +++ b/src/iTPS/core/contract_itps_mf/instantiate_mf.hpp @@ -30,30 +30,30 @@ namespace tenes { namespace itps { namespace core { -template TENSOR_TYPE::value_type Contract_MF( +template TENSOR_TYPE::value_type Contract_iTPS_MF( const std::vector> &Tn, const std::vector> &op); -template TENSOR_TYPE::value_type Contract_one_site_MF( +template TENSOR_TYPE::value_type Contract_one_site_iTPS_MF( const TENSOR_TYPE &Tn_0_0, const TENSOR_TYPE &op_0_0); -template TENSOR_TYPE::value_type Contract_two_sites_vertical_MF( +template TENSOR_TYPE::value_type Contract_two_sites_vertical_iTPS_MF( const TENSOR_TYPE &Tn_0_0, const TENSOR_TYPE &Tn_1_0, const TENSOR_TYPE &op_0_0, const TENSOR_TYPE &op_1_0); -template TENSOR_TYPE::value_type Contract_two_sites_horizontal_MF( +template TENSOR_TYPE::value_type Contract_two_sites_horizontal_iTPS_MF( const TENSOR_TYPE &Tn_0_0, const TENSOR_TYPE &Tn_0_1, const TENSOR_TYPE &op_0_0, const TENSOR_TYPE &op_0_1); -template TENSOR_TYPE::value_type Contract_two_sites_horizontal_op12_MF( +template TENSOR_TYPE::value_type Contract_two_sites_horizontal_op12_iTPS_MF( const TENSOR_TYPE &Tn_0_0, const TENSOR_TYPE &Tn_0_1, const TENSOR_TYPE &op12); -template TENSOR_TYPE::value_type Contract_two_sites_vertical_op12_MF( +template TENSOR_TYPE::value_type Contract_two_sites_vertical_op12_iTPS_MF( const TENSOR_TYPE &Tn_0_0, const TENSOR_TYPE &Tn_1_0, const TENSOR_TYPE &op12); -template TENSOR_TYPE::value_type Contract_four_sites_MF( +template TENSOR_TYPE::value_type Contract_four_sites_iTPS_MF( const TENSOR_TYPE &Tn_0_0, const TENSOR_TYPE &Tn_0_1, const TENSOR_TYPE &Tn_1_0, const TENSOR_TYPE &Tn_1_1, const TENSOR_TYPE &op_0_0, const TENSOR_TYPE &op_0_1, diff --git a/src/iTPS/core/contract_mf/mf.cpp b/src/iTPS/core/contract_itps_mf/mf.cpp similarity index 88% rename from src/iTPS/core/contract_mf/mf.cpp rename to src/iTPS/core/contract_itps_mf/mf.cpp index 0668fc10..f784adaa 100644 --- a/src/iTPS/core/contract_mf/mf.cpp +++ b/src/iTPS/core/contract_itps_mf/mf.cpp @@ -25,7 +25,7 @@ #include #include -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "../../../tensor.hpp" namespace tenes { @@ -43,17 +43,17 @@ using mptensor::Axes; * Tn should absorb MF environment */ template -typename tensor::value_type Contract_MF( +typename tensor::value_type Contract_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { const size_t nrow = Tn.size(); const size_t ncol = Tn[0].size(); -#define CALL_CONTRACT(NROW, NCOL) \ - do { \ - if (nrow == NROW && ncol == NCOL) { \ - return Contract_MF_##NROW##x##NCOL(Tn, op); \ - } \ +#define CALL_CONTRACT(NROW, NCOL) \ + do { \ + if (nrow == NROW && ncol == NCOL) { \ + return Contract_##NROW##x##NCOL##_iTPS_MF(Tn, op); \ + } \ } while (false) CALL_CONTRACT(1, 1); @@ -76,13 +76,13 @@ typename tensor::value_type Contract_MF( #undef CALL_CONTRACT std::stringstream ss; - ss << "Contract_MF_" << nrow << "_" << ncol << " is not implemented"; + ss << "Contract_iTPS_MF_" << nrow << "_" << ncol << " is not implemented"; throw std::runtime_error(ss.str()); } template -typename tensor::value_type Contract_one_site_MF(const tensor &Tn_0_0, - const tensor &op_0_0) { +typename tensor::value_type Contract_one_site_iTPS_MF(const tensor &Tn_0_0, + const tensor &op_0_0) { //////////////////////////////////////////////////////////// // (op_0_0*(Tn_0_0*conj(Tn_0_0))) // cpu_cost= 262208 memory= 65664 @@ -95,7 +95,7 @@ typename tensor::value_type Contract_one_site_MF(const tensor &Tn_0_0, } template -typename tensor::value_type Contract_two_sites_vertical_MF( +typename tensor::value_type Contract_two_sites_vertical_iTPS_MF( const tensor &Tn_0_0, const tensor &Tn_1_0, const tensor &op_0_0, const tensor &op_1_0) { //////////////////////////////////////////////////////////// @@ -117,7 +117,7 @@ typename tensor::value_type Contract_two_sites_vertical_MF( } template -typename tensor::value_type Contract_two_sites_horizontal_MF( +typename tensor::value_type Contract_two_sites_horizontal_iTPS_MF( const tensor &Tn_0_0, const tensor &Tn_0_1, const tensor &op_0_0, const tensor &op_0_1) { //////////////////////////////////////////////////////////// @@ -139,7 +139,7 @@ typename tensor::value_type Contract_two_sites_horizontal_MF( } template -typename tensor::value_type Contract_two_sites_horizontal_op12_MF( +typename tensor::value_type Contract_two_sites_horizontal_op12_iTPS_MF( const tensor &Tn_0_0, const tensor &Tn_0_1, const tensor &op12) { //////////////////////////////////////////////////////////// // (op12*((Tn_0_0*conj(Tn_0_0))*(Tn_0_1*conj(Tn_0_1)))) @@ -155,7 +155,7 @@ typename tensor::value_type Contract_two_sites_horizontal_op12_MF( } template -typename tensor::value_type Contract_two_sites_vertical_op12_MF( +typename tensor::value_type Contract_two_sites_vertical_op12_iTPS_MF( const tensor &Tn_0_0, const tensor &Tn_1_0, const tensor &op12) { //////////////////////////////////////////////////////////// // (op12*((Tn_0_0*conj(Tn_0_0))*(Tn_1_0*conj(Tn_1_0)))) @@ -171,7 +171,7 @@ typename tensor::value_type Contract_two_sites_vertical_op12_MF( } template -typename tensor::value_type Contract_four_sites_MF( +typename tensor::value_type Contract_four_sites_iTPS_MF( const tensor &Tn_0_0, const tensor &Tn_0_1, const tensor &Tn_1_0, const tensor &Tn_1_1, const tensor &op_0_0, const tensor &op_0_1, const tensor &op_1_0, const tensor &op_1_1) { diff --git a/src/iTPS/core/contract_mf/mf_1x1.cpp b/src/iTPS/core/contract_itps_mf/mf_1x1.cpp similarity index 95% rename from src/iTPS/core/contract_mf/mf_1x1.cpp rename to src/iTPS/core/contract_itps_mf/mf_1x1.cpp index 1a7e193c..78dfbdf9 100644 --- a/src/iTPS/core/contract_mf/mf_1x1.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_1x1.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_1x1( +typename tensor::value_type Contract_1x1_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_1x2.cpp b/src/iTPS/core/contract_itps_mf/mf_1x2.cpp similarity index 96% rename from src/iTPS/core/contract_mf/mf_1x2.cpp rename to src/iTPS/core/contract_itps_mf/mf_1x2.cpp index 61a9a5cb..f276e308 100644 --- a/src/iTPS/core/contract_mf/mf_1x2.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_1x2.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_1x2( +typename tensor::value_type Contract_1x2_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_1x3.cpp b/src/iTPS/core/contract_itps_mf/mf_1x3.cpp similarity index 96% rename from src/iTPS/core/contract_mf/mf_1x3.cpp rename to src/iTPS/core/contract_itps_mf/mf_1x3.cpp index 1571bb5c..0ba87a62 100644 --- a/src/iTPS/core/contract_mf/mf_1x3.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_1x3.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_1x3( +typename tensor::value_type Contract_1x3_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_1x4.cpp b/src/iTPS/core/contract_itps_mf/mf_1x4.cpp similarity index 97% rename from src/iTPS/core/contract_mf/mf_1x4.cpp rename to src/iTPS/core/contract_itps_mf/mf_1x4.cpp index 637cd179..605457e3 100644 --- a/src/iTPS/core/contract_mf/mf_1x4.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_1x4.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_1x4( +typename tensor::value_type Contract_1x4_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_2x1.cpp b/src/iTPS/core/contract_itps_mf/mf_2x1.cpp similarity index 96% rename from src/iTPS/core/contract_mf/mf_2x1.cpp rename to src/iTPS/core/contract_itps_mf/mf_2x1.cpp index 62ae2c8d..a34f9458 100644 --- a/src/iTPS/core/contract_mf/mf_2x1.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_2x1.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_2x1( +typename tensor::value_type Contract_2x1_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_2x2.cpp b/src/iTPS/core/contract_itps_mf/mf_2x2.cpp similarity index 97% rename from src/iTPS/core/contract_mf/mf_2x2.cpp rename to src/iTPS/core/contract_itps_mf/mf_2x2.cpp index 11a80a27..1d00d318 100644 --- a/src/iTPS/core/contract_mf/mf_2x2.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_2x2.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_2x2( +typename tensor::value_type Contract_2x2_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_2x3.cpp b/src/iTPS/core/contract_itps_mf/mf_2x3.cpp similarity index 97% rename from src/iTPS/core/contract_mf/mf_2x3.cpp rename to src/iTPS/core/contract_itps_mf/mf_2x3.cpp index b1f68080..bcb2994c 100644 --- a/src/iTPS/core/contract_mf/mf_2x3.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_2x3.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_2x3( +typename tensor::value_type Contract_2x3_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_2x4.cpp b/src/iTPS/core/contract_itps_mf/mf_2x4.cpp similarity index 98% rename from src/iTPS/core/contract_mf/mf_2x4.cpp rename to src/iTPS/core/contract_itps_mf/mf_2x4.cpp index b4a7e1e7..d14e7462 100644 --- a/src/iTPS/core/contract_mf/mf_2x4.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_2x4.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_2x4( +typename tensor::value_type Contract_2x4_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_3x1.cpp b/src/iTPS/core/contract_itps_mf/mf_3x1.cpp similarity index 96% rename from src/iTPS/core/contract_mf/mf_3x1.cpp rename to src/iTPS/core/contract_itps_mf/mf_3x1.cpp index 77244a2c..9bd0bafc 100644 --- a/src/iTPS/core/contract_mf/mf_3x1.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_3x1.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_3x1( +typename tensor::value_type Contract_3x1_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_3x2.cpp b/src/iTPS/core/contract_itps_mf/mf_3x2.cpp similarity index 97% rename from src/iTPS/core/contract_mf/mf_3x2.cpp rename to src/iTPS/core/contract_itps_mf/mf_3x2.cpp index cacd38cf..502f3183 100644 --- a/src/iTPS/core/contract_mf/mf_3x2.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_3x2.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_3x2( +typename tensor::value_type Contract_3x2_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_3x3.cpp b/src/iTPS/core/contract_itps_mf/mf_3x3.cpp similarity index 98% rename from src/iTPS/core/contract_mf/mf_3x3.cpp rename to src/iTPS/core/contract_itps_mf/mf_3x3.cpp index c6e9d9f0..cfb77c87 100644 --- a/src/iTPS/core/contract_mf/mf_3x3.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_3x3.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_3x3( +typename tensor::value_type Contract_3x3_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_3x4.cpp b/src/iTPS/core/contract_itps_mf/mf_3x4.cpp similarity index 99% rename from src/iTPS/core/contract_mf/mf_3x4.cpp rename to src/iTPS/core/contract_itps_mf/mf_3x4.cpp index aa0bb26e..78102f15 100644 --- a/src/iTPS/core/contract_mf/mf_3x4.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_3x4.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_3x4( +typename tensor::value_type Contract_3x4_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_4x1.cpp b/src/iTPS/core/contract_itps_mf/mf_4x1.cpp similarity index 97% rename from src/iTPS/core/contract_mf/mf_4x1.cpp rename to src/iTPS/core/contract_itps_mf/mf_4x1.cpp index 95d8f587..5cd43000 100644 --- a/src/iTPS/core/contract_mf/mf_4x1.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_4x1.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_4x1( +typename tensor::value_type Contract_4x1_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_4x2.cpp b/src/iTPS/core/contract_itps_mf/mf_4x2.cpp similarity index 98% rename from src/iTPS/core/contract_mf/mf_4x2.cpp rename to src/iTPS/core/contract_itps_mf/mf_4x2.cpp index 891edba8..9509c7b4 100644 --- a/src/iTPS/core/contract_mf/mf_4x2.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_4x2.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_4x2( +typename tensor::value_type Contract_4x2_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_4x3.cpp b/src/iTPS/core/contract_itps_mf/mf_4x3.cpp similarity index 99% rename from src/iTPS/core/contract_mf/mf_4x3.cpp rename to src/iTPS/core/contract_itps_mf/mf_4x3.cpp index 2ab3e132..02dbfe02 100644 --- a/src/iTPS/core/contract_mf/mf_4x3.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_4x3.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_4x3( +typename tensor::value_type Contract_4x3_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/core/contract_mf/mf_4x4.cpp b/src/iTPS/core/contract_itps_mf/mf_4x4.cpp similarity index 99% rename from src/iTPS/core/contract_mf/mf_4x4.cpp rename to src/iTPS/core/contract_itps_mf/mf_4x4.cpp index 7e3f558f..0b5f171b 100644 --- a/src/iTPS/core/contract_mf/mf_4x4.cpp +++ b/src/iTPS/core/contract_itps_mf/mf_4x4.cpp @@ -14,7 +14,7 @@ /* You should have received a copy of the GNU General Public License / / along with this program. If not, see http://www.gnu.org/licenses/. */ -#include "../contract_mf.hpp" +#include "../contract_itps_mf.hpp" #include "instantiate.hpp" namespace tenes { @@ -23,7 +23,7 @@ namespace core { using mptensor::Axes; template -typename tensor::value_type Contract_MF_4x4( +typename tensor::value_type Contract_4x4_iTPS_MF( const std::vector> &Tn, const std::vector> &op) { #ifndef NDEBUG diff --git a/src/iTPS/correlation_function.cpp b/src/iTPS/correlation_function.cpp index 3dad30e3..75b86a3f 100644 --- a/src/iTPS/correlation_function.cpp +++ b/src/iTPS/correlation_function.cpp @@ -22,8 +22,7 @@ #include "iTPS.hpp" -#include "core/contract_ctm.hpp" -#include "core/contract_mf.hpp" +#include "core/contract.hpp" namespace tenes { namespace itps { @@ -43,6 +42,9 @@ template std::vector iTPS::measure_correlation_ctm() { Timer<> timer; + const bool is_tpo = peps_parameters.calcmode == + PEPS_Parameters::CalculationMode::finite_temperature; + const int nlops = num_onesite_operators; const int r_max = corparam.r_max; std::vector> r_ops(nlops); @@ -53,8 +55,14 @@ std::vector iTPS::measure_correlation_ctm() { std::vector correlations; for (int left_index = 0; left_index < N_UNIT; ++left_index) { const auto vdim = lattice.virtual_dims[left_index]; - ptensor correlation_T(comm, Shape(CHI, CHI, vdim[0], vdim[0])); - ptensor correlation_norm(comm, Shape(CHI, CHI, vdim[0], vdim[0])); + ptensor correlation_T, correlation_norm; + if (is_tpo) { + correlation_T = ptensor(comm, Shape(CHI, CHI, vdim[0])); + correlation_norm = ptensor(comm, Shape(CHI, CHI, vdim[0])); + } else { + correlation_T = ptensor(comm, Shape(CHI, CHI, vdim[0], vdim[0])); + correlation_norm = ptensor(comm, Shape(CHI, CHI, vdim[0], vdim[0])); + } for (int left_ilop = 0; left_ilop < nlops; ++left_ilop) { if (r_ops[left_ilop].empty()) { continue; @@ -66,41 +74,69 @@ std::vector iTPS::measure_correlation_ctm() { continue; } const auto left_op = onesite_operators[left_op_index].op; - core::StartCorrelation(correlation_T, C1[left_index], C4[left_index], - eTt[left_index], eTb[left_index], - eTl[left_index], Tn[left_index], left_op); - core::StartCorrelation(correlation_norm, C1[left_index], C4[left_index], - eTt[left_index], eTb[left_index], - eTl[left_index], Tn[left_index], - op_identity[left_index]); + if (is_tpo) { + core::StartCorrelation_density_CTM( + correlation_T, C1[left_index], C4[left_index], eTt[left_index], + eTb[left_index], eTl[left_index], Tn[left_index], left_op); + core::StartCorrelation_density_CTM( + correlation_norm, C1[left_index], C4[left_index], eTt[left_index], + eTb[left_index], eTl[left_index], Tn[left_index], + op_identity[left_index]); + } else { + core::StartCorrelation_iTPS_CTM( + correlation_T, C1[left_index], C4[left_index], eTt[left_index], + eTb[left_index], eTl[left_index], Tn[left_index], left_op); + core::StartCorrelation_iTPS_CTM( + correlation_norm, C1[left_index], C4[left_index], eTt[left_index], + eTb[left_index], eTl[left_index], Tn[left_index], + op_identity[left_index]); + } int right_index = left_index; for (int r = 0; r < r_max; ++r) { right_index = lattice.right(right_index); - tensor_type norm = core::FinishCorrelation( - correlation_norm, C2[right_index], C3[right_index], - eTt[right_index], eTr[right_index], eTb[right_index], - Tn[right_index], op_identity[right_index]); + tensor_type norm = + is_tpo ? core::FinishCorrelation_density_CTM( + correlation_norm, C2[right_index], C3[right_index], + eTt[right_index], eTr[right_index], eTb[right_index], + Tn[right_index], op_identity[right_index]) + : core::FinishCorrelation_iTPS_CTM( + correlation_norm, C2[right_index], C3[right_index], + eTt[right_index], eTr[right_index], eTb[right_index], + Tn[right_index], op_identity[right_index]); for (auto right_ilop : r_ops[left_ilop]) { int right_op_index = siteoperator_index(right_index, right_ilop); if (right_op_index < 0) { continue; } const auto right_op = onesite_operators[right_op_index].op; - auto val = core::FinishCorrelation( - correlation_T, C2[right_index], C3[right_index], - eTt[right_index], eTr[right_index], eTb[right_index], - Tn[right_index], right_op) / - norm; + auto val = + is_tpo ? core::FinishCorrelation_density_CTM( + correlation_T, C2[right_index], C3[right_index], + eTt[right_index], eTr[right_index], + eTb[right_index], Tn[right_index], right_op) / + norm + : core::FinishCorrelation_iTPS_CTM( + correlation_T, C2[right_index], C3[right_index], + eTt[right_index], eTr[right_index], + eTb[right_index], Tn[right_index], right_op) / + norm; correlations.push_back(Correlation{left_index, r + 1, 0, left_ilop, right_ilop, std::real(val), std::imag(val)}); } - core::Transfer(correlation_T, eTt[right_index], eTb[right_index], - Tn[right_index]); - core::Transfer(correlation_norm, eTt[right_index], eTb[right_index], - Tn[right_index]); + if (is_tpo) { + core::Transfer_density_CTM(correlation_T, eTt[right_index], + eTb[right_index], Tn[right_index]); + core::Transfer_density_CTM(correlation_norm, eTt[right_index], + eTb[right_index], Tn[right_index]); + } else { + core::Transfer_iTPS_CTM(correlation_T, eTt[right_index], + eTb[right_index], Tn[right_index]); + core::Transfer_iTPS_CTM(correlation_norm, eTt[right_index], + eTb[right_index], Tn[right_index]); + } } } { // vertical @@ -109,41 +145,73 @@ std::vector iTPS::measure_correlation_ctm() { continue; } const auto left_op = onesite_operators[left_op_index].op; - ptensor tn = transpose(Tn[left_index], mptensor::Axes(3, 0, 1, 2, 4)); - core::StartCorrelation(correlation_T, C4[left_index], C3[left_index], - eTl[left_index], eTr[left_index], - eTb[left_index], tn, left_op); - core::StartCorrelation(correlation_norm, C4[left_index], C3[left_index], - eTl[left_index], eTr[left_index], - eTb[left_index], tn, op_identity[left_index]); + ptensor tn = + is_tpo ? transpose(Tn[left_index], mptensor::Axes(3, 0, 1, 2, 4, 5)) + : transpose(Tn[left_index], mptensor::Axes(3, 0, 1, 2, 4)); + if (is_tpo) { + core::StartCorrelation_density_CTM( + correlation_T, C4[left_index], C3[left_index], eTl[left_index], + eTr[left_index], eTb[left_index], tn, left_op); + core::StartCorrelation_density_CTM( + correlation_norm, C4[left_index], C3[left_index], eTl[left_index], + eTr[left_index], eTb[left_index], tn, op_identity[left_index]); + } else { + core::StartCorrelation_iTPS_CTM( + correlation_T, C4[left_index], C3[left_index], eTl[left_index], + eTr[left_index], eTb[left_index], tn, left_op); + core::StartCorrelation_iTPS_CTM( + correlation_norm, C4[left_index], C3[left_index], eTl[left_index], + eTr[left_index], eTb[left_index], tn, op_identity[left_index]); + } int right_index = left_index; for (int r = 0; r < r_max; ++r) { right_index = lattice.top(right_index); - tn = transpose(Tn[right_index], mptensor::Axes(3, 0, 1, 2, 4)); - tensor_type norm = core::FinishCorrelation( - correlation_norm, C1[right_index], C2[right_index], - eTl[right_index], eTt[right_index], eTr[right_index], tn, - op_identity[right_index]); + ptensor tn = + is_tpo ? transpose(Tn[right_index], mptensor::Axes(3, 0, 1, 2, 4, 5)) + : transpose(Tn[right_index], mptensor::Axes(3, 0, 1, 2, 4)); + tensor_type norm = + is_tpo ? core::FinishCorrelation_density_CTM( + correlation_norm, C1[right_index], C2[right_index], + eTl[right_index], eTt[right_index], eTr[right_index], + tn, op_identity[right_index]) + : core::FinishCorrelation_iTPS_CTM( + correlation_norm, C1[right_index], C2[right_index], + eTl[right_index], eTt[right_index], eTr[right_index], + tn, op_identity[right_index]); for (auto right_ilop : r_ops[left_ilop]) { int right_op_index = siteoperator_index(right_index, right_ilop); if (right_op_index < 0) { continue; } const auto right_op = onesite_operators[right_op_index].op; - auto val = core::FinishCorrelation( - correlation_T, C1[right_index], C2[right_index], - eTl[right_index], eTt[right_index], eTr[right_index], - tn, right_op) / - norm; + auto val = + is_tpo ? core::FinishCorrelation_density_CTM( + correlation_T, C1[right_index], C2[right_index], + eTl[right_index], eTt[right_index], + eTr[right_index], tn, right_op) / + norm + : core::FinishCorrelation_iTPS_CTM( + correlation_T, C1[right_index], C2[right_index], + eTl[right_index], eTt[right_index], + eTr[right_index], tn, right_op) / + norm; correlations.push_back(Correlation{left_index, 0, r + 1, left_ilop, right_ilop, std::real(val), std::imag(val)}); } - core::Transfer(correlation_T, eTl[right_index], eTr[right_index], tn); - core::Transfer(correlation_norm, eTl[right_index], eTr[right_index], - tn); + if (is_tpo) { + core::Transfer_density_CTM(correlation_T, eTl[right_index], + eTr[right_index], tn); + core::Transfer_density_CTM(correlation_norm, eTl[right_index], + eTr[right_index], tn); + } else { + core::Transfer_iTPS_CTM(correlation_T, eTl[right_index], + eTr[right_index], tn); + core::Transfer_iTPS_CTM(correlation_norm, eTl[right_index], + eTr[right_index], tn); + } } } } @@ -155,6 +223,14 @@ std::vector iTPS::measure_correlation_ctm() { template std::vector iTPS::measure_correlation_mf() { + const bool is_tpo = peps_parameters.calcmode == + PEPS_Parameters::CalculationMode::finite_temperature; + if (is_tpo) { + throw std::runtime_error( + "iTPS::measure_correlation_mf() is not implemented for finite " + "temperature"); + } + Timer<> timer; const int nlops = num_onesite_operators; @@ -182,78 +258,84 @@ std::vector iTPS::measure_correlation_mf() { continue; } - { // horizontal + { + const int direction = 2; // right int left_op_index = siteoperator_index(left_index, left_ilop); if (left_op_index < 0) { continue; } ptensor T = Tn_horizontal[left_index]; - T.multiply_vector(lambda_tensor[left_index][0], 0); + T.multiply_vector(lambda_tensor[left_index][0], 0); // 0 means left const auto left_op = onesite_operators[left_op_index].op; - core::StartCorrelation_MF(correlation_T, T, left_op, 2); - core::StartCorrelation_MF(correlation_norm, T, op_identity[left_index], - 2); + core::StartCorrelation_iTPS_MF(correlation_T, T, left_op, direction); + core::StartCorrelation_iTPS_MF(correlation_norm, T, + op_identity[left_index], direction); int right_index = left_index; for (int r = 0; r < r_max; ++r) { right_index = lattice.right(right_index); T = Tn_horizontal[right_index]; - T.multiply_vector(lambda_tensor[right_index][2], 2); - tensor_type norm = core::FinishCorrelation_MF( - correlation_norm, T, op_identity[right_index], 2); + T.multiply_vector(lambda_tensor[right_index][2], direction); + tensor_type norm = core::FinishCorrelation_iTPS_MF( + correlation_norm, T, op_identity[right_index], direction); for (auto right_ilop : r_ops[left_ilop]) { int right_op_index = siteoperator_index(right_index, right_ilop); if (right_op_index < 0) { continue; } const auto right_op = onesite_operators[right_op_index].op; - auto val = - core::FinishCorrelation_MF(correlation_T, T, right_op, 2) / - norm; + auto val = core::FinishCorrelation_iTPS_MF(correlation_T, T, + right_op, direction) / + norm; correlations.push_back(Correlation{left_index, r + 1, 0, left_ilop, right_ilop, std::real(val), std::imag(val)}); } - core::Transfer_MF(correlation_T, Tn_horizontal[right_index], 2); - core::Transfer_MF(correlation_norm, Tn_horizontal[right_index], 2); + core::Transfer_iTPS_MF(correlation_T, Tn_horizontal[right_index], + direction); + core::Transfer_iTPS_MF(correlation_norm, Tn_horizontal[right_index], + direction); } } - { // vertical + { // vertical + int direction = 1; // top int left_op_index = siteoperator_index(left_index, left_ilop); if (left_op_index < 0) { continue; } ptensor T = Tn_vertical[left_index]; - T.multiply_vector(lambda_tensor[left_index][3], 3); + T.multiply_vector(lambda_tensor[left_index][3], 3); // 3 means bottom const auto left_op = onesite_operators[left_op_index].op; - core::StartCorrelation_MF(correlation_T, T, left_op, 1); - core::StartCorrelation_MF(correlation_norm, T, op_identity[left_index], - 1); + core::StartCorrelation_iTPS_MF(correlation_T, T, left_op, direction); + core::StartCorrelation_iTPS_MF(correlation_norm, T, + op_identity[left_index], direction); int right_index = left_index; for (int r = 0; r < r_max; ++r) { right_index = lattice.top(right_index); T = Tn_vertical[right_index]; - T.multiply_vector(lambda_tensor[right_index][1], 1); - tensor_type norm = core::FinishCorrelation_MF( - correlation_norm, T, op_identity[right_index], 1); + T.multiply_vector(lambda_tensor[right_index][1], direction); + tensor_type norm = core::FinishCorrelation_iTPS_MF( + correlation_norm, T, op_identity[right_index], direction); for (auto right_ilop : r_ops[left_ilop]) { int right_op_index = siteoperator_index(right_index, right_ilop); if (right_op_index < 0) { continue; } const auto right_op = onesite_operators[right_op_index].op; - auto val = - core::FinishCorrelation_MF(correlation_T, T, right_op, 1) / - norm; + auto val = core::FinishCorrelation_iTPS_MF(correlation_T, T, + right_op, direction) / + norm; correlations.push_back(Correlation{left_index, 0, r + 1, left_ilop, right_ilop, std::real(val), std::imag(val)}); } - core::Transfer_MF(correlation_T, Tn_vertical[right_index], 1); - core::Transfer_MF(correlation_norm, Tn_vertical[right_index], 1); + core::Transfer_iTPS_MF(correlation_T, Tn_vertical[right_index], + direction); + core::Transfer_iTPS_MF(correlation_norm, Tn_vertical[right_index], + direction); } } } diff --git a/src/iTPS/iTPS.cpp b/src/iTPS/iTPS.cpp index 2f04bc65..acb1784b 100644 --- a/src/iTPS/iTPS.cpp +++ b/src/iTPS/iTPS.cpp @@ -123,15 +123,18 @@ iTPS::iTPS(MPI_Comm comm_, PEPS_Parameters peps_parameters_, std::cout << "Bond dimensions:\n"; std::cout << " D (Bulk): " << Dmax << "\n"; std::cout << " chi (CTM): " << CHI << std::endl; - if (peps_parameters.calcmode == PEPS_Parameters::CalculationMode::finite_temperature){ - if (CHI < Dmax) { - std::cerr << "WARNING: CTM may be too small (chi < D) for finite_temperature mode" << std::endl; - } - else { - if (CHI < Dmax * Dmax) { - std::cerr << "WARNING: CTM may be too small (chi < D*D)" << std::endl; - } - } + if (peps_parameters.calcmode == + PEPS_Parameters::CalculationMode::finite_temperature) { + if (CHI < Dmax) { + std::cerr << "WARNING: CTM may be too small (chi < D) for " + "finite_temperature mode" + << std::endl; + } else { + if (CHI < Dmax * Dmax) { + std::cerr << "WARNING: CTM may be too small (chi < D*D)" + << std::endl; + } + } } } @@ -170,7 +173,8 @@ iTPS::iTPS(MPI_Comm comm_, PEPS_Parameters peps_parameters_, throw tenes::runtime_error(ss.str()); } - if (peps_parameters.calcmode == PEPS_Parameters::CalculationMode::finite_temperature){ + if (peps_parameters.calcmode == + PEPS_Parameters::CalculationMode::finite_temperature) { initialize_tensors_density(); } else { initialize_tensors(); @@ -327,7 +331,7 @@ iTPS::iTPS(MPI_Comm comm_, PEPS_Parameters peps_parameters_, << " has two different names: " << name << " and " << onesite_operator_names[op.group] << "\n"; ss << " onesite operators with the same group must " - "have the same name.\n"; + "have the same name.\n"; throw std::runtime_error(ss.str()); } } @@ -358,7 +362,7 @@ iTPS::iTPS(MPI_Comm comm_, PEPS_Parameters peps_parameters_, << " has two names: " << twosite_operator_names[op.group] << " and " << name << "\n"; ss << " twosite operators with the same group must " - "have the same name.\n"; + "have the same name.\n"; throw std::runtime_error(ss.str()); } } @@ -450,16 +454,15 @@ template void iTPS::update_CTM_density() { Timer<> timer; core::Calc_CTM_Environment_density(C1, C2, C3, C4, eTt, eTr, eTb, eTl, Tn, - peps_parameters, lattice); + peps_parameters, lattice); time_environment += timer.elapsed(); } template -std::vector iTPS::make_single_tensor_density(){ +std::vector iTPS::make_single_tensor_density() { return core::Make_single_tensor_density(Tn); } - // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/measure.cpp b/src/iTPS/measure.cpp index af0660f4..cc002c0c 100644 --- a/src/iTPS/measure.cpp +++ b/src/iTPS/measure.cpp @@ -113,17 +113,33 @@ void iTPS::measure_density(double beta, std::string filename_prefix) { update_CTM_density(); // } - auto onesite_obs = measure_onesite_density(); + // auto onesite_obs = measure_onesite_density(); + auto onesite_obs = measure_onesite(); save_onesite(onesite_obs, beta, filename_prefix); - auto twosite_obs = measure_twosite_density(); + // auto twosite_obs = measure_twosite_density(); + auto twosite_obs = measure_twosite(); save_twosite(twosite_obs, beta, filename_prefix); // In finite temperature simplation, multisite operators are not supported so far. - auto multisite_obs = measure_multisite_density(); + // auto multisite_obs = measure_multisite_density(); + auto multisite_obs = measure_multisite(); if (multisite_operators.size() > 0) { save_multisite(multisite_obs, beta, filename_prefix); } + + if (corparam.r_max > 0) { + auto correlations = measure_correlation(); + save_correlation(correlations, beta, filename_prefix); + } + + if (tmatrix_param.to_calculate) { + if(beta > 0.0){ + // the method is unstable at beta = 0.0, so we skip it. + auto correlation_length = measure_transfer_matrix_eigenvalues(); + save_correlation_length(correlation_length, beta, filename_prefix); + } + } save_density(onesite_obs, twosite_obs, multisite_obs, beta, filename_prefix); } diff --git a/src/iTPS/multisite_obs.cpp b/src/iTPS/multisite_obs.cpp index 3f4b77ff..cacb8f02 100644 --- a/src/iTPS/multisite_obs.cpp +++ b/src/iTPS/multisite_obs.cpp @@ -23,8 +23,7 @@ #include "../printlevel.hpp" #include "../timer.hpp" -#include "core/contract_ctm.hpp" -#include "core/contract_mf.hpp" +#include "core/contract.hpp" namespace tenes { namespace itps { @@ -34,6 +33,10 @@ auto iTPS::measure_multisite() -> std::vector::tensor_type>> { Timer<> timer; + const bool is_meanfield = peps_parameters.MeanField_Env; + const bool is_density = peps_parameters.calcmode == + PEPS_Parameters::CalculationMode::finite_temperature; + const int nlops = num_multisite_operators; std::vector> ret(nlops); if (nlops == 0) { @@ -103,7 +106,7 @@ auto iTPS::measure_multisite() const int source_col = -mindx; const int source_row = maxdy; - if (peps_parameters.MeanField_Env) { + if (is_meanfield) { int iboundary = 0; const int nboundary = 2 * (ncol + nrow - 2); boundaries.reserve(nboundary); @@ -161,11 +164,14 @@ auto iTPS::measure_multisite() const auto norm_key = Bond{indices[nrow - 1][0], nrow - 1, ncol - 1}; if (norms.count(norm_key) == 0) { - if (peps_parameters.MeanField_Env) { - norms[norm_key] = core::Contract_MF(Tn_, op_); - } else { - norms[norm_key] = core::Contract(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); - } + norms[norm_key] = core::Contract(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_, + is_density, is_meanfield); + // if (peps_parameters.MeanField_Env) { + // norms[norm_key] = core::Contract_iTPS_MF(Tn_, op_); + // } else { + // norms[norm_key] = + // core::Contract_iTPS_CTM(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + // } } auto norm = norms[norm_key]; @@ -187,10 +193,13 @@ auto iTPS::measure_multisite() op.ops_indices[i + 1])] .op); } + // auto localvalue = + // peps_parameters.MeanField_Env + // ? core::Contract_iTPS_MF(Tn_, op_) + // : core::Contract_iTPS_CTM(C_, eTt_, eTr_, eTb_, eTl_, Tn_, + // op_); auto localvalue = - peps_parameters.MeanField_Env - ? core::Contract_MF(Tn_, op_) - : core::Contract(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + core::Contract(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_, is_density, is_meanfield); value += localvalue; } ret[op.group][{op.source_site, op.dx, op.dy}] = value / norm; @@ -239,8 +248,8 @@ void iTPS::save_multisite( << ".dat"; filepath[nsites] = ss.str(); if (!time && peps_parameters.print_level >= PrintLevel::info) { - std::cout << " Save " << nsites << "-site observables to " << ss.str() << - std::endl; + std::cout << " Save " << nsites << "-site observables to " << ss.str() + << std::endl; } } @@ -297,7 +306,7 @@ void iTPS::save_multisite( ofs[nsites] << time.get() << " "; } ofs[nsites] << ilops << " " << multi.source_site; - for (int other = 0; other < nsites-1; ++other) { + for (int other = 0; other < nsites - 1; ++other) { ofs[nsites] << " " << multi.dx[other] << " " << multi.dy[other]; } ofs[nsites] << " " << std::real(value) << " " << std::imag(value) @@ -306,15 +315,13 @@ void iTPS::save_multisite( } } - - template auto iTPS::measure_multisite_density() -> std::vector::tensor_type>> { // not implemented yet std::vector> ret(0); return ret; -} +} // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/onesite_obs.cpp b/src/iTPS/onesite_obs.cpp index a1d79350..be395e9c 100644 --- a/src/iTPS/onesite_obs.cpp +++ b/src/iTPS/onesite_obs.cpp @@ -27,8 +27,7 @@ #include "../tensor.hpp" -#include "core/contract_ctm.hpp" -#include "core/contract_mf.hpp" +#include "core/contract.hpp" namespace tenes { namespace itps { @@ -37,13 +36,21 @@ template auto iTPS::measure_onesite() -> std::vector::tensor_type>> { Timer<> timer; + const bool is_meanfield = peps_parameters.MeanField_Env; + const bool is_density = peps_parameters.calcmode == + PEPS_Parameters::CalculationMode::finite_temperature; + const int nlops = num_onesite_operators; std::vector> local_obs( nlops, std::vector( N_UNIT, std::numeric_limits::quiet_NaN())); std::vector norm(N_UNIT); - if (peps_parameters.MeanField_Env) { + if (is_meanfield) { + if (is_density) { + throw std::runtime_error( + "Mean field calculation is not implemented for finite temperature."); + } std::vector Tn_(Tn); for (int i = 0; i < N_UNIT; ++i) { for (int leg = 0; leg < nleg; ++leg) { @@ -53,26 +60,41 @@ auto iTPS::measure_onesite() } for (int i = 0; i < N_UNIT; ++i) { - norm[i] = core::Contract_one_site_MF(Tn_[i], op_identity[i]); + norm[i] = core::Contract_one_site_iTPS_MF(Tn_[i], op_identity[i]); } for (auto const &op : onesite_operators) { const int i = op.source_site; - const auto val = core::Contract_one_site_MF(Tn_[i], op.op); + const auto val = core::Contract_one_site_iTPS_MF(Tn_[i], op.op); local_obs[op.group][i] = val / norm[i]; } - } else { - for (int i = 0; i < N_UNIT; ++i) { - norm[i] = - core::Contract_one_site(C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], - eTb[i], eTl[i], Tn[i], op_identity[i]); - } - for (auto const &op : onesite_operators) { - const int i = op.source_site; - const auto val = - core::Contract_one_site(C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], - eTb[i], eTl[i], Tn[i], op.op); - local_obs[op.group][i] = val / norm[i]; + } else { // CTM + if (is_density) { + for (int i = 0; i < N_UNIT; ++i) { + norm[i] = core::Contract_one_site_density_CTM( + C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], eTb[i], eTl[i], Tn[i], + op_identity[i]); + } + for (auto const &op : onesite_operators) { + const int i = op.source_site; + const auto val = core::Contract_one_site_density_CTM( + C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], eTb[i], eTl[i], Tn[i], + op.op); + local_obs[op.group][i] = val / norm[i]; + } + } else { + for (int i = 0; i < N_UNIT; ++i) { + norm[i] = core::Contract_one_site_iTPS_CTM( + C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], eTb[i], eTl[i], Tn[i], + op_identity[i]); + } + for (auto const &op : onesite_operators) { + const int i = op.source_site; + const auto val = core::Contract_one_site_iTPS_CTM( + C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], eTb[i], eTl[i], Tn[i], + op.op); + local_obs[op.group][i] = val / norm[i]; + } } } double norm_real_min = 1e100; @@ -209,15 +231,15 @@ auto iTPS::measure_onesite_density() } } else {*/ for (int i = 0; i < N_UNIT; ++i) { - norm[i] = - core::Contract_one_site_density(C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], - eTb[i], eTl[i], Tn[i], op_identity[i]); + norm[i] = core::Contract_one_site_density_CTM( + C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], eTb[i], eTl[i], Tn[i], + op_identity[i]); } for (auto const &op : onesite_operators) { const int i = op.source_site; - const auto val = - core::Contract_one_site_density(C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], - eTb[i], eTl[i], Tn[i], op.op); + const auto val = core::Contract_one_site_density_CTM( + C1[i], C2[i], C3[i], C4[i], eTt[i], eTr[i], eTb[i], eTl[i], Tn[i], + op.op); local_obs[op.group][i] = val / norm[i]; } // } @@ -230,7 +252,8 @@ auto iTPS::measure_onesite_density() } if (mpirank == 0) { if (norm_real_min <= 0.0) { - std::cerr << "WARNING: Norm is negative [min(real(NORM)) = " << norm_real_min <<"].\n"; + std::cerr << "WARNING: Norm is negative [min(real(NORM)) = " + << norm_real_min << "].\n"; std::cerr << "HINT: Increase the bond dimension of CTM." << std::endl; } if (norm_imag_abs_max > 1e-6) { @@ -244,7 +267,7 @@ auto iTPS::measure_onesite_density() time_observable += timer.elapsed(); return local_obs; } - + // template specialization template class iTPS; template class iTPS; diff --git a/src/iTPS/transfer_matrix.cpp b/src/iTPS/transfer_matrix.cpp index cc21d9ef..0461314a 100644 --- a/src/iTPS/transfer_matrix.cpp +++ b/src/iTPS/transfer_matrix.cpp @@ -188,22 +188,45 @@ void TransferMatrix_ctm::matvec_horizontal(ptensor &outvec, const auto &lattice = this->lattice; const size_t CHI = C1[0].shape()[0]; outvec = reshape(invec, {CHI, CHI}); + const size_t rank = eTt[0].rank(); + if (rank == 3) { + // iTPO + for (int x = 0; x < lattice.LX; ++x) { + int site = lattice.index(x, y); + ptensor top = eTt[site]; + ptensor bottom = eTb[lattice.top(site)]; - for (int x = 0; x < lattice.LX; ++x) { - int site = lattice.index(x, y); - ptensor top = eTt[site]; - ptensor bottom = eTb[lattice.top(site)]; + //////////////////////////////////////////////////////////// + // ./transfer_matvec_horizontal_den_ctm.dat + //////////////////////////////////////////////////////////// + // (top*(bottom*vec)) + // cpu_cost= 270000 memory= 14400 + // final_bond_order (top_right, bottom_right) + //////////////////////////////////////////////////////////// + outvec = tensordot(top, tensordot(bottom, outvec, Axes(1), Axes(1)), + Axes(0, 2), Axes(2, 1)); + } + } else if (rank == 4) { + // double layer iTPS + for (int x = 0; x < lattice.LX; ++x) { + int site = lattice.index(x, y); + ptensor top = eTt[site]; + ptensor bottom = eTb[lattice.top(site)]; - //////////////////////////////////////////////////////////// - // transfer_matvec_horizontal_ctm.dat - //////////////////////////////////////////////////////////// - // (top*(bottom*vec)) - // cpu_cost= 1.35e+06 memory= 68400 - // final_bond_order (top_right, bottom_right) - //////////////////////////////////////////////////////////// - outvec = tensordot(top, tensordot(bottom, outvec, Axes(1), Axes(1)), - Axes(0, 2, 3), Axes(3, 1, 2)); + //////////////////////////////////////////////////////////// + // transfer_matvec_horizontal_ctm.dat + //////////////////////////////////////////////////////////// + // (top*(bottom*vec)) + // cpu_cost= 1.35e+06 memory= 68400 + // final_bond_order (top_right, bottom_right) + //////////////////////////////////////////////////////////// + outvec = tensordot(top, tensordot(bottom, outvec, Axes(1), Axes(1)), + Axes(0, 2, 3), Axes(3, 1, 2)); + } + } else { + throw std::runtime_error("rank of eTt is not 3 or 4"); } + outvec = reshape(outvec, {CHI * CHI}); } @@ -217,25 +240,53 @@ void TransferMatrix_ctm::matvec_vertical(ptensor &outvec, const auto x_orig = x; outvec = reshape(invec, {CHI, CHI}); - do { - for (int y = 0; y < lattice.LY; ++y) { - const int site = lattice.index(x, y); - auto left = eTl[site]; - auto right = eTr[lattice.left(site)]; + const size_t rank = eTl[0].rank(); + + if (rank == 3) { + // iTPO + do { + for (int y = 0; y < lattice.LY; ++y) { + const int site = lattice.index(x, y); + auto left = eTl[site]; + auto right = eTr[lattice.left(site)]; + + //////////////////////////////////////////////////////////// + // ./transfer_matvec_vertical_den_ctm.dat + //////////////////////////////////////////////////////////// + // (left*(right*vec)) + // cpu_cost= 270000 memory= 14400 + // final_bond_order (left_top, right_top) + //////////////////////////////////////////////////////////// + outvec = tensordot(left, tensordot(right, outvec, Axes(1), Axes(1)), + Axes(0, 2), Axes(2, 1)); + } - //////////////////////////////////////////////////////////// - // transfer_matvec_vertical_ctm.dat - //////////////////////////////////////////////////////////// - // (left*(right*vec)) - // cpu_cost= 1.35e+06 memory= 68400 - // final_bond_order (left_top, right_top) - //////////////////////////////////////////////////////////// - outvec = tensordot(left, tensordot(right, outvec, Axes(1), Axes(1)), - Axes(0, 2, 3), Axes(3, 1, 2)); - } + x = (x + lattice.skew + lattice.LX) % lattice.LX; + } while (x != x_orig); + } else if (rank == 4) { + // double layer iTPS + do { + for (int y = 0; y < lattice.LY; ++y) { + const int site = lattice.index(x, y); + auto left = eTl[site]; + auto right = eTr[lattice.left(site)]; + + //////////////////////////////////////////////////////////// + // transfer_matvec_vertical_ctm.dat + //////////////////////////////////////////////////////////// + // (left*(right*vec)) + // cpu_cost= 1.35e+06 memory= 68400 + // final_bond_order (left_top, right_top) + //////////////////////////////////////////////////////////// + outvec = tensordot(left, tensordot(right, outvec, Axes(1), Axes(1)), + Axes(0, 2, 3), Axes(3, 1, 2)); + } - x = (x + lattice.skew + lattice.LX) % lattice.LX; - } while (x != x_orig); + x = (x + lattice.skew + lattice.LX) % lattice.LX; + } while (x != x_orig); + } else { + throw std::runtime_error("rank of eTl is not 3 or 4"); + } outvec = reshape(outvec, {CHI * CHI}); } @@ -311,19 +362,42 @@ void TransferMatrix_mf::matvec_vertical(ptensor &outvec, template ptensor TransferMatrix_ctm::matrix_horizontal(int y) const { using mptensor::Axes; + using mptensor::Shape; const auto &lattice = this->lattice; const size_t CHI = C1[0].shape()[0]; + const size_t rank = eTt[0].rank(); int site = lattice.index(0, y); ptensor top = eTt[site]; ptensor bottom = eTb[lattice.top(site)]; - ptensor res = transpose(tensordot(top, bottom, Axes(2, 3), Axes(2, 3)), - Axes(0, 3, 1, 2)); - for (int x = 1; x < lattice.LX; ++x) { - site = lattice.index(x, y); - top = eTt[site]; - bottom = eTb[lattice.top(site)]; - res = tensordot(res, tensordot(top, bottom, Axes(2, 3), Axes(2, 3)), - Axes(2, 3), Axes(0, 3)); + const MPI_Comm comm = this->C1[0].get_comm(); + ptensor res(comm, Shape(CHI * CHI, CHI * CHI)); +#pragma omp parallel for shared(res) + for (size_t i = 0; i < CHI * CHI; ++i) { + typename ptensor::value_type v = 1.0; + res.set_value({i, i}, v); + } + res = reshape(res, {CHI, CHI, CHI, CHI}); + if (rank == 3) { + res = transpose(tensordot(top, bottom, Axes(2), Axes(2)), Axes(0, 3, 1, 2)); + for (int x = 1; x < lattice.LX; ++x) { + site = lattice.index(x, y); + top = eTt[site]; + bottom = eTb[lattice.top(site)]; + res = tensordot(res, tensordot(top, bottom, Axes(2), Axes(2)), Axes(2, 3), + Axes(0, 3)); + } + } else if (rank == 4) { + res = transpose(tensordot(top, bottom, Axes(2, 3), Axes(2, 3)), + Axes(0, 3, 1, 2)); + for (int x = 1; x < lattice.LX; ++x) { + site = lattice.index(x, y); + top = eTt[site]; + bottom = eTb[lattice.top(site)]; + res = tensordot(res, tensordot(top, bottom, Axes(2, 3), Axes(2, 3)), + Axes(2, 3), Axes(0, 3)); + } + } else { + throw std::runtime_error("rank of eTt is not 3 or 4"); } res = reshape(res, {CHI * CHI, CHI * CHI}); return res; @@ -345,17 +419,34 @@ ptensor TransferMatrix_ctm::matrix_vertical(int x) const { } res = reshape(res, {CHI, CHI, CHI, CHI}); - do { - for (int y = 0; y < lattice.LY; ++y) { - const int site = lattice.index(x, y); - auto left = eTl[site]; - auto right = eTr[lattice.left(site)]; - res = tensordot(res, tensordot(left, right, Axes(2, 3), Axes(2, 3)), - Axes(2, 3), Axes(0, 3)); - } - x = (x + lattice.skew + lattice.LX) % lattice.LX; - } while (x != x_orig); - res = reshape(res, {CHI * CHI, CHI * CHI}); + const size_t rank = eTl[0].rank(); + if (rank == 3) { + do { + for (int y = 0; y < lattice.LY; ++y) { + const int site = lattice.index(x, y); + auto left = eTl[site]; + auto right = eTr[lattice.left(site)]; + res = tensordot(res, tensordot(left, right, Axes(2), Axes(2)), + Axes(2, 3), Axes(0, 3)); + } + x = (x + lattice.skew + lattice.LX) % lattice.LX; + } while (x != x_orig); + res = reshape(res, {CHI * CHI, CHI * CHI}); + } else if (rank == 4) { + do { + for (int y = 0; y < lattice.LY; ++y) { + const int site = lattice.index(x, y); + auto left = eTl[site]; + auto right = eTr[lattice.left(site)]; + res = tensordot(res, tensordot(left, right, Axes(2, 3), Axes(2, 3)), + Axes(2, 3), Axes(0, 3)); + } + x = (x + lattice.skew + lattice.LX) % lattice.LX; + } while (x != x_orig); + res = reshape(res, {CHI * CHI, CHI * CHI}); + } else { + throw std::runtime_error("rank of eTl is not 3 or 4"); + } return res; } diff --git a/src/iTPS/twosite_obs.cpp b/src/iTPS/twosite_obs.cpp index 597995be..6fd5279f 100644 --- a/src/iTPS/twosite_obs.cpp +++ b/src/iTPS/twosite_obs.cpp @@ -23,8 +23,7 @@ #include "../printlevel.hpp" #include "../timer.hpp" -#include "core/contract_ctm.hpp" -#include "core/contract_mf.hpp" +#include "core/contract.hpp" namespace tenes { namespace itps { @@ -34,6 +33,9 @@ auto iTPS::measure_twosite() -> std::vector::tensor_type>> { Timer<> timer; + const bool is_TPO = peps_parameters.calcmode == + PEPS_Parameters::CalculationMode::finite_temperature; + const bool is_mf = peps_parameters.MeanField_Env; const int nlops = num_twosite_operators; std::vector> ret(nlops); @@ -166,9 +168,15 @@ auto iTPS::measure_twosite() const auto norm_key = Bond{indices[nrow - 1][0], nrow - 1, ncol - 1}; if (norms.count(norm_key) == 0) { if (peps_parameters.MeanField_Env) { - norms[norm_key] = core::Contract_MF(Tn_, op_); + norms[norm_key] = core::Contract_iTPS_MF(Tn_, op_); } else { - norms[norm_key] = core::Contract(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + if (is_TPO) { + norms[norm_key] = + core::Contract_density_CTM(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + } else { + norms[norm_key] = + core::Contract_iTPS_CTM(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + } } } auto norm = norms[norm_key]; @@ -182,26 +190,35 @@ auto iTPS::measure_twosite() ptensor o = (top == source ? op.op : mptensor::transpose(op.op, {1, 0, 3, 2})); - value = peps_parameters.MeanField_Env - ? core::Contract_two_sites_vertical_op12_MF( - *(Tn_[0][0]), *(Tn_[1][0]), o) - : core::Contract_two_sites_vertical_op12( - C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], - eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], - eTl[top], Tn[top], Tn[bottom], o); + value = core::Contract_two_sites_vertical_op12( + C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], eTr[top], + eTr[bottom], eTb[bottom], eTl[bottom], eTl[top], *(Tn_[0][0]), + *(Tn_[1][0]), o, is_TPO, is_mf); + // value = peps_parameters.MeanField_Env + // ? core::Contract_two_sites_vertical_op12_MF( + // *(Tn_[0][0]), *(Tn_[1][0]), o) + // : core::Contract_two_sites_vertical_op12( + // C1[top], C2[top], C3[bottom], C4[bottom], + // eTt[top], eTr[top], eTr[bottom], eTb[bottom], + // eTl[bottom], eTl[top], Tn[top], Tn[bottom], o); } else { // ncol == 2 const int left = indices[0][0]; const int right = indices[0][1]; ptensor o = (left == source ? op.op : mptensor::transpose(op.op, {1, 0, 3, 2})); - value = peps_parameters.MeanField_Env - ? core::Contract_two_sites_horizontal_op12_MF( - *(Tn_[0][0]), *(Tn_[0][1]), o) - : core::Contract_two_sites_horizontal_op12( - C1[left], C2[right], C3[right], C4[left], eTt[left], - eTt[right], eTr[right], eTb[right], eTb[left], - eTl[left], Tn[left], Tn[right], o); + + value = core::Contract_two_sites_horizontal_op12( + C1[left], C2[right], C3[right], C4[left], eTt[left], eTt[right], + eTr[right], eTb[right], eTb[left], eTl[left], *(Tn_[0][0]), *(Tn_[0][1]), + o, is_TPO, is_mf); + // value = peps_parameters.MeanField_Env + // ? core::Contract_two_sites_horizontal_op12_MF( + // *(Tn_[0][0]), *(Tn_[0][1]), o) + // : core::Contract_two_sites_horizontal_op12( + // C1[left], C2[right], C3[right], C4[left], + // eTt[left], eTt[right], eTr[right], eTb[right], + // eTb[left], eTl[left], Tn[left], Tn[right], o); } } else { ptensor U, VT; @@ -215,10 +232,12 @@ auto iTPS::measure_twosite() ptensor target_op = reshape(slice(VT, 0, is, is + 1), {VT.shape()[1], VT.shape()[1]}); op_[target_row][target_col] = &target_op; - auto localvalue = - peps_parameters.MeanField_Env - ? core::Contract_MF(Tn_, op_) - : core::Contract(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + auto localvalue = core::Contract(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_, + is_TPO, is_mf); + // auto localvalue = + // peps_parameters.MeanField_Env + // ? core::Contract_MF(Tn_, op_) + // : core::Contract_CTM(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); value += localvalue * s[is]; } } @@ -232,9 +251,11 @@ auto iTPS::measure_twosite() onesite_operators[siteoperator_index(target_site, op.ops_indices[1])] .op); auto localvalue = - peps_parameters.MeanField_Env - ? core::Contract_MF(Tn_, op_) - : core::Contract(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + core::Contract(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_, is_TPO, is_mf); + // auto localvalue = + // peps_parameters.MeanField_Env + // ? core::Contract_MF(Tn_, op_) + // : core::Contract_CTM(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); value += localvalue; } ret[op.group][{op.source_site, op.dx[0], op.dy[0]}] = value / norm; @@ -350,7 +371,7 @@ auto iTPS::measure_twosite_density() const int nlops = num_twosite_operators; std::vector> ret(nlops); - //constexpr int nmax = 4; + // constexpr int nmax = 4; std::map norms; @@ -362,7 +383,6 @@ auto iTPS::measure_twosite_density() const int nrow = std::abs(dy) + 1; } - for (const auto &op : twosite_operators) { const int source = op.source_site; const int dx = op.dx[0]; @@ -413,11 +433,11 @@ auto iTPS::measure_twosite_density() for (int row = 0; row < nrow; ++row) { for (int col = 0; col < ncol; ++col) { - const int index = - lattice.other(source, col - source_col, source_row - row); - indices[row][col] = index; - op_[row][col] = &(op_identity[index]); - Tn_[row][col] = &(Tn[index]); + const int index = + lattice.other(source, col - source_col, source_row - row); + indices[row][col] = index; + op_[row][col] = &(op_identity[index]); + Tn_[row][col] = &(Tn[index]); } eTl_[row] = &(eTl[indices[row][0]]); eTr_[row] = &(eTr[indices[row][ncol - 1]]); @@ -431,33 +451,33 @@ auto iTPS::measure_twosite_density() C_[2] = &(C3[indices[nrow - 1][ncol - 1]]); C_[3] = &(C4[indices[nrow - 1][0]]); - - const auto norm_key = Bond{indices[nrow-1][0], nrow-1, ncol-1}; + const auto norm_key = Bond{indices[nrow - 1][0], nrow - 1, ncol - 1}; /* if (norms.count(norm_key) == 0) { if (peps_parameters.MeanField_Env) { norms[norm_key] = core::Contract_MF_density(Tn_, op_); } else { - norms[norm_key] = core::Contract_density(C_, eTt_, eTr_, eTb_, eTl_, Tn_, op_); + norms[norm_key] = core::Contract_density(C_, eTt_, eTr_, eTb_, + eTl_, Tn_, op_); } } */ if (norms.count(norm_key) == 0) { - if (nrow == 2){ - const int top = indices[0][0]; - const int bottom = indices[1][0]; - norms[norm_key] = core::Contract_two_sites_vertical_density( - C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], - eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], - eTl[top], Tn[top], Tn[bottom], op_identity[top], op_identity[bottom]); - }else{ - const int left = indices[0][0]; - const int right = indices[0][1]; - norms[norm_key] = core::Contract_two_sites_horizontal_density( - C1[left], C2[right], C3[right], C4[left], eTt[left], - eTt[right], eTr[right], eTb[right], eTb[left], - eTl[left], Tn[left], Tn[right], op_identity[left], op_identity[right]); + if (nrow == 2) { + const int top = indices[0][0]; + const int bottom = indices[1][0]; + norms[norm_key] = core::Contract_two_sites_vertical_density_CTM( + C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], eTr[top], + eTr[bottom], eTb[bottom], eTl[bottom], eTl[top], Tn[top], + Tn[bottom], op_identity[top], op_identity[bottom]); + } else { + const int left = indices[0][0]; + const int right = indices[0][1]; + norms[norm_key] = core::Contract_two_sites_horizontal_density_CTM( + C1[left], C2[right], C3[right], C4[left], eTt[left], eTt[right], + eTr[right], eTb[right], eTb[left], eTl[left], Tn[left], Tn[right], + op_identity[left], op_identity[right]); } } auto norm = norms[norm_key]; @@ -465,107 +485,125 @@ auto iTPS::measure_twosite_density() tensor_type value = 0.0; if (nrow * ncol == 2) { if (op.ops_indices.empty()) { - if (nrow == 2) { - const int top = indices[0][0]; - const int bottom = indices[1][0]; - ptensor o = - (top == source ? op.op - : mptensor::transpose(op.op, {1, 0, 3, 2})); - /* - value = peps_parameters.MeanField_Env - ? core::Contract_two_sites_vertical_op12_MF_density( - *(Tn_[0][0]), *(Tn_[1][0]), o) - : core::Contract_two_sites_vertical_op12_density( - C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], - eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], - eTl[top], Tn[top], Tn[bottom], o); - */ - value = core::Contract_two_sites_vertical_op12_density( - C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], - eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], - eTl[top], Tn[top], Tn[bottom], o); - - } else { // ncol == 2 - const int left = indices[0][0]; - const int right = indices[0][1]; - ptensor o = - (left == source ? op.op - : mptensor::transpose(op.op, {1, 0, 3, 2})); - /* - value = peps_parameters.MeanField_Env - ? core::Contract_two_sites_horizontal_op12_MF_density( - *(Tn_[0][0]), *(Tn_[0][1]), o) - : core::Contract_two_sites_horizontal_op12_density( - C1[left], C2[right], C3[right], C4[left], eTt[left], - eTt[right], eTr[right], eTb[right], eTb[left], - eTl[left], Tn[left], Tn[right], o); - */ - value = core::Contract_two_sites_horizontal_op12_density( - C1[left], C2[right], C3[right], C4[left], eTt[left], - eTt[right], eTr[right], eTb[right], eTb[left], - eTl[left], Tn[left], Tn[right], o); - } + if (nrow == 2) { + const int top = indices[0][0]; + const int bottom = indices[1][0]; + ptensor o = + (top == source ? op.op + : mptensor::transpose(op.op, {1, 0, 3, 2})); + /* + value = peps_parameters.MeanField_Env + ? core::Contract_two_sites_vertical_op12_MF_density( + *(Tn_[0][0]), *(Tn_[1][0]), o) + : core::Contract_two_sites_vertical_op12_density( + C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], + eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], + eTl[top], Tn[top], Tn[bottom], o); + */ + value = core::Contract_two_sites_vertical_op12_density_CTM( + C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], eTr[top], + eTr[bottom], eTb[bottom], eTl[bottom], eTl[top], Tn[top], + Tn[bottom], o); + + } else { // ncol == 2 + const int left = indices[0][0]; + const int right = indices[0][1]; + ptensor o = + (left == source ? op.op + : mptensor::transpose(op.op, {1, 0, 3, 2})); + /* + value = peps_parameters.MeanField_Env + ? core::Contract_two_sites_horizontal_op12_MF_density( + *(Tn_[0][0]), *(Tn_[0][1]), o) + : core::Contract_two_sites_horizontal_op12_density( + C1[left], C2[right], C3[right], C4[left], eTt[left], + eTt[right], eTr[right], eTb[right], eTb[left], + eTl[left], Tn[left], Tn[right], o); + */ + value = core::Contract_two_sites_horizontal_op12_density_CTM( + C1[left], C2[right], C3[right], C4[left], eTt[left], eTt[right], + eTr[right], eTb[right], eTb[left], eTl[left], Tn[left], Tn[right], + o); + } } else { - if (nrow == 2) { - const int top = indices[0][0]; - const int bottom = indices[1][0]; - const int target_site = lattice.other(op.source_site, dx, dy); - - ptensor op_t, op_b; - - if (top == source){ - op_t = onesite_operators[siteoperator_index(op.source_site,op.ops_indices[0])].op; - op_b = onesite_operators[siteoperator_index(target_site, op.ops_indices[1])].op; - } else{ - op_t = onesite_operators[siteoperator_index(target_site, op.ops_indices[1])].op; - op_b = onesite_operators[siteoperator_index(op.source_site,op.ops_indices[0])].op; - } - - value = core::Contract_two_sites_vertical_density( - C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], - eTr[top], eTr[bottom], eTb[bottom], eTl[bottom], - eTl[top], Tn[top], Tn[bottom], op_t, op_b); - - } else { // ncol == 2 - const int left = indices[0][0]; - const int right = indices[0][1]; - const int target_site = lattice.other(op.source_site, dx, dy); - - ptensor op_l, op_r; - - if (left == source){ - op_l = onesite_operators[siteoperator_index(op.source_site,op.ops_indices[0])].op; - op_r = onesite_operators[siteoperator_index(target_site, op.ops_indices[1])].op; - } else{ - op_l = onesite_operators[siteoperator_index(target_site, op.ops_indices[1])].op; - op_r = onesite_operators[siteoperator_index(op.source_site,op.ops_indices[0])].op; + if (nrow == 2) { + const int top = indices[0][0]; + const int bottom = indices[1][0]; + const int target_site = lattice.other(op.source_site, dx, dy); + + ptensor op_t, op_b; + + if (top == source) { + op_t = onesite_operators[siteoperator_index(op.source_site, + op.ops_indices[0])] + .op; + op_b = onesite_operators[siteoperator_index(target_site, + op.ops_indices[1])] + .op; + } else { + op_t = onesite_operators[siteoperator_index(target_site, + op.ops_indices[1])] + .op; + op_b = onesite_operators[siteoperator_index(op.source_site, + op.ops_indices[0])] + .op; + } + + value = core::Contract_two_sites_vertical_density_CTM( + C1[top], C2[top], C3[bottom], C4[bottom], eTt[top], eTr[top], + eTr[bottom], eTb[bottom], eTl[bottom], eTl[top], Tn[top], + Tn[bottom], op_t, op_b); + + } else { // ncol == 2 + const int left = indices[0][0]; + const int right = indices[0][1]; + const int target_site = lattice.other(op.source_site, dx, dy); + + ptensor op_l, op_r; + + if (left == source) { + op_l = onesite_operators[siteoperator_index(op.source_site, + op.ops_indices[0])] + .op; + op_r = onesite_operators[siteoperator_index(target_site, + op.ops_indices[1])] + .op; + } else { + op_l = onesite_operators[siteoperator_index(target_site, + op.ops_indices[1])] + .op; + op_r = onesite_operators[siteoperator_index(op.source_site, + op.ops_indices[0])] + .op; } - value = core::Contract_two_sites_horizontal_density( - C1[left], C2[right], C3[right], C4[left], eTt[left], - eTt[right], eTr[right], eTb[right], eTb[left], - eTl[left], Tn[left], Tn[right], op_l, op_r); - } + value = core::Contract_two_sites_horizontal_density_CTM( + C1[left], C2[right], C3[right], C4[left], eTt[left], eTt[right], + eTr[right], eTb[right], eTb[left], eTl[left], Tn[left], Tn[right], + op_l, op_r); + } } } - ret[op.group][{op.source_site, op.dx[0], op.dy[0]}] = value / norm; + ret[op.group][{op.source_site, op.dx[0], op.dy[0]}] = value / norm; } ret.push_back(norms); double norm_real_min = 1e100; double norm_imag_abs_max = 0.0; - for(auto & r: norms){ + for (auto &r : norms) { double norm_re = std::real(r.second); double norm_im = std::imag(r.second); norm_real_min = std::min(norm_re, norm_real_min); norm_imag_abs_max = std::max(std::abs(norm_im), norm_imag_abs_max); } - if(mpirank == 0){ - if(norm_real_min < 0.0){ - std::cerr << "WARNING: Norm is negative [min(real(NORM)) = " << norm_real_min << "].\n"; + if (mpirank == 0) { + if (norm_real_min < 0.0) { + std::cerr << "WARNING: Norm is negative [min(real(NORM)) = " + << norm_real_min << "].\n"; std::cerr << "HINT: Increase the bond dimension of CTM." << std::endl; } - if(norm_imag_abs_max > 1.0e-6){ - std::cerr << "WARNING: Norm is not real [max(abs(imag(NORM))) = " << norm_imag_abs_max << " > 1e-6].\n"; + if (norm_imag_abs_max > 1.0e-6) { + std::cerr << "WARNING: Norm is not real [max(abs(imag(NORM))) = " + << norm_imag_abs_max << " > 1e-6].\n"; std::cerr << "HINT: Increase the bond dimension of CTM." << std::endl; } } @@ -573,8 +611,7 @@ auto iTPS::measure_twosite_density() time_observable += timer.elapsed(); return ret; } - - + // template specialization template class iTPS; template class iTPS; diff --git a/test/data/FT_TFI_square.toml b/test/data/FT_TFI_square.toml index b039ab18..f126f6fe 100644 --- a/test/data/FT_TFI_square.toml +++ b/test/data/FT_TFI_square.toml @@ -24,6 +24,10 @@ virtual_dim = [3, 3, 3, 3] initial_state = [0.0] noise = 0.01 +[correlation] +r_max = 3 +operators = [[0,0], [0,1]] + [observable] [[observable.onesite]] name = "Sz" diff --git a/test/data/output_FT_TFI_square/FT_TFI_square.toml b/test/data/output_FT_TFI_square/FT_TFI_square.toml index b039ab18..f126f6fe 100644 --- a/test/data/output_FT_TFI_square/FT_TFI_square.toml +++ b/test/data/output_FT_TFI_square/FT_TFI_square.toml @@ -24,6 +24,10 @@ virtual_dim = [3, 3, 3, 3] initial_state = [0.0] noise = 0.01 +[correlation] +r_max = 3 +operators = [[0,0], [0,1]] + [observable] [[observable.onesite]] name = "Sz" diff --git a/test/data/output_FT_TFI_square/FT_correlation.dat b/test/data/output_FT_TFI_square/FT_correlation.dat new file mode 100644 index 00000000..2c18b2fe --- /dev/null +++ b/test/data/output_FT_TFI_square/FT_correlation.dat @@ -0,0 +1,302 @@ +# The meaning of each column is the following: +# $1: inverse temperature +# $2: left_op +# $3: left_site +# $4: right_op +# $5: right_dx +# $6: right_dy +# $7: real +# $8: imag +# The names of operators are the following: +# 0: Sz +# 1: Sx +# 2: Sy + +0.00000000000000000e+00 0 0 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 0 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 0 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 0 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 0 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 0 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 0 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 1 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 0 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 1 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 0 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 0 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 1 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 0 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 2 1 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 0 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 1 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 0 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 1 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 0 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 0 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 1 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 0 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 3 1 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 0 1 0 5.92410132271758497e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 1 1 0 -5.73564155459430558e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 0 2 0 1.64683888882757277e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 1 2 0 -6.24058626728803172e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 0 3 0 4.89447735784160742e-03 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 1 3 0 -6.08509290308720857e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 0 0 1 5.92950609014091037e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 1 0 1 -5.73804091540712938e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 0 0 2 1.64807663944176383e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 1 0 2 -6.24496390292601756e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 0 0 3 4.89759728229662451e-03 0.00000000000000000e+00 +1.00000000000000067e+00 0 0 1 0 3 -6.09096878882597663e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 0 1 0 5.92710902484732405e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 1 1 0 -8.41503867388877442e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 0 2 0 1.64683888882760712e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 1 2 0 -8.28807101596452795e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 0 3 0 4.89655928264179363e-03 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 1 3 0 -8.41533566510486863e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 0 0 1 5.92950609014104082e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 1 0 1 -5.73804153364186415e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 0 0 2 1.64807663944177805e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 1 0 2 -6.24496449182167402e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 0 0 3 4.89759728229667308e-03 0.00000000000000000e+00 +1.00000000000000067e+00 0 1 1 0 3 -6.09096962580280579e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 0 1 0 5.92410132271751835e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 1 1 0 -5.73564218198578626e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 0 2 0 1.64683888882755439e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 1 2 0 -6.24058686507662039e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 0 3 0 4.89447735784152068e-03 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 1 3 0 -6.08509376581040991e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 0 0 1 5.93254359947776796e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 1 0 1 -8.41097708141020535e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 0 0 2 1.64807663944175550e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 1 0 2 -8.28934425577230781e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 0 0 3 4.89969579132285005e-03 0.00000000000000000e+00 +1.00000000000000067e+00 0 2 1 0 3 -8.41703940720063369e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 0 1 0 5.92710902484726576e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 1 1 0 -8.41504002501942324e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 0 2 0 1.64683888882757971e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 1 2 0 -8.28807290927177919e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 0 3 0 4.89655928264172424e-03 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 1 3 0 -8.41533755147140272e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 0 0 1 5.93254359947783319e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 1 0 1 -8.41097843685492956e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 0 0 2 1.64807663944176834e-02 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 1 0 2 -8.28934612977705884e-07 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 0 0 3 4.89969579132284831e-03 0.00000000000000000e+00 +1.00000000000000067e+00 0 3 1 0 3 -8.41704127424652095e-07 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 1 0 1.43012984252511299e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 1 0 8.47198780646827160e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 2 0 1.24317161905052681e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 2 0 9.24154445401974556e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 3 0 1.18750323945396238e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 3 0 9.45573172291121616e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 0 1 1.43064122867304744e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 0 1 8.46643229153287852e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 0 2 1.24324011613211938e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 0 2 9.24048162229140907e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 0 3 1.18750454467615355e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 0 3 9.45551323701757651e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 1 0 1.43040823832083802e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 1 0 8.46896398243687232e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 2 0 1.24317161905053611e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 2 0 9.24201225334412291e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 3 0 1.18752395701830271e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 3 0 9.45550789512114159e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 0 1 1.43064122867305799e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 0 1 8.46643229153289240e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 0 2 1.24324011613212521e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 0 2 9.24048162229139936e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 0 3 1.18750454467616368e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 0 3 9.45551323701757235e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 0 1 0 1.43012984252512271e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 1 1 0 8.47198780646820637e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 0 2 0 1.24317161905053444e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 1 2 0 9.24154445401970392e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 0 3 0 1.18750323945397127e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 1 3 0 9.45573172291116065e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 0 0 1 1.43092106392120000e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 1 0 1 8.46338386061076531e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 0 0 2 1.24324011613212715e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 1 0 2 9.24095231992692473e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 0 0 3 1.18752527477493541e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 2 1 0 3 9.45528829334467968e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 0 1 0 1.43040823832084552e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 1 1 0 8.46896398243682375e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 0 2 0 1.24317161905054818e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 1 2 0 9.24201225334408127e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 0 3 0 1.18752395701831132e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 1 3 0 9.45550789512109857e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 0 0 1 1.43092106392120999e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 1 0 1 8.46338386061079723e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 0 0 2 1.24324011613213728e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 1 0 2 9.24095231992692195e-02 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 0 0 3 1.18752527477494416e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 3 1 0 3 9.45528829334468246e-02 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 0 1 0 1.79488103329198206e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 1 1 0 1.04448420611869972e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 0 2 0 1.75203981981685769e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 1 2 0 1.09855262776481152e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 0 3 0 1.74733048993223866e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 1 3 0 1.10446129774190341e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 0 0 1 1.79520101691566292e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 1 0 1 1.04400711147595138e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 0 0 2 1.75207507639598720e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 1 0 2 1.09850076416997844e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 0 0 3 1.74733447607362508e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 0 1 0 3 1.10445549020872696e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 0 1 0 1.79504600129055142e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 1 1 0 1.04424031374009629e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 0 2 0 1.75203981981624429e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 1 2 0 1.09855632068814005e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 0 3 0 1.74733243869285904e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 1 3 0 1.10445844535271634e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 0 0 1 1.79520101691466566e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 1 0 1 1.04400711147611971e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 0 0 2 1.75207507639480259e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 1 0 2 1.09850076417030373e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 0 0 3 1.74733447607240050e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 1 1 0 3 1.10445549020908015e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 0 1 0 1.79488103329198706e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 1 1 0 1.04448420611869111e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 0 2 0 1.75203981981686518e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 1 2 0 1.09855262776481000e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 0 3 0 1.74733048993224560e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 1 3 0 1.10446129774189480e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 0 0 1 1.79536742452797715e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 1 0 1 1.04376098829851507e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 0 0 2 1.75207507639599636e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 1 0 2 1.09850447367509721e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 0 0 3 1.74733644179049102e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 2 1 0 3 1.10445261174643899e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 0 1 0 1.79504600129055586e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 1 1 0 1.04424031374009435e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 0 2 0 1.75203981981624846e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 1 2 0 1.09855632068812992e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 0 3 0 1.74733243869286792e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 1 3 0 1.10445844535271509e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 0 0 1 1.79536742452698045e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 1 0 1 1.04376098829868855e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 0 0 2 1.75207507639480703e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 1 0 2 1.09850447367541293e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 0 0 3 1.74733644178926423e-01 0.00000000000000000e+00 +2.99999999999998002e+00 0 3 1 0 3 1.10445261174679760e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 0 1 0 1.83655788559122207e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 1 1 0 1.06135803377212609e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 0 2 0 1.80559682627960710e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 1 2 0 1.10928814702997314e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 0 3 0 1.80308692322066866e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 1 3 0 1.11316885038268129e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 0 0 1 1.83684663320369673e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 1 0 1 1.06089601538666770e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 0 0 2 1.80562508934059757e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 1 0 2 1.10924329228615087e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 0 0 3 1.80308962546219892e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 0 1 0 3 1.11316458229292939e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 0 1 0 1.83670524693388043e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 1 1 0 1.06112352285844119e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 0 2 0 1.80559682627960544e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 1 2 0 1.10928863007352552e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 0 3 0 1.80308788207760640e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 1 3 0 1.11316732912677768e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 0 0 1 1.83684663320369479e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 1 0 1 1.06089601538667450e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 0 0 2 1.80562508934059479e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 1 0 2 1.10924329228615670e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 0 0 3 1.80308962546219587e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 1 1 0 3 1.11316458229293508e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 0 1 0 1.83655788559122263e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 1 1 0 1.06135803377212984e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 0 2 0 1.80559682627960905e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 1 2 0 1.10928814702997688e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 0 3 0 1.80308692322066949e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 1 3 0 1.11316885038268462e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 0 0 1 1.83699534418551552e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 1 0 1 1.06065931355582913e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 0 0 2 1.80562508934059784e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 1 0 2 1.10924377882334446e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 0 0 3 1.80309059649407744e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 2 1 0 3 1.11316304144878572e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 0 1 0 1.83670524693388210e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 1 1 0 1.06112352285844397e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 0 2 0 1.80559682627960572e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 1 2 0 1.10928863007352885e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 0 3 0 1.80308788207760834e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 1 3 0 1.11316732912678143e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 0 0 1 1.83699534418551524e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 1 0 1 1.06065931355583509e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 0 0 2 1.80562508934059535e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 1 0 2 1.10924377882335071e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 0 0 3 1.80309059649407605e-01 0.00000000000000000e+00 +3.99999999999995870e+00 0 3 1 0 3 1.11316304144879211e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 0 1 0 1.84347510995519631e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 1 1 0 1.06437542347705374e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 0 2 0 1.81447325057446901e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 1 2 0 1.11108638957345879e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 0 3 0 1.81229217342633059e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 1 3 0 1.11459667228883785e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 0 0 1 1.84375741281435412e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 1 0 1 1.06391597253122611e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 0 0 2 1.81450007263202456e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 1 0 2 1.11104289892465485e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 0 0 3 1.81229462103419586e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 0 1 0 3 1.11459271041739902e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 0 1 0 1.84361885394739272e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 1 1 0 1.06414255349092823e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 0 2 0 1.81447325057448233e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 1 2 0 1.11108647187010481e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 0 3 0 1.81229297805957257e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 1 3 0 1.11459536941155304e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 0 0 1 1.84375741281433608e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 1 0 1 1.06391597253128564e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 0 0 2 1.81450007263205176e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 1 0 2 1.11104289892463196e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 0 0 3 1.81229462103417699e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 1 1 0 3 1.11459271041745869e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 0 1 0 1.84347510995519243e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 1 1 0 1.06437542347705277e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 0 2 0 1.81447325057446790e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 1 2 0 1.11108638957344699e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 0 3 0 1.81229217342632448e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 1 3 0 1.11459667228883549e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 0 0 1 1.84390248865831968e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 1 0 1 1.06368091984722579e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 0 0 2 1.81450007263201957e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 1 0 2 1.11104298234522794e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 0 0 3 1.81229543690775236e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 2 1 0 3 1.11459138919339784e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 0 1 0 1.84361885394734720e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 1 1 0 1.06414255349088424e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 0 2 0 1.81447325057443182e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 1 2 0 1.11108647187007428e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 0 3 0 1.81229297805952400e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 1 3 0 1.11459536941151238e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 0 0 1 1.84390248865830247e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 1 0 1 1.06368091984716945e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 0 0 2 1.81450007263195379e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 1 0 2 1.11104298234525778e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 0 0 3 1.81229543690773182e-01 0.00000000000000000e+00 +4.99999999999993783e+00 0 3 1 0 3 1.11459138919334580e-01 0.00000000000000000e+00 diff --git a/test/data/output_FT_TFI_square/FT_correlation_length.dat b/test/data/output_FT_TFI_square/FT_correlation_length.dat new file mode 100644 index 00000000..8b750213 --- /dev/null +++ b/test/data/output_FT_TFI_square/FT_correlation_length.dat @@ -0,0 +1,28 @@ +# The meaning of each column is the following: +# $1: inverse temperature +# $2: direction 0: +x, 1: +y +# $3: y (dir=0) or x (dir=1) coorinates +# $4: correlation length xi = 1/e_1 +# $5-: eigenvalues e_i = -log|t_i/t_0| +# where i > 0 and t_i is i-th largest eigenvalue of T + +1.00000000000000067e+00 0 0 9.67953136908513478e-01 1.03310786635171103e+00 1.08553569446091958e+00 1.17262233309466146e+00 +1.00000000000000067e+00 0 1 9.67957620882061942e-01 1.03310308057571687e+00 1.08551917970671807e+00 1.17259294703237171e+00 +1.00000000000000067e+00 1 0 9.67963220783661704e-01 1.03309710382425624e+00 1.08551703838536318e+00 1.17259565187198822e+00 +1.00000000000000067e+00 1 1 9.67956608263846885e-01 1.03310416134626837e+00 1.08554180798799971e+00 1.17264093368912814e+00 +2.00000000000000133e+00 0 0 1.13212015017615952e+00 8.83298473085563085e-01 9.45368724403767291e-01 1.04803199696013194e+00 +2.00000000000000133e+00 0 1 1.13211898458784588e+00 8.83299382497375385e-01 9.45369753851304617e-01 1.04803030479563208e+00 +2.00000000000000133e+00 1 0 1.13164158490340538e+00 8.83672015362848340e-01 9.45768916622898193e-01 1.04847531972613406e+00 +2.00000000000000133e+00 1 1 1.13164314130812893e+00 8.83670800005065704e-01 9.45766715467456942e-01 1.04847456819131479e+00 +2.99999999999998002e+00 0 0 4.89729049587723564e-01 2.04194544073267847e+00 2.09587798081285026e+00 2.17946389265481066e+00 +2.99999999999998002e+00 0 1 4.89728825106827859e-01 2.04194637671544710e+00 2.09588055982135346e+00 2.17946708715965887e+00 +2.99999999999998002e+00 1 0 4.89794874818846093e-01 2.04167101660640427e+00 2.09558274342377882e+00 2.17913298710286885e+00 +2.99999999999998002e+00 1 1 4.89795103470354154e-01 2.04167006349120639e+00 2.09558010369405734e+00 2.17912972010753858e+00 +3.99999999999995870e+00 0 0 4.18753407559145918e-01 2.38804026892308263e+00 2.42876253523038566e+00 2.49077437354054876e+00 +3.99999999999995870e+00 0 1 4.18753698780515271e-01 2.38803860816555558e+00 2.42875486245798333e+00 2.49074819255371249e+00 +3.99999999999995870e+00 1 0 4.19056814112243436e-01 2.38631127408932242e+00 2.42695640115043743e+00 2.48883510729979163e+00 +3.99999999999995870e+00 1 1 4.19056515032273869e-01 2.38631297719589064e+00 2.42696427164980033e+00 2.48886198790556845e+00 +4.99999999999993783e+00 0 0 4.04571036353797819e-01 2.47175380870690642e+00 2.50968836526901917e+00 2.56723639660268876e+00 +4.99999999999993783e+00 0 1 4.04571002327536622e-01 2.47175401659264260e+00 2.50968493877629317e+00 2.56720943272578461e+00 +4.99999999999993783e+00 1 0 4.04938234762838134e-01 2.46951241980316860e+00 2.50735691229938817e+00 2.56474383221563373e+00 +4.99999999999993783e+00 1 1 4.04938272885106476e-01 2.46951218731485778e+00 2.50736029668200988e+00 2.56477113752631292e+00 diff --git a/test/data/output_FT_TFI_square/parameters.dat b/test/data/output_FT_TFI_square/parameters.dat index b7bb4411..89e9fb81 100644 --- a/test/data/output_FT_TFI_square/parameters.dat +++ b/test/data/output_FT_TFI_square/parameters.dat @@ -36,4 +36,4 @@ outdir = output_FT_TFI_square Lsub = [ 2 , 2 ] skew = 0 -start_datetime = 2023-07-07T09:21:21+09:00 +start_datetime = 2023-07-10T10:20:43+09:00 From d0026a6bc3978ae09fec3c03d52af9ffa136d498 Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Mon, 10 Jul 2023 13:07:00 +0900 Subject: [PATCH 16/25] added missing files --- src/iTPS/core/contract.hpp | 302 ++++++++++++++++++ src/iTPS/core/contract_density_ctm.hpp | 158 +++++++++ .../core/contract_density_ctm/correlation.cpp | 131 ++++++++ 3 files changed, 591 insertions(+) create mode 100644 src/iTPS/core/contract.hpp create mode 100644 src/iTPS/core/contract_density_ctm.hpp create mode 100644 src/iTPS/core/contract_density_ctm/correlation.cpp diff --git a/src/iTPS/core/contract.hpp b/src/iTPS/core/contract.hpp new file mode 100644 index 00000000..a9374f8d --- /dev/null +++ b/src/iTPS/core/contract.hpp @@ -0,0 +1,302 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +/* + * + Basic routines independent on unit cell structures. + Using mptensor libraries + (Test version) + 2015 Dec. Tsuyoshi Okubo +*/ + +#ifndef TENES_SRC_ITPS_CORE_CONTRACT_HPP_ +#define TENES_SRC_ITPS_CORE_CONTRACT_HPP_ + +#include +#include + +#include "contract_itps_ctm.hpp" +#include "contract_itps_mf.hpp" +#include "contract_density_ctm.hpp" + +namespace tenes { +namespace itps { +namespace core { + +/*! @brief contract tensors with CTM + * + * @param[in] C corner transfer matrix + * @param[in] eTt top edge tensors + * @param[in] eTr right edge tensors + * @param[in] eTb bottom edge tensors + * @param[in] eTl left edge tensors + * @param[in] Tn center tensors + * @param[in] op onesite operators + */ +template +typename tensor::value_type Contract( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op, bool is_density, + bool is_meanfield) { + if (is_density) { + if (is_meanfield) { + throw std::runtime_error("Not implemented"); + // return Contract_density_MF(Tn, op); + } else { + return Contract_density_CTM(C, eTt, eTr, eTb, eTl, Tn, op); + } + } else { + if (is_meanfield) { + return Contract_iTPS_MF(Tn, op); + } else { + return Contract_iTPS_CTM(C, eTt, eTr, eTb, eTl, Tn, op); + } + } +} + +template +typename tensor::value_type Contract_one_site( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &Tn1, const tensor &op1, bool is_density, bool is_meanfield) { + if (is_density) { + if (is_meanfield) { + throw std::runtime_error("Not implemented"); + // return Contract_one_site_density_MF(Tn1, op1); + } else { + return Contract_one_site_density_CTM(C1, C2, C3, C4, eT1, eT2, eT3, eT4, + Tn1, op1); + } + } else { + if (is_meanfield) { + return Contract_one_site_iTPS_MF(Tn1, op1); + } else { + return Contract_one_site_iTPS_CTM(C1, C2, C3, C4, eT1, eT2, eT3, eT4, Tn1, + op1); + } + } +} + +template +typename tensor::value_type Contract_two_sites_horizontal( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op1, const tensor &op2, bool is_density, bool is_meanfield) { + if (is_density) { + if (is_meanfield) { + throw std::runtime_error("Not implemented"); + } else { + return Contract_two_site_horizontal_density_CTM( + C1, C2, C3, C4, eT1, eT2, eT3, eT4, eT5, eT6, Tn1, Tn2, op1, op2); + } + } else { + if (is_meanfield) { + return Contract_two_sites_horizontal_iTPS_MF(Tn1, op1); + } else { + return Contract_two_sites_horizontal_iTPS_CTM( + C1, C2, C3, C4, eT1, eT2, eT3, eT4, eT5, eT6, Tn1, Tn2, op1, op2); + } + } +} + +template +typename tensor::value_type Contract_two_sites_vertical( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op1, const tensor &op2, bool is_density, bool is_meanfield) { + if (is_density) { + if (is_meanfield) { + throw std::runtime_error("Not implemented"); + } else { + return Contract_two_site_vertical_density_CTM( + C1, C2, C3, C4, eT1, eT2, eT3, eT4, eT5, eT6, Tn1, Tn2, op1, op2); + } + } else { + if (is_meanfield) { + return Contract_two_sites_vertical_iTPS_MF(Tn1, op1); + } else { + return Contract_two_sites_vertical_iTPS_CTM(C1, C2, C3, C4, eT1, eT2, eT3, eT4, + eT5, eT6, Tn1, Tn2, op1, op2); + } + } +} + +template +typename tensor::value_type Contract_two_sites_horizontal_op12( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op12, bool is_density, bool is_meanfield) { + if (is_density) { + if (is_meanfield) { + throw std::runtime_error("Not implemented"); + } else { + return Contract_two_sites_horizontal_op12_density_CTM( + C1, C2, C3, C4, eT1, eT2, eT3, eT4, eT5, eT6, Tn1, Tn2, op12); + } + } else { + if (is_meanfield) { + return Contract_two_sites_horizontal_op12_iTPS_MF(Tn1, Tn2, op12); + } else { + return Contract_two_sites_horizontal_op12_iTPS_CTM( + C1, C2, C3, C4, eT1, eT2, eT3, eT4, eT5, eT6, Tn1, Tn2, op12); + } + } +} + +template +typename tensor::value_type Contract_two_sites_vertical_op12( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op12, bool is_density, bool is_meanfield) { + if (is_density) { + if (is_meanfield) { + throw std::runtime_error("Not implemented"); + } else { + return Contract_two_sites_vertical_op12_density_CTM( + C1, C2, C3, C4, eT1, eT2, eT3, eT4, eT5, eT6, Tn1, Tn2, op12); + } + } else { + if (is_meanfield) { + return Contract_two_sites_vertical_op12_iTPS_MF(Tn1, Tn2, op12); + } else { + return Contract_two_sites_vertical_op12_iTPS_CTM( + C1, C2, C3, C4, eT1, eT2, eT3, eT4, eT5, eT6, Tn1, Tn2, op12); + } + } +} + +template +typename tensor::value_type Contract_four_sites( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &eT7, const tensor &eT8, + const tensor &Tn1, const tensor &Tn2, const tensor &Tn3, const tensor &Tn4, + const tensor &op1, const tensor &op2, const tensor &op3, const tensor &op4, + bool is_density, bool is_meanfield) { + if (is_density) { + if (is_meanfield) { + throw std::runtime_error("Not implemented"); + } else { + return Contract_four_sites_density_CTM(C1, C2, C3, C4, eT1, eT2, eT3, eT4, + eT5, eT6, eT7, eT8, Tn1, Tn2, Tn3, + Tn4, op1, op2, op3, op4); + } + } else { + if (is_meanfield) { + return Contract_four_sites_iTPS_MF(Tn1, Tn2, Tn3, Tn4, op1, op2, op3, op4); + } else { + return Contract_four_sites_iTPS_CTM(C1, C2, C3, C4, eT1, eT2, eT3, eT4, eT5, + eT6, eT7, eT8, Tn1, Tn2, Tn3, Tn4, op1, + op2, op3, op4); + } + } +} + +template +void StartCorrelation(tensor &A, const tensor &C1, const tensor &C4, + const tensor &eT1, const tensor &eT3, const tensor &eT4, + const tensor &Tn1, const tensor &op, bool is_density, + bool is_meanfield) { + if (is_density) { + throw std::runtime_error("Not implemented"); + // if (is_meanfield) { + // throw std::runtime_error("Not implemented"); + // } else { + // StartCorrelation_density_CTM(A, C1, C4, eT1, eT3, eT4, Tn1, op); + // } + } else { + if (is_meanfield) { + StartCorrelation_iTPS_MF(A, Tn1, op); + } else { + StartCorrelation_iTPS_CTM(A, C1, C4, eT1, eT3, eT4, Tn1, op); + } + } +} + +template +void Transfer(tensor &A, const tensor &eT1, const tensor &eT3, + const tensor &Tn1, bool is_density, bool is_meanfield) { + if (is_density) { + throw std::runtime_error("Not implemented"); + // if (is_meanfield) { + // throw std::runtime_error("Not implemented"); + // } else { + // Transfer_density_CTM(A, eT1, eT3, Tn1); + // } + } else { + if (is_meanfield) { + Transfer_iTPS_MF(A, Tn1); + } else { + Transfer_iTPS_CTM(A, eT1, eT3, Tn1); + } + } +}; + +template +typename tensor::value_type FinishCorrelation( + const tensor &A, const tensor &C2, const tensor &C3, const tensor &eT1, + const tensor &eT2, const tensor &eT3, const tensor &Tn1, const tensor &op, + bool is_density, bool is_meanfield) { + if (is_density) { + throw std::runtime_error("Not implemented"); + // if (is_meanfield) { + // throw std::runtime_error("Not implemented"); + // } else { + // return FinishCorrelation_density_CTM(A, C2, C3, eT1, eT2, eT3, Tn1, + // op); + // } + } else { + if (is_meanfield) { + return FinishCorrelation_iTPS_MF(A, Tn1, op); + } else { + return FinishCorrelation_iTPS_CTM(A, C2, C3, eT1, eT2, eT3, Tn1, op); + } + } +}; + +template +void TransferMatrix_MatVec(tensor &inoutvec, const tensor &eT1, bool is_density, + bool is_meanfield) { + if (is_density) { + throw std::runtime_error("Not implemented"); + // if (is_meanfield) { + // throw std::runtime_error("Not implemented"); + // } else { + // TransferMatrix_MatVec_density_CTM(inoutvec, eT1); + // } + } else { + if (is_meanfield) { + TransferMatrix_MatVec_iTPS_MF(inoutvec, eT1); + } else { + TransferMatrix_MatVec_iTPS_CTM(inoutvec, eT1); + } + } +}; + +} // end of namespace core +} // namespace itps +} // namespace tenes + +#endif // TENES_SRC_ITPS_CORE_CONTRACT_CTM_HPP_ diff --git a/src/iTPS/core/contract_density_ctm.hpp b/src/iTPS/core/contract_density_ctm.hpp new file mode 100644 index 00000000..667277ab --- /dev/null +++ b/src/iTPS/core/contract_density_ctm.hpp @@ -0,0 +1,158 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +/* + * + Basic routines independent on unit cell structures. + Using mptensor libraries + (Test version) + 2015 Dec. Tsuyoshi Okubo +*/ + +#ifndef TENES_SRC_ITPS_CORE_CONTRACT_DENSITY_CTM_HPP_ +#define TENES_SRC_ITPS_CORE_CONTRACT_DENSITY_CTM_HPP_ + +#include +#include + +namespace tenes { +namespace itps { +namespace core { + +/*! @brief contract tensors with CTM + * + * @param[in] C corner transfer matrix + * @param[in] eTt top edge tensors + * @param[in] eTr right edge tensors + * @param[in] eTb bottom edge tensors + * @param[in] eTl left edge tensors + * @param[in] Tn center tensors + * @param[in] op onesite operators + */ +template +typename tensor::value_type Contract_density_CTM( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op); + +/* +Declare template functions like + +template +typename tensor::value_type +Contract_density_1x1_CTM ( + const std::vector &C, + const std::vector &eTt, + const std::vector &eTr, + const std::vector &eTb, + const std::vector &eTl, + const std::vector> &Tn, + const std::vector> &op +) +*/ +#define DECLARE_CONTRACT(NROW, NCOL) \ + template \ + typename tensor::value_type Contract_##NROW##x##NCOL##_density_CTM( \ + const std::vector &C, \ + const std::vector &eTt, \ + const std::vector &eTr, \ + const std::vector &eTb, \ + const std::vector &eTl, \ + const std::vector> &Tn, \ + const std::vector> &op) + +//! @cond +DECLARE_CONTRACT(1, 1); +DECLARE_CONTRACT(2, 1); +DECLARE_CONTRACT(3, 1); +DECLARE_CONTRACT(4, 1); +DECLARE_CONTRACT(1, 2); +DECLARE_CONTRACT(2, 2); +DECLARE_CONTRACT(3, 2); +DECLARE_CONTRACT(4, 2); +DECLARE_CONTRACT(1, 3); +DECLARE_CONTRACT(2, 3); +DECLARE_CONTRACT(3, 3); +DECLARE_CONTRACT(4, 3); +DECLARE_CONTRACT(1, 4); +DECLARE_CONTRACT(2, 4); +DECLARE_CONTRACT(3, 4); +DECLARE_CONTRACT(4, 4); +//! @endcond + +#undef DECLARE_CONTRACT + +template +typename tensor::value_type Contract_one_site_density_CTM( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &Tn1, const tensor &op1); + +template +typename tensor::value_type Contract_two_sites_horizontal_density_CTM( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op1, const tensor &op2); + +template +typename tensor::value_type Contract_two_sites_vertical_density_CTM( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op1, const tensor &op2); + +template +typename tensor::value_type Contract_two_sites_horizontal_op12_density_CTM( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op12); + +template +typename tensor::value_type Contract_two_sites_vertical_op12_density_CTM( + const tensor &C1, const tensor &C2, const tensor &C3, const tensor &C4, + const tensor &eT1, const tensor &eT2, const tensor &eT3, const tensor &eT4, + const tensor &eT5, const tensor &eT6, const tensor &Tn1, const tensor &Tn2, + const tensor &op12); + +template +void StartCorrelation_density_CTM(tensor &A, const tensor &C1, const tensor &C4, + const tensor &eT1, const tensor &eT3, + const tensor &eT4, const tensor &Tn1, + const tensor &op); + +template +void Transfer_density_CTM(tensor &A, const tensor &eT1, const tensor &eT3, + const tensor &Tn1); + +template +typename tensor::value_type FinishCorrelation_density_CTM( + const tensor &A, const tensor &C2, const tensor &C3, const tensor &eT1, + const tensor &eT2, const tensor &eT3, const tensor &Tn1, const tensor &op); + +template +void TransferMatrix_MatVec_density_CTM(tensor &inoutvec, const tensor &eT1); + +} // end of namespace core +} // namespace itps +} // namespace tenes + +#endif // TENES_SRC_ITPS_CORE_CONTRACT_CTM_HPP_ diff --git a/src/iTPS/core/contract_density_ctm/correlation.cpp b/src/iTPS/core/contract_density_ctm/correlation.cpp new file mode 100644 index 00000000..8ff4e60b --- /dev/null +++ b/src/iTPS/core/contract_density_ctm/correlation.cpp @@ -0,0 +1,131 @@ +/* TeNeS - Massively parallel tensor network solver / +/ Copyright (C) 2019- The University of Tokyo */ + +/* This program is free software: you can redistribute it and/or modify / +/ it under the terms of the GNU General Public License as published by / +/ the Free Software Foundation, either version 3 of the License, or / +/ (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, / +/ but WITHOUT ANY WARRANTY; without even the implied warranty of / +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the / +/ GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License / +/ along with this program. If not, see http://www.gnu.org/licenses/. */ + +/* + * + Basic routines independent on unit cell structures. + Using mptensor libraries + (Test version) + 2015 Dec. Tsuyoshi Okubo +*/ + +#include "../contract_density_ctm.hpp" +#include "../../../tensor.hpp" + +namespace tenes { +namespace itps { +namespace core { + +using mptensor::Axes; + +template +void StartCorrelation_density_CTM(tensor &A, const tensor &C1, const tensor &C4, + const tensor &eT1, const tensor &eT3, + const tensor &eT4, const tensor &Tn1, + const tensor &op) { + //////////////////////////////////////////////////////////// + // ((C1*eT1)*((Tn1*op)*(eT3*(C4*eT4)))) + // cpu_cost= 144384 memory= 6560 + // final_bond_order (eT1_r, eT3_r, Tn1_r) + //////////////////////////////////////////////////////////// + A = transpose( + tensordot(tensordot(C1, eT1, Axes(1), Axes(0)), + tensordot(tensordot(Tn1, op, Axes(4, 5), Axes(0, 1)), + tensordot(eT3, tensordot(C4, eT4, Axes(1), Axes(0)), + Axes(1), Axes(0)), + Axes(0, 3), Axes(3, 1)), + Axes(0, 2), Axes(3, 0)), + Axes(0, 2, 1)); +} + +template +void Transfer_density_CTM(tensor &A, const tensor &eT1, const tensor &eT3, + const tensor &Tn1) { + //////////////////////////////////////////////////////////// + // ./transfer_den.dat + //////////////////////////////////////////////////////////// + // (eT1*(Tn1*(A*eT3))) + // cpu_cost= 196608 memory= 9472 + // final_bond_order (eT1_r, eT3_r, Tn1_r) + //////////////////////////////////////////////////////////// + A = transpose(tensordot(eT1, + tensordot(contract(Tn1, Axes(4), Axes(5)), + tensordot(A, eT3, Axes(1), Axes(1)), + Axes(0, 3), Axes(1, 3)), + Axes(0, 2), Axes(2, 0)), + Axes(0, 2, 1)); +} + +template +typename tensor::value_type FinishCorrelation_density_CTM( + const tensor &A, const tensor &C2, const tensor &C3, const tensor &eT1, + const tensor &eT2, const tensor &eT3, const tensor &Tn1, const tensor &op) { + //////////////////////////////////////////////////////////// + // ./finishcorrelation_den.dat + //////////////////////////////////////////////////////////// + // (op*(Tn1*((A*eT1)*(eT3*(C2*(C3*eT2)))))) + // cpu_cost= 230404 memory= 11268 + // final_bond_order () + //////////////////////////////////////////////////////////// + return trace( + op, + tensordot( + Tn1, + tensordot( + tensordot(A, eT1, Axes(0), Axes(0)), + tensordot(eT3, + tensordot(C2, tensordot(C3, eT2, Axes(0), Axes(1)), + Axes(1), Axes(1)), + Axes(0), Axes(1)), + Axes(0, 2), Axes(0, 2)), + Axes(0, 1, 2, 3), Axes(0, 1, 3, 2)), + Axes(0, 1), Axes(0, 1)); +} + +// start of explicit instantiation + +template void StartCorrelation_density_CTM( + real_tensor &A, const real_tensor &C1, const real_tensor &C4, + const real_tensor &eT1, const real_tensor &eT3, const real_tensor &eT4, + const real_tensor &Tn1, const real_tensor &op); +template void StartCorrelation_density_CTM( + complex_tensor &A, const complex_tensor &C1, const complex_tensor &C4, + const complex_tensor &eT1, const complex_tensor &eT3, + const complex_tensor &eT4, const complex_tensor &Tn1, + const complex_tensor &op); + +template void Transfer_density_CTM(real_tensor &A, const real_tensor &eT1, + const real_tensor &eT3, + const real_tensor &Tn1); +template void Transfer_density_CTM(complex_tensor &A, const complex_tensor &eT1, + const complex_tensor &eT3, + const complex_tensor &Tn1); + +template typename real_tensor::value_type FinishCorrelation_density_CTM( + const real_tensor &A, const real_tensor &C2, const real_tensor &C3, + const real_tensor &eT1, const real_tensor &eT2, const real_tensor &eT3, + const real_tensor &Tn1, const real_tensor &op); +template typename complex_tensor::value_type FinishCorrelation_density_CTM( + const complex_tensor &A, const complex_tensor &C2, const complex_tensor &C3, + const complex_tensor &eT1, const complex_tensor &eT2, + const complex_tensor &eT3, const complex_tensor &Tn1, + const complex_tensor &op); + +// end of explicit instantiation + +} // end of namespace core +} // namespace itps +} // namespace tenes From 4846ca8509497ce3839e41abc9bdf71ad7a59f24 Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Tue, 11 Jul 2023 17:17:08 +0900 Subject: [PATCH 17/25] update sample --- sample/08_finitetemperature/QMC/README.md | 7 + .../QMC/ene-L32-Gamma0.5.dat | 22 ++ .../QMC/ene-L32-Gamma0.8.dat | 22 ++ .../QMC/ene-L32-Gamma2.0.dat | 22 ++ sample/08_finitetemperature/QMC/extract.py | 37 ++++ .../08_finitetemperature/QMC/init_params.py | 42 ++++ .../QMC/spec-L32-Gamma0.5.dat | 22 ++ .../QMC/spec-L32-Gamma0.8.dat | 22 ++ .../QMC/spec-L32-Gamma2.0.dat | 22 ++ sample/08_finitetemperature/README.md | 4 +- sample/08_finitetemperature/plot_c.plt | 208 ++---------------- sample/08_finitetemperature/plot_e.plt | 196 ++--------------- .../simple_ft_middle.toml | 5 +- .../simple_ft_strong.toml | 5 +- .../08_finitetemperature/simple_ft_weak.toml | 5 +- .../08_finitetemperature/simple_ft_zero.toml | 5 +- src/iTPS/finite_temperature.cpp | 12 +- src/iTPS/iTPS.cpp | 40 ++-- src/iTPS/time_evolution.cpp | 10 +- src/iTPS/transfer_matrix.cpp | 13 +- 20 files changed, 315 insertions(+), 406 deletions(-) create mode 100644 sample/08_finitetemperature/QMC/README.md create mode 100644 sample/08_finitetemperature/QMC/ene-L32-Gamma0.5.dat create mode 100644 sample/08_finitetemperature/QMC/ene-L32-Gamma0.8.dat create mode 100644 sample/08_finitetemperature/QMC/ene-L32-Gamma2.0.dat create mode 100644 sample/08_finitetemperature/QMC/extract.py create mode 100644 sample/08_finitetemperature/QMC/init_params.py create mode 100644 sample/08_finitetemperature/QMC/spec-L32-Gamma0.5.dat create mode 100644 sample/08_finitetemperature/QMC/spec-L32-Gamma0.8.dat create mode 100644 sample/08_finitetemperature/QMC/spec-L32-Gamma2.0.dat diff --git a/sample/08_finitetemperature/QMC/README.md b/sample/08_finitetemperature/QMC/README.md new file mode 100644 index 00000000..3d281951 --- /dev/null +++ b/sample/08_finitetemperature/QMC/README.md @@ -0,0 +1,7 @@ +QMC result for TFI model on a square lattice (32x32) by using ALPS/looper (https://github.com/wistaria/alps-looper). + +``` bash +alpspython init_params.py +mpiexec -np 4 --mpi params.in.xml +alpspython extract.py +``` diff --git a/sample/08_finitetemperature/QMC/ene-L32-Gamma0.5.dat b/sample/08_finitetemperature/QMC/ene-L32-Gamma0.5.dat new file mode 100644 index 00000000..6c5fd58d --- /dev/null +++ b/sample/08_finitetemperature/QMC/ene-L32-Gamma0.5.dat @@ -0,0 +1,22 @@ +# L = 32.0 Gamma = 0.5 +# X: T +# Y: Energy Density +0.05 -0.5313553134765652 3.748565971026992e-05 +0.1 -0.5314824453125043 5.849954690516658e-05 +0.2 -0.5311685273437496 7.48476486184708e-05 +0.3 -0.5282199316406249 9.738298141616932e-05 +0.4 -0.5107085156249989 0.00012275165656793833 +0.5 -0.458699443359375 0.0001776547503726233 +0.6 -0.3368626523437474 0.00021240384658201812 +0.7 -0.2781191484375007 0.00019883229056143697 +0.8 -0.23993654687500565 0.0001993892805973693 +0.9 -0.21131274609375136 0.0002091794762984266 +1.0 -0.18950154296875 0.00018953816927160352 +1.25 -0.151240673828125 0.00021209270293833925 +1.5 -0.125410869140625 0.0002000913212525913 +1.75 -0.107362392578125 0.00020984755147934134 +2.0 -0.093820390625 0.00023674488335461086 +5.0 -0.03799755859375 0.0003088981874111099 +10.0 -0.01895390625 0.0003969807628289617 + + diff --git a/sample/08_finitetemperature/QMC/ene-L32-Gamma0.8.dat b/sample/08_finitetemperature/QMC/ene-L32-Gamma0.8.dat new file mode 100644 index 00000000..13128d0f --- /dev/null +++ b/sample/08_finitetemperature/QMC/ene-L32-Gamma0.8.dat @@ -0,0 +1,22 @@ +# L = 32.0 Gamma = 0.8 +# X: T +# Y: Energy Density +0.05 -0.5810807861328138 4.341718398597079e-05 +0.1 -0.5812551425781206 6.34923439811804e-05 +0.2 -0.5810484921874988 9.706865647144667e-05 +0.3 -0.5766317753906263 0.0001117053723134814 +0.4 -0.5552358437499976 0.00016873976909868732 +0.5 -0.47915569335909053 0.0002674453167438385 +0.6 -0.4047338671874984 0.00020965390490904483 +0.7 -0.35790296679687233 0.00021845131802388494 +0.8 -0.32088243749999934 0.00022302394460830982 +0.9 -0.2909683476562516 0.00021772267713710534 +1.0 -0.2652671289064819 0.0002543803883668393 +1.25 -0.2175527832033281 0.00025742225457987746 +1.5 -0.18383305664079824 0.0002407538424803448 +1.75 -0.15849030273451764 0.0002569967644828177 +2.0 -0.13989750000011328 0.0002860778835965716 +5.0 -0.056754980468698334 0.00037648170015384643 +10.0 -0.02863300781248698 0.00046002017669002134 + + diff --git a/sample/08_finitetemperature/QMC/ene-L32-Gamma2.0.dat b/sample/08_finitetemperature/QMC/ene-L32-Gamma2.0.dat new file mode 100644 index 00000000..17daa3a2 --- /dev/null +++ b/sample/08_finitetemperature/QMC/ene-L32-Gamma2.0.dat @@ -0,0 +1,22 @@ +# L = 32.0 Gamma = 2.0 +# X: T +# Y: Energy Density +0.05 -1.0334599755859288 8.15961243418434e-05 +0.1 -1.0332957695312643 0.00010785517855673085 +0.2 -1.032796839843743 0.0001598251723175669 +0.3 -1.0280117929687531 0.00020002969583736966 +0.4 -1.0155184531249986 0.00022827728306653704 +0.5 -0.993859052734375 0.0002812672537734482 +0.6 -0.9639512695312594 0.00029828919636949556 +0.7 -0.9279069335937435 0.00033276099878656775 +0.8 -0.8894737343749887 0.0003506234598483194 +0.9 -0.8491067871093733 0.00035250965862460715 +1.0 -0.809234921875 0.0003955081574302917 +1.25 -0.7154190673828125 0.00043529457181856344 +1.5 -0.633995771484375 0.00045706037080446885 +1.75 -0.56572365234375 0.000436309128150606 +2.0 -0.5091771875 0.0005123987703781418 +5.0 -0.22217822265625 0.0005709700066125526 +10.0 -0.112352734375 0.0006542129588533097 + + diff --git a/sample/08_finitetemperature/QMC/extract.py b/sample/08_finitetemperature/QMC/extract.py new file mode 100644 index 00000000..4fa20520 --- /dev/null +++ b/sample/08_finitetemperature/QMC/extract.py @@ -0,0 +1,37 @@ +import numpy as np +import pyalps +import pyalps.plot as plot + +# Observable name : output_prefix +names = { + "Energy Density": "ene", + "Specific Heat": "spec", +} + +xnames = ["T"] +foreachs = [["L", "Gamma"]] +fe_types = [[np.int64, np.float64]] + + +def extract(data, xname, names, foreach, fe_types): + if np.isscalar(foreach): + foreach = [foreach] + if np.isscalar(fe_types): + fe_types = [fe_types] + for name in names: + for obs in pyalps.collectXY(data, xname, name, foreach=foreach): + vals = [typ(obs.props[sym]) for sym, typ in zip(foreach, fe_types)] + filename = names[name] + for sym, val in zip(foreach, vals): + filename += "-{}{}".format(sym, val) + filename += ".dat" + with open(filename, "w") as f: + f.write(plot.convertToText([obs]).replace(" +/- ", " ")) + + +result_files = pyalps.getResultFiles(prefix="params") + +data = pyalps.loadMeasurements(result_files, names.keys()) + +for xname, fe, fet in zip(xnames, foreachs, fe_types): + extract(data, xname, names, fe, fet) diff --git a/sample/08_finitetemperature/QMC/init_params.py b/sample/08_finitetemperature/QMC/init_params.py new file mode 100644 index 00000000..5dbafc62 --- /dev/null +++ b/sample/08_finitetemperature/QMC/init_params.py @@ -0,0 +1,42 @@ +import pyalps + +params = [] + +for L in [32]: + for g in [0.0, 0.5, 0.8, 2.0]: + for t in [ + 0.05, + 0.1, + 0.2, + 0.3, + 0.4, + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 1.0, + 1.25, + 1.5, + 1.75, + 2.0, + 5.0, + 10.0, + ]: + params.append( + { + "LATTICE": "square lattice", + "MODEL": "spin", + "local_S": 0.5, + "T": t, + "Jz": -1, + "Jxy": 0, + "THERMALIZATION": 5000, + "SWEEPS": 50000, + "Gamma": g, + "L": L, + "ALGORITHM": "loop", + } + ) + +pyalps.writeInputFiles("params", params) diff --git a/sample/08_finitetemperature/QMC/spec-L32-Gamma0.5.dat b/sample/08_finitetemperature/QMC/spec-L32-Gamma0.5.dat new file mode 100644 index 00000000..629589da --- /dev/null +++ b/sample/08_finitetemperature/QMC/spec-L32-Gamma0.5.dat @@ -0,0 +1,22 @@ +# L = 32.0 Gamma = 0.5 +# X: T +# Y: Specific Heat +0.05 0.21997971554398 0.1567778102847988 +0.1 -0.04071568316369634 0.0799059664836569 +0.2 -0.00220516344121717 0.045720560823110386 +0.3 0.026410612112814764 0.026743124578832954 +0.4 0.2657618031529534 0.021839195779607468 +0.5 0.8745704694904042 0.024161647639750306 +0.6 0.7942676950363778 0.020932310772574778 +0.7 0.4544852907275393 0.01127744594448625 +0.8 0.3355895374174094 0.011354061323315708 +0.9 0.23485335088911852 0.008310781996380395 +1.0 0.17969369127017387 0.006832080911343617 +1.25 0.12934626564389665 0.006315683161744611 +1.5 0.08191118718372699 0.004069330418972058 +1.75 0.05785371746812345 0.0034224887468652957 +2.0 0.04487913718870007 0.0031104405223092504 +5.0 0.008012960904960297 0.0011164616255566195 +10.0 0.0019972935731806516 0.0005153746090392444 + + diff --git a/sample/08_finitetemperature/QMC/spec-L32-Gamma0.8.dat b/sample/08_finitetemperature/QMC/spec-L32-Gamma0.8.dat new file mode 100644 index 00000000..93e75309 --- /dev/null +++ b/sample/08_finitetemperature/QMC/spec-L32-Gamma0.8.dat @@ -0,0 +1,22 @@ +# L = 32.0 Gamma = 0.8 +# X: T +# Y: Specific Heat +0.05 -0.11111145473951689 0.19799950202194333 +0.1 -0.05384909858040099 0.08604500969440577 +0.2 0.013445086127864492 0.05168223900974315 +0.3 0.07321221140636054 0.03347460855713425 +0.4 0.3777768289838246 0.02257470832958602 +0.5 1.2041911929479312 0.03295413757317936 +0.6 0.5435441243360665 0.017731418041496468 +0.7 0.4092113167242005 0.016316047136670165 +0.8 0.3414533099076573 0.011816378592870838 +0.9 0.2949442070065372 0.012023786645604165 +1.0 0.24222035654555452 0.009906332196881711 +1.25 0.16186997993953814 0.007445887124318286 +1.5 0.11779262373846287 0.0050011693404425845 +1.75 0.08920841073656825 0.004672658148772219 +2.0 0.07501437737136518 0.004222663627315222 +5.0 0.009190736212082684 0.0014134242788539724 +10.0 0.0022545366354382165 0.0005516591780502381 + + diff --git a/sample/08_finitetemperature/QMC/spec-L32-Gamma2.0.dat b/sample/08_finitetemperature/QMC/spec-L32-Gamma2.0.dat new file mode 100644 index 00000000..f57d3576 --- /dev/null +++ b/sample/08_finitetemperature/QMC/spec-L32-Gamma2.0.dat @@ -0,0 +1,22 @@ +# L = 32.0 Gamma = 2.0 +# X: T +# Y: Specific Heat +0.05 0.44014164146836876 0.36050035568853195 +0.1 -0.21709298110828357 0.18511305303716144 +0.2 -0.1540125710416369 0.08577897899627551 +0.3 0.05352906485496218 0.06858548471692796 +0.4 0.12403433868042413 0.045281854556770765 +0.5 0.26460913283422194 0.03747610471789959 +0.6 0.34564812825356606 0.03883107510580354 +0.7 0.4225184808025325 0.02921056870395435 +0.8 0.41660319008696156 0.025028776026099576 +0.9 0.40695900276525526 0.01999052763150167 +1.0 0.3964258850737732 0.019523253462568065 +1.25 0.37615811587003845 0.01615990422179899 +1.5 0.2918917366841003 0.013703435283639938 +1.75 0.23406854591928475 0.00908153198303733 +2.0 0.20089594503848662 0.010017069129018352 +5.0 0.0456336444544529 0.0029913974835368757 +10.0 0.012113946446786114 0.0011362228718908662 + + diff --git a/sample/08_finitetemperature/README.md b/sample/08_finitetemperature/README.md index 23351b9b..e03b0c6d 100644 --- a/sample/08_finitetemperature/README.md +++ b/sample/08_finitetemperature/README.md @@ -1,6 +1,7 @@ - how to run - `export PATH=${WHERE_TENES_INSTALLED}/bin:$PATH` - `sh run.sh` + - `python3 ./calcspec.py` for calculating specific heat by spline interpolation of energy - `gnuplot -persist plot_e.plt` for generate a figure of energy - `gnuplot -persist plot_c.plt` for generate a figure of specific heat - `gnuplot -persist plot_mz.plt` for generate a figure of manetization alog Sz @@ -26,10 +27,11 @@ - Finite temperature simulation under the zero field - `Jz = -1` - `hx = 0` - - Observables - Magnetization along Sz - Magnetization along Sx - Energy + - Specific Heat + - calculated from Energy by interpolation and differentiation - Unitcell - 2x2 diff --git a/sample/08_finitetemperature/plot_c.plt b/sample/08_finitetemperature/plot_c.plt index dc87b45d..c5ea84ff 100644 --- a/sample/08_finitetemperature/plot_c.plt +++ b/sample/08_finitetemperature/plot_c.plt @@ -1,189 +1,19 @@ -#!/opt/homebrew/Cellar/gnuplot/5.4.7/bin/gnuplot -# -# -# G N U P L O T -# Version 5.4 patchlevel 7 last modified 2023-05-16 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2023 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help FAQ" -# immediate help: type "help" (plot window: hit 'h') -# set terminal qt 0 font "Times,18" -# set output -unset clip points -set clip one -unset clip two -unset clip radial -set errorbars front 1.000000 -set border 31 front lt black linewidth 1.000 dashtype solid -set zdata -set ydata -set xdata -set y2data -set x2data -set boxwidth -set boxdepth 0 -set style fill empty border -set style rectangle back fc bgnd fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02 -set style ellipse size graph 0.05, 0.03 angle 0 units xy -set dummy x, y -set format x "% h" -set format y "% h" -set format x2 "% h" -set format y2 "% h" -set format z "% h" -set format cb "% h" -set format r "% h" -set ttics format "% h" -set timefmt "%d/%m/%y,%H:%M" -set angles radians -set tics back -unset grid -unset raxis -set theta counterclockwise right -set style parallel front lt black linewidth 2.000 dashtype solid -set key notitle -set key fixed right top vertical Right noreverse enhanced autotitle nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 0 maxrows 0 -set key noopaque -unset label -unset arrow -unset style line -unset style arrow -set style histogram clustered gap 2 title textcolor lt -1 -unset object -unset walls -set style textbox transparent margins 1.0, 1.0 border lt -1 linewidth 1.0 -set offsets 0, 0, 0, 0 -set pointsize 1 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset spiderplot -unset decimalsign -unset micro -unset minussign -set view 60, 30, 1, 1 -set view azimuth 0 -set rgbmax 255 -set samples 100, 100 -set isosamples 10, 10 -set surface implicit -set surface -unset contour -set cntrlabel format '%8.3g' font '' start 5 interval 20 -set mapping cartesian -set datafile separator whitespace -set datafile nocolumnheaders -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels 5 -set cntrparam levels auto -set cntrparam firstlinetype 0 unsorted -set cntrparam points 5 -set size ratio 1 1,1 -set origin 0,0 -set style data points -set style function lines -unset xzeroaxis -unset yzeroaxis -unset zzeroaxis -unset x2zeroaxis -unset y2zeroaxis -set xyplane relative 0.5 -set tics scale 1, 0.5, 1, 1, 1 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set mrtics default -set nomttics -set xtics border in scale 1,0.5 mirror norotate autojustify -set xtics norangelimit autofreq -set ytics border in scale 1,0.5 mirror norotate autojustify -set ytics norangelimit autofreq -set ztics border in scale 1,0.5 nomirror norotate autojustify -set ztics norangelimit autofreq -unset x2tics -unset y2tics -set cbtics border in scale 1,0.5 mirror norotate autojustify -set cbtics norangelimit autofreq -set rtics axis in scale 1,0.5 nomirror norotate autojustify -set rtics norangelimit autofreq -unset ttics -set title "" -set title font "" textcolor lt -1 norotate -set timestamp bottom -set timestamp "" -set timestamp font "" textcolor lt -1 norotate -set trange [ * : * ] noreverse nowriteback -set urange [ * : * ] noreverse nowriteback -set vrange [ * : * ] noreverse nowriteback -set xlabel "T" -set xlabel font "" textcolor lt -1 norotate -set x2label "" -set x2label font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse writeback -set x2range [ * : * ] noreverse writeback -set ylabel "C" -set ylabel font "" textcolor lt -1 rotate -set y2label "" -set y2label font "" textcolor lt -1 rotate -set yrange [ * : * ] noreverse writeback -set y2range [ * : * ] noreverse writeback -set zlabel "" -set zlabel font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse writeback -set cblabel "" -set cblabel font "" textcolor lt -1 rotate -set cbrange [ * : * ] noreverse writeback -set rlabel "" -set rlabel font "" textcolor lt -1 norotate -set rrange [ * : * ] noreverse writeback -unset logscale -unset jitter -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set locale "ja_JP.UTF-8" -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles noborder corners2color mean -set pm3d clip z -set pm3d nolighting -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2 size screen 0.05, 0.6 front noinvert bdefault -set style boxplot candles range 1.50 outliers pt 7 separation 1 labels auto unsorted -set loadpath -set fontpath -set psdir -set fit brief errorvariables nocovariancevariables errorscaling prescale nowrap v5 -d2(x,y) = ($0 == 0) ? (x1 = x, y1 = y, 1/0) : (x2 = x1, x1 = x, y2 = y1, y1 = y, (y1-y2)/(x1-x2)) -dx(x) = ($0 == 0) ? (dx1 = x, 1/0) : (dx2 = dx1, dx1 = x, (dx1+dx2) * 0.5) -dxs(x) = ($0 == 0) ? (dxs1 = x, 1/0) : (dxs2 = dxs1, dxs1 = x, (dx1+dx2)**2 * 0.25) -GNUTERM = "qt" -I = {0.0, 1.0} -VoxelDistance = 0.0 -x1 = 4.99999999999994 -y1 = -1.0642246504554 -y2 = -1.06412623796841 -x2 = 4.89999999999994 -dx1 = 4.99999999999994 -dx2 = 4.89999999999994 -dxs1 = 4.99999999999994 -dxs2 = 4.89999999999994 -## Last datafile plotted: "energy_strong.dat" -p [:5] "energy_zero.dat" u (1/dx($1)) : (-dxs($1)*d2($1,$2)) w lp ti "h_x = 0", "energy_weak.dat" u (1/dx($1)) : (-dxs($1)*d2($1,$2)) w lp ti "h_x = 0.5", "energy_middle.dat" u (1/dx($1)) : (-dxs($1)*d2($1,$2)) w lp ti "h_x = 0.8", "energy_strong.dat" u (1/dx($1)) : (-dxs($1)*d2($1,$2)) w lp ti "h_x = 2.0" -# EOF +set auto +unset log +set log x + +set xr [0.1:] +set yr [0:] + +set xl "temperature" +set yl "specific heat" + +plot \ +"spec_zero.dat" u (1/$1):2 w l lc "black" t"iTPS h_x=0.0", \ +"QMC/spec-L32-Gamma0.0.dat" w yer lc "black" pt 5 t"QMC h_x=0.0", \ +"spec_weak.dat" u (1/$1):2 w l lc "red" t"iTPS h_x=0.5", \ +"QMC/spec-L32-Gamma0.5.dat" w yer lc "red" pt 5 t"QMC h_x=0.5", \ +"spec_middle.dat" u (1/$1):2 w l lc "green" t"iTPS h_x=0.8", \ +"QMC/spec-L32-Gamma0.8.dat" w yer lc "green" pt 5 t"QMC h_x=0.8", \ +"spec_strong.dat" u (1/$1):2 w l lc "blue" t"iTPS h_x=2.0", \ +"QMC/spec-L32-Gamma2.0.dat" w yer lc "blue" pt 5 t"QMC h_x=2.0", \ diff --git a/sample/08_finitetemperature/plot_e.plt b/sample/08_finitetemperature/plot_e.plt index 9f600915..76484576 100644 --- a/sample/08_finitetemperature/plot_e.plt +++ b/sample/08_finitetemperature/plot_e.plt @@ -1,178 +1,18 @@ -#!/opt/homebrew/Cellar/gnuplot/5.4.7/bin/gnuplot -# -# -# G N U P L O T -# Version 5.4 patchlevel 7 last modified 2023-05-16 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2023 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help FAQ" -# immediate help: type "help" (plot window: hit 'h') -# set terminal qt 0 font "Times,18" -# set output -unset clip points -set clip one -unset clip two -unset clip radial -set errorbars front 1.000000 -set border 31 front lt black linewidth 1.000 dashtype solid -set zdata -set ydata -set xdata -set y2data -set x2data -set boxwidth -set boxdepth 0 -set style fill empty border -set style rectangle back fc bgnd fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02 -set style ellipse size graph 0.05, 0.03 angle 0 units xy -set dummy x, y -set format x "% h" -set format y "% h" -set format x2 "% h" -set format y2 "% h" -set format z "% h" -set format cb "% h" -set format r "% h" -set ttics format "% h" -set timefmt "%d/%m/%y,%H:%M" -set angles radians -set tics back -unset grid -unset raxis -set theta counterclockwise right -set style parallel front lt black linewidth 2.000 dashtype solid -set key notitle -set key fixed right bottom vertical Right noreverse enhanced autotitle nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 0 maxrows 0 -set key noopaque -unset label -unset arrow -unset style line -unset style arrow -set style histogram clustered gap 2 title textcolor lt -1 -unset object -unset walls -set style textbox transparent margins 1.0, 1.0 border lt -1 linewidth 1.0 -set offsets 0, 0, 0, 0 -set pointsize 1 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset spiderplot -unset decimalsign -unset micro -unset minussign -set view 60, 30, 1, 1 -set view azimuth 0 -set rgbmax 255 -set samples 100, 100 -set isosamples 10, 10 -set surface implicit -set surface -unset contour -set cntrlabel format '%8.3g' font '' start 5 interval 20 -set mapping cartesian -set datafile separator whitespace -set datafile nocolumnheaders -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels 5 -set cntrparam levels auto -set cntrparam firstlinetype 0 unsorted -set cntrparam points 5 -set size ratio 1 1,1 -set origin 0,0 -set style data points -set style function lines -unset xzeroaxis -unset yzeroaxis -unset zzeroaxis -unset x2zeroaxis -unset y2zeroaxis -set xyplane relative 0.5 -set tics scale 1, 0.5, 1, 1, 1 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set mrtics default -set nomttics -set xtics border in scale 1,0.5 mirror norotate autojustify -set xtics norangelimit autofreq -set ytics border in scale 1,0.5 mirror norotate autojustify -set ytics norangelimit autofreq -set ztics border in scale 1,0.5 nomirror norotate autojustify -set ztics norangelimit autofreq -unset x2tics -unset y2tics -set cbtics border in scale 1,0.5 mirror norotate autojustify -set cbtics norangelimit autofreq -set rtics axis in scale 1,0.5 nomirror norotate autojustify -set rtics norangelimit autofreq -unset ttics -set title "" -set title font "" textcolor lt -1 norotate -set timestamp bottom -set timestamp "" -set timestamp font "" textcolor lt -1 norotate -set trange [ * : * ] noreverse nowriteback -set urange [ * : * ] noreverse nowriteback -set vrange [ * : * ] noreverse nowriteback -set xlabel "T" -set xlabel font "" textcolor lt -1 norotate -set x2label "" -set x2label font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse writeback -set x2range [ * : * ] noreverse writeback -set ylabel "E" -set ylabel font "" textcolor lt -1 rotate -set y2label "" -set y2label font "" textcolor lt -1 rotate -set yrange [ * : * ] noreverse writeback -set y2range [ * : * ] noreverse writeback -set zlabel "" -set zlabel font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse writeback -set cblabel "" -set cblabel font "" textcolor lt -1 rotate -set cbrange [ * : * ] noreverse writeback -set rlabel "" -set rlabel font "" textcolor lt -1 norotate -set rrange [ * : * ] noreverse writeback -unset logscale -unset jitter -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set locale "ja_JP.UTF-8" -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles noborder corners2color mean -set pm3d clip z -set pm3d nolighting -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2 size screen 0.05, 0.6 front noinvert bdefault -set style boxplot candles range 1.50 outliers pt 7 separation 1 labels auto unsorted -set loadpath -set fontpath -set psdir -set fit brief errorvariables nocovariancevariables errorscaling prescale nowrap v5 -GNUTERM = "qt" -I = {0.0, 1.0} -VoxelDistance = 0.0 -## Last datafile plotted: "energy_strong.dat" -p [:5] "energy_zero.dat" u (1/$1):2 w lp ti "h_x = 0", "energy_weak.dat" u (1/$1):2 w lp ti "h_x = 0.5", "energy_middle.dat" u (1/$1):2 w lp ti "h_x = 0.8", "energy_strong.dat" u (1/$1):2 w lp ti "h_x = 2.0" -# EOF +set auto +unset log +set log x + +set xr [0.1:] + +set xl "temperature" +set yl "energy density" + +plot \ +"energy_zero.dat" u (1/$1):2 w l lc "black" t"iTPS h_x=0.0", \ +"QMC/ene-L32-Gamma0.0.dat" w yer lc "black" pt 5 t"QMC h_x=0.0", \ +"energy_weak.dat" u (1/$1):2 w l lc "red" t"iTPS h_x=0.5", \ +"QMC/ene-L32-Gamma0.5.dat" w yer lc "red" pt 5 t"QMC h_x=0.5", \ +"energy_middle.dat" u (1/$1):2 w l lc "green" t"iTPS h_x=0.8", \ +"QMC/ene-L32-Gamma0.8.dat" w yer lc "green" pt 5 t"QMC h_x=0.8", \ +"energy_strong.dat" u (1/$1):2 w l lc "blue" t"iTPS h_x=2.0", \ +"QMC/ene-L32-Gamma2.0.dat" w yer lc "blue" pt 5 t"QMC h_x=2.0", \ diff --git a/sample/08_finitetemperature/simple_ft_middle.toml b/sample/08_finitetemperature/simple_ft_middle.toml index ae24df01..ae0a0542 100644 --- a/sample/08_finitetemperature/simple_ft_middle.toml +++ b/sample/08_finitetemperature/simple_ft_middle.toml @@ -3,10 +3,11 @@ mode = "finite" is_real = false output = "output_ft_middle" +measure_interval = [10, 10, 5] [parameter.simple_update] -num_step = 500 -tau = 0.005 +num_step = [50, 200, 10] +tau = [0.01, 0.005, 0.05] [parameter.full_update] num_step = 0 diff --git a/sample/08_finitetemperature/simple_ft_strong.toml b/sample/08_finitetemperature/simple_ft_strong.toml index b963f583..d87c0eb3 100644 --- a/sample/08_finitetemperature/simple_ft_strong.toml +++ b/sample/08_finitetemperature/simple_ft_strong.toml @@ -3,10 +3,11 @@ mode = "finite" is_real = false output = "output_ft_strong" +measure_interval = [10, 10, 5] [parameter.simple_update] -num_step = 500 -tau = 0.005 +num_step = [50, 200, 10] +tau = [0.01, 0.005, 0.05] [parameter.full_update] num_step = 0 diff --git a/sample/08_finitetemperature/simple_ft_weak.toml b/sample/08_finitetemperature/simple_ft_weak.toml index 7f03a07b..4a935d76 100644 --- a/sample/08_finitetemperature/simple_ft_weak.toml +++ b/sample/08_finitetemperature/simple_ft_weak.toml @@ -3,10 +3,11 @@ mode = "finite" is_real = false output = "output_ft_weak" +measure_interval = [10, 10, 5] [parameter.simple_update] -num_step = 500 -tau = 0.005 +num_step = [50, 200, 10] +tau = [0.01, 0.005, 0.05] [parameter.full_update] num_step = 0 diff --git a/sample/08_finitetemperature/simple_ft_zero.toml b/sample/08_finitetemperature/simple_ft_zero.toml index bcc50a16..c87b5a3d 100644 --- a/sample/08_finitetemperature/simple_ft_zero.toml +++ b/sample/08_finitetemperature/simple_ft_zero.toml @@ -3,10 +3,11 @@ mode = "finite" is_real = false output = "output_ft_zero" +measure_interval = [10, 10, 5] [parameter.simple_update] -num_step = 500 -tau = 0.005 +num_step = [50, 200, 10] +tau = [0.01, 0.005, 0.05] [parameter.full_update] num_step = 0 diff --git a/src/iTPS/finite_temperature.cpp b/src/iTPS/finite_temperature.cpp index 61f61012..c40e9a6d 100644 --- a/src/iTPS/finite_temperature.cpp +++ b/src/iTPS/finite_temperature.cpp @@ -22,18 +22,24 @@ namespace itps { template void iTPS::finite_temperature() { Timer<> timer; - double time_measure = 0.0; - double next_report = 10.0; double beta = 0.0; measure_density(beta, "FT_"); const int num_groups = num_simple_update_groups; + if (peps_parameters.measure_interval.size() < num_groups){ + while(peps_parameters.measure_interval.size() < num_groups){ + peps_parameters.measure_interval.push_back(*peps_parameters.measure_interval.rbegin()); + } + } for (int group = 0; group < num_groups; ++group) { const int nsteps = peps_parameters.num_simple_step[group]; const double dt = peps_parameters.tau_simple_step[group]; int measure_interval = peps_parameters.measure_interval[group]; + double time_measure = 0.0; + double next_report = 10.0; + for (int int_tau = 0; int_tau < nsteps; ++int_tau) { auto const& evols = simple_updates; for (auto up : evols) { @@ -63,7 +69,7 @@ void iTPS::finite_temperature() { } } } // end of for (int_tau) - if (nsteps % measure_interval != 0) { + if (measure_interval==0 || nsteps % measure_interval != 0) { Timer<> timer_m; measure_density(beta, "TE_"); time_measure += timer_m.elapsed(); diff --git a/src/iTPS/iTPS.cpp b/src/iTPS/iTPS.cpp index acb1784b..c712e012 100644 --- a/src/iTPS/iTPS.cpp +++ b/src/iTPS/iTPS.cpp @@ -189,16 +189,16 @@ iTPS::iTPS(MPI_Comm comm_, PEPS_Parameters peps_parameters_, ss << "ERROR: a simple update has negative group number " << g; throw std::runtime_error(ss.str()); } - if (notwarned && g > 0) { - std::cerr << "WARNING: a simple update has nonzero group number " << g - << std::endl; - std::cerr << " This feature is reserved for future use." - << std::endl; - std::cerr << " Currently, all simple updates with nonzero group " - "number are ignored." - << std::endl; - notwarned = false; - } + // if (notwarned && g > 0) { + // std::cerr << "WARNING: a simple update has nonzero group number " << g + // << std::endl; + // std::cerr << " This feature is reserved for future use." + // << std::endl; + // std::cerr << " Currently, all simple updates with nonzero group " + // "number are ignored." + // << std::endl; + // notwarned = false; + // } simple_update_groups.insert(g); } num_simple_update_groups = *simple_update_groups.rbegin() + 1; @@ -221,16 +221,16 @@ iTPS::iTPS(MPI_Comm comm_, PEPS_Parameters peps_parameters_, ss << "ERROR: a full update has negative group number " << g; throw std::runtime_error(ss.str()); } - if (notwarned && g > 0) { - std::cerr << "WARNING: a full update has nonzero group number " << g - << std::endl; - std::cerr << " This feature is reserved for future use." - << std::endl; - std::cerr << " Currently, all full updates with nonzero group " - "number are ignored." - << std::endl; - notwarned = false; - } + // if (notwarned && g > 0) { + // std::cerr << "WARNING: a full update has nonzero group number " << g + // << std::endl; + // std::cerr << " This feature is reserved for future use." + // << std::endl; + // std::cerr << " Currently, all full updates with nonzero group " + // "number are ignored." + // << std::endl; + // notwarned = false; + // } full_update_groups.insert(g); } num_full_update_groups = *full_update_groups.rbegin() + 1; diff --git a/src/iTPS/time_evolution.cpp b/src/iTPS/time_evolution.cpp index f198c10a..a1684602 100644 --- a/src/iTPS/time_evolution.cpp +++ b/src/iTPS/time_evolution.cpp @@ -22,20 +22,26 @@ namespace itps { template void iTPS::time_evolution() { Timer<> timer; - double time_measure = 0.0; - double next_report = 10.0; double t = 0.0; measure(t, "TE_"); const bool su = peps_parameters.num_simple_step[0] > 0; const int num_groups = su ? num_simple_update_groups : num_full_update_groups; + if (peps_parameters.measure_interval.size() < num_groups){ + while(peps_parameters.measure_interval.size() < num_groups){ + peps_parameters.measure_interval.push_back(*peps_parameters.measure_interval.rbegin()); + } + } + for (int group = 0; group < num_groups; ++group) { const int nsteps = su ? peps_parameters.num_simple_step[group] : peps_parameters.num_full_step[group]; const double dt = su ? peps_parameters.tau_simple_step[group] : peps_parameters.tau_full_step[group]; int measure_interval = peps_parameters.measure_interval[group]; + double time_measure = 0.0; + double next_report = 10.0; for (int int_tau = 0; int_tau < nsteps; ++int_tau) { auto const& evols = su ? simple_updates : full_updates; diff --git a/src/iTPS/transfer_matrix.cpp b/src/iTPS/transfer_matrix.cpp index 0461314a..6edad289 100644 --- a/src/iTPS/transfer_matrix.cpp +++ b/src/iTPS/transfer_matrix.cpp @@ -364,12 +364,11 @@ ptensor TransferMatrix_ctm::matrix_horizontal(int y) const { using mptensor::Axes; using mptensor::Shape; const auto &lattice = this->lattice; - const size_t CHI = C1[0].shape()[0]; - const size_t rank = eTt[0].rank(); + const MPI_Comm comm = this->C1[0].get_comm(); int site = lattice.index(0, y); ptensor top = eTt[site]; ptensor bottom = eTb[lattice.top(site)]; - const MPI_Comm comm = this->C1[0].get_comm(); + const size_t CHI = top.shape()[0]; ptensor res(comm, Shape(CHI * CHI, CHI * CHI)); #pragma omp parallel for shared(res) for (size_t i = 0; i < CHI * CHI; ++i) { @@ -377,6 +376,7 @@ ptensor TransferMatrix_ctm::matrix_horizontal(int y) const { res.set_value({i, i}, v); } res = reshape(res, {CHI, CHI, CHI, CHI}); + const size_t rank = top.rank(); if (rank == 3) { res = transpose(tensordot(top, bottom, Axes(2), Axes(2)), Axes(0, 3, 1, 2)); for (int x = 1; x < lattice.LX; ++x) { @@ -409,8 +409,11 @@ ptensor TransferMatrix_ctm::matrix_vertical(int x) const { using mptensor::Shape; const MPI_Comm comm = this->C1[0].get_comm(); const auto &lattice = this->lattice; - const size_t CHI = C1[0].shape()[0]; const auto x_orig = x; + + const int s0 = lattice.index(x, 0); + const size_t CHI = eTl[s0].shape()[0]; + ptensor res(comm, Shape(CHI * CHI, CHI * CHI)); #pragma omp parallel for shared(res) for (size_t i = 0; i < CHI * CHI; ++i) { @@ -419,7 +422,7 @@ ptensor TransferMatrix_ctm::matrix_vertical(int x) const { } res = reshape(res, {CHI, CHI, CHI, CHI}); - const size_t rank = eTl[0].rank(); + const size_t rank = eTl[s0].rank(); if (rank == 3) { do { for (int y = 0; y < lattice.LY; ++y) { From b01ee4016ebcc6707f7007bdad778b4efc673ca7 Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Thu, 13 Jul 2023 16:41:20 +0900 Subject: [PATCH 18/25] added missing files --- .../QMC/ene-L32-Gamma0.0.dat | 22 +++++++++++++++++++ .../QMC/spec-L32-Gamma0.0.dat | 22 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 sample/08_finitetemperature/QMC/ene-L32-Gamma0.0.dat create mode 100644 sample/08_finitetemperature/QMC/spec-L32-Gamma0.0.dat diff --git a/sample/08_finitetemperature/QMC/ene-L32-Gamma0.0.dat b/sample/08_finitetemperature/QMC/ene-L32-Gamma0.0.dat new file mode 100644 index 00000000..bbc60eb2 --- /dev/null +++ b/sample/08_finitetemperature/QMC/ene-L32-Gamma0.0.dat @@ -0,0 +1,22 @@ +# L = 32.0 Gamma = 0.0 +# X: T +# Y: Energy Density +0.05 -0.499992812500001 2.9151725792744308e-05 +0.1 -0.5000194218750053 4.638048301257418e-05 +0.2 -0.4998558085937488 6.202126439593967e-05 +0.3 -0.4970329433593719 8.560415760502322e-05 +0.4 -0.4818261171874998 0.00010996975494161443 +0.5 -0.4363849609375 0.00016611476882180958 +0.6 -0.3030822460937507 0.00025436197560011847 +0.7 -0.22708722460937486 0.000191020018052969 +0.8 -0.18615257812499658 0.00016533146391579866 +0.9 -0.15940345703125047 0.00014858147855676174 +1.0 -0.13936826171875 0.00015222595390379593 +1.25 -0.1070082275390625 0.0001569571977624806 +1.5 -0.087524541015625 0.00015673999175963108 +1.75 -0.073858701171875 0.00016535672083137866 +2.0 -0.064151953125 0.0001744254645204565 +5.0 -0.025057421875 0.0002450650530489517 +10.0 -0.0122623046875 0.00032607476615531176 + + diff --git a/sample/08_finitetemperature/QMC/spec-L32-Gamma0.0.dat b/sample/08_finitetemperature/QMC/spec-L32-Gamma0.0.dat new file mode 100644 index 00000000..9e188870 --- /dev/null +++ b/sample/08_finitetemperature/QMC/spec-L32-Gamma0.0.dat @@ -0,0 +1,22 @@ +# L = 32.0 Gamma = 0.0 +# X: T +# Y: Specific Heat +0.05 -0.01533575572180379 0.14223378946907472 +0.1 -0.011939530185321345 0.06640997592366556 +0.2 0.07038885725390687 0.03258471172660756 +0.3 0.07126463392553063 0.02193658587933345 +0.4 0.2576254900503159 0.015237638627775102 +0.5 0.7176735714442728 0.01709071434533951 +0.6 1.259518379278826 0.024289471096909376 +0.7 0.5307759154666482 0.010867605671194765 +0.8 0.3328506168274017 0.007953620129636218 +0.9 0.2217709166673534 0.006486278044689953 +1.0 0.16754811273837955 0.005683279940597316 +1.25 0.08766867895927188 0.0038380527759843174 +1.5 0.06740859373162966 0.0032265077177618595 +1.75 0.04750451078484526 0.0026101854576051522 +2.0 0.0344952492234043 0.0021420421395912308 +5.0 0.005638375407073763 0.0005631816695538922 +10.0 0.0013980979965587516 0.0003420190066639772 + + From 5a356deba2c3dbfa2bce7e315457df3fb2c0f0ca Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Fri, 14 Jul 2023 12:29:18 +0900 Subject: [PATCH 19/25] added a new sample (finite temperature calculation of Kitaev-Honeycomb) --- sample/08_finitetemperature/QMC/README.md | 2 +- sample/08_finitetemperature/README.md | 2 + sample/09_FT_Kitaev/README.md | 27 + sample/09_FT_Kitaev/TPQ/README.md | 6 + sample/09_FT_Kitaev/TPQ/TPQ_gapfull.dat | 3000 +++++++++++++++++++++ sample/09_FT_Kitaev/TPQ/TPQ_gapless.dat | 3000 +++++++++++++++++++++ sample/09_FT_Kitaev/TPQ/postprocess.py | 42 + sample/09_FT_Kitaev/TPQ/run.sh | 5 + sample/09_FT_Kitaev/TPQ/stan_gapfull.in | 18 + sample/09_FT_Kitaev/TPQ/stan_gapless.in | 18 + sample/09_FT_Kitaev/calcspec.py | 19 + sample/09_FT_Kitaev/plot_c.plt | 15 + sample/09_FT_Kitaev/plot_e.plt | 15 + sample/09_FT_Kitaev/run.sh | 8 + sample/09_FT_Kitaev/simple_gapfull.toml | 31 + sample/09_FT_Kitaev/simple_gapless.toml | 31 + 16 files changed, 6238 insertions(+), 1 deletion(-) create mode 100644 sample/09_FT_Kitaev/README.md create mode 100644 sample/09_FT_Kitaev/TPQ/README.md create mode 100644 sample/09_FT_Kitaev/TPQ/TPQ_gapfull.dat create mode 100644 sample/09_FT_Kitaev/TPQ/TPQ_gapless.dat create mode 100644 sample/09_FT_Kitaev/TPQ/postprocess.py create mode 100644 sample/09_FT_Kitaev/TPQ/run.sh create mode 100644 sample/09_FT_Kitaev/TPQ/stan_gapfull.in create mode 100644 sample/09_FT_Kitaev/TPQ/stan_gapless.in create mode 100644 sample/09_FT_Kitaev/calcspec.py create mode 100644 sample/09_FT_Kitaev/plot_c.plt create mode 100644 sample/09_FT_Kitaev/plot_e.plt create mode 100644 sample/09_FT_Kitaev/run.sh create mode 100644 sample/09_FT_Kitaev/simple_gapfull.toml create mode 100644 sample/09_FT_Kitaev/simple_gapless.toml diff --git a/sample/08_finitetemperature/QMC/README.md b/sample/08_finitetemperature/QMC/README.md index 3d281951..990c9ae2 100644 --- a/sample/08_finitetemperature/QMC/README.md +++ b/sample/08_finitetemperature/QMC/README.md @@ -2,6 +2,6 @@ QMC result for TFI model on a square lattice (32x32) by using ALPS/looper (https ``` bash alpspython init_params.py -mpiexec -np 4 --mpi params.in.xml +mpiexec -np 4 loop --mpi params.in.xml alpspython extract.py ``` diff --git a/sample/08_finitetemperature/README.md b/sample/08_finitetemperature/README.md index e03b0c6d..63b956ec 100644 --- a/sample/08_finitetemperature/README.md +++ b/sample/08_finitetemperature/README.md @@ -35,3 +35,5 @@ - calculated from Energy by interpolation and differentiation - Unitcell - 2x2 +- Reference data + - calculated by the QMC method (ALPS/looper) diff --git a/sample/09_FT_Kitaev/README.md b/sample/09_FT_Kitaev/README.md new file mode 100644 index 00000000..e5dac6d6 --- /dev/null +++ b/sample/09_FT_Kitaev/README.md @@ -0,0 +1,27 @@ +- how to run + - `export PATH=${WHERE_TENES_INSTALLED}/bin:$PATH` + - `sh run.sh` + - `gnuplot -persist plot_e.plt` for generate a figure of energy + - `gnuplot -persist plot_c.plt` for generate a figure of specific heat +- model + - Kitaev model on the honeycomb lattice +- Inputs + - `simple_gapless.toml` + - Finite temperature simulation of isotropic Kitaev Heisenberg model + - `J0x = -1` + - `J1y = -1` + - `J2z = -1` + - Note that the gapless model is difficult to reach the ground state + - `simple_gapfull.toml` + - Finite temperature simulation of anisotropic Kitaev Heisenberg model + - `J0x = -0.3` + - `J1y = -0.3` + - `J2z = -2.4` +- Observables + - Energy + - Specific Heat + - calculated from Energy by interpolation and differentiation +- Unitcell + - 2x2 +- Reference data + - calculated by the TPQ method (HPhi) diff --git a/sample/09_FT_Kitaev/TPQ/README.md b/sample/09_FT_Kitaev/TPQ/README.md new file mode 100644 index 00000000..fd40a094 --- /dev/null +++ b/sample/09_FT_Kitaev/TPQ/README.md @@ -0,0 +1,6 @@ +TPQ calculation of the gapless and the gapfull Kitaev honeycomb model by using HPhi (https://github.com/issp-center-dev/HPhi) + +``` bash +export PATH=:$PATH +sh ./run.sh +``` diff --git a/sample/09_FT_Kitaev/TPQ/TPQ_gapfull.dat b/sample/09_FT_Kitaev/TPQ/TPQ_gapfull.dat new file mode 100644 index 00000000..3a222656 --- /dev/null +++ b/sample/09_FT_Kitaev/TPQ/TPQ_gapfull.dat @@ -0,0 +1,3000 @@ +0.0 0.0007350653191791915 0.00032946558954749034 0.0 0.0 +0.041594137072638766 -0.006975506475178473 0.000332425230742959 0.0003196518092035083 7.833484429494074e-07 +0.08302927191270583 -0.014648929073674877 0.0003355010340615932 0.0012687513462621197 3.190091338133727e-06 +0.124307769782446 -0.02227526297446722 0.0003387721599614274 0.0028290384322707846 7.337649237938331e-06 +0.1654323583080327 -0.02984497648690879 0.0003423367856628769 0.00497795472220081 1.3362792846840362e-05 +0.20640609775445742 -0.03734898768350419 0.000346303609878022 0.00768909674856235 2.1392129116505036e-05 +0.2472323499427212 -0.04477869957046563 0.00035078251115208925 0.010932696309630818 3.151666417275302e-05 +0.2879147463444212 -0.052126028404664355 0.0003558750635657018 0.014676115892449304 4.3772894470145094e-05 +0.3284571558594166 -0.059383425236081915 0.00036166571854069407 0.018884347609754104 5.813110463205207e-05 +0.3688636527419772 -0.06654389089116923 0.00036821446176291215 0.023520505255165542 7.449046928521073e-05 +0.4091384850921477 -0.07360098473037914 0.0003755516192592865 0.0285463004541426 9.268002991251376e-05 +0.44928604427457375 -0.08054882761024361 0.00038367522477099266 0.033922495417818915 0.00011246442358823876 +0.48931083556923854 -0.08738209955552369 0.0003925510223943055 0.039609326404295916 0.00013355321413150147 +0.5292174502998013 -0.09409603269999249 0.00040211484118663675 0.04556689357664287 0.00015561272979290516 +0.5690105396276097 -0.10068640008611307 0.00041227681726392406 0.051755514449951044 0.00017827940758231172 +0.6086947901447347 -0.10714950092574844 0.00042292680053072695 0.058136039486898 0.00020117376911029988 +0.6482749013489488 -0.11348214291825104 0.00043394027404360975 0.0646701295934667 0.00022391430046283506 +0.6877555650384953 -0.11968162220137606 0.0004451842065171117 0.07132049626025916 0.0002461306737864338 +0.7271414466253903 -0.12574570147725225 0.00045652240819109893 0.07805110588110829 0.00026747592390136295 +0.7664371683332467 -0.13167258681302105 0.00046782012366484993 0.08482735036276519 0.0002876373707126869 +0.8056472942191526 -0.13746090356656301 0.0004789477409933938 0.09161618653076979 0.0003063462478611915 +0.8447763169388172 -0.14310967183461107 0.0004897836082152829 0.09838624705815822 0.00032338614991185105 +0.8838286461595006 -0.14861828176592137 0.0005002160230967183 0.10510792572118961 0.00033860053391439375 +0.9228085985156579 -0.15398646902807248 0.0005101445036620301 0.11175343974802045 0.00035189959446867304 +0.9617203889970186 -0.1592142906646031 0.0005194804638359282 0.11829687190063604 0.0003632668591587794 +1.0005681236573005 -0.16430210153086378 0.0005281474183496648 0.12471419474439545 0.00037276580156966676 +1.0393557935331976 -0.16925053145312385 0.0005360808308018815 0.13098327933735124 0.00038054661011345737 +1.0780872696669572 -0.17406046321667654 0.0005432277034622435 0.13708389033377133 0.00038685293859388103 +1.1167662991311853 -0.1787330114552421 0.0005495459904648333 0.1429976692593902 0.00039202794797763767 +1.155396501960892 -0.1832695024858715 0.000555003899511086 0.1487081074922936 0.00039651819396090317 +1.193981368904721 -0.18767145511059688 0.0005595791322321616 0.1542005102813542 0.0004008729611190022 +1.2325242599144655 -0.1919405623878915 0.0005632581004480606 0.15946195295875717 0.0004057357056793676 +1.2710284032989965 -0.19607867436314508 0.0005660351448473264 0.1644812303560743 0.0004118238469639397 +1.309496895475413 -0.20008778173721978 0.0005679117740104172 0.16924880031439327 0.00041989403281287864 +1.3479327012564395 -0.20397000044522665 0.0005688959350170864 0.17375672208561496 0.00043069294272365244 +1.3863386546187582 -0.20772755711331917 0.0005690013218711277 0.17799859035110466 0.00044489860205274224 +1.4247174599019692 -0.21136277535904668 0.0005682467243671518 0.18196946553105575 0.0004630623546665546 +1.4630716933923495 -0.21487806290009828 0.0005666554175786758 0.18566580101940974 0.0004855640414748908 +1.501403805249439 -0.21827589943672368 0.0005642545906051897 0.18908536795021005 0.0005125902268307752 +1.539716121736853 -0.22155882527430681 0.0005610748123770684 0.19222717807885867 0.0005441382348348123 +1.578010847721651 -0.2247294306542209 0.0005571495319911671 0.19509140534207034 0.0005800410537955184 +1.616290069409126 -0.2277903457629692 0.0005525146110700493 0.19767930664129196 0.0006200037143830479 +1.654555757282099 -0.23074423139151434 0.0005472078858955024 0.19999314237358926 0.0006636417568501542 +1.6928097692158341 -0.2335937702184845 0.0005412687574282116 0.2020360972109553 0.0007105153536721798 +1.7310538537414355 -0.2363416586925793 0.0005347378077464087 0.2038122016019288 0.000760156217749638 +1.769289653432296 -0.2389905994908618 0.0005276564418311619 0.2053262544390875 0.0008120870900826327 +1.8075187083896993 -0.24154329453076587 0.0005200665539803942 0.20658374730186047 0.000865834989791142 +1.8457424598051897 -0.24400243851452366 0.0005120102184077828 0.20759079064698457 0.0009209398149357507 +1.8839622535787701 -0.24637071298538124 0.000503529403781656 0.20835404227920265 0.0009769597495421134 +1.9221793439733932 -0.24865078087542394 0.00049466571157082 0.20888063839351015 0.0010334746002811058 +1.9603948972876384 -0.2508452815251348 0.0004854601381040636 0.20917812743802314 0.0010900878431522353 +1.9986099955298164 -0.25295682615498466 0.0004759528602248358 0.20925440700396036 0.001146427881810513 +2.03682564007815 -0.2549879937694398 0.00046618304433979356 0.20911766390785172 0.0012021488194557512 +2.0750427553129698 -0.25694132747381043 0.000456188678549004 0.20877631759039048 0.0012569309147197555 +2.1132621922082597 -0.25881933118438094 0.0004460064273990229 0.2082389669182048 0.0013104808110167298 +2.151484731871102 -0.26062446671229106 0.0004356715086476692 0.2075143404384271 0.0013625315824138257 +2.1897110890189007 -0.2623591512016756 0.00042521759127460033 0.2066112501030349 0.0014128426146818543 +2.2279419153853968 -0.2640257549026763 0.0004146767138200659 0.205538548449241 0.0014611993291258967 +2.266177803047753 -0.26562659926007454 0.0004040792220023609 0.20430508919553225 0.001507412753463381 +2.3044192876679843 -0.2671639552985156 0.000393453724444608 0.20291969118860384 0.0015513189444652461 +2.342666851643145 -0.26864004228556265 0.00038282706525042304 0.20139110561610685 0.0015927782696037451 +2.380920927159643 -0.2700570266541596 0.00037222431209655026 0.1997279863824939 0.0016316745576890692 +2.4191818991479543 -0.2714170211664976 0.00036166875846231665 0.19793886353061696 0.0016679141312416089 +2.457450108134913 -0.27272208430173467 0.00035118193859661953 0.1960321195802306 0.001701424735516836 +2.495725852991497 -0.2739742198505491 0.00034078365381864576 0.19401596864531037 0.001732154380508182 +2.534009393574789 -0.2751753767000744 0.0003304920087686429 0.19189843818574773 0.0017600701131282748 +2.572300953263425 -0.2763274487933735 0.0003203234562634028 0.18968735324415517 0.0017851567370039418 +2.610600721386459 -0.2774322752482595 0.00031029284945871636 0.18739032301663539 0.0018074154968510479 +2.6489088555460834 -0.2784916406209413 0.00030041350008799713 0.18501472960496387 0.0018268627437991855 +2.687225483835126 -0.279507275300664 0.00029069724161830037 0.18256771879908584 0.0018435285968431924 +2.7255507069506852 -0.28048085602222145 0.00028115449624341603 0.18005619274031293 0.0018574556142986632 +2.7638846002055786 -0.281414006483928 0.00027179434472191606 0.1774868043193364 0.0018686974876931228 +2.8022272154396424 -0.2823082980593456 0.0002626245981515427 0.17486595316684642 0.001877317768912071 +2.840578582833167 -0.28316525059177716 0.0002536518708645494 0.17219978309934983 0.0018833886399431748 +2.878938712624972 -0.2839863332612214 0.00024488165371020474 0.16949418088885415 0.0018869897328170288 +2.9173075967378255 -0.28477296551418035 0.0002363183870822219 0.16675477622986465 0.0018882070060742562 +2.9556852103140505 -0.2855265180473668 0.00022796553312584992 0.16398694278440942 0.0018871316824639122 +2.9940715131642803 -0.2862483138370168 0.0002198256466418241 0.1611958001912049 0.001883859251403196 +3.0324664511324224 -0.286939629206119 0.00021190044427551308 0.15838621693251395 0.0018784885384771773 +3.070869957379929 -0.2876016949224862 0.00020419087164916475 0.15556281395820604 0.0018711208432208026 +3.109281953592523 -0.28823569732117077 0.000196697168157888 0.15272996897279625 0.0018618591453917503 +3.147702351112551 -0.2888427794452499 0.00018941892920961543 0.14989182129881337 0.00185080737933008 +3.1861310520001016 -0.28942404219955686 0.0001823551657388384 0.14705227723464162 0.0018380697749970842 +3.224567950026052 -0.28998054551240443 0.00017550436087339596 0.144215015832304 0.001823750264026134 +3.2630129316001124 -0.2905133095008197 0.00016886452367405815 0.1413834950256929 0.0018079519484151497 +3.301465876636949 -0.29102331563524547 0.00016243323990447147 0.13856095804618082 0.001790776629172504 +3.339926659363383 -0.29151150790007124 0.0001562077198184765 0.13575044006721163 0.001772324391976253 +3.378395149069567 -0.29197879394674797 0.00015018484298476317 0.1329547750252085 0.0017526932467264238 +3.4168712108070394 -0.2924260462365856 0.00014436120018500157 0.13017660256855265 0.0017319788175371139 +3.455354706036387 -0.2928541031706718 0.0001387331324486187 0.12741837509184836 0.0017102740799388007 +3.4938454932272642 -0.2932637702046737 0.00013329676729858332 0.12468236481502493 0.0016876691417181035 +3.532343428413307 -0.2936558209465299 0.0001280480522984677 0.1219706708743364 0.0016642510641667557 +3.5708483657045162 -0.2940309982353611 0.00012298278599958993 0.1192852263917517 0.001640103720177981 +3.6093601577594847 -0.29439001520011143 0.00011809664639733479 0.11662780549679147 0.0016153076861752137 +3.647878656219819 -0.29473355629670145 0.00011338521700982104 0.11400003027565835 0.0015899401645744042 +3.6864037121089934 -0.295062278322654 0.000108844010694372 0.11140337762600923 0.001564074933759683 +3.724935176197728 -0.2953768114083469 0.0001044684913245406 0.10883918599934293 0.0015377823228161815 +3.7634728993380073 -0.2956777599842149 0.00010025409344599653 0.10630866201467888 0.0015111292082488816 +3.8020167327676084 -0.29596570372338377 9.619624003006612e-05 0.10381288692966367 0.0014841790300969342 +3.840566528387087 -0.2962411984593461 9.229035844603715e-05 0.10135282295810762 0.0014569918251532115 +3.8791221390108936 -0.2965047770784332 8.853189476533547e-05 0.09892931942376167 0.0014296242749786772 +3.9176834185943967 -0.2967569503869293 8.491632651258766e-05 0.09654311874302475 0.0014021297667677738 +3.9562502224383516 -0.29699820795279436 8.143917397083657e-05 0.09419486223025697 0.0013745584650354603 +3.9948224073723475 -0.2972290189220426 7.809601014793996e-05 0.09188509572098237 0.00134695739255249 +4.033399831918681 -0.2974498328099037 7.488246950447454e-05 0.08961427500978025 0.0013193705188524845 +4.071982356438001 -0.2976610802669768 7.179425553850761e-05 0.08738277110011099 0.0012918388548453519 +4.110569843258011 -0.29786317382062794 6.882714732050589e-05 0.08519087526603945 0.0012644005523903803 +4.149162156786448 -0.29805650859196336 6.597700506404689e-05 0.08303880392429178 0.001237091007482812 +4.187759163609491 -0.29824146298873505 6.323977481424902e-05 0.08092670331839913 0.0012099429661114429 +4.226360732576646 -0.2984183993745923 6.061149233203052e-05 0.07885465401561463 0.0011829866318740963 +4.264966734873158 -0.2985876647151197 5.808828624580154e-05 0.07682267521879872 0.0011562497744562474 +4.303577044080903 -0.29874959120113104 5.566638053878211e-05 0.0748307288960286 0.0011297578382905814 +4.34219153622861 -0.29890449684972037 5.334209643557018e-05 0.07287872373046007 0.0011035340507985153 +4.380810089832322 -0.2990526860835818 5.111185374615185e-05 0.07096651889456639 0.0010775995295822683 +4.419432585926865 -0.2991944502891353 4.897217172274111e-05 0.06909392765183113 0.0010519733881078923 +4.45805890808901 -0.29933006835399784 4.691966948084351e-05 0.06726072079049263 0.0010266728396195145 +4.496688942453117 -0.2994598071843564 4.495106603054017e-05 0.06546662989347816 0.0010017132987221377 +4.53532257771985 -0.29958392220280144 4.306317996138886e-05 0.0637113504490338 0.0009771084804705997 +4.573959705158559 -0.29970265782718464 4.125292882216077e-05 0.06199454480649449 0.0009528704967525762 +4.612600218603949 -0.2998162479310589 3.9517328230918615e-05 0.060315844982698985 0.0009290099497604815 +4.651244014447515 -0.29992491628626855 3.785349074970179e-05 0.05867485532287677 0.0009055360223478975 +4.689890991624258 -0.30002887698825 3.625862455419106e-05 0.05707115502150553 0.0008824565652484675 +4.728541051595146 -0.3001283348645838 3.47300319266828e-05 0.05550430050845714 0.0008597781809468138 +4.76719409832573 -0.3002234858673687 3.3265107599704185e-05 0.05397382770409462 0.0008375063044862174 +4.805850038261317 -0.3003145174499357 3.186133696859054e-05 0.05247925414967656 0.0008156452806076085 +4.84450878029909 -0.3004016089284487 3.0516294202097502e-05 0.051020081016622275 0.0007941984379244504 +4.883170235757487 -0.300484931828909 2.9227640261611056e-05 0.04959579500073442 0.000773168159548703 +4.92183431834316 -0.30056465022007917 2.7993120852544048e-05 0.048205870104566645 0.0007525559505168148 +4.960500944115834 -0.3006409210328238 2.68105643206156e-05 0.046849769314444935 0.0007323625020847815 +4.999170031451317 -0.30071389436636237 2.567787950757718e-05 0.0455269461747587 0.00071258775276867 +5.037841501002901 -0.3007837137819133 2.4593053578434346e-05 0.04423684626510913 0.0006932309463437135 +5.076515275661402 -0.3008505165841895 2.3554149832070052e-05 0.04297890858500225 0.0006742906868364677 +5.115191280514068 -0.30091443409120927 2.2559305504498823e-05 0.041752566849112153 0.0006557649905688717 +5.153869442802508 -0.30097559189285417 2.160672957343474e-05 0.04055725069818288 0.0006376513353857956 +5.192549691879853 -0.3010341100986174 2.069470057259588e-05 0.03939238682901748 0.0006199467072253202 +5.231231959167319 -0.30109010357494187 1.9821564421767213e-05 0.0382574000479724 0.0006026476439217978 +5.26991617811029 -0.3011436821725672 1.898573227766331e-05 0.0371517142510936 0.0005857502764972249 +5.3086022841341105 -0.3011949509442681 1.8185678413815172e-05 0.03607475333531434 0.0005692503681897235 +5.3472902145996475 -0.3012440103533687 1.7419938128456907e-05 0.03502594204276117 0.0005531433507443223 +5.385979908758815 -0.30129095647339593 1.6687105690082325e-05 0.03400470674348798 0.0005374243589838627 +5.424671307710087 -0.3013358811792258 1.598583231877088e-05 0.033010476158157866 0.0005220882628008351 +5.463364354354175 -0.3013788723300684 1.5314824208044055e-05 0.032042682025140816 0.0005071296972281285 +5.502058993349854 -0.30142001394462087 1.4672840589756556e-05 0.03110075971378705 0.0004925430908014169 +5.540755171070144 -0.3014593863687053 1.4058691840644782e-05 0.03018414878739753 0.0004783226915643782 +5.579452835558783 -0.30149706643569935 1.347123763589868e-05 0.029292293519352572 0.0004644625919462245 +5.618151936487152 -0.3015331276200601 1.2909385145530953e-05 0.02842464336351126 0.00045095675130709013 +5.6568524251116665 -0.3015676401842207 1.2372087278187777e-05 0.027580653382309434 0.00043779901743434325 +5.695554254231687 -0.30160067131914126 1.1858340969246729e-05 0.026759784635244754 0.00042498314619057883 +5.734257378147989 -0.3016322852787689 1.1367185514577803e-05 0.025961504529399517 0.000412502819810573 +5.772961752621841 -0.3016625435086751 1.0897700949161211e-05 0.02518528713467698 0.0004003516640712121 +5.8116673348347305 -0.3016915047691016 1.0449006468908926e-05 0.024430613465451473 0.000388523263823923 +5.85037408334874 -0.3017192252526591 1.0020258895237236e-05 0.02369697173128645 0.0003770111775461416 +5.889081958067622 -0.30174575869690207 9.610651181286498e-06 0.022983857557769927 0.00036580895082282414 +5.927790920198578 -0.3017711564919976 9.21941095785848e-06 0.022290774179956205 0.0003549101284879047 +5.966500932214782 -0.30179546778369365 8.8457991175691e-06 0.021617232610271788 0.00034430826603631644 +6.005211957818618 -0.3018187395717933 8.489108435884695e-06 0.020962751781717498 0.000333996939985695 +6.043923961905723 -0.30184101680432335 8.148662226528692e-06 0.02032685866862485 0.00032396975732536286 +6.082636910529722 -0.30186234246757876 7.823813030014713e-06 0.019709088386730966 0.00031422036411887 +6.121350770867792 -0.301882757672231 7.513941332474535e-06 0.019108984272279434 0.0003047424534032927 +6.160065511186973 -0.30190230173565297 7.218454314232615e-06 0.018526097944910194 0.00029552977232137325 +6.198781100811245 -0.30192101226064366 6.936784624601709e-06 0.017959989350848946 0.00028657612851994954 +6.2374975100893995 -0.30193892521069077 6.668389182463872e-06 0.01741022679216853 0.0002778753960217132 +6.276214710363666 -0.301956074981929 6.412748000144719e-06 0.016876386941157864 0.00026942152030890533 +6.314932673939107 -0.3019724944719442 6.169363029468931e-06 0.016358054838917245 0.00026120852304830413 +6.353651374053795 -0.3019882151455397 5.937757029921532e-06 0.015854823885248157 0.00025323050626246545 +6.392370784849717 -0.30200326709762654 5.717472455883124e-06 0.015366295812277678 0.00024548165579628943 +6.431090881344453 -0.3020176791133331 5.508070365643081e-06 0.014892080651083515 0.00023795624470880094 +6.469811639403592 -0.3020314787254781 5.309129349842831e-06 0.014431796686311928 0.00023064863583191052 +6.508533035713869 -0.3020446922695088 5.1202444828967274e-06 0.013985070402688163 0.00022355328429275617 +6.547255047757038 -0.3020573449360228 4.94102629635704e-06 0.013551536422704841 0.00021666473938886308 +6.5859776537844485 -0.3020694608209746 4.771099780065415e-06 0.01313083743705224 0.0002099776464442037 +6.624700832792334 -0.30208106297367304 4.610103410227271e-06 0.012722624127272292 0.00020348674801834153 +6.663424564497774 -0.3020921734426599 4.457688211851377e-06 0.012326555083911403 0.00019718688499227412 +6.702148829315362 -0.3021028133195689 4.313516858597132e-06 0.01194229671753473 0.00019107299754491587 +6.740873608334499 -0.3021130027810535 4.177262815212731e-06 0.011569523164597181 0.0001851401254647663 +6.779598883297372 -0.3021227611288637 4.0486095295639476e-06 0.011207916189640914 0.000179383408639612 +6.8183246365775645 -0.30213210682815717 3.927249679031417e-06 0.01085716508309109 0.0001737980872422184 +6.857050851159289 -0.30214105754412407 3.8128844785440706e-06 0.010516966554807826 0.00016837950162673697 +6.895777510617236 -0.3021496301769931 3.7052230547441757e-06 0.010187024625422777 0.00016312309191707884 +6.934504599097015 -0.3021578408954984 3.603981893974383e-06 0.009867050514287863 0.0001580243979607443 +6.973232101296199 -0.3021657051688717 3.508884366599477e-06 0.009556762525036788 0.00015307905860185877 +7.011960002445929 -0.3021732377974203 3.4196603307278384e-06 0.009255885929720894 0.00014828281089828948 +7.050688288293074 -0.30218045294176243 3.3360458202480927e-06 0.008964152850376246 0.00014363148973772248 +7.089416945082965 -0.3021873641507715 3.2577828123007664e-06 0.008681302140121697 0.0001391210264579746 +7.1281459595426115 -0.3021939843882922 3.1846190779943875e-06 0.00840707926207594 0.00013474744832667963 +7.166875318864494 -0.3022003260586754 3.116308106669949e-06 0.008141236168660531 0.0001305068770256567 +7.20560501069083 -0.3022064010311939 3.0526091024913486e-06 0.00788353117946447 0.00012639552790824645 +7.244335023098323 -0.3022122206633788 2.9932870438277904e-06 0.007633728859246747 0.00012240970857061402 +7.283065344583423 -0.30221779582333236 2.9381127950325254e-06 0.007391599894859849 0.00011854581748422956 +7.321795964048041 -0.3022231369110553 2.886863262177714e-06 0.007156920974032682 0.00011480034289676251 +7.360526870785722 -0.30222825387883784 2.8393215812201302e-06 0.006929474662740513 0.00011116986127529889 +7.399258054468227 -0.3022331562507556 2.7952773241917116e-06 0.006709049283321173 0.0001076510360820066 +7.437989505132606 -0.3022378531413025 2.7545267157270766e-06 0.0064954387944399046 0.00010424061605825754 +7.4767212131686405 -0.3022423532732135 2.7168728454225575e-06 0.006288442669074763 0.00010093543391423394 +7.515453169306712 -0.302246664994493 2.682125868499492e-06 0.006087865777102485 9.773240481187298e-05 +7.55418536460607 -0.3022507962947073 2.6501031839205004e-06 0.0058935182648173386 9.462852480016973e-05 +7.592917790443465 -0.30225475482055036 2.6206295837782037e-06 0.00570521543882867 9.162086933896936e-05 +7.631650438502173 -0.3022585478907348 2.5935373670349235e-06 0.005522777648964613 8.870659157991545e-05 +7.670383300761351 -0.3022621825102239 2.5686664155836242e-06 0.005346030173787206 8.588292117737486e-05 +7.709116369485805 -0.30226566538384253 2.5458642270203135e-06 0.005174803106493656 8.314716221202838e-05 +7.747849637216032 -0.30226900292929054 2.524985906764777e-06 0.005008931242410188 8.04966920869471e-05 +7.78658309675861 -0.30227220128958304 2.505894117133765e-06 0.004848253968882796 7.792895973395213e-05 +7.825316741176951 -0.3022752663449498 2.4884589876326675e-06 0.004692615155766462 7.544148418257714e-05 +7.864050563782291 -0.3022782037242119 2.4725579860388154e-06 0.00454186304693367 7.303185285775454e-05 +7.902784558125044 -0.30228101881565944 2.458075756994429e-06 0.004395850154493359 7.069772017293742e-05 +7.941518717986416 -0.3022837167774516 2.444903930050053e-06 0.004254433155756533 6.843680606778245e-05 +7.9802530373703195 -0.30228630254756755 2.43294090173037e-06 0.004117472788248636 6.62468942745507e-05 +8.018987510495524 -0.30228878085331634 2.4220915960674425e-06 0.003984833750140704 6.412583100246442e-05 +8.057722131788127 -0.3022911562204346 2.4122672088307697e-06 0.003856384600412902 6.207152336717524e-05 +8.096456895874251 -0.3022934329817853 2.403384937424422e-06 0.003731997661723345 6.0081938039598765e-05 +8.13519179757296 -0.3022956152856768 2.3953677035583622e-06 0.003611548924152838 5.8155099762025445e-05 +8.173926831889489 -0.30229770710382103 2.3881438689069956e-06 0.003494917951517332 5.6289089700674076e-05 +8.212661994008643 -0.30229971223894075 2.381646950551686e-06 0.0033819877891222354 5.448204445297429e-05 +8.251397279288444 -0.30230163433204776 2.3758153353114786e-06 0.003272644873349198 5.273215434449982e-05 +8.290132683254011 -0.30230347686940373 2.3705919990534297e-06 0.0031667789433527803 5.1037662100181836e-05 +8.328868201591616 -0.30230524318917784 2.3659242305135037e-06 0.0030642829536069506 4.939686172118408e-05 +8.367603830142976 -0.3023069364878126 2.3617633627946476e-06 0.002965052989669347 4.780809691425378e-05 +8.40633956489974 -0.30230855982611604 2.3580645132233984e-06 0.0028689881842860216 4.6269759978129195e-05 +8.445075401998132 -0.30231011613508535 2.354786333003864e-06 0.002775990636337478 4.4780290387452326e-05 +8.483811337713835 -0.3023116082214815 2.351890767265133e-06 0.0026859653309288787 4.333817367027745e-05 +8.522547368457001 -0.3023130387731566 2.3493428266742944e-06 0.0025988200614741213 4.1941940090488884e-05 +8.561283490767469 -0.3023144103641549 2.347110369363766e-06 0.002514465353674473 4.059016369305389e-05 +8.600019701310138 -0.3023157254595894 2.345163895664387e-06 0.002432814390327336 3.9281460647305286e-05 +8.638755996870488 -0.3023169864203068 2.3434763536859207e-06 0.002353782939784873 3.801448863642539e-05 +8.677492374350285 -0.30231819550735267 2.342022956632277e-06 0.0022772892832165006 3.6787945332166515e-05 +8.716228830763416 -0.30231935488624145 2.3407810109333554e-06 0.0022032541457068225 3.560056760569751e-05 +8.754965363231872 -0.3023204666310379 2.3397297559494924e-06 0.0021316006296750417 3.445113012139979e-05 +8.793701968981884 -0.30232153272827245 2.3388502136854088e-06 0.0020622541465402213 3.3338444568552664e-05 +8.83243864534018 -0.30232255508067346 2.338125049060639e-06 0.0019951423534424035 3.22613585871904e-05 +8.871175389730372 -0.30232353551074975 2.3375384389324113e-06 0.0019301950893557266 3.121875455916358e-05 +8.909912199669508 -0.30232447576420995 2.3370759520144585e-06 0.0018673443145906562 3.0209548917771986e-05 +8.94864907276467 -0.30232537751324057 2.3367244356924116e-06 0.0018065240496293827 2.9232690927711414e-05 +8.987386006709794 -0.3023262423596387 2.336471912008687e-06 0.001747670316666245 2.8287161877927535e-05 +9.026122999282482 -0.302327071837809 2.336307481766644e-06 0.0016907210834552655 2.7371974309118264e-05 +9.064860048341057 -0.30232786741763423 2.3362212345449004e-06 0.0016356162072655416 2.648617079467141e-05 +9.103597151821601 -0.3023286305072219 2.3362041674592983e-06 0.0015822973797095235 2.5628823403810107e-05 +9.1423343077352 -0.30232936245553027 2.3362481078209887e-06 0.001530708074989471 2.4799032599888495e-05 +9.181071514165193 -0.3023300645548806 2.336345644320411e-06 0.0014807934989265875 2.399592662747697e-05 +9.219808769264615 -0.3023307380433681 2.336490061860884e-06 0.001432500536203924 2.32186603550367e-05 +9.258546071253642 -0.3023313841071593 2.336675282546931e-06 0.0013857777049559622 2.2466415085214194e-05 +9.297283418417189 -0.3023320038826992 2.336895810140156e-06 0.001340575106772674 2.1738397180545103e-05 +9.336020809102573 -0.30233259845881816 2.337146681143597e-06 0.0012968443812550077 2.1033837764862284e-05 +9.374758241717245 -0.30233316887875045 2.3374234175435406e-06 0.0012545386610977249 2.0351991728405654e-05 +9.413495714726611 -0.30233371614206755 2.3377219849366768e-06 0.001213612527749817 1.9692137106129846e-05 +9.45223322665198 -0.302334241206525 2.3380387534879047e-06 0.0011740219691734257 1.905357443989601e-05 +9.490970776068473 -0.30233474498983376 2.338370462145585e-06 0.0011357243379862233 1.8435626132234807e-05 +9.529708361603129 -0.3023352283713527 2.338714185838733e-06 0.0010986783112313034 1.7837635642122524e-05 +9.568445981933 -0.3023356921937117 2.3390673061809647e-06 0.0010628438503547666 1.725896683737973e-05 +9.607183635783356 -0.302336137264361 2.3394274827404965e-06 0.0010281821651495964 1.6699003838209302e-05 +9.645921321925906 -0.30233656435705875 2.3397926287785e-06 0.000994655673690013 1.615714980080846e-05 +9.68465903917716 -0.30233697421329314 2.340160888112958e-06 0.0009622279678313336 1.5632826788759796e-05 +9.723396786396764 -0.3023373675436429 2.3405306133817178e-06 0.0009308637781134462 1.5125474777223907e-05 +9.762134562485945 -0.30233774502908073 2.3409003475876825e-06 0.0009005289385168023 1.463455159807972e-05 +9.800872366386027 -0.30233810732222116 2.3412688060470333e-06 0.0008711903550305553 1.4159532192322224e-05 +9.83961019707694 -0.3023384550485141 2.3416348599436266e-06 0.0008428159714496787 1.3699907866900781e-05 +9.878348053575827 -0.3023387888073905 2.3419975224710654e-06 0.0008153747388612709 1.3255186058316045e-05 +9.917085934935722 -0.30233910917335405 2.34235593404644e-06 0.000788836585557469 1.282488995317277e-05 +9.955823840244202 -0.30233941669703174 2.342709351434144e-06 0.0007631723870850046 1.2408557553840682e-05 +9.99456176862215 -0.3023397119061765 2.343057135445997e-06 0.0007383539366229916 1.200574179677812e-05 +10.033299719222562 -0.30233999530662803 2.34339874121902e-06 0.0007143539184072163 1.1616009638566252e-05 +10.072037691229346 -0.30234026738323333 2.343733708914893e-06 0.0006911458800046288 1.1238941728636053e-05 +10.110775683856222 -0.3023405286007266 2.34406165474252e-06 0.0006687042055644521 1.0874132209758831e-05 +10.149513696345617 -0.3023407794045745 2.3443822638764683e-06 0.0006470040904301808 1.0521188056231887e-05 +10.188251727967653 -0.30234102022178155 2.3446952825539005e-06 0.00062602151702013 1.0179728838575733e-05 +10.226989778019098 -0.30234125146166585 2.3450005126862586e-06 0.0006057332295702908 9.849386264802114e-06 +10.265727845822422 -0.30234147351659907 2.3452978047602657e-06 0.0005861167108453411 9.529803646427424e-06 +10.304465930724858 -0.30234168676271483 2.3455870536687808e-06 0.0005671501605370413 9.220635990724968e-06 +10.343204032097475 -0.3023418915605889 2.3458681933000127e-06 0.0005488124716478966 8.921549016247445e-06 +10.38194214933436 -0.30234208825589004 2.3461411921612634e-06 0.0005310832096814734 8.632219443324917e-06 +10.420680281851727 -0.3023422771800019 2.346406049220251e-06 0.0005139425923942578 8.352334299059633e-06 +10.459418429087137 -0.30234245865062015 2.346662790997019e-06 0.0004973714688590149 8.081590439885506e-06 +10.498156590498724 -0.30234263297232455 2.346911467216645e-06 0.00048135129995697075 7.819694711930416e-06 +10.536894765564412 -0.3023428004371255 2.347152149317941e-06 0.0004658641396905348 7.566363409578894e-06 +10.575632953781248 -0.3023429613249891 2.347384925765415e-06 0.00045089261612361653 7.321321917500568e-06 +10.614371154664644 -0.30234311590433804 2.3476099012940987e-06 0.00043641991430396084 7.084304311885842e-06 +10.653109367747748 -0.3023432644325346 2.3478271944851017e-06 0.0004224297579069893 6.855053453821188e-06 +10.69184759258079 -0.3023434071563376 2.3480369348390566e-06 0.00040890639416010164 6.633320497434466e-06 +10.730585828730442 -0.30234354431234794 2.3482392619325115e-06 0.00039583457473871736 6.418864655525616e-06 +10.76932407577923 -0.30234367612742896 2.348434323334189e-06 0.0003831995428032805 6.211452938630134e-06 +10.808062333324957 -0.3023438028191112 2.3486222733435007e-06 0.0003709870154608448 6.010859842296828e-06 +10.846800600980133 -0.3023439245959821 2.34880327165794e-06 0.0003591831696848717 5.816867353254746e-06 +10.885538878371467 -0.30234404165805523 2.3489774822059685e-06 0.000347774628358883 5.629264324269895e-06 +10.9242771651393 -0.3023441541971277 2.3491450723063554e-06 0.0003367484453714455 5.447846749253783e-06 +10.963015460937147 -0.30234426239712114 2.3493062112410815e-06 0.00032609209241626745 5.2724170893690406e-06 +11.001753765431216 -0.3023443664344074 2.3494610698970153e-06 0.00031579344636062254 5.1027844213869185e-06 +11.04049207829991 -0.3023444664781235 2.349609819982095e-06 0.0003058407749706044 4.938763953672742e-06 +11.079230399233406 -0.30234456269046983 2.349752633092357e-06 0.0002962227256763822 4.78017689755221e-06 +11.117968727933238 -0.3023446552269969 2.3498896803109996e-06 0.000286928314209681 4.626850467184912e-06 +11.156707064111844 -0.3023447442368839 2.3500211319544635e-06 0.000277946910953876 4.47861761462864e-06 +11.195445407492196 -0.30234482986319805 2.350147156546753e-06 0.0002692682314923021 4.3353165726358255e-06 +11.234183757807418 -0.3023449122431511 2.350267921163772e-06 0.0002608823245678873 4.196791150207464e-06 +11.272922114800386 -0.30234499150833904 2.3503835903896393e-06 0.0002527795623299104 4.062890138453918e-06 +11.311660478223397 -0.30234506778497555 2.350494326616241e-06 0.0002449506291735476 3.9334674888504096e-06 +11.350398847837818 -0.30234514119411404 2.3506002893373263e-06 0.00023738651223290748 3.8083817779888395e-06 +11.38913722341375 -0.30234521185185953 2.3507016350921084e-06 0.0002300784923399902 3.6874966151496203e-06 +11.427875604729715 -0.30234527986957577 2.3507985178368317e-06 0.00022301813292941204 3.570679869904086e-06 +11.466613991572343 -0.3023453453540774 2.3508910874636618e-06 0.00021619727300877567 3.4578040083503183e-06 +11.505352383736065 -0.30234540840781937 2.350979491442378e-06 0.00020960801723886923 3.3487455624830867e-06 +11.544090781022865 -0.3023454691290757 2.351063873154844e-06 0.00020324272788532956 3.2433853846100595e-06 +11.582829183241959 -0.302345527612114 2.3511443726743207e-06 0.00019709401585912392 3.1416083748320987e-06 +11.621567590209535 -0.3023455839473575 2.3512211266302376e-06 0.00019115473334160252 3.04330284931365e-06 +11.660306001748543 -0.3023456382215447 2.3512942680078725e-06 0.00018541796624448598 2.9483616897368435e-06 +11.699044417688407 -0.3023456905178811 2.3513639261986833e-06 0.00017987702596188049 2.8566805049283745e-06 +11.737782837864781 -0.3023457409161839 2.3514302269955036e-06 0.00017452544310222586 2.7681591826864105e-06 +11.776521262119351 -0.3023457894930218 2.351493292331875e-06 0.0001693569592549286 2.6827006702040065e-06 +11.815259690299605 -0.30234583632184786 2.3515532412204807e-06 0.00016436552149207148 2.6002110055205213e-06 +11.853998122258604 -0.30234588147312774 2.3516101884506797e-06 0.00015954527493304216 2.5205998606100107e-06 +11.892736557854795 -0.3023459250144638 2.351664245509356e-06 0.00015489055571568834 2.4437795532013216e-06 +11.931474996951813 -0.3023459670107089 2.351715520719484e-06 0.0001503958871083368 2.3696657489881603e-06 +11.970213439418282 -0.3023460075240837 2.3517641186709968e-06 0.00014605597031779518 2.298176835723251e-06 +12.008951885127635 -0.3023460466142806 2.3518101405826913e-06 0.0001418656823733789 2.2292339462805817e-06 +12.04769033395795 -0.3023460843385695 2.3518536845648113e-06 0.00013782006704987892 2.1627607359765666e-06 +12.086428785791759 -0.3023461207518975 2.351894845354684e-06 0.00013391433077298906 2.0986838657590217e-06 +12.125167240515903 -0.30234615590698205 2.3519337144980477e-06 0.00013014383907551484 2.0369321835711847e-06 +12.163905698021363 -0.3023461898544035 2.351970380705283e-06 0.00012650410848313076 1.9774368350673537e-06 +12.20264415820312 -0.3023462226426928 2.352004929328849e-06 0.00012299080325373164 1.9201316958472404e-06 +12.241382620959985 -0.30234625431841444 2.352037442900092e-06 0.00011959973049728249 1.8649523825679745e-06 +12.2801210861945 -0.30234628492624666 2.35206800118416e-06 0.00011632683584435404 1.8118369890363642e-06 +12.318859553812745 -0.30234631450905974 2.3520966807449525e-06 0.00011316819754951844 1.760725443383521e-06 +12.357598023724261 -0.30234634310798875 2.3521235559966396e-06 0.00011012002405643354 1.711559801878357e-06 +12.396336495841904 -0.30234637076250487 2.352148698091864e-06 0.00010717864832160888 1.6642838181885106e-06 +12.43507497008171 -0.3023463975104834 2.3521721762011606e-06 0.00010434052415998127 1.6188432317663212e-06 +12.473813446362794 -0.30234642338826845 2.3521940565036176e-06 0.00010160222289938398 1.5751852583485687e-06 +12.512551924607234 -0.30234644843073455 2.352214403109444e-06 9.896042911449684e-05 1.5332591011513557e-06 +12.551290404739948 -0.3023464726713502 2.3522332774861156e-06 9.641193550277927e-05 1.493014939405789e-06 +12.590028886688636 -0.30234649614223 2.352250738888834e-06 9.395364252427824e-05 1.45440497421108e-06 +12.62876737038361 -0.30234651887419317 2.3522668443791132e-06 9.158255251347142e-05 1.4173825665141533e-06 +12.667505855757756 -0.30234654089681545 2.35228164910017e-06 8.929576645332257e-05 1.3819022813102705e-06 +12.706244342746412 -0.302346562238479 2.3522952055362457e-06 8.709048252368887e-05 1.34792001405072e-06 +12.744982831287283 -0.30234658292642425 2.352307564871134e-06 8.496398904780987e-05 1.3153929376418158e-06 +12.78372132132035 -0.30234660298678956 2.352318775979449e-06 8.29136671335108e-05 1.2842790741965197e-06 +12.822459812787798 -0.30234662244466287 2.352328885875738e-06 8.093698371529168e-05 1.2545374306397596e-06 +12.861198305633929 -0.3023466413241209 2.352337939610694e-06 7.903148862144231e-05 1.2261283694707738e-06 +12.899936799805086 -0.30234665964827206 2.3523459809105675e-06 7.7194813115838e-05 1.1990127959725412e-06 +12.938675295249572 -0.30234667743929217 2.3523530514268425e-06 7.54246688679551e-05 1.1731524706200658e-06 +12.977413791917584 -0.3023466947184678 2.3523591912787425e-06 7.371884073246471e-05 1.1485099332220677e-06 +13.016152289761138 -0.3023467115062268 2.3523644392912662e-06 7.2075189732342e-05 1.125048667145146e-06 +13.054890788734017 -0.30234672782217753 2.3523688322063657e-06 7.049164528328721e-05 1.1027324189391608e-06 +13.093629288791695 -0.302346743685139 2.3523724059133877e-06 6.896620776786505e-05 1.0815259618276943e-06 +13.132367789891267 -0.3023467591131736 2.3523751944463336e-06 6.749694416113092e-05 1.0613943607751603e-06 +13.171106291991403 -0.30234677412362093 2.3523772307768147e-06 6.608198259600743e-05 1.0423033612008791e-06 +13.209844795052287 -0.30234678873312154 2.352378546421182e-06 6.471951682312142e-05 1.0242192355728485e-06 +13.248583299035564 -0.3023468029576493 2.3523791716323237e-06 6.340779879334955e-05 1.0071089480930552e-06 +13.28732180390428 -0.30234681681253606 2.3523791353652503e-06 6.214514041923193e-05 9.90939663492068e-07 +13.326060309622827 -0.3023468303125006 2.352378465764693e-06 6.0929906862012986e-05 9.756791365002182e-07 +13.364798816156915 -0.3023468434716694 2.3523771894203793e-06 5.976052124867144e-05 9.612957469228126e-07 +13.403537323473492 -0.30234685630360425 2.3523753320459367e-06 5.863545613439697e-05 9.477581923400799e-07 +13.44227583154074 -0.30234686882132195 2.3523729184704374e-06 5.7553237117322064e-05 9.350356360418544e-07 +13.481014340327974 -0.30234688103731977 2.3523699720909633e-06 5.6512437427889995e-05 9.230979524142672e-07 +13.51975284980566 -0.30234689296359235 2.352366515764981e-06 5.551167924250643e-05 9.119155015358164e-07 +13.55849135994533 -0.3023469046116562 2.352362571231781e-06 5.45496290810319e-05 9.014587685103696e-07 +13.59722987071956 -0.30234691599256525 2.3523581593979302e-06 5.36249999377252e-05 8.916994174620722e-07 +13.63596838210194 -0.30234692711693184 2.3523533002659113e-06 5.273654588510448e-05 8.82609245528326e-07 +13.674706894067 -0.3023469379949442 2.35234801283214e-06 5.188306342845226e-05 8.741606577573013e-07 +13.713445406590234 -0.30234694863638284 2.3523423159002946e-06 5.1063389687420606e-05 8.663270575391983e-07 +13.752183919648022 -0.3023469590506369 2.3523362267979624e-06 5.027639978459928e-05 8.590820230410884e-07 +13.790922433217593 -0.3023469692467215 2.352329762556448e-06 4.952100657026417e-05 8.523996639377562e-07 +13.829660947277038 -0.3023469792332903 2.352322939452126e-06 4.879616007673522e-05 8.462554642697652e-07 +13.868399461805215 -0.30234698901865226 2.3523157730777647e-06 4.810084443823304e-05 8.406252722703329e-07 +13.907137976781787 -0.3023469986107845 2.352308278166537e-06 4.743407797194482e-05 8.354852485931078e-07 +13.945876492187143 -0.3023470080173451 2.3523004692416723e-06 4.6794912839702136e-05 8.308127380503467e-07 +13.984615008002397 -0.3023470172456886 2.3522923597832385e-06 4.6182430350662406e-05 8.265857228496806e-07 +14.023353524209346 -0.3023470263028734 2.3522839629152673e-06 4.559574606529916e-05 8.227831083029153e-07 +14.06209204079047 -0.3023470351956781 2.3522752912681145e-06 4.503400295338535e-05 8.193838427219447e-07 +14.100830557728866 -0.3023470439306112 2.3522663568869784e-06 4.44963725436733e-05 8.163688195170623e-07 +14.139569075008277 -0.30234705251392174 2.3522571713412896e-06 4.3982054926330194e-05 8.137184260035893e-07 +14.17830759261301 -0.30234706095160874 2.3522477456499262e-06 4.349027730187517e-05 8.114146610547609e-07 +14.217046110527964 -0.3023470692494343 2.352238090433287e-06 4.302029138973661e-05 8.094398023690971e-07 +14.2557846287386 -0.30234707741292915 2.352228215829446e-06 4.2571375327270785e-05 8.077775103280613e-07 +14.294523147230885 -0.30234708544740463 2.3522181314282987e-06 4.214283077659201e-05 8.064111780297573e-07 +14.333261665991326 -0.3023470933579611 2.3522078465740008e-06 4.1733983507420234e-05 8.053258659161257e-07 +14.372000185006916 -0.3023471011494959 2.352197370356472e-06 4.1344180829075444e-05 8.045068037608001e-07 +14.41073870426509 -0.3023471088267112 2.3521867110864917e-06 4.097279322275798e-05 8.039400063663049e-07 +14.4494772237538 -0.30234711639412293 2.3521758772188714e-06 4.0619210299943345e-05 8.03612530350244e-07 +14.4882157434614 -0.3023471238560667 2.352164876205134e-06 4.028284508380496e-05 8.035113579160406e-07 +14.526954263376675 -0.30234713121670626 2.352153715689692e-06 3.996312778500473e-05 8.036244545697036e-07 +14.565692783488833 -0.3023471384800401 2.352142403027533e-06 3.965950921992355e-05 8.039407822168788e-07 +14.604431303787461 -0.302347145649908 2.352130944682638e-06 3.9371457905738304e-05 8.044494732279573e-07 +14.643169824262547 -0.30234715272999707 2.3521193476411983e-06 3.9098460364463595e-05 8.051401680273187e-07 +14.681908344904414 -0.302347159723848 2.3521076178136746e-06 3.8840020252466724e-05 8.060032722530099e-07 +14.720646865703776 -0.3023471666348609 2.352095761562129e-06 3.859565906453513e-05 8.070299463626105e-07 +14.759385386651658 -0.30234717346630174 2.352083784406801e-06 3.836491259480701e-05 8.082111679880792e-07 +14.798123907739424 -0.3023471802213067 2.3520716919034494e-06 3.814733336331797e-05 8.095389228130107e-07 +14.836862428958753 -0.3023471869028866 2.3520594895270982e-06 3.7942489283639426e-05 8.110053579781666e-07 +14.875600950301632 -0.3023471935139345 2.3520471819405403e-06 3.774996100857788e-05 8.126033854669984e-07 +14.914339471760323 -0.3023472000572274 2.352034774391367e-06 3.7569345801531546e-05 8.143261341275433e-07 +14.953077993327403 -0.30234720653543384 2.352022271232005e-06 3.74002524187693e-05 8.161671683688179e-07 +14.991816514995701 -0.3023472129511153 2.3520096768950737e-06 3.724230424659338e-05 8.181202112999355e-07 +15.030555036758297 -0.3023472193067327 2.351996995771941e-06 3.70951356503032e-05 8.201797348988577e-07 +15.06929355860854 -0.30234722560464883 2.3519842316818e-06 3.695839559561804e-05 8.223404274847201e-07 +15.108032080540024 -0.3023472318471338 2.3519713886696e-06 3.6831743238400885e-05 8.245969520557568e-07 +15.146770602546573 -0.30234723803636715 2.3519584703533364e-06 3.671484971154392e-05 8.269446799196725e-07 +15.185509124622225 -0.302347244174443 2.3519454803579736e-06 3.660739686251058e-05 8.293790792390831e-07 +15.22424764676126 -0.30234725026337156 2.351932421985542e-06 3.65090788852448e-05 8.318959289893662e-07 +15.262986168958141 -0.3023472563050855 2.3519192983546203e-06 3.64195968296738e-05 8.344911677780281e-07 +15.301724691207548 -0.3023472623014394 2.3519061128665257e-06 3.633866544896009e-05 8.371614834070121e-07 +15.340463213504355 -0.30234726825421465 2.3518928682814693e-06 3.626600754321296e-05 8.399028499527692e-07 +15.379201735843623 -0.3023472741651234 2.351879567431874e-06 3.620135469930652e-05 8.427121534698217e-07 +15.417940258220591 -0.302347280035809 2.3518662130836424e-06 3.614444911700204e-05 8.455863050926695e-07 +15.456678780630668 -0.30234728586785026 2.3518528077115156e-06 3.609504113589663e-05 8.485225004283821e-07 +15.495417303069448 -0.30234729166276453 2.3518393539450995e-06 3.605288813995945e-05 8.515176518635472e-07 +15.534155825532656 -0.30234729742200855 2.3518258541666364e-06 3.601775760667494e-05 8.54569417755934e-07 +15.572894348016202 -0.3023473031469814 2.351812310383962e-06 3.5989423461471404e-05 8.57675591891099e-07 +15.611632870516138 -0.302347308839027 2.351798724962645e-06 3.5967668590946214e-05 8.608336179057261e-07 +15.65037139302864 -0.30234731449943747 2.351785099924001e-06 3.595228156229081e-05 8.640412981193674e-07 +15.689109915550059 -0.3023473201294525 2.351771437318853e-06 3.5943060212066356e-05 8.672969021104235e-07 +15.727848438076851 -0.3023473257302631 2.351757738872345e-06 3.593980782048173e-05 8.705983428455218e-07 +15.766586960605602 -0.3023473313030143 2.351744006481497e-06 3.594233429314193e-05 8.739437916228838e-07 +15.80532548313305 -0.30234733684880527 2.3517302417872923e-06 3.595045583260026e-05 8.773317358910075e-07 +15.84406400565602 -0.30234734236869254 2.3517164466145677e-06 3.596399551078477e-05 8.807604148055467e-07 +15.882802528171476 -0.3023473478636899 2.3517026223015775e-06 3.598278329664868e-05 8.842283703616037e-07 +15.92154105067647 -0.302347353334773 2.3516887706270115e-06 3.600665164566158e-05 8.877344937128871e-07 +15.960279573168197 -0.3023473587828767 2.3516748926834898e-06 3.603544278960158e-05 8.912773587430127e-07 +15.999018095643901 -0.3023473642089024 2.351660990217476e-06 3.606899967390426e-05 8.948552986275687e-07 +16.037756618100985 -0.3023473696137122 2.3516470640922623e-06 3.6107176551051094e-05 8.984675665218107e-07 +16.076495140536913 -0.3023473749981372 2.3516331158594932e-06 3.6149826744463134e-05 9.021131827032228e-07 +16.115233662949244 -0.30234738036297454 2.351619146793711e-06 3.619681207313875e-05 9.057905753914162e-07 +16.153972185335643 -0.30234738570898995 2.3516051578135604e-06 3.624799867617966e-05 9.094990340457314e-07 +16.192710707693823 -0.30234739103692043 2.351591150144333e-06 3.6303254622899426e-05 9.132379490384267e-07 +16.23144923002162 -0.3023473963474723 2.3515771247066403e-06 3.636245620432436e-05 9.170058919109872e-07 +16.270187752316946 -0.3023474016413252 2.351563082531884e-06 3.642548093853223e-05 9.208025821488581e-07 +16.30892627457777 -0.30234740691913153 2.351549024594202e-06 3.649221254669449e-05 9.246267927621822e-07 +16.34766479680213 -0.3023474121815182 2.351534951855939e-06 3.6562537809230106e-05 9.284780771795309e-07 +16.386403318988158 -0.30234741742908794 2.3515208650417787e-06 3.6636347002981836e-05 9.323553476861434e-07 +16.42514184113405 -0.30234742266241993 2.3515067650691117e-06 3.671353348366518e-05 9.362583176232875e-07 +16.463880363238054 -0.3023474278820695 2.351492652715622e-06 3.6793996756682656e-05 9.401863035866294e-07 +16.5026188852985 -0.30234743308857065 2.3514785287117947e-06 3.6877638238730407e-05 9.441386849078217e-07 +16.54135740731376 -0.30234743828243776 2.351464393699746e-06 3.696436116499201e-05 9.481148354695802e-07 +16.58009592928228 -0.3023474434641635 2.351450248513819e-06 3.70540748929341e-05 9.521139684223095e-07 +16.618834451202552 -0.3023474486342216 2.351436093707843e-06 3.714668968688592e-05 9.56136131972831e-07 +16.657572973073137 -0.3023474537930673 2.351421929985598e-06 3.7242120594547444e-05 9.601805903879377e-07 +16.696311494892633 -0.30234745894113846 2.3514077577966507e-06 3.734028361489936e-05 9.642469322113652e-07 +16.735050016659688 -0.3023474640788548 2.3513935778806766e-06 3.744109955855967e-05 9.683344039676787e-07 +16.773788538373033 -0.302347469206621 2.351379390441935e-06 3.7544489819801105e-05 9.7244318878677e-07 +16.812527060031396 -0.302347474324824 2.351365196470388e-06 3.765038122730563e-05 9.76572079889913e-07 +16.851265581633584 -0.30234747943383755 2.3513509962063217e-06 3.77587004963623e-05 9.807215032279922e-07 +16.89000410317844 -0.30234748453402 2.351336790056093e-06 3.7869377494041146e-05 9.848904658209237e-07 +16.928742624664842 -0.3023474896257152 2.3513225785541457e-06 3.798234488396677e-05 9.890791029155958e-07 +16.967481146091735 -0.30234749470925376 2.3513083621606867e-06 3.809753896960851e-05 9.932868830268122e-07 +17.006219667458062 -0.30234749978495395 2.3512941411353792e-06 3.821489492053026e-05 9.97513518657088e-07 +17.04495818876282 -0.30234750485312073 2.3512799159806155e-06 3.8334353484180724e-05 1.001758703609331e-06 +17.083696710005064 -0.30234750991404796 2.351265687069787e-06 3.8455855529295374e-05 1.006022175531769e-06 +17.122435231183864 -0.30234751496801765 2.3512514546815504e-06 3.857934337275155e-05 1.0103035383188029e-06 +17.161173752298303 -0.3023475200153006 2.3512372192840674e-06 3.870476362860975e-05 1.014602624665767e-06 +17.199912273347564 -0.30234752505615714 2.351222981022398e-06 3.883206301701476e-05 1.0189193510943498e-06 +17.238650794330788 -0.30234753009083803 2.351208740280116e-06 3.896118912937953e-05 1.023253057779516e-06 +17.277389315247184 -0.3023475351195828 2.351194497352545e-06 3.909209498083096e-05 1.0276038055489604e-06 +17.31612783609598 -0.3023475401426235 2.351180252562042e-06 3.922473082575069e-05 1.0319717604280393e-06 +17.354866356876435 -0.30234754516018186 2.351166005991877e-06 3.935905120156381e-05 1.0363559729277045e-06 +17.393604877587833 -0.302347550172471 2.3511517580890847e-06 3.949501181037652e-05 1.0407565932905338e-06 +17.43234339822949 -0.3023475551796963 2.3511375089344814e-06 3.963256913318245e-05 1.0451733521867994e-06 +17.471081918800742 -0.30234756018205466 2.351123258989067e-06 3.977168245933958e-05 1.0496061184496197e-06 +17.509820439300942 -0.3023475651797352 2.351109008186761e-06 3.991231140145876e-05 1.0540546726168485e-06 +17.548558959729483 -0.30234757017292047 2.3510947568273067e-06 4.005441732920651e-05 1.0585191311392056e-06 +17.587297480085773 -0.30234757516178473 2.3510805052967514e-06 4.019796308247358e-05 1.0629986800537109e-06 +17.62603600036923 -0.3023475801464966 2.3510662534140984e-06 4.03429106178869e-05 1.0674936850088822e-06 +17.66477452057931 -0.30234758512721704 2.3510520016201167e-06 4.048922812397005e-05 1.0720038396665562e-06 +17.703513040715485 -0.30234759010410195 2.351037750021448e-06 4.063687978207346e-05 1.0765291533444055e-06 +17.742251560777234 -0.3023475950773002 2.3510234987699673e-06 4.078583312550739e-05 1.0810691854010394e-06 +17.780990080764077 -0.30234760004695527 2.3510092480372137e-06 4.093605662915325e-05 1.0856239951653742e-06 +17.819728600675525 -0.3023476050132046 2.350994997948826e-06 4.108752129797362e-05 1.0901932643178255e-06 +17.85846712051112 -0.3023476099761808 2.3509807486696114e-06 4.124019687900774e-05 1.0947770583352587e-06 +17.897205640270442 -0.30234761493601137 2.3509665002133206e-06 4.139405475141366e-05 1.0993751522099976e-06 +17.935944159953046 -0.3023476198928186 2.3509522528986232e-06 4.1549066877564946e-05 1.103987648024469e-06 +17.974682679558516 -0.3023476248467198 2.3509380066691385e-06 4.170520868850908e-05 1.1086139987041233e-06 +18.013421199086483 -0.30234762979782753 2.3509237616535053e-06 4.186245391889468e-05 1.1132543398028236e-06 +18.05215971853655 -0.30234763474625154 2.3509095180602455e-06 4.2020776880522e-05 1.1179086266608874e-06 +18.09089823790834 -0.3023476396920954 2.350895275937732e-06 4.218015513176443e-05 1.1225766429184281e-06 +18.129636757201535 -0.30234764463545943 2.350881035445503e-06 4.234056430152933e-05 1.1272582237527168e-06 +18.168375276415773 -0.30234764957643995 2.350866796527872e-06 4.2501983611816744e-05 1.1319535982050088e-06 +18.20711379555072 -0.3023476545151304 2.35085255927977e-06 4.266438999826906e-05 1.1366624442916675e-06 +18.24585231460607 -0.3023476594516188 2.3508383239352745e-06 4.2827764997781534e-05 1.1413844997206251e-06 +18.28459083358151 -0.3023476643859917 2.350824090456106e-06 4.2992085592164105e-05 1.1461199436680368e-06 +18.323329352476755 -0.3023476693183303 2.350809858964094e-06 4.3157335581493685e-05 1.150868372022759e-06 +18.362067871291522 -0.30234767424871495 2.350795629608823e-06 4.332349354303851e-05 1.155630228890158e-06 +18.400806390025537 -0.3023476791772208 2.3507814021139896e-06 4.3490542720990624e-05 1.1604048591883798e-06 +18.439544908678535 -0.3023476841039205 2.3507671768919066e-06 4.3658466707746466e-05 1.1651926925771744e-06 +18.47828342725027 -0.3023476890288858 2.350752954043223e-06 4.382724592906934e-05 1.1699932242177142e-06 +18.517021945740492 -0.3023476939521828 2.3507387333508622e-06 4.3996866425074946e-05 1.1748066950520711e-06 +18.55576046414897 -0.30234769887387675 2.3507245149449885e-06 4.4167312270271665e-05 1.1796326187389141e-06 +18.59449898247547 -0.3023477037940303 2.350710298980054e-06 4.433856747204447e-05 1.1844713288145185e-06 +18.63323750071978 -0.302347708712703 2.3506960854293897e-06 4.451061777086369e-05 1.1893226355062282e-06 +18.6719760188817 -0.3023477136299525 2.3506818743420792e-06 4.46834491591598e-05 1.1941866243706486e-06 +18.710714536961007 -0.30234771854583437 2.35066766572243e-06 4.4857048756786654e-05 1.1990629117465597e-06 +18.749453054957527 -0.30234772346040234 2.350653459853608e-06 4.503140071757433e-05 1.2039515196019554e-06 +18.788191572871053 -0.3023477283737063 2.3506392563467042e-06 4.520649528014576e-05 1.208852618269803e-06 +18.82693009070142 -0.30234773328579695 2.350625055678813e-06 4.538231810551353e-05 1.213766006725853e-06 +18.865668608448438 -0.3023477381967204 2.3506108575496933e-06 4.555885822340499e-05 1.2186914014032797e-06 +18.904407126111945 -0.3023477431065226 2.350596662131311e-06 4.5736104077510245e-05 1.2236291777346263e-06 +18.943145643691793 -0.302347748015247 2.3505824692979458e-06 4.591404462461238e-05 1.2285788983493802e-06 +18.981884161187804 -0.3023477529229359 2.350568279476749e-06 4.609266924213333e-05 1.2335407364246632e-06 +19.020622678599842 -0.3023477578296294 2.350554092246004e-06 4.62719669664031e-05 1.238514446854215e-06 +19.059361195927757 -0.3023477627353662 2.3505399078698836e-06 4.6451929126675486e-05 1.2435002027994523e-06 +19.09809971317141 -0.3023477676401838 2.3505257263731906e-06 4.663254473841008e-05 1.248498261796719e-06 +19.13683823033066 -0.3023477725441184 2.350511547713334e-06 4.6813804096696434e-05 1.2535075069142987e-06 +19.175576747405394 -0.30234777744720415 2.3504973718183906e-06 4.699570026974351e-05 1.2585288281569887e-06 +19.21431526439547 -0.30234778234947374 2.3504831989330343e-06 4.717822297966645e-05 1.2635620759246682e-06 +19.253053781300764 -0.3023477872509593 2.350469028878925e-06 4.736136533311209e-05 1.2686068684902001e-06 +19.29179229812118 -0.30234779215169233 2.350454861771408e-06 4.754511647978975e-05 1.2736632128954088e-06 +19.330530814856594 -0.3023477970517012 2.3504406976957623e-06 4.772947097452888e-05 1.2787316167325762e-06 +19.3692693315069 -0.30234780195101457 2.350426536501694e-06 4.791442043904721e-05 1.2838113715215709e-06 +19.408007848071982 -0.30234780684965984 2.3504123783074816e-06 4.8099957391415097e-05 1.288902737852059e-06 +19.44674636455177 -0.3023478117476622 2.350398223041829e-06 4.828607652884484e-05 1.2940057023928413e-06 +19.485484880946135 -0.30234781664504845 2.3503840708587745e-06 4.847276815250664e-05 1.2991199530038083e-06 +19.524223397255003 -0.3023478215418414 2.3503699215192147e-06 4.866002737831136e-05 1.3042457576146207e-06 +19.562961913478283 -0.3023478264380646 2.3503557752997473e-06 4.884784794968952e-05 1.309382989550424e-06 +19.601700429615875 -0.3023478313337409 2.3503416322265106e-06 4.903622318739299e-05 1.3145314567406385e-06 +19.640438945667718 -0.3023478362288914 2.350327492064042e-06 4.922514730777157e-05 1.319691581386978e-06 +19.67917746163371 -0.3023478411235367 2.350313355037207e-06 4.9414614831865384e-05 1.3248627851160749e-06 +19.717915977513776 -0.30234784601769676 2.350299220880155e-06 4.9604619580186054e-05 1.3300453261318882e-06 +19.756654493307867 -0.3023478509113904 2.3502850899637695e-06 4.9795157789340865e-05 1.3352392104844106e-06 +19.795393009015886 -0.302347855804636 2.3502709620676704e-06 4.99862228014153e-05 1.3404444838003947e-06 +19.834131524637762 -0.30234786069745173 2.350256837279868e-06 5.017780979819805e-05 1.3456606118764513e-06 +19.872870040173446 -0.30234786558985377 2.3502427155869964e-06 5.0369915485298665e-05 1.350888011256198e-06 +19.911608555622855 -0.30234787048185935 2.350228596987695e-06 5.056253250081128e-05 1.356126590752092e-06 +19.95034707098595 -0.3023478753734837 2.3502144813559536e-06 5.075565848714578e-05 1.3613765411418286e-06 +19.989085586262643 -0.3023478802647415 2.350200368887134e-06 5.094928844786296e-05 1.3666374949426888e-06 +20.027824101452904 -0.3023478851556477 2.350186259582066e-06 5.1143418518174044e-05 1.371909161944749e-06 +20.06656261655666 -0.30234789004621593 2.3501721533331047e-06 5.133804436096886e-05 1.3771921689594729e-06 +20.105301131573857 -0.3023478949364601 2.350158050208443e-06 5.153316168237401e-05 1.3824863017137488e-06 +20.144039646504446 -0.3023478998263925 2.3501439501429298e-06 5.1728768068863403e-05 1.3877911597277397e-06 +20.182778161348388 -0.3023479047160257 2.3501298532955344e-06 5.192485851426135e-05 1.3931072512312893e-06 +20.221516676105626 -0.3023479096053714 2.350115759579509e-06 5.212143066107365e-05 1.3984342045332253e-06 +20.260255190776117 -0.3023479144944416 2.3501016689135956e-06 5.231847962697898e-05 1.4037720838054782e-06 +20.298993705359813 -0.30234791938324723 2.35008758138464e-06 5.251600264777949e-05 1.4091208516098374e-06 +20.337732219856676 -0.3023479242717983 2.350073496975965e-06 5.271399795884287e-05 1.4144804982132572e-06 +20.37647073426666 -0.30234792916010494 2.3500594157333522e-06 5.291246213520047e-05 1.4198513123468957e-06 +20.415209248589715 -0.30234793404817756 2.3500453375766515e-06 5.311139066204653e-05 1.425232740617804e-06 +20.453947762825837 -0.30234793893602574 2.3500312625977813e-06 5.331078001748541e-05 1.4306252197793394e-06 +20.492686276974954 -0.30234794382365765 2.3500171905945077e-06 5.351063142239919e-05 1.4360280932884006e-06 +20.53142479103704 -0.30234794871108217 2.3500031219304976e-06 5.371093994239527e-05 1.4414420515538137e-06 +20.570163305012066 -0.30234795359830824 2.349989056384469e-06 5.391170159025003e-05 1.4468668783476179e-06 +20.60890181889999 -0.3023479584853433 2.34997499394362e-06 5.4112915903862416e-05 1.4523025366966985e-06 +20.647640332700796 -0.3023479633721952 2.3499609345718344e-06 5.431458055465385e-05 1.4577490886341634e-06 +20.686378846414435 -0.30234796825887184 2.349946878370898e-06 5.451669128423892e-05 1.4632059735873542e-06 +20.725117360040905 -0.3023479731453803 2.3499328253521147e-06 5.4719246167102255e-05 1.468674106879673e-06 +20.76385587358014 -0.30234797803172603 2.349918775389532e-06 5.4922247534796866e-05 1.4741525197056829e-06 +20.802594387032137 -0.3023479829179177 2.349904728708431e-06 5.5125686688070845e-05 1.47964160112444e-06 +20.84133290039686 -0.30234798780396044 2.3498906849421063e-06 5.532956579666246e-05 1.4851415338671114e-06 +20.88007141367429 -0.30234799268986046 2.3498766445131793e-06 5.553388200130159e-05 1.4906520012615884e-06 +20.918809926864395 -0.30234799757562386 2.3498626070416627e-06 5.573863265438038e-05 1.4961732447679013e-06 +20.95754843996716 -0.30234800246125615 2.3498485728871636e-06 5.594381804554808e-05 1.5017053032386581e-06 +20.99628695298255 -0.3023480073467628 2.3498345417706308e-06 5.614943338753868e-05 1.507248053197342e-06 +21.03502546591056 -0.3023480122321489 2.3498205137696376e-06 5.63554793431176e-05 1.5128012143522004e-06 +21.073763978751153 -0.30234801711742015 2.3498064889677976e-06 5.6561952732289094e-05 1.5183649671686913e-06 +21.112502491504312 -0.3023480220025805 2.3497924671622397e-06 5.6768853462276304e-05 1.523939539034773e-06 +21.151241004170025 -0.3023480268876348 2.3497784486324872e-06 5.697617999556741e-05 1.5295244079553204e-06 +21.18997951674827 -0.3023480317725877 2.3497644331766864e-06 5.7183929140739775e-05 1.5351201456209347e-06 +21.228718029239012 -0.30234803665744364 2.349750420833503e-06 5.739210066565699e-05 1.5407264668885924e-06 +21.267456541642268 -0.302348041542206 2.349736411688926e-06 5.7600693883986575e-05 1.5463431294473554e-06 +21.306195053957982 -0.30234804642687957 2.349722405698518e-06 5.7809706182100814e-05 1.5519702295615623e-06 +21.344933566186164 -0.30234805131146764 2.3497084027093434e-06 5.801913737139092e-05 1.5576084301243154e-06 +21.38367207832679 -0.30234805619597444 2.349694402851495e-06 5.822898445998268e-05 1.5632566244874263e-06 +21.422410590379837 -0.3023480610804032 2.3496804062595694e-06 5.8439247406943755e-05 1.5689155715702569e-06 +21.461149102345303 -0.3023480659647569 2.349666412750991e-06 5.8649926149165125e-05 1.5745852146441036e-06 +21.49988761422317 -0.30234807084903886 2.349652422229648e-06 5.886101942067359e-05 1.5802650458445817e-06 +21.538626126013416 -0.3023480757332531 2.349638434917247e-06 5.907252360820432e-05 1.5859558289177142e-06 +21.577364637716034 -0.30234808061740154 2.349624450698813e-06 5.9284440559242005e-05 1.591656752261208e-06 +21.616103149331025 -0.3023480855014878 2.349610469746321e-06 5.949676771382401e-05 1.597368199127394e-06 +21.65484166085836 -0.3023480903855141 2.3495964918582655e-06 5.9709504727276155e-05 1.6030902146809103e-06 +21.69358017229801 -0.30234809526948414 2.349582516970014e-06 5.9922649459429046e-05 1.6088226164702988e-06 +21.732318683650004 -0.30234810015339936 2.3495685453547557e-06 6.013620254993668e-05 1.6145655144371465e-06 +21.771057194914306 -0.3023481050372629 2.349554576703e-06 6.0350162027184614e-05 1.6203192088059084e-06 +21.809795706090902 -0.3023481099210766 2.349540611181707e-06 6.0564528947543004e-05 1.6260829612958787e-06 +21.8485342171798 -0.30234811480484325 2.3495266489434446e-06 6.07793001147666e-05 1.6318568340806364e-06 +21.88727272818098 -0.3023481196885644 2.349512689664727e-06 6.0994477666402254e-05 1.637641874770906e-06 +21.92601123909443 -0.3023481245722431 2.349498733571196e-06 6.12100569213698e-05 1.6434371729358884e-06 +21.964749749920138 -0.30234812945588124 2.349484780593266e-06 6.142603862129581e-05 1.6492428710993904e-06 +22.00348826065811 -0.30234813433948 2.3494708306518782e-06 6.164242480583786e-05 1.6550586378897694e-06 +22.04222677130832 -0.30234813922304177 2.3494568839122614e-06 6.185921209998134e-05 1.660885352057133e-06 +22.080965281870768 -0.30234814410656813 2.3494429401313518e-06 6.207639968757821e-05 1.6667218752864476e-06 +22.11970379234545 -0.30234814899006135 2.349428999603031e-06 6.229398776351623e-05 1.6725691715432894e-06 +22.158442302732347 -0.3023481538735223 2.349415062244296e-06 6.251197683570046e-05 1.6784268796510476e-06 +22.19718081303146 -0.3023481587569535 2.3494011277356116e-06 6.273036309905598e-05 1.6842950984465828e-06 +22.235919323242786 -0.3023481636403554 2.349387196539736e-06 6.294915020978813e-05 1.6901733337423264e-06 +22.274657833366298 -0.30234816852373075 2.349373268337318e-06 6.316833345628216e-05 1.6960626070885212e-06 +22.31339634340202 -0.3023481734070798 2.349359343343426e-06 6.33879160999829e-05 1.7019615709673115e-06 +22.352134853349916 -0.30234817829040506 2.349345421425406e-06 6.36078940501334e-05 1.7078713434199101e-06 +22.39087336321 -0.30234818317370654 2.3493315025205198e-06 6.382827027065945e-05 1.7137913982433972e-06 +22.429611872982257 -0.3023481880569872 2.349317586847352e-06 6.404904000498359e-05 1.7197220108229152e-06 +22.46835038266669 -0.3023481929402464 2.349303674137026e-06 6.427020768782423e-05 1.7256625558361205e-06 +22.507088892263273 -0.30234819782348654 2.3492897645483647e-06 6.449177011630658e-05 1.7316134970588015e-06 +22.545827401772023 -0.3023482027067082 2.3492758581441883e-06 6.471372727714549e-05 1.7375751998187976e-06 +22.584565911192925 -0.30234820758991304 2.3492619548559555e-06 6.493607757357787e-05 1.743547032524235e-06 +22.623304420525965 -0.3023482124731015 2.3492480545389153e-06 6.515882340092172e-05 1.7495294120003137e-06 +22.66204292977117 -0.3023482173562745 2.3492341574098606e-06 6.538196366617082e-05 1.7555220279502693e-06 +22.700781438928498 -0.30234822223943375 2.349220263352804e-06 6.560549546335663e-05 1.7615246913997429e-06 +22.739519947997955 -0.30234822712257964 2.349206372399052e-06 6.582941975680803e-05 1.7675376771433658e-06 +22.77825845697955 -0.3023482320057133 2.349192484473667e-06 6.60537367702346e-05 1.7735613955845814e-06 +22.816996965873265 -0.30234823688883505 2.3491785996502726e-06 6.627844669453664e-05 1.7795954309837274e-06 +22.8557354746791 -0.3023482417719465 2.3491647179645153e-06 6.650354771921308e-05 1.7856396364097013e-06 +22.89447398339706 -0.30234824665504795 2.349150839373067e-06 6.672904028528336e-05 1.7916945304005185e-06 +22.93321249202713 -0.3023482515381403 2.3491369638719036e-06 6.695492441443635e-05 1.797759405707426e-06 +22.971951000569312 -0.30234825642122404 2.3491230913643996e-06 6.718120006902576e-05 1.803834419934058e-06 +23.0106895090236 -0.30234826130430026 2.3491092220413414e-06 6.740786606550643e-05 1.8099199736642894e-06 +23.049428017389985 -0.3023482661873698 2.3490953557934165e-06 6.763492034219758e-05 1.8160156259408936e-06 +23.088166525668463 -0.30234827107043255 2.3490814926373566e-06 6.786236715702933e-05 1.8221222146491766e-06 +23.126905033859057 -0.3023482759534893 2.349067632531217e-06 6.80902045103085e-05 1.8282383871625113e-06 +23.165643541961735 -0.30234828083654164 2.349053775572245e-06 6.831842885712042e-05 1.8343654412684915e-06 +23.2043820499765 -0.30234828571958894 2.3490399215659423e-06 6.854704416825779e-05 1.8405023651118147e-06 +23.243120557903353 -0.302348290602632 2.3490260707300274e-06 6.877604902896609e-05 1.8466500332887541e-06 +23.281859065742296 -0.3023482954856716 2.3490122230283674e-06 6.900544282713525e-05 1.8528076003367173e-06 +23.320597573493316 -0.30234830036870886 2.348998378358777e-06 6.92352236616798e-05 1.8589761103418128e-06 +23.359336081156417 -0.30234830525174344 2.348984536680913e-06 6.946539345438816e-05 1.8651540522908215e-06 +23.398074588731596 -0.3023483101347754 2.348970698197398e-06 6.96959531836028e-05 1.8713430738614552e-06 +23.436813096218852 -0.3023483150178063 2.348956862859281e-06 6.992690054279811e-05 1.8775417844527137e-06 +23.475551603618168 -0.30234831990083627 2.3489430304500647e-06 7.015823444229764e-05 1.8837510192673585e-06 +23.51429011092957 -0.30234832478386536 2.3489292011694223e-06 7.03899571823828e-05 1.8899706031577325e-06 +23.553028618153025 -0.3023483296668943 2.348915374985764e-06 7.062206677378151e-05 1.896200574840308e-06 +23.59176712528855 -0.30234833454992294 2.3489015519184318e-06 7.08545652374245e-05 1.9024404752895298e-06 +23.630505632336146 -0.30234833943295225 2.3488877319153247e-06 7.108745009884409e-05 1.908691023979388e-06 +23.6692441392958 -0.3023483443159824 2.3488739148658694e-06 7.132072180692768e-05 1.9149521568478414e-06 +23.707982646167505 -0.3023483491990141 2.3488601009759215e-06 7.155437993823708e-05 1.921222971187716e-06 +23.746721152951274 -0.30234835408204674 2.3488462901075777e-06 7.178842617107953e-05 1.9275041075634276e-06 +23.7854596596471 -0.3023483589650811 2.3488324823511703e-06 7.202285937460235e-05 1.933795234506499e-06 +23.824198166254984 -0.30234836384811803 2.348818677700472e-06 7.225767774727492e-05 1.940097583575544e-06 +23.862936672774914 -0.302348368731157 2.3488048761385375e-06 7.249288426841286e-05 1.9464097551278444e-06 +23.901675179206897 -0.30234837361419914 2.348791077657796e-06 7.272847520302316e-05 1.952732115221489e-06 +23.940413685550926 -0.30234837849724383 2.348777282284431e-06 7.296445379202092e-05 1.95906464869098e-06 +23.97915219180701 -0.302348383380292 2.3487634898514615e-06 7.320081680664666e-05 1.965407495697188e-06 +24.017890697975133 -0.30234838826334337 2.348749700537697e-06 7.343756762365764e-05 1.971760467292568e-06 +24.0566292040553 -0.3023483931463988 2.348735914262138e-06 7.3674703482269e-05 1.9781241822460758e-06 +24.09536771004752 -0.3023483980294579 2.348722131189076e-06 7.39122251049941e-05 1.9844983335283648e-06 +24.13410621595178 -0.3023484029125215 2.348708351062502e-06 7.415013141706648e-05 1.990882061422064e-06 +24.172844721768076 -0.30234840779558897 2.3486945740847042e-06 7.438842488464025e-05 1.9972763882470357e-06 +24.211583227496412 -0.30234841267866136 2.348680800024244e-06 7.462710279878344e-05 2.0036812655355007e-06 +24.250321733136786 -0.30234841756173875 2.348667029229964e-06 7.48661653578086e-05 2.0100958947195187e-06 +24.289060238689196 -0.30234842244482046 2.3486532613092994e-06 7.510561489325726e-05 2.0165209940548913e-06 +24.327798744153657 -0.30234842732790757 2.348639496637497e-06 7.534544938572388e-05 2.022956575554965e-06 +24.366537249530133 -0.30234843221099994 2.3486257350086077e-06 7.55856686397074e-05 2.0294021938423766e-06 +24.405275754818646 -0.30234843709409803 2.348611976287794e-06 7.58262724922517e-05 2.0358580337174627e-06 +24.444014260019195 -0.3023484419772017 2.348598220807913e-06 7.606726249845189e-05 2.0423242135052217e-06 +24.482752765131785 -0.302348446860311 2.348584468318279e-06 7.63086358008828e-05 2.0488002241579777e-06 +24.521491270156396 -0.3023484517434261 2.3485707189016565e-06 7.655039543815312e-05 2.055287051672693e-06 +24.56022977509304 -0.30234845662654775 2.348556972591215e-06 7.679253846446374e-05 2.0617840796755057e-06 +24.598968279941708 -0.3023484615096748 2.3485432293135124e-06 7.703506773670047e-05 2.068291345077789e-06 +24.63770678470241 -0.3023484663928089 2.348529489073315e-06 7.727798042831919e-05 2.074808840065113e-06 +24.67644528937514 -0.3023484712759494 2.34851575192961e-06 7.752127704806562e-05 2.0813364400360196e-06 +24.715183793959888 -0.3023484761590964 2.34850201781337e-06 7.776495838678413e-05 2.0878746362270458e-06 +24.753922298456665 -0.3023484810422496 2.3484882868400145e-06 7.800902660570812e-05 2.094422732281178e-06 +24.792660802865477 -0.3023484859254099 2.348474558864155e-06 7.825347731890071e-05 2.1009812616360857e-06 +24.8313993071863 -0.3023484908085777 2.3484608339451733e-06 7.849831096381467e-05 2.107549889096154e-06 +24.870137811419145 -0.30234849569175215 2.348447112181069e-06 7.874352988781456e-05 2.1141289273495466e-06 +24.908876315564022 -0.3023485005749333 2.348433393415025e-06 7.898913423565913e-05 2.1207181677458157e-06 +24.94761481962092 -0.3023485054581221 2.348419677704252e-06 7.923512121928757e-05 2.12731763308294e-06 +24.98635332358983 -0.3023485103413177 2.3484059651153237e-06 7.948149348684806e-05 2.1339274427168404e-06 +25.025091827470767 -0.30234851522452116 2.348392255550899e-06 7.972824962645193e-05 2.1405475634610446e-06 +25.06383033126372 -0.3023485201077318 2.3483785489371796e-06 7.997538862693721e-05 2.1471775473219758e-06 +25.1025688349687 -0.30234852499095005 2.348364845561031e-06 8.02229129018583e-05 2.1538178969312066e-06 +25.141307338585687 -0.30234852987417565 2.3483511451979804e-06 8.047082055303438e-05 2.160468820241239e-06 +25.1800458421147 -0.3023485347574092 2.348337447878038e-06 8.071911236638129e-05 2.1671298491259882e-06 +25.21878434555573 -0.30234853964065 2.3483237536363256e-06 8.096778875143173e-05 2.1738006461528757e-06 +25.25752284890877 -0.3023485445238989 2.348310062312141e-06 8.121684862583328e-05 2.1804822801270704e-06 +25.29626135217383 -0.3023485494071557 2.348296374224647e-06 8.146629130582508e-05 2.1871737966936245e-06 +25.334999855350897 -0.30234855429042035 2.348282689122496e-06 8.171611878335177e-05 2.1938762042115507e-06 +25.373738358439994 -0.30234855917369313 2.3482690070329567e-06 8.196632880503938e-05 2.2005881030427276e-06 +25.4124768614411 -0.30234856405697375 2.3482553281249926e-06 8.221692295189266e-05 2.2073106997516473e-06 +25.451215364354216 -0.30234856894026235 2.3482416521777297e-06 8.246790202834303e-05 2.2140434518552806e-06 +25.489953867179345 -0.3023485738235591 2.3482279794131265e-06 8.271926316478374e-05 2.2207865782691072e-06 +25.5286923699165 -0.30234857870686377 2.3482143096313465e-06 8.297100995878449e-05 2.227539572434557e-06 +25.56743087256565 -0.30234858359017686 2.3482006429075435e-06 8.322313957801684e-05 2.23430289388744e-06 +25.606169375126818 -0.30234858847349805 2.34818697914243e-06 8.347565281954061e-05 2.2410763433936893e-06 +25.6449078776 -0.3023485933568281 2.348173318496657e-06 8.37285474185529e-05 2.2478602924757933e-06 +25.68364637998519 -0.30234859824016574 2.3481596609807053e-06 8.398182878230599e-05 2.254654325976857e-06 +25.722384882282388 -0.3023486031235123 2.3481460065314025e-06 8.423549173219933e-05 2.2614591471390104e-06 +25.7611233844916 -0.30234860800686736 2.3481323550295824e-06 8.44895368327073e-05 2.268273557153609e-06 +25.799861886612824 -0.30234861289023024 2.3481187067089326e-06 8.474396830585138e-05 2.2750985411273655e-06 +25.838600388646064 -0.30234861777360184 2.3481050612741634e-06 8.499878212276186e-05 2.2819331994385525e-06 +25.877338890591297 -0.30234862265698176 2.3480914190670477e-06 8.525397888466163e-05 2.288778938869929e-06 +25.91607739244854 -0.30234862754037023 2.3480777798413803e-06 8.550955994070708e-05 2.2956339914635323e-06 +25.954815894217802 -0.30234863242376747 2.348064143620519e-06 8.576552258259061e-05 2.302500070741321e-06 +25.99355439589906 -0.30234863730717304 2.3480505105735513e-06 8.602187064572652e-05 2.3093761001437055e-06 +26.03229289749234 -0.3023486421905872 2.3480368805119515e-06 8.627860183186111e-05 2.31626240151443e-06 +26.071031398997604 -0.30234864707401027 2.3480232534763046e-06 8.653571415220128e-05 2.323158899997433e-06 +26.109769900414896 -0.3023486519574417 2.3480096295576483e-06 8.679321202758143e-05 2.330065377128503e-06 +26.14850840174419 -0.30234865684088175 2.347996008757077e-06 8.705109229483458e-05 2.3369827522880483e-06 +26.187246902985493 -0.3023486617243302 2.3479823908891488e-06 8.730935681355239e-05 2.343909656163663e-06 +26.225985404138793 -0.3023486666077882 2.3479687760712952e-06 8.756800171281423e-05 2.3508469760065884e-06 +26.26472390520409 -0.30234867149125405 2.3479551643639203e-06 8.782703300149461e-05 2.357794723211197e-06 +26.30346240618141 -0.30234867637472906 2.347941555738066e-06 8.808644635909022e-05 2.364752791586825e-06 +26.342200907070726 -0.3023486812582124 2.3479279501385623e-06 8.834624302748836e-05 2.3717207453855807e-06 +26.380939407872052 -0.30234868614170474 2.3479143476145445e-06 8.86064235987551e-05 2.3786997720475094e-06 +26.419677908585378 -0.30234869102520595 2.347900748049102e-06 8.886698602159105e-05 2.385688298431763e-06 +26.458416409210702 -0.3023486959087157 2.3478871516476982e-06 8.912793209102496e-05 2.3926868503019706e-06 +26.49715490974804 -0.30234870079223425 2.3478735582925224e-06 8.938926133150065e-05 2.399696043394272e-06 +26.53589341019738 -0.30234870567576144 2.3478599680297216e-06 8.965097463773355e-05 2.4067150372655795e-06 +26.574631910558715 -0.3023487105592977 2.347846380682914e-06 8.991306945980468e-05 2.41374477158228e-06 +26.613370410832054 -0.30234871544284253 2.3478327964137224e-06 9.017554857028186e-05 2.420784239951939e-06 +26.652108911017404 -0.30234872032639626 2.347819215274759e-06 9.043841058387878e-05 2.427834552363877e-06 +26.690847411114742 -0.3023487252099591 2.3478056371040565e-06 9.070165489526533e-05 2.4348946444607027e-06 +26.729585911124097 -0.30234873009353 2.347792062102515e-06 9.09652849057665e-05 2.441965376875356e-06 +26.768324411045445 -0.30234873497711034 2.3477784900047403e-06 9.122929458417799e-05 2.449045668078149e-06 +26.807062910878795 -0.3023487398606995 2.3477649210723103e-06 9.149368866368357e-05 2.4561366676337727e-06 +26.845801410624148 -0.30234874474429735 2.347751355167306e-06 9.175846601679458e-05 2.463238063425583e-06 +26.88453991028149 -0.30234874962790403 2.3477377923581377e-06 9.202362591479198e-05 2.470349194414618e-06 +26.923278409850848 -0.30234875451151927 2.347724232534668e-06 9.228917046399264e-05 2.4774705704306474e-06 +26.962016909332203 -0.3023487593951437 2.3477106756904533e-06 9.255509639295358e-05 2.4846025079716753e-06 +27.000755408725553 -0.30234876427877694 2.347697121980593e-06 9.282140547547664e-05 2.491744547283242e-06 +27.039493908030902 -0.30234876916241876 2.3476835713703704e-06 9.30880991865605e-05 2.4988969568519083e-06 +27.078232407248255 -0.3023487740460698 2.347670023770263e-06 9.335517366164323e-05 2.5060596556255557e-06 +27.116970906377606 -0.3023487789297294 2.3476564791811356e-06 9.362263278547253e-05 2.513232201815832e-06 +27.155709405418957 -0.30234878381339786 2.3476429376634047e-06 9.389047368112275e-05 2.5204149233613392e-06 +27.194447904372304 -0.30234878869707515 2.3476293993203726e-06 9.415869994687749e-05 2.52760807017608e-06 +27.233186403237653 -0.3023487935807612 2.347615863872984e-06 9.44273076743574e-05 2.534811614078599e-06 +27.27192490201499 -0.3023487984644562 2.3476023314640117e-06 9.469629815666506e-05 2.542025032359061e-06 +27.310663400704335 -0.30234880334815983 2.347588802185946e-06 9.496567269066014e-05 2.5492490797459158e-06 +27.34940189930568 -0.30234880823187266 2.347575275905072e-06 9.523542854093819e-05 2.5564830164623426e-06 +27.38814039781901 -0.3023488131155939 2.3475617527238946e-06 9.550556852622415e-05 2.563727043573111e-06 +27.426878896244354 -0.30234881799932434 2.347548232599862e-06 9.577609161661315e-05 2.5709818346021417e-06 +27.465617394581688 -0.30234882288306336 2.3475347155585947e-06 9.604699822771763e-05 2.5782467287806084e-06 +27.504355892831008 -0.3023488277668112 2.3475212015020607e-06 9.631828649536451e-05 2.5855214005195376e-06 +27.543094390992337 -0.30234883265056817 2.347507690505089e-06 9.658995654445133e-05 2.5928067673578092e-06 +27.581832889065662 -0.3023488375343337 2.3474941825773604e-06 9.686201120411268e-05 2.6001022436953845e-06 +27.620571387050983 -0.3023488424181081 2.34748067763506e-06 9.713444875599862e-05 2.6074079605916397e-06 +27.659309884948293 -0.3023488473018911 2.347467175778132e-06 9.740726988584587e-05 2.614723889132565e-06 +27.698048382757612 -0.3023488521856829 2.347453677014008e-06 9.76804730498247e-05 2.6220498143199774e-06 +27.736786880478917 -0.3023488570694833 2.347440181139149e-06 9.795406152112055e-05 2.629385973776276e-06 +27.775525378112214 -0.3023488619532935 2.347426688376704e-06 9.822802708659003e-05 2.6367326191517637e-06 +27.814263875657513 -0.3023488668371113 2.34741319881634e-06 9.85023811788549e-05 2.6440897640083826e-06 +27.853002373114812 -0.3023488717209384 2.347399712207797e-06 9.877711647297529e-05 2.6514566836694326e-06 +27.891740870484096 -0.3023488766047742 2.3473862286552263e-06 9.905223442358147e-05 2.6588333507371655e-06 +27.930479367765383 -0.30234888148861866 2.3473727481775135e-06 9.932773612627698e-05 2.6662209605286513e-06 +27.969217864958647 -0.30234888637247176 2.3473592707149865e-06 9.960362101552294e-05 2.6736187540393093e-06 +28.007956362063926 -0.3023488912563344 2.3473457963020702e-06 9.987988501257817e-05 2.681026503224926e-06 +28.046694859081192 -0.302348896140205 2.3473323248853585e-06 0.00010015653656350117 2.688444643898007e-06 +28.08543335601045 -0.3023489010240843 2.3473188565801906e-06 0.00010043356910449098 2.6958728742492013e-06 +28.12417185285171 -0.30234890590797286 2.3473053913037737e-06 0.00010071098330516344 2.7033113937775387e-06 +28.16291034960495 -0.30234891079186976 2.347291929150261e-06 0.00010098878228476191 2.710760092827142e-06 +28.20164884627019 -0.30234891567577526 2.3472784698542866e-06 0.00010126696542949891 2.7182189604834994e-06 +28.240387342847423 -0.3023489205596894 2.3472650136931986e-06 0.00010154552913777075 2.725688240616191e-06 +28.27912583933665 -0.30234892544361264 2.3472515606919874e-06 0.00010182447565776762 2.7331676415357193e-06 +28.31786433573787 -0.30234893032754406 2.34723811058369e-06 0.00010210380675798639 2.740657229874938e-06 +28.356602832051085 -0.30234893521148454 2.347224663623227e-06 0.0001023835204113683 2.748156783071683e-06 +28.39534132827628 -0.3023489400954339 2.347211219641341e-06 0.00010266361492663029 2.755667181991625e-06 +28.43407982441348 -0.30234894497939113 2.3471977786506157e-06 0.00010294409586468894 2.7631871740952564e-06 +28.47281832046267 -0.30234894986335764 2.3471843409288658e-06 0.00010322495577237674 2.770717988063922e-06 +28.511556816423848 -0.30234895474733264 2.3471709060369025e-06 0.00010350620076105727 2.7782581836142685e-06 +28.55029531229703 -0.302348959631316 2.347157474316005e-06 0.00010378782914769754 2.785809520259855e-06 +28.589033808082185 -0.30234896451530857 2.3471440455925774e-06 0.00010406983858353457 2.7933707049808847e-06 +28.627772303779345 -0.3023489693993095 2.3471306198841755e-06 0.00010435223132862134 2.800941581349988e-06 +28.666510799388476 -0.3023489742833189 2.347117197262045e-06 0.00010463500775776111 2.8085235003442698e-06 +28.705249294909624 -0.3023489791673369 2.3471037776819792e-06 0.00010491816747523396 2.816115226912823e-06 +28.74398779034276 -0.30234898405136373 2.3470903611626287e-06 0.00010520170776942637 2.8237172603809307e-06 +28.78272628568788 -0.30234898893539874 2.3470769476973833e-06 0.00010548563364993867 2.8313289085876458e-06 +28.82146478094499 -0.3023489938194422 2.347063537168297e-06 0.00010576994169591443 2.8389515294301764e-06 +28.86020327611409 -0.30234899870349463 2.347050129748359e-06 0.00010605463213604514 2.8465842643179987e-06 +28.898941771195176 -0.3023490035875555 2.3470367254088317e-06 0.00010633970690138873 2.8542267009412497e-06 +28.93768026618826 -0.30234900847162494 2.347023324086814e-06 0.00010662516196275158 2.861880395837736e-06 +28.976418761093335 -0.3023490133557027 2.347009925729152e-06 0.0001069110015875614 2.869543720783591e-06 +29.015157255910385 -0.30234901823978916 2.346996530595403e-06 0.00010719722342796879 2.877217009604432e-06 +29.05389575063944 -0.30234902312388384 2.3469831383717693e-06 0.00010748382978427626 2.8849004318069133e-06 +29.092634245280482 -0.3023490280079871 2.346969749336634e-06 0.00010777081840830439 2.8925944423856185e-06 +29.131372739833512 -0.30234903289209913 2.346956363078262e-06 0.00010805818758054134 2.9002985090928136e-06 +29.17011123429853 -0.30234903777621974 2.3469429800920708e-06 0.00010834594182960516 2.9080128653829706e-06 +29.208849728675528 -0.3023490426603484 2.3469296000435944e-06 0.0001086340781801038 2.9157373918396588e-06 +29.247588222964538 -0.302349047544486 2.3469162230856753e-06 0.00010892259558130873 2.9234719798803516e-06 +29.286326717165515 -0.30234905242863175 2.34690284915038e-06 0.0001092114979991468 2.9312171019193176e-06 +29.325065211278492 -0.30234905731278566 2.346889478288537e-06 0.00010950078322943063 2.938972209184372e-06 +29.36380370530345 -0.3023490621969484 2.3468761105103038e-06 0.00010979045066550091 2.9467378133675017e-06 +29.402542199240393 -0.30234906708111925 2.346862745682997e-06 0.0001100805031943542 2.95451395997152e-06 +29.441280693089332 -0.30234907196529875 2.3468493837692497e-06 0.00011037093607974879 2.9622992423332185e-06 +29.480019186850257 -0.30234907684948653 2.346836025115758e-06 0.00011066175171399298 2.970095096391703e-06 +29.51875768052317 -0.30234908173368275 2.3468226694835166e-06 0.0001109529509088273 2.9779018512888657e-06 +29.557496174108074 -0.3023490866178873 2.3468093168716783e-06 0.00011124453323006467 2.9857177873572276e-06 +29.596234667604968 -0.30234909150210004 2.346795967207219e-06 0.0001115364991271177 2.9935445129645998e-06 +29.63497316101384 -0.3023490963863216 2.3467826206905823e-06 0.00011182884538796337 3.0013814264848014e-06 +29.6737116543347 -0.302349101270551 2.346769277249806e-06 0.00011212157676355305 3.009228798985379e-06 +29.71245014756755 -0.30234910615478877 2.3467559366938733e-06 0.00011241469044876843 3.017086276010469e-06 +29.75118864071239 -0.30234911103903517 2.346742599350334e-06 0.00011270818664887517 3.0249532561478476e-06 +29.789927133769208 -0.30234911592328956 2.3467292648953437e-06 0.0001130020656829703 3.0328312646215277e-06 +29.828665626738022 -0.30234912080755233 2.3467159336316536e-06 0.00011329632794592967 3.0407193587892205e-06 +29.86740411961882 -0.3023491256918233 2.346702605282678e-06 0.00011359097283974122 3.0486173196106567e-06 +29.906142612411593 -0.30234913057610296 2.346689279971097e-06 0.00011388599940269236 3.056525629563178e-06 +29.944881105116366 -0.3023491354603902 2.3466759577422086e-06 0.00011418141088416565 3.064444110404983e-06 +29.983619597733117 -0.3023491403446863 2.3466626385733673e-06 0.00011447720397973636 3.0723728265082934e-06 +30.02235809026186 -0.30234914522899053 2.3466493223814237e-06 0.0001147733795869324 3.0803116855591585e-06 +30.06109658270259 -0.3023491501133025 2.346636009405847e-06 0.00011506994095359791 3.0882612180010396e-06 +30.099835075055296 -0.30234915499762327 2.3466226992987447e-06 0.00011536688147682599 3.0962198486601763e-06 +30.138573567319998 -0.30234915988195205 2.3466093922868137e-06 0.00011566420649954076 3.1041899676807214e-06 +30.17731205949667 -0.30234916476628876 2.3465960883011074e-06 0.00011596191517832895 3.112169612366583e-06 +30.216050551585347 -0.3023491696506339 2.346582787402547e-06 0.00011626000499187428 3.1201597190329846e-06 +30.254789043585987 -0.3023491745349873 2.346569489516034e-06 0.00011655847764761245 3.128159713047605e-06 +30.293527535498633 -0.3023491794193485 2.3465561946122102e-06 0.0001168573350064258 3.1361699578041887e-06 +30.332266027323254 -0.3023491843037182 2.346542902768628e-06 0.00011715657333704063 3.1441912980627206e-06 +30.371004519059852 -0.30234918918809583 2.3465296139652665e-06 0.00011745619537616571 3.1522213742558873e-06 +30.409743010708446 -0.30234919407248184 2.346516328220927e-06 0.0001177561997065446 3.160262864271847e-06 +30.448481502269026 -0.3023491989568759 2.346503045507227e-06 0.00011805658676973866 3.168313722441623e-06 +30.487219993741576 -0.30234920384127767 2.3464897658002767e-06 0.00011835735877297887 3.1763753933642083e-06 +30.525958485126136 -0.3023492087256877 2.3464764892270383e-06 0.00011865851130418085 3.184447333883471e-06 +30.56469697642266 -0.3023492136101058 2.3464632156604815e-06 0.00011896004852866322 3.192529010502106e-06 +30.60343546763115 -0.3023492184945322 2.3464499450429767e-06 0.00011926196721608817 3.2006210150680223e-06 +30.642173958751663 -0.30234922337896664 2.3464366775425827e-06 0.00011956426858575021 3.2087231877137953e-06 +30.68091244978413 -0.3023492282634091 2.346423413072892e-06 0.0001198669525386333 3.2168358143268255e-06 +30.719650940728588 -0.30234923314785955 2.346410151662897e-06 0.00012017001891186513 3.224957769769518e-06 +30.758389431585037 -0.3023492380323178 2.346396893230933e-06 0.00012047347083906597 3.2330911445654543e-06 +30.79712792235346 -0.3023492429167843 2.346383637951503e-06 0.00012077730321586706 3.241234196165965e-06 +30.835866413033877 -0.3023492478012584 2.3463703854949003e-06 0.00012108151981015992 3.249387326794723e-06 +30.874604903626267 -0.3023492526857408 2.3463571362481163e-06 0.00012138611941852678 3.257550737914335e-06 +30.913343394130642 -0.3023492575702316 2.346343890002993e-06 0.00012169109816588959 3.2657246847007644e-06 +30.952081884547 -0.30234926245473 2.3463306467355175e-06 0.00012199646278166229 3.273908409712355e-06 +30.990820374875334 -0.302349267339236 2.346317406534761e-06 0.0001223022105586655 3.282102252088129e-06 +31.029558865115668 -0.30234927222375046 2.346304169431121e-06 0.00012260833988842924 3.2903067125936073e-06 +31.068297355267966 -0.30234927710827236 2.3462909353210544e-06 0.0001229148538687076 3.2985213374898595e-06 +31.107035845332252 -0.302349281992803 2.3462777041957805e-06 0.00012322174673300176 3.306745764810868e-06 +31.145774335308523 -0.3023492868773406 2.346264476162888e-06 0.00012352902741905915 3.3149804277964145e-06 +31.18451282519676 -0.3023492917618867 2.346251251227384e-06 0.00012383668744170276 3.323225914286226e-06 +31.223251314997004 -0.3023492966464403 2.3462380291958487e-06 0.00012414473306646744 3.3314808293927976e-06 +31.261989804709213 -0.30234930153100187 2.346224810356971e-06 0.0001244531602122124 3.3397462066301964e-06 +31.300728294333403 -0.30234930641557145 2.3462115943922876e-06 0.00012476196830314308 3.348022208722168e-06 +31.33946678386958 -0.30234931130014864 2.3461983815359936e-06 0.0001250711618973405 3.3563077583538357e-06 +31.37820527331774 -0.3023493161847337 2.3461851717266685e-06 0.00012538073772765142 3.3646039988306545e-06 +31.416943762677874 -0.3023493210693267 2.3461719649864546e-06 0.00012569069576732645 3.3729106320990507e-06 +31.455682251949998 -0.30234932595392755 2.346158761236428e-06 0.0001260010372490217 3.3812268031904353e-06 +31.494420741134086 -0.30234933083853616 2.346145560524324e-06 0.00012631176001845197 3.3895538158087877e-06 +31.533159230230172 -0.3023493357231526 2.3461323627587964e-06 0.00012662286679421738 3.3978906300366683e-06 +31.57189771923824 -0.3023493406077768 2.3461191680633923e-06 0.0001269343570976857 3.406237584499603e-06 +31.610636208158276 -0.3023493454924088 2.3461059764280815e-06 0.0001272462276276564 3.414594635619708e-06 +31.649374696990293 -0.3023493503770482 2.3460927879259896e-06 0.0001275584846812178 3.422961998376879e-06 +31.688113185734288 -0.30234935526169576 2.3460796022786355e-06 0.00012787112259215314 3.4313396458065136e-06 +31.726851674390282 -0.3023493601463507 2.3460664198228007e-06 0.00012818414351354796 3.4397277562541236e-06 +31.765590162958244 -0.3023493650310137 2.3460532403091912e-06 0.00012849754669945764 3.44812544757427e-06 +31.804328651438187 -0.30234936991568406 2.346040063908165e-06 0.00012881133421913758 3.456533294846503e-06 +31.843067139830094 -0.3023493748003628 2.346026890476867e-06 0.00012912550038690228 3.4649521610637116e-06 +31.881805628133993 -0.30234937968504866 2.3460137201494745e-06 0.00012944005275517795 3.4733813134088403e-06 +31.92054411634988 -0.3023493845697422 2.3460005527365383e-06 0.00012975498815813934 3.4818201018575944e-06 +31.95928260447772 -0.3023493894544435 2.3459873884389562e-06 0.00013007030547042376 3.490268726340148e-06 +31.99802109251757 -0.3023493943391521 2.3459742271625726e-06 0.00013038600758733248 3.4987279840655065e-06 +32.036759580469386 -0.30234939922386866 2.3459610688652013e-06 0.00013070209232739452 3.5071973080055146e-06 +32.075498068333175 -0.30234940410859285 2.345947913734377e-06 0.00013101855774682618 3.515677281170532e-06 +32.11423655610895 -0.30234940899332474 2.345934761484693e-06 0.00013133540503562855 3.5241668409116565e-06 +32.15297504379671 -0.3023494138780641 2.3459216123509722e-06 0.00013165263697166807 3.5326666847821523e-06 +32.191713531396445 -0.3023494187628114 2.345908466211777e-06 0.0001319702497402615 3.541177040269914e-06 +32.23045201890814 -0.30234942364756595 2.345895323096934e-06 0.00013228824766295012 3.5496970683935815e-06 +32.269190506331825 -0.3023494285323279 2.345882183035883e-06 0.00013260662922238387 3.5582276744025345e-06 +32.30792899366749 -0.3023494334170976 2.345869046010771e-06 0.00013292539199805535 3.5667690224391353e-06 +32.34666748091514 -0.30234943830187483 2.3458559120703304e-06 0.00013324453709303823 3.5753196813206532e-06 +32.38540596807477 -0.3023494431866595 2.345842781046233e-06 0.00013356406590828713 3.5838803755510984e-06 +32.42414445514636 -0.3023494480714517 2.3458296531999484e-06 0.00013388397774944524 3.592451870909855e-06 +32.46288294212992 -0.30234945295625165 2.345816528235689e-06 0.0001342042701058749 3.601033726532448e-06 +32.50162142902549 -0.3023494578410589 2.3458034063857057e-06 0.00013452494774551855 3.6096249362783473e-06 +32.54035991583302 -0.30234946272587354 2.345790287514236e-06 0.00013484600762116514 3.618227136742223e-06 +32.57909840255254 -0.30234946761069553 2.345777171787142e-06 0.00013516745202203317 3.626839248507231e-06 +32.61783688918403 -0.30234947249552563 2.345764058935098e-06 0.0001354892740301119 3.6354618959213572e-06 +32.656575375727485 -0.3023494773803626 2.345750949175179e-06 0.00013581148273235496 3.644094068750127e-06 +32.69531386218293 -0.302349482265207 2.345737842501245e-06 0.00013613407495152903 3.6527366745366073e-06 +32.73405234855035 -0.3023494871500593 2.3457247386944217e-06 0.00013645704744041565 3.6613897568429984e-06 +32.77279083482973 -0.3023494920349182 2.345711638037495e-06 0.00013678040617434622 3.6700528557138116e-06 +32.811529321021105 -0.30234949691978535 2.3456985404687472e-06 0.00013710414301747764 3.678725650021301e-06 +32.85026780712447 -0.3023495018046594 2.3456854457744353e-06 0.00013742826611477506 3.6874096572567846e-06 +32.889006293139786 -0.302349506689541 2.34567235429867e-06 0.0001377527700939838 3.6961030838029935e-06 +32.927744779067076 -0.30234951157442996 2.34565926577369e-06 0.00013807765762921078 3.7048073224111106e-06 +32.966483264906365 -0.30234951645932623 2.3456461802914342e-06 0.00013840292783228424 3.7135210176657954e-06 +33.00522175065762 -0.30234952134423004 2.3456330977122003e-06 0.0001387285799759585 3.722244755315043e-06 +33.04396023632084 -0.30234952622914074 2.345620018304897e-06 0.00013905461787616505 3.730979498892107e-06 +33.08269872189605 -0.3023495311140591 2.3456069418025664e-06 0.00013938103559908122 3.7397240082468417e-06 +33.12143720738324 -0.3023495359989847 2.3455938683978885e-06 0.00013970783814100664 3.7484788459005604e-06 +33.16017569278239 -0.3023495408839176 2.3455807980080117e-06 0.00014003502043695665 3.757242901195764e-06 +33.19891417809354 -0.3023495457688575 2.34556773068078e-06 0.00014036259020651693 3.7660190581303642e-06 +33.23765266331664 -0.30234955065380514 2.345554666387629e-06 0.0001406905389044202 3.7748040567140896e-06 +33.27639114845171 -0.3023495555387598 2.345541605097761e-06 0.0001410188710433179 3.7835995312020607e-06 +33.31512963349876 -0.3023495604237217 2.34552854686729e-06 0.00014134758723495432 3.7924052595100625e-06 +33.3538681184578 -0.3023495653086909 2.345515491623031e-06 0.00014167668474549512 3.8012213993920123e-06 +33.39260660332882 -0.3023495701936668 2.3455024393346457e-06 0.00014200616926685297 3.810046969498506e-06 +33.43134508811181 -0.3023495750786506 2.345489390141416e-06 0.00014233603090093577 3.818883162112991e-06 +33.47008357280676 -0.3023495799636413 2.3454763439996383e-06 0.00014266627697027045 3.827729753050847e-06 +33.50882205741369 -0.30234958484863944 2.345463300795263e-06 0.00014299690653818542 3.8365858345677915e-06 +33.547560541932604 -0.30234958973364445 2.3454502607568305e-06 0.00014332791865926344 3.845453603502394e-06 +33.5862990263635 -0.30234959461865674 2.3454372237201394e-06 0.0001436593133979139 3.854330041610843e-06 +33.62503751070634 -0.3023495995036763 2.3454241895931416e-06 0.00014399109104510204 3.863217630877866e-06 +33.66377599496118 -0.3023496043887028 2.3454111585905823e-06 0.0001443232520538535 3.872114773486914e-06 +33.70251447912798 -0.3023496092737366 2.3453981306073783e-06 0.00014465579446013203 3.881021906229817e-06 +33.74125296320677 -0.3023496141587772 2.345385105632099e-06 0.00014498872277012313 3.889939697777181e-06 +33.779991447197524 -0.30234961904382524 2.345372083711457e-06 0.00014532202949630376 3.898868040402558e-06 +33.81872993110024 -0.3023496239288803 2.345359064799874e-06 0.00014565572127829297 3.907805953706528e-06 +33.85746841491495 -0.3023496288139425 2.345346048923597e-06 0.0001459897953226054 3.916754131814257e-06 +33.89620689864164 -0.3023496336990115 2.34533303607695e-06 0.00014632425317259715 3.9257124540041395e-06 +33.93494538228028 -0.302349638584088 2.3453200261226587e-06 0.0001466590920814478 3.934681249961626e-06 +33.9736838658309 -0.30234964346917104 2.34530701931256e-06 0.00014699431556475072 3.943659919323957e-06 +34.012422349293495 -0.30234964835426154 2.34529401547893e-06 0.00014732991980662965 3.9526488230634765e-06 +34.05116083266807 -0.30234965323935864 2.3452810147837704e-06 0.000147665908851674 3.961648206587768e-06 +34.08989931595463 -0.3023496581244633 2.3452680169799754e-06 0.00014800227976263878 3.970657540106801e-06 +34.128637799153125 -0.3023496630095744 2.345255022256482e-06 0.00014833903328249229 3.979677153222439e-06 +34.16737628226363 -0.30234966789469264 2.3452420305405754e-06 0.00014867617142252126 3.988706690816105e-06 +34.20611476528609 -0.30234967277981795 2.3452290418660516e-06 0.00014901369041862083 3.997746433188738e-06 +34.24485324822054 -0.30234967766495024 2.3452160562204287e-06 0.00014935159172375868 4.006796770413616e-06 +34.28359173106694 -0.30234968255008937 2.3452030735842114e-06 0.00014968987696073954 4.015857716282305e-06 +34.322330213825325 -0.30234968743523555 2.3451900939368065e-06 0.00015002854375627627 4.024926866667826e-06 +34.36106869649568 -0.3023496923203885 2.345177117437428e-06 0.0001503675953259053 4.034007806166118e-06 +34.39980717907801 -0.3023496972055486 2.3451641438260914e-06 0.00015070702704908298 4.043098440557461e-06 +34.43854566157229 -0.3023497020907157 2.345151173279204e-06 0.00015104684210251538 4.052199750360582e-06 +34.47728414397858 -0.3023497069758893 2.3451382057697876e-06 0.00015138704290860972 4.0613103665893385e-06 +34.51602262629682 -0.30234971186107007 2.3451252412378606e-06 0.00015172762265284147 4.070432277383064e-06 +34.554761108527025 -0.30234971674625755 2.345112279779459e-06 0.00015206858724735322 4.079563917572152e-06 +34.59349959066923 -0.30234972163145185 2.3450993213448857e-06 0.00015240993418980995 4.088705345098451e-06 +34.632238072723396 -0.302349726516653 2.3450863658418815e-06 0.00015275166456840848 4.0978572429470335e-06 +34.67097655468952 -0.3023497314018611 2.3450734134478113e-06 0.00015309377618026698 4.107018815086336e-06 +34.70971503656763 -0.3023497362870761 2.3450604640600537e-06 0.00015343626924604537 4.116191496191444e-06 +34.748453518357714 -0.3023497411722978 2.345047517686218e-06 0.0001537791485105494 4.125373648955886e-06 +34.78719200005975 -0.3023497460575262 2.345034574321642e-06 0.00015412240969660382 4.13456670897516e-06 +34.82593048167378 -0.30234975094276123 2.3450216340564487e-06 0.00015446605485335127 4.143768271289738e-06 +34.86466896319976 -0.30234975582800344 2.3450086967443723e-06 0.00015481007839190702 4.152981375686918e-06 +34.90340744463773 -0.3023497607132522 2.3449957624102935e-06 0.0001551544889833631 4.16220488496494e-06 +34.942145925987674 -0.3023497655985075 2.3449828311432948e-06 0.00015549928119719088 4.1714374632288e-06 +34.98088440724956 -0.30234977048376976 2.3449699028930873e-06 0.00015584445651925448 4.180681436943294e-06 +35.01962288842345 -0.3023497753690391 2.34495697769095e-06 0.0001561900105122908 4.1899348719524465e-06 +35.058361369509285 -0.3023497802543148 2.3449440555512995e-06 0.00015653595006199226 4.199198492813666e-06 +35.09709985050712 -0.3023497851395968 2.344931136361773e-06 0.0001568822754595809 4.208473176079066e-06 +35.1358383314169 -0.3023497900248863 2.344918220169278e-06 0.00015722897781570794 4.217756487970929e-06 +35.17457681223866 -0.30234979491018216 2.344905306966343e-06 0.00015757606562578748 4.227050782500005e-06 +35.21331529297239 -0.30234979979548454 2.3448923968517625e-06 0.00015792353826434791 4.236355883130676e-06 +35.2520537736181 -0.3023498046807935 2.3448794897832795e-06 0.0001582713916234955 4.245669872127199e-06 +35.29079225417577 -0.3023498095661095 2.3448665856956826e-06 0.00015861962697936362 4.254995084545777e-06 +35.329530734645424 -0.30234981445143155 2.3448536845792675e-06 0.00015896824857566399 4.2643295557825176e-06 +35.36826921502702 -0.3023498193367606 2.3448407865569618e-06 0.00015931724990708948 4.273675022704465e-06 +35.407007695320615 -0.3023498242220963 2.344827891499949e-06 0.00015966663274362303 4.283029559071791e-06 +35.44574617552617 -0.3023498291074383 2.3448149994961833e-06 0.0001600164003029633 4.292395639912186e-06 +35.4844846556437 -0.30234983399278714 2.3448021105413e-06 0.00016036655123646557 4.301771241890895e-06 +35.52322313567319 -0.3023498388781426 2.344789224546073e-06 0.00016071708395011986 4.3111567917670595e-06 +35.56196161561464 -0.30234984376350454 2.3447763415589283e-06 0.00016106799818386386 4.320552998710136e-06 +35.60070009546809 -0.30234984864887265 2.344763461665428e-06 0.00016141929874100022 4.329959408434632e-06 +35.639438575233484 -0.302349853534248 2.3447505846912287e-06 0.00016177097694787873 4.339375395575537e-06 +35.67817705491087 -0.3023498584196294 2.3447377107897625e-06 0.0001621230408821993 4.348802239216869e-06 +35.71691553450022 -0.30234986330501734 2.3447248399027395e-06 0.00016247548788092328 4.358238828567924e-06 +35.755654014001514 -0.3023498681904118 2.344711972032952e-06 0.00016282831652575172 4.367685203935145e-06 +35.794392493414804 -0.30234987307581335 2.344699107160633e-06 0.00016318152620162026 4.377142045177774e-06 +35.833130972740065 -0.3023498779612204 2.3446862453406925e-06 0.00016353512391007946 4.38661009790227e-06 +35.87186945197729 -0.3023498828466342 2.344673386433108e-06 0.0001638891006079757 4.396087094906513e-06 +35.91060793112648 -0.3023498877320549 2.344660530664875e-06 0.00016424345931468774 4.405574547494359e-06 +35.94934641018764 -0.3023498926174816 2.3446476779424597e-06 0.00016459820270277813 4.415072905635413e-06 +35.988084889160774 -0.3023498975029149 2.344634828114366e-06 0.00016495332876117997 4.4245802407746585e-06 +36.02682336804587 -0.3023499023883545 2.344621981344336e-06 0.0001653088367102826 4.434098256503504e-06 +36.06556184684293 -0.30234990727380073 2.344609137601515e-06 0.00016566472624513656 4.4436260576629075e-06 +36.10430032555197 -0.3023499121592532 2.344596296801805e-06 0.00016602099988507132 4.453164701656692e-06 +36.143038804172974 -0.3023499170447121 2.3445834591435545e-06 0.00016637765623594102 4.462713222989284e-06 +36.18177728270596 -0.3023499219301772 2.344570624443524e-06 0.00016673469454077906 4.4722714380343865e-06 +36.22051576115088 -0.30234992681564904 2.344557792753319e-06 0.00016709211576455203 4.48184095830041e-06 +36.2592542395078 -0.3023499317011267 2.3445449640771857e-06 0.00016744992122110807 4.491419212921098e-06 +36.29799271777668 -0.30234993658661097 2.344532138355727e-06 0.00016780810955378505 4.501008025579545e-06 +36.33673119595753 -0.3023499414721017 2.344519315815677e-06 0.00016816667716611854 4.510607839946623e-06 +36.37546967405034 -0.3023499463575987 2.34450649618885e-06 0.00016852562946052273 4.520216884938741e-06 +36.414208152055124 -0.302349951243102 2.3444936795574046e-06 0.00016888496482910466 4.52983771414187e-06 +36.452946629971905 -0.30234995612861126 2.344480865986387e-06 0.0001692446840598337 4.539466713538572e-06 +36.49168510780061 -0.30234996101412737 2.3444680553627842e-06 0.00016960478047641775 4.5491065532135325e-06 +36.5304235855413 -0.3023499658996492 2.3444552477938263e-06 0.00016996526703080665 4.558756843195898e-06 +36.56916206319397 -0.3023499707851774 2.3444424432471984e-06 0.00017032613285166654 4.568417892014031e-06 +36.60790054075859 -0.30234997567071203 2.344429641646808e-06 0.00017068738032618468 4.578087474861352e-06 +36.6466390182352 -0.30234998055625273 2.3444168431292366e-06 0.0001710490128062144 4.58776837046792e-06 +36.68537749562375 -0.3023499854417998 2.3444040476319487e-06 0.000171411025444192 4.597458778826265e-06 +36.72411597292428 -0.3023499903273528 2.3443912551197367e-06 0.000171773422794555 4.607159828835665e-06 +36.762854450136786 -0.3023499952129121 2.3443784655939934e-06 0.0001721362032283336 4.616871161990348e-06 +36.801592927261254 -0.30235000009847784 2.3443656790959765e-06 0.0001724993639800265 4.626592083758745e-06 +36.840331404297686 -0.3023500049840497 2.3443528956378754e-06 0.00017286290786613855 4.636323050974951e-06 +36.87906988124608 -0.30235000986962735 2.344340115177652e-06 0.00017322683678072851 4.6460642420443066e-06 +36.91780835810645 -0.30235001475521134 2.344327337687205e-06 0.00017359114577415266 4.6558170558610514e-06 +36.95654683487878 -0.3023500196408015 2.344314563323305e-06 0.00017395583865991663 4.665578772274342e-06 +36.995285311563094 -0.3023500245263976 2.344301791849311e-06 0.00017432091498848718 4.6753507309071434e-06 +37.03402378815937 -0.3023500294120003 2.344289023452978e-06 0.00017468637225596332 4.685133354606345e-06 +37.07276226466761 -0.3023500342976085 2.3442762580303172e-06 0.00017505221448856274 4.69492474084209e-06 +37.1115007410878 -0.30235003918322306 2.3442634956873935e-06 0.00017541843791741543 4.7047272571713684e-06 +37.15023921741999 -0.30235004406884364 2.3442507362025003e-06 0.00017578504471790565 4.714539853008205e-06 +37.188977693664114 -0.3023500489544702 2.3442379798243856e-06 0.00017615203394106172 4.724362838671838e-06 +37.227716169820226 -0.302350053840103 2.3442252265563268e-06 0.00017651940535827796 4.73419571808111e-06 +37.26645464588832 -0.3023500587257418 2.3442124761258978e-06 0.00017688715933524818 4.744039982717158e-06 +37.30519312186834 -0.3023500636113867 2.3441997288309196e-06 0.0001772552951797834 4.753892710701479e-06 +37.343931597760346 -0.30235006849703744 2.3441869844158705e-06 0.0001776238153008397 4.763755893872242e-06 +37.382670073564334 -0.3023500733826945 2.3441742430905366e-06 0.0001779927154456323 4.773629845893044e-06 +37.421408549280265 -0.30235007826835686 2.344161504802205e-06 0.0001783620031107769 4.783512954471238e-06 +37.46014702490817 -0.30235008315402573 2.34414876942816e-06 0.00017873167039001724 4.793407050269948e-06 +37.498885500448054 -0.3023500880397007 2.3441360372181426e-06 0.0001791017186992389 4.803310992309079e-06 +37.53762397589988 -0.3023500929253811 2.3441233078547504e-06 0.00017947215362742387 4.8132251241561006e-06 +37.5763624512637 -0.30235009781106775 2.3441105815421365e-06 0.0001798429700350414 4.823149480749392e-06 +37.61510092653946 -0.3023501026967604 2.3440978583511246e-06 0.00018021416798664393 4.833084231019078e-06 +37.65383940172721 -0.302350107582459 2.344085138056916e-06 0.00018058574808255717 4.84302839159772e-06 +37.69257787682691 -0.3023501124681635 2.3440724207445962e-06 0.00018095771032871448 4.85298367228173e-06 +37.7313163518386 -0.3023501173538738 2.3440597065417757e-06 0.00018133005557409565 4.862948222339792e-06 +37.770054826762234 -0.3023501222395897 2.3440469952551566e-06 0.00018170278751499644 4.872924064994742e-06 +37.80879330159782 -0.3023501271253118 2.3440342870329258e-06 0.00018207589921294558 4.882908527194703e-06 +37.84753177634541 -0.3023501320110396 2.3440215818549834e-06 0.00018244939340520013 4.892904554054737e-06 +37.88627025100494 -0.3023501368967734 2.3440088796361125e-06 0.0001828232690163409 4.902909246544189e-06 +37.925008725576454 -0.3023501417825128 2.3439961803160577e-06 0.0001831975305511033 4.912926083775182e-06 +37.96374720005992 -0.30235014666825866 2.3439834841265253e-06 0.0001835721698569412 4.922951586562483e-06 +38.00248567445535 -0.3023501515540097 2.3439707909414327e-06 0.00018394719739923257 4.9329880253628335e-06 +38.04122414876275 -0.30235015643976676 2.3439581007528373e-06 0.00018432260343168483 4.943033782236386e-06 +38.07996262298213 -0.3023501613255296 2.3439454135265026e-06 0.00018469839375528216 4.95308991380274e-06 +38.11870109711346 -0.30235016621129795 2.343932729375552e-06 0.00018507456762582148 4.9631563899258615e-06 +38.15743957115676 -0.3023501710970724 2.3439200481403453e-06 0.0001854511222454575 4.9732329144982365e-06 +38.19617804511201 -0.3023501759828526 2.3439073700382613e-06 0.00018582805955567037 4.983320621680679e-06 +38.23491651897925 -0.30235018086863835 2.3438946947772084e-06 0.00018620538126491056 4.993416311655851e-06 +38.27365499275844 -0.30235018575442996 2.343882022684234e-06 0.0001865830843899575 5.003523655991279e-06 +38.312393466449606 -0.3023501906402272 2.343869353487468e-06 0.00018696117023644931 5.013641017758656e-06 +38.351131940052724 -0.30235019552603043 2.343856687300082e-06 0.00018733963735555377 5.023768926226195e-06 +38.38987041356783 -0.3023502004118387 2.3438440241940497e-06 0.00018771849111524908 5.033906529371147e-06 +38.42860888699487 -0.3023502052976534 2.343831364027049e-06 0.0001880977225864966 5.044053328836534e-06 +38.467347360333896 -0.30235021018347336 2.3438187068737354e-06 0.0001884773406202446 5.054211611035005e-06 +38.50608583358487 -0.30235021506929893 2.343806052808914e-06 0.00018885733926876373 5.064378477738203e-06 +38.54482430674784 -0.30235021995513073 2.3437934016470608e-06 0.00018923771827642332 5.0745570988951644e-06 +38.58356277982276 -0.30235022484096735 2.343780753489583e-06 0.00018961848464682678 5.0847452947681335e-06 +38.622301252809635 -0.3023502297268101 2.3437681084404362e-06 0.00018999963073378223 5.0949446557443065e-06 +38.661039725708484 -0.30235023461265803 2.343755466218813e-06 0.00019038116424006303 5.1051517675048e-06 +38.69977819851931 -0.30235023949851186 2.3437428271114443e-06 0.0001907630750613023 5.115370649323747e-06 +38.73851667124207 -0.30235024438437136 2.343730190959468e-06 0.00019114536740695226 5.1256000020902136e-06 +38.77725514387682 -0.3023502492702363 2.3437175578694566e-06 0.00019152804544245172 5.135838683030004e-06 +38.81599361642353 -0.3023502541561069 2.343704927815259e-06 0.00019191110579459911 5.146087998307814e-06 +38.8547320888822 -0.30235025904198287 2.343692300633219e-06 0.00019229454844885203 5.156347431469054e-06 +38.89347056125284 -0.3023502639278646 2.343679676544705e-06 0.00019267837289793505 5.166616552811994e-06 +38.93220903353544 -0.3023502688137519 2.3436670554199214e-06 0.00019306258168199495 5.17689567084973e-06 +38.970947505729995 -0.30235027369964446 2.3436544373062277e-06 0.00019344717199953781 5.187185320365278e-06 +39.00968597783654 -0.3023502785855427 2.3436418221967884e-06 0.00019383214531802596 5.197485315485462e-06 +39.04842444985504 -0.30235028347144605 2.343629210109785e-06 0.00019421750350034255 5.207795752436333e-06 +39.08716292178549 -0.30235028835735545 2.3436166009470256e-06 0.0001946032390384841 5.218115438273865e-06 +39.12590139362792 -0.3023502932432701 2.343603994896381e-06 0.0001949893597402564 5.228445519166083e-06 +39.16463986538232 -0.30235029812919006 2.343591391793314e-06 0.0001953758633714414 5.238786069480615e-06 +39.20337833704866 -0.3023503030151152 2.3435787916083866e-06 0.00019576275395926006 5.249135907125872e-06 +39.24211680862699 -0.3023503079010463 2.343566194619626e-06 0.00019615002117866502 5.259497586974627e-06 +39.28085528011727 -0.30235031278698304 2.3435536004345395e-06 0.0001965376696977936 5.2698674996391195e-06 +39.31959375151952 -0.3023503176729246 2.343541009463456e-06 0.00019692570598405827 5.280248561040125e-06 +39.35833222283374 -0.30235032255887173 2.3435284211835556e-06 0.00019731412035519684 5.290639506365786e-06 +39.397070694059906 -0.3023503274448242 2.3435158361341903e-06 0.00019770292027310545 5.30104074220131e-06 +39.43580916519803 -0.30235033233078223 2.3435032539709877e-06 0.0001980921016212867 5.311451710560994e-06 +39.47454763624816 -0.30235033721674526 2.3434906749200916e-06 0.00019848166855475333 5.3218728117389375e-06 +39.51328610721023 -0.302350342102714 2.3434780988346032e-06 0.00019887161467596007 5.3323051351326795e-06 +39.55202457808425 -0.30235034698868807 2.343465525710898e-06 0.00019926194186208515 5.342746888528574e-06 +39.59076304887026 -0.30235035187466736 2.343452955582777e-06 0.0001996526549634799 5.353198178876992e-06 +39.629501519568215 -0.3023503567606518 2.343440388485784e-06 0.0002000437503713858 5.363661284711484e-06 +39.668239990178144 -0.3023503616466417 2.343427824381186e-06 0.00020043522783790715 5.374133078036523e-06 +39.70697846070004 -0.30235036653263664 2.3434152632352514e-06 0.00020082708899201937 5.384614668179935e-06 +39.745716931133884 -0.30235037141863763 2.3434027051903273e-06 0.0002012193266477633 5.395107418143549e-06 +39.784455401479704 -0.3023503763046435 2.3433901500265667e-06 0.00020161195228381255 5.405609825229221e-06 +39.82319387173748 -0.3023503811906543 2.343377597868883e-06 0.00020200496163406154 5.416122631563922e-06 +39.861932341907234 -0.30235038607667014 2.3433650488005394e-06 0.00020239835268060055 5.426644835950935e-06 +39.900670811988945 -0.30235039096269173 2.343352502611948e-06 0.00020279212521625667 5.437178828930996e-06 +39.93940928198261 -0.3023503958487187 2.34333995946624e-06 0.00020318627878434828 5.447721743301527e-06 +39.97814775188825 -0.30235040073475045 2.3433274193690664e-06 0.00020358081747902824 5.458274892898924e-06 +40.01688622170583 -0.3023504056207878 2.3433148822343694e-06 0.0002039757356836065 5.468837964675056e-06 +40.055624691435426 -0.3023504105068296 2.3433023480942956e-06 0.00020437104349636925 5.479412064153783e-06 +40.09436316107695 -0.30235041539287716 2.343289816892174e-06 0.00020476672682130962 5.489994836640804e-06 +40.133101630630435 -0.30235042027892994 2.343277288718733e-06 0.00020516279603495112 5.500588572499431e-06 +40.17184010009589 -0.3023504251649874 2.3432647635941693e-06 0.00020555924622185368 5.51119284727169e-06 +40.21057856947331 -0.3023504300510505 2.3432522414546707e-06 0.00020595607735910106 5.521806691779473e-06 +40.2493170387627 -0.3023504349371186 2.3432397223144065e-06 0.00020635329400401912 5.532431169291918e-06 +40.288055507964046 -0.30235043982319154 2.343227206129164e-06 0.00020675089304841282 5.543065082997892e-06 +40.32679397707736 -0.30235044470926975 2.3432146929738365e-06 0.0002071488733581632 5.553708903778486e-06 +40.36553244610262 -0.3023504495953531 2.343202182769134e-06 0.00020754723688981526 5.564363350406046e-06 +40.40427091503985 -0.30235045448144166 2.3431896755534752e-06 0.00020794598131345784 5.57502836176504e-06 +40.44300938388907 -0.3023504593675348 2.3431771712816784e-06 0.00020834511239240417 5.585703429739027e-06 +40.48174785265022 -0.3023504642536336 2.343164670139128e-06 0.00020874462063910586 5.596389037123868e-06 +40.52048632132335 -0.302350469139737 2.3431521719763034e-06 0.00020914451518387955 5.607084087930611e-06 +40.559224789908434 -0.3023504740258456 2.3431396767101486e-06 0.0002095447920406762 5.617787875579665e-06 +40.597963258405485 -0.3023504789119593 2.3431271845393436e-06 0.00020994544888853386 5.62850340417907e-06 +40.63670172681451 -0.3023504837980778 2.3431146953067455e-06 0.0002103464902088704 5.639229176526415e-06 +40.675440195135494 -0.3023504886842017 2.343102209109373e-06 0.000210747910880025 5.649964806008693e-06 +40.714178663368436 -0.3023504935703299 2.3430897258878828e-06 0.0002111497212861059 5.660710008931288e-06 +40.75291713151334 -0.3023504984564637 2.3430772455414154e-06 0.00021155190763752485 5.671465809596967e-06 +40.791655599570205 -0.30235050334260205 2.3430647683503855e-06 0.0002119544796858361 5.682230931906154e-06 +40.830394067539046 -0.3023505082287457 2.3430522939713745e-06 0.00021235742936513412 5.693007743606125e-06 +40.86913253541986 -0.30235051311489397 2.343039822777963e-06 0.00021276076759893528 5.703794314158809e-06 +40.907871003212605 -0.3023505180010469 2.3430273544576576e-06 0.00021316448937863525 5.714589886761906e-06 +40.94660947091732 -0.3023505228872054 2.343014889208257e-06 0.00021356858868953963 5.72539674342892e-06 +40.98534793853402 -0.3023505277733684 2.343002426905056e-06 0.000213973074465593 5.736213572314339e-06 +41.024086406062665 -0.3023505326595364 2.3429899675629224e-06 0.0002143779403994291 5.7470398155076365e-06 +41.062824873503274 -0.30235053754570934 2.3429775113152903e-06 0.00021478318882201406 5.757876519796869e-06 +41.10156334085586 -0.3023505424318869 2.342965057966424e-06 0.00021518882241959675 5.768723235772715e-06 +41.14030180812039 -0.3023505473180694 2.342952607609155e-06 0.0002155948367957782 5.779580542761007e-06 +41.179040275296906 -0.3023505522042566 2.342940160231648e-06 0.00021600123441133947 5.790447310232653e-06 +41.21777874238536 -0.302350557090449 2.3429277158313416e-06 0.00021640801182309984 5.80132393770301e-06 +41.25651720938579 -0.3023505619766463 2.3429152745487873e-06 0.000216815171092517 5.812212380696554e-06 +41.295255676298176 -0.3023505668628484 2.342902836118525e-06 0.00021722271285775784 5.823109595619527e-06 +41.33399414312254 -0.30235057174905483 2.3428904007909733e-06 0.00021763064163131277 5.834016814485461e-06 +41.372732609858836 -0.3023505766352662 2.3428779682744583e-06 0.00021803895190022684 5.844934890620482e-06 +41.41147107650712 -0.3023505815214826 2.342865538887432e-06 0.0002184476410929246 5.855862776507762e-06 +41.45020954306737 -0.30235058640770335 2.342853112551674e-06 0.00021885671698268052 5.866800664213855e-06 +41.488948009539584 -0.30235059129392894 2.3428406891282433e-06 0.00021926617441854541 5.877748329874275e-06 +41.52768647592376 -0.30235059618015936 2.3428282686142063e-06 0.00021967601155518043 5.888706642538522e-06 +41.56642494221988 -0.3023506010663946 2.3428158511991843e-06 0.0002200862332088698 5.899674517012532e-06 +41.60516340842798 -0.3023506059526342 2.3428034367112722e-06 0.0002204968404139748 5.910653950129745e-06 +41.643901874548035 -0.30235061083887865 2.342791025212303e-06 0.00022090782606179926 5.921641839746423e-06 +41.682640340580065 -0.30235061572512817 2.3427786166787434e-06 0.00022131919273825435 5.932639938607365e-06 +41.72137880652404 -0.302350620611382 2.34276621126422e-06 0.0002217309472486663 5.943649007960043e-06 +41.760117272379986 -0.3023506254976405 2.342753808655863e-06 0.00022214308125685273 5.954668810251476e-06 +41.79885573814789 -0.302350630383904 2.3427414091499822e-06 0.00022255559396828378 5.9656970008360576e-06 +41.83759420382777 -0.30235063527017164 2.342729012633139e-06 0.00022296849411784585 5.976737103303452e-06 +41.8763326694196 -0.3023506401564439 2.342716619060802e-06 0.00022338177699367828 5.987786072726498e-06 +41.9150711349234 -0.3023506450427212 2.3427042285405884e-06 0.000223795439565348 5.998844993552946e-06 +41.95380960033917 -0.30235064992900296 2.342691840875481e-06 0.00022420948663560245 6.00991398466537e-06 +41.992548065666895 -0.3023506548152894 2.342679456287892e-06 0.00022462391142686233 6.020994087629366e-06 +42.03128653090657 -0.3023506597015801 2.3426670746785405e-06 0.00022503872437135302 6.032083560763804e-06 +42.07002499605822 -0.302350664587875 2.342654696099268e-06 0.00022545392418859414 6.043183407508212e-06 +42.108763461121825 -0.3023506694741757 2.342642320412095e-06 0.00022586949170058505 6.054294032937629e-06 +42.147501926097405 -0.3023506743604801 2.3426299477565547e-06 0.0002262854536457485 6.065412253992682e-06 +42.18624039098495 -0.302350679246789 2.3426175780439668e-06 0.0002267017968237571 6.076544357505459e-06 +42.22497885578444 -0.3023506841331025 2.342605211360977e-06 0.0002271185189559662 6.087683879519273e-06 +42.263717320495914 -0.3023506890194205 2.3425928476154573e-06 0.00022753562489944337 6.0988343275678175e-06 +42.302455785119335 -0.30235069390574326 2.3425804869693364e-06 0.00022795311157354793 6.109994900916949e-06 +42.34119424965472 -0.3023506987920703 2.3425681291696875e-06 0.0002283709823238657 6.121164829346156e-06 +42.379932714102075 -0.30235070367840167 2.3425557744969827e-06 0.000228789236532492 6.13234576439549e-06 +42.41867117846139 -0.3023507085647379 2.3425434227405717e-06 0.0002292078716591955 6.143537204083926e-06 +42.457409642732664 -0.3023507134510781 2.342531073906665e-06 0.00022962689137594316 6.154738091341093e-06 +42.49614810691591 -0.30235071833742305 2.3425187280672144e-06 0.00023004629053294162 6.1659487970021426e-06 +42.53488657101111 -0.3023507232237723 2.342506385242176e-06 0.0002304660735708217 6.177170494035188e-06 +42.57362503501827 -0.30235072811012575 2.342494045386774e-06 0.00023088624333943261 6.188400604775604e-06 +42.61236349893741 -0.30235073299648413 2.3424817085753706e-06 0.00023130678865139755 6.199642389084535e-06 +42.65110196276849 -0.30235073788284633 2.342469374698347e-06 0.00023172771982088076 6.210894701911715e-06 +42.689840426511545 -0.3023507427692133 2.3424570438070874e-06 0.00023214903141507057 6.22215449406352e-06 +42.72857889016655 -0.3023507476555844 2.342444715851562e-06 0.00023257072850184447 6.233426861043584e-06 +42.76731735373354 -0.30235075254196014 2.3424323909148576e-06 0.0002329928039614336 6.244708652601858e-06 +42.80605581721248 -0.30235075742834006 2.34242006902447e-06 0.00023341526436085718 6.2560006809282505e-06 +42.84479428060339 -0.3023507623147243 2.3424077500040304e-06 0.000233838107048677 6.267302602075676e-06 +42.883532743906244 -0.3023507672011128 2.342395434059566e-06 0.00023426133191313008 6.2786148276107895e-06 +42.92227120712108 -0.3023507720875056 2.342383121044227e-06 0.0002346849392098296 6.289936513591433e-06 +42.96100967024788 -0.30235077697390256 2.3423708110283514e-06 0.00023510893102676465 6.301269254257098e-06 +42.999748133286616 -0.30235078186030434 2.342358503956874e-06 0.0002355333004074077 6.312612261155733e-06 +43.03848659623735 -0.30235078674670984 2.34234619994163e-06 0.00023595805777025012 6.323963790986672e-06 +43.07722505910003 -0.3023507916331201 2.3423338987731513e-06 0.00023638319096071724 6.335326611798386e-06 +43.115963521874676 -0.30235079651953406 2.3423216006404577e-06 0.00023680871204921722 6.346699298785345e-06 +43.15470198456127 -0.30235080140595244 2.3423093055368014e-06 0.00023723461466746426 6.358082064375352e-06 +43.19344044715986 -0.30235080629237515 2.3422970134206574e-06 0.0002376608968614988 6.3694754972960856e-06 +43.23217890967039 -0.30235081117880197 2.34228472420423e-06 0.00023808756407814563 6.380877650504914e-06 +43.270917372092875 -0.30235081606523306 2.342272438028497e-06 0.00023851461422287403 6.392290577444389e-06 +43.30965583442733 -0.30235082095166815 2.3422601548297697e-06 0.00023894204801824519 6.403714375098576e-06 +43.34839429667375 -0.3023508258381079 2.3422478746018123e-06 0.00023936985843131767 6.415147544854513e-06 +43.387132758832124 -0.30235083072455127 2.3422355973588015e-06 0.00023979805801024892 6.426591487723817e-06 +43.425871220902465 -0.3023508356109988 2.3422233230898844e-06 0.00024022663507860674 6.43804481201704e-06 +43.464609682884785 -0.302350840497451 2.3422110517371035e-06 0.00024065559521493622 6.449508815715314e-06 +43.50334814477907 -0.30235084538390694 2.342198783481598e-06 0.00024108493867280924 6.460981297485095e-06 +43.54208660658529 -0.3023508502703669 2.34218651803487e-06 0.00024151466642325647 6.472465641768798e-06 +43.5808250683035 -0.30235085515683113 2.342174255714121e-06 0.00024194477459434983 6.483960293212749e-06 +43.61956352993364 -0.30235086004329964 2.342161996392452e-06 0.00024237526180734931 6.495462919333001e-06 +43.65830199147579 -0.3023508649297717 2.342149739980516e-06 0.00024280613835486137 6.5069774563249465e-06 +43.69704045292986 -0.30235086981624815 2.342137486426782e-06 0.00024323739378532552 6.51850177657005e-06 +43.73577891429591 -0.302350874702729 2.3421252359813043e-06 0.00024366902878573686 6.530036892239668e-06 +43.77451737557393 -0.3023508795892132 2.342112988587424e-06 0.00024410105085580908 6.5415800854270205e-06 +43.81325583676389 -0.3023508844757019 2.3421007439784207e-06 0.0002445334520050165 6.553134600395659e-06 +43.851994297865836 -0.30235088936219445 2.342088502451557e-06 0.00024496623716669996 6.564699768371544e-06 +43.890732758879736 -0.30235089424869116 2.342076263971542e-06 0.00024539940353846516 6.576273945537732e-06 +43.92947121980559 -0.30235089913519153 2.3420640283115564e-06 0.0002458329545399215 6.5878597435111796e-06 +43.968209680643426 -0.30235090402169623 2.3420517956652048e-06 0.0002462668866895045 6.599454160574524e-06 +44.00694814139321 -0.30235090890820476 2.342039566086443e-06 0.00024670119930480556 6.611058508066967e-06 +44.04568660205496 -0.3023509137947173 2.3420273393605764e-06 0.00024713589583405917 6.622674047510042e-06 +44.08442506262868 -0.3023509186812335 2.3420151157004336e-06 0.00024757097782233744 6.634299145774911e-06 +44.12316352311437 -0.3023509235677543 2.3420028949828715e-06 0.00024800643433241356 6.645934095363161e-06 +44.161901983512 -0.3023509284542784 2.3419906772303508e-06 0.0002484422807804774 6.6575792516358336e-06 +44.200640443821605 -0.3023509333408065 2.3419784625245584e-06 0.00024887850815211816 6.669234295382774e-06 +44.23937890404318 -0.302350938227339 2.3419662507129946e-06 0.00024931511191797706 6.680900559030339e-06 +44.2781173641767 -0.3023509431138747 2.3419540419338613e-06 0.0002497521054816179 6.692576535306697e-06 +44.31685582422221 -0.3023509480004145 2.341941836089726e-06 0.00025018947831196556 6.704261202545087e-06 +44.35559428417967 -0.30235095288695824 2.3419296332189506e-06 0.0002506272357638321 6.7159572421076785e-06 +44.394332744049066 -0.30235095777350635 2.341917433257083e-06 0.000251065366804289 6.727663371804771e-06 +44.433071203830465 -0.3023509626600574 2.3419052363514504e-06 0.00025150389044016006 6.739379700138513e-06 +44.4718096635238 -0.3023509675466128 2.341893042314861e-06 0.00025194279202610796 6.751105136402955e-06 +44.51054812312912 -0.302350972433172 2.341880851430059e-06 0.00025238207672778726 6.762841395080487e-06 +44.54928658264639 -0.30235097731973487 2.3418686632891486e-06 0.00025282174335712816 6.774587070753726e-06 +44.58802504207563 -0.3023509822063015 2.3418564782453607e-06 0.0002532617941610544 6.786344528619143e-06 +44.626763501416825 -0.30235098709287195 2.3418442962128847e-06 0.0002537022247099861 6.798110449985076e-06 +44.66550196067 -0.30235099197944604 2.3418321171696638e-06 0.00025414304059918853 6.809887388449572e-06 +44.704240419835116 -0.3023509968660242 2.3418199409941267e-06 0.00025458423676848896 6.82167323403235e-06 +44.7429788789122 -0.3023510017526056 2.3418077678295964e-06 0.0002550258184798355 6.833469702406933e-06 +44.78171733790125 -0.30235100663919146 2.341795597610155e-06 0.00025546777523879644 6.845275514834677e-06 +44.82045579680228 -0.30235101152578064 2.34178343030835e-06 0.00025591011881091855 6.857092991774186e-06 +44.85919425561524 -0.3023510164123739 2.3417712661668904e-06 0.0002563528398337705 6.868920256887373e-06 +44.8979327143402 -0.30235102129897 2.3417591047940913e-06 0.0002567959527224188 6.880756670078447e-06 +44.93667117297711 -0.30235102618557036 2.3417469465347435e-06 0.0002572394406501566 6.892603543557137e-06 +44.97540963152598 -0.3023510310721742 2.3417347912064957e-06 0.0002576833161530843 6.904462013473614e-06 +45.014148089986804 -0.30235103595878204 2.3417226387476994e-06 0.0002581275698676841 6.916328463615644e-06 +45.05288654835961 -0.30235104084539327 2.3417104893840716e-06 0.00025857220438442577 6.928205442409939e-06 +45.09162500664437 -0.30235104573200805 2.3416983429507056e-06 0.0002590172267963591 6.9400930069535195e-06 +45.130363464841096 -0.30235105061862655 2.3416861994657766e-06 0.00025946263164267606 6.951990582060239e-06 +45.16910192294977 -0.30235105550524904 2.341674058953926e-06 0.00025990841025373305 6.963898544478566e-06 +45.20784038097044 -0.3023510603918745 2.3416619214343435e-06 0.0002603545800243357 6.975816113369834e-06 +45.24657883890304 -0.30235106527850414 2.34164978681698e-06 0.0002608011223750538 6.987743746073309e-06 +45.28531729674763 -0.30235107016513724 2.3416376552464977e-06 0.00026124805138485677 6.9996810759867774e-06 +45.32405575450416 -0.3023510750517738 2.3416255265795253e-06 0.00026169536529489524 7.011628936731087e-06 +45.362794212172666 -0.30235107993841354 2.3416134009350054e-06 0.00026214306544123826 7.02358781601116e-06 +45.40153266975314 -0.30235108482505724 2.3416012782373314e-06 0.0002625911403839319 7.035554952161722e-06 +45.440271127245566 -0.30235108971170455 2.341589158468604e-06 0.000263039599251769 7.047533336426275e-06 +45.47900958464998 -0.30235109459835496 2.3415770417128835e-06 0.000263488443168303 7.059520395692972e-06 +45.51774804196634 -0.30235109948500927 2.3415649278226576e-06 0.0002639376654132532 7.071520125881076e-06 +45.55648649919466 -0.3023511043716668 2.341552817010442e-06 0.0002643872723541566 7.083528491558493e-06 +45.59522495633495 -0.3023511092583278 2.3415407091445116e-06 0.00026483726272381994 7.095546412250698e-06 +45.63396341338721 -0.30235111414499255 2.34152860429976e-06 0.00026528763313476105 7.107575243062871e-06 +45.67270187035142 -0.3023511190316608 2.3415165023145998e-06 0.0002657383850707755 7.119613207310469e-06 +45.7114403272276 -0.30235112391833235 2.3415044033578057e-06 0.0002661895189586701 7.131661677465663e-06 +45.750178784015745 -0.3023511288050071 2.341492307255665e-06 0.0002666410414404265 7.143720672900124e-06 +45.788917240715854 -0.3023511336916855 2.3414802142072477e-06 0.00026709294109338575 7.155788395336692e-06 +45.827655697327934 -0.3023511385783675 2.341468124185345e-06 0.00026754522120012793 7.167868714136867e-06 +45.86639415385197 -0.3023511434650523 2.341456037003625e-06 0.0002679978894098086 7.179957330032655e-06 +45.90513261028798 -0.302351148351741 2.3414439528345747e-06 0.00026845093592349684 7.192056496124513e-06 +45.943871066635936 -0.30235115323843315 2.3414318715953924e-06 0.00026890436196852025 7.204164875473766e-06 +45.98260952289588 -0.3023511581251283 2.341419793395463e-06 0.00026935817449274456 7.21628445576854e-06 +46.021347979067755 -0.3023511630118271 2.341407718083377e-06 0.00026981236649221654 7.228412791715086e-06 +46.060086435151625 -0.30235116789852917 2.341395645776224e-06 0.0002702669403686011 7.240552486300275e-06 +46.09882489114745 -0.30235117278523455 2.3413835765171435e-06 0.0002707219015283037 7.252701715736571e-06 +46.137563347055234 -0.30235117767194297 2.3413715100615847e-06 0.00027117724210083373 7.264862063970342e-06 +46.17630180287499 -0.30235118255865506 2.341359446698173e-06 0.00027163296334771855 7.2770309798485176e-06 +46.2150402586067 -0.3023511874453704 2.341347386180283e-06 0.00027208906848346254 7.289210982737036e-06 +46.25377871425038 -0.3023511923320889 2.3413353286213874e-06 0.0002725455548852985 7.3014000438998755e-06 +46.29251716980603 -0.3023511972188107 2.341323274110964e-06 0.0002730024247822879 7.313600259662207e-06 +46.33125562527364 -0.3023512021055359 2.3413112225845173e-06 0.0002734596751436666 7.325810011413047e-06 +46.36999408065323 -0.3023512069922639 2.3412991739146886e-06 0.00027391730968203277 7.3380290918427246e-06 +46.408732535944765 -0.30235121187899555 2.3412871282738773e-06 0.0002743753261888312 7.350260110301441e-06 +46.447470991148286 -0.3023512167657306 2.341275085468675e-06 0.0002748337217860389 7.3624987066294645e-06 +46.486209446263736 -0.3023512216524688 2.3412630457902902e-06 0.00027529249826279106 7.374749545700705e-06 +46.52494790129116 -0.3023512265392099 2.341251009043092e-06 0.00027575166102498076 7.3870092709336655e-06 +46.563686356230576 -0.302351231425954 2.341238975164237e-06 0.0002762112100583402 7.399279307843636e-06 +46.60242481108194 -0.30235123631270155 2.341226944353657e-06 0.0002766711381470659 7.4115600637382925e-06 +46.641163265845265 -0.30235124119945234 2.3412149164326293e-06 0.0002771314437109758 7.423851121561876e-06 +46.67990172052056 -0.3023512460862063 2.3412028914959206e-06 0.0002775921353200755 7.436151429212518e-06 +46.71864017510781 -0.30235125097296306 2.3411908694524278e-06 0.00027805320866149157 7.448462125648058e-06 +46.75737862960705 -0.30235125585972356 2.3411788503961915e-06 0.00027851466329339113 7.460781715999833e-06 +46.796117084018235 -0.3023512607464866 2.3411668343556872e-06 0.00027897650092674573 7.473112071451037e-06 +46.834855538341394 -0.30235126563325326 2.3411548212410593e-06 0.0002794387168547611 7.485452806933208e-06 +46.87359399257651 -0.3023512705200226 2.3411428110458976e-06 0.0002799013208452324 7.497803837732619e-06 +46.912332446723596 -0.3023512754067951 2.341130803875886e-06 0.00028036430536665196 7.510165447970849e-06 +46.95107090078263 -0.3023512802935705 2.3411187996618597e-06 0.00028082767365501994 7.522535890766197e-06 +46.98980935475366 -0.30235128518034937 2.3411067983212654e-06 0.0002812914208617316 7.534915643431277e-06 +47.028547808636645 -0.302351290067131 2.341094800029025e-06 0.00028175555140418405 7.547307414509952e-06 +47.0672862624316 -0.3023512949539156 2.3410828046094214e-06 0.00028222006490834873 7.559708864380246e-06 +47.106024716138506 -0.3023512998407036 2.3410708121505698e-06 0.0002826849574666147 7.572118037790511e-06 +47.14476316975737 -0.30235130472749433 2.3410588227653568e-06 0.00028315023613475083 7.584540981537358e-06 +47.18350162328822 -0.30235130961428797 2.341046836186951e-06 0.0002836158930202139 7.5969716421082285e-06 +47.22224007673104 -0.30235131450108477 2.341034852683679e-06 0.000284081935858144 7.609413516812081e-06 +47.26097853008582 -0.30235131938788445 2.3410228720413433e-06 0.00028454835991987903 7.621863569388641e-06 +47.29971698335254 -0.3023513242746872 2.341010894405576e-06 0.00028501516372435347 7.63432550974353e-06 +47.33845543653125 -0.30235132916149304 2.3409989198035235e-06 0.0002854823507898641 7.646797550753116e-06 +47.377193889621935 -0.30235133404830133 2.3409869479991934e-06 0.00028594992214920245 7.659277927179666e-06 +47.415932342624565 -0.3023513389351128 2.3409749792476823e-06 0.00028641787607957327 7.67176920889413e-06 +47.45467079553917 -0.3023513438219271 2.340963013400881e-06 0.00028688621324703334 7.684271267258183e-06 +47.493409248365744 -0.30235134870874436 2.3409510504817002e-06 0.0002873549267257813 7.696782384613114e-06 +47.53214770110428 -0.30235135359556486 2.340939090550044e-06 0.0002878240233907865 7.709303717602356e-06 +47.570886153754785 -0.3023513584823876 2.3409271336248744e-06 0.0002882935083028201 7.721836559327986e-06 +47.60962460631726 -0.3023513633692138 2.340915179674451e-06 0.0002887633650477981 7.734377549294782e-06 +47.6483630587917 -0.3023513682560423 2.340903228539788e-06 0.00028923361486339806 7.746929029577635e-06 +47.687101511178085 -0.30235137314287447 2.340891280395289e-06 0.0002897042325363671 7.759491596770313e-06 +47.72583996347646 -0.30235137802970863 2.3408793352499366e-06 0.00029017524567642624 7.772062597290857e-06 +47.76457841568679 -0.3023513829165457 2.3408673931509244e-06 0.00029064663963808694 7.784645760713559e-06 +47.80331686780909 -0.3023513878033859 2.340855453821326e-06 0.0002911184114861595 7.7972377847822e-06 +47.84205531984336 -0.3023513926902291 2.3408435174970113e-06 0.0002915905643652168 7.809840629063888e-06 +47.8807937717896 -0.30235139757707447 2.340831584149738e-06 0.0002920631029505113 7.82245198925196e-06 +47.919532223647785 -0.30235140246392295 2.34081965377644e-06 0.00029253602316072765 7.835073793557953e-06 +47.95827067541798 -0.30235140735077426 2.3408077262708155e-06 0.00029300932371395565 7.847707523611482e-06 +47.9970091271001 -0.30235141223762824 2.3407958018466713e-06 0.0002934830057924018 7.860349645123792e-06 +48.03574757869418 -0.302351417124485 2.340783880265687e-06 0.0002939570716448269 7.873002007527444e-06 +48.07448603020026 -0.30235142201134413 2.3407719616752347e-06 0.00029443152320951803 7.885663490545896e-06 +48.1132244816183 -0.30235142689820615 2.340760045969778e-06 0.0002949063563034171 7.898336040488052e-06 +48.15196293294831 -0.30235143178507123 2.340748133347673e-06 0.00029538156379903957 7.911019353330412e-06 +48.19070138419026 -0.3023514366719384 2.3407362235255773e-06 0.00029585716124662555 7.923710595716482e-06 +48.2294398353442 -0.3023514415588088 2.3407243166897986e-06 0.0002963331351319953 7.936413366591648e-06 +48.268178286410105 -0.3023514464456815 2.340712412840467e-06 0.0002968094951679632 7.949126389292093e-06 +48.306916737387986 -0.30235145133255714 2.340700511920081e-06 0.00029728623078369333 7.961849454355923e-06 +48.34565518827781 -0.3023514562194354 2.340688613954435e-06 0.0002977633537605936 7.974581773353408e-06 +48.38439363907962 -0.3023514611063161 2.3406767189548923e-06 0.0002982408567745244 7.987324038265587e-06 +48.4231320897934 -0.30235146599319945 2.3406648269260514e-06 0.00029871874394331907 8.000077370627405e-06 +48.46187054041913 -0.30235147088008535 2.340652937776878e-06 0.0002991970157608505 8.012839903112626e-06 +48.500608990956835 -0.3023514757669738 2.3406410516141e-06 0.0002996756656205984 8.025613652772538e-06 +48.53934744140652 -0.30235148065386486 2.340629168423133e-06 0.0003001546985574978 8.038396232987467e-06 +48.578085891768154 -0.302351485540759 2.340617288094931e-06 0.0003006341088620697 8.051188526343857e-06 +48.61682434204176 -0.30235149042765513 2.340605410840039e-06 0.00030111390875485033 8.063991770313483e-06 +48.65556279222734 -0.302351495314554 2.340593536338318e-06 0.00030159408449671635 8.076804842954448e-06 +48.69430124232488 -0.30235150020145557 2.3405816650115294e-06 0.0003020746437068483 8.089628113235047e-06 +48.7330396923344 -0.3023515050883593 2.3405697965003743e-06 0.00030255558909613546 8.102461808695707e-06 +48.77177814225588 -0.30235150997526566 2.3405579309997705e-06 0.00030303691392076526 8.115303065010155e-06 +48.810516592089336 -0.30235151486217454 2.3405460683612317e-06 0.00030351862160394206 8.128157821331378e-06 +48.849255041834745 -0.30235151974908603 2.3405342087097076e-06 0.00030400070985060285 8.141020651724382e-06 +48.88799349149213 -0.30235152463600007 2.3405223520030528e-06 0.000304483175767349 8.153894858036153e-06 +48.92673194106148 -0.3023515295229161 2.340510498248115e-06 0.00030496603323901575 8.16677791669456e-06 +48.96547039054281 -0.3023515344098349 2.340498647446136e-06 0.00030544926459753427 8.179671463427493e-06 +49.00420883993611 -0.30235153929675573 2.3404867994960724e-06 0.0003059328878063275 8.192575004824185e-06 +49.042947289241376 -0.3023515441836799 2.3404749545844373e-06 0.0003064168803003876 8.205489303432834e-06 +49.081685738458596 -0.30235154907060563 2.3404631126282247e-06 0.0003069012659801767 8.218411547563069e-06 +49.1204241875878 -0.30235155395753394 2.3404512735736798e-06 0.00030738602823378986 8.231345343468872e-06 +49.15916263662897 -0.302351558844465 2.340439437449755e-06 0.00030787117345373063 8.244288523694634e-06 +49.197901085582096 -0.3023515637313979 2.340427604292194e-06 0.0003083567028955743 8.257242324658707e-06 +49.2366395344472 -0.3023515686183337 2.3404157740665216e-06 0.0003088426094613481 8.270206119463147e-06 +49.275377983224274 -0.3023515735052714 2.340403946778264e-06 0.0003093289022543831 8.28318027857348e-06 +49.3141164319133 -0.302351578392212 2.340392122454532e-06 0.00030981557292185255 8.29616523076556e-06 +49.35285488051433 -0.3023515832791547 2.340380301012462e-06 0.0003103026247944561 8.309158374387258e-06 +49.39159332902731 -0.30235158816609925 2.340368482612896e-06 0.00031079006754357243 8.322161517102242e-06 +49.43033177745225 -0.3023515930530466 2.340356667068701e-06 0.00031127788540220126 8.335175958928765e-06 +49.46907022578917 -0.302351597939996 2.340344854471145e-06 0.00031176608465626724 8.34819980273933e-06 +49.50780867403806 -0.30235160282694806 2.340333044835293e-06 0.00031225466542695977 8.361232345974363e-06 +49.54654712219891 -0.30235160771390174 2.3403212381483223e-06 0.000312743634831556 8.37427702471733e-06 +49.58528557027173 -0.3023516126008585 2.340309434424782e-06 0.0003132329768293912 8.387330890559743e-06 +49.62402401825654 -0.30235161748781697 2.340297633565421e-06 0.0003137227062097206 8.40039433380839e-06 +49.6627624661533 -0.3023516223747777 2.3402858357243345e-06 0.0003142128189057741 8.413468363724676e-06 +49.701500913962036 -0.30235162726174075 2.3402740408206086e-06 0.0003147033115931943 8.42655313545666e-06 +49.74023936168273 -0.30235163214870603 2.340262248809027e-06 0.0003151941835271683 8.43964799578431e-06 +49.77897780931541 -0.30235163703567364 2.3402504597104424e-06 0.0003156854390569544 8.452751888113285e-06 +49.817716256860066 -0.30235164192264324 2.340238673666399e-06 0.0003161770773789003 8.465864648769998e-06 +49.85645470431668 -0.3023516468096148 2.3402268904175377e-06 0.00031666910208136257 8.478990091709252e-06 +49.89519315168526 -0.302351651696589 2.340215110206384e-06 0.00031716150098373225 8.492123033160218e-06 +49.933931598965806 -0.3023516565835653 2.3402033328969938e-06 0.00031765428595011987 8.505267223980681e-06 +49.97267004615834 -0.30235166147054326 2.340191558540932e-06 0.00031814745352172914 8.51842158043153e-06 +50.011408493262834 -0.3023516663575237 2.3401797870688237e-06 0.0003186409998479864 8.531586879324533e-06 +50.05014694027932 -0.30235167124450607 2.3401680185866706e-06 0.0003191349353123631 8.544760227038635e-06 +50.08888538720774 -0.3023516761314908 2.3401562530824435e-06 0.0003196292448481504 8.55794447419476e-06 +50.12762383404815 -0.3023516810184775 2.3401444904127614e-06 0.0003201239404115617 8.57113870628762e-06 +50.16636228080053 -0.3023516859054666 2.340132730756213e-06 0.00032061901155008485 8.58434317026475e-06 +50.205100727464874 -0.3023516907924572 2.340120973935791e-06 0.0003211144735662101 8.597558136566459e-06 +50.24383917404119 -0.30235169567945025 2.34010922016398e-06 0.00032161031173744446 8.61078349178138e-06 +50.28257762052949 -0.30235170056644517 2.340097469300445e-06 0.0003221065324526194 8.624016860929373e-06 +50.32131606692976 -0.3023517054534423 2.340085721346181e-06 0.00032260313563651615 8.637260671853434e-06 +50.36005451324198 -0.30235171034044117 2.3400739763662383e-06 0.00032310012093188597 8.650515039792799e-06 +50.3987929594662 -0.3023517152274423 2.340062234305254e-06 0.00032359748835528466 8.663781185204416e-06 +50.437531405602364 -0.30235172011444517 2.340050495152206e-06 0.00032409523820581325 8.677055359233436e-06 +50.4762698516505 -0.3023517250014503 2.3400387589737807e-06 0.0003245933672014191 8.690341087193867e-06 +50.51500829761062 -0.3023517298884573 2.3400270257023743e-06 0.00032509188025567945 8.703632998640378e-06 +50.55374674348273 -0.30235173477546606 2.340015295351893e-06 0.000325590778548148 8.716938101590638e-06 +50.59248518926679 -0.30235173966247725 2.340003567933649e-06 0.0003260900531869237 8.730254281312055e-06 +50.63122363496282 -0.3023517445494898 2.3399918434754783e-06 0.00032658971683679404 8.743577918676148e-06 +50.66996208057082 -0.3023517494365045 2.3399801219944356e-06 0.0003270897553511075 8.756912579829967e-06 +50.7087005260908 -0.3023517543235212 2.3399684033395644e-06 0.00032759017861003686 8.770256199946204e-06 +50.747438971522755 -0.30235175921053964 2.3399566876081605e-06 0.00032809098374528495 8.783611366357405e-06 +50.786177416866664 -0.30235176409756054 2.339944974947895e-06 0.00032859216666830513 8.796976080857724e-06 +50.82491586212258 -0.3023517689845825 2.3399332651190743e-06 0.0003290937371079889 8.810350489956648e-06 +50.86365430729044 -0.30235177387160683 2.339921558245857e-06 0.0003295956874658618 8.823735837601807e-06 +50.902392752370275 -0.3023517787586332 2.339909854307009e-06 0.00033009801533253 8.837130035705963e-06 +50.94113119736208 -0.3023517836456609 2.339898153301795e-06 0.0003306007309412929 8.850535822916984e-06 +50.979869642265854 -0.3023517885326907 2.339886455214576e-06 0.0003311038288527286 8.863948684387537e-06 +51.01860808708162 -0.30235179341972224 2.3398747600568136e-06 0.0003316073026116953 8.877374550521827e-06 +51.05734653180936 -0.3023517983067556 2.3398630677864292e-06 0.0003321111625294156 8.890808875948782e-06 +51.09608497644906 -0.3023518031937909 2.339851378511529e-06 0.00033261539938545204 8.904254053787806e-06 +51.134823421000725 -0.30235180808082757 2.3398396921697048e-06 0.00033312002859801356 8.917709781122861e-06 +51.17356186546438 -0.30235181296786656 2.3398280087813324e-06 0.00033362503232158626 8.931173442183243e-06 +51.212300309839996 -0.30235181785490706 2.3398163282215613e-06 0.00033413041746895413 8.944649467697803e-06 +51.25103875412758 -0.30235182274194916 2.339804650662572e-06 0.00033463618755381316 8.95813327889414e-06 +51.28977719832716 -0.3023518276289931 2.3397929760463907e-06 0.0003351423387901705 8.971628518957231e-06 +51.328515642438695 -0.30235183251603887 2.3397813042973013e-06 0.0003356488685586035 8.98513312180398e-06 +51.36725408646221 -0.3023518374030864 2.3397696354331634e-06 0.00033615577803215447 8.998648244322432e-06 +51.405992530397704 -0.3023518422901352 2.3397579696489305e-06 0.000336663081632466 9.012173045507912e-06 +51.44473097424517 -0.3023518471771859 2.339746306687771e-06 0.000337170760078082 9.025707557207266e-06 +51.48346941800459 -0.30235185206423876 2.3397346467315077e-06 0.0003376788108818232 9.0392515522233e-06 +51.52220786167601 -0.3023518569512927 2.3397229896148427e-06 0.0003381872565726411 9.05280841800268e-06 +51.56094630525938 -0.30235186183834856 2.3397113354431786e-06 0.00033869607713566183 9.066372592398428e-06 +51.59968474875474 -0.30235186672540615 2.339699684261004e-06 0.0003392052812071429 9.079945709494847e-06 +51.638423192162065 -0.3023518716124651 2.3396880359105504e-06 0.0003397148688111665 9.093532251060206e-06 +51.677161635481376 -0.3023518764995257 2.339676390551273e-06 0.0003402248375605015 9.107126642783851e-06 +51.715900078712664 -0.30235188138658775 2.3396647480599867e-06 0.00034073519029939066 9.120731782493538e-06 +51.75463852185592 -0.30235188627365167 2.3396531085215647e-06 0.00034124592277190864 9.13434799567879e-06 +51.79337696491113 -0.3023518911607175 2.3396414719929553e-06 0.0003417570302399447 9.147972869888203e-06 +51.83211540787835 -0.30235189604778406 2.3396298383295865e-06 0.00034226853323029294 9.161607457740767e-06 +51.87085385075752 -0.3023519009348529 2.3396182075872425e-06 0.0003427804039411036 9.175252279196365e-06 +51.90959229354869 -0.3023519058219227 2.3396065797861205e-06 0.00034329266847252455 9.188907677726657e-06 +51.948330736251805 -0.30235191070899464 2.339594954888969e-06 0.00034380530676148094 9.202572164668276e-06 +51.98706917886691 -0.3023519155960676 2.339583332816611e-06 0.00034431833203106316 9.216247353224223e-06 +52.025807621393994 -0.30235192048314263 2.339571713850129e-06 0.0003448317309789166 9.22993223364543e-06 +52.06454606383304 -0.3023519253702187 2.3395600977064945e-06 0.0003453455176097811 9.243625782103336e-06 +52.10328450618407 -0.3023519302572961 2.3395484845133383e-06 0.000345859690500013 9.257333137872866e-06 +52.142022948447085 -0.30235193514437536 2.33953687414227e-06 0.00034637423793449436 9.271047539890549e-06 +52.18076139062206 -0.3023519400314561 2.339525266838623e-06 0.00034688916858367655 9.284771812398267e-06 +52.21949983270902 -0.3023519449185379 2.339513662418882e-06 0.0003474044841863871 9.298507232012231e-06 +52.25823827470795 -0.3023519498056216 2.339502060869768e-06 0.00034792017592041863 9.312251124863478e-06 +52.29697671661885 -0.3023519546927064 2.339490462249308e-06 0.0003484362523200483 9.326007171259948e-06 +52.33571515844172 -0.30235195957979283 2.3394788665539197e-06 0.0003489527098065472 9.339771159055414e-06 +52.374453600176594 -0.30235196446688045 2.339467273815515e-06 0.00034946955202807867 9.353545522247145e-06 +52.41319204182342 -0.30235196935396974 2.339455684062526e-06 0.00034998677370793436 9.367330981339541e-06 +52.45193048338224 -0.30235197424106003 2.3394440970893613e-06 0.00035050437684847 9.38112612044026e-06 +52.490668924853026 -0.302351979128152 2.339432513084977e-06 0.0003510223604865444 9.394930674449938e-06 +52.529407366235795 -0.3023519840152451 2.3394209320745166e-06 0.0003515407297803109 9.40874566003168e-06 +52.56814580753054 -0.30235198890233966 2.339409353867442e-06 0.00035205947836226587 9.42257209739852e-06 +52.60688424873725 -0.3023519937894356 2.3393977787252916e-06 0.0003525786086147125 9.436406172980675e-06 +52.645622689855955 -0.3023519986765331 2.3393862063458255e-06 0.0003530981169850897 9.450250146775016e-06 +52.68436113088662 -0.30235200356363173 2.339374636958255e-06 0.0003536180102745896 9.464106229469777e-06 +52.72309957182928 -0.30235200845073135 2.3393630704795135e-06 0.00035413828954318976 9.477970629561733e-06 +52.761838012683896 -0.3023520133378326 2.3393515069474606e-06 0.00035465894131038504 9.491846024706718e-06 +52.8005764534505 -0.3023520182249346 2.3393399462376783e-06 0.00035517998787934897 9.505729943336426e-06 +52.83931489412909 -0.30235202311203857 2.339328388519422e-06 0.00035570140452709855 9.519625953332432e-06 +52.87805333471964 -0.3023520279991436 2.3393168337428426e-06 0.0003562232022915495 9.53353054275979e-06 +52.916791775222165 -0.30235203288624946 2.33930528184582e-06 0.00035674539169525777 9.547445322398593e-06 +52.95553021563669 -0.3023520377733566 2.339293732956155e-06 0.0003572679578964738 9.561369387686028e-06 +52.99426865596318 -0.3023520426604653 2.339282186836863e-06 0.00035779090496504103 9.575304576512114e-06 +53.033007096201665 -0.3023520475475752 2.339270643726006e-06 0.0003583142276688497 9.589249727115876e-06 +53.07174553635211 -0.30235205243468627 2.3392591034762055e-06 0.00035883794019558163 9.603203559526283e-06 +53.11048397641453 -0.3023520573217983 2.339247566189792e-06 0.0003593620336209724 9.617168437267004e-06 +53.14922241638893 -0.3023520622089117 2.339236031772734e-06 0.0003598865059936166 9.631143405362012e-06 +53.187960856275325 -0.30235206709602624 2.3392245002860586e-06 0.00036041136050162745 9.645128328397591e-06 +53.226699296073676 -0.30235207198314157 2.339212971761269e-06 0.0003609365976467661 9.659123744732236e-06 +53.26543773578402 -0.3023520768702584 2.3392014461072114e-06 0.0003614622163797556 9.673127857202072e-06 +53.30417617540635 -0.30235208175737605 2.339189923401598e-06 0.0003619882217229093 9.687142083319533e-06 +53.34291461494064 -0.302352086644495 2.3391784035212693e-06 0.00036251460112103503 9.70116705974164e-06 +53.381653054386916 -0.302352091531615 2.339166886589276e-06 0.00036304136651724004 9.715202358930449e-06 +53.42039149374517 -0.3023520964187361 2.339155372640645e-06 0.0003635685093936589 9.729245414911005e-06 +53.459129933015404 -0.3023521013058584 2.3391438615523785e-06 0.0003640960364127625 9.743301695704316e-06 +53.497868372197615 -0.3023521061929816 2.339132353437411e-06 0.00036462394561181813 9.757367202011853e-06 +53.536606811291826 -0.3023521110801057 2.339120848049173e-06 0.00036515224008680974 9.771440589346403e-06 +53.57534525029799 -0.3023521159672313 2.3391093457509105e-06 0.0003656809052123992 9.785525866236661e-06 +53.61408368921616 -0.30235212085435753 2.339097846379626e-06 0.00036620996112759 9.799619676989583e-06 +53.652822128046296 -0.30235212574148485 2.3390863499171128e-06 0.0003667393979825302 9.813724195445132e-06 +53.6915605667884 -0.30235213062861327 2.3390748563060034e-06 0.0003672692134235535 9.827838910570164e-06 +53.7302990054425 -0.3023521355157425 2.3390633655935865e-06 0.000367799413053579 9.841964180301762e-06 +53.76903744400856 -0.3023521404028732 2.339051877852954e-06 0.0003683299851109391 9.856097974998347e-06 +53.807775882486624 -0.30235214529000387 2.339040393010414e-06 0.00036886095753899746 9.87024188969036e-06 +53.84651432087666 -0.3023521501771362 2.339028911068835e-06 0.0003693922986541316 9.884397832941453e-06 +53.885252759178684 -0.30235215506426966 2.3390174319185448e-06 0.00036992401765947603 9.898560358251902e-06 +53.923991197392674 -0.3023521599514037 2.33900595589362e-06 0.00037045612465072905 9.91273549246403e-06 +53.962729635518656 -0.3023521648385384 2.3389944826156376e-06 0.0003709886169146026 9.926919415623709e-06 +54.00146807355661 -0.30235216972567464 2.3389830123333763e-06 0.00037152148088699476 9.941115605114488e-06 +54.04020651150654 -0.3023521746128111 2.3389715448948023e-06 0.00037205473772584886 9.955318608694752e-06 +54.07894494936848 -0.3023521794999487 2.3389600804012323e-06 0.0003725883721074907 9.969532850855344e-06 +54.11768338714239 -0.3023521843870876 2.3389486188426543e-06 0.0003731223808243073 9.983758483488833e-06 +54.15642182482825 -0.30235218927422675 2.338937160095001e-06 0.0003736567769096583 9.997990947654394e-06 +54.19516026242612 -0.302352194161367 2.338925704297462e-06 0.0003741915559282726 1.0012236155439686e-05 +54.23389869993597 -0.30235219904850835 2.338914251484881e-06 0.0003747267100450494 1.0026489279041421e-05 +54.2726371373578 -0.30235220393565004 2.338902801500841e-06 0.0003752622521348531 1.004075474593962e-05 +54.3113755746916 -0.3023522088227926 2.33889135449557e-06 0.00037579817768034314 1.0055027403441442e-05 +54.35011401193741 -0.3023522137099363 2.3388799103281515e-06 0.0003763344805422556 1.006931151044997e-05 +54.38885244909518 -0.30235221859708056 2.3388684691145706e-06 0.00037687116385153025 1.0083605437421255e-05 +54.427590886164936 -0.3023522234842256 2.3388570308083845e-06 0.0003774082294414947 1.0097909562532642e-05 +54.466329323146695 -0.30235222837137127 2.338845595395568e-06 0.0003779456804075096 1.0112223604840446e-05 +54.50506776004039 -0.30235223325851784 2.3388341628265373e-06 0.00037848350968194827 1.0126548689393577e-05 +54.543806196846106 -0.30235223814566503 2.3388227332430995e-06 0.00037902172116674156 1.014088083029666e-05 +54.58254463356381 -0.3023522430328131 2.3388113064928043e-06 0.00037956031433178904 1.0155225965783388e-05 +54.621283070193485 -0.30235224791996174 2.3387998827207473e-06 0.0003800992883569139 1.0169580799228537e-05 +54.66002150673512 -0.3023522528071115 2.338788461812778e-06 0.00038063863832628965 1.0183943760713141e-05 +54.69875994318878 -0.3023522576942614 2.338777043838845e-06 0.00038117837741077383 1.0198318028846022e-05 +54.737498379554395 -0.3023522625814123 2.3387656286928537e-06 0.00038171849743369495 1.0212702495593013e-05 +54.776236815832 -0.30235226746856353 2.338754216540546e-06 0.00038225900092047103 1.0227095239426407e-05 +54.8149752520216 -0.3023522723557155 2.338742807272096e-06 0.00038279988089250024 1.024149850890695e-05 +54.853713688123165 -0.30235227724286856 2.338731400914204e-06 0.00038334113970759634 1.025591237664436e-05 +54.89245212413672 -0.3023522821300219 2.338719997395631e-06 0.0003838827873196931 1.0270336167730798e-05 +54.93119056006225 -0.3023522870171756 2.3387085968411626e-06 0.00038442481984756117 1.0284769873467152e-05 +54.969928995899785 -0.3023522919043304 2.3386971991521215e-06 0.00038496722249618614 1.0299212385195798e-05 +55.0086674316493 -0.3023522967914856 2.33868580442507e-06 0.000385510011719849 1.0313667861799178e-05 +55.04740586731079 -0.3023523016786413 2.3386744125192592e-06 0.00038605318298335847 1.0328130012222757e-05 +55.08614430288428 -0.302352306565798 2.3386630236091496e-06 0.0003865967322649407 1.0342604198783475e-05 +55.12488273836974 -0.3023523114529543 2.338651637554791e-06 0.00038714067263606367 1.0357085968144486e-05 +55.16362117376718 -0.30235231634011206 2.338640254358284e-06 0.00038768498498897825 1.037157949705844e-05 +55.20235960907661 -0.30235232122727024 2.338628874101259e-06 0.00038822967821137153 1.0386083807203053e-05 +55.24109804429803 -0.3023523261144285 2.338617496703755e-06 0.0003887747584403373 1.0400597440651767e-05 +55.279836479431445 -0.30235233100158726 2.3386061222532454e-06 0.00038932022157890596 1.0415119909517782e-05 +55.318574914476834 -0.30235233588874716 2.3385947506699245e-06 0.0003898660534279691 1.042965365951873e-05 +55.35731334943422 -0.30235234077590706 2.338583381983055e-06 0.00039041227686089237 1.0444196869835455e-05 +55.39605178430357 -0.3023523456630674 2.3385720162032172e-06 0.00039095888542047636 1.0458748347030291e-05 +55.434790219084924 -0.3023523505502284 2.338560653432938e-06 0.00039150586679053204 1.0473313751764005e-05 +55.47352865377826 -0.30235235543738964 2.338549293447553e-06 0.0003920532380361996 1.0487886215425254e-05 +55.51226708838359 -0.3023523603245515 2.3385379363455324e-06 0.00039260098641620236 1.0502469452785282e-05 +55.55100552290088 -0.30235236521171366 2.3385265822392697e-06 0.0003931491159056349 1.051706234338682e-05 +55.589743957330164 -0.3023523700988766 2.338515230827023e-06 0.0003936976225880807 1.053166442634223e-05 +55.62848239167145 -0.30235237498603956 2.3385038825456354e-06 0.00039424651500804354 1.054627575219913e-05 +55.66722082592471 -0.302352379873203 2.3384925370528354e-06 0.0003947957890511791 1.056089887960882e-05 +55.70595926008997 -0.302352384760367 2.3384811944934144e-06 0.0003953454425783846 1.0575532795862108e-05 +55.744697694167215 -0.3023523896475312 2.3384698548013735e-06 0.0003958954798786392 1.059017495472231e-05 +55.78343612815645 -0.30235239453469553 2.3384585180184507e-06 0.0003964458992765345 1.0604828609050156e-05 +55.82217456205766 -0.3023523994218605 2.338447184120365e-06 0.0003969966976112374 1.0619490729516282e-05 +55.86091299587089 -0.3023524043090255 2.3384358531248982e-06 0.00039754788336779926 1.0634162761013924e-05 +55.89965142959606 -0.30235240919619116 2.3384245250144066e-06 0.00039809944222800325 1.0648846293334452e-05 +55.938389863233226 -0.3023524140833571 2.3384131999098862e-06 0.00039865138459851826 1.0663537939026133e-05 +55.9771282967824 -0.3023524189705231 2.3384018775302874e-06 0.0003992037093014091 1.0678241089778438e-05 +56.01586673024356 -0.30235242385768935 2.3383905580956514e-06 0.0003997564224213766 1.0692951684175732e-05 +56.0546051636167 -0.30235242874485646 2.3383792415859955e-06 0.00040030950419247966 1.0707676252839896e-05 +56.09334359690183 -0.3023524336320234 2.3383679280400317e-06 0.00040086297232700356 1.0722407841922372e-05 +56.13208203009894 -0.3023524385191905 2.338356617217865e-06 0.0004014168209182255 1.0737147811017206e-05 +56.17082046320805 -0.30235244340635786 2.3383453094215302e-06 0.00040197105610017257 1.0751902034258051e-05 +56.20955889622915 -0.3023524482935256 2.3383340044492957e-06 0.0004025256694952224 1.0766664315842993e-05 +56.248297329162234 -0.3023524531806936 2.3383227024170097e-06 0.00040308066134389317 1.0781435802301438e-05 +56.287035762007314 -0.30235245806786165 2.3383114032639847e-06 0.0004036360386884896 1.0796217746838241e-05 +56.32577419476438 -0.3023524629550297 2.33830010696847e-06 0.0004041918000862368 1.0811009824973199e-05 +56.36451262743342 -0.3023524678421982 2.3382888136217075e-06 0.00040474793472770865 1.0825811905415753e-05 +56.40325106001446 -0.30235247272936666 2.338277523098363e-06 0.0004053044576216517 1.0840623893410732e-05 +56.44198949250752 -0.3023524776165356 2.3382662355263278e-06 0.0004058613548102525 1.0855444572060918e-05 +56.480727924912536 -0.30235248250370456 2.3382549509000165e-06 0.0004064186380188391 1.0870275470942365e-05 +56.51946635722953 -0.3023524873908734 2.3382436690195205e-06 0.00040697630520568134 1.088511760259999e-05 +56.55820478945856 -0.3023524922780427 2.338232390076209e-06 0.0004075343494168347 1.0899967007564328e-05 +56.59694322159955 -0.3023524971652118 2.338221114107639e-06 0.00040809277707924636 1.0914831348692269e-05 +56.63568165365251 -0.30235250205238146 2.338209840926191e-06 0.00040865157599472105 1.0929701525816457e-05 +56.6744200856175 -0.30235250693955074 2.338198570640324e-06 0.00040921077112757756 1.0944583732809242e-05 +56.71315851749447 -0.3023525118267199 2.3381873033663592e-06 0.00040977034360917307 1.0959474414265112e-05 +56.75189694928342 -0.3023525167138897 2.3381760388597554e-06 0.0004103302951831834 1.0974376536454951e-05 +56.79063538098437 -0.3023525216010596 2.338164777180293e-06 0.0004108906225660917 1.0989287317615742e-05 +56.82937381259732 -0.30235252648822897 2.338153518586545e-06 0.00041145134093405314 1.1004208080579424e-05 +56.868112244122244 -0.3023525313753987 2.3381422627918753e-06 0.00041201243598481765 1.1019140310063531e-05 +56.90685067555917 -0.30235253626256814 2.3381310099024978e-06 0.00041257391292061287 1.1034080567386492e-05 +56.94558910690809 -0.3023525411497377 2.3381197597877367e-06 0.00041313577341987195 1.1049031687050794e-05 +56.984327538168976 -0.3023525460369077 2.3381085126920654e-06 0.0004136980079221634 1.1063992776102111e-05 +57.02306596934187 -0.3023525509240772 2.3380972684334343e-06 0.00041426062751255397 1.1078965130928552e-05 +57.06180440042677 -0.30235255581124637 2.338086027040973e-06 0.00041482363914318253 1.1093944279691647e-05 +57.10054283142366 -0.3023525606984164 2.3380747886330967e-06 0.00041538701389498843 1.1108933578221148e-05 +57.13928126233253 -0.3023525655855856 2.3380635529995108e-06 0.0004159507842885698 1.112393568495135e-05 +57.178019693153395 -0.30235257047275527 2.33805232024958e-06 0.0004165149242446526 1.1138946425308106e-05 +57.216758123886244 -0.3023525753599243 2.33804109046177e-06 0.00041707945195716456 1.1153965994329015e-05 +57.25549655453112 -0.3023525802470937 2.3380298634560607e-06 0.0004176443617707546 1.1168996849170359e-05 +57.294234985087954 -0.3023525851342626 2.338018639362062e-06 0.00041820965458366647 1.1184038205208665e-05 +57.33297341555679 -0.3023525900214316 2.338007418232368e-06 0.0004187753251193906 1.1199087686476141e-05 +57.37171184593764 -0.3023525949086007 2.3379961999593057e-06 0.00041934137004620374 1.1214146588537104e-05 +57.41045027623046 -0.30235259979576923 2.3379849845390755e-06 0.0004199078070673417 1.1229216610245733e-05 +57.44918870643528 -0.30235260468293795 2.337973772058451e-06 0.0004204746212971878 1.124429791955986e-05 +57.4879271365521 -0.3023526095701063 2.337962562444308e-06 0.00042104181442750464 1.1259387866533684e-05 +57.5266655665809 -0.30235261445727457 2.337951355669126e-06 0.0004216093919313158 1.127448728871687e-05 +57.56540399652172 -0.3023526193444426 2.3379401517188893e-06 0.000422177349819297 1.1289597266619463e-05 +57.604142426374516 -0.3023526242316101 2.337928950813564e-06 0.0004227456953044752 1.1304716728144259e-05 +57.64288085613932 -0.3023526291187777 2.3379177526249203e-06 0.00042331441200491753 1.1319844821174637e-05 +57.68161928581609 -0.3023526340059451 2.337906557471923e-06 0.0004238835154150476 1.1334985412008031e-05 +57.72035771540487 -0.3023526388931123 2.337895365139668e-06 0.0004244529945549061 1.1350135039952836e-05 +57.75909614490566 -0.3023526437802791 2.337884175649413e-06 0.0004250228613492343 1.136529610259402e-05 +57.797834574318415 -0.30235264866744543 2.337872989120614e-06 0.00042559311169069217 1.1380462894021265e-05 +57.836573003643196 -0.3023526535546119 2.3378618053712308e-06 0.00042616373439365333 1.1395642807614714e-05 +57.87531143287996 -0.302352658441778 2.3378506245976035e-06 0.0004267347399300113 1.1410833659261003e-05 +57.91404986202873 -0.3023526633289435 2.3378394466403828e-06 0.00042730613272099643 1.1426031228046357e-05 +57.952788291089476 -0.30235266821610907 2.3378282715420257e-06 0.00042787789948768194 1.1441239588760345e-05 +57.991526720062225 -0.3023526731032743 2.3378170993576653e-06 0.0004284500500040712 1.1456460438299577e-05 +58.03026514894699 -0.30235267799043897 2.337805930077739e-06 0.00042902258145978054 1.14716895238398e-05 +58.06900357774374 -0.3023526828776034 2.3377947636027474e-06 0.00042959549270156705 1.1486927179073738e-05 +58.10774200645246 -0.3023526877647675 2.337783600131385e-06 0.00043016878814308696 1.1502175175080107e-05 +58.1464804350732 -0.3023526926519313 2.337772439460879e-06 0.00043074246228684885 1.1517434398139679e-05 +58.18521886360594 -0.3023526975390942 2.3377612816580666e-06 0.0004313165249915561 1.1532702611817782e-05 +58.223957292050684 -0.30235270242625717 2.337750126784739e-06 0.00043189096531766205 1.1547980292916011e-05 +58.26269572040741 -0.30235270731341973 2.337738974726182e-06 0.0004324657824176334 1.1563269653726761e-05 +58.30143414867614 -0.3023527122005818 2.3377278255426374e-06 0.0004330409823076556 1.1578567207259234e-05 +58.34017257685686 -0.3023527170877435 2.337716679263528e-06 0.00043361656068227676 1.1593876909575495e-05 +58.37891100494958 -0.3023527219749048 2.337705535916979e-06 0.00043419252115902833 1.1609194999261194e-05 +58.417649432954306 -0.3023527268620654 2.3376943953273683e-06 0.0004347688680819485 1.1624521857090184e-05 +58.45638786087102 -0.3023527317492257 2.337683257691232e-06 0.0004353455943355692 1.1639860438481302e-05 +58.49512628869975 -0.30235273663638534 2.3376721229529163e-06 0.00043592270069350733 1.1655208938576518e-05 +58.533864716440476 -0.30235274152354485 2.33766099097488e-06 0.0004365001851947459 1.1670567365120438e-05 +58.57260314409318 -0.3023527464107038 2.3376498620411536e-06 0.0004370780488642478 1.1685934008711318e-05 +58.611341571657896 -0.3023527512978621 2.3376387358241015e-06 0.00043765630028406126 1.170131201223507e-05 +58.650079999134604 -0.3023527561850197 2.337627612523988e-06 0.0004382349317364385 1.1716698830002988e-05 +58.688818426523326 -0.3023527610721768 2.3376164921844096e-06 0.00043881394897431295 1.1732095450709244e-05 +58.72755685382405 -0.30235276595933364 2.3376053745770557e-06 0.00043939333679769856 1.1747504344108083e-05 +58.766295281036754 -0.30235277084648987 2.3375942599715945e-06 0.0004399731063562536 1.1762921802595044e-05 +58.805033708161446 -0.30235277573364516 2.3375831482396834e-06 0.00044055326819317757 1.177834923017247e-05 +58.84377213519817 -0.3023527806208 2.337572039267285e-06 0.0004411338026402245 1.1793784927872322e-05 +58.88251056214689 -0.3023527855079545 2.3375609332788732e-06 0.00044171471799967074 1.1809232558110491e-05 +58.92124898900761 -0.30235279039510815 2.3375498300864026e-06 0.0004422960168874803 1.1824688635544212e-05 +58.959987415780326 -0.3023527952822612 2.3375387297763098e-06 0.00044287769555245005 1.184015559408143e-05 +58.998725842465035 -0.30235280016941385 2.3375276323183386e-06 0.00044345975532479864 1.1855631730889909e-05 +59.037464269061715 -0.3023528050565656 2.337516537796027e-06 0.00044404219627770276 1.18711191074933e-05 +59.076202695570466 -0.3023528099437167 2.3375054461579705e-06 0.0004446250175031579 1.1886614540453305e-05 +59.11494112199118 -0.3023528148308671 2.3374943573681767e-06 0.000445208220209343 1.1902121993873578e-05 +59.153679548323886 -0.3023528197180171 2.3374832714231095e-06 0.00044579180501512706 1.1917637596406481e-05 +59.19241797456861 -0.3023528246051665 2.3374721882851227e-06 0.00044637576473683093 1.193316509060357e-05 +59.231156400725354 -0.30235282949231485 2.3374611081829087e-06 0.00044696011700343514 1.1948699722513231e-05 +59.269894826794086 -0.3023528343794626 2.3374500307738907e-06 0.00044754483980702494 1.1964245825561529e-05 +59.308633252774804 -0.30235283926660944 2.3374389562760295e-06 0.00044812994916544694 1.1979802459119146e-05 +59.34737167866753 -0.3023528441537558 2.3374278847299753e-06 0.0004487154400646795 1.1995366760893406e-05 +59.386110104472266 -0.3023528490409013 2.3374168159619744e-06 0.0004493013104401731 1.2010944707771826e-05 +59.42484853018899 -0.30235285392804606 2.3374057500848907e-06 0.0004498875623462511 1.20265284156589e-05 +59.46358695581773 -0.30235285881519025 2.3373946871459537e-06 0.0004504741852597192 1.2042123247134392e-05 +59.50232538135847 -0.3023528637023329 2.337383627012168e-06 0.00045106120987566117 1.2057729741995606e-05 +59.54106380681122 -0.30235286858947535 2.337372569777867e-06 0.0004516486023956325 1.2073344977758717e-05 +59.579802232175965 -0.3023528734766171 2.3373615153963035e-06 0.00045223637458698855 1.2088971778634611e-05 +59.618540657452705 -0.30235287836375785 2.3373504638968353e-06 0.0004528245304388589 1.2104606444323534e-05 +59.65727908264148 -0.30235288325089754 2.3373394152455027e-06 0.0004534130675074068 1.2120252086294955e-05 +59.69601750774221 -0.3023528881380367 2.3373283694627925e-06 0.00045400198602642917 1.2135905767469422e-05 +59.73475593275499 -0.3023528930251747 2.3373173264801622e-06 0.0004545912872081335 1.2151568509903866e-05 +59.77349435767978 -0.30235289791231224 2.337306286498456e-06 0.0004551809655805561 1.2167244357137064e-05 +59.81223278251654 -0.3023529027994485 2.3372952492434856e-06 0.0004557710298889624 1.2182929595449684e-05 +59.85097120726532 -0.3023529076865841 2.337284214939101e-06 0.000456361470364815 1.2198622627640098e-05 +59.889709631926095 -0.3023529125737187 2.3372731835275426e-06 0.00045695229096706413 1.2214326495553787e-05 +59.92844805649887 -0.3023529174608524 2.3372621548463322e-06 0.00045754349756255526 1.2230043501625704e-05 +59.96718648098367 -0.302352922347985 2.337251129076083e-06 0.0004581350878507186 1.2245766301252903e-05 +60.00592490538048 -0.3023529272351171 2.3372401061803603e-06 0.00045872704672673725 1.226150068154871e-05 +60.044663329689264 -0.3023529321222477 2.3372290862579e-06 0.00045931939748755825 1.2277243039794395e-05 +60.083401753910074 -0.30235293700937765 2.337218069054018e-06 0.00045991212531503784 1.2292996647858579e-05 +60.1221401780429 -0.3023529418965066 2.337207054843156e-06 0.00046050523527287345 1.230876107032997e-05 +60.16087860208772 -0.3023529467836347 2.3371960433598137e-06 0.000461098718011982 1.2324536046961233e-05 +60.19961702604455 -0.3023529516707613 2.3371850347748234e-06 0.00046169259669815913 1.2340318126630038e-05 +60.23835544991338 -0.3023529565578879 2.337174029049734e-06 0.0004622868364433435 1.2356110591258958e-05 +60.27709387369423 -0.3023529614450123 2.3371630262204854e-06 0.0004628814770202415 1.2371915954250508e-05 +60.31583229738707 -0.30235296633213615 2.3371520263319387e-06 0.00046347648610848695 1.238772936505254e-05 +60.35457072099193 -0.302352971219259 2.3371410291541364e-06 0.0004640718823667237 1.2403551098718795e-05 +60.39330914450883 -0.3023529761063807 2.3371300349304224e-06 0.00046466765625801146 1.2419383190992667e-05 +60.43204756793767 -0.3023529809935012 2.337119043573621e-06 0.00046526381227925427 1.2435224664384044e-05 +60.47078599127856 -0.3023529858806209 2.337108054960166e-06 0.00046586034907735775 1.2451079190343885e-05 +60.50952441453144 -0.3023529907677394 2.3370970693139586e-06 0.0004664572655903884 1.2466941634688873e-05 +60.54826283769635 -0.3023529956548569 2.337086086512598e-06 0.00046705456202631514 1.248281535462324e-05 +60.58700126077328 -0.30235300054197306 2.337075106486888e-06 0.0004676522420718726 1.249869579379734e-05 +60.62573968376215 -0.3023530054290883 2.337064129447773e-06 0.0004682503002649371 1.2514589626596736e-05 +60.66447810666309 -0.30235301031620215 2.337053155200015e-06 0.00046884874323669783 1.2530492054618735e-05 +60.70321652947602 -0.30235301520331487 2.337042183823454e-06 0.00046944756750651054 1.254640375302007e-05 +60.74195495220094 -0.3023530200904267 2.337031215299623e-06 0.00047004676782817735 1.256232335476379e-05 +60.7806933748379 -0.30235302497753724 2.337020249610164e-06 0.0004706463471317169 1.25782551338755e-05 +60.81943179738687 -0.30235302986464635 2.337009286810926e-06 0.00047124631690415394 1.2594197801913317e-05 +60.85817021984784 -0.30235303475175435 2.3369983268367185e-06 0.0004718466616892938 1.2610149464198808e-05 +60.896908642220794 -0.30235303963886134 2.3369873697073518e-06 0.00047244738436964204 1.2626110874170209e-05 +60.9356470645058 -0.3023530445259668 2.336976415464708e-06 0.0004730484959224414 1.2642081699363927e-05 +60.97438548670279 -0.30235304941307123 2.336965464050853e-06 0.0004736499797804799 1.265806347279492e-05 +61.013123908811814 -0.30235305430017423 2.3369545155397837e-06 0.0004742518488839061 1.2674053311117557e-05 +61.051862330832854 -0.3023530591872761 2.3369435698401872e-06 0.0004748541001550818 1.2690054048743929e-05 +61.090600752765894 -0.3023530640743766 2.3369326270952344e-06 0.0004754567331801079 1.2706065388384233e-05 +61.129339174610934 -0.302353068961476 2.336921687085257e-06 0.00047605973844355156 1.2722083991007684e-05 +61.16807759636799 -0.3023530738485738 2.336910749957612e-06 0.0004766631338807912 1.27381157634063e-05 +61.20681601803706 -0.30235307873567074 2.3368998156673026e-06 0.00047726690205413387 1.2754156566276642e-05 +61.24555443961812 -0.3023530836227664 2.3368888842610775e-06 0.0004778710497579345 1.2770207364753345e-05 +61.28429286111125 -0.3023530885098602 2.33687795573114e-06 0.0004784755871012655 1.2786268725750691e-05 +61.32303128251634 -0.3023530933969527 2.3368670299764106e-06 0.00047908050534549597 1.2802336419431875e-05 +61.361769703833446 -0.30235309828404394 2.3368561071056506e-06 0.00047968580247977364 1.2818415331764347e-05 +61.40050812506256 -0.30235310317113395 2.3368451871332827e-06 0.00048029147692956473 1.2834505863657386e-05 +61.43924654620372 -0.30235310805822263 2.3368342700291462e-06 0.0004808975312194622 1.2850604908925448e-05 +61.47798496725687 -0.3023531129453097 2.336823355702255e-06 0.000481503969593295 1.2866715310711356e-05 +61.51672338822205 -0.3023531178323955 2.336812444223742e-06 0.0004821107867090638 1.2882832997208132e-05 +61.555461809099235 -0.3023531227194797 2.336801535659763e-06 0.0004827179908556327 1.2898963490654389e-05 +61.59420022988843 -0.3023531276065627 2.336790629870519e-06 0.0004833255702302265 1.2915102122230705e-05 +61.63293865058968 -0.30235313249364393 2.3367797269923264e-06 0.00048393353099258717 1.2931249553451302e-05 +61.671677071202865 -0.30235313738072417 2.3367688269289584e-06 0.0004845418690303472 1.2947409509241558e-05 +61.710415491728114 -0.3023531422678028 2.3367579297535556e-06 0.0004851505905266148 1.2963577962956766e-05 +61.74915391216537 -0.30235314715487954 2.3367470354085173e-06 0.00048575969562798956 1.2979756819240494e-05 +61.78789233251463 -0.3023531520419553 2.336736143892775e-06 0.0004863691763720344 1.2995945965470105e-05 +61.826630752775905 -0.302353156929029 2.3367252552081357e-06 0.0004869790505024455 1.3012141457711337e-05 +61.865369172949215 -0.30235316181610167 2.336714369455902e-06 0.00048758929064066943 1.3028350615473994e-05 +61.90410759303453 -0.30235316670317264 2.3367034865299328e-06 0.00048819991544637407 1.3044570222332454e-05 +61.942846013031875 -0.30235317159024183 2.3366926064674797e-06 0.0004888109271163482 1.3060797413447541e-05 +61.98158443294121 -0.3023531764773101 2.336681729162996e-06 0.0004894223062766154 1.3077033230671089e-05 +62.02032285276257 -0.30235318136437633 2.336670854674443e-06 0.0004900340761611871 1.309328277579489e-05 +62.05906127249595 -0.30235318625144086 2.336659983068795e-06 0.0004906462308737224 1.3109537943263108e-05 +62.09779969214137 -0.3023531911385044 2.3366491144519847e-06 0.0004912587560401248 1.3125805625633166e-05 +62.13653811169877 -0.3023531960255659 2.3366382485552712e-06 0.0004918716658484183 1.314208409926219e-05 +62.175276531168194 -0.3023532009126259 2.3366273854543636e-06 0.0004924849565889842 1.3158370012637424e-05 +62.21401495054964 -0.3023532057996841 2.336616525221772e-06 0.0004930986270833474 1.3174666640103354e-05 +62.252753369843106 -0.30235321068674104 2.3366056679393575e-06 0.0004937126731353818 1.3190973528349983e-05 +62.291491789048585 -0.3023532155737961 2.336594813469904e-06 0.0004943271123548954 1.3207291653006425e-05 +62.330230208166086 -0.3023532204608494 2.336583961834318e-06 0.0004949419290258776 1.3223616245039054e-05 +62.36896862719561 -0.3023532253479008 2.336573112958371e-06 0.0004955571259241655 1.3239952542139374e-05 +62.40770704613715 -0.3023532302349512 2.3365622670388286e-06 0.0004961726959518883 1.3256299456263939e-05 +62.44644546499069 -0.3023532351219994 2.336551423841213e-06 0.0004967886532764881 1.3272654407340884e-05 +62.48518388375629 -0.3023532400090461 2.33654058362279e-06 0.0004974049856360757 1.3289019924042745e-05 +62.52392230243388 -0.30235324489609106 2.3365297461796024e-06 0.0004980217050125756 1.3305395592942798e-05 +62.562660721023484 -0.3023532497831343 2.336518911570316e-06 0.0004986387993153587 1.3321781951446016e-05 +62.6013991395251 -0.30235325467017565 2.336508079904363e-06 0.0004992562832823287 1.3338176937645105e-05 +62.64013755793876 -0.3023532595572154 2.3364972509166857e-06 0.000499874136090111 1.3354581204283329e-05 +62.67887597626444 -0.30235326444425326 2.336486424860592e-06 0.0005004923797019101 1.3370995704526719e-05 +62.71761439450212 -0.3023532693312896 2.3364756015979594e-06 0.0005011109981671904 1.3387420473046672e-05 +62.75635281265183 -0.3023532742183238 2.3364647812433094e-06 0.000501729999126027 1.3403855418521843e-05 +62.79509123071357 -0.30235327910535653 2.3364539637587945e-06 0.0005023493793700606 1.342030034729415e-05 +62.83382964868732 -0.3023532839923874 2.3364431489884663e-06 0.0005029691374576104 1.3436756253965714e-05 +62.872568066573066 -0.3023532888794162 2.336432337085228e-06 0.0005035892819168253 1.3453216868504423e-05 +62.91130648437088 -0.30235329376644327 2.3364215280907426e-06 0.0005042098063780978 1.3469691564424754e-05 +62.950044902080705 -0.30235329865346844 2.336410721900857e-06 0.0005048307099250706 1.348617593830864e-05 +62.988783319702534 -0.302353303540492 2.3363999186165855e-06 0.0005054519884360021 1.3502670281666429e-05 +63.027521737236384 -0.3023533084275137 2.3363891179929e-06 0.0005060736505588502 1.3519173441821942e-05 +63.06626015468229 -0.30235331331453336 2.3363783203080306e-06 0.0005066956917075186 1.353568780635592e-05 +63.104998572040174 -0.30235331820155104 2.3363675254977395e-06 0.0005073181215684788 1.355221247734412e-05 +63.14373698931011 -0.30235332308856655 2.3363567334407115e-06 0.0005079409326415773 1.3568744654117297e-05 +63.18247540649206 -0.3023533279755805 2.3363459443330997e-06 0.0005085641164442456 1.358528635326409e-05 +63.22121382358603 -0.3023533328625927 2.336335157999369e-06 0.0005091876823205376 1.3601839771374529e-05 +63.25995224059203 -0.3023533377496028 2.336324374464159e-06 0.0005098116249692135 1.3618401741765787e-05 +63.29869065751004 -0.3023533426366106 2.3363135938310702e-06 0.0005104359580723676 1.363497669015453e-05 +63.33742907434008 -0.302353347523617 2.3363028160293455e-06 0.0005110606642025436 1.365155799309676e-05 +63.37616749108217 -0.3023533524106213 2.336292041026418e-06 0.0005116857487377094 1.3668148741752151e-05 +63.41490590773624 -0.3023533572976229 2.3362812688297363e-06 0.0005123112265474351 1.3684749752437475e-05 +63.45364432430235 -0.30235336218462344 2.336270499571473e-06 0.0005129370724319658 1.3701363796591062e-05 +63.4923827407805 -0.30235336707162125 2.3362597330354656e-06 0.000513563306451095 1.3717983687005914e-05 +63.53112115717064 -0.30235337195861767 2.336248969423709e-06 0.0005141899162300613 1.3734618325473492e-05 +63.569859573472854 -0.3023533768456116 2.3362382085790066e-06 0.0005148169073097569 1.375125843680194e-05 +63.60859798968708 -0.30235338173260334 2.336227450638166e-06 0.0005154442824731234 1.3767908739418808e-05 +63.64733640581329 -0.30235338661959327 2.336216695467576e-06 0.000516072034981984 1.3784569197264431e-05 +63.68607482185157 -0.30235339150658114 2.3362059431445845e-06 0.0005167001720245261 1.3801241748071946e-05 +63.724813237801904 -0.30235339639356695 2.336195193678986e-06 0.0005173286825196758 1.381791969743328e-05 +63.763551653664194 -0.30235340128055044 2.3361844470415683e-06 0.0005179575784738534 1.3834610063614428e-05 +63.80229006943853 -0.3023534061675326 2.3361737032271177e-06 0.0005185868423648265 1.3851313960041337e-05 +63.84102848512489 -0.3023534110545117 2.336162962206412e-06 0.0005192165024979334 1.3868023532580986e-05 +63.87976690072329 -0.30235341594148896 2.336152224093616e-06 0.0005198465354581273 1.3884741780304991e-05 +63.918505316233734 -0.3023534208284641 2.336141488700872e-06 0.0005204769489235316 1.3901472926338425e-05 +63.95724373165617 -0.3023534257154372 2.336130756196948e-06 0.0005211077479453399 1.3918211679914069e-05 +63.99598214699065 -0.302353430602408 2.336120026540264e-06 0.0005217389252316732 1.3934960614211671e-05 +64.03472056223717 -0.3023534354893766 2.336109299678663e-06 0.0005223704823476543 1.395171929400326e-05 +64.07345897739569 -0.302353440376343 2.3360985757179667e-06 0.0005230024212002778 1.3968489552745541e-05 +64.11219739246624 -0.30235344526330726 2.3360878544508847e-06 0.0005236347393248977 1.3985268722804765e-05 +64.15093580744885 -0.30235345015026927 2.336077136121158e-06 0.0005242674350064452 1.4002056615990093e-05 +64.18967422234351 -0.30235345503722905 2.3360664206339657e-06 0.0005249005143591855 1.4018856015387184e-05 +64.22841263715013 -0.30235345992418644 2.3360557079081416e-06 0.0005255339790080437 1.4035663819689537e-05 +64.26715105186882 -0.30235346481114217 2.336044998087953e-06 0.0005261678061296758 1.405248075396286e-05 +64.30588946649952 -0.30235346969809496 2.336034291082782e-06 0.0005268020314335716 1.4069308452726289e-05 +64.34462788104227 -0.3023534745850458 2.3360235867819202e-06 0.0005274366339266056 1.408614766153114e-05 +64.38336629549704 -0.30235347947199404 2.3360128854151383e-06 0.0005280716206178892 1.4102994894279651e-05 +64.42210470986383 -0.3023534843589401 2.3360021867972904e-06 0.0005287069786145501 1.4119851883729902e-05 +64.46084312414266 -0.302353489245884 2.3359914910872905e-06 0.0005293427163976446 1.4136720799201108e-05 +64.4995815383335 -0.30235349413282564 2.3359807982207027e-06 0.0005299788444598175 1.4153599055844945e-05 +64.53831995243642 -0.3023534990197645 2.33597010813779e-06 0.0005306153478797193 1.417048675995621e-05 +64.57705836645134 -0.30235350390670174 2.335959420830278e-06 0.0005312522233931663 1.4187382141447087e-05 +64.6157967803783 -0.30235350879363626 2.3359487363941826e-06 0.0005318894802668867 1.4204287352149028e-05 +64.65453519421729 -0.3023535136805682 2.335938054789922e-06 0.0005325271318962404 1.4221203572963587e-05 +64.69327360796828 -0.30235351856749787 2.3359273760451796e-06 0.0005331651512231035 1.4238132102716698e-05 +64.73201202163136 -0.30235352345442507 2.335916700090272e-06 0.0005338035577975605 1.4255066257240754e-05 +64.77075043520645 -0.30235352834135026 2.33590602687933e-06 0.0005344423379767372 1.4272012064310996e-05 +64.80948884869355 -0.3023535332282724 2.3358953566300536e-06 0.000535081511720959 1.4288968599598542e-05 +64.84822726209269 -0.30235353811519255 2.3358846890626904e-06 0.0005357210554482982 1.4305932090798865e-05 +64.8869656754039 -0.30235354300211015 2.3358740243145026e-06 0.0005363609765642353 1.4322909940822157e-05 +64.92570408862707 -0.3023535478890253 2.335863362578241e-06 0.0005370012797017977 1.4339896491450165e-05 +64.96444250176233 -0.30235355277593795 2.33585270353819e-06 0.0005376419675482567 1.4356890556994455e-05 +65.00318091480963 -0.30235355766284827 2.3358420473014267e-06 0.000538283032733365 1.4373893000917142e-05 +65.04191932776894 -0.3023535625497561 2.3358313938728556e-06 0.000538924477808788 1.439090948266612e-05 +65.08065774064029 -0.30235356743666114 2.3358207433728e-06 0.0005395663050876199 1.4407933095578627e-05 +65.11939615342371 -0.3023535723235637 2.33581009559246e-06 0.0005402085136298242 1.4424968284403317e-05 +65.15813456611907 -0.3023535772104637 2.3357994506567407e-06 0.000540851103559289 1.4442010733224702e-05 +65.19687297872655 -0.30235358209736146 2.3357888086330875e-06 0.0005414940691487531 1.4459063360677443e-05 +65.23561139124604 -0.3023535869842566 2.3357781693247313e-06 0.0005421374200464446 1.4476129705294468e-05 +65.27434980367758 -0.30235359187114913 2.335767532783273e-06 0.0005427811443760199 1.4493202988539975e-05 +65.31308821602116 -0.302353596758039 2.3357568990959987e-06 0.0005434252501905607 1.4510285872438894e-05 +65.35182662827671 -0.30235360164492625 2.3357462683547315e-06 0.0005440697416617487 1.4527378830258983e-05 +65.39056504044437 -0.3023536065318113 2.335735640308857e-06 0.0005447146070936575 1.4544479472566543e-05 +65.42930345252404 -0.30235361141869305 2.3357250150150735e-06 0.0005453598631886395 1.4561594326841869e-05 +65.46804186451575 -0.30235361630557267 2.335714392627277e-06 0.0005460054868521558 1.457871573857779e-05 +65.50678027641948 -0.30235362119244963 2.3357037731506067e-06 0.000546651494835291 1.4595849053618652e-05 +65.54551868823529 -0.3023536260793236 2.3356931562383323e-06 0.0005472978896593103 1.461299077085238e-05 +65.58425709996311 -0.30235363096619516 2.3356825423916582e-06 0.0005479446588626265 1.4630141017414677e-05 +65.62299551160297 -0.3023536358530643 2.335671931245198e-06 0.0005485918057977374 1.4647305768413522e-05 +65.66173392315487 -0.30235364073993004 2.3356613229875947e-06 0.0005492393457997867 1.466447674969397e-05 +65.70047233461881 -0.30235364562679373 2.335650717490744e-06 0.0005498872504105233 1.4681657143037169e-05 +65.73921074599477 -0.3023536505136545 2.3356401148092745e-06 0.0005505355375457798 1.4698845872354018e-05 +65.77794915728279 -0.30235365540051273 2.335629515005367e-06 0.000551184210603009 1.4716049913146857e-05 +65.81668756848283 -0.3023536602873682 2.335618917912164e-06 0.0005518332585677514 1.4733259993479387e-05 +65.85542597959491 -0.30235366517422063 2.3356083236660207e-06 0.0005524826885099945 1.4750479115642896e-05 +65.89416439061908 -0.3023536700610702 2.335597732267718e-06 0.0005531325088507339 1.4767710917793299e-05 +65.93290280155526 -0.3023536749479174 2.335587143679345e-06 0.0005537826974196369 1.4784949938708721e-05 +65.97164121240345 -0.30235367983476164 2.3355765578277516e-06 0.0005544332750754692 1.4802199946976134e-05 +66.01037962316369 -0.30235368472160334 2.335565974819249e-06 0.0005550842246867282 1.4819460804111369e-05 +66.049118033836 -0.30235368960844206 2.3355553947071754e-06 0.0005557355537746499 1.4836730363192668e-05 +66.08785644442032 -0.30235369449527777 2.3355448173054775e-06 0.0005563872669864831 1.485400845844046e-05 +66.1265948549167 -0.30235369938211104 2.3355342427205902e-06 0.0005570393517409321 1.4871297312811329e-05 +66.16533326532512 -0.30235370426894115 2.335523671021585e-06 0.0005576918297444562 1.4888597545644752e-05 +66.20407167564554 -0.3023537091557686 2.335513102103001e-06 0.0005583446839091055 1.4905904177478246e-05 +66.24281008587806 -0.30235371404259304 2.3355025358790926e-06 0.0005589979163265483 1.4923224922319564e-05 +66.28154849602264 -0.3023537189294144 2.3354919726054837e-06 0.0005596515323824804 1.4940551516961143e-05 +66.32028690607919 -0.3023537238162335 2.3354814120817864e-06 0.0005603055176621044 1.4957886816499413e-05 +66.35902531604783 -0.3023537287030493 2.3354708544704496e-06 0.0005609598939587837 1.4975236500300502e-05 +66.39776372592853 -0.30235373358986234 2.3354602995692404e-06 0.0005616146434563274 1.499259404136886e-05 +66.43650213572121 -0.3023537384766724 2.3354497474905535e-06 0.0005622697791598858 1.5009962657624601e-05 +66.47524054542598 -0.30235374336347937 2.3354391981680533e-06 0.0005629252921890985 1.5027338546546649e-05 +66.51397895504279 -0.3023537482502833 2.3354286517164704e-06 0.0005635811920248192 1.5044725963780825e-05 +66.55271736457163 -0.3023537531370845 2.3354181081325007e-06 0.0005642374663585706 1.5062123845079995e-05 +66.59145577401253 -0.302353758023883 2.335407567256459e-06 0.0005648941164453286 1.5079529758608674e-05 +66.63019418336548 -0.3023537629106777 2.3353970292315113e-06 0.0005655511586942356 1.5096945312477995e-05 +66.66893259263044 -0.30235376779747053 2.3353864939528495e-06 0.0005662085592244185 1.5114371021996901e-05 +66.70767100180744 -0.3023537726842594 2.3353759615194993e-06 0.000566866356654103 1.513180746379706e-05 +66.74640941089652 -0.30235377757104576 2.3353654318952035e-06 0.0005675245329666456 1.514925058237718e-05 +66.78514781989765 -0.3023537824578288 2.335354905056883e-06 0.0005681830920148715 1.5166708856936795e-05 +66.82388622881084 -0.30235378734460905 2.335344381116166e-06 0.0005688420205491931 1.5184172288506462e-05 +66.86262463763603 -0.302353792231386 2.3353338598710286e-06 0.0005695013356013082 1.5201647292665994e-05 +66.90136304637328 -0.3023537971181602 2.335323341436771e-06 0.0005701610299664307 1.5219132465230773e-05 +66.94010145502259 -0.30235380200493095 2.3353128258751046e-06 0.0005708211059912741 1.5236628964027598e-05 +66.97883986358394 -0.30235380689169894 2.335302313047118e-06 0.0005714815549100112 1.5254130577817657e-05 +67.01757827205732 -0.3023538117784637 2.3352918031036306e-06 0.0005721423908537144 1.527164503065802e-05 +67.05631668044279 -0.30235381666522543 2.335281295851302e-06 0.0005728035980991718 1.5289171158396537e-05 +67.09505508874027 -0.3023538215519835 2.3352707914816563e-06 0.0005734652070980476 1.530670347774373e-05 +67.13379349694979 -0.30235382643873915 2.3352602899019674e-06 0.0005741271762892479 1.532424477481288e-05 +67.1725319050714 -0.3023538313254916 2.33524979111823e-06 0.0005747895246345674 1.5341799214848094e-05 +67.21127031310502 -0.3023538362122405 2.3352392951341154e-06 0.0005754522624569922 1.535936356151392e-05 +67.2500087210507 -0.3023538410989862 2.33522880188828e-06 0.0005761153840932523 1.5376935937671013e-05 +67.28874712890844 -0.3023538459857292 2.3352183115487746e-06 0.0005767788706500438 1.5394518210211225e-05 +67.32748553667825 -0.30235385087246885 2.335207823967369e-06 0.0005774427426028171 1.541210911641398e-05 +67.36622394436007 -0.30235385575920504 2.335197339244226e-06 0.0005781069986211529 1.542971270024332e-05 +67.40496235195397 -0.3023538606459381 2.3351868572108635e-06 0.0005787716339047676 1.5447323280329735e-05 +67.44370075945992 -0.30235386553266763 2.3351763780001823e-06 0.0005794366548759821 1.5464944233841536e-05 +67.48243916687788 -0.30235387041939443 2.335165901630085e-06 0.0005801020441905944 1.5482576260932417e-05 +67.52117757420794 -0.30235387530611774 2.3351554280163784e-06 0.000580767818843756 1.550021695425985e-05 +67.55991598145002 -0.3023538801928378 2.3351449572375748e-06 0.0005814339756728318 1.551786953188295e-05 +67.59865438860416 -0.3023538850795548 2.3351344892402287e-06 0.0005821005057171257 1.5535529342092108e-05 +67.63739279567034 -0.3023538899662684 2.335124023995853e-06 0.0005827674129433956 1.5553199805526492e-05 +67.6761312026486 -0.3023538948529786 2.3351135617088296e-06 0.0005834347104216768 1.5570878906894805e-05 +67.71486960953887 -0.3023538997396855 2.3351031020354355e-06 0.0005841023815521814 1.558856770390632e-05 +67.75360801634125 -0.3023539046263888 2.3350926452044397e-06 0.0005847704430583252 1.5606271046207996e-05 +67.79234642305565 -0.3023539095130892 2.335082191218602e-06 0.0005854388673835709 1.562398064401217e-05 +67.83108482968208 -0.3023539143997863 2.3350717399596332e-06 0.0005861076805154055 1.564169643356675e-05 +67.86982323622058 -0.3023539192864794 2.3350612915970762e-06 0.0005867768852744019 1.565942670101996e-05 +67.90856164267116 -0.3023539241731699 2.335050845964035e-06 0.0005874464506686266 1.5677167223430543e-05 +67.94730004903374 -0.3023539290598565 2.3350404031581637e-06 0.0005881164005805853 1.569491320258415e-05 +67.98603845530846 -0.30235393394653987 2.3350299631073013e-06 0.0005887867342336448 1.5712670797700956e-05 +68.02477686149516 -0.30235393883321976 2.335019525855144e-06 0.0005894574533478015 1.5730438693962694e-05 +68.06351526759394 -0.30235394371989627 2.3350090913677886e-06 0.0005901285447011084 1.5748218175602776e-05 +68.10225367360479 -0.30235394860656967 2.3349986596960205e-06 0.0005908000094288947 1.5766005885155462e-05 +68.14099207952768 -0.30235395349323885 2.334988230851856e-06 0.0005914718756495059 1.5783801908907734e-05 +68.1797304853626 -0.3023539583799054 2.334977804770289e-06 0.0005921440950911781 1.580161079364434e-05 +68.21846889110961 -0.3023539632665681 2.334967381523919e-06 0.0005928167096454355 1.5819427233382714e-05 +68.25720729676867 -0.3023539681532273 2.3349569610675036e-06 0.0005934897000132038 1.5837253143009905e-05 +68.2959457023398 -0.30235397303988293 2.3349465433399006e-06 0.0005941630763593108 1.585508951016889e-05 +68.33468410782297 -0.3023539779265352 2.3349361283859324e-06 0.0005948368289524033 1.5872934151127454e-05 +68.37342251321819 -0.302353982813184 2.3349257163657903e-06 0.0005955109602658247 1.5890791802738832e-05 +68.41216091852546 -0.3023539876998293 2.334915307040172e-06 0.0005961854664103205 1.5908657447397248e-05 +68.4508993237448 -0.30235399258647083 2.334904900433002e-06 0.0005968603564146345 1.5926532906549116e-05 +68.4896377288762 -0.30235399747310904 2.334894496660224e-06 0.0005975356241415011 1.594441521583548e-05 +68.52837613391968 -0.30235400235974325 2.3348840956663476e-06 0.0005982112838637939 1.596231345280642e-05 +68.5671145388752 -0.3023540072463742 2.3348736975664207e-06 0.0005988873169307619 1.5980217359276333e-05 +68.60585294374276 -0.3023540121330017 2.334863302196324e-06 0.0005995637237327515 1.5998131997073887e-05 +68.64459134852238 -0.30235401701962544 2.334852909520739e-06 0.0006002405131369326 1.6016055988901467e-05 +68.6833297532141 -0.30235402190624555 2.334842519735618e-06 0.0006009176810619416 1.603398901800818e-05 +68.72206815781786 -0.3023540267928622 2.3348321326833893e-06 0.0006015952289308992 1.605193322455222e-05 +68.76080656233366 -0.3023540316794749 2.334821748522416e-06 0.0006022731598881141 1.6069886283795792e-05 +68.79954496676153 -0.3023540365660841 2.334811367051773e-06 0.000602951469805013 1.608784798317888e-05 +68.8382833711015 -0.30235404145268935 2.3348009884312692e-06 0.0006036301665295365 1.610582246758119e-05 +68.87702177535347 -0.3023540463392915 2.3347906125603452e-06 0.0006043092280287369 1.6123804056344222e-05 +68.91576017951749 -0.30235405122588993 2.334780239500243e-06 0.0006049886722091284 1.6141795683833346e-05 +68.95449858359362 -0.302354056112484 2.3347698691289366e-06 0.0006056685092805263 1.6159800348813423e-05 +68.99323698758182 -0.30235406099907525 2.3347595016918654e-06 0.0006063487056353264 1.6177809022589963e-05 +69.03197539148205 -0.3023540658856624 2.3347491369477975e-06 0.0006070292919199051 1.6195834960196577e-05 +69.07071379529437 -0.30235407077224585 2.3347387748767224e-06 0.0006077102590879958 1.621386303758262e-05 +69.1094521990187 -0.30235407565882505 2.3347284157890566e-06 0.0006083916115918229 1.623190342278221e-05 +69.14819060265515 -0.30235408054540097 2.3347180594616336e-06 0.0006090733394998597 1.6249957460724548e-05 +69.18692900620367 -0.302354085431973 2.33470770577543e-06 0.0006097554491336583 1.6268015952674102e-05 +69.2256674096642 -0.30235409031854144 2.3346973550000967e-06 0.000610437930137099 1.628608443468684e-05 +69.2644058130368 -0.30235409520510564 2.3346870069297003e-06 0.0006111207988105013 1.630416762604854e-05 +69.30314421632154 -0.30235410009166663 2.334676661704415e-06 0.000611804042306143 1.6322257219338667e-05 +69.3418826195182 -0.3023541049782237 2.3346663192142042e-06 0.0006124876607441716 1.6340355824489234e-05 +69.38062102262707 -0.30235410986477657 2.334655979473006e-06 0.000613171673555899 1.6358465898111626e-05 +69.41935942564795 -0.30235411475132584 2.334645642621879e-06 0.0006138560550323565 1.6376583984933284e-05 +69.45809782858088 -0.3023541196378709 2.3346353084880488e-06 0.0006145408275910484 1.639471338057681e-05 +69.49683623142589 -0.30235412452441274 2.334624977056153e-06 0.0006152259573396814 1.64128507869701e-05 +69.53557463418298 -0.30235412941095 2.3346146485003668e-06 0.0006159114876433456 1.643099939221822e-05 +69.5743130368521 -0.302354134297484 2.3346043227902935e-06 0.000616597389080053 1.6449158430587125e-05 +69.61305143943332 -0.3023541391840137 2.3345939997226788e-06 0.0006172836776481544 1.6467324683811948e-05 +69.65178984192659 -0.30235414407053973 2.334583679514339e-06 0.000617970332720032 1.648550013818854e-05 +69.69052824433192 -0.30235414895706186 2.334573362066656e-06 0.0006186573706019354 1.650368972432733e-05 +69.72926664664932 -0.3023541538435798 2.334563047312785e-06 0.0006193447958329958 1.652188464440946e-05 +69.76800504887879 -0.30235415873009397 2.334552735439073e-06 0.0006200325957514655 1.6540092121692027e-05 +69.80674345102032 -0.30235416361660417 2.3345424262543693e-06 0.0006207207766828105 1.655830734946716e-05 +69.84548185307395 -0.30235416850311037 2.334532119959811e-06 0.0006214093368926165 1.657653391359224e-05 +69.88422025503965 -0.3023541733896129 2.3345218163650744e-06 0.000622098265276597 1.6594770678883314e-05 +69.92295865691736 -0.3023541782761108 2.3345115156021106e-06 0.0006227875951918557 1.6613014309752007e-05 +69.9616970587072 -0.30235418316260493 2.334501217534545e-06 0.0006234772927239542 1.6631271835033928e-05 +70.00043546040911 -0.30235418804909514 2.3344909223118663e-06 0.0006241673747278602 1.664953653916199e-05 +70.03917386202303 -0.3023541929355815 2.334480629845877e-06 0.0006248578196469752 1.6667810522252564e-05 +70.07791226354907 -0.30235419782206346 2.334470340178167e-06 0.0006255486689658451 1.6686094057516e-05 +70.11665066498715 -0.30235420270854146 2.3344600531656467e-06 0.0006262398853174263 1.670438752606054e-05 +70.15538906633734 -0.3023542075950159 2.3344497690535148e-06 0.0006269314702569789 1.6722694386422443e-05 +70.19412746759956 -0.30235421248148536 2.334439487687835e-06 0.0006276234568557685 1.6741005021929434e-05 +70.2328658687739 -0.30235421736795115 2.3344292091010743e-06 0.0006283158158278706 1.675933170086089e-05 +70.27160426986025 -0.30235422225441294 2.3344189332805932e-06 0.0006290085480572214 1.677766264232047e-05 +70.31034267085872 -0.3023542271408705 2.33440866019908e-06 0.0006297016649329675 1.6796004540682463e-05 +70.34908107176922 -0.30235423202732387 2.3343983899843146e-06 0.0006303951608982789 1.681435686314064e-05 +70.38781947259183 -0.30235423691377317 2.3343881224492243e-06 0.0006310890388059667 1.683272021762008e-05 +70.42655787332652 -0.3023542418002183 2.334377857642858e-06 0.0006317832920500866 1.6851091840766202e-05 +70.46529627397324 -0.30235424668665956 2.3343675957234008e-06 0.0006324779190305044 1.6869472074231814e-05 +70.50403467453205 -0.3023542515730964 2.334357336512731e-06 0.0006331729297662095 1.6887863384993337e-05 +70.54277307500294 -0.3023542564595289 2.334347080034831e-06 0.0006338683270276157 1.690626515046302e-05 +70.58151147538591 -0.3023542613459578 2.3343368263983793e-06 0.0006345640878603784 1.692467554495274e-05 +70.62024987568095 -0.30235426623238176 2.3343265754755812e-06 0.0006352602454644537 1.6943096948439013e-05 +70.65898827588806 -0.3023542711188019 2.3343163273962215e-06 0.0006359567701802654 1.6961524179593766e-05 +70.69772667600728 -0.30235427600521764 2.3343060819394216e-06 0.0006366536845642889 1.6979965120047036e-05 +70.73646507603848 -0.30235428089162913 2.334295839365064e-06 0.0006373509736080401 1.6998414323894613e-05 +70.77520347598184 -0.3023542857780363 2.334285599600482e-06 0.0006380486508220064 1.7016873338608582e-05 +70.81394187583724 -0.30235429066443964 2.3342753624846147e-06 0.0006387466857197007 1.7035345577358855e-05 +70.85268027560474 -0.30235429555083837 2.3342651283028303e-06 0.0006394451170517733 1.705382229124006e-05 +70.89141867528433 -0.3023543004372328 2.3342548966991657e-06 0.0006401439195368855 1.707231199384793e-05 +70.93015707487595 -0.3023543053236228 2.334244667967648e-06 0.0006408431125424928 1.7090810455297465e-05 +70.96889547437969 -0.30235431021000875 2.3342344419904067e-06 0.0006415426789136028 1.710931660690913e-05 +71.0076338737955 -0.3023543150963902 2.33422421871281e-06 0.0006422426225426982 1.7127833849999466e-05 +71.04637227312335 -0.30235431998276735 2.33421399829193e-06 0.0006429429457328765 1.7146361659033987e-05 +71.0851106723633 -0.3023543248691402 2.334203780561869e-06 0.0006436436495631162 1.716489750258965e-05 +71.12384907151534 -0.30235432975550874 2.334193565682106e-06 0.0006443447322341501 1.7183444460180806e-05 +71.16258747057945 -0.3023543346418728 2.334183353493441e-06 0.0006450461977860639 1.7202000581084086e-05 +71.20132586955563 -0.3023543395282322 2.334173144094025e-06 0.0006457480485129988 1.722056708374718e-05 +71.2400642684439 -0.30235434441458764 2.3341629374428785e-06 0.0006464502589595445 1.7239143785675934e-05 +71.27880266724428 -0.3023543493009387 2.3341527335745403e-06 0.0006471528562433819 1.7257730424535964e-05 +71.31754106595668 -0.30235435418728485 2.334142532487661e-06 0.0006478558481376949 1.727632368623315e-05 +71.35627946458118 -0.302354359073627 2.3341323341209364e-06 0.0006485592003538138 1.729492945481348e-05 +71.39501786311777 -0.3023543639599645 2.334122138532767e-06 0.0006492629446275092 1.731354198788443e-05 +71.43375626156646 -0.3023543688462976 2.334111945756017e-06 0.0006499670587485482 1.7332167683822895e-05 +71.47249465992721 -0.3023543737326263 2.3341017556316464e-06 0.0006506715565179367 1.735079835282111e-05 +71.51123305820005 -0.30235437861895054 2.3340915683121318e-06 0.0006513764326066381 1.736944527069759e-05 +71.54997145638495 -0.30235438350526994 2.3340813837631535e-06 0.0006520816973115394 1.7388095678589878e-05 +71.58870985448195 -0.3023543883915852 2.334071202017538e-06 0.0006527873234592263 1.7406763534408285e-05 +71.62744825249105 -0.3023543932778959 2.334061023015075e-06 0.000653493343718324 1.7425430656493702e-05 +71.66618665041219 -0.302354398164202 2.3340508466100632e-06 0.0006541997301521223 1.7444115016872485e-05 +71.70492504824543 -0.30235440305050343 2.334040673132305e-06 0.0006549065108347373 1.7462807089384115e-05 +71.74366344599076 -0.3023544079368005 2.3340305024258195e-06 0.0006556136631028675 1.7481510495027314e-05 +71.78240184364819 -0.3023544128230928 2.3340203344511754e-06 0.0006563211976038133 1.7500220014251103e-05 +71.82114024121768 -0.3023544177093809 2.3340101691785096e-06 0.0006570291025817552 1.7518943301188057e-05 +71.8598786386993 -0.3023544225956642 2.334000006713648e-06 0.0006577373921051394 1.7537674792876824e-05 +71.89861703609292 -0.3023544274819428 2.3339898470281525e-06 0.0006584460630473547 1.7556414460131328e-05 +71.93735543339866 -0.30235443236821663 2.333979690011132e-06 0.0006591551109659896 1.7575161713527206e-05 +71.97609383061652 -0.3023544372544858 2.333969535852154e-06 0.0006598645485391819 1.759392348420218e-05 +72.01483222774644 -0.3023544421407509 2.3339593843835307e-06 0.000660574353454103 1.7612694712388104e-05 +72.05357062478843 -0.30235444702701114 2.3339492356277062e-06 0.00066128453300542 1.7631472637602014e-05 +72.09230902174255 -0.30235445191326665 2.33393908967881e-06 0.0006619951002894917 1.7650262608269425e-05 +72.13104741860872 -0.30235445679951706 2.3339289465687174e-06 0.0006627060519001429 1.7669061026596645e-05 +72.16978581538699 -0.30235446168576335 2.333918806108651e-06 0.0006634173733910555 1.7687869735994052e-05 +72.20852421207732 -0.30235446657200477 2.3339086683925086e-06 0.0006641290748754486 1.770668733191569e-05 +72.24726260867979 -0.30235447145824135 2.3338985335055528e-06 0.0006648411635739425 1.7725515437860376e-05 +72.28600100519432 -0.30235447634447327 2.333888401287778e-06 0.0006655536241521083 1.7744353314398935e-05 +72.32473940162092 -0.30235448123070036 2.3338782718466283e-06 0.0006662664776029228 1.7763199958532695e-05 +72.3634777979596 -0.3023544861169232 2.3338681451966617e-06 0.0006669796790051006 1.7782056328068535e-05 +72.40221619421045 -0.30235449100314077 2.3338580213129942e-06 0.000667693290408174 1.780092069503307e-05 +72.44095459037334 -0.3023544958893538 2.3338479001112456e-06 0.0006684072622275605 1.7819800095056794e-05 +72.47969298644831 -0.30235450077556164 2.3338377816434144e-06 0.0006691216350674902 1.783868498113049e-05 +72.51843138243537 -0.30235450566176536 2.3338276660205132e-06 0.000669836364423915 1.7857580958125145e-05 +72.55716977833453 -0.30235451054796386 2.333817553123402e-06 0.0006705514784287616 1.7876485147382736e-05 +72.59590817414576 -0.3023545154341576 2.333807443005824e-06 0.0006712669768202378 1.7895401517843002e-05 +72.6346465698691 -0.30235452032034654 2.333797335490481e-06 0.0006719828541419218 1.7914323212503773e-05 +72.67338496550455 -0.30235452520653056 2.3337872308301216e-06 0.0006726991040931742 1.7933260013165024e-05 +72.71212336105205 -0.3023545300927098 2.3337771289633255e-06 0.0006734157366645702 1.7952202513091186e-05 +72.75086175651165 -0.3023545349788844 2.333767029777071e-06 0.0006741327431643084 1.7971156459918244e-05 +72.78960015188336 -0.30235453986505384 2.33375693339466e-06 0.0006748501396869434 1.7990118456666045e-05 +72.82833854716716 -0.3023545447512182 2.333746839650933e-06 0.0006755679150333488 1.800909209398809e-05 +72.86707694236308 -0.302354549637378 2.333736748814029e-06 0.0006762860587033219 1.8028074710946096e-05 +72.90581533747104 -0.3023545545235327 2.333726660595586e-06 0.0006770045903264165 1.804706777794776e-05 +72.94455373249112 -0.30235455940968253 2.3337165751873216e-06 0.0006777235000788098 1.8066068324546375e-05 +72.9832921274233 -0.3023545642958277 2.333706492480698e-06 0.0006784427771881008 1.808507972065879e-05 +73.02203052226758 -0.3023545691819674 2.3336964124772547e-06 0.000679162453380871 1.8104099577116177e-05 +73.06076891702392 -0.30235457406810223 2.3336863352295797e-06 0.0006798825035081677 1.8123132083157175e-05 +73.09950731169239 -0.3023545789542326 2.333676260879318e-06 0.0006806029161171488 1.8142175829627276e-05 +73.13824570627294 -0.3023545838403575 2.333666189161336e-06 0.0006813237244454991 1.8161222606508904e-05 +73.17698410076557 -0.3023545887264776 2.333656120217679e-06 0.0006820449057898475 1.8180284297502886e-05 +73.2157224951703 -0.30235459361259287 2.333646053918243e-06 0.0006827664639730873 1.8199351780681468e-05 +73.25446088948715 -0.3023545984987029 2.3336359904560284e-06 0.0006834884028343767 1.8218430851743135e-05 +73.29319928371608 -0.30235460338480774 2.3336259297254354e-06 0.0006842107268255675 1.8237521201527455e-05 +73.33193767785716 -0.30235460827090777 2.333615871750992e-06 0.0006849334232228637 1.8256620875730073e-05 +73.37067607191025 -0.30235461315700246 2.3336058164912096e-06 0.0006856565078567075 1.8275730574451308e-05 +73.40941446587547 -0.30235461804309244 2.333595763986597e-06 0.0006863799627212563 1.8294847712051672e-05 +73.4481528597528 -0.3023546229291769 2.3335857142100303e-06 0.0006871038021164086 1.8313973913917485e-05 +73.48689125354227 -0.3023546278152567 2.3335756672677517e-06 0.0006878280118636442 1.833311327595465e-05 +73.52562964724373 -0.3023546327013314 2.333565622881241e-06 0.0006885526045330215 1.835225865341461e-05 +73.56436804085737 -0.30235463758740067 2.333555581484107e-06 0.0006892775822533659 1.8371417467109436e-05 +73.60310643438311 -0.302354642473465 2.333545542561517e-06 0.0006900029306425099 1.8390579832242016e-05 +73.6418448278209 -0.30235464735952405 2.3335355065801003e-06 0.0006907286644388487 1.8409757058983705e-05 +73.68058322117085 -0.30235465224557817 2.3335254732029217e-06 0.0006914547745751694 1.8428942142535357e-05 +73.71932161443284 -0.30235465713162707 2.3335154425943318e-06 0.000692181260553931 1.8448135989036594e-05 +73.75806000760697 -0.30235466201767075 2.3335054147374207e-06 0.0006929081286804977 1.8467340135442684e-05 +73.79679840069322 -0.302354666903709 2.3334953896478526e-06 0.0006936353794420872 1.8486556195972697e-05 +73.83553679369155 -0.30235467178974257 2.3334853672838036e-06 0.0006943629983578877 1.8505781339047285e-05 +73.87427518660195 -0.30235467667577065 2.333475347662604e-06 0.0006950909983130807 1.8525014378202113e-05 +73.91301357942449 -0.3023546815617932 2.3334653307241306e-06 0.0006958193956840469 1.8544257459865663e-05 +73.95175197215913 -0.3023546864478111 2.3334553166500435e-06 0.0006965481458349907 1.856351130903717e-05 +73.99049036480584 -0.3023546913338235 2.3334453051299826e-06 0.0006972772849425822 1.8582772911259056e-05 +74.02922875736468 -0.30235469621983063 2.333435296489674e-06 0.0006980068072719578 1.8602047961003593e-05 +74.06796714983565 -0.3023547011058323 2.3334252904641885e-06 0.0006987367093786476 1.8621329552663292e-05 +74.10670554221868 -0.302354705991829 2.3334152872846895e-06 0.0006994669834951094 1.864061831886526e-05 +74.1454439345138 -0.3023547108778201 2.3334052867927274e-06 0.0007001976400097623 1.8659921555075068e-05 +74.18418232672107 -0.30235471576380585 2.3333952890248652e-06 0.0007009286872364555 1.867923293844688e-05 +74.22292071884044 -0.3023547206497867 2.333385293998465e-06 0.0007016600922185873 1.869855211865496e-05 +74.2616591108719 -0.30235472553576187 2.3333753017451087e-06 0.0007023918897416146 1.8717883391799172e-05 +74.30039750281547 -0.30235473042173194 2.3333653121587923e-06 0.0007031240600245246 1.873722399976816e-05 +74.33913589467113 -0.3023547353076967 2.33335532540774e-06 0.0007038566087270677 1.8756572409957525e-05 +74.37787428643892 -0.30235474019365594 2.333345341254247e-06 0.0007045895411641666 1.8775933281518316e-05 +74.41661267811881 -0.3023547450796094 2.3333353599534065e-06 0.0007053228602956081 1.8795300257105063e-05 +74.4553510697108 -0.3023547499655582 2.3333253813243025e-06 0.0007060565367611472 1.881467943492319e-05 +74.49408946121491 -0.3023547548515013 2.3333154054418366e-06 0.0007067906071245744 1.883406762708403e-05 +74.53282785263113 -0.3023547597374387 2.333305432191514e-06 0.0007075250603249032 1.8853465628856104e-05 +74.57156624395944 -0.302354764623371 2.3332954618171625e-06 0.0007082598839379303 1.8872874199178604e-05 +74.61030463519987 -0.3023547695092979 2.3332854940940146e-06 0.0007089950833693874 1.8892288733199823e-05 +74.64904302635242 -0.30235477439521913 2.333275529036735e-06 0.0007097306635526324 1.8911713500545365e-05 +74.68778141741703 -0.30235477928113536 2.3332655668751345e-06 0.0007104666129678679 1.893115520665197e-05 +74.72651980839382 -0.30235478416704553 2.3332556073160883e-06 0.0007112029611298009 1.895059759371266e-05 +74.76525819928267 -0.30235478905295043 2.3332456505685033e-06 0.0007119396758228179 1.897005788291136e-05 +74.80399659008364 -0.30235479393884995 2.3332356964676577e-06 0.0007126767773373528 1.89895223735983e-05 +74.84273498079673 -0.30235479882474386 2.333225745158276e-06 0.0007134142521761044 1.900899691855382e-05 +74.88147337142193 -0.3023548037106321 2.333215796505935e-06 0.0007141521073292393 1.9028479944775327e-05 +74.92021176195922 -0.3023548085965151 2.3332058506837896e-06 0.0007148903363554136 1.9047975281562482e-05 +74.95895015240865 -0.3023548134823924 2.333195907505904e-06 0.0007156289515011493 1.9067480084005274e-05 +74.99768854277019 -0.3023548183682641 2.3331859670902115e-06 0.0007163679439568682 1.9086989425944248e-05 +75.03642693304381 -0.30235482325413027 2.333176029405607e-06 0.0007171073169619365 1.9106513560787022e-05 +75.0751653232296 -0.302354828139991 2.333166094342034e-06 0.000717847059501976 1.912604782927238e-05 +75.11390371332747 -0.3023548330258459 2.333156162154396e-06 0.0007185871853642845 1.914558854558884e-05 +75.15264210333744 -0.3023548379116952 2.333146232605972e-06 0.0007193276964375101 1.9165141204998036e-05 +75.19138049325954 -0.30235484279753905 2.333136305798079e-06 0.0007200685743645537 1.9184704825866834e-05 +75.23011888309374 -0.30235484768337734 2.333126381704199e-06 0.0007208098382872422 1.9204273677128212e-05 +75.26885727284005 -0.30235485256920974 2.3331164603595275e-06 0.0007215514884310412 1.922385461968828e-05 +75.30759566249853 -0.3023548574550366 2.333106541760645e-06 0.0007222935014740062 1.9243446695056502e-05 +75.34633405206907 -0.302354862340858 2.333096625843726e-06 0.0007230359008070397 1.9263046950218725e-05 +75.38507244155173 -0.30235486722667343 2.3330867125714303e-06 0.0007237786785392176 1.9282653658971927e-05 +75.42381083094654 -0.3023548721124833 2.333076802112676e-06 0.0007245218367260554 1.9302275800375335e-05 +75.46254922025342 -0.3023548769982874 2.3330668943968618e-06 0.0007252653752819659 1.9321903314658558e-05 +75.50128760947247 -0.3023548818840855 2.333056989355016e-06 0.0007260093005341675 1.934154189272208e-05 +75.54002599860358 -0.3023548867698785 2.333047087098369e-06 0.0007267535807398257 1.9361192226449114e-05 +75.57876438764683 -0.30235489165566537 2.3330371874803713e-06 0.0007274982520517392 1.9380848122517208e-05 +75.61750277660221 -0.30235489654144654 2.333027290621033e-06 0.0007282433040480216 1.940051757222404e-05 +75.65624116546971 -0.30235490142722204 2.3330173964778794e-06 0.0007289887352877372 1.9420191925633583e-05 +75.69497955424933 -0.30235490631299194 2.3330075049687516e-06 0.0007297345332554268 1.943988016497321e-05 +75.73371794294103 -0.30235491119875557 2.332997616245126e-06 0.000730480730001381 1.9459575379791475e-05 +75.77245633154492 -0.30235491608451387 2.3329877302614106e-06 0.0007312272917968797 1.9479283488875147e-05 +75.81119472006085 -0.3023549209702662 2.3329778470205517e-06 0.0007319742333118657 1.9498999198204403e-05 +75.84993310848895 -0.3023549258560126 2.332967966495733e-06 0.0007327215538616166 1.9518722719165907e-05 +75.88867149682915 -0.3023549307417535 2.3329580886604603e-06 0.0007334692470467603 1.9538459019991703e-05 +75.92740988508146 -0.3023549356274879 2.332948213468182e-06 0.0007342173396385671 1.955820219092507e-05 +75.96614827324592 -0.3023549405132168 2.3329383410952385e-06 0.0007349658009406782 1.9577956426827672e-05 +76.0048866613225 -0.3023549453989401 2.33292847129745e-06 0.0007357146233053178 1.9597720381812168e-05 +76.04362504931122 -0.30235495028465714 2.332918604396685e-06 0.0007364638430093175 1.9617493050962836e-05 +76.082363437212 -0.30235495517036887 2.3329087400573853e-06 0.0007372134266423435 1.963727645372062e-05 +76.12110182502492 -0.3023549600560739 2.3328988785235673e-06 0.000737963405503444 1.965706930479223e-05 +76.15984021275001 -0.30235496494177344 2.3328890196776736e-06 0.0007387137567544958 1.967686959830963e-05 +76.19857860038718 -0.30235496982746674 2.332879163528696e-06 0.000739464496184479 1.969668178270102e-05 +76.23731698793651 -0.30235497471315465 2.3328693101356015e-06 0.0007402155968864052 1.9716501062532386e-05 +76.27605537539793 -0.30235497959883656 2.3328594594249024e-06 0.0007409670748198079 1.9736334569680014e-05 +76.31479376277149 -0.302354984484512 2.332849611442302e-06 0.0007417189532510513 1.9756174544122318e-05 +76.35353215005718 -0.30235498937018174 2.33283976617004e-06 0.0007424711889611364 1.977602274516268e-05 +76.39227053725499 -0.3023549942558454 2.3328299236209253e-06 0.0007432238135824274 1.979588357835609e-05 +76.4310089243649 -0.30235499914150327 2.3328200837245863e-06 0.0007439768083315083 1.9815753731215834e-05 +76.46974731138698 -0.30235500402715504 2.3328102466244755e-06 0.0007447301899257751 1.9835633098046954e-05 +76.50848569832115 -0.3023550089128007 2.3328004121758116e-06 0.0007454839466426631 1.9855519263142805e-05 +76.54722408516747 -0.3023550137984405 2.332790580453028e-06 0.0007462380756026732 1.9875419082171826e-05 +76.58596247192591 -0.30235501868407405 2.3327807514017775e-06 0.0007469925896301136 1.9895324518743788e-05 +76.62470085859647 -0.3023550235697016 2.332770925071913e-06 0.0007477474863914427 1.991524633776859e-05 +76.66343924517915 -0.3023550284553233 2.3327611015372562e-06 0.0007485027534514915 1.9935172821966134e-05 +76.70217763167396 -0.3023550333409386 2.3327512805647548e-06 0.0007492584034935775 1.9955105574052882e-05 +76.74091601808092 -0.302355038226548 2.332741462381747e-06 0.0007500144308579841 1.997505357754665e-05 +76.77965440439999 -0.30235504311215106 2.3327316469838473e-06 0.0007507708425592039 1.9995008785241012e-05 +76.8183927906312 -0.3023550479977484 2.3327218341711806e-06 0.0007515276204386537 2.001497428452535e-05 +76.85713117677457 -0.3023550528833391 2.332712024144223e-06 0.0007522847929581711 2.003495203988615e-05 +76.89586956283 -0.302355057768924 2.3327022167444205e-06 0.00075304233293816 2.0054934447727267e-05 +76.93460794879762 -0.3023550626545027 2.332692412091988e-06 0.0007538002531744885 2.00749274437405e-05 +76.97334633467736 -0.30235506754007524 2.3326826102216558e-06 0.0007545585463861566 2.0094932910132376e-05 +77.0120847204692 -0.3023550724256418 2.332672810889061e-06 0.0007553172229973136 2.0114947141102643e-05 +77.0508231061732 -0.30235507731120165 2.3326630143482195e-06 0.00075607628086297 2.0134967007215253e-05 +77.08956149178933 -0.30235508219675555 2.3326532205598137e-06 0.0007568357188851354 2.015499982248871e-05 +77.12829987731757 -0.3023550870823036 2.3326434294280403e-06 0.0007575955273315644 2.0175041743357115e-05 +77.16703826275797 -0.3023550919678452 2.33263364097499e-06 0.0007583557094327396 2.0195094510205498e-05 +77.20577664811049 -0.3023550968533802 2.3326238552300433e-06 0.000759116289829581 2.0215153693778033e-05 +77.24451503337512 -0.3023551017389094 2.3326140722068003e-06 0.0007598772299328909 2.023522539475611e-05 +77.28325341855194 -0.30235510662443205 2.3326042919991333e-06 0.0007606385592980703 2.0255308705133083e-05 +77.32199180364088 -0.3023551115099487 2.3325945142088026e-06 0.000761400256312117 2.0275396592829515e-05 +77.36073018864192 -0.3023551163954586 2.332584739368415e-06 0.0007621623494621657 2.029549522602515e-05 +77.3994685735551 -0.30235512128096276 2.3325749671236535e-06 0.000762924803766169 2.0315603262240805e-05 +77.43820695838043 -0.3023551261664604 2.3325651977168035e-06 0.000763687643399287 2.0335723147246106e-05 +77.47694534311789 -0.30235513105195183 2.332555430837471e-06 0.0007644508497599004 2.0355853729074323e-05 +77.51568372776748 -0.3023551359374364 2.332545666734425e-06 0.0007652144598523412 2.037598741822414e-05 +77.55442211232925 -0.30235514082291526 2.3325359053464553e-06 0.0007659784274029947 2.03961393118664e-05 +77.59316049680311 -0.3023551457083873 2.332526146538312e-06 0.000766742783535738 2.0416294423465933e-05 +77.63189888118913 -0.30235515059385315 2.332516390524836e-06 0.0007675075154722589 2.0436461015352892e-05 +77.67063726548729 -0.3023551554793131 2.3325066372641506e-06 0.0007682726082398943 2.0456636264306685e-05 +77.70937564969758 -0.302355160364766 2.332496886697777e-06 0.0007690380999494659 2.0476821752720854e-05 +77.74811403381997 -0.3023551652502126 2.3324871386703133e-06 0.0007698039679277371 2.0497020516134734e-05 +77.78685241785458 -0.3023551701356531 2.332477393509198e-06 0.0007705702090714732 2.0517223021263387e-05 +77.82559080180127 -0.30235517502108666 2.3324676509648305e-06 0.0007713368404832114 2.053743807480584e-05 +77.86432918566013 -0.30235517990651417 2.332457911148168e-06 0.0007721038358057714 2.0557663065141652e-05 +77.9030675694311 -0.30235518479193524 2.332448173919113e-06 0.0007728712088691155 2.0577895260427752e-05 +77.9418059531142 -0.30235518967735003 2.332438439503682e-06 0.0007736389553481799 2.0598137718249353e-05 +77.98054433670949 -0.3023551945627578 2.332428707779414e-06 0.0007744070989858338 2.0618391019662987e-05 +78.01928272021689 -0.3023551994481591 2.3324189786850044e-06 0.0007751756173951029 2.0638653354489883e-05 +78.05802110363643 -0.3023552043335544 2.3324092523495756e-06 0.0007759445034331275 2.0658930499203128e-05 +78.09675948696812 -0.3023552092189429 2.332399528672325e-06 0.0007767137759759216 2.067920752298322e-05 +78.13549787021198 -0.3023552141043251 2.3323898077527644e-06 0.0007774834188640584 2.0699499905064443e-05 +78.17423625336794 -0.3023552189897003 2.332380089371127e-06 0.000778253450386006 2.0719798861341162e-05 +78.21297463643607 -0.302355223875069 2.3323703738506874e-06 0.000779023867215216 2.0740111029621652e-05 +78.25171301941633 -0.3023552287604316 2.332360660925591e-06 0.0007797946372778932 2.0760430353163287e-05 +78.2904514023087 -0.3023552336457875 2.332350950696591e-06 0.0007805657915235038 2.0780758477918887e-05 +78.3291897851133 -0.3023552385311365 2.3323412431371777e-06 0.0007813373340952549 2.0801098806063784e-05 +78.36792816782997 -0.3023552434164792 2.332331538310408e-06 0.0007821092544248225 2.082144618426711e-05 +78.40666655045882 -0.3023552483018151 2.332321836227476e-06 0.0007828815510477991 2.0841805440393278e-05 +78.44540493299979 -0.3023552531871446 2.3323121367745685e-06 0.0007836542201256022 2.086217344219069e-05 +78.48414331545294 -0.3023552580724674 2.332302439952246e-06 0.0007844272649167756 2.08825505418852e-05 +78.52288169781822 -0.30235526295778353 2.332292745923721e-06 0.0007852006926175366 2.0902937134553373e-05 +78.56162008009566 -0.3023552678430931 2.3322830545098154e-06 0.0007859744981642481 2.0923331912557862e-05 +78.60035846228521 -0.3023552727283958 2.332273365850584e-06 0.0007867486879048977 2.0943739333846795e-05 +78.63909684438693 -0.3023552776136918 2.3322636798112536e-06 0.0007875232533825412 2.0964154791643012e-05 +78.6778352264008 -0.3023552824989814 2.3322539964708424e-06 0.0007882981887642346 2.0984578494897386e-05 +78.71657360832684 -0.3023552873842642 2.3322443159172806e-06 0.0007890735086943332 2.1005013948075113e-05 +78.755311990165 -0.3023552922695402 2.3322346378713013e-06 0.0007898492043705833 2.1025455923958898e-05 +78.79405037191529 -0.30235529715480974 2.3322249626523183e-06 0.0007906252784900411 2.1045909280806302e-05 +78.83278875357776 -0.30235530204007194 2.332215290129889e-06 0.0007914017415799655 2.1066376367493914e-05 +78.87152713515238 -0.3023553069253277 2.3322056201900436e-06 0.0007921785676051943 2.108684564759544e-05 +78.91026551663916 -0.3023553118105769 2.33219595292219e-06 0.0007929557789125352 2.1107331033125377e-05 +78.94900389803809 -0.302355316695819 2.332186288429798e-06 0.0007937333743166064 2.1127823010658948e-05 +78.98774227934912 -0.30235532158105477 2.3321766266279724e-06 0.0007945113235811528 2.1148324813744286e-05 +79.02648066057236 -0.30235532646628344 2.3321669674618905e-06 0.0007952896685525756 2.116883516546949e-05 +79.06521904170775 -0.30235533135150533 2.332157311003729e-06 0.0007960683932666175 2.1189351779960796e-05 +79.10395742275526 -0.30235533623672023 2.3321476571759847e-06 0.0007968474982305178 2.1209883912756218e-05 +79.14269580371493 -0.30235534112192847 2.332138006064527e-06 0.0007976269754233274 2.123042097743849e-05 +79.18143418458678 -0.3023553460071298 2.332128357673813e-06 0.0007984068346586474 2.1250971831611663e-05 +79.22017256537072 -0.30235535089232424 2.3321187119170736e-06 0.0007991870675335159 2.1271530872058136e-05 +79.25891094606688 -0.30235535577751205 2.332109068885626e-06 0.0007999676725399803 2.129210249765652e-05 +79.29764932667516 -0.3023553606626925 2.332099428462223e-06 0.0008007486755771411 2.131267918906752e-05 +79.3363877071956 -0.30235536554786685 2.3320897907637223e-06 0.0008015300254043369 2.1333264890960617e-05 +79.37512608762822 -0.3023553704330337 2.3320801557441394e-06 0.0008023117778817151 2.135386407048718e-05 +79.41386446797299 -0.3023553753181937 2.332070523435166e-06 0.00080309390782158 2.1374469893936765e-05 +79.45260284822987 -0.302355380203347 2.332060893718526e-06 0.0008038763968528049 2.1395085006863034e-05 +79.49134122839897 -0.30235538508849313 2.3320512667438445e-06 0.0008046592792413467 2.141571095819478e-05 +79.53007960848018 -0.30235538997363204 2.3320416424375924e-06 0.0008054425487518481 2.143634604119555e-05 +79.56881798847357 -0.3023553948587645 2.3320320208494313e-06 0.0008062261692276883 2.1456992883348258e-05 +79.6075563683791 -0.3023553997438901 2.3320224018583575e-06 0.0008070101776852704 2.1477641752010204e-05 +79.64629474819678 -0.30235540462900806 2.3320127856370962e-06 0.000807794580672962 2.1498304872554224e-05 +79.68503312792664 -0.3023554095141194 2.332003171955435e-06 0.0008085793511145211 2.1518982738281746e-05 +79.72377150756867 -0.3023554143992236 2.3319935610610373e-06 0.0008093645006387007 2.153966177470648e-05 +79.76250988712283 -0.3023554192843212 2.3319839528368674e-06 0.0008101500099823122 2.156035656309274e-05 +79.80124826658917 -0.30235542416941114 2.3319743472428847e-06 0.0008109359226375233 2.158105851428444e-05 +79.83998664596768 -0.30235542905449436 2.331964744342327e-06 0.0008117222005023166 2.160177226772477e-05 +79.87872502525835 -0.3023554339395704 2.331955144074271e-06 0.0008125088657758343 2.1622494014009978e-05 +79.91746340446115 -0.3023554388246396 2.3319455466647065e-06 0.0008132958987661197 2.1643221976623347e-05 +79.95620178357613 -0.30235544370970163 2.3319359516785362e-06 0.000814083305019725 2.166396210781995e-05 +79.99494016260329 -0.3023554485947565 2.331926359464254e-06 0.0008148711057347802 2.1684713556175685e-05 +80.0336785415426 -0.30235545347980447 2.3319167699689945e-06 0.0008156592665803842 2.170547096687147e-05 +80.07241692039403 -0.3023554583648451 2.3319071830772862e-06 0.0008164478130760657 2.1726237198106065e-05 +80.11115529915767 -0.30235546324987844 2.331897598880441e-06 0.0008172367450946473 2.174701865083957e-05 +80.14989367783346 -0.30235546813490516 2.33188801735849e-06 0.0008180260332668932 2.176780579004508e-05 +80.18863205642143 -0.30235547301992394 2.331878438529158e-06 0.0008188157382513927 2.178859964469375e-05 +80.22737043492155 -0.30235547790493594 2.3318688623614416e-06 0.0008196057933637586 2.180940772550915e-05 +80.26610881333382 -0.30235548278994084 2.331859288875041e-06 0.0008203962253630147 2.1830225454236e-05 +80.30484719165827 -0.30235548767493864 2.331849718054474e-06 0.0008211870422102216 2.1851050187380572e-05 +80.34358556989488 -0.3023554925599293 2.3318401498094087e-06 0.000821978223660829 2.1871885835767974e-05 +80.38232394804368 -0.30235549744491236 2.3318305843378914e-06 0.0008227698018543709 2.1892729595091034e-05 +80.42106232610462 -0.30235550232988845 2.331821021506212e-06 0.0008235617465848017 2.1913583356050608e-05 +80.45980070407772 -0.30235550721485716 2.331811461333837e-06 0.0008243540767388273 2.1934448898821313e-05 +80.498539081963 -0.3023555120998188 2.331801903856144e-06 0.0008251467758323042 2.1955324289123264e-05 +80.53727745976047 -0.30235551698477287 2.3317923489928887e-06 0.0008259398596749083 2.1976205179502028e-05 +80.57601583747008 -0.3023555218697201 2.3317827969046224e-06 0.0008267333157372827 2.1997099597034585e-05 +80.61475421509186 -0.30235552675465976 2.331773247378073e-06 0.0008275271573679097 2.2017998265303183e-05 +80.65349259262584 -0.30235553163959233 2.3317637005831003e-06 0.000828321366430669 2.203891127965022e-05 +80.69223097007196 -0.30235553652451724 2.3317541563198545e-06 0.0008291159610570854 2.2059829324643583e-05 +80.73096934743025 -0.30235554140943527 2.331744614834654e-06 0.0008299109238479816 2.2080760065368356e-05 +80.7697077247007 -0.30235554629434586 2.3317350760448875e-06 0.0008307062695919906 2.2101700799231275e-05 +80.80844610188335 -0.30235555117924867 2.3317255399045554e-06 0.0008315019994083874 2.212265169817176e-05 +80.84718447897815 -0.3023555560641444 2.331716006347059e-06 0.0008322981045515888 2.2143610309564328e-05 +80.88592285598513 -0.302355560949033 2.3317064755240935e-06 0.0008330945703830906 2.216457878140673e-05 +80.92466123290428 -0.3023555658339138 2.331696947318479e-06 0.0008338914420698462 2.2185556378363224e-05 +80.9633996097356 -0.30235557071878766 2.331687421848513e-06 0.0008346886643756645 2.220654422251679e-05 +81.00213798647908 -0.3023555756036538 2.331677899042832e-06 0.0008354862852448212 2.2227540925352896e-05 +81.04087636313474 -0.30235558048851247 2.3316683788135674e-06 0.0008362842790636693 2.2248549440364196e-05 +81.0796147397026 -0.30235558537336366 2.3316588611933075e-06 0.0008370826560290602 2.2269564877709403e-05 +81.1183531161826 -0.30235559025820774 2.33164934630339e-06 0.0008378813978855353 2.229058880533619e-05 +81.1570914925748 -0.3023555951430443 2.3316398341269877e-06 0.0008386805179464097 2.2311624457671567e-05 +81.19582986887913 -0.30235560002787315 2.331630324562676e-06 0.0008394800230372767 2.2332668947864596e-05 +81.2345682450957 -0.3023556049126949 2.3316208176721146e-06 0.0008402798935370015 2.2353723764297936e-05 +81.27330662122444 -0.30235560979750864 2.331611313467091e-06 0.0008410801608389759 2.2374786811270843e-05 +81.3120449972653 -0.3023556146823153 2.331601811866733e-06 0.0008418807848630379 2.2395860280516395e-05 +81.35078337321838 -0.30235561956711426 2.3315923129710164e-06 0.0008426818018870277 2.2416946895873963e-05 +81.38952174908363 -0.3023556244519057 2.331582816763009e-06 0.0008434831942478606 2.24380382687434e-05 +81.42826012486105 -0.30235562933668986 2.3315733230925326e-06 0.0008442849605083151 2.245913874725293e-05 +81.46699850055063 -0.3023556342214662 2.3315638321924445e-06 0.0008450871001590719 2.2480250762468812e-05 +81.50573687615244 -0.302355639106235 2.331554343953597e-06 0.0008458896294065393 2.2501368978819433e-05 +81.54447525166637 -0.302355643990996 2.3315448581791364e-06 0.0008466925341032075 2.2522499115924896e-05 +81.58321362709252 -0.30235564887575017 2.3315353751895657e-06 0.0008474957943332096 2.2543637171465147e-05 +81.6219520024308 -0.3023556537604961 2.3315258949511064e-06 0.0008482994576594233 2.2564786629495696e-05 +81.66069037768133 -0.3023556586452342 2.3315164172390325e-06 0.0008491034978400478 2.2585947421837616e-05 +81.699428752844 -0.3023556635299654 2.331506942205227e-06 0.0008499078998962694 2.2607119782193345e-05 +81.73816712791886 -0.30235566841468864 2.3314974698961707e-06 0.0008507126860779857 2.2628295061443727e-05 +81.77690550290592 -0.30235567329940405 2.3314880001911424e-06 0.0008515178596632143 2.2649478690191824e-05 +81.81564387780509 -0.3023556781841124 2.3314785330905343e-06 0.0008523233867843164 2.267067738682774e-05 +81.85438225261652 -0.3023556830688124 2.331469068661881e-06 0.0008531293093195076 2.269188125590651e-05 +81.8931206273401 -0.3023556879535051 2.3314596069410683e-06 0.0008539356057692365 2.2713102278220162e-05 +81.93185900197587 -0.3023556928381901 2.3314501478284018e-06 0.0008547422754698053 2.273432407604512e-05 +81.97059737652383 -0.3023556977228668 2.331440691464963e-06 0.0008555493468979566 2.2755558895707368e-05 +82.00933575098392 -0.3023557026075366 2.331431237631883e-06 0.0008563567654078064 2.277680148302186e-05 +82.04807412535628 -0.30235570749219853 2.3314217864415188e-06 0.0008571645633920225 2.2798056367823364e-05 +82.08681249964079 -0.3023557123768524 2.331412337935762e-06 0.00085797275316734 2.281932019371918e-05 +82.12555087383745 -0.3023557172614987 2.331402892123873e-06 0.0008587813120031759 2.2840593039685913e-05 +82.16428924794634 -0.30235572214613693 2.3313934489053425e-06 0.0008595902597050949 2.2861874810228184e-05 +82.20302762196738 -0.3023557270307679 2.331384008341086e-06 0.0008603995698401892 2.2883161663063207e-05 +82.24176599590062 -0.3023557319153907 2.3313745703654893e-06 0.0008612092632339814 2.2904467829852487e-05 +82.28050436974607 -0.3023557368000055 2.3313651351903623e-06 0.0008620193492155311 2.292577484911541e-05 +82.3192427435037 -0.30235574168461343 2.3313557025538463e-06 0.0008628297736015406 2.2947096387326383e-05 +82.35798111717347 -0.3023557465692128 2.3313462725943886e-06 0.0008636406030944105 2.296842796023785e-05 +82.39671949075549 -0.30235575145380433 2.331336845281465e-06 0.0008644518176143813 2.298976371188276e-05 +82.43545786424968 -0.30235575633838824 2.3313274206093893e-06 0.0008652633906181621 2.301111470509997e-05 +82.47419623765606 -0.30235576122296415 2.3313179985639443e-06 0.0008660753539129991 2.3032470002866534e-05 +82.51293461097465 -0.3023557661075322 2.3313085792132807e-06 0.0008668876910493806 2.3053837504838197e-05 +82.5516729842054 -0.30235577099209254 2.331299162430528e-06 0.0008677003944941479 2.3075212662940553e-05 +82.5904113573483 -0.3023557758766447 2.33128974835558e-06 0.0008685134966714891 2.3096601795309522e-05 +82.62914973040347 -0.3023557807611893 2.3312803369287215e-06 0.0008693269501317342 2.311799459074301e-05 +82.6678881033708 -0.3023557856457256 2.3312709281502603e-06 0.0008701407997608262 2.313940127125868e-05 +82.7066264762503 -0.3023557905302542 2.3312615219557506e-06 0.0008709550297065268 2.3160818118710613e-05 +82.74536484904203 -0.3023557954147749 2.3312521184314826e-06 0.0008717696238543568 2.3182244112061195e-05 +82.78410322174595 -0.30235580029928744 2.3312427175916975e-06 0.0008725846149780547 2.320367677092735e-05 +82.82284159436202 -0.3023558051837924 2.331233319379921e-06 0.0008733999529121788 2.3225119316616817e-05 +82.86157996689033 -0.302355810068289 2.3312239237969838e-06 0.0008742156875183065 2.324657078702996e-05 +82.90031833933081 -0.3023558149527777 2.3312145308015246e-06 0.0008750317956988601 2.3268034069874968e-05 +82.93905671168349 -0.3023558198372581 2.331205140439748e-06 0.0008758482918442945 2.328950402816774e-05 +82.97779508394835 -0.3023558247217313 2.331195752799408e-06 0.000876665132404641 2.331098297642498e-05 +83.01653345612543 -0.3023558296061956 2.3311863678034705e-06 0.0008774823859893482 2.3332479013455437e-05 +83.0552718282147 -0.30235583449065234 2.331176985418245e-06 0.0008783000067908126 2.3353978575038772e-05 +83.09401020021616 -0.3023558393751011 2.331167605616271e-06 0.0008791179931377388 2.3375484657060133e-05 +83.13274857212983 -0.3023558442595416 2.3311582285145597e-06 0.0008799363636600718 2.3397004277973622e-05 +83.17148694395567 -0.3023558491439737 2.331148854053634e-06 0.0008807551320909611 2.3418531626988374e-05 +83.2102253156937 -0.30235585402839854 2.3311394821222297e-06 0.0008815742407757458 2.3440068072365455e-05 +83.24896368734395 -0.30235585891281463 2.3311301129735043e-06 0.0008823937434631841 2.3461617330037036e-05 +83.28770205890643 -0.30235586379722285 2.3311207464547166e-06 0.0008832136258163703 2.3483173248457147e-05 +83.32644043038107 -0.3023558686816229 2.3311113824113345e-06 0.0008840338886565809 2.3504743172908223e-05 +83.36517880176794 -0.30235587356601484 2.3311020211943047e-06 0.0008848545188168831 2.3526320265314734e-05 +83.40391717306697 -0.3023558784503985 2.331092662538253e-06 0.0008856755416446336 2.3547901865575235e-05 +83.4426555442782 -0.3023558833347742 2.3310833065189773e-06 0.0008864969201220974 2.356950074247973e-05 +83.48139391540167 -0.30235588821914167 2.331073953203569e-06 0.0008873186876065474 2.359110315801591e-05 +83.5201322864373 -0.302355893103501 2.3310646023503207e-06 0.0008881408358623442 2.3612714700245577e-05 +83.55887065738516 -0.30235589798785195 2.331055254260187e-06 0.0008889633617393213 2.363433666514633e-05 +83.59760902824522 -0.3023559028721951 2.3310459087404685e-06 0.000889786246092365 2.3655972016933214e-05 +83.63634739901748 -0.30235590775652976 2.3310365659286083e-06 0.0008906095215826279 2.3677616111272413e-05 +83.67508576970195 -0.3023559126408559 2.3310272256333432e-06 0.0008914331802606577 2.3699265639034184e-05 +83.71382414029861 -0.30235591752517416 2.33101788805231e-06 0.0008922572063670213 2.372092371707761e-05 +83.75256251080746 -0.30235592240948417 2.331008553099067e-06 0.0008930816151306728 2.3742597623392445e-05 +83.79130088122855 -0.30235592729378574 2.3309992206822735e-06 0.0008939064040647581 2.3764275402847484e-05 +83.83003925156181 -0.3023559321780792 2.3309898910234493e-06 0.0008947315569415695 2.3785961960065058e-05 +83.86877762180728 -0.3023559370623642 2.3309805639423467e-06 0.0008955571047455538 2.3807664990294015e-05 +83.90751599196496 -0.30235594194664134 2.3309712394163474e-06 0.0008963830032769158 2.3829371238494598e-05 +83.9462543620349 -0.30235594683090944 2.3309619176678207e-06 0.0008972093102458304 2.3851085259285508e-05 +83.98499273201696 -0.30235595171516977 2.33095259843291e-06 0.0008980359745169739 2.387281231102926e-05 +84.0237311019113 -0.3023559565994216 2.3309432818437865e-06 0.0008988630151527587 2.389455170445984e-05 +84.0624694717178 -0.3023559614836651 2.330933968016369e-06 0.0008996904452189939 2.3916295401441e-05 +84.10120784143653 -0.30235596636789996 2.3309246566205775e-06 0.0009005182490890995 2.3938051212149498e-05 +84.13994621106745 -0.3023559712521268 2.330915348022149e-06 0.0009013464208250552 2.395981846220135e-05 +84.17868458061062 -0.3023559761363452 2.330906041927794e-06 0.0009021749803235346 2.3981593028510104e-05 +84.21742295006595 -0.3023559810205552 2.330896738573869e-06 0.0009030039057680815 2.4003376660058934e-05 +84.25616131943352 -0.30235598590475665 2.3308874377129058e-06 0.0009038332265972716 2.4025167109868055e-05 +84.29489968871329 -0.3023559907889498 2.3308781395272937e-06 0.0009046629070911385 2.4046971767118742e-05 +84.33363805790523 -0.30235599567313465 2.3308688439328486e-06 0.0009054929696187245 2.406878273659243e-05 +84.37237642700946 -0.3023560005573111 2.330859551016667e-06 0.0009063233982212061 2.4090606093080582e-05 +84.41111479602586 -0.30235600544147867 2.3308502607065474e-06 0.0009071542189127732 2.411243551857191e-05 +84.44985316495446 -0.3023560103256384 2.3308409730250913e-06 0.000907985402325422 2.413427402756249e-05 +84.48859153379532 -0.302356015209789 2.330831688004055e-06 0.0009088169794784171 2.415612551409839e-05 +84.52732990254835 -0.30235602009393137 2.330822405546508e-06 0.0009096489244974533 2.4177981404342364e-05 +84.56606827121358 -0.30235602497806524 2.3308131257097165e-06 0.0009104812605333371 2.4199851730290727e-05 +84.60480663979108 -0.3023560298621908 2.33080384847134e-06 0.0009113139418953079 2.4221728445925637e-05 +84.64354500828077 -0.30235603474630757 2.330794573974281e-06 0.0009121470293117457 2.4243616409379527e-05 +84.68228337668263 -0.30235603963041585 2.330785301964622e-06 0.0009129804842148356 2.426551557550973e-05 +84.72102174499676 -0.3023560445145155 2.330776032686159e-06 0.0009138143222956935 2.428741968269511e-05 +84.7597601132231 -0.30235604939860666 2.3307667659978046e-06 0.0009146485322374297 2.430933661699587e-05 +84.79849848136166 -0.30235605428268947 2.3307575018694836e-06 0.0009154831073653243 2.4331263087395258e-05 +84.83723684941242 -0.30235605916676306 2.3307482404051304e-06 0.000916318082105644 2.435319933262015e-05 +84.87597521737538 -0.30235606405082893 2.3307389815823866e-06 0.0009171534088447361 2.437514028420207e-05 +84.91471358525058 -0.3023560689348855 2.3307297253034476e-06 0.0009179891357514475 2.439709294152835e-05 +84.95345195303801 -0.3023560738189342 2.3307204716749525e-06 0.0009188252091972583 2.441905515433936e-05 +84.99219032073763 -0.30235607870297354 2.330711220642057e-06 0.0009196616791886297 2.4441029416538746e-05 +85.03092868834948 -0.3023560835870044 2.33070197220127e-06 0.0009204985369950053 2.446301250015635e-05 +85.06966705587355 -0.30235608847102674 2.3306927264701626e-06 0.0009213357531248301 2.4484997758823866e-05 +85.10840542330986 -0.30235609335504043 2.330683483330086e-06 0.0009221733550760543 2.4507005090188834e-05 +85.14714379065839 -0.3023560982390451 2.330674242742959e-06 0.0009230113335818025 2.452901296718091e-05 +85.18588215791911 -0.3023561031230415 2.3306650047977658e-06 0.000923849686377416 2.4551031642893112e-05 +85.22462052509208 -0.30235610800702895 2.3306557695426906e-06 0.000924688418501211 2.457305787431058e-05 +85.26335889217725 -0.30235611289100767 2.330646536771541e-06 0.0009255275290372245 2.4595100838594162e-05 +85.30209725917466 -0.30235611777497756 2.3306373067060974e-06 0.0009263670102263891 2.4617146950715687e-05 +85.34083562608429 -0.3023561226589393 2.33062807923778e-06 0.0009272068610735422 2.463920151139334e-05 +85.37957399290613 -0.3023561275428918 2.330618854351498e-06 0.0009280471044817788 2.4661270405700655e-05 +85.4183123596402 -0.3023561324268356 2.3306096321126833e-06 0.0009288877140783341 2.4683348394171037e-05 +85.4570507262865 -0.3023561373107705 2.330600412447662e-06 0.0009297287109066805 2.4705433253671385e-05 +85.49578909284502 -0.30235614219469664 2.330591195459772e-06 0.0009305700900639557 2.472752579005372e-05 +85.53452745931577 -0.3023561470786143 2.3305819810768576e-06 0.000931411813110353 2.4749628759333786e-05 +85.57326582569875 -0.3023561519625229 2.3305727692426296e-06 0.0009322539472641434 2.4771745703869216e-05 +85.61200419199396 -0.30235615684642275 2.330563560018587e-06 0.0009330964462281012 2.4793867559246015e-05 +85.65074255820137 -0.3023561617303137 2.3305543533857148e-06 0.0009339393177805185 2.4815994414525332e-05 +85.68948092432103 -0.302356166614196 2.3305451494273156e-06 0.0009347825638584968 2.483814095590189e-05 +85.7282192903529 -0.3023561714980691 2.3305359480171803e-06 0.0009356262004403528 2.4860288679137336e-05 +85.76695765629702 -0.3023561763819334 2.3305267493166937e-06 0.0009364702017483663 2.4882455568786112e-05 +85.80569602215334 -0.30235618126578906 2.330517553099301e-06 0.000937314576297485 2.4904622063920303e-05 +85.84443438792191 -0.30235618614963555 2.330508359546874e-06 0.0009381593507419841 2.4926800930165206e-05 +85.8831727536027 -0.3023561910334733 2.3304991686044765e-06 0.0009390044733826233 2.4948991520669526e-05 +85.92191111919574 -0.3023561959173022 2.330489980368628e-06 0.0009398499833123995 2.4971188926054128e-05 +85.96064948470098 -0.30235620080112197 2.3304807946037392e-06 0.0009406958731138856 2.499339513032468e-05 +85.99938785011847 -0.302356205684933 2.3304716114316594e-06 0.0009415421328795277 2.5015615972014193e-05 +86.0381262154482 -0.3023562105687349 2.330462430927102e-06 0.0009423887803349818 2.5037839704367516e-05 +86.07686458069017 -0.3023562154525276 2.330453252997851e-06 0.0009432358008049773 2.506007431259088e-05 +86.11560294584433 -0.30235622033631177 2.3304440777290348e-06 0.0009440831925699528 2.508232128458196e-05 +86.15434131091078 -0.3023562252200864 2.3304349049496914e-06 0.0009449309799997858 2.510457637184626e-05 +86.1930796758894 -0.30235623010385293 2.3304257348348023e-06 0.0009457791008368497 2.5126839143021037e-05 +86.23181804078028 -0.3023562349876096 2.330416567338986e-06 0.0009466276375116973 2.514911729320295e-05 +86.2705564055834 -0.302356239871358 2.330407402358294e-06 0.0009474765290311858 2.5171396109771194e-05 +86.30929477029873 -0.30235624475509676 2.3303982401722337e-06 0.0009483258085202058 2.5193685516966283e-05 +86.34803313492634 -0.3023562496388266 2.330389080401018e-06 0.0009491754663989585 2.5215986978026998e-05 +86.38677149946618 -0.3023562545225475 2.330379923252611e-06 0.0009500254954282955 2.5238298887591263e-05 +86.42550986391825 -0.30235625940625904 2.330370768758064e-06 0.0009508759049837197 2.5260621058474846e-05 +86.46424822828256 -0.3023562642899618 2.330361616886352e-06 0.0009517266805147991 2.5282952808705354e-05 +86.5029865925591 -0.3023562691736554 2.3303524675859835e-06 0.000952577843695191 2.5305290016498354e-05 +86.54172495674786 -0.30235627405733984 2.3303433209718987e-06 0.0009534293806881948 2.5327638552343753e-05 +86.58046332084886 -0.3023562789410152 2.3303341767340653e-06 0.0009542812924214151 2.5349997744930462e-05 +86.6192016848621 -0.3023562838246815 2.330325035243658e-06 0.000955133583602033 2.5372362953263517e-05 +86.65794004878758 -0.3023562887083387 2.3303158963357368e-06 0.0009559862398338353 2.5394740589313678e-05 +86.69667841262535 -0.3023562935919865 2.3303067600104104e-06 0.0009568392870578785 2.5417130532647578e-05 +86.73541677637527 -0.30235629847562506 2.330297626418406e-06 0.0009576927091013992 2.5439524229684864e-05 +86.77415514003754 -0.3023563033592546 2.3302884952363224e-06 0.0009585465009357649 2.546192883119285e-05 +86.81289350361197 -0.3023563082428749 2.330279366675579e-06 0.0009594006762010981 2.5484343500144322e-05 +86.85163186709867 -0.3023563131264861 2.330270240803142e-06 0.0009602552183259291 2.5506766593815126e-05 +86.89037023049758 -0.3023563180100879 2.330261117465866e-06 0.0009611101581223791 2.5529197971614893e-05 +86.92910859380875 -0.30235632289368053 2.3302519966798616e-06 0.0009619654525164093 2.5551642197120646e-05 +86.96784695703221 -0.3023563277772645 2.330242878567061e-06 0.0009628211182353229 2.5574091369378026e-05 +87.00658532016787 -0.30235633266083844 2.330233763016566e-06 0.0009636771781735279 2.5596553870116668e-05 +87.0453236832158 -0.3023563375444031 2.3302246500187465e-06 0.0009645336185745056 2.561902408533174e-05 +87.08406204617594 -0.3023563424279588 2.3302155395804317e-06 0.0009653904259132938 2.56415057481789e-05 +87.12280040904831 -0.30235634731150535 2.330206431865726e-06 0.0009662475968977464 2.5663995469240918e-05 +87.16153877183298 -0.30235635219504203 2.3301973266179143e-06 0.0009671051805180773 2.5686490474040506e-05 +87.2002771345299 -0.3023563570785699 2.3301882240747233e-06 0.0009679631085948736 2.570900072857465e-05 +87.239015497139 -0.3023563619620883 2.33017912408057e-06 0.0009688214107768223 2.573152119119134e-05 +87.27775385966041 -0.30235636684559775 2.330170026638256e-06 0.0009696800971415461 2.575404554002769e-05 +87.31649222209401 -0.3023563717290973 2.3301609318042175e-06 0.0009705391666857479 2.5776579459831713e-05 +87.35523058443991 -0.30235637661258774 2.330151839641868e-06 0.0009713986033223074 2.5799127346865236e-05 +87.39396894669804 -0.30235638149606864 2.330142749959822e-06 0.0009722584260123598 2.582168078237708e-05 +87.4327073088684 -0.3023563863795402 2.3301336628506115e-06 0.0009731186203453049 2.584424543541904e-05 +87.47144567095104 -0.30235639126300257 2.3301245783550355e-06 0.0009739791868665307 2.586681898074706e-05 +87.5101840329459 -0.3023563961464555 2.330115496511877e-06 0.0009748401231193332 2.5889400107249963e-05 +87.54892239485304 -0.3023564010298988 2.330106417230845e-06 0.0009757014601663917 2.5911996771726485e-05 +87.58766075667242 -0.30235640591333296 2.3300973404920135e-06 0.0009765631496867074 2.5934597710700835e-05 +87.62639911840407 -0.3023564107967573 2.3300882664199377e-06 0.0009774252288899858 2.5957208431515766e-05 +87.66513748004793 -0.3023564156801722 2.3300791947951463e-06 0.0009782876883040836 2.5979828146999873e-05 +87.70387584160407 -0.30235642056357775 2.330070125843642e-06 0.000979150516487612 2.6002458054113288e-05 +87.74261420307246 -0.302356425446974 2.3300610594973085e-06 0.0009800137190534334 2.602509634793349e-05 +87.78135256445312 -0.3023564303303608 2.330051995722447e-06 0.000980877289030102 2.6047749164035095e-05 +87.820090925746 -0.3023564352137377 2.3300429345705904e-06 0.0009817412582951107 2.60704068096498e-05 +87.85882928695115 -0.3023564400971053 2.3300338758481518e-06 0.0009826055846794497 2.6093072993181207e-05 +87.89756764806859 -0.3023564449804634 2.330024819858336e-06 0.0009834702975736265 2.6115749153850262e-05 +87.93630600909822 -0.3023564498638122 2.33001576636791e-06 0.000984335373644812 2.613843548163735e-05 +87.97504437004015 -0.3023564547471508 2.330006715524804e-06 0.0009852008512306937 2.6161128676677165e-05 +88.01378273089433 -0.30235645963048063 2.3299976671809316e-06 0.0009860666702451674 2.6183838874980283e-05 +88.05252109166075 -0.3023564645138003 2.329988621474479e-06 0.0009869328845302243 2.6206550809067447e-05 +88.09125945233944 -0.3023564693971103 2.3299795783868433e-06 0.0009877994830426136 2.622927158219649e-05 +88.12999781293038 -0.3023564742804111 2.329970537848583e-06 0.0009886664392362255 2.625200400157948e-05 +88.16873617343359 -0.30235647916370234 2.329961499838811e-06 0.0009895337803838419 2.6274749611044677e-05 +88.20747453384907 -0.3023564840469836 2.329952464422193e-06 0.0009904015081701651 2.6297496976856094e-05 +88.2462128941768 -0.3023564889302557 2.3299434316666704e-06 0.0009912695995589543 2.6320261188673874e-05 +88.28495125441677 -0.3023564938135175 2.329934401415503e-06 0.0009921380787379075 2.634302894541105e-05 +88.32368961456902 -0.3023564986967704 2.3299253737790657e-06 0.0009930069074478292 2.636580847800461e-05 +88.36242797463352 -0.30235650358001265 2.329916348632443e-06 0.000993876152935697 2.63885984499773e-05 +88.40116633461028 -0.30235650846324585 2.32990732617263e-06 0.000994745748146688 2.641139757877461e-05 +88.43990469449932 -0.30235651334646946 2.3298983062392567e-06 0.0009956157106017847 2.6434203248407973e-05 +88.47864305430063 -0.30235651822968307 2.3298892888999683e-06 0.0009964860727747604 2.6457024051964838e-05 +88.51738141401417 -0.30235652311288713 2.3298802740502817e-06 0.000997356799053395 2.6479845260070106e-05 +88.55611977364 -0.30235652799608137 2.329871261933692e-06 0.0009982279032120173 2.6502683389976943e-05 +88.59485813317808 -0.30235653287926606 2.329862252252464e-06 0.0009990993746735292 2.6525530876538335e-05 +88.63359649262843 -0.30235653776244104 2.329853245172087e-06 0.0009999712248609644 2.6548384875935193e-05 +88.67233485199105 -0.3023565426456059 2.3298442407501752e-06 0.001000843459766941 2.6571247213765874e-05 +88.71107321126593 -0.3023565475287609 2.3298352388467685e-06 0.0010017160774251717 2.6594122702338707e-05 +88.74981157045306 -0.30235655241190645 2.329826239487191e-06 0.00100258906472754 2.6617003523410265e-05 +88.78854992955247 -0.30235655729504224 2.3298172427000285e-06 0.0010034624182643998 2.6639898945846598e-05 +88.82728828856418 -0.3023565621781678 2.329808248483123e-06 0.001004336163697396 2.6662797876433336e-05 +88.86602664748811 -0.30235656706128405 2.3297992569062435e-06 0.001005210258039668 2.6685705714087045e-05 +88.90476500632433 -0.3023565719443902 2.32979026783718e-06 0.0010060847477205493 2.6708628030920725e-05 +88.94350336507281 -0.30235657682748623 2.3297812813712104e-06 0.0010069596280977888 2.673155284200927e-05 +88.98224172373358 -0.30235658171057306 2.3297722974570563e-06 0.0010078348496809558 2.675449248240648e-05 +89.02098008230661 -0.30235658659364956 2.3297633160817095e-06 0.001008710471611834 2.6777440118166292e-05 +89.0597184407919 -0.3023565914767162 2.3297543373279843e-06 0.0010095864656492297 2.6800398534785554e-05 +89.09845679918945 -0.30235659635977313 2.3297453611523533e-06 0.0010104628320093958 2.6823366882557138e-05 +89.13719515749929 -0.3023566012428198 2.329736387471073e-06 0.0010113395767313894 2.6846340090374082e-05 +89.1759335157214 -0.30235660612585696 2.329727416342194e-06 0.0010122166895124602 2.686932179920161e-05 +89.21467187385579 -0.3023566110088839 2.329718447856491e-06 0.0010130941872895434 2.6892317986176862e-05 +89.25341023190242 -0.3023566158919013 2.3297094819950506e-06 0.001013972046198172 2.691532491266307e-05 +89.29214858986134 -0.3023566207749084 2.3297005185889825e-06 0.001014850298235003 2.693833532185715e-05 +89.33088694773257 -0.30235662565790544 2.32969155777797e-06 0.0010157289227638172 2.6961355750284162e-05 +89.36962530551602 -0.3023566305408925 2.3296825995461147e-06 0.0010166079296983442 2.6984391322075155e-05 +89.40836366321176 -0.3023566354238702 2.3296736438502183e-06 0.0010174872844344383 2.7007429459313022e-05 +89.44710202081981 -0.3023566403068371 2.3296646907931226e-06 0.0010183670515560418 2.70304820199687e-05 +89.4858403783401 -0.30235664518979416 2.329655740249381e-06 0.0010192471830822137 2.7053539900921472e-05 +89.52457873577268 -0.3023566500727413 2.3296467921937474e-06 0.0010201276879317424 2.707661236465357e-05 +89.56331709311753 -0.3023566549556784 2.3296378467901504e-06 0.0010210085663861358 2.7099692427107896e-05 +89.6020554503747 -0.3023566598386056 2.3296289039746533e-06 0.0010218898132609978 2.7122778809141013e-05 +89.64079380754409 -0.3023566647215225 2.329619963607891e-06 0.001022771450712277 2.7145873394657837e-05 +89.67953216462577 -0.3023566696044294 2.3296110259263074e-06 0.0010236534477565005 2.7168977920577217e-05 +89.71827052161976 -0.3023566744873262 2.329602090746408e-06 0.0010245358387784692 2.7192096578078857e-05 +89.75700887852598 -0.302356679370213 2.3295931581478027e-06 0.0010254185930480626 2.7215220517107913e-05 +89.79574723534454 -0.30235668425308954 2.3295842280049747e-06 0.001026301725384317 2.7238355703054206e-05 +89.83448559207534 -0.3023566891359561 2.3295753004905357e-06 0.0010271852301098133 2.7261497788085148e-05 +89.87322394871843 -0.3023566940188126 2.3295663756381303e-06 0.0010280691092993787 2.7284652493006716e-05 +89.91196230527382 -0.30235669890165856 2.329557453210108e-06 0.0010289533892681398 2.7307813254205462e-05 +89.95070066174148 -0.30235670378449453 2.3295485333257177e-06 0.0010298380190487768 2.7330985486445494e-05 +89.9894390181214 -0.3023567086673207 2.329539616150541e-06 0.0010307230262566883 2.7354164789090928e-05 +90.0281773744136 -0.30235671355013616 2.3295307014842133e-06 0.0010316084230053008 2.737735290398874e-05 +90.06691573061809 -0.30235671843294204 2.329521789180052e-06 0.0010324941681931952 2.7400554228055382e-05 +90.10565408673492 -0.302356723315737 2.329512879669321e-06 0.0010333803254996105 2.7423765158230384e-05 +90.14439244276396 -0.3023567281985222 2.3295039726683703e-06 0.0010342668348049548 2.7446983567072685e-05 +90.18313079870533 -0.302356733081297 2.329495068181832e-06 0.0010351537140378452 2.7470209977519167e-05 +90.22186915455897 -0.30235673796406176 2.329486166173093e-06 0.001036040983478127 2.749344688035048e-05 +90.2606075103249 -0.30235674284681596 2.3294772668888978e-06 0.0010369286299487268 2.7516696630732506e-05 +90.29934586600314 -0.30235674772956017 2.329468370055412e-06 0.0010378166472280218 2.753994526639036e-05 +90.33808422159365 -0.30235675261229394 2.3294594757629416e-06 0.0010387050389187877 2.7563210020914742e-05 +90.37682257709642 -0.30235675749501745 2.329450583998151e-06 0.0010395938088780395 2.7586482942588237e-05 +90.41556093251151 -0.30235676237773074 2.329441694838894e-06 0.001040482950689873 2.760976998401027e-05 +90.45429928783891 -0.3023567672604337 2.3294328081641873e-06 0.0010413724641539519 2.7633062016199794e-05 +90.49303764307854 -0.30235677214312634 2.3294239241521835e-06 0.001042262364464422 2.7656363222200575e-05 +90.53177599823049 -0.30235677702580843 2.329415042648944e-06 0.0010431526417532088 2.7679676637185305e-05 +90.57051435329477 -0.3023567819084803 2.3294061636978176e-06 0.0010440432873326919 2.7702997396689802e-05 +90.60925270827128 -0.3023567867911419 2.3293972873148833e-06 0.0010449343120523386 2.7726324020412872e-05 +90.64799106316008 -0.30235679167379304 2.329388413447031e-06 0.0010458257084316345 2.7749664436820706e-05 +90.68672941796123 -0.3023567965564335 2.3293795420762505e-06 0.001046717498851876 2.7773012342772414e-05 +90.72546777267462 -0.30235680143906407 2.329370673386421e-06 0.0010476096313236669 2.779636979759011e-05 +90.76420612730033 -0.3023568063216839 2.3293618071768085e-06 0.0010485021675192665 2.7819735468647043e-05 +90.80294448183835 -0.3023568112042938 2.3293529434367867e-06 0.0010493950465974042 2.7843113561694534e-05 +90.84168283628861 -0.3023568160868924 2.32934408238233e-06 0.0010502883525707097 2.7866497875186937e-05 +90.8804211906512 -0.3023568209694815 2.3293352237989654e-06 0.0010511819859797282 2.7889893202271965e-05 +90.91915954492609 -0.30235682585205953 2.3293263677337015e-06 0.0010520760140546733 2.7913292219964174e-05 +90.95789789911325 -0.30235683073462727 2.329317514237541e-06 0.0010529704211593998 2.7936707427477778e-05 +90.99663625321274 -0.3023568356171847 2.3293086633503295e-06 0.0010538651983459666 2.7960132505465232e-05 +91.0353746072245 -0.3023568404997314 2.3292998148482855e-06 0.0010547603533202622 2.7983562530232e-05 +91.07411296114859 -0.30235684538226754 2.3292909690259387e-06 0.0010556558842987798 2.8007001219015887e-05 +91.11285131498497 -0.30235685026479336 2.3292821257832693e-06 0.0010565517776947374 2.8030454558723846e-05 +91.15158966873359 -0.3023568551473088 2.3292732849537967e-06 0.0010574480493317742 2.80539178084395e-05 +91.1903280223946 -0.3023568600298131 2.329264446864195e-06 0.0010583447234580319 2.807738482489622e-05 +91.22906637596785 -0.30235686491230745 2.3292556110480017e-06 0.0010592417445696096 2.8100865996958953e-05 +91.26780472945342 -0.302356869794791 2.3292467780068374e-06 0.0010601391566051148 2.8124351415064536e-05 +91.30654308285128 -0.3023568746772641 2.329237947359525e-06 0.0010610369323212113 2.8147847031314083e-05 +91.34528143616146 -0.3023568795597263 2.3292291193686384e-06 0.0010619351017549215 2.8171351100687432e-05 +91.38401978938393 -0.3023568844421782 2.329220293851412e-06 0.0010628336264978842 2.819487157087794e-05 +91.42275814251869 -0.3023568893246197 2.329211470790999e-06 0.0010637325179962845 2.8218393460956548e-05 +91.46149649556577 -0.30235689420704975 2.3292026503322205e-06 0.0010646318178259423 2.8241927290091812e-05 +91.50023484852514 -0.30235689908946956 2.3291938324804707e-06 0.0010655314888811057 2.826547265722606e-05 +91.53897320139683 -0.3023569039718793 2.3291850170599113e-06 0.0010664315086288513 2.828902569478252e-05 +91.57771155418081 -0.3023569088542773 2.329176204325755e-06 0.0010673319414855132 2.8312585540675187e-05 +91.61644990687708 -0.3023569137366655 2.329167394007327e-06 0.0010682327172745656 2.8336156849940596e-05 +91.6551882594857 -0.30235691861904274 2.3291585863141344e-06 0.001069133880485808 2.8359735111416272e-05 +91.6939266120066 -0.30235692350140936 2.3291497809731947e-06 0.0010700354056887025 2.838332566067721e-05 +91.73266496443986 -0.3023569283837651 2.3291409783975592e-06 0.0010709373272203072 2.8406922155166977e-05 +91.77140331678534 -0.3023569332661104 2.3291321781907784e-06 0.0010718396034224732 2.843053353830056e-05 +91.81014166904318 -0.30235693814844483 2.3291233806036287e-06 0.0010727422742243737 2.845415022995247e-05 +91.84888002121332 -0.3023569430307685 2.329114585545018e-06 0.0010736452963320162 2.847777571721417e-05 +91.88761837329575 -0.3023569479130815 2.3291057930162817e-06 0.0010745487132957745 2.8501413011102115e-05 +91.9263567252905 -0.3023569527953836 2.3290970030435427e-06 0.0010754525012009626 2.85250581374089e-05 +91.96509507719756 -0.3023569576776752 2.3290882155692536e-06 0.001076356653141588 2.854871230302081e-05 +92.00383342901694 -0.30235696255995553 2.3290794305906674e-06 0.001077261203851619 2.8572377091789242e-05 +92.04257178074862 -0.30235696744222523 2.3290706481026825e-06 0.0010781661179534682 2.8596049284038932e-05 +92.08131013239262 -0.3023569723244843 2.3290618683269497e-06 0.0010790713970396488 2.8619730362902676e-05 +92.1200484839489 -0.30235697720673227 2.329053090984081e-06 0.0010799770773791356 2.8643424230654044e-05 +92.15878683541753 -0.3023569820889697 2.329044316197882e-06 0.0010808831077954088 2.86671241240875e-05 +92.19752518679852 -0.302356986971196 2.3290355439244004e-06 0.0010817895233855425 2.8690831912818955e-05 +92.23626353809172 -0.30235699185341147 2.3290267741337147e-06 0.0010826963204503472 2.8714553002988386e-05 +92.2750018892973 -0.30235699673561606 2.3290180069182828e-06 0.0010836034875265524 2.873828144286898e-05 +92.31374024041517 -0.30235700161780993 2.3290092422241274e-06 0.0010845110338637697 2.8762021219233568e-05 +92.35247859144535 -0.30235700649999314 2.3290004800355293e-06 0.0010854189331390247 2.878576662971039e-05 +92.39121694238787 -0.302357011382165 2.3289917204723967e-06 0.0010863272322930956 2.880952423608059e-05 +92.42995529324273 -0.30235701626432604 2.3289829632946275e-06 0.0010872359043152197 2.883328689022605e-05 +92.46869364400983 -0.3023570211464764 2.328974208786393e-06 0.0010881449383684516 2.885706220492444e-05 +92.50743199468931 -0.3023570260286154 2.3289654566441594e-06 0.0010890543625331382 2.8880845450148974e-05 +92.54617034528111 -0.3023570309107438 2.3289567071149185e-06 0.0010899641433665967 2.8904642736100785e-05 +92.58490869578517 -0.3023570357928609 2.328947960130666e-06 0.0010908743226236205 2.8928443276636454e-05 +92.62364704620163 -0.3023570406749672 2.328939215664095e-06 0.0010917848578095787 2.89522537376763e-05 +92.66238539653037 -0.3023570455570625 2.3289304736615816e-06 0.0010926957748595924 2.897607559294875e-05 +92.70112374677143 -0.30235705043914674 2.3289217343037195e-06 0.0010936070712371925 2.899990709084308e-05 +92.73986209692481 -0.3023570553212201 2.328912997362799e-06 0.0010945187429332807 2.9023748295603998e-05 +92.77860044699051 -0.3023570602032825 2.3289042629878436e-06 0.001095430771845223 2.9047597750918822e-05 +92.81733879696853 -0.3023570650853334 2.3288955311024264e-06 0.0010963431981542064 2.90714552483975e-05 +92.85607714685885 -0.3023570699673738 2.328886801704027e-06 0.001097255976596508 2.909531937055853e-05 +92.89481549666154 -0.3023570748494029 2.328878074873131e-06 0.0010981691442143128 2.9119198651623163e-05 +92.9335538463765 -0.30235707973142106 2.3288693506077557e-06 0.0010990826895273984 2.9143084240680768e-05 +92.97229219600383 -0.30235708461342775 2.3288606288048776e-06 0.001099996615795951 2.9166980977219617e-05 +93.01103054554349 -0.30235708949542367 2.3288519095827068e-06 0.0011009109095790341 2.9190878531839338e-05 +93.04976889499542 -0.3023570943774084 2.32884319283478e-06 0.0011018255700154537 2.9214796479194446e-05 +93.08850724435976 -0.30235709925938187 2.3288344786294615e-06 0.0011027406190099855 2.923872109382305e-05 +93.12724559363637 -0.3023571041413446 2.328825766857277e-06 0.001103656029498682 2.9262650653402056e-05 +93.1659839428253 -0.30235710902329554 2.3288170577510357e-06 0.001104571837415233 2.928659004187704e-05 +93.2047222919266 -0.3023571139052359 2.3288083510583474e-06 0.0011054880030704102 2.9310544152801905e-05 +93.2434606409402 -0.3023571187871647 2.3287996469178176e-06 0.0011064045427570043 2.9334506061141343e-05 +93.28219898986615 -0.30235712366908274 2.3287909452694697e-06 0.001107321439267336 2.9358473218921323e-05 +93.3209373387044 -0.30235712855098934 2.328782246146104e-06 0.0011082387414705333 2.9382445313375565e-05 +93.359675687455 -0.3023571334328847 2.3287735495708813e-06 0.0011091564060821213 2.9406438746588305e-05 +93.3984140361179 -0.30235713831476857 2.328764855555699e-06 0.001110074477353183 2.9430433542400044e-05 +93.43715238469315 -0.3023571431966417 2.3287561639247926e-06 0.0011109928897007526 2.9454437579831967e-05 +93.47589073318076 -0.3023571480785032 2.3287474748696393e-06 0.0011119116764667378 2.9478455929600397e-05 +93.51462908158067 -0.30235715296035387 2.328738788282456e-06 0.00111283084132993 2.9502479137602928e-05 +93.55336742989292 -0.302357157842193 2.3287301042874065e-06 0.0011137503772279428 2.9526515358799803e-05 +93.5921057781175 -0.30235716272402086 2.3287214227364225e-06 0.0011146703017764403 2.9550554686129276e-05 +93.63084412625442 -0.3023571676058378 2.3287127437314506e-06 0.0011155905737970854 2.9574603991870517e-05 +93.66958247430368 -0.3023571724876427 2.3287040672334633e-06 0.0011165112652964631 2.95986701902985e-05 +93.70832082226528 -0.30235717736943674 2.328695393305929e-06 0.0011174322952630723 2.9622742202620847e-05 +93.74705917013917 -0.3023571822512195 2.3286867217124117e-06 0.0011183537041220906 2.9646818208495918e-05 +93.78579751792543 -0.3023571871329909 2.328678052810183e-06 0.0011192754926554029 2.9670906951153467e-05 +93.82453586562406 -0.3023571920147509 2.32866938635041e-06 0.0011201976671205433 2.9695007999240545e-05 +93.86327421323499 -0.30235719689649937 2.3286607224143468e-06 0.0011211202111680479 2.9719115347191767e-05 +93.90201256075822 -0.3023572017782364 2.328652060983612e-06 0.0011220431345649858 2.974323087157915e-05 +93.94075090819386 -0.3023572066599625 2.32864340200393e-06 0.0011229664228127574 2.9767357906069505e-05 +93.97948925554182 -0.3023572115416769 2.3286347455680853e-06 0.0011238900818260416 2.9791490012403158e-05 +94.01822760280209 -0.3023572164233803 2.328626091733633e-06 0.0011248141080525027 2.9815632265959628e-05 +94.05696594997474 -0.30235722130507153 2.3286174402718207e-06 0.0011257385423882685 2.9839788656088725e-05 +94.0957042970597 -0.302357226186752 2.328608791381002e-06 0.0011266633184560922 2.9863952692307512e-05 +94.13444264405702 -0.30235723106842055 2.3286001450293883e-06 0.0011275885035224394 2.9888122062853964e-05 +94.17318099096667 -0.30235723595007785 2.328591501124312e-06 0.0011285140297242991 2.991230578411695e-05 +94.21191933778866 -0.3023572408317236 2.328582859711625e-06 0.0011294399499848368 2.993649519953678e-05 +94.25065768452298 -0.30235724571335787 2.328574220868312e-06 0.0011303662497460746 2.9960692350347536e-05 +94.28939603116967 -0.3023572505949809 2.328565584549232e-06 0.0011312928951218283 2.998489999648153e-05 +94.3281343777287 -0.30235725547659226 2.328556950626926e-06 0.001132219935752808 3.0009116049414538e-05 +94.36687272420006 -0.3023572603581917 2.3285483192136614e-06 0.0011331473667368962 3.003334640059037e-05 +94.40561107058377 -0.30235726523978024 2.3285396903181096e-06 0.001134075142323343 3.0057582424524273e-05 +94.44434941687985 -0.3023572701213568 2.3285310639968616e-06 0.001135003314385699 3.0081818661124435e-05 +94.48308776308826 -0.3023572750029219 2.3285224401218214e-06 0.0011359318534993822 3.0106086302548125e-05 +94.521826109209 -0.3023572798844756 2.3285138187647706e-06 0.0011368607681665787 3.0130347292217873e-05 +94.56056445524212 -0.30235728476601775 2.3285051999294596e-06 0.0011377900475923184 3.0154616686262978e-05 +94.59930280118759 -0.30235728964754816 2.3284965835461023e-06 0.0011387197108187546 3.017890256916934e-05 +94.63804114704539 -0.30235729452906707 2.328487969681604e-06 0.001139649744733397 3.0203191742222535e-05 +94.67677949281551 -0.30235729941057427 2.328479358422938e-06 0.0011405801576764502 3.0227494351504438e-05 +94.71551783849802 -0.30235730429207003 2.3284707495177484e-06 0.0011415109387597725 3.0251799263842355e-05 +94.7542561840929 -0.3023573091735541 2.3284621431171974e-06 0.0011424420924767509 3.027612237568532e-05 +94.79299452960008 -0.30235731405502625 2.3284535392145818e-06 0.0011433736412260888 3.0300454149406142e-05 +94.83173287501964 -0.30235731893648704 2.32844493775184e-06 0.001144305533529391 3.0324792065403974e-05 +94.87047122035156 -0.302357323817936 2.3284363389789095e-06 0.001145237826257998 3.034913642608227e-05 +94.9092095655958 -0.30235732869937315 2.3284277425067854e-06 0.0011461704889305137 3.0373492571094253e-05 +94.94794791075242 -0.3023573335807988 2.3284191487082792e-06 0.0011471035261300647 3.0397854775080988e-05 +94.98668625582135 -0.30235733846221274 2.3284105572809774e-06 0.0011480369297666474 3.04222293033809e-05 +95.0254246008027 -0.3023573433436148 2.3284019684061506e-06 0.0011489707204625837 3.0446617995400957e-05 +95.06416294569635 -0.30235734822500554 2.3283933819597735e-06 0.0011499048644601497 3.047100549123639e-05 +95.10290129050239 -0.3023573531063843 2.3283847980687055e-06 0.0011508393963074604 3.0495411025151803e-05 +95.14163963522078 -0.3023573579877514 2.3283762166514413e-06 0.0011517742929803181 3.051982084228809e-05 +95.18037797985154 -0.3023573628691062 2.328367637674856e-06 0.0011527095973589464 3.054424240297519e-05 +95.21911632439462 -0.3023573677504498 2.3283590612705708e-06 0.0011536452339524865 3.056867063021865e-05 +95.25785466885006 -0.3023573726317816 2.328350487363662e-06 0.001154581257787655 3.059310999169853e-05 +95.29659301321792 -0.30235737751310093 2.328341915940842e-06 0.0011555176801783498 3.061755669225568e-05 +95.33533135749809 -0.3023573823944091 2.3283333469214645e-06 0.0011564544513260392 3.0642013626969225e-05 +95.3740697016906 -0.30235738727570544 2.328324780400382e-06 0.0011573916020607645 3.0666476054736546e-05 +95.41280804579553 -0.3023573921569897 2.3283162165011887e-06 0.0011583291267928779 3.0690950562424074e-05 +95.45154638981276 -0.3023573970382623 2.328307655008961e-06 0.0011592670348851144 3.071544006931069e-05 +95.49028473374237 -0.3023574019195231 2.328299095945523e-06 0.0011602053000286086 3.0739931611124715e-05 +95.52902307758436 -0.3023574068007715 2.328290539423531e-06 0.0011611439633735117 3.076443298282399e-05 +95.56776142133872 -0.3023574116820085 2.3282819854587268e-06 0.0011620829838677545 3.0788949948632876e-05 +95.60649976500541 -0.3023574165632335 2.328273433901737e-06 0.001163022380538107 3.081346603068052e-05 +95.64523810858451 -0.30235742144444644 2.328264884760466e-06 0.0011639621636710023 3.083799507727131e-05 +95.68397645207594 -0.3023574263256475 2.3282563381676672e-06 0.0011649023174971805 3.0862536899888945e-05 +95.72271479547972 -0.30235743120683695 2.3282477941424785e-06 0.001165842825314609 3.0887090007511993e-05 +95.7614531387959 -0.3023574360880142 2.328239252596827e-06 0.0011667837222225968 3.091164841406331e-05 +95.80019148202442 -0.30235744096917927 2.328230713455987e-06 0.001167725008994483 3.093621516332219e-05 +95.83892982516531 -0.3023574458503329 2.3282221767787235e-06 0.0011686666361663165 3.096079084609581e-05 +95.87766816821859 -0.3023574507314741 2.328213642614126e-06 0.001169608669030907 3.098537507477482e-05 +95.91640651118423 -0.30235745561260347 2.3282051110166607e-06 0.0011705510509328887 3.100996879300299e-05 +95.95514485406223 -0.3023574604937209 2.328196581828054e-06 0.0011714938139672742 3.103457356408449e-05 +95.99388319685261 -0.3023574653748262 2.328188055142062e-06 0.0011724369653704834 3.105918743880868e-05 +96.03262153955536 -0.3023574702559196 2.328179530886216e-06 0.0011733804771126585 3.108380341933687e-05 +96.07135988217047 -0.30235747513700073 2.3281710091431513e-06 0.0011743243798230634 3.110844292271923e-05 +96.11009822469794 -0.3023574800180699 2.3281624899065237e-06 0.0011752686338101842 3.113308122334243e-05 +96.1488365671378 -0.302357484899127 2.328153973162884e-06 0.0011762132941582 3.115773250524907e-05 +96.18757490949001 -0.3023574897801719 2.3281454588737756e-06 0.0011771583095758294 3.118238887513961e-05 +96.22631325175463 -0.3023574946612047 2.328136946925387e-06 0.0011781037004300694 3.1207056002322355e-05 +96.2650515939316 -0.3023574995422261 2.3281284376211927e-06 0.0011790494429135738 3.123172988048406e-05 +96.30378993602096 -0.3023575044232348 2.3281199307520622e-06 0.0011799955834343233 3.125641271255356e-05 +96.34252827802267 -0.3023575093042314 2.328111426372436e-06 0.0011809421101550528 3.128111235187552e-05 +96.38126661993677 -0.30235751418521567 2.328102924446813e-06 0.0011818890001307474 3.130581975485835e-05 +96.42000496176323 -0.30235751906618824 2.3280944250502483e-06 0.0011828362467193989 3.133053524482422e-05 +96.45874330350209 -0.30235752394714865 2.328085928004536e-06 0.0011837838668097632 3.135525642797679e-05 +96.4974816451533 -0.3023575288280964 2.328077433665625e-06 0.0011847318935414074 3.137998350998907e-05 +96.53621998671689 -0.3023575337090322 2.328068941536382e-06 0.0011856802802858843 3.1404729766747905e-05 +96.57495832819289 -0.3023575385899561 2.328060452058504e-06 0.0011866290171967835 3.14294742638865e-05 +96.61369666958124 -0.3023575434708676 2.328051965021001e-06 0.001187578141375359 3.145423988579313e-05 +96.65243501088197 -0.3023575483517668 2.328043480421229e-06 0.0011885276596194 3.147900838642505e-05 +96.69117335209509 -0.30235755323265373 2.3280349982966586e-06 0.0011894775384060968 3.150378186418077e-05 +96.72991169322061 -0.3023575581135284 2.328026518652967e-06 0.0011904277871806444 3.1528568273163356e-05 +96.76865003425846 -0.3023575629943909 2.328018041458963e-06 0.0011913784202009163 3.155336563760722e-05 +96.80738837520877 -0.3023575678752411 2.328009566737382e-06 0.0011923294276317321 3.1578172360299896e-05 +96.8461267160714 -0.302357572756079 2.3280010945238326e-06 0.0011932807930115032 3.160298931206149e-05 +96.88486505684642 -0.3023575776369047 2.3279926247756343e-06 0.0011942325319235989 3.162780732695692e-05 +96.92360339753381 -0.30235758251771805 2.3279841574140594e-06 0.0011951846683450748 3.1652646116203056e-05 +96.96234173813362 -0.3023575873985188 2.3279756925950266e-06 0.0011961371745573214 3.167748274239129e-05 +97.0010800786458 -0.30235759227930736 2.3279672302862e-06 0.0011970900555544563 3.170233162809144e-05 +97.03981841907037 -0.3023575971600844 2.327958770423727e-06 0.0011980432719491223 3.1727199108018426e-05 +97.07855675940732 -0.30235760204084794 2.3279503129657393e-06 0.0011989969210146586 3.175206412553773e-05 +97.11729509965663 -0.3023576069216 2.327941858031833e-06 0.0011999508798082477 3.177694106766967e-05 +97.15603343981837 -0.3023576118023391 2.327933405590252e-06 0.0012009052640019058 3.180183044913964e-05 +97.19477177989249 -0.3023576166830661 2.327924955571103e-06 0.0012018600005020204 3.182672688460216e-05 +97.23351011987897 -0.3023576215637806 2.3279165079809116e-06 0.0012028151159777201 3.1851635110359544e-05 +97.27224845977787 -0.30235762644448244 2.3279080628623532e-06 0.0012037706195352244 3.1876546704787504e-05 +97.31098679958916 -0.3023576313251721 2.3278996202876207e-06 0.001204726480640044 3.190146765190022e-05 +97.34972513931282 -0.3023576362058496 2.3278911801628806e-06 0.0012056827001548783 3.192640499904331e-05 +97.38846347894888 -0.30235764108651425 2.3278827424402505e-06 0.0012066393307525209 3.1951348075264784e-05 +97.42720181849734 -0.3023576459671666 2.3278743072632475e-06 0.0012075963000082312 3.19762992840694e-05 +97.46594015795816 -0.3023576508478064 2.3278658744313586e-06 0.0012085536664674225 3.20012597911492e-05 +97.5046784973314 -0.3023576557284338 2.327857444113421e-06 0.0012095114020288808 3.2026228826004655e-05 +97.54341683661703 -0.3023576606090485 2.3278490162755575e-06 0.0012104695146289812 3.20512080009175e-05 +97.58215517581506 -0.3023576654896508 2.32784059093612e-06 0.0012114279963715948 3.20761975554126e-05 +97.62089351492548 -0.30235767037024064 2.327832167934312e-06 0.0012123868611308287 3.210119189062481e-05 +97.65963185394828 -0.3023576752508181 2.3278237474896852e-06 0.0012133460751053984 3.2126199092136254e-05 +97.69837019288347 -0.3023576801313828 2.327815329575096e-06 0.0012143056919183236 3.2151216223188406e-05 +97.73710853173108 -0.30235768501193516 2.327806913992305e-06 0.001215265657470114 3.217623648831768e-05 +97.77584687049111 -0.30235768989247486 2.327798500913638e-06 0.0012162260033910842 3.2201273117072814e-05 +97.81458520916348 -0.3023576947730022 2.327790090264385e-06 0.0012171867206224626 3.222631269349937e-05 +97.85332354774827 -0.3023576996535165 2.327781682058081e-06 0.0012181478331736368 3.225136382977134e-05 +97.8920618862455 -0.30235770453401833 2.3277732764267814e-06 0.0012191093077498385 3.227642341291891e-05 +97.93080022465506 -0.30235770941450757 2.327764873179579e-06 0.0012200711578708877 3.230150088074481e-05 +97.96953856297708 -0.3023577142949843 2.32775647229569e-06 0.0012210333695360897 3.2326576909714135e-05 +98.00827690121145 -0.30235771917544835 2.3277480740239527e-06 0.0012219959607647148 3.2351664426602695e-05 +98.04701523935823 -0.30235772405589956 2.3277396780953085e-06 0.0012229589423756008 3.2376762166906454e-05 +98.08575357741746 -0.30235772893633833 2.327731284702668e-06 0.0012239222802181173 3.2401869356087346e-05 +98.12449191538904 -0.30235773381676423 2.327722893690242e-06 0.0012248859993257812 3.242698340873757e-05 +98.16323025327303 -0.30235773869717764 2.3277145051904432e-06 0.001225850088651636 3.245211098933471e-05 +98.20196859106943 -0.30235774357757844 2.327706119129862e-06 0.0012268145371851992 3.2477235632582484e-05 +98.24070692877825 -0.3023577484579662 2.3276977355528712e-06 0.001227779391599552 3.250238696363776e-05 +98.27944526639949 -0.3023577533383415 2.327689354361474e-06 0.001228744597628499 3.252753724359449e-05 +98.31818360393308 -0.3023577582187041 2.3276809756401124e-06 0.0012297101798931082 3.2552700218944326e-05 +98.35692194137913 -0.3023577630990538 2.32767259931895e-06 0.0012306761324463046 3.257787058315436e-05 +98.39566027873752 -0.30235776797939135 2.3276642255281584e-06 0.0012316424439478568 3.260304795863866e-05 +98.4343986160084 -0.30235777285971493 2.327655854176708e-06 0.001232609185136051 3.262823204409598e-05 +98.47313695319161 -0.3023577777400266 2.3276474852212223e-06 0.0012335762548629857 3.265343473220556e-05 +98.51187529028726 -0.30235778262032514 2.32763911877842e-06 0.00123454369733007 3.267864134465928e-05 +98.55061362729532 -0.302357787500611 2.327630754786257e-06 0.0012355115319340095 3.270385633465994e-05 +98.5893519642158 -0.3023577923808843 2.327622393184655e-06 0.0012364797224498918 3.27290815813407e-05 +98.62809030104867 -0.30235779726114437 2.327614034029442e-06 0.001237448302880846 3.2754319198627774e-05 +98.666828637794 -0.3023578021413915 2.3276056774469387e-06 0.0012384172600692193 3.277955559429293e-05 +98.70556697445168 -0.3023578070216264 2.3275973231401222e-06 0.001239386552692617 3.2804810190102676e-05 +98.74430531102179 -0.30235781190184774 2.3275889713688573e-06 0.0012403562749020694 3.283007176893513e-05 +98.78304364750434 -0.30235781678205637 2.327580622033878e-06 0.0012413263509115458 3.285533760556632e-05 +98.82178198389929 -0.3023578216622527 2.327572275094491e-06 0.0012422967646178987 3.28806211185331e-05 +98.86052032020665 -0.30235782654243565 2.3275639306504783e-06 0.0012432675790050626 3.290590772361125e-05 +98.89925865642643 -0.3023578314226057 2.3275555886450535e-06 0.001244238781240543 3.293120593355948e-05 +98.9379969925586 -0.30235783630276275 2.327547249120205e-06 0.0012452103444684345 3.295651532437236e-05 +98.97673532860321 -0.30235784118290693 2.3275389119308667e-06 0.0012461822882987004 3.298182930309849e-05 +99.01547366456023 -0.30235784606303845 2.3275305772520685e-06 0.0012471545904604447 3.300715318482012e-05 +99.05421200042967 -0.30235785094315676 2.3275222450541e-06 0.0012481272697893963 3.3032492306403744e-05 +99.09295033621152 -0.3023578558232623 2.327513915301899e-06 0.0012491003152368962 3.30578325640238e-05 +99.13168867190579 -0.30235786070335463 2.3275055878640115e-06 0.0012500737493960773 3.3083184859984554e-05 +99.1704270075125 -0.3023578655834339 2.3274972630533814e-06 0.0012510475623199924 3.3108544260446656e-05 +99.20916534303161 -0.3023578704635003 2.3274889404372607e-06 0.0012520217445404858 3.3133916489647644e-05 +99.24790367846315 -0.30235787534355363 2.3274806204862682e-06 0.001252996301432589 3.315929391882561e-05 +99.2866420138071 -0.30235788022359417 2.3274723027919973e-06 0.0012539712023446157 3.3184680583467885e-05 +99.32538034906347 -0.30235788510362127 2.3274639876999546e-06 0.0012549465143024546 3.321008459918328e-05 +99.36411868423224 -0.30235788998363566 2.327455674967178e-06 0.0012559221834534727 3.3235489172056265e-05 +99.40285701931347 -0.3023578948636368 2.3274473647456937e-06 0.0012568982254000174 3.326090350004774e-05 +99.44159535430713 -0.30235789974362465 2.3274390568339537e-06 0.0012578746556468183 3.328633180811833e-05 +99.48033368921321 -0.3023579046236 2.3274307514265978e-06 0.001258851421626691 3.331176301319113e-05 +99.51907202403166 -0.3023579095035616 2.3274224484507275e-06 0.0012598286073218035 3.3337205304577825e-05 +99.5578103587626 -0.3023579143835103 2.3274141479199728e-06 0.0012608061539207303 3.336265833693251e-05 +99.59654869340594 -0.3023579192634464 2.3274058498125256e-06 0.0012617840309886441 3.338811598618319e-05 +99.63528702796171 -0.302357924143369 2.3273975540928943e-06 0.0012627623229125083 3.341358737979326e-05 +99.67402536242992 -0.3023579290232785 2.327389260815368e-06 0.001263740983820795 3.3439066037227474e-05 +99.71276369681054 -0.3023579339031745 2.327380970029349e-06 0.0012647200214936241 3.3464555485013615e-05 +99.75150203110358 -0.3023579387830574 2.3273726817206157e-06 0.0012656994382854363 3.349005527273205e-05 +99.79024036530905 -0.3023579436629276 2.3273643957502358e-06 0.0012666791948411423 3.351556182459263e-05 +99.82897869942698 -0.30235794854278414 2.3273561121483345e-06 0.001267659358269384 3.3541074325422556e-05 +99.86771703345732 -0.30235795342262756 2.32734783112541e-06 0.0012686398848633354 3.356660545236639e-05 +99.90645536740011 -0.30235795830245776 2.3273395524371677e-06 0.0012696207830110143 3.3592137970189614e-05 +99.9451937012553 -0.30235796318227465 2.327331276267321e-06 0.001270602065192902 3.3617676137496774e-05 +99.98393203502295 -0.30235796806207865 2.327323002452505e-06 0.0012715836864371495 3.364322940934555e-05 +100.02267036870299 -0.30235797294186917 2.3273147310787854e-06 0.0012725657079660012 3.366878868030337e-05 +100.06140870229551 -0.3023579778216465 2.327306462150274e-06 0.0012735481112314828 3.369435744903497e-05 +100.10014703580048 -0.3023579827014103 2.3272981956227412e-06 0.0012745308745131885 3.371993943874966e-05 +100.13888536921783 -0.3023579875811611 2.327289931564229e-06 0.0012755140012584382 3.374552414779116e-05 +100.17762370254762 -0.3023579924608985 2.3272816699237348e-06 0.0012764975112664896 3.377112740699957e-05 +100.2163620357899 -0.3023579973406225 2.3272734106733082e-06 0.001277481402097293 3.3796734568680364e-05 +100.25510036894455 -0.30235800222033354 2.3272651538346475e-06 0.0012784656585820254 3.382234660723347e-05 +100.29383870201164 -0.3023580071000311 2.3272568993648685e-06 0.001279450275630214 3.384797060966425e-05 +100.33257703499123 -0.30235801197971496 2.3272486474824042e-06 0.0012804352881465207 3.387360350897851e-05 +100.3713153678832 -0.3023580168593854 2.32724039797635e-06 0.0012814206753685006 3.38992456963303e-05 +100.41005370068767 -0.30235802173904275 2.3272321508834874e-06 0.001282406422663223 3.392489546340459e-05 +100.44879203340453 -0.3023580266186867 2.3272239061630352e-06 0.0012833925523195447 3.395056255961094e-05 +100.48753036603385 -0.30235803149831725 2.327215663869806e-06 0.0012843790424501196 3.3976224499314505e-05 +100.5262686985756 -0.30235803637793446 2.3272074240340615e-06 0.0012853659087224273 3.400190450942498e-05 +100.56500703102981 -0.302358041257538 2.3271991866654216e-06 0.001286353163783353 3.402759332566138e-05 +100.60374536339643 -0.3023580461371286 2.327190951634541e-06 0.001287340766082999 3.4053290220772044e-05 +100.64248369567552 -0.30235805101670504 2.327182719068054e-06 0.0012883287684792909 3.407899755963788e-05 +100.68122202786705 -0.30235805589626863 2.3271744888645624e-06 0.0012893171245076905 3.41047105142879e-05 +100.71996035997101 -0.30235806077581867 2.3271662612316028e-06 0.0012903058453755279 3.413043417930045e-05 +100.75869869198742 -0.30235806565535484 2.327158035792996e-06 0.001291294970878799 3.415616469513932e-05 +100.7974370239163 -0.302358070534878 2.3271498129444036e-06 0.0012922844390399714 3.418190695847224e-05 +100.83617535575759 -0.30235807541438714 2.327141592453568e-06 0.0012932743025342306 3.420766075019482e-05 +100.87491368751137 -0.30235808029388306 2.327133374397316e-06 0.0012942645413686238 3.423342094523332e-05 +100.91365201917755 -0.30235808517336543 2.3271251587416588e-06 0.0012952551423476616 3.425918789405907e-05 +100.9523903507562 -0.3023580900528344 2.327116945454765e-06 0.0012962460975155371 3.428496897498289e-05 +100.99112868224734 -0.3023580949322895 2.3271087346626773e-06 0.0012972374589815866 3.431075542003716e-05 +101.02986701365089 -0.30235809981173134 2.327100526203719e-06 0.0012982291680363263 3.433654544559094e-05 +101.06860534496685 -0.3023581046911594 2.3270923202614492e-06 0.0012992212728469312 3.436236246145557e-05 +101.1073436761953 -0.3023581095705739 2.327084116671104e-06 0.001300213739558283 3.438817386247695e-05 +101.1460820073362 -0.302358114449975 2.327075915509385e-06 0.0013012065662414219 3.4413993660068456e-05 +101.18482033838956 -0.3023581193293625 2.3270677168248436e-06 0.00130219977831783 3.443982628837761e-05 +101.22355866935537 -0.30235812420873603 2.3270595204995506e-06 0.0013031933687528124 3.446566552722667e-05 +101.26229700023364 -0.3023581290880962 2.327051326552974e-06 0.0013041873216862426 3.449151534731346e-05 +101.30103533102434 -0.3023581339674425 2.327043135006139e-06 0.0013051816605532647 3.4517375865205586e-05 +101.3397736617275 -0.30235813884677554 2.3270349458907584e-06 0.0013061763512441577 3.4543242572477754e-05 +101.37851199234315 -0.30235814372609454 2.327026759244433e-06 0.0013071714316587508 3.4569121311591666e-05 +101.41725032287121 -0.3023581486054 2.3270185749325944e-06 0.0013081668756372514 3.459501007827278e-05 +101.45598865331176 -0.30235815348469147 2.327010393038532e-06 0.0013091627193360658 3.462090421063955e-05 +101.49472698366476 -0.30235815836396945 2.3270022135014463e-06 0.001310158905241965 3.46468122498734e-05 +101.53346531393018 -0.3023581632432339 2.326994036526216e-06 0.0013111554715778964 3.46727262362326e-05 +101.57220364410811 -0.3023581681224845 2.326985861847589e-06 0.001312152407354809 3.4698646667786965e-05 +101.61094197419848 -0.3023581730017212 2.3269776896235304e-06 0.001313149736091375 3.472457804477463e-05 +101.6496803042013 -0.30235817788094416 2.3269695198315653e-06 0.001314147418743367 3.475051637873503e-05 +101.68841863411659 -0.3023581827601536 2.326961352326345e-06 0.0013151454776052932 3.477646576240709e-05 +101.72715696394434 -0.3023581876393491 2.326953187339262e-06 0.0013161439148190199 3.480243459201447e-05 +101.76589529368455 -0.3023581925185308 2.32694502473085e-06 0.0013171427166659827 3.4828396218451284e-05 +101.80463362333722 -0.3023581973976987 2.3269368645178027e-06 0.0013181418885634237 3.485436860723841e-05 +101.8433719529024 -0.30235820227685256 2.326928706702787e-06 0.0013191414444664788 3.4880357548025934e-05 +101.88211028237997 -0.3023582071559931 2.326920551262284e-06 0.0013201413725588678 3.490635137084227e-05 +101.92084861177007 -0.30235821203511953 2.3269123982343804e-06 0.0013211416605270199 3.4932359185167087e-05 +101.95958694107259 -0.30235821691423226 2.326904247659049e-06 0.0013221423304908778 3.4958372322475984e-05 +101.9983252702876 -0.3023582217933309 2.326896099433981e-06 0.0013231433742987297 3.4984388395577956e-05 +102.03706359941505 -0.3023582266724157 2.3268879536500956e-06 0.0013241447893995234 3.5010421897101136e-05 +102.07580192845498 -0.3023582315514863 2.3268798102391665e-06 0.0013251466109459422 3.503645928446696e-05 +102.11454025740738 -0.30235823643054377 2.32687166921356e-06 0.0013261487321897306 3.5062509376939185e-05 +102.15327858627224 -0.3023582413095873 2.3268635306144485e-06 0.0013271512491909148 3.508856720821263e-05 +102.19201691504959 -0.3023582461886162 2.32685539450975e-06 0.0013281541789964596 3.511463630743084e-05 +102.23075524373938 -0.30235825106763164 2.3268472606553475e-06 0.0013291574431728954 3.5140710007087844e-05 +102.26949357234169 -0.30235825594663285 2.3268391292750865e-06 0.0013301611010752817 3.516679666461738e-05 +102.30823190085643 -0.3023582608256202 2.3268310002914227e-06 0.0013311651357747467 3.519289326309643e-05 +102.34697022928363 -0.30235826570459373 2.3268228736617442e-06 0.0013321695162581467 3.521899261252139e-05 +102.3857085576233 -0.3023582705835531 2.3268147494015037e-06 0.0013331742996366038 3.524510522915048e-05 +102.4244468858755 -0.30235827546249855 2.3268066276384645e-06 0.0013341794452034388 3.5271224222830205e-05 +102.46318521404014 -0.3023582803414301 2.32679850821813e-06 0.0013351849369945812 3.529735449957615e-05 +102.50192354211723 -0.30235828522034797 2.3267903912518223e-06 0.0013361908041790913 3.532349595236119e-05 +102.54066187010685 -0.3023582900992511 2.3267822765370197e-06 0.0013371970792829888 3.534964076496781e-05 +102.5794001980089 -0.3023582949781404 2.3267741642651507e-06 0.0013382037207865887 3.537579890941561e-05 +102.61813852582341 -0.3023582998570156 2.326766054434366e-06 0.0013392107328740336 3.540196520698684e-05 +102.65687685355044 -0.30235830473587666 2.3267579470043994e-06 0.001340218120132162 3.542814039146374e-05 +102.6956151811899 -0.30235830961472415 2.326749841897459e-06 0.0013412258532060496 3.545431659775434e-05 +102.73435350874192 -0.3023583144935571 2.326741739324709e-06 0.0013422339837385305 3.548051582670588e-05 +102.77309183620639 -0.3023583193723763 2.3267336390027053e-06 0.0013432424626803549 3.5506713444883014e-05 +102.81183016358332 -0.302358324251181 2.326725541145102e-06 0.0013442513397242083 3.553293051789e-05 +102.85056849087273 -0.3023583291299722 2.3267174456323213e-06 0.0013452605638691704 3.555915137839101e-05 +102.88930681807463 -0.3023583340087485 2.3267093525395343e-06 0.001346270199453851 3.5585374698584605e-05 +102.92804514518897 -0.3023583388875109 2.3267012618163305e-06 0.0013472801755136925 3.5611615006906514e-05 +102.96678347221584 -0.3023583437662593 2.326693173440051e-06 0.001348290523118934 3.563786570127529e-05 +103.00552179915519 -0.30235834864499345 2.326685087488803e-06 0.0013493012652663313 3.5664116503304585e-05 +103.044260126007 -0.3023583535237136 2.326677003944763e-06 0.0013503123590063815 3.569037973116335e-05 +103.08299845277133 -0.30235835840241915 2.3266689228074335e-06 0.0013513238411676563 3.571665471359379e-05 +103.12173677944813 -0.3023583632811108 2.326660844099597e-06 0.0013523356798987275 3.574294456492123e-05 +103.1604751060374 -0.302358368159788 2.3266527677002243e-06 0.0013533479149305603 3.576922799560207e-05 +103.19921343253915 -0.3023583730384511 2.3266446935532427e-06 0.0013543605094943386 3.579553187669171e-05 +103.23795175895343 -0.3023583779171002 2.3266366219625594e-06 0.0013553734513230217 3.5821837911542723e-05 +103.2766900852802 -0.30235838279573474 2.3266285527429526e-06 0.0013563867993999926 3.58481579296346e-05 +103.31542841151936 -0.30235838767435524 2.326620485957934e-06 0.0013574004946957645 3.587449047374255e-05 +103.35416673767114 -0.3023583925529611 2.32661242139083e-06 0.0013584145961241792 3.59008208251361e-05 +103.39290506373531 -0.30235839743155296 2.3266043593470156e-06 0.0013594290378413651 3.592716634267064e-05 +103.43164338971201 -0.3023584023101303 2.3265962996715444e-06 0.0013604438685404557 3.595352187898886e-05 +103.47038171560125 -0.30235840718869356 2.3265882423628365e-06 0.0013614590691509866 3.5979885691091495e-05 +103.5091200414029 -0.3023584120672424 2.3265801873495003e-06 0.0013624746382293257 3.600625859884126e-05 +103.54785836711707 -0.30235841694577664 2.326572134851736e-06 0.0013634905885329888 3.603264913978387e-05 +103.58659669274371 -0.3023584218242972 2.3265640846896695e-06 0.0013645068964836784 3.6059032114559745e-05 +103.62533501828291 -0.3023584267028028 2.3265560367930084e-06 0.0013655235954187683 3.6085431518506045e-05 +103.66407334373454 -0.30235843158129416 2.3265479913734164e-06 0.0013665406483046479 3.611183971335905e-05 +103.70281166909872 -0.3023584364597714 2.3265399483492255e-06 0.0013675580747500027 3.6138259695878414e-05 +103.74154999437533 -0.3023584413382339 2.3265319076620256e-06 0.0013685758857396215 3.616468387379049e-05 +103.78028831956446 -0.3023584462166821 2.326523869427989e-06 0.001369594059288469 3.619112227544801e-05 +103.81902664466611 -0.30235845109511594 2.3265158334750324e-06 0.001370612606931553 3.621755783965629e-05 +103.85776496968023 -0.3023584559735353 2.3265077999343062e-06 0.0013716315328935157 3.624401431781577e-05 +103.8965032946069 -0.3023584608519401 2.326499768766401e-06 0.0013726508323834666 3.6270481738385236e-05 +103.93524161944602 -0.3023584657303307 2.326491739966002e-06 0.0013736704942797836 3.629694669957616e-05 +103.97397994419767 -0.30235847060870663 2.326483713602225e-06 0.0013746905348726512 3.6323433505425585e-05 +104.01271826886179 -0.3023584754870681 2.326475689450509e-06 0.0013757109545661497 3.634991421773172e-05 +104.05145659343846 -0.302358480365415 2.326467667835655e-06 0.0013767317390209588 3.637641336898996e-05 +104.09019491792758 -0.3023584852437477 2.3264596485463683e-06 0.0013777528839593975 3.640292367986623e-05 +104.12893324232921 -0.3023584901220659 2.326451631620925e-06 0.0013787743966475598 3.642943400733363e-05 +104.16767156664335 -0.3023584950003694 2.326443617035134e-06 0.0013797963067002181 3.645596374750657e-05 +104.20640989086999 -0.3023584998786582 2.326435604849053e-06 0.0013808185860324387 3.6482496552492125e-05 +104.24514821500915 -0.3023585047569324 2.326427595085991e-06 0.0013818412363964814 3.6509040379732075e-05 +104.28388653906082 -0.30235850963519256 2.326419587615852e-06 0.0013828642300092436 3.653559176649316e-05 +104.32262486302497 -0.3023585145134378 2.3264115826031516e-06 0.0013838876124684426 3.656215404097437e-05 +104.36136318690164 -0.30235851939166847 2.3264035798539903e-06 0.0013849113676782186 3.658871773424407e-05 +104.40010151069085 -0.30235852426988413 2.3263955795109985e-06 0.0013859355298339454 3.6615303514548205e-05 +104.4388398343925 -0.30235852914808575 2.3263875816002495e-06 0.0013869600189974623 3.6641884234047226e-05 +104.47757815800671 -0.3023585340262727 2.3263795860075963e-06 0.0013879848954894743 3.666848826532501e-05 +104.51631648153344 -0.3023585389044448 2.3263715928524295e-06 0.001389010148579872 3.6695086916407137e-05 +104.55505480497261 -0.30235854378260246 2.326363601906358e-06 0.0013900357661311813 3.6721709247542786e-05 +104.59379312832434 -0.30235854866074535 2.3263556133689986e-06 0.0013910617549981973 3.674833108951552e-05 +104.6325314515886 -0.3023585535388734 2.3263476272610307e-06 0.0013920881297540563 3.677496075785699e-05 +104.6712697747653 -0.3023585584169873 2.3263396434460395e-06 0.0013931148381148208 3.680160477709036e-05 +104.7100080978546 -0.302358563295086 2.326331662179087e-06 0.0013941419659234617 3.682825432913543e-05 +104.74874642085638 -0.30235856817317003 2.3263236829801537e-06 0.0013951694441636294 3.685490859279257e-05 +104.78748474377062 -0.30235857305123964 2.3263157063624925e-06 0.0013961972879742678 3.6881577206001916e-05 +104.82622306659746 -0.3023585779292944 2.3263077320894418e-06 0.001397225516687142 3.690825617759917e-05 +104.86496138933678 -0.3023585828073341 2.326299760147821e-06 0.0013982541053327955 3.693494222933071e-05 +104.90369971198861 -0.30235858768535945 2.326291790561248e-06 0.0013992830895495068 3.696163965382297e-05 +104.94243803455296 -0.30235859256336983 2.326283823260792e-06 0.001400312423568995 3.698834181238913e-05 +104.98117635702984 -0.30235859744136534 2.3262758584617557e-06 0.0014013421426519815 3.701505740935741e-05 +105.01991467941923 -0.302358602319346 2.3262678959581126e-06 0.0014023722309799503 3.704177533551346e-05 +105.05865300172113 -0.302358607197312 2.3262599357671477e-06 0.0014034026953981989 3.7068505833200594e-05 +105.09739132393558 -0.3023586120752634 2.326251977957178e-06 0.0014044335129324752 3.7095243124981915e-05 +105.13612964606253 -0.30235861695320004 2.3262440225855607e-06 0.0014054647031654065 3.7121993639425276e-05 +105.17486796810196 -0.3023586218311218 2.326236069515118e-06 0.0014064962623216778 3.71487522093604e-05 +105.21360629005399 -0.3023586267090282 2.3262281187343953e-06 0.0014075282341364408 3.7175514577844306e-05 +105.25234461191849 -0.30235863158692006 2.3262201704613085e-06 0.0014085605406305207 3.720229345442457e-05 +105.29108293369555 -0.30235863646479694 2.3262122244137757e-06 0.0014095932444824204 3.7229069656240376e-05 +105.32982125538508 -0.3023586413426593 2.326204280812086e-06 0.0014106262710951243 3.72558645449568e-05 +105.36855957698715 -0.30235864622050695 2.326196339458587e-06 0.0014116596911021935 3.728266930665321e-05 +105.40729789850177 -0.3023586510983387 2.3261884005253935e-06 0.001412693520494038 3.730948298962438e-05 +105.44603621992891 -0.30235865597615635 2.3261804639008875e-06 0.0014137276860989876 3.7336302958977054e-05 +105.48477454126855 -0.3023586608539588 2.3261725297435074e-06 0.001414762229088187 3.7363135578510754e-05 +105.52351286252076 -0.3023586657317463 2.326164597776322e-06 0.0014157971438586194 3.7389966805293616e-05 +105.5622511836855 -0.30235867060951865 2.3261566684057e-06 0.0014168324468123406 3.741681498105427e-05 +105.60098950476272 -0.3023586754872766 2.3261487410911345e-06 0.0014178680882865006 3.744367098018405e-05 +105.63972782575249 -0.30235868036501884 2.3261408163298756e-06 0.001418904152282418 3.747053474809064e-05 +105.67846614665481 -0.3023586852427466 2.3261328938878373e-06 0.0014199405360726246 3.749740580154156e-05 +105.71720446746963 -0.30235869012045935 2.3261249737565977e-06 0.0014209773000000453 3.752429136433136e-05 +105.75594278819703 -0.3023586949981567 2.3261170559690377e-06 0.0014220144589727046 3.755118571508078e-05 +105.79468110883693 -0.30235869987583935 2.326109140521468e-06 0.0014230519845334873 3.757808001435319e-05 +105.83341942938935 -0.3023587047535069 2.3261012274495275e-06 0.001424089883375142 3.760498986931381e-05 +105.87215774985432 -0.3023587096311592 2.3260933167876457e-06 0.0014251281588086018 3.763190336482435e-05 +105.91089607023184 -0.30235871450879676 2.326085408351378e-06 0.001426166779782842 3.765883378720992e-05 +105.94963439052185 -0.3023587193864193 2.326077502357317e-06 0.0014272057753088533 3.768577246700293e-05 +105.98837271072443 -0.3023587242640262 2.3260695987504175e-06 0.001428245169577108 3.7712713560743026e-05 +106.02711103083955 -0.3023587291416186 2.326061697347295e-06 0.0014292849088019307 3.77396714463692e-05 +106.06584935086718 -0.30235873401919566 2.326053798230598e-06 0.0014303250253043618 3.776663108980376e-05 +106.10458767080736 -0.3023587388967575 2.326045901734891e-06 0.0014313655234187547 3.7793600237462194e-05 +106.1433259906601 -0.3023587437743043 2.3260380073551624e-06 0.0014324063931493557 3.7820582943563965e-05 +106.18206431042533 -0.30235874865183604 2.3260301154107423e-06 0.0014334476222180802 3.7847572637075804e-05 +106.22080263010314 -0.3023587535293525 2.326022225793119e-06 0.001434489237811228 3.7874568435532494e-05 +106.2595409496935 -0.3023587584068538 2.326014338565833e-06 0.0014355312191412734 3.790157098060301e-05 +106.29827926919636 -0.30235876328433986 2.326006453610429e-06 0.0014365735676060644 3.792859158117179e-05 +106.3370175886118 -0.302358768161811 2.325998570947531e-06 0.0014376162827663436 3.7955614523537646e-05 +106.37575590793979 -0.30235877303926667 2.325990690692659e-06 0.001438659386376365 3.798265052362525e-05 +106.41449422718026 -0.3023587779167072 2.3259828127518575e-06 0.0014397028500487726 3.800968931914538e-05 +106.45323254633331 -0.3023587827941329 2.325974937250907e-06 0.0014407466639339032 3.803674428688046e-05 +106.49197086539895 -0.30235878767154273 2.3259670640126485e-06 0.0014417908930251695 3.8063800214139795e-05 +106.53070918437709 -0.3023587925489371 2.325959193041998e-06 0.0014428354856641575 3.8090875347353795e-05 +106.5694475032678 -0.30235879742631677 2.3259513245808527e-06 0.001443880427112005 3.8117948186193564e-05 +106.60818582207101 -0.30235880230368123 2.3259434583209488e-06 0.0014449257444788786 3.814503316353814e-05 +106.6469241407868 -0.30235880718103014 2.3259355943830882e-06 0.0014459714408780564 3.817213218190907e-05 +106.68566245941513 -0.30235881205836374 2.3259277328722485e-06 0.0014470175204427769 3.819923655209398e-05 +106.72440077795602 -0.30235881693568206 2.3259198736977646e-06 0.001448063935387224 3.822635169707786e-05 +106.76313909640942 -0.30235882181298507 2.3259120167972634e-06 0.0014491107568255996 3.825347217509908e-05 +106.80187741477543 -0.3023588266902731 2.3259041623867816e-06 0.0014501579310437108 3.8280600209063805e-05 +106.84061573305397 -0.30235883156754517 2.3258963100326175e-06 0.001451205498966146 3.8307743688945554e-05 +106.87935405124506 -0.30235883644480216 2.325888460176679e-06 0.001452253408210101 3.833489079596745e-05 +106.91809236934868 -0.30235884132204366 2.325880612620792e-06 0.0014533017138646121 3.836204846786874e-05 +106.95683068736491 -0.30235884619927017 2.3258727674183327e-06 0.0014543503672869585 3.838921739857764e-05 +106.99556900529362 -0.302358851076481 2.3258649246233932e-06 0.0014553994076458015 3.8416394032027993e-05 +107.03430732313495 -0.30235885595367645 2.3258570839899353e-06 0.0014564488091864392 3.84435816164586e-05 +107.0730456408888 -0.30235886083085634 2.3258492457651224e-06 0.0014574986055631417 3.8470775700814545e-05 +107.11178395855521 -0.3023588657080208 2.325841409877007e-06 0.0014585487549517576 3.8497968677309434e-05 +107.15052227613414 -0.30235887058517014 2.3258335763354217e-06 0.0014595992577261631 3.852518814134456e-05 +107.1892605936257 -0.30235887546230383 2.3258257451421016e-06 0.0014606501562710228 3.855240379748557e-05 +107.22799891102974 -0.3023588803394219 2.3258179162105673e-06 0.0014617014335228783 3.8579634257982274e-05 +107.26673722834644 -0.30235888521652465 2.3258100897317576e-06 0.0014627530843767961 3.860687536741184e-05 +107.30547554557566 -0.30235889009361194 2.3258022654371667e-06 0.001463805071583566 3.863411818950465e-05 +107.34421386271738 -0.30235889497068363 2.3257944434566343e-06 0.0014648574541592499 3.86613748509032e-05 +107.38295217977175 -0.30235889984773995 2.3257866238980647e-06 0.0014659102014198332 3.868863831039994e-05 +107.42169049673862 -0.30235890472478083 2.325778806677253e-06 0.001466963314877194 3.8715914952114694e-05 +107.46042881361811 -0.3023589096018057 2.325770991709267e-06 0.0014680168260477683 3.87431953654451e-05 +107.49916713041011 -0.3023589144788155 2.3257631791673786e-06 0.0014690706736510807 3.8770484019855774e-05 +107.53790544711467 -0.30235891935580955 2.325755368775154e-06 0.0014701249168314742 3.879778602586379e-05 +107.57664376373182 -0.30235892423278776 2.3257475608631416e-06 0.0014711795295911402 3.8825095610063014e-05 +107.61538208026153 -0.30235892910975065 2.3257397552385206e-06 0.0014722345132010398 3.885241076573764e-05 +107.6541203967038 -0.3023589339866983 2.3257319519357245e-06 0.0014732898457755393 3.887973974944053e-05 +107.69285871305863 -0.3023589388636299 2.325724150945672e-06 0.0014743455676862977 3.8907069945653014e-05 +107.73159702932605 -0.3023589437405459 2.325716352275591e-06 0.0014754016641001782 3.8934416877992545e-05 +107.77033534550606 -0.3023589486174461 2.325708555871981e-06 0.0014764581349271395 3.896177203656742e-05 +107.80907366159856 -0.3023589534943313 2.325700761866499e-06 0.0014775149417093107 3.8989137933391606e-05 +107.84781197760371 -0.30235895837120047 2.325692970142974e-06 0.001478572138853096 3.9016509498213774e-05 +107.8865502935214 -0.30235896324805384 2.3256851807518163e-06 0.0014796297314715499 3.904388211765254e-05 +107.92528860935163 -0.30235896812489166 2.325677393614237e-06 0.0014806876708963505 3.907127395014814e-05 +107.96402692509449 -0.3023589730017137 2.3256696088791998e-06 0.0014817459972672382 3.909866983254554e-05 +108.00276524074988 -0.30235897787852006 2.3256618264836438e-06 0.0014828046740871894 3.9126069413632595e-05 +108.04150355631782 -0.3023589827553106 2.325654046327432e-06 0.0014838637491645604 3.915349242528565e-05 +108.08024187179839 -0.30235898763208563 2.3256462685429442e-06 0.0014849231667803213 3.9180919228836096e-05 +108.11898018719155 -0.3023589925088449 2.325638493066917e-06 0.0014859829727180281 3.920834937981038e-05 +108.1577185024972 -0.30235899738558797 2.32563071991154e-06 0.0014870431617219383 3.923578745519326e-05 +108.19645681771549 -0.3023590022623162 2.325622949034794e-06 0.0014881036728949047 3.9263242500108766e-05 +108.23519513284639 -0.3023590071390277 2.3256151804443783e-06 0.0014891646144180694 3.929070164330886e-05 +108.27393344788979 -0.3023590120157238 2.32560741423986e-06 0.001490225898423385 3.9318169098554195e-05 +108.31267176284582 -0.30235901689240435 2.3255996502930683e-06 0.0014912875527979548 3.934564176282176e-05 +108.3514100777144 -0.302359021769069 2.325591888760276e-06 0.0014923495666673758 3.9373128732091736e-05 +108.39014839249558 -0.3023590266457175 2.325584129424871e-06 0.001493411974082322 3.940062112038707e-05 +108.42888670718932 -0.3023590315223502 2.3255763724190074e-06 0.0014944747587204946 3.942812095856091e-05 +108.46762502179567 -0.30235903639896733 2.325568617766525e-06 0.0014955378952436016 3.9455639256451106e-05 +108.50636333631455 -0.3023590412755684 2.325560865408036e-06 0.001496601399110714 3.9483160098226066e-05 +108.54510165074608 -0.30235904615215375 2.3255531153050056e-06 0.0014976652834706563 3.951068839632779e-05 +108.58383996509012 -0.302359051028723 2.325545367651549e-06 0.0014987295454527393 3.953823105229572e-05 +108.62257827934681 -0.3023590559052766 2.325537622154766e-06 0.0014997941648868928 3.956577419486293e-05 +108.66131659351609 -0.3023590607818142 2.3255298790475292e-06 0.001500859153093798 3.959333694253998e-05 +108.70005490759793 -0.30235906565833587 2.325522138225783e-06 0.0015019245303467986 3.962089749512277e-05 +108.73879322159232 -0.3023590705348416 2.3255143997516933e-06 0.0015029902637672947 3.964847224071867e-05 +108.77753153549936 -0.3023590754113316 2.325506663465396e-06 0.0015040563541881987 3.967604942190214e-05 +108.81626984931896 -0.3023590802878053 2.325498929614884e-06 0.0015051228533642335 3.970364582571176e-05 +108.85500816305111 -0.3023590851642633 2.325491198005504e-06 0.0015061896754157897 3.9731242290143525e-05 +108.89374647669588 -0.3023590900407054 2.3254834687305686e-06 0.0015072568879840925 3.9758854799067495e-05 +108.93248479025324 -0.3023590949171313 2.3254757417089712e-06 0.0015083244805604277 3.978647486420538e-05 +108.97122310372319 -0.30235909979354086 2.3254680170017897e-06 0.001509392467303391 3.9814100532743624e-05 +109.00996141710577 -0.30235910466993493 2.3254602946660887e-06 0.0015104607887950537 3.9841743051258896e-05 +109.04869973040088 -0.3023591095463124 2.3254525746117896e-06 0.001511529521256625 3.9869383135107564e-05 +109.08743804360863 -0.3023591144226748 2.325444856792604e-06 0.0015125985640889663 3.989703203374372e-05 +109.12617635672898 -0.30235911929902043 2.3254371412725622e-06 0.0015136680171034744 3.9924692823598106e-05 +109.1649146697619 -0.30235912417535016 2.3254294282373147e-06 0.0015147378168663243 3.995236862963712e-05 +109.20365298270742 -0.3023591290516637 2.3254217173283694e-06 0.0015158080363991472 3.998004888129407e-05 +109.24239129556551 -0.30235913392796104 2.3254140087399428e-06 0.0015168785935609581 4.000774073519385e-05 +109.28112960833623 -0.3023591388042429 2.3254063025077132e-06 0.0015179494932196901 4.0035434866653835e-05 +109.31986792101952 -0.3023591436805082 2.325398598451418e-06 0.0015190207933296167 4.006313844291785e-05 +109.35860623361546 -0.30235914855675744 2.3253908967433945e-06 0.0015200924653517042 4.009085611357807e-05 +109.39734454612399 -0.3023591534329905 2.3253831973863242e-06 0.0015211645005962773 4.011858000018146e-05 +109.43608285854506 -0.3023591583092074 2.3253755003367632e-06 0.0015222369205760138 4.0146308425872886e-05 +109.4748211708788 -0.3023591631854085 2.325367805517434e-06 0.0015233096843276558 4.017405909751089e-05 +109.51355948312512 -0.302359168061593 2.32536011303595e-06 0.001524382844776878 4.0201803978637303e-05 +109.55229779528398 -0.30235917293776166 2.3253524227960134e-06 0.001525456357818763 4.0229570014959554e-05 +109.5910361073555 -0.30235917781391375 2.3253447349508765e-06 0.001526530256382908 4.025733349231517e-05 +109.62977441933961 -0.30235918269004997 2.3253370493586007e-06 0.0015276045136246566 4.0285110437039326e-05 +109.66851273123635 -0.3023591875661697 2.3253293660130502e-06 0.00152867914446236 4.031289436132356e-05 +109.7072510430457 -0.3023591924422732 2.325321685009345e-06 0.0015297541598479306 4.034068851862948e-05 +109.7459893547676 -0.30235919731836086 2.3253140062331867e-06 0.0015308295266375294 4.036849449414117e-05 +109.78472766640212 -0.30235920219443163 2.3253063298297e-06 0.0015319052936648503 4.039630647605129e-05 +109.82346597794928 -0.30235920707048686 2.3252986556585163e-06 0.0015329813904572925 4.042412845696518e-05 +109.86220428940904 -0.30235921194652515 2.32529098379678e-06 0.0015340578931186037 4.045195496688639e-05 +109.90094260078138 -0.30235921682254757 2.3252833142869267e-06 0.0015351347408328246 4.047979577890933e-05 +109.93968091206636 -0.3023592216985537 2.325275646918623e-06 0.0015362119580464475 4.0507645272503436e-05 +109.97841922326393 -0.30235922657454395 2.3252679819191004e-06 0.0015372895254088285 4.0535489098176345e-05 +110.0171575343741 -0.30235923145051674 2.325260319233948e-06 0.001538367528240777 4.056336501597127e-05 +110.05589584539692 -0.30235923632647427 2.325252658827448e-06 0.001539445834346102 4.059123664841154e-05 +110.09463415633232 -0.3023592412024148 2.32524500073335e-06 0.0015405245580438788 4.061912060675915e-05 +110.13337246718035 -0.3023592460783387 2.325237344877148e-06 0.0015416036700655622 4.064701383303003e-05 +110.17211077794101 -0.302359250954247 2.32522969138324e-06 0.0015426831036872521 4.067491134520924e-05 +110.21084908861425 -0.30235925583013834 2.3252220400890012e-06 0.0015437629482463412 4.07028165975052e-05 +110.24958739920014 -0.30235926070601366 2.325214391160716e-06 0.0015448431144815778 4.0730732723026565e-05 +110.28832570969863 -0.3023592655818727 2.325206744366055e-06 0.001545923662327241 4.075866218873595e-05 +110.32706402010972 -0.3023592704577151 2.325199099979e-06 0.0015470046037775167 4.078659718234243e-05 +110.36580233043344 -0.30235927533354096 2.3251914577823074e-06 0.0015480859015456839 4.081454128959208e-05 +110.40454064066978 -0.3023592802093501 2.3251838180355688e-06 0.0015491675989852708 4.0842491427550996e-05 +110.44327895081874 -0.3023592850851436 2.3251761804431005e-06 0.0015502496174210816 4.0870455163528016e-05 +110.48201726088033 -0.30235928996092026 2.3251685451541603e-06 0.0015513320233214644 4.089842010573066e-05 +110.5207555708545 -0.30235929483668006 2.3251609121941733e-06 0.0015524148246667249 4.0926401779376724e-05 +110.55949388074134 -0.3023592997124238 2.32515328137936e-06 0.0015534979683008742 4.0954390441248534e-05 +110.59823219054076 -0.3023593045881512 2.325145653001119e-06 0.0015545814964329785 4.098238820478172e-05 +110.63697050025287 -0.30235930946386164 2.3251380267891468e-06 0.001555665390327374 4.1010391076500626e-05 +110.67570880987753 -0.3023593143395556 2.3251304029797854e-06 0.0015567496677325113 4.103840591852747e-05 +110.71444711941483 -0.30235931921523357 2.325122781354701e-06 0.0015578342647032597 4.106643250408278e-05 +110.75318542886478 -0.3023593240908944 2.325115162008718e-06 0.0015589192902493382 4.109446216190696e-05 +110.79192373822738 -0.302359328966539 2.3251075449623715e-06 0.001560004663259705 4.112250611267612e-05 +110.83066204750256 -0.3023593338421665 2.3250999300976637e-06 0.001561090421222964 4.11505550192544e-05 +110.86940035669036 -0.3023593387177778 2.3250923176237546e-06 0.0015621765388660353 4.11786062286179e-05 +110.9081386657908 -0.30235934359337263 2.3250847074535324e-06 0.00156326301424315 4.120667149948181e-05 +110.94687697480387 -0.30235934846895063 2.325077099421766e-06 0.0015643498712774072 4.12347474712397e-05 +110.98561528372957 -0.3023593533445123 2.3250694937882063e-06 0.0015654370922940977 4.126284260256573e-05 +111.02435359256792 -0.3023593582200571 2.325061890330469e-06 0.001566524683746068 4.1290932090691725e-05 +111.06309190131893 -0.30235936309558525 2.325054289239337e-06 0.0015676126702724176 4.1319026249672495e-05 +111.10183020998245 -0.3023593679710968 2.3250466904289336e-06 0.0015687009977363956 4.134713633150423e-05 +111.14056851855875 -0.3023593728465918 2.325039093830551e-06 0.0015697897004408028 4.137526527974583e-05 +111.17930682704755 -0.30235937772207017 2.325031499455526e-06 0.0015708787578911096 4.140338770614258e-05 +111.21804513544907 -0.30235938259753176 2.3250239074865296e-06 0.0015719682045586209 4.143152537596908e-05 +111.25678344376323 -0.30235938747297636 2.325016317649514e-06 0.001573058041937376 4.1459674770868105e-05 +111.29552175198997 -0.3023593923484044 2.3250087301496617e-06 0.0015741482234852314 4.1487824998210085e-05 +111.33426006012937 -0.3023593972238156 2.3250011449387654e-06 0.001575238793998908 4.1515985889069606e-05 +111.37299836818143 -0.30235940209921064 2.3249935619051576e-06 0.0015763296978706228 4.154415743417639e-05 +111.41173667614612 -0.3023594069745883 2.324985981252624e-06 0.001577421022197978 4.1572339197604474e-05 +111.45047498402346 -0.3023594118499498 2.32497840285723e-06 0.0015785126549131719 4.1600527860816724e-05 +111.48921329181341 -0.3023594167252938 2.3249708267110905e-06 0.0015796047199828189 4.162873162342586e-05 +111.52795159951597 -0.3023594216006215 2.3249632527749728e-06 0.0015806971183729703 4.165693461448129e-05 +111.56668990713122 -0.3023594264759321 2.3249556811465653e-06 0.0015817899056400936 4.16851542689825e-05 +111.6054282146591 -0.3023594313512263 2.32494811170078e-06 0.0015828830311987016 4.171338240237594e-05 +111.64416652209961 -0.30235943622650363 2.3249405446672384e-06 0.0015839765351019195 4.174160837219321e-05 +111.68290482945278 -0.3023594411017632 2.324932979807131e-06 0.0015850704728392385 4.176985261433179e-05 +111.72164313671858 -0.3023594459770073 2.32492541720249e-06 0.0015861647002290036 4.179810589169665e-05 +111.76038144389705 -0.3023594508522337 2.32491785692334e-06 0.001587259341341456 4.182636078293182e-05 +111.79911975098817 -0.30235945572744344 2.3249102989062938e-06 0.0015883543343656519 4.1854628884149044e-05 +111.83785805799191 -0.3023594606026363 2.3249027430822506e-06 0.001589449698507938 4.1882897560103874e-05 +111.8765963649083 -0.3023594654778123 2.3248951895459976e-06 0.001590545434592689 4.191118754033119e-05 +111.91533467173731 -0.30235947035297145 2.324887638262572e-06 0.0015916415437246922 4.1939485941656115e-05 +111.95407297847905 -0.3023594752281134 2.324880089268838e-06 0.0015927380258058314 4.196779009369436e-05 +111.99281128513334 -0.30235948010323893 2.3248725425216657e-06 0.0015938348599432853 4.199610175649493e-05 +112.03154959170035 -0.3023594849783474 2.3248649980030475e-06 0.001594932064017194 4.202441495321348e-05 +112.07028789818 -0.30235948985343847 2.324857455789903e-06 0.0015960296693436234 4.205275434169218e-05 +112.10902620457232 -0.3023594947285129 2.3248499157885712e-06 0.0015971276057418738 4.208109161700971e-05 +112.14776451087725 -0.30235949960357006 2.3248423780532936e-06 0.0015982259556898929 4.2109433969141844e-05 +112.18650281709488 -0.30235950447861054 2.3248348425942124e-06 0.0015993246463270703 4.213778892378161e-05 +112.22524112322508 -0.3023595093536341 2.3248273094376675e-06 0.0016004237089955549 4.2166157049484687e-05 +112.263979429268 -0.3023595142286404 2.324819778404926e-06 0.0016015231469529237 4.2194526805774394e-05 +112.30271773522358 -0.30235951910362985 2.3248122497583457e-06 0.0016026229576782622 4.2222906772359365e-05 +112.34145604109179 -0.3023595239786023 2.3248047233134878e-06 0.001603723111834679 4.22512994207685e-05 +112.38019434687267 -0.30235952885355744 2.324797199087465e-06 0.0016048236697409864 4.227970006795211e-05 +112.4189326525662 -0.302359533728496 2.3247896771977046e-06 0.001605924564293794 4.230810522845759e-05 +112.45767095817237 -0.3023595386034172 2.3247821574751738e-06 0.0016070258558812313 4.2336518612175925e-05 +112.49640926369125 -0.3023595434783211 2.3247746400442372e-06 0.001608127521598889 4.236495117424791e-05 +112.53514756912276 -0.3023595483532083 2.324767124915615e-06 0.0016092295263875197 4.239338248194629e-05 +112.5738858744669 -0.3023595532280781 2.324759611901675e-06 0.0016103319163205223 4.242182394318656e-05 +112.61262417972372 -0.3023595581029309 2.3247521012167015e-06 0.0016114346881326601 4.245027706967154e-05 +112.65136248489326 -0.3023595629777665 2.324744592779187e-06 0.0016125378155374796 4.2478741307805724e-05 +112.69010078997542 -0.30235956785258505 2.324737086660217e-06 0.001613641323965722 4.250720503461033e-05 +112.72883909497025 -0.3023595727273862 2.324729582636329e-06 0.0016147452062805396 4.2535681384739686e-05 +112.76757739987775 -0.3023595776021706 2.3247220809887136e-06 0.0016158494435602967 4.2564164336287946e-05 +112.80631570469788 -0.3023595824769378 2.3247145815644143e-06 0.0016169540291697 4.259266234027027e-05 +112.8450540094307 -0.3023595873516874 2.324707084426731e-06 0.001618059027614507 4.262116886389139e-05 +112.88379231407616 -0.30235959222642034 2.3246995893709526e-06 0.0016191643701216243 4.264968398749998e-05 +112.92253061863434 -0.3023595971011353 2.3246920967063167e-06 0.0016202700985311353 4.267820234462563e-05 +112.96126892310517 -0.3023596019758337 2.3246846062669575e-06 0.0016213761824533787 4.270672975310638e-05 +113.00000722748864 -0.30235960685051455 2.3246771180305213e-06 0.001622482651712391 4.273527402687312e-05 +113.03874553178484 -0.3023596117251782 2.3246696320238875e-06 0.0016235894811717966 4.276381235594536e-05 +113.07748383599365 -0.30235961659982497 2.3246621483177787e-06 0.001624696652818835 4.279237588976155e-05 +113.11622214011518 -0.3023596214744539 2.324654666903705e-06 0.0016258042464207742 4.2820936429147e-05 +113.15496044414934 -0.3023596263490661 2.3246471875795644e-06 0.0016269121506250386 4.284950794953123e-05 +113.19369874809622 -0.30235963122366044 2.324639710573624e-06 0.0016280204869703347 4.287809036879475e-05 +113.23243705195573 -0.30235963609823796 2.324632235818999e-06 0.0016291291567836561 4.2906684212210786e-05 +113.27117535572793 -0.30235964097279794 2.3246247632690087e-06 0.0016302381912219766 4.29352921441522e-05 +113.30991365941284 -0.3023596458473402 2.324617293050002e-06 0.0016313476385378457 4.2963892275553386e-05 +113.34865196301038 -0.3023596507218659 2.3246098250359965e-06 0.0016324573732845894 4.2992510221899884e-05 +113.38739026652061 -0.3023596555963735 2.324602359197789e-06 0.0016335675569564504 4.302113560494664e-05 +113.42612856994353 -0.3023596604708641 2.32459489561127e-06 0.0016346780978134922 4.304977162705711e-05 +113.46486687327908 -0.3023596653453375 2.3245874342028234e-06 0.0016357889628485273 4.3078410702392535e-05 +113.50360517652737 -0.3023596702197933 2.324579975187407e-06 0.0016369002206115038 4.310706014551525e-05 +113.54234347968831 -0.30235967509423173 2.324572518362492e-06 0.0016380118531039427 4.313571987567925e-05 +113.58108178276196 -0.3023596799686529 2.324565063682712e-06 0.0016391238448562357 4.316438795015636e-05 +113.61982008574826 -0.3023596848430565 2.32455761129026e-06 0.0016402362025239815 4.3193068243302215e-05 +113.65855838864726 -0.3023596897174425 2.324550161102381e-06 0.0016413489569714482 4.32217524029384e-05 +113.69729669145894 -0.302359694591811 2.3245427131998754e-06 0.0016424620746590783 4.325045161106486e-05 +113.7360349941833 -0.30235969946616226 2.3245352675373713e-06 0.0016435755592962616 4.32791568590163e-05 +113.77477329682033 -0.302359704340496 2.324527824146403e-06 0.001644689403392777 4.330786642971944e-05 +113.8135115993701 -0.30235970921481214 2.3245203828311197e-06 0.0016458036219687262 4.333659099530612e-05 +113.85224990183254 -0.30235971408911105 2.3245129439007767e-06 0.0016469182168453854 4.336531776813137e-05 +113.89098820420759 -0.30235971896339237 2.3245055071360133e-06 0.0016480331579750561 4.3394054134877386e-05 +113.9297265064954 -0.302359723837656 2.3244980725921295e-06 0.0016491484993866098 4.3422795230737704e-05 +113.96846480869587 -0.3023597287119023 2.3244906402936836e-06 0.0016502641807574414 4.3451555323414275e-05 +114.00720311080906 -0.30235973358613105 2.3244832102545247e-06 0.001651380246653238 4.348032311711208e-05 +114.04594141283492 -0.3023597384603421 2.324475782425927e-06 0.001652496673314975 4.3509100638740864e-05 +114.08467971477349 -0.3023597433345358 2.324468356784024e-06 0.001653613464951828 4.3537881212673815e-05 +114.12341801662471 -0.30235974820871153 2.3244609333563497e-06 0.0016547306434253229 4.3566668797549204e-05 +114.1621563183887 -0.3023597530828699 2.3244535122119597e-06 0.0016558481999809978 4.359547058057801e-05 +114.20089462006531 -0.3023597579570109 2.324446093265665e-06 0.0016569660779621658 4.362427806154805e-05 +114.23963292165467 -0.3023597628311337 2.3244386766004877e-06 0.0016580843792631907 4.365309880901172e-05 +114.27837122315665 -0.3023597677052395 2.324431262085922e-06 0.0016592030243342047 4.368191670749383e-05 +114.31710952457138 -0.3023597725793273 2.324423849871424e-06 0.0016603220434831239 4.371075477233529e-05 +114.35584782589876 -0.3023597774533974 2.3244164398352234e-06 0.0016614414283837003 4.3739595534860686e-05 +114.39458612713895 -0.30235978232745025 2.324409031981753e-06 0.0016625611587737477 4.376844774559545e-05 +114.43332442829174 -0.3023597872014847 2.3244016263803253e-06 0.0016636813134877967 4.379731057730104e-05 +114.47206272935725 -0.3023597920755022 2.32439422300162e-06 0.001664801798062514 4.382617442687022e-05 +114.51080103033546 -0.3023597969495016 2.3243868218958204e-06 0.0016659226678235267 4.385504771140883e-05 +114.54953933122636 -0.3023598018234836 2.32437942291785e-06 0.001667043883846424 4.388393790831634e-05 +114.58827763203003 -0.3023598066974477 2.324372026276746e-06 0.001668165475228135 4.391283546042544e-05 +114.62701593274633 -0.30235981157139413 2.32436463178565e-06 0.001669287452958523 4.394173371422245e-05 +114.66575423337535 -0.30235981644532245 2.324357239500484e-06 0.0016704098037280512 4.397064816331254e-05 +114.70449253391705 -0.30235982131923317 2.324349849477573e-06 0.0016715325198393327 4.399957331616927e-05 +114.7432308343715 -0.30235982619312646 2.3243424616481163e-06 0.001672655578859537 4.4028493876503956e-05 +114.78196913473865 -0.30235983106700165 2.3243350760513464e-06 0.001673779032113262 4.405743181371929e-05 +114.82070743501845 -0.30235983594085947 2.32432769260505e-06 0.00167490283221562 4.4086377660480265e-05 +114.85944573521104 -0.30235984081469885 2.324320311472132e-06 0.0016760270383803086 4.4115335952710624e-05 +114.89818403531629 -0.30235984568852076 2.3243129324872763e-06 0.0016771515736735056 4.414429877378233e-05 +114.93692233533429 -0.3023598505623249 2.324305555759268e-06 0.0016782764869886881 4.417327419455573e-05 +114.9756606352649 -0.30235985543611094 2.3242981811468683e-06 0.0016794017966285937 4.4202247709767955e-05 +115.01439893510829 -0.30235986030987955 2.3242908089062016e-06 0.001680527422742397 4.423124817458997e-05 +115.05313723486438 -0.30235986518363017 2.3242834388489284e-06 0.0016816534534873065 4.4260244709623455e-05 +115.09187553453323 -0.3023598700573625 2.324276070912091e-06 0.0016827798625501532 4.4289248235189324e-05 +115.13061383411473 -0.3023598749310772 2.3242687052392506e-06 0.0016839066419909261 4.431826433902082e-05 +115.16935213360901 -0.3023598798047739 2.3242613417785653e-06 0.001685033783455538 4.434729028338734e-05 +115.20809043301593 -0.3023598846784532 2.3242539804053966e-06 0.0016861612452643345 4.43763233649194e-05 +115.2468287323356 -0.30235988955211396 2.3242466213992385e-06 0.0016872891386869465 4.440535792194802e-05 +115.28556703156801 -0.3023598944257571 2.3242392646060896e-06 0.001688417381304083 4.4434417131634296e-05 +115.32430533071309 -0.3023598992993822 2.3242319100030705e-06 0.0016895459890105917 4.4463475633261744e-05 +115.36304362977087 -0.30235990417298936 2.324224557567652e-06 0.0016906749785321788 4.449253801582046e-05 +115.40178192874143 -0.30235990904657833 2.3242172073063684e-06 0.0016918043352943289 4.452161811618934e-05 +115.44052022762469 -0.30235991392014977 2.3242098593019833e-06 0.0016929340287043166 4.4550698298996154e-05 +115.47925852642068 -0.302359918793703 2.324202513475694e-06 0.0016940641105036701 4.457979392296715e-05 +115.51799682512933 -0.30235992366723813 2.3241951699389113e-06 0.0016951945714352805 4.460889530291608e-05 +115.55673512375078 -0.30235992854075544 2.324187828583258e-06 0.0016963253916418338 4.4638007266821797e-05 +115.59547342228493 -0.30235993341425454 2.32418048936636e-06 0.00169745658454237 4.466712755015134e-05 +115.63421172073177 -0.30235993828773555 2.324173152351179e-06 0.001698588145085097 4.4696258480943e-05 +115.67295001909136 -0.3023599431611988 2.3241658175842068e-06 0.0016997200644414164 4.4725383909621395e-05 +115.71168831736365 -0.3023599480346437 2.324158485050264e-06 0.001700852365471085 4.4754539009197226e-05 +115.75042661554869 -0.3023599529080709 2.32415115469341e-06 0.001701985010901213 4.478368987414562e-05 +115.78916491364649 -0.30235995778147945 2.324143826535879e-06 0.001703118061500217 4.4812854185359174e-05 +115.82790321165692 -0.30235996265487003 2.324136500479146e-06 0.0017042514762191207 4.4842027016645955e-05 +115.86664150958018 -0.3023599675282427 2.3241291767516493e-06 0.001705385248478198 4.487120798002357e-05 +115.90537980741615 -0.30235997240159673 2.3241218551500287e-06 0.0017065194143364856 4.49003921446792e-05 +115.94411810516479 -0.3023599772749335 2.3241145357756126e-06 0.0017076538875664038 4.492958768252089e-05 +115.9828564028262 -0.30235998214825166 2.3241072187249764e-06 0.0017087887662036799 4.4958795899149347e-05 +116.02159470040036 -0.30235998702155203 2.324099903705354e-06 0.0017099239972060698 4.498801674077564e-05 +116.06033299788719 -0.3023599918948336 2.324092590946453e-06 0.0017110596283836158 4.5017232675782056e-05 +116.09907129528685 -0.30235999676809727 2.3240852803892352e-06 0.001712195622475171 4.5046465286889647e-05 +116.13780959259915 -0.30236000164134275 2.324077972058005e-06 0.0017133319745651406 4.507569892778596e-05 +116.17654788982425 -0.3023600065145702 2.324070665859494e-06 0.0017144686803242557 4.5104957723375974e-05 diff --git a/sample/09_FT_Kitaev/TPQ/TPQ_gapless.dat b/sample/09_FT_Kitaev/TPQ/TPQ_gapless.dat new file mode 100644 index 00000000..9b96e2a3 --- /dev/null +++ b/sample/09_FT_Kitaev/TPQ/TPQ_gapless.dat @@ -0,0 +1,3000 @@ +0.0 0.00027116919370134124 0.00028817797810106735 0.0 0.0 +0.04162901252418037 -0.0036184547414986894 0.00028571773188376247 0.00016164013681013725 7.015386029797737e-07 +0.08317743831615208 -0.007497368300956664 0.00028406222923543507 0.0006436437607937408 2.797400948429763e-06 +0.12464597006598624 -0.011361515308580242 0.00028323439525833316 0.0014401633032830468 6.263310107224426e-06 +0.1660354599929323 -0.01520693064097988 0.000283241245794785 0.002543467304712931 1.1060611256779456e-05 +0.20734691271790515 -0.01902975794651373 0.0002840736621420086 0.003944056083717093 1.713733125088518e-05 +0.2485814772223241 -0.02282626607673686 0.0002857070457381536 0.005630795015221546 2.442973589334193e-05 +0.2897404380118986 -0.02659286409110478 0.0002881027791979943 0.0075910625830908915 3.28643018470524e-05 +0.3308252056103698 -0.030326114722792567 0.00029121032781755427 0.009810910212453576 4.235999306939376e-05 +0.37183730651189967 -0.034022746221389094 0.00029496975651882243 0.012275230811330218 5.2830711967885595e-05 +0.4127783727218358 -0.037679662516263805 0.0002993144193891703 0.014967932957253544 6.418778457338533e-05 +0.45365013101411433 -0.04129395167189769 0.0003041735993476156 0.017872117746092438 7.634233785546326e-05 +0.49445439202981073 -0.04486289263278347 0.00030947492260106094 0.020970255468917384 8.920743617915703e-05 +0.5351930393355794 -0.04838396028009492 0.0003151464318389315 0.02424435948843176 0.00010269986247899571 +0.5758680185532146 -0.051854828844744516 0.0003211182605118118 0.02767615493811305 0.00011674145693499296 +0.6164813266626744 -0.05527337374135269 0.0003273238992863309 0.031247240153119294 0.00013125995995357217 +0.6570350015709248 -0.05863767190479105 0.00033370108090704744 0.03493923905061431 0.00014618934454706887 +0.6975311120282379 -0.06194600072520331 0.00034019233110441755 0.03873394299734339 0.0001614696626369864 +0.737971747962417 -0.06519683568870568 0.000346745243056979 0.042613441023839994 0.0001770464669081357 +0.7783590112901088 -0.06838884683935922 0.0003533125343362978 0.04656023755853109 0.00019286990114875864 +0.81869500725316 -0.07152089418362541 0.00035985194127146014 0.05055735715359642 0.0002088935745151399 +0.8589818363171086 -0.07459202216151578 0.00036632599875334205 0.05458843595155772 0.00022507334673366384 +0.8992215866585587 -0.0776014533092856 0.0003727017454456572 0.05863779989259616 0.00024136615100313864 +0.9394163272585156 -0.08054858123702546 0.0003789503863304282 0.06269052988431865 0.00025772896979459265 +0.9795681016098694 -0.08343296304118908 0.0003850469371413263 0.06673251434630895 0.000274118057684925 +1.0196789220392009 -0.08625431126722467 0.00039096986883279766 0.07075048970067216 0.00029048847765079125 +1.0597507646359903 -0.08901248553135395 0.0003967007648806244 0.0747320695073714 0.0003067939862671161 +1.0997855647761015 -0.09170748390344496 0.00040222399987116866 0.07866576304069471 0.00032298727239527973 +1.1397852132212065 -0.09433943414511271 0.00040752644441649385 0.08254098417269835 0.00033902052612726615 +1.1797515527714273 -0.09690858488890008 0.0004125971988001823 0.0863480514733187 0.00035484629209536024 +1.2196863754449971 -0.09941529683585833 0.000417427355800171 0.09007818045784644 0.00037041854493618707 +1.259591420156039 -0.10186003404024623 0.000422009791727275 0.09372346891351924 0.00038569391498430593 +1.2994683708595869 -0.10424335534157075 0.00042633898376053295 0.09727687622113539 0.00040063298867922854 +1.3393188551317017 -0.10656590599593226 0.0004304108510655995 0.10073219755769852 0.0004152016097420976 +1.3791444431517934 -0.10882840955071317 0.00043422261687072204 0.10408403382507146 0.0004293721126669547 +1.4189466470541168 -0.11103165999916885 0.00043777268857919514 0.1073277580999404 0.0004431244282475353 +1.4587269206156215 -0.1131765142444755 0.0004410605530668909 0.11045947934456907 0.0004564470105565065 +1.49848665924801 -0.11526388489633053 0.00044408668449396217 0.11347600405784654 0.00046933754513476216 +1.538227200262779 -0.11729473341729975 0.00044685246222004904 0.11637479648395672 0.0004818034084593074 +1.577949823379232 -0.1192700636307664 0.00044936009671334897 0.11915393793312447 0.0004938618586838734 +1.61765575144683 -0.12119091559757654 0.0004516125616665146 0.12181208570667568 0.0005055399470040779 +1.6573461513547953 -0.12305835986425573 0.00045361353085080565 0.1243484320581104 0.0005168741478308174 +1.6970221351035082 -0.12487349208200048 0.0004553673185471081 0.12676266356392663 0.0005279097143803549 +1.7366847610139609 -0.1266374279924722 0.0004568788226701498 0.1290549212230878 0.000538699774465527 +1.7763350350532168 -0.12835129877372317 0.0004581534699506309 0.13122576155289198 0.000549304189359067 +1.8159739122556178 -0.13001624673733744 0.000459197162752459 0.13327611890167904 0.0005597882065969398 +1.85560229822112 -0.13163342136601108 0.0004600162272782864 0.13520726915564188 0.0005702209454110269 +1.8952210506738543 -0.1332039756793237 0.00046061736305892686 0.13702079497793213 0.0005806737608061335 +1.9348309810656066 -0.13472906291430137 0.00046100759372805434 0.13871855268324465 0.0005912185386298616 +1.9744328562104232 -0.13620983350652008 0.0004611942191653355 0.14030264082004731 0.0006019259787333209 +2.014027399938048 -0.137647432356909 0.00046118476914112737 0.14177537050539296 0.0006128639257545588 +2.05361529475525 -0.13904299636905526 0.0004609869586275691 0.14313923753355465 0.0006240958066088325 +2.093197183505416 -0.14039765224164386 0.0004606086449525756 0.14439689625949062 0.000635679229943439 +2.1327736710179366 -0.14171251450068392 0.0004600577869714646 0.14555113524083005 0.0006476647956005726 +2.1723453257400864 -0.14298868375631493 0.00045934240641685894 0.14660485460775818 0.0006600951516912059 +2.211912681345081 -0.1442272451692638 0.00045847055156663703 0.14756104511832044 0.0006730043240621535 +2.251476238310949 -0.14542926711239876 0.0004574502633433498 0.14842276884700098 0.0006864173286008918 +2.291036465465684 -0.14659580001326458 0.00045628954392760095 0.14919314144715218 0.000700350062375204 +2.3305938014949685 -0.14772787536400556 0.0004549963279394196 0.1498753159219328 0.0007148094561284171 +2.370148656409393 -0.1488265048856378 0.00045357845620724304 0.1504724678343977 0.0007297938593865419 +2.4097014129687744 -0.1498926798342231 0.0004520436521194252 0.1509877818846349 0.0007452936210286491 +2.449252428061704 -0.15092737043711774 0.00045039950052219263 0.1514244397801177 0.0007612918230996826 +2.4888020340389723 -0.15193152544808378 0.0004486534291059086 0.15178560932511517 0.0007777651239210223 +2.5283505399999315 -0.1529060718107021 0.0004468126922002442 0.15207443465490014 0.0007946846676511387 +2.56789823303128 -0.15385191442013138 0.00044488435687989927 0.15229402754176435 0.0008120170210949689 +2.607445379398053 -0.1547699359738994 0.0004428752912691749 0.1524474597010973 0.0008297251036945937 +2.646992225686917 -0.15566099690300098 0.0004407921549214048 0.15253775602796701 0.0008477690828245315 +2.686538999902109 -0.15652593537518142 0.0004386413911421591 0.1525678886967106 0.000866107213006397 +2.726085912514591 -0.15736556736284377 0.0004364292211178542 0.15254077205888325 0.0008846966037964832 +2.765633157465147 -0.15818068676856897 0.000434161639709938 0.15245925827753978 0.0009034939069113733 +2.8051809131223253 -0.15897206560176366 0.00043184441277367095 0.15232613363874345 0.0009224559178686249 +2.84472934319625 -0.15974045420044375 0.0004294830758610839 0.15214411548431903 0.0009415400914840169 +2.884278597609413 -0.16048658149263983 0.00042708293417153425 0.15191584971271654 0.0009607049735845768 +2.9238288133256667 -0.16121115529235172 0.0004246490636165498 0.1516439087981454 0.000979910553492212 +2.9633801151386754 -0.1619148626254074 0.0004221863128713897 0.1513307902808108 0.0009991185433815368 +3.0029326164211394 -0.1625983700809699 0.0004196993062924543 0.15097891568436506 0.0010182925914365003 +3.0424864198361457 -0.16326232418481226 0.0004171924475853124 0.15059062981930357 0.0010373984361843893 +3.0820416180120067 -0.16390735179082405 0.0004146699241162405 0.15016820043394993 0.001056404009370986 +3.1215982941819744 -0.16453406048753363 0.00041213571176741155 0.1497138181773707 0.0010752794945450093 +3.161156522790184 -0.16514303901674 0.0004095935802437185 0.14922959684087925 0.0010939973480789042 +3.20071637006523 -0.16573485770160984 0.00040704709874586826 0.14871757384771264 0.001112532288857388 +3.2402778945626927 -0.16631006888187594 0.00040449964193443703 0.14817971096222793 0.0011308612622689736 +3.2798411476779834 -0.1668692073539891 0.0004019543961124449 0.14761789519259347 0.0011489633835061158 +3.3194061741307985 -0.16741279081431407 0.0003994143655667861 0.14703393986282945 0.001166819864654087 +3.35897301242246 -0.16794132030365103 0.00039688237901013457 0.146429585832107 0.001184413929375886 +3.3985416952674092 -0.16845528065155735 0.0003943610960748353 0.1458065028409502 0.0012017307185832134 +3.43811225000006 -0.1689551409191142 0.0003918530138154457 0.14516629096585476 0.0012187571898936496 +3.477684698958175 -0.16944135483893694 0.0003893604731806069 0.14451048216525872 0.0012354820132712116 +3.517259059843945 -0.16991436125137457 0.00038688566542385876 0.1438405419015757 0.0012518954649269828 +3.5568353460638233 -0.17037458453597462 0.00038443063842201063 0.1431578708251523 0.0012679893210234359 +3.596413567048215 -0.17082243503740838 0.0003819973028805366 0.14246380650741272 0.0012837567526479939 +3.6359937285520387 -0.17125830948516127 0.0003795874384045057 0.14175962521173524 0.0012991922230485983 +3.6755758329371266 -0.17168259140638967 0.0003772026994193225 0.14104654369162664 0.001314291388060158 +3.7151598794374308 -0.1720956515314396 0.00037484462092871 0.14032572100689597 0.0013290510003227734 +3.754745864407918 -0.17249784819160166 0.0003725146240995806 0.13959826034928166 0.0013434688178214692 +3.7943337815580462 -0.17288952770874766 0.00037021402166681835 0.13886521087025153 0.001357543517061626 +3.833923622170615 -0.17327102477656475 0.0003679440231522327 0.13812756950412686 0.0013712746111269622 +3.873515375306841 -0.17364266283316307 0.00036570573989529864 0.1373862827806028 0.0013846623727328967 +3.913109027998329 -0.1740047544248788 0.0003635001898937478 0.1366422486215478 0.0013977077623222058 +3.952704565426765 -0.17435760156115487 0.0003613283024539615 0.13589631811725747 0.0014104123611757035 +3.9923019710919134 -0.17470149606041332 0.0003591909226532706 0.1351492972783378 0.0014227783094270905 +4.031901226968645 -0.1750367198868763 0.000357088815615955 0.1344019487595669 0.001434808248935975 +4.071502313653608 -0.17536354547832977 0.0003550226706063222 0.13365499355280144 0.0014465052707179696 +4.111105210502093 -0.1756822360648469 0.00035299310494330476 0.1329091126463025 0.001457872866883426 +4.150709895755712 -0.17599304597852247 0.00035100066774124426 0.13216494864824888 0.0014689148868225485 +4.190316346661377 -0.17629622095428385 0.0003490458434814541 0.1314231073728705 0.0014796354973313777 +4.229924539582109 -0.1765919984218768 0.00034712905542094214 0.13068415938732938 0.0014900391466221277 +4.269534450100169 -0.17688060778912826 0.0003452506688437181 0.12994864151848148 0.0015001305318172555 +4.3091460531129355 -0.1771622707166163 0.0003434109941600197 0.1292170583184771 0.0015099145697504562 +4.3487593229219925 -0.17743720138387806 0.000341610289861298 0.12848988348863014 0.001519396370928282 +4.388374233315792 -0.17770560674731314 0.00033984876533452906 0.12776756126082497 0.001528581216188269 +4.427990757646372 -0.17796768678993036 0.0003381265835448101 0.1270505077366674 0.0015374745361641073 +4.467608868900341 -0.17822363476311312 0.0003364438635896211 0.12633911218378888 0.0015460818929529032 +4.507228539764657 -0.17847363742056732 0.00033480068313275165 0.12563373828984226 0.001554408964161351 +4.546849742687376 -0.17871787524463534 0.0003331970807223274 0.12493472537401051 0.001562461528802553 +4.586472449933769 -0.17895652266515305 0.0003316330579993039 0.12424238955665484 0.0015702454550592824 +4.62609663363807 -0.17918974827103487 0.0003301085818019598 0.12355702488743202 0.0015777666896946154 +4.665722265851129 -0.17941771501477224 0.00032862358617041136 0.12287890443241946 0.001585031248802069 +4.7053493185842274 -0.1796405804100345 0.000327177974258145 0.12220828132070662 0.001592045210022238 +4.74497776384933 -0.1798584967225526 0.00032577162015407873 0.12154538975174393 0.0015988147057405663 +4.78460757369596 -0.180071611154483 0.0003244043706194032 0.12089044596316882 0.001605345917385709 +4.824238720244955 -0.18028006602242577 0.0003230760467449278 0.12024364916103036 0.0016116450705831106 +4.863871175719276 -0.18048399892928946 0.0003217864455319223 0.11960518241255301 0.0016177184310545514 +4.903504912472113 -0.1806835429301837 0.00032053534140124413 0.11897521350233382 0.0016235723012019262 +4.943139903012402 -0.18087882669251573 0.00031932248763315334 0.11835389575340566 0.0016292130172141928 +4.982776120027972 -0.1810699746504746 0.0003181476177427948 0.11774136881347885 0.0016346469466368737 +5.022413536406494 -0.1812571071540744 0.00031701044679396923 0.1171377594076668 0.001639880486338241 +5.06205212525432 -0.1814403406129269 0.0003159106726531476 0.11654318205866361 0.0016449200607435857 +5.1016918599134415 -0.1816197876349188 0.00031484797718941 0.11595773977507985 0.0016497721203437548 +5.141332713976623 -0.18179555715994936 0.00031382202741948357 0.11538152470928127 0.0016544431403037456 +5.180974661300896 -0.18196775458890002 0.0003128324766036618 0.11481461878524994 0.001658939619275417 +5.220617676019483 -0.1821364819079833 0.0003118789652917436 0.11425709429809384 0.001663268078180866 +5.260261732552317 -0.18230183780863754 0.0003109611223248784 0.11370901448510799 0.0016674350590884382 +5.299906805615195 -0.182463917803106 0.0003100785657912133 0.11317043407067524 0.0016714471239932833 +5.339552870227729 -0.18262281433585137 0.00030923090394170764 0.11264139978492836 0.0016753108536037232 +5.379199901720149 -0.1827786168909553 0.0003084177360627032 0.11212195085726395 0.001679032846008915 +5.418847875739035 -0.18293141209562783 0.0003076386533126589 0.11161211948608353 0.0016826197152253928 +5.458496768252105 -0.18308128381997238 0.00030689323951957814 0.11111193128536205 0.0016860780895770827 +5.498146555552073 -0.18322831327313463 0.0003061810719439952 0.11062140570860209 0.0016894146100068896 +5.537797214259713 -0.18337257909595964 0.0003055017220063439 0.11014055645161065 0.0016926359280748469 +5.577448721326127 -0.18351415745028288 0.00030485475598241346 0.10966939183477392 0.0016957487038550252 +5.617101054034348 -0.1836531221049763 0.000304239735666132 0.10920791516511417 0.0016987596036357135 +5.65675419000027 -0.18378954451886018 0.00030365621900161976 0.1087561250799572 0.0017016752972940795 +5.696408107173016 -0.18392349392059995 0.0003031037606857983 0.10831401587177943 0.0017045024555861852 +5.736062783834762 -0.18405503738568915 0.0003025819127417733 0.10788157779615898 0.0017072477470955391 +5.775718198600056 -0.18418423991062993 0.0003020902250646746 0.1074587973627452 0.0017099178350174374 +5.8153743304147145 -0.18431116448441023 0.00030162824594092075 0.10704565761007101 0.0017125193736663772 +5.855031158554306 -0.18443587215737334 0.00030119552254052537 0.10664213836561152 0.001715059004741781 +5.894688662622259 -0.1845584221075818 0.00030079160138530344 0.10624821649050732 0.001717543353448381 +5.934346822547643 -0.1846788717047602 0.00030041602879176955 0.10586386611088287 0.001719979024203272 +5.974005618582672 -0.184797276571909 0.00030006835129116994 0.10548905883550619 0.0017223725963669905 +6.013665031299913 -0.18491369064467625 0.0002997481160256356 0.10512376396081492 0.001724730619452547 +6.0533250415892565 -0.18502816622856702 0.00029945487112325415 0.10476794866365902 0.0017270596083890557 +6.092985630654713 -0.18514075405407204 0.0002991881660511176 0.10442157818265024 0.001729366038428385 +6.1326467800109725 -0.18525150332979276 0.0002989475519472152 0.10408461598826031 0.0017316563398518138 +6.1723084714798295 -0.1853604617936356 0.0002987325819331086 0.10375702394247316 0.0017339368926054496 +6.211970687186465 -0.18546767576214976 0.0002985428114063775 0.10343876244848665 0.001736214020627914 +6.251633409555586 -0.18557319017807417 0.00029837779831469235 0.1031297905907026 0.0017384939860205252 +6.2912966213074775 -0.1856770486561632 0.00029823710341154796 0.10283006626591507 0.001740782983191666 +6.330960305453965 -0.18577929352735345 0.0002981202904942669 0.10253954630547885 0.001743087132761877 +6.370624445294285 -0.1858799658813356 0.000298026926625404 0.10225818658975461 0.0017454124753362877 +6.41028902441092 -0.1859791056075867 0.0002979565823376972 0.10198594215450858 0.0017477649652233803 +6.449954026665374 -0.18607675143492686 0.0002979088318228822 0.10172276728991982 0.001750150464076564 +6.489619436193912 -0.18617294096964895 0.0002978832531062046 0.10146861563284044 0.0017525747344414794 +6.529285237403288 -0.18626771073227832 0.00029787942820520347 0.10122344025202733 0.0017550434332471582 +6.568951414966446 -0.18636109619301508 0.0002978969432756336 0.10098719372764338 0.001757562105224177 +6.60861795381823 -0.18645313180590276 0.0002979353887429854 0.10075982822427039 0.0017601361765402143 +6.64828483915108 -0.18654385104177895 0.0002979943594219857 0.10054129555864648 0.001762770948051656 +6.687952056410774 -0.18663328642004431 0.0002980734546227622 0.1003315472621114 0.0017654715890307046 +6.7276195912921395 -0.18672146953930446 0.00029817227824614247 0.1001305346377449 0.0017682431305909008 +6.767287429734838 -0.1868084311069166 0.0002982904388669423 0.09993820881314014 0.0017710904594275738 +6.80695555791916 -0.18689420096749101 0.00029842754980689715 0.09975452078840395 0.001774018311492956 +6.84662396226184 -0.18697880813037918 0.00029858322919747095 0.09957942148020033 0.0017770312659581104 +6.886292629411946 -0.18706228079619272 0.00029875710003204626 0.09941286176157338 0.0017801337391519627 +6.925961546246792 -0.18714464638238335 0.00029894879020992554 0.09925479249843633 0.001783329978835884 +6.965630699867892 -0.18722593154792597 0.0002991579325707301 0.09910516458177439 0.001786624058467308 +7.005300077596992 -0.18730616221712962 0.00029938416492092114 0.0989639289577945 0.0017900198719014361 +7.044969666972131 -0.18738536360261873 0.00029962713005222307 0.09883103665364973 0.0017935211281593481 +7.084639455743776 -0.18746356022750668 0.00029988647575243557 0.09870643880115533 0.0017971313464589305 +7.124309431871002 -0.1875407759467984 0.0003001618548097122 0.09859008665745496 0.0018008538516282285 +7.163979583517744 -0.1876170339680466 0.0003004529250097328 0.09848193162322592 0.0018046917696437341 +7.203649899049101 -0.18769235687129218 0.0003007593491269411 0.0983819252583531 0.0018086480236533698 +7.2433203670277235 -0.18776676662831318 0.0003010807949101165 0.09829001929563569 0.0018127253301539637 +7.282990976210236 -0.1878402846212092 0.0003014169350620335 0.098206165652287 0.0018169261955580992 +7.322661715543747 -0.18791293166034673 0.0003017674472143941 0.09813031643926125 0.0018212529131837899 +7.362332574162414 -0.1879847280016873 0.00030213201389840287 0.09806242396932334 0.0018257075604781812 +7.4020035413840946 -0.18805569336352104 0.00030251032251031666 0.09800244076306674 0.0018302919966750556 +7.441674606707027 -0.18812584694263154 0.000302902065273136 0.09795031955335752 0.0018350078608443947 +7.481345759806611 -0.18819520742990878 0.00030330693919473174 0.09790601328843417 0.0018398565702499904 +7.521016990532248 -0.1882637930254295 0.00030372464602311744 0.09786947513398558 0.0018448393191703215 +7.560688288904227 -0.18833162145303237 0.0003041548921970912 0.09784065847341633 0.001849957077964484 +7.60035964511071 -0.18839870997439642 0.0003045973887955818 0.09781951690736305 0.0018552105928304893 +7.640031049504759 -0.18846507540264787 0.00030505185148355324 0.09780600425223242 0.0018606003855589851 +7.679702492601434 -0.18853073411551013 0.0003055180004559054 0.09780007453759824 0.0018661267539284117 +7.719373965074953 -0.1885957020680158 0.00030599556037925357 0.09780168200274168 0.0018717897724191853 +7.759045457755926 -0.18865999480479131 0.0003064842603317218 0.09781078109255394 0.0018775892932750254 +7.79871696162864 -0.1887236274719374 0.0003069838337412349 0.09782732645253804 0.0018835249479497876 +7.838388467828421 -0.18878661482851325 0.0003074940183224807 0.09785127292347907 0.0018895961489210468 +7.878059967639032 -0.18884897125764513 0.00030801455601242654 0.0978825755348799 0.0018958020918081187 +7.917731452490164 -0.18891071077726362 0.0003085451929048322 0.09792118949903983 0.0019021417578601065 +7.957402913954958 -0.18897184705049774 0.00030908567918428456 0.09796707020309113 0.0019086139167744914 +7.997074343747603 -0.18903239339572123 0.0003096357690590133 0.09802017320202362 0.0019152171297490458 +8.03674573372099 -0.1890923627962761 0.0003101952206933521 0.09808045421083349 0.0019219497529264409 +8.076417075864406 -0.18915176790988153 0.00031076379614021363 0.09814786909599717 0.0019288099410767314 +8.116088362301301 -0.1892106210777359 0.00031134126127246024 0.09822237386718252 0.0019357956514896137 +8.155759585287113 -0.18926893433332795 0.00031192738571514015 0.09830392466869083 0.0019429046481158928 +8.195430737207131 -0.18932671941096413 0.0003125219427768736 0.09839247777043447 0.0019501345060935352 +8.235101810574402 -0.18938398775402512 0.00031312470938207936 0.09848798955881098 0.001957482616174197 +8.27477279802772 -0.18944075052295642 0.0003137354660027965 0.09859041652798152 0.001964946189643393 +8.314443692329656 -0.1894970186030097 0.00031435399659131394 0.09869971527003614 0.001972522263212812 +8.354114486364589 -0.18955280261173568 0.00031498008851278436 0.0988158424661434 0.001980207704204691 +8.39378517313687 -0.18960811290624247 0.00031561353247864675 0.0989387548774402 0.0019879992156929677 +8.433455745768955 -0.18966295959022836 0.00031625412248070887 0.09906840933501558 0.001995893341872215 +8.473126197499619 -0.1897173525207919 0.0003169016557252485 0.0992047627312835 0.0020038864736564342 +8.512796521682223 -0.18977130131503236 0.0003175559325686526 0.0993477720102595 0.002011974854049104 +8.552466711782992 -0.1898248153564438 0.0003182167564531819 0.09949739415894804 0.0020201545837818476 +8.592136761379365 -0.18987790380111536 0.00031888393384396147 0.09965358619735594 0.0020284216270356195 +8.631806664158367 -0.18993057558373505 0.0003195572741663548 0.0998163051706361 0.002036771817054146 +8.671476413915027 -0.18998283942341776 0.0003202365897450016 0.09998550813893674 0.002045200861827788 +8.711146004550839 -0.19003470382934629 0.00032092169574283736 0.10016115216993271 0.002053704349929173 +8.750815430072256 -0.1900861771062513 0.0003216124101020492 0.10034319432904565 0.002062277756009158 +8.790484684589213 -0.1901372673597168 0.00032230855348524726 0.10053159167173076 0.002070916446643449 +8.830153762313696 -0.19018798250133181 0.00032300994921835336 0.10072630123468712 0.0020796156858808104 +8.869822657558363 -0.19023833025368353 0.00032371642323398853 0.10092728002838723 0.002088370640903234 +8.909491364735144 -0.19028831815520617 0.000324427804016203 0.10113448502828987 0.002097176387518927 +8.949159878353933 -0.1903379535648805 0.0003251439225463183 0.10134787316763132 0.002106027915710879 +8.988828193021277 -0.19038724366679835 0.00032586461224970534 0.1015674013299659 0.0021149201350286156 +9.028496303439097 -0.190436195474591 0.0003265897089441351 0.10179302634123105 0.002123847879870213 +9.068164204403473 -0.190484815835727 0.00032731905078856624 0.10202470496342646 0.002132805914876126 +9.107831890803409 -0.190533111435687 0.00032805247823356696 0.10226239388692569 0.002141788939972839 +9.147499357619656 -0.19058108880201477 0.0003287898339726304 0.10250604972404015 0.002150791595528103 +9.187166599923547 -0.19062875430825177 0.00032953096289470795 0.10275562900279196 0.002159808467345792 +9.226833612875883 -0.19067611417775798 0.00033027571203826574 0.10301108816054465 0.0021688340914241843 +9.266500391725824 -0.19072317448742473 0.0003310239305451584 0.10327238353767372 0.0021778629590013493 +9.306166931809784 -0.1907699411712802 0.00033177546961767334 0.10353947137203935 0.002186889520893154 +9.345833228550415 -0.19081642002399124 0.000332530182474576 0.10381230779364742 0.002195908192358593 +9.385499277455546 -0.19086261670426996 0.00033328792430998324 0.10409084881855497 0.002204913357375387 +9.425165074117178 -0.19090853673817879 0.0003340485522519848 0.10437505034482919 0.0022138993731331495 +9.464830614210502 -0.19095418552234888 0.00033481192532345394 0.10466486814677378 0.002222860574171285 +9.504495893492923 -0.19099956832710394 0.0003355779044029355 0.10496025787083191 0.0022317912766452496 +9.544160907803116 -0.19104469029950008 0.00033634635218765925 0.10526117503094529 0.00224068578221031 +9.5838256530601 -0.19108955646627956 0.000337117133156433 0.10556757500465948 0.0022495383822053717 +9.623490125262332 -0.1911341717367463 0.00033789011353457923 0.10587941302854831 0.00225834336127278 +9.663154320486806 -0.19117854090555744 0.0003386651612593465 0.1061966441956711 0.0022670950012202095 +9.702818234888184 -0.19122266865544524 0.0003394421459464231 0.10651922345089447 0.002275787584646405 +9.742481864697975 -0.19126655955986016 0.00034022093885736383 0.10684710558829304 0.0022844153984698415 +9.782145206223625 -0.19131021808554402 0.00034100141286825674 0.10718024524803382 0.0022929727374912446 +9.82180825584776 -0.1913536485950342 0.0003417834424391672 0.10751859691368791 0.002301453907667068 +9.861471010027357 -0.19139685534910175 0.00034256690358412054 0.10786211490934672 0.0023098532294827602 +9.901133465292945 -0.19143984250912238 0.0003433516738428465 0.10821075339739676 0.0023181650412011415 +9.940795618247844 -0.19148261413938594 0.0003441376322527725 0.10856446637666146 0.0023263837019070065 +9.98045746556738 -0.19152517420934548 0.0003449246593218164 0.10892320768006993 0.0023345035947773735 +10.020119003998166 -0.1915675265958052 0.0003457126370027836 0.10928693097312729 0.0023425191298487597 +10.05978023035734 -0.19160967508505444 0.0003465014486675473 0.10965558975225441 0.0023504247472808976 +10.099441141531845 -0.191651623374942 0.0003472909790832265 0.11002913734385063 0.0023582149198976637 +10.139101734477737 -0.1916933750769002 0.0003480811143877086 0.1104075269029301 0.0023658841564335527 +10.178762006219465 -0.19173493371791592 0.0003488717420676157 0.11079071141182456 0.0023734270040037136 +10.21842195384919 -0.19177630274244947 0.0003496627509355149 0.11117864368045312 0.00238083805110024 +10.258081574526116 -0.19181748551430708 0.0003504540311091648 0.11157127634466979 0.002388111930072947 +10.297740865475808 -0.19185848531846306 0.00035124547399040577 0.11196856186677646 0.0023952433200509636 +10.337399823989553 -0.19189930536283828 0.000352036972245211 0.11237045253510891 0.002402226949491888 +10.377058447423693 -0.1919399487800323 0.0003528284197847659 0.11277690046361803 0.002409057598814002 +10.416716733199017 -0.1919804186290129 0.00035361971174661917 0.11318785759291362 0.0024157301029897266 +10.456374678800108 -0.19202071789676298 0.00035441074447669095 0.11360327568998418 0.0024222393543102834 +10.496032281774728 -0.19206084949988747 0.00035520141551220204 0.11402310634883893 0.0024285803046421163 +10.53568953973323 -0.1921008162861785 0.00035599162356471587 0.11444730099176721 0.0024347479684450235 +10.575346450347931 -0.19214062103614568 0.00035678126850413865 0.11487581086917757 0.0024407374249179473 +10.615003011352526 -0.1921802664645047 0.00035757025134305247 0.11530858706161769 0.0024465438209851933 +10.654659220541513 -0.19221975522163257 0.00035835847422207163 0.11574558048075485 0.0024521623736341457 +10.694315075769591 -0.19225908989498727 0.00035914584039501546 0.11618674187005375 0.002457588372554833 +10.733970574951128 -0.1922982730104911 0.0003599322542151326 0.1166320218073504 0.002462817182978823 +10.773625716059536 -0.19233730703388452 0.0003607176211217922 0.11708137070536988 0.002467844248098341 +10.813280497126787 -0.1923761943720431 0.0003615018476275437 0.11753473881458815 0.0024726650918262096 +10.852934916242795 -0.19241493737426688 0.0003622848413054697 0.11799207622432072 0.002477275321677475 +10.892588971554908 -0.19245353833353795 0.00036306651077742594 0.11845333286491248 0.002481670631263829 +10.932242661267368 -0.19249199948774673 0.00036384676570266314 0.11891845851055867 0.0024858468033427932 +10.971895983640767 -0.1925303230208922 0.0003646255167662378 0.11938740278082488 0.0024897997126131295 +11.011548936991508 -0.19256851106425207 0.0003654026756688419 0.11986011514373807 0.0024935253285605415 +11.05120151969131 -0.19260656569752774 0.0003661781551161203 0.12033654491746382 0.002497019718499522 +11.090853730166671 -0.19264448894995914 0.00036695186880903987 0.12081664127417037 0.0025002790507444948 +11.130505566898371 -0.1926822828014181 0.0003677237314343913 0.12130035324203652 0.002503299597534789 +11.170157028420938 -0.1927199491834745 0.00036849365865521474 0.12178762970832274 0.002506077738376583 +11.209808113322175 -0.19275748998043749 0.0003692615671026059 0.12227841942228763 0.002508609963285183 +11.249458820242648 -0.19279490703037414 0.00037002737436675086 0.12277267099877542 0.0025108928763100577 +11.289109147875182 -0.1928322021261053 0.000370790998988944 0.12327033292078758 0.00251292319886843 +11.32875909496439 -0.19286937701617712 0.00037155236045370636 0.12377135354331713 0.002514697773471998 +11.368408660306175 -0.1929064334058136 0.00037231137918132084 0.12427568109660707 0.0025162135673413542 +11.408057842747251 -0.1929433729578449 0.00037306797652046295 0.12478326368952491 0.002517467676438368 +11.447706641184666 -0.19298019729361757 0.00037382207474120324 0.1252940493133463 0.002518457329239889 +11.487355054565327 -0.1930169079938817 0.0003745735970283196 0.12580798584557354 0.0025191798910228244 +11.527003081885526 -0.19305350659966206 0.0003753224674748579 0.12632502105361082 0.0025196328680182054 +11.566650722190474 -0.19308999461310764 0.00037606861107569267 0.12684510259802947 0.002519813912028517 +11.606297974573833 -0.1931263734983226 0.0003768119537217369 0.1273681780375292 0.002519720824842186 +11.645944838177266 -0.1931626446821794 0.0003775524221941602 0.12789419483259087 0.0025193515630008287 +11.685591312189961 -0.1931988095551166 0.0003782899441585614 0.12842310034903373 0.0025187042429768297 +11.7252373958482 -0.19323486947191518 0.0003790244481597939 0.12895484186283446 0.002517777146205732 +11.764883088434877 -0.1932708257524615 0.0003797558636167283 0.1294893665641275 0.0025165687244481636 +11.80452838927906 -0.19330667968249202 0.00038048412081725507 0.13002662156143738 0.0025150776054265168 +11.844173297755567 -0.19334243251432381 0.00038120915091356043 0.13056655388610455 0.002513302598639134 +11.883817813284494 -0.1933780854675677 0.0003819308859170938 0.13110911049691307 0.0025112427015287304 +11.923461935330762 -0.19341363972982803 0.0003826492586945355 0.13165423828381007 0.0025088971058013073 +11.96310566340372 -0.1934490964573854 0.0003833642029631396 0.1322018840735653 0.0025062652039335616 +12.002748997056672 -0.19348445677586779 0.0003840756532865213 0.13275199463349976 0.00250334659625397 +12.042391935886455 -0.19351972178090596 0.0003847835450708328 0.13330451667610552 0.0025001410980150427 +12.08203447953301 -0.1935548925387743 0.0003854878145603652 0.13385939686471035 0.0024966487470149948 +12.121676627678948 -0.1935899700870218 0.0003861883988341426 0.1344165818168474 0.0024928698115162426 +12.161318380049114 -0.19362495543508493 0.0003868852358020974 0.13497601811011017 0.002488804798238962 +12.200959736410164 -0.19365984956489327 0.0003875782642010844 0.13553765228604434 0.002484454461316518 +12.240600696570171 -0.19369465343145786 0.0003882674235918585 0.13610143085590024 0.0024798198109676054 +12.280241260378137 -0.1937293679634505 0.0003889526543553301 0.13666730030520846 0.0024749021231096667 +12.319881427723647 -0.19376399406377118 0.00038963389768930057 0.13723520709800147 0.002469702949009719 +12.359521198536397 -0.1937985326101014 0.0003903110956054591 0.13780509768284252 0.0024642241256282713 +12.3991605727858 -0.19383298445544928 0.00039098419092576173 0.13837691849738107 0.0024584677863578814 +12.43879955048056 -0.19386735042868228 0.000391653127279295 0.13895061597293992 0.0024524363722960895 +12.478438131668288 -0.19390163133504826 0.0003923178491000372 0.1395261365400238 0.0024461326437368383 +12.518076316435042 -0.19393582795668818 0.00039297830162268813 0.14010342663342268 0.002439559692797562 +12.557714104904962 -0.19396994105313756 0.00039363443088070673 0.1406824326966184 0.0024327209557852814 +12.597351497239835 -0.1940039713618157 0.0003942861837027322 0.14126310118844046 0.0024256202270392393 +12.6369884936387 -0.19403791959851055 0.00039493350771037714 0.14184537858567461 0.002418261672357791 +12.676625094337442 -0.19407178645784728 0.0003955763513146245 0.14242921139104453 0.002410649844032599 +12.716261299608387 -0.1941055726137539 0.00039621466371394745 0.14301454613589445 0.002402789695709767 +12.755897109759898 -0.19413927871991174 0.00039684839489096026 0.14360132938713932 0.0023946865983349554 +12.795532525135975 -0.19417290541020357 0.00039747749560983873 0.14418950775094533 0.0023863463566993984 +12.83516754611587 -0.1942064532991459 0.00039810191741374896 0.1447790278794677 0.0023777752264857264 +12.87480217311366 -0.19423992298231887 0.00039872161262210766 0.14536983647449297 0.002368979932170955 +12.914436406577883 -0.1942733150367841 0.0003993365343280736 0.14596188029384224 0.002359967685297859 +12.954070246991131 -0.19430663002149504 0.00039994663639536385 0.1465551061559525 0.0023507462041870756 +12.993703694869637 -0.19433986847770193 0.00040055187345659223 0.14714946094467676 0.00234132373340638 +13.033336750762924 -0.194373030929344 0.0004011522009097026 0.14774489161552298 0.0023317090644450994 +13.072969415253391 -0.194406117883439 0.0004017475749158589 0.14834134520006084 0.0023219115570248766 +13.11260168895591 -0.19443912983046233 0.00040233795239678796 0.1489387688112912 0.0023119411610247197 +13.152233572517465 -0.19447206724471955 0.0004029232910320295 0.14953710964873876 0.0023018084389227387 +13.191865066616762 -0.19450493058471274 0.0004035035492564028 0.15013631500372793 0.002291524588922613 +13.231496171963823 -0.19453772029349706 0.0004040786862571742 0.15073633226460345 0.0022811014686970918 +13.271126889299634 -0.19457043679903496 0.0004046486619719632 0.15133710892162475 0.0022705516190504945 +13.310757219395736 -0.1946030805145389 0.00040521343708531605 0.15193859257272832 0.0022598882890938134 +13.350387163053858 -0.19463565183881124 0.0004057729730266826 0.15254073092709472 0.0022491254603032268 +13.390016721105539 -0.1946681511565748 0.00040632723196733873 0.15314347181252816 0.0022382778720611827 +13.429645894411735 -0.19470057883879952 0.00040687617681797674 0.1537467631786868 0.002227361046253603 +13.469274683862466 -0.19473293524302185 0.00040741977122573026 0.15435055310275317 0.002216391312104725 +13.50890309037643 -0.19476522071365707 0.00040795797957165624 0.15495478979516322 0.002205385831132355 +13.548531114900609 -0.1947974355823088 0.00040849076696757605 0.15555942160309857 0.0021943626209145663 +13.588158758409929 -0.19482958016806873 0.0004090180992538072 0.1561643970169049 0.0021833405782843087 +13.627786021906877 -0.19486165477781392 0.0004095399429960035 0.15676966467440448 0.0021723395017925126 +13.667412906421124 -0.19489365970649639 0.0004100562654822984 0.1573751733662111 0.0021613801127204593 +13.707039413009165 -0.19492559523742833 0.00041056703472064593 0.15798087204080188 0.0021504840739227237 +13.74666554275393 -0.19495746164256356 0.0004110722194356061 0.15858670980765624 0.002139674007515117 +13.786291296764471 -0.19498925918276847 0.0004115717890656051 0.15919263594533628 0.002128973509137605 +13.825916676175535 -0.19502098810809398 0.00041206571375995964 0.15979859990357095 0.0021184071599808416 +13.865541682147228 -0.19505264865804017 0.0004125539643757968 0.16040455130863215 0.0021080005348402824 +13.905166315864687 -0.19508424106181288 0.00041303651247480986 0.1610104399698216 0.0020977802066406313 +13.944790578537653 -0.19511576553858082 0.0004135133303207619 0.16161621588202593 0.0020877737458040884 +13.984414471400148 -0.19514722229772438 0.0004139843908756511 0.16222182923138564 0.002078009715267114 +14.02403799571014 -0.195178611539081 0.00041444966779698926 0.1628272303997644 0.002068517658739463 +14.063661152749154 -0.19520993345318408 0.00041490913543446 0.1634323699705788 0.0020593280835068733 +14.10328394382191 -0.19524118822150252 0.00041536276882667687 0.16403719873079614 0.0020504724351420125 +14.142906370256009 -0.19527237601666833 0.00041581054369779254 0.16464166767855445 0.002041983065258286 +14.18252843340154 -0.1953034970027073 0.0004162524364546519 0.16524572802539467 0.0020338931903963243 +14.222150134630757 -0.19533455133526023 0.00041668842418271106 0.16584933120160897 0.0020262368420350023 +14.26177147533773 -0.19536553916180274 0.00041711848464314583 0.16645242886053777 0.0020190488073682433 +14.30139245693797 -0.1953964606218598 0.00041754259626932853 0.1670549728835912 0.0020123645593835963 +14.341013080868127 -0.19542731584721687 0.0004179607381630645 0.1676569153836537 0.0020062201774104236 +14.380633348585585 -0.19545810496212698 0.000418372890091428 0.16825820870976782 0.0020006522562550167 +14.420253261568197 -0.19548882808351317 0.0004187790324830846 0.1688588054519288 0.001995697805082744 +14.459872821313871 -0.19551948532116945 0.0004191791464241748 0.16945865844406607 0.0019913941356352743 +14.499492029340283 -0.19555007677795497 0.00041957321365558386 0.17005772076927506 0.0019877787398011786 +14.539110887184496 -0.19558060254998647 0.00041996121656857964 0.17065594576427837 0.0019848891574842545 +14.57872939640265 -0.19561106272682674 0.00042034313820100234 0.17125328702199152 0.001982762835147299 +14.618347558569635 -0.1956414573916703 0.0004207189622341898 0.1718496983968276 0.001981436976232953 +14.657965375278726 -0.19567178662152393 0.0004210886729880119 0.17244513400821235 0.001980948384511108 +14.697582848141284 -0.19570205048738498 0.0004214522554180765 0.17303954824414047 0.001981333302015735 +14.73719997878639 -0.1957322490544163 0.00042180969511133355 0.17363289576644378 0.0019826272426589054 +14.776816768860556 -0.19576238238211807 0.00042216097828209805 0.17422513151278307 0.0019848648248158764 +14.816433220027358 -0.19579245052449581 0.00042250609176798043 0.17481621070157374 0.0019880796025676007 +14.856049333967155 -0.19582245353022518 0.0004228450230262157 0.17540608883515799 0.0019923039013936073 +14.895665112376715 -0.19585239144281452 0.000423177760129286 0.1759947217043486 0.0019975686565600705 +14.935280556968937 -0.1958822643007643 0.0004235042917606437 0.17658206539043353 0.0020039032597659154 +14.974895669472511 -0.19591207213772202 0.00042382460721108133 0.17716807627022854 0.0020113354147899155 +15.014510451631585 -0.19594181498263571 0.00042413869637386185 0.17775271101941045 0.002019891005056104 +15.05412490520547 -0.19597149285990478 0.00042444654974112234 0.17833592661458972 0.0020295939743288894 +15.093739031968322 -0.196001105789527 0.00042474815839919244 0.1789176803385147 0.0020404662238513124 +15.133352833708821 -0.19603065378724302 0.0004250435140241769 0.17949792978139945 0.0020525275255918744 +15.172966312229864 -0.19606013686467716 0.0004253326088781763 0.18007663284684935 0.002065795454515918 +15.212579469348245 -0.19608955502947842 0.00042561543580417845 0.18065374775275778 0.002080285340227395 +15.252192306894358 -0.1961189082854561 0.00042589198822214866 0.18122923303489888 0.0020960102370191605 +15.2918048267119 -0.19614819663271357 0.00042616226012419915 0.18180304755043675 0.0021129809154903476 +15.331417030657516 -0.19617742006777905 0.0004264262460705716 0.18237515048177266 0.0021312058718271822 +15.37102892060058 -0.19620657858373577 0.0004266839411843285 0.18294550133748588 0.002150691357210296 +15.410640498422802 -0.19623567217034776 0.0004269353411477619 0.18351405995638437 0.002171441423521041 +15.450251766017995 -0.19626470081418232 0.00042718044219686445 0.18408078651124118 0.00219345798656655 +15.489862725291761 -0.19629366449873364 0.00042741924111738285 0.18464564150985055 0.0022167409027395563 +15.529473378161175 -0.1963225632045408 0.00042765173523966676 0.1852085857985394 0.0022412880599304748 +15.569083726554501 -0.19635139690930484 0.0004278779224343639 0.1857695805652213 0.0022670954778264843 +15.608693772410922 -0.19638016558800309 0.0004280978011072371 0.18632858734121438 0.002294157418667125 +15.648303517680219 -0.1964088692130017 0.00042831137019490225 0.1868855680040384 0.0023224665036307274 +15.687912964322493 -0.19643750775416546 0.0004285186291598797 0.1874404847806546 0.002352013835345871 +15.727522114307899 -0.1964660811789656 0.0004287195779853993 0.18799330024906957 0.002382789122184632 +15.767130969616327 -0.19649458945258724 0.00042891421717117375 0.18854397733951764 0.002414780804916045 +15.806739532237117 -0.19652303253803013 0.0004291025477279592 0.1890924793396724 0.0024479761823146032 +15.846347804168861 -0.19655141039621257 0.00042928457117325305 0.18963876989479567 0.0024823615353051333 +15.885955787418997 -0.1965797229860704 0.0004294602895259225 0.19018281300958909 0.0025179222479664106 +15.925563484003614 -0.1966079702646536 0.0004296297053012542 0.19072457305249121 0.0025546429236748365 +15.965170895947171 -0.1966361521872245 0.0004297928215062409 0.1912640147543531 0.0025925074976153634 +16.00477802528222 -0.19666426870734813 0.00042994964163475835 0.1918011032137005 0.0026314993419782762 +16.044384874049094 -0.19669231977698617 0.0004301001696619599 0.1923358038970795 0.002671601366039836 +16.083991444295695 -0.1967203053465868 0.00043024441003979664 0.19286808264036137 0.002712796108532462 +16.12359773807721 -0.19674822536517175 0.000430382367691718 0.1933979056517382 0.0027550658241397128 +16.163203757455808 -0.19677607978042402 0.000430514048007762 0.1939252395121854 0.0027983925624684197 +16.202809504500458 -0.19680386853876994 0.00043063945683930875 0.19445005117888128 0.002842758239678296 +16.24241498128658 -0.1968315915854647 0.00043075860049410333 0.19497230798483167 0.002888144704537885 +16.28202018989583 -0.19685924886467132 0.00043087148573122547 0.19549197764173612 0.002934533796735322 +16.321625132415857 -0.1968868403195413 0.000430978119755793 0.1960090282405087 0.0029819073988685187 +16.361229810940042 -0.19691436589229128 0.00043107851021395994 0.19652342825308675 0.0030302474832697526 +16.400834227567177 -0.19694182552427855 0.00043117266518779814 0.1970351465348924 0.00307953615198323 +16.440438384401325 -0.1969692191560769 0.00043126059318982906 0.1975441523238939 0.0031297556723696262 +16.480042283551505 -0.19699654672754918 0.00043134230315855423 0.19805041524261324 0.003180888506996216 +16.51964592713144 -0.197023808177917 0.00043141780445238716 0.1985539053001835 0.0032329173394617327 +16.55924931725936 -0.197051003445831 0.00043148710684519424 0.19905459289310787 0.003285825095658531 +16.598852456057706 -0.19707813246944006 0.0004315502205208129 0.19955244880491493 0.003339594961544209 +16.638455345652932 -0.1971051951864559 0.0004316071560680026 0.2000474442094955 0.003394210397272669 +16.678057988175237 -0.19713219153422104 0.0004316579244746973 0.20053955066885332 0.0034496551477657673 +16.717660385758343 -0.19715912144976888 0.00043170253712384053 0.20102874013710723 0.0035059132515367704 +16.757262540539287 -0.19718598486988873 0.00043174100578733526 0.20151498495965425 0.0035629690462466346 +16.796864454658127 -0.19721278173118573 0.00043177334262087 0.20199825787343229 0.0036208071718715255 +16.836466130257755 -0.19723951197013975 0.0004317995601594135 0.20247853200894386 0.003679412572816426 +16.876067569483677 -0.19726617552316505 0.0004318196713111093 0.20295578088926955 0.003738770497567993 +16.915668774483766 -0.19729277232666523 0.000431833689352776 0.20342997843152852 0.003798866497104606 +16.955269747408046 -0.19731930231708886 0.0004318416279242879 0.20390109894818778 0.0038596864224545186 +16.99487049040846 -0.19734576543098567 0.0004318435010236172 0.20436911714467942 0.003921216420484839 +17.03447100563869 -0.1973721616050562 0.00043183932300138177 0.20483400812334393 0.003983442929446941 +17.074071295253887 -0.19739849077620641 0.00043182910855607825 0.20529574738031972 0.004046352673220274 +17.11367136141049 -0.1974247528815957 0.0004318128727284247 0.20575431080824133 0.004109932655529611 +17.153271206266012 -0.19745094785868703 0.0004317906308964558 0.20620967469547735 0.0041741701529894775 +17.192870831978805 -0.1974770756452953 0.000431762398770156 0.20666181572575484 0.004239052708181934 +17.232470240707894 -0.19750313617963303 0.0004317281923867802 0.20711071097892395 0.004304568122814322 +17.27206943461272 -0.19752912940035702 0.00043168802810499045 0.20755633793038922 0.004370704449618525 +17.311668415853003 -0.1975550552466118 0.0004316419226003644 0.20799867445114403 0.0044374499851880045 +17.351267186588434 -0.19758091365807315 0.0004315898928597901 0.2084376988086513 0.004504793261810117 +17.390865748978634 -0.1976067045749905 0.0004315319561764928 0.20887338966550953 0.004572723040004982 +17.43046410518277 -0.19763242793822813 0.0004314681301452665 0.20930572607893705 0.004641228301096233 +17.47006225735952 -0.1976580836893054 0.00043139843265685326 0.20973468750141877 0.004710298238739262 +17.50966020766679 -0.19768367177043436 0.00043132288189316493 0.21016025378016037 0.004779922252091891 +17.549257958261546 -0.1977091921245595 0.0004312414963222005 0.2105824051561449 0.00485008993810042 +17.588855511299634 -0.19773464469539317 0.0004311542946930104 0.21100112226406695 0.004920791084090414 +17.62845286893558 -0.19776002942745188 0.00043106129603047606 0.21141638613269761 0.004992015660596539 +17.668050033322412 -0.19778534626609226 0.0004309625196306937 0.21182817818189983 0.005063753814993512 +17.707647006611474 -0.1978105951575432 0.00043085798505554303 0.21223648022433964 0.005135995863608081 +17.747243790952275 -0.1978357760489398 0.00043074771212800645 0.21264127446387496 0.005208732286060971 +17.786840388492244 -0.19786088888835518 0.0004306317209271868 0.21304254349514715 0.005281953718644334 +17.826436801376627 -0.19788593362483195 0.0004305100317833423 0.2134402703017013 0.005355650948181009 +17.86603303174827 -0.19791091020841103 0.000430382665272889 0.21383443825755868 0.005429814905631766 +17.905629081747456 -0.19793581859016296 0.00043024964221367304 0.21422503112354727 0.005504436661084928 +17.94522495351175 -0.19796065872221427 0.0004301109836599721 0.21461203304799703 0.00557950741758726 +17.98482064917581 -0.1979854305577763 0.0004299667108978629 0.21499542856526124 0.00565501850643376 +18.02441617087123 -0.19801013405117118 0.00042981684544016836 0.21537520259541595 0.005730961381320974 +18.064011520726403 -0.1980347691578576 0.00042966140902190225 0.21575134044245511 0.005807327614201902 +18.10360670086631 -0.1980593358344561 0.00042950042359532004 0.21612382779322822 0.0058841088901279 +18.14320171341239 -0.19808383403877314 0.0004293339113252903 0.21649265071592727 0.005961297002807745 +18.18279656048241 -0.19810826372982415 0.0004291618945845938 0.21685779566011598 0.006038883850518748 +18.222391244190245 -0.1981326248678564 0.00042898439594941766 0.21721924945463722 0.006116861431936117 +18.261985766645797 -0.19815691741437033 0.00042880143819393185 0.21757699930578364 0.006195221841371021 +18.301580129954765 -0.1981811413321408 0.00042861304428700727 0.2179310327976377 0.00627395726678228 +18.341174336218593 -0.19820529658523836 0.0004284192373865371 0.21828133788772708 0.006353059984631152 +18.38076838753425 -0.198229383139046 0.0004282200408351801 0.21862790291037318 0.006432522356923843 +18.420362285994088 -0.19825340096028113 0.00042801547815611275 0.2189707165696048 0.00651233682817549 +18.45995603368577 -0.1982773500170115 0.0004278055730481543 0.21930976794187343 0.006592495922276793 +18.499549632692037 -0.19830123027867338 0.00042759034938159423 0.2196450464724111 0.006672992239220463 +18.539143085090636 -0.1983250417160882 0.00042736983119357803 0.21997654197481428 0.006753818452454568 +18.578736392954163 -0.1983487843014777 0.00042714404268388005 0.22030424462866793 0.0068349673066143085 +18.61832955834993 -0.1983724580084816 0.0004269130082104515 0.22062814497707864 0.006916431614309306 +18.657922583339815 -0.19839606281216862 0.00042667675228505756 0.22094823392788343 0.0069982042539968835 +18.69751546998017 -0.19841959868905398 0.00042643529956923554 0.22126450274818898 0.007080278168219915 +18.73710822032168 -0.198443065617111 0.0004261886748696255 0.2215769430646144 0.007162646360370765 +18.776700836409205 -0.19846646357578349 0.00042593690313409493 0.2218855468625881 0.007245301893395343 +18.816293320281698 -0.19848979254599905 0.00042568000944747075 0.22219030648250174 0.007328237887757931 +18.85588567397208 -0.1985130525101807 0.0004254180190274496 0.2224912146167771 0.007411447519457172 +18.895477899507096 -0.19853624345225585 0.0004251509572202738 0.22278826431262266 0.0074949240181390805 +18.935069998907217 -0.19855936535766963 0.0004248788494969925 0.22308144896454993 0.007578660665702956 +18.974661974186517 -0.19858241821339206 0.0004246017214491664 0.22337076231634664 0.007662650794861063 +19.014253827352547 -0.19860540200792895 0.00042431959878503657 0.22365619845725107 0.007746887786957865 +19.053845560406266 -0.19862831673132983 0.0004240325073254657 0.22393775182013478 0.00783136507135153 +19.093437175341883 -0.19865116237519662 0.00042374047300024024 0.2242154171796383 0.007916076123787587 +19.13302867414677 -0.19867393893268948 0.0004234435218437416 0.22448918965112594 0.008001014464744544 +19.172620058801378 -0.19869664639853832 0.00042314167999176464 0.22475906468457163 0.008086173659239675 +19.212211331279086 -0.19871928476904333 0.0004228349736770703 0.22502503806868057 0.008171547314401973 +19.251802493546137 -0.1987418540420857 0.0004225234292262175 0.22528710592347057 0.008257129079733054 +19.291393547561523 -0.198764354217132 0.0004222070730553915 0.22554526469929995 0.008342912645170302 +19.3309844952769 -0.1987867852952375 0.0004218859316669525 0.22579951117706074 0.00842889174057263 +19.370575338636467 -0.19880914727905383 0.00042156003164595714 0.22604984246214777 0.008515060134927043 +19.410166079576914 -0.19883144017283083 0.00042122939965605805 0.2262962559853771 0.008601411635071691 +19.449756720027263 -0.19885366398242157 0.000420894062436559 0.22653874949705677 0.008687940085300818 +19.489347261908854 -0.19887581871528384 0.00042055404679863453 0.22677732107125062 0.008774639366786102 +19.52893770713521 -0.19889790438048585 0.00042020937962176935 0.22701196909425678 0.008861503396482697 +19.568528057611953 -0.19891992098870595 0.0004198600878507447 0.22724269226985486 0.008948526126995288 +19.608118315236737 -0.19894186855223583 0.000419506198491343 0.22746948961341804 0.009035701544779855 +19.64770848189916 -0.19896374708498202 0.0004191477386084064 0.22769236044969923 0.009123023671554084 +19.68729855948066 -0.19898555660246706 0.0004187847353212375 0.22791130441116447 0.00921048656203723 +19.726888549854458 -0.1990072971218301 0.00041841721580111453 0.2281263214343033 0.009298084304388348 +19.766478454885505 -0.19902896866182684 0.00041804520726788143 0.22833741176011643 0.009385811019413269 +19.80606827643035 -0.19905057124283043 0.00041766873698672317 0.22854457592692135 0.009473660860231612 +19.845658016337076 -0.19907210488683083 0.00041728783226503637 0.2287478147710307 0.0095616280119411 +19.88524767644531 -0.19909356961743319 0.0004169025204495413 0.22894712942495185 0.009649706691132364 +19.924837258586024 -0.19911496545985774 0.0004165128289229637 0.22914252131115734 0.009737891145540451 +19.964426764581553 -0.19913629244093797 0.00041611878510144223 0.22933399214385541 0.009826175654217072 +20.00401619624553 -0.199157550589119 0.0004157204164308655 0.22952154392273685 0.009914554526110064 +20.043605555382747 -0.19917873993445498 0.000415317750385042 0.22970517893202272 0.010003022101406257 +20.083194843789187 -0.1991998605086067 0.0004149108144617475 0.22988489973898274 0.010091572749750992 +20.12278406325188 -0.19922091234484043 0.00041449963618057467 0.23006070918711932 0.010180200871125596 +20.162373215548914 -0.1992418954780204 0.0004140842430799497 0.230232610401385 0.01026890089496007 +20.20196230244931 -0.1992628099446115 0.0004136646627145612 0.23040060677470312 0.01035766728053591 +20.241551325713015 -0.19928365578267052 0.00041324092265215676 0.2305647019758891 0.010446494515966747 +20.28114028709081 -0.19930443303184484 0.0004128130504717289 0.23072489993887765 0.010535377119301775 +20.320729188324286 -0.19932514173336688 0.00041238107376005895 0.2308812048654376 0.0106243096370291 +20.360318031145788 -0.19934578193005006 0.00041194502010983696 0.23103362121884027 0.010713286645186518 +20.399906817278357 -0.19936635366628366 0.0004115049171166123 0.23118215372448803 0.010802302748206585 +20.439495548435637 -0.19938685698802808 0.0004110607923768111 0.23132680736326897 0.01089135257974405 +20.47908422632194 -0.19940729194280846 0.0004106126734846971 0.23146758737366005 0.010980430801656962 +20.518672852632086 -0.19942765857971143 0.0004101605880306941 0.23160449924214924 0.011069532105019266 +20.558261429051406 -0.1994479569493752 0.0004097045635984295 0.23173754870938346 0.011158651209016773 +20.59784995725572 -0.19946818710398814 0.00040924462776272035 0.23186674175819857 0.011247782861774525 +20.637438438911254 -0.19948834909727853 0.00040878080808736403 0.23199208461766205 0.011336921839631099 +20.677026875674617 -0.19950844298450907 0.0004083131321225189 0.23211358375903665 0.011426062947436956 +20.716615269192808 -0.19952846882247152 0.0004078416274031903 0.23223124588929855 0.011515201018828101 +20.756203621103072 -0.1995484266694781 0.00040736632144629535 0.23234507795173262 0.01160433091534892 +20.795791933032977 -0.1995683165853547 0.00040688724174925504 0.2324550871228874 0.011693447527594472 +20.83538020660032 -0.19958813863143232 0.00040640441578747684 0.23256128081005353 0.011782545774062167 +20.874968443413092 -0.19960789287054212 0.00040591787101266217 0.23266366664539426 0.01187162060229726 +20.9145566450695 -0.19962757936700426 0.0004054276348504536 0.2327622524876779 0.011960666987824975 +20.95414481315786 -0.19964719818662205 0.00040493373469869723 0.2328570464157693 0.012049679934644092 +20.993732949256632 -0.19966674939667284 0.0004044361979259393 0.2329480567282919 0.012138654476070836 +21.033321054934362 -0.1996862330658994 0.00040393505186855303 0.2330352919405455 0.012227585672825768 +21.072909131749675 -0.19970564926450188 0.0004034303238300292 0.23311876077852403 0.012316468615097559 +21.11249718125123 -0.199724998064129 0.00040292204107858737 0.23319847218122333 0.012405298421514372 +21.15208520497771 -0.19974427953786766 0.00040241023084536774 0.2332744352945695 0.012494070239132902 +21.191673204457803 -0.19976349376023608 0.000401894920322956 0.23334665946896116 0.01258277924376973 +21.231261181210186 -0.19978264080717287 0.00040137613666385927 0.2334151542567835 0.012671420640529027 +21.27084913674346 -0.19980172075602817 0.0004008539069783807 0.23347992941024662 0.012759989662512442 +21.310437072556244 -0.19982073368555361 0.0004003282583335816 0.233540994878256 0.012848481572533385 +21.35002499013701 -0.19983967967589333 0.00039979921775126835 0.2335983608030571 0.012936891661609126 +21.389612890964173 -0.19985855880857373 0.0003992668122068694 0.2336520375180868 0.013025215250476856 +21.429200776506068 -0.19987737116649307 0.0003987310686274538 0.23370203554417932 0.013113447688160062 +21.46878864822089 -0.1998961168339118 0.0003981920138908224 0.23374836558988 0.013201584353271211 +21.50837650755671 -0.19991479589644243 0.00039764967482382147 0.23379103854327266 0.013289620653487882 +21.547964355951482 -0.19993340844103868 0.00039710407820107405 0.23383006547490315 0.013377552025994785 +21.58755219483302 -0.1999519545559857 0.00039655525074337256 0.23386545763131625 0.013465373936717139 +21.627140025618957 -0.1999704343308878 0.0003960032191167029 0.2338972264340561 0.013553081881561478 +21.666727849716814 -0.19998884785666013 0.0003954480099308257 0.23392538347657812 0.013640671385276554 +21.706315668523903 -0.20000719522551544 0.00039488964973813894 0.23394994052154613 0.013728138002789278 +21.745903483427398 -0.20002547653095581 0.0003943281650321568 0.2339709094955369 0.01381547731770774 +21.7854912958043 -0.20004369186775883 0.0003937635822468314 0.23398830249214733 0.013902684944211525 +21.82507910702143 -0.20006184133196858 0.00039319592775503165 0.23400213176347398 0.013989756525539625 +21.86466691843545 -0.20007992502088323 0.00039262522786759037 0.23401240972091217 0.014076687734913463 +21.904254731392832 -0.20009794303304443 0.0003920515088323621 0.23401914893101128 0.014163474275677566 +21.943842547229877 -0.2001158954682255 0.0003914747968327802 0.23402236211319274 0.014250111880510266 +21.983430367272746 -0.20013378242741997 0.00039089511798716473 0.23402206213719043 0.014336596312332616 +22.023018192837398 -0.20015160401283097 0.00039031249834783384 0.2340182620197849 0.014422923364241703 +22.062606025229638 -0.20016936032785862 0.00038972696389978596 0.2340109749226004 0.014509088858992847 +22.102193865745132 -0.20018705147708785 0.0003891385405602928 0.23400021415123462 0.014595088650301595 +22.14178171566938 -0.20020467756627888 0.00038854725417738285 0.2339859931480588 0.014680918620962382 +22.18136957627775 -0.20022223870235303 0.0003879531305294406 0.23396832549458613 0.014766574684935497 +22.220957448835456 -0.2002397349933828 0.00038735619532453405 0.23394722490505693 0.014852052786426222 +22.2605453345976 -0.20025716654857825 0.0003867564741988638 0.23392270522756078 0.014937348899747118 +22.30013323480918 -0.20027453347827626 0.0003861539927167052 0.23389478043809406 0.015022459029444527 +22.33972115070506 -0.20029183589392838 0.000385548776369463 0.23386346463923288 0.015107379211314045 +22.379309083510044 -0.2003090739080887 0.00038494085057465206 0.23382877205783462 0.015192105510825322 +22.41889703443882 -0.200326247634401 0.0003843302406758646 0.23379071704327944 0.015276634024823552 +22.45848500469604 -0.2003433571875881 0.0003837169719414863 0.23374931406340183 0.015360960880632825 +22.498072995476292 -0.20036040268343921 0.0003831010695641048 0.23370457770089195 0.015445082235915904 +22.53766100796413 -0.20037738423879645 0.00038248255866037373 0.23365652265484846 0.015528994279541559 +22.577249043334085 -0.20039430197154404 0.00038186146426985715 0.23360516373624254 0.015612693230769865 +22.61683710275068 -0.20041115600059678 0.00038123781135495586 0.23355051586197084 0.015696175340360597 +22.656425187368473 -0.2004279464458855 0.0003806116247998523 0.23349259405941425 0.015779436889064257 +22.69601329833203 -0.20044467342834663 0.00037998292941060106 0.2334314134569467 0.01586247418948974 +22.735601436775987 -0.20046133706990887 0.00037935174991405245 0.2333669892877277 0.01594528358471931 +22.775189603825048 -0.20047793749348228 0.00037871811095770575 0.23329933688119517 0.016027861448720215 +22.814777800593994 -0.20049447482294389 0.0003780820371094158 0.2332284716663354 0.01611020418726771 +22.854366028187762 -0.2005109491831273 0.00037744355285637845 0.2331544091650567 0.016192308236347788 +22.8939542877014 -0.2005273606998094 0.0003768026826053404 0.23307716499254075 0.016274170063459357 +22.933542580220113 -0.20054370949969746 0.00037615945068194255 0.23299675485434632 0.016355786167456334 +22.973130906819303 -0.2005599957104188 0.00037551388133040786 0.23291319454130055 0.016437153078199585 +23.012719268564595 -0.20057621946050616 0.00037486599871312576 0.23282649993145968 0.01651826735662278 +23.0523076665118 -0.20059238087938622 0.0003742158269103829 0.23273668698633176 0.016599125595158245 +23.091896101707064 -0.2006084800973684 0.0003735633899201597 0.23264377174580397 0.016679724417322787 +23.131484575186754 -0.2006245172456306 0.0003729087116576421 0.23254777033047444 0.016760060478054336 +23.171073087977593 -0.20064049245620827 0.0003722518159551924 0.2324486989354686 0.016840130463565903 +23.210661641096628 -0.2006564058619811 0.0003715927265619196 0.2323465738310494 0.016919931091462607 +23.25025023555129 -0.20067225759666163 0.0003709314671434823 0.23224141135888896 0.0169994591105919 +23.28983887233941 -0.2006880477947828 0.0003702680612819576 0.232133227929495 0.017078711301107483 +23.329427552449236 -0.20070377659168495 0.0003696025324756805 0.23202204002114354 0.01715768447481039 +23.36901627685949 -0.2007194441235042 0.0003689349041388874 0.23190786417884848 0.01723637547486038 +23.408605046539382 -0.20073505052716004 0.00036826519960160716 0.2317907170083551 0.017314781175486516 +23.44819386244864 -0.2007505959403432 0.0003675934421097084 0.23167061517784324 0.017392898482583803 +23.487782725537574 -0.20076608050150382 0.00036691965482465696 0.231547575413141 0.017470724333568943 +23.527371636747034 -0.20078150434983877 0.00036624386082317314 0.23142161449784152 0.017548255697001056 +23.566960597008553 -0.20079686762527882 0.00036556608309749574 0.23129274927063384 0.01762548957308864 +23.606549607244254 -0.20081217046847852 0.00036488634455513684 0.23116099662098735 0.017702422993400573 +23.646138668366987 -0.20082741302080234 0.0003642046680188082 0.23102637349111835 0.01777905302087291 +23.68572778128034 -0.20084259542431368 0.00036352107622620813 0.23088889687009495 0.017855376749899652 +23.72531694687862 -0.20085771782176143 0.00036283559183034026 0.23074858379638052 0.01793139130618082 +23.76490616604695 -0.20087278035657077 0.000362148237399268 0.23060545134884347 0.01800709384726664 +23.804495439661277 -0.20088778317282854 0.00036145903541601995 0.23045951665163492 0.01808248156171122 +23.844084768588424 -0.20090272641527215 0.0003607680082786324 0.230310796869977 0.01815755166937556 +23.88367415368611 -0.2009176102292782 0.00036007517830028975 0.23015930920661262 0.018232301421704965 +23.92326359580299 -0.20093243476085043 0.00035938056770928455 0.23000507090282526 0.01830672810168722 +23.96285309577872 -0.2009472001566079 0.00035868419864880076 0.22984809923305827 0.01838082902314352 +24.002442654443946 -0.2009619065637734 0.00035798609317724226 0.22968841150574607 0.018454601531610923 +24.04203227262039 -0.20097655413016147 0.0003572862732683705 0.2295260250611867 0.018528043004065062 +24.081621951120844 -0.20099114300416707 0.0003565847608108808 0.22936095726829095 0.018601150848430618 +24.121211690749263 -0.20100567333475383 0.0003558815776090009 0.22919322552511312 0.018673922504178944 +24.160801492300756 -0.20102014527144296 0.00035517674538211976 0.22902284725349745 0.018746355441638798 +24.20039135656166 -0.20103455896430114 0.0003544702857653261 0.22884983990090077 0.018818447162893614 +24.239981284309547 -0.2010489145639297 0.0003537622203090438 0.22867422093617587 0.018890195200768237 +24.27957127631329 -0.2010632122214522 0.00035305257047944647 0.2284960078514163 0.018961597119507036 +24.31916133333312 -0.20107745208850494 0.0003523413576585373 0.22831521815447597 0.01903265051468356 +24.358751456120608 -0.20109163431722396 0.0003516286031439799 0.22813186937179075 0.01910335301221861 +24.398341645418768 -0.20110575906023453 0.0003509143281496677 0.22794597904567115 0.019173702270028136 +24.437931901962077 -0.20111982647064064 0.0003501985538055435 0.22775756473151343 0.019243695976480468 +24.4775222264765 -0.20113383670201215 0.00034948130115772767 0.22756664399927928 0.01931333185103317 +24.51711261967954 -0.2011477899083759 0.00034876259116886453 0.22737323442684254 0.019382607644263916 +24.556703082280325 -0.2011616862442036 0.00034804244471805146 0.2271773536018625 0.019451521137355612 +24.596293614979572 -0.20117552586440038 0.0003473208826012726 0.22697901912106708 0.019520070142954236 +24.635884218469702 -0.20118930892429565 0.00034659792553123225 0.2267782485864438 0.01958825250387184 +24.675474893434846 -0.20120303557963068 0.0003458735941376423 0.22657505960273308 0.01965606609397223 +24.71506564055087 -0.20121670598654848 0.00034514790896760785 0.22636946978047123 0.0197235088180569 +24.75465646048549 -0.2012303203015837 0.000344420890485328 0.22616149672940136 0.019790578611140815 +24.794247353898246 -0.20124387868165164 0.00034369255907294125 0.22595115805981533 0.01985727343952715 +24.833838321440577 -0.20125738128403645 0.00034296293503010243 0.2257384713815749 0.019923591299712478 +24.87342936375586 -0.20127082826638357 0.0003422320385742715 0.22552345429996137 0.019989530218615482 +24.913020481479446 -0.20128421978668665 0.00034149988984123124 0.2253061244169218 0.020055088253713417 +24.952611675238735 -0.20129755600327873 0.0003407665088851429 0.22508649932743943 0.02012026349324704 +24.99220294565318 -0.20131083707482125 0.00034003191567841306 0.22486459662106828 0.020185054055362747 +25.031794293334364 -0.20132406316029436 0.00033929613011242886 0.22464043387785604 0.02024945808906303 +25.071385718886045 -0.20133723441898646 0.0003385591719972793 0.22441402866800084 0.020313473772852347 +25.110977222904154 -0.2013503510104848 0.0003378210610623193 0.22418539854966202 0.020377099316103806 +25.15056880597691 -0.20136341309466435 0.0003370818169561442 0.2239545610714121 0.02044033295803674 +25.19016046868482 -0.2013764208316797 0.00033634145924684193 0.22372153376325932 0.02050317296789154 +25.22975221160074 -0.20138937438195303 0.00033560000742234483 0.22348633414441102 0.02056561764499556 +25.269344035289933 -0.2014022739061663 0.00033485748089049245 0.2232489797161538 0.020627665318688 +25.30893594031007 -0.20141511956525068 0.00033411389897927555 0.2230094879614085 0.02068931434790564 +25.34852792721134 -0.20142791152037712 0.00033336928093700367 0.2227678763449822 0.020750563121451755 +25.388119996536442 -0.2014406499329466 0.00033262364593265496 0.22252416231223812 0.020811410058101224 +25.42771214882066 -0.20145333496458098 0.0003318770130560796 0.22227836328649953 0.02087185360625754 +25.4673043845919 -0.20146596677711384 0.0003311294013179193 0.22203049666815108 0.020931892243476417 +25.50689670437074 -0.20147854553258102 0.0003303808296503221 0.2217805798354072 0.020991524477386985 +25.54648910867049 -0.20149107139320968 0.0003296313169065745 0.221528630143026 0.021050748844198285 +25.586081597997197 -0.20150354452141386 0.0003288808818620068 0.2212746649152569 0.02110956391077046 +25.62567417284975 -0.20151596507977945 0.00032812954321346003 0.22101870145397204 0.02116796827175313 +25.665266833719862 -0.20152833323105943 0.00032737731958009097 0.22076075703123274 0.021225960552113246 +25.704859581092183 -0.20154064913816372 0.0003266242295034038 0.22050084889032642 0.021283539405567806 +25.7444524154443 -0.20155291296414948 0.00032587029144713945 0.22023899424491397 0.021340703514443404 +25.784045337246784 -0.20156512487221367 0.0003251155237981485 0.21997521027755715 0.02139745159066182 +25.823638346963286 -0.20157728502568387 0.0003243599448660409 0.21970951413758832 0.02145378237481073 +25.863231445050523 -0.2015893935880093 0.00032360357288352534 0.2194419229424118 0.0215096946359904 +25.902824631958357 -0.2016014507227528 0.000322846426006726 0.21917245377624783 0.021565187171912692 +25.942417908129823 -0.2016134565935829 0.0003220885223154196 0.21890112368329015 0.021620258809480156 +25.98201127400123 -0.2016254113642629 0.00032132987981306645 0.21862794968013108 0.021674908403519526 +26.02160473000211 -0.2016373151986466 0.00032057051642723626 0.21835294873876823 0.021729134837568376 +26.06119827655538 -0.20164916826066645 0.00031981045000951285 0.2180761377980607 0.02178293702323948 +26.10079191407729 -0.201660970714328 0.00031904969833602075 0.2177975337551359 0.021836313900812875 +26.14038564297752 -0.20167272272369988 0.0003182882791073184 0.2175171534702158 0.02188926443794927 +26.17997946365921 -0.20168442445290716 0.00031752620994902095 0.21723501376110854 0.021941787631309592 +26.219573376519037 -0.20169607606612305 0.0003167635084113983 0.21695113140447952 0.021993882504619033 +26.259167381947208 -0.20170767772756074 0.00031600019197010933 0.21666552313653145 0.022045548109926674 +26.298761480327567 -0.20171922960146624 0.00031523627802612945 0.21637820564794819 0.022096783527027212 +26.338355672037597 -0.20173073185211024 0.00031447178390591905 0.21608919558811177 0.022147587862976773 +26.377949957448475 -0.2017421846437808 0.0003137067268617073 0.21579850956030475 0.02219796025276211 +26.41754433692513 -0.20175358814077604 0.0003129411240717341 0.21550616412297793 0.022247899858876184 +26.45713881082629 -0.20176494250739604 0.00031217499264030375 0.21521217578823448 0.022297405870805115 +26.49673337950453 -0.20177624790793558 0.00031140834959780535 0.21491656102320003 0.022346477505218214 +26.53632804330627 -0.2017875045066786 0.0003106412119014118 0.21461933624331522 0.022395114006575123 +26.5759228025719 -0.20179871246788814 0.00030987359643453534 0.21432051781981168 0.02244331464551463 +26.615517657635763 -0.20180987195580127 0.00030910552000771354 0.21402012207372897 0.022491078720093895 +26.65511260882628 -0.20182098313462185 0.0003083369993583215 0.21371816527505147 0.02253840555516844 +26.69470765646586 -0.2018320461685121 0.00030756805115064934 0.21341466364652176 0.022585294501623814 +26.73430280087107 -0.20184306122158832 0.0003067986919765837 0.21310963335556662 0.022631744938032064 +26.77389804235265 -0.20185402845791148 0.0003060289383553269 0.21280309052236093 0.022677756268736624 +26.81349338121553 -0.20186494804148158 0.0003052588067335577 0.2124950512128032 0.0227233279245575 +26.85308881775888 -0.20187582013623204 0.000304488313485783 0.2121855314399691 0.022768459362181623 +26.892684352276184 -0.20188664490602126 0.00030371747491442707 0.21187454716288215 0.022813150065449515 +26.93227998505526 -0.20189742251462703 0.00030294630724993064 0.21156211428924596 0.022857399543475296 +26.971875716378328 -0.20190815312574073 0.00030217482665071484 0.21124824866798128 0.022901207330975806 +27.011471546522017 -0.20191883690295934 0.0003014030492036863 0.21093296609705717 0.02294457298912995 +27.051067475757453 -0.2019294740097812 0.00030063099092413325 0.21061628231594068 0.022987496104142763 +27.090663504350253 -0.20194006460959776 0.0002998586677560691 0.2102982130094632 0.023029976288929412 +27.130259632560644 -0.2019506088656895 0.0002990860955717498 0.20997877380470628 0.023072013180266485 +27.169855860643423 -0.20196110694121852 0.000298313290172829 0.20965798027125873 0.02311360644143276 +27.209452188848076 -0.20197155899922273 0.0002975402672893423 0.20933584792235993 0.023154755760176945 +27.249048617418758 -0.20198196520261014 0.0002967670425807248 0.20901239221189916 0.023195460849701834 +27.288645146594376 -0.20199232571415338 0.00029599363163544337 0.2086876285362099 0.023235721447948835 +27.32824177660864 -0.20200264069648333 0.0002952200499712063 0.20836157223136195 0.023275537317694706 +27.36783850769006 -0.20201291031208432 0.00029444631303523447 0.208034238574156 0.023314908246506658 +27.407435340062033 -0.20202313472328778 0.00029367243620402443 0.20770564278119927 0.02335383404649222 +27.4470322739429 -0.20203331409226657 0.0002928984347837351 0.20737580000913844 0.02339231455391637 +27.4866293095459 -0.202043448581031 0.0002921243240103437 0.2070447253521527 0.02343034963002684 +27.526226447079335 -0.2020535383514206 0.0002913501190491975 0.2067124338470707 0.023467939159043615 +27.565823686746512 -0.20206358356510232 0.0002905758349958834 0.20637894046443725 0.02350508305027407 +27.605421028745855 -0.20207358438356263 0.0002898014868758718 0.20604426011604773 0.023541781237167003 +27.64501847327089 -0.20208354096810374 0.00028902708964439555 0.2057084076490746 0.023578033675710767 +27.68461602051035 -0.20209345347983762 0.0002882526581869333 0.20537139784990519 0.023613840346438902 +27.72421367064815 -0.20210332207968182 0.00028747820731928 0.20503324544223547 0.023649201253397645 +27.763811423863473 -0.20211314692835428 0.0002867037517870329 0.20469396508203044 0.02368411642292464 +27.8034092803308 -0.20212292818636782 0.00028592930626680644 0.20435357136741542 0.02371858590722165 +27.843007240219958 -0.2021326660140266 0.00028515488536476715 0.2040120788275899 0.02375260977797583 +27.882605303696145 -0.20214236057141968 0.00028438050361816875 0.20366950193149588 0.02378618813296521 +27.92220347092 -0.20215201201841773 0.0002836061754944492 0.20332585508122084 0.02381932109132305 +27.96180174204759 -0.20216162051466904 0.00028283191539153746 0.2029811526121389 0.023852008794545437 +28.00140011723053 -0.20217118621959126 0.0002820577376382147 0.20263540880115383 0.023884251407934178 +28.040998596615918 -0.20218070929237322 0.0002812836564938362 0.20228863785004217 0.023916049118455115 +28.08059718034652 -0.20219018989196402 0.0002805096861482278 0.20194085390337171 0.02394740213515402 +28.120195868560653 -0.20219962817707296 0.0002797358407223245 0.20159207103499574 0.023978310689937082 +28.15979466139233 -0.2022090243061637 0.00027896213426747117 0.20124230325513268 0.024008775035721158 +28.19939355897128 -0.20221837843745027 0.0002781885807661572 0.20089156450559278 0.024038795448291763 +28.238992561422947 -0.20222769072889302 0.0002774151941316291 0.2005398686638915 0.024068372225034367 +28.278591668868568 -0.20223696133819444 0.00027664198820784595 0.20018722953897625 0.024097505683588673 +28.318190881425227 -0.20224619042279537 0.00027586897676985415 0.1998336608731461 0.024126196164623356 +28.35779019920583 -0.2022553781398708 0.00027509617352371955 0.19947917634326737 0.02415444402971643 +28.397389622319206 -0.20226452464632647 0.00027432359210632966 0.1991237895553504 0.024182249660731153 +28.436989150870147 -0.2022736300987943 0.00027355124608565307 0.19876751405091095 0.02420961346187117 +28.476588784959347 -0.20228269465362916 0.00027277914896048626 0.19841036330268524 0.02423653585651034 +28.516188524683592 -0.20229171846690486 0.00027200731416094633 0.19805235071806473 0.024263017290504837 +28.555788370135673 -0.20230070169441172 0.00027123575504808535 0.19769348963045416 0.02428905822924246 +28.5953883214045 -0.20230964449165087 0.0002704644849138974 0.1973337933118309 0.02431465915838579 +28.634988378575088 -0.2023185470138327 0.0002696935169815159 0.19697327496173986 0.024339820584525287 +28.674588541728646 -0.20232740941587202 0.00026892286440516675 0.19661194771480442 0.024364543033618288 +28.714188810942552 -0.20233623185238583 0.0002681525402701449 0.19624982463349097 0.024388827052287353 +28.753789186290437 -0.20234501447768918 0.00026738255759284064 0.19588691871510192 0.024412673206391955 +28.793389667842217 -0.2023537574457931 0.00026661292932077035 0.19552324288383416 0.024436082082072676 +28.832990255664093 -0.2023624609103992 0.0002658436683323602 0.19515881000054 0.024459054284034314 +28.87259094981864 -0.20237112502489837 0.00026507478743732115 0.19479363285486004 0.024481590437468656 +28.91219175036481 -0.20237974994236754 0.00026430629937635694 0.19442772416619705 0.0245036911856364 +28.95179265735797 -0.20238833581556595 0.0002635382168211798 0.19406109658634674 0.02452535719165011 +28.99139367084994 -0.20239688279693202 0.00026277055237466565 0.19369376270085803 0.024546589137180014 +29.030994790889036 -0.2024053910385822 0.0002620033185708618 0.1933257350202693 0.024567387723214932 +29.070596017520085 -0.2024138606923056 0.00026123652787446455 0.1929570259917057 0.02458775366811214 +29.1101973507845 -0.20242229190956326 0.00026047019268159996 0.1925876479891628 0.024607687709840887 +29.149798790720258 -0.20243068484148388 0.0002597043253191193 0.19221761332022527 0.024627190603791666 +29.189400337361985 -0.20243903963886223 0.0002589389380450976 0.19184693422202204 0.02464626312406396 +29.229001990740965 -0.20244735645215614 0.00025817404304859937 0.19147562286230232 0.02466490606293908 +29.268603750885156 -0.20245563543148415 0.000257409652449434 0.1911036913399359 0.02468312022940529 +29.308205617819304 -0.20246387672662172 0.00025664577829859555 0.19073115168502683 0.024700906451451937 +29.347807591564845 -0.20247208048700058 0.0002558824325777396 0.1903580158585677 0.024718265573114215 +29.387409672140073 -0.20248024686170538 0.0002551196271998537 0.18998429575061204 0.0247351984575392 +29.42701185956009 -0.2024883759994707 0.00025435737400839747 0.18961000318555402 0.024751705983528216 +29.466614153836822 -0.2024964680486808 0.00025359568477789055 0.1892351499134022 0.02476778904751178 +29.50621655497914 -0.2025045231573641 0.00025283457121363787 0.18885974762105762 0.024783448562731594 +29.545819062992855 -0.20251254147319445 0.00025207404495185287 0.1884838079201805 0.024798685459355364 +29.585421677880685 -0.20252052314348634 0.0002513141175593445 0.18810734235964063 0.024813500683438485 +29.62502439964238 -0.20252846831519378 0.0002505548005338697 0.1877303624148806 0.024827895198043595 +29.664627228274657 -0.20253637713490935 0.000249796105303986 0.18735287949188625 0.02484186998296306 +29.704230163771378 -0.20254424974885968 0.000249038043228585 0.18697490492953142 0.024855426032189792 +29.743833206123405 -0.20255208630290464 0.0002482806255977871 0.18659645000111447 0.024868564358147906 +29.78343635531878 -0.20255988694253693 0.00024752386363195564 0.1862175259042224 0.024881285986934464 +29.823039611342637 -0.2025676518128776 0.00024676776848217845 0.18583814377328278 0.024893591961040015 +29.86264297417734 -0.20257538105867645 0.0002460123512301854 0.18545831466905224 0.024905483338320784 +29.902246443802408 -0.202583074824308 0.00024525762288838527 0.1850780495886403 0.02491696119232295 +29.941850020194646 -0.20259073325377183 0.0002445035943995958 0.1846973594587322 0.02492802661126353 +29.98145370332811 -0.2025983564906899 0.0002437502766370752 0.18431625513606129 0.02493868069799411 +30.021057493174148 -0.2026059446783047 0.00024299768040480745 0.18393474741026372 0.024948924570668832 +30.060661389701416 -0.20261349795947783 0.00024224581643709464 0.18355284700409802 0.024958759362322235 +30.100265392875976 -0.20262101647668954 0.0002414946953986471 0.18317056456798061 0.024968186219575778 +30.13986950266123 -0.2026285003720346 0.00024074432788476725 0.1827879106898276 0.024977206304490195 +30.179473719018034 -0.20263594978722335 0.00023999472442071034 0.18240489588558137 0.024985820791470315 +30.219078041904645 -0.20264336486357934 0.00023924589546273108 0.18202153060388684 0.024994030871586068 +30.258682471276813 -0.20265074574203723 0.00023849785139690592 0.18163782522744096 0.025001837747116205 +30.2982870070878 -0.20265809256314235 0.00023775060253965752 0.18125379007084766 0.025009242635400098 +30.33789164928836 -0.20266540546705003 0.00023700415913811173 0.18086943537701242 0.02501624676772445 +30.37749639782684 -0.2026726845935218 0.0002362585313689939 0.18048477132774265 0.025022851386657455 +30.41710125264914 -0.20267993008192622 0.00023551372933979333 0.18009980803515047 0.02502905774997316 +30.456706213698787 -0.20268714207123803 0.00023476976308798865 0.1797145555434585 0.02503486712796688 +30.496311280916927 -0.2026943207000347 0.00023402664258121548 0.17932902382998442 0.02504028080308014 +30.535916454242408 -0.20270146610649817 0.00023328437771744003 0.17894322280546046 0.025045300071527332 +30.57552173361172 -0.2027085784284113 0.0002325429783245436 0.17855716231485227 0.025049926241076378 +30.615127118959073 -0.20271565780315834 0.00023180245416071156 0.17817085213486306 0.025054160632328206 +30.654732610216467 -0.20272270436772277 0.00023106281491415997 0.17778430197776376 0.025058004578128106 +30.69433820731363 -0.202729718258688 0.0002303240702032671 0.1773975214864888 0.025061459423378254 +30.733943910178102 -0.20273669961223428 0.00022958622957625739 0.17701052024281214 0.02506452652434343 +30.77354971873523 -0.2027436485641396 0.0002288493025117321 0.17662330775779034 0.025067207249998807 +30.813155632908206 -0.20275056524977741 0.0002281132984181184 0.17623589348033838 0.02506950297994337 +30.85276165261812 -0.20275744980411767 0.00022737822663396743 0.17584828678971465 0.025071415105784065 +30.89236777778391 -0.20276430236172363 0.0002266440964277457 0.17546049700373115 0.025072945029967642 +30.931974008322477 -0.20277112305675268 0.00022591091699815456 0.17507253337339948 0.025074094166449234 +30.971580344148634 -0.20277791202295534 0.00022517869747362465 0.17468440508404318 0.025074863939673037 +31.01118678517522 -0.2027846693936747 0.00022444744691272334 0.1742961212548845 0.025075255784940683 +31.050793331312985 -0.20279139530184445 0.00022371717430414947 0.17390769094555805 0.025075271148953925 +31.090399982470757 -0.2027980898799903 0.00022298788856633521 0.17351912314610451 0.025074911487506336 +31.13000673855541 -0.20280475326022793 0.00022225959854780736 0.17313042678293922 0.025074178267817184 +31.16961359947182 -0.20281138557426281 0.00022153231302719396 0.17274161071943653 0.025073072966442234 +31.209220565123008 -0.20281798695338962 0.0002208060407128138 0.1723526837549433 0.025071597070171064 +31.248827635410088 -0.20282455752849152 0.00022008079024333607 0.17196365462606297 0.025069752075899596 +31.28843481023232 -0.20283109743004116 0.0002193565701873757 0.1715745320012435 0.025067539490302146 +31.3280420894871 -0.2028376067880969 0.00021863338904321058 0.17118532449138324 0.025064960828500984 +31.36764947307002 -0.20284408573230592 0.00021791125523952648 0.17079604064036943 0.025062017616219467 +31.40725696087486 -0.20285053439190234 0.00021719017713483105 0.1704066889306696 0.025058711387469252 +31.44686455279364 -0.20285695289570646 0.0002164701630178099 0.17001727777930975 0.025055043685585362 +31.48647224871663 -0.20286334137212467 0.0002157512211070948 0.16962781554584708 0.025051016063047608 +31.52608004853233 -0.20286969994914938 0.0002150333595514951 0.16923831052359428 0.025046630080824462 +31.565687952127575 -0.20287602875435926 0.00021431658642976945 0.16884877094264014 0.025041887308132702 +31.605295959387497 -0.20288232791491775 0.00021360090975087792 0.16845920497416267 0.025036789322862716 +31.644904070195548 -0.20288859755757352 0.00021288633745409163 0.1680696207259663 0.025031337711574425 +31.684512284433538 -0.20289483780866027 0.00021217287740850116 0.16768002624389586 0.025025534068074395 +31.724120601981667 -0.20290104879409676 0.00021146053741370705 0.1672904295120596 0.02501937999470791 +31.763729022718515 -0.20290723063938546 0.00021074932519945668 0.16690083845792705 0.025012877101792858 +31.803337546521078 -0.20291338346961485 0.0002100392484256532 0.16651126093937701 0.025006027006385188 +31.842946173264785 -0.20291950740945552 0.00020933031468248645 0.16612170476333385 0.024998831333385634 +31.88255490282355 -0.20292560258316464 0.00020862253149075415 0.16573217766915768 0.024991291716040295 +31.922163735069727 -0.20293166911458252 0.00020791590630134512 0.16534268733740934 0.024983409793081123 +31.9617726698742 -0.20293770712713347 0.00020721044649562082 0.1649532413913344 0.02497518721120798 +32.00138170710631 -0.20294371674382616 0.00020650615938555192 0.16456384739252325 0.024966625624171925 +32.04099084663399 -0.20294969808725427 0.00020580305221348818 0.16417451284035253 0.02495772669187024 +32.080600088323756 -0.20295565127959447 0.00020510113215230447 0.1637852451784206 0.02494849208077202 +32.120209432040575 -0.2029615764426084 0.00020440040630578923 0.16339605179001715 0.02493892346489561 +32.15981887764813 -0.20296747369764198 0.00020370088170801944 0.1630069399995083 0.024929022523045356 +32.199428425008676 -0.2029733431656248 0.00020300256532395635 0.16261791707545145 0.02491879094053638 +32.239038073983075 -0.20297918496707346 0.00020230546404942463 0.16222899021741474 0.02490823040916312 +32.27864782443085 -0.20298499922208565 0.00020160958471113438 0.16184016658213388 0.02489734262642702 +32.31825767621022 -0.20299078605034673 0.0002009149340664873 0.1614514532560793 0.02488612929491514 +32.35786762917805 -0.20299654557112637 0.00020022151880406134 0.16106285727348446 0.02487459212357535 +32.39747768318992 -0.2030022779032791 0.000199529345543497 0.16067438560962805 0.02486273282594029 +32.43708783810014 -0.2030079831652453 0.0001988384208355584 0.1602860451829782 0.024850553121574873 +32.476698093761755 -0.20301366147505084 0.0001981487511621053 0.15989784285405662 0.02483805473445556 +32.51630845002655 -0.20301931295030817 0.000197460342936417 0.15950978542671443 0.02482523939372602 +32.55591890674512 -0.2030249377082151 0.00019677320250317639 0.1591218796492482 0.02481210883365816 +32.59552946376681 -0.20303053586555633 0.00019608733613831516 0.158734132213002 0.024798664792688285 +32.635140120939795 -0.20303610753870407 0.00019540275004964185 0.1583465497525152 0.024784909014407563 +32.674750878111084 -0.20304165284361667 0.00019471945037627178 0.15795913884731 0.024770843245924146 +32.714361735126495 -0.20304717189584087 0.00019403744318928438 0.15757190602026144 0.024756469239508704 +32.75397269183073 -0.203052664810511 0.00019335673449150627 0.15718485773915594 0.024741788751191124 +32.79358374806738 -0.20305813170234968 0.00019267733021759539 0.15679800041751132 0.02472680354049625 +32.83319490367887 -0.20306357268566821 0.0001919992362344028 0.1564113404129184 0.02471151537099758 +32.87280615850659 -0.2030689878743668 0.0001913224583408697 0.1560248840290653 0.024695926010978794 +32.912417512390824 -0.2030743773819358 0.00019064700226808565 0.155638637514844 0.024680037230670863 +32.95202896517076 -0.2030797413214549 0.00018997287367955207 0.15525260706448216 0.024663850804693434 +32.991640516684654 -0.2030850798055951 0.0001893000781712644 0.1548667988165426 0.02464736851082303 +33.031252166769605 -0.20309039294661665 0.0001886286212718313 0.15448121886273572 0.02463059213006269 +33.07086391526177 -0.20309568085637372 0.00018795850844228603 0.15409587323045149 0.02461352344531917 +33.110475761996256 -0.2031009436463099 0.0001872897450768623 0.1537107679041785 0.02459616424437254 +33.15008770680728 -0.20310618142746287 0.0001866223365025664 0.15332590880851663 0.02457851631640809 +33.189699749527946 -0.2031113943104624 0.00018595628797943528 0.1529413018205811 0.02456058145340956 +33.22931188999054 -0.2031165824055329 0.00018529160470062193 0.15255695275730075 0.024542361449455874 +33.26892412802631 -0.2031217458224912 0.00018462829179294985 0.15217286739403937 0.024523858102571572 +33.308536463465664 -0.2031268846707502 0.00018396635431633878 0.15178905144507196 0.02450507321083134 +33.348148896138 -0.20313199905931745 0.000183305797264591 0.15140551057595955 0.024486008576203477 +33.38776142587192 -0.20313708909679673 0.00018264662556497313 0.15102225040153167 0.02446666600143606 +33.42737405249506 -0.2031421548913875 0.00018198884407893146 0.15063927648536485 0.02444704729154885 +33.46698677583423 -0.2031471965508872 0.0001813324576017607 0.15025659433955282 0.02442715425362071 +33.50659959571541 -0.2031522141826906 0.00018067747086313802 0.14987420942455545 0.024406988696072288 +33.54621251196367 -0.2031572078937912 0.00018002388852672482 0.14949212715007817 0.02438655242802594 +33.58582552440329 -0.2031621777907807 0.0001793717151911308 0.14911035287755497 0.024365847261573943 +33.62543863285775 -0.20316712397985162 0.00017872095538919698 0.14872889191561045 0.02434487500838772 +33.66505183714973 -0.20317204656679577 0.0001780716135889142 0.14834774952764962 0.024323637482103633 +33.704665137101074 -0.20317694565700706 0.00017742369419293793 0.14796693092175867 0.02430213649710138 +33.74427853253293 -0.2031818213554802 0.00017677720153942372 0.1475864412616846 0.024280373868839522 +33.783892023265594 -0.20318667376681324 0.00017613213990153685 0.1472062856583307 0.024258351413421652 +33.82350560911868 -0.2031915029952077 0.000175488513488094 0.14682646917454129 0.024236070947324276 +33.86311928991107 -0.20319630914446749 0.00017484632644344951 0.1464469968280807 0.024213534287801042 +33.90273306546085 -0.2032010923180028 0.00017420558284776908 0.14606787358471232 0.024190743251760887 +33.94234693558549 -0.20320585261882926 0.00017356628671747824 0.1456891043596811 0.0241676996579535 +33.981960900101704 -0.2032105901495673 0.00017292844200498332 0.14531069402936095 0.024144405324029502 +34.021574958825546 -0.20321530501244575 0.0001722920525990549 0.14493264741455794 0.02412086206754233 +34.06118911157235 -0.20321999730930096 0.00017165712232513426 0.14455496928977174 0.024097071706957695 +34.10080335815685 -0.20322466714157758 0.00017102365494537784 0.14417766438561108 0.024073036059723274 +34.14041769839311 -0.20322931461032945 0.00017039165415878407 0.1438007373824578 0.024048756942956672 +34.180032132094546 -0.20323393981622165 0.00016976112360173206 0.14342419291702493 0.02402423617416977 +34.219646659073945 -0.20323854285952833 0.00016913206684776369 0.14304803557900722 0.023999475569964013 +34.25926127914348 -0.20324312384013796 0.00016850448740786644 0.14267226990748796 0.023974476945311945 +34.29887599211474 -0.20324768285754943 0.00016787838873116165 0.14229690040283208 0.02394924211651354 +34.33849079779872 -0.20325222001087614 0.00016725377420417792 0.1419219315164791 0.023923772896559097 +34.37810569600581 -0.20325673539884628 0.0001666306471520816 0.14154736765044662 0.02389807109999498 +34.41772068654585 -0.20326122911980218 0.00016600901083814665 0.14117321317013046 0.023872138538472143 +34.45733576922812 -0.20326570127170288 0.00016538886846425573 0.14079947238939086 0.023845977023084025 +34.49695094386135 -0.20327015195212472 0.00016477022317109026 0.140426149577958 0.023819588363768646 +34.53656621025374 -0.20327458125826078 0.00016415307803841462 0.1400532489642532 0.023792974369087398 +34.57618156821296 -0.20327898928692342 0.00016353743608521582 0.13968077473129795 0.023766136846500054 +34.61579701754615 -0.20328337613454492 0.0001629233002697178 0.13930873101602526 0.0237390776007393 +34.65541255806001 -0.2032877418971771 0.0001623106734900503 0.1389371219151418 0.023711798435609364 +34.69502818956063 -0.20329208667049414 0.00016169955858422335 0.1385659514789895 0.02368430115374803 +34.73464391185372 -0.20329641054979197 0.00016108995833025156 0.13819522371623888 0.023656587554904834 +34.774259724744475 -0.20330071362999003 0.0001604818754466344 0.1378249425920285 0.023628659437590488 +34.81387562803765 -0.2033049960056308 0.00015987531259241804 0.13745511202967028 0.023600518597929377 +34.85349162153753 -0.20330925777088374 0.0001592702723673317 0.13708573590668324 0.023572166829230076 +34.89310770504788 -0.20331349901954254 0.00015866675731251266 0.13671681806231936 0.023543605924549096 +34.93272387837224 -0.20331771984502836 0.00015806476991005715 0.1363483622930913 0.023514837672566926 +34.97234014131347 -0.2033219203403905 0.00015746431258382342 0.135980372350792 0.023485863860504358 +35.01195649367422 -0.20332610059830616 0.00015686538769927132 0.13561285195136127 0.02345668627264623 +35.05157293525663 -0.20333026071108362 0.00015626799756407383 0.13524580476133746 0.023427306691560595 +35.09118946586248 -0.20333440077066042 0.00015567214442806598 0.13487923441412883 0.0233977268953806 +35.130806085293145 -0.20333852086860627 0.00015507783048365582 0.13451314449904642 0.02336794866133408 +35.170422793349644 -0.20334262109612378 0.00015448505786612996 0.1341475385638774 0.02333797376296 +35.210039589832625 -0.2033467015440492 0.00015389382865361166 0.13378242011406807 0.023307803970633836 +35.24965647454238 -0.2033507623028528 0.00015330414486771848 0.13341779262105632 0.02327744105241629 +35.28927344727882 -0.20335480346264037 0.0001527160084734136 0.13305365951104886 0.02324688677198226 +35.328890507841564 -0.2033588251131543 0.00015212942137971918 0.1326900241747799 0.02321614289150546 +35.36850765602987 -0.20336282734377473 0.00015154438543939206 0.13232688995971886 0.02318521116780739 +35.408124891642714 -0.2033668102435201 0.00015096090244986753 0.13196426017315602 0.02315409335687678 +35.447742214478666 -0.20337077390104766 0.00015037897415298186 0.1316021380904183 0.023122791208804273 +35.48735962433611 -0.20337471840465604 0.00014979860223542053 0.1312405269413027 0.023091306471536496 +35.52697712101308 -0.20337864384228455 0.0001492197883290574 0.13087942992080245 0.023059640888761872 +35.56659470430727 -0.20338255030151556 0.00014864253401124014 0.13051885018232523 0.023027796201590508 +35.60621237401618 -0.20338643786957447 0.00014806684080486258 0.1301587908431253 0.022995774146228613 +35.645830129937 -0.20339030663333083 0.00014749271017869826 0.129799254984582 0.022963576454736265 +35.685447971866644 -0.20339415667930008 0.00014692014354803252 0.12944024564692005 0.022931204857370355 +35.72506589960181 -0.20339798809364418 0.00014634914227423882 0.1290817658344008 0.022898661077314125 +35.76468391293889 -0.2034018009621721 0.0001457797076658457 0.12872381851514947 0.022865946836668025 +35.80430201167411 -0.20340559537034175 0.00014521184097825976 0.12836640661815893 0.022833063851680435 +35.84392019560342 -0.20340937140326007 0.0001446455434140965 0.1280095330390453 0.022800013834635573 +35.883538464522566 -0.20341312914568424 0.00014408081612384325 0.1276532006343582 0.02276679849410036 +35.923156818227014 -0.20341686868202427 0.0001435176602055966 0.12729741222220656 0.022733419533197824 +35.96277525651213 -0.20342059009634128 0.00014295607670591676 0.12694217059200216 0.0226998786523218 +36.002393779173026 -0.20342429347235055 0.00014239606661956925 0.1265874784919787 0.022666177545684462 +36.042012386004586 -0.20342797889342235 0.00014183763089031654 0.1262333386329015 0.022632317904424454 +36.08163107680158 -0.20343164644258152 0.0001412807704107873 0.1258797536964139 0.02259830141387517 +36.12124985135855 -0.203435296202511 0.00014072548602299 0.12552672632139344 0.022564129755567198 +36.16086870946985 -0.2034389282555503 0.00014017177851845822 0.12517425911733968 0.022529804605510267 +36.20048765092976 -0.20344254268369721 0.0001396196486388892 0.12482235466215819 0.022495327635573114 +36.24010667553233 -0.20344613956861138 0.00013906909707600814 0.12447101548840035 0.02246070051307682 +36.27972578307145 -0.20344971899161102 0.00013852012447195604 0.12412024410459395 0.022425924899144637 +36.31934497334091 -0.20345328103367763 0.00013797273141985558 0.12377004297751941 0.022391002451029412 +36.35896424613437 -0.20345682577545385 0.0001374269184639106 0.1234204145520893 0.022355934821066376 +36.398583601245285 -0.20346035329724912 0.0001368826860995319 0.12307136122191033 0.022320723655628903 +36.43820303846712 -0.20346386367903477 0.00013634003477398804 0.12272288536225191 0.022285370596526497 +36.477822557593115 -0.20346735700044996 0.0001357989648864525 0.12237498930888457 0.022249877280077893 +36.51744215841641 -0.20347083334080054 0.0001352594767883444 0.12202767536449023 0.022214245337156036 +36.557061840730114 -0.2034742927790597 0.00013472157078387885 0.12168094580185308 0.022178476394664585 +36.59668160432718 -0.20347773539387112 0.00013418524713004675 0.1213348028564003 0.022142572072884077 +36.636301449000484 -0.2034811612635475 0.0001336505060367962 0.12098924873568921 0.022106533986510968 +36.67592137454284 -0.20348457046607296 0.00013311734766787982 0.12064428561396916 0.02207036374515471 +36.715541380747005 -0.20348796307910386 0.000132585772140845 0.12029991563412605 0.022034062953820877 +36.755161467405536 -0.20349133917997095 0.00013205577952707221 0.11995614090240708 0.02199763320996129 +36.794781634311114 -0.2034946988456775 0.00013152736985262028 0.11961296350311539 0.02196107610748656 +36.83440188125625 -0.2034980421529036 0.00013100054309822824 0.11927038547935907 0.02192439323373581 +36.87402220803342 -0.20350136917800485 0.0001304752991995185 0.11892840885092004 0.021887586169761133 +36.91364261443508 -0.2035046799970155 0.00012995163804764364 0.11858703559973095 0.021850656492212236 +36.95326310025363 -0.20350797468564683 0.00012942955948903626 0.11824626768497176 0.021813605769762153 +36.99288366528141 -0.203511253319291 0.0001289090633265199 0.11790610702723388 0.021776435567712176 +37.03250430931079 -0.20351451597302017 0.00012839014931908353 0.1175665555236431 0.021739147445153567 +37.07212503213406 -0.2035177627215885 0.00012787281718195615 0.11722761503556922 0.02170174295333128 +37.11174583354356 -0.20352099363943277 0.00012735706658764686 0.11688928739727872 0.021664223639265862 +37.15136671333157 -0.20352420880067257 0.00012684289716554571 0.11655157442016884 0.021626591042918027 +37.19098767129037 -0.2035274082791144 0.00012633030850274114 0.11621447787064611 0.021588846699267524 +37.230608707212255 -0.20353059214824895 0.00012581930014404975 0.11587799949701916 0.02155099213615948 +37.27022982088954 -0.20353376048125474 0.00012530987159241875 0.1155421410181699 0.02151302887615361 +37.30985101211449 -0.203536913350997 0.0001248020223092862 0.11520690412200689 0.021474958435129726 +37.34947228067949 -0.20354005083003165 0.00012429575171476396 0.11487229046739315 0.02143678232295085 +37.38909362637687 -0.20354317299060343 0.0001237910591880899 0.11453830168392569 0.021398502043528913 +37.428715048999 -0.20354627990464846 0.00012328794406778334 0.11420493937780381 0.02136011909392756 +37.4683365483383 -0.20354937164379538 0.00012278640565211026 0.11387220512083424 0.021321634965111486 +37.50795812418722 -0.20355244827936603 0.0001222864431993235 0.11354010045845586 0.0212830511415639 +37.54757977633827 -0.2035555098823757 0.00012178805592803149 0.11320862691364536 0.02124436910229743 +37.58720150458395 -0.20355855652353547 0.00012129124301740701 0.11287778597691671 0.021205590318591556 +37.62682330871692 -0.20356158827325319 0.00012079600360760086 0.11254757911174477 0.02116671625644166 +37.666445188529806 -0.20356460520163314 0.00012030233679999673 0.112218007755294 0.02112774837468881 +37.70606714381533 -0.2035676073784788 0.00011981024165748514 0.11188907331860998 0.021088688125760757 +37.745689174366305 -0.20357059487329243 0.00011931971720500952 0.11156077718613137 0.021049536955902715 +37.78531127997557 -0.20357356775527757 0.00011883076242952858 0.1112331207119256 0.02101029630429743 +37.82493346043607 -0.20357652609333785 0.00011834337628061332 0.11090610523184995 0.020970967604243093 +37.864555715540845 -0.20357946995608103 0.00011785755767058086 0.1105797320476339 0.02093155228179042 +37.90417804508301 -0.20358239941181785 0.00011737330547500612 0.11025400243637605 0.02089205175701078 +37.94380044885576 -0.20358531452856274 0.00011689061853266348 0.10992891765604307 0.020852467442144727 +37.983422926652395 -0.2035882153740376 0.00011640949564643925 0.10960447892868036 0.020812800744461304 +38.02304547826637 -0.20359110201566932 0.00011592993558292394 0.10928068745966125 0.02077305306284446 +38.062668103491134 -0.20359397452059333 0.00011545193707339462 0.10895754442517253 0.02073322579058407 +38.10229080212034 -0.2035968329556532 0.00011497549881368879 0.10863505097790244 0.02069332031434239 +38.14191357394773 -0.20359967738740323 0.00011450061946464208 0.10831320824379653 0.020653338012847283 +38.181536418767145 -0.20360250788210776 0.00011402729765249988 0.10799201732574805 0.020613280259308003 +38.22115933637257 -0.20360532450574328 0.00011355553196895254 0.10767147929892733 0.0205731484190495 +38.26078232655814 -0.20360812732399838 0.00011308532097190321 0.10735159522220704 0.020532943851459304 +38.30040538911807 -0.2036109164022765 0.00011261666318522933 0.10703236611991955 0.0204926679085726 +38.340028523846726 -0.20361369180569522 0.0001121495570996254 0.10671379300115637 0.020452321935732657 +38.37965173053865 -0.20361645359908861 0.00011168400117246513 0.10639587684501889 0.020411907271508774 +38.4192750089885 -0.20361920184700674 0.0001112199938284668 0.10607861861284938 0.020371425247275015 +38.45889835899109 -0.2036219366137186 0.00011075753345973554 0.10576201923656742 0.02033087718802887 +38.49852178034137 -0.20362465796321147 0.00011029661842630686 0.10544607963006751 0.020290264412102917 +38.53814527283449 -0.20362736595919304 0.00010983724705600856 0.10513080068052526 0.02024958822831568 +38.57776883626569 -0.20363006066509168 0.00010937941764552688 0.10481618325248303 0.020208849942622915 +38.61739247043046 -0.2036327421440576 0.00010892312845999027 0.104502228190672 0.020168050851028917 +38.65701617512435 -0.2036354104589639 0.00010846837773357432 0.1041889363157331 0.02012719224336901 +38.696639950143215 -0.2036380656724084 0.00010801516366993956 0.1038763084240864 0.020086275402746812 +38.736263795282994 -0.20364070784671318 0.00010756348444220056 0.10356434529248261 0.020045301605050424 +38.775887710339795 -0.20364333704392654 0.00010711333819363601 0.10325304767537817 0.02000427211963015 +38.815511695109976 -0.2036459533258236 0.00010666472303757502 0.10294241630371415 0.019963188208027723 +38.85513574939004 -0.2036485567539079 0.00010621763705805922 0.10263245188890924 0.019922051125473444 +38.894759872976685 -0.20365114738941115 0.00010577207830986919 0.10232315512017705 0.01988086211947701 +38.93438406566681 -0.2036537252932962 0.00010532804481895635 0.10201452666321757 0.019839622430910534 +38.974008327257515 -0.20365629052625597 0.00010488553458288078 0.10170656716529404 0.01979833329390192 +39.013632657546054 -0.20365884314871552 0.00010444454557084029 0.10139927725111098 0.019756995935355685 +39.05325705632996 -0.20366138322083305 0.00010400507572402508 0.10109265752683631 0.019715611573985978 +39.09288152340692 -0.2036639108025006 0.00010356712295623645 0.10078670857508804 0.01967418142356071 +39.132506058574876 -0.20366642595334528 0.00010313068515358533 0.1004814309591816 0.01963270668859593 +39.172130661631925 -0.20366892873272965 0.00010269576017545694 0.10017682522190828 0.019591188568399382 +39.211755332376434 -0.20367141919975404 0.00010226234585441449 0.09987289188550937 0.019549628254408834 +39.25138007060697 -0.20367389741325556 0.0001018304399964119 0.09956963145435195 0.019508026930158084 +39.29100487612231 -0.20367636343181103 0.00010140004038142701 0.09926704440887195 0.019466385773501144 +39.330629748721506 -0.20367881731373635 0.00010097114476345776 0.09896513121778422 0.019424705954271215 +39.37025468820378 -0.20368125911708934 0.00010054375087099746 0.09866389231668195 0.019382988635669365 +39.40987969436861 -0.20368368889966862 0.00010011785640729448 0.0983633281342323 0.019341234973711287 +39.44950476701574 -0.20368610671901555 9.969345905051732e-05 0.09806343907582617 0.01929944611706205 +39.489129905945106 -0.2036885126324155 9.927055645425166e-05 0.09776422552804713 0.0192576232078343 +39.528755110956936 -0.20369090669689918 9.884914624765224e-05 0.09746568785376203 0.019215767381107227 +39.56838038185166 -0.2036932889692414 9.842922603562643e-05 0.09716782640610921 0.019173879763853038 +39.60800571842998 -0.20369565950596513 9.801079339926619e-05 0.09687064151018905 0.01913196147594189 +39.647631120492825 -0.20369801836334 9.759384589650116e-05 0.09657413348026826 0.01909001363270403 +39.68725658784142 -0.203700365597384 9.717838106143468e-05 0.09627830260906002 0.019048037339312977 +39.72688212027721 -0.2037027012638657 9.676439640550723e-05 0.09598314916858948 0.01900603369480192 +39.76650771760192 -0.20370502541830246 9.635188941757313e-05 0.09568867342035685 0.018964003792501318 +39.80613337961752 -0.20370733811596478 9.594085756366643e-05 0.09539487559796626 0.01892194871594813 +39.845759106126266 -0.20370963941187425 9.55312982882662e-05 0.0951017559240002 0.018879869545303126 +39.88538489693065 -0.20371192936080598 9.512320901342854e-05 0.0948093146056651 0.018837767349949606 +39.9250107518335 -0.2037142080172896 9.47165871400851e-05 0.09451755182525667 0.018795643194704493 +39.96463667063783 -0.20371647543560964 9.431143004758756e-05 0.09422646775290655 0.018753498135901214 +40.00426265314699 -0.20371873166980684 9.390773509441884e-05 0.0939360625417358 0.018711333224052815 +40.04388869916461 -0.2037209767736792 9.350549961831184e-05 0.09364633632416018 0.018669149501963713 +40.08351480849453 -0.20372321080078235 9.310472093646291e-05 0.09335728921945889 0.018626948005001687 +40.12314098094095 -0.2037254338044309 9.270539634593349e-05 0.09306892132678292 0.01858472976257407 +40.16276721630835 -0.20372764583769906 9.230752312382445e-05 0.09278123273607641 0.018542495795890703 +40.202393514401486 -0.2037298469534218 9.191109852759047e-05 0.09249422351454319 0.018500247120049624 +40.24201987502535 -0.20373203720419664 9.151611979545507e-05 0.0922078937126631 0.018457984743410254 +40.2816462979853 -0.20373421664238353 9.112258414611815e-05 0.09192224336285616 0.018415709665357986 +40.321272783086975 -0.20373638532010438 9.073048878006451e-05 0.09163727249317787 0.018373422881588032 +40.36089933013629 -0.20373854328924754 9.033983087859618e-05 0.09135298110235063 0.01833112537784907 +40.400525938939474 -0.20374069060146563 8.9950607605006e-05 0.09106936918081691 0.018288818134317663 +40.440152609303055 -0.20374282730817772 8.95628161044785e-05 0.09078643670366665 0.01824650212367629 +40.47977934103386 -0.20374495346057056 8.917645350443538e-05 0.0905041836240925 0.018204178312662744 +40.519406133939036 -0.20374706910959814 8.87915169146577e-05 0.09022260989117363 0.018161847659666434 +40.559032987826 -0.20374917430598447 8.840800342774952e-05 0.0899417154252039 0.018119511117234238 +40.59865990250255 -0.2037512691002227 8.802591011937026e-05 0.08966150014280179 0.018077169630968195 +40.63828687777675 -0.20375335354257706 8.764523404826989e-05 0.08938196394050356 0.01803482413932164 +40.67791391345697 -0.20375542768308388 8.726597225681634e-05 0.08910310670018307 0.01799247557385896 +40.71754100935191 -0.20375749157155146 8.688812177096369e-05 0.08882492829015341 0.017950124858690363 +40.75716816527062 -0.2037595452575617 8.651167960084656e-05 0.08854742856681458 0.01790777291206101 +40.79679538102243 -0.20376158879047165 8.61366427409271e-05 0.08827060736632825 0.017865420646224435 +40.836422656416985 -0.2037636222194127 8.576300816978958e-05 0.08799446451625768 0.01782306896356351 +40.87604999126431 -0.20376564559329322 8.539077285120532e-05 0.08771899982649123 0.017780718762770865 +40.915677385374714 -0.20376765896079818 8.501993373375391e-05 0.08744421309360856 0.017738370934154448 +40.95530483855882 -0.20376966237039093 8.465048775122089e-05 0.08717010410114885 0.017696026361473636 +40.99493235062765 -0.20377165587031276 8.428243182301717e-05 0.08689667262166102 0.017653685922680126 +41.03455992139249 -0.20377363950858562 8.391576285414857e-05 0.08662391841001323 0.01761135048704433 +41.07418755066497 -0.20377561333301233 8.355047773567837e-05 0.08635184120439114 0.017569020918486777 +41.11381523825711 -0.2037775773911756 8.318657334494582e-05 0.08608044074169434 0.01752669807510632 +41.1534429839812 -0.2037795317304422 8.282404654559327e-05 0.08580971673311598 0.017484382805974787 +41.193070787649894 -0.20378147639796132 8.246289418813606e-05 0.08553966888336385 0.017442075955703528 +41.23269864907622 -0.20378341144066622 8.210311310986346e-05 0.0852702968825776 0.017399778360600717 +41.272326568073474 -0.20378533690527503 8.174470013536077e-05 0.08500160040933862 0.017357490851575303 +41.31195454445542 -0.20378725283829216 8.138765207640361e-05 0.08473357912681151 0.01731521425124728 +41.35158257803602 -0.2037891592860086 8.103196573286665e-05 0.08446623268746994 0.017272949379259796 +41.39121066862971 -0.20379105629450203 8.067763789190625e-05 0.0841995607339772 0.01723069704392748 +41.43083881605118 -0.20379294390963934 8.032466532902093e-05 0.08393356289272524 0.017188458049544695 +41.47046702011552 -0.20379482217707665 7.997304480827852e-05 0.08366823877849332 0.017146233195179477 +41.5100952806382 -0.2037966911422601 7.962277308174424e-05 0.08340358799189584 0.01710402326934908 +41.54972359743495 -0.2037985508504265 7.927384689080801e-05 0.083139610129264 0.017061829058878167 +41.589351970321985 -0.2038004013466044 7.892626296560568e-05 0.08287630476670269 0.017019651340737376 +41.62898039911575 -0.2038022426756154 7.858001802533482e-05 0.08261367147328379 0.01697749088611029 +41.66860888363311 -0.20380407488207428 7.823510877894893e-05 0.08235170980421408 0.01693534846124563 +41.70823742369133 -0.20380589801038987 7.789153192487116e-05 0.08209041930631572 0.01689322482424214 +41.747866019107946 -0.20380771210476692 7.754928415134216e-05 0.08182979951140311 0.016851120726543465 +41.78749466970091 -0.20380951720920493 7.72083621369431e-05 0.08156984994261074 0.01680903691625349 +41.827123375288565 -0.2038113133675016 7.686876255022271e-05 0.08131057010821216 0.016766974130602654 +41.86675213568954 -0.20381310062325117 7.653048205047902e-05 0.08105195951218655 0.016724933104074368 +41.90638095072289 -0.20381487901984685 7.619351728777877e-05 0.08079401763897381 0.016682914563820355 +41.94600982020803 -0.20381664860048074 7.58578649027689e-05 0.08053674397203016 0.01664091922884826 +41.98563874396474 -0.20381840940814555 7.552352152782832e-05 0.08028013797424133 0.016598947815961114 +42.02526772181316 -0.20382016148563453 7.51904837861164e-05 0.08002419910563417 0.016557001031209655 +42.06489675357381 -0.20382190487554275 7.485874829280514e-05 0.07976892681258113 0.016515079578475984 +42.10452583906756 -0.20382363962026775 7.452831165438196e-05 0.07951432053049907 0.016473184151294267 +42.144154978115736 -0.20382536576201069 7.41991704697776e-05 0.0792603796837069 0.016431315440948075 +42.18378417053993 -0.2038270833427768 7.387132132977302e-05 0.07900710368901895 0.016389474129893545 +42.22341341616216 -0.20382879240437587 7.354476081760596e-05 0.07875449195122358 0.01634766089573329 +42.26304271480483 -0.2038304929884239 7.321948550912805e-05 0.07850254387028845 0.016305876409506908 +42.302672066290725 -0.20383218513634352 7.289549197293155e-05 0.07825125882494975 0.016264121336850887 +42.342301470442976 -0.20383386888936386 7.257277677041597e-05 0.07800063619971367 0.016222396335227117 +42.38193092708515 -0.2038355442885237 7.225133645647918e-05 0.07775067535441484 0.01618070205956204 +42.42156043604111 -0.20383721137466929 7.193116757908554e-05 0.0775013756508176 0.016139039155794548 +42.46118999713521 -0.203838870188458 7.161226667979709e-05 0.07725273643237679 0.016097408265008408 +42.50081961019208 -0.20384052077035672 7.12946302938898e-05 0.07700475703947128 0.016055810021906185 +42.54044927503682 -0.20384216316064382 7.097825495072657e-05 0.07675743680134128 0.016014245056683068 +42.58007899149487 -0.20384379739941028 7.066313717351809e-05 0.0765107750377695 0.015972713991222784 +42.61970875939207 -0.20384542352655946 7.034927347991432e-05 0.07626477105944214 0.015931217443540032 +42.659338578554625 -0.20384704158180852 7.0036660382017e-05 0.07601942417013752 0.015889756024667207 +42.69896844880917 -0.20384865160468904 6.972529438653444e-05 0.07577473366246733 0.01584833033995783 +42.738598369982704 -0.20385025363454823 6.9415171995211e-05 0.07553069881924684 0.015806940990261923 +42.778228341902626 -0.20385184771054876 6.910628970444979e-05 0.07528731891821101 0.015765588568271344 +42.81785836439669 -0.20385343387167046 6.879864400615444e-05 0.07504459322522715 0.015724273662943374 +42.8574884372931 -0.20385501215671012 6.849223138751202e-05 0.07480252100128383 0.01568299685673757 +42.897118560420424 -0.20385658260428363 6.818704833120303e-05 0.0745611014947507 0.015641758725809644 +42.93674873360759 -0.20385814525282497 6.788309131568017e-05 0.07432033395284553 0.015600559842380263 +42.976378956683966 -0.20385970014058885 6.758035681527898e-05 0.07408021760524384 0.015559400770888016 +43.01600922947933 -0.20386124730565006 6.72788413002637e-05 0.07384075168096992 0.015518282071033387 +43.055639551823774 -0.20386278678590494 6.697854123739488e-05 0.07360193539661261 0.015477204297571795 +43.09526992354789 -0.20386431861907175 6.667945308962738e-05 0.0733637679612958 0.015436167998507446 +43.134900344482574 -0.20386584284269116 6.6381573316618e-05 0.07312624858349968 0.015395173717502321 +43.174530814459175 -0.2038673594941286 6.60848983745377e-05 0.0728893764538187 0.015354221991643427 +43.21416133330943 -0.20386886861057266 6.578942471670818e-05 0.07265315076174378 0.015313313352976893 +43.253791900865444 -0.2038703702290375 6.549514879337005e-05 0.0724175706839993 0.015272448327934991 +43.29342251695978 -0.20387186438636276 6.520206705199237e-05 0.07218263539783175 0.015231627437869821 +43.33305318142535 -0.20387335111921545 6.491017593743597e-05 0.07194834406575046 0.015190851197816012 +43.372683894095495 -0.20387483046408872 6.461947189207508e-05 0.07171469584665845 0.015150120118355767 +43.41231465480394 -0.20387630245730423 6.43299513560542e-05 0.07148168989450097 0.01510943470447578 +43.45194546338481 -0.20387776713501324 6.404161076727236e-05 0.07124932534765385 0.015068795455908347 +43.49157631967265 -0.2038792245331945 6.375444656157087e-05 0.07101760134854586 0.015028202865848897 +43.53120722350239 -0.20388067468765902 6.346845517312958e-05 0.07078651702363417 0.014987657424465646 +43.57083817470939 -0.2038821176340472 6.318363303426481e-05 0.07055607149831526 0.014947159613905359 +43.610469173129374 -0.20388355340783204 6.289997657583124e-05 0.07032626388872111 0.014906709913377239 +43.650100218598496 -0.2038849820443188 6.261748222731964e-05 0.07009709330309889 0.014866308796635558 +43.68973131095331 -0.20388640357864507 6.233614641684141e-05 0.06986855884832562 0.01482595673081348 +43.72936245003077 -0.20388781804578282 6.205596557147941e-05 0.06964065962056977 0.014785654179080126 +43.76899363566825 -0.2038892254805386 6.177693611736755e-05 0.06941339470926272 0.014745401599294328 +43.80862486770351 -0.20389062591755383 6.149905447971477e-05 0.06918676320136832 0.014705199442906214 +43.84825614597473 -0.20389201939130586 6.122231708326701e-05 0.0689607641724557 0.01466504815934009 +43.88788747032049 -0.20389340593610947 6.094672035194418e-05 0.06873539669422492 0.014624948189770039 +43.927518840579786 -0.20389478558611465 6.0672260709380745e-05 0.06851065984009984 0.014584899970871782 +43.96715025659203 -0.20389615837531214 6.039893457912161e-05 0.06828655266217078 0.01454490393693053 +44.006781718196976 -0.2038975243375298 6.012673838432691e-05 0.06806307421462081 0.014504960514863906 +44.04641322523487 -0.2038988835064346 5.985566854830676e-05 0.06784022355288645 0.014465070126095395 +44.08604477754634 -0.20390023591553483 5.958572149447185e-05 0.06761799971368145 0.0144252331899063 +44.12567637497241 -0.20390158159817884 5.931689364631547e-05 0.06739640173589706 0.014385450116555966 +44.16530801735449 -0.20390292058755613 5.9049181428217125e-05 0.06717542865197935 0.014345721317035034 +44.20493970453447 -0.2039042529166989 5.8782581264565615e-05 0.06695507948942282 0.014306047191918326 +44.244571436354555 -0.20390557861848266 5.851708958078862e-05 0.06673535326270086 0.0142664281410967 +44.28420321265746 -0.20390689772562523 5.825270280271708e-05 0.06651624899557594 0.014226864556708295 +44.32383503328625 -0.2039082102706892 5.798941735741303e-05 0.06629776569437561 0.01418735682801586 +44.3634668980844 -0.20390951628608267 5.772722967286778e-05 0.0660799023622697 0.014147905338965039 +44.40309880689581 -0.20391081580405798 5.746613617815095e-05 0.0658626580031278 0.014108510468494739 +44.44273075956478 -0.20391210885671499 5.7206133303645846e-05 0.06564603160903516 0.014069172591120881 +44.48236275593602 -0.203913395476 5.694721748135374e-05 0.06543002216954634 0.014029892077684458 +44.521994795854695 -0.20391467569370667 5.668938514438091e-05 0.06521462866975425 0.013990669292699591 +44.56162687916631 -0.2039159495414765 5.643263272780638e-05 0.06499985009267302 0.01395150459747415 +44.60125900571681 -0.20391721705080065 5.6176956668253546e-05 0.06478568541064617 0.013912398347571651 +44.64089117535259 -0.2039184782530196 5.5922353404284655e-05 0.06457213359752544 0.013873350895116819 +44.6805233879204 -0.20391973317932446 5.5668819376447215e-05 0.06435919361335424 0.013834362587115066 +44.72015564326739 -0.203920981860756 5.54163510273696e-05 0.06414686442509275 0.013795433765785835 +44.7597879412412 -0.20392222432820753 5.516494480183361e-05 0.0639351449889127 0.013756564769618078 +44.79942028168984 -0.20392346061242406 5.491459714700422e-05 0.06372403425657357 0.013717755932619724 +44.83905266446167 -0.20392469074400374 5.4665304512378826e-05 0.06351353117621886 0.013679007583937676 +44.878685089405586 -0.2039259147533979 5.441706335014502e-05 0.06330363469470007 0.013640320048836386 +44.91831755637081 -0.20392713267091156 5.41698701148239e-05 0.06309434375179951 0.013601693647498601 +44.95795006520695 -0.20392834452670616 5.392372126404717e-05 0.06288565727710577 0.013563128697254886 +44.997582615764124 -0.20392955035079616 5.3678613257982004e-05 0.06267757420922263 0.013524625508912114 +45.03721520789278 -0.2039307501730542 5.343454255974531e-05 0.062470093470778976 0.013486184390620305 +45.076847841443794 -0.20393194402320816 5.3191505635798334e-05 0.06226321398716281 0.013447805646080944 +45.11648051626848 -0.20393313193084292 5.2949498955352327e-05 0.0620569346834338 0.013409489573971388 +45.156113232218544 -0.20393431392540298 5.270851899126696e-05 0.06185125446875028 0.013371236471275064 +45.19574598914611 -0.20393549003618996 5.2468562219285104e-05 0.061646172259659654 0.013333046626563073 +45.235378786903695 -0.2039366602923651 5.2229625119108486e-05 0.06144168696455865 0.013294920329252507 +45.27501162534426 -0.20393782472294922 5.199170417343285e-05 0.061237797485966805 0.013256857859725092 +45.314644504321166 -0.2039389833568244 5.175479586900456e-05 0.06103450272479825 0.013218859498285858 +45.35427742368813 -0.2039401362227319 5.151889669606708e-05 0.06083180158551487 0.013180925518738644 +45.39391038329938 -0.20394128334927672 5.128400314868809e-05 0.060629692957501334 0.013143056191723096 +45.43354338300948 -0.203942424764925 5.1050111724923164e-05 0.06042817573231488 0.01310525178363208 +45.47317642267343 -0.20394356049800558 5.081721892676229e-05 0.06022724879831889 0.013067512557633566 +45.51280950214664 -0.2039446905767117 5.0585321260365875e-05 0.06002691103926731 0.013029838772365951 +45.55244262128492 -0.2039458150290996 5.035441523584712e-05 0.05982716133847168 0.012992230681619017 +45.5920757799445 -0.20394693388309074 5.0124497367961916e-05 0.05962799857538664 0.012954688538715847 +45.63170897798203 -0.2039480471664721 4.989556417527407e-05 0.0594294216234301 0.012917212587774896 +45.67134221525454 -0.20394915490689638 4.9667612181198465e-05 0.05923142935386974 0.012879803072836435 +45.710975491619514 -0.2039502571318821 4.9440637913538413e-05 0.05903402064056875 0.012842460234247115 +45.75060880693478 -0.20395135386881655 4.9214637904593684e-05 0.05883719434180441 0.012805184306536656 +45.79024216105866 -0.20395244514495278 4.898960869151336e-05 0.05864094932909749 0.012767975521808987 +45.8298755538498 -0.20395353098741287 4.8765546815997516e-05 0.05844528446049934 0.012730834108504029 +45.86950898516733 -0.2039546114231885 4.854244882469483e-05 0.05825019859197891 0.012693760290354883 +45.90914245487073 -0.20395568647913945 4.832031126912543e-05 0.0580556905846917 0.012656754288031464 +45.948775962819916 -0.20395675618199716 4.8099130705827477e-05 0.057861759282444615 0.012619816319332351 +45.98840950887519 -0.20395782055836198 4.7878903696225014e-05 0.057668403541428076 0.01258294659572237 +46.02804309289732 -0.2039588796347063 4.765962680733086e-05 0.057475622211998055 0.012546145329494059 +46.06767671474741 -0.20395993343737462 4.74412966107094e-05 0.05728341413491503 0.012509412724721662 +46.10731037428701 -0.2039609819925835 4.722390968384349e-05 0.057091778152735084 0.012472748985232068 +46.14694407137806 -0.20396202532642213 4.700746260901197e-05 0.056900713105571175 0.012436154309031196 +46.18657780588293 -0.2039630634648534 4.679195197445384e-05 0.05671021783390711 0.012399628893461067 +46.226211577664365 -0.20396409643371446 4.657737437332004e-05 0.056520291174265845 0.012363172927730913 +46.26584538658555 -0.20396512425871668 4.636372640494139e-05 0.05633093195716917 0.012326786603845426 +46.30547923251005 -0.20396614696544732 4.615100467374218e-05 0.05614213901740622 0.012290470104733995 +46.34511311530185 -0.20396716457936867 4.593920579003093e-05 0.055953911183398236 0.012254223611937709 +46.384747034825324 -0.2039681771258196 4.572832637011861e-05 0.055766247282559876 0.012218047305275289 +46.42438099094525 -0.20396918463001643 4.551836303579609e-05 0.05557914613952066 0.012181941359037371 +46.46401498352686 -0.20397018711705198 4.530931241487703e-05 0.05539260657934414 0.012145905945567456 +46.5036490124357 -0.20397118461189814 4.5101171141187926e-05 0.055206627418117625 0.012109941232567015 +46.54328307753781 -0.2039721771394044 4.48939358544022e-05 0.055021207481415375 0.01207404738486477 +46.58291717869956 -0.2039731647242999 4.468760320037274e-05 0.05483634558609745 0.01203822456463758 +46.62255131578779 -0.20397414739119282 4.4482169831234944e-05 0.054652040548715974 0.012002472931457954 +46.66218548866969 -0.20397512516457236 4.4277632404923476e-05 0.054468291183982546 0.011966792638630146 +46.701819697212876 -0.20397609806880848 4.407398758612401e-05 0.054285096299916985 0.011931183840508279 +46.74145394128534 -0.20397706612815159 4.387123204531568e-05 0.054102454713312924 0.011895646684238407 +46.78108822075551 -0.20397802936673437 4.366936245984458e-05 0.05392036523341695 0.011860181317725102 +46.82072253549221 -0.20397898780857207 4.3468375513111096e-05 0.05373882666522709 0.011824787882732885 +46.86035688536464 -0.20397994147756293 4.3268267894983195e-05 0.05355783781665945 0.011789466517873241 +46.8999912702424 -0.20398089039748799 4.3069036302219704e-05 0.053377397492656735 0.01175421736162055 +46.93962568999551 -0.20398183459201336 4.2870677437706186e-05 0.05319750449565236 0.01171904054616677 +46.979260144494404 -0.20398277408468835 4.267318801135072e-05 0.05301815762994272 0.01168393620319817 +47.018894633609875 -0.2039837088989479 4.247656473948236e-05 0.05283935570039963 0.011648904459606658 +47.05852915721311 -0.20398463905811282 4.228080434521853e-05 0.0526610975007771 0.011613945439531481 +47.09816371517577 -0.20398556458538977 4.208590355856988e-05 0.05248338183040047 0.011579059265708241 +47.13779830736978 -0.2039864855038719 4.189185911623582e-05 0.05230620748703709 0.01154424605604086 +47.17743293366762 -0.20398740183653974 4.169866776194947e-05 0.05212957326888623 0.011509505927496723 +47.217067593942 -0.20398831360626116 4.150632624617432e-05 0.05195347796937599 0.011474838991172706 +47.256702288066165 -0.2039892208357921 4.1314831326547774e-05 0.05177792038415535 0.011440245358665736 +47.296337015913714 -0.20399012354777757 4.112417976744998e-05 0.05160289930651581 0.011405725135225928 +47.335971777358566 -0.20399102176475145 4.093436834072761e-05 0.05142841352852861 0.011371278427895799 +47.37560657227513 -0.2039919155091379 4.074539382501889e-05 0.05125446183937704 0.011336905337410975 +47.415241400538164 -0.20399280480325058 4.055725300605351e-05 0.051081043030650926 0.01130260596059419 +47.454876262022836 -0.203993689669294 4.0369942677098185e-05 0.0509081558916425 0.011268380395890577 +47.49451115660468 -0.20399457012936417 4.0183459638336626e-05 0.050735799212082024 0.011234228736366127 +47.53414608415967 -0.20399544620544874 3.999780069731529e-05 0.05056397177869513 0.01120015107160973 +47.57378104456411 -0.2039963179194273 3.981296266898413e-05 0.0503926723791537 0.011166147490723956 +47.61341603769472 -0.20399718529307242 3.962894237551691e-05 0.05022189980225659 0.011132218078356721 +47.65305106342864 -0.20399804834805016 3.944573664644963e-05 0.0500516528254211 0.011098362917511819 +47.69268612164335 -0.20399890710591942 3.9263342318941056e-05 0.04988193024445659 0.01106458208805116 +47.732321212216746 -0.20399976158813402 3.908175623740444e-05 0.049712730839486734 0.01103087566770531 +47.77195633502713 -0.20400061181604223 3.89009752538536e-05 0.04954405339242796 0.010997243730650327 +47.81159148995314 -0.20400145781088785 3.8720996227801976e-05 0.049375896689245885 0.010963686350347028 +47.85122667687385 -0.20400229959380933 3.8541816026427395e-05 0.049208259514605814 0.01093020359638515 +47.8908618956687 -0.2040031371858427 3.8363431524306555e-05 0.049041140646664434 0.010896795536281445 +47.93049714621751 -0.2040039706079196 3.8185839603780483e-05 0.048874538870622895 0.01086346223366204 +47.970132428400504 -0.2040047998808687 3.8009037154856165e-05 0.048708452969046405 0.010830203751850507 +48.009767742098276 -0.20400562502541728 3.7833021075280445e-05 0.04854288171872211 0.010797020151179622 +48.049403087191784 -0.20400644606218932 3.765778827036089e-05 0.04837782390820473 0.010763911487753165 +48.08903846356243 -0.20400726301170835 3.748333565330696e-05 0.048213278314412855 0.010730877818280561 +48.12867387109194 -0.20400807589439687 3.730966014518522e-05 0.04804924371539843 0.010697919195164414 +48.16830930966246 -0.20400888473057613 3.713675867467698e-05 0.0478857188960638 0.010665035668121723 +48.20794477915647 -0.20400968954046816 3.6964628178317036e-05 0.047722702632897206 0.010632227284660933 +48.24758027945689 -0.20401049034419447 3.67932656007709e-05 0.047560193711808786 0.010599494092447611 +48.28721581044699 -0.2040112871617786 3.6622667894407026e-05 0.047398190908045514 0.010566836133615884 +48.32685137201038 -0.20401208001314444 3.6452832019469356e-05 0.047236693003175144 0.010534253449166538 +48.36648696403117 -0.20401286891811854 3.628375494423094e-05 0.04707569877437843 0.010501746078100213 +48.406122586393685 -0.2040136538964287 3.6115433644988735e-05 0.0469152070076019 0.010469314057205805 +48.445758238982755 -0.20401443496770644 3.594786510600948e-05 0.04675521647774703 0.010436957421323766 +48.48539392168356 -0.20401521215148585 3.578104631948087e-05 0.04659572596715167 0.010404676201657713 +48.525029634381596 -0.20401598546720479 3.56149742857972e-05 0.04643673425367406 0.010372470429187102 +48.56466537696281 -0.20401675493420535 3.544964601335606e-05 0.04627824012233936 0.010340340131720263 +48.60430114931346 -0.20401752057173383 3.5285058518520404e-05 0.046120242347225233 0.010308285333982021 +48.643936951320235 -0.20401828239894215 3.512120882604859e-05 0.04596273971483433 0.010276306060974775 +48.683572782870165 -0.20401904043488664 3.495809396859875e-05 0.045805731002409394 0.0102444023340101 +48.72320864385064 -0.2040197946985309 3.479571098696897e-05 0.04564921498954231 0.010212574170894233 +48.76284453414947 -0.20402054520874358 3.463405693025134e-05 0.045493190458280396 0.01018082159054552 +48.80248045365481 -0.20402129198430022 3.447312885574054e-05 0.0453376561962382 0.010149144607862374 +48.84211640225515 -0.20402203504388458 3.43129238288396e-05 0.04518261097708496 0.010117543235909006 +48.88175237983942 -0.20402277440608674 3.4153438923305094e-05 0.045028053588591015 0.010086017486881925 +48.92138838629684 -0.2040235100894061 3.3994671220932385e-05 0.04487398280769866 0.010054567368901828 +48.961024421517095 -0.20402424211224932 3.383661781201843e-05 0.044720397423795404 0.0100231928896715 +49.00066048539015 -0.204024970492933 3.367927579503305e-05 0.044567296216824474 0.009991894055408464 +49.04029657780636 -0.20402569524968273 3.352264227656876e-05 0.044414677969099675 0.009960670868217733 +49.079932698656464 -0.20402641640063357 3.336671437188316e-05 0.044262541469371454 0.009929523330303211 +49.11956884783159 -0.2040271339638314 3.321148920423491e-05 0.04411088549786857 0.009898451441042764 +49.15920502522315 -0.2040278479572322 3.305696390544806e-05 0.04395970884395245 0.009867455199008262 +49.19884123072301 -0.20402855839870349 3.290313561556101e-05 0.04380901028959821 0.009836534599528761 +49.23847746422335 -0.20402926530602425 3.275000148291919e-05 0.04365878862199055 0.00980568963583227 +49.278113725616706 -0.20402996869688436 3.259755866441335e-05 0.04350904263293175 0.009774920301206814 +49.31775001479602 -0.20403066858888766 3.244580432522763e-05 0.04335977110447081 0.009744226585489497 +49.357386331654524 -0.20403136499954977 3.2294735638920825e-05 0.04321097282614586 0.0097136084772512 +49.39702267608588 -0.20403205794629886 3.21443497875683e-05 0.04306264659210162 0.009683065964128794 +49.436659047984094 -0.20403274744647848 3.199464396153294e-05 0.0429147911833086 0.009652599030134613 +49.47629544724352 -0.20403343351734451 3.184561535966368e-05 0.042767405396191754 0.009622207659151543 +49.51593187375884 -0.20403411617606773 3.1697261189344185e-05 0.04262048802051319 0.009591891833714415 +49.55556832742514 -0.2040347954397342 3.154957866613218e-05 0.042474037846359336 0.009561651531550006 +49.595204808137815 -0.20403547132534386 3.140256501437448e-05 0.04232805367313295 0.009531486732627223 +49.634841315792706 -0.20403614384981406 3.125621746664146e-05 0.042182534288608076 0.009501397412245436 +49.674477850285896 -0.2040368130299769 3.1110533264153245e-05 0.0420374784859621 0.009471383547254431 +49.714114411513904 -0.20403747888258106 3.0965509656361296e-05 0.04189288506566949 0.009441445108369249 +49.75375099937357 -0.20403814142429244 3.082114390157389e-05 0.04174875281926411 0.00941158206973232 +49.793387613762086 -0.20403880067169378 3.067743326618004e-05 0.04160508054427981 0.00938179439967766 +49.833024254577 -0.20403945664128512 3.053437502539186e-05 0.0414618670461085 0.009352082067376264 +49.87266092171619 -0.2040401093494858 3.0391966462633038e-05 0.041319111111128376 0.009322445038392491 +49.91229761507795 -0.20404075881263162 3.025020487018332e-05 0.041176811552500046 0.009292883280512467 +49.95193433456082 -0.20404140504697857 3.010908754854444e-05 0.041034967162322515 0.009263396755423278 +49.99157108006381 -0.2040420480687016 2.9968611806892794e-05 0.040893576744461334 0.009233985426514229 +50.03120785148617 -0.2040426878938952 2.982877496272095e-05 0.0407526390995565 0.009204649253536385 +50.070844648727544 -0.20404332453857252 2.9689574342384134e-05 0.040612153038416525 0.009175388196870473 +50.11048147168795 -0.20404395801866884 2.9551007280429733e-05 0.04047211736126743 0.009146202212842456 +50.1501183202677 -0.20404458835003936 2.941307112010447e-05 0.04033253087512201 0.009117091258862075 +50.189755194367464 -0.20404521554846036 2.9275763213267308e-05 0.04019339238477346 0.009088055290031408 +50.229392093888286 -0.2040458396296295 2.9139080920005475e-05 0.04005470070336597 0.009059094258441291 +50.26902901873153 -0.20404646060916598 2.900302160927387e-05 0.03991645464261265 0.00903020811779306 +50.30866596879886 -0.20404707850261214 2.8867582658360433e-05 0.03977865300498001 0.00900139681724982 +50.34830294399238 -0.2040476933254325 2.8732761453074258e-05 0.0396412946038102 0.008972660306303093 +50.38793994421448 -0.2040483050930135 2.859855538794307e-05 0.039504378258884275 0.008943998533176628 +50.42757696936784 -0.20404891382066626 2.8464961865898254e-05 0.03936790278128856 0.008915411444762879 +50.46721401935556 -0.2040495195236254 2.8331978298297393e-05 0.039231866984133494 0.008886898984580546 +50.506851094081064 -0.2040501222170489 2.8199602105343213e-05 0.03909626968543334 0.00885846109879184 +50.54648819344804 -0.2040507219160198 2.8067830715430297e-05 0.0389611097037601 0.00883009772806253 +50.586125317360626 -0.2040513186355454 2.7936661565626006e-05 0.03882638586083509 0.00880180881339198 +50.62576246572321 -0.20405191239055864 2.780609210157062e-05 0.03869209697549339 0.008773594295901263 +50.66539963844056 -0.20405250319591794 2.767611977740309e-05 0.038558241865988885 0.008745454113501288 +50.70503683541774 -0.204053091066407 2.7546742055837997e-05 0.03842481936415606 0.00871738820480717 +50.74467405656018 -0.2040536760167367 2.7417956407854862e-05 0.038291828286754905 0.008689396503455583 +50.78431130177361 -0.20405425806154365 2.7289760313362907e-05 0.038159267461444484 0.008661478947581801 +50.82394857096415 -0.20405483721539133 2.7162151260317706e-05 0.038027135724963086 0.008633635467736897 +50.863585864038185 -0.20405541349277198 2.703512674560802e-05 0.03789543188963697 0.008605865998337132 +50.90322318090247 -0.20405598690810337 2.6908684274346177e-05 0.037764154800048584 0.0085781704702934 +50.94286052146406 -0.20405655747573292 2.6782821360245746e-05 0.03763330328066188 0.00855054881347511 +50.98249788563041 -0.20405712520993521 2.6657535525572024e-05 0.03750287617022949 0.008523000957445286 +51.02213527330917 -0.20405769012491493 2.653282430093203e-05 0.03737287229469023 0.008495526829582118 +51.061772684408446 -0.20405825223480425 2.6408685225530256e-05 0.037243290498661694 0.008468126356478558 +51.10141011883659 -0.20405881155366545 2.6285115846992453e-05 0.03711412961730936 0.008440799463737648 +51.14104757650232 -0.204059368095491 2.616211372151519e-05 0.036985388483735414 0.00841354607630453 +51.18068505731467 -0.20405992187420222 2.6039676413542378e-05 0.03685706595125799 0.008386366116628853 +51.22032256118298 -0.2040604729036518 2.5917801496230268e-05 0.03672916085222549 0.008359259507255731 +51.25996008801694 -0.20406102119762323 2.5796486551044224e-05 0.03660167203273124 0.008332226170501797 +51.299597637726535 -0.20406156676983034 2.567572916784225e-05 0.036474598340221855 0.008305266024595819 +51.3392352102221 -0.2040621096339188 2.555552694517344e-05 0.03634793862007969 0.008278378990530659 +51.37887280541422 -0.20406264980346636 2.5435877489663606e-05 0.03622169171949994 0.008251564985342939 +51.41851042321393 -0.20406318729198233 2.5316778416608023e-05 0.03609585648657949 0.008224823926103459 +51.45814806353244 -0.20406372211290805 2.5198227349617744e-05 0.03597043178269383 0.008198155728926444 +51.49778572628137 -0.20406425427961872 2.5080221920792724e-05 0.0358454164498908 0.008171560310187165 +51.537423411372615 -0.2040647838054216 2.4962759770518342e-05 0.035720809352351696 0.008145037581617309 +51.57706111871842 -0.20406531070355813 2.48458385475759e-05 0.035596609340137884 0.008118587458193258 +51.61669884823128 -0.2040658349872022 2.4729455909222643e-05 0.035472815280732206 0.008092209851327485 +51.6563365998241 -0.20406635666946402 2.4613609520937086e-05 0.035349426016108104 0.008065904672028798 +51.69597437341001 -0.2040668757633853 2.4498297056676286e-05 0.035226440428103835 0.008039671830914289 +51.735612168902506 -0.2040673922819447 2.4383516198654564e-05 0.03510385736787447 0.008013511236397429 +51.775249986215385 -0.20406790623805468 2.426926463755785e-05 0.034981675703926435 0.007987422798185808 +51.8148878252627 -0.20406841764456338 2.4155540072305716e-05 0.034859894305903444 0.00796140642405786 +51.85452568595891 -0.20406892651425465 2.4042340209966767e-05 0.03473851203742626 0.007935462018766446 +51.89416356821873 -0.20406943285984766 2.392966276631617e-05 0.03461752777601391 0.007909589490512927 +51.93380147195715 -0.20406993669399928 2.381750546502015e-05 0.03449694038420855 0.007883788742885018 +51.97343939708954 -0.20407043802930103 2.370586603819593e-05 0.03437674874283344 0.007858059678780812 +52.01307734353153 -0.20407093687828262 2.35947422263121e-05 0.03425695172726736 0.007832402204126728 +52.05271531119904 -0.2040714332534109 2.3484131777896406e-05 0.03413754821221821 0.007806816218746237 +52.09235330000837 -0.2040719271670897 2.337403244988823e-05 0.03401853707681112 0.007781301625022974 +52.131991309876035 -0.2040724186316607 2.3264442007332333e-05 0.03389991720295336 0.0077558583236963415 +52.171629340718916 -0.2040729076594039 2.3155358223723638e-05 0.033781687476151526 0.007730486215576263 +52.21126739245415 -0.20407339426253776 2.30467788804098e-05 0.03366384677674141 0.007705185198548829 +52.250905464999185 -0.20407387845321912 2.2938701767214272e-05 0.033546393995629205 0.0076799551718495515 +52.29054355827185 -0.2040743602435443 2.283112468222621e-05 0.03342932801773452 0.007654796034112611 +52.33018167219011 -0.20407483964554832 2.272404543118265e-05 0.03331264773632262 0.007629707679321582 +52.369819806672396 -0.20407531667120662 2.2617461828495667e-05 0.03319635203832746 0.007604690005279544 +52.40945796163736 -0.20407579133243336 2.2511371696602152e-05 0.033080439824812506 0.007579742907652485 +52.44909613700391 -0.20407626364108414 2.2405772865913056e-05 0.03296490998654849 0.007554866280016636 +52.48873433269135 -0.20407673360895437 2.2300663175045766e-05 0.032849761424148534 0.007530060017133764 +52.52837254861919 -0.20407720124778053 2.219604047084896e-05 0.03273499303318714 0.007505324012641214 +52.568010784707255 -0.2040776665692395 2.209190260795779e-05 0.032620603721397586 0.007480658157885438 +52.60764904087573 -0.2040781295849504 2.1988247449258983e-05 0.032506592387422234 0.007456062344951345 +52.64728731704501 -0.20407859030647368 2.1885072865768034e-05 0.032392957942040376 0.007431536465344265 +52.68692561313581 -0.20407904874531127 2.1782376736402524e-05 0.032279699286410876 0.007407080409686771 +52.726563929069165 -0.20407950491290827 2.1680156948176812e-05 0.032166815333729594 0.007382694067353052 +52.766202264766335 -0.20407995882065158 2.157841139606045e-05 0.032054304991968464 0.007358377327533906 +52.805840620148935 -0.20408041047987077 2.14771379830543e-05 0.03194216717759157 0.0073341300792495595 +52.84547899513883 -0.20408085990183922 2.137633462014711e-05 0.031830400805396515 0.007309952209780558 +52.885117389658205 -0.20408130709777275 2.1275999226330102e-05 0.03171900479481402 0.007285843608173105 +52.92475580362949 -0.2040817520788317 2.1176129728297646e-05 0.03160797805844429 0.007261804157995981 +52.96439423697543 -0.20408219485611936 2.1076724061057096e-05 0.03149731952275537 0.007237833747924155 +53.00403268961905 -0.20408263544068417 2.0977780167288014e-05 0.03138702810893857 0.007213932262454613 +53.04367116148366 -0.20408307384351845 2.0879295997620746e-05 0.031277102744058045 0.0071900995867630385 +53.08330965249284 -0.20408351007555936 2.0781269510510832e-05 0.03116754235195476 0.007166335604446329 +53.12294816257047 -0.2040839441476895 2.068369867242546e-05 0.031058345861790976 0.007142640200627228 +53.162586691640705 -0.2040843760707353 2.0586581457552685e-05 0.030949512213428593 0.007119013257383951 +53.20222523962799 -0.2040848058554708 2.048991584794155e-05 0.03084104032911507 0.007095454657533757 +53.241863806457026 -0.2040852335126143 2.039369983352757e-05 0.030732929154393778 0.007071964284202848 +53.281502392052815 -0.2040856590528317 2.029793141194914e-05 0.030625177612147725 0.007048542017576491 +53.32114099634064 -0.2040860824867333 2.0202608588670972e-05 0.03051778465352617 0.007025187740208584 +53.36077961924603 -0.20408650382487672 2.0107729376968652e-05 0.030410749218567193 0.007001901332239727 +53.400418260694835 -0.20408692307776785 2.001329179770213e-05 0.030304070246721326 0.006978682672259804 +53.440056920613145 -0.20408734025585784 1.991929387967234e-05 0.030197746687077597 0.006955531641733907 +53.47969559892734 -0.20408775536954593 1.9825733659238468e-05 0.03009177749021047 0.006932448118613689 +53.51933429556408 -0.2040881684291799 1.973260918058471e-05 0.029986161596433913 0.006909431982332153 +53.55897301045028 -0.2040885794450541 1.9639918495469897e-05 0.029880897963855402 0.006886483110610852 +53.59861174351315 -0.20408898842741163 1.9547659663268242e-05 0.02977598554694466 0.006863601380569604 +53.63825049468018 -0.20408939538644424 1.9455830751059638e-05 0.0296714232982497 0.0068407866695424195 +53.67788926387907 -0.20408980033229215 1.936442983377205e-05 0.029567210179159243 0.006818038856376576 +53.71752805103787 -0.20409020327504465 1.927345499347842e-05 0.029463345146871683 0.006795357814986175 +53.7571668560848 -0.20409060422473993 1.9182904320178647e-05 0.02935982716472225 0.006772743421698215 +53.79680567894847 -0.20409100319136564 1.9092775911353623e-05 0.029256655200798527 0.006750195553224192 +53.83644451955771 -0.20409140018485983 1.9003067871912234e-05 0.02915382821775808 0.006727714082575854 +53.87608337784157 -0.20409179521510992 1.8913778314554275e-05 0.02905134518319075 0.006705298886567838 +53.915722253729356 -0.20409218829195364 1.8824905359190214e-05 0.028949205067668442 0.006682949837371236 +53.955361147150754 -0.20409257942517875 1.8736447133565418e-05 0.02884740684918731 0.006660666811646255 +53.995000058035615 -0.204092968624525 1.864840177255576e-05 0.028745949494429626 0.00663844968007286 +54.034638986314086 -0.20409335589968122 1.8560767418663375e-05 0.02864483199048226 0.006616298317295558 +54.07427793191657 -0.2040937412602888 1.8473542221746785e-05 0.02854405330998179 0.006594212593889775 +54.11391689477373 -0.20409412471594046 1.838672433935831e-05 0.02844361243675755 0.006572192386510792 +54.15355587481649 -0.20409450627617978 1.830031193602455e-05 0.028343508355831992 0.006550237563502031 +54.19319487197606 -0.20409488595050354 1.821430318391689e-05 0.02824374004480988 0.00652834799757442 +54.232833886183855 -0.20409526374835896 1.8128696262490066e-05 0.028144306502362743 0.006506523559496072 +54.2724729173716 -0.20409563967914726 1.8043489358623126e-05 0.028045206714055877 0.006484764121118157 +54.31211196547124 -0.20409601375222156 1.795868066639354e-05 0.027946439668111972 0.00646306955315469 +54.351751030415016 -0.2040963859768877 1.787426838730154e-05 0.0278480043656061 0.006441439725921111 +54.39139011213539 -0.20409675636240476 1.779025073000082e-05 0.027749899798079635 0.006419874509412779 +54.43102921056512 -0.20409712491798548 1.7706625910390347e-05 0.027652124965503278 0.0063983737708551225 +54.47066832563714 -0.20409749165279586 1.7623392151858492e-05 0.027554678871426142 0.006376937384094842 +54.51030745728476 -0.20409785657595547 1.7540547684695577e-05 0.02745756051666344 0.0063555652141455065 +54.549946605441406 -0.2040982196965381 1.7458090746673798e-05 0.027360768909094044 0.006334257133603174 +54.589585770040834 -0.2040985810235725 1.7376019582490446e-05 0.027264303050053215 0.006313013007348145 +54.629224951017065 -0.2040989405660406 1.729433244432653e-05 0.027168161954070198 0.006291832707157093 +54.668864148304316 -0.20409929833287985 1.72130275910114e-05 0.027072344629236567 0.00627071609707961 +54.70850336183712 -0.20409965433298263 1.713210328906941e-05 0.02697685009632549 0.006249663048719191 +54.74814259155016 -0.2041000085751962 1.7051557811768503e-05 0.02688167736521554 0.006228673428246343 +54.78778183737851 -0.20410036106832327 1.6971389439412265e-05 0.02678682545914196 0.006207747100756333 +54.82742109925731 -0.20410071182112266 1.68915964597211e-05 0.02669229339073327 0.006186883936361526 +54.86706037712213 -0.20410106084230784 1.6812177167040672e-05 0.026598080192105147 0.00616608379970605 +54.906699670908665 -0.20410140814054967 1.673312986304132e-05 0.026504184882290827 0.006145346557633589 +54.94633898055288 -0.20410175372447437 1.665445285629126e-05 0.026410606493258215 0.006124672077933876 +54.98597830599101 -0.2041020976026651 1.6576144462243937e-05 0.026317344048397556 0.006104060224994889 +55.02561764715953 -0.2041024397836615 1.649820300337906e-05 0.02622439658363691 0.006083510863799623 +55.0652570039951 -0.20410278027596018 1.6420626809323197e-05 0.026131763130756002 0.006063023862987201 +55.1048963764347 -0.20410311908801512 1.6343414216316987e-05 0.026039442725344725 0.006042599086655415 +55.144535764415494 -0.20410345622823736 1.6266563567558563e-05 0.025947434404713154 0.006022236399402674 +55.184175167874955 -0.20410379170499535 1.6190073213315387e-05 0.025855737214945374 0.006001935667468864 +55.22381458675069 -0.20410412552661572 1.611394151043599e-05 0.025764350196434454 0.005981696753986996 +55.26345402098063 -0.20410445770138305 1.603816682283927e-05 0.025673272388935676 0.005961519525258499 +55.303093470502915 -0.20410478823753966 1.596274752107696e-05 0.0255825028470644 0.0059414038441690025 +55.342732935255945 -0.2041051171432869 1.5887681982734366e-05 0.025492040615496297 0.005921349577105079 +55.38237241517832 -0.20410544442678458 1.581296859194561e-05 0.025401884744453252 0.005901356587231223 +55.422011910208845 -0.20410577009615102 1.573860573963666e-05 0.025312034288430808 0.005881424737983196 +55.461651420286685 -0.2041060941594632 1.5664591823661717e-05 0.025222488311766888 0.005861553895640699 +55.50129094535108 -0.20410641662475895 1.5590925248141834e-05 0.025133245861905063 0.005841743919623422 +55.54093048534162 -0.20410673750003375 1.551760442444685e-05 0.02504430600131188 0.005821994677383564 +55.580570040198076 -0.2041070567932437 1.5444627770207494e-05 0.02495566779573336 0.0058023060306397825 +55.62020960986049 -0.20410737451230443 1.537199370996254e-05 0.024867330307742293 0.005782677843581368 +55.65984919426906 -0.2041076906650916 1.5299700674633118e-05 0.02477929260678507 0.005763109978654656 +55.69948879336431 -0.2041080052594412 1.5227747101861973e-05 0.02469155375903842 0.005743602298149439 +55.7391284070869 -0.2041083183031499 1.5156131436136714e-05 0.024604112838771074 0.005724154668385128 +55.77876803537778 -0.20410862980397462 1.5084852127944173e-05 0.024516968920838867 0.005704766947310171 +55.81840767817812 -0.2041089397696331 1.5013907634878232e-05 0.024430121079053083 0.005685439001991037 +55.858047335429276 -0.2041092482078046 1.4943296420631553e-05 0.02434356839172809 0.005666170691887357 +55.89768700707289 -0.20410955512612936 1.4873016955751256e-05 0.024257309934834072 0.005646961882476462 +55.93732669305075 -0.20410986053220867 1.4803067716984798e-05 0.024171344798759348 0.005627812433020009 +55.976966393305005 -0.20411016443360586 1.4733447187732683e-05 0.024085672066716565 0.00560872220851668 +56.016606107777875 -0.20411046683784603 1.4664153857673267e-05 0.024000290825513595 0.005589691069400973 +56.05624583641185 -0.20411076775241666 1.4595186223016084e-05 0.023915200160600964 0.005570718878533475 +56.095885579149716 -0.20411106718476635 1.452654278640541e-05 0.023830399167112142 0.005551805498509209 +56.13552533593438 -0.2041113651423073 1.445822205669168e-05 0.02374588693895627 0.005532950791403093 +56.17516510670905 -0.2041116616324136 1.4390222549328346e-05 0.023661662567102212 0.00551415461869564 +56.214804891417074 -0.20411195666242202 1.432254278588187e-05 0.02357772516099127 0.005495416842627461 +56.25444469000212 -0.20411225023963261 1.4255181294254192e-05 0.02349407381269927 0.005476737324521387 +56.29408450240796 -0.20411254237130858 1.4188136608668239e-05 0.023410707627290528 0.0054581159250754845 +56.3337243285787 -0.20411283306467673 1.4121407269837344e-05 0.023327625704055933 0.005439552509172579 +56.37336416845851 -0.20411312232692613 1.4054991824395845e-05 0.02324482715823692 0.005421046936305529 +56.413004021991945 -0.2041134101652111 1.3988888825337746e-05 0.023162311097472205 0.005402599067925778 +56.452643889123706 -0.20411369658664916 1.392309683198847e-05 0.02308007662915713 0.005384208767602156 +56.492283769798654 -0.20411398159832136 1.3857614409650582e-05 0.022998122871502477 0.0053658758955776225 +56.53192366396193 -0.20411426520727396 1.3792440129813194e-05 0.02291644893592297 0.005347600312179068 +56.57156357155891 -0.20411454742051663 1.372757257038539e-05 0.022835053952162346 0.00532938188167515 +56.6112034925351 -0.20411482824502483 1.3663010315097656e-05 0.022753937028540713 0.005311220464455123 +56.65084342683626 -0.20411510768773802 1.3598751953801149e-05 0.02267309728804491 0.005293115920648389 +56.690483374408394 -0.20411538575556032 1.3534796082626192e-05 0.022592533866580066 0.005275068112397869 +56.73012333519762 -0.20411566245536186 1.347114130363945e-05 0.022512245881525606 0.005257076902919899 +56.769763309150406 -0.20411593779397794 1.3407786225001923e-05 0.022432232460459417 0.005239142152199106 +56.80940329621332 -0.20411621177820818 1.3344729460889531e-05 0.022352492743788113 0.005221263723740307 +56.84904329633315 -0.20411648441481942 1.3281969631198803e-05 0.022273025861098205 0.0052034414752737375 +56.888683309456916 -0.2041167557105429 1.3219505362325926e-05 0.02219383095082014 0.005185675271029128 +56.92832333553188 -0.20411702567207732 1.3157335286205644e-05 0.02211490714581559 0.0051679649715417825 +56.96796337450543 -0.2041172943060865 1.3095458040884343e-05 0.022036253591499133 0.005150310439429233 +57.00760342632524 -0.2041175616192009 1.3033872270294511e-05 0.021957869427814244 0.005132711535020801 +57.04724349093908 -0.20411782761801753 1.2972576624173787e-05 0.021879753800070827 0.005115168119548998 +57.086883568295036 -0.20411809230909986 1.2911569758366877e-05 0.021801905859754656 0.005097680056369331 +57.126523658341355 -0.20411835569897918 1.2850850334332087e-05 0.021724324746369577 0.0050802472061521435 +57.166163761026496 -0.20411861779415197 1.2790417019419957e-05 0.02164700962252272 0.005062869429805441 +57.20580387629904 -0.20411887860108355 1.2730268486910298e-05 0.02156995963683138 0.005045546590311757 +57.24544400410791 -0.20411913812620588 1.267040341569328e-05 0.021493173944089384 0.0050282785487237 +57.28508414440213 -0.20411939637591878 1.261082049057009e-05 0.021416651705891066 0.0050110651670798095 +57.32472429713091 -0.20411965335658946 1.2551518401990565e-05 0.02134039207417353 0.0049939063065674826 +57.364364462243756 -0.20411990907455257 1.249249584626368e-05 0.021264394224149424 0.004976801829871686 +57.4040046396903 -0.20412016353611165 1.2433751525165527e-05 0.02118865731021022 0.004959751597383609 +57.44364482942035 -0.20412041674753775 1.2375284146439641e-05 0.021113180512451563 0.004942755472495785 +57.48328503138397 -0.20412066871507073 1.2317092423353668e-05 0.021037962982320465 0.004925813317394599 +57.522925245531425 -0.2041209194449187 1.2259175074871625e-05 0.020963003900933818 0.00490892499393646 +57.56256547181307 -0.20412116894325827 1.220153082540326e-05 0.020888302438457896 0.004892090362787327 +57.602205710179575 -0.20412141721623478 1.2144158405317766e-05 0.02081385777723559 0.0048753092891925 +57.64184596058177 -0.20412166426996325 1.2087056550227323e-05 0.020739669088514743 0.004858581632948116 +57.68148622297065 -0.20412191011052663 1.203022400139781e-05 0.020665735557213787 0.004841907256348948 +57.72112649729742 -0.20412215474397832 1.1973659505765444e-05 0.020592056361308095 0.0048252860228858606 +57.76076678351349 -0.20412239817634079 1.1917361815719952e-05 0.020518630683493033 0.004808717795277248 +57.80040708157041 -0.2041226404136054 1.1861329688959173e-05 0.020445457718170617 0.004792202434442957 +57.84004739141998 -0.20412288146173443 1.1805561889061458e-05 0.020372536649423293 0.004775739805499617 +57.87968771301421 -0.204123121326659 1.1750057184673811e-05 0.020299866666941144 0.004759329769190679 +57.91932804630518 -0.20412336001428077 1.1694814350093395e-05 0.02022744696631329 0.004742972188588757 +57.958968391245264 -0.2041235975304717 1.1639832165092111e-05 0.02015527674093009 0.004726666927948046 +57.998608747787024 -0.20412383388107377 1.1585109414635621e-05 0.02008335519134586 0.004710413849411472 +58.03824911588315 -0.20412406907189992 1.1530644889141328e-05 0.020011681512255044 0.004694212814703722 +58.07788949548653 -0.2041243031087332 1.1476437384599239e-05 0.019940254910430666 0.004678063690380604 +58.11752988655029 -0.2041245359973277 1.1422485701937015e-05 0.019869074584985314 0.004661966336845433 +58.157170289027704 -0.20412476774340807 1.1368788647856996e-05 0.019798139750865546 0.004645920619406662 +58.19681070287222 -0.20412499835267148 1.1315345033961366e-05 0.019727449603303426 0.004629926399860564 +58.23645112803748 -0.2041252278307841 1.1262153677374459e-05 0.019657003363833987 0.004613983543024595 +58.276091564477305 -0.20412545618338554 1.1209213400372425e-05 0.019586800239290793 0.004598091913014065 +58.31573201214574 -0.20412568341608536 1.11565230305066e-05 0.019516839448450462 0.004582251372394655 +58.355372470996926 -0.20412590953446627 1.110408140061315e-05 0.019447120200313153 0.004566461787214509 +58.39501294098528 -0.20412613454408135 1.1051887348571376e-05 0.01937764172318764 0.004550723019316461 +58.43465342206535 -0.20412635845045668 1.0999939717588713e-05 0.019308403231929994 0.00453503493413182 +58.47429391419185 -0.20412658125909 1.0948237355983419e-05 0.019239403952387775 0.0045193973966542395 +58.5139344173197 -0.20412680297545124 1.0896779117131514e-05 0.019170643111401098 0.004503810270539768 +58.553574931403965 -0.20412702360498303 1.0845563859674901e-05 0.019102119931999954 0.004488273420868191 +58.59321545639996 -0.20412724315309994 1.0794590447192867e-05 0.01903383365202885 0.004472786710446427 +58.63285599226309 -0.20412746162519022 1.0743857748471556e-05 0.018965783491918183 0.004457350006502343 +58.67249653894898 -0.20412767902661355 1.0693364637362147e-05 0.018897968697115235 0.0044419631737477394 +58.71213709641345 -0.20412789536270393 1.0643109992644666e-05 0.01883038849484012 0.004426626076548561 +58.75177766461245 -0.20412811063876746 1.0593092698255801e-05 0.018763042124886217 0.004411338580955169 +58.79141824350215 -0.2041283248600838 1.0543311643025122e-05 0.018695928835008535 0.004396100551808856 +58.83105883303889 -0.20412853803190611 1.0493765720835064e-05 0.018629047853282277 0.004380911855514937 +58.870699433179084 -0.20412875015946083 1.044445383044408e-05 0.018562398435743362 0.004365772356052335 +58.910340043879444 -0.20412896124794735 1.0395374875715593e-05 0.018495979831524786 0.004350681922405538 +58.949980665096845 -0.20412917130254069 1.0346527765283452e-05 0.01842979127822786 0.004335640418343723 +58.98962129678826 -0.20412938032838798 1.0297911412697054e-05 0.01836383203270841 0.004320647709724168 +59.029261938910864 -0.20412958833061065 1.0249524736496431e-05 0.018298101348236232 0.004305703664583751 +59.068902591422 -0.20412979531430497 1.0201366660097208e-05 0.018232598480070146 0.004290808149568189 +59.10854325427923 -0.20413000128454103 1.0153436111494878e-05 0.018167322683979494 0.004275961029333914 +59.1481839274402 -0.2041302062463636 1.0105732023776733e-05 0.018102273216993273 0.004261162170992645 +59.18782461086282 -0.20413041020479183 1.005825333485334e-05 0.018037449341188724 0.004246411442975063 +59.227465304505074 -0.20413061316481895 1.0010998987316158e-05 0.017972850323329893 0.004231708712482134 +59.26710600832513 -0.20413081513141385 9.963967928446801e-06 0.017908475429082263 0.00421705384404587 +59.30674672228139 -0.2041310161095203 9.917159110507921e-06 0.01784432391840404 0.004202446708905158 +59.34638744633239 -0.2041312161040565 9.870571490432116e-06 0.01778039506950984 0.004187887173759791 +59.38602818043678 -0.2041314151199165 9.824204029684479e-06 0.01771668814900678 0.004173375105213073 +59.42566892455344 -0.2041316131619689 9.778055694506141e-06 0.017653202434457775 0.004158910371291456 +59.46530967864135 -0.20413181023505866 9.732125456026355e-06 0.017589937197408746 0.004144492842137792 +59.504950442659755 -0.20413200634400575 9.686412289698558e-06 0.017526891717780935 0.0041301223830570045 +59.54459121656796 -0.20413220149360556 9.640915175928446e-06 0.017464065275665255 0.0041157988658698805 +59.584232000325436 -0.2041323956886302 9.595633099430559e-06 0.017401457146204027 0.004101522156049643 +59.62387279389192 -0.2041325889338259 9.550565049789502e-06 0.017339066631781887 0.0040872921248891235 +59.66351359722721 -0.20413278123391757 9.505710021139684e-06 0.017276892997185992 0.004073108642015988 +59.70315441029129 -0.20413297259360405 9.461067011931433e-06 0.01721493554482622 0.004058971573739866 +59.742795233044305 -0.20413316301756157 9.416635025421268e-06 0.017153193557016222 0.004044880791393272 +59.78243606544659 -0.20413335251044265 9.372413069339444e-06 0.017091666327704973 0.0040308361651576275 +59.82207690745857 -0.20413354107687565 9.328400155836148e-06 0.01703035315279648 0.004016837562865853 +59.8617177590409 -0.20413372872146665 9.284595301677827e-06 0.016969253328879146 0.004002884856399981 +59.90135862015437 -0.2041339154487977 9.24099752805837e-06 0.016908366149328755 0.003988977916416788 +59.94099949075987 -0.20413410126342804 9.197605860469882e-06 0.01684769091943411 0.003975116610413802 +59.980640370818534 -0.20413428616989374 9.15441932916508e-06 0.016787226942271874 0.003961300812651594 +60.02028126029161 -0.20413447017270878 9.11143696846571e-06 0.016726973511147755 0.003947530390793844 +60.05992215914049 -0.2041346532763627 9.068657817371325e-06 0.016666929948406534 0.0039338052184159375 +60.099563067326734 -0.2041348354853241 9.026080919089364e-06 0.016607095554617115 0.003920125164674229 +60.139203984812085 -0.20413501680403823 8.983705321219099e-06 0.01654746963709908 0.003906490101588952 +60.17884491155836 -0.20413519723692808 8.941530075882362e-06 0.016488051512099013 0.00389289990211773 +60.21848584752761 -0.20413537678839414 8.899554239231233e-06 0.016428840495804852 0.0038793544360610777 +60.258126792682006 -0.20413555546281523 8.857776871968873e-06 0.016369835899481145 0.0038658535763459595 +60.29776774698386 -0.2041357332645475 8.816197038949354e-06 0.016311037041949885 0.0038523971955617083 +60.33740871039563 -0.2041359101979253 8.774813809442323e-06 0.01625244325069087 0.0038389851655430355 +60.37704968288 -0.20413608626726162 8.733626256767775e-06 0.016194053836549118 0.0038256173583033695 +60.416690664399695 -0.20413626147684702 8.692633458632287e-06 0.016135868130758957 0.0038122936470019945 +60.456331654917605 -0.20413643583095062 8.651834497074462e-06 0.01607788545857951 0.0037990139068354058 +60.49597265439688 -0.2041366093338202 8.611228458061735e-06 0.016020105148910727 0.0037857780080783536 +60.53561366280071 -0.20413678198968221 8.570814431977641e-06 0.01596252652889093 0.003772585825814473 +60.57525468009245 -0.20413695380274113 8.530591513307917e-06 0.015905148937490034 0.00375943723496181 +60.61489570623562 -0.2041371247771818 8.490558800541365e-06 0.01584797169185039 0.0037463321057471396 +60.65453674119387 -0.2041372949171656 8.450715396503983e-06 0.015790994152071098 0.003733270314724355 +60.694177784931036 -0.20413746422683507 8.411060408049358e-06 0.015734215638804176 0.003720251735255474 +60.73381883741109 -0.20413763271031085 8.371592946179419e-06 0.015677635497737884 0.0037072762434388912 +60.77345989859805 -0.20413780037169302 8.332312125976628e-06 0.015621253068716671 0.003694343712958478 +60.81310096845622 -0.20413796721506064 8.293217066508856e-06 0.015565067701342956 0.0036814540186941875 +60.852742046949935 -0.20413813324447308 8.254306891029456e-06 0.015509078734823685 0.003668607037356783 +60.892383134043804 -0.20413829846396866 8.215580726584994e-06 0.015453285517603386 0.0036558026406932486 +60.932024229702435 -0.20413846287756543 8.177037704459744e-06 0.015397687397307881 0.0036430407071906747 +60.97166533389064 -0.20413862648926062 8.138676959998868e-06 0.015342283739376293 0.003630321114057472 +61.011306446573414 -0.20413878930303275 8.100497632329314e-06 0.015287073876850346 0.003617643735785738 +61.05094756771583 -0.2041389513228394 8.062498864448489e-06 0.015232057174105139 0.0036050084461608303 +61.090588697283124 -0.20413911255261716 8.02467980372337e-06 0.015177232998403399 0.0035924151260978746 +61.130229835240655 -0.20413927299628531 7.987039601010147e-06 0.015122600690562893 0.0035798636490083496 +61.169870981553984 -0.20413943265774112 7.949577411352326e-06 0.015068159625402549 0.0035673538941429096 +61.20951213618872 -0.2041395915408631 7.912292393620802e-06 0.015013909163068767 0.003554885737248412 +61.24915329911066 -0.20413974964951076 7.87518371049296e-06 0.01495984866228979 0.003542459057080732 +61.28879447028578 -0.20413990698752338 7.83825052858785e-06 0.014905977493246736 0.0035300737296952815 +61.32843564968008 -0.2041400635587208 7.801492018381709e-06 0.014852295027898046 0.003517729634527927 +61.368076837259835 -0.20414021936690432 7.76490735412215e-06 0.014798800632472181 0.0035054266487238735 +61.40771803299132 -0.20414037441585553 7.728495713938452e-06 0.014745493682718427 0.003493164651383197 +61.44735923684108 -0.2041405287093373 7.69225627978257e-06 0.014692373557282257 0.0034809435221665394 +61.487000448775674 -0.20414068225109364 7.656188237197948e-06 0.01463943961773712 0.0034687631362916526 +61.52664166876188 -0.20414083504484892 7.620290775697447e-06 0.01458669126002081 0.0034566233763670055 +61.56628289676654 -0.20414098709431003 7.584563088571941e-06 0.014534127849745053 0.003444524120874337 +61.605924132756705 -0.20414113840316436 7.5490043725707505e-06 0.014481748775434525 0.0034324652485608243 +61.64556537669954 -0.20414128897508074 7.513613828565258e-06 0.014429553416615724 0.003420446640301305 +61.68520662856226 -0.20414143881370975 7.478390660737447e-06 0.014377541165407971 0.0034084681756599614 +61.72484788831232 -0.204141587922684 7.443334077181775e-06 0.014325711400398561 0.0033965297343700636 +61.764489155917275 -0.20414173630561647 7.408443289648991e-06 0.014274063523662473 0.0033846311962731543 +61.80413043134477 -0.20414188396610344 7.373717513453484e-06 0.014222596913916424 0.003372772444254138 +61.84377171456261 -0.20414203090772234 7.339155967595052e-06 0.014171310970520027 0.0033609533576002136 +61.88341300553877 -0.2041421771340329 7.304757874856192e-06 0.014120205084035678 0.0033491738198113004 +61.92305430424127 -0.20414232264857687 7.270522461364825e-06 0.014069278652949385 0.0033374337100127217 +61.962695610638306 -0.20414246745487763 7.236448956896555e-06 0.014018531079321257 0.003325732911116012 +62.002336924698284 -0.20414261155644184 7.2025365949174515e-06 0.013967961754500206 0.0033140713032120054 +62.04197824638952 -0.20414275495675768 7.168784612419943e-06 0.013917570091708499 0.0033024487704916296 +62.08161957568071 -0.20414289765929608 7.1351922499511435e-06 0.013867355487689281 0.003290865195633671 +62.12126091254049 -0.2041430396675106 7.101758751504194e-06 0.013817317349281903 0.003279320459775866 +62.16090225693773 -0.20414318098483733 7.0684833647596034e-06 0.013767455085067418 0.0032678144482968623 +62.20054360884136 -0.20414332161469553 7.035365340628365e-06 0.013717768098295287 0.003256347042305968 +62.24018496822051 -0.2041434615604862 7.0024039336489795e-06 0.013668255807453187 0.003244918123511181 +62.27982633504432 -0.20414360082559366 6.969598401990475e-06 0.01361891762934256 0.0032335275786222546 +62.319467709282186 -0.20414373941338604 6.9369480071352955e-06 0.01356975296862129 0.0032221752930609213 +62.35910909090353 -0.20414387732721373 6.904452013823189e-06 0.013520761245128868 0.0032108611460591745 +62.39875047987795 -0.20414401457041045 6.872109690566693e-06 0.013471941877025564 0.0031995850261852692 +62.438391876175174 -0.20414415114629306 6.839920308988787e-06 0.013423294284808852 0.003188346815053512 +62.478033279764986 -0.2041442870581619 6.8078831443886275e-06 0.013374817890087572 0.0031771464011121193 +62.51767469061733 -0.20414442230930033 6.775997475115156e-06 0.013326512121448418 0.0031659836658341923 +62.55731610870233 -0.20414455690297642 6.7442625831602555e-06 0.013278376390503985 0.003154858496890195 +62.59695753399014 -0.20414469084243972 6.712677753739279e-06 0.013230410142582782 0.0031437707782731934 +62.636598966451096 -0.20414482413092552 6.6812422754423865e-06 0.013182612789937605 0.0031327203975327496 +62.67624040605564 -0.2041449567716517 6.649955440190421e-06 0.0131349837744264 0.0031217072411281084 +62.715881852774295 -0.20414508876782012 6.618816543165327e-06 0.013087522525953674 0.0031107311938007288 +62.75552330657774 -0.2041452201226168 6.587824882783192e-06 0.013040228473879737 0.0030997921422110525 +62.79516476743678 -0.20414535083921173 6.556979760987627e-06 0.012993101060588883 0.003088889975915899 +62.83480623532235 -0.20414548092075857 6.526280482727009e-06 0.012946139716571749 0.0030780245796714276 +62.87444771020547 -0.2041456103703957 6.4957263562257205e-06 0.012899343887561282 0.0030671958404747 +62.914089192057226 -0.20414573919124565 6.4653166931232256e-06 0.01285271300676774 0.0030564036482204665 +62.95373068084895 -0.2041458673864145 6.435050808066585e-06 0.012806246524367152 0.0030456478892817926 +62.99337217655201 -0.2041459949589933 6.404928019022269e-06 0.012759943887635745 0.003034928452073641 +63.03301367913789 -0.20414612191205825 6.3749476471671224e-06 0.012713804533916984 0.0030242452252221053 +63.07265518857823 -0.20414624824866875 6.345109016764028e-06 0.012667827916233382 0.003013598095957372 +63.112296704844695 -0.20414637397186983 6.31541145535255e-06 0.012622013483233469 0.0030029869559145147 +63.15193822790921 -0.20414649908469076 6.285854293438861e-06 0.012576360683944786 0.0029924116915650903 +63.1915797577437 -0.2041466235901457 6.256436864981134e-06 0.012530868976552591 0.002981872195376621 +63.2312212943202 -0.20414674749123393 6.227158506737289e-06 0.012485537813378132 0.002971368354949842 +63.27086283761095 -0.20414687079093988 6.1980185587463855e-06 0.01244036664147691 0.0029609000604802695 +63.31050438758824 -0.2041469934922313 6.169016363951591e-06 0.01239535493716532 0.0029504672009867676 +63.35014594422444 -0.2041471155980632 6.1401512687837155e-06 0.012350502148353351 0.002940069670183499 +63.38978750749211 -0.2041472371113745 6.111422622245745e-06 0.012305807739109447 0.0029297073556301904 +63.4294290773639 -0.2041473580350901 6.082829776791472e-06 0.012261271169033415 0.002919380150122537 +63.469070653812494 -0.20414747837211944 6.054372087640671e-06 0.012216891914320098 0.002909087944731797 +63.50871223681082 -0.2041475981253583 6.02604891307156e-06 0.012172669421289735 0.002898830628238494 +63.54835382633181 -0.20414771729768666 5.997859614644467e-06 0.012128603180788698 0.0028886080967011653 +63.587995422348534 -0.2041478358919712 5.969803556717403e-06 0.012084692646837446 0.002878420241402016 +63.627637024834215 -0.204147953911064 5.9418801064201566e-06 0.012040937297375043 0.0028682669513413936 +63.66727863376211 -0.20414807135780233 5.914088634204267e-06 0.011997336603727754 0.0028581481201522016 +63.706920249105636 -0.20414818823500933 5.886428513429977e-06 0.011953890044276874 0.0028480636432886234 +63.746561870838356 -0.20414830454549437 5.858899120091518e-06 0.011910597089791012 0.0028380134095862576 +63.78620349893382 -0.20414842029205257 5.8314998336485804e-06 0.011867457220870875 0.0028279973165075793 +63.82584513336576 -0.20414853547746473 5.804230035924157e-06 0.011824469920196817 0.002818015254480168 +63.86548677410808 -0.20414865010449798 5.777089112069736e-06 0.011781634667706953 0.0028080671195058558 +63.90512842113468 -0.2041487641759061 5.750076449782633e-06 0.011738950939215074 0.002798152802924812 +63.94477007441958 -0.2041488776944278 5.72319144002945e-06 0.01169641823001659 0.002788272202590517 +63.98441173393699 -0.20414899066278894 5.696433476285294e-06 0.011654036020596873 0.0027784252106345087 +64.02405339966114 -0.20414910308370146 5.6698019550056225e-06 0.011611803801139159 0.0027686117215145385 +64.06369507156639 -0.20414921495986396 5.643296275563961e-06 0.01156972105844137 0.002758831631151894 +64.10333674962723 -0.20414932629396143 5.616915840199239e-06 0.011527787279904347 0.002749084835968826 +64.14297843381824 -0.20414943708866473 5.590660053695526e-06 0.01148600196845142 0.002739371229253332 +64.18262012411408 -0.2041495473466323 5.564528323909097e-06 0.011444364610817817 0.002729690708318173 +64.2222618204895 -0.20414965707050883 5.53852006141791e-06 0.011402874701454223 0.0027200431689915817 +64.26190352291947 -0.2041497662629256 5.512634679538875e-06 0.011361531746480774 0.0027104285082761846 +64.30154523137887 -0.2041498749265006 5.486871594237712e-06 0.011320335242346028 0.0027008466203292613 +64.34118694584286 -0.20414998306383947 5.461230224624309e-06 0.01127928468017293 0.0026912974068071804 +64.38082866628667 -0.20415009067753412 5.435709992061983e-06 0.011238379572317497 0.002681780758594247 +64.42047039268543 -0.20415019777016355 5.41031032096993e-06 0.011197619415817933 0.00267229657809864 +64.46011212501473 -0.20415030434429368 5.38503063833218e-06 0.011157003725815027 0.0026628447596995564 +64.49975386324992 -0.20415041040247828 5.359870373873131e-06 0.011116531995042046 0.002653425202653451 +64.53939560736667 -0.20415051594725722 5.334828960189423e-06 0.011076203751084418 0.002644037807179161 +64.57903735734062 -0.2041506209811593 5.3099058321598205e-06 0.011036018478692422 0.0026346824672408304 +64.61867911314759 -0.20415072550669863 5.285100427677461e-06 0.010995975709754137 0.0026253590844500965 +64.65832087476346 -0.20415082952637809 5.260412187203016e-06 0.010956074953134881 0.0026160675581877644 +64.69796264216424 -0.20415093304268797 5.235840553703266e-06 0.010916315715904795 0.0026068077854996545 +64.73760441532602 -0.2041510360581049 5.211384972991535e-06 0.010876697526336214 0.002597579667846691 +64.77724619422493 -0.20415113857509515 5.187044893274335e-06 0.010837219890001784 0.0025883831015228306 +64.81688797883734 -0.20415124059611098 5.162819765574516e-06 0.010797882328822552 0.002579217991931382 +64.85652976913956 -0.20415134212359232 5.138709043319934e-06 0.010758684376007145 0.002570084234481259 +64.89617156510806 -0.20415144315996833 5.114712182665141e-06 0.010719625536368476 0.002560981730907274 +64.93581336671946 -0.2041515437076545 5.090828642322545e-06 0.010680705340305378 0.0025519103829304587 +64.97545517395044 -0.20415164376905492 5.067057883462239e-06 0.010641923324279793 0.002542870091453499 +65.01509698677768 -0.20415174334656203 5.0433993699495515e-06 0.01060327899711846 0.0025338607567497824 +65.05473880517809 -0.20415184244255544 5.019852567992436e-06 0.010564771898489039 0.002524882279664149 +65.09438062912866 -0.20415194105940335 4.996416946556537e-06 0.01052640155440363 0.00251593456447164 +65.13402245860637 -0.20415203919946182 4.973091976908123e-06 0.010488167499749795 0.002507017511158002 +65.1736642935884 -0.20415213686507547 4.9498771328893315e-06 0.010450069262647138 0.0024981310224184683 +65.213306134052 -0.20415223405857705 4.92677189087489e-06 0.010412106384635765 0.0024892749997964545 +65.25294797997444 -0.2041523307822879 4.903775729727447e-06 0.01037427838456867 0.0024804493475334335 +65.29258983133319 -0.20415242703851658 4.880888130729518e-06 0.010336584827044986 0.002471653968023586 +65.33223168810574 -0.20415252282956217 4.858108577621868e-06 0.010299025224411682 0.0024628887642366803 +65.37187355026975 -0.20415261815770983 4.835436556586888e-06 0.010261599136781952 0.002454153639781657 +65.4115154178028 -0.20415271302523574 4.812871556274979e-06 0.010224306092953698 0.0024454484994118216 +65.4511572906828 -0.20415280743440256 4.790413067684131e-06 0.010187145640575043 0.0024367732456075934 +65.49079916888756 -0.204152901387463 4.768060584371544e-06 0.010150117327422844 0.002428127783950162 +65.53044105239508 -0.20415299488665797 4.7458136020426595e-06 0.010113220695162886 0.002419512016699124 +65.57008294118339 -0.20415308793421727 4.723671619143212e-06 0.010076455291744113 0.0024109258521987946 +65.60972483523067 -0.2041531805323593 4.701634136130664e-06 0.01003982067145732 0.002402369191913089 +65.64936673451516 -0.20415327268329228 4.679700656121441e-06 0.010003316377656743 0.0023938419429526533 +65.68900863901517 -0.20415336438921194 4.657870684403172e-06 0.009966941971921306 0.0023853440103688453 +65.72865054870911 -0.20415345565230436 4.63614372873054e-06 0.009930696997684117 0.002376875300784665 +65.7682924635755 -0.20415354647474412 4.614519299116612e-06 0.009894581010076885 0.0023684357210397846 +65.807934383593 -0.20415363685869437 4.592996907906909e-06 0.009858593579658832 0.002360025174302681 +65.84757630874016 -0.20415372680630917 4.571576069746226e-06 0.009822734242225132 0.00235164356884697 +65.88721823899587 -0.20415381631972976 4.550256301619427e-06 0.009787002575233104 0.002343290810837776 +65.92686017433887 -0.2041539054010879 4.529037122875531e-06 0.009751398132495594 0.0023349668092936516 +65.96650211474822 -0.20415399405250448 4.50791805493784e-06 0.009715920475912064 0.0023266714689269834 +66.00614406020289 -0.20415408227608967 4.48689862161448e-06 0.009680569172263736 0.0023184046973910607 +66.045786010682 -0.20415417007394346 4.4659783492214875e-06 0.009645343775134095 0.0023101664067084787 +66.08542796616474 -0.20415425744815466 4.44515676573977e-06 0.009610243863799819 0.002301956497444031 +66.12506992663042 -0.2041543444008023 4.424433401952762e-06 0.009575269001057263 0.0022937748840338576 +66.1647118920584 -0.20415443093395447 4.403807790677265e-06 0.00954041875838369 0.0022856214736470507 +66.20435386242812 -0.20415451704966991 4.383279466841624e-06 0.009505692696641295 0.0022774961736469683 +66.24399583771915 -0.2041546027499952 4.362847967757403e-06 0.009471090404699694 0.002269398895416955 +66.28363781791114 -0.20415468803696915 4.342512832696823e-06 0.009436611440812774 0.00226132954486128 +66.3232798029837 -0.20415477291261863 4.3222736033814005e-06 0.009402255385945952 0.002253288032213728 +66.36292179291675 -0.20415485737896075 4.302129823591265e-06 0.009368021816109991 0.0022452742707478397 +66.40256378769007 -0.2041549414380033 4.282081039340028e-06 0.009333910303524698 0.0022372881688720136 +66.44220578728363 -0.20415502509174277 4.262126798621234e-06 0.009299920435320899 0.002229329633596785 +66.48184779167745 -0.2041551083421668 4.242266651751364e-06 0.009266051785449095 0.0022213985790433943 +66.52148980085175 -0.2041551911912528 4.222500151191342e-06 0.009232303934417789 0.0022134949150916 +66.56113181478665 -0.20415527364096767 4.2028268514134934e-06 0.009198676470219914 0.002205618552581965 +66.60077383346245 -0.20415535569326929 4.183246308987603e-06 0.009165168975608195 0.002197769401044248 +66.6404158568595 -0.2041554373501059 4.163758082843957e-06 0.009131781032798632 0.002189947375461099 +66.68005788495825 -0.2041555186134153 4.1443617337025466e-06 0.00909851223190996 0.002182152384712008 +66.71969991773929 -0.204155599485126 4.125056824556215e-06 0.009065362161309045 0.0021743843418391183 +66.75934195518315 -0.20415567996715636 4.105842920490454e-06 0.009032330416953433 0.0021666431604252094 +66.79898399727054 -0.20415576006141636 4.0867195884492795e-06 0.008999416576528677 0.0021589287496850853 +66.8386260439822 -0.20415583976980603 4.067686397747154e-06 0.00896662023035611 0.0021512410260870786 +66.87826809529905 -0.2041559190942148 4.048742919418761e-06 0.008933940988752158 0.00214357989927177 +66.91791015120191 -0.20415599803652373 4.029888726815765e-06 0.008901378437519487 0.0021359452837143777 +66.95755221167187 -0.20415607659860477 4.011123395292153e-06 0.008868932171101549 0.002128337094990556 +66.99719427669 -0.2041561547823195 3.992446501948448e-06 0.008836601796720934 0.0021207552435670942 +67.03683634623738 -0.20415623258952106 3.973857626239131e-06 0.008804386899114915 0.0021131996452525936 +67.07647842029535 -0.2041563100220534 3.95535634940631e-06 0.00877228708502631 0.0021056702130120343 +67.1161204988451 -0.2041563870817504 3.936942254713692e-06 0.008740301958745528 0.0020981668606730344 +67.15576258186813 -0.20415646377043795 3.918614927580417e-06 0.008708431114569025 0.002090689505566108 +67.19540466934585 -0.20415654008993192 3.900373955214528e-06 0.00867667416551444 0.002083238061490462 +67.23504676125984 -0.20415661604203925 3.882218926786442e-06 0.008645030716279475 0.0020758124427848333 +67.27468885759166 -0.2041566916285585 3.864149433558577e-06 0.008613500368636031 0.00206841256576389 +67.31433095832304 -0.2041567668512789 3.846165068615511e-06 0.0085820827330169 0.002061038345251333 +67.35397306343575 -0.20415684171198042 3.828265427081939e-06 0.008550777418275162 0.0020536896977914536 +67.39361517291162 -0.20415691621243456 3.8104501058667027e-06 0.008519584037859946 0.0020463665370384896 +67.43325728673258 -0.20415699035440407 3.792718704045111e-06 0.00848850220203476 0.002039068785366504 +67.47289940488064 -0.20415706413964294 3.775070822345926e-06 0.008457531516914606 0.002031796354705009 +67.5125415273378 -0.2041571375698958 3.7575060634579036e-06 0.008426671607026929 0.002024549159580984 +67.55218365408628 -0.20415721064689904 3.740024032048866e-06 0.008395922089918871 0.002017327121581356 +67.59182578510826 -0.20415728337238082 3.7226243347305953e-06 0.00836528256920005 0.002010130157870341 +67.63146792038599 -0.2041573557480603 3.70530657979537e-06 0.008334752669820845 0.002002958183408203 +67.6711100599019 -0.2041574277756475 3.688070377472421e-06 0.008304332019893843 0.001995811117018062 +67.71075220363835 -0.20415749945684514 3.6709153398893077e-06 0.008274020224581896 0.001988688875885679 +67.75039435157794 -0.20415757079334682 3.6538410811126756e-06 0.008243816905966326 0.0019815913815761682 +67.79003650370316 -0.20415764178683737 3.6368472168528066e-06 0.008213721703689067 0.0019745185491977573 +67.82967865999669 -0.20415771243899325 3.619933364749434e-06 0.008183734237135663 0.0019674702978548023 +67.86932082044125 -0.20415778275148364 3.6030991443417593e-06 0.008153854125191174 0.0019604465488446345 +67.90896298501964 -0.20415785272596845 3.5863441768647567e-06 0.008124080991918832 0.00195344721905575 +67.94860515371472 -0.20415792236409935 3.5696680852024075e-06 0.008094414474567995 0.0019464722256755038 +67.98824732650937 -0.20415799166752024 3.553070494573379e-06 0.008064854198674072 0.0019395214938242695 +68.02788950338667 -0.2041580606378668 3.536551031400034e-06 0.00803539979252828 0.0019325949394115398 +68.06753168432968 -0.20415812927676602 3.520109324283808e-06 0.008006050891598315 0.0019256924851267796 +68.10717386932151 -0.20415819758583756 3.5037450033625596e-06 0.007976807122242998 0.0019188140500087407 +68.14681605834542 -0.2041582655666919 3.4874577006133484e-06 0.00794766813341704 0.0019119595545549976 +68.18645825138462 -0.20415833322093305 3.4712470498829444e-06 0.007918633544631095 0.0019051289198601803 +68.22610044842251 -0.20415840055015597 3.4551126865189638e-06 0.007889703000057662 0.0018983220652878093 +68.2657426494425 -0.2041584675559478 3.4390542477981756e-06 0.007860876135455925 0.0018915389137260435 +68.30538485442808 -0.20415853423988775 3.423071372749249e-06 0.007832152598131753 0.001884779387616873 +68.34502706336278 -0.20415860060354818 3.4071637020982397e-06 0.007803532014849501 0.0018780434089030768 +68.3846692762303 -0.20415866664849225 3.3913308780567555e-06 0.00777501403206837 0.001871330896052635 +68.42431149301424 -0.20415873237627624 3.375572544882569e-06 0.007746598291294471 0.0018646417740957365 +68.4639537136984 -0.20415879778844834 3.3598883483370246e-06 0.0077182844386416705 0.001857975965644629 +68.5035959382666 -0.2041588628865485 3.344277935944261e-06 0.007690072122076605 0.0018513333916515896 +68.54323816670276 -0.20415892767211044 3.3287409568234705e-06 0.0076619609864014 0.0018447139758413984 +68.58288039899078 -0.20415899214665914 3.3132770618492634e-06 0.007633950673945712 0.001838117640933462 +68.6225226351147 -0.20415905631171216 3.2978859036278174e-06 0.007606040836922341 0.001831544311232531 +68.66216487505865 -0.20415912016877988 3.282567136274107e-06 0.007578231125861157 0.0018249939102092713 +68.70180711880678 -0.20415918371936512 3.267320415669257e-06 0.007550521184809794 0.0018184663619653016 +68.74144936634326 -0.20415924696496282 3.252145399170721e-06 0.007522910668814988 0.0018119615874203276 +68.78109161765242 -0.20415930990706058 3.2370417459868275e-06 0.007495399245050459 0.0018054795132915475 +68.82073387271856 -0.20415937254713964 3.2220091168762914e-06 0.00746798654065008 0.0017990200649906235 +68.86037613152618 -0.20415943488667176 3.2070471741583733e-06 0.0074406722367233976 0.001792583164830766 +68.90001839405973 -0.20415949692712373 3.19215558191908e-06 0.007413455976746071 0.001786168741003071 +68.93966066030369 -0.20415955866995358 3.1773340054887842e-06 0.007386337420810122 0.0017797767138262755 +68.97930293024272 -0.2041596201166128 3.1625821122946865e-06 0.0073593162274730875 0.0017734070130819583 +69.01894520386156 -0.2041596812685449 3.1478995710529707e-06 0.007332392057693757 0.0017670595626297332 +69.05858748114474 -0.20415974212718743 3.1332860520564606e-06 0.00730556456697012 0.0017607342882490218 +69.0982297620773 -0.20415980269396938 3.1187412272543996e-06 0.007278833431277737 0.001754431115075079 +69.13787204664395 -0.204159862970314 3.1042647701193812e-06 0.007252198299862795 0.0017481499706473505 +69.17751433482962 -0.2041599229576364 3.0898563557927814e-06 0.007225658844016759 0.0017418907820390625 +69.21715662661938 -0.20415998265734517 3.075515660739666e-06 0.007199214733031971 0.0017356534735665542 +69.25679892199823 -0.20416004207084248 3.0612423632223936e-06 0.007172865617464159 0.0017294379736577635 +69.29644122095121 -0.20416010119952221 3.047036142877967e-06 0.00714661118176451 0.0017232442083487244 +69.3360835234636 -0.20416016004477214 3.032896681018888e-06 0.007120451092589617 0.0017170721083070949 +69.37572582952058 -0.20416021860797354 3.0188236602558705e-06 0.00709438501655944 0.0017109215958042501 +69.41536813910741 -0.20416027689049995 3.004816764975799e-06 0.007068412621215012 0.0017047926026342141 +69.4550104522095 -0.20416033489371885 2.990875680958471e-06 0.007042533585551502 0.0016986850570468468 +69.49465276881226 -0.20416039261899024 2.977000095325626e-06 0.007016747578380913 0.0016925988839290509 +69.53429508890113 -0.20416045006766803 2.963189696985769e-06 0.006991054273298725 0.001686534014606819 +69.57393741246167 -0.2041605072410989 2.9494441761463586e-06 0.00696545335735817 0.0016804903763752513 +69.61357973947948 -0.20416056414062342 2.935763224501607e-06 0.006939944489785615 0.0016744678974681883 +69.65322206994013 -0.20416062076757494 2.9221465353649567e-06 0.0069145273609581516 0.001668466509139978 +69.69286440382945 -0.2041606771232808 2.9085938032795154e-06 0.006889201640772051 0.0016624861366643766 +69.73250674113316 -0.20416073320906056 2.8951047246330604e-06 0.006863967021295118 0.001656526717267582 +69.77214908183706 -0.20416078902622906 2.8816789966786304e-06 0.006838823173469073 0.0016505881712233156 +69.8117914259271 -0.20416084457609343 2.868316318726562e-06 0.006813769772234125 0.0016446704350497427 +69.85143377338919 -0.2041608998599541 2.855016391105652e-06 0.006788806522583721 0.0016387734357844646 +69.89107612420932 -0.20416095487910613 2.841778915753537e-06 0.00676393308808908 0.0016328971048053048 +69.93071847837359 -0.20416100963483708 2.82860359607803e-06 0.006739149164912751 0.0016270413729160941 +69.97036083586809 -0.2041610641284289 2.8154901367162606e-06 0.0067144544379601385 0.0016212061690730713 +70.01000319667901 -0.2041611183611571 2.802438243968961e-06 0.006689848585071808 0.0016153914286349757 +70.04964556079261 -0.20416117233428968 2.7894476252524025e-06 0.00666533131260584 0.0016095970775216262 +70.08928792819515 -0.20416122604909046 2.7765179897089657e-06 0.006640902297617129 0.0016038230514626795 +70.12893029887297 -0.20416127950681529 2.763649047561419e-06 0.0066165612329312125 0.0015980692794537836 +70.16857267281253 -0.20416133270871464 2.7508405105632686e-06 0.006592307807602932 0.001592335693309982 +70.20821505000019 -0.20416138565603278 2.7380920919197443e-06 0.006568141717432069 0.0015866222259456036 +70.24785743042254 -0.20416143835000714 2.7254035060995408e-06 0.0065440626530511884 0.0015809288103015267 +70.28749981406618 -0.20416149079186988 2.7127744688387856e-06 0.006520070311023858 0.001575255375358825 +70.32714220091768 -0.2041615429828462 2.7002046976302586e-06 0.00649616439096095 0.001569601859836091 +70.36678459096372 -0.2041615949241562 2.687693910857963e-06 0.006472344583601758 0.0015639681921498618 +70.40642698419109 -0.20416164661701355 2.6752418283939486e-06 0.00644861057901202 0.0015583543043078956 +70.44606938058652 -0.2041616980626252 2.6628481716362175e-06 0.006424962094213148 0.0015527601328568733 +70.4857117801369 -0.20416174926219322 2.6505126631225595e-06 0.006401398819381836 0.0015471856103676507 +70.52535418282915 -0.20416180021691333 2.638235026815402e-06 0.006377920452535581 0.001541630669841695 +70.56499658865023 -0.20416185092797426 2.6260149878121324e-06 0.006354526709538858 0.0015360952446439727 +70.60463899758705 -0.20416190139656165 2.6138522729028386e-06 0.006331217268556032 0.00153057927152446 +70.64428140962677 -0.20416195162385228 2.601746609756366e-06 0.006307991848251148 0.0015250826815316147 +70.68392382475649 -0.20416200161101838 2.5896977276878855e-06 0.006284850156606697 0.001519605412806239 +70.72356624296336 -0.20416205135922702 2.577705357020445e-06 0.0062617918882087 0.0015141473955034874 +70.76320866423465 -0.20416210086963785 2.5657692296842986e-06 0.006238816762097237 0.0015087085696301116 +70.80285108855757 -0.20416215014340655 2.5538890784227433e-06 0.0062159244819162615 0.00150328886305114 +70.84249351591951 -0.20416219918168202 2.5420646377734043e-06 0.006193114745885734 0.0014978882182849725 +70.88213594630783 -0.2041622479856077 2.53029564344037e-06 0.006170387276624563 0.001492506570341159 +70.92177837970995 -0.20416229655632134 2.518581831986312e-06 0.006147741781463163 0.0014871438499954384 +70.96142081611336 -0.20416234489495524 2.5069229416588224e-06 0.006125177977600246 0.0014817999965481517 +71.0010632555056 -0.2041623930026366 2.4953187118615908e-06 0.006102695551442434 0.0014764749457333607 +71.04070569787427 -0.2041624408804855 2.483768883017089e-06 0.0060802942567575 0.0014711686317681822 +71.08034814320699 -0.2041624885296185 2.4722731971862e-06 0.006057973767237224 0.0014658809935587092 +71.11999059149149 -0.2041625359511446 2.460831397405956e-06 0.006035733830488339 0.0014606119684720089 +71.15963304271547 -0.204162583146169 2.4494432279580197e-06 0.0060135741501910955 0.0014553614924400727 +71.19927549686676 -0.2041626301157906 2.4381084344088657e-06 0.005991494439012083 0.0014501295020768496 +71.23891795393317 -0.20416267686110287 2.426826763453628e-06 0.005969494428862834 0.0014449159336383582 +71.27856041390262 -0.20416272338319422 2.4155979631230304e-06 0.005947573822376096 0.001439720726331045 +71.31820287676305 -0.20416276968314792 2.4044217825787215e-06 0.005925732349353593 0.0014345438171226045 +71.35784534250242 -0.20416281576204043 2.393297972182133e-06 0.00590396974122423 0.0014293851452202204 +71.39748781110885 -0.20416286162094535 2.3822262835004787e-06 0.0058822856962383 0.0014242446467710582 +71.43713028257034 -0.20416290726092887 2.3712064692986472e-06 0.005860679951569115 0.0014191222607212875 +71.47677275687508 -0.2041629526830524 2.3602382835277794e-06 0.005839152230070855 0.0014140179251455303 +71.51641523401128 -0.20416299788837278 2.3493214812790897e-06 0.005817702255596981 0.001408931579628311 +71.55605771396715 -0.20416304287794107 2.3384558189165123e-06 0.0057963297578285415 0.0014038631630985112 +71.595700196731 -0.2041630876528033 2.3276410538410102e-06 0.005775034460706686 0.0013988126146195089 +71.63534268229117 -0.20416313221400048 2.316876944659497e-06 0.00575381608831661 0.0013937798712785427 +71.67498517063602 -0.2041631765625677 2.306163251209989e-06 0.005732674380107497 0.0013887648749702029 +71.71462766175401 -0.20416322069953652 2.295499734308029e-06 0.0057116090533020384 0.0013837675646648446 +71.7542701556336 -0.20416326462593196 2.28488615608346e-06 0.005690619843920309 0.0013787878790851424 +71.79391265226334 -0.20416330834277455 2.274322279720733e-06 0.005669706480684283 0.0013738257588744246 +71.83355515163177 -0.20416335185107962 2.2638078696535184e-06 0.0056488687037965155 0.0013688811465685186 +71.87319765372763 -0.20416339515185764 2.2533426912299123e-06 0.005628106241250294 0.0013639539786724799 +71.91284015853941 -0.20416343824611452 2.2429265110868525e-06 0.005607418819335782 0.001359044197530142 +71.95248266605597 -0.20416348113484997 2.2325590969724386e-06 0.005586806190440256 0.0013541517441594837 +71.99212517626601 -0.20416352381906042 2.22224021761429e-06 0.005566268072974616 0.00134927656014125 +72.03176768915837 -0.20416356629973573 2.2119696430266674e-06 0.005545804214157175 0.001344418585020826 +72.0714102047219 -0.20416360857786242 2.2017471441576057e-06 0.005525414346353864 0.0013395777595289796 +72.11105272294552 -0.20416365065442013 2.191572493188236e-06 0.005505098224819672 0.0013347540263359053 +72.15069524381812 -0.2041636925303867 2.1814454633169066e-06 0.005484855558113476 0.0013299473290925604 +72.19033776732874 -0.2041637342067324 2.1713658287696156e-06 0.005464686111494258 0.0013251576052798935 +72.22998029346647 -0.2041637756844236 2.161333365050047e-06 0.005444589618350793 0.0013203848016556613 +72.26962282222036 -0.2041638169644223 2.151347848552977e-06 0.005424565825650656 0.0013156288577502563 +72.30926535357948 -0.20416385804768566 2.141409056735763e-06 0.005404614466721177 0.0013108897151502845 +72.34890788753307 -0.20416389893516582 2.131516768309831e-06 0.005384735286675685 0.0013061673182619895 +72.38855042407033 -0.20416393962781001 2.121670762813351e-06 0.005364928044212979 0.0013014616090713405 +72.42819296318058 -0.2041639801265617 2.1118708210681467e-06 0.005345192468874265 0.0012967725327828737 +72.46783550485307 -0.2041640204323589 2.1021167245962196e-06 0.005325528314531965 0.0012921000259859619 +72.50747804907715 -0.20416406054613545 2.092408256421264e-06 0.005305935332020943 0.0012874440385662377 +72.54712059584226 -0.20416410046881983 2.082745200271775e-06 0.005286413266150394 0.0012828045118262572 +72.58676314513784 -0.20416414020133725 2.0731273411071137e-06 0.005266961861275503 0.0012781813905097272 +72.62640569695334 -0.20416417974460757 2.063554464744162e-06 0.00524758086844787 0.0012735746175442156 +72.66604825127834 -0.2041642190995457 2.054026358163963e-06 0.005228270046867624 0.0012689841390831913 +72.70569080810239 -0.2041642582670629 2.0445428091814656e-06 0.00520902914312175 0.0012644098931515358 +72.7453333674151 -0.2041642972480656 2.0351036068871793e-06 0.005189857905400241 0.0012598518305854819 +72.78497592920613 -0.20416433604345605 2.0257085412556526e-06 0.00517075608927724 0.001255309893431873 +72.82461849346521 -0.20416437465413118 2.0163574031127837e-06 0.005151723454383896 0.0012507840254167588 +72.86426106018203 -0.204164413080984 2.007049984632533e-06 0.005132759756756345 0.001246274174549469 +72.90390362934644 -0.20416445132490377 1.9977860785526812e-06 0.0051138647432185345 0.0012417802811430974 +72.94354620094828 -0.20416448938677498 1.988565479044072e-06 0.005095038174437583 0.0012373022962475476 +72.98318877497732 -0.20416452726747703 1.9793879809157033e-06 0.005076279810952573 0.0012328401615634814 +73.0228313514236 -0.20416456496788604 1.970253380226334e-06 0.0050575894054463505 0.0012283938246581557 +73.06247393027702 -0.2041646024888728 1.961161473776214e-06 0.005038966728254158 0.0012239632302513878 +73.10211651152756 -0.2041646398313055 1.952112059421046e-06 0.00502041151850103 0.0012195483244143213 +73.14175909516527 -0.20416467699604554 1.943104935976043e-06 0.005001923566576882 0.001215149050750077 +73.18140168118025 -0.2041647139839525 1.934139903349794e-06 0.004983502608527737 0.0012107653595304975 +73.22104426956261 -0.20416475079588062 1.925216762270216e-06 0.004965148413068523 0.0012063971969892336 +73.26068686030251 -0.2041647874326796 1.916335314507613e-06 0.004946860756940386 0.001202044510147337 +73.30032945339019 -0.20416482389519583 1.907495362518076e-06 0.004928639388315915 0.001197707239927804 +73.33997204881584 -0.20416486018427113 1.8986967101542145e-06 0.004910484075738822 0.0011933853412029814 +73.37961464656979 -0.20416489630074275 1.8899391618066335e-06 0.004892394592599548 0.0011890787561876493 +73.41925724664232 -0.20416493224544474 1.881222523085634e-06 0.004874370696562366 0.0011847874357725247 +73.45889984902387 -0.20416496801920636 1.8725466002799384e-06 0.004856412161779508 0.001180511324261989 +73.49854245370474 -0.2041650036228532 1.8639112007491941e-06 0.004838518744422569 0.001176250370907346 +73.53818506067545 -0.20416503905720662 1.8553161327667013e-06 0.004820690226501822 0.0011720045222495701 +73.57782766992646 -0.20416507432308342 1.846761205527847e-06 0.004802926374661686 0.00116777372716284 +73.61747028144832 -0.20416510942129706 1.838246229229775e-06 0.004785226966078173 0.00116355793834513 +73.65711289523156 -0.20416514435265745 1.8297710145936766e-06 0.004767591753708067 0.00115935709421874 +73.69675551126679 -0.20416517911796916 1.8213353737490585e-06 0.004750020528072452 0.001155171151291633 +73.73639812954467 -0.20416521371803406 1.8129391194552395e-06 0.004732513051469198 0.0011510000563775473 +73.7760407500559 -0.2041652481536497 1.8045820654212567e-06 0.004715069095314021 0.001146843759418595 +73.81568337279109 -0.2041652824256092 1.7962640261263138e-06 0.004697688437474811 0.0011427022052796342 +73.85532599774118 -0.20416531653470205 1.7879848173225342e-06 0.004680370868813641 0.001138575350051286 +73.89496862489679 -0.2041653504817147 1.7797442549639554e-06 0.004663116137591255 0.0011344631351975604 +73.93461125424884 -0.2041653842674286 1.7715421565852779e-06 0.004645924035908564 0.001130365515037706 +73.97425388578817 -0.204165417892622 1.7633783401378103e-06 0.004628794338932681 0.00112628243695937 +74.01389651950574 -0.204165451358069 1.7552526246973252e-06 0.00461172682747814 0.0011222138533271786 +74.05353915539244 -0.2041654846645399 1.7471648301125197e-06 0.004594721279662688 0.0011181597129331802 +74.0931817934393 -0.2041655178128019 1.7391147770776093e-06 0.004577777470859289 0.001114119965839066 +74.13282443363732 -0.204165550803617 1.7311022871754493e-06 0.004560895191647055 0.0011100945634097289 +74.17246707597755 -0.20416558363774562 1.7231271827322672e-06 0.004544074204716477 0.0011060834547591309 +74.21210972045111 -0.20416561631594196 1.7151892870510455e-06 0.004527314318529005 0.0011020865893611156 +74.25175236704915 -0.2041656488389586 1.707288424300701e-06 0.004510615292142229 0.001098103920734262 +74.29139501576276 -0.2041656812075433 1.6994244194221322e-06 0.004493976921310216 0.0010941353989388318 +74.33103766658326 -0.20416571342244058 1.6915970981742096e-06 0.004477398985524552 0.0010901809759739601 +74.37068031950182 -0.20416574548439073 1.6838062871746077e-06 0.00446088127509632 0.0010862406010278298 +74.41032297450971 -0.20416577739413153 1.6760518139025586e-06 0.004444423571283365 0.0010823142257832413 +74.4499656315983 -0.20416580915239602 1.6683335067669157e-06 0.004428025663027946 0.0010784018067729057 +74.48960829075892 -0.20416584075991426 1.6606511945539348e-06 0.004411687335998139 0.0010745032885466116 +74.5292509519829 -0.20416587221741256 1.6530047074817014e-06 0.0043954083775928 0.0010706186274749621 +74.56889361526177 -0.2041659035256137 1.6453938760774448e-06 0.004379188575167244 0.001066747774022816 +74.60853628058693 -0.2041659346852368 1.637818531993944e-06 0.004363027720901273 0.0010628906809827024 +74.6481789479499 -0.2041659656969974 1.630278507555338e-06 0.004346925614739163 0.00105904730194692 +74.68782161734212 -0.20416599656160836 1.6227736357886634e-06 0.0043308820252350045 0.001055217585992522 +74.72746428875533 -0.20416602727977787 1.615303750819999e-06 0.00431489675924242 0.0010514014898531459 +74.76710696218095 -0.2041660578522112 1.6078686874133139e-06 0.004298969608957579 0.001047598967315781 +74.80674963761071 -0.2041660882796098 1.6004682808125353e-06 0.004283100371811744 0.0010438099638962783 +74.8463923150363 -0.20416611856267264 1.593102367606989e-06 0.00426728882639474 0.0010400344406261337 +74.88603499444936 -0.20416614870209457 1.5857707847095674e-06 0.0042515347734118905 0.0010362723453603464 +74.92567767584164 -0.20416617869856687 1.5784733701425126e-06 0.004235838014783048 0.0010325236368025337 +74.96532035920495 -0.20416620855277764 1.5712099624299904e-06 0.004220198341613585 0.0010287882640118461 +75.00496304453108 -0.20416623826541191 1.5639804011249527e-06 0.004204615542887599 0.0010250661857452116 +75.04460573181188 -0.20416626783715053 1.556784526218248e-06 0.0041890894380174565 0.0010213573486437296 +75.0842484210392 -0.20416629726867253 1.5496221788886235e-06 0.0041736198010470715 0.0010176617148210082 +75.12389111220496 -0.2041663265606517 1.5424932007015755e-06 0.004158206444795692 0.0010139792333848233 +75.16353380530114 -0.20416635571376007 1.535397434090217e-06 0.0041428491600400226 0.001010309858597495 +75.20317650031964 -0.20416638472866575 1.5283347224402094e-06 0.00412754774905873 0.001006653548614373 +75.24281919725252 -0.20416641360603358 1.5213049096170858e-06 0.004112302019330109 0.0010030102566093225 +75.2824618960918 -0.20416644234652517 1.5143078403150528e-06 0.004097111764961845 0.0009993799357512433 +75.32210459682962 -0.20416647095079873 1.5073433600238333e-06 0.004081976800073015 0.0009957625424110942 +75.36174729945797 -0.20416649941951007 1.5004113149985587e-06 0.004066896905162661 0.0009921580330169123 +75.40139000396914 -0.20416652775331104 1.493511552048594e-06 0.004051871894919331 0.000988566360500724 +75.44103271035522 -0.2041665559528497 1.486643918834539e-06 0.004036901587487877 0.000984987479587237 +75.48067541860834 -0.2041665840187721 1.4798082638765442e-06 0.004021985778454276 0.0009814213493326183 +75.52031812872085 -0.20416661195172123 1.473004436066952e-06 0.004007124259707611 0.0009778679199542511 +75.55996084068502 -0.20416663975233593 1.4662322856262385e-06 0.003992316852577646 0.0009743271573308022 +75.59960355449311 -0.2041666674212523 1.4594916626817417e-06 0.003977563361357814 0.0009707990057110597 +75.63924627013745 -0.2041666949591037 1.4527824187207525e-06 0.00396286359327237 0.0009672834281006366 +75.67888898761043 -0.20416672236651978 1.446104405787752e-06 0.003948217360044904 0.0009637803839638177 +75.71853170690447 -0.2041667496441281 1.4394574763123502e-06 0.003933624459086626 0.0009602898189308975 +75.75817442801194 -0.20416677679255243 1.4328414838301834e-06 0.003919084698936027 0.0009568116984243043 +75.79781715092534 -0.20416680381241273 1.4262562825168926e-06 0.0039045979141213486 0.000953345978381111 +75.83745987563718 -0.20416683070432776 1.4197017269817333e-06 0.0038901638902756434 0.0009498926117901834 +75.87710260213996 -0.2041668574689115 1.413177672803875e-06 0.0038757824567611024 0.0009464515587426409 +75.9167453304262 -0.2041668841067766 1.4066839761598528e-06 0.0038614534039350724 0.0009430227760860274 +75.95638806048854 -0.2041669106185309 1.4002204938308617e-06 0.0038471765648326705 0.0009396062202427871 +75.99603079231957 -0.20416693700478103 1.3937870833856303e-06 0.003832951744457686 0.0009362018497228999 +76.03567352591196 -0.2041669632661293 1.3873836030266413e-06 0.003818778760357374 0.0009328096196282979 +76.07531626125837 -0.2041669894031755 1.381009911759871e-06 0.0038046574253450724 0.0009294294919208996 +76.11495899835151 -0.20416701541651686 1.3746658689297294e-06 0.0037905875574078506 0.0009260614206247029 +76.15460173718414 -0.2041670413067478 1.3683513350360951e-06 0.003776568959499814 0.0009227053670734135 +76.19424447774897 -0.2041670670744584 1.362066170748389e-06 0.00376260147827345 0.0009193612861975384 +76.23388722003884 -0.20416709272023806 1.3558102377693265e-06 0.0037486848994648272 0.0009160291356035692 +76.27352996404662 -0.20416711824467146 1.3495833983314437e-06 0.0037348190566508115 0.0009127088799259652 +76.3131727097651 -0.20416714364834188 1.3433855153306552e-06 0.003721003759153565 0.0009094004728006899 +76.35281545718722 -0.20416716893182799 1.3372164521682913e-06 0.0037072388396854213 0.0009061038724765486 +76.39245820630583 -0.20416719409570747 1.3310760732173e-06 0.003693524107891502 0.0009028190410323872 +76.43210095711393 -0.20416721914055416 1.3249642432251085e-06 0.003679859381410052 0.0008995459354718308 +76.47174370960448 -0.20416724406693912 1.3188808276507934e-06 0.0036662444943812746 0.0008962845128321572 +76.5113864637705 -0.20416726887543057 1.3128256927110128e-06 0.0036526792654319913 0.0008930347364603693 +76.55102921960503 -0.2041672935665951 1.3067987050748165e-06 0.0036391635069038353 0.000889796564377051 +76.59067197710108 -0.20416731814099487 1.3007997322762903e-06 0.0036256970481848842 0.0008865699553912408 +76.63031473625179 -0.2041673425991902 1.2948286422943897e-06 0.0036122797148106524 0.0008833548701137157 +76.66995749705028 -0.2041673669417391 1.2888853036661772e-06 0.0035989113179855313 0.0008801512658284241 +76.7096002594897 -0.20416739116919502 1.2829695858253645e-06 0.003585591711786035 0.0008769591052462783 +76.74924302356321 -0.2041674152821115 1.277081358664423e-06 0.003572320693439186 0.0008737783472000681 +76.78888578926401 -0.2041674392810374 1.2712204927708531e-06 0.003559098089905058 0.0008706089552274724 +76.82852855658538 -0.20416746316651868 1.2653868591511853e-06 0.00354592374781281 0.0008674508831008806 +76.86817132552054 -0.20416748693909992 1.2595803297164502e-06 0.003532797482792876 0.0008643040970513174 +76.90781409606276 -0.20416751059932228 1.253800776705614e-06 0.0035197191276093638 0.0008611685522686773 +76.94745686820542 -0.20416753414772496 1.248048073271425e-06 0.0035066884963840077 0.0008580442154250147 +76.98709964194185 -0.20416755758484326 1.242322092966663e-06 0.003493705432848311 0.0008549310469265523 +77.02674241726538 -0.20416758091121134 1.2366227098822162e-06 0.003480769759956337 0.000851829002782337 +77.0663851941695 -0.20416760412735957 1.230949798889084e-06 0.0034678813140925444 0.0008487380473417017 +77.10602797264752 -0.20416762723381654 1.2253032353821712e-06 0.0034550399212295198 0.0008456581410282971 +77.14567075269298 -0.20416765023110814 1.2196828953841716e-06 0.003442245403596802 0.0008425892466092693 +77.18531353429935 -0.2041676731197567 1.2140886553668421e-06 0.0034294976158243794 0.0008395313238523544 +77.22495631746014 -0.20416769590028372 1.2085203926204788e-06 0.0034167963726359145 0.0008364843361806164 +77.26459910216884 -0.20416771857320684 1.2029779848496885e-06 0.0034041415132033477 0.0008334482435989127 +77.3042418884191 -0.20416774113904182 1.1974613103709393e-06 0.003391532867197554 0.0008304230088789297 +77.34388467620444 -0.20416776359830138 1.1919702481420733e-06 0.003378970273760915 0.0008274085948954197 +77.3835274655185 -0.20416778595149634 1.186504677635326e-06 0.0033664535687074094 0.0008244049629802311 +77.42317025635491 -0.2041678081991347 1.181064478888477e-06 0.0033539825806724525 0.0008214120737874375 +77.46281304870739 -0.2041678303417216 1.175649532655136e-06 0.003341557157239779 0.0008184298935589343 +77.50245584256957 -0.20416785237976098 1.1702597199546395e-06 0.0033291771217855946 0.0008154583800762489 +77.54209863793524 -0.20416787431375272 1.1648949227763335e-06 0.0033168423244714536 0.0008124975004863156 +77.58174143479809 -0.2041678961441956 1.1595550232712133e-06 0.003304552593493519 0.000809547214207363 +77.62138423315193 -0.20416791787158503 1.1542399044640913e-06 0.003292307767350343 0.0008066074864005613 +77.66102703299057 -0.20416793949641465 1.1489494497053934e-06 0.0032801076911504715 0.0008036782779220707 +77.70066983430779 -0.20416796101917564 1.1436835432599816e-06 0.003267952199089253 0.0008007595573419284 +77.7403126370975 -0.20416798244035617 1.1384420693912566e-06 0.0032558411332518425 0.0007978512805484943 +77.77995544135354 -0.20416800376044256 1.133224913277074e-06 0.0032437743378594293 0.0007949534129487447 +77.8195982470698 -0.20416802497991896 1.12803196079673e-06 0.003231751645367169 0.0007920659234180977 +77.85924105424021 -0.20416804609926684 1.1228630978950048e-06 0.003219772902432244 0.0007891887691677933 +77.89888386285882 -0.20416806711896515 1.1177182114709435e-06 0.0032078379502510947 0.0007863219174895337 +77.93852667291947 -0.20416808803949063 1.1125971887312138e-06 0.0031959466385184186 0.0007834653302476975 +77.97816948441626 -0.20416810886131787 1.1074999175559067e-06 0.0031840988036697187 0.0007806189731031867 +78.01781229734316 -0.20416812958491945 1.1024262862837699e-06 0.0031722942873567135 0.0007777828089769303 +78.05745511169427 -0.20416815021076476 1.097376183893562e-06 0.0031605329412135205 0.0007749568042137444 +78.09709792746364 -0.20416817073932214 1.0923494996793206e-06 0.0031488145970497462 0.000772140921056809 +78.13674074464538 -0.20416819117105622 1.0873461236190236e-06 0.0031371391217034747 0.000769335122963747 +78.1763835632336 -0.20416821150643047 1.0823659462034183e-06 0.003125506338130957 0.0007665393773165882 +78.2160263832225 -0.2041682317459055 1.077408858565585e-06 0.0031139161179675485 0.0007637536493265603 +78.2556692046062 -0.20416825188994023 1.0724747519977372e-06 0.0031023682847354504 0.0007609779022530095 +78.29531202737898 -0.20416827193899048 1.0675635186368601e-06 0.00309086270756973 0.0007582121003537919 +78.33495485153499 -0.2041682918935113 1.0626750509355057e-06 0.00307939921241147 0.0007554562074937188 +78.37459767706846 -0.2041683117539541 1.0578092421387081e-06 0.0030679776563542985 0.0007527101945681413 +78.41424050397377 -0.20416833152076866 1.0529659856285165e-06 0.0030565978947433583 0.0007499740206368222 +78.45388333224507 -0.20416835119440271 1.0481451756156833e-06 0.003045259768278059 0.000747247656707281 +78.49352616187682 -0.20416837077530126 1.043346706544253e-06 0.003033963145511857 0.000744531062306183 +78.53316899286331 -0.20416839026390796 1.0385704735940177e-06 0.00302270786004811 0.0007418242080752892 +78.57281182519884 -0.2041684096606637 1.0338163722853299e-06 0.003011493765132244 0.0007391270577400228 +78.61245465887791 -0.2041684289660075 1.029084298766421e-06 0.003000320715093071 0.0007364395788021875 +78.65209749389487 -0.2041684481803763 1.0243741495404534e-06 0.002989188563749735 0.0007337617356963523 +78.69174033024417 -0.2041684673042046 1.0196858216734628e-06 0.002978097164504813 0.0007310934936482835 +78.73138316792027 -0.2041684863379248 1.0150192126816202e-06 0.002967046372823686 0.0007284348205391526 +78.77102600691768 -0.20416850528196787 1.0103742207031728e-06 0.00295603603306835 0.000725785682962928 +78.81066884723086 -0.204168524136762 1.0057507441981534e-06 0.002945066006442147 0.0007231460462259607 +78.85031168885436 -0.20416854290273326 1.0011486822010636e-06 0.0029341361509918258 0.0007205158790502634 +78.88995453178272 -0.20416856158030638 9.96567934123174e-07 0.002923246315146548 0.0007178951436651696 +78.92959737601055 -0.20416858016990314 9.920084000906878e-07 0.0029123963594605688 0.0007152838148386773 +78.96924022153242 -0.2041685986719436 9.8746998037555e-07 0.002901586142923468 0.0007126818503572582 +79.00888306834295 -0.20416861708684622 9.829525759601974e-07 0.0028908155173655204 0.0007100892221173389 +79.04852591643674 -0.20416863541502703 9.784560882791888e-07 0.002880084337924234 0.0007075058988403015 +79.08816876580855 -0.20416865365689998 9.73980419114803e-07 0.002869392467763887 0.0007049318433082419 +79.12781161645303 -0.20416867181287687 9.695254708770643e-07 0.0028587397679011636 0.0007023670276741885 +79.16745446836481 -0.20416868988336814 9.650911461403e-07 0.0028481260903325777 0.0006998114141276891 +79.20709732153873 -0.20416870786878194 9.606773484143102e-07 0.002837551298331692 0.0006972649751358548 +79.24674017596949 -0.20416872576952363 9.562839813047483e-07 0.0028270152586075295 0.0006947276764915361 +79.28638303165187 -0.20416874358599832 9.519109489666483e-07 0.0028165178154092763 0.0006921994856692879 +79.32602588858069 -0.2041687613186075 9.475581559952466e-07 0.002806058838016963 0.0006896803715326455 +79.36566874675066 -0.20416877896775143 9.432255075682341e-07 0.0027956381990983975 0.0006871703013723152 +79.40531160615674 -0.20416879653382844 9.389129090935963e-07 0.0027852557427388443 0.0006846692434673295 +79.44495446679379 -0.20416881401723488 9.346202666400033e-07 0.0027749113477634284 0.0006821771660877714 +79.48459732865659 -0.20416883141836553 9.303474866283663e-07 0.0027646048555983855 0.0006796940385664133 +79.52424019174013 -0.20416884873761235 9.260944758598339e-07 0.002754336149520698 0.0006772198279613983 +79.56388305603936 -0.20416886597536607 9.218611416965232e-07 0.00274410508824368 0.0006747545036162383 +79.60352592154912 -0.20416888313201553 9.17647391818598e-07 0.002733911527771058 0.0006722980337632508 +79.64316878826443 -0.20416890020794734 9.134531345729856e-07 0.0027237553476310208 0.0006698503878274578 +79.6828116561803 -0.20416891720354666 9.092782784092281e-07 0.002713636402804044 0.0006674115352973765 +79.72245452529174 -0.2041689341191967 9.051227324363976e-07 0.0027035545562037653 0.0006649814417581027 +79.76209739559371 -0.2041689509552784 9.009864062236182e-07 0.002693509684511982 0.0006625600795027599 +79.80174026708133 -0.20416896771217105 8.968692097138792e-07 0.0026835016533398193 0.0006601474204743223 +79.84138313974964 -0.20416898439025288 8.927710531207557e-07 0.0026735303121747825 0.0006577434274264059 +79.88102601359371 -0.20416900098989887 8.886918473171308e-07 0.002663595553930456 0.0006553480744294471 +79.92066888860872 -0.20416901751148345 8.846315034308636e-07 0.002653697220260022 0.0006529613278933713 +79.96031176478974 -0.20416903395537786 8.805899331790397e-07 0.00264383521866486 0.0006505831605282496 +79.99995464213194 -0.20416905032195332 8.765670485350976e-07 0.0026340093815455153 0.0006482135401117973 +80.03959752063048 -0.20416906661157788 8.725627620403218e-07 0.0026242195894231983 0.0006458524391787489 +80.07924040028058 -0.20416908282461851 8.685769864695114e-07 0.0026144657139649994 0.000643499823601131 +80.11888328107742 -0.20416909896143998 8.64609635183389e-07 0.0026047476277304125 0.0006411556665241784 +80.15852616301626 -0.20416911502240542 8.606606218777547e-07 0.0025950652004220758 0.0006388199371785273 +80.1981690460923 -0.20416913100787623 8.567298605597172e-07 0.0025854183021834557 0.000636492604204566 +80.23781193030092 -0.20416914691821217 8.528172659539276e-07 0.002575806805391344 0.000634173643191139 +80.2774548156373 -0.20416916275377142 8.489227527497308e-07 0.002566230574486551 0.0006318630160514444 +80.31709770209679 -0.20416917851490954 8.450462364801473e-07 0.0025566895004582213 0.0006295607017580794 +80.35674058967469 -0.2041691942019815 8.411876328691066e-07 0.0025471834448694062 0.0006272666687301586 +80.3963834783664 -0.20416920981533995 8.373468578210596e-07 0.0025377122797331166 0.0006249808827191294 +80.43602636816728 -0.20416922535533596 8.33523828050438e-07 0.002528275881509542 0.0006227033199182344 +80.47566925907272 -0.20416924082231847 8.297184604890933e-07 0.0025188741279436027 0.0006204339505646931 +80.51531215107808 -0.20416925621663617 8.259306723687759e-07 0.0025095068829842156 0.0006181727429210071 +80.55495504417887 -0.20416927153863398 8.22160381547288e-07 0.002500174032669231 0.0006159196739327415 +80.59459793837041 -0.20416928678865678 8.184075059032101e-07 0.0024908754517042986 0.0006136747067475401 +80.63424083364828 -0.20416930196704697 8.146719641191195e-07 0.0024816110172456956 0.0006114378194067301 +80.67388373000793 -0.20416931707414565 8.109536749752697e-07 0.002472380599979836 0.0006092089789355594 +80.71352662744482 -0.2041693321102922 8.072525578137686e-07 0.0024631840802236305 0.0006069881611493516 +80.75316952595456 -0.20416934707582388 8.03568532186988e-07 0.0024540213461891947 0.0006047753343159808 +80.79281242553259 -0.2041693619710776 7.999015182843776e-07 0.002444892251292797 0.0006025704733802867 +80.8324553261745 -0.20416937679638716 7.962514362880098e-07 0.0024357967002863012 0.0006003735470586261 +80.87209822787592 -0.20416939155208547 7.926182071571433e-07 0.0024267345526966066 0.0005981845275246022 +80.9117411306324 -0.20416940623850413 7.890017519519361e-07 0.002417705696476835 0.0005960033879876465 +80.9513840344395 -0.20416942085597264 7.854019923644657e-07 0.002408710003235314 0.0005938301039319702 +80.99102693929296 -0.20416943540481838 7.818188499668419e-07 0.0023997473692563566 0.0005916646378692344 +81.03066984518837 -0.20416944988536856 7.782522474279524e-07 0.002390817664401983 0.000589506972871238 +81.07031275212138 -0.20416946429794758 7.747021071434378e-07 0.0023819207777121885 0.0005873570744154997 +81.1099556600877 -0.20416947864287915 7.711683522479674e-07 0.002373056574846758 0.0005852149187563824 +81.14959856908307 -0.2041694929204848 7.676509060159365e-07 0.002364224945739714 0.0005830804763052077 +81.18924147910312 -0.2041695071310845 7.641496922835052e-07 0.0023554257811319776 0.0005809537199511673 +81.22888439014369 -0.20416952127499735 7.606646352051445e-07 0.002346658950919401 0.0005788346275160161 +81.26852730220045 -0.2041695353525402 7.571956590239728e-07 0.0023379243418897764 0.000576723163331079 +81.30817021526921 -0.2041695493640285 7.537426887392377e-07 0.002329221847924242 0.0005746193057799403 +81.34781312934578 -0.20416956330977656 7.503056494741665e-07 0.002320551331977985 0.0005725230271504603 +81.38745604442596 -0.204169577190097 7.468844667363961e-07 0.0023119126925842384 0.0005704342986318129 +81.42709896050556 -0.2041695910053001 7.434790665030791e-07 0.002303305820158099 0.000568353096382885 +81.46674187758046 -0.2041696047556962 7.400893748900378e-07 0.0022947305869387077 0.000566279391858882 +81.50638479564643 -0.204169618441593 7.36715318646164e-07 0.002286186885649684 0.000564213161882515 +81.54602771469948 -0.2041696320632972 7.333568244428343e-07 0.002277674595272228 0.00056215437284978 +81.58567063473544 -0.20416964562111353 7.300138198028496e-07 0.0022691936106391084 0.0005601030056917994 +81.62531355575018 -0.2041696591153456 7.266862322752529e-07 0.0022607438224192464 0.0005580590318792445 +81.6649564777397 -0.20416967254629625 7.233739898002524e-07 0.0022523251001690934 0.0005560224228523405 +81.70459940069992 -0.20416968591426535 7.200770206798457e-07 0.0022439373397155635 0.0005539931545455518 +81.74424232462682 -0.20416969921955233 7.167952536248482e-07 0.0022355804391017624 0.0005519712013277997 +81.78388524951632 -0.20416971246245533 7.135286175335226e-07 0.0022272542687485053 0.0005499565359001936 +81.8235281753645 -0.20416972564327 7.102770418291557e-07 0.002218958736659457 0.0005479491343495008 +81.86317110216734 -0.20416973876229186 7.070404560586247e-07 0.002210693721296808 0.0005459489689399267 +81.90281402992085 -0.204169751819814 7.038187903158563e-07 0.0022024591126002463 0.0005439560156602956 +81.94245695862108 -0.20416976481612906 7.006119748259181e-07 0.0021942547962911867 0.0005419702463462607 +81.98209988826412 -0.2041697777515271 6.974199402729833e-07 0.0021860806687788253 0.0005399916377110664 +82.02174281884602 -0.20416979062629792 6.94242617739142e-07 0.002177936617570837 0.0005380201669274112 +82.06138575036293 -0.20416980344072863 6.910799383807491e-07 0.0021698225394004003 0.0005360558017666068 +82.10102868281092 -0.20416981619510635 6.879318338032679e-07 0.0021617383217641703 0.0005340985201627941 +82.1406716161861 -0.20416982888971588 6.847982362507648e-07 0.0021536838615073025 0.0005321483024119518 +82.18031455048461 -0.2041698415248414 6.816790777014517e-07 0.002145659032654836 0.0005302051172738156 +82.21995748570268 -0.20416985410076482 6.785742908932646e-07 0.00213766374934818 0.000528268941451327 +82.25960042183644 -0.20416986661776707 6.75483808653966e-07 0.00212969789865448 0.0005263397483209566 +82.29924335888208 -0.20416987907612827 6.724075642905925e-07 0.002121761370166388 0.000524417516751867 +82.33888629683582 -0.20416989147612655 6.693454914527726e-07 0.002113854054912947 0.0005225022226020878 +82.37852923569388 -0.20416990381803846 6.662975237682805e-07 0.002105975856595115 0.0005205938343795345 +82.4181721754525 -0.20416991610214008 6.632635955714125e-07 0.002098126662564417 0.0005186923339304063 +82.45781511610794 -0.2041699283287053 6.602436412931862e-07 0.0020903063755268497 0.0005167976943166579 +82.49745805765643 -0.20416994049800788 6.572375957331061e-07 0.002082514877476537 0.0005149098911009396 +82.53710100009432 -0.20416995261031867 6.542453940825774e-07 0.0020747520757596538 0.0005130289023250608 +82.57674394341791 -0.20416996466590873 6.512669717045499e-07 0.002067017851239906 0.0005111547009566621 +82.61638688762343 -0.20416997666504635 6.483022642854478e-07 0.002059312123443746 0.0005092872650312177 +82.65602983270733 -0.20416998860799976 6.453512078660423e-07 0.0020516347698665612 0.0005074265690008902 +82.69567277866588 -0.20417000049503517 6.424137388457281e-07 0.002043985703518775 0.0005055725897284608 +82.73531572549544 -0.2041700123264186 6.394897937868026e-07 0.0020363647989012144 0.0005037253041659647 +82.7749586731924 -0.2041700241024124 6.365793095495472e-07 0.0020287719805193376 0.0005018846854662098 +82.81460162175323 -0.20417003582328042 6.336822235077981e-07 0.0020212071328211466 0.0005000507135959831 +82.85424457117422 -0.20417004748928388 6.307984730718832e-07 0.002013670148302291 0.0004982233615139808 +82.89388752145189 -0.20417005910068284 6.279279961591738e-07 0.002006160933802791 0.0004964026110049797 +82.93353047258259 -0.2041700706577363 6.250707307160497e-07 0.0019986793815610225 0.0004945884301491527 +82.97317342456284 -0.20417008216070096 6.222266153976118e-07 0.001991225418726277 0.0004927808048683588 +83.0128163773891 -0.2041700936098344 6.193955887521929e-07 0.0019837989038102377 0.0004909797075016775 +83.05245933105785 -0.20417010500539154 6.165775897072594e-07 0.001976399758333941 0.0004891851130870224 +83.09210228556552 -0.20417011634762558 6.13772557624645e-07 0.0019690278919092894 0.00048739700071838296 +83.13174524090871 -0.20417012763678977 6.109804321263869e-07 0.0019616831917750916 0.0004856153489452384 +83.1713881970839 -0.2041701388731355 6.082011529282028e-07 0.0019543655668010323 0.00048384013162963826 +83.21103115408765 -0.2041701500569133 6.054346602350665e-07 0.0019470749110019304 0.00048207132862396115 +83.25067411191651 -0.20417016118837195 6.026808944259411e-07 0.0019398111284509394 0.00048030891347149857 +83.29031707056704 -0.20417017226775955 5.999397962254268e-07 0.0019325741215202481 0.0004785528663712206 +83.32996003003582 -0.20417018329532244 5.972113065718591e-07 0.0019253638022078612 0.0004768031644373945 +83.36960299031948 -0.20417019427130642 5.944953668296339e-07 0.0019181800614479114 0.0004750597851095593 +83.40924595141459 -0.20417020519595552 5.91791918379605e-07 0.0019110228114170254 0.0004733227043678763 +83.4488889133178 -0.20417021606951358 5.891009031411465e-07 0.001903891944868126 0.0004715919013110992 +83.48853187602579 -0.2041702268922216 5.864222631472275e-07 0.001896787384051567 0.0004698673546739666 +83.52817483953513 -0.20417023766432096 5.837559407224774e-07 0.0018897090229951635 0.00046814903642462504 +83.5678178038425 -0.20417024838605166 5.811018786535439e-07 0.001882656752027793 0.0004664369325720862 +83.60746076894462 -0.2041702590576511 5.7846001969031e-07 0.0018756305104334207 0.0004647310167449001 +83.64710373483823 -0.2041702696793579 5.758303070113285e-07 0.0018686301673684121 0.0004630312666073991 +83.68674670151994 -0.2041702802514076 5.732126840964167e-07 0.0018616556542571754 0.00046133766037277944 +83.7263896689865 -0.20417029077403512 5.706070947139834e-07 0.001854706869465412 0.0004596501789332044 +83.7660326372347 -0.20417030124747515 5.680134826615221e-07 0.0018477837097734086 0.00045796879516179617 +83.8056756062612 -0.20417031167195954 5.654317924155622e-07 0.0018408861063174125 0.00045629349429473213 +83.84531857606288 -0.2041703220477208 5.628619682190338e-07 0.0018340139426468382 0.0004546242480661703 +83.88496154663643 -0.20417033237498938 5.603039550564743e-07 0.0018271671266345086 0.0004529610400194695 +83.92460451797865 -0.20417034265399467 5.577576978286674e-07 0.001820345583817042 0.00045130384494226086 +83.9642474900864 -0.2041703528849649 5.552231417431851e-07 0.0018135492068914877 0.0004496526411988788 +84.00389046295638 -0.20417036306812805 5.527002325540809e-07 0.0018067779060160175 0.0004480074121819391 +84.04353343658556 -0.2041703732037092 5.501889158465912e-07 0.0018000316109335606 0.0004463681305384108 +84.0831764109707 -0.20417038329193404 5.476891378131546e-07 0.001793310200527619 0.0004447347799520285 +84.12281938610867 -0.20417039333302725 5.452008446975611e-07 0.0017866135940881132 0.00044310733643331164 +84.16246236199633 -0.20417040332721068 5.427239831494606e-07 0.00177994171679758 0.0004414857814809984 +84.20210533863062 -0.2041704132747069 5.402584998441943e-07 0.0017732944622926435 0.00043987009149368733 +84.24174831600837 -0.20417042317573672 5.378043419970346e-07 0.0017666717443603904 0.000438260248397736 +84.28139129412651 -0.2041704330305195 5.353614567235542e-07 0.0017600734719044598 0.00043665622697092464 +84.32103427298196 -0.20417044283927432 5.32929791781126e-07 0.001753499570342359 0.00043505801204513317 +84.36067725257166 -0.20417045260221903 5.305092948300527e-07 0.001746949925955728 0.0004334655763262583 +84.40032023289255 -0.20417046231957 5.28099914089027e-07 0.001740424467272002 0.0004318789066968917 +84.43996321394164 -0.20417047199154234 5.257015976808848e-07 0.0017339231133626065 0.00043029797573384876 +84.47960619571582 -0.2041704816183514 5.233142943186369e-07 0.0017274457595381086 0.0004287227691841622 +84.51924917821209 -0.2041704912002105 5.209379526100601e-07 0.0017209923226561069 0.000427153260911157 +84.55889216142752 -0.20417050073733164 5.185725217153299e-07 0.0017145627265121642 0.00042558943436747204 +84.59853514535905 -0.20417051022992685 5.162179508545781e-07 0.00170815687477917 0.00042403126648115713 +84.63817813000371 -0.20417051967820657 5.13874189573874e-07 0.001701774675596327 0.00042247874052169453 +84.67782111535855 -0.2041705290823801 5.115411875888186e-07 0.0016954160466869817 0.000420931834052824 +84.71746410142065 -0.20417053844265567 5.092188948934656e-07 0.0016890809213815975 0.00041939052749099685 +84.75710708818698 -0.2041705477592409 5.069072617238712e-07 0.0016827691929167683 0.00041785480256998535 +84.79675007565469 -0.20417055703234255 5.046062385122953e-07 0.0016764807751865733 0.00041632463749305735 +84.83639306382086 -0.20417056626216537 5.023157759048977e-07 0.001670215604838986 0.00041480001182923995 +84.87603605268255 -0.20417057544891493 5.000358249057533e-07 0.001663973564870111 0.0004132809074083997 +84.91567904223689 -0.20417058459279405 4.977663364949772e-07 0.0016577545890864957 0.0004117673001971232 +84.955322032481 -0.20417059369400495 4.955072623039262e-07 0.00165155860879161 0.000410259178588375 +84.99496502341198 -0.20417060275274979 4.932585538088766e-07 0.0016453855120855765 0.00040875651796028916 +85.03460801502699 -0.20417061176922882 4.910201628162525e-07 0.0016392352351832895 0.0004072592985752388 +85.07425100732324 -0.20417062074364214 4.887920414154919e-07 0.0016331076738768126 0.00040576750147900916 +85.11389400029779 -0.20417062967618774 4.865741418988038e-07 0.0016270027713375798 0.0004042811063783699 +85.15353699394798 -0.20417063856706377 4.843664168597206e-07 0.0016209204336762341 0.00040280009884921937 +85.19317998827083 -0.2041706474164667 4.821688189375153e-07 0.0016148605813687117 0.0004013244550386268 +85.23282298326362 -0.20417065622459293 4.799813011201281e-07 0.0016088231116060641 0.0003998541549356674 +85.2724659789236 -0.20417066499163727 4.778038166441417e-07 0.001602807968098948 0.00039838918400779297 +85.31210897524792 -0.2041706737177932 4.756363188030926e-07 0.0015968150601421008 0.0003969295196375308 +85.35175197223387 -0.20417068240325378 4.734787613028616e-07 0.0015908443166177337 0.0003954751441148622 +85.39139496987869 -0.20417069104821137 4.713310980633089e-07 0.0015848956426970876 0.0003940260424259063 +85.43103796817967 -0.20417069965285717 4.69193282867955e-07 0.0015789689681334138 0.0003925821825912735 +85.47068096713403 -0.2041707082173814 4.6706527030295484e-07 0.001573064205987737 0.00039114356221333973 +85.51032396673902 -0.2041707167419735 4.6494701473483265e-07 0.001567181275499828 0.0003897101551854306 +85.54996696699203 -0.2041707252268219 4.6283847082324836e-07 0.0015613201095941575 0.00038828194031741885 +85.58960996789027 -0.20417073367211436 4.6073959349508185e-07 0.001555480597119236 0.0003868589028491664 +85.62925296943119 -0.2041707420780369 4.586503378831959e-07 0.001549662703640928 0.00038544102160076435 +85.668895971612 -0.20417075044477584 4.565706594113236e-07 0.0015438663221191585 0.00038402828101476036 +85.70853897443006 -0.2041707587725161 4.5450051353687834e-07 0.0015380913760137977 0.0003826206627811208 +85.74818197788272 -0.2041707670614412 4.5243985606005834e-07 0.0015323377994280144 0.0003812181457178595 +85.78782498196742 -0.20417077531173478 4.503886429617894e-07 0.0015266054983209005 0.0003798207149548042 +85.82746798668143 -0.20417078352357862 4.483468303827537e-07 0.0015208944110346246 0.00037842834879009884 +85.86711099202216 -0.20417079169715432 4.463143747570396e-07 0.0015152044494532197 0.00037704103330784156 +85.90675399798707 -0.20417079983264244 4.4429123255038135e-07 0.0015095355409140865 0.00037565874556375083 +85.94639700457347 -0.20417080793022238 4.422773607877487e-07 0.001503887612808619 0.0003742814728285196 +85.98604001177883 -0.2041708159900735 4.402727161894484e-07 0.0014982605662893572 0.0003729091912387432 +86.02568301960059 -0.20417082401237274 4.3827725614730435e-07 0.0014926543637069835 0.00037154188797768506 +86.06532602803613 -0.20417083199729832 4.3629093784927574e-07 0.001487068888790092 0.0003701795398328886 +86.10496903708294 -0.20417083994502558 4.343137191545523e-07 0.0014815040942548399 0.0003688221356266291 +86.14461204673847 -0.20417084785573036 4.323455577323149e-07 0.0014759598857098683 0.0003674696564509987 +86.18425505700017 -0.2041708557295868 4.3038641159116593e-07 0.0014704362120965058 0.00036612208056799995 +86.22389806786559 -0.20417086356676903 4.2843623890384805e-07 0.0014649329700057924 0.0003647793931863341 +86.26354107933216 -0.2041708713674496 4.264949981526224e-07 0.0014594501028262225 0.00036344157958181884 +86.30318409139734 -0.2041708791318009 4.245626478331448e-07 0.0014539875350001107 0.0003621086181784143 +86.34282710405871 -0.20417088685999416 4.226391466827099e-07 0.0014485451797732873 0.000360780491164199 +86.3824701173138 -0.20417089455219906 4.207244536958689e-07 0.001443122985814102 0.00035945718082335595 +86.42211313116007 -0.20417090220858627 4.188185281057217e-07 0.0014377208574151165 0.0003581386735335568 +86.46175614559516 -0.2041709098293236 4.169213292884376e-07 0.001432338739112926 0.00035682495126145697 +86.50139916061654 -0.2041709174145797 4.150328166782795e-07 0.0014269765398910543 0.00035551599268458583 +86.5410421762218 -0.20417092496452152 4.131529501409456e-07 0.0014216342053297928 0.00035421178614041107 +86.58068519240851 -0.20417093247931595 4.112816895262842e-07 0.0014163116369089897 0.0003529123144025565 +86.62032820917428 -0.20417093995912752 4.094189950352599e-07 0.0014110087999042317 0.0003516175574062286 +86.65997122651663 -0.2041709474041216 4.0756482681718537e-07 0.001405725592500611 0.00035032749993874746 +86.69961424443326 -0.20417095481446246 4.057191455293387e-07 0.0014004619538650826 0.00034904212268657437 +86.7392572629217 -0.20417096219031294 4.038819117963997e-07 0.0013952178086213834 0.00034776141456776584 +86.77890028197962 -0.2041709695318353 4.020530863504629e-07 0.0013899931003110147 0.00034648535296857716 +86.81854330160465 -0.20417097683919203 4.002326305275376e-07 0.001384787732010789 0.0003452139263909518 +86.85818632179438 -0.20417098411254334 3.9842050525596025e-07 0.0013796016437102137 0.0003439471127510279 +86.89782934254653 -0.20417099135204952 3.9661667206665457e-07 0.0013744347756780228 0.000342684897764617 +86.93747236385875 -0.2041709985578699 3.9482109253683416e-07 0.0013692870489692343 0.00034142726577230704 +86.9771153857287 -0.20417100573016297 3.930337285359802e-07 0.0013641583974504882 0.00034017420117174956 +87.016758408154 -0.20417101286908715 3.91254541876326e-07 0.0013590487395861194 0.00033892568685166795 +87.05640143113246 -0.20417101997479906 3.894834947464976e-07 0.0013539580190379083 0.00033768170386818053 +87.09604445466171 -0.2041710270474549 3.87720549428334e-07 0.0013488861693816397 0.0003364422393097152 +87.13568747873941 -0.20417103408721046 3.8596566848954197e-07 0.001343833113079023 0.00033520727680288136 +87.17533050336343 -0.2041710410942209 3.84218814520165e-07 0.0013387987737468142 0.00033397679929684495 +87.21497352853135 -0.20417104806864006 3.824799503552395e-07 0.0013337830962623616 0.0003327507887608324 +87.25461655424097 -0.20417105501062124 3.807490390260244e-07 0.001328786011304795 0.00033152923405422257 +87.29425958049006 -0.2041710619203169 3.7902604374981746e-07 0.0013238074528890047 0.00033031211634399854 +87.33390260727636 -0.20417106879787958 3.773109278078009e-07 0.0013188473406278494 0.0003290994182553678 +87.37354563459758 -0.20417107564346026 3.7560365472527664e-07 0.0013139056157459251 0.0003278911234872579 +87.41318866245155 -0.2041710824572089 3.739041883242945e-07 0.0013089822194054378 0.00032668722233613235 +87.45283169083609 -0.204171089239276 3.72212492324799e-07 0.0013040770601018192 0.0003254876920909427 +87.49247471974893 -0.20417109598981023 3.7052853086601536e-07 0.0012991900971722713 0.00032429252156670845 +87.5321177491879 -0.2041711027089599 3.6885226812552043e-07 0.0012943212476560966 0.0003231016917105508 +87.57176077915082 -0.2041711093968727 3.671836684514536e-07 0.0012894704558913236 0.00032191519012255966 +87.61140380963549 -0.20417111605369545 3.6552269645881895e-07 0.0012846376551213308 0.0003207330006331107 +87.65104684063976 -0.20417112267957482 3.638693168042593e-07 0.0012798227589163461 0.00031955510576854926 +87.69068987216147 -0.20417112927465564 3.6222349437830275e-07 0.0012750257318594849 0.0003183814917301751 +87.73033290419843 -0.20417113583908322 3.6058519417949826e-07 0.0012702465022786753 0.00031721214067428704 +87.76997593674857 -0.20417114237300185 3.589543814634536e-07 0.0012654849828952913 0.0003160470428526068 +87.80961896980969 -0.20417114887655452 3.5733102161190887e-07 0.001260741123087675 0.0003148861786165898 +87.8492620033797 -0.20417115534988425 3.557150801215032e-07 0.0012560148666745446 0.0003137295350633288 +87.88890503745651 -0.204171161793133 3.5410652262102817e-07 0.0012513061411997925 0.0003125770921399062 +87.92854807203794 -0.20417116820644254 3.525053151384977e-07 0.0012466148798915405 0.00031142884311389146 +87.96819110712191 -0.20417117458995307 3.5091142345515695e-07 0.0012419410206868568 0.0003102847645593474 +88.00783414270641 -0.20417118094380501 3.4932481391875477e-07 0.0012372845082894357 0.0003091448457636749 +88.0474771787893 -0.2041711872681378 3.477454528365075e-07 0.001232645264622494 0.00030800907326861544 +88.08712021536846 -0.2041711935630901 3.4617330657411735e-07 0.0012280232329202596 0.0003068774269064062 +88.12676325244192 -0.20417119982879992 3.4460834196579557e-07 0.0012234183583963306 0.0003057498983055922 +88.16640629000757 -0.20417120606540454 3.430505256748351e-07 0.001218830569468892 0.0003046264687633138 +88.20604932806336 -0.20417121227304139 3.414998246513656e-07 0.001214259796372961 0.00030350712403174506 +88.2456923666073 -0.20417121845184585 3.399562061162695e-07 0.001209705986098073 0.0003023918509285427 +88.2853354056373 -0.204171224601954 3.384196372334328e-07 0.0012051690697261644 0.0003012806319452973 +88.32497844515134 -0.20417123072349955 3.368900854491821e-07 0.0012006490196694462 0.00030017345520917655 +88.36462148514751 -0.20417123681661806 3.353675183480492e-07 0.00119614572788499 0.00029907030473528087 +88.40426452562372 -0.20417124288144228 3.3385190368675256e-07 0.0011916591478130863 0.00029797116693650326 +88.44390756657796 -0.20417124891810534 3.323432092048487e-07 0.0011871892288261153 0.0002968760267071172 +88.48355060800827 -0.2041712549267398 3.3084140313286185e-07 0.0011827358924813472 0.0002957848715504473 +88.52319364991267 -0.2041712609074764 3.2934645348869425e-07 0.0011782991043472373 0.00029469768452446566 +88.5628366922892 -0.2041712668604471 3.278583286640183e-07 0.0011738787749319736 0.0002936144539199482 +88.60247973513589 -0.20417127278578176 3.2637699705312104e-07 0.0011694748603074902 0.0002925351616486914 +88.64212277845077 -0.2041712786836107 3.2490242731123434e-07 0.0011650872876708808 0.0002914597953030974 +88.6817658222319 -0.20417128455406233 3.234345883112267e-07 0.0011607160282972298 0.00029038834622965745 +88.72140886647736 -0.20417129039726575 3.21973448851639e-07 0.0011563609870135388 0.0002893207917176005 +88.76105191118525 -0.2041712962133488 3.205189780252098e-07 0.0011520221124344786 0.00028825712342324915 +88.80069495635351 -0.20417130200243874 3.1907114498225004e-07 0.0011476993516349847 0.0002871973241439579 +88.84033800198043 -0.20417130776466189 3.176299191859647e-07 0.0011433926583228548 0.00028614138398581744 +88.87998104806391 -0.2041713135001452 3.161952699933888e-07 0.0011391019458310001 0.0002850892837927272 +88.91962409460216 -0.20417131920901363 3.1476716715039737e-07 0.001134827174895904 0.00028404101494886475 +88.95926714159327 -0.2041713248913919 3.1334558031930267e-07 0.0011305682805657362 0.0002829965586808555 +88.99891018903536 -0.20417133054740502 3.119304795830508e-07 0.0011263252023376571 0.00028195590733641555 +89.03855323692656 -0.2041713361771759 3.105218347981666e-07 0.0011220978983202644 0.0002809190411315235 +89.07819628526498 -0.20417134178082852 3.091196163198912e-07 0.0011178862864699437 0.00027988595121176675 +89.11783933404877 -0.2041713473584851 3.077237944213488e-07 0.001113690316480465 0.000278856621784066 +89.15748238327609 -0.20417135291026736 3.0633433955979437e-07 0.0011095099446560572 0.0002778310366722873 +89.1971254329451 -0.20417135843629683 3.049512224089962e-07 0.001105345101465573 0.00027680918875360746 +89.23676848305394 -0.20417136393669466 3.035744136737439e-07 0.0011011957287373221 0.0002757910596943247 +89.27641153360078 -0.20417136941158032 3.0220388426561704e-07 0.0010970617950782034 0.0002747766397829795 +89.31605458458382 -0.20417137486107453 3.008396051688017e-07 0.0010929431970355089 0.0002737659094700018 +89.35569763600125 -0.20417138028529566 2.9948154762401175e-07 0.0010888399168024884 0.000272758862226001 +89.39534068785125 -0.20417138568436285 2.981296828590968e-07 0.0010847518705570892 0.0002717554825923389 +89.43498374013201 -0.2041713910583933 2.967839822016591e-07 0.0010806790323156542 0.000270755753721293 +89.4746267928418 -0.2041713964075049 2.9544441744744366e-07 0.0010766213232373768 0.00026975966702845407 +89.51426984597876 -0.2041714017318139 2.9411096015551347e-07 0.001072578716778738 0.0002687672078021466 +89.55391289954115 -0.20417140703143763 2.9278358217958033e-07 0.0010685511172104664 0.0002677783653960283 +89.59355595352721 -0.2041714123064915 2.9146225549605295e-07 0.0010645384850569565 0.0002667931232831885 +89.63319900793513 -0.20417141755709026 2.901469521386364e-07 0.001060540774314554 0.0002658114691613775 +89.67284206276324 -0.20417142278334866 2.8883764437879537e-07 0.0010565579384050226 0.00026483339057177833 +89.71248511800972 -0.20417142798538132 2.875343045678122e-07 0.0010525898896070458 0.0002638588776620507 +89.75212817367284 -0.20417143316330155 2.8623690513162283e-07 0.0010486365996966028 0.00026288791303983407 +89.79177122975095 -0.20417143831722193 2.849454187172778e-07 0.001044698014726897 0.00026192048390807134 +89.83141428624222 -0.20417144344725557 2.836598180499128e-07 0.0010407740694293223 0.0002609565800140443 +89.87105734314497 -0.2041714485535144 2.823800760205614e-07 0.0010368647116744884 0.0002599961888832073 +89.91070040045749 -0.20417145363610914 2.8110616554626263e-07 0.0010329699011551962 0.0002590392964337818 +89.95034345817808 -0.2041714586951516 2.7983805987595637e-07 0.0010290895638664142 0.0002580858904094873 +89.9899865163051 -0.20417146373075154 2.7857573212553433e-07 0.0010252236620559173 0.0002571359597321109 +90.02962957483673 -0.20417146874301875 2.773191557666862e-07 0.0010213721418327142 0.0002561894901410923 +90.06927263377142 -0.20417147373206312 2.7606830428302383e-07 0.0010175349480478506 0.0002552464727553002 +90.10891569310738 -0.20417147869799313 2.748231511434328e-07 0.0010137120235386798 0.00025430688678777005 +90.14855875284302 -0.2041714836409172 2.7358367021623456e-07 0.0010099033074368344 0.00025337072773266953 +90.18820181297669 -0.20417148856094314 2.7234983532495075e-07 0.0010061087611907959 0.00025243797906440805 +90.22784487350665 -0.20417149345817756 2.71121620528767e-07 0.0010023283410377397 0.00025150863323672017 +90.26748793443136 -0.2041714983327281 2.69898999855182e-07 0.0009985619778081337 0.0002505826750644139 +90.30713099574912 -0.20417150318470031 2.6868194741837585e-07 0.000994809641070289 0.00024966008744916924 +90.34677405745825 -0.20417150801420034 2.674704377648494e-07 0.0009910712568654625 0.00024874086630014637 +90.3864171195572 -0.20417151282133317 2.66264445330573e-07 0.0009873467851886553 0.00024782499717900924 +90.42606018204435 -0.20417151760620422 2.6506394452231205e-07 0.0009836361592243938 0.0002469124644642549 +90.46570324491805 -0.20417152236891709 2.638689103644343e-07 0.000979939347409314 0.0002460032627485158 +90.50534630817668 -0.20417152710957542 2.626793173359106e-07 0.0009762562914449486 0.0002450973705396909 +90.5449893718187 -0.20417153182828332 2.614951405368369e-07 0.0009725869371889736 0.0002441947821404757 +90.58463243584245 -0.20417153652514242 2.6031635512599123e-07 0.0009689312432075052 0.00024329549032632276 +90.6242755002464 -0.20417154120025569 2.591429361506676e-07 0.0009652891580671281 0.00024239947544421242 +90.66391856502895 -0.204171545853725 2.579748588193977e-07 0.0009616606239119573 0.00024150672481985081 +90.70356163018847 -0.20417155048565097 2.568120987068976e-07 0.0009580456076746354 0.00024061723295594757 +90.74320469572348 -0.20417155509613558 2.556546311856819e-07 0.0009544440284463444 0.00023973098336411218 +90.78284776163238 -0.20417155968527778 2.545024320311679e-07 0.0009508558803960693 0.00023884796783747177 +90.82249082791363 -0.20417156425317917 2.5335547684894596e-07 0.0009472810651129492 0.00023796817151798175 +90.86213389456567 -0.2041715687999375 2.5221374161232544e-07 0.0009437195707934568 0.00023709158384470233 +90.90177696158695 -0.20417157332565283 2.510772022313421e-07 0.0009401713302415786 0.0002362181947217772 +90.94142002897593 -0.2041715778304233 2.499458348080047e-07 0.0009366362932260946 0.00023534799059307668 +90.9810630967311 -0.20417158231434626 2.4881961559057795e-07 0.0009331144381349819 0.00023448096385102297 +91.02070616485096 -0.20417158677752037 2.476985207681828e-07 0.000929605685027222 0.00023361709753331875 +91.06034923333397 -0.20417159122004183 2.4658252681666653e-07 0.0009261099964913718 0.00023275638265674126 +91.09999230217858 -0.20417159564200812 2.454716102295335e-07 0.0009226273181254704 0.00023189880705242732 +91.13963537138336 -0.2041716000435143 2.443657477950709e-07 0.0009191576246967903 0.000231044364703132 +91.17927844094677 -0.20417160442465676 2.4326491610250387e-07 0.0009157008470756589 0.00023019303746266194 +91.21892151086733 -0.20417160878553087 2.421690919707379e-07 0.0009122569390210257 0.00022934481514215194 +91.25856458114355 -0.2041716131262308 2.4107825251508105e-07 0.000908825867480236 0.00022849969099975875 +91.29820765177396 -0.20417161744685175 2.399923746896708e-07 0.0009054075704484531 0.0002276576483507654 +91.33785072275708 -0.20417162174748715 2.389114357173535e-07 0.0009020019995421335 0.00022681867934610267 +91.37749379409146 -0.20417162602823002 2.378354128245312e-07 0.0008986091239217838 0.00022598276969985266 +91.41713686577562 -0.20417163028917432 2.3676428356944745e-07 0.000895228883328303 0.0002251499155158261 +91.45677993780814 -0.20417163453041168 2.356980252747544e-07 0.0008918612432713717 0.0002243201013123848 +91.49642301018751 -0.204171638752035 2.3463661550379886e-07 0.0008885061443021529 0.00022349331233377002 +91.53606608291231 -0.20417164295413584 2.3358003214175664e-07 0.0008851635409138848 0.00022266954316875576 +91.57570915598119 -0.204171647136805 2.325282528266327e-07 0.000881833396823912 0.00022184878149916095 +91.61535222939258 -0.20417165130013368 2.3148125552216935e-07 0.0008785156589847346 0.0002210310136697642 +91.65499530314517 -0.20417165544421237 2.3043901830159254e-07 0.0008752102816058565 0.0002202162350395418 +91.6946383772375 -0.2041716595691309 2.2940151925628073e-07 0.0008719172225144684 0.00021940442906948738 +91.73428145166811 -0.20417166367497872 2.2836873656794943e-07 0.0008686364371614392 0.0002185955862010206 +91.77392452643568 -0.20417166776184523 2.2734064854738275e-07 0.0008653678741857912 0.00021778969841112803 +91.81356760153875 -0.20417167182981866 2.263172335820354e-07 0.0008621115040242641 0.00021698675076131573 +91.85321067697596 -0.20417167587898785 2.2529847030081954e-07 0.0008588672633665683 0.00021618673608682004 +91.89285375274588 -0.20417167990944063 2.242843373158266e-07 0.0008556351035418733 0.00021538964390539392 +91.93249682884718 -0.2041716839212638 2.2327481321495224e-07 0.0008524150161051446 0.00021459546231499115 +91.97213990527844 -0.20417168791454543 2.2226987691076248e-07 0.0008492069056037117 0.00021380418049330805 +92.01178298203828 -0.2041716918893716 2.2126950733975233e-07 0.00084601075873523 0.00021301578730675383 +92.05142605912542 -0.20417169584582817 2.202736834326971e-07 0.000842826531531618 0.00021223027281024132 +92.09106913653844 -0.20417169978400126 2.1928238437195258e-07 0.0008396541829978196 0.00021144763013895138 +92.13071221427593 -0.20417170370397641 2.1829558934736554e-07 0.0008364936606758058 0.00021066784426266794 +92.17035529233662 -0.2041717076058385 2.173132776907665e-07 0.0008333449186106643 0.0002098909074800848 +92.20999837071915 -0.2041717114896722 2.1633542880620506e-07 0.0008302079102995504 0.00020911680812669487 +92.24964144942217 -0.2041717153555612 2.1536202217881656e-07 0.00082708261832535 0.0002083455383923785 +92.28928452844434 -0.2041717192035903 2.1439303732166768e-07 0.0008239689666036742 0.0002075770833649801 +92.32892760778438 -0.20417172303384232 2.1342845407334088e-07 0.000820866923165334 0.00020681143872112293 +92.3685706874409 -0.20417172684640017 2.1246825201737527e-07 0.000817776447617401 0.0002060485854858981 +92.40821376741265 -0.20417173064134664 2.1151241130861815e-07 0.0008146975088046396 0.000205288526267868 +92.44785684769826 -0.20417173441876382 2.105609116847572e-07 0.0008116300464841479 0.00020453123996305906 +92.48749992829646 -0.2041717381787341 2.0961373331784173e-07 0.000808574015741128 0.00020377672272916817 +92.52714300920596 -0.20417174192133802 2.0867085635472266e-07 0.0008055293979228486 0.00020302496424111813 +92.56678609042548 -0.20417174564665705 2.0773226096289137e-07 0.0008024961373315189 0.0002022759487080426 +92.60642917195364 -0.20417174935477242 2.067979276471073e-07 0.0007994741800713493 0.0002015296748324242 +92.64607225378927 -0.20417175304576365 2.0586783667955493e-07 0.0007964635021052872 0.00020078612562281589 +92.68571533593104 -0.2041717567197109 2.0494196873214087e-07 0.0007934640622682894 0.0002000452967440212 +92.72535841837765 -0.20417176037669418 2.040203041361304e-07 0.0007904757960217201 0.00019930716854463484 +92.76500150112793 -0.20417176401679207 2.0310282397263235e-07 0.0007874986907340282 0.00019857174483315366 +92.80464458418051 -0.20417176764008368 2.0218950885311176e-07 0.0007845326779802722 0.00019783900901372323 +92.84428766753418 -0.2041717712466471 2.0128033956921442e-07 0.0007815777583865532 0.0001971089469840906 +92.88393075118766 -0.2041717748365608 2.003752972299707e-07 0.0007786338423503725 0.00019638155649421966 +92.92357383513978 -0.20417177840990175 1.99474362926154e-07 0.0007757009389579945 0.00019565682777528408 +92.96321691938918 -0.20417178196674837 1.9857751763461e-07 0.0007727789542779495 0.0001949347433830985 +93.00286000393476 -0.20417178550717707 1.9768474271164196e-07 0.0007698678791708447 0.00019421530098359297 +93.04250308877519 -0.20417178903126418 1.967960195679692e-07 0.0007669676678475181 0.00019349849141372447 +93.08214617390928 -0.20417179253908635 1.9591132942428557e-07 0.0007640782812886052 0.00019278430047944622 +93.12178925933584 -0.20417179603071878 1.9503065379549044e-07 0.0007611996883010737 0.00019207271780957277 +93.16143234505358 -0.20417179950623768 1.9415397443941567e-07 0.0007583318414951497 0.0001913637404954063 +93.20107543106135 -0.20417180296571794 1.9328127281178976e-07 0.0007554746897851837 0.00019065735439341753 +93.24071851735792 -0.2041718064092346 1.9241253083290164e-07 0.0007526282103553052 0.0001899535524362113 +93.2803616039421 -0.2041718098368617 1.9154773030078467e-07 0.0007497923550369826 0.00018925232369077316 +93.32000469081267 -0.20417181324867376 1.9068685312382898e-07 0.0007469670773058322 0.00018855366097119523 +93.35964777796849 -0.20417181664474393 1.8982988129832148e-07 0.0007441523676739637 0.00018785755343838533 +93.39929086540833 -0.20417182002514642 1.8897679684215884e-07 0.0007413481482820844 0.0001871639897061896 +93.43893395313103 -0.20417182338995368 1.8812758201371126e-07 0.0007385544073447121 0.00018647296237078118 +93.47857704113541 -0.20417182673923864 1.8728221914328195e-07 0.0007357710863780082 0.00018578446633777 +93.51822012942027 -0.20417183007307357 1.8644069044696775e-07 0.0007329981702045445 0.00018509848673907458 +93.5578632179845 -0.20417183339153033 1.856029782488073e-07 0.0007302356069978187 0.0001844150123391851 +93.5975063068269 -0.2041718366946809 1.847690653495532e-07 0.0007274833617505852 0.00018373404306465795 +93.63714939594634 -0.20417183998259644 1.8393893411430174e-07 0.0007247413898046101 0.00018305556445991894 +93.67679248534165 -0.20417184325534823 1.8311256724342835e-07 0.0007220096637973939 0.00018237956819403025 +93.7164355750117 -0.20417184651300654 1.8228994750759182e-07 0.0007192881397382034 0.00018170604387261874 +93.7560786649553 -0.20417184975564204 1.8147105772259448e-07 0.0007165767824094681 0.00018103498649302188 +93.79572175517137 -0.20417185298332474 1.8065588078503634e-07 0.0007138755390979049 0.00018036637985421162 +93.83536484565875 -0.2041718561961241 1.7984439974981558e-07 0.0007111843938409126 0.00017970022495738595 +93.87500793641637 -0.20417185939410953 1.79036597545536e-07 0.0007085033023895617 0.0001790365050889744 +93.91465102744299 -0.20417186257734998 1.7823245739228716e-07 0.0007058322300829727 0.00017837521432530643 +93.95429411873758 -0.20417186574591453 1.7743196250685215e-07 0.0007031711294466122 0.00017771634364771905 +93.99393721029901 -0.20417186889987113 1.766350961968606e-07 0.0007005199738806335 0.0001770598842036137 +94.03358030212615 -0.20417187203928785 1.7584184176457953e-07 0.0006978787220477417 0.00017640582724535924 +94.07322339421796 -0.2041718751642322 1.7505218272534033e-07 0.000695247357865718 0.00017575416249416566 +94.11286648657327 -0.2041718782747729 1.7426610269284143e-07 0.0006926257974912757 0.00017510488824992647 +94.15250957919098 -0.20417188137097528 1.7348358506437776e-07 0.0006900140465035949 0.0001744579835770235 +94.19215267207004 -0.2041718844529075 1.7270461366274228e-07 0.0006874120447164763 0.00017381345112098574 +94.23179576520936 -0.20417188752063495 1.719291722438167e-07 0.000684819773653664 0.00017317127676467556 +94.27143885860787 -0.20417189057422455 1.711572446505936e-07 0.0006822371908158835 0.00017253145486000943 +94.31108195226442 -0.20417189361374186 1.7038881464089122e-07 0.0006796642559793072 0.00017189397203299113 +94.35072504617804 -0.20417189663925162 1.6962386646006573e-07 0.0006771009623710504 0.00017125882723901262 +94.39036814034759 -0.2041718996508207 1.6886238384881924e-07 0.0006745472165617835 0.00017062600406702588 +94.43001123477205 -0.20417190264851293 1.6810435115128253e-07 0.0006720030255399008 0.00016999549891208917 +94.46965432945032 -0.20417190563239304 1.6734975256647075e-07 0.0006694683491058413 0.00016936730457097705 +94.50929742438136 -0.20417190860252554 1.6659857229370434e-07 0.0006669431432407587 0.00016874140846988718 +94.54894051956414 -0.20417191155897396 1.658507947031373e-07 0.0006644273844070058 0.00016811780254588147 +94.58858361499763 -0.20417191450180275 1.6510640422348504e-07 0.000661921014373203 0.0001674964828305832 +94.62822671068069 -0.20417191743107463 1.643653853229238e-07 0.0006594240324257475 0.00016687743590423386 +94.66786980661239 -0.20417192034685325 1.6362772268441372e-07 0.0006569363652679522 0.00016626066003677838 +94.70751290279165 -0.2041719232492005 1.6289340082637767e-07 0.0006544580307935407 0.00016564614110380906 +94.74715599921744 -0.2041719261381798 1.621624044391328e-07 0.0006519889410663157 0.00016503387092645861 +94.78679909588875 -0.20417192901385314 1.614347184538447e-07 0.0006495290921972439 0.0001644238470112734 +94.82644219280458 -0.20417193187628235 1.6071032750444275e-07 0.0006470784314549314 0.00016381605388692273 +94.86608528996382 -0.20417193472552922 1.599892167807292e-07 0.0006446369402578235 0.000163210492425599 +94.90572838736558 -0.20417193756165497 1.592713708645187e-07 0.0006422045705850977 0.00016260714092939104 +94.94537148500879 -0.20417194038472028 1.5855677531970974e-07 0.000639781312076101 0.00016200600672304608 +94.98501458289243 -0.2041719431947863 1.5784541491531615e-07 0.0006373671097517088 0.00016140707227167337 +95.02465768101558 -0.20417194599191343 1.5713727490775703e-07 0.0006349619431592722 0.00016081032947521688 +95.06430077937713 -0.204171948776162 1.564323407259078e-07 0.0006325657595617076 0.0001602157772443522 +95.10394387797618 -0.2041719515475914 1.5573059753201028e-07 0.0006301785601284172 0.0001596234024216088 +95.1435869768117 -0.20417195430626203 1.5503203073313043e-07 0.0006278002721228508 0.0001590331950638047 +95.18323007588273 -0.20417195705223298 1.5433662595014635e-07 0.0006254308813327179 0.00015844515366379429 +95.22287317518831 -0.2041719597855629 1.5364436857774345e-07 0.0006230703675179145 0.00015785926409703717 +95.26251627472737 -0.20417196250631098 1.529552443004792e-07 0.0006207186665029648 0.0001572755251424731 +95.30215937449908 -0.20417196521453543 1.5226923869306056e-07 0.0006183757765110159 0.00015669392144089446 +95.34180247450236 -0.2041719679102949 1.5158633768150997e-07 0.0006160416477151534 0.00015611445406643043 +95.3814455747363 -0.20417197059364703 1.5090652681117245e-07 0.0006137162496103833 0.00015553710370101132 +95.42108867519993 -0.20417197326464967 1.5022979218115404e-07 0.0006113995493944767 0.00015496187476434715 +95.46073177589228 -0.2041719759233601 1.4955611954826066e-07 0.0006090915240658389 0.00015438875053504987 +95.50037487681243 -0.20417197856983527 1.4888549503463107e-07 0.0006067921376146745 0.00015381772905830217 +95.54001797795945 -0.20417198120413238 1.482179046406696e-07 0.0006045013621156866 0.00015324879935589355 +95.57966107933233 -0.20417198382630808 1.4755333449103862e-07 0.0006022191436837004 0.0001526819538025797 +95.61930418093016 -0.2041719864364185 1.4689177088492537e-07 0.0005999454811368607 0.00015211719043168364 +95.65894728275204 -0.20417198903452002 1.462331999547662e-07 0.000597680319476133 0.00015155449488507325 +95.69859038479697 -0.20417199162066832 1.4557760813160678e-07 0.0005954236289363417 0.00015099386430604252 +95.73823348706412 -0.2041719941949185 1.4492498167558352e-07 0.000593175399732075 0.00015043528715797657 +95.77787658955249 -0.20417199675732647 1.442753070352205e-07 0.0005909355790647897 0.00014987875476406534 +95.81751969226117 -0.20417199930794724 1.4362857087045401e-07 0.000588704139339757 0.00014932426922792437 +95.85716279518928 -0.20417200184683512 1.4298475959879915e-07 0.0005864810548418995 0.00014877181096898886 +95.89680589833588 -0.20417200437404506 1.4234385995604523e-07 0.0005842662941547273 0.00014822138334723452 +95.93644900170004 -0.20417200688963097 1.4170585861882917e-07 0.0005820598261319398 0.00014767297416506294 +95.97609210528091 -0.20417200939364707 1.4107074225540325e-07 0.0005798616211603424 0.00014712657243992432 +96.01573520907758 -0.20417201188614706 1.4043849778498882e-07 0.000577671637622145 0.0001465821769272408 +96.0553783130891 -0.2041720143671845 1.398091120117058e-07 0.0005754898661666163 0.0001460397754697782 +96.09502141731465 -0.20417201683681263 1.391825719710976e-07 0.0005733162539784983 0.00014549936412017804 +96.13466452175328 -0.20417201929508447 1.385588645381045e-07 0.0005711507747126297 0.0001449609335550319 +96.17430762640416 -0.20417202174205265 1.3793797689077168e-07 0.0005689934188140638 0.00014442448032904695 +96.21395073126635 -0.20417202417776958 1.3731989618143412e-07 0.0005668441310664483 0.00014388999555658914 +96.25359383633902 -0.20417202660228803 1.3670460938425254e-07 0.0005647028949888663 0.00014335746851489234 +96.29323694162125 -0.2041720290156591 1.3609210389294777e-07 0.0005625696869800987 0.0001428268955165871 +96.33288004711221 -0.2041720314179355 1.354823670299355e-07 0.0005604444521121878 0.00014229827068607556 +96.372523152811 -0.20417203380916796 1.3487538614876592e-07 0.0005583271919923299 0.00014177158563723893 +96.41216625871681 -0.20417203618940863 1.3427114845951035e-07 0.0005562178488633674 0.0001412468290289316 +96.45180936482873 -0.20417203855870736 1.3366964172811992e-07 0.0005541164316066746 0.00014072399956056885 +96.4914524711459 -0.2041720409171163 1.330708531969404e-07 0.0005520228589313122 0.00014020308519310942 +96.5310955776675 -0.20417204326468485 1.324747707328045e-07 0.0005499371485646515 0.00013968408575553963 +96.57073868439267 -0.20417204560146407 1.3188138187238702e-07 0.0005478592413342447 0.00013916699132142577 +96.61038179132055 -0.2041720479275042 1.3129067425014142e-07 0.0005457891076878001 0.00013865179181680735 +96.65002489845031 -0.20417205024285412 1.3070263567849295e-07 0.0005437267526552437 0.00013813848426082312 +96.68966800578112 -0.2041720525475644 1.3011725396750704e-07 0.0005416721100870446 0.00013762705877260327 +96.72931111331215 -0.2041720548416839 1.2953451704273246e-07 0.0005396251638658647 0.00013711751218219148 +96.76895422104249 -0.204172057125262 1.28954412773376e-07 0.0005375858892689486 0.000136609834293194 +96.80859732897143 -0.20417205939834746 1.2837692913491214e-07 0.0005355542606328244 0.00013610401857522703 +96.84824043709808 -0.20417206166098942 1.2780205419508935e-07 0.00053353023277925 0.00013560006005200982 +96.88788354542162 -0.20417206391323547 1.2722977613570253e-07 0.0005315138046833642 0.00013509795428695394 +96.92752665394123 -0.20417206615513453 1.266600829154511e-07 0.0005295049329429052 0.00013459768768785601 +96.96716976265611 -0.2041720683867345 1.260929628502944e-07 0.0005275035873493857 0.00013409925792462346 +97.00681287156547 -0.20417207060808304 1.2552840424455193e-07 0.0005255097347837567 0.0001336026592020867 +97.04645598066843 -0.20417207281922775 1.2496639527850392e-07 0.0005235233664953883 0.0001331078800417432 +97.08609908996428 -0.2041720750202162 1.2440692449455938e-07 0.0005215444320655962 0.0001326149212912251 +97.12574219945212 -0.2041720772110951 1.2384998015052037e-07 0.0005195729211380486 0.00013212376934808033 +97.16538530913124 -0.20417207939191173 1.2329555077650822e-07 0.0005176087952769775 0.00013163441986096476 +97.20502841900084 -0.20417208156271238 1.2274362502288772e-07 0.0005156520384510435 0.0001311468720808222 +97.24467152906003 -0.2041720837235438 1.2219419120235913e-07 0.0005137026157597859 0.00013066110856935803 +97.28431463930812 -0.20417208587445215 1.2164723825229019e-07 0.0005117605015519008 0.000130177131959146 +97.32395774974431 -0.20417208801548323 1.211027546344887e-07 0.0005098256747312508 0.00012969493064334304 +97.36360086036777 -0.20417209014668314 1.2056072927153583e-07 0.0005078980896579165 0.00012921450435612926 +97.40324397117777 -0.20417209226809752 1.200211507339612e-07 0.0005059777355958525 0.00012873583597762382 +97.4428870821735 -0.20417209437977135 1.1948400799086792e-07 0.0005040645862202994 0.0001282589284052386 +97.48253019335421 -0.20417209648175028 1.1894929000315806e-07 0.0005021586050055858 0.00012778377272311037 +97.52217330471919 -0.2041720985740787 1.1841698560440815e-07 0.0005002597812249569 0.00012731036201869622 +97.56181641626755 -0.20417210065680202 1.1788708376766899e-07 0.0004983680605574173 0.00012683868798023793 +97.60145952799863 -0.20417210272996414 1.1735957361808715e-07 0.0004964834576865979 0.00012636874703058045 +97.64110263991158 -0.20417210479361014 1.1683444429871859e-07 0.0004946058950603597 0.00012590053375746336 +97.68074575200576 -0.20417210684778306 1.1631168487466422e-07 0.0004927353940417323 0.00012543404136915477 +97.7203888642803 -0.2041721088925279 1.1579128446324661e-07 0.000490871892853954 0.00012496925854755574 +97.76003197673454 -0.20417211092788765 1.1527323250744375e-07 0.000489015393445065 0.00012450618737908884 +97.7996750893677 -0.2041721129539061 1.1475751811683839e-07 0.0004871658468137737 0.00012404481259656522 +97.839318202179 -0.20417211497062648 1.1424413075961905e-07 0.000485323245263536 0.00012358513567874822 +97.8789613151678 -0.20417211697809168 1.1373305984204339e-07 0.00048348755768939564 0.00012312714883229537 +97.91860442833327 -0.2041721189763448 1.1322429468248227e-07 0.00048165876060190014 0.00012267084102312293 +97.9582475416747 -0.2041721209654288 1.1271782485429643e-07 0.00047983680967803873 0.00012221620987443844 +97.99789065519136 -0.20417212294538575 1.1221363984898233e-07 0.0004780216997761205 0.00012176324828317655 +98.03753376888251 -0.20417212491625789 1.1171172945720494e-07 0.00047621340807750485 0.00012131195339685058 +98.07717688274745 -0.20417212687808775 1.112120830444574e-07 0.0004744118851514139 0.00012086231700729606 +98.11681999678547 -0.20417212883091662 1.1071469049898771e-07 0.00047261713839237925 0.000120414333153743 +98.15646311099583 -0.20417213077478683 1.1021954134339141e-07 0.00047082910984510917 0.00011996799141550148 +98.19610622537778 -0.20417213270973963 1.0972662561091565e-07 0.0004690477911295774 0.00011952329573728991 +98.23574933993068 -0.20417213463581604 1.092359329268879e-07 0.00046727317157214845 0.00011908023280938743 +98.27539245465375 -0.20417213655305744 1.0874745329287259e-07 0.0004655052061359861 0.00011863879900915669 +98.3150355695463 -0.20417213846150495 1.0826117650482574e-07 0.00046374386564796295 0.00011819898502646416 +98.35467868460769 -0.204172140361199 1.0777709261636282e-07 0.00046198914234056544 0.0001177607874056831 +98.39432179983717 -0.2041721422521804 1.0729519164497096e-07 0.00046024099662575024 0.00011732420125789608 +98.43396491523403 -0.2041721441344887 1.0681546360414705e-07 0.0004584994333073545 0.00011688922060799667 +98.47360803079755 -0.20417214600816494 1.0633789866765394e-07 0.0004567643937067885 0.00011645583992582035 +98.5132511465271 -0.2041721478732493 1.0586248688972334e-07 0.00045503584943349724 0.00011602404879904152 +98.55289426242196 -0.2041721497297806 1.0538921855004197e-07 0.0004533138132908068 0.00011559384729011896 +98.59253737848144 -0.2041721515777989 1.0491808381251216e-07 0.0004515982463798324 0.00011516522519203398 +98.6321804947049 -0.2041721534173437 1.0444907310035004e-07 0.00044988911160649117 0.00011473818377633195 +98.67182361109157 -0.20417215524845458 1.0398217657523417e-07 0.0004481863786255017 0.00011431270629874669 +98.71146672764084 -0.20417215707116976 1.0351738469628977e-07 0.0004464900534010322 0.00011388879599815208 +98.75110984435203 -0.20417215888552842 1.030546879538425e-07 0.0004448000961425914 0.00011346644669670491 +98.79075296122446 -0.2041721606915697 1.0259407667195446e-07 0.0004431164788737839 0.00011304564850365299 +98.83039607825744 -0.20417216248933126 1.0213554137167536e-07 0.0004414391953483225 0.00011262639494041651 +98.87003919545033 -0.20417216427885232 1.0167907270954602e-07 0.0004397681925482539 0.00011220868478913136 +98.90968231280242 -0.20417216606017063 1.0122466120154705e-07 0.0004381034715804757 0.00011179250948707719 +98.94932543031311 -0.20417216783332384 1.0077229753207766e-07 0.0004364450064406257 0.00011137786816362889 +98.98896854798173 -0.20417216959835005 1.0032197241739918e-07 0.0004347927702314243 0.00011096475191125008 +99.02861166580757 -0.20417217135528712 9.987367642530906e-08 0.0004331467251791883 0.00011055315077345481 +99.06825478379004 -0.20417217310417204 9.942740042204427e-08 0.0004315068638876611 0.00011014306444361947 +99.1078979019285 -0.2041721748450419 9.898313524711286e-08 0.00042987318143416386 0.00010973448787002184 +99.14754102022222 -0.20417217657793452 9.854087169768744e-08 0.0004282456134987055 0.00010932741149017515 +99.1871841386706 -0.20417217830288611 9.810060073588329e-08 0.0004266241666138698 0.00010892183420497846 +99.22682725727304 -0.20417218001993395 9.766231320631317e-08 0.00042500880807995906 0.00010851775113771495 +99.26647037602882 -0.2041721817291142 9.722600026798692e-08 0.0004233995241182217 0.00010811515642475632 +99.30611349493736 -0.20417218343046362 9.679165257736944e-08 0.00042179626899895804 0.0001077140326982191 +99.34575661399802 -0.2041721851240179 9.635926160482258e-08 0.00042019905133182785 0.00010731439423481357 +99.38539973321011 -0.20417218680981372 9.592881815299971e-08 0.00041860782041777813 0.00010691622143293354 +99.42504285257311 -0.2041721884878862 9.550031354807807e-08 0.00041702258589529275 0.0001065195143280681 +99.4646859720863 -0.20417219015827148 9.507373887887432e-08 0.0004154433043370952 0.00010612426799988144 +99.50432909174906 -0.20417219182100566 9.464908538874063e-08 0.00041386994026653686 0.0001057304749763359 +99.54397221156084 -0.2041721934761235 9.422634441714646e-08 0.0004123024889622991 0.00010533813290501172 +99.58361533152097 -0.20417219512366033 9.380550706905789e-08 0.0004107409304862945 0.00010494723107857308 +99.62325845162883 -0.2041721967636511 9.338656489208161e-08 0.0004091852403114121 0.00010455777037771358 +99.66290157188378 -0.20417219839613054 9.296950927886328e-08 0.00040763540341876725 0.00010416974461121955 +99.70254469228531 -0.20417220002113376 9.25543314371426e-08 0.00040609138946745945 0.00010378314457670875 +99.74218781283273 -0.20417220163869565 9.214102293680422e-08 0.0004045531683074272 0.00010339796346462868 +99.78183093352541 -0.20417220324884952 9.172957534500774e-08 0.00040302074004705584 0.00010301420262126445 +99.82147405436282 -0.2041722048516308 9.131998021021938e-08 0.00040149405651855244 0.00010263185491774916 +99.86111717534432 -0.20417220644707268 9.09122290646941e-08 0.00039997312810995914 0.00010225091596539645 +99.90076029646931 -0.20417220803520963 9.050631343938595e-08 0.00039845790396266634 0.00010187137348707756 +99.94040341773726 -0.20417220961607527 9.010222514916976e-08 0.00039694836864620416 0.00010149323351165138 +99.98004653914747 -0.20417221118970297 8.969995582316067e-08 0.00039544452176846465 0.00010111648403880151 +100.01968966069938 -0.20417221275612632 8.929949721529689e-08 0.00039394632783375656 0.00010074112279661504 +100.05933278239247 -0.2041722143153789 8.890084101732912e-08 0.0003924537566008948 0.00010036714169715528 +100.09897590422604 -0.20417221586749376 8.850397901628434e-08 0.00039096678662713715 9.999453421552126e-05 +100.1386190261996 -0.20417221741250335 8.810890328086803e-08 0.0003894854256026588 9.962330214879156e-05 +100.17826214831256 -0.20417221895044113 8.771560552023919e-08 0.00038800962337410703 9.925343906859388e-05 +100.21790527056427 -0.20417222048133943 8.73240777058619e-08 0.0003865393768293173 9.888493546964975e-05 +100.2575483929542 -0.2041722220052312 8.693431166249653e-08 0.0003850746385761841 9.851778518929785e-05 +100.29719151548187 -0.20417222352214778 8.654629959542955e-08 0.00038361543865125125 9.815199041938911e-05 +100.33683463814654 -0.20417222503212273 8.616003344719558e-08 0.00038216169839152647 9.778754160501861e-05 +100.37647776094772 -0.20417222653518716 8.577550535002237e-08 0.0003807134520465046 9.742444057528632e-05 +100.41612088388487 -0.2041722280313735 8.539270719469398e-08 0.0003792706306052711 9.70626673424256e-05 +100.45576400695738 -0.20417222952071348 8.501163130417596e-08 0.00037783323101197273 9.670222721280201e-05 +100.49540713016468 -0.20417223100323822 8.463226995492551e-08 0.0003764012549823704 9.634312163216413e-05 +100.53505025350628 -0.2041722324789801 8.425461510307872e-08 0.0003749746453603208 9.59853337285778e-05 +100.57469337698151 -0.20417223394796938 8.387865918976644e-08 0.00037355341151422894 9.562886635892542e-05 +100.61433650058993 -0.20417223541023813 8.350439433563786e-08 0.00037213752219200907 9.52737053348111e-05 +100.65397962433096 -0.20417223686581673 8.313181310914034e-08 0.00037072696512495526 9.49198593821363e-05 +100.69362274820398 -0.20417223831473671 8.276090758837275e-08 0.00036932170049984816 9.45673123948192e-05 +100.73326587220853 -0.2041722397570284 8.239167042091264e-08 0.0003679217242387376 9.421606874859526e-05 +100.77290899634396 -0.20417224119272237 8.202409383330508e-08 0.0003665270145485514 9.386611525913096e-05 +100.81255212060982 -0.20417224262184955 8.165817037547271e-08 0.00036513755080762084 9.351745085127467e-05 +100.85219524500557 -0.20417224404443957 8.129389254034956e-08 0.00036375331469981577 9.317007235421002e-05 +100.8918383695306 -0.20417224546052315 8.09312528503131e-08 0.0003623742824637826 9.282397400800595e-05 +100.93148149418442 -0.20417224687013 8.057024377728483e-08 0.00036100045152577054 9.247914839055685e-05 +100.97112461896651 -0.20417224827329025 8.021085812364561e-08 0.0003596317722546971 9.213559587717146e-05 +101.01076774387629 -0.2041722496700333 7.985308833039388e-08 0.00035826825739282203 9.179330636664002e-05 +101.05041086891325 -0.20417225106038928 7.949692713702293e-08 0.00035690986322807814 9.145227916834285e-05 +101.09005399407687 -0.2041722524443875 7.91423673370846e-08 0.000355556582406368 9.111251301338689e-05 +101.12969711936663 -0.20417225382205684 7.878940151001123e-08 0.00035420840554510244 9.077399444810674e-05 +101.16934024478194 -0.20417225519342716 7.843802251606416e-08 0.00035286529577140845 9.043672298386304e-05 +101.2089833703224 -0.2041722565585273 7.808822302133356e-08 0.0003515272317155918 9.01006923359713e-05 +101.24862649598742 -0.20417225791738622 7.773999599988894e-08 0.0003501942020713895 8.976590198386286e-05 +101.28826962177645 -0.20417225927003257 7.739333428252305e-08 0.00034886619401774244 8.943234634178631e-05 +101.32791274768901 -0.20417226061649496 7.704823080353176e-08 0.0003475431857656903 8.910001994509772e-05 +101.36755587372461 -0.2041722619568022 7.670467847604057e-08 0.00034622515226549684 8.876891952271788e-05 +101.40719899988271 -0.20417226329098262 7.636267008700152e-08 0.00034491207737220533 8.843903459230806e-05 +101.44684212616282 -0.20417226461906446 7.602219896860578e-08 0.000343603952128822 8.81103741533684e-05 +101.48648525256442 -0.2041722659410757 7.568325781551325e-08 0.0003423007457503846 8.778291618015379e-05 +101.526128379087 -0.20417226725704407 7.534583985105053e-08 0.00034100246146032863 8.745666829180164e-05 +101.56577150573007 -0.20417226856699852 7.500993829033027e-08 0.0003397090380547675 8.713162668494277e-05 +101.60541463249312 -0.2041722698709659 7.467554606227105e-08 0.0003384204945634248 8.680778159838013e-05 +101.64505775937566 -0.20417227116897407 7.434265622745806e-08 0.00033713679742899293 8.64851241880752e-05 +101.68470088637719 -0.20417227246105055 7.40112622695574e-08 0.0003358579289873483 8.616366323472928e-05 +101.7243440134972 -0.20417227374722235 7.368135723452878e-08 0.00033458388423657535 8.584338528841089e-05 +101.76398714073524 -0.20417227502751692 7.335293434834203e-08 0.0003333146509578001 8.552428771869958e-05 +101.80363026809077 -0.20417227630196152 7.302598699531728e-08 0.0003320501812282197 8.520636702394249e-05 +101.84327339556333 -0.2041722775705832 7.270050841960567e-08 0.00033079046620840274 8.488961975233328e-05 +101.88291652315245 -0.2041722788334084 7.237649192941e-08 0.00032953551059588284 8.45740395778465e-05 +101.92255965085762 -0.20417228009046418 7.205393101319597e-08 0.00032828527547319877 8.42596243896774e-05 +101.96220277867835 -0.20417228134177726 7.173281889377919e-08 0.0003270397308476494 8.394636597631783e-05 +102.00184590661418 -0.20417228258737383 7.141314916834063e-08 0.00032579888991643365 8.363426465348457e-05 +102.04148903466462 -0.20417228382728056 7.10949152180343e-08 0.00032456270896978596 8.332331422407081e-05 +102.08113216282919 -0.2041722850615231 7.077811046437242e-08 0.000323331189980933 8.301350570003649e-05 +102.12077529110745 -0.2041722862901275 7.046272862023746e-08 0.0003221043291841505 8.270484654186682e-05 +102.16041841949891 -0.20417228751312078 7.014876310431523e-08 0.0003208820684638862 8.239732319147776e-05 +102.20006154800309 -0.2041722887305281 6.983620748747757e-08 0.0003196644017122363 8.209093185088963e-05 +102.2397046766195 -0.20417228994237488 6.952505556197338e-08 0.0003184513571207728 8.178567946848769e-05 +102.27934780534771 -0.2041722911486876 6.921530071136783e-08 0.0003172428508209965 8.148154372062372e-05 +102.31899093418727 -0.204172292349491 6.890693668438718e-08 0.00031603890976862105 8.117853102347166e-05 +102.3586340631377 -0.20417229354481084 6.859995723765581e-08 0.00031483950668746426 8.087663865958835e-05 +102.39827719219846 -0.20417229473467238 6.829435609218973e-08 0.00031364461756046167 8.057585933560911e-05 +102.43792032136926 -0.20417229591910094 6.799012696045072e-08 0.0003124542197397556 8.027618936101972e-05 +102.47756345064947 -0.2041722970981208 6.768726358318907e-08 0.0003112683277848211 7.99776196735077e-05 +102.51720658003876 -0.20417229827175812 6.738575990934694e-08 0.00031008687789709486 7.96801557781993e-05 +102.55684970953658 -0.20417229944003665 6.708560978542834e-08 0.00030890989351126975 7.938379476093696e-05 +102.59649283914257 -0.2041723006029815 6.678680693967336e-08 0.00030773733402356633 7.908852267157127e-05 +102.63613596885625 -0.2041723017606171 6.648934527795116e-08 0.0003065691990219907 7.879433702225977e-05 +102.67577909867717 -0.20417230291296787 6.619321886393642e-08 0.0003054054769430332 7.850124220468774e-05 +102.71542222860485 -0.20417230406005826 6.589842152350477e-08 0.00030424613440857383 7.820922644050157e-05 +102.75506535863887 -0.20417230520191265 6.560494728018045e-08 0.0003030911504103492 7.791828823882178e-05 +102.79470848877881 -0.2041723063385548 6.531279016382089e-08 0.0003019405352456994 7.762842339297102e-05 +102.8343516190242 -0.20417230747000914 6.502194414958297e-08 0.000300794254325326 7.733962886586863e-05 +102.87399474937465 -0.2041723085962995 6.473240340299715e-08 0.00029965227593839103 7.705190194061514e-05 +102.91363787982966 -0.20417230971744912 6.44441619344366e-08 0.0002985146163386787 7.676523670941798e-05 +102.9532810103888 -0.20417231083348222 6.415721382795321e-08 0.00029738123998298064 7.647962591641701e-05 +102.99292414105173 -0.20417231194442242 6.38715532660933e-08 0.00029625213144443026 7.61950695889716e-05 +103.03256727181788 -0.2041723130502929 6.35871744047092e-08 0.0002951272771044826 7.591156475291403e-05 +103.07221040268693 -0.20417231415111714 6.330407152507967e-08 0.00029400666386265195 7.562910560454496e-05 +103.11185353365845 -0.20417231524691806 6.30222387521604e-08 0.0002928902820503394 7.534768894232648e-05 +103.15149666473194 -0.20417231633771904 6.274167043915891e-08 0.0002917781041020156 7.506731354383596e-05 +103.19113979590699 -0.20417231742354314 6.246236072252664e-08 0.00029067012523346355 7.478797059169876e-05 +103.23078292718324 -0.20417231850441342 6.218430402306234e-08 0.00028956630855400586 7.450965889193244e-05 +103.27042605856025 -0.20417231958035242 6.190749460872379e-08 0.00028846665752424954 7.423237630736507e-05 +103.31006919003752 -0.20417232065138277 6.163192690077233e-08 0.0002873711631051992 7.395611751397406e-05 +103.34971232161479 -0.2041723217175273 6.135759518726094e-08 0.0002862797886895943 7.368088030585348e-05 +103.38935545329147 -0.20417232277880845 6.108449391551955e-08 0.00028519253265707326 7.340665524234543e-05 +103.4289985850673 -0.20417232383524844 6.081261749080886e-08 0.0002841093743907008 7.313344374915314e-05 +103.46864171694179 -0.20417232488686976 6.054196048886466e-08 0.00028303030843527627 7.286124456785595e-05 +103.50828484891451 -0.20417232593369442 6.027251723533366e-08 0.0002819553008221411 7.259004615122657e-05 +103.54792798098511 -0.2041723269757447 6.000428227807781e-08 0.0002808843449088905 7.231985044590723e-05 +103.58757111315315 -0.20417232801304222 5.97372502541071e-08 0.0002798174414306279 7.205065457276373e-05 +103.62721424541823 -0.20417232904560936 5.9471415566588736e-08 0.0002787545467858097 7.17824479948039e-05 +103.66685737777996 -0.20417233007346713 5.920677300420028e-08 0.0002776956847033169 7.151523727608583e-05 +103.70650051023793 -0.20417233109663813 5.894331692973935e-08 0.0002766407936223459 7.124901017356298e-05 +103.74614364279171 -0.20417233211514343 5.8681042173008274e-08 0.00027558988123327404 7.098376974143485e-05 +103.78578677544094 -0.2041723331290044 5.841994322948081e-08 0.0002745429362082852 7.071950347050378e-05 +103.82542990818521 -0.2041723341382424 5.816001497193999e-08 0.00027349994173221697 7.045621871985827e-05 +103.8650730410242 -0.204172335142879 5.790125185842302e-08 0.00027246088638087476 7.019390171573252e-05 +103.90471617395731 -0.2041723361429352 5.7643648788326216e-08 0.000271425748160254 6.99325548693454e-05 +103.9443593069844 -0.20417233713843205 5.738720046262606e-08 0.0002703945071814209 6.967217100887735e-05 +103.98400244010493 -0.20417233812939062 5.713190178520097e-08 0.00026936715591262126 6.941275507612145e-05 +104.02364557331855 -0.20417233911583155 5.687774740081132e-08 0.0002683436860917369 6.915429500598413e-05 +104.06328870662487 -0.20417234009777574 5.6624732165213346e-08 0.000267324078183652 6.889678778716493e-05 +104.1029318400235 -0.2041723410752442 5.637285098592079e-08 0.00026630830691224484 6.864023457535467e-05 +104.14257497351407 -0.20417234204825704 5.612209870399451e-08 0.00026529637764307376 6.838462956301347e-05 +104.18221810709619 -0.20417234301683476 5.5872470240490464e-08 0.00026428826644972443 6.81299715999725e-05 +104.22186124076947 -0.20417234398099804 5.562396038176853e-08 0.0002632839625722413 6.78762475117644e-05 +104.26150437453353 -0.2041723449407673 5.537656422303576e-08 0.0002622834308938043 6.762346578215987e-05 +104.30114750838807 -0.20417234589616226 5.513027660454453e-08 0.00026128668540215615 6.737161242705573e-05 +104.34079064233258 -0.2041723468472031 5.488509266960627e-08 0.0002602937112140521 6.712069469929754e-05 +104.3804337763668 -0.20417234779391027 5.46410073168454e-08 0.0002593044697474928 6.687070130646494e-05 +104.42007691049028 -0.2041723487363034 5.4398015754949656e-08 0.0002583189728781908 6.662163851199687e-05 +104.45972004470272 -0.20417234967440237 5.415611271752201e-08 0.00025733717817902563 6.63734894263502e-05 +104.49936317900365 -0.20417235060822694 5.391529352332063e-08 0.0002563590951201261 6.612625748900441e-05 +104.53900631339286 -0.20417235153779634 5.367555323601129e-08 0.0002553847217703652 6.587994306319691e-05 +104.57864944786984 -0.20417235246313095 5.343688687450561e-08 0.0002544140036326142 6.563453400490754e-05 +104.61829258243426 -0.20417235338424974 5.319928975651781e-08 0.0002534469535406271 6.539003452517868e-05 +104.65793571708579 -0.204172354301172 5.296275698553488e-08 0.00025248356054821105 6.514644056689646e-05 +104.69757885182405 -0.20417235521391744 5.272728364129787e-08 0.000251523792029648 6.49037454057044e-05 +104.73722198664868 -0.20417235612250484 5.2492865111175376e-08 0.00025056764982422144 6.466194764730351e-05 +104.77686512155933 -0.20417235702695324 5.2259496451156e-08 0.0002496151318521908 6.442103958112582e-05 +104.81650825655565 -0.20417235792728183 5.2027173088817075e-08 0.0002486662061194044 6.418102664843097e-05 +104.85615139163724 -0.20417235882351004 5.179589016178429e-08 0.00024772084934012367 6.394189965031071e-05 +104.8957945268038 -0.20417235971565595 5.156564312589011e-08 0.00024677906582353437 6.370365952819091e-05 +104.93543766205494 -0.20417236060373847 5.1336427165298994e-08 0.0002458408480095433 6.34662972964933e-05 +104.97508079739032 -0.2041723614877764 5.1108237593561775e-08 0.0002449061797680212 6.322981172412353e-05 +105.01472393280957 -0.20417236236778868 5.088106993082368e-08 0.00024397501767459647 6.299420340612591e-05 +105.05436706831242 -0.2041723632437933 5.065491944224465e-08 0.00024304737038819454 6.275946345449163e-05 +105.09401020389839 -0.20417236411580889 5.042978162064861e-08 0.00024212323610677848 6.252559375699184e-05 +105.13365333956729 -0.20417236498385358 5.0205651804126756e-08 0.0002412025905837135 6.229258946892351e-05 +105.17329647531865 -0.20417236584794596 4.998252547356663e-08 0.0002402854125459978 6.206044278578164e-05 +105.21293961115218 -0.2041723667081036 4.976039814649465e-08 0.0002393717177897436 6.182915840512222e-05 +105.25258274706758 -0.20417236756434512 4.953926518244079e-08 0.00023846146063978538 6.159872660831509e-05 +105.2922258830644 -0.20417236841668832 4.931912225822055e-08 0.00023755464227842647 6.13691503467289e-05 +105.33186901914239 -0.20417236926515134 4.909996473523274e-08 0.00023665124526897068 6.114041904743183e-05 +105.3715121553012 -0.20417237010975134 4.88817882925564e-08 0.0002357512702200771 6.0912534877898004e-05 +105.41115529154047 -0.20417237095050686 4.866458841886208e-08 0.00023485467906596898 6.0685493724967335e-05 +105.4507984278599 -0.20417237178743528 4.844836074795677e-08 0.00023396147903526738 6.045929024426626e-05 +105.49044156425911 -0.20417237262055368 4.8233100998586456e-08 0.00023307166232424144 6.0233928115381286e-05 +105.53008470073783 -0.20417237344988007 4.8018804646136e-08 0.00023218519915761457 6.000939913714551e-05 +105.56972783729563 -0.20417237427543178 4.7805467320499265e-08 0.00023130208930320726 5.978569848106703e-05 +105.60937097393233 -0.20417237509722605 4.759308481352153e-08 0.00023042231925653284 5.956282650140973e-05 +105.64901411064747 -0.20417237591528015 4.7381652756700505e-08 0.00022954586966752395 5.934077960260834e-05 +105.68865724744077 -0.20417237672961155 4.7171166850466745e-08 0.00022867271287984245 5.91195515092353e-05 +105.72830038431194 -0.2041723775402368 4.6961622806933666e-08 0.00022780287044374395 5.8899141924365496e-05 +105.7679435212606 -0.2041723783471732 4.675301646111314e-08 0.00022693631170606 5.867955015061242e-05 +105.80758665828651 -0.20417237915043773 4.654534346461556e-08 0.0002260730250823788 5.846076786222023e-05 +105.84722979538921 -0.20417237995004722 4.6338599701922634e-08 0.00022521299884908647 5.824279679697428e-05 +105.88687293256851 -0.20417238074601832 4.6132780898864954e-08 0.00022435623018843718 5.802562833705219e-05 +105.92651606982406 -0.20417238153836803 4.592788299221809e-08 0.00022350268938690977 5.780926797121741e-05 +105.96615920715551 -0.20417238232711235 4.5723901775161935e-08 0.0002226523847266385 5.759370968969329e-05 +106.00580234456257 -0.20417238311226824 4.5520833053226284e-08 0.00022180529363653896 5.737894574352675e-05 +106.04544548204493 -0.2041723838938526 4.5318672809487343e-08 0.0002209613921251094 5.7164980904581204e-05 +106.08508861960225 -0.20417238467188112 4.511741682030248e-08 0.00022012067743205617 5.695180201296492e-05 +106.12473175723423 -0.20417238544637029 4.4917061128935614e-08 0.00021928314897702388 5.6739414132149946e-05 +106.16437489494058 -0.20417238621733672 4.47176015534872e-08 0.00021844877249668583 5.652781069168002e-05 +106.204018032721 -0.20417238698479598 4.4519034248156825e-08 0.0002176175667001417 5.6316995811666634e-05 +106.24366117057517 -0.20417238774876453 4.4321354953416074e-08 0.00021678948942690005 5.610695565114372e-05 +106.28330430850272 -0.2041723885092583 4.412455982293115e-08 0.00021596455384407533 5.58976956045811e-05 +106.32294744650343 -0.2041723892662933 4.392864477832013e-08 0.0002151427307585734 5.5689209079544024e-05 +106.36259058457699 -0.2041723900198852 4.373360588710358e-08 0.00021432401607347662 5.548149220966866e-05 +106.40223372272305 -0.20417239077005003 4.3539439344165886e-08 0.00021350839464035894 5.527455351903254e-05 +106.44187686094135 -0.20417239151680355 4.334614089463766e-08 0.00021269585648662007 5.50683701291555e-05 +106.48151999923157 -0.20417239226016107 4.315370682412067e-08 0.00021188639104443498 5.486295373843095e-05 +106.5211631375934 -0.20417239300013823 4.296213323638584e-08 0.0002110799896261639 5.465829636512823e-05 +106.56080627602655 -0.20417239373675108 4.277141623966364e-08 0.00021027662378979688 5.445439725872264e-05 +106.6004494145308 -0.2041723944700146 4.258155202048802e-08 0.0002094762948472055 5.4251254768287934e-05 +106.6400925531057 -0.20417239519994398 4.239253660202908e-08 0.0002086789978659456 5.404886258987514e-05 +106.6797356917511 -0.20417239592655453 4.220436625799694e-08 0.00020788472665794828 5.3847220980657555e-05 +106.71937883046664 -0.20417239664986186 4.201703714059738e-08 0.0002070934504250244 5.364632681451831e-05 +106.75902196925206 -0.20417239736988133 4.1830545476661144e-08 0.00020630514884496535 5.344617550214225e-05 +106.798665108107 -0.20417239808662693 4.1644887468986705e-08 0.0002055198527594768 5.3246765958317e-05 +106.83830824703128 -0.20417239880011462 4.146005935096673e-08 0.0002047375096550718 5.3048091961905116e-05 +106.8779513860245 -0.20417239951035895 4.127605744320875e-08 0.00020395813194383863 5.285015528411354e-05 +106.91759452508646 -0.20417240021737512 4.109287792894544e-08 0.00020318169749290575 5.265295181342055e-05 +106.95723766421683 -0.20417240092117764 4.09105172332479e-08 0.00020240819636217433 5.2456479075465314e-05 +106.99688080341534 -0.20417240162178096 4.0728971528992875e-08 0.00020163764093317378 5.2260731831702326e-05 +107.03652394268173 -0.20417240231920067 4.054823722664962e-08 0.0002008699744106267 5.206571413441939e-05 +107.07616708201564 -0.20417240301345044 4.036831062975324e-08 0.0002001052177563386 5.1871414866566135e-05 +107.11581022141688 -0.20417240370454492 4.01891881003431e-08 0.00019934336012954513 5.167783401039008e-05 +107.15545336088516 -0.20417240439249904 4.0010866061175833e-08 0.0001985843865594933 5.148497359085398e-05 +107.19509650042014 -0.20417240507732695 3.9833340850171766e-08 0.00019782827265726012 5.129282576886158e-05 +107.23473964002156 -0.20417240575904327 3.9656608923317485e-08 0.0001970750100295241 5.1101391866741805e-05 +107.2743827796892 -0.20417240643766146 3.948066658499976e-08 0.00019632461898640881 5.091066129757106e-05 +107.31402591942273 -0.20417240711319595 3.930551045432756e-08 0.00019557707555632295 5.072064163887517e-05 +107.35366905922191 -0.2041724077856619 3.9131136993483864e-08 0.0001948323307707927 5.053132881218414e-05 +107.39331219908645 -0.20417240845507198 3.8957542493167335e-08 0.00019409042952675212 5.0342713213568885e-05 +107.4329553390161 -0.20417240912144127 3.8784723541239476e-08 0.0001933513142811078 5.01547957851181e-05 +107.47259847901053 -0.20417240978478315 3.8612676654952754e-08 0.0001926149941559321 4.996757236331492e-05 +107.5122416190695 -0.20417241044511159 3.8441398386992546e-08 0.000191881465492389 4.978104886478786e-05 +107.5518847591928 -0.20417241110244022 3.827088532426237e-08 0.00019115071882408043 4.9595217599147944e-05 +107.5915278993801 -0.20417241175678294 3.810113382773041e-08 0.00019042273422903398 4.941007255768894e-05 +107.63117103963114 -0.20417241240815368 3.7932140525726295e-08 0.0001896974973679722 4.922560876269674e-05 +107.67081417994568 -0.20417241305656578 3.7763902131451905e-08 0.00018897500332342644 4.904183172799682e-05 +107.71045732032344 -0.20417241370203273 3.759641514718253e-08 0.00018825524710317006 4.885873550935464e-05 +107.75010046076417 -0.20417241434456793 3.7429676152372195e-08 0.0001875382207613077 4.867631751088121e-05 +107.7897436012676 -0.20417241498418515 3.7263681911249886e-08 0.00018682391330149273 4.8494577172354154e-05 +107.82938674183347 -0.20417241562089772 3.70984290243819e-08 0.00018611228433194373 4.8313509546652806e-05 +107.86902988246149 -0.2041724162547186 3.693391397395713e-08 0.00018540337242774617 4.813310775064985e-05 +107.90867302315151 -0.20417241688566126 3.6770133718288086e-08 0.00018469714002993532 4.7953381197540974e-05 +107.94831616390312 -0.20417241751373935 3.660708473770062e-08 0.0001839935538507915 4.777431598639379e-05 +107.98795930471617 -0.20417241813896525 3.644476391607795e-08 0.000183292654586566 4.759592063462901e-05 +108.02760244559038 -0.20417241876135198 3.6283167816780654e-08 0.00018259441074049913 4.741818393978329e-05 +108.06724558652543 -0.20417241938091327 3.6122293220187004e-08 0.00018189879282430672 4.724110126753527e-05 +108.10688872752118 -0.20417241999766142 3.5962136952819195e-08 0.0001812058176115732 4.706468041589279e-05 +108.14653186857728 -0.20417242061160942 3.580269572215973e-08 0.00018051546481540916 4.688891271244502e-05 +108.18617500969364 -0.20417242122277027 3.564396630580673e-08 0.00017982772828006716 4.671379595478351e-05 +108.2258181508698 -0.20417242183115683 3.5485945479001416e-08 0.00017914258352330812 4.653932461898012e-05 +108.26546129210563 -0.20417242243678155 3.532863009469913e-08 0.000178460045969288 4.636550504636435e-05 +108.30510443340086 -0.20417242303965674 3.517201706080747e-08 0.00017778009386908058 4.6192330792492045e-05 +108.34474757475525 -0.20417242363979557 3.501610302209219e-08 0.0001771027163845545 4.601979622921819e-05 +108.38439071616854 -0.20417242423721058 3.4860884947741015e-08 0.0001764278891530568 4.58478991915574e-05 +108.42403385764051 -0.20417242483191378 3.470635970960187e-08 0.00017575563157777477 4.567664322590683e-05 +108.46367699917089 -0.2041724254239181 3.455252411411703e-08 0.00017508589927769927 4.5506017688427127e-05 +108.50332014075941 -0.20417242601323551 3.439937518326436e-08 0.00017441871686970823 4.5336028907713965e-05 +108.54296328240586 -0.20417242659987841 3.4246909766074395e-08 0.00017375406267954689 4.5166669430908236e-05 +108.5826064241101 -0.20417242718385928 3.409512480741822e-08 0.00017309190941253353 4.4997940204971186e-05 +108.62224956587174 -0.20417242776518965 3.3944017159674616e-08 0.00017243228631121685 4.482983201459562e-05 +108.66189270769057 -0.20417242834388238 3.379358384927038e-08 0.00017177514587017018 4.466234859268581e-05 +108.70153584956643 -0.20417242891994913 3.3643821844503766e-08 0.00017112049198509356 4.44954881570706e-05 +108.74117899149901 -0.20417242949340184 3.349472815986058e-08 0.00017046833344883054 4.4329248445434834e-05 +108.7808221334881 -0.2041724300642528 3.334629971723146e-08 0.00016981863102484085 4.416362389236362e-05 +108.82046527553344 -0.204172430632514 3.319853350957207e-08 0.00016917138027439693 4.399860922164539e-05 +108.86010841763489 -0.2041724311981967 3.305142659201305e-08 0.00016852660234245101 4.383420943392987e-05 +108.89975155979207 -0.20417243176131328 3.290497606806345e-08 0.00016788425215006 4.3670421784266287e-05 +108.93939470200485 -0.2041724323218748 3.275917883451242e-08 0.00016724434898977757 4.3507237672655755e-05 +108.979037844273 -0.2041724328798936 3.261403209191943e-08 0.00016660686749660504 4.334465772855873e-05 +109.01868098659622 -0.20417243343538152 3.2469532832570596e-08 0.00016597178036940874 4.3182683290867986e-05 +109.05832412897436 -0.20417243398834906 3.232567823613794e-08 0.00016533912033807902 4.3021310605857536e-05 +109.09796727140721 -0.2041724345388086 3.2182465295662544e-08 0.00016470884872374757 4.28605348387836e-05 +109.13761041389436 -0.20417243508677177 3.2039891256652217e-08 0.00016408095964773943 4.2700358557221926e-05 +109.17725355643586 -0.2041724356322491 3.189795306780674e-08 0.00016345546193296886 4.2540771669860345e-05 +109.21689669903124 -0.20417243617525296 3.1756648014917956e-08 0.00016283231333916884 4.23817825641057e-05 +109.25653984168044 -0.20417243671579408 3.1615973188266544e-08 0.00016221153854758828 4.222338061450604e-05 +109.29618298438315 -0.20417243725388354 3.1475925750566776e-08 0.00016159312100668432 4.206556414840427e-05 +109.33582612713917 -0.20417243778953295 3.133650301123187e-08 0.00016097703897060032 4.19083396724959e-05 +109.37546926994828 -0.20417243832275356 3.119770188529024e-08 0.00016036328792638256 4.175169049893839e-05 +109.41511241281023 -0.20417243885355607 3.105951986495911e-08 0.00015975187090976314 4.159562662921706e-05 +109.45475555572489 -0.20417243938195187 3.092195406016552e-08 0.0001591427635956768 4.1440142857020595e-05 +109.49439869869195 -0.20417243990795161 3.0785001612521914e-08 0.00015853595559477826 4.128523316399482e-05 +109.5340418417112 -0.20417244043156638 3.064865984812545e-08 0.00015793147194954107 4.11308988049514e-05 +109.57368498478252 -0.20417244095280765 3.0512926117461314e-08 0.00015732925209499296 4.0977142801024956e-05 +109.61332812790556 -0.20417244147168567 3.037779746223946e-08 0.00015672932336142 4.082394889300732e-05 +109.65297127108022 -0.20417244198821094 3.02432712489031e-08 0.0001561316751885963 4.067132320683874e-05 +109.69261441430623 -0.20417244250239464 3.010934497693251e-08 0.00015553629861947367 4.051927202102048e-05 +109.73225755758332 -0.20417244301424767 2.997601580141284e-08 0.0001549431644265069 4.036778669247966e-05 +109.7719007009114 -0.20417244352378083 2.984328082925171e-08 0.00015435226589284422 4.021685245780933e-05 +109.81154384429017 -0.20417244403100368 2.971113775537161e-08 0.00015376363121058953 4.006648733713518e-05 +109.85118698771946 -0.20417244453592778 2.9579583640302053e-08 0.00015317721700848212 3.991667705282149e-05 +109.89083013119902 -0.20417244503856347 2.9448615944240467e-08 0.00015259302308117813 3.9767422291345414e-05 +109.93047327472871 -0.20417244553892058 2.9318232090641227e-08 0.00015201105797495024 3.9618723736582924e-05 +109.97011641830825 -0.20417244603701035 2.9188429321468843e-08 0.00015143128343398838 3.9470570838261866e-05 +110.00975956193747 -0.20417244653284275 2.905920520618821e-08 0.0001508537152709579 3.932297669098612e-05 +110.04940270561617 -0.2041724470264278 2.8930557007229394e-08 0.00015027834503892118 3.917592992255823e-05 +110.08904584934415 -0.20417244751777677 2.8802482093244894e-08 0.00014970511881877232 3.902942262488586e-05 +110.12868899312109 -0.20417244800689882 2.8674978008164246e-08 0.0001491340946426882 3.8883459266478235e-05 +110.16833213694697 -0.20417244849380456 2.854804223799687e-08 0.0001485652359240243 3.873804477959903e-05 +110.20797528082149 -0.20417244897850387 2.842167203046933e-08 0.00014799852222900018 3.859316264628029e-05 +110.24761842474445 -0.20417244946100735 2.8295865079188555e-08 0.0001474339555874647 3.844882560063392e-05 +110.28726156871569 -0.20417244994132422 2.817061859298208e-08 0.00014687155233646215 3.8305019666868415e-05 +110.32690471273494 -0.2041724504194654 2.804593027861787e-08 0.0001463112547472802 3.8161749051854935e-05 +110.36654785680207 -0.2041724508954401 2.7921797567954287e-08 0.0001457530980884176 3.80190127251454e-05 +110.4061910009168 -0.20417245136925843 2.7798217866041864e-08 0.00014519705496870487 3.787680215827652e-05 +110.44583414507902 -0.20417245184093055 2.7675188786043526e-08 0.00014464311546605977 3.7735120521919075e-05 +110.48547728928854 -0.20417245231046585 2.7552707867297553e-08 0.00014409128235670494 3.759396655351402e-05 +110.52512043354504 -0.20417245277787446 2.7430772643394325e-08 0.00014354152107088012 3.745333947746821e-05 +110.56476357784841 -0.20417245324316532 2.7309380621626494e-08 0.00014299387451367722 3.731323157017249e-05 +110.60440672219852 -0.20417245370634918 2.7188529341333054e-08 0.0001424482893159404 3.7173641717106934e-05 +110.64404986659511 -0.20417245416743512 2.7068216405109588e-08 0.0001419047702956502 3.703457194220466e-05 +110.68369301103792 -0.20417245462643255 2.6948439475501597e-08 0.0001413633170585629 3.689602158527586e-05 +110.72333615552682 -0.20417245508335133 2.6829196034939846e-08 0.00014082391272780874 3.675798497583088e-05 +110.76297930006167 -0.20417245553820038 2.6710483726380675e-08 0.00014028658109184691 3.6620456200958796e-05 +110.80262244464218 -0.20417245599099013 2.659230014007989e-08 0.00013975125426218617 3.648344159786169e-05 +110.84226558926821 -0.20417245644172913 2.6474643040339424e-08 0.0001392179727198362 3.634694025475283e-05 +110.88190873393964 -0.2041724568904273 2.6357509824419294e-08 0.00013868670293044978 3.6210938615923816e-05 +110.92155187865615 -0.20417245733709333 2.624089842132213e-08 0.00013815746916895396 3.6075448224517536e-05 +110.96119502341762 -0.2041724577817372 2.6124806175933748e-08 0.000137630217578309 3.594045493248351e-05 +111.0008381682239 -0.20417245822436766 2.600923104330041e-08 0.00013710497739667388 3.5805970272050876e-05 +111.04048131307472 -0.204172458664994 2.5894170554231913e-08 0.0001365817333534305 3.5671982868981974e-05 +111.08012445796996 -0.2041724591036256 2.577962230818844e-08 0.00013606046934625982 3.553848734966807e-05 +111.11976760290943 -0.20417245954027144 2.566558433170333e-08 0.00013554117305354237 3.5405495643648984e-05 +111.15941074789285 -0.20417245997494038 2.555205404564299e-08 0.0001350238580345855 3.5272995833560724e-05 +111.1990538929202 -0.2041724604076414 2.543902922324471e-08 0.00013450851321090173 3.514098648710355e-05 +111.23869703799122 -0.20417246083838378 2.5326507624343284e-08 0.00013399511473029965 3.500946829256076e-05 +111.27834018310568 -0.20417246126717647 2.5214487113535525e-08 0.00013348366189473455 3.487844538620024e-05 +111.31798332826352 -0.20417246169402792 2.510296522358508e-08 0.00013297416201800462 3.474790131088998e-05 +111.35762647346442 -0.20417246211894757 2.499193978769856e-08 0.0001324665819473775 3.461784334304636e-05 +111.39726961870826 -0.20417246254194396 2.488140869335816e-08 0.0001319609317304601 3.448826993743778e-05 +111.43691276399493 -0.20417246296302582 2.477136960041355e-08 0.00013145719560468143 3.435917766843078e-05 +111.47655590932409 -0.20417246338220194 2.4661820367658944e-08 0.00013095537458340591 3.423056646910358e-05 +111.51619905469576 -0.20417246379948084 2.4552758734621617e-08 0.00013045546723255684 3.4102430188487195e-05 +111.55584220010965 -0.20417246421487167 2.44441825264303e-08 0.0001299574437331569 3.397477118145221e-05 +111.59548534556556 -0.20417246462838234 2.433608969650571e-08 0.00012946131961249498 3.384758962390822e-05 +111.6351284910634 -0.20417246504002207 2.4228477869860416e-08 0.00012896707302758153 3.372087660777391e-05 +111.67477163660294 -0.20417246544979928 2.412134506131539e-08 0.00012847469073908697 3.3594637053183816e-05 +111.71441478218404 -0.20417246585772209 2.401468905414852e-08 0.0001279841989941183 3.34688675372391e-05 +111.75405792780646 -0.20417246626379904 2.390850771709738e-08 0.00012749556230938377 3.3343565518381936e-05 +111.79370107347009 -0.2041724666680391 2.3802798869967966e-08 0.0001270087604916191 3.321872821629117e-05 +111.83334421917479 -0.2041724670704497 2.3697560456159535e-08 0.00012652383891033258 3.309435619535918e-05 +111.87298736492032 -0.20417246747104043 2.3592790392362305e-08 0.00012604072350916686 3.297044740882513e-05 +111.91263051070655 -0.20417246786981805 2.348848639546996e-08 0.000125559481933822 3.2846992016464874e-05 +111.95227365653327 -0.20417246826679228 2.3384646634490722e-08 0.00012508003043301292 3.272400270617655e-05 +111.99191680240037 -0.20417246866197045 2.3281268895877888e-08 0.00012460241529548788 3.2601469438239625e-05 +112.03155994830767 -0.204172469055361 2.3178351131835014e-08 0.00012412660912439584 3.247939055171055e-05 +112.07120309425495 -0.20417246944697212 2.3075891236889743e-08 0.00012365261924914773 3.235776408593205e-05 +112.11084624024208 -0.204172469836812 2.2973887191341555e-08 0.0001231804187751295 3.223659435817161e-05 +112.1504893862689 -0.2041724702248884 2.287233699851751e-08 0.00012271001544522612 3.2115872769297785e-05 +112.19013253233524 -0.2041724706112098 2.2771238489266363e-08 0.00012224140005884763 3.19955976037735e-05 +112.22977567844093 -0.20417247099578417 2.2670589898437027e-08 0.00012177454342879441 3.187577770407587e-05 +112.26941882458587 -0.20417247137861882 2.257038888036961e-08 0.00012130948465775744 3.175639491656964e-05 +112.30906197076976 -0.20417247175972242 2.2470633608694954e-08 0.00012084617986074118 3.1637458324964036e-05 +112.34870511699255 -0.20417247213910236 2.237132210942836e-08 0.00012038464219357832 3.151896473142948e-05 +112.38834826325406 -0.20417247251676693 2.2272452355164545e-08 0.00011992485197772445 3.140091227792787e-05 +112.4279914095541 -0.20417247289272386 2.2174022340999226e-08 0.00011946678670911505 3.1283298024297784e-05 +112.46763455589253 -0.2041724732669806 2.207603008224847e-08 0.0001190104923877073 3.11661208311148e-05 +112.50727770226915 -0.20417247363954516 2.197847367343688e-08 0.00011855591704282927 3.104938073573509e-05 +112.54692084868392 -0.20417247401042507 2.188135117398741e-08 0.00011810307464323565 3.093307359808474e-05 +112.58656399513652 -0.2041724743796283 2.178466053952093e-08 0.00011765194972797387 3.081719978566244e-05 +112.62620714162696 -0.20417247474716202 2.1688399994288815e-08 0.00011720254246151944 3.070176031427624e-05 +112.66585028815493 -0.20417247511303457 2.159256753302324e-08 0.00011675482861862067 3.058674903299933e-05 +112.70549343472032 -0.20417247547725315 2.149716109300574e-08 0.00011630881868256435 3.047216031072226e-05 +112.74513658132307 -0.2041724758398248 2.1402178995283588e-08 0.00011586450415157955 3.0358002459018496e-05 +112.78477972796293 -0.20417247620075754 2.130761913976462e-08 0.00011542188261004467 3.0244264095705313e-05 +112.82442287463975 -0.2041724765600591 2.1213479848382343e-08 0.00011498093348931882 3.013095666011644e-05 +112.8640660213534 -0.20417247691773613 2.1119759036530657e-08 0.0001145416709435203 3.0018064831373705e-05 +112.90370916810373 -0.20417247727379675 2.1026455048226157e-08 0.00011410407047413762 2.9905598565442917e-05 +112.94335231489056 -0.20417247762824808 2.0933565780009137e-08 0.00011366812558473803 2.9793546689218716e-05 +112.98299546171374 -0.20417247798109717 2.08410894612628e-08 0.00011323385904038465 2.9681911952175535e-05 +113.02263860857322 -0.20417247833235197 2.0749024271507253e-08 0.0001128012063461075 2.9570692675450828e-05 +113.06228175546866 -0.20417247868201902 2.0657368347263043e-08 0.00011237022737553531 2.9459886828104096e-05 +113.10192490240009 -0.20417247903010596 2.0566119943782677e-08 0.00011194086901833456 2.9349496581154956e-05 +113.14156804936727 -0.20417247937661975 2.047527711446524e-08 0.00011151315484525949 2.9239513346562154e-05 +113.18121119637003 -0.20417247972156774 2.0384838064203838e-08 0.00011108706188342823 2.912993959529954e-05 +113.22085434340832 -0.20417248006495725 2.0294801075087956e-08 0.00011066258079640152 2.9020775403430893e-05 +113.26049749048187 -0.20417248040679495 2.0205164263372915e-08 0.00011023971612201871 2.891202058366961e-05 +113.30014063759066 -0.20417248074708824 2.0115925780513834e-08 0.0001098184596701066 2.880366297084195e-05 +113.33978378473451 -0.20417248108584393 2.0027083992219375e-08 0.00010939879760883495 2.869571450927643e-05 +113.37942693191314 -0.20417248142306899 1.993863700108227e-08 0.00010898073903623303 2.85881644500747e-05 +113.4190700791266 -0.20417248175877056 1.9850583151831635e-08 0.00010856426883540901 2.8481018935316355e-05 +113.45871322637461 -0.2041724820929557 1.9762920587016968e-08 0.00010814937374378466 2.837426769190705e-05 +113.49835637365709 -0.204172482425631 1.967564755234066e-08 0.00010773605961715987 2.8267913717736813e-05 +113.53799952097388 -0.2041724827568033 1.958876236118358e-08 0.00010732432368412078 2.816195969690023e-05 +113.57764266832487 -0.20417248308648017 1.9502263261762982e-08 0.0001069141295483138 2.805639647717789e-05 +113.61728581570983 -0.20417248341466754 1.941614850058405e-08 0.00010650550505245943 2.7951226976224617e-05 +113.65692896312869 -0.20417248374137262 1.933041640916923e-08 0.00010609843384018157 2.7846449842090136e-05 +113.69657211058134 -0.20417248406660157 1.924506525515279e-08 0.0001056929305483387 2.774206424660491e-05 +113.73621525806757 -0.20417248439036206 1.916009326557399e-08 0.00010528894019141218 2.763806475618859e-05 +113.77585840558724 -0.20417248471266022 1.9075498692483647e-08 0.00010488649251112119 2.753444554026696e-05 +113.81550155314025 -0.20417248503350272 1.8991280167782984e-08 0.00010448558496461227 2.7431225875864337e-05 +113.85514470072648 -0.20417248535289623 1.8907435715411573e-08 0.00010408619877859653 2.732838200713786e-05 +113.89478784834573 -0.20417248567084748 1.882396374564772e-08 0.0001036883140628016 2.722592569692364e-05 +113.93443099599793 -0.20417248598736296 1.8740862561514057e-08 0.00010329194987122581 2.7123846189032806e-05 +113.97407414368286 -0.204172486302449 1.8658130549719187e-08 0.00010289709862205596 2.7022151363496447e-05 +114.01371729140047 -0.20417248661611245 1.8575765990774205e-08 0.00010250373913794247 2.6920831442453314e-05 +114.05336043915057 -0.20417248692835951 1.8493767268698728e-08 0.00010211188030981881 2.6819887742400477e-05 +114.09300358693304 -0.2041724872391967 1.8412132828250093e-08 0.00010172151432891883 2.6719323622047644e-05 +114.13264673474771 -0.20417248754863052 1.833086098917872e-08 0.00010133263007840664 2.6619134597137456e-05 +114.17228988259458 -0.2041724878566669 1.824995007564215e-08 0.00010094523150153138 2.6519316103860147e-05 +114.21193303047335 -0.2041724881633132 1.8169398518883374e-08 0.0001005592923248815 2.64198700135599e-05 +114.25157617838397 -0.2041724884685748 1.8089204738580417e-08 0.000100174822134569 2.6320795245174307e-05 +114.29121932632631 -0.2041724887724585 1.8009367084815742e-08 9.97918150661702e-05 2.6222090698365482e-05 +114.33086247430023 -0.20417248907497001 1.7929883913360198e-08 9.941028312943625e-05 2.612374679019497e-05 +114.37050562230556 -0.20417248937611654 1.7850753762693684e-08 9.903017266974174e-05 2.602577469612451e-05 +114.41014877034222 -0.2041724896759035 1.7771975010057868e-08 9.865151697347644e-05 2.5928168602369547e-05 +114.44979191841006 -0.2041724899743371 1.769354601671655e-08 9.827431077678968e-05 2.583092322975038e-05 +114.48943506650896 -0.20417249027142348 1.761546541288426e-08 9.789854651335308e-05 2.573404568755959e-05 +114.5290782146388 -0.2041724905671695 1.7537731349478596e-08 9.752418707420275e-05 2.5637521273862537e-05 +114.56872136279944 -0.20417249086158085 1.7460342473173815e-08 9.715124255265345e-05 2.5541356987588096e-05 +114.6083645109907 -0.20417249115466307 1.738329721689074e-08 9.677974702674738e-05 2.5445557707505328e-05 +114.64800765921257 -0.20417249144642258 1.7306594011555704e-08 9.640965785349883e-05 2.5350110891106278e-05 +114.68765080746478 -0.20417249173686577 1.723023131853888e-08 9.604095893895183e-05 2.525501835969209e-05 +114.72729395574736 -0.20417249202599783 1.7154207701103136e-08 9.567368995916131e-05 2.51602837691478e-05 +114.76693710406002 -0.2041724923138254 1.7078521476723295e-08 9.530780231910953e-05 2.5065897258567407e-05 +114.80658025240282 -0.20417249260035453 1.7003171321328717e-08 9.494328937696961e-05 2.4971866091615e-05 +114.84622340077547 -0.20417249288559028 1.692815567405201e-08 9.458019108002235e-05 2.487818858486866e-05 +114.8858665491779 -0.20417249316953942 1.6853472917164754e-08 9.421844988559488e-05 2.4784852061032758e-05 +114.92550969760998 -0.20417249345220714 1.677912172048459e-08 9.385810442487511e-05 2.4691869418983335e-05 +114.96515284607167 -0.20417249373359955 1.6705100500805065e-08 9.349912695593743e-05 2.45992310604238e-05 +115.00479599456273 -0.20417249401372264 1.6631407813885493e-08 9.314151030813448e-05 2.450693794196655e-05 +115.04443914308311 -0.20417249429258202 1.6558042266257348e-08 9.278524214068882e-05 2.4414988470508736e-05 +115.08408229163265 -0.20417249457018316 1.648500230432777e-08 9.243034879240636e-05 2.4323382778158034e-05 +115.12372544021123 -0.20417249484653213 1.6412286503145568e-08 9.207680261679557e-05 2.4232117863655208e-05 +115.16336858881877 -0.20417249512163446 1.633989335094212e-08 9.17245983140003e-05 2.414119017113124e-05 +115.20301173745516 -0.20417249539549584 1.626782153036984e-08 9.137372226178455e-05 2.405060484921707e-05 +115.24265488612025 -0.20417249566812212 1.6196069517048363e-08 9.102419323153909e-05 2.3960357886433926e-05 +115.28229803481386 -0.20417249593951858 1.6124635831394995e-08 9.067598877466416e-05 2.387043920952735e-05 +115.32194118353593 -0.204172496209691 1.6053519265153498e-08 9.032911467315493e-05 2.3780866658378054e-05 +115.36158433228641 -0.20417249647864477 1.5982718199664457e-08 8.99835588890408e-05 2.3691625144575717e-05 +115.40122748106504 -0.20417249674638568 1.5912231253849645e-08 8.96393131882666e-05 2.3602712560256492e-05 +115.44087062987182 -0.20417249701291904 1.584205704019716e-08 8.929638745617343e-05 2.3514132088534977e-05 +115.48051377870654 -0.2041724972782509 1.5772194238942816e-08 8.895473834719373e-05 2.3425886163759198e-05 +115.52015692756916 -0.20417249754238564 1.5702641335810913e-08 8.861441982833304e-05 2.3337965164956543e-05 +115.55980007645955 -0.20417249780532953 1.563339705423642e-08 8.827537738277393e-05 2.3250372290706827e-05 +115.59944322537756 -0.20417249806708782 1.5564459909993337e-08 8.793763279265395e-05 2.3163104529576277e-05 +115.63908637432317 -0.20417249832766546 1.5495828701233606e-08 8.760118809788006e-05 2.307616807971397e-05 +115.6787295232961 -0.2041724985870683 1.542750190872197e-08 8.726600918612032e-05 2.2989553721276184e-05 +115.7183726722964 -0.20417249884530175 1.535947811066449e-08 8.693210510667719e-05 2.290325675537298e-05 +115.75801582132382 -0.2041724991023711 1.5291756178559115e-08 8.659946161972036e-05 2.28172885447895e-05 +115.79765897037835 -0.2041724993582811 1.522433457337764e-08 8.626810408885479e-05 2.273163780716491e-05 +115.83730211945985 -0.20417249961303743 1.5157212053491394e-08 8.59379982519566e-05 2.2646306613656177e-05 +115.87694526856816 -0.20417249986664524 1.5090387174198482e-08 8.560915546250956e-05 2.2561290120781392e-05 +115.9165884177033 -0.20417250011910978 1.5023858747191474e-08 8.528156427432315e-05 2.2476593972208596e-05 +115.95623156686497 -0.20417250037043652 1.4957625411204565e-08 8.495520544064882e-05 2.2392215250768024e-05 +115.99587471605325 -0.20417250062063028 1.489168578312672e-08 8.463009361469097e-05 2.2308149066074053e-05 +116.03551786526786 -0.20417250086969596 1.4826038546617433e-08 8.430623232173551e-05 2.2224394634328673e-05 +116.07516101450881 -0.20417250111763952 1.476068248179084e-08 8.398359168269446e-05 2.2140954420456663e-05 +116.11480416377591 -0.204172501364465 1.4695616294351728e-08 8.36621954180921e-05 2.2057828259819507e-05 +116.15444731306914 -0.20417250161017844 1.4630838551011385e-08 8.334199815384281e-05 2.1975006260899082e-05 +116.19409046238832 -0.2041725018547841 1.4566348079618944e-08 8.302303792513933e-05 2.1892497907318375e-05 +116.23373361173336 -0.20417250209828786 1.4502143558017691e-08 8.270527526759049e-05 2.181029225372046e-05 +116.27337676110417 -0.20417250234069395 1.4438223782446845e-08 8.238872768929932e-05 2.1728400135147312e-05 +116.31301991050057 -0.20417250258200756 1.4374587340855988e-08 8.207339912172753e-05 2.164680622522883e-05 +116.35266305992259 -0.20417250282223376 1.431123309807956e-08 8.175926509367379e-05 2.1565522327008022e-05 +116.39230620936996 -0.2041725030613777 1.4248159831187195e-08 8.1446314697398e-05 2.1484543035943428e-05 +116.43194935884276 -0.20417250329944392 1.4185366088138321e-08 8.113456628766246e-05 2.1403861897856046e-05 +116.47159250834075 -0.2041725035364376 1.412285071358108e-08 8.082399363256724e-05 2.1323480239668252e-05 +116.5112356578639 -0.20417250377236293 1.406061255309039e-08 8.051463196288951e-05 2.124340195059232e-05 +116.55087880741203 -0.20417250400722578 1.3998650294534756e-08 8.020643128871656e-05 2.1163622878363854e-05 +116.5905219569851 -0.20417250424103064 1.393696265419707e-08 7.989938640054409e-05 2.108413706923424e-05 +116.63016510658292 -0.20417250447378157 1.3875548484592857e-08 7.959353943823217e-05 2.100494970968296e-05 +116.66980825620551 -0.20417250470548418 1.3814406549943027e-08 7.928884661145136e-05 2.092605627342285e-05 +116.7094514058527 -0.20417250493614314 1.3753535644915376e-08 7.898530433109165e-05 2.0847460294856757e-05 +116.74909455552435 -0.20417250516576316 1.369293451246386e-08 7.868291665946069e-05 2.0769155536285095e-05 +116.78873770522048 -0.20417250539434847 1.3632602083366775e-08 7.838169175246231e-05 2.069114757140846e-05 +116.82838085494086 -0.20417250562190406 1.357253696892843e-08 7.808162616456826e-05 2.0613426038303002e-05 +116.86802400468544 -0.20417250584843502 1.3512737996153257e-08 7.778267655460563e-05 2.0535991547106956e-05 +116.90766715445413 -0.2041725060739454 1.3453204136045468e-08 7.7484889691623e-05 2.045885137595713e-05 +116.9473103042468 -0.20417250629844005 1.339393412205649e-08 7.718822915528033e-05 2.0381998274212185e-05 +116.98695345406341 -0.20417250652192398 1.3334926761453881e-08 7.689267255123891e-05 2.0305430695507775e-05 +117.02659660390381 -0.20417250674440113 1.3276180928100191e-08 7.659826477560064e-05 2.0229153257312283e-05 +117.06623975376787 -0.20417250696587627 1.3217695278784156e-08 7.630498424913199e-05 2.015315232843431e-05 +117.10588290365563 -0.20417250718635405 1.3159468891975618e-08 7.601282343699408e-05 2.007743802922124e-05 +117.14552605356684 -0.2041725074058388 1.3101500563134282e-08 7.572176614451716e-05 2.0002011934029895e-05 +117.18516920350146 -0.20417250762433556 1.3043788993488583e-08 7.543181101759454e-05 1.992686087024968e-05 +117.2248123534594 -0.20417250784184857 1.2986333145427687e-08 7.514294865771035e-05 1.985199210348378e-05 +117.26445550344056 -0.20417250805838158 1.2929131885627264e-08 7.485521828481648e-05 1.977740361723838e-05 +117.30409865344484 -0.20417250827393987 1.2872184037062911e-08 7.456856613172206e-05 1.9703092426947105e-05 +117.34374180347213 -0.2041725084885279 1.281548844781334e-08 7.428300090687021e-05 1.9629057629538573e-05 +117.38338495352232 -0.2041725087021491 1.2759044180693108e-08 7.399856443044905e-05 1.9555304393106395e-05 +117.42302810359539 -0.2041725089148091 1.2702849879137965e-08 7.371516922688178e-05 1.9481820997693205e-05 +117.46267125369118 -0.2041725091265113 1.2646904545565926e-08 7.343286258358236e-05 1.9408615926485756e-05 +117.50231440380962 -0.2041725093372608 1.259120693578058e-08 7.31516338147491e-05 1.9335677466184382e-05 +117.5419575539506 -0.20417250954706145 1.2535756173390305e-08 7.287146632017182e-05 1.9263018355435056e-05 +117.58160070411407 -0.20417250975591758 1.2480550983677553e-08 7.25923845854312e-05 1.919062938047449e-05 +117.62124385429983 -0.20417250996383393 1.2425590299942834e-08 7.231433758711034e-05 1.9118507235491083e-05 +117.66088700450798 -0.20417251017081395 1.2370873147431811e-08 7.203737985311786e-05 1.904665977098253e-05 +117.70053015473825 -0.20417251037686257 1.2316398269150478e-08 7.176146244049781e-05 1.8975075502028387e-05 +117.74017330499055 -0.2041725105819833 1.226216467869459e-08 7.148661260689219e-05 1.8903762931837113e-05 +117.77981645526492 -0.20417251078618115 1.2208171332971422e-08 7.121279889710278e-05 1.883271399472683e-05 +117.81945960556115 -0.20417251098946013 1.2154417033337436e-08 7.094001832834337e-05 1.876192769892988e-05 +117.85910275587926 -0.2041725111918241 1.210090077173544e-08 7.066828157849518e-05 1.8691405407127645e-05 +117.89874590621903 -0.2041725113932775 1.2047621573102146e-08 7.039757949272229e-05 1.8621152644037326e-05 +117.93838905658045 -0.20417251159382388 1.1994578307920056e-08 7.012793310223445e-05 1.8551155880264374e-05 +117.97803220696342 -0.20417251179346832 1.1941769912518738e-08 6.985927551046912e-05 1.848142217262126e-05 +118.01767535736785 -0.20417251199221365 1.1889195436651151e-08 6.959169112516337e-05 1.841195453344824e-05 +118.05731850779361 -0.20417251219006538 1.183685371756825e-08 6.932507976744908e-05 1.834274287214753e-05 +118.09696165824069 -0.20417251238702663 1.1784743682792051e-08 6.905949830292712e-05 1.8273785112535805e-05 +118.1366048087089 -0.20417251258310143 1.1732864476007436e-08 6.879494734471252e-05 1.82050906595131e-05 +118.1762479591983 -0.20417251277829407 1.1681214934556906e-08 6.853138946348105e-05 1.8136650433665072e-05 +118.21589110970869 -0.20417251297260844 1.1629794061825823e-08 6.8268848358164e-05 1.806846665625249e-05 +118.25553426023995 -0.20417251316604892 1.1578600870934017e-08 6.800728459630635e-05 1.800053726935526e-05 +118.29517741079205 -0.2041725133586192 1.1527634350623357e-08 6.774671834523472e-05 1.7932863594004156e-05 +118.33482056136495 -0.2041725135503226 1.1476893355476866e-08 6.748717111689459e-05 1.786543541243859e-05 +118.3744637119585 -0.204172513741164 1.1426377052963041e-08 6.72285905281329e-05 1.7798264772952645e-05 +118.41410686257264 -0.20417251393114685 1.1376084429099495e-08 6.697100780308012e-05 1.773134912277918e-05 +118.45375001320728 -0.20417251412027496 1.1326014357360464e-08 6.671441176892801e-05 1.766467527160058e-05 +118.4933931638623 -0.20417251430855252 1.1276165942392925e-08 6.645877895510061e-05 1.7598252689193253e-05 +118.53303631453764 -0.2041725144959831 1.1226538106237425e-08 6.620413568710392e-05 1.753207529903814e-05 +118.57267946523325 -0.20417251468257047 1.1177130047234413e-08 6.595045580515228e-05 1.746615195334681e-05 +118.61232261594903 -0.20417251486831897 1.1127940725164823e-08 6.569773176592759e-05 1.7400476021378666e-05 +118.65196576668484 -0.20417251505323186 1.1078968970482241e-08 6.544598674012836e-05 1.7335038193356775e-05 +118.69160891744066 -0.20417251523731297 1.1030214026963455e-08 6.519520490646184e-05 1.7269850014984225e-05 +118.73125206821643 -0.2041725154205664 1.09816748996597e-08 6.494536888349127e-05 1.7204905436596233e-05 +118.77089521901196 -0.20417251560299596 1.0933350504443014e-08 6.469646938239922e-05 1.714019808691299e-05 +118.81053836982728 -0.20417251578460496 1.0885240023503291e-08 6.444854253312454e-05 1.7075737494015488e-05 +118.85018152066225 -0.20417251596539696 1.083734241940232e-08 6.420156621914032e-05 1.701151415487638e-05 +118.88982467151678 -0.20417251614537643 1.0789656842651064e-08 6.395551308139586e-05 1.694753753366169e-05 diff --git a/sample/09_FT_Kitaev/TPQ/postprocess.py b/sample/09_FT_Kitaev/TPQ/postprocess.py new file mode 100644 index 00000000..5b39cbf6 --- /dev/null +++ b/sample/09_FT_Kitaev/TPQ/postprocess.py @@ -0,0 +1,42 @@ +import sys +import os +import numpy as np + +def foo(name): + with open(f"stan_{name}.in") as f: + nrands = -1 + nsteps = -1 + for line in f: + words = line.split('=') + if(words[0].strip() == 'NumAve'): + nrands = int(words[1].strip()) + if(words[0].strip() == 'Lanczos_max'): + nsteps = int(words[1].strip()) + + bs = np.zeros((nsteps, nrands)) + Es = np.zeros((nsteps, nrands)) + E2s = np.zeros((nsteps, nrands)) + N = 0 + for irand in range(nrands): + A = np.loadtxt(os.path.join(f"output_{name}", f"SS_rand{irand}.dat")) + bs[:, irand] = A[:, 0] + Es[:, irand] = A[:, 1] + E2s[:, irand] = A[:, 2] + N = A[0,4] + bs_jk = (np.sum(bs, axis=1).reshape(-1,1) - bs) / (nrands - 1) + Es_jk = (np.sum(Es, axis=1).reshape(-1,1) - Es) / (nrands - 1) + E2s_jk = (np.sum(E2s, axis=1).reshape(-1,1) - E2s) / (nrands - 1) + C_jk = (E2s_jk - Es_jk**2) * (bs_jk**2) + + bs_mean = np.mean(bs_jk, axis=1) + Es_mean = np.mean(Es_jk, axis=1) / N + Es_err = np.sqrt((nrands - 1) * Es_jk.var(axis=1, ddof=0)) / N + C_mean = np.mean(C_jk, axis=1) / N + C_err = np.sqrt((nrands - 1) * C_jk.var(axis=1, ddof=0)) / N + + with open(f"TPQ_{name}.dat", "w") as f: + for i in range(nsteps): + f.write(f"{bs_mean[i]} {Es_mean[i]} {Es_err[i]} {C_mean[i]} {C_err[i]}\n") + +if __name__ == '__main__': + foo(sys.argv[1]) diff --git a/sample/09_FT_Kitaev/TPQ/run.sh b/sample/09_FT_Kitaev/TPQ/run.sh new file mode 100644 index 00000000..ee3e05c8 --- /dev/null +++ b/sample/09_FT_Kitaev/TPQ/run.sh @@ -0,0 +1,5 @@ +for name in gapless gapfull; do + HPhi -s stan_${name}.in + mv output output_${name} + python3 ./postprocess.py $name +done diff --git a/sample/09_FT_Kitaev/TPQ/stan_gapfull.in b/sample/09_FT_Kitaev/TPQ/stan_gapfull.in new file mode 100644 index 00000000..642b94ce --- /dev/null +++ b/sample/09_FT_Kitaev/TPQ/stan_gapfull.in @@ -0,0 +1,18 @@ +W=2 +L=3 +model = "SpinGC" +method = "TPQ" +lattice = "Honeycomb" +J0x = -0.3 +J0y = 0.0 +J0z = 0.0 +J1x = 0.0 +J1y = -0.3 +J1z = 0.0 +J2x = 0.0 +J2y = 0.0 +J2z = -2.4 +2S=1 +Lanczos_max = 3000 +LargeValue = 4.0 +NumAve = 20 diff --git a/sample/09_FT_Kitaev/TPQ/stan_gapless.in b/sample/09_FT_Kitaev/TPQ/stan_gapless.in new file mode 100644 index 00000000..d0839f07 --- /dev/null +++ b/sample/09_FT_Kitaev/TPQ/stan_gapless.in @@ -0,0 +1,18 @@ +W=2 +L=3 +model = "SpinGC" +method = "TPQ" +lattice = "Honeycomb" +J0x = -1.0 +J0y = 0.0 +J0z = 0.0 +J1x = 0.0 +J1y = -1.0 +J1z = 0.0 +J2x = 0.0 +J2y = 0.0 +J2z = -1.0 +2S=1 +Lanczos_max = 3000 +LargeValue = 4.0 +NumAve = 20 diff --git a/sample/09_FT_Kitaev/calcspec.py b/sample/09_FT_Kitaev/calcspec.py new file mode 100644 index 00000000..be4f98d0 --- /dev/null +++ b/sample/09_FT_Kitaev/calcspec.py @@ -0,0 +1,19 @@ +import sys +import numpy as np +from scipy.interpolate import splrep, splev + + +def spec(name): + data = np.loadtxt(f"./energy_{name}.dat") + bs = data[:, 0] + Es = data[:, 1] + spl = splrep(bs, Es) + Cs = -bs * bs * splev(bs, spl, der=1) + with open(f"./spec_{name}.dat", "w") as f: + for b, C in zip(bs, Cs): + f.write(f"{b} {C}\n") + + +if __name__ == "__main__": + name = sys.argv[1] + spec(name) diff --git a/sample/09_FT_Kitaev/plot_c.plt b/sample/09_FT_Kitaev/plot_c.plt new file mode 100644 index 00000000..61244c5d --- /dev/null +++ b/sample/09_FT_Kitaev/plot_c.plt @@ -0,0 +1,15 @@ +set auto +unset log +set log x +set key right top + +set xl 'temperature' +set yl 'specific heat' + +set xr [0.01:20] + +plot \ +'TPQ/TPQ_gapless.dat' u (1/$1):4 w l lw 2 lc rgb 'black' t 'gapless, TPQ', \ +'spec_gapless.dat' u (1/$1):2 pt 5 lc rgb 'blue' t 'gapless, iTPS', \ +'TPQ/TPQ_gapfull.dat' u (1/$1):4 w l lw 2 lc rgb 'black' dt (10,5) t 'gapfull, TPQ', \ +'spec_gapfull.dat' u (1/$1):2 pt 7 lc rgb 'red' t 'gapfull, iTPS', \ diff --git a/sample/09_FT_Kitaev/plot_e.plt b/sample/09_FT_Kitaev/plot_e.plt new file mode 100644 index 00000000..8b967d38 --- /dev/null +++ b/sample/09_FT_Kitaev/plot_e.plt @@ -0,0 +1,15 @@ +set auto +unset log +set log x +set key left top + +set xl 'temperature' +set yl 'energy density' + +set xr [0.01:20] + +plot \ +'TPQ/TPQ_gapless.dat' u (1/$1):2 w l lw 2 lc rgb 'black' t 'gapless, TPQ', \ +'energy_gapless.dat' u (1/$1):2 pt 5 lc rgb 'blue' t 'gapless, iTPS', \ +'TPQ/TPQ_gapfull.dat' u (1/$1):2 w l lw 2 lc rgb 'black' dt (10,5) t 'gapfull, TPQ', \ +'energy_gapfull.dat' u (1/$1):2 pt 7 lc rgb 'red' t 'gapfull, iTPS', \ diff --git a/sample/09_FT_Kitaev/run.sh b/sample/09_FT_Kitaev/run.sh new file mode 100644 index 00000000..571bea7e --- /dev/null +++ b/sample/09_FT_Kitaev/run.sh @@ -0,0 +1,8 @@ +for name in gapless gapfull; do + tenes_simple -o std_${name}.toml simple_${name}.toml + tenes_std -o input_${name}.toml std_${name}.toml + tenes input_${name}.toml + + awk '$2 == 0 {print $1, $3}' output_${name}/FT_density.dat > energy_${name}.dat + python3 ./calcspec.py $name +done diff --git a/sample/09_FT_Kitaev/simple_gapfull.toml b/sample/09_FT_Kitaev/simple_gapfull.toml new file mode 100644 index 00000000..4309d925 --- /dev/null +++ b/sample/09_FT_Kitaev/simple_gapfull.toml @@ -0,0 +1,31 @@ +[parameter] +[parameter.general] +# is_real = true +mode = "finite temperature" +output = "output_gapfull" + +[parameter.simple_update] +num_step = [500, 450] +tau = [0.01, 0.1] + +[parameter.full_update] +num_step = 0 +tau = 0.01 + +[parameter.ctm] +iteration_max = 100 +dimension = 20 +meanfield_env = false + +[lattice] +type = "honeycomb lattice" +L = 1 +W = 2 +virtual_dim = 4 +initial = "random" + +[model] +type = "spin" +J0x = -0.3 +J1y = -0.3 +J2z = -2.4 diff --git a/sample/09_FT_Kitaev/simple_gapless.toml b/sample/09_FT_Kitaev/simple_gapless.toml new file mode 100644 index 00000000..32ccbdd9 --- /dev/null +++ b/sample/09_FT_Kitaev/simple_gapless.toml @@ -0,0 +1,31 @@ +[parameter] +[parameter.general] +# is_real = true +mode = "finite temperature" +output = "output_gapless" + +[parameter.simple_update] +num_step = [500, 450] +tau = [0.01, 0.1] + +[parameter.full_update] +num_step = 0 +tau = 0.01 + +[parameter.ctm] +iteration_max = 100 +dimension = 20 +meanfield_env = false + +[lattice] +type = "honeycomb lattice" +L = 1 +W = 2 +virtual_dim = 4 +initial = "random" + +[model] +type = "spin" +J0x = -1.0 +J1y = -1.0 +J2z = -1.0 From 92cf3515897b0fecfd0f5e5d281eb3574d7bf463 Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Fri, 14 Jul 2023 14:51:29 +0900 Subject: [PATCH 20/25] correct simple_update_density --- src/iTPS/iTPS.cpp | 15 ++-- src/iTPS/simple_update.cpp | 142 +++++++++++++++++++++++++------------ 2 files changed, 104 insertions(+), 53 deletions(-) diff --git a/src/iTPS/iTPS.cpp b/src/iTPS/iTPS.cpp index c712e012..0aa19fbb 100644 --- a/src/iTPS/iTPS.cpp +++ b/src/iTPS/iTPS.cpp @@ -127,13 +127,13 @@ iTPS::iTPS(MPI_Comm comm_, PEPS_Parameters peps_parameters_, PEPS_Parameters::CalculationMode::finite_temperature) { if (CHI < Dmax) { std::cerr << "WARNING: CTM may be too small (chi < D) for " - "finite_temperature mode" + "iTPO (finite_temperature mode)" + << std::endl; + } + } else { + if (CHI < Dmax * Dmax) { + std::cerr << "WARNING: CTM may be too small (chi < D*D) for iTPS" << std::endl; - } else { - if (CHI < Dmax * Dmax) { - std::cerr << "WARNING: CTM may be too small (chi < D*D)" - << std::endl; - } } } } @@ -194,7 +194,8 @@ iTPS::iTPS(MPI_Comm comm_, PEPS_Parameters peps_parameters_, // << std::endl; // std::cerr << " This feature is reserved for future use." // << std::endl; - // std::cerr << " Currently, all simple updates with nonzero group " + // std::cerr << " Currently, all simple updates with nonzero group + // " // "number are ignored." // << std::endl; // notwarned = false; diff --git a/src/iTPS/simple_update.cpp b/src/iTPS/simple_update.cpp index dfed05ff..5d3afc2f 100644 --- a/src/iTPS/simple_update.cpp +++ b/src/iTPS/simple_update.cpp @@ -67,7 +67,8 @@ void iTPS::fix_local_gauge() { int target = lattice.neighbor(source, source_leg); core::fix_local_gauge(Tn[source], Tn[target], lambda_tensor[source], lambda_tensor[target], source_leg, - peps_parameters, Tn1_work, Tn2_work, lambda_work); + peps_parameters, Tn1_work, Tn2_work, + lambda_work); lambda_tensor[source][source_leg] = lambda_work; lambda_tensor[target][target_leg] = lambda_work; Tn[source] = Tn1_work; @@ -136,13 +137,14 @@ void iTPS::simple_update() { time_simple_update += timer.elapsed(); } - template void iTPS::simple_update_density(EvolutionOperator const &up) { if (up.is_onesite()) { const int source = up.source_site; - Tn[source] = tensordot(Tn[source], up.op, mptensor::Axes(4), mptensor::Axes(0)); - Tn[source] = tensordot(Tn[source], conj(up.op), mptensor::Axes(4), mptensor::Axes(1)); + Tn[source] = + tensordot(Tn[source], up.op, mptensor::Axes(4), mptensor::Axes(0)); + Tn[source] = tensordot(Tn[source], conj(up.op), mptensor::Axes(4), + mptensor::Axes(1)); } else { tensor Tn1_work(comm), Tn2_work(comm); std::vector lambda_work; @@ -150,17 +152,31 @@ void iTPS::simple_update_density(EvolutionOperator const &up) { const int source_leg = up.source_leg; const int target = lattice.neighbor(source, source_leg); const int target_leg = (source_leg + 2) % 4; - core::Simple_update_bond(reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), lambda_tensor[source], - lambda_tensor[target], mptensor::kron(up.op,conj(up.op).transpose(mptensor::Shape(2,3,0,1))), source_leg, - peps_parameters, Tn1_work, Tn2_work, lambda_work); + core::Simple_update_bond( + reshape(Tn[source], + mptensor::Shape(Tn[source].shape()[0], Tn[source].shape()[1], + Tn[source].shape()[2], Tn[source].shape()[3], + Tn[source].shape()[4] * Tn[source].shape()[5])), + reshape(Tn[target], + mptensor::Shape(Tn[target].shape()[0], Tn[target].shape()[1], + Tn[target].shape()[2], Tn[target].shape()[3], + Tn[target].shape()[4] * Tn[target].shape()[5])), + lambda_tensor[source], lambda_tensor[target], + mptensor::kron(up.op, conj(up.op)), + source_leg, peps_parameters, Tn1_work, Tn2_work, lambda_work); lambda_tensor[source][source_leg] = lambda_work; lambda_tensor[target][target_leg] = lambda_work; - Tn[source] = reshape(Tn1_work,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],up.op.shape()[2],up.op.shape()[0])); - Tn[target] = reshape(Tn2_work,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],up.op.shape()[3],up.op.shape()[1])); + Tn[source] = reshape( + Tn1_work, mptensor::Shape(Tn[source].shape()[0], Tn[source].shape()[1], + Tn[source].shape()[2], Tn[source].shape()[3], + up.op.shape()[2], up.op.shape()[2])); + Tn[target] = reshape( + Tn2_work, mptensor::Shape(Tn[target].shape()[0], Tn[target].shape()[1], + Tn[target].shape()[2], Tn[target].shape()[3], + up.op.shape()[3], up.op.shape()[3])); } } - template void iTPS::fix_local_gauge_density() { tensor Tn1_work(comm), Tn2_work(comm); @@ -180,17 +196,32 @@ void iTPS::fix_local_gauge_density() { if (lattice.virtual_dims[source][source_leg] <= 1) { continue; } - int target = lattice.neighbor(source, source_leg); - core::fix_local_gauge( - reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), - reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), - lambda_tensor[source], - lambda_tensor[target], source_leg, peps_parameters, Tn1_work, - Tn2_work, lambda_work); - lambda_tensor[source][source_leg] = lambda_work; - lambda_tensor[target][target_leg] = lambda_work; - Tn[source] = reshape(Tn1_work,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4],Tn[source].shape()[5])); - Tn[target] = reshape(Tn2_work,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4],Tn[target].shape()[5])); + int target = lattice.neighbor(source, source_leg); + core::fix_local_gauge( + reshape(Tn[source], + mptensor::Shape( + Tn[source].shape()[0], Tn[source].shape()[1], + Tn[source].shape()[2], Tn[source].shape()[3], + Tn[source].shape()[4] * Tn[source].shape()[5])), + reshape(Tn[target], + mptensor::Shape( + Tn[target].shape()[0], Tn[target].shape()[1], + Tn[target].shape()[2], Tn[target].shape()[3], + Tn[target].shape()[4] * Tn[target].shape()[5])), + lambda_tensor[source], lambda_tensor[target], source_leg, + peps_parameters, Tn1_work, Tn2_work, lambda_work); + lambda_tensor[source][source_leg] = lambda_work; + lambda_tensor[target][target_leg] = lambda_work; + Tn[source] = reshape( + Tn1_work, + mptensor::Shape(Tn[source].shape()[0], Tn[source].shape()[1], + Tn[source].shape()[2], Tn[source].shape()[3], + Tn[source].shape()[4], Tn[source].shape()[5])); + Tn[target] = reshape( + Tn2_work, + mptensor::Shape(Tn[target].shape()[0], Tn[target].shape()[1], + Tn[target].shape()[2], Tn[target].shape()[3], + Tn[target].shape()[4], Tn[target].shape()[5])); } } } @@ -202,9 +233,12 @@ void iTPS::fix_local_gauge_density() { if (lattice.virtual_dims[site][leg] <= 1) { continue; } - auto M = core::boundary_tensor(reshape(Tn[site],mptensor::Shape(Tn[site].shape()[0],Tn[site].shape()[1],Tn[site].shape()[2],Tn[site].shape()[3],Tn[site].shape()[4]*Tn[site].shape()[5])), - lambda_tensor[site], leg, - peps_parameters); + auto M = core::boundary_tensor( + reshape(Tn[site], + mptensor::Shape(Tn[site].shape()[0], Tn[site].shape()[1], + Tn[site].shape()[2], Tn[site].shape()[3], + Tn[site].shape()[4] * Tn[site].shape()[5])), + lambda_tensor[site], leg, peps_parameters); tensor U; std::vector D; @@ -220,7 +254,6 @@ void iTPS::fix_local_gauge_density() { } // end of for (iter_gauge) } - template void iTPS::simple_update_density() { const int group = 0; @@ -255,12 +288,13 @@ void iTPS::simple_update_density() { time_simple_update += timer.elapsed(); } - template -void iTPS::simple_update_density_purification(EvolutionOperator const &up) { +void iTPS::simple_update_density_purification( + EvolutionOperator const &up) { if (up.is_onesite()) { const int source = up.source_site; - Tn[source] = tensordot(Tn[source], up.op, mptensor::Axes(5), mptensor::Axes(0)); + Tn[source] = + tensordot(Tn[source], up.op, mptensor::Axes(5), mptensor::Axes(0)); } else { tensor Tn1_work(comm), Tn2_work(comm); std::vector lambda_work; @@ -269,30 +303,46 @@ void iTPS::simple_update_density_purification(EvolutionOperator const int target = lattice.neighbor(source, source_leg); const int target_leg = (source_leg + 2) % 4; - - tensor identity(comm, mptensor::Shape(Tn[source].shape()[5],Tn[target].shape()[5],Tn[source].shape()[5],Tn[target].shape()[5])); + tensor identity( + comm, mptensor::Shape(Tn[source].shape()[5], Tn[target].shape()[5], + Tn[source].shape()[5], Tn[target].shape()[5])); for (int j1 = 0; j1 < Tn[source].shape()[5]; ++j1) { for (int k1 = 0; k1 < Tn[target].shape()[5]; ++k1) { - for (int j2 = 0; j2 < Tn[source].shape()[5]; ++j2) { - for (int k2 = 0; k2 < Tn[target].shape()[5]; ++k2) { - identity.set_value(mptensor::Index(j1, k1, j2, k2), (j1 == j2 && k1 == k2 ? 1.0 : 0.0)); - } - } + for (int j2 = 0; j2 < Tn[source].shape()[5]; ++j2) { + for (int k2 = 0; k2 < Tn[target].shape()[5]; ++k2) { + identity.set_value(mptensor::Index(j1, k1, j2, k2), + (j1 == j2 && k1 == k2 ? 1.0 : 0.0)); + } + } } - } - - core::Simple_update_bond(reshape(Tn[source],mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],Tn[source].shape()[4]*Tn[source].shape()[5])), reshape(Tn[target],mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],Tn[target].shape()[4]*Tn[target].shape()[5])), lambda_tensor[source], - lambda_tensor[target], mptensor::kron(up.op,identity), source_leg, - peps_parameters, Tn1_work, Tn2_work, lambda_work); + } + + core::Simple_update_bond( + reshape(Tn[source], + mptensor::Shape(Tn[source].shape()[0], Tn[source].shape()[1], + Tn[source].shape()[2], Tn[source].shape()[3], + Tn[source].shape()[4] * Tn[source].shape()[5])), + reshape(Tn[target], + mptensor::Shape(Tn[target].shape()[0], Tn[target].shape()[1], + Tn[target].shape()[2], Tn[target].shape()[3], + Tn[target].shape()[4] * Tn[target].shape()[5])), + lambda_tensor[source], lambda_tensor[target], + mptensor::kron(up.op, identity), source_leg, peps_parameters, Tn1_work, + Tn2_work, lambda_work); lambda_tensor[source][source_leg] = lambda_work; lambda_tensor[target][target_leg] = lambda_work; - Tn[source] = reshape(Tn1_work,mptensor::Shape(Tn[source].shape()[0],Tn[source].shape()[1],Tn[source].shape()[2],Tn[source].shape()[3],up.op.shape()[2],Tn[source].shape()[5])); - Tn[target] = reshape(Tn2_work,mptensor::Shape(Tn[target].shape()[0],Tn[target].shape()[1],Tn[target].shape()[2],Tn[target].shape()[3],up.op.shape()[3],Tn[target].shape()[5])); + Tn[source] = reshape( + Tn1_work, mptensor::Shape(Tn[source].shape()[0], Tn[source].shape()[1], + Tn[source].shape()[2], Tn[source].shape()[3], + up.op.shape()[2], Tn[source].shape()[5])); + Tn[target] = reshape( + Tn2_work, mptensor::Shape(Tn[target].shape()[0], Tn[target].shape()[1], + Tn[target].shape()[2], Tn[target].shape()[3], + up.op.shape()[3], Tn[target].shape()[5])); } } - -template +template void iTPS::simple_update_density_purification() { const int group = 0; Timer<> timer; @@ -322,10 +372,10 @@ void iTPS::simple_update_density_purification() { << nsteps << "] done" << std::endl; } } - } + } time_simple_update += timer.elapsed(); } - + // template specialization template class iTPS; template class iTPS; From 6da935789e64b7fb383dbfd72fd78824166ede72 Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Fri, 14 Jul 2023 23:35:25 +0900 Subject: [PATCH 21/25] fix --- src/iTPS/transfer_matrix.cpp | 54 +++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/src/iTPS/transfer_matrix.cpp b/src/iTPS/transfer_matrix.cpp index 6edad289..b5bc1dbc 100644 --- a/src/iTPS/transfer_matrix.cpp +++ b/src/iTPS/transfer_matrix.cpp @@ -186,8 +186,11 @@ void TransferMatrix_ctm::matvec_horizontal(ptensor &outvec, int y) const { using mptensor::Axes; const auto &lattice = this->lattice; - const size_t CHI = C1[0].shape()[0]; - outvec = reshape(invec, {CHI, CHI}); + const int s0 = lattice.index(0, y); + const int s1 = lattice.top(s0); + const size_t CHI0 = eTt[s0].shape()[0]; + const size_t CHI1 = eTb[s1].shape()[1]; + outvec = reshape(invec, {CHI0, CHI1}); const size_t rank = eTt[0].rank(); if (rank == 3) { // iTPO @@ -227,7 +230,7 @@ void TransferMatrix_ctm::matvec_horizontal(ptensor &outvec, throw std::runtime_error("rank of eTt is not 3 or 4"); } - outvec = reshape(outvec, {CHI * CHI}); + outvec = reshape(outvec, {CHI0 * CHI1}); } template @@ -236,9 +239,12 @@ void TransferMatrix_ctm::matvec_vertical(ptensor &outvec, int x) const { using mptensor::Axes; const auto &lattice = this->lattice; - const size_t CHI = C1[0].shape()[0]; + const int s0 = lattice.index(x, 0); + const int s1 = lattice.left(s0); + const size_t CHI0 = eTl[s0].shape()[0]; + const size_t CHI1 = eTr[s1].shape()[1]; const auto x_orig = x; - outvec = reshape(invec, {CHI, CHI}); + outvec = reshape(invec, {CHI0, CHI1}); const size_t rank = eTl[0].rank(); @@ -287,7 +293,7 @@ void TransferMatrix_ctm::matvec_vertical(ptensor &outvec, } else { throw std::runtime_error("rank of eTl is not 3 or 4"); } - outvec = reshape(outvec, {CHI * CHI}); + outvec = reshape(outvec, {CHI0 * CHI1}); } template @@ -365,22 +371,24 @@ ptensor TransferMatrix_ctm::matrix_horizontal(int y) const { using mptensor::Shape; const auto &lattice = this->lattice; const MPI_Comm comm = this->C1[0].get_comm(); - int site = lattice.index(0, y); - ptensor top = eTt[site]; - ptensor bottom = eTb[lattice.top(site)]; - const size_t CHI = top.shape()[0]; - ptensor res(comm, Shape(CHI * CHI, CHI * CHI)); + int s0 = lattice.index(0, y); + int s1 = lattice.top(s0); + ptensor top = eTt[s0]; + ptensor bottom = eTb[s1]; + const size_t CHI0 = top.shape()[0]; + const size_t CHI1 = bottom.shape()[1]; + ptensor res(comm, Shape(CHI0 * CHI1, CHI0 * CHI1)); #pragma omp parallel for shared(res) - for (size_t i = 0; i < CHI * CHI; ++i) { + for (size_t i = 0; i < CHI0 * CHI1; ++i) { typename ptensor::value_type v = 1.0; res.set_value({i, i}, v); } - res = reshape(res, {CHI, CHI, CHI, CHI}); + res = reshape(res, {CHI0, CHI1, CHI0, CHI1}); const size_t rank = top.rank(); if (rank == 3) { res = transpose(tensordot(top, bottom, Axes(2), Axes(2)), Axes(0, 3, 1, 2)); for (int x = 1; x < lattice.LX; ++x) { - site = lattice.index(x, y); + int site = lattice.index(x, y); top = eTt[site]; bottom = eTb[lattice.top(site)]; res = tensordot(res, tensordot(top, bottom, Axes(2), Axes(2)), Axes(2, 3), @@ -390,7 +398,7 @@ ptensor TransferMatrix_ctm::matrix_horizontal(int y) const { res = transpose(tensordot(top, bottom, Axes(2, 3), Axes(2, 3)), Axes(0, 3, 1, 2)); for (int x = 1; x < lattice.LX; ++x) { - site = lattice.index(x, y); + int site = lattice.index(x, y); top = eTt[site]; bottom = eTb[lattice.top(site)]; res = tensordot(res, tensordot(top, bottom, Axes(2, 3), Axes(2, 3)), @@ -399,7 +407,7 @@ ptensor TransferMatrix_ctm::matrix_horizontal(int y) const { } else { throw std::runtime_error("rank of eTt is not 3 or 4"); } - res = reshape(res, {CHI * CHI, CHI * CHI}); + res = reshape(res, {CHI0 * CHI1, CHI0 * CHI1}); return res; } @@ -412,15 +420,17 @@ ptensor TransferMatrix_ctm::matrix_vertical(int x) const { const auto x_orig = x; const int s0 = lattice.index(x, 0); - const size_t CHI = eTl[s0].shape()[0]; + const int s1 = lattice.left(s0); + const size_t CHI0 = eTl[s0].shape()[0]; + const size_t CHI1 = eTr[s1].shape()[1]; - ptensor res(comm, Shape(CHI * CHI, CHI * CHI)); + ptensor res(comm, Shape(CHI0 * CHI1, CHI0 * CHI1)); #pragma omp parallel for shared(res) - for (size_t i = 0; i < CHI * CHI; ++i) { + for (size_t i = 0; i < CHI0 * CHI1; ++i) { typename ptensor::value_type v = 1.0; res.set_value({i, i}, v); } - res = reshape(res, {CHI, CHI, CHI, CHI}); + res = reshape(res, {CHI0, CHI1, CHI0, CHI1}); const size_t rank = eTl[s0].rank(); if (rank == 3) { @@ -434,7 +444,7 @@ ptensor TransferMatrix_ctm::matrix_vertical(int x) const { } x = (x + lattice.skew + lattice.LX) % lattice.LX; } while (x != x_orig); - res = reshape(res, {CHI * CHI, CHI * CHI}); + res = reshape(res, {CHI0 * CHI1, CHI0 * CHI1}); } else if (rank == 4) { do { for (int y = 0; y < lattice.LY; ++y) { @@ -446,7 +456,7 @@ ptensor TransferMatrix_ctm::matrix_vertical(int x) const { } x = (x + lattice.skew + lattice.LX) % lattice.LX; } while (x != x_orig); - res = reshape(res, {CHI * CHI, CHI * CHI}); + res = reshape(res, {CHI0 * CHI1, CHI0 * CHI1}); } else { throw std::runtime_error("rank of eTl is not 3 or 4"); } From 4495f6ed6bc2625da338fa0204552e59762a0a6b Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Sat, 22 Jul 2023 11:10:44 +0900 Subject: [PATCH 22/25] correct correlation length code --- src/iTPS/correlation_length.cpp | 21 +- src/iTPS/transfer_matrix.cpp | 30 +- test/CMakeLists.txt | 13 +- test/data/FT_Kitaev.toml | 216 ++++++++++++++ test/data/output_FT_Kitaev/FT_correlation.dat | 278 ++++++++++++++++++ .../FT_correlation_length.dat | 38 +++ test/data/output_FT_Kitaev/FT_density.dat | 103 +++++++ test/data/output_FT_Kitaev/FT_onesite_obs.dat | 100 +++++++ test/data/output_FT_Kitaev/FT_twosite_obs.dat | 180 ++++++++++++ test/data/output_FT_Kitaev/parameters.dat | 39 +++ 10 files changed, 997 insertions(+), 21 deletions(-) create mode 100644 test/data/FT_Kitaev.toml create mode 100644 test/data/output_FT_Kitaev/FT_correlation.dat create mode 100644 test/data/output_FT_Kitaev/FT_correlation_length.dat create mode 100644 test/data/output_FT_Kitaev/FT_density.dat create mode 100644 test/data/output_FT_Kitaev/FT_onesite_obs.dat create mode 100644 test/data/output_FT_Kitaev/FT_twosite_obs.dat create mode 100644 test/data/output_FT_Kitaev/parameters.dat diff --git a/src/iTPS/correlation_length.cpp b/src/iTPS/correlation_length.cpp index a311eee6..c962298e 100644 --- a/src/iTPS/correlation_length.cpp +++ b/src/iTPS/correlation_length.cpp @@ -98,27 +98,24 @@ void iTPS::save_correlation_length( int dir, x; std::vector> eigvals; std::tie(dir, x, eigvals) = lambda; - - int L = 1; - if (dir == 0) { - L = LX; - } else { - L = 0; - int x = 0; - do { - L += LY; - x = (x + LX + lattice.skew) % LX; - } while (x != 0); + if(eigvals.size() == 1){ + if (time) { + ofs << time.get() << " "; + } + ofs << dir << " " << x << " " << 0.0 << std::endl; + continue; } + const int L = dir == 0 ? lattice.LX_noskew : lattice.LY_noskew; + const double e0 = std::abs(eigvals[0]); const double e1 = std::abs(eigvals[1]) / e0; const double correlation_length = -L / std::log(e1); + if (time) { ofs << time.get() << " "; } ofs << dir << " " << x << " " << correlation_length; - for (size_t i = 1; i < eigvals.size(); ++i) { const double e = std::abs(eigvals[i]) / e0; ofs << " " << -std::log(e) / L; diff --git a/src/iTPS/transfer_matrix.cpp b/src/iTPS/transfer_matrix.cpp index b5bc1dbc..b6be27ae 100644 --- a/src/iTPS/transfer_matrix.cpp +++ b/src/iTPS/transfer_matrix.cpp @@ -89,14 +89,17 @@ std::vector> TransferMatrix::eigenvalues( const size_t N = dim(dir, fixed_coord); const size_t nev = std::min(static_cast(params.num_eigvals), N); - std::vector> eigvals; - + std::vector> eigvals(nev); if (N == 1) { - eigvals.resize(nev); eigvals[0] = 1.0; return eigvals; } + static int nst = 0; + std::stringstream filename; + filename << "matrix_" << nst++ << ".dat"; + std::ofstream fout(filename.str()); + if (N <= params.maxdim_dense_eigensolver) { ptensor matrix = dir == 0 ? matrix_horizontal(fixed_coord) : matrix_vertical(fixed_coord); @@ -107,6 +110,7 @@ std::vector> TransferMatrix::eigenvalues( typename ptensor::value_type v; matrix.get_value({row, col}, v); matrix_2.set_value({row, col}, v); + fout << row << " " << col << " " << std::real(v) << std::endl; } } std::vector> evecs; @@ -385,7 +389,7 @@ ptensor TransferMatrix_ctm::matrix_horizontal(int y) const { } res = reshape(res, {CHI0, CHI1, CHI0, CHI1}); const size_t rank = top.rank(); - if (rank == 3) { + if (rank == 3) { // iTPO res = transpose(tensordot(top, bottom, Axes(2), Axes(2)), Axes(0, 3, 1, 2)); for (int x = 1; x < lattice.LX; ++x) { int site = lattice.index(x, y); @@ -394,7 +398,7 @@ ptensor TransferMatrix_ctm::matrix_horizontal(int y) const { res = tensordot(res, tensordot(top, bottom, Axes(2), Axes(2)), Axes(2, 3), Axes(0, 3)); } - } else if (rank == 4) { + } else if (rank == 4) { // iTPS res = transpose(tensordot(top, bottom, Axes(2, 3), Axes(2, 3)), Axes(0, 3, 1, 2)); for (int x = 1; x < lattice.LX; ++x) { @@ -521,8 +525,20 @@ ptensor TransferMatrix_mf::matrix_vertical(int x) const { template size_t TransferMatrix_ctm::dim(int dir, int fixed_coord) const { - auto ret = C1[0].shape()[0]; - return ret * ret; + const auto &lattice = this->lattice; + if(dir == 0){ + const int s0 = lattice.index(0, fixed_coord); + const int s1 = lattice.top(s0); + const size_t CHI0 = eTt[s0].shape()[0]; + const size_t CHI1 = eTb[s1].shape()[1]; + return CHI0 * CHI1; + }else{ + const int s0 = lattice.index(fixed_coord, 0); + const int s1 = lattice.left(s0); + const size_t CHI0 = eTl[s0].shape()[0]; + const size_t CHI1 = eTr[s1].shape()[1]; + return CHI0 * CHI1; + } } template diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 77b44033..e8a564dd 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -35,8 +35,17 @@ add_test(NAME restart COMMAND ${TENES_PYTHON_EXECUTABLE} configure_file(${CMAKE_CURRENT_SOURCE_DIR}/restart.py.in ${CMAKE_CURRENT_BINARY_DIR}/restart.py @ONLY) -foreach(name AntiferroHeisenberg_real AntiferroHeisenberg_complex -AntiferroHeisenberg_mf J1J2_AFH Honeycomb Honeycomb_skew TE_TFI FT_TFI_square) +foreach( + name + AntiferroHeisenberg_real + AntiferroHeisenberg_complex + AntiferroHeisenberg_mf + J1J2_AFH + Honeycomb + Honeycomb_skew + TE_TFI + FT_TFI_square + FT_Kitaev) add_test(NAME ${name} COMMAND ${TENES_PYTHON_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/fulltest.py ${name}) endforeach() diff --git a/test/data/FT_Kitaev.toml b/test/data/FT_Kitaev.toml new file mode 100644 index 00000000..1d113542 --- /dev/null +++ b/test/data/FT_Kitaev.toml @@ -0,0 +1,216 @@ +[parameter] +[parameter.general] +mode = 'finite temperature' +output = 'output_FT_Kitaev' +measure_interval = 50 +[parameter.simple_update] +num_step = 500 +tau = 0.01 +[parameter.full_update] +num_step = 0 +tau = 0.01 +[parameter.ctm] +iteration_max = 100 +dimension = 5 +meanfield_env = false + +[correlation] +r_max = 3 +operators = [[0,0], [0,1]] + +[tensor] +L_sub = [2, 1] +skew = 1 +[[tensor.unitcell]] +index = [0] +physical_dim = 2 +virtual_dim = [4, 1, 4, 4] +initial_state = [0.0] +noise = 0.01 +[[tensor.unitcell]] +index = [1] +physical_dim = 2 +virtual_dim = [4, 4, 4, 1] +initial_state = [0.0] +noise = 0.01 + +[observable] +[[observable.onesite]] +name = "Sz" +group = 0 +sites = [] +dim = 2 +elements = """ +0 0 0.5 0.0 +1 1 -0.5 0.0 +""" +[[observable.onesite]] +name = "Sx" +group = 1 +sites = [] +dim = 2 +elements = """ +1 0 0.5 0.0 +0 1 0.5 0.0 +""" +[[observable.onesite]] +name = "Sy" +group = 2 +sites = [] +dim = 2 +elements = """ +1 0 0.0 0.5 +0 1 0.0 -0.5 +""" + +[[observable.twosite]] +name = "bond_hamiltonian" +group = 0 +bonds = """ +0 1 0 +""" +dim = [2, 2] +elements = """ +1 1 0 0 -0.075 0.0 +0 1 1 0 -0.075 0.0 +1 0 0 1 -0.075 0.0 +0 0 1 1 -0.075 0.0 +""" +[[observable.twosite]] +name = "bond_hamiltonian" +group = 0 +bonds = """ +1 1 0 +""" +dim = [2, 2] +elements = """ +1 1 0 0 0.075 0.0 +0 1 1 0 -0.075 0.0 +1 0 0 1 -0.075 0.0 +0 0 1 1 0.075 0.0 +""" +[[observable.twosite]] +name = "bond_hamiltonian" +group = 0 +bonds = """ +1 0 1 +""" +dim = [2, 2] +elements = """ +0 0 0 0 -0.6 0.0 +1 0 1 0 0.6 0.0 +0 1 0 1 0.6 0.0 +1 1 1 1 -0.6 0.0 +""" +[[observable.twosite]] +name = "SzSz" +group = 1 +bonds = """ +0 1 0 +1 1 0 +1 0 1 +""" +ops = [0, 0] +[[observable.twosite]] +name = "SxSx" +group = 2 +bonds = """ +0 1 0 +1 1 0 +1 0 1 +""" +ops = [1, 1] +[[observable.twosite]] +name = "SySy" +group = 3 +bonds = """ +0 1 0 +1 1 0 +1 0 1 +""" +ops = [2, 2] + + +[evolution] +[[evolution.simple]] +group = 0 +source_site = 0 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.000000281250013 0.0 +1 1 0 0 0.0007500000703124684 0.0 +1 0 1 0 1.000000281250013 0.0 +0 1 1 0 0.0007500000703124684 0.0 +1 0 0 1 0.0007500000703124684 0.0 +0 1 0 1 1.000000281250013 0.0 +0 0 1 1 0.0007500000703124684 0.0 +1 1 1 1 1.000000281250013 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 1 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.000000281250013 0.0 +1 1 0 0 -0.0007500000703124684 0.0 +1 0 1 0 1.000000281250013 0.0 +0 1 1 0 0.0007500000703124684 0.0 +1 0 0 1 0.0007500000703124684 0.0 +0 1 0 1 1.000000281250013 0.0 +0 0 1 1 -0.0007500000703124684 0.0 +1 1 1 1 1.000000281250013 0.0 +""" +[[evolution.simple]] +group = 0 +source_site = 1 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.006018036054065 0.0 +1 0 1 0 0.9940179640539353 0.0 +0 1 0 1 0.9940179640539353 0.0 +1 1 1 1 1.006018036054065 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 0 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.000000281250013 0.0 +1 1 0 0 0.0007500000703124684 0.0 +1 0 1 0 1.000000281250013 0.0 +0 1 1 0 0.0007500000703124684 0.0 +1 0 0 1 0.0007500000703124684 0.0 +0 1 0 1 1.000000281250013 0.0 +0 0 1 1 0.0007500000703124684 0.0 +1 1 1 1 1.000000281250013 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 1 +source_leg = 2 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.000000281250013 0.0 +1 1 0 0 -0.0007500000703124684 0.0 +1 0 1 0 1.000000281250013 0.0 +0 1 1 0 0.0007500000703124684 0.0 +1 0 0 1 0.0007500000703124684 0.0 +0 1 0 1 1.000000281250013 0.0 +0 0 1 1 -0.0007500000703124684 0.0 +1 1 1 1 1.000000281250013 0.0 +""" +[[evolution.full]] +group = 0 +source_site = 1 +source_leg = 1 +dimensions = [2, 2, 2, 2] +elements = """ +0 0 0 0 1.006018036054065 0.0 +1 0 1 0 0.9940179640539353 0.0 +0 1 0 1 0.9940179640539353 0.0 +1 1 1 1 1.006018036054065 0.0 +""" diff --git a/test/data/output_FT_Kitaev/FT_correlation.dat b/test/data/output_FT_Kitaev/FT_correlation.dat new file mode 100644 index 00000000..a8135938 --- /dev/null +++ b/test/data/output_FT_Kitaev/FT_correlation.dat @@ -0,0 +1,278 @@ +# The meaning of each column is the following: +# $1: inverse temperature +# $2: left_op +# $3: left_site +# $4: right_op +# $5: right_dx +# $6: right_dy +# $7: real +# $8: imag +# The names of operators are the following: +# 0: Sz +# 1: Sx +# 2: Sy + +0.00000000000000000e+00 0 0 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 0 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 0 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 0 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 0 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 0 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 0 1 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 0 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 0 3 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 0 1 0 -8.42573998864580599e-29 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 1 1 0 2.04845760964855455e-17 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 0 2 0 5.06734515965363398e-30 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 1 2 0 -4.53257350754023699e-33 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 0 3 0 -6.87530529473829150e-30 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 1 3 0 3.63056388152620962e-32 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 0 0 1 -7.05833945923473913e-30 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 1 0 1 3.97344787279753810e-32 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 0 0 2 5.57337130823296119e-30 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 1 0 2 -5.37140037976987154e-33 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 0 0 3 -6.74668885858367346e-30 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 1 0 3 3.64418340972615707e-32 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 0 1 0 1.10923977951132971e-29 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 1 1 0 5.79370327544240354e-32 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 0 2 0 8.02329650277465122e-30 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 1 2 0 4.78244208364956249e-31 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 0 3 0 -7.00262622753886003e-30 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 1 3 0 6.63088348244387858e-33 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 0 0 1 1.33527917497428650e-01 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 1 0 1 -1.81999910367892620e-16 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 0 0 2 8.52894700198194722e-30 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 1 0 2 -4.14546440787306168e-32 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 0 0 3 -7.00130145313683790e-30 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 1 0 3 6.63034182631539710e-33 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 1 0 -7.15409559148897802e-29 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 1 0 3.82371013916869169e-17 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 2 0 5.16650568099047801e-32 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 2 0 1.73369550439272802e-32 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 3 0 3.70755635010907971e-30 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 3 0 -3.09772109904780025e-31 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 0 1 3.71456433537289728e-30 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 0 1 -6.70553070801578604e-33 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 0 2 4.90332883875911029e-31 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 0 2 6.46713177365762692e-33 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 0 0 3 3.72284686318897580e-30 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 0 3 -3.11964210025991477e-31 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 1 0 5.43365325769850325e-29 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 1 0 -3.01495570071156943e-30 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 2 0 2.60391886321904001e-29 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 2 0 -4.50226490801294468e-30 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 3 0 3.49926712932779631e-30 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 3 0 4.57631216427832557e-32 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 0 1 2.06120649630784802e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 0 1 -5.21601008499878487e-16 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 0 2 2.62199057904155227e-29 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 0 2 -2.26111789554354065e-30 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 0 3 3.66047639282768062e-30 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 0 3 4.57683719258661085e-32 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 0 1 0 1.33077828070470868e-28 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 1 1 0 3.28512990167589909e-18 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 0 2 0 2.24592056009166299e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 1 2 0 -5.47148769461040484e-33 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 0 3 0 -2.09477854731437561e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 1 3 0 1.06326412123923915e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 0 0 1 1.35339148425077505e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 1 0 1 -2.54540805154115571e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 0 0 2 5.88606611798903488e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 1 0 2 3.59053676139142012e-33 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 0 0 3 -2.55411251589710508e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 1 0 3 1.06875613591816053e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 0 1 0 2.77076194090709718e-29 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 1 1 0 1.48993003849571975e-30 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 0 2 0 1.40370035005845858e-32 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 1 2 0 2.19849765561093327e-30 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 0 3 0 -2.21115536596412518e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 1 3 0 -1.41056459884259083e-33 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 0 0 1 2.34019886101088231e-01 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 1 0 1 -2.40638224530880617e-16 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 0 0 2 2.10216647071212022e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 1 0 2 -1.09494873636970523e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 0 0 3 -2.55411777752653107e-31 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 1 0 3 -1.43747361296585365e-33 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 0 1 0 2.13950593800037579e-29 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 1 1 0 8.31339989165132054e-18 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 0 2 0 1.13220897443169345e-29 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 1 2 0 4.40543314514946637e-32 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 0 3 0 3.67453854593947047e-30 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 1 3 0 2.75834131888265023e-31 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 0 0 1 3.72348433200951180e-30 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 1 0 1 2.47227745926786638e-31 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 0 0 2 1.14167844788371689e-29 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 1 0 2 4.32285624831349693e-32 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 0 0 3 3.66450118841891403e-30 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 1 0 3 2.75709988262810322e-31 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 0 1 0 -3.62335704507909920e-30 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 1 1 0 -5.23553525412471005e-31 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 0 2 0 9.82017988026703846e-31 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 1 2 0 1.50811679837310576e-30 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 0 3 0 3.62618956930787851e-30 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 1 3 0 1.42336342056073146e-32 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 0 0 1 2.43463570838282739e-01 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 1 0 1 -3.72573861144772269e-16 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 0 0 2 1.26853160875867128e-30 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 1 0 2 -8.34505257530203707e-32 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 0 0 3 3.85737126542243702e-30 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 1 0 3 1.41134602646716288e-32 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 0 1 0 2.06819213730109358e-29 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 1 1 0 -2.34643189529633696e-18 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 0 2 0 2.18651683853576936e-32 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 1 2 0 2.39615859296250852e-34 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 0 3 0 -4.28354365495647030e-32 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 1 3 0 3.28281952978294368e-33 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 0 0 1 -1.07106363248606784e-30 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 1 0 1 -2.85878316228229406e-31 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 0 0 2 4.14655220558309755e-31 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 1 0 2 2.64144828430454329e-34 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 0 0 3 -4.57654222113101008e-32 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 1 0 3 3.19606138071811476e-33 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 0 1 0 -1.95785967632498840e-28 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 1 1 0 -1.53296879585003073e-30 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 0 2 0 -3.20689136318517925e-31 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 1 2 0 2.48542397349203798e-30 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 0 3 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 1 3 0 -6.18395899330859246e-34 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 0 0 1 2.46560749263797785e-01 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 1 0 1 -2.49454843438572561e-16 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 0 0 2 -5.96521545364471394e-31 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 1 0 2 -1.56596694136692671e-31 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 0 0 3 4.39348091860459108e-31 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 1 0 3 -4.60904523531960624e-34 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 0 1 0 9.64487414133643300e-29 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 1 1 0 6.13904048166607880e-18 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 0 2 0 8.07106239852976532e-30 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 1 2 0 1.56416314397909898e-32 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 0 3 0 7.66821878357931244e-30 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 1 3 0 -2.09227876616273642e-31 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 0 0 1 7.36928802009484441e-30 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 1 0 1 -3.79037838280821900e-31 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 0 0 2 7.82220304215566983e-30 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 1 0 2 1.60363997468539356e-32 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 0 0 3 7.64633804417347210e-30 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 1 0 3 -2.09238046546888212e-31 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 0 1 0 -7.18146482020337052e-29 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 1 1 0 -6.98052993969622735e-31 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 0 2 0 7.13528704797559386e-30 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 1 2 0 3.94189411756352723e-30 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 0 3 0 8.06146087529312749e-30 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 1 3 0 1.59260099272715962e-32 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 0 0 1 2.47577496200331676e-01 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 1 0 1 -2.56261560229885469e-16 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 0 0 2 7.23845654647241011e-30 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 1 0 2 -4.53565866091737614e-31 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 0 0 3 8.13648813464842359e-30 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 1 0 3 1.78889452034381264e-32 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 0 1 0 4.54019699509724222e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 1 1 0 -9.95943447567058410e-18 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 0 2 0 2.08421670823711475e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 1 2 0 -1.49266214200692335e-31 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 0 3 0 3.34709130285213803e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 1 3 0 -1.03981786904660926e-30 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 0 0 1 3.32537103354665243e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 1 0 1 -7.66243084809786295e-31 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 0 0 2 2.12698528372537969e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 1 0 2 -1.54609439729664339e-31 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 0 0 3 3.35714489805316566e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 1 0 3 -1.03977778453843252e-30 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 0 1 0 -1.53196832003404454e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 1 1 0 -1.00753030138602636e-30 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 0 2 0 4.96465103535174492e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 1 2 0 -9.10830561925637057e-30 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 0 3 0 3.30771377712362514e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 1 3 0 -2.43786727121401505e-31 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 0 0 1 2.47914909872992029e-01 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 1 0 1 2.84605856650264484e-16 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 0 0 2 5.28240301232940820e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 1 0 2 -2.93346469234122546e-30 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 0 0 3 3.18045310169569733e-29 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 1 0 3 -2.44039486336312841e-31 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 0 1 0 9.40285146166316260e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 1 1 0 -1.30892787796709007e-17 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 0 2 0 1.94437131763303174e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 1 2 0 1.05587470741883397e-31 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 0 3 0 3.97894372635460374e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 1 3 0 1.04112192227882230e-31 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 0 0 1 3.99413216882854762e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 1 0 1 1.00125903325767432e-31 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 0 0 2 1.91727510641162536e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 1 0 2 9.83982311291926731e-32 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 0 0 3 4.00682887640916049e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 1 0 3 1.03920332512828633e-31 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 0 1 0 6.54717066570292620e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 1 1 0 3.44431129664503840e-30 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 0 2 0 6.93414349421094547e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 1 2 0 -1.90658420003163547e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 0 3 0 4.01833922003932147e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 1 3 0 2.03295398172788641e-31 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 0 0 1 2.48028336842428199e-01 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 1 0 1 3.61813613068923425e-16 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 0 0 2 8.13672850038289732e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 1 0 2 1.83290730353187075e-31 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 0 0 3 3.81041572981045659e-29 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 1 0 3 1.88310521313330346e-31 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 0 1 0 -1.04066266282220989e-28 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 1 1 0 4.53666156597179522e-18 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 0 2 0 7.38009715609219951e-30 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 1 2 0 2.41331522504114865e-32 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 0 3 0 2.01933116769636900e-29 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 1 3 0 -8.71715662762003149e-33 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 0 0 1 1.97634304264028132e-29 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 1 0 1 -5.30944808181128690e-32 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 0 0 2 7.71675469665284333e-30 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 1 0 2 3.17780854887541359e-32 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 0 0 3 1.98407872440430979e-29 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 1 0 3 -8.36900782855870512e-33 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 0 1 0 2.28472124466496602e-29 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 1 1 0 4.28276395662949719e-31 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 0 2 0 4.92006477072812871e-29 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 1 2 0 -2.64074236343710012e-30 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 0 3 0 1.97007919115505645e-29 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 1 3 0 8.75101491863182116e-32 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 0 0 1 2.48066939887705618e-01 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 1 0 1 5.44701559957393915e-17 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 0 0 2 5.12111902596052054e-29 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 1 0 2 -1.51303806222715231e-31 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 0 0 3 1.92514570753835401e-29 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 1 0 3 8.23733712588654261e-32 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 0 1 0 -5.07110139675552788e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 1 1 0 -1.57593436339931170e-17 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 0 2 0 2.95215664555728078e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 1 2 0 -1.77749267018260502e-31 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 0 3 0 2.97497791641264083e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 1 3 0 -5.01814175372965597e-32 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 0 0 1 3.00634791175933756e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 1 0 1 -4.40935355808302365e-32 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 0 0 2 3.01666940346362727e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 1 0 2 -1.80752290555619386e-31 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 0 0 3 3.02538919434473312e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 1 0 3 -5.03177780310912949e-32 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 0 1 0 1.21483528103592793e-28 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 1 1 0 1.14239097528607894e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 0 2 0 2.92872683090851504e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 1 2 0 -1.55661196518638925e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 0 3 0 3.01438160083309122e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 1 3 0 -1.79490910266670880e-31 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 0 0 1 2.48080221860532829e-01 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 1 0 1 5.41393809870950946e-16 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 0 0 2 2.94651430105600081e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 1 0 2 -5.02872425983774527e-32 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 0 0 3 3.02538921587178562e-29 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 1 0 3 -1.79046962156854680e-31 0.00000000000000000e+00 diff --git a/test/data/output_FT_Kitaev/FT_correlation_length.dat b/test/data/output_FT_Kitaev/FT_correlation_length.dat new file mode 100644 index 00000000..ed0b5a24 --- /dev/null +++ b/test/data/output_FT_Kitaev/FT_correlation_length.dat @@ -0,0 +1,38 @@ +# The meaning of each column is the following: +# $1: inverse temperature +# $2: direction 0: +x, 1: +y +# $3: y (dir=0) or x (dir=1) coorinates +# $4: correlation length xi = 1/e_1 +# $5-: eigenvalues e_i = -log|t_i/t_0| +# where i > 0 and t_i is i-th largest eigenvalue of T + +1.00000000000000044e+00 0 0 1.52922416934242800e-01 6.53926363477503525e+00 6.65455582105654475e+00 1.29656625326995343e+01 +1.00000000000000044e+00 1 0 1.20913683385671891e-01 8.27036255946610765e+00 9.23278664960734829e+00 1.74977094536342008e+01 +1.00000000000000044e+00 1 1 1.20913683385671891e-01 8.27036255946610765e+00 9.23278664960734829e+00 1.74977094536274222e+01 +2.00000000000000133e+00 0 0 1.73918081710140615e-01 5.74983342828403110e+00 6.12933278034071005e+00 1.11854614909107664e+01 +2.00000000000000133e+00 1 0 1.61175788092394939e-01 6.20440583437224635e+00 6.40872694958042999e+00 6.83536820681826462e+00 +2.00000000000000133e+00 1 1 1.61175788092394939e-01 6.20440583437224635e+00 6.40872694958042999e+00 6.83536820681826462e+00 +3.00000000000000222e+00 0 0 1.77640614579564343e-01 5.62934328034597620e+00 6.17051926116303484e+00 1.09538575168168659e+01 +3.00000000000000222e+00 1 0 1.77601146166083579e-01 5.63059429281413948e+00 5.83491319526734564e+00 6.26155163885371024e+00 +3.00000000000000222e+00 1 1 1.77601146166083579e-01 5.63059429281413948e+00 5.83491319526734653e+00 6.26155163885370936e+00 +4.00000000000000266e+00 0 0 1.75220833295319400e-01 5.70708391915125368e+00 6.23634207751748360e+00 1.12852521883661279e+01 +4.00000000000000266e+00 1 0 1.81458068520252286e-01 5.51091504585474734e+00 5.71523246539598251e+00 6.14186933756098430e+00 +4.00000000000000266e+00 1 1 1.81458068520252341e-01 5.51091504585474556e+00 5.71523246539598162e+00 6.14186933756098341e+00 +4.99999999999998135e+00 0 0 1.72063323760119735e-01 5.81181380288886817e+00 6.29299416271567313e+00 1.16278269417321614e+01 +4.99999999999998135e+00 1 0 1.80917532194175723e-01 5.52738028134673520e+00 5.73167416447899125e+00 6.15828447720610583e+00 +4.99999999999998135e+00 1 1 1.80917532194175723e-01 5.52738028134673520e+00 5.73167416447899125e+00 6.15828447720610583e+00 +5.99999999999996003e+00 0 0 1.69889505670478724e-01 5.88617876103319304e+00 6.33565818041155993e+00 1.18398552625947033e+01 +5.99999999999996003e+00 1 0 1.79778596309498967e-01 5.56239741842484836e+00 5.76669068229824600e+00 6.19330038515390502e+00 +5.99999999999996003e+00 1 1 1.79778596309499022e-01 5.56239741842484658e+00 5.76669068229824511e+00 6.19330038515390413e+00 +6.99999999999993872e+00 0 0 1.68710398488690821e-01 5.92731692271495092e+00 6.36097229834486999e+00 1.19486766569446754e+01 +6.99999999999993872e+00 1 0 1.79006262859954912e-01 5.58639672167418766e+00 5.79071108606070784e+00 6.21734476569021588e+00 +6.99999999999993872e+00 1 1 1.79006262859954912e-01 5.58639672167418766e+00 5.79071108606070784e+00 6.21734476569021588e+00 +7.99999999999991740e+00 0 0 1.68146896198252960e-01 5.94718084371271338e+00 6.37378079358106575e+00 1.19992319023914664e+01 +7.99999999999991740e+00 1 0 1.78603001919940219e-01 5.59901003482716142e+00 5.80332425380316597e+00 6.22995778653942800e+00 +7.99999999999991740e+00 1 1 1.78603001919940246e-01 5.59901003482716053e+00 5.80332425380316508e+00 6.22995778653942889e+00 +8.99999999999989697e+00 0 0 1.67897147569721406e-01 5.95602733265457918e+00 6.37966728126680938e+00 1.20212853447231325e+01 +8.99999999999989697e+00 1 0 1.78415984767850533e-01 5.60487896474729919e+00 5.80919312954611478e+00 6.23582660847358294e+00 +8.99999999999989697e+00 1 1 1.78415984767850533e-01 5.60487896474729919e+00 5.80919312954611478e+00 6.23582660847358294e+00 +9.99999999999987566e+00 0 0 1.67791681439623752e-01 5.95977101737208947e+00 6.38221537353071611e+00 1.20305035708506072e+01 +9.99999999999987566e+00 1 0 1.78334664985208974e-01 5.60743476363913729e+00 5.81176128599935460e+00 6.23840878693240519e+00 +9.99999999999987566e+00 1 1 1.78334664985208974e-01 5.60743476363913729e+00 5.81176128599935460e+00 6.23840878693240608e+00 diff --git a/test/data/output_FT_Kitaev/FT_density.dat b/test/data/output_FT_Kitaev/FT_density.dat new file mode 100644 index 00000000..273c41b3 --- /dev/null +++ b/test/data/output_FT_Kitaev/FT_density.dat @@ -0,0 +1,103 @@ +# The meaning of each column is the following: +# $1: inverse temperature +# $2: observable ID +# $3: real +# $4: imag +# The meaning of observable IDs are the following: +# 0: Energy +# 1: Sz +# 2: Sx +# 3: Sy +# 4: bond_hamiltonian +# 5: SzSz +# 6: SxSx +# 7: SySy + +0.00000000000000000e+00 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 4 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 5 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 6 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 7 0.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000044e+00 0 -1.64721302845836054e-01 0.00000000000000000e+00 +1.00000000000000044e+00 1 -2.71959582331549661e-16 0.00000000000000000e+00 +1.00000000000000044e+00 2 6.57094790500213798e-18 0.00000000000000000e+00 +1.00000000000000044e+00 3 0.00000000000000000e+00 -1.34930009110283021e-18 +1.00000000000000044e+00 4 -1.64721302845836054e-01 0.00000000000000000e+00 +1.00000000000000044e+00 5 6.67639587487143388e-02 0.00000000000000000e+00 +1.00000000000000044e+00 6 7.47930529495328174e-03 0.00000000000000000e+00 +1.00000000000000044e+00 7 7.48003420145255515e-03 0.00000000000000000e+00 +2.00000000000000133e+00 0 -2.52918018013517931e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 -2.90789227021776228e-15 0.00000000000000000e+00 +2.00000000000000133e+00 2 2.10986744213050034e-16 0.00000000000000000e+00 +2.00000000000000133e+00 3 0.00000000000000000e+00 -1.95302876966978113e-17 +2.00000000000000133e+00 4 -2.52918018013517931e-01 0.00000000000000000e+00 +2.00000000000000133e+00 5 1.03060324815392401e-01 0.00000000000000000e+00 +2.00000000000000133e+00 6 9.28809795547138987e-03 0.00000000000000000e+00 +2.00000000000000133e+00 7 9.28936356644928171e-03 0.00000000000000000e+00 +3.00000000000000222e+00 0 -2.86101188110248539e-01 0.00000000000000000e+00 +3.00000000000000222e+00 1 2.29927934041350194e-16 0.00000000000000000e+00 +3.00000000000000222e+00 2 7.04674998534482888e-17 0.00000000000000000e+00 +3.00000000000000222e+00 3 0.00000000000000000e+00 1.10902578756929740e-18 +3.00000000000000222e+00 4 -2.86101188110248539e-01 0.00000000000000000e+00 +3.00000000000000222e+00 5 1.17009943050544088e-01 0.00000000000000000e+00 +3.00000000000000222e+00 6 8.79496268980409918e-03 0.00000000000000000e+00 +3.00000000000000222e+00 7 8.79611994000512563e-03 0.00000000000000000e+00 +4.00000000000000266e+00 0 -2.97102193806213888e-01 0.00000000000000000e+00 +4.00000000000000266e+00 1 2.22814850850524506e-15 0.00000000000000000e+00 +4.00000000000000266e+00 2 4.74124925620775208e-17 0.00000000000000000e+00 +4.00000000000000266e+00 3 0.00000000000000000e+00 -8.12637863771076938e-18 +4.00000000000000266e+00 4 -2.97102193806213888e-01 0.00000000000000000e+00 +4.00000000000000266e+00 5 1.21731785419141314e-01 0.00000000000000000e+00 +4.00000000000000266e+00 6 8.24270302229943193e-03 0.00000000000000000e+00 +4.00000000000000266e+00 7 8.24365964528296288e-03 0.00000000000000000e+00 +4.99999999999998135e+00 0 -3.00642598144864270e-01 0.00000000000000000e+00 +4.99999999999998135e+00 1 -3.02661736038639812e-16 0.00000000000000000e+00 +4.99999999999998135e+00 2 1.62440136764167725e-17 0.00000000000000000e+00 +4.99999999999998135e+00 3 0.00000000000000000e+00 2.50954529430949394e-17 +4.99999999999998135e+00 4 -3.00642598144864270e-01 0.00000000000000000e+00 +4.99999999999998135e+00 5 1.23280374631898892e-01 0.00000000000000000e+00 +4.99999999999998135e+00 6 7.94908349814571653e-03 0.00000000000000000e+00 +4.99999999999998135e+00 7 7.94991326287736340e-03 0.00000000000000000e+00 +5.99999999999996003e+00 0 -3.01785190479507692e-01 0.00000000000000000e+00 +5.99999999999996003e+00 1 -2.86655289080518666e-15 0.00000000000000000e+00 +5.99999999999996003e+00 2 3.48990381084151776e-17 0.00000000000000000e+00 +5.99999999999996003e+00 3 0.00000000000000000e+00 8.26737369839129412e-18 +5.99999999999996003e+00 4 -3.01785190479507692e-01 0.00000000000000000e+00 +5.99999999999996003e+00 5 1.23788748100165866e-01 0.00000000000000000e+00 +5.99999999999996003e+00 6 7.81994164701273718e-03 0.00000000000000000e+00 +5.99999999999996003e+00 7 7.82070848335273718e-03 0.00000000000000000e+00 +6.99999999999993872e+00 0 -3.02158579187689513e-01 0.00000000000000000e+00 +6.99999999999993872e+00 1 -5.87491601295201804e-15 0.00000000000000000e+00 +6.99999999999993872e+00 2 1.30200448921722711e-16 0.00000000000000000e+00 +6.99999999999993872e+00 3 0.00000000000000000e+00 -8.27045749876286346e-18 +6.99999999999993872e+00 4 -3.02158579187689513e-01 0.00000000000000000e+00 +6.99999999999993872e+00 5 1.23957454936495973e-01 0.00000000000000000e+00 +6.99999999999993872e+00 6 7.76744286869467896e-03 0.00000000000000000e+00 +6.99999999999993872e+00 7 7.76818159830240662e-03 0.00000000000000000e+00 +7.99999999999991740e+00 0 -3.02282381390020338e-01 0.00000000000000000e+00 +7.99999999999991740e+00 1 -6.64500244286597196e-15 0.00000000000000000e+00 +7.99999999999991740e+00 2 -2.30226690175711199e-17 0.00000000000000000e+00 +7.99999999999991740e+00 3 0.00000000000000000e+00 8.83650985044322641e-18 +7.99999999999991740e+00 4 -3.02282381390020338e-01 0.00000000000000000e+00 +7.99999999999991740e+00 5 1.24014168421214072e-01 0.00000000000000000e+00 +7.99999999999991740e+00 6 7.74693185851836955e-03 0.00000000000000000e+00 +7.99999999999991740e+00 7 7.74765873850331681e-03 0.00000000000000000e+00 +8.99999999999989697e+00 0 -3.02324002248240076e-01 0.00000000000000000e+00 +8.99999999999989697e+00 1 -5.01308963182594285e-15 0.00000000000000000e+00 +8.99999999999989697e+00 2 -4.56531876908606626e-18 0.00000000000000000e+00 +8.99999999999989697e+00 3 0.00000000000000000e+00 -1.05416107328483936e-17 +8.99999999999989697e+00 4 -3.02324002248240076e-01 0.00000000000000000e+00 +8.99999999999989697e+00 5 1.24033469943852767e-01 0.00000000000000000e+00 +8.99999999999989697e+00 6 7.73909627338371323e-03 0.00000000000000000e+00 +8.99999999999989697e+00 7 7.73981833659426015e-03 0.00000000000000000e+00 +9.99999999999987566e+00 0 -3.02338168441693478e-01 0.00000000000000000e+00 +9.99999999999987566e+00 1 -5.40954509813630724e-15 0.00000000000000000e+00 +9.99999999999987566e+00 2 2.10325567866985142e-17 0.00000000000000000e+00 +9.99999999999987566e+00 3 0.00000000000000000e+00 -3.06298811510154602e-17 +9.99999999999987566e+00 4 -3.02338168441693478e-01 0.00000000000000000e+00 +9.99999999999987566e+00 5 1.24040110930266415e-01 0.00000000000000000e+00 +9.99999999999987566e+00 6 7.73614360489278084e-03 0.00000000000000000e+00 +9.99999999999987566e+00 7 7.73686375862070886e-03 0.00000000000000000e+00 diff --git a/test/data/output_FT_Kitaev/FT_onesite_obs.dat b/test/data/output_FT_Kitaev/FT_onesite_obs.dat new file mode 100644 index 00000000..7f831c5b --- /dev/null +++ b/test/data/output_FT_Kitaev/FT_onesite_obs.dat @@ -0,0 +1,100 @@ +# The meaning of each column is the following: +# $1: inverse temperature +# $2: op_group +# $3: site_index +# $4: real +# $5: imag +# The names of op_group are the following: +# 0: Sz +# 1: Sx +# 2: Sy +# -1: norm + +0.00000000000000000e+00 0 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 0 2.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 1 2.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 2.38487633738541291e-15 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 -2.92879550204851223e-15 0.00000000000000000e+00 +1.00000000000000044e+00 1 0 -2.27172015713909270e-18 0.00000000000000000e+00 +1.00000000000000044e+00 1 1 1.54136159671433679e-17 0.00000000000000000e+00 +1.00000000000000044e+00 2 0 0.00000000000000000e+00 1.29161015308168330e-18 +1.00000000000000044e+00 2 1 0.00000000000000000e+00 -3.99021033528734371e-18 +1.00000000000000044e+00 -1 0 1.32675039396407479e+00 0.00000000000000000e+00 +1.00000000000000044e+00 -1 1 1.32675039396577321e+00 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 -7.15788866515180276e-16 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 -5.09999567392034449e-15 0.00000000000000000e+00 +2.00000000000000133e+00 1 0 -8.92224720099146220e-18 0.00000000000000000e+00 +2.00000000000000133e+00 1 1 4.30895735627091506e-16 0.00000000000000000e+00 +2.00000000000000133e+00 2 0 0.00000000000000000e+00 -2.86969393615574150e-17 +2.00000000000000133e+00 2 1 0.00000000000000000e+00 -1.03636360318382106e-17 +2.00000000000000133e+00 -1 0 1.24083855065282567e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 1 1.24083855065290227e+00 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 7.81754975741046393e-16 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 -3.21899107658346006e-16 0.00000000000000000e+00 +3.00000000000000222e+00 1 0 4.73088583503335347e-18 0.00000000000000000e+00 +3.00000000000000222e+00 1 1 1.36204113871863231e-16 0.00000000000000000e+00 +3.00000000000000222e+00 2 0 0.00000000000000000e+00 -1.30214912620208008e-17 +3.00000000000000222e+00 2 1 0.00000000000000000e+00 1.52395428371593956e-17 +3.00000000000000222e+00 -1 0 1.20714239143388191e+00 0.00000000000000000e+00 +3.00000000000000222e+00 -1 1 1.20714239143287649e+00 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 3.34222276275853536e-15 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 1.11407425425195476e-15 0.00000000000000000e+00 +4.00000000000000266e+00 1 0 1.28597108755730883e-17 0.00000000000000000e+00 +4.00000000000000266e+00 1 1 8.19652742485819502e-17 0.00000000000000000e+00 +4.00000000000000266e+00 2 0 0.00000000000000000e+00 4.07086181371235046e-18 +4.00000000000000266e+00 2 1 0.00000000000000000e+00 -2.03236190891338900e-17 +4.00000000000000266e+00 -1 0 1.19585173471554129e+00 0.00000000000000000e+00 +4.00000000000000266e+00 -1 1 1.19585173471649697e+00 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 0.00000000000000000e+00 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 -6.05323472077279624e-16 0.00000000000000000e+00 +4.99999999999998135e+00 1 0 1.28946538923962064e-18 0.00000000000000000e+00 +4.99999999999998135e+00 1 1 3.11985619635939242e-17 0.00000000000000000e+00 +4.99999999999998135e+00 2 0 0.00000000000000000e+00 5.26482632318643994e-17 +4.99999999999998135e+00 2 1 0.00000000000000000e+00 -2.45735734567452025e-18 +4.99999999999998135e+00 -1 0 1.19216418872665719e+00 0.00000000000000000e+00 +4.99999999999998135e+00 -1 1 1.19216418872688568e+00 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 -2.79663696663920620e-15 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 -2.93646881497116672e-15 0.00000000000000000e+00 +5.99999999999996003e+00 1 0 -5.62738223636604494e-18 0.00000000000000000e+00 +5.99999999999996003e+00 1 1 7.54254584531964010e-17 0.00000000000000000e+00 +5.99999999999996003e+00 2 0 0.00000000000000000e+00 5.99817931306756344e-18 +5.99999999999996003e+00 2 1 0.00000000000000000e+00 1.05365680837150256e-17 +5.99999999999996003e+00 -1 0 1.19095510558098083e+00 0.00000000000000000e+00 +5.99999999999996003e+00 -1 1 1.19095510558098061e+00 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 -4.52275280362155931e-15 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 -7.22707922228247755e-15 0.00000000000000000e+00 +6.99999999999993872e+00 1 0 3.37080182800411225e-17 0.00000000000000000e+00 +6.99999999999993872e+00 1 1 2.26692879563404307e-16 0.00000000000000000e+00 +6.99999999999993872e+00 2 0 0.00000000000000000e+00 6.87751296124733939e-18 +6.99999999999993872e+00 2 1 0.00000000000000000e+00 -2.34184279587730663e-17 +6.99999999999993872e+00 -1 0 1.19055405042706441e+00 0.00000000000000000e+00 +6.99999999999993872e+00 -1 1 1.19055405042696494e+00 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 -4.33673843639607616e-15 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 -8.95326644933586696e-15 0.00000000000000000e+00 +7.99999999999991740e+00 1 0 -2.26008747683385270e-17 0.00000000000000000e+00 +7.99999999999991740e+00 1 1 -2.34444632668037127e-17 0.00000000000000000e+00 +7.99999999999991740e+00 2 0 0.00000000000000000e+00 1.96679336935486668e-17 +7.99999999999991740e+00 2 1 0.00000000000000000e+00 -1.99491399266221286e-18 +7.99999999999991740e+00 -1 0 1.19041928403622110e+00 0.00000000000000000e+00 +7.99999999999991740e+00 -1 1 1.19041928403595088e+00 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 -2.84463690736169866e-15 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 -7.18154235629018665e-15 0.00000000000000000e+00 +8.99999999999989697e+00 1 0 -1.21494143493075414e-17 0.00000000000000000e+00 +8.99999999999989697e+00 1 1 3.01877681113540884e-18 0.00000000000000000e+00 +8.99999999999989697e+00 2 0 0.00000000000000000e+00 -1.70436811180417035e-17 +8.99999999999989697e+00 2 1 0.00000000000000000e+00 -4.03954034765508282e-18 +8.99999999999989697e+00 -1 0 1.19037344145523694e+00 0.00000000000000000e+00 +8.99999999999989697e+00 -1 1 1.19037344145523760e+00 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 -5.45617910760437183e-15 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 -5.36291108866824266e-15 0.00000000000000000e+00 +9.99999999999987566e+00 1 0 3.29011733771617677e-17 0.00000000000000000e+00 +9.99999999999987566e+00 1 1 9.16394019623526071e-18 0.00000000000000000e+00 +9.99999999999987566e+00 2 0 0.00000000000000000e+00 -5.33783964250299032e-17 +9.99999999999987566e+00 2 1 0.00000000000000000e+00 -7.88136587700102331e-18 +9.99999999999987566e+00 -1 0 1.19035767814242810e+00 0.00000000000000000e+00 +9.99999999999987566e+00 -1 1 1.19035767814303206e+00 0.00000000000000000e+00 diff --git a/test/data/output_FT_Kitaev/FT_twosite_obs.dat b/test/data/output_FT_Kitaev/FT_twosite_obs.dat new file mode 100644 index 00000000..348f5433 --- /dev/null +++ b/test/data/output_FT_Kitaev/FT_twosite_obs.dat @@ -0,0 +1,180 @@ +# The meaning of each column is the following: +# $1: inverse temperature +# $2: op_group +# $3: source_site +# $4: dx +# $5: dy +# $6: real +# $7: imag +# The names of op_group are the following: +# 0: bond_hamiltonian +# 1: SzSz +# 2: SxSx +# 3: SySy +# -1: norm + +0.00000000000000000e+00 0 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 0 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 1 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 2 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 0 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 1 0 1 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 3 1 1 0 0.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 0 0 1 4.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 1 0 1 4.00000000000000000e+00 0.00000000000000000e+00 +0.00000000000000000e+00 -1 1 1 0 4.00000000000000000e+00 0.00000000000000000e+00 +1.00000000000000044e+00 0 0 1 0 -4.48758317697196905e-03 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 0 1 -3.20467001993828604e-01 0.00000000000000000e+00 +1.00000000000000044e+00 0 1 1 0 -4.48802052087153309e-03 0.00000000000000000e+00 +1.00000000000000044e+00 1 0 1 0 -8.43694443012006953e-29 0.00000000000000000e+00 +1.00000000000000044e+00 1 1 0 1 1.33527917497428678e-01 0.00000000000000000e+00 +1.00000000000000044e+00 1 1 1 0 1.08683089507675756e-29 0.00000000000000000e+00 +1.00000000000000044e+00 2 0 1 0 1.49586105899065635e-02 0.00000000000000000e+00 +1.00000000000000044e+00 2 1 0 1 8.16073569231952406e-33 0.00000000000000000e+00 +1.00000000000000044e+00 2 1 1 0 1.48808998198331808e-32 0.00000000000000000e+00 +1.00000000000000044e+00 3 0 1 0 2.46847851229857608e-31 0.00000000000000000e+00 +1.00000000000000044e+00 3 1 0 1 -2.34651135225952285e-34 0.00000000000000000e+00 +1.00000000000000044e+00 3 1 1 0 1.49600684029051103e-02 0.00000000000000000e+00 +1.00000000000000044e+00 -1 0 0 1 1.76015222854492670e+00 0.00000000000000000e+00 +1.00000000000000044e+00 -1 1 0 1 1.76015211182034781e+00 0.00000000000000000e+00 +1.00000000000000044e+00 -1 1 1 0 1.76026143815332059e+00 0.00000000000000000e+00 +2.00000000000000133e+00 0 0 1 0 -5.57285877328283358e-03 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 0 1 -4.94689559113883459e-01 0.00000000000000000e+00 +2.00000000000000133e+00 0 1 1 0 -5.57361813986957059e-03 0.00000000000000000e+00 +2.00000000000000133e+00 1 0 1 0 -7.09963091390039551e-29 0.00000000000000000e+00 +2.00000000000000133e+00 1 1 0 1 2.06120649630784802e-01 0.00000000000000000e+00 +2.00000000000000133e+00 1 1 1 0 5.44326467265905344e-29 0.00000000000000000e+00 +2.00000000000000133e+00 2 0 1 0 1.85761959109427797e-02 0.00000000000000000e+00 +2.00000000000000133e+00 2 1 0 1 6.94565234122042613e-33 0.00000000000000000e+00 +2.00000000000000133e+00 2 1 1 0 -1.80214030510342428e-31 0.00000000000000000e+00 +2.00000000000000133e+00 3 0 1 0 -1.41167638602769040e-31 0.00000000000000000e+00 +2.00000000000000133e+00 3 1 0 1 6.38203856857921372e-32 0.00000000000000000e+00 +2.00000000000000133e+00 3 1 1 0 1.85787271328985634e-02 0.00000000000000000e+00 +2.00000000000000133e+00 -1 0 0 1 1.53891429988557515e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 1 0 1 1.53891409679029323e+00 0.00000000000000000e+00 +2.00000000000000133e+00 -1 1 1 0 1.53967037738634183e+00 0.00000000000000000e+00 +3.00000000000000222e+00 0 0 1 0 -5.27697761388245916e-03 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 0 1 -5.61647726642611533e-01 0.00000000000000000e+00 +3.00000000000000222e+00 0 1 1 0 -5.27767196400307469e-03 0.00000000000000000e+00 +3.00000000000000222e+00 1 0 1 0 1.33128621134619870e-28 0.00000000000000000e+00 +3.00000000000000222e+00 1 1 0 1 2.34019886101088176e-01 0.00000000000000000e+00 +3.00000000000000222e+00 1 1 1 0 2.76652918511591651e-29 0.00000000000000000e+00 +3.00000000000000222e+00 2 0 1 0 1.75899253796081984e-02 0.00000000000000000e+00 +3.00000000000000222e+00 2 1 0 1 9.38438484218705837e-32 0.00000000000000000e+00 +3.00000000000000222e+00 2 1 1 0 4.14280973061842586e-31 0.00000000000000000e+00 +3.00000000000000222e+00 3 0 1 0 9.65068218831658692e-31 0.00000000000000000e+00 +3.00000000000000222e+00 3 1 0 1 -2.51340083299031510e-32 0.00000000000000000e+00 +3.00000000000000222e+00 3 1 1 0 1.75922398800102513e-02 0.00000000000000000e+00 +3.00000000000000222e+00 -1 0 0 1 1.45601985435398062e+00 0.00000000000000000e+00 +3.00000000000000222e+00 -1 1 0 1 1.45601970113176837e+00 0.00000000000000000e+00 +3.00000000000000222e+00 -1 1 1 0 1.45718975126940098e+00 0.00000000000000000e+00 +4.00000000000000266e+00 0 0 1 0 -4.94562181337965864e-03 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 0 1 -5.84312570011878307e-01 0.00000000000000000e+00 +4.00000000000000266e+00 0 1 1 0 -4.94619578716977860e-03 0.00000000000000000e+00 +4.00000000000000266e+00 1 0 1 0 2.14640757005844194e-29 0.00000000000000000e+00 +4.00000000000000266e+00 1 1 0 1 2.43463570838282628e-01 0.00000000000000000e+00 +4.00000000000000266e+00 1 1 1 0 -3.72688153208135940e-30 0.00000000000000000e+00 +4.00000000000000266e+00 2 0 1 0 1.64854060445988639e-02 0.00000000000000000e+00 +4.00000000000000266e+00 2 1 0 1 3.96006909277103244e-32 0.00000000000000000e+00 +4.00000000000000266e+00 2 1 1 0 -4.96054833552495794e-32 0.00000000000000000e+00 +4.00000000000000266e+00 3 0 1 0 -1.09994760925422567e-31 0.00000000000000000e+00 +4.00000000000000266e+00 3 1 0 1 2.95477062082908647e-32 0.00000000000000000e+00 +4.00000000000000266e+00 3 1 1 0 1.64873192905659258e-02 0.00000000000000000e+00 +4.00000000000000266e+00 -1 0 0 1 1.42875789846528733e+00 0.00000000000000000e+00 +4.00000000000000266e+00 -1 1 0 1 1.42875781384659972e+00 0.00000000000000000e+00 +4.00000000000000266e+00 -1 1 1 0 1.43006078067627507e+00 0.00000000000000000e+00 +4.99999999999998135e+00 0 0 1 0 -4.76945009888742923e-03 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 0 1 -5.91745798233114684e-01 0.00000000000000000e+00 +4.99999999999998135e+00 0 1 1 0 -4.76994795772641821e-03 0.00000000000000000e+00 +4.99999999999998135e+00 1 0 1 0 2.07123040486900716e-29 0.00000000000000000e+00 +4.99999999999998135e+00 1 1 0 1 2.46560749263797785e-01 0.00000000000000000e+00 +4.99999999999998135e+00 1 1 1 0 -1.95725202279416231e-28 0.00000000000000000e+00 +4.99999999999998135e+00 2 0 1 0 1.58981669962914331e-02 0.00000000000000000e+00 +4.99999999999998135e+00 2 1 0 1 3.08947016440763529e-31 0.00000000000000000e+00 +4.99999999999998135e+00 2 1 1 0 -1.20988158370043187e-31 0.00000000000000000e+00 +4.99999999999998135e+00 3 0 1 0 -2.97316183431531792e-31 0.00000000000000000e+00 +4.99999999999998135e+00 3 1 0 1 9.82405434205498256e-32 0.00000000000000000e+00 +4.99999999999998135e+00 3 1 1 0 1.58998265257547268e-02 0.00000000000000000e+00 +4.99999999999998135e+00 -1 0 0 1 1.41991545477678693e+00 0.00000000000000000e+00 +4.99999999999998135e+00 -1 1 0 1 1.41991541448140257e+00 0.00000000000000000e+00 +4.99999999999998135e+00 -1 1 1 0 1.42125532790095255e+00 0.00000000000000000e+00 +5.99999999999996003e+00 0 0 1 0 -4.69196498820764057e-03 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 0 1 -5.94185990880796044e-01 0.00000000000000000e+00 +5.99999999999996003e+00 0 1 1 0 -4.69242509001164231e-03 0.00000000000000000e+00 +5.99999999999996003e+00 1 0 1 0 9.63095657403291751e-29 0.00000000000000000e+00 +5.99999999999996003e+00 1 1 0 1 2.47577496200331731e-01 0.00000000000000000e+00 +5.99999999999996003e+00 1 1 1 0 -7.15362968524134579e-29 0.00000000000000000e+00 +5.99999999999996003e+00 2 0 1 0 1.56398832940254744e-02 0.00000000000000000e+00 +5.99999999999996003e+00 2 1 0 1 -2.36351839462642933e-31 0.00000000000000000e+00 +5.99999999999996003e+00 2 1 1 0 -2.84875209377011270e-31 0.00000000000000000e+00 +5.99999999999996003e+00 3 0 1 0 -7.86125090659523886e-31 0.00000000000000000e+00 +5.99999999999996003e+00 3 1 0 1 7.00251693162804409e-31 0.00000000000000000e+00 +5.99999999999996003e+00 3 1 1 0 1.56414169667054744e-02 0.00000000000000000e+00 +5.99999999999996003e+00 -1 0 0 1 1.41702369389967719e+00 0.00000000000000000e+00 +5.99999999999996003e+00 -1 1 0 1 1.41702367582758226e+00 0.00000000000000000e+00 +5.99999999999996003e+00 -1 1 1 0 1.41837402587471351e+00 0.00000000000000000e+00 +6.99999999999993872e+00 0 0 1 0 -4.66046572121680495e-03 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 0 1 -5.94995783695180802e-01 0.00000000000000000e+00 +6.99999999999993872e+00 0 1 1 0 -4.66090895898144380e-03 0.00000000000000000e+00 +6.99999999999993872e+00 1 0 1 0 4.51234302580216781e-29 0.00000000000000000e+00 +6.99999999999993872e+00 1 1 0 1 2.47914909872991945e-01 0.00000000000000000e+00 +6.99999999999993872e+00 1 1 1 0 -1.47626038112371556e-29 0.00000000000000000e+00 +6.99999999999993872e+00 2 0 1 0 1.55348857373893579e-02 0.00000000000000000e+00 +6.99999999999993872e+00 2 1 0 1 -1.08760574376351416e-31 0.00000000000000000e+00 +6.99999999999993872e+00 2 1 1 0 -1.42533984321349318e-30 0.00000000000000000e+00 +6.99999999999993872e+00 3 0 1 0 -1.09892613234476016e-30 0.00000000000000000e+00 +6.99999999999993872e+00 3 1 0 1 -9.58664022071112519e-33 0.00000000000000000e+00 +6.99999999999993872e+00 3 1 1 0 1.55363631966048132e-02 0.00000000000000000e+00 +6.99999999999993872e+00 -1 0 0 1 1.41606551092251531e+00 0.00000000000000000e+00 +6.99999999999993872e+00 -1 1 0 1 1.41606550278374765e+00 0.00000000000000000e+00 +6.99999999999993872e+00 -1 1 1 0 1.41741892898547217e+00 0.00000000000000000e+00 +7.99999999999991740e+00 0 0 1 0 -4.64815911511102207e-03 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 0 1 -5.95268008421827588e-01 0.00000000000000000e+00 +7.99999999999991740e+00 0 1 1 0 -4.64859524310199008e-03 0.00000000000000000e+00 +7.99999999999991740e+00 1 0 1 0 9.47250221323104039e-29 0.00000000000000000e+00 +7.99999999999991740e+00 1 1 0 1 2.48028336842428143e-01 0.00000000000000000e+00 +7.99999999999991740e+00 1 1 1 0 6.53324051535036450e-29 0.00000000000000000e+00 +7.99999999999991740e+00 2 0 1 0 1.54938637170367391e-02 0.00000000000000000e+00 +7.99999999999991740e+00 2 1 0 1 -9.55549700565872261e-32 0.00000000000000000e+00 +7.99999999999991740e+00 2 1 1 0 -3.69584301541341929e-30 0.00000000000000000e+00 +7.99999999999991740e+00 3 0 1 0 -3.54130540002916008e-30 0.00000000000000000e+00 +7.99999999999991740e+00 3 1 0 1 -2.21566984815801578e-31 0.00000000000000000e+00 +7.99999999999991740e+00 3 1 1 0 1.54953174770066336e-02 0.00000000000000000e+00 +7.99999999999991740e+00 -1 0 0 1 1.41574370603212296e+00 0.00000000000000000e+00 +7.99999999999991740e+00 -1 1 0 1 1.41574370207008005e+00 0.00000000000000000e+00 +7.99999999999991740e+00 -1 1 1 0 1.41709805929750710e+00 0.00000000000000000e+00 +8.99999999999989697e+00 0 0 1 0 -4.64345776403022811e-03 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 0 1 -5.95360655730493349e-01 0.00000000000000000e+00 +8.99999999999989697e+00 0 1 1 0 -4.64389100195655800e-03 0.00000000000000000e+00 +8.99999999999989697e+00 1 0 1 0 -1.04205578553013792e-28 0.00000000000000000e+00 +8.99999999999989697e+00 1 1 0 1 2.48066939887705534e-01 0.00000000000000000e+00 +8.99999999999989697e+00 1 1 1 0 2.34044615307142841e-29 0.00000000000000000e+00 +8.99999999999989697e+00 2 0 1 0 1.54781925467674265e-02 0.00000000000000000e+00 +8.99999999999989697e+00 2 1 0 1 -3.57266900161768988e-31 0.00000000000000000e+00 +8.99999999999989697e+00 2 1 1 0 -2.06356301442681772e-30 0.00000000000000000e+00 +8.99999999999989697e+00 3 0 1 0 -1.39747621639026662e-30 0.00000000000000000e+00 +8.99999999999989697e+00 3 1 0 1 1.72677897186600505e-31 0.00000000000000000e+00 +8.99999999999989697e+00 3 1 1 0 1.54796366731885203e-02 0.00000000000000000e+00 +8.99999999999989697e+00 -1 0 0 1 1.41563428105032862e+00 0.00000000000000000e+00 +8.99999999999989697e+00 -1 1 0 1 1.41563427878066328e+00 0.00000000000000000e+00 +8.99999999999989697e+00 -1 1 1 0 1.41698891940589311e+00 0.00000000000000000e+00 +9.99999999999987566e+00 0 0 1 0 -4.64168616293566920e-03 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 0 1 -5.95392532465278790e-01 0.00000000000000000e+00 +9.99999999999987566e+00 0 1 1 0 -4.64211825517242375e-03 0.00000000000000000e+00 +9.99999999999987566e+00 1 0 1 0 -5.04323820226785818e-29 0.00000000000000000e+00 +9.99999999999987566e+00 1 1 0 1 2.48080221860532829e-01 0.00000000000000000e+00 +9.99999999999987566e+00 1 1 1 0 1.22040791993976233e-28 0.00000000000000000e+00 +9.99999999999987566e+00 2 0 1 0 1.54722872097855617e-02 0.00000000000000000e+00 +9.99999999999987566e+00 2 1 0 1 8.97959544041381842e-31 0.00000000000000000e+00 +9.99999999999987566e+00 2 1 1 0 -5.29509536467870996e-30 0.00000000000000000e+00 +9.99999999999987566e+00 3 0 1 0 -4.47552561458162825e-30 0.00000000000000000e+00 +9.99999999999987566e+00 3 1 0 1 -1.34911656461432770e-30 0.00000000000000000e+00 +9.99999999999987566e+00 3 1 1 0 1.54737275172414177e-02 0.00000000000000000e+00 +9.99999999999987566e+00 -1 0 0 1 1.41559666744271251e+00 0.00000000000000000e+00 +9.99999999999987566e+00 -1 1 0 1 1.41559666584209642e+00 0.00000000000000000e+00 +9.99999999999987566e+00 -1 1 1 0 1.41695139182668983e+00 0.00000000000000000e+00 diff --git a/test/data/output_FT_Kitaev/parameters.dat b/test/data/output_FT_Kitaev/parameters.dat new file mode 100644 index 00000000..09870927 --- /dev/null +++ b/test/data/output_FT_Kitaev/parameters.dat @@ -0,0 +1,39 @@ +simple_num_step = [500] +simple_tau = [0.01] +simple_inverse_lambda_cutoff = 1e-12 +simple_gauge_fix = 0 +simple_gauge_maxiter = 100 +simple_gauge_convergence_epsilon = 0.01 + +full_num_step = [0] +full_inverse_projector_cutoff = 1e-12 +full_inverse_precision = 1e-12 +full_convergence_epsilon = 1e-06 +full_iteration_max = 100 +full_gauge_fix = true +full_fastfullupdate = true + +ctm_dimension = 5 +ctm_inverse_projector_cutoff = 1e-12 +ctm_convergence_epsilon = 1e-06 +ctm_iteration_max = 100 +ctm_projector_corner = true +use_rsvd = false +rsvd_oversampling_factor = 2 +meanfield_env = false + +mode = finite temperature +simple +Lcor = 0 +seed = 11 +is_real = 0 +iszero_tol = 0 +measure = 1 +tensor_load_dir = +tensor_save_dir = +outdir = output_FT_Kitaev + +Lsub = [ 2 , 1 ] +skew = 1 + +start_datetime = 2023-07-22T11:07:47+09:00 From 7768421bc6f060fb29f778163aa8e3ede4f4b1db Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Sat, 22 Jul 2023 11:17:59 +0900 Subject: [PATCH 23/25] set OMP_NUM_THREADS=1 for ctest in auto test --- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 367c9d3d..e594754c 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -52,4 +52,4 @@ jobs: - name: ctest working-directory: ${{runner.workspace}}/build shell: bash - run: ctest -V + run: OMP_NUM_THREADS=1 ctest -V diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index f4c57a0f..ac01749a 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -44,4 +44,4 @@ jobs: - name: ctest working-directory: ${{runner.workspace}}/build shell: bash - run: ctest -V + run: OMP_NUM_THREADS=1 ctest -V From 10fc848c70dacc124ae191909d8c8eb0f492a3ac Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Mon, 31 Jul 2023 00:20:31 +0900 Subject: [PATCH 24/25] update --- src/iTPS/finite_temperature.cpp | 9 ++++++++- src/iTPS/main.cpp | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/iTPS/finite_temperature.cpp b/src/iTPS/finite_temperature.cpp index c40e9a6d..a4ce2825 100644 --- a/src/iTPS/finite_temperature.cpp +++ b/src/iTPS/finite_temperature.cpp @@ -21,7 +21,6 @@ namespace itps { template void iTPS::finite_temperature() { - Timer<> timer; double beta = 0.0; measure_density(beta, "FT_"); @@ -33,12 +32,20 @@ void iTPS::finite_temperature() { } for (int group = 0; group < num_groups; ++group) { + if (peps_parameters.print_level >= PrintLevel::info) { + if(num_groups == 1){ + std::cout << " Start Simple update" << std::endl; + }else{ + std::cout << " Start Simple update " << group << std::endl; + } + } const int nsteps = peps_parameters.num_simple_step[group]; const double dt = peps_parameters.tau_simple_step[group]; int measure_interval = peps_parameters.measure_interval[group]; double time_measure = 0.0; double next_report = 10.0; + Timer<> timer; for (int int_tau = 0; int_tau < nsteps; ++int_tau) { auto const& evols = simple_updates; diff --git a/src/iTPS/main.cpp b/src/iTPS/main.cpp index f994f992..7bba3d75 100644 --- a/src/iTPS/main.cpp +++ b/src/iTPS/main.cpp @@ -190,7 +190,6 @@ int run_finitetemperature(MPI_Comm comm, PEPS_Parameters peps_parameters, iTPS tns(comm, peps_parameters, lattice, simple_updates, full_updates, onesite_operators, twosite_operators, multisite_operators, corparam, clength_param); - std::cout << " " << "done tns" << std::endl; tns.finite_temperature(); tns.summary(); return 0; From 1feeca800d4fc123ebb4bbfad73a78005c322b87 Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Tue, 1 Aug 2023 15:55:58 +0900 Subject: [PATCH 25/25] update NEWS --- NEWS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 952f376b..1816226b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,8 +1,9 @@ # TeNeS v2.0.x Release Notes -## Changes between v2.0.0 and v1.3.2 +## Changes between v2.0.0 and v1.3.3 ### New Features - Real-time evolution (https://github.com/issp-center-dev/TeNeS/pull/68) - Multisite observables (https://github.com/issp-center-dev/TeNeS/pull/69) +- Finite temperature calculation (https://github.com/issp-center-dev/TeNeS/pull/75)