10#ifndef MUELU_GEOMETRICINTERPOLATIONPFACTORY_KOKKOS_DECL_HPP
11#define MUELU_GEOMETRICINTERPOLATIONPFACTORY_KOKKOS_DECL_HPP
14#include <Teuchos_SerialDenseMatrix.hpp>
15#include <Teuchos_SerialDenseVector.hpp>
16#include <Teuchos_SerialDenseSolver.hpp>
18#include "Xpetra_CrsGraph_fwd.hpp"
20#include "MueLu_PFactory.hpp"
26template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
28#undef MUELU_GEOMETRICINTERPOLATIONPFACTORY_KOKKOS_SHORT
33 using real_type =
typename Teuchos::ScalarTraits<SC>::coordinateType;
37#if KOKKOS_VERSION >= 40799
38 using impl_scalar_type =
typename KokkosKernels::ArithTraits<real_type>::val_type;
85 KOKKOS_INLINE_FUNCTION
92 void BuildConstantP(RCP<Matrix>& P, RCP<const CrsGraph>& prolongatorGraph, RCP<Matrix>& A)
const;
95 void BuildLinearP(RCP<Matrix>& A, RCP<const CrsGraph>& prolongatorGraph,
96 RCP<realvaluedmultivector_type>& fineCoordinates,
97 RCP<realvaluedmultivector_type>& ghostCoordinates,
98 const int numDimensions, RCP<Matrix>& P)
const;
100 const Array<Array<real_type> > coord,
101 Array<real_type>& stencil)
const;
103 const Teuchos::SerialDenseVector<LO, real_type> parametricCoordinates,
110#define MUELU_GEOMETRICINTERPOLATIONPFACTORY_KOKKOS_SHORT
typename Node::execution_space execution_space
typename Teuchos::ScalarTraits< SC >::coordinateType real_type
virtual ~GeometricInterpolationPFactory_kokkos()
Destructor.
GeometricInterpolationPFactory_kokkos()
Constructor.
void DeclareInput(Level &fineLevel, Level &coarseLevel) const
Input.
void ComputeLinearInterpolationStencil(const int numDimensions, const int numInterpolationPoints, const Array< Array< real_type > > coord, Array< real_type > &stencil) const
Xpetra::MultiVector< real_type, LO, GO, Node > realvaluedmultivector_type
void GetInterpolationFunctions(const LO numDimensions, const Teuchos::SerialDenseVector< LO, real_type > parametricCoordinates, real_type functions[4][8]) const
void Build(Level &fineLevel, Level &coarseLevel) const
Build an object with this factory.
typename Kokkos::ArithTraits< real_type >::val_type impl_scalar_type
void BuildP(Level &fineLevel, Level &coarseLevel) const
Abstract Build method.
typename Kokkos::View< impl_scalar_type **, Kokkos::LayoutLeft, device_type > coord_view_type
void BuildConstantP(RCP< Matrix > &P, RCP< const CrsGraph > &prolongatorGraph, RCP< Matrix > &A) const
typename Node::device_type device_type
void BuildLinearP(RCP< Matrix > &A, RCP< const CrsGraph > &prolongatorGraph, RCP< realvaluedmultivector_type > &fineCoordinates, RCP< realvaluedmultivector_type > &ghostCoordinates, const int numDimensions, RCP< Matrix > &P) const
RCP< const ParameterList > GetValidParameterList() const
Return a const parameter list of valid parameters that setParameterList() will accept.
Container class for mesh layout and indices calculation.
Class that holds all level-specific information.
Factory that provides an interface for a concrete implementation of a prolongation operator.
Namespace for MueLu classes and methods.
KOKKOS_INLINE_FUNCTION void operator()(const LO nodeIdx) const
coord_view_type coarseCoordView_
IndexManager_kokkos geoData_
coord_view_type fineCoordView_