Ifpack2 Templated Preconditioning Package Version 1.0
Loading...
Searching...
No Matches
Ifpack2::BlockTriDiContainerDetails Namespace Reference

Classes

struct  ImplNotAvailTag
struct  ImplObject
 forward declaration More...
struct  BlockTridiagScalarType
struct  BlockTridiags
struct  ExtractAndFactorizeTridiagsDefaultModeAndAlgo
struct  MultiVectorConverter
struct  SolveTridiagsDefaultModeAndAlgo< Kokkos::HostSpace >

Typedefs

using do_not_initialize_tag = Kokkos::ViewAllocateWithoutInitializing

Functions

template<typename MatrixType>
Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_import_type > createBlockCrsTpetraImporter (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A)
template<typename MatrixType>
Teuchos::RCP< AsyncableImport< MatrixType > > createBlockCrsAsyncImporter (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A)
template<typename MatrixType>
BlockHelperDetails::PartInterface< MatrixType > createPartInterface (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A, const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > &G, const Teuchos::Array< Teuchos::Array< typename BlockHelperDetails::ImplType< MatrixType >::local_ordinal_type > > &partitions, const typename BlockHelperDetails::ImplType< MatrixType >::local_ordinal_type n_subparts_per_part_in)
template<typename MatrixType>
BlockTridiags< MatrixType > createBlockTridiags (const BlockHelperDetails::PartInterface< MatrixType > &interf)
template<typename MatrixType>
void performSymbolicPhase (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A, const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > &g, const BlockHelperDetails::PartInterface< MatrixType > &interf, BlockTridiags< MatrixType > &btdm, BlockHelperDetails::AmD< MatrixType > &amd, const bool overlap_communication_and_computation, const Teuchos::RCP< AsyncableImport< MatrixType > > &async_importer, bool useSeqMethod)
template<typename MatrixType>
void performNumericPhase (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A, const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > &G, const BlockHelperDetails::PartInterface< MatrixType > &interf, BlockTridiags< MatrixType > &btdm, const typename BlockHelperDetails::ImplType< MatrixType >::magnitude_type tiny)
template<typename MatrixType>
int applyInverseJacobi (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A, const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > &G, const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_import_type > &tpetra_importer, const Teuchos::RCP< AsyncableImport< MatrixType > > &async_importer, const bool overlap_communication_and_computation, const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type &X, typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type &Y, typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type &Z, typename BlockHelperDetails::ImplType< MatrixType >::impl_scalar_type_1d_view &W, const BlockHelperDetails::PartInterface< MatrixType > &interf, const BlockTridiags< MatrixType > &btdm, const BlockHelperDetails::AmD< MatrixType > &amd, typename BlockHelperDetails::ImplType< MatrixType >::vector_type_1d_view &work, BlockHelperDetails::NormManager< MatrixType > &norm_manager, const typename BlockHelperDetails::ImplType< MatrixType >::impl_scalar_type &damping_factor, bool is_y_zero, const int max_num_sweeps, const typename BlockHelperDetails::ImplType< MatrixType >::magnitude_type tol, const int check_tol_every)

Detailed Description

Impl Tag

Typedef Documentation

◆ do_not_initialize_tag

using Ifpack2::BlockTriDiContainerDetails::do_not_initialize_tag = Kokkos::ViewAllocateWithoutInitializing

view decorators for unmanaged and const memory

Function Documentation

◆ createBlockCrsTpetraImporter()

template<typename MatrixType>
Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_import_type > Ifpack2::BlockTriDiContainerDetails::createBlockCrsTpetraImporter ( const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & A)

setup sequential importer

◆ createBlockCrsAsyncImporter()

template<typename MatrixType>
Teuchos::RCP< AsyncableImport< MatrixType > > Ifpack2::BlockTriDiContainerDetails::createBlockCrsAsyncImporter ( const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & A)

setup async importer

◆ createPartInterface()

template<typename MatrixType>
BlockHelperDetails::PartInterface< MatrixType > Ifpack2::BlockTriDiContainerDetails::createPartInterface ( const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & A,
const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > & G,
const Teuchos::Array< Teuchos::Array< typename BlockHelperDetails::ImplType< MatrixType >::local_ordinal_type > > & partitions,
const typename BlockHelperDetails::ImplType< MatrixType >::local_ordinal_type n_subparts_per_part_in )

setup part interface using the container partitions array

◆ createBlockTridiags()

template<typename MatrixType>
BlockTridiags< MatrixType > Ifpack2::BlockTriDiContainerDetails::createBlockTridiags ( const BlockHelperDetails::PartInterface< MatrixType > & interf)

block tridiags initialization from part interface

◆ performSymbolicPhase()

template<typename MatrixType>
void Ifpack2::BlockTriDiContainerDetails::performSymbolicPhase ( const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & A,
const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > & g,
const BlockHelperDetails::PartInterface< MatrixType > & interf,
BlockTridiags< MatrixType > & btdm,
BlockHelperDetails::AmD< MatrixType > & amd,
const bool overlap_communication_and_computation,
const Teuchos::RCP< AsyncableImport< MatrixType > > & async_importer,
bool useSeqMethod )

symbolic phase, on host : create R = A - D, pack D

◆ performNumericPhase()

template<typename MatrixType>
void Ifpack2::BlockTriDiContainerDetails::performNumericPhase ( const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & A,
const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > & G,
const BlockHelperDetails::PartInterface< MatrixType > & interf,
BlockTridiags< MatrixType > & btdm,
const typename BlockHelperDetails::ImplType< MatrixType >::magnitude_type tiny )

top level numeric interface

◆ applyInverseJacobi()

template<typename MatrixType>
int Ifpack2::BlockTriDiContainerDetails::applyInverseJacobi ( const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & A,
const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > & G,
const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_import_type > & tpetra_importer,
const Teuchos::RCP< AsyncableImport< MatrixType > > & async_importer,
const bool overlap_communication_and_computation,
const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type & X,
typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type & Y,
typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type & Z,
typename BlockHelperDetails::ImplType< MatrixType >::impl_scalar_type_1d_view & W,
const BlockHelperDetails::PartInterface< MatrixType > & interf,
const BlockTridiags< MatrixType > & btdm,
const BlockHelperDetails::AmD< MatrixType > & amd,
typename BlockHelperDetails::ImplType< MatrixType >::vector_type_1d_view & work,
BlockHelperDetails::NormManager< MatrixType > & norm_manager,
const typename BlockHelperDetails::ImplType< MatrixType >::impl_scalar_type & damping_factor,
bool is_y_zero,
const int max_num_sweeps,
const typename BlockHelperDetails::ImplType< MatrixType >::magnitude_type tol,
const int check_tol_every )

top level apply interface