Fortran Coder

查看: 10339|回复: 2
打印 上一主题 下一主题

[求助] 新手入门,求助一个求解费米能级的问题

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
9 点
跳转到指定楼层
楼主
发表于 2019-10-29 14:20:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在学半导体量子器件物理,这上面有个求费米能级的程序如下,求大神解释下,还有用迭代法编写程序再求费米能级,但是源程序都看不懂啊==,~~~!
[Fortran] 纯文本查看 复制代码
PROGRAM TEST
DOUBLE PRECISION DM, DN, D, EB, T, F
T=300.0D0
DM=0.067D0
DN=1.0D14
EB=8.0D-3
D=1.0D17
F=-0.5D0
T=T/1.1604D4
CALL FERMI(DN,DM,D, EB,T,F)
PRINT *, DN, DM,T,F
STOP
END
SUBROUTINE FERMI(DN,DM, D, EB,T,F)
DOUBLE PRECISION DM, DN, D, EB, F, T,S,X,Y,Z
X=DN/(1.0D0+DEXP(EB/T))/((T*DM)**1.5D0*6.8122D21)
IF(DN.GE.D) X=DN/((T*DM)**1.5D0*6.8122D21)
S=1.0D-1
F=F/T
DO 100 I=1,10
S=S*0.5D0
DO 110 J=1,5000
F=F+S
Y=0.0D0
IF (-F.GT.5.0D2) GOTO 110
Y=F**4+33.6*F*(1.0-0.68D0*DEXP(-0.17*(1.0+F)**2))
Y=1.0/(DEXP(-F)+1.32934038675/(50.0+Y)**0.375)-X
IF (I+J.EQ.2) Z=Y
110 IF (Y*Z.LE.0.0) GOTO 100
100 F=F-S
F=(F+0.5D0*S)*T
RETURN
END


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

796

帖子

2

主题

0

精华

大宗师

F 币
3787 元
贡献
2266 点
沙发
发表于 2019-10-30 14:49:01 | 只看该作者
由代码猜原理公式,是很困难的。你最好先看懂原理和公式,再对照代码理解。

2

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
9 点
板凳
 楼主| 发表于 2019-10-30 16:37:54 | 只看该作者
li913 发表于 2019-10-30 14:49
由代码猜原理公式,是很困难的。你最好先看懂原理和公式,再对照代码理解。 ...

公式知道就是代码写出来的看不懂,循环啥的不知道为什么这么写
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-23 16:59

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表