46 #ifndef MUELU_GENERALGEOMETRICPFACTORY_DECL_HPP 47 #define MUELU_GENERALGEOMETRICPFACTORY_DECL_HPP 49 #include <Teuchos_SerialDenseVector.hpp> 51 #include <Xpetra_MultiVector.hpp> 52 #include <Xpetra_Matrix_fwd.hpp> 55 #include "MueLu_PFactory.hpp" 62 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
115 template <
class Scalar =
double,
class LocalOrdinal =
int,
class GlobalOrdinal = LocalOrdinal,
class Node = KokkosClassic::DefaultNode::DefaultNodeType>
117 #undef MUELU_GENERALGEOMETRICPFACTORY_SHORT 134 RCP<const ParameterList> GetValidParameterList()
const;
139 void DeclareInput(
Level& fineLevel,
Level& coarseLevel)
const;
146 void Build (
Level& fineLevel,
Level& coarseLevel)
const;
147 void BuildP(
Level& fineLevel,
Level& coarseLevel)
const;
152 void MakeGeneralGeometricP(LO
const numDimension,
const Array<LO> mapDirL2G,
const Array<LO> mapDirG2L,
const Array<LO> lFineNodesPerDir,
153 const Array<LO> lCoarseNodesPerDir, Array<GO> gCoarseNodesPerDir, Array<GO> gFineNodesPerDir,
154 ArrayRCP<LO>
const coarseRate, LO
const endRate[3], LO
const offsets[6],
bool const ghostInterface[6],
155 const RCP<Xpetra::MultiVector<double,LO,GO,NO> >& fCoords, LO
const nnzP, LO
const dofsPerNode,
156 RCP<const Map>& stridedDomainMapP, RCP<Matrix> & Amat, RCP<Matrix>& P,
157 RCP<Xpetra::MultiVector<double,LO,GO,NO> >& cCoords, Array<GO> ghostsGIDs,
int interpolationOrder)
const;
159 void ComputeStencil(
const LO numDimension,
const Array<GO> currentNodeIndices,
const Array<GO> coarseNodeIndices,
160 const LO rate[3],
const double coord[9][3],
const int interpolationOrder, SC stencil[8])
const;
162 void ComputeConstantInterpolationStencil(
const LO numDimension,
const Array<GO> currentNodeIndices,
const Array<GO> coarseNodeIndices,
163 const LO rate[3], SC stencil[8])
const;
165 void ComputeLinearInterpolationStencil(
const LO numDimension,
const double coord[9][3], SC stencil[8])
const;
166 void GetInterpolationFunctions(
const LO numDimension,
const Teuchos::SerialDenseVector<LO,double> parameters,
double functions[4][8])
const;
168 void sh_sort_permute(
169 const typename Teuchos::Array<LocalOrdinal>::iterator& first1,
170 const typename Teuchos::Array<LocalOrdinal>::iterator& last1,
171 const typename Teuchos::Array<LocalOrdinal>::iterator& first2,
172 const typename Teuchos::Array<LocalOrdinal>::iterator& last2)
const;
175 const typename Teuchos::Array<LocalOrdinal>::iterator& first1,
176 const typename Teuchos::Array<LocalOrdinal>::iterator& last1,
177 const typename Teuchos::Array<LocalOrdinal>::iterator& first2,
178 const typename Teuchos::Array<LocalOrdinal>::iterator& last2)
const;
184 #define MUELU_GENERALGEOMETRICPFACTORY_SHORT 185 #endif // MUELU_GENERALGEOMETRICPFACTORY_DECL_HPP
virtual ~GeneralGeometricPFactory()
Destructor.
GeneralGeometricPFactory()
Constructor.
Namespace for MueLu classes and methods.
Prolongator factory performing geometric coarsening.
Class that holds all level-specific information.
Factory that provides an interface for a concrete implementation of a prolongation operator...