00001
00002
00003
00004
00005 #ifndef _GRADIENT_H_
00006 #define _GRADIENT_H_
00007
00008 #include "ProblemDomain.H"
00009 #include "FArrayBox.H"
00010 #include "FluxBox.H"
00011 #include "Box.H"
00012
00013 enum StencilType {TwoPts, FourPts, TenPts};
00014
00015 class Gradient
00016 {
00017 public:
00019 Gradient(){;};
00020
00022 virtual ~Gradient(){;};
00023
00024
00025 virtual void gradient(FArrayBox& a_grad,
00026 const FArrayBox& a_phi,
00027 const ProblemDomain& a_domain,
00028 const Real& a_dx,
00029 const Box& a_box) = 0;
00030 };
00031
00032 class TwoPtsGradient : public Gradient
00033 {
00034 public:
00036 TwoPtsGradient() : Gradient() {;};
00037
00039 virtual ~TwoPtsGradient(){;};
00040
00041
00042 virtual void gradient(FArrayBox& a_grad,
00043 const FArrayBox& a_phi,
00044 const ProblemDomain& a_domain,
00045 const Real& a_dx,
00046 const Box& a_box);
00047 };
00048
00049 class FourPtsGradient : public Gradient
00050 {
00051 public:
00053 FourPtsGradient() : Gradient() {;};
00054
00056 virtual ~FourPtsGradient(){;};
00057
00058
00059 virtual void gradient(FArrayBox& a_grad,
00060 const FArrayBox& a_phi,
00061 const ProblemDomain& a_domain,
00062 const Real& a_dx,
00063 const Box& a_box);
00064 };
00065
00066 class TenPtsGradient : public Gradient
00067 {
00068 public:
00070 TenPtsGradient() : Gradient() {;};
00071
00073 virtual ~TenPtsGradient(){;};
00074
00075
00076 virtual void gradient(FArrayBox& a_grad,
00077 const FArrayBox& a_phi,
00078 const ProblemDomain& a_domain,
00079 const Real& a_dx,
00080 const Box& a_box);
00081 };
00082
00083 #endif