From c52b2bf5a5641db5d3ae87280aa4be5d0981609c Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Mon, 31 Oct 2011 12:38:18 +0100 Subject: [PATCH] Remove faulty gauss-seidel sample --- src/Makefile.am | 4 --- src/gauss-seidel-sample.cc | 50 ------------------------------------ src/gaussseidel.hh | 52 -------------------------------------- 3 files changed, 106 deletions(-) delete mode 100644 src/gauss-seidel-sample.cc delete mode 100644 src/gaussseidel.hh diff --git a/src/Makefile.am b/src/Makefile.am index 2392fd5b..a23913ce 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -5,15 +5,11 @@ check_PROGRAMS = \ test-gradient-method bin_PROGRAMS = \ - gauss-seidel-sample \ one-body-sample one_body_sample_SOURCES = \ one-body-sample.cc -gauss_seidel_sample_SOURCES = \ - gauss-seidel-sample.cc gaussseidel.hh - test_python_SOURCES = \ test-python.cc diff --git a/src/gauss-seidel-sample.cc b/src/gauss-seidel-sample.cc deleted file mode 100644 index cd60bc76..00000000 --- a/src/gauss-seidel-sample.cc +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- mode:c++; mode:semantic -*- */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <dune/common/fmatrix.hh> -#include <dune/common/fvector.hh> - -#include "nicefunction.hh" -#include "mynonlinearity.hh" - -#include "gaussseidel.hh" - -int main() { - size_t const dimension = 3; - typedef Dune::FieldMatrix<double, dimension, dimension> LocalMatrix; - typedef Dune::FieldVector<double, dimension> LocalVector; - size_t const nodes = 10; - typedef Dune::FieldMatrix<LocalMatrix, nodes, nodes> GlobalMatrix; - typedef Dune::FieldVector<LocalVector, nodes> GlobalVector; - - GlobalMatrix A; - // semi-random data - for (size_t i = 0; i < nodes; ++i) - for (size_t k = 0; k < nodes; ++k) - for (size_t j = 0; j < dimension; ++j) - for (size_t l = 0; l < dimension; ++l) - A[i][k][j][l] = ((i == k) && (j == l) ? 1 : 0); - - GlobalVector b; - // semi-random data - for (size_t i = 0; i < nodes; ++i) - for (size_t j = 0; j < dimension; ++j) - b[i][j] = 1; - - Dune::SampleFunction const f = Dune::SampleFunction(); // semi-random function - Dune::MyNonlinearity<dimension> const phi(f); - - GlobalVector unu(LocalVector(0)); - // semi-random data - for (size_t m = 0; m < nodes; ++m) - for (size_t j = 0; j < dimension; ++j) - unu[m][j] = m + j; - - GaussSeidel(unu, A, b, phi); - std::cout << std::endl << std::endl; - GaussSeidel(unu, A, b, phi); - return 0; -} diff --git a/src/gaussseidel.hh b/src/gaussseidel.hh deleted file mode 100644 index 46db7f1c..00000000 --- a/src/gaussseidel.hh +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- mode:c++; mode:semantic -*- */ - -#include <dune/common/fmatrix.hh> -#include <dune/common/fvector.hh> - -#include "nicefunction.hh" -#include "mynonlinearity.hh" -#include "samplefunctional.hh" - -// Just for debugging -template <int dim, int nodes> -double J_eval( - Dune::FieldMatrix<Dune::FieldMatrix<double, dim, dim>, nodes, nodes> const & - A, - Dune::FieldVector<Dune::FieldVector<double, dim>, nodes> const &b, - Dune::MyNonlinearity<dim> phi, - Dune::FieldVector<Dune::FieldVector<double, dim>, nodes> const &v) { - double ret = 0; - for (size_t i = 0; i < nodes; ++i) { - for (size_t k = 0; k < nodes; ++k) { - Dune::FieldMatrix<double, dim, dim> const localA = A[i][k]; - Dune::FieldVector<double, dim> tmp; - localA.mv(v[k], tmp); - ret += 1 / 2 * (tmp * v[i]); - } - ret -= b[i] * v[i]; - ret += - phi(v[i]); // an example of phi^i(v[i]) (phi is independent of i here) - } - return ret; -} - -template <int dim, int nodes> -void GaussSeidel( - Dune::FieldVector<Dune::FieldVector<double, dim>, nodes> &unu, - Dune::FieldMatrix<Dune::FieldMatrix<double, dim, dim>, nodes, nodes> const & - A, - Dune::FieldVector<Dune::FieldVector<double, dim>, nodes> const &b, - Dune::MyNonlinearity<dim> const &phi) { - for (size_t m = 0; m < nodes; ++m) { - typename Dune::SampleFunctional<dim>::SmallVector const localb = b[m]; - typename Dune::SampleFunctional<dim>::SmallMatrix const localA = A[m][m]; - Dune::SampleFunctional<dim> J(localA, localb, phi); - typename Dune::SampleFunctional<dim>::SmallVector correction; - for (size_t local_iteration = 0; local_iteration < 2; - ++local_iteration) { // 2 is random here - Dune::minimise(J, unu[m], correction); - unu[m] += correction; - } - std::cout << J_eval(A, b, phi, unu) << std::endl; // debugging - } -} -- GitLab