ABACUS/src/SCAN/Particle_Hole_Excitation_Co...

53 lines
1.6 KiB
C++

/**********************************************************
This software is part of J.-S. Caux's ABACUS library.
Copyright (c) J.-S. Caux.
-----------------------------------------------------------
File: src/SCAN/Particle_Hole_Excitation_Cost.cc
Purpose: defines the expected cost of adding a p-h pair. Used in General_Scan.
***********************************************************/
#include "ABACUS.h"
using namespace std;
using namespace ABACUS;
namespace ABACUS {
DP Particle_Hole_Excitation_Cost (char whichDSF, LiebLin_Bethe_State& AveragingState)
{
// Estimates the cost of adding a particle-hole excitation to an intermediate state
DP ph_cost = 1.0;
if (whichDSF == 'd') ph_cost = ABACUS::min(0.01, 0.1/AveragingState.c_int);
else if (whichDSF == 'o') ph_cost = 0.01;
else if (whichDSF == 'g') ph_cost = 0.01;
else if (whichDSF == 'Z') ph_cost = 1.0;
else if (whichDSF == 'B') ph_cost = 0.1;
else if (whichDSF == 'C') ph_cost = 0.1;
else ABACUSerror("whichDSF option not implemented in Particle_Hole_Excitation_Cost for LiebLin.");
return(ph_cost);
}
DP Particle_Hole_Excitation_Cost (char whichDSF, Heis_Bethe_State& AveragingState)
{
// Estimates the cost of adding a particle-hole excitation to an intermediate state
DP ph_cost = 1.0;
if (whichDSF == 'z') ph_cost = 0.01;
else if (whichDSF == 'm') ph_cost = 0.01;
else if (whichDSF == 'p') ph_cost = 0.01;
else if (whichDSF == 'Z') ph_cost = 1.0;
else ABACUSerror("whichDSF option not implemented in Particle_Hole_Excitation_Cost for HEIS.");
return(ph_cost);
}
} // namespace ABACUS