В CAE Fidesys есть возможность объединения узлов, ниже рассмотрим три варианта сращивания.
Первый вариант, если поверхности лежат рядом и сетка на них конформна (соседние узлы лежат, грубо говоря, друг на друге), то для сращивания сетки достаточно срастить данные поверхности (или объемы с этими поверхностями).
reset #Создаем тело brick x 2 y 1 z 1 #Разрезаем пополам без сращивания webcut volume 1 with plane xplane offset 0 #Строим конформную, но несрощенную сетку volume all size auto factor 7 mesh volume all #Сращиваем тела и сетка срастается imprint volume 1 2 merge volume 1 2
Второй вариант подразумевает сращивание узлов на свободных сетках - не привязанный к геометрии. На панели команд необходимо выбрать Объект – Узловая, Действие – Эквивалентность узлов и задать промежуток ID узлов.
reset create node location 0 0 0 create node location 1 0 0 create node location 1 1 0 create node location 0 1 0 create face node 1 2 3 4 create node location 0 0 0 create node location 1 0 0 create node location 1 1 0 create node location 0 1 0 create face node 5 6 7 8 equivalence node 1 to 8
Также есть 3 вариант - принудительное сращивание узлов, когда не важно привязаны они к геометрии или нет (требует активации режима опытного пользователя через консольную команду 'set dev on'). На панели команд необходимо выбрать Объект – Узловая, Действие – Срастить узлы и задать ID узлов.
reset create surface rectangle width 1 zplane surface 1 size auto factor 6 mesh surface 1 create node location 0.2 0.2 0 set dev on merge node 36 65
Вариант 3 можно дополнительно автоматизировать скриптом питона, который будет пробегать по всем (или выбранным) узлам модели и сращивать их, если они лежат в определенной окрестности
Строим модель:
reset #Создаем тело brick x 2 y 1 z 1 #Разрезаем пополам без сращивания webcut volume 1 with plane xplane offset 0 #Строим конформную, но несрощенную сетку volume all size auto factor 7 mesh volume all
Запускаем данный скрипт (текст приложен ниже) из редактора журнала в режиме Питона:
#!python import math # Импорт математической библиотеки r = 0.0001 # Радиус сферы поиска fidesys.cmd('set dev on') #Включаем опцию опытного пользователя cubit.cmd('renumber Node all start_id 1 uniqueids ') #Для удобства перенумеруем узлы с 1 nodes = cubit.get_node_count() #Запрашиваем число узлов в модели #Цикл, который проверяет близость узлов и сращивает те, которые удолетворяют критерию for node_i in range(1,nodes): (x_m,y_m,z_m)=cubit.get_nodal_coordinates(node_i) # Получение координат для узлов for node_j in range(1,nodes): (x,y,z)=cubit.get_nodal_coordinates(node_j) dist = math.pow((float(x)-float(x_m)), 2)+math.pow((float(y)-float(y_m)), 2)+math.pow((float(z)-float(z_m)), 2) # Проверка нахождения в сфере поиска радиусом "r" от точек с координатами из файла соседних узлов if (node_i != node_j) & (dist<=(r**2)): fidesys.cmd('merge node '+str(node_i)+' '+str(node_j)) print('Узел '+str(node_i)+' и узел '+str(node_j)+' срощены')
Узлы будут сращиваться принудительно. При необходимости можно сращивать узлы только выбранных поверхностей или nodset, как в примере: https://fidesys-solvers.ru/analysis/fidesys-python-api/preprocessor-api-fidesys-bonds-creation
