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 virtual ~BaseBCValue() {};
00024
00025 virtual Real value(const RealVect& a_point,
00026 const RealVect& a_normal,
00027 const Real& a_time,
00028 const int& a_comp) const = 0;
00029
00030 virtual Real value(const FaceIndex& a_face,
00031 const Side::LoHiSide& a_side,
00032 const DataIndex& a_dit,
00033 const RealVect& a_point,
00034 const RealVect& a_normal,
00035 const Real& a_time,
00036 const int& a_comp) const
00037 {
00038 return value(a_point,a_normal,a_time,a_comp);
00039 }
00040
00041 virtual Real value(const VolIndex& a_vof,
00042 const RealVect& a_centroid,
00043 const RealVect& a_normal,
00044 const RealVect& a_dx,
00045 const RealVect& a_probLo,
00046 const DataIndex& a_dit,
00047 const Real& a_time,
00048 const int& a_comp) const
00049 {
00050 RealVect point = a_centroid;
00051 point *= a_dx;
00052 point += EBArith::getVofLocation(a_vof,a_dx,a_probLo);
00053 return value(point,a_normal,a_time,a_comp);
00054 }
00055
00056 virtual Real value(const IntVect& a_iv,
00057 const DataIndex& a_dit,
00058 const RealVect& a_point,
00059 const RealVect& a_normal,
00060 const Real& a_time,
00061 const int& a_comp) const
00062 {
00063 return value(a_point,a_normal,a_time,a_comp);
00064 }
00065
00066 virtual Real beta(const RealVect& a_point,
00067 const Real& a_time) const
00068 {
00069 MayDay::Error("BaseBCValue::beta virtual function not implemented");
00070 return 1.2345678e20;
00071 }
00072
00073 };
00074
00075 #include "NamespaceFooter.H"
00076 #endif