"Function getmupbyET(ind,Ex,Ey,T,xp,yp)" 修訂間的差異
出自 DDCC TCAD TOOL Manual
(已建立頁面,內容為 "function getmupbyET(ind,Ex,Ey,T,xp,yp) is to return the program the hole's mobility according to electric field, temperature, x, y. If some more information is need...") |
|||
行 1: | 行 1: | ||
− | function getmupbyET(ind,Ex,Ey,T,xp,yp) is to return the program the hole's mobility according to electric field, temperature, x, y. If some more information is needed, such as carrier density, |
+ | function getmupbyET(ind,Ex,Ey,T,xp,yp) is to return the program the hole's 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 getmupbyET(ind,Ex,Ey,T,xp,yp) |
function getmupbyET(ind,Ex,Ey,T,xp,yp) |
於 2017年9月3日 (日) 10:24 的最新修訂
function getmupbyET(ind,Ex,Ey,T,xp,yp) is to return the program the hole's 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 getmupbyET(ind,Ex,Ey,T,xp,yp) use global2d implicit none integer*4 :: ind ! element's global index number real*8 :: getmupbyET ! 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) getmupbyET=v/Ex *(p0/pave) else getmupbyET=mun_low *(p0/pave) end if print*, " " print*, "************************************************************************" print*, " Error! This version does not support using external libemufunc.so module" print*, " You might accidentally set $useemupfunc to activate using external module" print*, " Please execute 2D-ddcc-dyna.exe instead." Print*, " Program Stop! " stop end function getmupbyET