Go to the documentation of this file.
17 #pragma region FrequencyIterator
177 ASSERT(std::is_sorted(values.begin(), values.end()));
183 size = int(values.size());
187 for (
int i = 0; i <
size; ++i)
190 _data[-i- 1] = -values[i];
191 _data[i] = values[i];
194 Log::log << Log::LogLevel::Debug<<
"Initialized frequency grid with mesh values" << Log::endl;
195 for (
auto i =
beginNegative(); i !=
end(); ++i) Log::log <<
"\t" << *i << Log::endl;
264 for (
int i = 1; i <
size; ++i)
290 for (
int i = 1; i <
size; ++i)
310 if (w <=
_data[0])
return 0;
311 for (
int i = 1; i <
size; ++i)
313 if (
_data[i] >= w)
return i;
329 ASSERT(&lowerOffset != &upperOffset)
338 for (
int i = 1; i <
size; ++i)
344 bias = (w -
_data[lowerOffset]) / (
_data[upperOffset] -
_data[lowerOffset]);
348 lowerOffset =
size - 1;
349 upperOffset =
size - 1;
353 ASSERT(lowerOffset >= 0 && lowerOffset <
size);
354 ASSERT(upperOffset >= 0 && upperOffset <
size);
355 ASSERT(bias >= 0.0f && bias <= 1.0f);
#define ASSERT(...)
Ensure that the first argument is true. Optionally provide a message as the second argument,...
Definition: Assert.hpp:26
Frequency iterator.
Definition: FrequencyDiscretization.hpp:21
float operator*() const
Dereference operator.
Definition: FrequencyDiscretization.hpp:38
FrequencyIterator end() const
Retrieve iterator to the last+1 mesh point.
Definition: FrequencyDiscretization.hpp:241
FrequencyIterator beginNegative() const
Retrieve iterator to the first negative mesh point; This is the negative value with the largest absol...
Definition: FrequencyDiscretization.hpp:221
bool operator>(const FrequencyIterator &rhs) const
Greater comparison operator.
Definition: FrequencyDiscretization.hpp:115
FrequencyIterator & operator--()
Prefix decrement operator.
Definition: FrequencyDiscretization.hpp:81
bool operator!=(const FrequencyIterator &rhs) const
Negative iterator comparison.
Definition: FrequencyDiscretization.hpp:60
float * _dataNegative
Pointer to the first negative mesh point.
Definition: FrequencyDiscretization.hpp:358
FrequencyIterator last() const
Retrieve iterator to the last mesh point; This is the positive value with the largest absolute value.
Definition: FrequencyDiscretization.hpp:231
bool operator>=(const FrequencyIterator &rhs) const
Greater or equal comparison operator.
Definition: FrequencyDiscretization.hpp:126
~FrequencyDiscretization()
Destroy the FrequencyDiscretization object.
Definition: FrequencyDiscretization.hpp:201
FrequencyIterator(float *p)
Construct a new FrequencyIterator object, and initialize to a specific frequency value.
Definition: FrequencyDiscretization.hpp:28
void interpolateOffset(const float w, int &lowerOffset, int &upperOffset, float &bias) const
Perform an interpolation between mesh points for an arbitrary positive frequency.
Definition: FrequencyDiscretization.hpp:326
Descriptor object for exceptions.
Definition: Exception.hpp:17
FrequencyDiscretization(const std::vector< float > &values)
Construct a frequency discretization based on a list of specified mesh points. The list of specified ...
Definition: FrequencyDiscretization.hpp:174
float * _data
Pointer to the first positive mesh point. Stored contiuously after FrequencyDiscretization::_dataNega...
Definition: FrequencyDiscretization.hpp:357
Lightweight macro library for assertions.
bool operator<(const FrequencyIterator &rhs) const
Lesser comparison operator.
Definition: FrequencyDiscretization.hpp:138
bool operator==(const FrequencyIterator &rhs) const
Iterator comparison.
Definition: FrequencyDiscretization.hpp:49
FrequencyIterator lesser(const float w) const
Retrieve an iterator to the closest mesh point that is lesser than the specified frequency value....
Definition: FrequencyDiscretization.hpp:253
FrequencyIterator operator-(const int rhs) const
Iterator subtraction operator.
Definition: FrequencyDiscretization.hpp:104
@ ArgumentError
Argument error, raised when a function is invoked with an invalid argument.
Descriptor object for exceptions.
Lightweight logging interface with output filtering.
FrequencyIterator begin() const
Retrieve iterator to the first positive mesh point; This is the positive value with the smallest abso...
Definition: FrequencyDiscretization.hpp:211
bool operator<=(const FrequencyIterator &rhs) const
Lesser or equal comparison operator.
Definition: FrequencyDiscretization.hpp:149
int size
Number of positive mesh points.
Definition: FrequencyDiscretization.hpp:356
int offset(const float w) const
Return the number of iterator increments of a mesh point associated with a given frequency value,...
Definition: FrequencyDiscretization.hpp:306
FrequencyIterator greater(const float w) const
Retrieve an iterator to the closest mesh point that is greater than the specified frequency value....
Definition: FrequencyDiscretization.hpp:279
float * _pointer
Pointer which the iterator currently points to.
Definition: FrequencyDiscretization.hpp:154
FrequencyIterator operator+(const int rhs) const
Iterator addition operator.
Definition: FrequencyDiscretization.hpp:93
Discretization of Matsubara frequency space.
Definition: FrequencyDiscretization.hpp:164
FrequencyIterator & operator++()
Prefix increment operator.
Definition: FrequencyDiscretization.hpp:70