Function usefielddependent n(indEl, matind ,Ex,Ey,T,xp,yp)
跳至導覽
跳至搜尋
Function usefielddependent n(indEl, matind ,Ex,Ey,T,xp,yp) is activated by the command $usefieldmufunc. This function is similar to command $useemunfunc, $useemupfunc. But this function provide more parameters for use to assign in the input file. Therefore, this function can be continuous expanded to many different mobility models.
function usefielddependent_n(indEl, matind ,Ex,Ey,T,xp,yp)
use global2Dextra3
use nrtype
use global2D, only : KB
implicit none
real(dp) :: usefielddependent_n
integer(i4b),intent(in) :: indEl, matind
integer(i4b) :: i,j,k
real(dp),intent(in) :: Ex,Ey ,T ,xp,yp
real(dp) :: mu, E, muconst
if(munpfunctype(matind)==1) then
if(Ey<0) then
E=0
else
E=Ey
end if
!print*, "heyhey"
if(munpfuncpara(2,matind)*sqrt(E) < 50.0_dp) then
mu= munpfuncpara(1,matind)*exp(munpfuncpara(2,matind)*sqrt(E))
else
mu= munpfuncpara(1,matind)*exp(50.0_dp)
end if
usefielddependent_n=mu
elseif(munpfunctype(matind)==11) then
if(Ey>0) then
E=0
else
E=abs(Ey)
end if
!print*, "heyhey"
if(munpfuncpara(2,matind)*sqrt(E) < 50.0_dp) then
mu= munpfuncpara(1,matind)*exp(munpfuncpara(2,matind)*sqrt(E))
else
mu= munpfuncpara(1,matind)*exp(50.0_dp)
end if
usefielddependent_n=mu
elseif(munpfunctype(matind)==2) then
if(Ex<0) then
E=0
else
E=Ex
end if
!print*, "heyhey"
if(munpfuncpara(2,matind)*sqrt(E) < 50.0_dp) then
mu= munpfuncpara(1,matind)*exp(munpfuncpara(2,matind)*sqrt(E))
else
mu= munpfuncpara(1,matind)*exp(50.0_dp)
end if
usefielddependent_n=mu
elseif(munpfunctype(matind)==21) then
if(Ex>0) then
E=0
else
E=abs(Ex)
end if
!print*, "heyhey"
if(munpfuncpara(2,matind)*sqrt(E) < 50.0_dp) then
mu= munpfuncpara(1,matind)*exp(munpfuncpara(2,matind)*sqrt(E))
else
mu= munpfuncpara(1,matind)*exp(50.0_dp)
end if
usefielddependent_n=mu
end if
!stop end function