Skip to content

File gwbase.h

File List > abstractmodel > gwbase.h

Go to the documentation of this file

#ifndef TEMPLAT_COSMOINTERFACE_ABSTRACTMODEL_GWBASE_H
#define TEMPLAT_COSMOINTERFACE_ABSTRACTMODEL_GWBASE_H

#include <memory>
#include "TempLat/lattice/algebra/matrix3x3algebra/matrix3x3algebra.h"
#include "TempLat/util/rangeiteration/tag.h"
#include "TempLat/parameters/parameterparser.h"
#include "CosmoInterface/runparameters.h"

namespace TempLat
{

  template <int NDIM, typename T> class GWBase
  {
  public:

    std::unique_ptr<SymTracelessField<T, NDIM>> fldGWs;
    std::unique_ptr<SymTracelessField<T, NDIM>> piGWs;

  protected:
    GWBase(ParameterParser &parser, device::memory::host_ptr<MemoryToolBox<NDIM>> toolBox,
           const LatticeParameters<T> &par)
        : fldGWs(parser.get<bool>("withGWs", false)
                     ? std::make_unique<SymTracelessField<T, NDIM>>("fldGWs", toolBox, par)
                     : nullptr),
          piGWs(parser.get<bool>("withGWs", false)
                    ? std::make_unique<SymTracelessField<T, NDIM>>("piGWs", toolBox, par)
                    : nullptr)
    {
    }
  };

} // namespace TempLat

#endif