MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Stencil.h
Go to the documentation of this file.
1 /**********************************************************************
2 ** This program is part of 'MOOSE', the
3 ** Messaging Object Oriented Simulation Environment.
4 ** Copyright (C) 2003-2011 Upinder S. Bhalla. and NCBS
5 ** It is made available under the terms of the
6 ** GNU Lesser General Public License version 2.1
7 ** See the file COPYING.LIB for the full notice.
8 **********************************************************************/
9 
10 #ifndef _STENCIL_H
11 #define _STENCIL_H
12 
13 class Stencil
14 {
15  public:
16  Stencil();
17 
18  virtual ~Stencil();
19 
25  virtual void addFlux( unsigned int meshIndex,
26  vector< double >& f, const vector< vector< double > >& S,
27  const vector< double >& diffConst ) const = 0;
28 
29  private:
30 };
31 
35 class DummyStencil: public Stencil
36 {
37  public:
38  DummyStencil();
39  ~DummyStencil();
40  void addFlux( unsigned int meshIndex, vector< double >& f,
41  const vector< vector< double > >& S,
42  const vector< double >& diffConst ) const;
43  private:
44 };
45 
50 class LineStencil: public Stencil
51 {
52  public:
53  LineStencil( double h );
54  ~LineStencil();
55  void addFlux( unsigned int meshIndex, vector< double >& f,
56  const vector< vector< double > >& S,
57  const vector< double >& diffConst ) const;
58  private:
59  double h_;
60  double invHsq_;
61 };
62 
68 {
69  public:
70  RectangleStencil( double dx, double dy, unsigned int nx );
72  void addFlux( unsigned int meshIndex, vector< double >& f,
73  const vector< vector< double > >& S,
74  const vector< double >& diffConst ) const;
75  private:
76  double dx_;
77  double dy_;
78  double invDxSq_;
79  double invDySq_;
80  unsigned int nx_;
81 };
82 
86 class CuboidStencil: public Stencil
87 {
88  public:
89  CuboidStencil( double dx, double dy, double dz,
90  unsigned int nx, unsigned int ny );
92  void addFlux( unsigned int meshIndex, vector< double >& f,
93  const vector< vector< double > >& S,
94  const vector< double >& diffConst ) const;
95  private:
96  double dx_;
97  double dy_;
98  double dz_;
99  double invDxSq_;
100  double invDySq_;
101  double invDzSq_;
102  unsigned int nx_;
103  unsigned int ny_;
104 };
105 
106 #endif // _STENCIL_H
double h_
Definition: Stencil.h:59
double invHsq_
Definition: Stencil.h:60
LineStencil(double h)
Definition: Stencil.cpp:109
RectangleStencil(double dx, double dy, unsigned int nx)
Definition: Stencil.cpp:141
void addFlux(unsigned int meshIndex, vector< double > &f, const vector< vector< double > > &S, const vector< double > &diffConst) const
Definition: Stencil.cpp:163
unsigned int ny_
Definition: Stencil.h:103
void addFlux(unsigned int meshIndex, vector< double > &f, const vector< vector< double > > &S, const vector< double > &diffConst) const
Definition: Stencil.cpp:211
CuboidStencil(double dx, double dy, double dz, unsigned int nx, unsigned int ny)
Definition: Stencil.cpp:180
void addFlux(unsigned int meshIndex, vector< double > &f, const vector< vector< double > > &S, const vector< double > &diffConst) const
Definition: Stencil.cpp:99
virtual ~Stencil()
Definition: Stencil.cpp:87
double invDxSq_
Definition: Stencil.h:99
double invDzSq_
Definition: Stencil.h:101
unsigned int nx_
Definition: Stencil.h:102
Stencil()
Definition: Stencil.cpp:84
double invDySq_
Definition: Stencil.h:79
double dx_
Definition: Stencil.h:76
void addFlux(unsigned int meshIndex, vector< double > &f, const vector< vector< double > > &S, const vector< double > &diffConst) const
Definition: Stencil.cpp:124
virtual void addFlux(unsigned int meshIndex, vector< double > &f, const vector< vector< double > > &S, const vector< double > &diffConst) const =0
unsigned int nx_
Definition: Stencil.h:80
double dx_
Definition: Stencil.h:96
double dy_
Definition: Stencil.h:97
double invDySq_
Definition: Stencil.h:100
double dz_
Definition: Stencil.h:98
double invDxSq_
Definition: Stencil.h:78
double dy_
Definition: Stencil.h:77