140 using OriginalType =
typename Transform<linear_problem_type, linear_problem_type>::OriginalType;
141 using OriginalConstType =
typename Transform<linear_problem_type, linear_problem_type>::OriginalConstType;
142 using NewType =
typename Transform<linear_problem_type, linear_problem_type>::NewType;
143 using NewConstType =
typename Transform<linear_problem_type, linear_problem_type>::NewConstType;
145 using nonconst_local_inds_host_view_type =
typename row_matrix_type::nonconst_local_inds_host_view_type;
146 using nonconst_global_inds_host_view_type =
typename row_matrix_type::nonconst_global_inds_host_view_type;
147 using nonconst_values_host_view_type =
typename row_matrix_type::nonconst_values_host_view_type;
152 using local_ptr_view_type =
typename crs_matrix_type::row_ptrs_device_view_type;
153 using local_ind_view_type =
typename crs_matrix_type::local_inds_device_view_type;
154 using local_val_view_type =
typename crs_matrix_type::local_matrix_device_type::values_type;
155 using const_local_val_view_type =
typename local_val_view_type::const_type;
157 using impl_scalar_type =
typename multivector_type::impl_scalar_type;
158 using local_multivector_type =
typename multivector_type::dual_view_type::t_dev;
159 using const_local_multivector_type =
typename local_multivector_type::const_type;
161 using local_vector_int_type =
typename vector_type_int::dual_view_type::t_dev;
163 using device_type =
typename Node::device_type;
164 using vector_view_type_int = Kokkos::View<local_ordinal_type*, device_type>;
165 using vector_view_type_scalar = Kokkos::View<impl_scalar_type*, device_type>;
168 using range_policy = Kokkos::RangePolicy<execution_space>;
284 Teuchos::RCP<linear_problem_type>
FullProblem()
const {
return (FullProblem_); }
287 Teuchos::RCP<linear_problem_type>
ReducedProblem()
const {
return (ReducedProblem_); }
290 Teuchos::RCP<row_matrix_type>
FullMatrix()
const {
return (FullMatrix_); }
293 Teuchos::RCP<crs_matrix_type>
ReducedMatrix()
const {
return ReducedMatrix_; }
310 Teuchos::RCP<crs_matrix_type> FullCrsMatrix()
const {
return (FullCrsMatrix_); }
312 Teuchos::RCP<const map_type> FullMatrixRowMap()
const {
return (
FullMatrix()->getRowMap()); }
313 Teuchos::RCP<const map_type> FullMatrixColMap()
const {
return (
FullMatrix()->getColMap()); }
314 Teuchos::RCP<const map_type> FullMatrixDomainMap()
const {
return (
FullMatrix()->getDomainMap()); }
315 Teuchos::RCP<const map_type> FullMatrixRangeMap()
const {
return (
FullMatrix()->getRangeMap()); }
318 int Setup(
const Teuchos::RCP<linear_problem_type>& Problem);
319 void InitFullMatrixAccess();
321 void GetRow(local_ordinal_type localRow,
size_t& NumIndices,
322 Teuchos::Array<local_ordinal_type>& localIndices);
323 void GetRow(LocalOrdinal Row,
size_t& NumIndices, Teuchos::ArrayView<const Scalar>& Values,
324 Teuchos::ArrayView<const LocalOrdinal>& Indices);
326 void GetRowGCIDs(LocalOrdinal Row,
size_t& NumIndices, Teuchos::ArrayView<const Scalar>& Values,
327 Teuchos::Array<GlobalOrdinal>& GlobalIndices);
329 void CreatePostSolveArrays(vector_type_LO localRowIDofSingletonCol,
330 vector_type_LO ColProfiles,
331 vector_type_LO NewColProfiles,
332 vector_type_LO ColHasRowWithSingleton);
334 void ConstructRedistributeExporter(Teuchos::RCP<const map_type> SourceMap, Teuchos::RCP<const map_type> TargetMap,
335 Teuchos::RCP<export_type>& RedistributeExporter,
336 Teuchos::RCP<const map_type>& RedistributeMap);
338 Teuchos::RCP<const map_type> GenerateReducedMap(
const Teuchos::RCP<const map_type>& originalMap,
339 const Teuchos::RCP<vector_type_int>& mapColors,
340 int color = 0,
bool locally_sort_gids =
true);
342 Teuchos::RCP<linear_problem_type> FullProblem_;
343 Teuchos::RCP<linear_problem_type> ReducedProblem_;
344 Teuchos::RCP<row_matrix_type> FullMatrix_;
345 Teuchos::RCP<crs_matrix_type> FullCrsMatrix_;
346 Teuchos::RCP<crs_matrix_type> ReducedMatrix_;
347 Teuchos::RCP<multivector_type> ReducedRHS_;
348 Teuchos::RCP<multivector_type> ReducedLHS_;
350 Teuchos::RCP<const map_type> ReducedMatrixRowMap_;
351 Teuchos::RCP<const map_type> ReducedMatrixColMap_;
352 Teuchos::RCP<const map_type> ReducedMatrixDomainMap_;
353 Teuchos::RCP<const map_type> ReducedMatrixRangeMap_;
354 Teuchos::RCP<const map_type> OrigReducedMatrixDomainMap_;
355 Teuchos::RCP<import_type> Full2ReducedRHSImporter_;
356 Teuchos::RCP<import_type> Full2ReducedLHSImporter_;
357 Teuchos::RCP<export_type> RedistributeDomainExporter_;
359 vector_view_type_int ColSingletonRowLIDs_;
360 vector_view_type_int ColSingletonColLIDs_;
361 vector_view_type_int ColSingletonPivotLIDs_;
362 vector_view_type_scalar ColSingletonPivots_;
366 local_ordinal_type globalNumSingletonRows_;
367 local_ordinal_type globalNumSingletonCols_;
368 double RatioOfDimensions_;
369 double RatioOfNonzeros_;
371 bool HaveReducedProblem_;
374 bool SymmetricElimination_;
376 Teuchos::RCP<multivector_type> tempExportX_;
377 Teuchos::RCP<multivector_type> tempX_;
378 Teuchos::RCP<multivector_type> tempB_;
382 local_ordinal_type localMaxNumRowEntries_;
384 Teuchos::RCP<vector_type_int> RowMapColors_;
385 Teuchos::RCP<vector_type_int> ColMapColors_;
386 bool FullMatrixIsCrsMatrix_;