В Abaqus/Explicit я определяю поведение между поверхностями через поверхность. Контакт с поверхностью (явный). Для поверхностей фокуса я создал набор узлов (введите описание изображения здесь, рис. 1) с именем CPRESS1. В файле ODB я вижу, что данные CPRESS были успешно выведены (введите описание изображения здесь, рис. 2), и набор узлов отображается правильно (введите описание изображения здесь, рис. 3). Когда я запускаю код, он успешно идентифицирует каждый узел (введите описание изображения здесь, рис. 4) в наборе узлов, но указывает, что для этих узлов нет доступных данных.
Код: Выделить всё
# -*- coding: utf-8 -*-
import csv
import os
from abaqusConstants import *
from odbAccess import *
# Define the .odb file path
odb_path = r'E:\odb\partitions\Finished-07132007-nT10-wT126-base-joint-noshear-fix-iabse\Finished-07132008-nT10-wT126-base-joint-noshear-fix-iabse.odb'
# Get the directory of the .odb file
odb_dir = os.path.dirname(odb_path)
# Open the .odb file in read-only mode
odb = openOdb(path=odb_path, readOnly=True)
# Get the node set
node_set_name = 'CPRESS1'
location_cpress1 = odb.rootAssembly.nodeSets[node_set_name]
# Get the last frame from the specified step
lastFrame = odb.steps['Step-pressure'].frames[11]
cpress = lastFrame.fieldOutputs['CPRESS']
cpress1_subset = cpress.getSubset(region=location_cpress1)
# Debug information
print("Total CPRESS values: ", len(cpress1_subset.values))
# Define the CSV file path
csv_path = os.path.join(odb_dir, 'cpress_data.csv')
# Create and open the CSV file for writing
with open(csv_path, mode='w') as file:
writer = csv.writer(file)
# Write the CSV header
writer.writerow(['Node Label', 'X Coordinate', 'Y Coordinate', 'Z Coordinate', 'Contact Pressure'])
# Write each node's contact pressure information
for v in cpress1_subset.values:
node = next((n for n in odb.rootAssembly.nodes if n.label == v.nodeLabel), None)
if node:
writer.writerow([v.nodeLabel, node.coordinates[0], node.coordinates[1], node.coordinates[2], v.data])
else:
print("Node label ", v.nodeLabel, " not found in assembly nodes")
# Close the .odb file
odb.close()
Подробнее здесь: https://stackoverflow.com/questions/788 ... us-odb-fil