You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下WIEN2k 19.2运行set_elast_pressure报Fortran运行时错误

故障场景

Ubuntu环境下部署WIEN2k 19.2,调用IRelast模块计算弹性常数,执行set_elast_pressure命令时程序崩溃,完整报错日志如下:

E=E0+[B*V/BP*(1/(BP-1)*(V0/V)**BP +1)-B*V0/(BP-1)]

 E
 Read data from line 8 ....
At line 83 of file calLa_Pre_elast.f (unit = 10, file = 'MgO.outputeos')
Fortran runtime error: Constant string in input format
(' V0,B(GPa),BP,E0',3f15.4,f18.6)
                                ^

Error termination. Backtrace:
#0  0x154aa00e932a
#1  0x154aa00e9ed5
#2  0x154aa00ea69d
#3  0x154aa0253cb1
#4  0x154aa0262101
#5  0x154aa026372c
#6  0x154aa02642d2
#7  0x55d47934d7ef
#8  0x55d47934cd7e
#9  0x154a9f960c86
#10  0x55d47934cdb9
#11  0xffffffffffffffff
cp: cannot stat 'init.struct': No such file or directory


   (C)by Morteza Jamal   
         (2014)     
   *****  * *      ******
     *    *   *    *
     *    * *      ******
     *    * *      *
   *****  *   *    ******


#######################################
#          set_elast_lapw          

#######################################
#     C_set_elast_lapw prepares       #
#    Directories  and job files.      #
#     C(2017) by Morteza Jamal        #
#      it creates   c11+2c12,         #
#       c11-c12, and c44 directories  #
#       and CUBIC.job file            #
#             in them                 #
#      which must be executed         #
#      and can be analyzed by         #
#         C_ana_elast_lapw            #
#######################################
cp: -r not specified; omitting directory '../../MgO/.'
cp: -r not specified; omitting directory '../../MgO/..'
根因定位

报错存在先后连锁关系,核心触发点是第一个Fortran运行时错误,后续两个文件/目录操作报错均为前序程序崩溃导致的次生问题:

  • 核心错误:calLa_Pre_elast.f采用固定格式读入MgO.outputeos的第8行内容,代码中写死的读入格式为(' V0,B(GPa),BP,E0',3f15.4,f18.6),要求该行必须以精确匹配的固定字符串 V0,B(GPa),BP,E0(V前带1个半角空格,标点完全一致)开头,后续依次排列4个数值:前3个(V0、B(GPa)、BP)字段宽度15位、保留4位小数,最后1个(E0)字段宽度18位、保留6位小数。当前生成的MgO.outputeos第8行内容不符合该格式要求(常见原因是EOS拟合时选错了状态方程,报错中打印的是Murnaghan EOS的能量表达式,若选了Birch-Murnaghan、Vinet等其他EOS,输出表头、参数顺序都会变化;或是拟合输出时额外增加了标注字符、空格错位),导致Fortran读入时在预期为数值的位置读到了常量字符串,触发运行时崩溃。
  • 次生错误1:前序Fortran程序异常退出,未在工作路径下生成预期的init.struct文件,后续执行复制命令时找不到该文件报错。
  • 次生错误2:程序执行到目录创建阶段时工作路径异常,调用cp命令复制目录时未加-r递归参数,无法复制目录项直接跳过。
修复方案

按顺序执行以下操作即可解决问题:

  • 修复EOS输出文件格式问题
    优先检查EOS拟合步骤:确认体积-能量拟合时选择的是Murnaghan状态方程,重新执行拟合生成MgO.outputeos,避免参数顺序、表头不匹配。如果重新拟合后仍报错,直接手动打开MgO.outputeos定位到第8行,将表头部分修改为完全匹配的 V0,B(GPa),BP,E0,调整后续4个拟合参数的位置,对齐格式要求即可。
  • 验证前置步骤输出
    重新执行set_elast_pressure,确认Fortran读入步骤无报错,检查当前工作目录下已正常生成init.struct文件,即可解决文件不存在的报错。
  • 修复目录复制脚本问题
    找到WIEN2k安装目录下IRelast模块中set_elast_lapw对应的shell脚本,定位到复制../../MgO/.的命令行,给cp命令添加-r递归参数,例如将原行cp ../../MgO/. ./修改为cp -r ../../MgO/. ./,保存后重新赋予脚本可执行权限,重新运行命令即可。

内容的提问来源于stack exchange,提问作者NARAYANAN P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 10:27:23