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
00026
00027
00028
00029
00030
00031
00032 #ifndef _DiscreteDeltaFn_H_
00033 #define _DiscreteDeltaFn_H_
00034
00035 #include "REAL.H"
00036 #include "RealVect.H"
00037 #include "FArrayBox.H"
00038
00040
00046 class DiscreteDeltaFn
00047 {
00048 public:
00050 DiscreteDeltaFn() {};
00051
00053 DiscreteDeltaFn(Real a_epsilon) {};
00054
00056 virtual ~DiscreteDeltaFn() {};
00057
00059 virtual void define(Real a_epsilon) = 0;
00060
00062 virtual Real epsilon() const = 0;
00063
00065 virtual DiscreteDeltaFn* clone() const = 0;
00066
00068 virtual Real evaluateDelta(Real a_radius) const = 0;
00069
00071 virtual Real integralDelta(Real a_radius) const = 0;
00072
00074 virtual Real computeK(RealVect& a_radius, int a_idir, int a_jdir) const = 0;
00075
00077
00080 virtual void sumForce(FArrayBox& a_sum,
00081 const RealVect& a_force,
00082 const Box& a_box,
00083 const RealVect& a_position,
00084 const RealVect& a_origin,
00085 Real a_dx) = 0;
00086
00087
00088
00090
00095 virtual void sumForce(FArrayBox& a_sum,
00096 const RealVect& a_force,
00097 const Box& a_box,
00098 int a_dir,
00099 int a_destComp,
00100 const RealVect& a_position,
00101 const RealVect& a_origin,
00102 Real a_dx) = 0;
00103
00104
00106 virtual Real computeLapDelta(Real a_radius) const = 0;
00107
00108 };
00109
00110
00111
00112 #endif