NanoStructures  1.0
DMFT solver for layered, strongly correlated nanostructures
broadener.h
Go to the documentation of this file.
1 #ifndef BROADENER_H
2 #define BROADENER_H
3 
12 /*
13  * Copyright (c) 2014 Christoph Schuette.
14  *
15  * The license and distribution terms for this file may be
16  * found in the file LICENSE in this distribution
17  */
18 
19 #include "../math/cfunction.h"
20 #include "../config/configuration.h"
21 
22 namespace nrg {
23 class Broadener
24 {
25 public:
26  Broadener();
27  Broadener(const Broadener& orig);
28  Broadener& operator=(const Broadener& orig);
29  virtual ~Broadener();
30 
31  virtual void configure(config::Configuration& configuration);
32 
33  void addExcitation(double omega, double weight);
34  void init();
35 
36  virtual math::CFunction broaden() { return math::CFunction(); }
37  virtual Broadener* clone() { return new Broadener(*this); }
38  virtual void showInfo();
39  virtual void showStatistics();
40 
41  // getters and setters
42  void setPolesPerDecade(int polesPerDecade) { m_polesPerDecade = polesPerDecade; }
43  void setPeakWidth(double peakWidth) { m_peakWidth = peakWidth; }
44  void setTemperature(double temperature) { m_temperature = temperature; }
45 
46 protected:
47  int mapFrequencyToGrid(double frequency);
48 
49  double m_gamma;
50  double m_temperature;
51  double m_lambda;
52  int m_polesPerDecade;
53  double m_weightInSpectrum;
54  double m_w0;
55  double m_w0Weight;
56  int m_w0PeakCount;
57  int m_peakCount;
58  double m_omegaMin;
59  double m_omegaMax;
60  double m_zeroWeight;
61  double m_logLambda;
62  int m_lMax;
63  double * m_weightsNegative;
64  double * m_weightsPositive;
65  double m_negativeWeight;
66  double m_positiveWeight;
67  double m_peakWidth;
68 };
69 }
70 #endif // BROADENER_H
A configuration object which is populated from a configuration file and allows to query and modify co...
Definition: configuration.h:46
Definition: broadener.h:23
Discretized complex-valued function for real arguments.
Definition: cfunction.h:34