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

Use Small(Vector|Matrix) for (Vector|Matrix)Type

parent 8836d81f
No related branches found
No related tags found
No related merge requests found
......@@ -71,14 +71,11 @@ class SampleFunctional {
A_.mv(x, tmp3);
double const rest_b = (b_ - tmp3) * descDir;
Dune::BlockVector<SmallVector> xx; // FIXME: we actually want x here
Dune::BlockVector<SmallVector> dd; // FIXME: we actually want descDir here
typedef MyNonlinearity<dimension, SampleFunction> MyNonlinearityType;
MyNonlinearityType phi;
typedef DirectionalConvexFunction<MyNonlinearityType>
MyDirectionalConvexFunctionType;
MyDirectionalConvexFunctionType rest(rest_A, rest_b, phi, xx, dd);
MyDirectionalConvexFunctionType rest(rest_A, rest_b, phi, x, descDir);
// Experiment a bit
Interval<double> D;
......
......@@ -21,19 +21,19 @@ class MyNonlinearity {
typedef Dune::FieldVector<double, dimension> SmallVector;
typedef Dune::FieldMatrix<double, dimension, dimension> SmallMatrix;
typedef Dune::BlockVector<SmallVector> VectorType;
typedef Dune::BlockVector<SmallMatrix> MatrixType;
typedef SmallVector VectorType;
typedef SmallMatrix MatrixType;
void directionalSubDiff(VectorType u, VectorType v, Interval<double>& D) {
// if (u == SmallVector(0.0)) {
// D[0] = D[1] = func_.rightDifferential(0);
// } else if (u * v > 0) {
// D[1] = (v * u) * func_.rightDifferential(u.two_norm())/u.two_norm();
// D[0] = (v * u) * func_.leftDifferential(u.two_norm())/u.two_norm();
// } else {
// D[1] = (v * u) * func_.leftDifferential(u.two_norm())/u.two_norm();
// D[0] = (v * u) * func_.rightDifferential(u.two_norm())/u.two_norm();
// }
if (u == SmallVector(0.0)) {
D[0] = D[1] = func_.rightDifferential(0);
} else if (u * v > 0) {
D[1] = (v * u) * func_.rightDifferential(u.two_norm()) / u.two_norm();
D[0] = (v * u) * func_.leftDifferential(u.two_norm()) / u.two_norm();
} else {
D[1] = (v * u) * func_.leftDifferential(u.two_norm()) / u.two_norm();
D[0] = (v * u) * func_.rightDifferential(u.two_norm()) / u.two_norm();
}
}
void directionalDomain(const VectorType&, const VectorType&,
......
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