1
// Copyright (C) 2004-2006 Anders Logg.
2
// Licensed under the GNU LGPL Version 2.1.
5
// Last changed: 2006-08-21
10
using namespace dolfin;
12
class TestProblem5 : public ODE
16
TestProblem5() : ODE(6, 180.0)
18
message("The Chemical Akzo-Nobel problem.");
31
void u0(uBlasVector& u)
41
void f(const uBlasVector& u, real t, uBlasVector& y)
43
y(0) = -2.0*r1(u) + r2(u) - r3(u) - r4(u);
44
y(1) = -0.5*r1(u) - r4(u) - 0.5*r5(u) + F(u);
45
y(2) = r1(u) - r2(u) + r3(u);
46
y(3) = -r2(u) + r3(u) - 2.0*r4(u);
47
y(4) = r2(u) - r3(u) + r5(u);
48
y(5) = Ks*u(0)*u(3) - u(5);
53
real r1(const uBlasVector& u)
55
return k1*pow(u(0), 4.0)*sqrt(u(1));
58
real r2(const uBlasVector& u)
63
real r3(const uBlasVector& u)
65
return (k2/K)*u(0)*u(4);
68
real r4(const uBlasVector& u)
70
return k3*u(0)*pow(u(3), 2.0);
73
real r5(const uBlasVector& u)
75
return k4*pow(u(5), 2.0)*sqrt(u(1));
78
real F(const uBlasVector& u)
80
return klA * (p/H - u(1));
83
real k1, k2, k3, k4, K, klA, Ks, p, H;