Abaqus python脚本,将转换my.txt文件中的温度

Abaqus python脚本,将转换my.txt文件中的温度,python,temperature,abaqus,Python,Temperature,Abaqus,我有一个从odb文件中提取温度的python脚本,但我希望它将温度输出从华氏度转换为摄氏度。我们以英制单位输入所有内容,然后我们的客户希望以摄氏度为单位。我如何修改以下脚本以自动将输出转换为摄氏度 from odbAccess import * import sys # Open output file for writing outputFile = open('OutputFileName.txt','w') # Define odb file names odbNameList = (

我有一个从odb文件中提取温度的python脚本,但我希望它将温度输出从华氏度转换为摄氏度。我们以英制单位输入所有内容,然后我们的客户希望以摄氏度为单位。我如何修改以下脚本以自动将输出转换为摄氏度

from odbAccess import *
import sys

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

# Define odb file names
odbNameList = ('JobName.odb',)

# Define instance name and set name
instanceNameList = ('INSTANCE-1','INSTANCE-2',)
setName = 'SET-1'

# Process odb files
for odbName in odbNameList:

# Open file for reading
    odb = openOdb(path=odbName)

# Process steps
    for stepName in odb.steps.keys():

# Get field output objects for variables TEMPERATURE and ELEMENT VOLUME
        temperatureField = odb.steps[stepName].frames[-1].fieldOutputs['NT11']
        for instanceName in instanceNameList:               
            setData = odb.rootAssembly.instances[instanceName].nodeSets[setName]

            tempField = temperatureField.getSubset(region=setData, position=NODAL)
            tempValues = tempField.values

            tmax = 0
            for v in tempValues:
                if v.data > tmax:
                    tmax = v.data

            outputFile.write('%s %s %s %6.3f\n' % (odbName, stepName, instanceName, tmax))

# Close odb file
    odb.close()

# Close output file
outputFile.close()

在代码中,只需确定哪个变量表示华氏温度。该值为
tmax
。将该值转换为摄氏度需要进行如下所示的简单计算

if v.data > tmax:
    tmax = v.data
    tmax_celsius = (tmax-32)/1.8

似乎你写的只是每个实例的最高温度。找到tmax后,您只需对其进行操作

要将Farenheit转换为摄氏度,请使用以下公式:

C = (F-32)*(5/9)
因此:


完美的这也正是我想要的。我刚刚在outputFile.write步骤中更改了另一项内容。我把tmax改成了tmax,haledaco很高兴它起作用了。如果答案满足您的要求,您可以随意投票或接受它。在Python 2中,用一个整数除以另一个整数时要小心。它将返回一个整数而不是浮点。在Python 2中,5/9=0。而是这样做:5.0/9=0.5555
def Celsius(F):
    C = (F-32)*(5/9)
    return C

 temperatureField = odb.steps[stepName].frames[-1].fieldOutputs['NT11']
 for instanceName in instanceNameList:               
     setData = odb.rootAssembly.instances[instanceName].nodeSets[setName]

     tempField = temperatureField.getSubset(region=setData, position=NODAL)
     tempValues = tempField.values

     tmax = 0
     for v in tempValues:
        if Celsius(v.data) > tmax:
            tmax = v.data

     outputFile.write('%s %s %s %6.3f\n' % (odbName, stepName, instanceName, tmax))