TBTK
Greens.h
1 /* Copyright 2018 Kristofer Bj√∂rnson
2  *
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
23 #ifndef COM_DAFER45_TBTK_PROPERTY_EXTRACTOR_GREENS
24 #define COM_DAFER45_TBTK_PROPERTY_EXTRACTOR_GREENS
25 
26 #include "TBTK/Solver/Greens.h"
27 #include "TBTK/Property/Density.h"
29 #include "TBTK/Property/LDOS.h"
33 
34 //#include <initializer_list>
35 #include <iostream>
36 
37 namespace TBTK{
38 namespace PropertyExtractor{
39 
41 class Greens : public PropertyExtractor{
42 public:
44  Greens(Solver::Greens &cSolver);
45 
47  virtual ~Greens();
48 
50  virtual void setEnergyWindow(
51  double lowerBound,
52  double upperBound,
53  int energyResolution
54  );
55 
57 /* virtual std::complex<double> calculateExpectationValue(
58  Index to,
59  Index from
60  );*/
61 
64  Index pattern,
65  Index ranges
66  );
67 
70 // std::initializer_list<Index> patterns
71  std::vector<Index> patterns
72  );
73 
75 /* virtual Property::Magnetization calculateMagnetization(
76  Index pattern,
77  Index ranges
78  );*/
79 
81 /* virtual Property::Magnetization calculateMagnetization(
82  std::initializer_list<Index> patterns
83  );*/
84 
86 // virtual Property::LDOS calculateLDOS(Index pattern, Index ranges);
87 
90 // std::initializer_list<Index> pattern
91  std::vector<Index> patterns
92  );
93 
95 /* virtual Property::SpinPolarizedLDOS calculateSpinPolarizedLDOS(
96  Index pattern,
97  Index ranges
98  );*/
99 
101 /* virtual Property::SpinPolarizedLDOS calculateSpinPolarizedLDOS(
102  std::initializer_list<Index> pattern
103  );*/
104 private:
106  Solver::Greens *solver;
107 
109  static void calculateDensityCallback(
110  PropertyExtractor *cb_this,
111  void *density,
112  const Index &index,
113  int offset
114  );
115 
118 /* static void calculateMagnetizationCallback(
119  PropertyExtractor *cb_this,
120  void *density,
121  const Index &index,
122  int offset
123  );*/
124 
127  static void calculateLDOSCallback(
128  PropertyExtractor *cb_this,
129  void *ldos,
130  const Index &index,
131  int offset
132  );
133 
136 /* static void calculateSpinPolarizedLDOSCallback(
137  PropertyExtractor *cb_this,
138  void *sp_ldos,
139  const Index &index,
140  int offset
141  );*/
142 };
143 
144 }; //End of namespace PropertyExtractor
145 }; //End of namespace TBTK
146 
147 #endif
virtual Property::LDOS calculateLDOS(std::vector< Index > patterns)
Property container for local density of states (LDOS).
Definition: LDOS.h:33
Property container for local density of states (LDOS).
Base class PropertyExtractors.
Definition: Greens.h:41
Property container for spin-polarized local density of states (spin-polarized LDOS).
Property container for density.
Property container for the Green&#39;s function.
Calculates properties from a Green&#39;s function.
Definition: Greens.h:38
Property container for magnetization.
Flexible physical index.
Definition: Index.h:69
Definition: PropertyExtractor.h:44
Definition: ModelFactory.h:35
virtual Property::Density calculateDensity(Index pattern, Index ranges)
Property container for density.
Definition: Density.h:33
Greens(Solver::Greens &cSolver)
virtual void setEnergyWindow(double lowerBound, double upperBound, int energyResolution)