From f0cd6b826bf2dde518ede7f3e0ffc9c50be57da7 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Wed, 12 Oct 2011 16:08:34 +0200 Subject: [PATCH] Move conversion functionality to duneoctave --- src/duneevaluate.cc | 7 +++---- src/duneevaluate.mk | 2 +- src/duneminimise.cc | 9 +++------ src/duneminimise.mk | 2 +- src/duneoctave.hh | 28 ++++++++++++++++++++++++++++ 5 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 src/duneoctave.hh diff --git a/src/duneevaluate.cc b/src/duneevaluate.cc index c5583749..fd6159ff 100644 --- a/src/duneevaluate.cc +++ b/src/duneevaluate.cc @@ -7,6 +7,7 @@ #endif #include "samplefunctional.hh" +#include "duneoctave.hh" #include <cassert> @@ -28,12 +29,10 @@ DEFUN_DLD(duneevaluate, args, nargout, "the help string") { b[0] = 1; b[1] = 2; - SampleFunctional::SmallVector our_point; - our_point[0] = point(0); - our_point[1] = point(1); - Dune::SampleFunction f; SampleFunctional J(A, b, Dune::MyNonlinearity<dim>(f)); + SampleFunctional::SmallVector our_point; + Dune::octaveToDune<dim>(point, our_point); return octave_value(J(our_point)); } diff --git a/src/duneevaluate.mk b/src/duneevaluate.mk index 9dcc5724..46ec6bed 100644 --- a/src/duneevaluate.mk +++ b/src/duneevaluate.mk @@ -6,5 +6,5 @@ bin_PROGRAMS += duneminimise.oct duneevaluate.oct: duneevaluate.o $(MKOCTFILE) -o $@ $< -ldunecommon -duneevaluate.o: duneevaluate.cc +duneevaluate.o: duneevaluate.cc duneoctave.hh $(MKOCTFILE) $(DEFS) $(AM_CPPFLAGS) -c -o $@ $< diff --git a/src/duneminimise.cc b/src/duneminimise.cc index 773f4e4b..e2ee4623 100644 --- a/src/duneminimise.cc +++ b/src/duneminimise.cc @@ -7,6 +7,7 @@ #endif #include "samplefunctional.hh" +#include "duneoctave.hh" #include <cassert> @@ -32,18 +33,14 @@ DEFUN_DLD(duneminimise, args, nargout, "the help string") { SampleFunctional J(A, b, Dune::MyNonlinearity<dim>(f)); SampleFunctional::SmallVector start; - start[0] = current(0); - start[1] = current(1); - - /// END OF SETUP + Dune::octaveToDune<dim>(current, start); SampleFunctional::SmallVector correction; Dune::minimise(J, start, correction); start += correction; ColumnVector foo(dim); - foo(0) = start[0]; - foo(1) = start[1]; + Dune::duneToOctave<dim>(start, foo); return octave_value(foo); } diff --git a/src/duneminimise.mk b/src/duneminimise.mk index 63616381..41a7440c 100644 --- a/src/duneminimise.mk +++ b/src/duneminimise.mk @@ -6,5 +6,5 @@ bin_PROGRAMS += duneminimise.oct duneminimise.oct: duneminimise.o $(MKOCTFILE) -o $@ $< -ldunecommon -duneminimise.o: duneminimise.cc +duneminimise.o: duneminimise.cc duneoctave.hh $(MKOCTFILE) $(DEFS) $(AM_CPPFLAGS) -c -o $@ $< diff --git a/src/duneoctave.hh b/src/duneoctave.hh new file mode 100644 index 00000000..b25c01b6 --- /dev/null +++ b/src/duneoctave.hh @@ -0,0 +1,28 @@ +/* -*- mode:c++; mode:semantic -*- */ + +#ifndef DUNE_OCTAVE_HH +#define DUNE_OCTAVE_HH + +#include "samplefunctional.hh" + +#include <cassert> + +namespace Dune { +template <int dimension> +void octaveToDune(ColumnVector const &from, + typename Dune::SampleFunctional<dimension>::SmallVector &to) { + assert(from.length() == dimension); + for (size_t i = 0; i < dimension; ++i) + to[i] = from(i); +} + +template <int dimension> +void duneToOctave( + typename Dune::SampleFunctional<dimension>::SmallVector const &from, + ColumnVector &to) { + assert(to.length() == dimension); + for (size_t i = 0; i < dimension; ++i) + to(i) = from[i]; +} +} +#endif -- GitLab