From ff071715827014c80e1675910e3e7f07fbcbb233 Mon Sep 17 00:00:00 2001 From: Markus Blatt <mblatt@dune-project.org> Date: Thu, 7 Feb 2008 14:34:50 +0000 Subject: [PATCH] Fixed the test. [[Imported from SVN: r860]] --- istl/test/overlappingschwarztest.cc | 41 ++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/istl/test/overlappingschwarztest.cc b/istl/test/overlappingschwarztest.cc index 02b9bf445..1d0637e0f 100644 --- a/istl/test/overlappingschwarztest.cc +++ b/istl/test/overlappingschwarztest.cc @@ -70,33 +70,37 @@ int main(int argc, char** argv) // check left domain int domain = (i-overlap)/domainSize; - if(domain>=0 && domain<domainsPerDim) + int neighbourDomain=ydomain*domainsPerDim+domain; + if(domain>=0 && domain<domainsPerDim && neighbourDomain!=mainDomain) { - domains[ydomain*domainsPerDim+domain].insert(id); - rowToDomain[id].push_back(ydomain*domainsPerDim+domain); + domains[neighbourDomain].insert(id); + rowToDomain[id].push_back(neighbourDomain); } //check right domain domain = (i+overlap)/domainSize; - if(domain>=0 && domain<domainsPerDim) + neighbourDomain=ydomain*domainsPerDim+domain; + if(domain>=0 && domain<domainsPerDim && neighbourDomain!=mainDomain) { - domains[ydomain*domainsPerDim+domain].insert(id); - rowToDomain[id].push_back(ydomain*domainsPerDim+domain); + domains[neighbourDomain].insert(id); + rowToDomain[id].push_back(neighbourDomain); } // check lower domain domain = (j-overlap)/domainSize; - if(domain>=0 && domain<domainsPerDim) + neighbourDomain=domain*domainsPerDim+xdomain; + if(domain>=0 && domain<domainsPerDim && neighbourDomain!=mainDomain) { - domains[domain*domainsPerDim+xdomain].insert(id); - rowToDomain[id].push_back(domain*domainsPerDim+xdomain); + domains[neighbourDomain].insert(id); + rowToDomain[id].push_back(neighbourDomain); } - //check right domain + //check upper domain domain = (j+overlap)/domainSize; - if(domain>=0 && domain<domainsPerDim) + neighbourDomain=domain*domainsPerDim+xdomain; + if(domain>=0 && domain<domainsPerDim && neighbourDomain!=mainDomain) { - domains[domain*domainsPerDim+xdomain].insert(id); + domains[neighbourDomain].insert(id); rowToDomain[id].push_back(domain*domainsPerDim+xdomain); } } @@ -148,6 +152,19 @@ int main(int argc, char** argv) b=0; x=100; // setBoundary(x,b,N); + if(N<10) { + typedef rowtodomain_vector::const_iterator rt_iter; + int row=0; + std::cout<<" row to domain"<<std::endl; + for(rt_iter i= rowToDomain.begin(); i!= rowToDomain.end(); ++i, ++row) { + std::cout<<"row="<<row<<": "; + typedef rowtodomain_vector::value_type::const_iterator diter; + for(diter d=i->begin(); d!=i->end(); ++d) + std::cout<<*d<<" "; + std::cout<<std::endl; + } + } + Dune::SeqOverlappingSchwarz<BCRSMat,BVector> prec2(mat, rowToDomain, 1); Dune::LoopSolver<BVector> solver2(fop, prec2, 1e-2,100,2); solver2.apply(x,b, res); -- GitLab