package PES @ISA = qw() sub new my ($module, $app) = @_; return $this; sub DESTROY my $this = shift; sub FermiDiracFunction my ($E, $T, $EF, $C0, $Wa) = @_; return $C0 / (1.0 + exp(($E-$EF)/($kB*$T/$e+$Wa))); sub BG my ($E, $BG, $BGLeft, $EBG0, $WBG) = @_; return $BG + ($BGLeft-$BG) / (1.0 + exp(($E-$EBG0)/$WBG)); sub CBDOS my ($E, $D0CB, $ECBM) = @_; return $DE; sub VBDOS my ($E, $D0VB, $EVBM) = @_; return $DE; sub MetalDOS my ($E, $D0CB, $ECBM) = @_; return $DE; sub DOS my ($E, $D0CB, $ECBM, $D0VB, $EVBM, $DOSType) = @_; return $DE; sub TotalDOS my ($E, $pVars, $IsMetal) = @_; return ($y, $CB, $VB, \@GL, $FD); sub EnergyCut my ($pX, $pY, $pVars) = @_; return if($K0 <= 0.0); return $pY; sub CalTotalDOSSpectrum my ($pX, $pVars, $IsMetal) = @_; return ($pYConvoluted, \@CB, \@VB, \@CBFD, \@VBFD, \@GLArray, \@FD, \@BG); sub Convolution my ($pX, $pY, $AppFunction, $Wa) = @_; return $pY if($Wa <= 0.0); $AppFunc = sub { Sci::Gaussian( $AppFunc = sub { Sci::Lorentzian( return \@Y; return \@Y; sub Deconvolution my ($pXObs, $pYObs, $AppFunction, $Wa, $CorrectZero, $Dumping, $nMaxIter, $EPS) = @_; my $AppFunc = sub { Sci::Lorentzian( $AppFunc = sub { Sci::Gaussian( return ($Y[$iter], @Y); sub DeconvolutionDiff my ($Y1, $Y2) = @_; return $Y2diff;