TBTK
Need a break? Support the development by playing Polarity Puzzles
TransmissionRate.h
1 /* Copyright 2019 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_TRANSMISSION_RATE
25 #define COM_DAFER45_TBTK_TRANSMISSION_RATE
26 
28 
29 namespace TBTK{
30 namespace Property{
31 
33 class TransmissionRate : public EnergyResolvedProperty<double>{
34 public:
40  TransmissionRate(double lowerBound, double upperBound, int resolution);
41 
48  TransmissionRate(
49  double lowerBound,
50  double upperBound,
51  int resolution,
52  const double *data
53  );
54 
62  TransmissionRate(const std::string &serialization, Mode mode);
63 
65  TransmissionRate& operator+=(const TransmissionRate &rhs);
66 
73  TransmissionRate operator+(const TransmissionRate &rhs) const;
74 
76  TransmissionRate& operator-=(const TransmissionRate &rhs);
77 
84  TransmissionRate operator-(const TransmissionRate &rhs) const;
85 
92  TransmissionRate& operator*=(const TransmissionRate &rhs);
93 
100  TransmissionRate operator*(const TransmissionRate &rhs) const;
101 
103  TransmissionRate& operator*=(const double &rhs);
104 
111  TransmissionRate operator*(const double &rhs) const;
112 
120  friend TransmissionRate operator*(
121  const double &lhs,
122  const TransmissionRate &rhs
123  ){
124  return rhs*lhs;
125  }
126 
133  TransmissionRate& operator/=(const TransmissionRate &rhs);
134 
142  TransmissionRate operator/(const TransmissionRate &rhs) const;
143 
145  TransmissionRate& operator/=(const double &rhs);
146 
153  TransmissionRate operator/(const double &rhs) const;
154 
156  virtual std::string serialize(Mode mode) const;
157 };
158 
159 inline TransmissionRate& TransmissionRate::operator+=(
160  const TransmissionRate &rhs
161 ){
163 
164  return *this;
165 }
166 
167 inline TransmissionRate TransmissionRate::operator+(
168  const TransmissionRate &rhs
169 ) const{
170  TransmissionRate transmissionRate = *this;
171 
172  return transmissionRate += rhs;
173 }
174 
175 inline TransmissionRate& TransmissionRate::operator-=(
176  const TransmissionRate &rhs
177 ){
179 
180  return *this;
181 }
182 
183 inline TransmissionRate TransmissionRate::operator-(
184  const TransmissionRate &rhs
185 ) const{
186  TransmissionRate transmissionRate = *this;
187 
188  return transmissionRate -= rhs;
189 }
190 
191 inline TransmissionRate TransmissionRate::operator*(
192  const TransmissionRate &rhs
193 ) const{
194  TransmissionRate transmissionRate = *this;
195 
196  return transmissionRate *= rhs;
197 }
198 
199 inline TransmissionRate& TransmissionRate::operator*=(const double &rhs){
201 
202  return *this;
203 }
204 
205 inline TransmissionRate TransmissionRate::operator*(const double &rhs) const{
206  TransmissionRate transmissionRate = *this;
207 
208  return transmissionRate *= rhs;
209 }
210 
211 inline TransmissionRate TransmissionRate::operator/(
212  const TransmissionRate &rhs
213 ) const{
214  TransmissionRate transmissionRate = *this;
215 
216  return transmissionRate /= rhs;
217 }
218 
219 inline TransmissionRate& TransmissionRate::operator/=(const double &rhs){
221 
222  return *this;
223 }
224 
225 inline TransmissionRate TransmissionRate::operator/(const double &rhs) const{
226  TransmissionRate transmissionRate = *this;
227 
228  return transmissionRate /= rhs;
229 }
230 
231 }; //End namespace Property
232 }; //End namespace TBTK
233 
234 #endif
235 
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