46#ifndef MUELU_TENTATIVEPFACTORY_KOKKOS_DECL_HPP
47#define MUELU_TENTATIVEPFACTORY_KOKKOS_DECL_HPP
53#include <KokkosCompat_ClassicNodeAPI_Wrapper.hpp>
55#include "Teuchos_ScalarTraits.hpp"
57#include "Xpetra_CrsGraphFactory_fwd.hpp"
64#include "MueLu_PFactory.hpp"
107 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
110 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class DeviceType>
116 typedef Kokkos::RangePolicy<local_ordinal_type, execution_space>
range_type;
117 typedef Kokkos::Compat::KokkosDeviceWrapperNode<DeviceType>
node_type;
118 typedef typename Teuchos::ScalarTraits<Scalar>::coordinateType
real_type;
124#undef MUELU_TENTATIVEPFACTORY_KOKKOS_SHORT
138 RCP<const ParameterList> GetValidParameterList()
const;
143 void DeclareInput(
Level& fineLevel,
Level& coarseLevel)
const;
150 void Build (
Level& fineLevel,
Level& coarseLevel)
const;
151 void BuildP(
Level& fineLevel,
Level& coarseLevel)
const;
158 void BuildPuncoupledBlockCrs(
Level& coarseLevel, RCP<Matrix> A, RCP<Aggregates_kokkos> aggregates, RCP<AmalgamationInfo_kokkos> amalgInfo,
159 RCP<MultiVector> fineNullspace, RCP<const Map> coarseMap, RCP<Matrix>& Ptentative, RCP<MultiVector>& coarseNullspace,
const int levelID)
const;
162 bool isGoodMap(
const Map& rowMap,
const Map& colMap)
const;
166 void BuildPcoupled (RCP<Matrix> A, RCP<Aggregates_kokkos> aggregates,
167 RCP<AmalgamationInfo_kokkos> amalgInfo, RCP<MultiVector> fineNullspace,
168 RCP<const Map> coarseMap, RCP<Matrix>& Ptentative,
169 RCP<MultiVector>& coarseNullspace)
const;
171 void BuildPuncoupled(
Level& coarseLevel, RCP<Matrix> A, RCP<Aggregates_kokkos> aggregates,
172 RCP<AmalgamationInfo_kokkos> amalgInfo, RCP<MultiVector> fineNullspace,
173 RCP<const Map> coarseMap, RCP<Matrix>& Ptentative,
174 RCP<MultiVector>& coarseNullspace,
const int levelID)
const;
176 mutable bool bTransferCoordinates_ =
false;
182#define MUELU_TENTATIVEPFACTORY_KOKKOS_SHORT
MueLu::DefaultLocalOrdinal LocalOrdinal
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal
Class that holds all level-specific information.
Factory that provides an interface for a concrete implementation of a prolongation operator.
Xpetra::MultiVector< real_type, LocalOrdinal, GlobalOrdinal, node_type > RealValuedMultiVector
Kokkos::RangePolicy< local_ordinal_type, execution_space > range_type
TentativePFactory_kokkos()
Constructor.
LocalOrdinal local_ordinal_type
virtual ~TentativePFactory_kokkos()
Destructor.
DeviceType::execution_space execution_space
GlobalOrdinal global_ordinal_type
Teuchos::ScalarTraits< Scalar >::coordinateType real_type
Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > node_type
Namespace for MueLu classes and methods.