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 #ifndef _EXTRAPBC_H_
00026 #define _EXTRAPBC_H_
00027
00028 #include "Box.H"
00029 #include "FArrayBox.H"
00030 #include "Vector.H"
00031 #include "LoHiSide.H"
00032 #include "GhostBC.H"
00034
00047 class ExtrapBC : public BoxGhostBC
00048 {
00049 public:
00050 friend class DomainGhostBC;
00051
00053 ~ExtrapBC();
00054
00056 ExtrapBC();
00057
00059 ExtrapBC(int dir, Side::LoHiSide sd);
00060
00062 ExtrapBC(int dir, Side::LoHiSide sd,
00063 const Interval& a_comps);
00064
00065 protected:
00066
00068 virtual void
00069 fillBCValues(FArrayBox& a_neumfac,
00070 FArrayBox& a_dircfac,
00071 FArrayBox& a_inhmval,
00072 Real a_dx,
00073 const ProblemDomain& a_domain) const;
00074
00076 virtual void applyHomogeneousBCs(FArrayBox& a_state,
00077 const ProblemDomain& a_domain,
00078 Real a_dx) const;
00079
00081 virtual void applyInhomogeneousBCs(FArrayBox& a_state,
00082 const ProblemDomain& a_domain,
00083 Real a_dx) const;
00084
00086 virtual void applyExtrapBCs(FArrayBox& a_state,
00087 const ProblemDomain& a_domain,
00088 Real a_dx) const;
00089
00090
00092 virtual void
00093 fillBCValues(FArrayBox& a_neumfac,
00094 FArrayBox& a_dircfac,
00095 FArrayBox& a_inhmval,
00096 Real a_dx,
00097 const Box& a_domain) const;
00098
00100 virtual void applyHomogeneousBCs(FArrayBox& a_state,
00101 const Box& a_domain,
00102 Real a_dx) const;
00103
00105 virtual void applyInhomogeneousBCs(FArrayBox& a_state,
00106 const Box& a_domain,
00107 Real a_dx) const;
00108
00110 virtual void applyExtrapBCs(FArrayBox& a_state,
00111 const Box& a_domain,
00112 Real a_dx) const;
00113
00114
00116 BoxGhostBC* new_boxghostbc() const;
00117
00118 private:
00119 ExtrapBC(const ExtrapBC& neuin){;}
00120 void operator=(const ExtrapBC& neuin){;}
00121
00122 };
00123
00124
00125
00126 #endif