00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _REGPOISSONBC_H_
00030 #define _REGPOISSONBC_H_
00031
00032 #include "Box.H"
00033 #include "FArrayBox.H"
00034 #include "Vector.H"
00035 #include "LoHiSide.H"
00036
00037 #include "RegGhostBC.H"
00038
00040
00053 class RegNeumannBC : public RegBoxGhostBC
00054 {
00055 public:
00056 friend class RegDomainGhostBC;
00057
00059 RegNeumannBC();
00060
00062 RegNeumannBC(int a_dir,
00063 Side::LoHiSide a_side);
00064
00066 RegNeumannBC(int a_dir,
00067 Side::LoHiSide a_side,
00068 const Interval& a_comps);
00069
00071 ~RegNeumannBC();
00072
00073 protected:
00075 RegNeumannBC* newBoxGhostBC() const;
00076
00078
00082 virtual void fillBCValues(FArrayBox& a_neumfac,
00083 FArrayBox& a_dircfac,
00084 FArrayBox& a_inhmval,
00085 Real a_dx,
00086 const Box& a_domain) const;
00087
00089
00093 virtual void fillBCValues(FArrayBox& a_neumfac,
00094 FArrayBox& a_dircfac,
00095 FArrayBox& a_inhmval,
00096 Real a_dx,
00097 const ProblemDomain& a_domain) const;
00098
00099 private:
00100 RegNeumannBC(const RegNeumannBC&) {};
00101 void operator= (const RegNeumannBC&) {};
00102 };
00103
00105
00117 class RegDirichletBC : public RegBoxGhostBC
00118 {
00119 public:
00120 friend class RegDomainGhostBC;
00121
00123 RegDirichletBC();
00124
00126 RegDirichletBC(int a_dir,
00127 Side::LoHiSide a_side);
00128
00130 RegDirichletBC(int a_dir,
00131 Side::LoHiSide a_side,
00132 const Interval& a_comps);
00133
00135 ~RegDirichletBC();
00136
00137 private:
00139 RegDirichletBC* newBoxGhostBC() const;
00140
00142
00146 virtual void fillBCValues(FArrayBox& a_neumfac,
00147 FArrayBox& a_dircfac,
00148 FArrayBox& a_inhmval,
00149 Real a_dx,
00150 const Box& a_domain) const;
00151
00153
00157 virtual void fillBCValues(FArrayBox& a_neumfac,
00158 FArrayBox& a_dircfac,
00159 FArrayBox& a_inhmval,
00160 Real a_dx,
00161 const ProblemDomain& a_domain) const;
00162
00163 private:
00164 RegDirichletBC(const RegDirichletBC&) {};
00165 void operator= (const RegDirichletBC&) {};
00166 };
00167
00168 #endif