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 _POISSONBC_H_
00030 #define _POISSONBC_H_
00031
00032 #include "Box.H"
00033 #include "FArrayBox.H"
00034 #include "Vector.H"
00035 #include "LoHiSide.H"
00036 #include "GhostBC.H"
00037
00039
00050 class NeumannBC: public BoxGhostBC
00051 {
00052 public:
00053 friend class DomainGhostBC;
00054
00056 NeumannBC();
00057
00059 NeumannBC(int dir,
00060 Side::LoHiSide sd);
00061
00063 NeumannBC(int dir,
00064 Side::LoHiSide sd,
00065 const Interval& a_comps);
00066
00068 ~NeumannBC();
00069
00070 protected:
00072
00077 virtual void fillBCValues(FArrayBox& a_neumfac,
00078 FArrayBox& a_dircfac,
00079 FArrayBox& a_inhmval,
00080 Real a_dx,
00081 const Box& a_domain) const;
00082
00084
00089 virtual void fillBCValues(FArrayBox& a_neumfac,
00090 FArrayBox& a_dircfac,
00091 FArrayBox& a_inhmval,
00092 Real a_dx,
00093 const ProblemDomain& a_domain) const;
00094
00096
00099 BoxGhostBC* new_boxghostbc() const;
00100
00101 private:
00102 NeumannBC(const NeumannBC& a_neuin){;}
00103 virtual void operator=(const NeumannBC& a_neuin){;}
00104 };
00105
00107
00119 class DirichletBC: public BoxGhostBC
00120 {
00121 public:
00122 friend class DomainGhostBC;
00123
00125 DirichletBC();
00126
00128 DirichletBC(int dir, Side::LoHiSide sd);
00129
00131 DirichletBC(int dir, Side::LoHiSide sd,
00132 const Interval& a_comps);
00133
00135 ~DirichletBC();
00136
00137 private:
00139
00143 virtual void fillBCValues(FArrayBox& a_neumfac,
00144 FArrayBox& a_dircfac,
00145 FArrayBox& a_inhmval,
00146 Real a_dx,
00147 const Box& a_domain) const;
00148
00150
00154 virtual void fillBCValues(FArrayBox& a_neumfac,
00155 FArrayBox& a_dircfac,
00156 FArrayBox& a_inhmval,
00157 Real a_dx,
00158 const ProblemDomain& a_domain) const;
00159
00161 BoxGhostBC* new_boxghostbc() const;
00162
00163 private:
00164 DirichletBC(const DirichletBC& a_dircin){;}
00165 virtual void operator=(const DirichletBC& a_dircin){;}
00166 };
00167
00168 #endif