TBTK
Need a break? Support the development by playing Polarity Puzzles
InteractionVertex.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 
17 
24 #ifndef COM_DAFER45_TBTK_PROPERTY_INTERACTION_VERTEX
25 #define COM_DAFER45_TBTK_PROPERTY_INTERACTION_VERTEX
26 
28 #include "TBTK/TBTKMacros.h"
29 
30 #include <complex>
31 #include <vector>
32 
33 namespace TBTK{
34 namespace Property{
35 
37 class InteractionVertex : public EnergyResolvedProperty<std::complex<double>>{
38 public:
40  InteractionVertex();
41 
52  InteractionVertex(
53  const IndexTree &indexTree,
54  double lowerBound,
55  double upperBound,
56  unsigned int resolution
57  );
58 
71  InteractionVertex(
72  const IndexTree &indexTree,
73  double lowerBound,
74  double upperBound,
75  unsigned int resolution,
76  const std::complex<double> *data
77  );
78 
89  InteractionVertex(
90  const IndexTree &indexTree,
91  int lowerMatsubaraEnergyIndex,
92  int upperMatsubaraEnergyIndex,
93  double fundamentalMatsubaraEnergy
94  );
95 
108  InteractionVertex(
109  const IndexTree &indexTree,
110  int lowerMatsubaraEnergyIndex,
111  int upperMatsubaraEnergyIndex,
112  double fundamentalMatsubaraEnergy,
113  const std::complex<double> *data
114  );
115 
117  InteractionVertex& operator+=(const InteractionVertex &rhs);
118 
120  InteractionVertex& operator-=(const InteractionVertex &rhs);
121 
123  InteractionVertex& operator*=(const std::complex<double> &rhs);
124 
132  InteractionVertex operator*(const std::complex<double> &rhs) const;
133 
142  friend InteractionVertex operator*(
143  const std::complex<double> &lhs,
144  const InteractionVertex &rhs
145  ){
146  return rhs*lhs;
147  }
148 
150  InteractionVertex& operator/=(const std::complex<double> &rhs);
151 private:
152 };
153 
154 inline InteractionVertex& InteractionVertex::operator+=(
155  const InteractionVertex &rhs
156 ){
158 
159  return *this;
160 }
161 
162 inline InteractionVertex& InteractionVertex::operator-=(
163  const InteractionVertex &rhs
164 ){
166 
167  return *this;
168 }
169 
170 inline InteractionVertex& InteractionVertex::operator*=(
171  const std::complex<double> &rhs
172 ){
174 
175  return *this;
176 }
177 
178 inline InteractionVertex InteractionVertex::operator*(
179  const std::complex<double> &rhs
180 ) const{
181  InteractionVertex interactionVertex = *this;
182 
183  return interactionVertex *= rhs;
184 }
185 
186 inline InteractionVertex& InteractionVertex::operator/=(
187  const std::complex<double> &rhs
188 ){
190 
191  return *this;
192 }
193 
194 }; //End namespace Property
195 }; //End namespace TBTK
196 
197 #endif
198 
Precompiler macros.
EnergyResolvedProperty & operator*=(const DataType &rhs)
Definition: EnergyResolvedProperty.h:1379
EnergyResolvedProperty & operator-=(const EnergyResolvedProperty &rhs)
Definition: EnergyResolvedProperty.h:1287
Base class for energy resolved Properties.
Definition: Boolean.h:32
EnergyResolvedProperty & operator/=(const DataType &rhs)
Definition: EnergyResolvedProperty.h:1389
const Vector2d operator*(double lhs, const Vector2d &rhs)
Definition: Vector2d.h:129
EnergyResolvedProperty & operator+=(const EnergyResolvedProperty &rhs)
Definition: EnergyResolvedProperty.h:1195