Commit d928e4f0 authored by Haehner, Urs Rene's avatar Haehner, Urs Rene
Browse files

Add input parameter for DCA with post-interpolation.

parent 1ee94cf0
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ public:
        self_energy_mixing_factor_(1.),
        interacting_orbitals_{0},

        do_post_interpolation_(false),

        do_finite_size_qmc_(false),

        k_mesh_recursion_(0),
@@ -75,6 +77,9 @@ public:
  const std::vector<int>& get_interacting_orbitals() const {
    return interacting_orbitals_;
  }
  bool do_post_interpolation() const {
    return do_post_interpolation_;
  }
  bool do_finite_size_qmc() const {
    return do_finite_size_qmc_;
  }
@@ -116,6 +121,8 @@ private:
  double self_energy_mixing_factor_;
  std::vector<int> interacting_orbitals_;

  bool do_post_interpolation_;

  bool do_finite_size_qmc_;

  // coarse-graining
@@ -142,6 +149,7 @@ int DcaParameters::getBufferSize(const Concurrency& concurrency) const {
  buffer_size += concurrency.get_buffer_size(dca_accuracy_);
  buffer_size += concurrency.get_buffer_size(self_energy_mixing_factor_);
  buffer_size += concurrency.get_buffer_size(interacting_orbitals_);
  buffer_size += concurrency.get_buffer_size(do_post_interpolation_);
  buffer_size += concurrency.get_buffer_size(do_finite_size_qmc_);
  buffer_size += concurrency.get_buffer_size(k_mesh_recursion_);
  buffer_size += concurrency.get_buffer_size(coarsegraining_periods_);
@@ -165,6 +173,7 @@ void DcaParameters::pack(const Concurrency& concurrency, char* buffer, int buffe
  concurrency.pack(buffer, buffer_size, position, dca_accuracy_);
  concurrency.pack(buffer, buffer_size, position, self_energy_mixing_factor_);
  concurrency.pack(buffer, buffer_size, position, interacting_orbitals_);
  concurrency.pack(buffer, buffer_size, position, do_post_interpolation_);
  concurrency.pack(buffer, buffer_size, position, do_finite_size_qmc_);
  concurrency.pack(buffer, buffer_size, position, k_mesh_recursion_);
  concurrency.pack(buffer, buffer_size, position, coarsegraining_periods_);
@@ -186,6 +195,7 @@ void DcaParameters::unpack(const Concurrency& concurrency, char* buffer, int buf
  concurrency.unpack(buffer, buffer_size, position, dca_accuracy_);
  concurrency.unpack(buffer, buffer_size, position, self_energy_mixing_factor_);
  concurrency.unpack(buffer, buffer_size, position, interacting_orbitals_);
  concurrency.unpack(buffer, buffer_size, position, do_post_interpolation_);
  concurrency.unpack(buffer, buffer_size, position, do_finite_size_qmc_);
  concurrency.unpack(buffer, buffer_size, position, k_mesh_recursion_);
  concurrency.unpack(buffer, buffer_size, position, coarsegraining_periods_);
@@ -218,6 +228,8 @@ void DcaParameters::readWrite(ReaderOrWriter& reader_or_writer) {
    try_to_read("self-energy-mixing-factor", self_energy_mixing_factor_);
    try_to_read("interacting-orbitals", interacting_orbitals_);

    try_to_read("do-post-interpolation", do_post_interpolation_);

    try_to_read("do-finite-size-QMC", do_finite_size_qmc_);

    try {
@@ -260,8 +272,8 @@ void DcaParameters::readWrite(ReaderOrWriter& reader_or_writer) {
  }
}

}  // params
}  // phys
}  // dca
}  // namespace params
}  // namespace phys
}  // namespace dca

#endif  // DCA_PHYS_PARAMETERS_DCA_PARAMETERS_HPP
+5 −0
Original line number Diff line number Diff line
@@ -221,6 +221,11 @@ Stop the DCA<sup>(+)</sup> loop if this accuracy has been reached.
Indices of orbitals that are treated interacting.  
Note that this parameter must be consistent with the model that is used.

`"do-post-interpolation":` boolean (false)  
Turn on post-interpolation procedure for DCA.
Interpolates and symmetrizes the final DCA cluster self-energy and cluster irreducible vertex function.
(Reference: https://arxiv.org/abs/2002.06866)

`"do-finite-size-QMC":` boolean (false)  
Do a finite-size QMC calculation (no mean-field).

+2 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ TEST_F(DcaParametersTest, DefaultValues) {
  EXPECT_EQ(0., pars_.get_dca_accuracy());
  EXPECT_EQ(1., pars_.get_self_energy_mixing_factor());
  EXPECT_EQ(std::vector<int>{0}, pars_.get_interacting_orbitals());
  EXPECT_FALSE(pars_.do_post_interpolation());
  EXPECT_FALSE(pars_.do_finite_size_qmc());
  EXPECT_EQ(0, pars_.get_k_mesh_recursion());
  EXPECT_EQ(0, pars_.get_coarsegraining_periods());
@@ -52,6 +53,7 @@ TEST_F(DcaParametersTest, ReadAll) {
  EXPECT_EQ(1.e-3, pars_.get_dca_accuracy());
  EXPECT_EQ(0.5, pars_.get_self_energy_mixing_factor());
  EXPECT_EQ(interacting_orbitals_check, pars_.get_interacting_orbitals());
  EXPECT_TRUE(pars_.do_post_interpolation());
  EXPECT_FALSE(pars_.do_finite_size_qmc());
  EXPECT_EQ(3, pars_.get_k_mesh_recursion());
  EXPECT_EQ(2, pars_.get_coarsegraining_periods());
+2 −0
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@
        "self-energy-mixing-factor": 0.5,
        "interacting-orbitals": [0, 1, 2],

        "do-post-interpolation": true,

        "do-finite-size-QMC": false,

        "coarse-graining": {
+2 −0
Original line number Diff line number Diff line
@@ -51,6 +51,8 @@
        "self-energy-mixing-factor": 1.,
        "interacting-orbitals": [0],

        "do-post-interpolation": false,

        "do-finite-size-QMC": false,

        "coarse-graining": {