计算化学公社

标题: 求助使用Linux的shell脚本获得热容随温度的变化 [打印本页]

作者
Author:
Thee    时间: 2019-6-28 16:50
标题: 求助使用Linux的shell脚本获得热容随温度的变化
求助!卢老师,您好,根据你介绍的使用linux的shell脚本一次性输出各种热力学量随温度的变化,其中输出结果T,U,H,G,熵S可以由S=(H-G)/T求出,那么热容CP或者CV该怎么求出呢?


作者
Author:
sobereva    时间: 2019-6-29 08:55
注意求助帖标题必须体现求助,见板块版头的红字,给你改了

热容从输出文件里直接就能读到。修改脚本提取之就完了
作者
Author:
Thee    时间: 2019-6-29 11:39
谢谢老师指教,请问如何修改脚本直接提取出不同温度下的熵和热容?
作者
Author:
Mikasa    时间: 2019-6-29 11:43
Thee 发表于 2019-6-29 11:39
谢谢老师指教,请问如何修改脚本直接提取出不同温度下的熵和热容?

读读现有的脚本。。。再动动脑子动动手
作者
Author:
Thee    时间: 2019-6-29 14:56
Mikasa 发表于 2019-6-29 11:43
读读现有的脚本。。。再动动脑子动动手

您好,我将原脚本修改为了“echo "T=" $Tnow "U=" $Uscl "H=" $Hscl "G=" $Gscl "S=" $Sscl "Cv=" $Cvscl”熵S是可以正常输出的,热容Cv不能正常输出,请问我该怎么修改?
T= 540.0 U= -1607.699440 H= -1607.697730 G= -1607.906301 S= 242.371 Cv=
T= 550.0 U= -1607.697422 H= -1607.695681 G= -1607.910178 S= 244.725 Cv=
T= 560.0 U= -1607.695386 H= -1607.693613 G= -1607.914092 S= 247.058 Cv=
T= 570.0 U= -1607.693333 H= -1607.691527 G= -1607.918043 S= 249.370 Cv=
T= 580.0 U= -1607.691261 H= -1607.689424 G= -1607.922031 S= 251.660 Cv=
T= 590.0 U= -1607.689173 H= -1607.687305 G= -1607.926056 S= 253.930 Cv=
T= 600.0 U= -1607.687068 H= -1607.685168 G= -1607.930116 S= 256.179 Cv=
作者
Author:
Thee    时间: 2019-6-29 16:07
已解决,请老师看一下有没有错误。

#Get unscaled ZPE
freqchk $1 N $Tinit $P 1.0 Y N > $tmp
ZPE=`grep "Zero-point correction=" $tmp | awk '{print $3}'`
ZPEscl=`echo "$ZPE*$ZPEfac" |bc | awk '{printf "%16.6f", $0}'`

for ((i=0;i<=$nTstep;i=i+1))
do
        Tnow=`echo "$Tinit+$i*$Tstepsize"|bc`

        #Using deltaH scale factor
        freqchk $1 N $Tnow $P $deltaHfac Y N > $tmp
        ZPEtmp=`grep "Zero-point correction=" $tmp | awk '{print $3}'`
        Ucorrtmp=`grep "Thermal correction to Energy=" $tmp | awk '{print $5}'`
        Hcorrtmp=`grep "Thermal correction to Enthalpy=" $tmp | awk '{print $5}'`
        U_0Tcorr=`echo "$Ucorrtmp-$ZPEtmp" |bc | awk '{printf "%16.6f", $0}'`
        H_0Tcorr=`echo "$Hcorrtmp-$ZPEtmp" |bc | awk '{printf "%16.6f", $0}'`
               # Get Cv
                     freqchk $1 N $Tnow $P $ZPEfac Y N > $tmp
                      Cv=`grep "Total           " $tmp | awk '{print $3}'`


        #Using entropy scale factor
        freqchk $1 N $Tnow $P $Sfac Y N > $tmp
        Sscl=`grep "Total           " $tmp | awk '{print $4}'`

        Ucorrscl=`echo "$ZPEscl+$U_0Tcorr" |bc | awk '{printf "%16.6f", $0}'`
        Hcorrscl=`echo "$ZPEscl+$H_0Tcorr" |bc | awk '{printf "%16.6f", $0}'`
        Gcorrscl=`echo "$Hcorrscl-$Tnow*$Sscl/1000/627.5095" |bc -l | awk '{printf "%16.6f", $0}'`
        Uscl=`echo "$Ucorrscl+$Eelec" |bc | awk '{printf "%16.6f", $0}'`
        Hscl=`echo "$Hcorrscl+$Eelec" |bc | awk '{printf "%16.6f", $0}'`
        Gscl=`echo "$Gcorrscl+$Eelec" |bc | awk '{printf "%16.6f", $0}'`

        echo "T=" $Tnow "U=" $Uscl "H=" $Hscl "G=" $Gscl "S=" $Sscl "Cv=" $Cv
        rm -f $tmp
done




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