Чтобы отразить новую вычисляемую переменную, скажем, «SF-1», для каждого узла из таблицы Excel до узлов на графике контура визуализации модели ABAQUS. - PullRequest
0 голосов
/ 06 июля 2018

Позвольте мне объяснить вам мою задачу, и я спрошу вас, возможно ли это сделать в ABAQUS. ABAQUS - это программный инструмент для моделирования, который работает в среде python .

Пожалуйста, предположим, что я выполняю моделирование на шкиве (или цилиндрическом твердом теле) с одним шагом в качестве нагрузки на внешней поверхности.

Я собираю необходимые значения напряжений (S22, фоны и т. Д.) В каждом узле на выбранной поверхности шкива.

Я также собираю цилиндрические координаты для этих узлов. Теперь я делаю некоторые вычисления в Excel, используя значения напряжений (Макс. Основное напряжение, Минимальное основное напряжение, S22 и т. Д.) И , чтобы определить коэффициент безопасности для каждого узла.

Итак, у меня есть новая переменная, которая называется SF (коэффициент безопасности) для каждого узла. Я буду использовать CSV-модуль ABAQUS PYHTON для отображения этих значений SF в интерфейсе командной строки ядра.

Надеюсь, вы поняли, что я объяснил, пожалуйста, не стесняйтесь спрашивать меня, если вы не поняли ничего.

Как только я отразил значения CSV в интерфейсе командной строки ядра, Я заинтересован в отображении этого значения SF на соответствующих узлах в модуле визуализации шкива.

Мне очень хотелось бы, чтобы вы, ребята, смогли пролить свет на это, как я могу продолжить после этого? Я могу распечатать табличные значения, содержащие координаты и коэффициент безопасности в командной строке.

Я был бы очень признателен вам, ребята, за ваше решение, если это возможно или нет? Если нет, пожалуйста, дайте мне знать, что может быть альтернативным решением для этого. Пример таблицы выглядит в Excel

Node      R       T        Z         SF

27       30,7    0,00     -15,4     1

4970     30,7   0,07      -15,4     1

4971     30,7   0,13      -15,4     1

4973     30    0,27       -15,4     1.3

Пример вывода в интерфейсе командной строки ядра с кодом.

import csv
import pprint
infile=open(filename,'r') 
table = [row for row in csv.reader(infile,delimiter=' ')]
pprint.pprint(table)

Output

[['Узел; Р ; Т; Z; SF],

['20,7; 30,7; 0; -15,4; 1],

[4970; 30,7; 0,07; -15,4; 1],

[4971; 30,7; 0,13; -15,4; 1],

[ '4975; 30; 0,40; -15,4; 1.3],]

Большое спасибо за ваше время и терпение.

С уважением,

Аллури Сай Притэм Редди + 33755735057

1 Ответ

0 голосов
/ 06 июля 2018

Чтобы визуализировать данные в Abaqus, вам нужно создать новый выходной объект поля внутри вашей выходной базы данных. Этот объект может быть создан только внутри фрейма. Следовательно, из-за структуры ODB вам необходимо:

  • Создать новый шаговый объект или выбрать существующий
  • Создайте новый объект кадра или используйте его уже на шаге
  • Создать новый выходной объект поля
  • Добавить данные в объект вывода поля

Все они могут быть созданы с использованием скриптового интерфейса Abaqus Python.

В приведенном ниже коде я предполагаю, что table, который содержит таблицу из CSV, уже определен и заполнен.

import odbAccess
from abaqusConstants import NODAL, SCALAR

import numpy as np

odb = odbAccess.openOdb(path='pathToYourOdbContainingResults', readOnly=False)

# In case you run the script multiple times, the step will already be there
if odb.steps.has_key('Step-SF'):
    step = odb.steps['Step-SF']
else:
    step = odb.Step(name='Step-SF', description='Step containing SF values.')

frame = step.Frame(incrementNumber=0, frameValue=1.0, description='SF Frame')
fo = frame.FieldOutput(name='SF', description='Safety factor', type=SCALAR)

# Data being added to a field output must be stored in a contiguous piece of
# memory, which is not something pure Python lists can guarantee
labels = np.array([row[0] for row in table], dtype=np.int32)
values = np.array([row[4] for row in table], dtype=np.float32)

fo.addData(position=NODAL, instance='nameOfInstanceHoldingTheResults', labels=labels,
           data=[[value] for value in values])

odb.save()

# Closing is necessary because the newly created steps, frames, and field 
# outputs are not visible before the ODB is re-opened
odb.close()
...