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