将在我的 .txt 文件中转换温度的 Abaqus python 脚本
Abaqus python script that will convert temperature in my .txt file
我有一个 python 脚本可以从我的 odb 文件中提取温度,但是我希望它将温度输出从华氏度转换为摄氏度。我们输入的所有内容都是英文单位,然后我们的客户需要东西摄氏度。如何修改以下脚本以自动将我的输出转换为摄氏度?
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
上工作即可。
要将华氏度转换为摄氏度,请使用以下公式:
C = (F-32)*(5/9)
所以:
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))
我有一个 python 脚本可以从我的 odb 文件中提取温度,但是我希望它将温度输出从华氏度转换为摄氏度。我们输入的所有内容都是英文单位,然后我们的客户需要东西摄氏度。如何修改以下脚本以自动将我的输出转换为摄氏度?
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
上工作即可。
要将华氏度转换为摄氏度,请使用以下公式:
C = (F-32)*(5/9)
所以:
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))