~njansson/dolfin/hpc

« back to all changes in this revision

Viewing changes to src/demo/ode/stiff/TestProblem8.h

  • Committer: Anders Logg
  • Date: 2007-01-10 09:04:44 UTC
  • mfrom: (1689.1.221 trunk)
  • Revision ID: logg@simula.no-20070110090444-ecyux3n1qnei4i8h
RemoveĀ oldĀ head

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
// Copyright (C) 2003-2005 Johan Jansson.
2
2
// Licensed under the GNU GPL Version 2.
3
3
//
4
 
// Modified by Anders Logg 2003-2005.
 
4
// Modified by Anders Logg 2003-2006.
 
5
//
 
6
// First added:  2003
 
7
// Last changed: 2006-08-21
5
8
 
6
9
#include <dolfin.h>
7
10
 
15
18
  {
16
19
    dolfin_info("System of fast and slow chemical reactions, taken from the book by");
17
20
    dolfin_info("Hairer and Wanner, page 3.");
18
 
 
19
 
    // Compute sparsity
20
 
    sparse();
21
21
  }
22
22
 
23
 
  real u0(unsigned int i)
 
23
  void u0(uBlasVector& u)
24
24
  {
25
 
    if ( i == 0 )
26
 
      return 1.0;
27
 
    else
28
 
      return 0.0;
 
25
    u(0) = 1.0;
 
26
    u(1) = 0.0;
 
27
    u(2) = 0.0;
29
28
  }
30
29
  
31
 
  real f(const real u[], real t, unsigned int i)
 
30
  void f(const uBlasVector& u, real t, uBlasVector& y)
32
31
  {
33
 
    if ( i == 0 )
34
 
      return -0.04 * u[0] + 1.0e4 * u[1] * u[2];
35
 
    
36
 
    if ( i == 1 )
37
 
      return 0.04 * u[0] - 1.0e4 * u[1] * u[2] - 3.0e7 * u[1] * u[1];
38
 
    
39
 
    return 3.0e7 * u[1] * u[1];
 
32
    y(0) = -0.04 * u(0) + 1.0e4 * u(1) * u(2);
 
33
    y(1) = 0.04 * u(0) - 1.0e4 * u(1) * u(2) - 3.0e7 * u(1) * u(1);
 
34
    y(2) = 3.0e7 * u(1) * u(1);
40
35
  }
41
36
  
42
37
};