Function usefielddependent n(indEl, matind ,Ex,Ey,T,xp,yp)

出自 DDCC TCAD TOOL Manual
前往: 導覽搜尋

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