Ifpack2 Templated Preconditioning Package  Version 1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Typedefs | Functions
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_block_crs_matrix_type > &A)
 
template<typename MatrixType >
Teuchos::RCP< AsyncableImport
< MatrixType > > 
createBlockCrsAsyncImporter (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_block_crs_matrix_type > &A)
 
template<typename MatrixType >
BlockHelperDetails::PartInterface
< MatrixType > 
createPartInterface (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_block_crs_matrix_type > &A, 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_block_crs_matrix_type > &A, const BlockHelperDetails::PartInterface< MatrixType > &interf, BlockTridiags< MatrixType > &btdm, BlockHelperDetails::AmD< MatrixType > &amd, const bool overlap_communication_and_computation)
 
template<typename MatrixType >
void performNumericPhase (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_block_crs_matrix_type > &A, 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_block_crs_matrix_type > &A, 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

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

view decorators for unmanaged and const memory

Function Documentation

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_block_crs_matrix_type > &  A)

setup sequential importer

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

setup async importer

template<typename MatrixType >
BlockHelperDetails::PartInterface<MatrixType> Ifpack2::BlockTriDiContainerDetails::createPartInterface ( const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_block_crs_matrix_type > &  A,
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

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

block tridiags initialization from part interface

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

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

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

top level numeric interface

template<typename MatrixType >
int Ifpack2::BlockTriDiContainerDetails::applyInverseJacobi ( const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_block_crs_matrix_type > &  A,
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