00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _BASEBCVALUE_H_
00012 #define _BASEBCVALUE_H_
00013
00014 #include "RealVect.H"
00015 #include "EBArith.H"
00016 #include "NamespaceHeader.H"
00017
00018 class BaseBCValue
00019 {
00020 public:
00021 BaseBCValue()
00022 {
00023 }
00024
00025 virtual ~BaseBCValue()
00026 {
00027 }
00028
00029 virtual Real value(const RealVect& a_point,
00030 const RealVect& a_normal,
00031 const Real& a_time,
00032 const int& a_comp) const = 0;
00033
00034 virtual Real value(const FaceIndex& a_face,
00035 const Side::LoHiSide& a_side,
00036 const DataIndex& a_dit,
00037 const RealVect& a_point,
00038 const RealVect& a_normal,
00039 const Real& a_time,
00040 const int& a_comp) const
00041 {
00042 return value(a_point,a_normal,a_time,a_comp);
00043 }
00044
00045 virtual Real value(const VolIndex& a_vof,
00046 const RealVect& a_centroid,
00047 const RealVect& a_normal,
00048 const RealVect& a_dx,
00049 const RealVect& a_probLo,
00050 const DataIndex& a_dit,
00051 const Real& a_time,
00052 const int& a_comp) const
00053 {
00054 RealVect point = a_centroid;
00055 point *= a_dx;
00056 point += EBArith::getVofLocation(a_vof,a_dx,a_probLo);
00057 return value(point,a_normal,a_time,a_comp);
00058 }
00059
00060 virtual Real value(const IntVect& a_iv,
00061 const DataIndex& a_dit,
00062 const RealVect& a_point,
00063 const RealVect& a_normal,
00064 const Real& a_time,
00065 const int& a_comp) const
00066 {
00067 return value(a_point,a_normal,a_time,a_comp);
00068 }
00069
00070 virtual Real beta(const RealVect& a_point,
00071 const Real& a_time) const
00072 {
00073 MayDay::Error("BaseBCValue::beta virtual function not implemented");
00074 return 1.2345678e20;
00075 }
00076
00077 };
00078
00079 #include "NamespaceFooter.H"
00080 #endif