From ac9b10ea2a0146025e9d4c36d44441cd824a052a Mon Sep 17 00:00:00 2001 From: Peter Doak Date: Fri, 18 Oct 2024 14:18:52 -0400 Subject: [PATCH 01/10] initial compiling StructureFactorEstimator --- src/Estimators/CMakeLists.txt | 3 +- src/Estimators/StructureFactorEstimator.cpp | 113 ++++++++++++++++++++ src/Estimators/StructureFactorEstimator.h | 85 +++++++++++++++ 3 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 src/Estimators/StructureFactorEstimator.cpp create mode 100644 src/Estimators/StructureFactorEstimator.h diff --git a/src/Estimators/CMakeLists.txt b/src/Estimators/CMakeLists.txt index b5cd3614dd..8ee22d34af 100644 --- a/src/Estimators/CMakeLists.txt +++ b/src/Estimators/CMakeLists.txt @@ -42,7 +42,8 @@ set(QMCEST_SRC NEReferencePoints.cpp NESpaceGrid.cpp EnergyDensityEstimator.cpp - StructureFactorInput.cpp) + StructureFactorInput.cpp + StructureFactorEstimator.cpp) #################################### # create libqmcestimators diff --git a/src/Estimators/StructureFactorEstimator.cpp b/src/Estimators/StructureFactorEstimator.cpp new file mode 100644 index 0000000000..41cbe46e98 --- /dev/null +++ b/src/Estimators/StructureFactorEstimator.cpp @@ -0,0 +1,113 @@ +////////////////////////////////////////////////////////////////////////////////////// +// This file is distributed under the University of Illinois/NCSA Open Source License. +// See LICENSE file in top directory for details. +// +// Copyright (c) 2024 QMCPACK developers. +// +// File developed by: Peter W. Doak, doakpw@ornl.gov, Oak Ridge National Laboratory +// +// Some code refactored from: QMCHamiltonian/{SkEstimator.cpp, SkAllEstimator.cpp} +////////////////////////////////////////////////////////////////////////////////////// + +#include "StructureFactorEstimator.h" +#include "ParticleSet.h" +#include + +namespace qmcplusplus +{ + +StructureFactorEstimator::StructureFactorEstimator(StructureFactorInput& sfi, + ParticleSet& pset_ions, + ParticleSet& pset_elec, + DataLocality data_locality) + : OperatorEstBase(data_locality), elns_(pset_elec), ions_(pset_ions) +{ + my_name_ = "StructureFactorEstimator"; + elec_species_ = elns_.getSpeciesSet().getTotalNum(); + ion_species_ = ions_.getSpeciesSet().getTotalNum(); + + auto num_kpoints_ = pset_ions.getSimulationCell().getKLists().numk; + kshell_offsets_ = pset_ions.getSimulationCell().getKLists().kshell; + int max_kshell = kshell_offsets_.size() - 1; + + rhok_tot_r_.resize(num_kpoints_); + rhok_tot_i_.resize(num_kpoints_); + + // Legacy comment, but I don't trust it. + //for values, we are including e-e structure factor, and e-Ion. So a total of NumIonSpecies+1 structure factors. + //+2 for the real and imaginary parts of rho_k^e + // + // skAll seems to be written for e-e sf + complex rho_k^e + data_.resize(3 * num_kpoints_); + kmags_.resize(max_kshell); + one_over_degeneracy_kshell_.resize(max_kshell); + for (int ks = 0; ks < max_kshell; ks++) + { + kmags_[ks] = std::sqrt(pset_elec.getSimulationCell().getKLists().ksq[kshell_offsets_[ks]]); + one_over_degeneracy_kshell_[ks] = 1.0 / static_cast(kshell_offsets_[ks + 1] - kshell_offsets_[ks]); + }; +} + +void StructureFactorEstimator::accumulate(const RefVector& walkers, + const RefVector& psets, + const RefVector& wfns, + const RefVector& hams, + RandomBase& rng) +{ + for (int iw = 0; iw < walkers.size(); ++iw) + { + Real weight = walkers[iw].get().Weight; + + //sum over species + std::copy(psets[iw].get().getSK().rhok_r[0], psets[iw].get().getSK().rhok_r[0] + num_kpoints_, rhok_tot_r_.begin()); + std::copy(psets[iw].get().getSK().rhok_i[0], psets[iw].get().getSK().rhok_i[0] + num_kpoints_, rhok_tot_i_.begin()); + for (int i = 1; i < elec_species_; ++i) + accumulate_elements(psets[iw].get().getSK().rhok_r[i], psets[iw].get().getSK().rhok_r[i] + num_kpoints_, + rhok_tot_r_.begin()); + for (int i = 1; i < elec_species_; ++i) + accumulate_elements(psets[iw].get().getSK().rhok_i[i], psets[iw].get().getSK().rhok_i[i] + num_kpoints_, + rhok_tot_i_.begin()); + + for (int k = 0; k < num_kpoints_; k++) + { + sfk_e_e_[k] += weight * (rhok_tot_r_[k] * rhok_tot_r_[k] + rhok_tot_i_[k] * rhok_tot_i_[k]); + rhok_e_[k] += weight * std::complex{rhok_tot_r_[k], rhok_tot_i_[k]}; + } + } +} + +void StructureFactorEstimator::registerOperatorEstimator(hdf_archive& file) +{ + hdf_path hdf_name{my_name_}; + hdf_path path_variables = hdf_name / std::string_view("kpoints"); + file.push(path_variables, true); + file.write(const_cast&>(ions_.getSimulationCell().getKLists().kpts_cart), "value"); + file.pop(); +} + +void StructureFactorEstimator::write(hdf_archive& file) +{ + hdf_path hdf_name{my_name_}; + file.push(hdf_name); + // this is call rhok_e_e in the output of the legacy, but that is just wrong it is |rhok_e_e_|^2 + file.write(sfk_e_e_, "sfk_e_e"); + file.write(rhok_e_, "rhok_e_"); +} + +void StructureFactorEstimator::collect(const RefVector& type_erased_operator_estimators) +{ + int num_crowds = type_erased_operator_estimators.size(); + for (OperatorEstBase& crowd_oeb : type_erased_operator_estimators) + { + StructureFactorEstimator& crowd_sfe = dynamic_cast(crowd_oeb); + this->sfk_e_e_ += crowd_sfe.sfk_e_e_; + this->rhok_e_ += crowd_sfe.rhok_e_; + } + OperatorEstBase::collect(type_erased_operator_estimators); +} + +void StructureFactorEstimator::startBlock(int steps) {} + +UPtr StructureFactorEstimator::spawnCrowdClone() const {} + +} // namespace qmcplusplus diff --git a/src/Estimators/StructureFactorEstimator.h b/src/Estimators/StructureFactorEstimator.h new file mode 100644 index 0000000000..2510410f28 --- /dev/null +++ b/src/Estimators/StructureFactorEstimator.h @@ -0,0 +1,85 @@ +////////////////////////////////////////////////////////////////////////////////////// +// This file is distributed under the University of Illinois/NCSA Open Source License. +// See LICENSE file in top directory for details. +// +// Copyright (c) 2024 QMCPACK developers. +// +// File developed by: Peter W. Doak, doakpw@ornl.gov, Oak Ridge National Laboratory +// +// Some code refactored from: QMCHamiltonian/{SkEstimator.h, SkAllEstimator.h} +////////////////////////////////////////////////////////////////////////////////////// + +#ifndef QMCPLUSPLUS_STRUCTUREFACTORESTIMATOR_H +#define QMCPLUSPLUS_STRUCTUREFACTORESTIMATOR_H + +#include "OperatorEstBase.h" +#include "StructureFactorInput.h" + +namespace qmcplusplus +{ + +class StructureFactorEstimator : public OperatorEstBase +{ +public: + using QMCT = QMCTraits; + using Real = QMCT::RealType; + using FullPrecReal = QMCT::FullPrecRealType; + using KPt = TinyVector; + + StructureFactorEstimator(StructureFactorInput& sfi, + ParticleSet& pset_ions, + ParticleSet& pset_elec, + DataLocality data_locality = DataLocality::crowd); + + /** accumulate 1 or more walkers of EnergyDensity samples + */ + void accumulate(const RefVector& walkers, + const RefVector& psets, + const RefVector& wfns, + const RefVector& hams, + RandomBase& rng) override; + + /** start block entry point + */ + void startBlock(int steps) override; + + UPtr spawnCrowdClone() const override; + + void registerOperatorEstimator(hdf_archive& file) override; + void write(hdf_archive& file); + void collect(const RefVector& type_erased_operator_estimators) override; +private: + int elec_species_; + ParticleSet& elns_; + int ion_species_; + ParticleSet& ions_; + + /// number of k points + long long num_kpoints_; + + // std::vector kshell_degeneracy_; + /// kpts which belong to the ith-shell [kshell[i], kshell[i+1]) + std::vector kshell_offsets_; + + /// All the following are indexed by kshell + /// instantaneous structure factor for a k shell + std::vector kmags_; + + std::vector one_over_degeneracy_kshell_; + + /// Accumulated, its clearer to do it this way that use the base class data_ but means we don't use that base class infrastructure + Vector sfk_e_e_; + Vector> rhok_e_; + + /*@{ + * work area to reduce over electron species, they should probably just be complex as well. + * but particle set stores the real and imaginary parts as two real vectors. + */ + Vector rhok_tot_r_; + Vector rhok_tot_i_; + /*@}*/ +}; + +} // namespace qmcplusplus + +#endif From 97c5ff29524e44f3aec618c2bc2ac48caa13109f Mon Sep 17 00:00:00 2001 From: Peter Doak Date: Wed, 23 Oct 2024 09:30:56 -0400 Subject: [PATCH 02/10] beginning testing of sk estimator proper --- src/Estimators/StructureFactorEstimator.h | 18 ++- src/Estimators/tests/CMakeLists.txt | 1 + .../tests/test_StructureFactorEstimator.cpp | 153 ++++++++++++++++++ .../tests/test_StructureFactorInput.cpp | 10 +- 4 files changed, 175 insertions(+), 7 deletions(-) create mode 100644 src/Estimators/tests/test_StructureFactorEstimator.cpp diff --git a/src/Estimators/StructureFactorEstimator.h b/src/Estimators/StructureFactorEstimator.h index 2510410f28..9073fcb4ad 100644 --- a/src/Estimators/StructureFactorEstimator.h +++ b/src/Estimators/StructureFactorEstimator.h @@ -18,6 +18,11 @@ namespace qmcplusplus { +namespace testing +{ +class StructureFactorAccess; +} + class StructureFactorEstimator : public OperatorEstBase { public: @@ -25,7 +30,7 @@ class StructureFactorEstimator : public OperatorEstBase using Real = QMCT::RealType; using FullPrecReal = QMCT::FullPrecRealType; using KPt = TinyVector; - + StructureFactorEstimator(StructureFactorInput& sfi, ParticleSet& pset_ions, ParticleSet& pset_elec, @@ -48,6 +53,12 @@ class StructureFactorEstimator : public OperatorEstBase void registerOperatorEstimator(hdf_archive& file) override; void write(hdf_archive& file); void collect(const RefVector& type_erased_operator_estimators) override; + +protected: + // Testing functions + const Vector& getSKElecElec() const { return sfk_e_e_; } + const Vector>& getRhoKElec() const { return rhok_e_; } + private: int elec_species_; ParticleSet& elns_; @@ -74,10 +85,13 @@ class StructureFactorEstimator : public OperatorEstBase /*@{ * work area to reduce over electron species, they should probably just be complex as well. * but particle set stores the real and imaginary parts as two real vectors. - */ + */ Vector rhok_tot_r_; Vector rhok_tot_i_; /*@}*/ + +public: + friend class testing::StructureFactorAccess; }; } // namespace qmcplusplus diff --git a/src/Estimators/tests/CMakeLists.txt b/src/Estimators/tests/CMakeLists.txt index fb41007974..ea4d3dfc44 100644 --- a/src/Estimators/tests/CMakeLists.txt +++ b/src/Estimators/tests/CMakeLists.txt @@ -70,6 +70,7 @@ set(SRCS test_EnergyDensityInput.cpp test_EnergyDensityEstimator.cpp test_StructureFactorInput.cpp + test_StructureFactorEstimator.cpp ) add_executable(${UTEST_EXE} ${SRCS}) diff --git a/src/Estimators/tests/test_StructureFactorEstimator.cpp b/src/Estimators/tests/test_StructureFactorEstimator.cpp new file mode 100644 index 0000000000..6d244ac9db --- /dev/null +++ b/src/Estimators/tests/test_StructureFactorEstimator.cpp @@ -0,0 +1,153 @@ +////////////////////////////////////////////////////////////////////////////////////// +// This file is distributed under the University of Illinois/NCSA Open Source License. +// See LICENSE file in top directory for details. +// +// Copyright (c) 2024 QMCPACK developers. +// +// File developed by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Lab +// +// File created by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Lab +////////////////////////////////////////////////////////////////////////////////////// + +#include "catch.hpp" + +#include "StructureFactorEstimator.h" +#include "ValidStructureFactorInput.h" +#include "Particle/tests/MinimalParticlePool.h" +#include "GenerateRandomParticleSets.h" +#include "Utilities/for_testing/NativeInitializerPrint.hpp" +#include + +namespace qmcplusplus +{ + +constexpr bool generate_test_data = true; + +namespace testing +{ +class StructureFactorAccess +{ + using Real = StructureFactorEstimator::Real; +public: + const Vector& getSKElecElec(const StructureFactorEstimator& sfe) const { return sfe.getSKElecElec(); } + const Vector>& getRhoKElec(const StructureFactorEstimator& sfe) const { return sfe.getRhoKElec(); } +}; +} // namespace testing + +TEST_CASE("StructureFactorEstimator::StructureFactorEstimator", "[estimators]") +{ + using Input = qmcplusplus::testing::ValidStructureFactorInput; + Communicate* comm; + comm = OHMMS::Controller; + + ParticleSetPool particle_pool{MinimalParticlePool::make_diamondC_1x1x1(comm)}; + + ParticleSet pset_elec{*(particle_pool.getParticleSet("e"))}; + ParticleSet pset_ions{*(particle_pool.getParticleSet("ion"))}; + + pset_elec.R = + ParticleSet::ParticlePos{{1.451870349, 1.381521229, 1.165202269}, {1.244515371, 1.382273176, 1.21105285}, + {0.000459944, 1.329603408, 1.265030556}, {0.748660329, 1.63420622, 1.393637791}, + {0.033228526, 1.391869137, 0.654413566}, {1.114198787, 1.654334594, 0.231075822}, + {1.657151589, 0.883870516, 1.201243939}, {0.97317591, 1.245644974, 0.284564732}}; + + Libxml2Document doc; + bool okay = doc.parseFromString(Input::xml[Input::valid::SKALL]); + xmlNodePtr node = doc.getRoot(); + UPtr sf_in; + sf_in = std::make_unique(node); + StructureFactorEstimator sfe(*sf_in, pset_ions, pset_elec); +} + +TEST_CASE("StructureFactorEstimator::Accumulate", "[estimators]") +{ + using Input = qmcplusplus::testing::ValidStructureFactorInput; + Communicate* comm; + comm = OHMMS::Controller; + + Libxml2Document doc; + bool okay = doc.parseFromString(Input::xml[Input::valid::SKALL]); + xmlNodePtr node = doc.getRoot(); + UPtr sf_in; + sf_in = std::make_unique(node); + + ParticleSetPool particle_pool{MinimalParticlePool::make_diamondC_1x1x1(comm)}; + + ParticleSet pset_elec{*(particle_pool.getParticleSet("e"))}; + ParticleSet pset_ions{*(particle_pool.getParticleSet("ion"))}; + + pset_elec.R = + ParticleSet::ParticlePos{{1.451870349, 1.381521229, 1.165202269}, {1.244515371, 1.382273176, 1.21105285}, + {0.000459944, 1.329603408, 1.265030556}, {0.748660329, 1.63420622, 1.393637791}, + {0.033228526, 1.391869137, 0.654413566}, {1.114198787, 1.654334594, 0.231075822}, + {1.657151589, 0.883870516, 1.201243939}, {0.97317591, 1.245644974, 0.284564732}}; + + StructureFactorEstimator sfe(*sf_in, pset_ions, pset_elec); + + std::vector walkers; + int nwalkers = 3; + for (int iw = 0; iw < nwalkers; ++iw) + walkers.emplace_back(8); + + std::vector deterministic_rs = {{ + {-0.6759092808, 0.835668385, 1.985307097}, + {0.09710352868, -0.76751858, -1.89306891}, + {-0.5605484247, -0.9578875303, 1.476860642}, + {2.585144997, 1.862680197, 3.282609463}, + {-0.1961335093, 1.111888766, -0.578481257}, + {1.794641614, 1.6000278, -0.9474347234}, + {2.157717228, 0.9254754186, 2.263158321}, + {1.883366346, 2.136350632, 3.188981533}, + }, + { + {-0.2079261839, -0.2796236873, 0.5512072444}, + {-0.2823159397, 0.7537326217, 0.01526880637}, + {3.533515453, 2.433290243, 0.9281452894}, + {2.051767349, 2.312927485, 0.7089259624}, + {-1.043096781, 0.8190526962, -0.1958218962}, + {0.9210210443, 0.7726522088, 0.3962054551}, + {2.043324947, 0.3482068777, 3.39059639}, + {0.9103830457, 2.167978764, 2.341906071}, + }, + { + {-0.466550231, 0.09173964709, -0.3779250085}, + {-0.4211375415, -2.017466068, -1.691870451}, + {2.090800285, 1.88529861, 2.152359247}, + {2.973145723, 1.718174577, 3.822324753}, + {-0.8552014828, -0.3484517336, -0.2870049179}, + {0.2349359095, -0.5025780797, 0.2305756211}, + {-0.03547382355, 2.279159069, 3.057915211}, + {2.535993099, 1.637133598, 3.689830303}, + }}; + + std::vector psets = + testing::generateRandomParticleSets(pset_ions, pset_elec, deterministic_rs, nwalkers, generate_test_data); + + auto ref_walkers = makeRefVector(walkers); + auto ref_psets = makeRefVector(psets); + + // These are just empty arguments to hang the accumulation test, StructureFactorEstimator never accesses into them. + // In the application the estimator manager calls accumulate and all these vectors are really populated. + std::vector wfns; + std::vector hams; + auto ref_wfns = makeRefVector(wfns); + auto ref_hams = makeRefVector(hams); + + FakeRandom rng; + + sfe.accumulate(ref_walkers, ref_psets, ref_wfns, ref_hams, rng); + + testing::StructureFactorAccess sfa; + auto& sfk_e_e = sfa.getSKElecElec(sfe); + auto& rhok_e = sfa.getRhoKElec(sfe); + + if constexpr (generate_test_data) { + std::cout << "sfk_e_e_exected = "; + std::cout << NativePrint(sfk_e_e) << '\n'; + std::cout << "rhok_e_expected = "; + std::cout << NativePrint(rhok_e) << '\n'; + FAIL_CHECK("Test always fails when generating new test reference data."); + } +} + +} // namespace qmcplusplus diff --git a/src/Estimators/tests/test_StructureFactorInput.cpp b/src/Estimators/tests/test_StructureFactorInput.cpp index cfd97d6d05..db7460fe4d 100644 --- a/src/Estimators/tests/test_StructureFactorInput.cpp +++ b/src/Estimators/tests/test_StructureFactorInput.cpp @@ -21,11 +21,11 @@ namespace qmcplusplus TEST_CASE("StructureFactorInput::parseXML::valid", "[estimators]") { - using input = qmcplusplus::testing::ValidStructureFactorInput; + using input = qmcplusplus::testing::ValidStructureFactorInput; int test_num = 0; for (auto input_xml : input::xml) { - std::cout << "input number: " << test_num++ << '\n'; + std::cout << "input number: " << test_num++ << '\n'; Libxml2Document doc; bool okay = doc.parseFromString(input_xml); xmlNodePtr node = doc.getRoot(); @@ -39,11 +39,11 @@ TEST_CASE("StructureFactorInput::parseXML::invalid", "[estimators]") for (auto input_xml : input::xml) { Libxml2Document doc; - bool okay = doc.parseFromString(input_xml); - xmlNodePtr node = doc.getRoot(); + bool okay = doc.parseFromString(input_xml); + xmlNodePtr node = doc.getRoot(); auto constructBadStructureFactorInput = [](xmlNodePtr cur) { StructureFactorInput sfi(cur); }; CHECK_THROWS_AS(constructBadStructureFactorInput(node), UniformCommunicateError); } } -} +} // namespace qmcplusplus From 5ab40729b5cf136722060a4caa811d11f7f99ecb Mon Sep 17 00:00:00 2001 From: "Peter Doak (epd)" Date: Wed, 23 Oct 2024 17:55:57 -0400 Subject: [PATCH 03/10] continuing with test implementation and debug --- src/Estimators/StructureFactorEstimator.cpp | 5 +- .../tests/GenerateRandomParticleSets.cpp | 2 +- .../tests/test_StructureFactorEstimator.cpp | 146 ++++++++++++------ src/type_traits/template_types.hpp | 2 +- src/type_traits/tests/test_template_types.cpp | 2 + 5 files changed, 107 insertions(+), 50 deletions(-) diff --git a/src/Estimators/StructureFactorEstimator.cpp b/src/Estimators/StructureFactorEstimator.cpp index 41cbe46e98..b16ec53ce1 100644 --- a/src/Estimators/StructureFactorEstimator.cpp +++ b/src/Estimators/StructureFactorEstimator.cpp @@ -26,13 +26,14 @@ StructureFactorEstimator::StructureFactorEstimator(StructureFactorInput& sfi, elec_species_ = elns_.getSpeciesSet().getTotalNum(); ion_species_ = ions_.getSpeciesSet().getTotalNum(); - auto num_kpoints_ = pset_ions.getSimulationCell().getKLists().numk; + num_kpoints_ = pset_ions.getSimulationCell().getKLists().numk; kshell_offsets_ = pset_ions.getSimulationCell().getKLists().kshell; int max_kshell = kshell_offsets_.size() - 1; rhok_tot_r_.resize(num_kpoints_); rhok_tot_i_.resize(num_kpoints_); - + sfk_e_e_.resize(num_kpoints_); + rhok_e_.resize(num_kpoints_); // Legacy comment, but I don't trust it. //for values, we are including e-e structure factor, and e-Ion. So a total of NumIonSpecies+1 structure factors. //+2 for the real and imaginary parts of rho_k^e diff --git a/src/Estimators/tests/GenerateRandomParticleSets.cpp b/src/Estimators/tests/GenerateRandomParticleSets.cpp index bb5f85b497..0c3051e7dd 100644 --- a/src/Estimators/tests/GenerateRandomParticleSets.cpp +++ b/src/Estimators/tests/GenerateRandomParticleSets.cpp @@ -32,7 +32,7 @@ std::vector generateRandomParticleSets(ParticleSet& pset_target, std::vector psets(num_psets, pset_target); if (generate_test_data) { - std::cout << "Initialize OneBodyDensityMatrices::accumulate psets with:\n{"; + std::cout << "Initialize psets with:\n{"; std::vector psets; for (int iw = 0; iw < nwalkers; ++iw) { diff --git a/src/Estimators/tests/test_StructureFactorEstimator.cpp b/src/Estimators/tests/test_StructureFactorEstimator.cpp index 6d244ac9db..467d78b056 100644 --- a/src/Estimators/tests/test_StructureFactorEstimator.cpp +++ b/src/Estimators/tests/test_StructureFactorEstimator.cpp @@ -14,26 +14,38 @@ #include "StructureFactorEstimator.h" #include "ValidStructureFactorInput.h" #include "Particle/tests/MinimalParticlePool.h" +#include "QMCWaveFunctions/tests/MinimalWaveFunctionPool.h" +#include "RandomForTest.h" #include "GenerateRandomParticleSets.h" +#include "Utilities/ProjectData.h" #include "Utilities/for_testing/NativeInitializerPrint.hpp" #include namespace qmcplusplus { -constexpr bool generate_test_data = true; - +constexpr bool generate_test_data = false; + namespace testing { class StructureFactorAccess { using Real = StructureFactorEstimator::Real; + public: const Vector& getSKElecElec(const StructureFactorEstimator& sfe) const { return sfe.getSKElecElec(); } const Vector>& getRhoKElec(const StructureFactorEstimator& sfe) const { return sfe.getRhoKElec(); } }; } // namespace testing +class StructureFactorTests +{ + using Data = Vector; + using DataC = Vector>; + Data getSKElecElec(); + DataC getRhoKElec(); +}; + TEST_CASE("StructureFactorEstimator::StructureFactorEstimator", "[estimators]") { using Input = qmcplusplus::testing::ValidStructureFactorInput; @@ -76,72 +88,101 @@ TEST_CASE("StructureFactorEstimator::Accumulate", "[estimators]") ParticleSet pset_elec{*(particle_pool.getParticleSet("e"))}; ParticleSet pset_ions{*(particle_pool.getParticleSet("ion"))}; - pset_elec.R = - ParticleSet::ParticlePos{{1.451870349, 1.381521229, 1.165202269}, {1.244515371, 1.382273176, 1.21105285}, - {0.000459944, 1.329603408, 1.265030556}, {0.748660329, 1.63420622, 1.393637791}, - {0.033228526, 1.391869137, 0.654413566}, {1.114198787, 1.654334594, 0.231075822}, - {1.657151589, 0.883870516, 1.201243939}, {0.97317591, 1.245644974, 0.284564732}}; - StructureFactorEstimator sfe(*sf_in, pset_ions, pset_elec); std::vector walkers; int nwalkers = 3; for (int iw = 0; iw < nwalkers; ++iw) walkers.emplace_back(8); - - std::vector deterministic_rs = {{ - {-0.6759092808, 0.835668385, 1.985307097}, - {0.09710352868, -0.76751858, -1.89306891}, - {-0.5605484247, -0.9578875303, 1.476860642}, - {2.585144997, 1.862680197, 3.282609463}, - {-0.1961335093, 1.111888766, -0.578481257}, - {1.794641614, 1.6000278, -0.9474347234}, - {2.157717228, 0.9254754186, 2.263158321}, - {1.883366346, 2.136350632, 3.188981533}, - }, - { - {-0.2079261839, -0.2796236873, 0.5512072444}, - {-0.2823159397, 0.7537326217, 0.01526880637}, - {3.533515453, 2.433290243, 0.9281452894}, - {2.051767349, 2.312927485, 0.7089259624}, - {-1.043096781, 0.8190526962, -0.1958218962}, - {0.9210210443, 0.7726522088, 0.3962054551}, - {2.043324947, 0.3482068777, 3.39059639}, - {0.9103830457, 2.167978764, 2.341906071}, - }, - { - {-0.466550231, 0.09173964709, -0.3779250085}, - {-0.4211375415, -2.017466068, -1.691870451}, - {2.090800285, 1.88529861, 2.152359247}, - {2.973145723, 1.718174577, 3.822324753}, - {-0.8552014828, -0.3484517336, -0.2870049179}, - {0.2349359095, -0.5025780797, 0.2305756211}, - {-0.03547382355, 2.279159069, 3.057915211}, - {2.535993099, 1.637133598, 3.689830303}, - }}; + std::vector deterministic_rs = { + { + {0.5156778693, 0.9486072659, -1.174232483}, + {-0.3166678548, 1.376550555, 1.445290089}, + {1.960713625, 2.472656727, 1.051449418}, + {0.7458532453, 0.5551358461, 4.080774784}, + {-0.3515016139, -0.5192222595, 0.9941511154}, + {-0.8354426622, 0.7071638107, -0.3409843445}, + {0.4386044741, 1.237378716, 2.331874132}, + {2.125850677, 0.322106719, 0.5825730562}, + }, + { + {-0.4633736908, 0.06318772584, -0.8580153584}, + {-1.1749264, -0.6276503801, 0.07458759099}, + {1.327618122, 2.085829258, 1.415749788}, + {0.9114726782, 0.1789183617, -0.08135545254}, + {-2.267908812, 0.8029287457, 0.9522812963}, + {1.50271523, -1.844935298, 0.2805620432}, + {3.168934584, 0.1348338127, 1.371092796}, + {0.8310229182, 1.070827127, 1.180167317}, + }, + { + {-0.04847732186, -1.201739907, -1.700527787}, + {0.1589259505, -0.3096047044, -2.06662631}, + {2.2559762, 1.62913239, -0.8024448156}, + {2.5347929, 3.121092796, 1.609780669}, + {-0.2892376184, -0.1520225108, -2.727613688}, + {0.2477154732, 0.5039232969, 2.995702744}, + {3.679345131, 3.037770271, 2.808899403}, + {0.6418578625, 1.935944557, 1.515637875}, + }, + }; std::vector psets = - testing::generateRandomParticleSets(pset_ions, pset_elec, deterministic_rs, nwalkers, generate_test_data); + testing::generateRandomParticleSets(pset_elec, pset_ions, deterministic_rs, nwalkers, generate_test_data); auto ref_walkers = makeRefVector(walkers); auto ref_psets = makeRefVector(psets); + ProjectData test_project("test", ProjectData::DriverVersion::BATCH); + + auto wavefunction_pool = + MinimalWaveFunctionPool::make_diamondC_1x1x1(test_project.getRuntimeOptions(), comm, particle_pool); + auto& spomap = wavefunction_pool.getWaveFunction("wavefunction")->getSPOMap(); + + auto& trial_wavefunction = *(wavefunction_pool.getPrimary()); + std::vector> twfcs(nwalkers); + for (int iw = 0; iw < nwalkers; ++iw) + twfcs[iw] = trial_wavefunction.makeClone(psets[iw]); + // These are just empty arguments to hang the accumulation test, StructureFactorEstimator never accesses into them. // In the application the estimator manager calls accumulate and all these vectors are really populated. - std::vector wfns; std::vector hams; - auto ref_wfns = makeRefVector(wfns); - auto ref_hams = makeRefVector(hams); + auto ref_wfns = convertUPtrToRefVector(twfcs); + auto ref_hams = makeRefVector(hams); FakeRandom rng; + auto updateWalker = [](auto& walker, auto& pset_target, auto& trial_wavefunction) { + pset_target.update(true); + pset_target.donePbyP(); + trial_wavefunction.evaluateLog(pset_target); + //pset_target.saveWalker(walker); + }; + + for (int iw = 0; iw < nwalkers; ++iw) + updateWalker(walkers[iw], psets[iw], *(twfcs[iw])); + + using QMCT = OperatorEstBase::QMCT; + std::vector rng_reals(nwalkers * QMCT::DIM * 2); + testing::RandomForTest rft; + rft.fillVecRng(rng_reals); + auto it_rng_reals = rng_reals.begin(); + for (ParticleSet& pset : psets) + { + pset.R[0] = ParticleSet::PosType(*it_rng_reals++, *it_rng_reals++, *it_rng_reals++); + pset.R[1] = ParticleSet::PosType(*it_rng_reals++, *it_rng_reals++, *it_rng_reals++); + } + for (int iw = 0; iw < nwalkers; ++iw) + updateWalker(walkers[iw], psets[iw], *(twfcs[iw])); + sfe.accumulate(ref_walkers, ref_psets, ref_wfns, ref_hams, rng); - testing::StructureFactorAccess sfa; + testing::StructureFactorAccess sfa; auto& sfk_e_e = sfa.getSKElecElec(sfe); - auto& rhok_e = sfa.getRhoKElec(sfe); + auto& rhok_e = sfa.getRhoKElec(sfe); - if constexpr (generate_test_data) { + if constexpr (true) //generate_test_data) + { std::cout << "sfk_e_e_exected = "; std::cout << NativePrint(sfk_e_e) << '\n'; std::cout << "rhok_e_expected = "; @@ -150,4 +191,17 @@ TEST_CASE("StructureFactorEstimator::Accumulate", "[estimators]") } } +template +typename StructureFactorTests::Data StructureFactorTests::getSfkEEData() +{ + Data sfk_e_e_exected = { 19.73623085, 19.85599327, 13.72912788, 18.75673866, 18.75673866, 13.72912788, 19.85599327, 19.73623085, 32.80349731, 43.77883148, 33.19361115, 33.19361115, 43.77883148, 32.80349731, 11.48587227, 46.64709091, 13.93536186, 21.81977654, 16.97146797, 49.0378952, 49.0378952, 16.97146797, 21.81977654, 13.93536186, 46.64709091, 11.48587227, 15.27185249, 15.26608276, 27.79554367, 34.7771225, 50.21757126, 48.46035004, 13.67208576, 15.27589607, 24.97359276, 51.96620178, 10.82582951, 13.76047134, 13.76047134, 10.82582951, 51.96620178, 24.97359276, 15.27589607, 13.67208576, 48.46035004, 50.21757126, 34.7771225, 27.79554367, 15.26608276, 15.27185249, 16.81092834, 29.33479309, 5.10248518, 85.84146118, 85.84146118, 5.10248518, 29.33479309, 16.81092834, 25.95727539, 34.5015831, 21.52643585, 21.52643585, 34.5015831, 25.95727539, 35.05796432, 38.54359055, 38.54359055, 35.05796432, 19.39619255, 36.68960571, 16.29642677, 41.76596069, 39.29201508, 40.27943802, 43.67494965, 17.53614426, 17.01120758, 14.28325844, 14.28325844, 17.01120758, 17.53614426, 43.67494965, 40.27943802, 39.29201508, 41.76596069, 16.29642677, 36.68960571, 19.39619255, 8.223339081, 16.57196808, 16.75862885, 39.18902969, 28.35930443, 14.97254658, 11.20259285, 12.45506668, 23.81349754, 35.41851044, 6.74987793, 6.768158913, 6.768158913, 6.74987793, 35.41851044, 23.81349754, 12.45506668, 11.20259285, 14.97254658, 28.35930443, 39.18902969, 16.75862885, 16.57196808, 8.223339081, 28.73698616, 28.73698616, 23.82761765, 13.70425797, 37.05511093, 20.61174965, 29.07460403, 13.55575943, 28.73127365, 50.90294647, 12.75067329, 37.09168243, 21.69445038, 21.69445038, 37.09168243, 12.75067329, 50.90294647, 28.73127365, 13.55575943, 29.07460403, 20.61174965, 37.05511093, 13.70425797, 23.82761765, 20.25505257, 20.82879829, 22.74308205, 11.197855, 11.80153656, 12.47373486, 41.87596893, 15.71939564, 18.91372871, 12.80999374, 47.60126877, 23.973526, 23.973526, 47.60126877, 12.80999374, 18.91372871, 15.71939564, 41.87596893, 12.47373486, 11.80153656, 11.197855, 22.74308205, 20.82879829, 20.25505257, 13.79166222, 18.27315712, 32.10044861, 19.95432281, 19.95432281, 32.10044861, 18.27315712, 13.79166222, 26.96515274, 32.77268982, 19.30791855, 26.16771889, 21.8395195, 12.22079182, 12.22079182, 21.8395195, 26.16771889, 19.30791855, 32.77268982, 26.96515274, 38.00551605, 44.8817749, 23.56672287, 27.14280701, 24.7010994, 26.94974136, 18.18262482, 41.78518295, 25.52963829, 12.35084438, 23.92583275, 29.39851189, 22.78663635, 17.16172409, 14.08822727, 23.29167747, 43.20004654, 7.741707802, 30.1517334, 34.65544128, 16.87238312, 20.67638779, 20.67638779, 16.87238312, 34.65544128, 30.1517334, 7.741707802, 43.20004654, 23.29167747, 14.08822727, 17.16172409, 22.78663635, 29.39851189, 23.92583275, 12.35084438, 25.52963829, 41.78518295, 18.18262482, 26.94974136, 24.7010994, 27.14280701, 23.56672287, 44.8817749, 38.00551605, 27.08095169, 15.25416183, 15.25416183, 27.08095169, 34.61734009, 26.6135807, 32.98656464, 9.606899261, 32.20135117, 34.74562454, 11.81522465, 10.8381052, 5.674238205, 17.69964981, 62.81964111, 62.81964111, 17.69964981, 5.674238205, 10.8381052, 11.81522465, 34.74562454, 32.20135117, 9.606899261, 32.98656464, 26.6135807, 34.61734009, 50.65113831, 52.74192429, 13.2403717, 50.32455826, 50.32455826, 13.2403717, 52.74192429, 50.65113831, 21.19114685, 9.176017761, 9.176017761, 21.19114685, 32.93720245, 30.89264488, 24.89771652, 20.27216721, 29.28691483, 15.03165436, 27.84318542, 34.68436432, 34.68436432, 27.84318542, 15.03165436, 29.28691483, 20.27216721, 24.89771652, 30.89264488, 32.93720245, 20.73518944, 48.29927826, 48.29927826, 20.73518944, 6.719681263, 17.64640999, 30.68091011, 15.46363926, 23.58017731, 20.0689621, 39.86466217, 27.83972359, 12.83865738, 16.58363533, 13.44682693, 16.30245018, 16.30245018, 13.44682693, 16.58363533, 12.83865738, 27.83972359, 39.86466217, 20.0689621, 23.58017731, 15.46363926, 30.68091011, 17.64640999, 6.719681263, 27.12191391, 2.961663246, 25.25554848, 17.62779236, 22.62646866, 36.46771622, 36.4128952, 11.50259686, 14.95877266, 21.88566017, 28.69185257, 36.83739471, 36.83739471, 28.69185257, 21.88566017, 14.95877266, 11.50259686, 36.4128952, 36.46771622, 22.62646866, 17.62779236, 25.25554848, 2.961663246, 27.12191391, 25.29393768, 17.32451248, 12.13477707, 25.57745552, 25.57745552, 12.13477707, 17.32451248, 25.29393768, 44.1743927, 45.1587944, 6.422393799, 0.8557809591, 11.29298401, 22.29253197, 10.27158737, 39.68115234, 15.76916122, 14.74081326, 14.74081326, 15.76916122, 39.68115234, 10.27158737, 22.29253197, 11.29298401, 0.8557809591, 6.422393799, 45.1587944, 44.1743927, 1.574051857, 30.36156845, 30.36156845, 1.574051857, 24.44804192, 52.11685562, 11.25370502, 53.2010498, 36.38677979, 28.00775719, 9.189598083, 13.18849754, 9.053028107, 23.64361572, 15.13273144, 18.57131004, 18.57131004, 15.13273144, 23.64361572, 9.053028107, 13.18849754, 9.189598083, 28.00775719, 36.38677979, 53.2010498, 11.25370502, 52.11685562, 24.44804192, 21.03116989, 18.33800316, 10.88628197, 10.88628197, 18.33800316, 21.03116989, 27.98948288, 5.415392876, 3.735046864, 20.55352974, 76.71188354, 13.2743988, 51.68177795, 25.157444, 5.967044353, 5.967044353, 25.157444, 51.68177795, 13.2743988, 76.71188354, 20.55352974, 3.735046864, 5.415392876, 27.98948288, 15.41703701, 25.33122826, 14.39577675, 21.77436638, 21.77436638, 14.39577675, 25.33122826, 15.41703701, 41.75048828, 12.49152184, 21.53453445, 23.02672005, 16.51511192, 16.62403297, 16.62403297, 16.51511192, 23.02672005, 21.53453445, 12.49152184, 41.75048828, 17.99378586, 30.66189003, 68.10175323, 16.0703907, 9.457947731, 35.68981171, 32.52541351, 26.23055077, 29.48114586, 39.52045441, 4.838356018, 15.79981232, 15.79981232, 4.838356018, 39.52045441, 29.48114586, 26.23055077, 32.52541351, 35.68981171, 9.457947731, 16.0703907, 68.10175323, 30.66189003, 17.99378586, 28.65183258, 28.65183258, 9.338945389, 9.338945389, 25.82771492, 28.39013672, 42.37106323, 9.863635063, 13.14507198, 40.67470932, 25.00154877, 10.50583935, 58.73340607, 32.45139313, 16.11537361, 14.03599453, 14.03599453, 16.11537361, 32.45139313, 58.73340607, 10.50583935, 25.00154877, 40.67470932, 13.14507198, 9.863635063, 42.37106323, 28.39013672, 25.82771492, 42.10860062, 63.0782547, 22.24442673, 20.55533981, 17.3488884, 23.1890316, 7.247262955, 32.478405, 12.28081322, 39.57626724, 33.63458633, 34.85544968, 19.60511589, 29.59932709, 29.59932709, 19.60511589, 34.85544968, 33.63458633, 39.57626724, 12.28081322, 32.478405, 7.247262955, 23.1890316, 17.3488884, 20.55533981, 22.24442673, 63.0782547, 42.10860062, 28.83471489, 22.21047592, 15.70080471, 29.11550522, 20.83918762, 2.932832956, 22.05906677, 14.52700615, 18.47239876, 21.71303177, 21.71303177, 18.47239876, 14.52700615, 22.05906677, 2.932832956, 20.83918762, 29.11550522, 15.70080471, 22.21047592, 28.83471489, 23.53705215, 11.36185551, 13.28255463, 13.28255463, 11.36185551, 23.53705215, 18.28559875, 18.28559875, 28.40058899, 7.612323761, 22.1194706, 23.1740818, 34.46437836, 29.62889481, 24.87004089, 17.90001106, 12.30208588, 12.30208588, 17.90001106, 24.87004089, 29.62889481, 34.46437836, 23.1740818, 22.1194706, 7.612323761, 28.40058899, 19.00841522, 19.00841522, 12.9498558, 12.9498558, 19.66072083, 5.124233723, 34.6622963, 32.34340286, 10.49704742, 14.63159561, 36.05694199, 17.36983871, 44.99233627, 24.41031647, 23.16533279, 19.12620926, 35.04272842, 35.04272842, 19.12620926, 23.16533279, 24.41031647, 44.99233627, 17.36983871, 36.05694199, 14.63159561, 10.49704742, 32.34340286, 34.6622963, 5.124233723, 19.66072083, 48.9961853, 10.08076382, 4.880791664, 11.80772018, 23.24902534, 14.52608204, 25.83365059, 10.32247543, 27.85143471, 22.59643936, 17.09150505, 17.09150505, 22.59643936, 27.85143471, 10.32247543, 25.83365059, 14.52608204, 23.24902534, 11.80772018, 4.880791664, 10.08076382, 48.9961853, }; + return sfk_e_e_exected; +} + +template +typename StructureFactorTests::DataC StructureFactorTests::getRhoKElec() +{ + DataC rhok_e_expected = { (0.5924067497,-1.491295099), (3.584708452,-1.712368011), (0.3997975588,-3.005949497), (4.994470596,-5.147814274), (4.994470596,5.147814274), (0.3997975588,3.005949497), (3.584708452,1.712368011), (0.5924067497,1.491295099), (7.359516144,-5.6792202), (4.826219082,-5.896167755), (3.279859066,-8.152435303), (3.279859066,8.152435303), (4.826219082,5.896167755), (7.359516144,5.6792202), (2.076227188,-3.606255054), (3.45581913,-9.614717484), (-1.546550393,-3.149424314), (6.73450613,0.4296414852), (4.920219421,-1.791886091), (11.15685272,-1.166432381), (11.15685272,1.166432381), (4.920219421,1.791886091), (6.73450613,-0.4296414852), (-1.546550393,3.149424314), (3.45581913,9.614717484), (2.076227188,3.606255054), (0.6491305232,-5.774231911), (-3.71764946,-2.71548152), (0.2622945905,-8.464838982), (0.8365126848,-5.196321487), (2.131130219,-9.120963097), (7.443614483,0.1272249222), (-1.302274108,2.783902407), (-2.805317879,-4.100622654), (2.166297436,2.167853832), (8.253002167,1.212442398), (3.100903511,0.2963767648), (-3.347835541,-2.253051996), (-3.347835541,2.253051996), (3.100903511,-0.2963767648), (8.253002167,-1.212442398), (2.166297436,-2.167853832), (-2.805317879,4.100622654), (-1.302274108,-2.783902407), (7.443614483,-0.1272249222), (2.131130219,9.120963097), (0.8365126848,5.196321487), (0.2622945905,8.464838982), (-3.71764946,2.71548152), (0.6491305232,5.774231911), (2.391165257,-4.354510784), (1.974772215,-7.41988945), (0.4369556904,-1.177869081), (3.464332104,-12.54276276), (3.464332104,12.54276276), (0.4369556904,1.177869081), (1.974772215,7.41988945), (2.391165257,4.354510784), (3.547600985,-5.061825275), (-3.484699249,-5.007374287), (-2.511082172,1.347038388), (-2.511082172,-1.347038388), (-3.484699249,5.007374287), (3.547600985,5.061825275), (-4.758557796,-1.4227314), (-3.966060162,-0.7569956779), (-3.966060162,0.7569956779), (-4.758557796,1.4227314), (1.031636953,-5.657271862), (-8.92360878,-5.387914181), (4.195902824,-4.546901703), (4.829262257,3.230755568), (3.007032871,-5.985052109), (-2.540019989,-6.998126984), (2.830960274,1.483453035), (1.639224529,3.652080774), (-4.786507607,3.884080887), (2.714856625,1.799381852), (2.714856625,-1.799381852), (-4.786507607,-3.884080887), (1.639224529,-3.652080774), (2.830960274,-1.483453035), (-2.540019989,6.998126984), (3.007032871,5.985052109), (4.829262257,-3.230755568), (4.195902824,4.546901703), (-8.92360878,5.387914181), (1.031636953,5.657271862), (-2.995438814,-1.522596359), (-3.952926636,0.7274377346), (-2.676473856,-2.648072004), (2.056577682,-2.997202396), (6.533461571,-3.822700024), (-1.989242554,-3.323826075), (-2.446074486,0.1415935755), (-2.390799522,-1.153463006), (5.994254589,0.5641999245), (1.587408066,-5.109902859), (2.81265831,3.224537611), (0.4621456861,-0.6620330215), (0.4621456861,0.6620330215), (2.81265831,-3.224537611), (1.587408066,5.109902859), (5.994254589,-0.5641999245), (-2.390799522,1.153463006), (-2.446074486,-0.1415935755), (-1.989242554,3.323826075), (6.533461571,3.822700024), (2.056577682,2.997202396), (-2.676473856,2.648072004), (-3.952926636,-0.7274377346), (-2.995438814,1.522596359), (0.2932553291,2.283790827), (0.2932553291,-2.283790827), (-2.449538469,-3.938394547), (-4.169157028,-1.420828938), (-1.119577646,-7.335044384), (-3.06660223,-5.171131134), (4.478675365,-0.9375646114), (-2.30142498,-4.092213631), (0.4033448696,7.406522274), (-5.53929615,-4.483269691), (1.817272425,-4.938120842), (-1.283513784,-1.526912689), (-5.368692398,0.6403012276), (-5.368692398,-0.6403012276), (-1.283513784,1.526912689), (1.817272425,4.938120842), (-5.53929615,4.483269691), (0.4033448696,-7.406522274), (-2.30142498,4.092213631), (4.478675365,0.9375646114), (-3.06660223,5.171131134), (-1.119577646,7.335044384), (-4.169157028,1.420828938), (-2.449538469,3.938394547), (-2.349718094,-4.534374237), (-3.258060932,-6.563598633), (-5.269825935,5.625203133), (-1.056861639,-1.715589404), (2.943459511,1.621193409), (1.507925034,-1.25841105), (-8.943761826,-2.031452417), (-0.2633992434,-2.200559139), (-1.154777408,-2.864115238), (3.757408142,-0.1391367912), (5.542544365,-2.473004341), (1.33184135,-0.4289052486), (1.33184135,0.4289052486), (5.542544365,2.473004341), (3.757408142,0.1391367912), (-1.154777408,2.864115238), (-0.2633992434,2.200559139), (-8.943761826,2.031452417), (1.507925034,1.25841105), (2.943459511,-1.621193409), (-1.056861639,1.715589404), (-5.269825935,-5.625203133), (-3.258060932,6.563598633), (-2.349718094,4.534374237), (-5.006935596,-0.8101488948), (6.134077072,1.376995802), (-2.58267808,1.947652578), (-0.5679087043,-5.896474838), (-0.5679087043,5.896474838), (-2.58267808,-1.947652578), (6.134077072,-1.376995802), (-5.006935596,0.8101488948), (-4.242553711,-0.148026824), (3.14392066,-5.239214897), (-3.501530647,1.262228012), (4.789734364,1.410614848), (0.4787006378,3.037798405), (2.685522079,2.979806185), (2.685522079,-2.979806185), (0.4787006378,-3.037798405), (4.789734364,-1.410614848), (-3.501530647,-1.262228012), (3.14392066,5.239214897), (-4.242553711,0.148026824), (-8.816467285,2.135006428), (-3.966232538,-10.40109634), (-3.992070198,-2.509442091), (-4.318099976,1.254590392), (7.517472267,-0.883942306), (1.476297617,0.3583492041), (-1.905166984,-1.170188785), (2.860048771,-1.935360193), (-6.622910976,1.248441696), (-3.721976042,-0.6532094479), (5.397536755,-0.5902895927), (3.959159136,2.64208293), (0.2132015228,2.653470993), (-0.5940680504,1.017179847), (1.364158273,-2.555692434), (4.447151661,3.147212744), (-2.467634439,-7.81071806), (1.248704433,3.042328119), (-1.876766443,-1.636115551), (4.225340843,8.04101181), (1.958802819,-2.829083681), (-0.5199436545,-3.344742537), (-0.5199436545,3.344742537), (1.958802819,2.829083681), (4.225340843,-8.04101181), (-1.876766443,1.636115551), (1.248704433,-3.042328119), (-2.467634439,7.81071806), (4.447151661,-3.147212744), (1.364158273,2.555692434), (-0.5940680504,-1.017179847), (0.2132015228,-2.653470993), (3.959159136,-2.64208293), (5.397536755,0.5902895927), (-3.721976042,0.6532094479), (-6.622910976,-1.248441696), (2.860048771,1.935360193), (-1.905166984,1.170188785), (1.476297617,-0.3583492041), (7.517472267,0.883942306), (-4.318099976,-1.254590392), (-3.992070198,2.509442091), (-3.966232538,10.40109634), (-8.816467285,-2.135006428), (-7.380677223,-2.085382462), (-1.813711286,-3.303716898), (-1.813711286,3.303716898), (-7.380677223,2.085382462), (-3.442320824,-3.390959024), (-5.427708149,0.8670220971), (-1.383381367,-2.30133605), (-1.27065289,0.806579113), (-0.1855710745,-8.051383018), (1.988223791,-8.346243858), (1.00059104,2.997005463), (-3.695013523,1.744617939), (1.796917796,1.001032114), (-3.90969038,-0.09522914886), (-1.423160553,-2.237792015), (-1.423160553,2.237792015), (-3.90969038,0.09522914886), (1.796917796,-1.001032114), (-3.695013523,-1.744617939), (1.00059104,-2.997005463), (1.988223791,8.346243858), (-0.1855710745,8.051383018), (-1.27065289,-0.806579113), (-1.383381367,2.30133605), (-5.427708149,-0.8670220971), (-3.442320824,3.390959024), (-2.299573898,6.924650192), (-4.531122208,-2.911784649), (2.221989632,-1.75119853), (2.176891804,10.40933418), (2.176891804,-10.40933418), (2.221989632,1.75119853), (-4.531122208,2.911784649), (-2.299573898,-6.924650192), (-0.7874586582,-4.425065041), (1.992164373,3.124239445), (1.992164373,-3.124239445), (-0.7874586582,4.425065041), (-1.798467398,1.35413909), (6.019507408,-0.3360600471), (-7.235887051,-1.991593838), (-0.07142817974,3.503325939), (-1.178472519,3.673949957), (-3.244167328,-1.830079556), (-4.368251801,-3.369636059), (-0.3029971123,-3.641766548), (-0.3029971123,3.641766548), (-4.368251801,3.369636059), (-3.244167328,1.830079556), (-1.178472519,-3.673949957), (-0.07142817974,-3.503325939), (-7.235887051,1.991593838), (6.019507408,0.3360600471), (-1.798467398,-1.35413909), (-2.809275627,-1.857904792), (-4.59763813,-5.219004631), (-4.59763813,5.219004631), (-2.809275627,1.857904792), (-0.768925488,2.00369072), (1.213478804,5.054683208), (3.966674089,-4.715129852), (3.606037378,0.1961832047), (-5.423397064,3.434875488), (2.249715328,-0.3219296932), (3.880141735,6.799582481), (-0.465303421,0.6773622036), (-4.861494064,3.035137892), (-2.970816612,1.346918821), (1.45413506,3.225545168), (-2.470086098,-1.489482999), (-2.470086098,1.489482999), (1.45413506,-3.225545168), (-2.970816612,-1.346918821), (-4.861494064,-3.035137892), (-0.465303421,-0.6773622036), (3.880141735,-6.799582481), (2.249715328,0.3219296932), (-5.423397064,-3.434875488), (3.606037378,-0.1961832047), (3.966674089,4.715129852), (1.213478804,-5.054683208), (-0.768925488,-2.00369072), (-2.220051289,1.512348294), (-1.235956073,0.7785832882), (-5.847000122,-0.0147203207), (-4.717791557,1.951827765), (-3.773251534,-4.990011215), (2.884654999,3.398807526), (5.672742367,0.7873437405), (4.248654366,2.139424801), (-4.828884125,0.4608916044), (-4.072755337,1.278635025), (0.2896728516,0.2327990532), (3.294314384,-1.094229102), (3.294314384,1.094229102), (0.2896728516,-0.2327990532), (-4.072755337,-1.278635025), (-4.828884125,-0.4608916044), (4.248654366,-2.139424801), (5.672742367,-0.7873437405), (2.884654999,-3.398807526), (-3.773251534,4.990011215), (-4.717791557,-1.951827765), (-5.847000122,0.0147203207), (-1.235956073,-0.7785832882), (-2.220051289,-1.512348294), (0.9226903319,4.267571449), (-1.437251925,-3.580348253), (0.03603422642,-1.275114536), (-5.739364624,-0.1097413301), (-5.739364624,0.1097413301), (0.03603422642,1.275114536), (-1.437251925,3.580348253), (0.9226903319,-4.267571449), (-5.211256981,7.146552086), (4.157069683,6.030432701), (-4.010327339,-1.533936262), (-0.6967151761,-0.0959803462), (2.036157131,3.429550409), (-2.729854584,3.902244806), (3.364386082,1.030713558), (-1.500010014,-4.306185722), (-2.978727341,4.799777031), (-4.733328819,-0.2710825205), (-4.733328819,0.2710825205), (-2.978727341,-4.799777031), (-1.500010014,4.306185722), (3.364386082,-1.030713558), (-2.729854584,-3.902244806), (2.036157131,-3.429550409), (-0.6967151761,0.0959803462), (-4.010327339,1.533936262), (4.157069683,-6.030432701), (-5.211256981,-7.146552086), (-0.2306147218,-0.5819837451), (-6.305120945,-1.457084179), (-6.305120945,1.457084179), (-0.2306147218,0.5819837451), (-5.17535162,-0.2336061001), (-0.2841696143,-10.6944809), (-2.390393257,-0.7063763142), (1.107917547,-1.777672529), (5.721277237,-5.00039959), (6.430810928,0.4185490012), (-1.039620161,4.589290142), (4.601204872,0.6167341471), (2.573006153,2.296423435), (6.217131615,3.523381472), (3.895627022,-0.699914217), (2.557150126,-6.427192211), (2.557150126,6.427192211), (3.895627022,0.699914217), (6.217131615,-3.523381472), (2.573006153,-2.296423435), (4.601204872,-0.6167341471), (-1.039620161,-4.589290142), (6.430810928,-0.4185490012), (5.721277237,5.00039959), (1.107917547,1.777672529), (-2.390393257,0.7063763142), (-0.2841696143,10.6944809), (-5.17535162,0.2336061001), (-2.54470849,-4.587264538), (-1.740908504,-3.925166845), (-0.158428967,2.498699665), (-0.158428967,-2.498699665), (-1.740908504,3.925166845), (-2.54470849,4.587264538), (-6.729282379,0.1392500401), (-1.508695841,-0.7561137676), (-1.462480307,0.6218969226), (-0.321264863,-0.7247383595), (8.637511253,0.7257275581), (-0.9631168246,1.153114796), (-3.088907242,8.718103409), (4.214176178,-1.945542574), (-3.311136723,0.9504836202), (-3.311136723,-0.9504836202), (4.214176178,1.945542574), (-3.088907242,-8.718103409), (-0.9631168246,-1.153114796), (8.637511253,-0.7257275581), (-0.321264863,0.7247383595), (-1.462480307,-0.6218969226), (-1.508695841,0.7561137676), (-6.729282379,-0.1392500401), (0.200414896,-0.8899208307), (-3.520216942,-2.698538303), (-1.002582073,0.08162379265), (-2.358664274,-2.249558926), (-2.358664274,2.249558926), (-1.002582073,-0.08162379265), (-3.520216942,2.698538303), (0.200414896,0.8899208307), (-3.408019781,8.709181786), (2.158164024,-0.1445958614), (2.64282155,4.411319733), (-0.4583158493,2.501485348), (-0.424772501,0.7248215675), (-3.711930752,-0.3703078032), (-3.711930752,0.3703078032), (-0.424772501,-0.7248215675), (-0.4583158493,-2.501485348), (2.64282155,-4.411319733), (2.158164024,0.1445958614), (-3.408019781,-8.709181786), (-1.891610861,6.444361687), (-0.02526116371,-2.683085442), (7.09794426,-0.2332104445), (-2.015702248,3.50109911), (3.243085146,-1.314267516), (2.156584501,0.4628716707), (3.525612593,5.440950394), (1.228835583,-0.3453999162), (-0.478734374,8.110942841), (-4.417645931,3.435180187), (-0.3485159278,1.372372866), (-0.2073709965,-0.07035624981), (-0.2073709965,0.07035624981), (-0.3485159278,-1.372372866), (-4.417645931,-3.435180187), (-0.478734374,-8.110942841), (1.228835583,0.3453999162), (3.525612593,-5.440950394), (2.156584501,-0.4628716707), (3.243085146,1.314267516), (-2.015702248,-3.50109911), (7.09794426,0.2332104445), (-0.02526116371,2.683085442), (-1.891610861,-6.444361687), (3.285906792,-6.027932167), (3.285906792,6.027932167), (-1.367059708,-2.100066662), (-1.367059708,2.100066662), (3.421066761,5.951356888), (0.9868799448,-1.311420441), (-1.627541304,5.462136269), (-3.990864277,1.102679849), (1.300173998,0.7606943846), (8.343988419,-0.8481897116), (-1.63301301,1.46787715), (-1.652385354,2.130233288), (6.521931171,4.971187592), (-1.634993196,-6.445318222), (-1.000563025,6.159612179), (-4.145616531,-0.2669619322), (-4.145616531,0.2669619322), (-1.000563025,-6.159612179), (-1.634993196,6.445318222), (6.521931171,-4.971187592), (-1.652385354,-2.130233288), (-1.63301301,-1.46787715), (8.343988419,0.8481897116), (1.300173998,-0.7606943846), (-3.990864277,-1.102679849), (-1.627541304,-5.462136269), (0.9868799448,1.311420441), (3.421066761,-5.951356888), (-7.250906944,4.418672562), (-4.982307434,-7.65216732), (1.850622296,-2.512521744), (-1.400040746,1.869890451), (5.249089718,-2.353768826), (-0.2356463671,2.200823784), (1.352718472,-0.7274159789), (4.983772278,6.636553764), (-2.008724928,3.623922348), (-4.296545029,-0.5656754971), (2.036823273,1.873584747), (6.78609848,-5.275559425), (1.594316721,-0.8120986223), (3.135821342,2.274452925), (3.135821342,-2.274452925), (1.594316721,0.8120986223), (6.78609848,5.275559425), (2.036823273,-1.873584747), (-4.296545029,0.5656754971), (-2.008724928,-3.623922348), (4.983772278,-6.636553764), (1.352718472,0.7274159789), (-0.2356463671,-2.200823784), (5.249089718,2.353768826), (-1.400040746,-1.869890451), (1.850622296,2.512521744), (-4.982307434,7.65216732), (-7.250906944,-4.418672562), (-5.363657951,1.124087811), (-1.567838907,3.671515465), (2.337051153,-5.62945652), (6.950581551,-1.243847132), (2.125556469,3.765841961), (0.9406456947,1.451031923), (-2.119028568,-1.426778078), (4.993509293,-2.385100842), (-1.50265789,-2.871356726), (6.083207607,1.23132658), (6.083207607,-1.23132658), (-1.50265789,2.871356726), (4.993509293,2.385100842), (-2.119028568,1.426778078), (0.9406456947,-1.451031923), (2.125556469,-3.765841961), (6.950581551,1.243847132), (2.337051153,5.62945652), (-1.567838907,-3.671515465), (-5.363657951,-1.124087811), (-2.053162098,-1.063462973), (-1.678141475,3.762696266), (0.0007864236832,1.058095455), (0.0007864236832,-1.058095455), (-1.678141475,-3.762696266), (-2.053162098,1.063462973), (2.29822731,1.357947469), (2.29822731,-1.357947469), (2.836388111,5.724801064), (-0.5488714576,-1.98086977), (1.778634548,2.7628932), (-3.494198561,-1.180356979), (3.874499798,-1.15323329), (5.613768578,-6.254772186), (-2.863878012,3.081430912), (0.6554439664,4.137325287), (4.995419502,-0.2541038394), (4.995419502,0.2541038394), (0.6554439664,-4.137325287), (-2.863878012,-3.081430912), (5.613768578,6.254772186), (3.874499798,1.15323329), (-3.494198561,1.180356979), (1.778634548,-2.7628932), (-0.5488714576,1.98086977), (2.836388111,-5.724801064), (4.070603371,-4.396873474), (4.070603371,4.396873474), (2.980705261,1.138022184), (2.980705261,-1.138022184), (3.674338818,1.130653381), (0.03487324715,0.733140707), (0.9849895239,-4.404793262), (0.1247190237,3.179280758), (0.0411696434,-1.996884108), (3.971215248,1.024628162), (2.22546649,2.114651203), (0.8446412086,-1.650652885), (-11.17575455,1.761610866), (-2.91852355,5.771692276), (-2.780082464,-4.580620766), (-1.15428555,3.912901878), (-1.566892385,5.624961853), (-1.566892385,-5.624961853), (-1.15428555,-3.912901878), (-2.780082464,4.580620766), (-2.91852355,-5.771692276), (-11.17575455,-1.761610866), (0.8446412086,1.650652885), (2.22546649,-2.114651203), (3.971215248,-1.024628162), (0.0411696434,1.996884108), (0.1247190237,-3.179280758), (0.9849895239,4.404793262), (0.03487324715,-0.733140707), (3.674338818,-1.130653381), (-8.700888634,2.00682354), (-0.03683960438,-4.234910011), (-1.239307284,1.285633802), (3.913101912,1.040015101), (3.92149353,-0.4837493896), (-1.704045177,-1.159303665), (2.514077187,-4.360420227), (0.7877758145,2.334750891), (-2.096787453,0.8956620693), (-1.136339307,1.45267415), (0.2019445896,-1.723826885), (0.2019445896,1.723826885), (-1.136339307,-1.45267415), (-2.096787453,-0.8956620693), (0.7877758145,-2.334750891), (2.514077187,4.360420227), (-1.704045177,1.159303665), (3.92149353,0.4837493896), (3.913101912,-1.040015101), (-1.239307284,-1.285633802), (-0.03683960438,4.234910011), (-8.700888634,-2.00682354), }; +} + } // namespace qmcplusplus diff --git a/src/type_traits/template_types.hpp b/src/type_traits/template_types.hpp index d7ace1eb6b..67f873e125 100644 --- a/src/type_traits/template_types.hpp +++ b/src/type_traits/template_types.hpp @@ -79,7 +79,7 @@ static RefVector convertUPtrToRefVector(const UPtrVector& ptr_list) template static RefVector convertUPtrToRefVector(const UPtrVector& ptr_list) { - static_assert(!std::is_same_v && std::is_base_of_v); + static_assert((!std::is_same_v) && std::is_base_of_v); RefVector ref_list; ref_list.reserve(ptr_list.size()); for (const UPtr& ptr : ptr_list) diff --git a/src/type_traits/tests/test_template_types.cpp b/src/type_traits/tests/test_template_types.cpp index bd2e1b0201..f8cb0c2a0a 100644 --- a/src/type_traits/tests/test_template_types.cpp +++ b/src/type_traits/tests/test_template_types.cpp @@ -79,6 +79,8 @@ TEST_CASE("convertUPtrToRefvector", "[type_traits]") // This should cause a compilation error. a DerivedDummy cannot be converted to an OtherDummy. // RefVector od_ref_vec = convertUPtrToRefVector(ddv); + + } TEST_CASE("convertPtrToRefvectorSubset", "[type_traits]") From af6f64b05849719371dfb8d3f78b0c82302a1089 Mon Sep 17 00:00:00 2001 From: "Peter Doak (epd)" Date: Thu, 24 Oct 2024 14:13:54 -0400 Subject: [PATCH 04/10] canning some test data --- .../tests/test_StructureFactorEstimator.cpp | 323 +++++++++++++++++- .../for_testing/NativeInitializerPrint.hpp | 10 + 2 files changed, 316 insertions(+), 17 deletions(-) diff --git a/src/Estimators/tests/test_StructureFactorEstimator.cpp b/src/Estimators/tests/test_StructureFactorEstimator.cpp index 467d78b056..aa003a7bfc 100644 --- a/src/Estimators/tests/test_StructureFactorEstimator.cpp +++ b/src/Estimators/tests/test_StructureFactorEstimator.cpp @@ -25,7 +25,7 @@ namespace qmcplusplus { constexpr bool generate_test_data = false; - + namespace testing { class StructureFactorAccess @@ -39,13 +39,16 @@ class StructureFactorAccess } // namespace testing class StructureFactorTests -{ - using Data = Vector; - using DataC = Vector>; - Data getSKElecElec(); - DataC getRhoKElec(); +{ + using Real = StructureFactorEstimator::Real; + using Data = Vector; + using DataC = Vector>; + +public: + static Data getSKElecElec(); + static DataC getRhoKElec(); }; - + TEST_CASE("StructureFactorEstimator::StructureFactorEstimator", "[estimators]") { using Input = qmcplusplus::testing::ValidStructureFactorInput; @@ -137,7 +140,7 @@ TEST_CASE("StructureFactorEstimator::Accumulate", "[estimators]") auto wavefunction_pool = MinimalWaveFunctionPool::make_diamondC_1x1x1(test_project.getRuntimeOptions(), comm, particle_pool); - auto& spomap = wavefunction_pool.getWaveFunction("wavefunction")->getSPOMap(); + auto& spomap = wavefunction_pool.getWaveFunction("wavefunction")->getSPOMap(); auto& trial_wavefunction = *(wavefunction_pool.getPrimary()); std::vector> twfcs(nwalkers); @@ -174,14 +177,14 @@ TEST_CASE("StructureFactorEstimator::Accumulate", "[estimators]") } for (int iw = 0; iw < nwalkers; ++iw) updateWalker(walkers[iw], psets[iw], *(twfcs[iw])); - + sfe.accumulate(ref_walkers, ref_psets, ref_wfns, ref_hams, rng); testing::StructureFactorAccess sfa; auto& sfk_e_e = sfa.getSKElecElec(sfe); auto& rhok_e = sfa.getRhoKElec(sfe); - if constexpr (true) //generate_test_data) + if constexpr (generate_test_data) { std::cout << "sfk_e_e_exected = "; std::cout << NativePrint(sfk_e_e) << '\n'; @@ -189,19 +192,305 @@ TEST_CASE("StructureFactorEstimator::Accumulate", "[estimators]") std::cout << NativePrint(rhok_e) << '\n'; FAIL_CHECK("Test always fails when generating new test reference data."); } + auto sfk_e_e_expected = StructureFactorTests::getSKElecElec(); + auto rhok_e_expected = StructureFactorTests::getRhoKElec(); + + CHECK(sfk_e_e_expected == sfk_e_e); + CHECK(rhok_e_expected == rhok_e); } -template -typename StructureFactorTests::Data StructureFactorTests::getSfkEEData() +typename StructureFactorTests::Data StructureFactorTests::getSKElecElec() { - Data sfk_e_e_exected = { 19.73623085, 19.85599327, 13.72912788, 18.75673866, 18.75673866, 13.72912788, 19.85599327, 19.73623085, 32.80349731, 43.77883148, 33.19361115, 33.19361115, 43.77883148, 32.80349731, 11.48587227, 46.64709091, 13.93536186, 21.81977654, 16.97146797, 49.0378952, 49.0378952, 16.97146797, 21.81977654, 13.93536186, 46.64709091, 11.48587227, 15.27185249, 15.26608276, 27.79554367, 34.7771225, 50.21757126, 48.46035004, 13.67208576, 15.27589607, 24.97359276, 51.96620178, 10.82582951, 13.76047134, 13.76047134, 10.82582951, 51.96620178, 24.97359276, 15.27589607, 13.67208576, 48.46035004, 50.21757126, 34.7771225, 27.79554367, 15.26608276, 15.27185249, 16.81092834, 29.33479309, 5.10248518, 85.84146118, 85.84146118, 5.10248518, 29.33479309, 16.81092834, 25.95727539, 34.5015831, 21.52643585, 21.52643585, 34.5015831, 25.95727539, 35.05796432, 38.54359055, 38.54359055, 35.05796432, 19.39619255, 36.68960571, 16.29642677, 41.76596069, 39.29201508, 40.27943802, 43.67494965, 17.53614426, 17.01120758, 14.28325844, 14.28325844, 17.01120758, 17.53614426, 43.67494965, 40.27943802, 39.29201508, 41.76596069, 16.29642677, 36.68960571, 19.39619255, 8.223339081, 16.57196808, 16.75862885, 39.18902969, 28.35930443, 14.97254658, 11.20259285, 12.45506668, 23.81349754, 35.41851044, 6.74987793, 6.768158913, 6.768158913, 6.74987793, 35.41851044, 23.81349754, 12.45506668, 11.20259285, 14.97254658, 28.35930443, 39.18902969, 16.75862885, 16.57196808, 8.223339081, 28.73698616, 28.73698616, 23.82761765, 13.70425797, 37.05511093, 20.61174965, 29.07460403, 13.55575943, 28.73127365, 50.90294647, 12.75067329, 37.09168243, 21.69445038, 21.69445038, 37.09168243, 12.75067329, 50.90294647, 28.73127365, 13.55575943, 29.07460403, 20.61174965, 37.05511093, 13.70425797, 23.82761765, 20.25505257, 20.82879829, 22.74308205, 11.197855, 11.80153656, 12.47373486, 41.87596893, 15.71939564, 18.91372871, 12.80999374, 47.60126877, 23.973526, 23.973526, 47.60126877, 12.80999374, 18.91372871, 15.71939564, 41.87596893, 12.47373486, 11.80153656, 11.197855, 22.74308205, 20.82879829, 20.25505257, 13.79166222, 18.27315712, 32.10044861, 19.95432281, 19.95432281, 32.10044861, 18.27315712, 13.79166222, 26.96515274, 32.77268982, 19.30791855, 26.16771889, 21.8395195, 12.22079182, 12.22079182, 21.8395195, 26.16771889, 19.30791855, 32.77268982, 26.96515274, 38.00551605, 44.8817749, 23.56672287, 27.14280701, 24.7010994, 26.94974136, 18.18262482, 41.78518295, 25.52963829, 12.35084438, 23.92583275, 29.39851189, 22.78663635, 17.16172409, 14.08822727, 23.29167747, 43.20004654, 7.741707802, 30.1517334, 34.65544128, 16.87238312, 20.67638779, 20.67638779, 16.87238312, 34.65544128, 30.1517334, 7.741707802, 43.20004654, 23.29167747, 14.08822727, 17.16172409, 22.78663635, 29.39851189, 23.92583275, 12.35084438, 25.52963829, 41.78518295, 18.18262482, 26.94974136, 24.7010994, 27.14280701, 23.56672287, 44.8817749, 38.00551605, 27.08095169, 15.25416183, 15.25416183, 27.08095169, 34.61734009, 26.6135807, 32.98656464, 9.606899261, 32.20135117, 34.74562454, 11.81522465, 10.8381052, 5.674238205, 17.69964981, 62.81964111, 62.81964111, 17.69964981, 5.674238205, 10.8381052, 11.81522465, 34.74562454, 32.20135117, 9.606899261, 32.98656464, 26.6135807, 34.61734009, 50.65113831, 52.74192429, 13.2403717, 50.32455826, 50.32455826, 13.2403717, 52.74192429, 50.65113831, 21.19114685, 9.176017761, 9.176017761, 21.19114685, 32.93720245, 30.89264488, 24.89771652, 20.27216721, 29.28691483, 15.03165436, 27.84318542, 34.68436432, 34.68436432, 27.84318542, 15.03165436, 29.28691483, 20.27216721, 24.89771652, 30.89264488, 32.93720245, 20.73518944, 48.29927826, 48.29927826, 20.73518944, 6.719681263, 17.64640999, 30.68091011, 15.46363926, 23.58017731, 20.0689621, 39.86466217, 27.83972359, 12.83865738, 16.58363533, 13.44682693, 16.30245018, 16.30245018, 13.44682693, 16.58363533, 12.83865738, 27.83972359, 39.86466217, 20.0689621, 23.58017731, 15.46363926, 30.68091011, 17.64640999, 6.719681263, 27.12191391, 2.961663246, 25.25554848, 17.62779236, 22.62646866, 36.46771622, 36.4128952, 11.50259686, 14.95877266, 21.88566017, 28.69185257, 36.83739471, 36.83739471, 28.69185257, 21.88566017, 14.95877266, 11.50259686, 36.4128952, 36.46771622, 22.62646866, 17.62779236, 25.25554848, 2.961663246, 27.12191391, 25.29393768, 17.32451248, 12.13477707, 25.57745552, 25.57745552, 12.13477707, 17.32451248, 25.29393768, 44.1743927, 45.1587944, 6.422393799, 0.8557809591, 11.29298401, 22.29253197, 10.27158737, 39.68115234, 15.76916122, 14.74081326, 14.74081326, 15.76916122, 39.68115234, 10.27158737, 22.29253197, 11.29298401, 0.8557809591, 6.422393799, 45.1587944, 44.1743927, 1.574051857, 30.36156845, 30.36156845, 1.574051857, 24.44804192, 52.11685562, 11.25370502, 53.2010498, 36.38677979, 28.00775719, 9.189598083, 13.18849754, 9.053028107, 23.64361572, 15.13273144, 18.57131004, 18.57131004, 15.13273144, 23.64361572, 9.053028107, 13.18849754, 9.189598083, 28.00775719, 36.38677979, 53.2010498, 11.25370502, 52.11685562, 24.44804192, 21.03116989, 18.33800316, 10.88628197, 10.88628197, 18.33800316, 21.03116989, 27.98948288, 5.415392876, 3.735046864, 20.55352974, 76.71188354, 13.2743988, 51.68177795, 25.157444, 5.967044353, 5.967044353, 25.157444, 51.68177795, 13.2743988, 76.71188354, 20.55352974, 3.735046864, 5.415392876, 27.98948288, 15.41703701, 25.33122826, 14.39577675, 21.77436638, 21.77436638, 14.39577675, 25.33122826, 15.41703701, 41.75048828, 12.49152184, 21.53453445, 23.02672005, 16.51511192, 16.62403297, 16.62403297, 16.51511192, 23.02672005, 21.53453445, 12.49152184, 41.75048828, 17.99378586, 30.66189003, 68.10175323, 16.0703907, 9.457947731, 35.68981171, 32.52541351, 26.23055077, 29.48114586, 39.52045441, 4.838356018, 15.79981232, 15.79981232, 4.838356018, 39.52045441, 29.48114586, 26.23055077, 32.52541351, 35.68981171, 9.457947731, 16.0703907, 68.10175323, 30.66189003, 17.99378586, 28.65183258, 28.65183258, 9.338945389, 9.338945389, 25.82771492, 28.39013672, 42.37106323, 9.863635063, 13.14507198, 40.67470932, 25.00154877, 10.50583935, 58.73340607, 32.45139313, 16.11537361, 14.03599453, 14.03599453, 16.11537361, 32.45139313, 58.73340607, 10.50583935, 25.00154877, 40.67470932, 13.14507198, 9.863635063, 42.37106323, 28.39013672, 25.82771492, 42.10860062, 63.0782547, 22.24442673, 20.55533981, 17.3488884, 23.1890316, 7.247262955, 32.478405, 12.28081322, 39.57626724, 33.63458633, 34.85544968, 19.60511589, 29.59932709, 29.59932709, 19.60511589, 34.85544968, 33.63458633, 39.57626724, 12.28081322, 32.478405, 7.247262955, 23.1890316, 17.3488884, 20.55533981, 22.24442673, 63.0782547, 42.10860062, 28.83471489, 22.21047592, 15.70080471, 29.11550522, 20.83918762, 2.932832956, 22.05906677, 14.52700615, 18.47239876, 21.71303177, 21.71303177, 18.47239876, 14.52700615, 22.05906677, 2.932832956, 20.83918762, 29.11550522, 15.70080471, 22.21047592, 28.83471489, 23.53705215, 11.36185551, 13.28255463, 13.28255463, 11.36185551, 23.53705215, 18.28559875, 18.28559875, 28.40058899, 7.612323761, 22.1194706, 23.1740818, 34.46437836, 29.62889481, 24.87004089, 17.90001106, 12.30208588, 12.30208588, 17.90001106, 24.87004089, 29.62889481, 34.46437836, 23.1740818, 22.1194706, 7.612323761, 28.40058899, 19.00841522, 19.00841522, 12.9498558, 12.9498558, 19.66072083, 5.124233723, 34.6622963, 32.34340286, 10.49704742, 14.63159561, 36.05694199, 17.36983871, 44.99233627, 24.41031647, 23.16533279, 19.12620926, 35.04272842, 35.04272842, 19.12620926, 23.16533279, 24.41031647, 44.99233627, 17.36983871, 36.05694199, 14.63159561, 10.49704742, 32.34340286, 34.6622963, 5.124233723, 19.66072083, 48.9961853, 10.08076382, 4.880791664, 11.80772018, 23.24902534, 14.52608204, 25.83365059, 10.32247543, 27.85143471, 22.59643936, 17.09150505, 17.09150505, 22.59643936, 27.85143471, 10.32247543, 25.83365059, 14.52608204, 23.24902534, 11.80772018, 4.880791664, 10.08076382, 48.9961853, }; + Data sfk_e_e_exected = { + 19.73623085, 19.85599327, 13.72912788, 18.75673866, 18.75673866, 13.72912788, 19.85599327, 19.73623085, + 32.80349731, 43.77883148, 33.19361115, 33.19361115, 43.77883148, 32.80349731, 11.48587227, 46.64709091, + 13.93536186, 21.81977654, 16.97146797, 49.0378952, 49.0378952, 16.97146797, 21.81977654, 13.93536186, + 46.64709091, 11.48587227, 15.27185249, 15.26608276, 27.79554367, 34.7771225, 50.21757126, 48.46035004, + 13.67208576, 15.27589607, 24.97359276, 51.96620178, 10.82582951, 13.76047134, 13.76047134, 10.82582951, + 51.96620178, 24.97359276, 15.27589607, 13.67208576, 48.46035004, 50.21757126, 34.7771225, 27.79554367, + 15.26608276, 15.27185249, 16.81092834, 29.33479309, 5.10248518, 85.84146118, 85.84146118, 5.10248518, + 29.33479309, 16.81092834, 25.95727539, 34.5015831, 21.52643585, 21.52643585, 34.5015831, 25.95727539, + 35.05796432, 38.54359055, 38.54359055, 35.05796432, 19.39619255, 36.68960571, 16.29642677, 41.76596069, + 39.29201508, 40.27943802, 43.67494965, 17.53614426, 17.01120758, 14.28325844, 14.28325844, 17.01120758, + 17.53614426, 43.67494965, 40.27943802, 39.29201508, 41.76596069, 16.29642677, 36.68960571, 19.39619255, + 8.223339081, 16.57196808, 16.75862885, 39.18902969, 28.35930443, 14.97254658, 11.20259285, 12.45506668, + 23.81349754, 35.41851044, 6.74987793, 6.768158913, 6.768158913, 6.74987793, 35.41851044, 23.81349754, + 12.45506668, 11.20259285, 14.97254658, 28.35930443, 39.18902969, 16.75862885, 16.57196808, 8.223339081, + 28.73698616, 28.73698616, 23.82761765, 13.70425797, 37.05511093, 20.61174965, 29.07460403, 13.55575943, + 28.73127365, 50.90294647, 12.75067329, 37.09168243, 21.69445038, 21.69445038, 37.09168243, 12.75067329, + 50.90294647, 28.73127365, 13.55575943, 29.07460403, 20.61174965, 37.05511093, 13.70425797, 23.82761765, + 20.25505257, 20.82879829, 22.74308205, 11.197855, 11.80153656, 12.47373486, 41.87596893, 15.71939564, + 18.91372871, 12.80999374, 47.60126877, 23.973526, 23.973526, 47.60126877, 12.80999374, 18.91372871, + 15.71939564, 41.87596893, 12.47373486, 11.80153656, 11.197855, 22.74308205, 20.82879829, 20.25505257, + 13.79166222, 18.27315712, 32.10044861, 19.95432281, 19.95432281, 32.10044861, 18.27315712, 13.79166222, + 26.96515274, 32.77268982, 19.30791855, 26.16771889, 21.8395195, 12.22079182, 12.22079182, 21.8395195, + 26.16771889, 19.30791855, 32.77268982, 26.96515274, 38.00551605, 44.8817749, 23.56672287, 27.14280701, + 24.7010994, 26.94974136, 18.18262482, 41.78518295, 25.52963829, 12.35084438, 23.92583275, 29.39851189, + 22.78663635, 17.16172409, 14.08822727, 23.29167747, 43.20004654, 7.741707802, 30.1517334, 34.65544128, + 16.87238312, 20.67638779, 20.67638779, 16.87238312, 34.65544128, 30.1517334, 7.741707802, 43.20004654, + 23.29167747, 14.08822727, 17.16172409, 22.78663635, 29.39851189, 23.92583275, 12.35084438, 25.52963829, + 41.78518295, 18.18262482, 26.94974136, 24.7010994, 27.14280701, 23.56672287, 44.8817749, 38.00551605, + 27.08095169, 15.25416183, 15.25416183, 27.08095169, 34.61734009, 26.6135807, 32.98656464, 9.606899261, + 32.20135117, 34.74562454, 11.81522465, 10.8381052, 5.674238205, 17.69964981, 62.81964111, 62.81964111, + 17.69964981, 5.674238205, 10.8381052, 11.81522465, 34.74562454, 32.20135117, 9.606899261, 32.98656464, + 26.6135807, 34.61734009, 50.65113831, 52.74192429, 13.2403717, 50.32455826, 50.32455826, 13.2403717, + 52.74192429, 50.65113831, 21.19114685, 9.176017761, 9.176017761, 21.19114685, 32.93720245, 30.89264488, + 24.89771652, 20.27216721, 29.28691483, 15.03165436, 27.84318542, 34.68436432, 34.68436432, 27.84318542, + 15.03165436, 29.28691483, 20.27216721, 24.89771652, 30.89264488, 32.93720245, 20.73518944, 48.29927826, + 48.29927826, 20.73518944, 6.719681263, 17.64640999, 30.68091011, 15.46363926, 23.58017731, 20.0689621, + 39.86466217, 27.83972359, 12.83865738, 16.58363533, 13.44682693, 16.30245018, 16.30245018, 13.44682693, + 16.58363533, 12.83865738, 27.83972359, 39.86466217, 20.0689621, 23.58017731, 15.46363926, 30.68091011, + 17.64640999, 6.719681263, 27.12191391, 2.961663246, 25.25554848, 17.62779236, 22.62646866, 36.46771622, + 36.4128952, 11.50259686, 14.95877266, 21.88566017, 28.69185257, 36.83739471, 36.83739471, 28.69185257, + 21.88566017, 14.95877266, 11.50259686, 36.4128952, 36.46771622, 22.62646866, 17.62779236, 25.25554848, + 2.961663246, 27.12191391, 25.29393768, 17.32451248, 12.13477707, 25.57745552, 25.57745552, 12.13477707, + 17.32451248, 25.29393768, 44.1743927, 45.1587944, 6.422393799, 0.8557809591, 11.29298401, 22.29253197, + 10.27158737, 39.68115234, 15.76916122, 14.74081326, 14.74081326, 15.76916122, 39.68115234, 10.27158737, + 22.29253197, 11.29298401, 0.8557809591, 6.422393799, 45.1587944, 44.1743927, 1.574051857, 30.36156845, + 30.36156845, 1.574051857, 24.44804192, 52.11685562, 11.25370502, 53.2010498, 36.38677979, 28.00775719, + 9.189598083, 13.18849754, 9.053028107, 23.64361572, 15.13273144, 18.57131004, 18.57131004, 15.13273144, + 23.64361572, 9.053028107, 13.18849754, 9.189598083, 28.00775719, 36.38677979, 53.2010498, 11.25370502, + 52.11685562, 24.44804192, 21.03116989, 18.33800316, 10.88628197, 10.88628197, 18.33800316, 21.03116989, + 27.98948288, 5.415392876, 3.735046864, 20.55352974, 76.71188354, 13.2743988, 51.68177795, 25.157444, + 5.967044353, 5.967044353, 25.157444, 51.68177795, 13.2743988, 76.71188354, 20.55352974, 3.735046864, + 5.415392876, 27.98948288, 15.41703701, 25.33122826, 14.39577675, 21.77436638, 21.77436638, 14.39577675, + 25.33122826, 15.41703701, 41.75048828, 12.49152184, 21.53453445, 23.02672005, 16.51511192, 16.62403297, + 16.62403297, 16.51511192, 23.02672005, 21.53453445, 12.49152184, 41.75048828, 17.99378586, 30.66189003, + 68.10175323, 16.0703907, 9.457947731, 35.68981171, 32.52541351, 26.23055077, 29.48114586, 39.52045441, + 4.838356018, 15.79981232, 15.79981232, 4.838356018, 39.52045441, 29.48114586, 26.23055077, 32.52541351, + 35.68981171, 9.457947731, 16.0703907, 68.10175323, 30.66189003, 17.99378586, 28.65183258, 28.65183258, + 9.338945389, 9.338945389, 25.82771492, 28.39013672, 42.37106323, 9.863635063, 13.14507198, 40.67470932, + 25.00154877, 10.50583935, 58.73340607, 32.45139313, 16.11537361, 14.03599453, 14.03599453, 16.11537361, + 32.45139313, 58.73340607, 10.50583935, 25.00154877, 40.67470932, 13.14507198, 9.863635063, 42.37106323, + 28.39013672, 25.82771492, 42.10860062, 63.0782547, 22.24442673, 20.55533981, 17.3488884, 23.1890316, + 7.247262955, 32.478405, 12.28081322, 39.57626724, 33.63458633, 34.85544968, 19.60511589, 29.59932709, + 29.59932709, 19.60511589, 34.85544968, 33.63458633, 39.57626724, 12.28081322, 32.478405, 7.247262955, + 23.1890316, 17.3488884, 20.55533981, 22.24442673, 63.0782547, 42.10860062, 28.83471489, 22.21047592, + 15.70080471, 29.11550522, 20.83918762, 2.932832956, 22.05906677, 14.52700615, 18.47239876, 21.71303177, + 21.71303177, 18.47239876, 14.52700615, 22.05906677, 2.932832956, 20.83918762, 29.11550522, 15.70080471, + 22.21047592, 28.83471489, 23.53705215, 11.36185551, 13.28255463, 13.28255463, 11.36185551, 23.53705215, + 18.28559875, 18.28559875, 28.40058899, 7.612323761, 22.1194706, 23.1740818, 34.46437836, 29.62889481, + 24.87004089, 17.90001106, 12.30208588, 12.30208588, 17.90001106, 24.87004089, 29.62889481, 34.46437836, + 23.1740818, 22.1194706, 7.612323761, 28.40058899, 19.00841522, 19.00841522, 12.9498558, 12.9498558, + 19.66072083, 5.124233723, 34.6622963, 32.34340286, 10.49704742, 14.63159561, 36.05694199, 17.36983871, + 44.99233627, 24.41031647, 23.16533279, 19.12620926, 35.04272842, 35.04272842, 19.12620926, 23.16533279, + 24.41031647, 44.99233627, 17.36983871, 36.05694199, 14.63159561, 10.49704742, 32.34340286, 34.6622963, + 5.124233723, 19.66072083, 48.9961853, 10.08076382, 4.880791664, 11.80772018, 23.24902534, 14.52608204, + 25.83365059, 10.32247543, 27.85143471, 22.59643936, 17.09150505, 17.09150505, 22.59643936, 27.85143471, + 10.32247543, 25.83365059, 14.52608204, 23.24902534, 11.80772018, 4.880791664, 10.08076382, 48.9961853, + }; return sfk_e_e_exected; } -template -typename StructureFactorTests::DataC StructureFactorTests::getRhoKElec() -{ - DataC rhok_e_expected = { (0.5924067497,-1.491295099), (3.584708452,-1.712368011), (0.3997975588,-3.005949497), (4.994470596,-5.147814274), (4.994470596,5.147814274), (0.3997975588,3.005949497), (3.584708452,1.712368011), (0.5924067497,1.491295099), (7.359516144,-5.6792202), (4.826219082,-5.896167755), (3.279859066,-8.152435303), (3.279859066,8.152435303), (4.826219082,5.896167755), (7.359516144,5.6792202), (2.076227188,-3.606255054), (3.45581913,-9.614717484), (-1.546550393,-3.149424314), (6.73450613,0.4296414852), (4.920219421,-1.791886091), (11.15685272,-1.166432381), (11.15685272,1.166432381), (4.920219421,1.791886091), (6.73450613,-0.4296414852), (-1.546550393,3.149424314), (3.45581913,9.614717484), (2.076227188,3.606255054), (0.6491305232,-5.774231911), (-3.71764946,-2.71548152), (0.2622945905,-8.464838982), (0.8365126848,-5.196321487), (2.131130219,-9.120963097), (7.443614483,0.1272249222), (-1.302274108,2.783902407), (-2.805317879,-4.100622654), (2.166297436,2.167853832), (8.253002167,1.212442398), (3.100903511,0.2963767648), (-3.347835541,-2.253051996), (-3.347835541,2.253051996), (3.100903511,-0.2963767648), (8.253002167,-1.212442398), (2.166297436,-2.167853832), (-2.805317879,4.100622654), (-1.302274108,-2.783902407), (7.443614483,-0.1272249222), (2.131130219,9.120963097), (0.8365126848,5.196321487), (0.2622945905,8.464838982), (-3.71764946,2.71548152), (0.6491305232,5.774231911), (2.391165257,-4.354510784), (1.974772215,-7.41988945), (0.4369556904,-1.177869081), (3.464332104,-12.54276276), (3.464332104,12.54276276), (0.4369556904,1.177869081), (1.974772215,7.41988945), (2.391165257,4.354510784), (3.547600985,-5.061825275), (-3.484699249,-5.007374287), (-2.511082172,1.347038388), (-2.511082172,-1.347038388), (-3.484699249,5.007374287), (3.547600985,5.061825275), (-4.758557796,-1.4227314), (-3.966060162,-0.7569956779), (-3.966060162,0.7569956779), (-4.758557796,1.4227314), (1.031636953,-5.657271862), (-8.92360878,-5.387914181), (4.195902824,-4.546901703), (4.829262257,3.230755568), (3.007032871,-5.985052109), (-2.540019989,-6.998126984), (2.830960274,1.483453035), (1.639224529,3.652080774), (-4.786507607,3.884080887), (2.714856625,1.799381852), (2.714856625,-1.799381852), (-4.786507607,-3.884080887), (1.639224529,-3.652080774), (2.830960274,-1.483453035), (-2.540019989,6.998126984), (3.007032871,5.985052109), (4.829262257,-3.230755568), (4.195902824,4.546901703), (-8.92360878,5.387914181), (1.031636953,5.657271862), (-2.995438814,-1.522596359), (-3.952926636,0.7274377346), (-2.676473856,-2.648072004), (2.056577682,-2.997202396), (6.533461571,-3.822700024), (-1.989242554,-3.323826075), (-2.446074486,0.1415935755), (-2.390799522,-1.153463006), (5.994254589,0.5641999245), (1.587408066,-5.109902859), (2.81265831,3.224537611), (0.4621456861,-0.6620330215), (0.4621456861,0.6620330215), (2.81265831,-3.224537611), (1.587408066,5.109902859), (5.994254589,-0.5641999245), (-2.390799522,1.153463006), (-2.446074486,-0.1415935755), (-1.989242554,3.323826075), (6.533461571,3.822700024), (2.056577682,2.997202396), (-2.676473856,2.648072004), (-3.952926636,-0.7274377346), (-2.995438814,1.522596359), (0.2932553291,2.283790827), (0.2932553291,-2.283790827), (-2.449538469,-3.938394547), (-4.169157028,-1.420828938), (-1.119577646,-7.335044384), (-3.06660223,-5.171131134), (4.478675365,-0.9375646114), (-2.30142498,-4.092213631), (0.4033448696,7.406522274), (-5.53929615,-4.483269691), (1.817272425,-4.938120842), (-1.283513784,-1.526912689), (-5.368692398,0.6403012276), (-5.368692398,-0.6403012276), (-1.283513784,1.526912689), (1.817272425,4.938120842), (-5.53929615,4.483269691), (0.4033448696,-7.406522274), (-2.30142498,4.092213631), (4.478675365,0.9375646114), (-3.06660223,5.171131134), (-1.119577646,7.335044384), (-4.169157028,1.420828938), (-2.449538469,3.938394547), (-2.349718094,-4.534374237), (-3.258060932,-6.563598633), (-5.269825935,5.625203133), (-1.056861639,-1.715589404), (2.943459511,1.621193409), (1.507925034,-1.25841105), (-8.943761826,-2.031452417), (-0.2633992434,-2.200559139), (-1.154777408,-2.864115238), (3.757408142,-0.1391367912), (5.542544365,-2.473004341), (1.33184135,-0.4289052486), (1.33184135,0.4289052486), (5.542544365,2.473004341), (3.757408142,0.1391367912), (-1.154777408,2.864115238), (-0.2633992434,2.200559139), (-8.943761826,2.031452417), (1.507925034,1.25841105), (2.943459511,-1.621193409), (-1.056861639,1.715589404), (-5.269825935,-5.625203133), (-3.258060932,6.563598633), (-2.349718094,4.534374237), (-5.006935596,-0.8101488948), (6.134077072,1.376995802), (-2.58267808,1.947652578), (-0.5679087043,-5.896474838), (-0.5679087043,5.896474838), (-2.58267808,-1.947652578), (6.134077072,-1.376995802), (-5.006935596,0.8101488948), (-4.242553711,-0.148026824), (3.14392066,-5.239214897), (-3.501530647,1.262228012), (4.789734364,1.410614848), (0.4787006378,3.037798405), (2.685522079,2.979806185), (2.685522079,-2.979806185), (0.4787006378,-3.037798405), (4.789734364,-1.410614848), (-3.501530647,-1.262228012), (3.14392066,5.239214897), (-4.242553711,0.148026824), (-8.816467285,2.135006428), (-3.966232538,-10.40109634), (-3.992070198,-2.509442091), (-4.318099976,1.254590392), (7.517472267,-0.883942306), (1.476297617,0.3583492041), (-1.905166984,-1.170188785), (2.860048771,-1.935360193), (-6.622910976,1.248441696), (-3.721976042,-0.6532094479), (5.397536755,-0.5902895927), (3.959159136,2.64208293), (0.2132015228,2.653470993), (-0.5940680504,1.017179847), (1.364158273,-2.555692434), (4.447151661,3.147212744), (-2.467634439,-7.81071806), (1.248704433,3.042328119), (-1.876766443,-1.636115551), (4.225340843,8.04101181), (1.958802819,-2.829083681), (-0.5199436545,-3.344742537), (-0.5199436545,3.344742537), (1.958802819,2.829083681), (4.225340843,-8.04101181), (-1.876766443,1.636115551), (1.248704433,-3.042328119), (-2.467634439,7.81071806), (4.447151661,-3.147212744), (1.364158273,2.555692434), (-0.5940680504,-1.017179847), (0.2132015228,-2.653470993), (3.959159136,-2.64208293), (5.397536755,0.5902895927), (-3.721976042,0.6532094479), (-6.622910976,-1.248441696), (2.860048771,1.935360193), (-1.905166984,1.170188785), (1.476297617,-0.3583492041), (7.517472267,0.883942306), (-4.318099976,-1.254590392), (-3.992070198,2.509442091), (-3.966232538,10.40109634), (-8.816467285,-2.135006428), (-7.380677223,-2.085382462), (-1.813711286,-3.303716898), (-1.813711286,3.303716898), (-7.380677223,2.085382462), (-3.442320824,-3.390959024), (-5.427708149,0.8670220971), (-1.383381367,-2.30133605), (-1.27065289,0.806579113), (-0.1855710745,-8.051383018), (1.988223791,-8.346243858), (1.00059104,2.997005463), (-3.695013523,1.744617939), (1.796917796,1.001032114), (-3.90969038,-0.09522914886), (-1.423160553,-2.237792015), (-1.423160553,2.237792015), (-3.90969038,0.09522914886), (1.796917796,-1.001032114), (-3.695013523,-1.744617939), (1.00059104,-2.997005463), (1.988223791,8.346243858), (-0.1855710745,8.051383018), (-1.27065289,-0.806579113), (-1.383381367,2.30133605), (-5.427708149,-0.8670220971), (-3.442320824,3.390959024), (-2.299573898,6.924650192), (-4.531122208,-2.911784649), (2.221989632,-1.75119853), (2.176891804,10.40933418), (2.176891804,-10.40933418), (2.221989632,1.75119853), (-4.531122208,2.911784649), (-2.299573898,-6.924650192), (-0.7874586582,-4.425065041), (1.992164373,3.124239445), (1.992164373,-3.124239445), (-0.7874586582,4.425065041), (-1.798467398,1.35413909), (6.019507408,-0.3360600471), (-7.235887051,-1.991593838), (-0.07142817974,3.503325939), (-1.178472519,3.673949957), (-3.244167328,-1.830079556), (-4.368251801,-3.369636059), (-0.3029971123,-3.641766548), (-0.3029971123,3.641766548), (-4.368251801,3.369636059), (-3.244167328,1.830079556), (-1.178472519,-3.673949957), (-0.07142817974,-3.503325939), (-7.235887051,1.991593838), (6.019507408,0.3360600471), (-1.798467398,-1.35413909), (-2.809275627,-1.857904792), (-4.59763813,-5.219004631), (-4.59763813,5.219004631), (-2.809275627,1.857904792), (-0.768925488,2.00369072), (1.213478804,5.054683208), (3.966674089,-4.715129852), (3.606037378,0.1961832047), (-5.423397064,3.434875488), (2.249715328,-0.3219296932), (3.880141735,6.799582481), (-0.465303421,0.6773622036), (-4.861494064,3.035137892), (-2.970816612,1.346918821), (1.45413506,3.225545168), (-2.470086098,-1.489482999), (-2.470086098,1.489482999), (1.45413506,-3.225545168), (-2.970816612,-1.346918821), (-4.861494064,-3.035137892), (-0.465303421,-0.6773622036), (3.880141735,-6.799582481), (2.249715328,0.3219296932), (-5.423397064,-3.434875488), (3.606037378,-0.1961832047), (3.966674089,4.715129852), (1.213478804,-5.054683208), (-0.768925488,-2.00369072), (-2.220051289,1.512348294), (-1.235956073,0.7785832882), (-5.847000122,-0.0147203207), (-4.717791557,1.951827765), (-3.773251534,-4.990011215), (2.884654999,3.398807526), (5.672742367,0.7873437405), (4.248654366,2.139424801), (-4.828884125,0.4608916044), (-4.072755337,1.278635025), (0.2896728516,0.2327990532), (3.294314384,-1.094229102), (3.294314384,1.094229102), (0.2896728516,-0.2327990532), (-4.072755337,-1.278635025), (-4.828884125,-0.4608916044), (4.248654366,-2.139424801), (5.672742367,-0.7873437405), (2.884654999,-3.398807526), (-3.773251534,4.990011215), (-4.717791557,-1.951827765), (-5.847000122,0.0147203207), (-1.235956073,-0.7785832882), (-2.220051289,-1.512348294), (0.9226903319,4.267571449), (-1.437251925,-3.580348253), (0.03603422642,-1.275114536), (-5.739364624,-0.1097413301), (-5.739364624,0.1097413301), (0.03603422642,1.275114536), (-1.437251925,3.580348253), (0.9226903319,-4.267571449), (-5.211256981,7.146552086), (4.157069683,6.030432701), (-4.010327339,-1.533936262), (-0.6967151761,-0.0959803462), (2.036157131,3.429550409), (-2.729854584,3.902244806), (3.364386082,1.030713558), (-1.500010014,-4.306185722), (-2.978727341,4.799777031), (-4.733328819,-0.2710825205), (-4.733328819,0.2710825205), (-2.978727341,-4.799777031), (-1.500010014,4.306185722), (3.364386082,-1.030713558), (-2.729854584,-3.902244806), (2.036157131,-3.429550409), (-0.6967151761,0.0959803462), (-4.010327339,1.533936262), (4.157069683,-6.030432701), (-5.211256981,-7.146552086), (-0.2306147218,-0.5819837451), (-6.305120945,-1.457084179), (-6.305120945,1.457084179), (-0.2306147218,0.5819837451), (-5.17535162,-0.2336061001), (-0.2841696143,-10.6944809), (-2.390393257,-0.7063763142), (1.107917547,-1.777672529), (5.721277237,-5.00039959), (6.430810928,0.4185490012), (-1.039620161,4.589290142), (4.601204872,0.6167341471), (2.573006153,2.296423435), (6.217131615,3.523381472), (3.895627022,-0.699914217), (2.557150126,-6.427192211), (2.557150126,6.427192211), (3.895627022,0.699914217), (6.217131615,-3.523381472), (2.573006153,-2.296423435), (4.601204872,-0.6167341471), (-1.039620161,-4.589290142), (6.430810928,-0.4185490012), (5.721277237,5.00039959), (1.107917547,1.777672529), (-2.390393257,0.7063763142), (-0.2841696143,10.6944809), (-5.17535162,0.2336061001), (-2.54470849,-4.587264538), (-1.740908504,-3.925166845), (-0.158428967,2.498699665), (-0.158428967,-2.498699665), (-1.740908504,3.925166845), (-2.54470849,4.587264538), (-6.729282379,0.1392500401), (-1.508695841,-0.7561137676), (-1.462480307,0.6218969226), (-0.321264863,-0.7247383595), (8.637511253,0.7257275581), (-0.9631168246,1.153114796), (-3.088907242,8.718103409), (4.214176178,-1.945542574), (-3.311136723,0.9504836202), (-3.311136723,-0.9504836202), (4.214176178,1.945542574), (-3.088907242,-8.718103409), (-0.9631168246,-1.153114796), (8.637511253,-0.7257275581), (-0.321264863,0.7247383595), (-1.462480307,-0.6218969226), (-1.508695841,0.7561137676), (-6.729282379,-0.1392500401), (0.200414896,-0.8899208307), (-3.520216942,-2.698538303), (-1.002582073,0.08162379265), (-2.358664274,-2.249558926), (-2.358664274,2.249558926), (-1.002582073,-0.08162379265), (-3.520216942,2.698538303), (0.200414896,0.8899208307), (-3.408019781,8.709181786), (2.158164024,-0.1445958614), (2.64282155,4.411319733), (-0.4583158493,2.501485348), (-0.424772501,0.7248215675), (-3.711930752,-0.3703078032), (-3.711930752,0.3703078032), (-0.424772501,-0.7248215675), (-0.4583158493,-2.501485348), (2.64282155,-4.411319733), (2.158164024,0.1445958614), (-3.408019781,-8.709181786), (-1.891610861,6.444361687), (-0.02526116371,-2.683085442), (7.09794426,-0.2332104445), (-2.015702248,3.50109911), (3.243085146,-1.314267516), (2.156584501,0.4628716707), (3.525612593,5.440950394), (1.228835583,-0.3453999162), (-0.478734374,8.110942841), (-4.417645931,3.435180187), (-0.3485159278,1.372372866), (-0.2073709965,-0.07035624981), (-0.2073709965,0.07035624981), (-0.3485159278,-1.372372866), (-4.417645931,-3.435180187), (-0.478734374,-8.110942841), (1.228835583,0.3453999162), (3.525612593,-5.440950394), (2.156584501,-0.4628716707), (3.243085146,1.314267516), (-2.015702248,-3.50109911), (7.09794426,0.2332104445), (-0.02526116371,2.683085442), (-1.891610861,-6.444361687), (3.285906792,-6.027932167), (3.285906792,6.027932167), (-1.367059708,-2.100066662), (-1.367059708,2.100066662), (3.421066761,5.951356888), (0.9868799448,-1.311420441), (-1.627541304,5.462136269), (-3.990864277,1.102679849), (1.300173998,0.7606943846), (8.343988419,-0.8481897116), (-1.63301301,1.46787715), (-1.652385354,2.130233288), (6.521931171,4.971187592), (-1.634993196,-6.445318222), (-1.000563025,6.159612179), (-4.145616531,-0.2669619322), (-4.145616531,0.2669619322), (-1.000563025,-6.159612179), (-1.634993196,6.445318222), (6.521931171,-4.971187592), (-1.652385354,-2.130233288), (-1.63301301,-1.46787715), (8.343988419,0.8481897116), (1.300173998,-0.7606943846), (-3.990864277,-1.102679849), (-1.627541304,-5.462136269), (0.9868799448,1.311420441), (3.421066761,-5.951356888), (-7.250906944,4.418672562), (-4.982307434,-7.65216732), (1.850622296,-2.512521744), (-1.400040746,1.869890451), (5.249089718,-2.353768826), (-0.2356463671,2.200823784), (1.352718472,-0.7274159789), (4.983772278,6.636553764), (-2.008724928,3.623922348), (-4.296545029,-0.5656754971), (2.036823273,1.873584747), (6.78609848,-5.275559425), (1.594316721,-0.8120986223), (3.135821342,2.274452925), (3.135821342,-2.274452925), (1.594316721,0.8120986223), (6.78609848,5.275559425), (2.036823273,-1.873584747), (-4.296545029,0.5656754971), (-2.008724928,-3.623922348), (4.983772278,-6.636553764), (1.352718472,0.7274159789), (-0.2356463671,-2.200823784), (5.249089718,2.353768826), (-1.400040746,-1.869890451), (1.850622296,2.512521744), (-4.982307434,7.65216732), (-7.250906944,-4.418672562), (-5.363657951,1.124087811), (-1.567838907,3.671515465), (2.337051153,-5.62945652), (6.950581551,-1.243847132), (2.125556469,3.765841961), (0.9406456947,1.451031923), (-2.119028568,-1.426778078), (4.993509293,-2.385100842), (-1.50265789,-2.871356726), (6.083207607,1.23132658), (6.083207607,-1.23132658), (-1.50265789,2.871356726), (4.993509293,2.385100842), (-2.119028568,1.426778078), (0.9406456947,-1.451031923), (2.125556469,-3.765841961), (6.950581551,1.243847132), (2.337051153,5.62945652), (-1.567838907,-3.671515465), (-5.363657951,-1.124087811), (-2.053162098,-1.063462973), (-1.678141475,3.762696266), (0.0007864236832,1.058095455), (0.0007864236832,-1.058095455), (-1.678141475,-3.762696266), (-2.053162098,1.063462973), (2.29822731,1.357947469), (2.29822731,-1.357947469), (2.836388111,5.724801064), (-0.5488714576,-1.98086977), (1.778634548,2.7628932), (-3.494198561,-1.180356979), (3.874499798,-1.15323329), (5.613768578,-6.254772186), (-2.863878012,3.081430912), (0.6554439664,4.137325287), (4.995419502,-0.2541038394), (4.995419502,0.2541038394), (0.6554439664,-4.137325287), (-2.863878012,-3.081430912), (5.613768578,6.254772186), (3.874499798,1.15323329), (-3.494198561,1.180356979), (1.778634548,-2.7628932), (-0.5488714576,1.98086977), (2.836388111,-5.724801064), (4.070603371,-4.396873474), (4.070603371,4.396873474), (2.980705261,1.138022184), (2.980705261,-1.138022184), (3.674338818,1.130653381), (0.03487324715,0.733140707), (0.9849895239,-4.404793262), (0.1247190237,3.179280758), (0.0411696434,-1.996884108), (3.971215248,1.024628162), (2.22546649,2.114651203), (0.8446412086,-1.650652885), (-11.17575455,1.761610866), (-2.91852355,5.771692276), (-2.780082464,-4.580620766), (-1.15428555,3.912901878), (-1.566892385,5.624961853), (-1.566892385,-5.624961853), (-1.15428555,-3.912901878), (-2.780082464,4.580620766), (-2.91852355,-5.771692276), (-11.17575455,-1.761610866), (0.8446412086,1.650652885), (2.22546649,-2.114651203), (3.971215248,-1.024628162), (0.0411696434,1.996884108), (0.1247190237,-3.179280758), (0.9849895239,4.404793262), (0.03487324715,-0.733140707), (3.674338818,-1.130653381), (-8.700888634,2.00682354), (-0.03683960438,-4.234910011), (-1.239307284,1.285633802), (3.913101912,1.040015101), (3.92149353,-0.4837493896), (-1.704045177,-1.159303665), (2.514077187,-4.360420227), (0.7877758145,2.334750891), (-2.096787453,0.8956620693), (-1.136339307,1.45267415), (0.2019445896,-1.723826885), (0.2019445896,1.723826885), (-1.136339307,-1.45267415), (-2.096787453,-0.8956620693), (0.7877758145,-2.334750891), (2.514077187,4.360420227), (-1.704045177,1.159303665), (3.92149353,0.4837493896), (3.913101912,-1.040015101), (-1.239307284,-1.285633802), (-0.03683960438,4.234910011), (-8.700888634,-2.00682354), }; +typename StructureFactorTests::DataC StructureFactorTests::getRhoKElec() +{ + DataC rhok_e_expected = { + {8.71710968, -4.546697617}, {-1.922936916, 2.888134718}, {3.683834553, 1.587894678}, + {0.08274590969, -2.9855299}, {0.08274590969, 2.9855299}, {3.683834553, -1.587894678}, + {-1.922936916, -2.888134718}, {8.71710968, 4.546697617}, {5.925450325, -3.780387878}, + {3.495111465, -7.33366251}, {8.456186295, -9.878379822}, {8.456186295, 9.878379822}, + {3.495111465, 7.33366251}, {5.925450325, 3.780387878}, {1.293812513, 2.550879002}, + {0.9947829247, -1.667260885}, {-3.32370615, -4.325564384}, {3.32420516, -2.692898273}, + {-0.5864133239, -0.4921188354}, {4.742272377, 6.527976036}, {4.742272377, -6.527976036}, + {-0.5864133239, 0.4921188354}, {3.32420516, 2.692898273}, {-3.32370615, 4.325564384}, + {0.9947829247, 1.667260885}, {1.293812513, -2.550879002}, {-5.700958729, -8.084672928}, + {0.1101314425, -5.768994808}, {-6.726584435, -11.35791016}, {0.2212747335, -2.771863937}, + {-5.652677536, -15.22936058}, {11.32489491, 0.2840920985}, {3.681020975, -1.348021507}, + {8.953266144, 0.2829014659}, {3.232520342, 1.962494969}, {-1.18957901, 5.086456299}, + {-0.1311748028, -4.871684551}, {-8.142663956, -4.272470474}, {-8.142663956, 4.272470474}, + {-0.1311748028, 4.871684551}, {-1.18957901, -5.086456299}, {3.232520342, -1.962494969}, + {8.953266144, -0.2829014659}, {3.681020975, 1.348021507}, {11.32489491, -0.2840920985}, + {-5.652677536, 15.22936058}, {0.2212747335, 2.771863937}, {-6.726584435, 11.35791016}, + {0.1101314425, 5.768994808}, {-5.700958729, 8.084672928}, {10.43575668, 6.53019619}, + {5.795556068, 2.78207016}, {-6.113267899, -0.2030392885}, {-6.086822987, -8.499317169}, + {-6.086822987, 8.499317169}, {-6.113267899, 0.2030392885}, {5.795556068, -2.78207016}, + {10.43575668, -6.53019619}, {-4.801735878, -6.616987228}, {-5.774668694, -10.96525192}, + {5.316614628, -4.684461594}, {5.316614628, 4.684461594}, {-5.774668694, 10.96525192}, + {-4.801735878, 6.616987228}, {-9.40567112, -2.540453911}, {-7.583086967, -2.324322939}, + {-7.583086967, 2.324322939}, {-9.40567112, 2.540453911}, {-5.093160629, -4.126936913}, + {-7.604147911, -2.108922243}, {8.655655861, -8.052873611}, {11.76809883, -2.126418114}, + {2.244450092, -4.155418873}, {-4.406193256, -0.8882490396}, {7.692566395, 2.791618824}, + {11.47925091, 0.8016405702}, {6.823512077, -6.03425312}, {9.898491859, -2.840027809}, + {9.898491859, 2.840027809}, {6.823512077, 6.03425312}, {11.47925091, -0.8016405702}, + {7.692566395, -2.791618824}, {-4.406193256, 0.8882490396}, {2.244450092, 4.155418873}, + {11.76809883, 2.126418114}, {8.655655861, 8.052873611}, {-7.604147911, 2.108922243}, + {-5.093160629, 4.126936913}, {-2.87187624, -7.559978008}, {-7.102768898, -9.985420227}, + {-2.812223434, 0.6576720476}, {1.349279881, -6.264540672}, {5.319188118, -0.1384968758}, + {4.215346813, -8.821123123}, {-2.747925282, -4.244094849}, {-7.488515854, 0.1429691315}, + {5.310036659, 1.297901869}, {1.036117911, -0.2355027199}, {14.69547272, -7.05914402}, + {2.653057814, -4.491735458}, {2.653057814, 4.491735458}, {14.69547272, 7.05914402}, + {1.036117911, 0.2355027199}, {5.310036659, -1.297901869}, {-7.488515854, -0.1429691315}, + {-2.747925282, 4.244094849}, {4.215346813, 8.821123123}, {5.319188118, 0.1384968758}, + {1.349279881, 6.264540672}, {-2.812223434, -0.6576720476}, {-7.102768898, 9.985420227}, + {-2.87187624, 7.559978008}, {2.356003761, -2.862271309}, {2.356003761, 2.862271309}, + {-2.363417864, 2.569367409}, {-2.248744488, -5.109074593}, {17.48342514, -4.97355938}, + {5.618811131, -10.55295563}, {2.239295483, 0.3416103125}, {-0.2212430239, -4.464571953}, + {-2.904228687, 8.329310417}, {1.709150076, -2.501589298}, {-7.698933601, 4.440327168}, + {-1.292080879, 4.754459381}, {-0.3222714663, -5.873790264}, {-0.3222714663, 5.873790264}, + {-1.292080879, -4.754459381}, {-7.698933601, -4.440327168}, {1.709150076, 2.501589298}, + {-2.904228687, -8.329310417}, {-0.2212430239, 4.464571953}, {2.239295483, -0.3416103125}, + {5.618811131, 10.55295563}, {17.48342514, 4.97355938}, {-2.248744488, 5.109074593}, + {-2.363417864, -2.569367409}, {-4.939735413, -5.351401806}, {1.830592275, -3.316003799}, + {-7.168056488, 2.093708515}, {3.260816097, 1.833023667}, {13.40994263, -1.961353064}, + {7.738707542, -1.397968173}, {-1.647323608, 4.647089005}, {-10.57173729, 1.734428048}, + {-5.389299393, -7.666906357}, {-6.404142857, 2.542213917}, {3.615185022, 4.523777962}, + {0.4198628664, 5.071886539}, {0.4198628664, -5.071886539}, {3.615185022, -4.523777962}, + {-6.404142857, -2.542213917}, {-5.389299393, 7.666906357}, {-10.57173729, -1.734428048}, + {-1.647323608, -4.647089005}, {7.738707542, 1.397968173}, {13.40994263, 1.961353064}, + {3.260816097, -1.833023667}, {-7.168056488, -2.093708515}, {1.830592275, 3.316003799}, + {-4.939735413, 5.351401806}, {3.294924498, 4.57557106}, {-1.220366955, -6.349961281}, + {-3.499528408, -9.322668076}, {0.813821435, -1.265983105}, {0.813821435, 1.265983105}, + {-3.499528408, 9.322668076}, {-1.220366955, 6.349961281}, {3.294924498, -4.57557106}, + {-8.7155056, 2.827648878}, {-7.703950882, -5.550394535}, {-4.83059454, -9.249353409}, + {2.573172092, 2.606091022}, {2.530131578, -2.544525385}, {6.254175663, 7.70658493}, + {6.254175663, -7.70658493}, {2.530131578, 2.544525385}, {2.573172092, -2.606091022}, + {-4.83059454, 9.249353409}, {-7.703950882, 5.550394535}, {-8.7155056, -2.827648878}, + {-7.839790344, 1.769085646}, {4.839025497, -9.870304108}, {3.570502281, 3.187149048}, + {-0.04761236906, 10.53871632}, {1.702306747, -2.233577251}, {5.47282362, 4.489488602}, + {-3.270079851, -3.580967426}, {7.736566067, -4.634237289}, {-7.92897892, -1.031474829}, + {-0.1574441195, 7.209131718}, {14.6263876, 1.093638182}, {-0.4952100515, 6.376775742}, + {-1.919678688, -10.78917885}, {3.336119652, 7.531472206}, {8.277803421, 6.791946411}, + {1.98579514, 11.70149899}, {1.650889397, 4.836851597}, {-9.040493011, 2.985294819}, + {4.065285206, -12.95230293}, {-0.06000053883, 3.80441761}, {-1.191102505, -7.012737274}, + {9.627044678, 3.818733215}, {9.627044678, -3.818733215}, {-1.191102505, 7.012737274}, + {-0.06000053883, -3.80441761}, {4.065285206, 12.95230293}, {-9.040493011, -2.985294819}, + {1.650889397, -4.836851597}, {1.98579514, -11.70149899}, {8.277803421, -6.791946411}, + {3.336119652, -7.531472206}, {-1.919678688, 10.78917885}, {-0.4952100515, -6.376775742}, + {14.6263876, -1.093638182}, {-0.1574441195, -7.209131718}, {-7.92897892, 1.031474829}, + {7.736566067, 4.634237289}, {-3.270079851, 3.580967426}, {5.47282362, -4.489488602}, + {1.702306747, 2.233577251}, {-0.04761236906, -10.53871632}, {3.570502281, -3.187149048}, + {4.839025497, 9.870304108}, {-7.839790344, -1.769085646}, {-9.201574326, -13.4949379}, + {-0.2794930339, 7.727714539}, {-0.2794930339, -7.727714539}, {-9.201574326, 13.4949379}, + {-2.911529541, 5.704262733}, {-5.773739815, -1.985926986}, {-7.630257607, -4.414196968}, + {-13.6026001, 2.209714651}, {10.39690781, 5.922379971}, {-4.384187698, -2.772921562}, + {-6.503312111, -8.846293449}, {-2.053160667, -7.729005337}, {1.642603636, 7.368412018}, + {-3.235371828, -8.331659317}, {-0.4351923466, -0.696374774}, {-0.4351923466, 0.696374774}, + {-3.235371828, 8.331659317}, {1.642603636, -7.368412018}, {-2.053160667, 7.729005337}, + {-6.503312111, 8.846293449}, {-4.384187698, 2.772921562}, {10.39690781, -5.922379971}, + {-13.6026001, -2.209714651}, {-7.630257607, 4.414196968}, {-5.773739815, 1.985926986}, + {-2.911529541, -5.704262733}, {-7.512525082, 8.190120697}, {-3.774884224, -6.603587151}, + {3.879692078, -2.788218737}, {-11.22305489, 3.250986576}, {-11.22305489, -3.250986576}, + {3.879692078, 2.788218737}, {-3.774884224, 6.603587151}, {-7.512525082, -8.190120697}, + {2.334325075, 0.6757254004}, {-7.021186829, -3.251885891}, {-7.021186829, 3.251885891}, + {2.334325075, -0.6757254004}, {2.793100834, -3.069241047}, {-1.920218706, 6.941579342}, + {-0.5105069876, -5.864494801}, {-3.139320135, 4.444633961}, {-1.758072019, 4.634013176}, + {1.584219813, 13.92621994}, {10.15742111, 4.375022888}, {-4.61026001, 4.919458866}, + {-4.61026001, -4.919458866}, {10.15742111, -4.375022888}, {1.584219813, -13.92621994}, + {-1.758072019, -4.634013176}, {-3.139320135, -4.444633961}, {-0.5105069876, 5.864494801}, + {-1.920218706, -6.941579342}, {2.793100834, 3.069241047}, {-2.664238691, 0.07429349422}, + {-0.5081300735, -0.8151782751}, {-0.5081300735, 0.8151782751}, {-2.664238691, -0.07429349422}, + {-3.402713537, -2.890094519}, {-0.5786087513, 4.927651882}, {-2.426986694, -4.517370224}, + {-3.6040802, 5.193357944}, {3.478384733, -11.26986694}, {-1.755678892, -0.1891139746}, + {-0.7612656951, 1.449137926}, {-2.331244946, -0.9898056984}, {-11.96396637, -8.52230072}, + {2.210885048, -7.956524849}, {-4.536129475, 7.525655746}, {4.614331245, 6.411622047}, + {4.614331245, -6.411622047}, {-4.536129475, -7.525655746}, {2.210885048, 7.956524849}, + {-11.96396637, 8.52230072}, {-2.331244946, 0.9898056984}, {-0.7612656951, -1.449137926}, + {-1.755678892, 0.1891139746}, {3.478384733, 11.26986694}, {-3.6040802, -5.193357944}, + {-2.426986694, 4.517370224}, {-0.5786087513, -4.927651882}, {-3.402713537, 2.890094519}, + {-5.191473484, -2.849163055}, {-0.663464427, -5.111888885}, {1.12310195, -2.136029243}, + {3.705461979, -1.644176602}, {1.346970558, 4.375124454}, {1.778060317, 8.757004738}, + {-0.1555395126, -1.815398812}, {2.633982897, 0.892973423}, {2.678255081, 6.068552017}, + {-0.5212801099, 2.269085884}, {-0.4010076523, -0.3544235229}, {-3.34279418, -5.890102386}, + {-3.34279418, 5.890102386}, {-0.4010076523, 0.3544235229}, {-0.5212801099, -2.269085884}, + {2.678255081, -6.068552017}, {2.633982897, -0.892973423}, {-0.1555395126, 1.815398812}, + {1.778060317, -8.757004738}, {1.346970558, -4.375124454}, {3.705461979, 1.644176602}, + {1.12310195, 2.136029243}, {-0.663464427, 5.111888885}, {-5.191473484, 2.849163055}, + {4.136557579, 16.34789848}, {-3.968876839, -4.891018867}, {8.641466141, 0.3708292246}, + {-5.391967773, 3.798137188}, {-5.391967773, -3.798137188}, {8.641466141, -0.3708292246}, + {-3.968876839, 4.891018867}, {4.136557579, -16.34789848}, {-7.872437477, 4.337753296}, + {1.139393449, 0.5955389738}, {-4.332407475, 1.391280413}, {-6.661267281, 1.066924691}, + {-2.060071707, 11.90766335}, {-0.6115577221, 1.789911509}, {0.543214798, 3.455523968}, + {-3.220860958, -4.430136681}, {-1.274977803, 8.146348}, {-0.04239326715, 6.392484665}, + {-0.04239326715, -6.392484665}, {-1.274977803, -8.146348}, {-3.220860958, 4.430136681}, + {0.543214798, -3.455523968}, {-0.6115577221, -1.789911509}, {-2.060071707, -11.90766335}, + {-6.661267281, -1.066924691}, {-4.332407475, -1.391280413}, {1.139393449, -0.5955389738}, + {-7.872437477, -4.337753296}, {-5.868373871, -2.080583334}, {3.205960751, -8.414811134}, + {3.205960751, 8.414811134}, {-5.868373871, 2.080583334}, {0.3016886711, 2.535874367}, + {6.803632259, 4.496690273}, {-10.25583458, -2.179238796}, {3.787923336, -10.00564194}, + {-6.207402229, -6.479542732}, {3.69013381, -6.883469582}, {3.864925385, -3.932904243}, + {6.377850533, -2.156614542}, {-7.195007801, -7.864494324}, {-3.614258289, 3.451548576}, + {4.398411274, -4.772294998}, {2.120894909, -9.76187706}, {2.120894909, 9.76187706}, + {4.398411274, 4.772294998}, {-3.614258289, -3.451548576}, {-7.195007801, 7.864494324}, + {6.377850533, 2.156614542}, {3.864925385, 3.932904243}, {3.69013381, 6.883469582}, + {-6.207402229, 6.479542732}, {3.787923336, 10.00564194}, {-10.25583458, 2.179238796}, + {6.803632259, -4.496690273}, {0.3016886711, -2.535874367}, {-2.14943099, 2.792579174}, + {-3.017076015, 2.977154016}, {-3.10426569, 6.199737549}, {-3.10426569, -6.199737549}, + {-3.017076015, -2.977154016}, {-2.14943099, -2.792579174}, {6.161175251, 9.371200562}, + {6.703355789, -1.188367128}, {-0.9553173184, -7.164465427}, {2.489067316, 4.85033989}, + {-7.979998112, 2.947873592}, {2.814046383, -2.665548563}, {-2.999369144, 3.691152096}, + {6.6844244, -3.31745863}, {-2.465224743, 3.124488354}, {-2.465224743, -3.124488354}, + {6.6844244, 3.31745863}, {-2.999369144, -3.691152096}, {2.814046383, 2.665548563}, + {-7.979998112, -2.947873592}, {2.489067316, -4.85033989}, {-0.9553173184, 7.164465427}, + {6.703355789, 1.188367128}, {6.161175251, -9.371200562}, {-2.470119476, 5.226902008}, + {-2.021661282, -1.45525825}, {-4.929785728, 6.317669392}, {-0.6250338554, 6.334229469}, + {-0.6250338554, -6.334229469}, {-4.929785728, -6.317669392}, {-2.021661282, 1.45525825}, + {-2.470119476, -5.226902008}, {-2.59787631, 0.5687449574}, {0.7522132397, 0.8433344364}, + {-2.144709826, -9.003145218}, {-7.990592957, 5.051809788}, {5.391149521, -1.972573519}, + {1.444218874, -0.8582467437}, {1.444218874, 0.8582467437}, {5.391149521, 1.972573519}, + {-7.990592957, -5.051809788}, {-2.144709826, 9.003145218}, {0.7522132397, -0.8433344364}, + {-2.59787631, -0.5687449574}, {1.624803066, -6.169080257}, {-4.815154076, -6.220931053}, + {7.25798893, 2.185595036}, {-5.693672657, -0.7283151746}, {10.52756882, 4.967222691}, + {-11.30184746, -2.424499035}, {1.294578671, -1.047330022}, {3.586127281, -1.685513735}, + {0.5972062349, -3.687850475}, {-3.765072823, 8.039365768}, {-7.617611885, 11.9473238}, + {-4.370289326, 5.973483562}, {-4.370289326, -5.973483562}, {-7.617611885, -11.9473238}, + {-3.765072823, -8.039365768}, {0.5972062349, 3.687850475}, {3.586127281, 1.685513735}, + {1.294578671, 1.047330022}, {-11.30184746, 2.424499035}, {10.52756882, -4.967222691}, + {-5.693672657, 0.7283151746}, {7.25798893, -2.185595036}, {-4.815154076, 6.220931053}, + {1.624803066, 6.169080257}, {5.984591484, -1.579845905}, {5.984591484, 1.579845905}, + {-2.950917721, 6.393006325}, {-2.950917721, -6.393006325}, {-2.406265497, 3.512854099}, + {-6.905929565, -3.097289801}, {-1.781444192, -4.096608162}, {-4.904432297, -0.3164815903}, + {0.3287994266, -0.9647036791}, {4.294670105, 1.848518848}, {0.7801537514, 5.737058163}, + {-3.860655785, 3.325350523}, {-0.4820600748, -6.224105835}, {-2.213942051, -6.346621513}, + {-2.078785658, 2.409151077}, {-3.256606579, 6.007224083}, {-3.256606579, -6.007224083}, + {-2.078785658, -2.409151077}, {-2.213942051, 6.346621513}, {-0.4820600748, 6.224105835}, + {-3.860655785, -3.325350523}, {0.7801537514, -5.737058163}, {4.294670105, -1.848518848}, + {0.3287994266, 0.9647036791}, {-4.904432297, 0.3164815903}, {-1.781444192, 4.096608162}, + {-6.905929565, 3.097289801}, {-2.406265497, -3.512854099}, {-3.478102684, 1.023663759}, + {-5.396936417, -3.33212328}, {0.4382824302, 5.134030342}, {8.69639492, 9.952037811}, + {0.9321068525, -6.382178783}, {-2.940763235, 8.52350235}, {1.793621659, -2.952024937}, + {0.2209047675, 4.453215599}, {-2.090683699, 3.563836813}, {1.452917576, -1.211249709}, + {-5.050708771, 1.688289165}, {6.086797237, -3.249409199}, {11.60981178, 1.229768515}, + {7.713471413, 9.650679588}, {7.713471413, -9.650679588}, {11.60981178, -1.229768515}, + {6.086797237, 3.249409199}, {-5.050708771, -1.688289165}, {1.452917576, 1.211249709}, + {-2.090683699, -3.563836813}, {0.2209047675, -4.453215599}, {1.793621659, 2.952024937}, + {-2.940763235, -8.52350235}, {0.9321068525, 6.382178783}, {8.69639492, -9.952037811}, + {0.4382824302, -5.134030342}, {-5.396936417, 3.33212328}, {-3.478102684, -1.023663759}, + {-0.6031847596, 5.21430254}, {0.762039423, 6.510918617}, {-0.9319431186, -1.447879553}, + {11.32525063, -5.989095688}, {12.52264118, -4.082176685}, {-2.944167376, 4.094477654}, + {-2.552528381, 8.635591507}, {-0.6427571177, 3.982498646}, {-1.737802744, -0.9459688663}, + {-4.661380768, 5.720423698}, {-4.661380768, -5.720423698}, {-1.737802744, 0.9459688663}, + {-0.6427571177, -3.982498646}, {-2.552528381, -8.635591507}, {-2.944167376, -4.094477654}, + {12.52264118, 4.082176685}, {11.32525063, 5.989095688}, {-0.9319431186, 1.447879553}, + {0.762039423, -6.510918617}, {-0.6031847596, -5.21430254}, {-5.057085991, -8.563818932}, + {-1.454874754, 7.559200764}, {1.474900842, -1.612879038}, {1.474900842, 1.612879038}, + {-1.454874754, -7.559200764}, {-5.057085991, 8.563818932}, {-0.3846122622, -3.122711182}, + {-0.3846122622, 3.122711182}, {-3.815939903, -0.05181062222}, {-11.56450462, -9.964096069}, + {-8.32462883, 5.983042717}, {4.169249535, -8.07144928}, {-2.935938835, 2.884704828}, + {6.552947998, 11.73053932}, {2.862522602, 2.58791399}, {0.2655903697, -5.665795326}, + {1.762565374, 1.093242407}, {1.762565374, -1.093242407}, {0.2655903697, 5.665795326}, + {2.862522602, -2.58791399}, {6.552947998, -11.73053932}, {-2.935938835, -2.884704828}, + {4.169249535, 8.07144928}, {-8.32462883, -5.983042717}, {-11.56450462, 9.964096069}, + {-3.815939903, 0.05181062222}, {-1.647386074, -1.237983704}, {-1.647386074, 1.237983704}, + {0.3037085533, -6.764062881}, {0.3037085533, 6.764062881}, {-1.593097448, 7.406896591}, + {7.083545685, -2.279180527}, {1.766290188, 5.846293449}, {3.154982567, -9.518131256}, + {4.86631012, -0.9601616859}, {3.732284307, -10.53539753}, {0.2383503914, -7.824460506}, + {7.507283211, -5.759765148}, {7.411321163, -1.490231872}, {-5.159056664, 7.824353218}, + {0.03900694847, -5.096890926}, {8.155467033, -2.976303101}, {-2.111409664, 5.895214081}, + {-2.111409664, -5.895214081}, {8.155467033, 2.976303101}, {0.03900694847, 5.096890926}, + {-5.159056664, -7.824353218}, {7.411321163, 1.490231872}, {7.507283211, 5.759765148}, + {0.2383503914, 7.824460506}, {3.732284307, 10.53539753}, {4.86631012, 0.9601616859}, + {3.154982567, 9.518131256}, {1.766290188, -5.846293449}, {7.083545685, 2.279180527}, + {-1.593097448, -7.406896591}, {-3.814876318, 3.170872211}, {-0.8635575175, -2.547828674}, + {-9.147024155, -8.007073402}, {2.572521925, -7.508256912}, {-2.931224346, 2.410528898}, + {-2.80186224, 6.080150127}, {7.180770397, -5.549987793}, {-6.942130089, 4.509467125}, + {6.726749897, 0.2640405297}, {9.604988098, -0.2451888323}, {-4.905525208, -4.798740387}, + {-4.905525208, 4.798740387}, {9.604988098, 0.2451888323}, {6.726749897, -0.2640405297}, + {-6.942130089, -4.509467125}, {7.180770397, 5.549987793}, {-2.80186224, -6.080150127}, + {-2.931224346, -2.410528898}, {2.572521925, 7.508256912}, {-9.147024155, 8.007073402}, + {-0.8635575175, 2.547828674}, {-3.814876318, -3.170872211}, + }; + + return rhok_e_expected; } } // namespace qmcplusplus diff --git a/src/Utilities/for_testing/NativeInitializerPrint.hpp b/src/Utilities/for_testing/NativeInitializerPrint.hpp index 70a40cb1db..fb94e51208 100644 --- a/src/Utilities/for_testing/NativeInitializerPrint.hpp +++ b/src/Utilities/for_testing/NativeInitializerPrint.hpp @@ -89,6 +89,16 @@ inline std::ostream& operator<<(std::ostream& out, const NativePrint>& return out; } +template +inline std::ostream& operator<<(std::ostream& out, const NativePrint>>& np_vec) +{ + out << "{ "; + auto vec = np_vec.get_obj(); + for (std::complex& t : vec) + out << std::setprecision(10) << "{" << t.real() << "," << t.imag() << "}" << ", "; + out << " }"; + return out; +} } // namespace qmcplusplus From ab6eaba6a0f4b66be99ee50aaab9fcba487c9d39 Mon Sep 17 00:00:00 2001 From: "Peter Doak (epd)" Date: Fri, 25 Oct 2024 12:12:31 -0400 Subject: [PATCH 05/10] accumulation unit test working --- .../tests/test_StructureFactorEstimator.cpp | 407 +++++++++--------- 1 file changed, 203 insertions(+), 204 deletions(-) diff --git a/src/Estimators/tests/test_StructureFactorEstimator.cpp b/src/Estimators/tests/test_StructureFactorEstimator.cpp index aa003a7bfc..1b830b2fc6 100644 --- a/src/Estimators/tests/test_StructureFactorEstimator.cpp +++ b/src/Estimators/tests/test_StructureFactorEstimator.cpp @@ -285,211 +285,210 @@ typename StructureFactorTests::Data StructureFactorTests::getSKElecElec() typename StructureFactorTests::DataC StructureFactorTests::getRhoKElec() { DataC rhok_e_expected = { - {8.71710968, -4.546697617}, {-1.922936916, 2.888134718}, {3.683834553, 1.587894678}, - {0.08274590969, -2.9855299}, {0.08274590969, 2.9855299}, {3.683834553, -1.587894678}, - {-1.922936916, -2.888134718}, {8.71710968, 4.546697617}, {5.925450325, -3.780387878}, - {3.495111465, -7.33366251}, {8.456186295, -9.878379822}, {8.456186295, 9.878379822}, - {3.495111465, 7.33366251}, {5.925450325, 3.780387878}, {1.293812513, 2.550879002}, - {0.9947829247, -1.667260885}, {-3.32370615, -4.325564384}, {3.32420516, -2.692898273}, - {-0.5864133239, -0.4921188354}, {4.742272377, 6.527976036}, {4.742272377, -6.527976036}, - {-0.5864133239, 0.4921188354}, {3.32420516, 2.692898273}, {-3.32370615, 4.325564384}, - {0.9947829247, 1.667260885}, {1.293812513, -2.550879002}, {-5.700958729, -8.084672928}, - {0.1101314425, -5.768994808}, {-6.726584435, -11.35791016}, {0.2212747335, -2.771863937}, - {-5.652677536, -15.22936058}, {11.32489491, 0.2840920985}, {3.681020975, -1.348021507}, - {8.953266144, 0.2829014659}, {3.232520342, 1.962494969}, {-1.18957901, 5.086456299}, - {-0.1311748028, -4.871684551}, {-8.142663956, -4.272470474}, {-8.142663956, 4.272470474}, - {-0.1311748028, 4.871684551}, {-1.18957901, -5.086456299}, {3.232520342, -1.962494969}, - {8.953266144, -0.2829014659}, {3.681020975, 1.348021507}, {11.32489491, -0.2840920985}, - {-5.652677536, 15.22936058}, {0.2212747335, 2.771863937}, {-6.726584435, 11.35791016}, - {0.1101314425, 5.768994808}, {-5.700958729, 8.084672928}, {10.43575668, 6.53019619}, - {5.795556068, 2.78207016}, {-6.113267899, -0.2030392885}, {-6.086822987, -8.499317169}, - {-6.086822987, 8.499317169}, {-6.113267899, 0.2030392885}, {5.795556068, -2.78207016}, - {10.43575668, -6.53019619}, {-4.801735878, -6.616987228}, {-5.774668694, -10.96525192}, - {5.316614628, -4.684461594}, {5.316614628, 4.684461594}, {-5.774668694, 10.96525192}, - {-4.801735878, 6.616987228}, {-9.40567112, -2.540453911}, {-7.583086967, -2.324322939}, - {-7.583086967, 2.324322939}, {-9.40567112, 2.540453911}, {-5.093160629, -4.126936913}, - {-7.604147911, -2.108922243}, {8.655655861, -8.052873611}, {11.76809883, -2.126418114}, - {2.244450092, -4.155418873}, {-4.406193256, -0.8882490396}, {7.692566395, 2.791618824}, - {11.47925091, 0.8016405702}, {6.823512077, -6.03425312}, {9.898491859, -2.840027809}, - {9.898491859, 2.840027809}, {6.823512077, 6.03425312}, {11.47925091, -0.8016405702}, - {7.692566395, -2.791618824}, {-4.406193256, 0.8882490396}, {2.244450092, 4.155418873}, - {11.76809883, 2.126418114}, {8.655655861, 8.052873611}, {-7.604147911, 2.108922243}, - {-5.093160629, 4.126936913}, {-2.87187624, -7.559978008}, {-7.102768898, -9.985420227}, - {-2.812223434, 0.6576720476}, {1.349279881, -6.264540672}, {5.319188118, -0.1384968758}, - {4.215346813, -8.821123123}, {-2.747925282, -4.244094849}, {-7.488515854, 0.1429691315}, - {5.310036659, 1.297901869}, {1.036117911, -0.2355027199}, {14.69547272, -7.05914402}, - {2.653057814, -4.491735458}, {2.653057814, 4.491735458}, {14.69547272, 7.05914402}, - {1.036117911, 0.2355027199}, {5.310036659, -1.297901869}, {-7.488515854, -0.1429691315}, - {-2.747925282, 4.244094849}, {4.215346813, 8.821123123}, {5.319188118, 0.1384968758}, - {1.349279881, 6.264540672}, {-2.812223434, -0.6576720476}, {-7.102768898, 9.985420227}, - {-2.87187624, 7.559978008}, {2.356003761, -2.862271309}, {2.356003761, 2.862271309}, - {-2.363417864, 2.569367409}, {-2.248744488, -5.109074593}, {17.48342514, -4.97355938}, - {5.618811131, -10.55295563}, {2.239295483, 0.3416103125}, {-0.2212430239, -4.464571953}, - {-2.904228687, 8.329310417}, {1.709150076, -2.501589298}, {-7.698933601, 4.440327168}, - {-1.292080879, 4.754459381}, {-0.3222714663, -5.873790264}, {-0.3222714663, 5.873790264}, - {-1.292080879, -4.754459381}, {-7.698933601, -4.440327168}, {1.709150076, 2.501589298}, - {-2.904228687, -8.329310417}, {-0.2212430239, 4.464571953}, {2.239295483, -0.3416103125}, - {5.618811131, 10.55295563}, {17.48342514, 4.97355938}, {-2.248744488, 5.109074593}, - {-2.363417864, -2.569367409}, {-4.939735413, -5.351401806}, {1.830592275, -3.316003799}, - {-7.168056488, 2.093708515}, {3.260816097, 1.833023667}, {13.40994263, -1.961353064}, - {7.738707542, -1.397968173}, {-1.647323608, 4.647089005}, {-10.57173729, 1.734428048}, - {-5.389299393, -7.666906357}, {-6.404142857, 2.542213917}, {3.615185022, 4.523777962}, - {0.4198628664, 5.071886539}, {0.4198628664, -5.071886539}, {3.615185022, -4.523777962}, - {-6.404142857, -2.542213917}, {-5.389299393, 7.666906357}, {-10.57173729, -1.734428048}, - {-1.647323608, -4.647089005}, {7.738707542, 1.397968173}, {13.40994263, 1.961353064}, - {3.260816097, -1.833023667}, {-7.168056488, -2.093708515}, {1.830592275, 3.316003799}, - {-4.939735413, 5.351401806}, {3.294924498, 4.57557106}, {-1.220366955, -6.349961281}, - {-3.499528408, -9.322668076}, {0.813821435, -1.265983105}, {0.813821435, 1.265983105}, - {-3.499528408, 9.322668076}, {-1.220366955, 6.349961281}, {3.294924498, -4.57557106}, - {-8.7155056, 2.827648878}, {-7.703950882, -5.550394535}, {-4.83059454, -9.249353409}, - {2.573172092, 2.606091022}, {2.530131578, -2.544525385}, {6.254175663, 7.70658493}, - {6.254175663, -7.70658493}, {2.530131578, 2.544525385}, {2.573172092, -2.606091022}, - {-4.83059454, 9.249353409}, {-7.703950882, 5.550394535}, {-8.7155056, -2.827648878}, - {-7.839790344, 1.769085646}, {4.839025497, -9.870304108}, {3.570502281, 3.187149048}, - {-0.04761236906, 10.53871632}, {1.702306747, -2.233577251}, {5.47282362, 4.489488602}, - {-3.270079851, -3.580967426}, {7.736566067, -4.634237289}, {-7.92897892, -1.031474829}, - {-0.1574441195, 7.209131718}, {14.6263876, 1.093638182}, {-0.4952100515, 6.376775742}, - {-1.919678688, -10.78917885}, {3.336119652, 7.531472206}, {8.277803421, 6.791946411}, - {1.98579514, 11.70149899}, {1.650889397, 4.836851597}, {-9.040493011, 2.985294819}, - {4.065285206, -12.95230293}, {-0.06000053883, 3.80441761}, {-1.191102505, -7.012737274}, - {9.627044678, 3.818733215}, {9.627044678, -3.818733215}, {-1.191102505, 7.012737274}, - {-0.06000053883, -3.80441761}, {4.065285206, 12.95230293}, {-9.040493011, -2.985294819}, - {1.650889397, -4.836851597}, {1.98579514, -11.70149899}, {8.277803421, -6.791946411}, - {3.336119652, -7.531472206}, {-1.919678688, 10.78917885}, {-0.4952100515, -6.376775742}, - {14.6263876, -1.093638182}, {-0.1574441195, -7.209131718}, {-7.92897892, 1.031474829}, - {7.736566067, 4.634237289}, {-3.270079851, 3.580967426}, {5.47282362, -4.489488602}, - {1.702306747, 2.233577251}, {-0.04761236906, -10.53871632}, {3.570502281, -3.187149048}, - {4.839025497, 9.870304108}, {-7.839790344, -1.769085646}, {-9.201574326, -13.4949379}, - {-0.2794930339, 7.727714539}, {-0.2794930339, -7.727714539}, {-9.201574326, 13.4949379}, - {-2.911529541, 5.704262733}, {-5.773739815, -1.985926986}, {-7.630257607, -4.414196968}, - {-13.6026001, 2.209714651}, {10.39690781, 5.922379971}, {-4.384187698, -2.772921562}, - {-6.503312111, -8.846293449}, {-2.053160667, -7.729005337}, {1.642603636, 7.368412018}, - {-3.235371828, -8.331659317}, {-0.4351923466, -0.696374774}, {-0.4351923466, 0.696374774}, - {-3.235371828, 8.331659317}, {1.642603636, -7.368412018}, {-2.053160667, 7.729005337}, - {-6.503312111, 8.846293449}, {-4.384187698, 2.772921562}, {10.39690781, -5.922379971}, - {-13.6026001, -2.209714651}, {-7.630257607, 4.414196968}, {-5.773739815, 1.985926986}, - {-2.911529541, -5.704262733}, {-7.512525082, 8.190120697}, {-3.774884224, -6.603587151}, - {3.879692078, -2.788218737}, {-11.22305489, 3.250986576}, {-11.22305489, -3.250986576}, - {3.879692078, 2.788218737}, {-3.774884224, 6.603587151}, {-7.512525082, -8.190120697}, - {2.334325075, 0.6757254004}, {-7.021186829, -3.251885891}, {-7.021186829, 3.251885891}, - {2.334325075, -0.6757254004}, {2.793100834, -3.069241047}, {-1.920218706, 6.941579342}, - {-0.5105069876, -5.864494801}, {-3.139320135, 4.444633961}, {-1.758072019, 4.634013176}, - {1.584219813, 13.92621994}, {10.15742111, 4.375022888}, {-4.61026001, 4.919458866}, - {-4.61026001, -4.919458866}, {10.15742111, -4.375022888}, {1.584219813, -13.92621994}, - {-1.758072019, -4.634013176}, {-3.139320135, -4.444633961}, {-0.5105069876, 5.864494801}, - {-1.920218706, -6.941579342}, {2.793100834, 3.069241047}, {-2.664238691, 0.07429349422}, - {-0.5081300735, -0.8151782751}, {-0.5081300735, 0.8151782751}, {-2.664238691, -0.07429349422}, - {-3.402713537, -2.890094519}, {-0.5786087513, 4.927651882}, {-2.426986694, -4.517370224}, - {-3.6040802, 5.193357944}, {3.478384733, -11.26986694}, {-1.755678892, -0.1891139746}, - {-0.7612656951, 1.449137926}, {-2.331244946, -0.9898056984}, {-11.96396637, -8.52230072}, - {2.210885048, -7.956524849}, {-4.536129475, 7.525655746}, {4.614331245, 6.411622047}, - {4.614331245, -6.411622047}, {-4.536129475, -7.525655746}, {2.210885048, 7.956524849}, - {-11.96396637, 8.52230072}, {-2.331244946, 0.9898056984}, {-0.7612656951, -1.449137926}, - {-1.755678892, 0.1891139746}, {3.478384733, 11.26986694}, {-3.6040802, -5.193357944}, - {-2.426986694, 4.517370224}, {-0.5786087513, -4.927651882}, {-3.402713537, 2.890094519}, - {-5.191473484, -2.849163055}, {-0.663464427, -5.111888885}, {1.12310195, -2.136029243}, - {3.705461979, -1.644176602}, {1.346970558, 4.375124454}, {1.778060317, 8.757004738}, - {-0.1555395126, -1.815398812}, {2.633982897, 0.892973423}, {2.678255081, 6.068552017}, - {-0.5212801099, 2.269085884}, {-0.4010076523, -0.3544235229}, {-3.34279418, -5.890102386}, - {-3.34279418, 5.890102386}, {-0.4010076523, 0.3544235229}, {-0.5212801099, -2.269085884}, - {2.678255081, -6.068552017}, {2.633982897, -0.892973423}, {-0.1555395126, 1.815398812}, - {1.778060317, -8.757004738}, {1.346970558, -4.375124454}, {3.705461979, 1.644176602}, - {1.12310195, 2.136029243}, {-0.663464427, 5.111888885}, {-5.191473484, 2.849163055}, - {4.136557579, 16.34789848}, {-3.968876839, -4.891018867}, {8.641466141, 0.3708292246}, - {-5.391967773, 3.798137188}, {-5.391967773, -3.798137188}, {8.641466141, -0.3708292246}, - {-3.968876839, 4.891018867}, {4.136557579, -16.34789848}, {-7.872437477, 4.337753296}, - {1.139393449, 0.5955389738}, {-4.332407475, 1.391280413}, {-6.661267281, 1.066924691}, - {-2.060071707, 11.90766335}, {-0.6115577221, 1.789911509}, {0.543214798, 3.455523968}, - {-3.220860958, -4.430136681}, {-1.274977803, 8.146348}, {-0.04239326715, 6.392484665}, - {-0.04239326715, -6.392484665}, {-1.274977803, -8.146348}, {-3.220860958, 4.430136681}, - {0.543214798, -3.455523968}, {-0.6115577221, -1.789911509}, {-2.060071707, -11.90766335}, - {-6.661267281, -1.066924691}, {-4.332407475, -1.391280413}, {1.139393449, -0.5955389738}, - {-7.872437477, -4.337753296}, {-5.868373871, -2.080583334}, {3.205960751, -8.414811134}, - {3.205960751, 8.414811134}, {-5.868373871, 2.080583334}, {0.3016886711, 2.535874367}, - {6.803632259, 4.496690273}, {-10.25583458, -2.179238796}, {3.787923336, -10.00564194}, - {-6.207402229, -6.479542732}, {3.69013381, -6.883469582}, {3.864925385, -3.932904243}, - {6.377850533, -2.156614542}, {-7.195007801, -7.864494324}, {-3.614258289, 3.451548576}, - {4.398411274, -4.772294998}, {2.120894909, -9.76187706}, {2.120894909, 9.76187706}, - {4.398411274, 4.772294998}, {-3.614258289, -3.451548576}, {-7.195007801, 7.864494324}, - {6.377850533, 2.156614542}, {3.864925385, 3.932904243}, {3.69013381, 6.883469582}, - {-6.207402229, 6.479542732}, {3.787923336, 10.00564194}, {-10.25583458, 2.179238796}, - {6.803632259, -4.496690273}, {0.3016886711, -2.535874367}, {-2.14943099, 2.792579174}, - {-3.017076015, 2.977154016}, {-3.10426569, 6.199737549}, {-3.10426569, -6.199737549}, - {-3.017076015, -2.977154016}, {-2.14943099, -2.792579174}, {6.161175251, 9.371200562}, - {6.703355789, -1.188367128}, {-0.9553173184, -7.164465427}, {2.489067316, 4.85033989}, - {-7.979998112, 2.947873592}, {2.814046383, -2.665548563}, {-2.999369144, 3.691152096}, - {6.6844244, -3.31745863}, {-2.465224743, 3.124488354}, {-2.465224743, -3.124488354}, - {6.6844244, 3.31745863}, {-2.999369144, -3.691152096}, {2.814046383, 2.665548563}, - {-7.979998112, -2.947873592}, {2.489067316, -4.85033989}, {-0.9553173184, 7.164465427}, - {6.703355789, 1.188367128}, {6.161175251, -9.371200562}, {-2.470119476, 5.226902008}, - {-2.021661282, -1.45525825}, {-4.929785728, 6.317669392}, {-0.6250338554, 6.334229469}, - {-0.6250338554, -6.334229469}, {-4.929785728, -6.317669392}, {-2.021661282, 1.45525825}, - {-2.470119476, -5.226902008}, {-2.59787631, 0.5687449574}, {0.7522132397, 0.8433344364}, - {-2.144709826, -9.003145218}, {-7.990592957, 5.051809788}, {5.391149521, -1.972573519}, - {1.444218874, -0.8582467437}, {1.444218874, 0.8582467437}, {5.391149521, 1.972573519}, - {-7.990592957, -5.051809788}, {-2.144709826, 9.003145218}, {0.7522132397, -0.8433344364}, - {-2.59787631, -0.5687449574}, {1.624803066, -6.169080257}, {-4.815154076, -6.220931053}, - {7.25798893, 2.185595036}, {-5.693672657, -0.7283151746}, {10.52756882, 4.967222691}, - {-11.30184746, -2.424499035}, {1.294578671, -1.047330022}, {3.586127281, -1.685513735}, - {0.5972062349, -3.687850475}, {-3.765072823, 8.039365768}, {-7.617611885, 11.9473238}, - {-4.370289326, 5.973483562}, {-4.370289326, -5.973483562}, {-7.617611885, -11.9473238}, - {-3.765072823, -8.039365768}, {0.5972062349, 3.687850475}, {3.586127281, 1.685513735}, - {1.294578671, 1.047330022}, {-11.30184746, 2.424499035}, {10.52756882, -4.967222691}, - {-5.693672657, 0.7283151746}, {7.25798893, -2.185595036}, {-4.815154076, 6.220931053}, - {1.624803066, 6.169080257}, {5.984591484, -1.579845905}, {5.984591484, 1.579845905}, - {-2.950917721, 6.393006325}, {-2.950917721, -6.393006325}, {-2.406265497, 3.512854099}, - {-6.905929565, -3.097289801}, {-1.781444192, -4.096608162}, {-4.904432297, -0.3164815903}, - {0.3287994266, -0.9647036791}, {4.294670105, 1.848518848}, {0.7801537514, 5.737058163}, - {-3.860655785, 3.325350523}, {-0.4820600748, -6.224105835}, {-2.213942051, -6.346621513}, - {-2.078785658, 2.409151077}, {-3.256606579, 6.007224083}, {-3.256606579, -6.007224083}, - {-2.078785658, -2.409151077}, {-2.213942051, 6.346621513}, {-0.4820600748, 6.224105835}, - {-3.860655785, -3.325350523}, {0.7801537514, -5.737058163}, {4.294670105, -1.848518848}, - {0.3287994266, 0.9647036791}, {-4.904432297, 0.3164815903}, {-1.781444192, 4.096608162}, - {-6.905929565, 3.097289801}, {-2.406265497, -3.512854099}, {-3.478102684, 1.023663759}, - {-5.396936417, -3.33212328}, {0.4382824302, 5.134030342}, {8.69639492, 9.952037811}, - {0.9321068525, -6.382178783}, {-2.940763235, 8.52350235}, {1.793621659, -2.952024937}, - {0.2209047675, 4.453215599}, {-2.090683699, 3.563836813}, {1.452917576, -1.211249709}, - {-5.050708771, 1.688289165}, {6.086797237, -3.249409199}, {11.60981178, 1.229768515}, - {7.713471413, 9.650679588}, {7.713471413, -9.650679588}, {11.60981178, -1.229768515}, - {6.086797237, 3.249409199}, {-5.050708771, -1.688289165}, {1.452917576, 1.211249709}, - {-2.090683699, -3.563836813}, {0.2209047675, -4.453215599}, {1.793621659, 2.952024937}, - {-2.940763235, -8.52350235}, {0.9321068525, 6.382178783}, {8.69639492, -9.952037811}, - {0.4382824302, -5.134030342}, {-5.396936417, 3.33212328}, {-3.478102684, -1.023663759}, - {-0.6031847596, 5.21430254}, {0.762039423, 6.510918617}, {-0.9319431186, -1.447879553}, - {11.32525063, -5.989095688}, {12.52264118, -4.082176685}, {-2.944167376, 4.094477654}, - {-2.552528381, 8.635591507}, {-0.6427571177, 3.982498646}, {-1.737802744, -0.9459688663}, - {-4.661380768, 5.720423698}, {-4.661380768, -5.720423698}, {-1.737802744, 0.9459688663}, - {-0.6427571177, -3.982498646}, {-2.552528381, -8.635591507}, {-2.944167376, -4.094477654}, - {12.52264118, 4.082176685}, {11.32525063, 5.989095688}, {-0.9319431186, 1.447879553}, - {0.762039423, -6.510918617}, {-0.6031847596, -5.21430254}, {-5.057085991, -8.563818932}, - {-1.454874754, 7.559200764}, {1.474900842, -1.612879038}, {1.474900842, 1.612879038}, - {-1.454874754, -7.559200764}, {-5.057085991, 8.563818932}, {-0.3846122622, -3.122711182}, - {-0.3846122622, 3.122711182}, {-3.815939903, -0.05181062222}, {-11.56450462, -9.964096069}, - {-8.32462883, 5.983042717}, {4.169249535, -8.07144928}, {-2.935938835, 2.884704828}, - {6.552947998, 11.73053932}, {2.862522602, 2.58791399}, {0.2655903697, -5.665795326}, - {1.762565374, 1.093242407}, {1.762565374, -1.093242407}, {0.2655903697, 5.665795326}, - {2.862522602, -2.58791399}, {6.552947998, -11.73053932}, {-2.935938835, -2.884704828}, - {4.169249535, 8.07144928}, {-8.32462883, -5.983042717}, {-11.56450462, 9.964096069}, - {-3.815939903, 0.05181062222}, {-1.647386074, -1.237983704}, {-1.647386074, 1.237983704}, - {0.3037085533, -6.764062881}, {0.3037085533, 6.764062881}, {-1.593097448, 7.406896591}, - {7.083545685, -2.279180527}, {1.766290188, 5.846293449}, {3.154982567, -9.518131256}, - {4.86631012, -0.9601616859}, {3.732284307, -10.53539753}, {0.2383503914, -7.824460506}, - {7.507283211, -5.759765148}, {7.411321163, -1.490231872}, {-5.159056664, 7.824353218}, - {0.03900694847, -5.096890926}, {8.155467033, -2.976303101}, {-2.111409664, 5.895214081}, - {-2.111409664, -5.895214081}, {8.155467033, 2.976303101}, {0.03900694847, 5.096890926}, - {-5.159056664, -7.824353218}, {7.411321163, 1.490231872}, {7.507283211, 5.759765148}, - {0.2383503914, 7.824460506}, {3.732284307, 10.53539753}, {4.86631012, 0.9601616859}, - {3.154982567, 9.518131256}, {1.766290188, -5.846293449}, {7.083545685, 2.279180527}, - {-1.593097448, -7.406896591}, {-3.814876318, 3.170872211}, {-0.8635575175, -2.547828674}, - {-9.147024155, -8.007073402}, {2.572521925, -7.508256912}, {-2.931224346, 2.410528898}, - {-2.80186224, 6.080150127}, {7.180770397, -5.549987793}, {-6.942130089, 4.509467125}, - {6.726749897, 0.2640405297}, {9.604988098, -0.2451888323}, {-4.905525208, -4.798740387}, - {-4.905525208, 4.798740387}, {9.604988098, 0.2451888323}, {6.726749897, -0.2640405297}, - {-6.942130089, -4.509467125}, {7.180770397, 5.549987793}, {-2.80186224, -6.080150127}, - {-2.931224346, -2.410528898}, {2.572521925, 7.508256912}, {-9.147024155, 8.007073402}, - {-0.8635575175, 2.547828674}, {-3.814876318, -3.170872211}, + {0.5924067497, -1.491295099}, {3.584708452, -1.712368011}, {0.3997975588, -3.005949497}, + {4.994470596, -5.147814274}, {4.994470596, 5.147814274}, {0.3997975588, 3.005949497}, + {3.584708452, 1.712368011}, {0.5924067497, 1.491295099}, {7.359516144, -5.6792202}, + {4.826219082, -5.896167755}, {3.279859066, -8.152435303}, {3.279859066, 8.152435303}, + {4.826219082, 5.896167755}, {7.359516144, 5.6792202}, {2.076227188, -3.606255054}, + {3.45581913, -9.614717484}, {-1.546550393, -3.149424314}, {6.73450613, 0.4296414852}, + {4.920219421, -1.791886091}, {11.15685272, -1.166432381}, {11.15685272, 1.166432381}, + {4.920219421, 1.791886091}, {6.73450613, -0.4296414852}, {-1.546550393, 3.149424314}, + {3.45581913, 9.614717484}, {2.076227188, 3.606255054}, {0.6491305232, -5.774231911}, + {-3.71764946, -2.71548152}, {0.2622945905, -8.464838982}, {0.8365126848, -5.196321487}, + {2.131130219, -9.120963097}, {7.443614483, 0.1272249222}, {-1.302274108, 2.783902407}, + {-2.805317879, -4.100622654}, {2.166297436, 2.167853832}, {8.253002167, 1.212442398}, + {3.100903511, 0.2963767648}, {-3.347835541, -2.253051996}, {-3.347835541, 2.253051996}, + {3.100903511, -0.2963767648}, {8.253002167, -1.212442398}, {2.166297436, -2.167853832}, + {-2.805317879, 4.100622654}, {-1.302274108, -2.783902407}, {7.443614483, -0.1272249222}, + {2.131130219, 9.120963097}, {0.8365126848, 5.196321487}, {0.2622945905, 8.464838982}, + {-3.71764946, 2.71548152}, {0.6491305232, 5.774231911}, {2.391165257, -4.354510784}, + {1.974772215, -7.41988945}, {0.4369556904, -1.177869081}, {3.464332104, -12.54276276}, + {3.464332104, 12.54276276}, {0.4369556904, 1.177869081}, {1.974772215, 7.41988945}, + {2.391165257, 4.354510784}, {3.547600985, -5.061825275}, {-3.484699249, -5.007374287}, + {-2.511082172, 1.347038388}, {-2.511082172, -1.347038388}, {-3.484699249, 5.007374287}, + {3.547600985, 5.061825275}, {-4.758557796, -1.4227314}, {-3.966060162, -0.7569956779}, + {-3.966060162, 0.7569956779}, {-4.758557796, 1.4227314}, {1.031636953, -5.657271862}, + {-8.92360878, -5.387914181}, {4.195902824, -4.546901703}, {4.829262257, 3.230755568}, + {3.007032871, -5.985052109}, {-2.540019989, -6.998126984}, {2.830960274, 1.483453035}, + {1.639224529, 3.652080774}, {-4.786507607, 3.884080887}, {2.714856625, 1.799381852}, + {2.714856625, -1.799381852}, {-4.786507607, -3.884080887}, {1.639224529, -3.652080774}, + {2.830960274, -1.483453035}, {-2.540019989, 6.998126984}, {3.007032871, 5.985052109}, + {4.829262257, -3.230755568}, {4.195902824, 4.546901703}, {-8.92360878, 5.387914181}, + {1.031636953, 5.657271862}, {-2.995438814, -1.522596359}, {-3.952926636, 0.7274377346}, + {-2.676473856, -2.648072004}, {2.056577682, -2.997202396}, {6.533461571, -3.822700024}, + {-1.989242554, -3.323826075}, {-2.446074486, 0.1415935755}, {-2.390799522, -1.153463006}, + {5.994254589, 0.5641999245}, {1.587408066, -5.109902859}, {2.81265831, 3.224537611}, + {0.4621456861, -0.6620330215}, {0.4621456861, 0.6620330215}, {2.81265831, -3.224537611}, + {1.587408066, 5.109902859}, {5.994254589, -0.5641999245}, {-2.390799522, 1.153463006}, + {-2.446074486, -0.1415935755}, {-1.989242554, 3.323826075}, {6.533461571, 3.822700024}, + {2.056577682, 2.997202396}, {-2.676473856, 2.648072004}, {-3.952926636, -0.7274377346}, + {-2.995438814, 1.522596359}, {0.2932553291, 2.283790827}, {0.2932553291, -2.283790827}, + {-2.449538469, -3.938394547}, {-4.169157028, -1.420828938}, {-1.119577646, -7.335044384}, + {-3.06660223, -5.171131134}, {4.478675365, -0.9375646114}, {-2.30142498, -4.092213631}, + {0.4033448696, 7.406522274}, {-5.53929615, -4.483269691}, {1.817272425, -4.938120842}, + {-1.283513784, -1.526912689}, {-5.368692398, 0.6403012276}, {-5.368692398, -0.6403012276}, + {-1.283513784, 1.526912689}, {1.817272425, 4.938120842}, {-5.53929615, 4.483269691}, + {0.4033448696, -7.406522274}, {-2.30142498, 4.092213631}, {4.478675365, 0.9375646114}, + {-3.06660223, 5.171131134}, {-1.119577646, 7.335044384}, {-4.169157028, 1.420828938}, + {-2.449538469, 3.938394547}, {-2.349718094, -4.534374237}, {-3.258060932, -6.563598633}, + {-5.269825935, 5.625203133}, {-1.056861639, -1.715589404}, {2.943459511, 1.621193409}, + {1.507925034, -1.25841105}, {-8.943761826, -2.031452417}, {-0.2633992434, -2.200559139}, + {-1.154777408, -2.864115238}, {3.757408142, -0.1391367912}, {5.542544365, -2.473004341}, + {1.33184135, -0.4289052486}, {1.33184135, 0.4289052486}, {5.542544365, 2.473004341}, + {3.757408142, 0.1391367912}, {-1.154777408, 2.864115238}, {-0.2633992434, 2.200559139}, + {-8.943761826, 2.031452417}, {1.507925034, 1.25841105}, {2.943459511, -1.621193409}, + {-1.056861639, 1.715589404}, {-5.269825935, -5.625203133}, {-3.258060932, 6.563598633}, + {-2.349718094, 4.534374237}, {-5.006935596, -0.8101488948}, {6.134077072, 1.376995802}, + {-2.58267808, 1.947652578}, {-0.5679087043, -5.896474838}, {-0.5679087043, 5.896474838}, + {-2.58267808, -1.947652578}, {6.134077072, -1.376995802}, {-5.006935596, 0.8101488948}, + {-4.242553711, -0.148026824}, {3.14392066, -5.239214897}, {-3.501530647, 1.262228012}, + {4.789734364, 1.410614848}, {0.4787006378, 3.037798405}, {2.685522079, 2.979806185}, + {2.685522079, -2.979806185}, {0.4787006378, -3.037798405}, {4.789734364, -1.410614848}, + {-3.501530647, -1.262228012}, {3.14392066, 5.239214897}, {-4.242553711, 0.148026824}, + {-8.816467285, 2.135006428}, {-3.966232538, -10.40109634}, {-3.992070198, -2.509442091}, + {-4.318099976, 1.254590392}, {7.517472267, -0.883942306}, {1.476297617, 0.3583492041}, + {-1.905166984, -1.170188785}, {2.860048771, -1.935360193}, {-6.622910976, 1.248441696}, + {-3.721976042, -0.6532094479}, {5.397536755, -0.5902895927}, {3.959159136, 2.64208293}, + {0.2132015228, 2.653470993}, {-0.5940680504, 1.017179847}, {1.364158273, -2.555692434}, + {4.447151661, 3.147212744}, {-2.467634439, -7.81071806}, {1.248704433, 3.042328119}, + {-1.876766443, -1.636115551}, {4.225340843, 8.04101181}, {1.958802819, -2.829083681}, + {-0.5199436545, -3.344742537}, {-0.5199436545, 3.344742537}, {1.958802819, 2.829083681}, + {4.225340843, -8.04101181}, {-1.876766443, 1.636115551}, {1.248704433, -3.042328119}, + {-2.467634439, 7.81071806}, {4.447151661, -3.147212744}, {1.364158273, 2.555692434}, + {-0.5940680504, -1.017179847}, {0.2132015228, -2.653470993}, {3.959159136, -2.64208293}, + {5.397536755, 0.5902895927}, {-3.721976042, 0.6532094479}, {-6.622910976, -1.248441696}, + {2.860048771, 1.935360193}, {-1.905166984, 1.170188785}, {1.476297617, -0.3583492041}, + {7.517472267, 0.883942306}, {-4.318099976, -1.254590392}, {-3.992070198, 2.509442091}, + {-3.966232538, 10.40109634}, {-8.816467285, -2.135006428}, {-7.380677223, -2.085382462}, + {-1.813711286, -3.303716898}, {-1.813711286, 3.303716898}, {-7.380677223, 2.085382462}, + {-3.442320824, -3.390959024}, {-5.427708149, 0.8670220971}, {-1.383381367, -2.30133605}, + {-1.27065289, 0.806579113}, {-0.1855710745, -8.051383018}, {1.988223791, -8.346243858}, + {1.00059104, 2.997005463}, {-3.695013523, 1.744617939}, {1.796917796, 1.001032114}, + {-3.90969038, -0.09522914886}, {-1.423160553, -2.237792015}, {-1.423160553, 2.237792015}, + {-3.90969038, 0.09522914886}, {1.796917796, -1.001032114}, {-3.695013523, -1.744617939}, + {1.00059104, -2.997005463}, {1.988223791, 8.346243858}, {-0.1855710745, 8.051383018}, + {-1.27065289, -0.806579113}, {-1.383381367, 2.30133605}, {-5.427708149, -0.8670220971}, + {-3.442320824, 3.390959024}, {-2.299573898, 6.924650192}, {-4.531122208, -2.911784649}, + {2.221989632, -1.75119853}, {2.176891804, 10.40933418}, {2.176891804, -10.40933418}, + {2.221989632, 1.75119853}, {-4.531122208, 2.911784649}, {-2.299573898, -6.924650192}, + {-0.7874586582, -4.425065041}, {1.992164373, 3.124239445}, {1.992164373, -3.124239445}, + {-0.7874586582, 4.425065041}, {-1.798467398, 1.35413909}, {6.019507408, -0.3360600471}, + {-7.235887051, -1.991593838}, {-0.07142817974, 3.503325939}, {-1.178472519, 3.673949957}, + {-3.244167328, -1.830079556}, {-4.368251801, -3.369636059}, {-0.3029971123, -3.641766548}, + {-0.3029971123, 3.641766548}, {-4.368251801, 3.369636059}, {-3.244167328, 1.830079556}, + {-1.178472519, -3.673949957}, {-0.07142817974, -3.503325939}, {-7.235887051, 1.991593838}, + {6.019507408, 0.3360600471}, {-1.798467398, -1.35413909}, {-2.809275627, -1.857904792}, + {-4.59763813, -5.219004631}, {-4.59763813, 5.219004631}, {-2.809275627, 1.857904792}, + {-0.768925488, 2.00369072}, {1.213478804, 5.054683208}, {3.966674089, -4.715129852}, + {3.606037378, 0.1961832047}, {-5.423397064, 3.434875488}, {2.249715328, -0.3219296932}, + {3.880141735, 6.799582481}, {-0.465303421, 0.6773622036}, {-4.861494064, 3.035137892}, + {-2.970816612, 1.346918821}, {1.45413506, 3.225545168}, {-2.470086098, -1.489482999}, + {-2.470086098, 1.489482999}, {1.45413506, -3.225545168}, {-2.970816612, -1.346918821}, + {-4.861494064, -3.035137892}, {-0.465303421, -0.6773622036}, {3.880141735, -6.799582481}, + {2.249715328, 0.3219296932}, {-5.423397064, -3.434875488}, {3.606037378, -0.1961832047}, + {3.966674089, 4.715129852}, {1.213478804, -5.054683208}, {-0.768925488, -2.00369072}, + {-2.220051289, 1.512348294}, {-1.235956073, 0.7785832882}, {-5.847000122, -0.0147203207}, + {-4.717791557, 1.951827765}, {-3.773251534, -4.990011215}, {2.884654999, 3.398807526}, + {5.672742367, 0.7873437405}, {4.248654366, 2.139424801}, {-4.828884125, 0.4608916044}, + {-4.072755337, 1.278635025}, {0.2896728516, 0.2327990532}, {3.294314384, -1.094229102}, + {3.294314384, 1.094229102}, {0.2896728516, -0.2327990532}, {-4.072755337, -1.278635025}, + {-4.828884125, -0.4608916044}, {4.248654366, -2.139424801}, {5.672742367, -0.7873437405}, + {2.884654999, -3.398807526}, {-3.773251534, 4.990011215}, {-4.717791557, -1.951827765}, + {-5.847000122, 0.0147203207}, {-1.235956073, -0.7785832882}, {-2.220051289, -1.512348294}, + {0.9226903319, 4.267571449}, {-1.437251925, -3.580348253}, {0.03603422642, -1.275114536}, + {-5.739364624, -0.1097413301}, {-5.739364624, 0.1097413301}, {0.03603422642, 1.275114536}, + {-1.437251925, 3.580348253}, {0.9226903319, -4.267571449}, {-5.211256981, 7.146552086}, + {4.157069683, 6.030432701}, {-4.010327339, -1.533936262}, {-0.6967151761, -0.0959803462}, + {2.036157131, 3.429550409}, {-2.729854584, 3.902244806}, {3.364386082, 1.030713558}, + {-1.500010014, -4.306185722}, {-2.978727341, 4.799777031}, {-4.733328819, -0.2710825205}, + {-4.733328819, 0.2710825205}, {-2.978727341, -4.799777031}, {-1.500010014, 4.306185722}, + {3.364386082, -1.030713558}, {-2.729854584, -3.902244806}, {2.036157131, -3.429550409}, + {-0.6967151761, 0.0959803462}, {-4.010327339, 1.533936262}, {4.157069683, -6.030432701}, + {-5.211256981, -7.146552086}, {-0.2306147218, -0.5819837451}, {-6.305120945, -1.457084179}, + {-6.305120945, 1.457084179}, {-0.2306147218, 0.5819837451}, {-5.17535162, -0.2336061001}, + {-0.2841696143, -10.6944809}, {-2.390393257, -0.7063763142}, {1.107917547, -1.777672529}, + {5.721277237, -5.00039959}, {6.430810928, 0.4185490012}, {-1.039620161, 4.589290142}, + {4.601204872, 0.6167341471}, {2.573006153, 2.296423435}, {6.217131615, 3.523381472}, + {3.895627022, -0.699914217}, {2.557150126, -6.427192211}, {2.557150126, 6.427192211}, + {3.895627022, 0.699914217}, {6.217131615, -3.523381472}, {2.573006153, -2.296423435}, + {4.601204872, -0.6167341471}, {-1.039620161, -4.589290142}, {6.430810928, -0.4185490012}, + {5.721277237, 5.00039959}, {1.107917547, 1.777672529}, {-2.390393257, 0.7063763142}, + {-0.2841696143, 10.6944809}, {-5.17535162, 0.2336061001}, {-2.54470849, -4.587264538}, + {-1.740908504, -3.925166845}, {-0.158428967, 2.498699665}, {-0.158428967, -2.498699665}, + {-1.740908504, 3.925166845}, {-2.54470849, 4.587264538}, {-6.729282379, 0.1392500401}, + {-1.508695841, -0.7561137676}, {-1.462480307, 0.6218969226}, {-0.321264863, -0.7247383595}, + {8.637511253, 0.7257275581}, {-0.9631168246, 1.153114796}, {-3.088907242, 8.718103409}, + {4.214176178, -1.945542574}, {-3.311136723, 0.9504836202}, {-3.311136723, -0.9504836202}, + {4.214176178, 1.945542574}, {-3.088907242, -8.718103409}, {-0.9631168246, -1.153114796}, + {8.637511253, -0.7257275581}, {-0.321264863, 0.7247383595}, {-1.462480307, -0.6218969226}, + {-1.508695841, 0.7561137676}, {-6.729282379, -0.1392500401}, {0.200414896, -0.8899208307}, + {-3.520216942, -2.698538303}, {-1.002582073, 0.08162379265}, {-2.358664274, -2.249558926}, + {-2.358664274, 2.249558926}, {-1.002582073, -0.08162379265}, {-3.520216942, 2.698538303}, + {0.200414896, 0.8899208307}, {-3.408019781, 8.709181786}, {2.158164024, -0.1445958614}, + {2.64282155, 4.411319733}, {-0.4583158493, 2.501485348}, {-0.424772501, 0.7248215675}, + {-3.711930752, -0.3703078032}, {-3.711930752, 0.3703078032}, {-0.424772501, -0.7248215675}, + {-0.4583158493, -2.501485348}, {2.64282155, -4.411319733}, {2.158164024, 0.1445958614}, + {-3.408019781, -8.709181786}, {-1.891610861, 6.444361687}, {-0.02526116371, -2.683085442}, + {7.09794426, -0.2332104445}, {-2.015702248, 3.50109911}, {3.243085146, -1.314267516}, + {2.156584501, 0.4628716707}, {3.525612593, 5.440950394}, {1.228835583, -0.3453999162}, + {-0.478734374, 8.110942841}, {-4.417645931, 3.435180187}, {-0.3485159278, 1.372372866}, + {-0.2073709965, -0.07035624981}, {-0.2073709965, 0.07035624981}, {-0.3485159278, -1.372372866}, + {-4.417645931, -3.435180187}, {-0.478734374, -8.110942841}, {1.228835583, 0.3453999162}, + {3.525612593, -5.440950394}, {2.156584501, -0.4628716707}, {3.243085146, 1.314267516}, + {-2.015702248, -3.50109911}, {7.09794426, 0.2332104445}, {-0.02526116371, 2.683085442}, + {-1.891610861, -6.444361687}, {3.285906792, -6.027932167}, {3.285906792, 6.027932167}, + {-1.367059708, -2.100066662}, {-1.367059708, 2.100066662}, {3.421066761, 5.951356888}, + {0.9868799448, -1.311420441}, {-1.627541304, 5.462136269}, {-3.990864277, 1.102679849}, + {1.300173998, 0.7606943846}, {8.343988419, -0.8481897116}, {-1.63301301, 1.46787715}, + {-1.652385354, 2.130233288}, {6.521931171, 4.971187592}, {-1.634993196, -6.445318222}, + {-1.000563025, 6.159612179}, {-4.145616531, -0.2669619322}, {-4.145616531, 0.2669619322}, + {-1.000563025, -6.159612179}, {-1.634993196, 6.445318222}, {6.521931171, -4.971187592}, + {-1.652385354, -2.130233288}, {-1.63301301, -1.46787715}, {8.343988419, 0.8481897116}, + {1.300173998, -0.7606943846}, {-3.990864277, -1.102679849}, {-1.627541304, -5.462136269}, + {0.9868799448, 1.311420441}, {3.421066761, -5.951356888}, {-7.250906944, 4.418672562}, + {-4.982307434, -7.65216732}, {1.850622296, -2.512521744}, {-1.400040746, 1.869890451}, + {5.249089718, -2.353768826}, {-0.2356463671, 2.200823784}, {1.352718472, -0.7274159789}, + {4.983772278, 6.636553764}, {-2.008724928, 3.623922348}, {-4.296545029, -0.5656754971}, + {2.036823273, 1.873584747}, {6.78609848, -5.275559425}, {1.594316721, -0.8120986223}, + {3.135821342, 2.274452925}, {3.135821342, -2.274452925}, {1.594316721, 0.8120986223}, + {6.78609848, 5.275559425}, {2.036823273, -1.873584747}, {-4.296545029, 0.5656754971}, + {-2.008724928, -3.623922348}, {4.983772278, -6.636553764}, {1.352718472, 0.7274159789}, + {-0.2356463671, -2.200823784}, {5.249089718, 2.353768826}, {-1.400040746, -1.869890451}, + {1.850622296, 2.512521744}, {-4.982307434, 7.65216732}, {-7.250906944, -4.418672562}, + {-5.363657951, 1.124087811}, {-1.567838907, 3.671515465}, {2.337051153, -5.62945652}, + {6.950581551, -1.243847132}, {2.125556469, 3.765841961}, {0.9406456947, 1.451031923}, + {-2.119028568, -1.426778078}, {4.993509293, -2.385100842}, {-1.50265789, -2.871356726}, + {6.083207607, 1.23132658}, {6.083207607, -1.23132658}, {-1.50265789, 2.871356726}, + {4.993509293, 2.385100842}, {-2.119028568, 1.426778078}, {0.9406456947, -1.451031923}, + {2.125556469, -3.765841961}, {6.950581551, 1.243847132}, {2.337051153, 5.62945652}, + {-1.567838907, -3.671515465}, {-5.363657951, -1.124087811}, {-2.053162098, -1.063462973}, + {-1.678141475, 3.762696266}, {0.0007864236832, 1.058095455}, {0.0007864236832, -1.058095455}, + {-1.678141475, -3.762696266}, {-2.053162098, 1.063462973}, {2.29822731, 1.357947469}, + {2.29822731, -1.357947469}, {2.836388111, 5.724801064}, {-0.5488714576, -1.98086977}, + {1.778634548, 2.7628932}, {-3.494198561, -1.180356979}, {3.874499798, -1.15323329}, + {5.613768578, -6.254772186}, {-2.863878012, 3.081430912}, {0.6554439664, 4.137325287}, + {4.995419502, -0.2541038394}, {4.995419502, 0.2541038394}, {0.6554439664, -4.137325287}, + {-2.863878012, -3.081430912}, {5.613768578, 6.254772186}, {3.874499798, 1.15323329}, + {-3.494198561, 1.180356979}, {1.778634548, -2.7628932}, {-0.5488714576, 1.98086977}, + {2.836388111, -5.724801064}, {4.070603371, -4.396873474}, {4.070603371, 4.396873474}, + {2.980705261, 1.138022184}, {2.980705261, -1.138022184}, {3.674338818, 1.130653381}, + {0.03487324715, 0.733140707}, {0.9849895239, -4.404793262}, {0.1247190237, 3.179280758}, + {0.0411696434, -1.996884108}, {3.971215248, 1.024628162}, {2.22546649, 2.114651203}, + {0.8446412086, -1.650652885}, {-11.17575455, 1.761610866}, {-2.91852355, 5.771692276}, + {-2.780082464, -4.580620766}, {-1.15428555, 3.912901878}, {-1.566892385, 5.624961853}, + {-1.566892385, -5.624961853}, {-1.15428555, -3.912901878}, {-2.780082464, 4.580620766}, + {-2.91852355, -5.771692276}, {-11.17575455, -1.761610866}, {0.8446412086, 1.650652885}, + {2.22546649, -2.114651203}, {3.971215248, -1.024628162}, {0.0411696434, 1.996884108}, + {0.1247190237, -3.179280758}, {0.9849895239, 4.404793262}, {0.03487324715, -0.733140707}, + {3.674338818, -1.130653381}, {-8.700888634, 2.00682354}, {-0.03683960438, -4.234910011}, + {-1.239307284, 1.285633802}, {3.913101912, 1.040015101}, {3.92149353, -0.4837493896}, + {-1.704045177, -1.159303665}, {2.514077187, -4.360420227}, {0.7877758145, 2.334750891}, + {-2.096787453, 0.8956620693}, {-1.136339307, 1.45267415}, {0.2019445896, -1.723826885}, + {0.2019445896, 1.723826885}, {-1.136339307, -1.45267415}, {-2.096787453, -0.8956620693}, + {0.7877758145, -2.334750891}, {2.514077187, 4.360420227}, {-1.704045177, 1.159303665}, + {3.92149353, 0.4837493896}, {3.913101912, -1.040015101}, {-1.239307284, -1.285633802}, + {-0.03683960438, 4.234910011}, {-8.700888634, -2.00682354}, }; - return rhok_e_expected; } From b042a45fc384518cb9b36cd1c53fd734f5c0de89 Mon Sep 17 00:00:00 2001 From: "Peter Doak (epd)" Date: Thu, 14 Nov 2024 19:05:18 -0500 Subject: [PATCH 06/10] tired of not have checkVector adding it --- ...heckMatrix.cpp => ApproximateEquality.cpp} | 4 +- .../for_testing/ApproximateEquality.hpp | 51 +++++++++++++ src/Utilities/for_testing/CMakeLists.txt | 2 +- src/Utilities/for_testing/checkMatrix.hpp | 29 +------ src/Utilities/for_testing/checkVector.hpp | 75 +++++++++++++++++++ 5 files changed, 131 insertions(+), 30 deletions(-) rename src/Utilities/for_testing/{checkMatrix.cpp => ApproximateEquality.cpp} (93%) create mode 100644 src/Utilities/for_testing/ApproximateEquality.hpp create mode 100644 src/Utilities/for_testing/checkVector.hpp diff --git a/src/Utilities/for_testing/checkMatrix.cpp b/src/Utilities/for_testing/ApproximateEquality.cpp similarity index 93% rename from src/Utilities/for_testing/checkMatrix.cpp rename to src/Utilities/for_testing/ApproximateEquality.cpp index 25819dde66..ca1aabedd6 100644 --- a/src/Utilities/for_testing/checkMatrix.cpp +++ b/src/Utilities/for_testing/ApproximateEquality.cpp @@ -2,14 +2,14 @@ // This file is distributed under the University of Illinois/NCSA Open Source License. // See LICENSE file in top directory for details. // -// Copyright (c) 2021 QMCPACK developers. +// Copyright (c) 2024 QMCPACK developers. // // File developed by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Lab // // File created by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Lab ////////////////////////////////////////////////////////////////////////////////////// -#include "checkMatrix.hpp" +#include "ApproximateEquality.hpp" namespace qmcplusplus { diff --git a/src/Utilities/for_testing/ApproximateEquality.hpp b/src/Utilities/for_testing/ApproximateEquality.hpp new file mode 100644 index 0000000000..3aeedb508e --- /dev/null +++ b/src/Utilities/for_testing/ApproximateEquality.hpp @@ -0,0 +1,51 @@ +////////////////////////////////////////////////////////////////////////////////////// +// This file is distributed under the University of Illinois/NCSA Open Source License. +// See LICENSE file in top directory for details. +// +// Copyright (c) 2024 QMCPACK developers. +// +// File developed by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Lab +// +// File created by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Lab +////////////////////////////////////////////////////////////////////////////////////// + +#ifndef QMCPLUSPLUS_APPROXEQUALITY_HPP +#define QMCPLUSPLUS_APPROXEQUALITY_HPP + +#include "catch.hpp" + +#include +#include "type_traits/complex_help.hpp" +namespace qmcplusplus +{ + + +template = true> +bool approxEquality(T val_a, T val_b, std::optional eps) +{ + if (eps) + return val_a == ComplexApprox(val_b).epsilon(eps.value()); + else + return val_a == ComplexApprox(val_b); +} + +template = true> +bool approxEquality(T val_a, T val_b, std::optional eps) +{ + if (eps) + return val_a == Approx(val_b).epsilon(eps.value()); + else + return val_a == Approx(val_b); +} + +extern template bool approxEquality(float val_a, float val_b, std::optional eps); +extern template bool approxEquality>(std::complex val_a, + std::complex val_b, + std::optional eps); +extern template bool approxEquality(double val_a, double val_b, std::optional eps); +extern template bool approxEquality>(std::complex val_a, + std::complex val_b, + std::optional eps); + +} +#endif diff --git a/src/Utilities/for_testing/CMakeLists.txt b/src/Utilities/for_testing/CMakeLists.txt index bdb46ebfdd..d69b149092 100644 --- a/src/Utilities/for_testing/CMakeLists.txt +++ b/src/Utilities/for_testing/CMakeLists.txt @@ -7,7 +7,7 @@ #// File developed by: Peter Doak, , doakpw@ornl.gov, Oak Ridge National Laboratory #////////////////////////////////////////////////////////////////////////////////////// -set(test_utilities_src RandomForTest.cpp checkMatrix.cpp) +set(test_utilities_src RandomForTest.cpp ApproximateEquality.cpp) add_library(utilities_for_test ${test_utilities_src}) target_include_directories(utilities_for_test PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") target_link_libraries(utilities_for_test PRIVATE qmcutil qmc_external_catch2) diff --git a/src/Utilities/for_testing/checkMatrix.hpp b/src/Utilities/for_testing/checkMatrix.hpp index fd1a209b8a..dfaa383cc5 100644 --- a/src/Utilities/for_testing/checkMatrix.hpp +++ b/src/Utilities/for_testing/checkMatrix.hpp @@ -2,7 +2,7 @@ // This file is distributed under the University of Illinois/NCSA Open Source License. // See LICENSE file in top directory for details. // -// Copyright (c) 2021 QMCPACK developers. +// Copyright (c) 2024 QMCPACK developers. // // File developed by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Lab // @@ -19,27 +19,10 @@ #include #include #include "type_traits/complex_help.hpp" +#include "ApproximateEquality.hpp" namespace qmcplusplus { -template = true> -bool approxEquality(T val_a, T val_b, std::optional eps) -{ - if (eps) - return val_a == ComplexApprox(val_b).epsilon(eps.value()); - else - return val_a == ComplexApprox(val_b); -} - -template = true> -bool approxEquality(T val_a, T val_b, std::optional eps) -{ - if (eps) - return val_a == Approx(val_b).epsilon(eps.value()); - else - return val_a == Approx(val_b); -} - struct CheckMatrixResult { bool result; @@ -89,13 +72,5 @@ CheckMatrixResult checkMatrix(M1& a_mat, return {all_elements_match, error_msg.str()}; } -extern template bool approxEquality(float val_a, float val_b, std::optional eps); -extern template bool approxEquality>(std::complex val_a, - std::complex val_b, - std::optional eps); -extern template bool approxEquality(double val_a, double val_b, std::optional eps); -extern template bool approxEquality>(std::complex val_a, - std::complex val_b, - std::optional eps); } // namespace qmcplusplus #endif diff --git a/src/Utilities/for_testing/checkVector.hpp b/src/Utilities/for_testing/checkVector.hpp new file mode 100644 index 0000000000..9e1742e321 --- /dev/null +++ b/src/Utilities/for_testing/checkVector.hpp @@ -0,0 +1,75 @@ +////////////////////////////////////////////////////////////////////////////////////// +// This file is distributed under the University of Illinois/NCSA Open Source License. +// See LICENSE file in top directory for details. +// +// Copyright (c) 2024 QMCPACK developers. +// +// File developed by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Lab +// +// File created by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Lab +////////////////////////////////////////////////////////////////////////////////////// + +#ifndef QMCPLUSPLUS_CHECKVECTOR_HPP +#define QMCPLUSPLUS_CHECKVECTOR_HPP + +#include "catch.hpp" + +#include +#include +#include +#include +#include "type_traits/complex_help.hpp" +#include "ApproximateEquality.hpp" +namespace qmcplusplus +{ + +struct CheckVectorResult +{ + bool result; + std::string result_message; +}; + + /** This function checks equality a_vec and b_vec elements + * M1, M2 need to have their element type declared M1::value_type + * and have an operator(i,j) accessor. + * I leave the c++14 template meta programming to insure + * this as an exercise for the reader. Or just enjoy the compiler error. + * + * \param[in] a_vec - reference vector, if padded must be identical to b_vec, + * can be a smaller than b_vec in which case it is compared to upper + * left block of b_vec. + * \param[in] b_vec - the vectorto check + * \param[in] check_all - if true continue to check vector elements after failure + * \param[in] eps - add a tolerance for Catch Approx checks. Default to same as in Approx. + */ +template +CheckVectorResult checkVector(M1& a_vec, + M2& b_vec, + const bool check_all = false, + std::optional eps = std::nullopt) +{ + // This allows use to check a padded b matrix with a nonpadded a + if (a_vec.size() > b_vec.size()) + return {false, "b_vec is too small for a_vec to be a checkable segment"}; + std::stringstream error_msg; + auto vectorElementError = [&error_msg](int i, auto& a_vec, auto& b_vec) { + error_msg << "checkVector found bad element at " << i << " " << a_vec[i] << " != " << b_vec[i] + << '\n'; + }; + bool all_elements_match = true; + for (int i = 0; i < a_vec.size(); i++) + { + bool approx_equality = approxEquality(a_vec[i], b_vec[i], eps); + if (!approx_equality) + { + vectorElementError(i, a_vec, b_vec); + all_elements_match = false; + if (!check_all) + return {false, error_msg.str()}; + } + } + return {all_elements_match, error_msg.str()}; +} +} // namespace qmcplusplus + +#endif From a9da4c32f415a665bbbc72710b1c4fe16c840181 Mon Sep 17 00:00:00 2001 From: "Peter Doak (epd)" Date: Thu, 14 Nov 2024 19:05:41 -0500 Subject: [PATCH 07/10] improved output for test_StructureFactorEstimator --- .../tests/test_StructureFactorEstimator.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Estimators/tests/test_StructureFactorEstimator.cpp b/src/Estimators/tests/test_StructureFactorEstimator.cpp index 1b830b2fc6..373ab6599a 100644 --- a/src/Estimators/tests/test_StructureFactorEstimator.cpp +++ b/src/Estimators/tests/test_StructureFactorEstimator.cpp @@ -19,6 +19,7 @@ #include "GenerateRandomParticleSets.h" #include "Utilities/ProjectData.h" #include "Utilities/for_testing/NativeInitializerPrint.hpp" +#include "Utilities/for_testing/checkVector.hpp" #include namespace qmcplusplus @@ -195,8 +196,16 @@ TEST_CASE("StructureFactorEstimator::Accumulate", "[estimators]") auto sfk_e_e_expected = StructureFactorTests::getSKElecElec(); auto rhok_e_expected = StructureFactorTests::getRhoKElec(); - CHECK(sfk_e_e_expected == sfk_e_e); - CHECK(rhok_e_expected == rhok_e); + { + INFO("In sfk_e_e test"); + auto check = checkVector(sfk_e_e_expected, sfk_e_e, true, 2e-6); + CHECKED_ELSE(check.result) { FAIL(check.result_message); } + } + { + INFO("In rhok_e test"); + auto check = checkVector(rhok_e_expected, rhok_e, true, 2e-6); + CHECKED_ELSE(check.result) { FAIL(check.result_message); } + } } typename StructureFactorTests::Data StructureFactorTests::getSKElecElec() From c2e8bd01aa0462c1f3bad6bd343d367700d24f39 Mon Sep 17 00:00:00 2001 From: "Peter Doak (epd)" Date: Mon, 2 Dec 2024 11:29:41 -0500 Subject: [PATCH 08/10] fix stale test data --- src/Estimators/StructureFactorEstimator.h | 1 + .../tests/test_StructureFactorEstimator.cpp | 565 +++++++++--------- 2 files changed, 285 insertions(+), 281 deletions(-) diff --git a/src/Estimators/StructureFactorEstimator.h b/src/Estimators/StructureFactorEstimator.h index 9073fcb4ad..eda1bf5d15 100644 --- a/src/Estimators/StructureFactorEstimator.h +++ b/src/Estimators/StructureFactorEstimator.h @@ -54,6 +54,7 @@ class StructureFactorEstimator : public OperatorEstBase void write(hdf_archive& file); void collect(const RefVector& type_erased_operator_estimators) override; + long long getNumKPoints() { return num_kpoints_; } protected: // Testing functions const Vector& getSKElecElec() const { return sfk_e_e_; } diff --git a/src/Estimators/tests/test_StructureFactorEstimator.cpp b/src/Estimators/tests/test_StructureFactorEstimator.cpp index 373ab6599a..94d3fec5c3 100644 --- a/src/Estimators/tests/test_StructureFactorEstimator.cpp +++ b/src/Estimators/tests/test_StructureFactorEstimator.cpp @@ -39,6 +39,7 @@ class StructureFactorAccess }; } // namespace testing +/// Provides the canned test data for testing class StructureFactorTests { using Real = StructureFactorEstimator::Real; @@ -179,6 +180,8 @@ TEST_CASE("StructureFactorEstimator::Accumulate", "[estimators]") for (int iw = 0; iw < nwalkers; ++iw) updateWalker(walkers[iw], psets[iw], *(twfcs[iw])); + CHECK(sfe.getNumKPoints() == 608); + sfe.accumulate(ref_walkers, ref_psets, ref_wfns, ref_hams, rng); testing::StructureFactorAccess sfa; @@ -210,293 +213,293 @@ TEST_CASE("StructureFactorEstimator::Accumulate", "[estimators]") typename StructureFactorTests::Data StructureFactorTests::getSKElecElec() { - Data sfk_e_e_exected = { - 19.73623085, 19.85599327, 13.72912788, 18.75673866, 18.75673866, 13.72912788, 19.85599327, 19.73623085, - 32.80349731, 43.77883148, 33.19361115, 33.19361115, 43.77883148, 32.80349731, 11.48587227, 46.64709091, - 13.93536186, 21.81977654, 16.97146797, 49.0378952, 49.0378952, 16.97146797, 21.81977654, 13.93536186, - 46.64709091, 11.48587227, 15.27185249, 15.26608276, 27.79554367, 34.7771225, 50.21757126, 48.46035004, - 13.67208576, 15.27589607, 24.97359276, 51.96620178, 10.82582951, 13.76047134, 13.76047134, 10.82582951, - 51.96620178, 24.97359276, 15.27589607, 13.67208576, 48.46035004, 50.21757126, 34.7771225, 27.79554367, - 15.26608276, 15.27185249, 16.81092834, 29.33479309, 5.10248518, 85.84146118, 85.84146118, 5.10248518, - 29.33479309, 16.81092834, 25.95727539, 34.5015831, 21.52643585, 21.52643585, 34.5015831, 25.95727539, - 35.05796432, 38.54359055, 38.54359055, 35.05796432, 19.39619255, 36.68960571, 16.29642677, 41.76596069, - 39.29201508, 40.27943802, 43.67494965, 17.53614426, 17.01120758, 14.28325844, 14.28325844, 17.01120758, - 17.53614426, 43.67494965, 40.27943802, 39.29201508, 41.76596069, 16.29642677, 36.68960571, 19.39619255, - 8.223339081, 16.57196808, 16.75862885, 39.18902969, 28.35930443, 14.97254658, 11.20259285, 12.45506668, - 23.81349754, 35.41851044, 6.74987793, 6.768158913, 6.768158913, 6.74987793, 35.41851044, 23.81349754, - 12.45506668, 11.20259285, 14.97254658, 28.35930443, 39.18902969, 16.75862885, 16.57196808, 8.223339081, - 28.73698616, 28.73698616, 23.82761765, 13.70425797, 37.05511093, 20.61174965, 29.07460403, 13.55575943, - 28.73127365, 50.90294647, 12.75067329, 37.09168243, 21.69445038, 21.69445038, 37.09168243, 12.75067329, - 50.90294647, 28.73127365, 13.55575943, 29.07460403, 20.61174965, 37.05511093, 13.70425797, 23.82761765, - 20.25505257, 20.82879829, 22.74308205, 11.197855, 11.80153656, 12.47373486, 41.87596893, 15.71939564, - 18.91372871, 12.80999374, 47.60126877, 23.973526, 23.973526, 47.60126877, 12.80999374, 18.91372871, - 15.71939564, 41.87596893, 12.47373486, 11.80153656, 11.197855, 22.74308205, 20.82879829, 20.25505257, - 13.79166222, 18.27315712, 32.10044861, 19.95432281, 19.95432281, 32.10044861, 18.27315712, 13.79166222, - 26.96515274, 32.77268982, 19.30791855, 26.16771889, 21.8395195, 12.22079182, 12.22079182, 21.8395195, - 26.16771889, 19.30791855, 32.77268982, 26.96515274, 38.00551605, 44.8817749, 23.56672287, 27.14280701, - 24.7010994, 26.94974136, 18.18262482, 41.78518295, 25.52963829, 12.35084438, 23.92583275, 29.39851189, - 22.78663635, 17.16172409, 14.08822727, 23.29167747, 43.20004654, 7.741707802, 30.1517334, 34.65544128, - 16.87238312, 20.67638779, 20.67638779, 16.87238312, 34.65544128, 30.1517334, 7.741707802, 43.20004654, - 23.29167747, 14.08822727, 17.16172409, 22.78663635, 29.39851189, 23.92583275, 12.35084438, 25.52963829, - 41.78518295, 18.18262482, 26.94974136, 24.7010994, 27.14280701, 23.56672287, 44.8817749, 38.00551605, - 27.08095169, 15.25416183, 15.25416183, 27.08095169, 34.61734009, 26.6135807, 32.98656464, 9.606899261, - 32.20135117, 34.74562454, 11.81522465, 10.8381052, 5.674238205, 17.69964981, 62.81964111, 62.81964111, - 17.69964981, 5.674238205, 10.8381052, 11.81522465, 34.74562454, 32.20135117, 9.606899261, 32.98656464, - 26.6135807, 34.61734009, 50.65113831, 52.74192429, 13.2403717, 50.32455826, 50.32455826, 13.2403717, - 52.74192429, 50.65113831, 21.19114685, 9.176017761, 9.176017761, 21.19114685, 32.93720245, 30.89264488, - 24.89771652, 20.27216721, 29.28691483, 15.03165436, 27.84318542, 34.68436432, 34.68436432, 27.84318542, - 15.03165436, 29.28691483, 20.27216721, 24.89771652, 30.89264488, 32.93720245, 20.73518944, 48.29927826, - 48.29927826, 20.73518944, 6.719681263, 17.64640999, 30.68091011, 15.46363926, 23.58017731, 20.0689621, - 39.86466217, 27.83972359, 12.83865738, 16.58363533, 13.44682693, 16.30245018, 16.30245018, 13.44682693, - 16.58363533, 12.83865738, 27.83972359, 39.86466217, 20.0689621, 23.58017731, 15.46363926, 30.68091011, - 17.64640999, 6.719681263, 27.12191391, 2.961663246, 25.25554848, 17.62779236, 22.62646866, 36.46771622, - 36.4128952, 11.50259686, 14.95877266, 21.88566017, 28.69185257, 36.83739471, 36.83739471, 28.69185257, - 21.88566017, 14.95877266, 11.50259686, 36.4128952, 36.46771622, 22.62646866, 17.62779236, 25.25554848, - 2.961663246, 27.12191391, 25.29393768, 17.32451248, 12.13477707, 25.57745552, 25.57745552, 12.13477707, - 17.32451248, 25.29393768, 44.1743927, 45.1587944, 6.422393799, 0.8557809591, 11.29298401, 22.29253197, - 10.27158737, 39.68115234, 15.76916122, 14.74081326, 14.74081326, 15.76916122, 39.68115234, 10.27158737, - 22.29253197, 11.29298401, 0.8557809591, 6.422393799, 45.1587944, 44.1743927, 1.574051857, 30.36156845, - 30.36156845, 1.574051857, 24.44804192, 52.11685562, 11.25370502, 53.2010498, 36.38677979, 28.00775719, - 9.189598083, 13.18849754, 9.053028107, 23.64361572, 15.13273144, 18.57131004, 18.57131004, 15.13273144, - 23.64361572, 9.053028107, 13.18849754, 9.189598083, 28.00775719, 36.38677979, 53.2010498, 11.25370502, - 52.11685562, 24.44804192, 21.03116989, 18.33800316, 10.88628197, 10.88628197, 18.33800316, 21.03116989, - 27.98948288, 5.415392876, 3.735046864, 20.55352974, 76.71188354, 13.2743988, 51.68177795, 25.157444, - 5.967044353, 5.967044353, 25.157444, 51.68177795, 13.2743988, 76.71188354, 20.55352974, 3.735046864, - 5.415392876, 27.98948288, 15.41703701, 25.33122826, 14.39577675, 21.77436638, 21.77436638, 14.39577675, - 25.33122826, 15.41703701, 41.75048828, 12.49152184, 21.53453445, 23.02672005, 16.51511192, 16.62403297, - 16.62403297, 16.51511192, 23.02672005, 21.53453445, 12.49152184, 41.75048828, 17.99378586, 30.66189003, - 68.10175323, 16.0703907, 9.457947731, 35.68981171, 32.52541351, 26.23055077, 29.48114586, 39.52045441, - 4.838356018, 15.79981232, 15.79981232, 4.838356018, 39.52045441, 29.48114586, 26.23055077, 32.52541351, - 35.68981171, 9.457947731, 16.0703907, 68.10175323, 30.66189003, 17.99378586, 28.65183258, 28.65183258, - 9.338945389, 9.338945389, 25.82771492, 28.39013672, 42.37106323, 9.863635063, 13.14507198, 40.67470932, - 25.00154877, 10.50583935, 58.73340607, 32.45139313, 16.11537361, 14.03599453, 14.03599453, 16.11537361, - 32.45139313, 58.73340607, 10.50583935, 25.00154877, 40.67470932, 13.14507198, 9.863635063, 42.37106323, - 28.39013672, 25.82771492, 42.10860062, 63.0782547, 22.24442673, 20.55533981, 17.3488884, 23.1890316, - 7.247262955, 32.478405, 12.28081322, 39.57626724, 33.63458633, 34.85544968, 19.60511589, 29.59932709, - 29.59932709, 19.60511589, 34.85544968, 33.63458633, 39.57626724, 12.28081322, 32.478405, 7.247262955, - 23.1890316, 17.3488884, 20.55533981, 22.24442673, 63.0782547, 42.10860062, 28.83471489, 22.21047592, - 15.70080471, 29.11550522, 20.83918762, 2.932832956, 22.05906677, 14.52700615, 18.47239876, 21.71303177, - 21.71303177, 18.47239876, 14.52700615, 22.05906677, 2.932832956, 20.83918762, 29.11550522, 15.70080471, - 22.21047592, 28.83471489, 23.53705215, 11.36185551, 13.28255463, 13.28255463, 11.36185551, 23.53705215, - 18.28559875, 18.28559875, 28.40058899, 7.612323761, 22.1194706, 23.1740818, 34.46437836, 29.62889481, - 24.87004089, 17.90001106, 12.30208588, 12.30208588, 17.90001106, 24.87004089, 29.62889481, 34.46437836, - 23.1740818, 22.1194706, 7.612323761, 28.40058899, 19.00841522, 19.00841522, 12.9498558, 12.9498558, - 19.66072083, 5.124233723, 34.6622963, 32.34340286, 10.49704742, 14.63159561, 36.05694199, 17.36983871, - 44.99233627, 24.41031647, 23.16533279, 19.12620926, 35.04272842, 35.04272842, 19.12620926, 23.16533279, - 24.41031647, 44.99233627, 17.36983871, 36.05694199, 14.63159561, 10.49704742, 32.34340286, 34.6622963, - 5.124233723, 19.66072083, 48.9961853, 10.08076382, 4.880791664, 11.80772018, 23.24902534, 14.52608204, - 25.83365059, 10.32247543, 27.85143471, 22.59643936, 17.09150505, 17.09150505, 22.59643936, 27.85143471, - 10.32247543, 25.83365059, 14.52608204, 23.24902534, 11.80772018, 4.880791664, 10.08076382, 48.9961853, + Data sfk_e_e_expected = { + 19.73622409, 19.85599833, 13.72912952, 18.7567436, 18.7567436, 13.72912952, 19.85599833, 19.73622409, + 32.80349613, 43.77882488, 33.19361518, 33.19361518, 43.77882488, 32.80349613, 11.48587142, 46.64709949, + 13.93536133, 21.81977173, 16.97146535, 49.03789794, 49.03789794, 16.97146535, 21.81977173, 13.93536133, + 46.64709949, 11.48587142, 15.27185108, 15.26608063, 27.7955367, 34.77712919, 50.21756277, 48.46034073, + 13.67208302, 15.2759003, 24.9735954, 51.96621083, 10.82582644, 13.76046803, 13.76046803, 10.82582644, + 51.96621083, 24.9735954, 15.2759003, 13.67208302, 48.46034073, 50.21756277, 34.77712919, 27.7955367, + 15.26608063, 15.27185108, 16.81093491, 29.33480016, 5.102482939, 85.84144848, 85.84144848, 5.102482939, + 29.33480016, 16.81093491, 25.95727893, 34.50158877, 21.52643825, 21.52643825, 34.50158877, 25.95727893, + 35.0579667, 19.39619013, 38.54357824, 36.68959067, 16.29642718, 41.76596521, 39.29202881, 40.27941228, + 43.67495005, 17.53615809, 17.01120462, 14.28325607, 14.28325607, 17.01120462, 17.53615809, 43.67495005, + 40.27941228, 39.29202881, 41.76596521, 16.29642718, 36.68959067, 38.54357824, 19.39619013, 35.0579667, + 8.223339002, 16.57196508, 16.75862604, 39.18903305, 28.35930877, 14.97254748, 11.20260284, 12.45507276, + 23.81349352, 35.41850957, 6.749878719, 6.768163411, 6.768163411, 6.749878719, 35.41850957, 23.81349352, + 12.45507276, 11.20260284, 14.97254748, 28.35930877, 39.18903305, 16.75862604, 16.57196508, 8.223339002, + 23.82761065, 13.7042595, 37.05511444, 20.61174859, 28.73698196, 29.0746151, 13.5557756, 28.73126723, + 50.90294826, 12.75067342, 37.09167578, 21.69446229, 21.69446229, 37.09167578, 12.75067342, 50.90294826, + 28.73126723, 13.5557756, 29.0746151, 28.73698196, 20.61174859, 37.05511444, 13.7042595, 23.82761065, + 13.79165031, 20.25505287, 20.8287929, 22.74308659, 11.19786182, 18.27315154, 11.80154324, 12.47373847, + 41.87594528, 15.71940179, 18.91372254, 12.80999006, 47.60127717, 32.10045328, 23.97351432, 19.95431406, + 19.95431406, 23.97351432, 32.10045328, 47.60127717, 12.80999006, 18.91372254, 15.71940179, 41.87594528, + 12.47373847, 11.80154324, 18.27315154, 11.19786182, 22.74308659, 20.8287929, 20.25505287, 13.79165031, + 26.96515273, 32.77269551, 19.30793995, 26.1677214, 21.83952133, 12.22078605, 12.22078605, 21.83952133, + 26.1677214, 19.30793995, 32.77269551, 26.96515273, 27.08095415, 38.00550997, 44.88177241, 23.56671608, + 15.25416206, 27.14280968, 24.70110386, 26.94975025, 18.18262047, 41.78519622, 25.52964636, 12.35083128, + 23.92583602, 29.39852083, 22.78664347, 17.16173283, 14.08821999, 23.29167092, 43.20002531, 7.741713406, + 30.15170718, 34.6554293, 16.8723902, 20.67639441, 20.67639441, 16.8723902, 34.6554293, 30.15170718, + 7.741713406, 43.20002531, 23.29167092, 14.08821999, 17.16173283, 22.78664347, 29.39852083, 23.92583602, + 12.35083128, 25.52964636, 41.78519622, 18.18262047, 26.94975025, 24.70110386, 27.14280968, 15.25416206, + 23.56671608, 44.88177241, 38.00550997, 27.08095415, 50.65113443, 52.74192632, 34.61734664, 26.61358159, + 32.98654909, 9.606904408, 32.20135419, 34.74562824, 11.81521841, 10.83811219, 5.674239553, 17.69964142, + 62.81964564, 13.24037324, 50.32456591, 50.32456591, 13.24037324, 62.81964564, 17.69964142, 5.674239553, + 10.83811219, 11.81521841, 34.74562824, 32.20135419, 9.606904408, 32.98654909, 26.61358159, 34.61734664, + 52.74192632, 50.65113443, 20.73520402, 32.93719443, 48.2992652, 21.19114114, 30.89264227, 24.89771606, + 9.176015427, 20.27217738, 29.28691769, 15.03165356, 27.84318498, 34.68435991, 34.68435991, 27.84318498, + 15.03165356, 29.28691769, 20.27217738, 9.176015427, 24.89771606, 30.89264227, 21.19114114, 48.2992652, + 32.93719443, 20.73520402, 6.719673423, 17.64639443, 30.68090791, 15.46363667, 23.58019589, 20.06896303, + 39.86466148, 27.83970695, 12.83864635, 16.5836295, 13.44682578, 16.30245654, 16.30245654, 13.44682578, + 16.5836295, 12.83864635, 27.83970695, 39.86466148, 20.06896303, 23.58019589, 15.46363667, 30.68090791, + 17.64639443, 6.719673423, 27.12190306, 2.961662417, 25.25555306, 17.62778921, 22.62647205, 36.46771072, + 36.41291345, 11.50260765, 14.95878354, 21.88565217, 28.69185768, 36.83739298, 36.83739298, 28.69185768, + 21.88565217, 14.95878354, 11.50260765, 36.41291345, 36.46771072, 22.62647205, 17.62778921, 25.25555306, + 2.961662417, 27.12190306, 25.2939449, 17.32451202, 12.1347743, 25.57745107, 25.57745107, 12.1347743, + 17.32451202, 25.2939449, 44.17442509, 1.574050843, 24.4480595, 52.11685464, 11.25371431, 53.20105147, + 45.15880914, 36.38678262, 6.422398352, 28.00775101, 9.189605581, 0.8557792959, 13.1884991, 11.29297213, + 30.3615642, 22.29253595, 10.27159267, 39.68114611, 9.0530333, 23.64360774, 15.13274885, 18.5713053, + 15.76917237, 14.74082105, 14.74082105, 15.76917237, 18.5713053, 15.13274885, 23.64360774, 9.0530333, + 39.68114611, 10.27159267, 22.29253595, 30.3615642, 11.29297213, 13.1884991, 0.8557792959, 9.189605581, + 28.00775101, 6.422398352, 36.38678262, 45.15880914, 53.20105147, 11.25371431, 52.11685464, 24.4480595, + 1.574050843, 44.17442509, 27.9894974, 5.415396921, 3.735046095, 20.55352437, 76.7118663, 21.03118285, + 18.33800759, 13.27440504, 51.68177502, 10.886288, 25.15744523, 5.96704291, 5.96704291, 25.15744523, + 10.886288, 51.68177502, 13.27440504, 18.33800759, 21.03118285, 76.7118663, 20.55352437, 3.735046095, + 5.415396921, 27.9894974, 41.75047787, 17.99378669, 9.338950901, 30.6618937, 15.41701938, 68.10175603, + 25.3312221, 14.39577768, 12.49152746, 16.07039912, 9.45794789, 21.53452485, 28.65184481, 35.6898372, + 32.52542215, 21.77437533, 23.02671489, 16.5151115, 26.23054438, 29.48114551, 39.52044899, 4.838360356, + 15.7998075, 16.62403163, 16.62403163, 15.7998075, 4.838360356, 39.52044899, 29.48114551, 26.23054438, + 16.5151115, 23.02671489, 21.77437533, 32.52542215, 35.6898372, 28.65184481, 21.53452485, 9.45794789, + 16.07039912, 12.49152746, 14.39577768, 25.3312221, 68.10175603, 15.41701938, 30.6618937, 9.338950901, + 17.99378669, 41.75047787, 25.82771492, 42.10859089, 63.07824256, 28.83470644, 22.24442744, 28.3901066, + 42.37106543, 20.55535434, 9.863645588, 22.21047134, 15.70080799, 13.14507249, 17.34888667, 40.67473219, + 23.18903363, 29.11550879, 20.8391897, 7.247260973, 2.932829605, 22.05906284, 32.47840578, 12.28081365, + 39.57627886, 33.63458265, 14.52700906, 34.85544003, 19.6051306, 25.00155007, 18.47241552, 10.50584675, + 58.73341054, 21.71302478, 32.45140323, 29.59934056, 16.11536089, 14.03598289, 14.03598289, 16.11536089, + 29.59934056, 32.45140323, 21.71302478, 58.73341054, 10.50584675, 18.47241552, 25.00155007, 19.6051306, + 34.85544003, 14.52700906, 33.63458265, 39.57627886, 12.28081365, 32.47840578, 22.05906284, 2.932829605, + 7.247260973, 20.8391897, 29.11550879, 23.18903363, 40.67473219, 17.34888667, 13.14507249, 15.70080799, + 22.21047134, 9.863645588, 20.55535434, 42.37106543, 28.3901066, 22.24442744, 28.83470644, 63.07824256, + 42.10859089, 25.82771492, 23.53706564, 11.36185472, 13.28255343, 13.28255343, 11.36185472, 23.53706564, + 18.28557828, 28.40058949, 7.612326414, 22.11947313, 12.94986368, 23.17407632, 34.464379, 29.6288939, + 24.87003549, 17.8999986, 12.30209557, 19.00843322, 19.00843322, 12.30209557, 17.8999986, 24.87003549, + 29.6288939, 34.464379, 23.17407632, 12.94986368, 22.11947313, 7.612326414, 28.40058949, 18.28557828, + 19.66072578, 5.124230468, 48.99617149, 10.08075586, 34.66229356, 32.34339476, 10.4970495, 4.880787567, + 11.80773287, 23.24903369, 14.52608293, 14.63157956, 25.83363773, 10.32246319, 36.05696013, 17.3698187, + 27.8514048, 44.99234038, 24.41030223, 22.59644313, 23.16533397, 17.09147198, 19.12620513, 35.04273162, + 35.04273162, 19.12620513, 17.09147198, 23.16533397, 22.59644313, 24.41030223, 44.99234038, 27.8514048, + 17.3698187, 36.05696013, 10.32246319, 25.83363773, 14.63157956, 14.52608293, 23.24903369, 11.80773287, + 4.880787567, 10.4970495, 32.34339476, 34.66229356, 10.08075586, 48.99617149, 5.124230468, 19.66072578, }; - return sfk_e_e_exected; + return sfk_e_e_expected; } typename StructureFactorTests::DataC StructureFactorTests::getRhoKElec() { DataC rhok_e_expected = { - {0.5924067497, -1.491295099}, {3.584708452, -1.712368011}, {0.3997975588, -3.005949497}, - {4.994470596, -5.147814274}, {4.994470596, 5.147814274}, {0.3997975588, 3.005949497}, - {3.584708452, 1.712368011}, {0.5924067497, 1.491295099}, {7.359516144, -5.6792202}, - {4.826219082, -5.896167755}, {3.279859066, -8.152435303}, {3.279859066, 8.152435303}, - {4.826219082, 5.896167755}, {7.359516144, 5.6792202}, {2.076227188, -3.606255054}, - {3.45581913, -9.614717484}, {-1.546550393, -3.149424314}, {6.73450613, 0.4296414852}, - {4.920219421, -1.791886091}, {11.15685272, -1.166432381}, {11.15685272, 1.166432381}, - {4.920219421, 1.791886091}, {6.73450613, -0.4296414852}, {-1.546550393, 3.149424314}, - {3.45581913, 9.614717484}, {2.076227188, 3.606255054}, {0.6491305232, -5.774231911}, - {-3.71764946, -2.71548152}, {0.2622945905, -8.464838982}, {0.8365126848, -5.196321487}, - {2.131130219, -9.120963097}, {7.443614483, 0.1272249222}, {-1.302274108, 2.783902407}, - {-2.805317879, -4.100622654}, {2.166297436, 2.167853832}, {8.253002167, 1.212442398}, - {3.100903511, 0.2963767648}, {-3.347835541, -2.253051996}, {-3.347835541, 2.253051996}, - {3.100903511, -0.2963767648}, {8.253002167, -1.212442398}, {2.166297436, -2.167853832}, - {-2.805317879, 4.100622654}, {-1.302274108, -2.783902407}, {7.443614483, -0.1272249222}, - {2.131130219, 9.120963097}, {0.8365126848, 5.196321487}, {0.2622945905, 8.464838982}, - {-3.71764946, 2.71548152}, {0.6491305232, 5.774231911}, {2.391165257, -4.354510784}, - {1.974772215, -7.41988945}, {0.4369556904, -1.177869081}, {3.464332104, -12.54276276}, - {3.464332104, 12.54276276}, {0.4369556904, 1.177869081}, {1.974772215, 7.41988945}, - {2.391165257, 4.354510784}, {3.547600985, -5.061825275}, {-3.484699249, -5.007374287}, - {-2.511082172, 1.347038388}, {-2.511082172, -1.347038388}, {-3.484699249, 5.007374287}, - {3.547600985, 5.061825275}, {-4.758557796, -1.4227314}, {-3.966060162, -0.7569956779}, - {-3.966060162, 0.7569956779}, {-4.758557796, 1.4227314}, {1.031636953, -5.657271862}, - {-8.92360878, -5.387914181}, {4.195902824, -4.546901703}, {4.829262257, 3.230755568}, - {3.007032871, -5.985052109}, {-2.540019989, -6.998126984}, {2.830960274, 1.483453035}, - {1.639224529, 3.652080774}, {-4.786507607, 3.884080887}, {2.714856625, 1.799381852}, - {2.714856625, -1.799381852}, {-4.786507607, -3.884080887}, {1.639224529, -3.652080774}, - {2.830960274, -1.483453035}, {-2.540019989, 6.998126984}, {3.007032871, 5.985052109}, - {4.829262257, -3.230755568}, {4.195902824, 4.546901703}, {-8.92360878, 5.387914181}, - {1.031636953, 5.657271862}, {-2.995438814, -1.522596359}, {-3.952926636, 0.7274377346}, - {-2.676473856, -2.648072004}, {2.056577682, -2.997202396}, {6.533461571, -3.822700024}, - {-1.989242554, -3.323826075}, {-2.446074486, 0.1415935755}, {-2.390799522, -1.153463006}, - {5.994254589, 0.5641999245}, {1.587408066, -5.109902859}, {2.81265831, 3.224537611}, - {0.4621456861, -0.6620330215}, {0.4621456861, 0.6620330215}, {2.81265831, -3.224537611}, - {1.587408066, 5.109902859}, {5.994254589, -0.5641999245}, {-2.390799522, 1.153463006}, - {-2.446074486, -0.1415935755}, {-1.989242554, 3.323826075}, {6.533461571, 3.822700024}, - {2.056577682, 2.997202396}, {-2.676473856, 2.648072004}, {-3.952926636, -0.7274377346}, - {-2.995438814, 1.522596359}, {0.2932553291, 2.283790827}, {0.2932553291, -2.283790827}, - {-2.449538469, -3.938394547}, {-4.169157028, -1.420828938}, {-1.119577646, -7.335044384}, - {-3.06660223, -5.171131134}, {4.478675365, -0.9375646114}, {-2.30142498, -4.092213631}, - {0.4033448696, 7.406522274}, {-5.53929615, -4.483269691}, {1.817272425, -4.938120842}, - {-1.283513784, -1.526912689}, {-5.368692398, 0.6403012276}, {-5.368692398, -0.6403012276}, - {-1.283513784, 1.526912689}, {1.817272425, 4.938120842}, {-5.53929615, 4.483269691}, - {0.4033448696, -7.406522274}, {-2.30142498, 4.092213631}, {4.478675365, 0.9375646114}, - {-3.06660223, 5.171131134}, {-1.119577646, 7.335044384}, {-4.169157028, 1.420828938}, - {-2.449538469, 3.938394547}, {-2.349718094, -4.534374237}, {-3.258060932, -6.563598633}, - {-5.269825935, 5.625203133}, {-1.056861639, -1.715589404}, {2.943459511, 1.621193409}, - {1.507925034, -1.25841105}, {-8.943761826, -2.031452417}, {-0.2633992434, -2.200559139}, - {-1.154777408, -2.864115238}, {3.757408142, -0.1391367912}, {5.542544365, -2.473004341}, - {1.33184135, -0.4289052486}, {1.33184135, 0.4289052486}, {5.542544365, 2.473004341}, - {3.757408142, 0.1391367912}, {-1.154777408, 2.864115238}, {-0.2633992434, 2.200559139}, - {-8.943761826, 2.031452417}, {1.507925034, 1.25841105}, {2.943459511, -1.621193409}, - {-1.056861639, 1.715589404}, {-5.269825935, -5.625203133}, {-3.258060932, 6.563598633}, - {-2.349718094, 4.534374237}, {-5.006935596, -0.8101488948}, {6.134077072, 1.376995802}, - {-2.58267808, 1.947652578}, {-0.5679087043, -5.896474838}, {-0.5679087043, 5.896474838}, - {-2.58267808, -1.947652578}, {6.134077072, -1.376995802}, {-5.006935596, 0.8101488948}, - {-4.242553711, -0.148026824}, {3.14392066, -5.239214897}, {-3.501530647, 1.262228012}, - {4.789734364, 1.410614848}, {0.4787006378, 3.037798405}, {2.685522079, 2.979806185}, - {2.685522079, -2.979806185}, {0.4787006378, -3.037798405}, {4.789734364, -1.410614848}, - {-3.501530647, -1.262228012}, {3.14392066, 5.239214897}, {-4.242553711, 0.148026824}, - {-8.816467285, 2.135006428}, {-3.966232538, -10.40109634}, {-3.992070198, -2.509442091}, - {-4.318099976, 1.254590392}, {7.517472267, -0.883942306}, {1.476297617, 0.3583492041}, - {-1.905166984, -1.170188785}, {2.860048771, -1.935360193}, {-6.622910976, 1.248441696}, - {-3.721976042, -0.6532094479}, {5.397536755, -0.5902895927}, {3.959159136, 2.64208293}, - {0.2132015228, 2.653470993}, {-0.5940680504, 1.017179847}, {1.364158273, -2.555692434}, - {4.447151661, 3.147212744}, {-2.467634439, -7.81071806}, {1.248704433, 3.042328119}, - {-1.876766443, -1.636115551}, {4.225340843, 8.04101181}, {1.958802819, -2.829083681}, - {-0.5199436545, -3.344742537}, {-0.5199436545, 3.344742537}, {1.958802819, 2.829083681}, - {4.225340843, -8.04101181}, {-1.876766443, 1.636115551}, {1.248704433, -3.042328119}, - {-2.467634439, 7.81071806}, {4.447151661, -3.147212744}, {1.364158273, 2.555692434}, - {-0.5940680504, -1.017179847}, {0.2132015228, -2.653470993}, {3.959159136, -2.64208293}, - {5.397536755, 0.5902895927}, {-3.721976042, 0.6532094479}, {-6.622910976, -1.248441696}, - {2.860048771, 1.935360193}, {-1.905166984, 1.170188785}, {1.476297617, -0.3583492041}, - {7.517472267, 0.883942306}, {-4.318099976, -1.254590392}, {-3.992070198, 2.509442091}, - {-3.966232538, 10.40109634}, {-8.816467285, -2.135006428}, {-7.380677223, -2.085382462}, - {-1.813711286, -3.303716898}, {-1.813711286, 3.303716898}, {-7.380677223, 2.085382462}, - {-3.442320824, -3.390959024}, {-5.427708149, 0.8670220971}, {-1.383381367, -2.30133605}, - {-1.27065289, 0.806579113}, {-0.1855710745, -8.051383018}, {1.988223791, -8.346243858}, - {1.00059104, 2.997005463}, {-3.695013523, 1.744617939}, {1.796917796, 1.001032114}, - {-3.90969038, -0.09522914886}, {-1.423160553, -2.237792015}, {-1.423160553, 2.237792015}, - {-3.90969038, 0.09522914886}, {1.796917796, -1.001032114}, {-3.695013523, -1.744617939}, - {1.00059104, -2.997005463}, {1.988223791, 8.346243858}, {-0.1855710745, 8.051383018}, - {-1.27065289, -0.806579113}, {-1.383381367, 2.30133605}, {-5.427708149, -0.8670220971}, - {-3.442320824, 3.390959024}, {-2.299573898, 6.924650192}, {-4.531122208, -2.911784649}, - {2.221989632, -1.75119853}, {2.176891804, 10.40933418}, {2.176891804, -10.40933418}, - {2.221989632, 1.75119853}, {-4.531122208, 2.911784649}, {-2.299573898, -6.924650192}, - {-0.7874586582, -4.425065041}, {1.992164373, 3.124239445}, {1.992164373, -3.124239445}, - {-0.7874586582, 4.425065041}, {-1.798467398, 1.35413909}, {6.019507408, -0.3360600471}, - {-7.235887051, -1.991593838}, {-0.07142817974, 3.503325939}, {-1.178472519, 3.673949957}, - {-3.244167328, -1.830079556}, {-4.368251801, -3.369636059}, {-0.3029971123, -3.641766548}, - {-0.3029971123, 3.641766548}, {-4.368251801, 3.369636059}, {-3.244167328, 1.830079556}, - {-1.178472519, -3.673949957}, {-0.07142817974, -3.503325939}, {-7.235887051, 1.991593838}, - {6.019507408, 0.3360600471}, {-1.798467398, -1.35413909}, {-2.809275627, -1.857904792}, - {-4.59763813, -5.219004631}, {-4.59763813, 5.219004631}, {-2.809275627, 1.857904792}, - {-0.768925488, 2.00369072}, {1.213478804, 5.054683208}, {3.966674089, -4.715129852}, - {3.606037378, 0.1961832047}, {-5.423397064, 3.434875488}, {2.249715328, -0.3219296932}, - {3.880141735, 6.799582481}, {-0.465303421, 0.6773622036}, {-4.861494064, 3.035137892}, - {-2.970816612, 1.346918821}, {1.45413506, 3.225545168}, {-2.470086098, -1.489482999}, - {-2.470086098, 1.489482999}, {1.45413506, -3.225545168}, {-2.970816612, -1.346918821}, - {-4.861494064, -3.035137892}, {-0.465303421, -0.6773622036}, {3.880141735, -6.799582481}, - {2.249715328, 0.3219296932}, {-5.423397064, -3.434875488}, {3.606037378, -0.1961832047}, - {3.966674089, 4.715129852}, {1.213478804, -5.054683208}, {-0.768925488, -2.00369072}, - {-2.220051289, 1.512348294}, {-1.235956073, 0.7785832882}, {-5.847000122, -0.0147203207}, - {-4.717791557, 1.951827765}, {-3.773251534, -4.990011215}, {2.884654999, 3.398807526}, - {5.672742367, 0.7873437405}, {4.248654366, 2.139424801}, {-4.828884125, 0.4608916044}, - {-4.072755337, 1.278635025}, {0.2896728516, 0.2327990532}, {3.294314384, -1.094229102}, - {3.294314384, 1.094229102}, {0.2896728516, -0.2327990532}, {-4.072755337, -1.278635025}, - {-4.828884125, -0.4608916044}, {4.248654366, -2.139424801}, {5.672742367, -0.7873437405}, - {2.884654999, -3.398807526}, {-3.773251534, 4.990011215}, {-4.717791557, -1.951827765}, - {-5.847000122, 0.0147203207}, {-1.235956073, -0.7785832882}, {-2.220051289, -1.512348294}, - {0.9226903319, 4.267571449}, {-1.437251925, -3.580348253}, {0.03603422642, -1.275114536}, - {-5.739364624, -0.1097413301}, {-5.739364624, 0.1097413301}, {0.03603422642, 1.275114536}, - {-1.437251925, 3.580348253}, {0.9226903319, -4.267571449}, {-5.211256981, 7.146552086}, - {4.157069683, 6.030432701}, {-4.010327339, -1.533936262}, {-0.6967151761, -0.0959803462}, - {2.036157131, 3.429550409}, {-2.729854584, 3.902244806}, {3.364386082, 1.030713558}, - {-1.500010014, -4.306185722}, {-2.978727341, 4.799777031}, {-4.733328819, -0.2710825205}, - {-4.733328819, 0.2710825205}, {-2.978727341, -4.799777031}, {-1.500010014, 4.306185722}, - {3.364386082, -1.030713558}, {-2.729854584, -3.902244806}, {2.036157131, -3.429550409}, - {-0.6967151761, 0.0959803462}, {-4.010327339, 1.533936262}, {4.157069683, -6.030432701}, - {-5.211256981, -7.146552086}, {-0.2306147218, -0.5819837451}, {-6.305120945, -1.457084179}, - {-6.305120945, 1.457084179}, {-0.2306147218, 0.5819837451}, {-5.17535162, -0.2336061001}, - {-0.2841696143, -10.6944809}, {-2.390393257, -0.7063763142}, {1.107917547, -1.777672529}, - {5.721277237, -5.00039959}, {6.430810928, 0.4185490012}, {-1.039620161, 4.589290142}, - {4.601204872, 0.6167341471}, {2.573006153, 2.296423435}, {6.217131615, 3.523381472}, - {3.895627022, -0.699914217}, {2.557150126, -6.427192211}, {2.557150126, 6.427192211}, - {3.895627022, 0.699914217}, {6.217131615, -3.523381472}, {2.573006153, -2.296423435}, - {4.601204872, -0.6167341471}, {-1.039620161, -4.589290142}, {6.430810928, -0.4185490012}, - {5.721277237, 5.00039959}, {1.107917547, 1.777672529}, {-2.390393257, 0.7063763142}, - {-0.2841696143, 10.6944809}, {-5.17535162, 0.2336061001}, {-2.54470849, -4.587264538}, - {-1.740908504, -3.925166845}, {-0.158428967, 2.498699665}, {-0.158428967, -2.498699665}, - {-1.740908504, 3.925166845}, {-2.54470849, 4.587264538}, {-6.729282379, 0.1392500401}, - {-1.508695841, -0.7561137676}, {-1.462480307, 0.6218969226}, {-0.321264863, -0.7247383595}, - {8.637511253, 0.7257275581}, {-0.9631168246, 1.153114796}, {-3.088907242, 8.718103409}, - {4.214176178, -1.945542574}, {-3.311136723, 0.9504836202}, {-3.311136723, -0.9504836202}, - {4.214176178, 1.945542574}, {-3.088907242, -8.718103409}, {-0.9631168246, -1.153114796}, - {8.637511253, -0.7257275581}, {-0.321264863, 0.7247383595}, {-1.462480307, -0.6218969226}, - {-1.508695841, 0.7561137676}, {-6.729282379, -0.1392500401}, {0.200414896, -0.8899208307}, - {-3.520216942, -2.698538303}, {-1.002582073, 0.08162379265}, {-2.358664274, -2.249558926}, - {-2.358664274, 2.249558926}, {-1.002582073, -0.08162379265}, {-3.520216942, 2.698538303}, - {0.200414896, 0.8899208307}, {-3.408019781, 8.709181786}, {2.158164024, -0.1445958614}, - {2.64282155, 4.411319733}, {-0.4583158493, 2.501485348}, {-0.424772501, 0.7248215675}, - {-3.711930752, -0.3703078032}, {-3.711930752, 0.3703078032}, {-0.424772501, -0.7248215675}, - {-0.4583158493, -2.501485348}, {2.64282155, -4.411319733}, {2.158164024, 0.1445958614}, - {-3.408019781, -8.709181786}, {-1.891610861, 6.444361687}, {-0.02526116371, -2.683085442}, - {7.09794426, -0.2332104445}, {-2.015702248, 3.50109911}, {3.243085146, -1.314267516}, - {2.156584501, 0.4628716707}, {3.525612593, 5.440950394}, {1.228835583, -0.3453999162}, - {-0.478734374, 8.110942841}, {-4.417645931, 3.435180187}, {-0.3485159278, 1.372372866}, - {-0.2073709965, -0.07035624981}, {-0.2073709965, 0.07035624981}, {-0.3485159278, -1.372372866}, - {-4.417645931, -3.435180187}, {-0.478734374, -8.110942841}, {1.228835583, 0.3453999162}, - {3.525612593, -5.440950394}, {2.156584501, -0.4628716707}, {3.243085146, 1.314267516}, - {-2.015702248, -3.50109911}, {7.09794426, 0.2332104445}, {-0.02526116371, 2.683085442}, - {-1.891610861, -6.444361687}, {3.285906792, -6.027932167}, {3.285906792, 6.027932167}, - {-1.367059708, -2.100066662}, {-1.367059708, 2.100066662}, {3.421066761, 5.951356888}, - {0.9868799448, -1.311420441}, {-1.627541304, 5.462136269}, {-3.990864277, 1.102679849}, - {1.300173998, 0.7606943846}, {8.343988419, -0.8481897116}, {-1.63301301, 1.46787715}, - {-1.652385354, 2.130233288}, {6.521931171, 4.971187592}, {-1.634993196, -6.445318222}, - {-1.000563025, 6.159612179}, {-4.145616531, -0.2669619322}, {-4.145616531, 0.2669619322}, - {-1.000563025, -6.159612179}, {-1.634993196, 6.445318222}, {6.521931171, -4.971187592}, - {-1.652385354, -2.130233288}, {-1.63301301, -1.46787715}, {8.343988419, 0.8481897116}, - {1.300173998, -0.7606943846}, {-3.990864277, -1.102679849}, {-1.627541304, -5.462136269}, - {0.9868799448, 1.311420441}, {3.421066761, -5.951356888}, {-7.250906944, 4.418672562}, - {-4.982307434, -7.65216732}, {1.850622296, -2.512521744}, {-1.400040746, 1.869890451}, - {5.249089718, -2.353768826}, {-0.2356463671, 2.200823784}, {1.352718472, -0.7274159789}, - {4.983772278, 6.636553764}, {-2.008724928, 3.623922348}, {-4.296545029, -0.5656754971}, - {2.036823273, 1.873584747}, {6.78609848, -5.275559425}, {1.594316721, -0.8120986223}, - {3.135821342, 2.274452925}, {3.135821342, -2.274452925}, {1.594316721, 0.8120986223}, - {6.78609848, 5.275559425}, {2.036823273, -1.873584747}, {-4.296545029, 0.5656754971}, - {-2.008724928, -3.623922348}, {4.983772278, -6.636553764}, {1.352718472, 0.7274159789}, - {-0.2356463671, -2.200823784}, {5.249089718, 2.353768826}, {-1.400040746, -1.869890451}, - {1.850622296, 2.512521744}, {-4.982307434, 7.65216732}, {-7.250906944, -4.418672562}, - {-5.363657951, 1.124087811}, {-1.567838907, 3.671515465}, {2.337051153, -5.62945652}, - {6.950581551, -1.243847132}, {2.125556469, 3.765841961}, {0.9406456947, 1.451031923}, - {-2.119028568, -1.426778078}, {4.993509293, -2.385100842}, {-1.50265789, -2.871356726}, - {6.083207607, 1.23132658}, {6.083207607, -1.23132658}, {-1.50265789, 2.871356726}, - {4.993509293, 2.385100842}, {-2.119028568, 1.426778078}, {0.9406456947, -1.451031923}, - {2.125556469, -3.765841961}, {6.950581551, 1.243847132}, {2.337051153, 5.62945652}, - {-1.567838907, -3.671515465}, {-5.363657951, -1.124087811}, {-2.053162098, -1.063462973}, - {-1.678141475, 3.762696266}, {0.0007864236832, 1.058095455}, {0.0007864236832, -1.058095455}, - {-1.678141475, -3.762696266}, {-2.053162098, 1.063462973}, {2.29822731, 1.357947469}, - {2.29822731, -1.357947469}, {2.836388111, 5.724801064}, {-0.5488714576, -1.98086977}, - {1.778634548, 2.7628932}, {-3.494198561, -1.180356979}, {3.874499798, -1.15323329}, - {5.613768578, -6.254772186}, {-2.863878012, 3.081430912}, {0.6554439664, 4.137325287}, - {4.995419502, -0.2541038394}, {4.995419502, 0.2541038394}, {0.6554439664, -4.137325287}, - {-2.863878012, -3.081430912}, {5.613768578, 6.254772186}, {3.874499798, 1.15323329}, - {-3.494198561, 1.180356979}, {1.778634548, -2.7628932}, {-0.5488714576, 1.98086977}, - {2.836388111, -5.724801064}, {4.070603371, -4.396873474}, {4.070603371, 4.396873474}, - {2.980705261, 1.138022184}, {2.980705261, -1.138022184}, {3.674338818, 1.130653381}, - {0.03487324715, 0.733140707}, {0.9849895239, -4.404793262}, {0.1247190237, 3.179280758}, - {0.0411696434, -1.996884108}, {3.971215248, 1.024628162}, {2.22546649, 2.114651203}, - {0.8446412086, -1.650652885}, {-11.17575455, 1.761610866}, {-2.91852355, 5.771692276}, - {-2.780082464, -4.580620766}, {-1.15428555, 3.912901878}, {-1.566892385, 5.624961853}, - {-1.566892385, -5.624961853}, {-1.15428555, -3.912901878}, {-2.780082464, 4.580620766}, - {-2.91852355, -5.771692276}, {-11.17575455, -1.761610866}, {0.8446412086, 1.650652885}, - {2.22546649, -2.114651203}, {3.971215248, -1.024628162}, {0.0411696434, 1.996884108}, - {0.1247190237, -3.179280758}, {0.9849895239, 4.404793262}, {0.03487324715, -0.733140707}, - {3.674338818, -1.130653381}, {-8.700888634, 2.00682354}, {-0.03683960438, -4.234910011}, - {-1.239307284, 1.285633802}, {3.913101912, 1.040015101}, {3.92149353, -0.4837493896}, - {-1.704045177, -1.159303665}, {2.514077187, -4.360420227}, {0.7877758145, 2.334750891}, - {-2.096787453, 0.8956620693}, {-1.136339307, 1.45267415}, {0.2019445896, -1.723826885}, - {0.2019445896, 1.723826885}, {-1.136339307, -1.45267415}, {-2.096787453, -0.8956620693}, - {0.7877758145, -2.334750891}, {2.514077187, 4.360420227}, {-1.704045177, 1.159303665}, - {3.92149353, 0.4837493896}, {3.913101912, -1.040015101}, {-1.239307284, -1.285633802}, - {-0.03683960438, 4.234910011}, {-8.700888634, -2.00682354}, + {0.592406798, -1.491295186}, {3.584709528, -1.712368125}, {0.399798283, -3.005949682}, + {4.994471241, -5.147815188}, {4.994471241, 5.147815188}, {0.399798283, 3.005949682}, + {3.584709528, 1.712368125}, {0.592406798, 1.491295186}, {7.35951582, -5.679219609}, + {4.826218866, -5.896167806}, {3.279859285, -8.152435266}, {3.279859285, 8.152435266}, + {4.826218866, 5.896167806}, {7.35951582, 5.679219609}, {2.076227417, -3.606254855}, + {3.455819328, -9.61471789}, {-1.546549519, -3.149424913}, {6.734505637, 0.4296410754}, + {4.920218971, -1.791886372}, {11.15685334, -1.16643297}, {11.15685334, 1.16643297}, + {4.920218971, 1.791886372}, {6.734505637, -0.4296410754}, {-1.546549519, 3.149424913}, + {3.455819328, 9.61471789}, {2.076227417, 3.606254855}, {0.6491298846, -5.774231534}, + {-3.717649003, -2.715481216}, {0.2622958672, -8.464838415}, {0.8365136061, -5.196322223}, + {2.131132444, -9.120963381}, {7.443614204, 0.1272261529}, {-1.302274203, 2.78390178}, + {-2.805319493, -4.100622859}, {2.166298591, 2.167854305}, {8.253003166, 1.212442916}, + {3.100903101, 0.2963773422}, {-3.347834579, -2.253051752}, {-3.347834579, 2.253051752}, + {3.100903101, -0.2963773422}, {8.253003166, -1.212442916}, {2.166298591, -2.167854305}, + {-2.805319493, 4.100622859}, {-1.302274203, -2.78390178}, {7.443614204, -0.1272261529}, + {2.131132444, 9.120963381}, {0.8365136061, 5.196322223}, {0.2622958672, 8.464838415}, + {-3.717649003, 2.715481216}, {0.6491298846, 5.774231534}, {2.391165913, -4.354511371}, + {1.974771744, -7.41989072}, {0.4369552801, -1.177869446}, {3.464333342, -12.54276112}, + {3.464333342, 12.54276112}, {0.4369552801, 1.177869446}, {1.974771744, 7.41989072}, + {2.391165913, 4.354511371}, {3.54760182, -5.061825456}, {-3.484698012, -5.007374793}, + {-2.511083868, 1.34703759}, {-2.511083868, -1.34703759}, {-3.484698012, 5.007374793}, + {3.54760182, 5.061825456}, {-4.758557122, -1.422732684}, {1.031636721, -5.65727216}, + {-3.966058, -0.7569951138}, {-8.923606409, -5.387915635}, {4.195903639, -4.546900414}, + {4.829261752, 3.230756396}, {3.00703451, -5.985052738}, {-2.540018671, -6.998123915}, + {2.830959272, 1.483453125}, {1.639223839, 3.652082621}, {-4.786506892, 3.88408032}, + {2.714855164, 1.799382255}, {2.714855164, -1.799382255}, {-4.786506892, -3.88408032}, + {1.639223839, -3.652082621}, {2.830959272, -1.483453125}, {-2.540018671, 6.998123915}, + {3.00703451, 5.985052738}, {4.829261752, -3.230756396}, {4.195903639, 4.546900414}, + {-8.923606409, 5.387915635}, {-3.966058, 0.7569951138}, {1.031636721, 5.65727216}, + {-4.758557122, 1.422732684}, {-2.995440093, -1.522595608}, {-3.952925704, 0.7274383407}, + {-2.676473452, -2.648075271}, {2.056578256, -2.997203116}, {6.533462259, -3.822700937}, + {-1.989243991, -3.323825628}, {-2.446076959, 0.1415913832}, {-2.390803861, -1.153463723}, + {5.994254208, 0.5642015223}, {1.587407905, -5.109903138}, {2.812657793, 3.224537665}, + {0.4621462996, -0.6620321102}, {0.4621462996, 0.6620321102}, {2.812657793, -3.224537665}, + {1.587407905, 5.109903138}, {5.994254208, -0.5642015223}, {-2.390803861, 1.153463723}, + {-2.446076959, -0.1415913832}, {-1.989243991, 3.323825628}, {6.533462259, 3.822700937}, + {2.056578256, 2.997203116}, {-2.676473452, 2.648075271}, {-3.952925704, -0.7274383407}, + {-2.995440093, 1.522595608}, {-2.449538493, -3.938393781}, {-4.169156604, -1.420828885}, + {-1.119580507, -7.335045086}, {-3.066600802, -5.171130554}, {0.2932524973, 2.283789912}, + {4.478674004, -0.9375669032}, {-2.301423115, -4.09221705}, {0.4033449274, 7.406520527}, + {-5.539294787, -4.483272232}, {1.817272465, -4.938120778}, {-1.283513076, -1.526913966}, + {-5.36869316, 0.6403014546}, {-5.36869316, -0.6403014546}, {-1.283513076, 1.526913966}, + {1.817272465, 4.938120778}, {-5.539294787, 4.483272232}, {0.4033449274, -7.406520527}, + {-2.301423115, 4.09221705}, {4.478674004, 0.9375669032}, {0.2932524973, -2.283789912}, + {-3.066600802, 5.171130554}, {-1.119580507, 7.335045086}, {-4.169156604, 1.420828885}, + {-2.449538493, 3.938393781}, {-5.006932432, -0.8101500245}, {-2.349720169, -4.534374178}, + {-3.258060361, -6.563597928}, {-5.269822396, 5.625207649}, {-1.056858806, -1.715591085}, + {6.134076968, 1.376995278}, {2.943460611, 1.621194225}, {1.507924639, -1.258411608}, + {-8.943758932, -2.031447357}, {-0.2633985137, -2.200559112}, {-1.154778987, -2.864115247}, + {3.757407189, -0.1391363848}, {5.542543097, -2.473003635}, {-2.582678602, 1.947651329}, + {1.331840432, -0.4289061372}, {-0.5679093939, -5.896474543}, {-0.5679093939, 5.896474543}, + {1.331840432, 0.4289061372}, {-2.582678602, -1.947651329}, {5.542543097, 2.473003635}, + {3.757407189, 0.1391363848}, {-1.154778987, 2.864115247}, {-0.2633985137, 2.200559112}, + {-8.943758932, 2.031447357}, {1.507924639, 1.258411608}, {2.943460611, -1.621194225}, + {6.134076968, -1.376995278}, {-1.056858806, 1.715591085}, {-5.269822396, -5.625207649}, + {-3.258060361, 6.563597928}, {-2.349720169, 4.534374178}, {-5.006932432, 0.8101500245}, + {-4.24255231, -0.1480280499}, {3.143919972, -5.239215144}, {-3.501534887, 1.262224944}, + {4.789734698, 1.410612351}, {0.4787001977, 3.037797639}, {2.685521759, 2.97980471}, + {2.685521759, -2.97980471}, {0.4787001977, -3.037797639}, {4.789734698, -1.410612351}, + {-3.501534887, -1.262224944}, {3.143919972, 5.239215144}, {-4.24255231, 0.1480280499}, + {-7.380678066, -2.085383706}, {-8.816466109, 2.135007181}, {-3.966232505, -10.40109555}, + {-3.992069887, -2.509440937}, {-1.813708042, -3.303717474}, {-4.318100914, 1.254589646}, + {7.517474013, -0.8839434329}, {1.476300926, 0.358348573}, {-1.905166984, -1.170186506}, + {2.860050335, -1.935362053}, {-6.622911753, 1.248440663}, {-3.721973617, -0.6532077262}, + {5.397538518, -0.5902887119}, {3.959158336, 2.642083766}, {0.2132040375, 2.653470909}, + {-0.5940686958, 1.017178234}, {1.364157636, -2.555690312}, {4.447149791, 3.147212206}, + {-2.467632173, -7.81071708}, {1.24870552, 3.042326478}, {-1.87676403, -1.636112745}, + {4.225338673, 8.041012543}, {1.95879835, -2.829085504}, {-0.5199405703, -3.344744312}, + {-0.5199405703, 3.344744312}, {1.95879835, 2.829085504}, {4.225338673, -8.041012543}, + {-1.87676403, 1.636112745}, {1.24870552, -3.042326478}, {-2.467632173, 7.81071708}, + {4.447149791, -3.147212206}, {1.364157636, 2.555690312}, {-0.5940686958, -1.017178234}, + {0.2132040375, -2.653470909}, {3.959158336, -2.642083766}, {5.397538518, 0.5902887119}, + {-3.721973617, 0.6532077262}, {-6.622911753, -1.248440663}, {2.860050335, 1.935362053}, + {-1.905166984, 1.170186506}, {1.476300926, -0.358348573}, {7.517474013, 0.8839434329}, + {-4.318100914, -1.254589646}, {-1.813708042, 3.303717474}, {-3.992069887, 2.509440937}, + {-3.966232505, 10.40109555}, {-8.816466109, -2.135007181}, {-7.380678066, 2.085383706}, + {-2.299573226, 6.924648483}, {-4.531123402, -2.911786594}, {-3.442322069, -3.39095917}, + {-5.42771034, 0.8670229623}, {-1.383381222, -2.301335509}, {-1.270652673, 0.8065787485}, + {-0.1855711587, -8.051383619}, {1.988225715, -8.346244765}, {1.000589918, 2.997004988}, + {-3.695016123, 1.74461724}, {1.796915956, 1.00103223}, {-3.909689116, -0.09522796128}, + {-1.423160253, -2.237793001}, {2.2219887, -1.751197772}, {2.17689576, 10.40933387}, + {2.17689576, -10.40933387}, {2.2219887, 1.751197772}, {-1.423160253, 2.237793001}, + {-3.909689116, 0.09522796128}, {1.796915956, -1.00103223}, {-3.695016123, -1.74461724}, + {1.000589918, -2.997004988}, {1.988225715, 8.346244765}, {-0.1855711587, 8.051383619}, + {-1.270652673, -0.8065787485}, {-1.383381222, 2.301335509}, {-5.42771034, -0.8670229623}, + {-3.442322069, 3.39095917}, {-4.531123402, 2.911786594}, {-2.299573226, -6.924648483}, + {-2.809274407, -1.8579053}, {-1.798467547, 1.354139585}, {-4.597633615, -5.219009215}, + {-0.7874598068, -4.425063848}, {6.0195082, -0.3360570266}, {-7.235886266, -1.991595514}, + {1.992164338, 3.124241117}, {-0.07142873284, 3.503326493}, {-1.178474547, 3.673951749}, + {-3.244168323, -1.830077893}, {-4.368251933, -3.369634613}, {-0.3029959504, -3.641767663}, + {-0.3029959504, 3.641767663}, {-4.368251933, 3.369634613}, {-3.244168323, 1.830077893}, + {-1.178474547, -3.673951749}, {-0.07142873284, -3.503326493}, {1.992164338, -3.124241117}, + {-7.235886266, 1.991595514}, {6.0195082, 0.3360570266}, {-0.7874598068, 4.425063848}, + {-4.597633615, 5.219009215}, {-1.798467547, -1.354139585}, {-2.809274407, 1.8579053}, + {-0.7689257185, 2.003687953}, {1.213473957, 5.054683181}, {3.96667443, -4.71513151}, + {3.606040459, 0.1961809201}, {-5.423399108, 3.434874185}, {2.249716171, -0.321927977}, + {3.88014528, 6.799582179}, {-0.4653070824, 0.6773665182}, {-4.861488694, 3.035141588}, + {-2.970815833, 1.34691903}, {1.454137184, 3.225546259}, {-2.470089619, -1.489483054}, + {-2.470089619, 1.489483054}, {1.454137184, -3.225546259}, {-2.970815833, -1.34691903}, + {-4.861488694, -3.035141588}, {-0.4653070824, -0.6773665182}, {3.88014528, -6.799582179}, + {2.249716171, 0.321927977}, {-5.423399108, -3.434874185}, {3.606040459, -0.1961809201}, + {3.96667443, 4.71513151}, {1.213473957, -5.054683181}, {-0.7689257185, -2.003687953}, + {-2.220049985, 1.512345934}, {-1.235954911, 0.7785846187}, {-5.846999645, -0.01472071938}, + {-4.717792777, 1.951825527}, {-3.773251234, -4.9900085}, {2.884653931, 3.398807743}, + {5.672744372, 0.787344791}, {4.248656017, 2.139426899}, {-4.828886929, 0.4608908982}, + {-4.072752682, 1.278637543}, {0.2896719136, 0.2327966304}, {3.294310923, -1.094228265}, + {3.294310923, 1.094228265}, {0.2896719136, -0.2327966304}, {-4.072752682, -1.278637543}, + {-4.828886929, -0.4608908982}, {4.248656017, -2.139426899}, {5.672744372, -0.787344791}, + {2.884653931, -3.398807743}, {-3.773251234, 4.9900085}, {-4.717792777, -1.951825527}, + {-5.846999645, 0.01472071938}, {-1.235954911, -0.7785846187}, {-2.220049985, -1.512345934}, + {0.9226881039, 4.267571517}, {-1.437252509, -3.580346254}, {0.03603471236, -1.27511536}, + {-5.739364373, -0.109743273}, {-5.739364373, 0.109743273}, {0.03603471236, 1.27511536}, + {-1.437252509, 3.580346254}, {0.9226881039, -4.267571517}, {-5.211255342, 7.146559907}, + {-0.2306151078, -0.5819836338}, {-5.175352924, -0.2336025647}, {-0.2841681075, -10.69448026}, + {-2.390393553, -0.7063818584}, {1.107914962, -1.777668095}, {4.157074405, 6.030434262}, + {5.721280227, -5.000397836}, {-4.010330302, -1.533930447}, {6.430809793, 0.4185511678}, + {-1.039620376, 4.58929113}, {-0.6967155093, -0.09597996132}, {4.601202499, 0.616736122}, + {2.036152359, 3.429550053}, {-6.305119284, -1.457079695}, {-2.729853685, 3.902248331}, + {3.36438765, 1.030714618}, {-1.500014677, -4.306188528}, {2.573007947, 2.296425084}, + {6.217131676, 3.523376411}, {3.895629486, -0.6999141065}, {2.557151377, -6.427190985}, + {-2.97872992, 4.799777566}, {-4.733330706, -0.2710847219}, {-4.733330706, 0.2710847219}, + {-2.97872992, -4.799777566}, {2.557151377, 6.427190985}, {3.895629486, 0.6999141065}, + {6.217131676, -3.523376411}, {2.573007947, -2.296425084}, {-1.500014677, 4.306188528}, + {3.36438765, -1.030714618}, {-2.729853685, -3.902248331}, {-6.305119284, 1.457079695}, + {2.036152359, -3.429550053}, {4.601202499, -0.616736122}, {-0.6967155093, 0.09597996132}, + {-1.039620376, -4.58929113}, {6.430809793, -0.4185511678}, {-4.010330302, 1.533930447}, + {5.721280227, 5.000397836}, {4.157074405, -6.030434262}, {1.107914962, 1.777668095}, + {-2.390393553, 0.7063818584}, {-0.2841681075, 10.69448026}, {-5.175352924, 0.2336025647}, + {-0.2306151078, 0.5819836338}, {-5.211255342, -7.146559907}, {-6.729282937, 0.1392473302}, + {-1.508695167, -0.75611098}, {-1.462483193, 0.6218986152}, {-0.3212649158, -0.7247357119}, + {8.637510488, 0.7257245863}, {-2.54471011, -4.587263955}, {-1.740905917, -3.925169868}, + {-0.9631188028, 1.153119105}, {-3.088903107, 8.718104082}, {-0.1584290231, 2.498698288}, + {4.214175806, -1.945541303}, {-3.31113648, 0.9504815628}, {-3.31113648, -0.9504815628}, + {4.214175806, 1.945541303}, {-0.1584290231, -2.498698288}, {-3.088903107, -8.718104082}, + {-0.9631188028, -1.153119105}, {-1.740905917, 3.925169868}, {-2.54471011, 4.587263955}, + {8.637510488, -0.7257245863}, {-0.3212649158, 0.7247357119}, {-1.462483193, -0.6218986152}, + {-1.508695167, 0.75611098}, {-6.729282937, -0.1392473302}, {-3.408021656, 8.709178999}, + {-1.891611669, 6.44436254}, {-1.367061208, -2.100065892}, {-0.02526274221, -2.68308627}, + {0.2004189036, -0.8899217728}, {7.097950078, -0.2332078497}, {-3.520216696, -2.698537345}, + {-1.002585137, 0.08162308103}, {2.158168023, -0.144596563}, {-2.015705281, 3.501098672}, + {3.243088509, -1.314268813}, {2.642816236, 4.411320139}, {3.285915403, -6.027933385}, + {2.156584325, 0.4628729323}, {3.525612941, 5.440950026}, {-2.358661202, -2.249559541}, + {-0.4583178929, 2.501486706}, {-0.4247704512, 0.7248216483}, {1.228833828, -0.3453960927}, + {-0.4787313482, 8.11094345}, {-4.417644143, 3.435177791}, {-0.3485159775, 1.372374762}, + {-0.207369571, -0.07035884482}, {-3.711929499, -0.3703085192}, {-3.711929499, 0.3703085192}, + {-0.207369571, 0.07035884482}, {-0.3485159775, -1.372374762}, {-4.417644143, -3.435177791}, + {-0.4787313482, -8.11094345}, {1.228833828, 0.3453960927}, {-0.4247704512, -0.7248216483}, + {-0.4583178929, -2.501486706}, {-2.358661202, 2.249559541}, {3.525612941, -5.440950026}, + {2.156584325, -0.4628729323}, {3.285915403, 6.027933385}, {2.642816236, -4.411320139}, + {3.243088509, 1.314268813}, {-2.015705281, -3.501098672}, {2.158168023, 0.144596563}, + {-1.002585137, -0.08162308103}, {-3.520216696, 2.698537345}, {7.097950078, 0.2332078497}, + {0.2004189036, 0.8899217728}, {-0.02526274221, 2.68308627}, {-1.367061208, 2.100065892}, + {-1.891611669, -6.44436254}, {-3.408021656, -8.709178999}, {3.421065653, 5.95135339}, + {-7.250908142, 4.418667041}, {-4.982302745, -7.652168385}, {-5.363657005, 1.124083756}, + {1.850622328, -2.512520559}, {0.9868845851, -1.311419734}, {-1.627539269, 5.462132253}, + {-1.400040134, 1.869893027}, {-3.990865817, 1.102683091}, {-1.567844672, 3.67151263}, + {2.337050097, -5.629459035}, {1.300172468, 0.7606942941}, {5.249089835, -2.353762846}, + {8.343988604, -0.8481884228}, {-0.2356472914, 2.200821018}, {6.950581555, -1.243846454}, + {2.125556836, 3.765840528}, {1.35271916, -0.7274177627}, {0.9406424229, 1.451027264}, + {-2.119029197, -1.426777576}, {4.983770388, 6.636555814}, {-2.008725517, 3.623922395}, + {-4.296545309, -0.5656753318}, {2.036823439, 1.873586424}, {4.993508346, -2.385104517}, + {6.786094192, -5.275563531}, {1.594318128, -0.8120991502}, {-1.633011809, 1.467880629}, + {-1.502656956, -2.871359412}, {-1.652388013, 2.130237304}, {6.521933219, 4.971187201}, + {6.083207038, 1.231322834}, {-1.63499172, -6.445316399}, {3.135819197, 2.2744509}, + {-1.000563576, 6.159609873}, {-4.145614776, -0.2669631771}, {-4.145614776, 0.2669631771}, + {-1.000563576, -6.159609873}, {3.135819197, -2.2744509}, {-1.63499172, 6.445316399}, + {6.083207038, -1.231322834}, {6.521933219, -4.971187201}, {-1.652388013, -2.130237304}, + {-1.502656956, 2.871359412}, {-1.633011809, -1.467880629}, {1.594318128, 0.8120991502}, + {6.786094192, 5.275563531}, {4.993508346, 2.385104517}, {2.036823439, -1.873586424}, + {-4.296545309, 0.5656753318}, {-2.008725517, -3.623922395}, {4.983770388, -6.636555814}, + {-2.119029197, 1.426777576}, {0.9406424229, -1.451027264}, {1.35271916, 0.7274177627}, + {2.125556836, -3.765840528}, {6.950581555, 1.243846454}, {-0.2356472914, -2.200821018}, + {8.343988604, 0.8481884228}, {5.249089835, 2.353762846}, {1.300172468, -0.7606942941}, + {2.337050097, 5.629459035}, {-1.567844672, -3.67151263}, {-3.990865817, -1.102683091}, + {-1.400040134, -1.869893027}, {-1.627539269, -5.462132253}, {0.9868845851, 1.311419734}, + {1.850622328, 2.512520559}, {-5.363657005, -1.124083756}, {-4.982302745, 7.652168385}, + {-7.250908142, -4.418667041}, {3.421065653, -5.95135339}, {-2.053163131, -1.063464961}, + {-1.678143372, 3.762696395}, {0.0007866869675, 1.058095833}, {0.0007866869675, -1.058095833}, + {-1.678143372, -3.762696395}, {-2.053163131, 1.063464961}, {2.298223742, 1.357939852}, + {2.836386156, 5.724801754}, {-0.5488724262, -1.980868818}, {1.778633565, 2.762895138}, + {2.980702348, 1.138034073}, {-3.4942026, -1.180358634}, {3.874499746, -1.153232635}, + {5.613769185, -6.254772222}, {-2.863877135, 3.081432594}, {0.6554451206, 4.137321163}, + {4.995420314, -0.2541026675}, {4.070608562, -4.396871913}, {4.070608562, 4.396871913}, + {4.995420314, 0.2541026675}, {0.6554451206, -4.137321163}, {-2.863877135, -3.081432594}, + {5.613769185, 6.254772222}, {3.874499746, 1.153232635}, {-3.4942026, 1.180358634}, + {2.980702348, -1.138034073}, {1.778633565, -2.762895138}, {-0.5488724262, 1.980868818}, + {2.836386156, -5.724801754}, {2.298223742, -1.357939852}, {3.674339196, 1.130651844}, + {0.0348732107, 0.7331409485}, {-8.700890383, 2.006820821}, {-0.03683957247, -4.234908131}, + {0.9849899308, -4.404792991}, {0.1247196684, 3.179279889}, {0.0411652183, -1.996882442}, + {-1.239305257, 1.285632629}, {3.913104959, 1.040016747}, {3.921497899, -0.4837490399}, + {-1.704045238, -1.159308846}, {3.971211896, 1.024632384}, {2.514078524, -4.36041809}, + {0.7877755588, 2.334749544}, {2.225466536, 2.114656851}, {0.8446410302, -1.650654313}, + {-2.096785216, 0.8956639147}, {-11.17575533, 1.761610194}, {-2.918525442, 5.771690392}, + {-1.136338954, 1.452676212}, {-2.780081271, -4.580619689}, {0.2019475458, -1.723826209}, + {-1.154288703, 3.912902228}, {-1.566893672, 5.624962971}, {-1.566893672, -5.624962971}, + {-1.154288703, -3.912902228}, {0.2019475458, 1.723826209}, {-2.780081271, 4.580619689}, + {-1.136338954, -1.452676212}, {-2.918525442, -5.771690392}, {-11.17575533, -1.761610194}, + {-2.096785216, -0.8956639147}, {0.8446410302, 1.650654313}, {2.225466536, -2.114656851}, + {0.7877755588, -2.334749544}, {2.514078524, 4.36041809}, {3.971211896, -1.024632384}, + {-1.704045238, 1.159308846}, {3.921497899, 0.4837490399}, {3.913104959, -1.040016747}, + {-1.239305257, -1.285632629}, {0.0411652183, 1.996882442}, {0.1247196684, -3.179279889}, + {0.9849899308, 4.404792991}, {-0.03683957247, 4.234908131}, {-8.700890383, -2.006820821}, + {0.0348732107, -0.7331409485}, {3.674339196, -1.130651844}, }; return rhok_e_expected; } From 05dabf0f05b38fdf50d26b0f606f30a7a9aafe61 Mon Sep 17 00:00:00 2001 From: "Peter Doak (epd)" Date: Mon, 2 Dec 2024 14:52:13 -0500 Subject: [PATCH 09/10] fix warnings. --- src/Estimators/StructureFactorEstimator.cpp | 18 ++++++++++++++---- src/Estimators/StructureFactorEstimator.h | 7 ++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Estimators/StructureFactorEstimator.cpp b/src/Estimators/StructureFactorEstimator.cpp index b16ec53ce1..d48fe2b86d 100644 --- a/src/Estimators/StructureFactorEstimator.cpp +++ b/src/Estimators/StructureFactorEstimator.cpp @@ -26,9 +26,9 @@ StructureFactorEstimator::StructureFactorEstimator(StructureFactorInput& sfi, elec_species_ = elns_.getSpeciesSet().getTotalNum(); ion_species_ = ions_.getSpeciesSet().getTotalNum(); - num_kpoints_ = pset_ions.getSimulationCell().getKLists().numk; - kshell_offsets_ = pset_ions.getSimulationCell().getKLists().kshell; - int max_kshell = kshell_offsets_.size() - 1; + num_kpoints_ = pset_ions.getSimulationCell().getKLists().numk; + kshell_offsets_ = pset_ions.getSimulationCell().getKLists().kshell; + int max_kshell = kshell_offsets_.size() - 1; rhok_tot_r_.resize(num_kpoints_); rhok_tot_i_.resize(num_kpoints_); @@ -49,6 +49,12 @@ StructureFactorEstimator::StructureFactorEstimator(StructureFactorInput& sfi, }; } +StructureFactorEstimator::StructureFactorEstimator(const StructureFactorEstimator& sfe, DataLocality dl) + : qmcplusplus::StructureFactorEstimator(sfe) +{ + data_locality_ = dl; +} + void StructureFactorEstimator::accumulate(const RefVector& walkers, const RefVector& psets, const RefVector& wfns, @@ -109,6 +115,10 @@ void StructureFactorEstimator::collect(const RefVector& type_er void StructureFactorEstimator::startBlock(int steps) {} -UPtr StructureFactorEstimator::spawnCrowdClone() const {} +UPtr StructureFactorEstimator::spawnCrowdClone() const +{ + UPtr spawn(std::make_unique(*this, data_locality_)); + return spawn; +} } // namespace qmcplusplus diff --git a/src/Estimators/StructureFactorEstimator.h b/src/Estimators/StructureFactorEstimator.h index eda1bf5d15..f4d111f6f9 100644 --- a/src/Estimators/StructureFactorEstimator.h +++ b/src/Estimators/StructureFactorEstimator.h @@ -36,6 +36,8 @@ class StructureFactorEstimator : public OperatorEstBase ParticleSet& pset_elec, DataLocality data_locality = DataLocality::crowd); + StructureFactorEstimator(const StructureFactorEstimator& sfe, DataLocality dl); + /** accumulate 1 or more walkers of EnergyDensity samples */ void accumulate(const RefVector& walkers, @@ -51,16 +53,19 @@ class StructureFactorEstimator : public OperatorEstBase UPtr spawnCrowdClone() const override; void registerOperatorEstimator(hdf_archive& file) override; - void write(hdf_archive& file); + void write(hdf_archive& file) override; void collect(const RefVector& type_erased_operator_estimators) override; long long getNumKPoints() { return num_kpoints_; } + protected: // Testing functions const Vector& getSKElecElec() const { return sfk_e_e_; } const Vector>& getRhoKElec() const { return rhok_e_; } private: + StructureFactorEstimator(const StructureFactorEstimator& obdm) = default; + int elec_species_; ParticleSet& elns_; int ion_species_; From d0340c155b0da56b02d569ce611ee81631cf67aa Mon Sep 17 00:00:00 2001 From: "Peter Doak (epd)" Date: Mon, 2 Dec 2024 15:59:59 -0500 Subject: [PATCH 10/10] improvements suggested in review const, forward decl, naming --- src/Estimators/StructureFactorEstimator.cpp | 22 +++++++++++-------- src/Estimators/StructureFactorEstimator.h | 20 +++++++++-------- .../tests/GenerateRandomParticleSets.cpp | 2 +- .../tests/test_StructureFactorEstimator.cpp | 1 + src/type_traits/tests/test_template_types.cpp | 4 +--- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/Estimators/StructureFactorEstimator.cpp b/src/Estimators/StructureFactorEstimator.cpp index d48fe2b86d..16a100fe4b 100644 --- a/src/Estimators/StructureFactorEstimator.cpp +++ b/src/Estimators/StructureFactorEstimator.cpp @@ -10,21 +10,25 @@ ////////////////////////////////////////////////////////////////////////////////////// #include "StructureFactorEstimator.h" +#include "StructureFactorInput.h" #include "ParticleSet.h" #include namespace qmcplusplus { -StructureFactorEstimator::StructureFactorEstimator(StructureFactorInput& sfi, - ParticleSet& pset_ions, - ParticleSet& pset_elec, +StructureFactorEstimator::StructureFactorEstimator(const StructureFactorInput& sfi, + const ParticleSet& pset_ions, + const ParticleSet& pset_elec, DataLocality data_locality) - : OperatorEstBase(data_locality), elns_(pset_elec), ions_(pset_ions) + : OperatorEstBase(data_locality), + input_(sfi), + elns_(pset_elec), + elec_num_species_(elns_.getSpeciesSet().getTotalNum()), + ions_(pset_ions), + ion_num_species_(ions_.getSpeciesSet().getTotalNum()) { - my_name_ = "StructureFactorEstimator"; - elec_species_ = elns_.getSpeciesSet().getTotalNum(); - ion_species_ = ions_.getSpeciesSet().getTotalNum(); + my_name_ = "StructureFactorEstimator"; num_kpoints_ = pset_ions.getSimulationCell().getKLists().numk; kshell_offsets_ = pset_ions.getSimulationCell().getKLists().kshell; @@ -68,10 +72,10 @@ void StructureFactorEstimator::accumulate(const RefVector& walkers, //sum over species std::copy(psets[iw].get().getSK().rhok_r[0], psets[iw].get().getSK().rhok_r[0] + num_kpoints_, rhok_tot_r_.begin()); std::copy(psets[iw].get().getSK().rhok_i[0], psets[iw].get().getSK().rhok_i[0] + num_kpoints_, rhok_tot_i_.begin()); - for (int i = 1; i < elec_species_; ++i) + for (int i = 1; i < elec_num_species_; ++i) accumulate_elements(psets[iw].get().getSK().rhok_r[i], psets[iw].get().getSK().rhok_r[i] + num_kpoints_, rhok_tot_r_.begin()); - for (int i = 1; i < elec_species_; ++i) + for (int i = 1; i < elec_num_species_; ++i) accumulate_elements(psets[iw].get().getSK().rhok_i[i], psets[iw].get().getSK().rhok_i[i] + num_kpoints_, rhok_tot_i_.begin()); diff --git a/src/Estimators/StructureFactorEstimator.h b/src/Estimators/StructureFactorEstimator.h index f4d111f6f9..0f375fe98d 100644 --- a/src/Estimators/StructureFactorEstimator.h +++ b/src/Estimators/StructureFactorEstimator.h @@ -13,7 +13,6 @@ #define QMCPLUSPLUS_STRUCTUREFACTORESTIMATOR_H #include "OperatorEstBase.h" -#include "StructureFactorInput.h" namespace qmcplusplus { @@ -23,6 +22,8 @@ namespace testing class StructureFactorAccess; } +class StructureFactorInput; + class StructureFactorEstimator : public OperatorEstBase { public: @@ -31,9 +32,9 @@ class StructureFactorEstimator : public OperatorEstBase using FullPrecReal = QMCT::FullPrecRealType; using KPt = TinyVector; - StructureFactorEstimator(StructureFactorInput& sfi, - ParticleSet& pset_ions, - ParticleSet& pset_elec, + StructureFactorEstimator(const StructureFactorInput& sfi, + const ParticleSet& pset_ions, + const ParticleSet& pset_elec, DataLocality data_locality = DataLocality::crowd); StructureFactorEstimator(const StructureFactorEstimator& sfe, DataLocality dl); @@ -66,11 +67,12 @@ class StructureFactorEstimator : public OperatorEstBase private: StructureFactorEstimator(const StructureFactorEstimator& obdm) = default; - int elec_species_; - ParticleSet& elns_; - int ion_species_; - ParticleSet& ions_; - + const StructureFactorInput& input_; + const ParticleSet& elns_; + const int elec_num_species_; + const ParticleSet& ions_; + const int ion_num_species_; + /// number of k points long long num_kpoints_; diff --git a/src/Estimators/tests/GenerateRandomParticleSets.cpp b/src/Estimators/tests/GenerateRandomParticleSets.cpp index 0c3051e7dd..95b9e102c0 100644 --- a/src/Estimators/tests/GenerateRandomParticleSets.cpp +++ b/src/Estimators/tests/GenerateRandomParticleSets.cpp @@ -32,7 +32,7 @@ std::vector generateRandomParticleSets(ParticleSet& pset_target, std::vector psets(num_psets, pset_target); if (generate_test_data) { - std::cout << "Initialize psets with:\n{"; + std::cout << "Initialize ParticleSets with:\n{"; std::vector psets; for (int iw = 0; iw < nwalkers; ++iw) { diff --git a/src/Estimators/tests/test_StructureFactorEstimator.cpp b/src/Estimators/tests/test_StructureFactorEstimator.cpp index 94d3fec5c3..dee50bfd5a 100644 --- a/src/Estimators/tests/test_StructureFactorEstimator.cpp +++ b/src/Estimators/tests/test_StructureFactorEstimator.cpp @@ -12,6 +12,7 @@ #include "catch.hpp" #include "StructureFactorEstimator.h" +#include "StructureFactorInput.h" #include "ValidStructureFactorInput.h" #include "Particle/tests/MinimalParticlePool.h" #include "QMCWaveFunctions/tests/MinimalWaveFunctionPool.h" diff --git a/src/type_traits/tests/test_template_types.cpp b/src/type_traits/tests/test_template_types.cpp index f8cb0c2a0a..49fecf0e3e 100644 --- a/src/type_traits/tests/test_template_types.cpp +++ b/src/type_traits/tests/test_template_types.cpp @@ -2,7 +2,7 @@ // This file is distributed under the University of Illinois/NCSA Open Source License. // See LICENSE file in top directory for details. // -// Copyright (c) 2019 QMCPACK developers +// Copyright (c) 2024 QMCPACK developers // // File developed by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Lab // @@ -79,8 +79,6 @@ TEST_CASE("convertUPtrToRefvector", "[type_traits]") // This should cause a compilation error. a DerivedDummy cannot be converted to an OtherDummy. // RefVector od_ref_vec = convertUPtrToRefVector(ddv); - - } TEST_CASE("convertPtrToRefvectorSubset", "[type_traits]")