00001 #include "flinearmobilityproduct.h" 00002 #include "exception.h" 00003 #include "numericmethods.h" 00004 00005 00006 00007 FLinearMobilityProduct::FLinearMobilityProduct(double vW,double vO,double srw, double sro) 00008 :Function1D(1) 00009 { 00010 00011 _vw = vW; 00012 _vo = vO; 00013 _MaxSw=1.-sro; 00014 _Srw=srw; 00015 _c1=_MaxSw*_MaxSw*_vo; 00016 _c2=(1.0-_Srw)*(1.0-_Srw)*_vw; 00017 00018 } 00019 00020 00021 double FLinearMobilityProduct::operator()(double x,unsigned cmp) const 00022 { 00023 assert(cmp==0); 00024 if (x >= _MaxSw) 00025 x=_MaxSw; 00026 else if (x < _Srw) 00027 x=_Srw; 00028 00029 register double krw = x-_Srw; 00030 register double kro = _MaxSw-x; 00031 return (krw/_c2)*(kro/_c1)/(krw/_c2 + kro/_c1); 00032 } 00033 00034 00035 00036 FLinearMobilityProduct::~FLinearMobilityProduct() 00037 { 00038 00039 }