Можно ли определить сетку с пользовательскими элементами и указать их свойства с помощью Python в Abaqus/CAE без редактирования входного файла?

Я не уверен, что это возможно, но я хочу создать сетку с пользовательскими элементами в Abaqus/CAE, используя интерфейс сценариев Python. Это будет состоять как минимум из двух частей со стороны CAE: определение узлов и связности и определение свойств материала.

Так, например, я знаком с созданием детали и сетки с использованием стандартных элементов несколькими способами. Довольно читаемая версия которой может быть примерно такой:

m = mdb.models[modelName]
newPart = m.Part(name='NewPart', dimensionality=THREE_D, type=DEFORMABLE_BODY)

for elemLabel,elemNodes in myElementDictionary.items():
    nodeObjectTuple = tuple(newPart.nodes.sequenceFromLabels(elemNodes))
    newPart.Element(nodes=nodeObjectTuple, elemShape=HEX8, label=elemLabel)

Будет ли это работать для пользовательских элементов, если они соответствуют форме элемента (например, HEX8)? Если да, то как можно определить свойства пользовательского элемента? Я не вижу команды для этого в документации.

EDIT: Обычно свойства пользовательского элемента указываются через входной файл (например, *USER ELEMENT и *UEL PROPERTY). Я хочу знать, есть ли способ добиться этого с помощью интерфейса сценариев Python без необходимости каким-либо образом редактировать входной файл, то есть в базе данных моделей Abaqus/CAE. Кроме того, я написал подпрограммы для фактического определения и поведения пользовательского элемента, но это не то, о чем я спрашиваю.


person Matt P    schedule 04.04.2017    source источник
comment
Я думаю, вам нужно определить свои элементы, используя встроенные типы, а затем отредактировать файл inp, чтобы изменить тип.   -  person agentp    schedule 04.04.2017
comment
Да, ручной подход работает. Некоторые из пользовательских элементов, с которыми я имею дело, в любом случае не имеют соответствующего встроенного типа, поэтому какое-то время мне приходилось делать что-то вручную.   -  person Matt P    schedule 04.04.2017


Ответы (2)


В других комментариях правильно указано, что запрошенная функциональность не существует в Abaqus/CAE, и рекомендуется создать входной файл, а затем отредактировать его, чтобы вставить необходимые определения.

Однако я обнаружил, что можно использовать интерфейс Python в Abaqus/CAE для вставки объекта KeywordBlock перед записью входного файла. Пример указания пользовательского элемента:

mdb.models['Model-1'].keywordBlock.replace(0, """
** 
** PARTS
*user element, type=u1113, nodes=6, coordinates=2, properties=8, i properties=3, 
 variables=6
 1,2
*element, type=u1113, elset=myUser, input=1113.dat
*uel property, elset=myUser
 1.0e6, 1.0e6, 0.25, 0.25, 0., 0., 650., 0.001,
 1, 1, 0
** ASSEMBLY
**""")
person Matt P    schedule 04.04.2017

Давайте начнем отвечать с самого начала: сетка и элементы — это два отдельных понятия в ABAQUS и в моделировании методом конечных элементов в целом. Сетка — это геометрическая дискретизация домена на более мелкие части. Элементом является интерполяционное пространство первичных переменных задачи.

Да, вы можете иметь сетку, а затем определить для нее любой понравившийся вам элемент, как только определяемые вами элементы будут совместимы с сеткой. Например, если вы дискретизировали свой домен в гексаэдр с 8 узлами (HEX8), вы можете использовать только совместимые элементы для этой дискретизации: C3D8R, C3D8H, C3D8, ....

Однако есть небольшая проблема: ABAQUS/CAE, представляющий собой графический пользовательский интерфейс ABAQUS и управляемый с помощью Python, не предлагает UEL (пользовательский элемент) в качестве опции в диалоговом окне выбора элемента.

Это ограничение не является проблемой, если вы знакомы с Python и ABAQUS/Standard. Вы можете выбрать любой совместимый элемент, а затем изменить входную колоду, то есть файл .inp, который будет прочитан ABAQUS/Standard. Вы можете сделать это с помощью многих инструментов для работы со строками, которые предлагает Python. Вам просто нужно изменить определение элемента во входной колоде с того, что вы выбрали, на свой собственный определенный UEL.

person Amirsmol    schedule 04.04.2017
comment
Я надеялся, что есть какой-то аналог Python для *USER ELEMENT и *UEL PROPERTY, о котором я не знал... принятие желаемого за действительное с моей стороны. И вы, и @agentp подтвердили, что нет! - person Matt P; 04.04.2017