diff --git a/src/duneevaluate.cc b/src/duneevaluate.cc index c558374966995142e877bd2304f7bf332fda6e2d..fd6159fffaa6995a1a4d21d3d89c7156546b008c 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 9dcc57246127e59324eb4a3a13f539ec051395ed..46ec6bed022c0770ca7a1472d4c6764a27d734f3 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 773f4e4b4b8d3b853c64d20e92e5178776e269f1..e2ee46230e4d7cebe60c2ca59d4bdca97a74ff74 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 63616381abf2c913c0e1c41795b90e3e49e4d756..41a7440c2ed1127bff982f7a873e8b26669e0f5e 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 0000000000000000000000000000000000000000..b25c01b6eeef76922c58b5274cce83ba9f84a82e --- /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