From 1df5fedcc80ef0d0cbe4161d40243fee52cbfc46 Mon Sep 17 00:00:00 2001 From: guido Date: Thu, 6 May 1999 12:49:19 +0000 Subject: [PATCH] FLOAT macro removed git-svn-id: https://svn.dealii.org/trunk@1288 0785d39b-7218-0410-832d-ea1e28bc413d --- tests/lac/mg.cc | 91 +++++++++++++++-------------------------- tests/lac/testmatrix.cc | 10 ++--- tests/lac/testmatrix.h | 12 +++--- 3 files changed, 44 insertions(+), 69 deletions(-) diff --git a/tests/lac/mg.cc b/tests/lac/mg.cc index 85807b480d..a8df6709d6 100644 --- a/tests/lac/mg.cc +++ b/tests/lac/mg.cc @@ -18,7 +18,7 @@ #include #define TYPE long double -#define ACCURACY 1.e-19 +#define ACCURACY 1.e-18 template void print_vector(ostream& s, const VECTOR& v) @@ -29,7 +29,7 @@ void print_vector(ostream& s, const VECTOR& v) for (unsigned int i=0;i > >matrices; + SmartPointer > >matrices; public: - FDMG(unsigned int maxlevel, MGMatrix >& matrices, + FDMG(unsigned int maxlevel, MGMatrix >& matrices, FDMGTransfer& transfer); virtual void level_residual (unsigned int level, - Vector& dst, - const Vector& src, - const Vector& rhs); + Vector& dst, + const Vector& src, + const Vector& rhs); void copy_to_mg(const Vector& rhs); void copy_from_mg(Vector& lsg); @@ -64,46 +64,21 @@ class MGSmootherLAC public MGSmootherBase { private: - SmartPointer > >matrices; + SmartPointer > >matrices; public: - MGSmootherLAC(MGMatrix >&); + MGSmootherLAC(MGMatrix >&); virtual void smooth (const unsigned int level, - Vector &u, - const Vector &rhs) const; + Vector &u, + const Vector &rhs) const; }; -typedef MGCoarseGridLACIteration , Vector >, -SparseMatrix, /*PreconditionRelaxation ,*/ - PreconditionIdentity > > +typedef MGCoarseGridLACIteration , Vector >, +SparseMatrix, /*PreconditionRelaxation ,*/ + PreconditionIdentity > > Coarse; -class MGPrecondition -{ - private: - FDMG& mg; - MGSmootherBase& smooth; - Coarse& coarse; - public: - MGPrecondition(FDMG& m, MGSmootherBase& s, Coarse& c) - : - mg(m), smooth(s), coarse(c) - {} - - - void operator () (Vector& dst, const Vector& src) const - { -// print_vector(cout, src); - - mg.copy_to_mg(src); - mg.vcycle(smooth,smooth,coarse); - mg.copy_from_mg(dst); - } - - -}; - main() { @@ -122,9 +97,9 @@ main() FDMGTransfer transfer(maxsize, maxsize, maxlevel); // coarse grid solver - PrimitiveVectorMemory > cgmem; + PrimitiveVectorMemory > cgmem; ReductionControl cgcontrol(100, 1.e-30, 1.e-2, false, false); - SolverCG , Vector > cgcg(cgcontrol,cgmem); + SolverCG , Vector > cgcg(cgcontrol,cgmem); for (unsigned int level = 0; level <= maxlevel; ++level) @@ -138,7 +113,7 @@ main() // Make matrix vector structure(maxlevel+1); - MGMatrix > A(minlevel,maxlevel); + MGMatrix > A(minlevel,maxlevel); FDMatrix testproblem(size, size); @@ -156,9 +131,9 @@ main() FDMG multigrid(level, A, transfer); -// PreconditionRelaxation , Vector > - PreconditionIdentity > - cgprec;//(A[minlevel], &SparseMatrix ::template precondition_SSOR, 1.2); +// PreconditionRelaxation , Vector > + PreconditionIdentity > + cgprec;//(A[minlevel], &SparseMatrix ::template precondition_SSOR, 1.2); Coarse coarsegrid(cgcg, A[minlevel], cgprec); @@ -168,8 +143,8 @@ main() PreconditionMG > precondition(multigrid, smoother, smoother, coarsegrid); -// SolverRichardson , Vector > solver(control, mem); - SolverCG , Vector > solver(control, mem); +// SolverRichardson , Vector > solver(control, mem); + SolverCG , Vector > solver(control, mem); Vector u(dim); Vector f(dim); @@ -182,7 +157,7 @@ main() } } -FDMG::FDMG(unsigned int maxlevel, MGMatrix >& matrices, +FDMG::FDMG(unsigned int maxlevel, MGMatrix >& matrices, FDMGTransfer& transfer) : MGBase(transfer, maxlevel, 0), @@ -198,9 +173,9 @@ FDMG::FDMG(unsigned int maxlevel, MGMatrix >& matrices, void FDMG::level_residual (unsigned int level, - Vector& dst, - const Vector& src, - const Vector& rhs) + Vector& dst, + const Vector& src, + const Vector& rhs) { (*matrices)[level].residual(dst, src, rhs); } @@ -218,7 +193,7 @@ FDMG::copy_from_mg(Vector& v) } -MGSmootherLAC::MGSmootherLAC(MGMatrix >& matrix) +MGSmootherLAC::MGSmootherLAC(MGMatrix >& matrix) : matrices(&matrix) {} @@ -226,14 +201,14 @@ MGSmootherLAC::MGSmootherLAC(MGMatrix >& matrix) void MGSmootherLAC::smooth (const unsigned int level, - Vector &u, - const Vector &rhs) const + Vector &u, + const Vector &rhs) const { SolverControl control(1,1.e-300,false,false); - PrimitiveVectorMemory > mem; - SolverRichardson , Vector > rich(control, mem); - PreconditionRelaxation , Vector > - prec((*matrices)[level], &SparseMatrix ::template precondition_SSOR, 1.); + PrimitiveVectorMemory > mem; + SolverRichardson , Vector > rich(control, mem); + PreconditionRelaxation , Vector > + prec((*matrices)[level], &SparseMatrix ::template precondition_SSOR, 1.); rich.solve((*matrices)[level], u, rhs, prec); } diff --git a/tests/lac/testmatrix.cc b/tests/lac/testmatrix.cc index f3a0245b13..5100cbe8d7 100644 --- a/tests/lac/testmatrix.cc +++ b/tests/lac/testmatrix.cc @@ -118,7 +118,7 @@ FDMGTransfer::FDMGTransfer(unsigned int nx, unsigned int ny, void FDMGTransfer::build_matrix(unsigned int nx, unsigned int ny, - SparseMatrixStruct& structure, SparseMatrix& matrix) + SparseMatrixStruct& structure, SparseMatrix& matrix) { structure.reinit((nx-1)*(ny-1),(2*nx-1)*(2*ny-1),9); @@ -210,8 +210,8 @@ FDMGTransfer::build_matrix(unsigned int nx, unsigned int ny, void FDMGTransfer::prolongate (const unsigned int to_level, - Vector &dst, - const Vector &src) const + Vector &dst, + const Vector &src) const { Assert((to_level>0) && (to_level<=matrices.size()), ExcIndexRange(to_level, 0, matrices.size()+1)); @@ -222,8 +222,8 @@ FDMGTransfer::prolongate (const unsigned int to_level, void FDMGTransfer::restrict (const unsigned int from_level, - Vector &dst, - const Vector &src) const + Vector &dst, + const Vector &src) const { Assert((from_level>0) && (from_level<=matrices.size()), ExcIndexRange(from_level, 0, matrices.size()+1)); diff --git a/tests/lac/testmatrix.h b/tests/lac/testmatrix.h index 659ab39752..8099555fee 100644 --- a/tests/lac/testmatrix.h +++ b/tests/lac/testmatrix.h @@ -66,16 +66,16 @@ class FDMGTransfer * function in #MGTranferBase#. */ virtual void prolongate (const unsigned int to_level, - Vector &dst, - const Vector &src) const; + Vector &dst, + const Vector &src) const; /** * Implementation of abstract * function in #MGTranferBase#. */ virtual void restrict (const unsigned int from_level, - Vector &dst, - const Vector &src) const; + Vector &dst, + const Vector &src) const; /** * Exception. @@ -91,7 +91,7 @@ class FDMGTransfer /** * Prolongation matrices. */ - vector > matrices; + vector > matrices; /** * Matrix generator. @@ -101,5 +101,5 @@ class FDMGTransfer * fine to coarse (#vmult#). */ void build_matrix(unsigned int nx, unsigned int ny, - SparseMatrixStruct&, SparseMatrix&); + SparseMatrixStruct&, SparseMatrix&); }; -- 2.39.5