「Function getmunbyET(ind,Ex,Ey,T,xp,yp)」:修訂間差異

出自DDCC TCAD TOOL Manual
跳至導覽 跳至搜尋
Yrwu留言 | 貢獻
已建立頁面,內容為 "function getmunbyET(ind,Ex,Ey,T,xp,yp) is to return the program its mobility according to electric field, temperature, x, y. If some more information is needed, such..."
 
Yrwu留言 | 貢獻
無編輯摘要
 
第1行: 第1行:
function getmunbyET(ind,Ex,Ey,T,xp,yp) is to return the program its mobility according to electric field, temperature, x, y. If some more information is needed, such as carrier  density, it can call the global variable  
function getmunbyET(ind,Ex,Ey,T,xp,yp) is to return the program its mobility according to electric field, temperature, x, y. If some more information is needed, such as carrier  density, you can call the global variable. <br>
The command to call this function is: <br>
[[$useemufunc]], [[$useemunfunc]], [[$useemupfunc]] <br>


     function getmunbyET(ind,Ex,Ey,T,xp,yp)
     function getmunbyET(ind,Ex,Ey,T,xp,yp)

於 2017年9月3日 (日) 02:23 的最新修訂

function getmunbyET(ind,Ex,Ey,T,xp,yp) is to return the program its mobility according to electric field, temperature, x, y. If some more information is needed, such as carrier density, you can call the global variable.
The command to call this function is:
$useemufunc, $useemunfunc, $useemupfunc

   function getmunbyET(ind,Ex,Ey,T,xp,yp)
   use global2d
   implicit none
   integer*4 :: ind   ! element's global index number
   real*8  ::  getmunbyET ! return value of mobility
   integer*4  :: i,j,k,regionindex
   real*8 ::  Ex,Ey , T ,xp,yp, vsat, Esaturation ,Eslope ,mun_low, Esat
   real*8  :: v , x
   real*8  :: A, Asat, Amin, B, Bmax, Bstart,Bslope , nn(3),pp(3) , nave,pave,n0,p0 , orginalmun
   do i=1,3
       nn(i)= me%n( me%element(i,ind) )   ! carrier density is saved in node, not element
       pp(i)= me%p( me%element(i,ind) )   ! mobility is for element. So we need to get the average value
   end do
   regionindex=me%parEL(ind) ! To obtained the region information for this node
   nave=sum(nn)/3.0 ! average carrier density
   pave=sum(pp)/3.0 ! average carrier density
   if(  xp < 1.0d-4 .and. yp < 1.0d-4) then
       x=Ex
       v= B+Bmax*exp((Bstart-Ex)/Bslope)
       getmunbyET=v/Ex  *(n0/nave)
   else
       getmunbyET=mun_low *(n0/nave)
   end if
   print*, " "
   print*, "************************************************************************"
   print*, " Error! This version does not support using external libemufunc.so module"
   print*, " You might accidentally set $useemunfunc  to activate using external module"
   print*, " Please execute 2D-ddcc-dyna.exe instead."
   Print*, " Program Stop! "
   stop
   end function getmunbyET