48 #ifndef Xyce_N_DEV_Device_Support_h
49 #define Xyce_N_DEV_Device_Support_h
51 #include <Epetra_Util.h>
56 #define N_MINLOG 1E-38 // the smallest number we can take the log of
67 void lambertw (
double x,
double &w,
int &ierr,
double &xi);
69 double limvds (
double vnew,
double vold);
71 double pnjlim (
double vnew,
double vold,
double vt,
double vcrit,
74 double pnjlim_new (
double vnew,
double vold,
double vt,
double vcrit,
77 double fetlim (
double vnew,
double vold,
double vto);
150 register CKTcircuit *ckt,
186 double contVds (
double vds,
double alpha,
double min = 0.3);
188 double contVgst (
double vgst,
double alpha,
double vgstConst = 3.0);
193 int SetSeed(
unsigned int seedIn);
195 double Xexp(
double,
double &,
double);
199 void spline( std::vector<double> & x, std::vector<double> & y, std::vector<double> & y2);
200 void splint ( std::vector<double> & xa, std::vector<double> & ya, std::vector<double> & y2a,
201 double x_position,
double & y_spline);
204 double pred ( CKTcircuit *ckt,
int loct);
double pnjlim_new(double vnew, double vold, double vt, double vcrit, int *icheck)
double pnjlim(double vnew, double vold, double vt, double vcrit, int *icheck)
void qmeyer(double vgs, double vgd, double vgb, double von, double vdsat, double &capgs, double &capgd, double &capgb, double phi, double cox)
Pure virtual class to augment a linear system.
double getRandomPerturbation()
double fetlim(double vnew, double vold, double vto)
int SetSeed(unsigned int seedIn)
double contVgst(double vgst, double alpha, double vgstConst=3.0)
void splint(std::vector< double > &xa, std::vector< double > &ya, std::vector< double > &y2a, double x_position, double &y_spline)
void spline(std::vector< double > &x, std::vector< double > &y, std::vector< double > &y2)
double Xexp(double, double &, double)
int finiteNumberTest(const double x)
void qmeyerderivs(double vgs, double vgd, double vgb, double von, double vdsat, double &dcapgsdvgs, double &dcapgsdvgb, double &dcapgsdvgd, double &dcapgddvgs, double &dcapgddvgb, double &dcapgddvgd, double &dcapgbdvgs, double &dcapgbdvgb, double &dcapgbdvgd, double phi, double cox, int Dtype)
double limvds(double vnew, double vold)
int getGainScaleBlockID(int numBlocks)
void lambertw(double x, double &w, int &ierr, double &xi)
void noiseSupport(double &noise, double &lnNoise, const int type, const double param, const double temp)
double contVds(double vds, double alpha, double min=0.3)
void cmeyer(double vgs0, double vgd0, double vgb0, double von0, double vdsat0, double vgs1, double vgd1, double vgb1, double covlgs, double covlgd, double covlgb, register double *cgs, register double *cgd, register double *cgb, double phi, double cox, double von, double vdsat)