SpinParser  1.0
Public Types | Public Member Functions | Public Attributes | List of all members
SU2VertexTwoParticle Struct Reference

Two-particle vertex implementation for SU(2) models. More...

#include <SU2VertexTwoParticle.hpp>

Public Types

enum  Symmetry : int { Symmetry::Spin = 0, Symmetry::Density = 1 }
 Enumeration of the different vertex channels. More...
 
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

 SU2VertexTwoParticle ()
 Construct a new SU2VertexTwoParticle object and initialize all entries to zero.
 
 ~SU2VertexTwoParticle ()
 Destroy the SU2VertexTwoParticle object.
 
void expandIterator (int iterator, LatticeIterator &i1, float &s, float &t, float &u) 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 SU2VertexTwoParticle::Symmetry symmetry) 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, const SU2VertexTwoParticle::Symmetry symmetry, const SU2VertexTwoParticle::FrequencyChannel channel) const
 Access vertex value at arbitrary lattice sites, frequencies, and symmetry. More...
 
template<int n>
float getValue (const LatticeIterator i1, const LatticeIterator i2, const SU2VertexTwoParticle::Symmetry symmetry, const SU2VertexTwoParticleAccessBuffer< n > &accessBuffer) const
 Access vertex value at arbitrary lattice sites and symmetry via a given access buffer. More...
 
template<int n>
float getValueLocal (const SU2VertexTwoParticle::Symmetry symmetry, const SU2VertexTwoParticleAccessBuffer< n > &accessBuffer) const
 Access vertex value locally at arbitrary symmetry via a given access buffer. More...
 
template<int n>
void getValueSuperbundle (const SU2VertexTwoParticleAccessBuffer< n > &accessBuffer, ValueSuperbundle< float, 2 > &superbundle) const
 Bundled vertex access on all lattice sites and symmetries simultaneously via a given access buffer. More...
 
SU2VertexTwoParticleAccessBuffer< 4 > generateAccessBuffer (float s, float t, float u, const SU2VertexTwoParticle::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. Frequency channel must be either FrequencyChannel::S, FrequencyChannel::T, FrequencyChannel::U. More...
 
SU2VertexTwoParticleAccessBuffer< 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 SU2VertexTwoParticle::Symmetry symmetry) const
 Directly access a vertex via given 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 SU2VertexTwoParticle::Symmetry symmetry) const
 Directly access a vertex via given frequency and site offsets, where sOffset >= uOffset. More...
 
int _generateAccessBufferOffset (const int sOffset, const int tOffset, const int uOffset, int &signFlag) const
 Calculate the total memory offset (number of elements) from given frequency offsets, where sOffset may be lesser than uOffset. More...
 

Public Attributes

int size
 Size of the vertex per vertex channel (number of elements).
 
int sizeFrequency
 Size of the vertex per vertex channel in the frequency subspace (number of elements).
 
float * _dataSS
 Spin channel of the vertex.
 
float * _dataDD
 Density channel of the vertex.
 
int _memoryStepLatticeT
 Memory stride width in the last-2 dimension.
 
int _memoryStepLattice
 Memory stride width in the last-1 dimension.
 

Detailed Description

Two-particle vertex implementation for SU(2) models.

Member Enumeration Documentation

◆ FrequencyChannel

Indicator for frequency channels that exactly lie on frequency mesh points.

Enumerator

s-channel.

t-channel.

u-channel.

All 

All channels.

None 

No channel.

◆ Symmetry

enum SU2VertexTwoParticle::Symmetry : int
strong

Enumeration of the different vertex channels.

Enumerator
Spin 

Spin-type vertex.

Density 

Density-type vertex.

Member Function Documentation

◆ _directAccess()

float SU2VertexTwoParticle::_directAccess ( const int  siteOffset,
const int  sOffset,
const int  tOffset,
const int  uOffset,
const SU2VertexTwoParticle::Symmetry  symmetry 
) const
inline

Directly access a vertex via given frequency and site offsets, where sOffset >= uOffset.

Parameters
siteOffsetLattice site offset (number of elements).
sOffsetFirst frequency offset (number of elements).
tOffsetSecond frequency offset (number of elements).
uOffsetThird frequency offset (number of elements).
symmetryVertex channel.
Returns
float Vertex value.

◆ _directAccessMapFrequencyExchange()

float SU2VertexTwoParticle::_directAccessMapFrequencyExchange ( const int  siteOffset,
const int  sOffset,
const int  tOffset,
const int  uOffset,
const SU2VertexTwoParticle::Symmetry  symmetry 
) const
inline

Directly access a vertex via given frequency and site offsets, where sOffset may be lesser than uOffset.

Parameters
siteOffsetLattice site offset (number of elements).
sOffsetFirst frequency offset (number of elements).
tOffsetSecond frequency offset (number of elements).
uOffsetThird frequency offset (number of elements).
symmetryVertex channel.
Returns
float Vertex value.

◆ _generateAccessBufferOffset()

int SU2VertexTwoParticle::_generateAccessBufferOffset ( const int  sOffset,
const int  tOffset,
const int  uOffset,
int &  signFlag 
) const
inline

Calculate the total memory offset (number of elements) from given frequency offsets, where sOffset may be lesser than uOffset.

Parameters
[in]sOffsetFirst frequency offset (number of elements).
[in]tOffsetSecond frequency offset (number of elements).
[in]uOffsetThird frequency offset (number of elements).
[out]signFlagSign flag to be stored in the access buffer.
Returns
int Memory offset (number of elements).

◆ expandIterator() [1/2]

void SU2VertexTwoParticle::expandIterator ( int  iterator,
float &  s,
float &  t,
float &  u 
) const
inline

Expand a linear iterator in the range [0,sizeFrequency) that iterates over all paramtetrized frequency values.

Parameters
[in]iteratorLinear iterator.
[out]sFirst frequency argument.
[out]tSecond frequency argument.
[out]uThird frequency argument.

◆ expandIterator() [2/2]

void SU2VertexTwoParticle::expandIterator ( int  iterator,
LatticeIterator i1,
float &  s,
float &  t,
float &  u 
) const
inline

Expand a linear iterator in the range [0,size) that iterates over all vertex entries.

Parameters
[in]iteratorLinear iterator.
[out]i1Lattice site iterator.
[out]sFirst frequency argument.
[out]tSecond frequency argument.
[out]uThird frequency argument.

◆ generateAccessBuffer() [1/2]

SU2VertexTwoParticleAccessBuffer<8> SU2VertexTwoParticle::generateAccessBuffer ( float  s,
float  t,
float  u 
) const
inline

Generate an access buffer for an arbitrary set of frequencies.

Parameters
sFirst frequency argument.
tSecond frequency argument.
uThird frequency argument.
Returns
SU2VertexTwoParticleAccessBuffer<8> Access buffer.

◆ generateAccessBuffer() [2/2]

SU2VertexTwoParticleAccessBuffer<4> SU2VertexTwoParticle::generateAccessBuffer ( float  s,
float  t,
float  u,
const SU2VertexTwoParticle::FrequencyChannel  channel 
) const
inline

Generate an access buffer for a set of frequencies where one of them (specified by channel) exactly lies on the frequency mesh. Frequency channel must be either FrequencyChannel::S, FrequencyChannel::T, FrequencyChannel::U.

Parameters
sFirst frequency argument.
tSecond frequency argument.
uThird frequency argument.
channelFrequency channel.
Returns
SU2VertexTwoParticleAccessBuffer<4> Access buffer.

◆ getValue() [1/2]

template<int n>
float SU2VertexTwoParticle::getValue ( const LatticeIterator  i1,
const LatticeIterator  i2,
const SU2VertexTwoParticle::Symmetry  symmetry,
const SU2VertexTwoParticleAccessBuffer< n > &  accessBuffer 
) const
inline

Access vertex value at arbitrary lattice sites and symmetry via a given access buffer.

Template Parameters
nNumber of support sites in the access buffer.
Parameters
i1First lattice site argument.
i2Second lattice site argument.
symmetryVertex channel.
accessBufferAccess buffer.
Returns
float Vertex value.

◆ getValue() [2/2]

float SU2VertexTwoParticle::getValue ( LatticeIterator  i1,
LatticeIterator  i2,
float  s,
float  t,
float  u,
const SU2VertexTwoParticle::Symmetry  symmetry,
const SU2VertexTwoParticle::FrequencyChannel  channel 
) const
inline

Access vertex value at arbitrary lattice sites, frequencies, and symmetry.

Parameters
i1First lattice site argument.
i2Second lattice site argument.
sFirst frequency argument.
tSecond frequency argument.
uThird frequency argument.
symmetryVertex channel.
channelFrequency channel.
Returns
float Vertex value.

◆ getValueLocal()

template<int n>
float SU2VertexTwoParticle::getValueLocal ( const SU2VertexTwoParticle::Symmetry  symmetry,
const SU2VertexTwoParticleAccessBuffer< n > &  accessBuffer 
) const
inline

Access vertex value locally at arbitrary symmetry via a given access buffer.

Template Parameters
nNumber of support sites in the access buffer.
Parameters
symmetryVertex channel.
accessBufferAccess buffer.
Returns
float Vertex value.

◆ getValueRef()

float& SU2VertexTwoParticle::getValueRef ( const int  iterator,
const SU2VertexTwoParticle::Symmetry  symmetry 
) const
inline

Directly access a vertex value via a linear iterator in the range [0,size).

Parameters
iteratorLinear iterator.
symmetryVertex channel.
Returns
float& Vertex value.

◆ getValueSuperbundle()

template<int n>
void SU2VertexTwoParticle::getValueSuperbundle ( const SU2VertexTwoParticleAccessBuffer< n > &  accessBuffer,
ValueSuperbundle< float, 2 > &  superbundle 
) const
inline

Bundled vertex access on all lattice sites and symmetries simultaneously via a given access buffer.

Template Parameters
nNumber of support sites in the access buffer.
Parameters
[in]accessBufferAccess buffer.
[out]superbundleVertex value bundle.

The documentation for this struct was generated from the following file: