|
dune-istl 2.8.0
|
Loading...
Searching...
No Matches
overlappingschwarz.hh
Go to the documentation of this file.
216 using OverlappingAssigner = OverlappingAssignerHelper<T, Dune::StoresColumnCompressed<T>::value>;
236 OverlappingAssignerHelper(std::size_t maxlength, const BCRSMatrix<K, Al>& mat_, const X& b_, Y& x_);
524 typedef typename std::decay_t<decltype(Impl::asVector(std::declval<T>()))>::field_type field_type;
529 static constexpr size_t n = std::decay_t<decltype(Impl::asVector(std::declval<T>()))>::dimension;
546 typedef typename std::decay_t<decltype(Impl::asVector(std::declval<T>()))>::field_type field_type;
551 static constexpr size_t n = std::decay_t<decltype(Impl::asVector(std::declval<T>()))>::dimension;
678 struct SeqOverlappingSchwarzApplier<SeqOverlappingSchwarz<M,X,SymmetricMultiplicativeSchwarzMode,TD,TA> >
695 using SeqOverlappingSchwarzAssembler = SeqOverlappingSchwarzAssemblerHelper<T,Dune::StoresColumnCompressed<T>::value>;
698 struct SeqOverlappingSchwarzAssemblerHelper< DynamicMatrixSubdomainSolver< BCRSMatrix< K, Al>, X, Y >,false>
703 static std::size_t assembleLocalProblems(const RowToDomain& rowToDomain, const matrix_type& mat,
714 static std::size_t assembleLocalProblems(const RowToDomain& rowToDomain, const matrix_type& mat,
724 static std::size_t assembleLocalProblems(const RowToDomain& rowToDomain, const matrix_type& mat,
795 typedef std::vector<subdomain_type, typename std::allocator_traits<TA>::template rebind_alloc<subdomain_type> > subdomain_vector;
798 typedef SLList<size_type, typename std::allocator_traits<TA>::template rebind_alloc<size_type> > subdomain_list;
801 typedef std::vector<subdomain_list, typename std::allocator_traits<TA>::template rebind_alloc<subdomain_list> > rowtodomain_vector;
807 typedef std::vector<slu, typename std::allocator_traits<TA>::template rebind_alloc<slu> > slu_vector;
896 for(iterator domain=(*indices)[row.index()].begin(); domain != (*indices)[row.index()].end(); ++domain) {
912 void OverlappingSchwarzInitializer<I,S,D>::countEntries(const Iter& row, const CIter& col) const
915 for(iterator domain=(*indices)[row.index()].begin(); domain != (*indices)[row.index()].end(); ++domain) {
916 typename std::map<size_type,size_type>::const_iterator v = indexMaps[*domain].find(col.index());
934 for(iterator domain=(*indices)[row.index()].begin(); domain!= (*indices)[row.index()].end(); ++domain) {
935 typename std::map<size_type,size_type>::const_iterator v = indexMaps[*domain].find(col.index());
1007 SeqOverlappingSchwarz<M,X,TM,TD,TA>::SeqOverlappingSchwarz(const matrix_type& mat_, const rowtodomain_vector& rowToDomain,
1141 std::size_t SeqOverlappingSchwarzAssemblerHelper<S<BCRSMatrix<T,A>>,true>::assembleLocalProblems(const RowToDomain& rowToDomain,
1196 std::size_t SeqOverlappingSchwarzAssemblerILUBase<M,X,Y>::assembleLocalProblems([[maybe_unused]] const RowToDomain& rowToDomain,
1235 typedef typename IteratorDirectionSelector<solver_vector,subdomain_vector,forward>::solver_iterator iterator;
1236 typedef typename IteratorDirectionSelector<solver_vector,subdomain_vector,forward>::domain_iterator
1241 domain_iterator domain=IteratorDirectionSelector<solver_vector,subdomain_vector,forward>::begin(subDomains);
1242 iterator solver = IteratorDirectionSelector<solver_vector,subdomain_vector,forward>::begin(solvers);
1249 for(; domain != IteratorDirectionSelector<solver_vector,subdomain_vector,forward>::end(subDomains); ++domain) {
1410 void OverlappingAssignerHelper<S<BCRSMatrix<T,A>>,true>::operator()(const size_type& domainIndex)
This file implements a vector space as a tensor product of a given vector space. The number of compon...
Classes for using SuperLU with ISTL matrices.
Classes for using UMFPack with ISTL matrices.
Define general preconditioner interface.
Implementation of the BCRSMatrix class.
Various local subdomain solvers based on ILU for SeqOverlappingSchwarz.
Templates characterizing the type of a solver.
void addRowNnz(const Iter &row)
Definition overlappingschwarz.hh:893
void apply(X &v, const X &d)
Apply one step of the preconditioner to the system A(v)=d.
Definition overlappingschwarz.hh:1232
X & lhs()
Get the local left hand side.
Definition overlappingschwarz.hh:1529
void calcColstart() const
Definition overlappingschwarz.hh:924
Y & rhs()
Get the local right hand side.
Definition overlappingschwarz.hh:1535
iterator end()
Definition overlappingschwarz.hh:987
void resetIndexForNextDomain()
Resets the local index to zero.
Definition overlappingschwarz.hh:1541
void copyValue(const Iter &row, const CIter &col) const
Definition overlappingschwarz.hh:931
void createMatrix() const
Definition overlappingschwarz.hh:945
iterator begin()
Definition overlappingschwarz.hh:1001
OverlappingSchwarzInitializer(InitializerList &il, const IndexSet &indices, const subdomain_vector &domains)
Definition overlappingschwarz.hh:885
IndexMap()
Definition overlappingschwarz.hh:953
virtual void apply(X &v, const X &d)
Apply the precondtioner.
Definition overlappingschwarz.hh:1225
OverlappingAssignerILUBase(std::size_t maxlength, const M &mat, const Y &b, X &x)
Constructor.
Definition overlappingschwarz.hh:1481
const_iterator find(size_type grow) const
Definition overlappingschwarz.hh:966
void operator()(const size_type &domain)
calculate one entry of the local defect.
Definition overlappingschwarz.hh:1501
SeqOverlappingSchwarz(const matrix_type &mat, const subdomain_vector &subDomains, field_type relaxationFactor=1, bool onTheFly_=true)
Construct the overlapping Schwarz method.
Definition overlappingschwarz.hh:1054
void deallocate()
Deallocates memory of the local vector.
Definition overlappingschwarz.hh:1494
void insert(size_type grow)
Definition overlappingschwarz.hh:958
void countEntries(const Iter &row, const CIter &col) const
Definition overlappingschwarz.hh:912
static std::size_t assembleLocalProblems(const RowToDomain &rowToDomain, const matrix_type &mat, Solvers &solvers, const SubDomains &domains, bool onTheFly)
Definition overlappingschwarz.hh:1196
void relaxResult(field_type relax)
relax the result.
Definition overlappingschwarz.hh:1517
void assignResult(block_type &res)
Assigns the block to the current local index. At the same time the local defect is calculated for the...
Definition overlappingschwarz.hh:1523
SeqOverlappingSchwarz(const matrix_type &mat, const rowtodomain_vector &rowToDomain, field_type relaxationFactor=1, bool onTheFly_=true)
Definition overlappingschwarz.hh:1007
void push_back(const MemberType &item)
int size() const
iterator end()
void insert(const T &v)
iterator begin()
void deallocate(pointer p, std::size_t n)
static constexpr size_type M()
virtual void operator()()=0
iterator(ParallelIndexSet< TG, TL, N > &indexSet, const Father &father)
DVVerbType dvverb
void resize(size_type n, value_type c=value_type())
size_type size() const
size_type capacity() const
Initializer for SuperLU Matrices representing the subdomains.
Definition overlappingschwarz.hh:45
Matrix::row_type::const_iterator CIter
Definition overlappingschwarz.hh:54
Matrix::const_iterator Iter
Definition overlappingschwarz.hh:53
IndexSet::size_type size_type
Definition overlappingschwarz.hh:57
I InitializerList
Definition overlappingschwarz.hh:50
AtomInitializer::Matrix Matrix
Definition overlappingschwarz.hh:52
InitializerList::value_type AtomInitializer
Definition overlappingschwarz.hh:51
D subdomain_vector
The vector type containing the subdomain to row index mapping.
Definition overlappingschwarz.hh:48
A::size_type size_type
The type for the index access and the size.
Definition bcrsmatrix.hh:498
row_type::ConstIterator ConstColIterator
Const iterator to the entries of a row.
Definition bcrsmatrix.hh:739
Exact subdomain solver using ILU(p) with appropriate p.
Definition ilusubdomainsolver.hh:76
Definition ilusubdomainsolver.hh:109
Sequential overlapping Schwarz preconditioner.
Definition overlappingschwarz.hh:753
X::field_type field_type
The field type of the preconditioner.
Definition overlappingschwarz.hh:781
SLList< size_type, typename std::allocator_traits< TA >::template rebind_alloc< size_type > > subdomain_list
The type for the row to subdomain mapping.
Definition overlappingschwarz.hh:798
std::vector< slu, typename std::allocator_traits< TA >::template rebind_alloc< slu > > slu_vector
The vector type containing subdomain solvers.
Definition overlappingschwarz.hh:807
M matrix_type
The type of the matrix to precondition.
Definition overlappingschwarz.hh:758
TM Mode
The mode (additive or multiplicative) of the Schwarz method.
Definition overlappingschwarz.hh:776
X range_type
The range type of the preconditioner.
Definition overlappingschwarz.hh:768
std::set< size_type, std::less< size_type >, typename std::allocator_traits< TA >::template rebind_alloc< size_type > > subdomain_type
The type for the subdomain to row index mapping.
Definition overlappingschwarz.hh:792
X domain_type
The domain type of the preconditioner.
Definition overlappingschwarz.hh:763
TD slu
The type for the subdomain solver in use.
Definition overlappingschwarz.hh:804
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition overlappingschwarz.hh:866
virtual void pre(X &x, X &b)
Prepare the preconditioner.
Definition overlappingschwarz.hh:844
virtual void post(X &x)
Postprocess the preconditioner.
Definition overlappingschwarz.hh:859
TA allocator
The allocator to use.
Definition overlappingschwarz.hh:787
std::vector< subdomain_type, typename std::allocator_traits< TA >::template rebind_alloc< subdomain_type > > subdomain_vector
The vector type containing the subdomain to row index mapping.
Definition overlappingschwarz.hh:795
std::vector< subdomain_list, typename std::allocator_traits< TA >::template rebind_alloc< subdomain_list > > rowtodomain_vector
The vector type containing the row index to subdomain mapping.
Definition overlappingschwarz.hh:801
matrix_type::size_type size_type
The return type of the size method.
Definition overlappingschwarz.hh:784
Definition overlappingschwarz.hh:692
Tag that the tells the Schwarz method to be additive.
Definition overlappingschwarz.hh:118
Tag that tells the Schwarz method to be multiplicative.
Definition overlappingschwarz.hh:124
Tag that tells the Schwarz method to be multiplicative and symmetric.
Definition overlappingschwarz.hh:131
Exact subdomain solver using Dune::DynamicMatrix<T>::solve.
Definition overlappingschwarz.hh:138
std::remove_const< M >::type matrix_type
The matrix type the preconditioner is for.
Definition overlappingschwarz.hh:147
X::field_type field_type
Definition overlappingschwarz.hh:148
X domain_type
The domain type of the preconditioner.
Definition overlappingschwarz.hh:151
Y range_type
The range type of the preconditioner.
Definition overlappingschwarz.hh:153
void setSubMatrix(const M &BCRS, S &rowset)
Set the data of the local problem.
Definition overlappingschwarz.hh:182
void apply(DynamicVector< field_type > &v, DynamicVector< field_type > &d)
Apply the subdomain solver.
Definition overlappingschwarz.hh:160
std::remove_const< M >::type rilu_type
Definition overlappingschwarz.hh:149
Definition overlappingschwarz.hh:213
matrix_type::size_type size_type
Definition overlappingschwarz.hh:227
X::field_type field_type
Definition overlappingschwarz.hh:224
BCRSMatrix< K, Al > matrix_type
Definition overlappingschwarz.hh:223
Y range_type
Definition overlappingschwarz.hh:225
range_type::block_type block_type
Definition overlappingschwarz.hh:226
S< BCRSMatrix< T, A > >::range_type range_type
Definition overlappingschwarz.hh:313
range_type::block_type block_type
Definition overlappingschwarz.hh:315
range_type::field_type field_type
Definition overlappingschwarz.hh:314
matrix_type::size_type size_type
Definition overlappingschwarz.hh:317
BCRSMatrix< T, A > matrix_type
Definition overlappingschwarz.hh:312
Definition overlappingschwarz.hh:398
matrix_type::size_type size_type
Definition overlappingschwarz.hh:406
Y::field_type field_type
Definition overlappingschwarz.hh:402
Y::block_type block_type
Definition overlappingschwarz.hh:404
OverlappingAssignerHelper(std::size_t maxlength, const M &mat, const Y &b, X &x)
Constructor.
Definition overlappingschwarz.hh:491
OverlappingAssignerHelper(std::size_t maxlength, const M &mat, const Y &b, X &x)
Constructor.
Definition overlappingschwarz.hh:510
Definition overlappingschwarz.hh:518
std::decay_t< decltype(Impl::asVector(std::declval< T >()))>::field_type field_type
Definition overlappingschwarz.hh:524
A::size_type size_type
Definition overlappingschwarz.hh:523
Definition overlappingschwarz.hh:540
A::size_type size_type
Definition overlappingschwarz.hh:545
std::decay_t< decltype(Impl::asVector(std::declval< T >()))>::field_type field_type
Definition overlappingschwarz.hh:546
template meta program for choosing how to add the correction.
Definition overlappingschwarz.hh:570
AdditiveAdder< S, X > Adder
Definition overlappingschwarz.hh:575
MultiplicativeAdder< S, X > Adder
Definition overlappingschwarz.hh:581
MultiplicativeAdder< S, X > Adder
Definition overlappingschwarz.hh:587
Helper template meta program for application of overlapping Schwarz.
Definition overlappingschwarz.hh:603
static solver_iterator begin(solver_vector &sv)
Definition overlappingschwarz.hh:609
solver_vector::iterator solver_iterator
Definition overlappingschwarz.hh:605
static domain_iterator end(const subdomain_vector &sv)
Definition overlappingschwarz.hh:623
subdomain_vector::const_iterator domain_iterator
Definition overlappingschwarz.hh:607
static domain_iterator begin(const subdomain_vector &sv)
Definition overlappingschwarz.hh:618
T2 subdomain_vector
Definition overlappingschwarz.hh:606
static solver_iterator end(solver_vector &sv)
Definition overlappingschwarz.hh:614
T2 subdomain_vector
Definition overlappingschwarz.hh:634
static solver_iterator end(solver_vector &sv)
Definition overlappingschwarz.hh:642
solver_vector::reverse_iterator solver_iterator
Definition overlappingschwarz.hh:633
subdomain_vector::const_reverse_iterator domain_iterator
Definition overlappingschwarz.hh:635
static solver_iterator begin(solver_vector &sv)
Definition overlappingschwarz.hh:637
T1 solver_vector
Definition overlappingschwarz.hh:632
static domain_iterator begin(const subdomain_vector &sv)
Definition overlappingschwarz.hh:646
static domain_iterator end(const subdomain_vector &sv)
Definition overlappingschwarz.hh:651
Helper template meta program for application of overlapping Schwarz.
Definition overlappingschwarz.hh:667
smoother::range_type range_type
Definition overlappingschwarz.hh:669
static void apply(smoother &sm, range_type &v, const range_type &b)
Definition overlappingschwarz.hh:671
static void apply(smoother &sm, range_type &v, const range_type &b)
Definition overlappingschwarz.hh:683
SeqOverlappingSchwarz< M, X, SymmetricMultiplicativeSchwarzMode, TD, TA > smoother
Definition overlappingschwarz.hh:680
smoother::range_type range_type
Definition overlappingschwarz.hh:681
BCRSMatrix< K, Al > matrix_type
Definition overlappingschwarz.hh:700
BCRSMatrix< T, A > matrix_type
Definition overlappingschwarz.hh:711
Definition overlappingschwarz.hh:721
M matrix_type
Definition overlappingschwarz.hh:722
Definition overlappingschwarz.hh:1101
static int size(const Domain &d)
Definition overlappingschwarz.hh:1109
Base class for matrix free definition of preconditioners.
Definition preconditioner.hh:30
@ sequential
Category for sequential solvers.
Definition solvercategory.hh:23
T begin(T... args)
T end(T... args)
T endl(T... args)
T find(T... args)
T for_each(T... args)
T make_pair(T... args)
T max(T... args)
T resize(T... args)
T size(T... args)
T swap(T... args)
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8