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 _PolynomialDelta_H_
00033 #define _PolynomialDelta_H_
00034
00035 #include "REAL.H"
00036 #include "DiscreteDeltaFn.H"
00037 #include "Vector.H"
00038
00040
00044 class PolynomialDelta : public DiscreteDeltaFn
00045 {
00046 public:
00048 PolynomialDelta();
00049
00051 PolynomialDelta(Real a_epsilon);
00052
00054 virtual ~PolynomialDelta();
00055
00057 virtual void define(Real a_epsilon);
00058
00060 virtual Real epsilon() const {return m_epsilon;};
00061
00063 virtual DiscreteDeltaFn* clone() const;
00064
00066 virtual Real evaluateDelta(Real a_radius) const;
00067
00069 virtual Real integralDelta(Real a_radius) const;
00070
00072 virtual Real computeK(RealVect& a_radius, int a_idir, int a_jdir) const;
00073
00075
00078 virtual void sumForce(FArrayBox& a_sum,
00079 const RealVect& a_force,
00080 const Box& a_box,
00081 const RealVect& a_position,
00082 const RealVect& a_origin,
00083 Real a_dx);
00084
00085
00087
00092 virtual void sumForce(FArrayBox& a_sum,
00093 const RealVect& a_force,
00094 const Box& a_box,
00095 int a_dir,
00096 int a_destComp,
00097 const RealVect& a_position,
00098 const RealVect& a_origin,
00099 Real a_dx);
00100
00101
00103 virtual Real computeLapDelta(Real a_radius) const;
00104
00106 void setCoeffs(const Vector<Real>& a_coeffs);
00107
00108 void setCoeff(Real a_coeff, int n);
00109
00110 Vector<Real> getCoeffs() const;
00111
00112
00113 protected:
00114
00116 Vector<Real> m_coeffs;
00117
00119 Real m_epsilon;
00120
00122 Real m_factor;
00123
00124
00125 void setDefaultValues();
00126
00127
00128 void defineFactor();
00129
00130 };
00131
00132
00133
00134 #endif