Loading CITATION.md +1 −1 Original line number Diff line number Diff line Loading @@ -4,5 +4,5 @@ If the DCA++ code contributes to your research, we kindly ask to acknowledge thi Urs R. Hähner, Gonzalo Alvarez, Thomas A. Maier, Raffaele Solcà, Peter Staar, Michael S. Summers, and Thomas C. Schulthess, *DCA++: A software framework to solve correlated electron problems with modern quantum cluster methods,* Comput. Phys. Commun (2019), Comput. Phys. Commun. (2019), 10.1016/j.cpc.2019.01.006. include/dca/linalg/matrix.hpp +2 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include "dca/linalg/util/allocators/allocators.hpp" #include "dca/linalg/device_type.hpp" #include "dca/linalg/util/copy.hpp" #include "dca/linalg/util/memory.hpp" #include "dca/linalg/util/stream_functions.hpp" namespace dca { Loading Loading @@ -290,6 +291,7 @@ Matrix<ScalarType, device_name>::Matrix(const std::string& name, std::pair<int, assert(capacity_.first >= capacity.first && capacity_.second >= capacity.second); data_ = Allocator::allocate(nrElements(capacity_)); util::Memory<device_name>::setToZero(data_, nrElements(capacity_)); } template <typename ScalarType, DeviceType device_name> Loading include/dca/phys/dca_step/cluster_solver/shared_tools/accumulation/tp/tp_accumulator.hpp +17 −15 Original line number Diff line number Diff line Loading @@ -396,10 +396,12 @@ double TpAccumulator<Parameters, linalg::CPU>::updateG4() { switch (mode_) { case PARTICLE_HOLE_MAGNETIC: // Note: sums over spin indices are implied. // // G4(k1, k2, k_ex) = 1/2 (s1 * s2) <c^+(k1 + k_ex, s1) c(k1, s1) // c^+(k2, s2) c(k2 + k_ex, s2)> // = 1/2 (s1 * s2) <G(k1, k1 + k_ex, s1) G(k2 + k_ex, k2, s2) - (s1 ==s2) // G(k2 + k_ex, k1 + k_ex, s1) G(k1, k2, s1)> // = 1/2 (s1 * s2) <G(k1, k1 + k_ex, s1) G(k2 + k_ex, k2, s2) - // (s1 == s2) G(k2 + k_ex, k1 + k_ex, s1) G(k1, k2, s1)>. for (int w_ex_idx = 0; w_ex_idx < exchange_frq.size(); ++w_ex_idx) { const int w_ex = exchange_frq[w_ex_idx]; for (int w2 = 0; w2 < WTpDmn::dmn_size(); ++w2) Loading @@ -425,7 +427,7 @@ double TpAccumulator<Parameters, linalg::CPU>::updateG4() { case PARTICLE_HOLE_CHARGE: // G4(k1, k2, k_ex) += 1/2 <c^+(k1 + k_ex, s1) c(k1, s1) c^+(k2, s2) c(k2 + k_ex, s2)> = // = 1/2 <G(k1, k1 + k_ex, s1) G(k2 + k_ex, k2, s2) - // (s1 ==s2) G(k2 + k_ex, k1 + k_ex, s1) G(k1, k2, s1)> // (s1 == s2) G(k2 + k_ex, k1 + k_ex, s1) G(k1, k2, s1)>. for (int w_ex_idx = 0; w_ex_idx < exchange_frq.size(); ++w_ex_idx) { const int w_ex = exchange_frq[w_ex_idx]; for (int w2 = 0; w2 < WTpDmn::dmn_size(); ++w2) Loading @@ -450,8 +452,8 @@ double TpAccumulator<Parameters, linalg::CPU>::updateG4() { break; case PARTICLE_HOLE_TRANSVERSE: // G4 = 1/2 \sum_s <c^+(k1 + k_ex, s) c(k1, -s) c^+(k2, -s) c(k2 + k_ex, s)> // = -1/2 \sum_s G( k2 + k_ex, k1 + k_ex, s) G4(k1, k2, -s) // G4 = 1/2 <c^+(k1 + k_ex, s) c(k1, -s) c^+(k2, -s) c(k2 + k_ex, s)> // = -1/2 G(k2 + k_ex, k1 + k_ex, s) G(k1, k2, -s). for (int w_ex_idx = 0; w_ex_idx < exchange_frq.size(); ++w_ex_idx) { const int w_ex = exchange_frq[w_ex_idx]; for (int w2 = 0; w2 < WTpDmn::dmn_size(); ++w2) Loading @@ -473,8 +475,8 @@ double TpAccumulator<Parameters, linalg::CPU>::updateG4() { break; case PARTICLE_PARTICLE_UP_DOWN: // G4 = 1/2 \sum_s <c^+(k_ex-k1, s) c^+(k1, -s) c(k2, -s) c(k_ex-k2, s)> // = 1/2 \sum_s G(k_ex-k2, k_ex-k1, s) G4(k2, k1, -s) // G4 = 1/2 <c^+(k_ex-k1, s) c^+(k1, -s) c(k2, -s) c(k_ex-k2, s)> // = 1/2 G(k_ex-k2, k_ex-k1, s) G(k2, k1, -s). for (int w_ex_idx = 0; w_ex_idx < exchange_frq.size(); ++w_ex_idx) { const int w_ex = exchange_frq[w_ex_idx]; for (int w2 = 0; w2 < WTpDmn::dmn_size(); ++w2) Loading Loading @@ -544,9 +546,9 @@ void TpAccumulator<Parameters, linalg::CPU>::updateG4SpinDifference( const bool cross_legs) { // This function performs the following update for each band: // // G4(k1, k2, w1, w2) += alpha * (G(up, k1_a, k2_a, w1_a, w2_a) * G(up, k1_b, k2_b, w1_b, w2_b) // + sign * G(down, k1_a, k2_a, w1_a, w2_a) * G(down, k1_b, k2_b, w1_b, // w2_b) // G4(k1, k2, w1, w2) += alpha * (G(up, k1_a, k2_a, w1_a, w2_a) // + sign * G(down,k1_a, k2_a, w1_a, w2_a)) * // (G(up,k1_b,k2_b,w1_b,w2_b) + sign * G(down,k1_b,k2_b,w1_b,w2_b)) if (n_bands_ == 1) { *G4_ptr += alpha * (getGSingleband(0, k1_a, k2_a, w1_a, w2_a) + Complex(sign) * getGSingleband(1, k1_a, k2_a, w1_a, w2_a)) * Loading src/config/cmake_options.cpp.in +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ void CMakeOptions::print() { << "DCA_WITH_SINGLE_PRECISION_MEASUREMENTS = " << dca_with_single_precision_measurements << "\n" << "DCA_WITH_MEMORY_SAVINGS = " << CMakeOptions::dca_with_memory_savings << "\n" << "DCA_WITH_MANAGED_MEMORY = " << CMakeOptions::dca_with_memory_savings << "\n" << "DCA_WITH_MANAGED_MEMORY = " << CMakeOptions::dca_with_managed_memory << "\n" << "\n" << "DCA_WITH_QMC_BIT = " << CMakeOptions::dca_with_qmc_bit << "\n" << std::endl; Loading src/linalg/lapack/multiply_diagonal_gpu.cu +2 −2 Original line number Diff line number Diff line Loading @@ -5,8 +5,8 @@ // See LICENSE for terms of usage. // See CITATION.md for citation guidelines, if DCA++ is used for scientific publications. // // Author: Raffaele Solca' (rasolca@itp.phys.ethz.ch) // Giovanni Balduzzi (gbalduzz@itp.phys.ethz.ch) // Author: Giovanni Balduzzi (gbalduzz@itp.phys.ethz.ch) // Raffaele Solca' (rasolca@itp.phys.ethz.ch) // // This file implements laset_gpu.hpp. Loading Loading
CITATION.md +1 −1 Original line number Diff line number Diff line Loading @@ -4,5 +4,5 @@ If the DCA++ code contributes to your research, we kindly ask to acknowledge thi Urs R. Hähner, Gonzalo Alvarez, Thomas A. Maier, Raffaele Solcà, Peter Staar, Michael S. Summers, and Thomas C. Schulthess, *DCA++: A software framework to solve correlated electron problems with modern quantum cluster methods,* Comput. Phys. Commun (2019), Comput. Phys. Commun. (2019), 10.1016/j.cpc.2019.01.006.
include/dca/linalg/matrix.hpp +2 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include "dca/linalg/util/allocators/allocators.hpp" #include "dca/linalg/device_type.hpp" #include "dca/linalg/util/copy.hpp" #include "dca/linalg/util/memory.hpp" #include "dca/linalg/util/stream_functions.hpp" namespace dca { Loading Loading @@ -290,6 +291,7 @@ Matrix<ScalarType, device_name>::Matrix(const std::string& name, std::pair<int, assert(capacity_.first >= capacity.first && capacity_.second >= capacity.second); data_ = Allocator::allocate(nrElements(capacity_)); util::Memory<device_name>::setToZero(data_, nrElements(capacity_)); } template <typename ScalarType, DeviceType device_name> Loading
include/dca/phys/dca_step/cluster_solver/shared_tools/accumulation/tp/tp_accumulator.hpp +17 −15 Original line number Diff line number Diff line Loading @@ -396,10 +396,12 @@ double TpAccumulator<Parameters, linalg::CPU>::updateG4() { switch (mode_) { case PARTICLE_HOLE_MAGNETIC: // Note: sums over spin indices are implied. // // G4(k1, k2, k_ex) = 1/2 (s1 * s2) <c^+(k1 + k_ex, s1) c(k1, s1) // c^+(k2, s2) c(k2 + k_ex, s2)> // = 1/2 (s1 * s2) <G(k1, k1 + k_ex, s1) G(k2 + k_ex, k2, s2) - (s1 ==s2) // G(k2 + k_ex, k1 + k_ex, s1) G(k1, k2, s1)> // = 1/2 (s1 * s2) <G(k1, k1 + k_ex, s1) G(k2 + k_ex, k2, s2) - // (s1 == s2) G(k2 + k_ex, k1 + k_ex, s1) G(k1, k2, s1)>. for (int w_ex_idx = 0; w_ex_idx < exchange_frq.size(); ++w_ex_idx) { const int w_ex = exchange_frq[w_ex_idx]; for (int w2 = 0; w2 < WTpDmn::dmn_size(); ++w2) Loading @@ -425,7 +427,7 @@ double TpAccumulator<Parameters, linalg::CPU>::updateG4() { case PARTICLE_HOLE_CHARGE: // G4(k1, k2, k_ex) += 1/2 <c^+(k1 + k_ex, s1) c(k1, s1) c^+(k2, s2) c(k2 + k_ex, s2)> = // = 1/2 <G(k1, k1 + k_ex, s1) G(k2 + k_ex, k2, s2) - // (s1 ==s2) G(k2 + k_ex, k1 + k_ex, s1) G(k1, k2, s1)> // (s1 == s2) G(k2 + k_ex, k1 + k_ex, s1) G(k1, k2, s1)>. for (int w_ex_idx = 0; w_ex_idx < exchange_frq.size(); ++w_ex_idx) { const int w_ex = exchange_frq[w_ex_idx]; for (int w2 = 0; w2 < WTpDmn::dmn_size(); ++w2) Loading @@ -450,8 +452,8 @@ double TpAccumulator<Parameters, linalg::CPU>::updateG4() { break; case PARTICLE_HOLE_TRANSVERSE: // G4 = 1/2 \sum_s <c^+(k1 + k_ex, s) c(k1, -s) c^+(k2, -s) c(k2 + k_ex, s)> // = -1/2 \sum_s G( k2 + k_ex, k1 + k_ex, s) G4(k1, k2, -s) // G4 = 1/2 <c^+(k1 + k_ex, s) c(k1, -s) c^+(k2, -s) c(k2 + k_ex, s)> // = -1/2 G(k2 + k_ex, k1 + k_ex, s) G(k1, k2, -s). for (int w_ex_idx = 0; w_ex_idx < exchange_frq.size(); ++w_ex_idx) { const int w_ex = exchange_frq[w_ex_idx]; for (int w2 = 0; w2 < WTpDmn::dmn_size(); ++w2) Loading @@ -473,8 +475,8 @@ double TpAccumulator<Parameters, linalg::CPU>::updateG4() { break; case PARTICLE_PARTICLE_UP_DOWN: // G4 = 1/2 \sum_s <c^+(k_ex-k1, s) c^+(k1, -s) c(k2, -s) c(k_ex-k2, s)> // = 1/2 \sum_s G(k_ex-k2, k_ex-k1, s) G4(k2, k1, -s) // G4 = 1/2 <c^+(k_ex-k1, s) c^+(k1, -s) c(k2, -s) c(k_ex-k2, s)> // = 1/2 G(k_ex-k2, k_ex-k1, s) G(k2, k1, -s). for (int w_ex_idx = 0; w_ex_idx < exchange_frq.size(); ++w_ex_idx) { const int w_ex = exchange_frq[w_ex_idx]; for (int w2 = 0; w2 < WTpDmn::dmn_size(); ++w2) Loading Loading @@ -544,9 +546,9 @@ void TpAccumulator<Parameters, linalg::CPU>::updateG4SpinDifference( const bool cross_legs) { // This function performs the following update for each band: // // G4(k1, k2, w1, w2) += alpha * (G(up, k1_a, k2_a, w1_a, w2_a) * G(up, k1_b, k2_b, w1_b, w2_b) // + sign * G(down, k1_a, k2_a, w1_a, w2_a) * G(down, k1_b, k2_b, w1_b, // w2_b) // G4(k1, k2, w1, w2) += alpha * (G(up, k1_a, k2_a, w1_a, w2_a) // + sign * G(down,k1_a, k2_a, w1_a, w2_a)) * // (G(up,k1_b,k2_b,w1_b,w2_b) + sign * G(down,k1_b,k2_b,w1_b,w2_b)) if (n_bands_ == 1) { *G4_ptr += alpha * (getGSingleband(0, k1_a, k2_a, w1_a, w2_a) + Complex(sign) * getGSingleband(1, k1_a, k2_a, w1_a, w2_a)) * Loading
src/config/cmake_options.cpp.in +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ void CMakeOptions::print() { << "DCA_WITH_SINGLE_PRECISION_MEASUREMENTS = " << dca_with_single_precision_measurements << "\n" << "DCA_WITH_MEMORY_SAVINGS = " << CMakeOptions::dca_with_memory_savings << "\n" << "DCA_WITH_MANAGED_MEMORY = " << CMakeOptions::dca_with_memory_savings << "\n" << "DCA_WITH_MANAGED_MEMORY = " << CMakeOptions::dca_with_managed_memory << "\n" << "\n" << "DCA_WITH_QMC_BIT = " << CMakeOptions::dca_with_qmc_bit << "\n" << std::endl; Loading
src/linalg/lapack/multiply_diagonal_gpu.cu +2 −2 Original line number Diff line number Diff line Loading @@ -5,8 +5,8 @@ // See LICENSE for terms of usage. // See CITATION.md for citation guidelines, if DCA++ is used for scientific publications. // // Author: Raffaele Solca' (rasolca@itp.phys.ethz.ch) // Giovanni Balduzzi (gbalduzz@itp.phys.ethz.ch) // Author: Giovanni Balduzzi (gbalduzz@itp.phys.ethz.ch) // Raffaele Solca' (rasolca@itp.phys.ethz.ch) // // This file implements laset_gpu.hpp. Loading