00001 #include "pcinvfunc.h"
00002
00003 InvCapPress::InvCapPress(Function1D &P, double a, double b, double smax, unsigned N, double Tol)
00004 :_P(P)
00005 {
00006 _a=a;
00007 _b=b;
00008 assert(_a < _b);
00009 _N=N;
00010 _Tol=Tol;
00011 _smax=smax;
00012 _Pmax=_P(_smax);
00013
00014 PInv = new BSInverse(_P,_smax,_b,_Tol);
00015 PInvInt = new FInterpolate((*PInv),0.0,_Pmax,_N);
00016
00017 PInvL = new BSInverse(_P,_a,_smax,_Tol);
00018 }
00019
00020 double InvCapPress::operator()(double P, unsigned cmp=0) const
00021 {
00022 assert(isInDomain(P,cmp));
00023
00024 if (P <= _Pmax) return (*PInvInt)(P,cmp);
00025
00026 return (*PInvL)(P,cmp);
00027 }
00028
00029 InvCapPress::~InvCapPress(){}