Fortran Coder

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

[通用算法] 费米狄拉克统计分布函数对能量的导数函数

[复制链接]

68

帖子

25

主题

0

精华

专家

F 币
321 元
贡献
197 点
跳转到指定楼层
楼主
发表于 2020-9-15 06:43:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Kieran 于 2020-9-15 06:46 编辑

大家好,

我写了一个费米狄拉克统计分布函数(Fermi-Dirac Distribution Function)对能量的导数函数的FROTRAN程序。

费米狄拉克统计分布函数(Fermi-Dirac Distribution Function)如下:

f_{(E)} =\frac{1}{e^{\frac{E-E_f}{k_BT}}+1}


其中,ET是变量,E_fk_B是常量。


这个函数对变量E的偏导数函数如下:
\frac{\partial f_{(E)}}{\partial E} =\frac{1}{k_BT}\frac{e^{\frac{E-E_f}{k_BT}}}{(e^{\frac{E-E_f}{k_BT}}+1)^2}


我把这个对能量E的偏导数函数写成了FORTRAN程序,但运行一组变量后的结果中却出现NAN符号。

运行后得到的结果如下:

t=0.0d0 ef = 0.5 e=0.1                      NaN
t=0.0d0 ef = 0.5 e=-0.5                      NaN
t=0.0d0 ef = 0.5 e=0.5                      NaN
t=0.0d0 ef = 0.5 e=1.0                      NaN
t=0.0d0 ef = 0.5 e=5.0                      NaN
t=5.0d0 ef = 0.5 e=0.1   0.000000000000000E+000
t=5.0d0 ef = 0.5 e=-0.5   0.000000000000000E+000
t=5.0d0 ef = 0.5 e=0.5  -3.621485258019960E+021
t=5.0d0 ef = 0.5 e=1.0                      NaN
t=5.0d0 ef = 0.5 e=5.0                      NaN

这里的t,ef和e分别对应于公式中的TE_fE


我一时找不到代码里的错误。我把我的代码上传到附件里了。麻烦大家帮我看下,是哪里出错了,给些建议吧。

谢谢大家。

t.f90

1.32 KB, 下载次数: 14

程序代码

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

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
沙发
发表于 2020-9-15 10:18:40 | 只看该作者
本帖最后由 li913 于 2020-9-15 10:20 编辑

1、T=0时,没有定义;
2、由于kb太小,导致e指数非常大,超过如今的计算机实数范围;
3、修改算法才是出路。

68

帖子

25

主题

0

精华

专家

F 币
321 元
贡献
197 点
板凳
 楼主| 发表于 2020-9-15 18:59:00 | 只看该作者
li913 发表于 2020-9-15 10:18
1、T=0时,没有定义;
2、由于kb太小,导致e指数非常大,超过如今的计算机实数范围;
3、修改算法才是出路 ...

非常感谢你的建议。我再调整下程序。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-26 05:19

Powered by Tencent X3.4

© 2013-2024 Tencent

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