TRIQS/triqs_modest 3.3.0
Brillouin zone summation
Loading...
Searching...
No Matches
double_counting.hpp
Go to the documentation of this file.
1// Copyright (c) 2025--present, The Simons Foundation
2// This file is part of TRIQS/modest and is licensed under the terms of GPLv3 or later.
3// SPDX-License-Identifier: GPL-3.0-or-later
4// See LICENSE in the root of this distribution for details.
5
6#pragma once
7#include <nda/nda.hpp>
8#include "utils/defs.hpp"
9#include "triqs/gfs.hpp"
10
11using namespace triqs::gfs;
12
13namespace triqs::modest {
14
27 std::pair<double, double> dc_formulas(std::string const method, double const N_tot, double const N_sigma, long const n_orb, double const U,
28 double const J);
38 std::pair<nda::array<nda::matrix<double>, 2>, nda::matrix<double>> double_counting(nda::array<nda::matrix<dcomplex>, 2> const &density_matrix,
39 double U_int, double J_hund, std::string const method);
40
48 class dc_solver {
49
50 private:
52 long n_sigma;
54 std::string method;
56 double U_int;
58 double J_hund;
59
66 nda::array<nda::matrix<double>, 2> get_density_matrix_from_gf(block_gf<imfreq, matrix_valued> const &gimp);
67
68 public:
77 dc_solver(long n_sigma, std::string method, double U_int, double J_hund);
78
85 std::vector<nda::matrix<dcomplex>> dc_self_energy(block_gf<imfreq, matrix_valued> const &gimp);
86
93 nda::matrix<double> dc_energy(block_gf<imfreq, matrix_valued> const &gimp);
94 };
95
96} // namespace triqs::modest
Double counting "solver" implements the double counting correction for DFT+DMFT, which is a phenomenl...
std::vector< nda::matrix< dcomplex > > dc_self_energy(block_gf< imfreq, matrix_valued > const &gimp)
Compute the double-counting self-energy.
nda::matrix< double > dc_energy(block_gf< imfreq, matrix_valued > const &gimp)
Compute the double counting correction to the energy.
std::pair< double, double > dc_formulas(std::string const method, double const N_tot, double const N_sigma, long const n_orb, double const U, double const J)
double counting formulas parameterized by density, U, and J
std::pair< nda::array< nda::matrix< double >, 2 >, nda::matrix< double > > double_counting(nda::array< nda::matrix< dcomplex >, 2 > const &density_matrix, double U_int, double J_hund, std::string const method)
compute double counting correction for a dc_type (method) from the density matrix of a Green's functi...