Skip to content

File kernels.h

File List > code_source > cosmolattice > include > CosmoInterface > evolvers > kernels > kernels.h

Go to the documentation of this file

#ifndef COSMOINTERFACE_EVOLVERS_KERNELS_KERNELS_H
#define COSMOINTERFACE_EVOLVERS_KERNELS_KERNELS_H

#include "CosmoInterface/evolvers/kernels/scalarsingletkernels.h"
#include "CosmoInterface/evolvers/kernels/gwskernels.h"
#include "CosmoInterface/evolvers/kernels/scalefactorkernels.h"
#include "CosmoInterface/evolvers/kernels/complexscalarkernels.h"
#include "CosmoInterface/evolvers/kernels/su2doubletkernels.h"
#include "CosmoInterface/evolvers/kernels/u1kernels.h"
#include "CosmoInterface/evolvers/kernels/su2kernels.h"

#include "CosmoInterface/fieldsnumbering.h"

namespace TempLat::Kernels
{

  template <class Model, class KernelType, int N>
  static inline auto get(FieldsNumbering::fldS, Model &model, Tag<N> n, KernelType kt)
  {
    return ScalarSingletKernels::get_momentum(model, n, kt);
  }

  template <class Model, class KernelType, int N>
  static inline auto get(FieldsNumbering::piS, Model &model, Tag<N> n, KernelType kt)
  {
    return ScalarSingletKernels::get(model, n, kt);
  }

  template <class Model, class KernelType, int N>
  static inline auto get(FieldsNumbering::fldCS, Model &model, Tag<N> n, KernelType kt)
  {
    return ComplexScalarKernels::get_momentum(model, n, kt);
  }

  template <class Model, class KernelType, int N>
  static inline auto get(FieldsNumbering::piCS, Model &model, Tag<N> n, KernelType kt)
  {
    return ComplexScalarKernels::get(model, n, kt);
  }

  template <class Model, class KernelType, int N>
  static inline auto get(FieldsNumbering::fldSU2Doublet, Model &model, Tag<N> n, KernelType kt)
  {
    return SU2DoubletKernels::get_momentum(model, n, kt);
  }

  template <class Model, class KernelType, int N>
  static inline auto get(FieldsNumbering::piSU2Doublet, Model &model, Tag<N> n, KernelType kt)
  {
    return SU2DoubletKernels::get(model, n, kt);
  }

  template <class Model, class KernelType, int N>
  static inline auto get(FieldsNumbering::fldU1, Model &model, Tag<N> n, KernelType kt)
  {
    return U1Kernels::get_momentum(model, n, kt);
  }

  template <class Model, class KernelType, int N>
  static inline auto get(FieldsNumbering::piU1, Model &model, Tag<N> n, KernelType kt)
  {
    return U1Kernels::get(model, n, kt);
  }

  template <class Model, class KernelType, int N>
  static inline auto get(FieldsNumbering::fldSU2, Model &model, Tag<N> n, KernelType kt)
  {
    return SU2Kernels::get_momentum(model, n, kt);
  }

  template <class Model, class KernelType, int N>
  static inline auto get(FieldsNumbering::piSU2, Model &model, Tag<N> n, KernelType kt)
  {
    return SU2Kernels::get(model, n, kt);
  }
} // namespace TempLat::Kernels

#endif