从 Abaqus 输入文件中提取信息

Pull Information from Abaqus Input File

我有一个 cae 文件,其中包含许多不同的模型和模型中的步骤,我想要一种从输入模型中提取人体热通量负载的快速方法,以便检查它们。

有没有一种方法可以编写脚本,通过输入文件提取我正在寻找的负载,并将它们写入 .txt 文件以供检查?

下面是包含我要捕获的信息的输入文件部分。

** STEP: StepName
** LOADS
** 
** Name: Capsule   Type: Body heat flux
*Dflux, amplitude=Power
Capsule-1.Capsule, BF, 4685.4
** Name: Fuel   Type: Body heat flux
*Dflux
Fuel-1.Fuel, BF, 431422.
** Name: Rodlet   Type: Body heat flux
*Dflux, amplitude=Power
Rodlet-1.Rodlet, BF, 4659.5
** Name: Spacer   Type: Body heat flux
*Dflux, amplitude=Power
Spacer, BF, 7022.2

我在上面发布的最初问题已得到解答,但我想对这个问题再补充一点。我有多个输入文件,我希望此脚本 运行 通过,并希望生成的输出文件在一行中列出 inputfile、stepName、LoadName 和 Load all。这样我就可以复制并粘贴到 Excel 中(除非我可以将其输出到 Excel 中,否则它会节省我一个步骤)并且能够对所有负载进行排序并知道它们是哪个文件和步骤也属于

我尝试使用 import glob 然后从目录中的所有输入文件中提取信息,但我无法按照我想要的方式将信息写入输出文件。

import re
import os
import glob

# Open output file for writing
outputFile = open('ATF_Loads.txt','w')

inputfileList = glob.glob('./*.inp')

for inputfile in inputfileList:

    with open(inputfile, 'r') as inpDeck:
        lines = inpDeck.read()

    lines=re.findall(r"^\*Dflux(|,\s*amplitude=[^,]*?)\n([^,]*?),\s*BF\s*,([^,]*?\n)",lines, flags=re.IGNORECASE|re.MULTILINE)

    for line in lines:
        outputFile.write(','.join(line))

也许你可以使用正则表达式....

import re
import os

directory=r'C:\Users\Doug\Desktop'
fileName='sampleDeck'

file_fullPathName=os.path.join(directory, fileName + '.inp') 

with open(file_fullPathName, 'r') as inpDeck:
    lines = inpDeck.read()

lines=re.findall(r"^\*Dflux(|,\s*amplitude=[^,]*?)\n([^,]*?),\s*BF\s*,([^,]*?\n)",lines, flags=re.IGNORECASE|re.MULTILINE)

file_fullPathName=os.path.join(directory, fileName + '-out.txt') 
with open(file_fullPathName, "w") as outp:
    for line in lines:
        outp.write(','.join(line))  #Write text file