package Material @ISA = qw() sub new my ($module, %arg) = @_; return $this; sub DESTROY my $this = shift; sub PNJunctionParameters my ($this, $Vbi, $ND, $nDielectricConstant, $NA, $pDielectricConstant, $IsPrint) = @_; sub EiFromDOS my ($this, $Temperature, $IsPrint) = @_; return $EF; sub EF my ($this, $Temperature, $IsPrint) = @_; return $EF; sub Eg my ($this, $Ec, $Ev, $IsPrint) = @_; return $this->{Eg}; sub nh my ($this, $Temperature) = @_; return $ne; sub ne my ($this, $Temperature) = @_; return $ne; sub Ni my ($this, $Temperature, $Eg, $IsPrint) = @_; return $this->{Ni}; sub Nv my ($this, $HoleEffectiveMass, $VBMultiplicity, $Temperature, $IsPrint) = @_; return $this->{Nv}; sub Nc my ($this, $ElectronEffectiveMass, $CBMultiplicity, $Temperature, $IsPrint) = @_; return $this->{Nc}; sub Dv0 my ($this, $HoleEffectiveMass, $VBMultiplicity, $IsPrint) = @_; return $this->{Dv0}; sub Dc0 my ($this, $ElectronEffectiveMass, $CBMultiplicity, $IsPrint) = @_; return $this->{Dc0}; sub CalEFFromNe my ($this, $Ne, $Temperature, $IsPrint) = @_; return $EF; sub CalEFFromNh my ($this, $Nh, $Temperature, $IsPrint) = @_; return $EF; sub DOS my ($this, $E) = @_; return $this->{Dc0} * sqrt($E - $this->{Ec}); return $this->{Dv0} * sqrt($this->{Ev} - $E); return 0.0; sub BMShift my ($this, $Ne, $D0, $IsPrint) = @_; return $EF; sub ElectronDiffusionLength my ($this, $ElectronDiffusionConstant, $ElectronLifeTime, $IsPrint) = @_; return $ElectronDiffusionLength; sub ElectronDiffusionConstant my ($this, $Temperature, $ElectronMobility, $IsPrint) = @_; return $ElectronDiffusionConstant; sub ElectronDriftVelocity my ($this, $V, $Thickness, $ElectronMobility, $IsPrint) = @_; return $vdrift; sub ElectronDriftMeanFreePath my ($this, $V, $Thickness, $ElectronMobility, $MomentumRelaxationTime, $IsPrint) = @_; return $ldrift; sub ElectronThermalMeanFreePath my ($this, $Temperature, $ElectronEffectiveMass, $MomentumRelaxationTime, $IsPrint) = @_; return $lth; sub ElectronThermalVelocity my ($this, $Temperature, $ElectronEffectiveMass, $IsPrint) = @_; return $vth; sub ElectronDriftConductivity my ($this, $ElectronMobility, $Ne, $IsPrint) = @_; sub ElectronDriftMobility my ($this, $ElectronEffectiveMass, $MomentumRelaxationTime, $IsPrint) = @_; return $ElectronMobility; sub EmissionCurrent my ($this, $V, $Thickness, $Temperature, $EffectiveRichardson, $WorkFunction, $DielectricConstant, $ElectrodeSpacing, $IsPrint) = @_; sub CalEffectiveMassFromRichardsonDushman my ($this, $EffectiveRichardson, $IsPrint) = @_; return $mef; sub RichardsonDushman my ($this, $ElectronEffectiveMass, $IsPrint) = @_; return ($Richardson, $EffectiveRichardson); sub SchottkyFrenkelSlope my ($this, $Temperature, $DielectricConstant, $IsPrint) = @_; return ($SchottkySlope, $SchottkySlopekT); sub PooleFrenkelCurrent my ($this, $V, $Thickness, $Temperature, $PFSlopekT, $U, $NIon, $dHopping, $fIon) = @_; return $JPF; sub PooleFrenkelSlope my ($this, $Temperature, $DielectricConstant, $IsPrint) = @_; sub HoppingMobility my ($this, $Temperature, $NIon, $U, $dHopping, $fIon, $IsPrint) = @_; return ($mobilitySigma, $mobilityEinstein); sub HoppingSigma my ($this, $Temperature, $NIon, $U, $dHopping, $fIon, $IsPrint) = @_; return $sigmaOhmic; sub CalPlasmaFrequency my ($this, $Ne, $m) = @_; return sqrt( $Ne *$e*$e / $me / $m / $e0) / 2.0 / $pi; sub CalMISCV my ($this, $T, $Vg, $VFB, $Epss, $Epsi, $dgate, $ds, $Cox, $Cs, $Ss, $LDe, $LDh, $LD, $n0, $p0, $CorrectByCs, $EPS, $nMaxIter, $Vs, $dVs) = @_; return ($Vs, $Vox, $EField, $Qs, $HFCg, $LFCg, $HFCd, $LFCd); sub CalMISCVFromVs my ($this, $T, $Vs, $VFB, $Epss, $Epsi, $dgate, $ds, $Cox, $Cs, $Ss, $LDe, $LDh, $LD, $n0, $p0, $CorrectByCs) = @_; return ($Vg, $Vox, $EField, $Qs, $HFCg, $LFCg, $HFCd, $LFCd); sub CalMISCVDebyeLength my ($this, $T, $Ncarrier, $er) = @_; return sqrt(2.0*$er*$e0 * $kB * $T / $e / $e / $Ncarrier); sub CalSubthresholdSwing my ($this, $T, $er, $dgate, $Dit) = @_; return 0.0 if($C == 0.0); return $kB * $T * log(10.0) * (1.0 + $e * $Dit / $C) / $e; sub CalDit my ($this, $T, $er, $S, $dgate, $SS) = @_; return ($Cox / $e) * ($SS * $e / ($kB * $T * log(10.0)) - 1.0); sub CalCapacitance my ($this, $er, $S, $dgate) = @_; return 0.0 if($dgate == 0.0); return $C; sub CalCapacitanceThickness my ($this, $er, $S, $C) = @_; return $er * $e0 * $S / $C;