计算化学公社

标题: 通过输入原子标号,自动给出键长与键角 [打印本页]

作者
Author:
978142355    时间: 2016-1-16 12:53
标题: 通过输入原子标号,自动给出键长与键角
在Sob老师鼓舞以及组内同级和师妹的催促下(PS:她们需要统计氢键长与氢键角,用Gaussview量取虽然很好,但是需要统计很多的时候未免极其的繁琐,鉴于此编写此程序),做了两个程序。本程序运行后提示输入文件的名称,如果是键长的那个程序,则会提示让我们输入两个原子标号,自动在result.txt中打印两个原子标号以及两个标号的键长;键角也是一样的,不过需要我们输入3个原子的标号。一次结果运行结束后,会提示我们是否结束,如果还想继续,那么输入除“回车或ctrl+C”的任意字符,重复上面的输入过程;如果想要结束的话,在提示后输入over,程序结束,所有结果按照次序打印至result.txt中。还是一样,做了两个版本的,一个是针对gjf文件,另一个是针对xyz文件。不足之处,还望各位大神批评指正。(PS:1.键长和键角的精度是按照GaussView中的进行,想更精确,自行修改里面的程序;2.@Sobereva,二面角的程序我也做了,不过与GaussView中的有差别,GaussView量取是负值,但是我程序量取是正值,这个该怎么破?)

作者
Author:
smutao    时间: 2016-1-16 13:00
加上二面角
作者
Author:
root    时间: 2016-1-16 14:10
二面角的符号和角度分开来求。

xyz角度的程序, angle=acos((A*D+B*E+C*F)/G/H) 算acos的时候遇到括号里的值=1.0000000001怎么办?
作者
Author:
978142355    时间: 2016-1-16 15:03
smutao 发表于 2016-1-16 13:00
加上二面角

我也想加上,不过用Gaussview量取得到负值的时候,用程序计算是正值,能解决的话,我会传的。
作者
Author:
978142355    时间: 2016-1-16 15:09
本帖最后由 978142355 于 2016-1-16 15:14 编辑
root 发表于 2016-1-16 14:10
二面角的符号和角度分开来求。

xyz角度的程序, angle=acos((A*D+B*E+C*F)/G/H) 算acos的时候遇到括号里 ...

你的意思是,在fortran中由于其精度的限制,可能在最后一位出现问题,导致括号里出现比1大的情况是不是?还是您遇到什么问题了?传到这里来我看一看。我在fortran中对于angle以及那里的A~H用的都是双精度的,在你所说的那个位数上,应该不会出现这个问题吧?

作者
Author:
浮游物    时间: 2020-7-14 18:30
想请问下,这个程序怎么打开呢
作者
Author:
hebrewsnabla    时间: 2020-7-14 21:14
浮游物 发表于 2020-7-14 18:30
想请问下,这个程序怎么打开呢

显然需要编译




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3