ug4
ug::FetiLayouts< TAlgebra > Class Template Reference

Auxiliary class for handling of "FETI layouts". More...

#include <feti.h>

Public Types

typedef TAlgebra algebra_type
 
typedef TAlgebra::matrix_type matrix_type
 
typedef TAlgebra::vector_type vector_type
 

Public Member Functions

void create_layouts (ConstSmartPtr< AlgebraLayouts > stdLayouts, size_t numIndices, pcl::IDomainDecompositionInfo &DDInfo, bool bDebug=false)
 
 FetiLayouts ()
 
const std::vector< IndexLayout::Element > & get_dual_indices () const
 
const std::vector< IndexLayout::Element > & get_dual_master_indices () const
 
IndexLayoutget_dual_master_layout ()
 
const std::vector< IndexLayout::Element > & get_dual_nbr_master_indices () const
 
IndexLayoutget_dual_nbr_master_layout ()
 
const std::vector< IndexLayout::Element > & get_dual_nbr_slave_indices () const
 
IndexLayoutget_dual_nbr_slave_layout ()
 
const std::vector< IndexLayout::Element > & get_dual_slave_indices () const
 
IndexLayoutget_dual_slave_layout ()
 
IndexLayoutget_intra_sd_master_layout ()
 
pcl::ProcessCommunicatorget_intra_sd_process_communicator ()
 
IndexLayoutget_intra_sd_slave_layout ()
 
const std::vector< IndexLayout::Element > & get_primal_indices () const
 
const std::vector< IndexLayout::Element > & get_primal_master_indices () const
 
IndexLayoutget_primal_master_layout ()
 
const std::vector< IndexLayout::Element > & get_primal_slave_indices () const
 
IndexLayoutget_primal_slave_layout ()
 
const IndexLayoutget_std_master_layout ()
 
const pcl::ProcessCommunicatorget_std_process_communicator ()
 
const IndexLayoutget_std_slave_layout ()
 
void mat_set_dirichlet_on_dual (matrix_type &mat)
 
void mat_set_dirichlet_on_primal (matrix_type &mat)
 
void mat_use_intra_sd_communication (matrix_type &mat)
 
void mat_use_std_communication (matrix_type &mat)
 
void test_layouts (bool bPrint)
 
number vec_norm_on_identified_dual (vector_type &vec)
 calculates norm on dual More...
 
number vec_prod_on_identified_dual (const vector_type &vecSrc1, const vector_type &vecSrc2)
 
void vec_scale_add_on_dual (vector_type &vecDest, number alpha1, const vector_type &vecSrc1, number alpha2, const vector_type &vecSrc2)
 calculates vecDest = alpha1*vecSource1 + alpha2*vecSource2 on dual More...
 
void vec_scale_add_on_primal (vector_type &vecDest, number alpha1, const vector_type &vecSrc1, number alpha2, const vector_type &vecSrc2)
 calculates vecDest = alpha1*vecSource1 + alpha2*vecSource2 on primal More...
 
void vec_scale_append_on_dual (vector_type &vecInOut, const vector_type &vecSrc1, number alpha1)
 calculates vecInOut += alpha1*vecSrc1 on dual More...
 
void vec_scale_append_on_primal (vector_type &vecInOut, const vector_type &vecSrc1, number alpha1)
 calculates vecInOut += alpha1*vecSrc1 on primal More...
 
void vec_scale_assign_on_dual (vector_type &vecDest, const vector_type &vecSrc, number alpha)
 calculates vecDest = alpha*vecSrc on dual More...
 
void vec_scale_assign_on_primal (vector_type &vecDest, const vector_type &vecSrc, number alpha)
 calculates vecDest = alpha*vecSrc on primal More...
 
void vec_set_on_dual (vector_type &vecDest, number alpha)
 sets vecDest = alpha on dual More...
 
void vec_set_on_primal (vector_type &vecDest, number alpha)
 sets vecDest = alpha on primal More...
 
void vec_use_intra_sd_communication (vector_type &vec)
 
void vec_use_std_communication (vector_type &vec)
 

Protected Member Functions

void add_merge_sort_remove_doubles (std::vector< IndexLayout::Element > &vOut, const std::vector< IndexLayout::Element > &v)
 
void sort_and_remove_doubles (std::vector< IndexLayout::Element > &vIndex)
 

Protected Attributes

IndexLayout m_masterDualLayout
 
IndexLayout m_masterDualNbrLayout
 
IndexLayout m_masterPrimalLayout
 
IndexLayout m_slaveDualLayout
 
IndexLayout m_slaveDualNbrLayout
 
IndexLayout m_slavePrimalLayout
 
SmartPtr< AlgebraLayoutsm_spInnerLayouts
 
ConstSmartPtr< AlgebraLayoutsm_spStdLayouts
 
std::vector< IndexLayout::Elementm_vUniqueDualIndex
 
std::vector< IndexLayout::Elementm_vUniqueMasterDualIndex
 
std::vector< IndexLayout::Elementm_vUniqueMasterDualNbrIndex
 
std::vector< IndexLayout::Elementm_vUniquePrimalIndex
 
std::vector< IndexLayout::Elementm_vUniquePrimalMasterIndex
 
std::vector< IndexLayout::Elementm_vUniquePrimalSlaveIndex
 
std::vector< IndexLayout::Elementm_vUniqueSlaveDualIndex
 
std::vector< IndexLayout::Elementm_vUniqueSlaveDualNbrIndex
 

Detailed Description

template<typename TAlgebra>
class ug::FetiLayouts< TAlgebra >

Auxiliary class for handling of "FETI layouts".

This class groups all layouts used in FETI method together and provides useful functions on those.

Member Typedef Documentation

◆ algebra_type

template<typename TAlgebra >
typedef TAlgebra ug::FetiLayouts< TAlgebra >::algebra_type

◆ matrix_type

template<typename TAlgebra >
typedef TAlgebra::matrix_type ug::FetiLayouts< TAlgebra >::matrix_type

◆ vector_type

template<typename TAlgebra >
typedef TAlgebra::vector_type ug::FetiLayouts< TAlgebra >::vector_type

Constructor & Destructor Documentation

◆ FetiLayouts()

template<typename TAlgebra >
ug::FetiLayouts< TAlgebra >::FetiLayouts ( )
inline

Member Function Documentation

◆ add_merge_sort_remove_doubles()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::add_merge_sort_remove_doubles ( std::vector< IndexLayout::Element > &  vOut,
const std::vector< IndexLayout::Element > &  v 
)
inlineprotected

◆ create_layouts()

◆ get_dual_indices()

template<typename TAlgebra >
const std::vector<IndexLayout::Element>& ug::FetiLayouts< TAlgebra >::get_dual_indices ( ) const
inline

◆ get_dual_master_indices()

template<typename TAlgebra >
const std::vector<IndexLayout::Element>& ug::FetiLayouts< TAlgebra >::get_dual_master_indices ( ) const
inline

◆ get_dual_master_layout()

template<typename TAlgebra >
IndexLayout& ug::FetiLayouts< TAlgebra >::get_dual_master_layout ( )
inline

◆ get_dual_nbr_master_indices()

template<typename TAlgebra >
const std::vector<IndexLayout::Element>& ug::FetiLayouts< TAlgebra >::get_dual_nbr_master_indices ( ) const
inline

◆ get_dual_nbr_master_layout()

template<typename TAlgebra >
IndexLayout& ug::FetiLayouts< TAlgebra >::get_dual_nbr_master_layout ( )
inline

◆ get_dual_nbr_slave_indices()

template<typename TAlgebra >
const std::vector<IndexLayout::Element>& ug::FetiLayouts< TAlgebra >::get_dual_nbr_slave_indices ( ) const
inline

◆ get_dual_nbr_slave_layout()

template<typename TAlgebra >
IndexLayout& ug::FetiLayouts< TAlgebra >::get_dual_nbr_slave_layout ( )
inline

◆ get_dual_slave_indices()

template<typename TAlgebra >
const std::vector<IndexLayout::Element>& ug::FetiLayouts< TAlgebra >::get_dual_slave_indices ( ) const
inline

◆ get_dual_slave_layout()

template<typename TAlgebra >
IndexLayout& ug::FetiLayouts< TAlgebra >::get_dual_slave_layout ( )
inline

◆ get_intra_sd_master_layout()

template<typename TAlgebra >
IndexLayout& ug::FetiLayouts< TAlgebra >::get_intra_sd_master_layout ( )
inline

◆ get_intra_sd_process_communicator()

template<typename TAlgebra >
pcl::ProcessCommunicator& ug::FetiLayouts< TAlgebra >::get_intra_sd_process_communicator ( )
inline

◆ get_intra_sd_slave_layout()

template<typename TAlgebra >
IndexLayout& ug::FetiLayouts< TAlgebra >::get_intra_sd_slave_layout ( )
inline

◆ get_primal_indices()

template<typename TAlgebra >
const std::vector<IndexLayout::Element>& ug::FetiLayouts< TAlgebra >::get_primal_indices ( ) const
inline

◆ get_primal_master_indices()

template<typename TAlgebra >
const std::vector<IndexLayout::Element>& ug::FetiLayouts< TAlgebra >::get_primal_master_indices ( ) const
inline

◆ get_primal_master_layout()

template<typename TAlgebra >
IndexLayout& ug::FetiLayouts< TAlgebra >::get_primal_master_layout ( )
inline

◆ get_primal_slave_indices()

template<typename TAlgebra >
const std::vector<IndexLayout::Element>& ug::FetiLayouts< TAlgebra >::get_primal_slave_indices ( ) const
inline

◆ get_primal_slave_layout()

template<typename TAlgebra >
IndexLayout& ug::FetiLayouts< TAlgebra >::get_primal_slave_layout ( )
inline

◆ get_std_master_layout()

template<typename TAlgebra >
const IndexLayout& ug::FetiLayouts< TAlgebra >::get_std_master_layout ( )
inline

◆ get_std_process_communicator()

template<typename TAlgebra >
const pcl::ProcessCommunicator& ug::FetiLayouts< TAlgebra >::get_std_process_communicator ( )
inline

◆ get_std_slave_layout()

template<typename TAlgebra >
const IndexLayout& ug::FetiLayouts< TAlgebra >::get_std_slave_layout ( )
inline

◆ mat_set_dirichlet_on_dual()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::mat_set_dirichlet_on_dual ( matrix_type mat)
inline

◆ mat_set_dirichlet_on_primal()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::mat_set_dirichlet_on_primal ( matrix_type mat)
inline

◆ mat_use_intra_sd_communication()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::mat_use_intra_sd_communication ( matrix_type mat)
inline

◆ mat_use_std_communication()

◆ sort_and_remove_doubles()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::sort_and_remove_doubles ( std::vector< IndexLayout::Element > &  vIndex)
inlineprotected

◆ test_layouts()

◆ vec_norm_on_identified_dual()

template<typename TAlgebra >
number ug::FetiLayouts< TAlgebra >::vec_norm_on_identified_dual ( vector_type vec)
inline

◆ vec_prod_on_identified_dual()

template<typename TAlgebra >
number ug::FetiLayouts< TAlgebra >::vec_prod_on_identified_dual ( const vector_type vecSrc1,
const vector_type vecSrc2 
)
inline

◆ vec_scale_add_on_dual()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::vec_scale_add_on_dual ( vector_type vecDest,
number  alpha1,
const vector_type vecSrc1,
number  alpha2,
const vector_type vecSrc2 
)
inline

calculates vecDest = alpha1*vecSource1 + alpha2*vecSource2 on dual

References ug::FetiLayouts< TAlgebra >::m_vUniqueDualIndex, and ug::VecScaleAdd().

◆ vec_scale_add_on_primal()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::vec_scale_add_on_primal ( vector_type vecDest,
number  alpha1,
const vector_type vecSrc1,
number  alpha2,
const vector_type vecSrc2 
)
inline

calculates vecDest = alpha1*vecSource1 + alpha2*vecSource2 on primal

References ug::FetiLayouts< TAlgebra >::m_vUniquePrimalIndex, and ug::VecScaleAdd().

◆ vec_scale_append_on_dual()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::vec_scale_append_on_dual ( vector_type vecInOut,
const vector_type vecSrc1,
number  alpha1 
)
inline

calculates vecInOut += alpha1*vecSrc1 on dual

References ug::FetiLayouts< TAlgebra >::m_vUniqueDualIndex, and ug::VecScaleAdd().

◆ vec_scale_append_on_primal()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::vec_scale_append_on_primal ( vector_type vecInOut,
const vector_type vecSrc1,
number  alpha1 
)
inline

calculates vecInOut += alpha1*vecSrc1 on primal

References ug::FetiLayouts< TAlgebra >::m_vUniquePrimalIndex, and ug::VecScaleAdd().

◆ vec_scale_assign_on_dual()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::vec_scale_assign_on_dual ( vector_type vecDest,
const vector_type vecSrc,
number  alpha 
)
inline

calculates vecDest = alpha*vecSrc on dual

References alpha, ug::FetiLayouts< TAlgebra >::m_vUniqueDualIndex, and ug::VecScaleAssign().

◆ vec_scale_assign_on_primal()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::vec_scale_assign_on_primal ( vector_type vecDest,
const vector_type vecSrc,
number  alpha 
)
inline

calculates vecDest = alpha*vecSrc on primal

References alpha, ug::FetiLayouts< TAlgebra >::m_vUniquePrimalIndex, and ug::VecScaleAssign().

◆ vec_set_on_dual()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::vec_set_on_dual ( vector_type vecDest,
number  alpha 
)
inline

sets vecDest = alpha on dual

References alpha, ug::FetiLayouts< TAlgebra >::m_vUniqueDualIndex, and ug::VecSet().

◆ vec_set_on_primal()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::vec_set_on_primal ( vector_type vecDest,
number  alpha 
)
inline

sets vecDest = alpha on primal

References alpha, ug::FetiLayouts< TAlgebra >::m_vUniquePrimalIndex, and ug::VecSet().

◆ vec_use_intra_sd_communication()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::vec_use_intra_sd_communication ( vector_type vec)
inline

◆ vec_use_std_communication()

template<typename TAlgebra >
void ug::FetiLayouts< TAlgebra >::vec_use_std_communication ( vector_type vec)
inline

Member Data Documentation

◆ m_masterDualLayout

◆ m_masterDualNbrLayout

◆ m_masterPrimalLayout

◆ m_slaveDualLayout

◆ m_slaveDualNbrLayout

◆ m_slavePrimalLayout

◆ m_spInnerLayouts

◆ m_spStdLayouts

◆ m_vUniqueDualIndex

◆ m_vUniqueMasterDualIndex

◆ m_vUniqueMasterDualNbrIndex

template<typename TAlgebra >
std::vector<IndexLayout::Element> ug::FetiLayouts< TAlgebra >::m_vUniqueMasterDualNbrIndex
protected

◆ m_vUniquePrimalIndex

◆ m_vUniquePrimalMasterIndex

template<typename TAlgebra >
std::vector<IndexLayout::Element> ug::FetiLayouts< TAlgebra >::m_vUniquePrimalMasterIndex
protected

◆ m_vUniquePrimalSlaveIndex

template<typename TAlgebra >
std::vector<IndexLayout::Element> ug::FetiLayouts< TAlgebra >::m_vUniquePrimalSlaveIndex
protected

◆ m_vUniqueSlaveDualIndex

template<typename TAlgebra >
std::vector<IndexLayout::Element> ug::FetiLayouts< TAlgebra >::m_vUniqueSlaveDualIndex
protected

◆ m_vUniqueSlaveDualNbrIndex

template<typename TAlgebra >
std::vector<IndexLayout::Element> ug::FetiLayouts< TAlgebra >::m_vUniqueSlaveDualNbrIndex
protected

The documentation for this class was generated from the following file: