00001 #ifndef _FDFRACMOBILITY
00002 #define _FDFRACMOBILITY
00003
00004 class FDFractionalLinearMobility : public Function1D
00005 {
00006 private:
00007 double _v1,_v2;
00008 double _M;
00009 ProbeFunction1D prob;
00010 protected:
00011
00012 public:
00013 FDFractionalLinearMobility(double v1,double v2)
00014 :Function1D(1),_v1(v1),_v2(v2)
00015 {
00016 _M = v1/v2;
00017 prob.sampleFunction(*this,0,0,1,100000);
00018 }
00019 virtual ~FDFractionalLinearMobility(){}
00020
00021 virtual void getMinMaxValues(double a, double b,double &min,double &max) const
00022 {
00023 prob.getMinMaxValues(a,b,min,max);
00024 }
00025
00026
00027 virtual double operator()(double dd,unsigned cmp =0) const
00028 {
00029 return (_M*(1-dd) + dd - dd*(1-_M) )/pow(_M*(1-dd) + dd,2);
00030 }
00031
00032 };
00033 #endif