5 #ifndef _ELECTRICUTILITYFUNCTIONS_H_
6 #define _ELECTRICUTILITYFUNCTIONS_H_
19 const T
FermiFunction (
const T& energy,
const T& fermilevel,
const T& temperature)
21 return 1. / (1. + exp(
QE * (energy - fermilevel) / (
K_SI * temperature) ));
27 T exponent, power, supply;
29 power = -
QE * (energy - fermilevel) / (
K_SI * temperature);
30 exponent = exp(power);
33 supply =
K_SI * temperature * (exponent - pow(exponent, 2.0)/2.0 + pow(exponent, 3.0)/3.0 - pow(exponent, 4.0)/4.0);
36 supply =
K_SI * temperature * power;
39 supply =
K_SI * temperature *log(1+exponent);
67 else if (x<0)
return -1;
71 double findMin(
double x1,
double x2,
double x3,
double x4)
73 double min = 1000000000;
85 double findMax(
double x1,
double x2,
double x3,
double x4)
87 double max = -1000000000;
108 throw CException (
"column center line start and end points are the same!!!");
114 double distance =
mag(HM);
122 throw CException (
"column center line start and end points are the same!!!");
const T getMembraneVoltage(const T ¤tTime)
const T FermiFunction(const T &energy, const T &fermilevel, const T &temperature)
double max(double x, double y)
T mag(const Vector< T, 3 > &a)
double findMax(double x1, double x2, double x3, double x4)
double findMin(double x1, double x2, double x3, double x4)
const T PositiveValueOf(T input)
double distanceFromPointToLine(VectorD3 p1, VectorD3 p2, VectorD3 M)
const T ElectronSupplyFunction(const T &energy, const T &fermilevel, const T &temperature)
VectorD3 projectionFromPointToLine(VectorD3 p1, VectorD3 p2, VectorD3 M)
double min(double x, double y)
T dot(const Vector< T, 3 > &a, const Vector< T, 3 > &b)
Vector< double, 3 > VectorD3