SpinParser
1.0
|
Two-particle vertex implementation for time reversal invariant models. More...
#include <TRIVertexTwoParticle.hpp>
Public Types | |
enum | FrequencyChannel { FrequencyChannel::S, FrequencyChannel::T, FrequencyChannel::U, FrequencyChannel::All, FrequencyChannel::None } |
Indicator for frequency channels that exactly lie on frequency mesh points. More... | |
Public Member Functions | |
TRIVertexTwoParticle () | |
Construct a new TRIVertexTwoParticle object and initialize all entries to zero. | |
~TRIVertexTwoParticle () | |
Destroy the TRIVertexTwoParticle object. | |
void | expandIterator (int iterator, LatticeIterator &i1, float &s, float &t, float &u, SpinComponent &s1, SpinComponent &s2) const |
Expand a linear iterator in the range [0,size) that iterates over all vertex entries. More... | |
void | expandIterator (int iterator, float &s, float &t, float &u) const |
Expand a linear iterator in the range [0,sizeFrequency) that iterates over all paramtetrized frequency values. More... | |
float & | getValueRef (const int iterator) const |
Directly access a vertex value via a linear iterator in the range [0,size). More... | |
float | getValue (LatticeIterator i1, LatticeIterator i2, float s, float t, float u, SpinComponent s1, SpinComponent s2, const FrequencyChannel channel) const |
Access vertex value at arbitrary lattice sites, frequencies, and spin components. More... | |
template<int n> | |
float | getValue (LatticeIterator i1, LatticeIterator i2, SpinComponent s1, SpinComponent s2, const TRIVertexTwoParticleAccessBuffer< n > &accessBuffer) const |
Access vertex value at arbitrary lattice sites and spin components via a given access buffer. More... | |
template<int n> | |
float | getValueLocal (SpinComponent s1, SpinComponent s2, const TRIVertexTwoParticleAccessBuffer< n > &accessBuffer) const |
Access vertex value locally at arbitrary spin components via a given access buffer. More... | |
template<int n> | |
void | getValueSuperbundle (const TRIVertexTwoParticleAccessBuffer< n > &accessBuffer, ValueSuperbundle< float, 16 > &superbundle) const |
Bundled vertex access on all lattice sites and spin components simultaneously via a given access buffer. More... | |
TRIVertexTwoParticleAccessBuffer< 4 > | generateAccessBuffer (float s, float t, float u, const FrequencyChannel channel) const |
Generate an access buffer for a set of frequencies where one of them (specified by channel) exactly lies on the frequency mesh. More... | |
TRIVertexTwoParticleAccessBuffer< 8 > | generateAccessBuffer (float s, float t, float u) const |
Generate an access buffer for an arbitrary set of frequencies. More... | |
float | _directAccessMapFrequencyExchange (const int siteOffset, const int sOffset, const int tOffset, const int uOffset, const SpinComponent s1, const SpinComponent s2) const |
Directly access a vertex via given spin components, frequency, and site offsets, where sOffset may be lesser than uOffset. More... | |
float | _directAccess (const int siteOffset, const int sOffset, const int tOffset, const int uOffset, const SpinComponent s1, const SpinComponent s2) const |
Directly access a vertex via given spin components, frequency, and site offsets, where sOffset >= uOffset. More... | |
template<int n> | |
void | _generateAccessBufferOffsetMapFrequencyExchange (const int sOffset, const int tOffset, const int uOffset, const int abIndex, TRIVertexTwoParticleAccessBuffer< n > &ab) const |
Calculate the total memory offset from given frequency offsets, where sOffset may be lesser than uOffset. Write the result to the specified entry in an access buffer. More... | |
float | _zeta (const int s1) const |
Helper function for vertex symmetries. Returns -1 if the argument is spin-like and +1 if it is density-like. More... | |
Public Attributes | |
int | size |
Size of the vertex (number of elements). | |
int | sizeFrequency |
Size of the vertex in the frequency subspace (number of elements). | |
float * | _data |
Vertex data. | |
int | _memoryStep [4] |
Memory stride width. | |
Two-particle vertex implementation for time reversal invariant models.
|
strong |
|
inline |
Directly access a vertex via given spin components, frequency, and site offsets, where sOffset >= uOffset.
siteOffset | Lattice site offset (number of elements). |
sOffset | First frequency offset (number of elements). |
tOffset | Second frequency offset (number of elements). |
uOffset | Third frequency offset (number of elements). |
s1 | First vertex channel. |
s2 | Second vertex channel. |
|
inline |
Directly access a vertex via given spin components, frequency, and site offsets, where sOffset may be lesser than uOffset.
siteOffset | Lattice site offset (number of elements). |
sOffset | First frequency offset (number of elements). |
tOffset | Second frequency offset (number of elements). |
uOffset | Third frequency offset (number of elements). |
s1 | First vertex channel. |
s2 | Second vertex channel. |
|
inline |
Calculate the total memory offset from given frequency offsets, where sOffset may be lesser than uOffset. Write the result to the specified entry in an access buffer.
n | Number of support sites in the access buffer. |
[in] | sOffset | First frequency offset (number of elements). |
[in] | tOffset | Second frequency offset (number of elements). |
[in] | uOffset | Third frequency offset (number of elements). |
[in] | abIndex | Index of the access buffer entry to write. |
ab | Access buffer. |
|
inline |
Helper function for vertex symmetries. Returns -1 if the argument is spin-like and +1 if it is density-like.
s1 | Spin argument. |
|
inline |
Expand a linear iterator in the range [0,sizeFrequency) that iterates over all paramtetrized frequency values.
[in] | iterator | Linear iterator. |
[out] | s | First frequency argument. |
[out] | t | Second frequency argument. |
[out] | u | Third frequency argument. |
|
inline |
Expand a linear iterator in the range [0,size) that iterates over all vertex entries.
[in] | iterator | Linear iterator. |
[out] | i1 | Lattice site iterator. |
[out] | s | First frequency argument. |
[out] | t | Second frequency argument. |
[out] | u | Third frequency argument. |
[out] | s1 | First vertex channel. |
[out] | s2 | Second vertex channel. |
|
inline |
Generate an access buffer for an arbitrary set of frequencies.
s | First frequency argument. |
t | Second frequency argument. |
u | Third frequency argument. |
|
inline |
Generate an access buffer for a set of frequencies where one of them (specified by channel) exactly lies on the frequency mesh.
s | First frequency argument. |
t | Second frequency argument. |
u | Third frequency argument. |
channel | Frequency channel. |
|
inline |
Access vertex value at arbitrary lattice sites, frequencies, and spin components.
i1 | First lattice site argument. |
i2 | Second lattice site argument. |
s | First frequency argument. |
t | Second frequency argument. |
u | Third frequency argument. |
s1 | First vertex channel. |
s2 | Second vertex channel. |
channel | Frequency channel. |
|
inline |
Access vertex value at arbitrary lattice sites and spin components via a given access buffer.
n | Number of support sites in the access buffer. |
i1 | First lattice site argument. |
i2 | Second lattice site argument. |
s1 | First vertex channel. |
s2 | Second vertex channel. |
accessBuffer | Access buffer. |
|
inline |
Access vertex value locally at arbitrary spin components via a given access buffer.
n | Number of support sites in the access buffer. |
s1 | First vertex channel. |
s2 | Second vertex channel. |
accessBuffer | Access buffer. |
|
inline |
Directly access a vertex value via a linear iterator in the range [0,size).
iterator | Linear iterator. |
|
inline |
Bundled vertex access on all lattice sites and spin components simultaneously via a given access buffer.
n | Number of support sites in the access buffer. |
[in] | accessBuffer | Access buffer. |
[out] | superbundle | Vertex value bundle. |