Skip to content

File su2base.h

File List > abstractmodel > su2base.h

Go to the documentation of this file

#ifndef TEMPLAT_COSMOINTERFACE_ABSTRACTMODEL_SU2BASE_H
#define TEMPLAT_COSMOINTERFACE_ABSTRACTMODEL_SU2BASE_H

#include "TempLat/lattice/algebra/su2algebra/su2algebra.h"
#include "TempLat/lattice/field/collections/vectorfieldcollection.h"
#include "CosmoInterface/fieldsnumbering.h"
#include "CosmoInterface/runparameters.h"

namespace TempLat
{

  template <int NDIM, typename T, size_t NSU2FLDS> class SU2Base
  {
  public:
    static constexpr size_t NSU2 = NSU2FLDS;

    // SU(2) gauge fields
    VectorFieldCollection<SU2Field<T, NDIM>, NSU2FLDS> fldSU2;
    VectorFieldCollection<SU2LieAlgebraField<T, NDIM>, NSU2FLDS> piSU2;

    // Averages SU2
    T SU2Mag2AvI, SU2Mag2AvSI;
    T SU2pi2AvSI, SU2pi2AvSIM, SU2pi2AvIM, SU2pi2AvI;

  protected:
    SU2Base(device::memory::host_ptr<MemoryToolBox<NDIM>> toolBox, const LatticeParameters<T> &par)
        : fldSU2("SU2Fld", toolBox, par), piSU2("pi_SU2Fld", toolBox, par),
          // Initialize average fields
          SU2Mag2AvI(0), SU2Mag2AvSI(0), SU2pi2AvSI(0), SU2pi2AvSIM(0), SU2pi2AvIM(0), SU2pi2AvI(0)
    {
    }
  };

} // namespace TempLat

#endif