使用 LSF 命令bjobs
时,如果我提交另一个作业,我希望立即获得更改的输出,因为我会一次又一次地运行相同的命令感到压力。我想要top
刷新进程列表的输出之类的东西。
在top
不需要的情况下,它会一次又一次地自动刷新。
我想自动刷新bjobs
命令的输出。
我的主要问题是收到此错误:
Makefile:463: recipe for target 'znep.out' failed
跑完之后make
我试图在我的机器上安装GPAW(g Projector Augmented Wave 方法,用于DFT模拟)。ASE 正在工作,我已经安装了Libxc ,并按照此处指定的方式编译了 BLAS 库, 但是在提取的包上执行“make”时,我总是遇到同样的错误:
~/Downloads/lapack-3.8.0$ make
gfortran -O2 -frecursive -c -o zunt03.o zunt03.f
gfortran -o xeigtstz zchkee.o zbdt01.o zbdt02.o zbdt03.o zbdt05.o zchkbb.o zchkbd.o zchkbk.o zchkbl.o zchkec.o zchkgg.o zchkgk.o zchkgl.o zchkhb.o zchkhs.o zchkst.o zchkst2stg.o zchkhb2stg.o zckcsd.o zckglm.o zckgqr.o zckgsv.o zcklse.o zcsdts.o zdrges.o zdrgev.o zdrges3.o zdrgev3.o zdrgsx.o zdrgvx.o zdrvbd.o zdrves.o zdrvev.o zdrvsg.o zdrvsg2stg.o zdrvst.o zdrvst2stg.o zdrvsx.o zdrvvx.o zerrbd.o zerrec.o zerred.o zerrgg.o zerrhs.o zerrst.o zget02.o zget10.o zget22.o zget23.o zget24.o zget35.o zget36.o zget37.o zget38.o zget51.o zget52.o zget54.o zglmts.o zgqrts.o zgrqts.o zgsvts3.o zhbt21.o zhet21.o zhet22.o zhpt21.o zhst01.o zlarfy.o zlarhs.o zlatm4.o zlctes.o zlctsx.o zlsets.o zsbmv.o zsgt01.o zslect.o zstt21.o zstt22.o zunt01.o zunt03.o dlafts.o dlahd2.o dlasum.o dlatb9.o dstech.o dstect.o dsvdch.o dsvdct.o dsxt1.o alahdg.o alasum.o alasvm.o alareq.o ilaenv.o xerbla.o xlaenv.o chkxer.o ../../libtmglib.a ../../liblapack.a ../../librefblas.a
make[2]: Leaving directory '/home/joshua/Downloads/lapack-3.8.0/TESTING/EIG'
NEP: Testing Nonsymmetric Eigenvalue Problem routines
./EIG/xeigtstz < nep.in > znep.out 2>&1
Makefile:463: recipe for target 'znep.out' failed
make[1]: *** [znep.out] Error 139
make[1]: Leaving directory '/home/joshua/Downloads/lapack-3.8.0/TESTING'
Makefile:42: recipe for target 'lapack_testing' failed
make: *** [lapack_testing] Error 2
我使用了安装说明中建议的“Makefile”的默认配置。默认文件在这里。
有什么建议吗?我使用 Kubuntu 17.10
我正在尝试从如下文件中获取数据:
6 6 1 0
0.1166667E+02 0.4826611E-09 0.4826611E-09 0.3004786E-09 0.5000000E-15
1.000000000000000E-004
CAR
system-001
10.51965443 -34.96542345 301 1.95329810 1.00000000
-15.558 0.1631E+01 0.1597E+02
-15.407 0.1661E+02 0.1779E+02
-15.255 0.4253E+01 0.1990E+02
-15.104 0.0000E+00 0.2000E+02
-14.952 0.0000E+00 0.2000E+02
-3.884 0.0000E+00 0.2000E+02
-3.732 0.0000E+00 0.2000E+02
-3.581 0.0000E+00 0.2000E+02
-3.429 0.0000E+00 0.2000E+02
-3.277 0.8214E-03 0.2000E+02
-3.126 0.3543E+00 0.2002E+02
1.726 0.1019E+01 0.4386E+02
1.877 0.5581E+00 0.4399E+02
2.029 0.0000E+00 0.4400E+02
2.181 0.0000E+00 0.4400E+02
2.332 0.0000E+00 0.4400E+02
2.484 0.0000E+00 0.4400E+02
2.636 0.0000E+00 0.4400E+02
2.787 0.0000E+00 0.4400E+02
2.939 0.0000E+00 0.4400E+02
3.090 0.0000E+00 0.4400E+02
3.242 0.0000E+00 0.4400E+02
3.394 0.0000E+00 0.4400E+02
3.545 0.0000E+00 0.4400E+02
3.697 0.0000E+00 0.4400E+02
3.849 0.0000E+00 0.4400E+02
4.000 0.0000E+00 0.4400E+02
4.152 0.6271E-01 0.4400E+02
4.303 0.4520E+01 0.4433E+02
4.455 0.5040E+01 0.4511E+02
我想始终从第 6 行(在本例中为 1.95329810)中获取第四列,然后在以下行中从第一列(在本例中为 1.877)中查找其最接近的值。仅用于参考,在创建之后,我想提取其第二列非零(4.152)的下一行。
所以我想得到 1.95329810 和 4.152 作为输出,所以我可以减去它们并得到:
band_gap=4.152-$fermi_energy
通过考虑@DopeGhoti 的回答,我将他的代码与 if 语句一起使用:
#!/bin/bash
fermi_energy=$(awk 'NR==6 {printf $4}' DOSCAR-62.4902421.st)
awk -f go.awk DOSCAR-62.4902421.st
文件在哪里go.awk
:
BEGIN {
test=0
}
NF == 3 && test == 0 && $2 != "0.0000E+00" {
keptvalue=$1
}
NF == 3 && test == 0 && $2 == "0.0000E+00" {
#print keptvalue
test=1
}
NF == 3 && test == 1 && $2 != "0.0000E+00" {
if ( sqrt(($fermi_energy-$1)**2) < 0.5 )
{
print $1
test=0
}
}
但我认为在 awk 脚本中使用 bash 变量不是正确的方法。
PD在您想知道的情况下,数据代表氧化物电子状态密度的计算。第一列代表电子的能量,第二列代表该能级中电子的数量。因此,在寻找自费米能级最接近的下一个非“0.0000E+00”值时,我们可以计算出使电子跳跃并导电所需的能量。(金属的带隙为零,因此它们不需要能量输入来导电)