Сращивание узлов сетки в CAE Fidesys

В 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