00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _NEUMANNCONDUCTIVITYEBBC_H_
00012 #define _NEUMANNCONDUCTIVITYEBBC_H_
00013
00014 #include "RefCountedPtr.H"
00015
00016 #include "NeumannPoissonEBBC.H"
00017 #include "BaseBCValue.H"
00018 #include "NamespaceHeader.H"
00019
00020
00021
00022
00023 class NeumannConductivityEBBC: public ConductivityBaseEBBC
00024 {
00025 public:
00026
00027 virtual void define(const LayoutData<IntVectSet>& a_cfivs,
00028 const Real& a_factor)
00029 {
00030 ;
00031
00032 }
00033
00034 virtual void applyEBFlux(EBCellFAB& a_lphi,
00035 const EBCellFAB& a_phi,
00036 VoFIterator& a_vofit,
00037 const LayoutData<IntVectSet>& a_cfivs,
00038 const DataIndex& a_dit,
00039 const RealVect& a_probLo,
00040 const RealVect& a_dx,
00041 const Real& a_factor,
00042 const bool& a_useHomogeneous,
00043 const Real& a_time);
00044
00045 NeumannConductivityEBBC(const ProblemDomain& a_domain,
00046 const EBISLayout& a_layout,
00047 const RealVect& a_dx);
00048
00049 virtual LayoutData<BaseIVFAB<VoFStencil> >* getFluxStencil(int ivar)
00050 {
00051 return NULL;
00052 }
00053
00054
00055 virtual ~NeumannConductivityEBBC();
00056
00057
00058 virtual void setValue(Real a_value);
00059
00060
00061 virtual int whichBC()
00062 {
00063 return 0;
00064 };
00065
00066
00067 virtual void setFunction(RefCountedPtr<BaseBCValue> a_flux);
00068
00069 static int s_comp;
00070
00071 private:
00072 NeumannPoissonEBBC m_bc;
00073 };
00074
00075
00076 class NeumannConductivityEBBCFactory: public BaseEBBCFactory
00077 {
00078 public:
00079
00080 NeumannConductivityEBBCFactory();
00081
00082
00083 virtual ~NeumannConductivityEBBCFactory();
00084
00085
00086 virtual void setValue(Real a_value);
00087
00088
00089 virtual void setFunction(RefCountedPtr<BaseBCValue> a_flux);
00090
00091
00092 virtual void setData( RefCountedPtr<LevelData<BaseIVFAB<Real> > >& a_data)
00093 {
00094 m_data = a_data;
00095 m_dataBased = true;
00096 }
00097
00098
00099 virtual NeumannConductivityEBBC* create(const ProblemDomain& a_domain,
00100 const EBISLayout& a_layout,
00101 const RealVect& a_dx,
00102 const IntVect* a_ghostCellsPhi=0,
00103 const IntVect* a_ghostCellsRhs=0);
00104
00105 private:
00106 bool m_onlyHomogeneous;
00107 bool m_isFunction;
00108 RefCountedPtr<LevelData<BaseIVFAB<Real> > >m_data;
00109 bool m_dataBased;
00110
00111 Real m_value;
00112 RefCountedPtr<BaseBCValue> m_flux;
00113 };
00114
00115 #include "NamespaceFooter.H"
00116 #endif