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