12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /**********************************************************
-
- 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
|