~simula-acdc/dolfin/dolfin-spacetime

« back to all changes in this revision

Viewing changes to demo/undocumented/simplifiedcombustion/cpp/CombustionKronecker.h

  • Committer: Marie E. Rognes
  • Date: 2012-09-05 12:53:43 UTC
  • Revision ID: meg@simula.no-20120905125343-q62rznifo4zl63hw
Add simpler demo (essentially Laplace in 3D + 1D) for testing tensor
product assembly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __COMBUSTION_KRONECKER_H
 
2
#define __COMBUSTION_KRONECKER_H
 
3
 
 
4
// Include dolfin libraries
 
5
#include <dolfin/tensorproduct/TensorProductFunctionSpace.h>
 
6
 
 
7
// Include the generated code (includes a lot of other stuff)
 
8
#include "Combustion.h"
 
9
 
 
10
namespace CombustionKronecker
 
11
{
 
12
 
 
13
class KroneckerForm_0 : public dolfin::TensorProductForm
 
14
{
 
15
  public:
 
16
 
 
17
    // Constructor
 
18
    KroneckerForm_0(boost::shared_ptr<const dolfin::TensorProductFunctionSpace> V1, boost::shared_ptr<const dolfin::TensorProductFunctionSpace> V0)
 
19
     : dolfin::TensorProductForm(2, 0, 2, 4)
 
20
    {
 
21
      // Store function spaces
 
22
      _tensor_spaces[0] = V0;
 
23
      _tensor_spaces[1] = V1;
 
24
 
 
25
      // Create forms in flattened structure (a0, a1, b0, b1, c0, c1) etc.
 
26
      _forms[0] = boost::shared_ptr<dolfin::Form>(new Combustion::Form_0(V1->factor_space(0),V0->factor_space(0)));
 
27
      _forms[2] = boost::shared_ptr<dolfin::Form>(new Combustion::Form_2(V1->factor_space(0),V0->factor_space(0)));
 
28
      _forms[4] = boost::shared_ptr<dolfin::Form>(new Combustion::Form_4(V1->factor_space(0),V0->factor_space(0)));
 
29
      _forms[6] = boost::shared_ptr<dolfin::Form>(new Combustion::Form_6(V1->factor_space(0),V0->factor_space(0)));
 
30
      _forms[1] = boost::shared_ptr<dolfin::Form>(new Combustion::Form_1(V1->factor_space(1),V0->factor_space(1)));
 
31
      _forms[3] = boost::shared_ptr<dolfin::Form>(new Combustion::Form_3(V1->factor_space(1),V0->factor_space(1)));
 
32
      _forms[5] = boost::shared_ptr<dolfin::Form>(new Combustion::Form_5(V1->factor_space(1),V0->factor_space(1)));
 
33
      _forms[7] = boost::shared_ptr<dolfin::Form>(new Combustion::Form_7(V1->factor_space(1),V0->factor_space(1)));
 
34
 
 
35
    }
 
36
 
 
37
    // Destructor
 
38
    ~KroneckerForm_0()
 
39
    {}
 
40
 
 
41
};
 
42
 
 
43
class KroneckerForm_1 : public dolfin::TensorProductForm
 
44
{
 
45
  public:
 
46
 
 
47
    // Constructor
 
48
    KroneckerForm_1(boost::shared_ptr<const dolfin::TensorProductFunctionSpace> V0)
 
49
     : dolfin::TensorProductForm(1, 0, 2, 1)
 
50
    {
 
51
      // Store function spaces
 
52
      _tensor_spaces[0] = V0;
 
53
 
 
54
      // Create forms in flattened structure (a0, a1, b0, b1, c0, c1) etc.
 
55
      _forms[0] = boost::shared_ptr<dolfin::Form>(new Combustion::Form_8(V0->factor_space(0)));
 
56
      _forms[1] = boost::shared_ptr<dolfin::Form>(new Combustion::Form_9(V0->factor_space(1)));
 
57
 
 
58
    }
 
59
 
 
60
    // Destructor
 
61
    ~KroneckerForm_1()
 
62
    {}
 
63
 
 
64
};
 
65
 
 
66
typedef KroneckerForm_1 LinearForm;
 
67
typedef KroneckerForm_0 BilinearForm;
 
68
 
 
69
}
 
70
#endif