diff --git a/AMDiS/other/include/Makefile_AMDiS.mk b/AMDiS/other/include/Makefile_AMDiS.mk index 6931fd50a09c55ebaac0d4dc50f0843ef2fb5723..8770524edd6279a3f80b29af772372fa808e6a9d 100644 --- a/AMDiS/other/include/Makefile_AMDiS.mk +++ b/AMDiS/other/include/Makefile_AMDiS.mk @@ -43,6 +43,7 @@ LIBS += -lboost_iostreams -lboost_filesystem -lboost_system -lboost_date_time ifeq ($(strip $(USE_UMFPACK)), 1) LIBS += $(UMFPACK_LIB) + CPPFLAGS += -DHAVE_UMFPACK -DMTL_HAS_UMFPACK endif ifeq ($(strip $(USE_MKL)), 1) @@ -104,7 +105,7 @@ endif ifeq ($(strip $(DEBUG)), 0) CPPFLAGS += -O3 else - CPPFLAGS += -g -O0 + CPPFLAGS += -g -O0 -DDEBUG=1 endif ifeq ($(strip $(USE_OPENMP)), 1) diff --git a/AMDiS/src/Boundary.cc b/AMDiS/src/Boundary.cc index fa0ecb4cc7574b935cd6e6f0444bc35ab161993d..7627d128deb8a5fd373366ce43c4936c6bb0cf78 100644 --- a/AMDiS/src/Boundary.cc +++ b/AMDiS/src/Boundary.cc @@ -7,24 +7,21 @@ namespace AMDiS { BoundaryType newBound(BoundaryType oldBound, BoundaryType newBound) { if (newBound <= INTERIOR) { - /*************************************************************************/ - /* face on NEUMANN-boundary or interior face; weak type */ - /*************************************************************************/ - return(oldBound); + // Face on NEUMANN-boundary or interior face; weak type. + + return oldBound; } else { - /*************************************************************************/ - /* node is already node on the DIRICHLET boundary */ - /*************************************************************************/ + // Node is already node on the DIRICHLET boundary. + if (oldBound > newBound) - return(oldBound); + return oldBound; else - return(newBound); + return newBound; } - /**************************************************************************/ - /* new face is interior face; node type is always stronger */ - /**************************************************************************/ - return(newBound); + // New face is interior face; node type is always stronger. + + return newBound; } } diff --git a/AMDiS/src/DOFMatrix.cc b/AMDiS/src/DOFMatrix.cc index c410707e5049f12a573f8fe60827262f11750d81..519aa4bb9da22bb7a4fa5e9eb9ebd11f465f3a35 100644 --- a/AMDiS/src/DOFMatrix.cc +++ b/AMDiS/src/DOFMatrix.cc @@ -245,10 +245,8 @@ namespace AMDiS { std::vector<Operator*>::iterator it = operators.begin(); std::vector<double*>::iterator factorIt = operatorFactor.begin(); for (; it != operators.end(); ++it, ++factorIt) - if ((*it)->getNeedDualTraverse() == false) { - // MSG("OP NO NEED DT!\n"); + if ((*it)->getNeedDualTraverse() == false) (*it)->getElementMatrix(elInfo, elementMatrix, *factorIt ? **factorIt : 1.0); - } if (factor != 1.0) elementMatrix *= factor; diff --git a/AMDiS/src/OEMSolver.h b/AMDiS/src/OEMSolver.h index cbe01727c52d938dd05da4a94cf2ec4d6ab0490b..4ccd2320dfc3e465eb0db766e9267ad5049b552f 100644 --- a/AMDiS/src/OEMSolver.h +++ b/AMDiS/src/OEMSolver.h @@ -73,10 +73,7 @@ namespace AMDiS { /// virtual ~OEMSolver() - { - if (leftPrecon) delete leftPrecon; - if (rightPrecon) delete rightPrecon; - } + {} void initParameters() { @@ -96,9 +93,7 @@ namespace AMDiS { */ void setLeftPrecon(ITL_BasePreconditioner* p) { - if (leftPrecon) - delete leftPrecon; - leftPrecon = p; + leftPrecon = p; } /** Set right Preconditioner @@ -108,24 +103,21 @@ namespace AMDiS { */ void setRightPrecon(ITL_BasePreconditioner* p) { - if (rightPrecon) - delete rightPrecon; - rightPrecon = p; + rightPrecon = p; } /// Linear System to be solved in the derived class - virtual int solveSystem(const DOFMatrix::base_matrix_type& A, - mtl::dense_vector<value_type>& x, - const mtl::dense_vector<value_type>& b) = 0; + virtual int solveSystem(const DOFMatrix::base_matrix_type& A, + mtl::dense_vector<value_type>& x, + const mtl::dense_vector<value_type>& b) = 0; /// Solve a linear system for a scalar problem. int solveSystem(const SolverMatrix<DOFMatrix>& A, - DOFVector<double>& x, - DOFVector<double>& b) + DOFVector<double>& x, + DOFVector<double>& b) { - mtl::dense_vector<value_type> xx(x.getUsedSize()), - bb(b.getUsedSize()); + mtl::dense_vector<value_type> xx(x.getUsedSize()), bb(b.getUsedSize()); // Copy rhs vector int counter = 0; @@ -236,13 +228,13 @@ namespace AMDiS { /// Returns number of iterations in last run of an iterative solver inline int getIterations() { - return iterations; + return iterations; } /// Returns error code in last run of an iterative solver inline int getErrorCode() { - return error; + return error; } /// Sets \ref info diff --git a/AMDiS/src/UmfPackSolver.h b/AMDiS/src/UmfPackSolver.h index 91213a9c27c800d029c45e3feb217d6a070a648d..c68a4db8e7246a77646910b875690f9dc3618c66 100644 --- a/AMDiS/src/UmfPackSolver.h +++ b/AMDiS/src/UmfPackSolver.h @@ -58,7 +58,7 @@ namespace AMDiS { }; /// Constructor - UmfPackSolver(::std::string name) + UmfPackSolver(std::string name) : OEMSolver(name), solver(0), store_symbolic(0), @@ -76,9 +76,9 @@ namespace AMDiS { } /// Solves the system directly - int solveSystem(const DOFMatrix::base_matrix_type& A, - mtl::dense_vector<value_type>& x, - const mtl::dense_vector<value_type>& b) + int solveSystem(const DOFMatrix::base_matrix_type& A, + mtl::dense_vector<value_type>& x, + const mtl::dense_vector<value_type>& b) { if (!solver) { if (!symmetric_strategy) @@ -90,10 +90,10 @@ namespace AMDiS { if (store_symbolic) solver->update_numeric(); else - solver->update(); - } + solver->update(); + } - int code= (*solver)(x, b); + int code = (*solver)(x, b); mtl::dense_vector<value_type> r(b); r -= A * x; residual = two_norm(r);