114#undef MUELU_INTREPIDPCOARSENFACTORY_SHORT
120 typedef Intrepid2::Basis<typename Node::device_type::execution_space,double,double>
Basis;
162 const std::vector<bool> & hi_nodeIsOwned,
164 const std::vector<size_t> &lo_node_in_hi,
165 const Basis &lo_Basis,
166 const std::vector<LocalOrdinal> & hi_to_lo_map,
167 const Teuchos::RCP<const Map> & lo_colMap,
168 const Teuchos::RCP<const Map> & lo_domainMap,
169 const Teuchos::RCP<const Map> & hi_map,
170 Teuchos::RCP<Matrix>& P)
const;
175 const std::vector<bool> & hi_nodeIsOwned,
178 const Basis &lo_basis,
179 const std::vector<LocalOrdinal> & hi_to_lo_map,
180 const Teuchos::RCP<const Map> & lo_colMap,
181 const Teuchos::RCP<const Map> & lo_domainMap,
182 const Teuchos::RCP<const Map> & hi_map,
183 Teuchos::RCP<Matrix>& P)
const;
192 template<
class Scalar,
class KokkosExecutionSpace>
193 Teuchos::RCP<Intrepid2::Basis<KokkosExecutionSpace,Scalar,Scalar> >
BasisFactory(
const std::string & name,
int & degree);
195 template<
class Scalar,
class KokkosDeviceType>
196 void IntrepidGetLoNodeInHi(
const Teuchos::RCP<Intrepid2::Basis<typename KokkosDeviceType::execution_space,Scalar,Scalar> > &hi_basis,
197 const Teuchos::RCP<Intrepid2::Basis<typename KokkosDeviceType::execution_space,Scalar,Scalar> > &lo_basis,
198 std::vector<size_t> & lo_node_in_hi,
199 Kokkos::DynRankView<Scalar,KokkosDeviceType> & hi_DofCoords);
201 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node,
class LOFieldContainer>
202 void GenerateLoNodeInHiViaGIDs(
const std::vector<std::vector<size_t> > & candidates,
const LOFieldContainer & hi_elemToNode,
203 RCP<
const Xpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > & hi_columnMap,
204 LOFieldContainer & lo_elemToHiRepresentativeNode);
206 template <
class LocalOrdinal,
class LOFieldContainer>
208 const std::vector<bool> & hi_nodeIsOwned,
209 const std::vector<size_t> & lo_node_in_hi,
210 const Teuchos::ArrayRCP<const int> & hi_isDirichlet,
211 LOFieldContainer & lo_elemToNode,
212 std::vector<bool> & lo_nodeIsOwned,
213 std::vector<LocalOrdinal> & hi_to_lo_map,
214 int & lo_numOwnedNodes);
216 template <
class LocalOrdinal,
class LOFieldContainer>
218 const std::vector<bool> & hi_nodeIsOwned,
219 const LOFieldContainer & lo_elemToHiRepresentativeNode,
220 LOFieldContainer & lo_elemToNode,
221 std::vector<bool> & lo_nodeIsOwned,
222 std::vector<LocalOrdinal> & hi_to_lo_map,
223 int & lo_numOwnedNodes);
226 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
227 void GenerateColMapFromImport(
const Xpetra::Import<LocalOrdinal,GlobalOrdinal,Node> & hi_importer,
const std::vector<LocalOrdinal> &hi_to_lo_map,
const Xpetra::Map<LocalOrdinal,GlobalOrdinal,Node> & lo_domainMap,
const size_t & lo_columnMapLength, RCP<
const Xpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > & lo_columnMap);
230 template<
class Basis,
class SCFieldContainer>
231 void GenerateRepresentativeBasisNodes(
const Basis & basis,
const SCFieldContainer & ReferenceNodeLocations,
const double threshold, std::vector<std::vector<size_t> > & representative_node_candidates);
237 template<
class Basis,
class LOFieldContainer,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
239 std::vector<std::vector<LocalOrdinal> > &seeds,
240 const Xpetra::Map<LocalOrdinal,GlobalOrdinal,Node> &rowMap,
241 const Xpetra::Map<LocalOrdinal,GlobalOrdinal,Node> &columnMap);
void GenerateLinearCoarsening_pn_kirby_to_p1(const LOFieldContainer &hi_elemToNode, const std::vector< bool > &hi_nodeIsOwned, const SCFieldContainer &hi_DofCoords, const std::vector< size_t > &lo_node_in_hi, const Basis &lo_Basis, const std::vector< LocalOrdinal > &hi_to_lo_map, const Teuchos::RCP< const Map > &lo_colMap, const Teuchos::RCP< const Map > &lo_domainMap, const Teuchos::RCP< const Map > &hi_map, Teuchos::RCP< Matrix > &P) const
void GenerateLinearCoarsening_pn_kirby_to_pm(const LOFieldContainer &hi_elemToNode, const std::vector< bool > &hi_nodeIsOwned, const SCFieldContainer &hi_DofCoords, const LOFieldContainer &lo_elemToHiRepresentativeNode, const Basis &lo_basis, const std::vector< LocalOrdinal > &hi_to_lo_map, const Teuchos::RCP< const Map > &lo_colMap, const Teuchos::RCP< const Map > &lo_domainMap, const Teuchos::RCP< const Map > &hi_map, Teuchos::RCP< Matrix > &P) const
void FindGeometricSeedOrdinals(Teuchos::RCP< Basis > basis, const LOFieldContainer &elementToNodeMap, std::vector< std::vector< LocalOrdinal > > &seeds, const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > &rowMap, const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > &columnMap)
void IntrepidGetLoNodeInHi(const Teuchos::RCP< Intrepid2::Basis< typename KokkosDeviceType::execution_space, Scalar, Scalar > > &hi_basis, const Teuchos::RCP< Intrepid2::Basis< typename KokkosDeviceType::execution_space, Scalar, Scalar > > &lo_basis, std::vector< size_t > &lo_node_in_hi, Kokkos::DynRankView< Scalar, KokkosDeviceType > &hi_DofCoords)
void GenerateColMapFromImport(const Xpetra::Import< LocalOrdinal, GlobalOrdinal, Node > &hi_importer, const std::vector< LocalOrdinal > &hi_to_lo_map, const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > &lo_domainMap, const size_t &lo_columnMapLength, RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > &lo_columnMap)
void BuildLoElemToNode(const LOFieldContainer &hi_elemToNode, const std::vector< bool > &hi_nodeIsOwned, const std::vector< size_t > &lo_node_in_hi, const Teuchos::ArrayRCP< const int > &hi_isDirichlet, LOFieldContainer &lo_elemToNode, std::vector< bool > &lo_nodeIsOwned, std::vector< LocalOrdinal > &hi_to_lo_map, int &lo_numOwnedNodes)