Unverified Commit a65290d9 authored by Peter Doak's avatar Peter Doak Committed by GitHub
Browse files

Merge pull request #269 from PDoakORNL/write_MFunction_per_measurement

Write m function per measurement.  Fix performance regression caused by single measurement G calculation.
parents 76a80694 c210d82c
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -251,7 +251,7 @@ set(DCA_CLUSTER_SOLVER "CT-AUX" CACHE STRING
set_property(CACHE DCA_CLUSTER_SOLVER PROPERTY STRINGS CT-AUX CT-INT SS-CT-HYB)

if (DCA_CLUSTER_SOLVER STREQUAL "CT-INT")
  set(DCA_CLUSTER_SOLVER_NAME dca::phys::solver::CT_INT)
  set(DCA_CLUSTER_SOLVER_NAME dca::ClusterSolverId::CT_INT)
  set(DCA_CLUSTER_SOLVER_INCLUDE "dca/phys/dca_step/cluster_solver/ctint/ctint_cluster_solver.hpp")

  set(DCA_USE_CTINT_SUBMATRIX ON CACHE BOOL "Use submatrix updates if the CT-INT solver is selected.")
@@ -264,14 +264,14 @@ if (DCA_CLUSTER_SOLVER STREQUAL "CT-INT")
  endif()

elseif (DCA_CLUSTER_SOLVER STREQUAL "CT-AUX")
  set(DCA_CLUSTER_SOLVER_NAME dca::phys::solver::CT_AUX)
  set(DCA_CLUSTER_SOLVER_NAME dca::ClusterSolverId::CT_AUX)
  set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::CtauxClusterSolver<walker_device, ParametersType, DcaDataType<DIST>, DIST>")
  set(DCA_CLUSTER_SOLVER_INCLUDE
      "dca/phys/dca_step/cluster_solver/ctaux/ctaux_cluster_solver.hpp")


elseif (DCA_CLUSTER_SOLVER STREQUAL "SS-CT-HYB")
  set(DCA_CLUSTER_SOLVER_NAME dca::phys::solver::SS_CT_HYB)
  set(DCA_CLUSTER_SOLVER_NAME dca::ClusterSolverId::SS_CT_HYB)
  set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::SsCtHybClusterSolver<walker_device, ParametersType, DcaDataType<DIST>, DIST>")
  set(DCA_CLUSTER_SOLVER_INCLUDE
        "dca/phys/dca_step/cluster_solver/ss_ct_hyb/ss_ct_hyb_cluster_solver.hpp")
+2 −2
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@
#include "dca/config/profiler.hpp"       // defines Profiler
#include "dca/config/threading.hpp"      // defines Threading

#include "dca/phys/dca_step/cluster_solver/cluster_solver_name.hpp"
constexpr dca::phys::solver::ClusterSolverName solver_name = @DCA_CLUSTER_SOLVER_NAME@;
#include "dca/phys/dca_step/cluster_solver/cluster_solver_id.hpp"
constexpr dca::ClusterSolverId solver_name = @DCA_CLUSTER_SOLVER_NAME@;

#include "dca/phys/parameters/parameters.hpp"
using ParametersType = dca::phys::params::Parameters<Concurrency, Threading, Profiler, Model,
+1 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@
#include "dca/config/threading.hpp"      // defines Threading

#include "dca/phys/dca_step/cluster_solver/cluster_solver_name.hpp"
constexpr dca::phys::solver::ClusterSolverName solver_name = @DCA_CLUSTER_SOLVER_NAME@;
constexpr ClusterSolverId solver_name = @DCA_CLUSTER_SOLVER_NAME@;

#include "dca/phys/parameters/parameters.hpp"
using ParametersType = dca::phys::params::Parameters<Concurrency, Threading, Profiler, Model,
+2 −2
Original line number Diff line number Diff line
@@ -22,8 +22,8 @@
#include "dca/config/walker_device.hpp"  // defines walker_device
#include "dca/config/threading.hpp"      // defines Threading

#include "dca/phys/dca_step/cluster_solver/cluster_solver_name.hpp"
constexpr dca::phys::solver::ClusterSolverName solver_name = @DCA_CLUSTER_SOLVER_NAME@;
#include "dca/phys/dca_step/cluster_solver/cluster_solver_id.hpp"
constexpr dca::ClusterSolverId solver_name = @DCA_CLUSTER_SOLVER_NAME@;

#include "dca/phys/parameters/parameters.hpp"
using ParametersType = dca::phys::params::Parameters<Concurrency, Threading, Profiler, Model,
+4 −3
Original line number Diff line number Diff line
@@ -42,9 +42,10 @@ auto real(const function<std::complex<Scalartype>, Dmn>& f, const bool check_ima
  function<Scalartype, Dmn> f_real;

  for (int i = 0; i < f_real.size(); ++i) {
    if (check_imaginary && std::abs(f(i).imag()) > 500 * std::numeric_limits<Scalartype>::epsilon())
      throw(std::logic_error("The function is not purely real."));

    if (check_imaginary && std::abs(f(i).imag()) > 1000 * std::numeric_limits<Scalartype>::epsilon()) {
      std::ostringstream err_msg;
      throw(std::logic_error(err_msg.str()));
    }
    f_real(i) = f(i).real();
  }

Loading