Skip to content
Snippets Groups Projects
Commit f0cd6b82 authored by Elias Pipping's avatar Elias Pipping Committed by Elias Pipping
Browse files

Move conversion functionality to duneoctave

parent 101ae072
No related branches found
No related tags found
No related merge requests found
......@@ -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));
}
......@@ -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 $@ $<
......@@ -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);
}
......@@ -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 $@ $<
/* -*- 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment