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
00021
00023 class NeumannConductivityEBBC: public ConductivityBaseEBBC
00024 {
00025 public:
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);
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
00055 virtual ~NeumannConductivityEBBC();
00056
00058 virtual void setValue(Real a_value);
00059
00061 virtual int whichBC()
00062 {
00063 return 0;
00064 };
00065
00067 virtual void setFunction(RefCountedPtr<BaseBCValue> a_flux);
00068
00070 virtual void getEBFlux(Real& a_flux,
00071 const VolIndex& a_vof,
00072 const LevelData<EBCellFAB>& a_phi,
00073 const LayoutData<IntVectSet>& a_cfivs,
00074 const DataIndex& a_dit,
00075 const RealVect& a_probLo,
00076 const RealVect& a_dx,
00077 const bool& a_useHomogeneous,
00078 const Real& a_time,
00079 const pair<int,Real>* a_cacheHint=0 );
00080
00081 private:
00082 NeumannPoissonEBBC m_bc;
00083 };
00084
00086 class NeumannConductivityEBBCFactory: public BaseEBBCFactory
00087 {
00088 public:
00090 NeumannConductivityEBBCFactory();
00091
00093 virtual ~NeumannConductivityEBBCFactory();
00094
00096 virtual void setValue(Real a_value);
00097
00099 virtual void setFunction(RefCountedPtr<BaseBCValue> a_flux);
00100
00102 virtual NeumannConductivityEBBC* create(const ProblemDomain& a_domain,
00103 const EBISLayout& a_layout,
00104 const RealVect& a_dx,
00105 const IntVect* a_ghostCellsPhi=0,
00106 const IntVect* a_ghostCellsRhs=0);
00107
00108 private:
00109 bool m_onlyHomogeneous;
00110 bool m_isFunction;
00111
00112 Real m_value;
00113 RefCountedPtr<BaseBCValue> m_flux;
00114 };
00115
00116 #include "NamespaceFooter.H"
00117 #endif