Моделирование процесса аддитивного производства упрощённым методом с использованием технологии рождения конечных элементов

Данный пример демонстрирует способ ручного (с частичной автоматизацией) построения модели с контролем над стратегией производства. Также в задаче демонстрируются возможности языка программирования APREPRO для работы в CAE Fidesys. Язык программирования APREPRO - aлгебраический препроцессор для задания параметров анализа методом конечных элементов. Переменные APREPRO могут быть заданы и изменены с помощью графического интерфейса.

Построение геометрии

Создайте конус. На панели команд выберите модуль построения геометрии Режим - Геометрия, Объект - Объем, Действие - Создать. Из списка геометрических примитивов выберите Конус. Задайте необходимые параметры и нажмите Применить.

Создайте второй конус. На панели команд выберите модуль построения геометрии Режим - Геометрия, Объект - Объем, Действие - Создать. Из списка геометрических примитивов выберите Параллелепипед. Задайте необходимые параметры и нажмите Применить.

Вычтите второй конус из первого. На панели команд выберите Режим - Геометрия, Объект - Объем, Действие - Логические операции. Из списка примитивов выберите Вычесть и задайте требуемые параметры. Нажмите Применить.

Создайте вершину. На панели команд выберите Режим - Геометрия, Объект - Вершина, Действие - Создать. Из списка геометрических примитивов выберите Координаты и задайте необходимые координаты. Нажмите Применить.

Переместите модель. На панели команд выберите Режим - Геометрия, Объект - Вершина, Действие - Преобразовать. Из списка примитивов выберите Переместить и задайте требуемые параметры. Нажмите Применить.

Задайте значение смещения, для этого в командной строке наберите команды:

#{h=0.005}
#{loop(9)}

Разрежьте модель координатной плоскостью. На панели команд выберите Режим - Геометрия, Объект - Объем, Действие - Разрез. Из выплывающего списка выберите Координатная плокскость.

Затем с помощью команд разрежьте модель. В командной строке наберите следующие команды:

#{h=h+0.005}
#{endloop}

Задайте значение для угла. В командной строке введите следующие команды:

#{alpha=0}
#{loop(18)}

Разрежьте модель координатной плоскостью. На панели команд выберите Режим - Геометрия, Объект - Объем, Действие - Разрез. Из выплывающего списка выберите Координатная плокскость.

Затем с помощью команд разрежьте модель. В командной строке наберите следующие команды:

#{alpha=alpha+10}
#{endloop}

Поверните модель. На панели команд выберите Режим - Геометрия, Объект - Объем, Действие - Преобразовать. Из выплывающего списка выберите Повернуть. Задайте необходимые параметры и нажмите Применить.

Создайте вершину в центре поверхности. На панели команд выберите Режим - Геометрия, Объект - Вершина, Действие - Создать. Из списка геометрических примитивов выберите Расположение и задайте необходимые параметры. Нажмите Применить. Закройте окно Задать положение и нажмите Применить.

Построение сетки

Для построения гексаэдральной сетки задайте в настройках сетки тип элемента по умолчанию, для этого на верхней панели выберите Инструменты - Настройки. Далее в настройках найти раздел "Настройки сетки" и выбрать тип элемента - гексаэдр, после чего нажать "Сохранить".

Для задания переменных в командной строке наберите команды:

#{Px=0}
#{Py=Vy(2924)}
#{Pz=Vz(2924)}
#{delta=0.0028}
#{deltaZ=0.0026}
#{h=0.001}

Сделайте проверку выбираемости на модели, для этого в комадной строке наберите следующие команды:

select volume with x_coord> {Px-delta} and x_coord< {Px+delta} and y_coord> {Py-delta} and z_coord> {Pz-deltaZ+h} and z_coord< {Px+deltaZ+h} 

Постройте сетку на модели. Для этого в командной строке введите следующие команды:

#{loop(10)}
#{loop(36)}
volume with x_coord> {Px-delta} and x_coord< {Px+delta} and y_coord> {Py-delta} and z_coord> {Pz-deltaZ+h} and z_coord< {Px+deltaZ+h} interval 1 
mesh volume with x_coord> {Px-delta} and x_coord< {Px+delta} and y_coord> {Py-delta} and z_coord> {Pz-deltaZ+h} and z_coord< {Px+deltaZ+h}
rotate volume all angle 10  about Z include_merged
#{endloop}
#{h=h+0.005}
#{endloop}

Задание материала и свойств блоков

Задайте материал. На панели команд выберите Режим - Материал, Объект - Управление материалами. Перетащите материал «Углеродистая сталь» в поле Материал и нажмите Применить. Закройте окно Управление материалами.

Создайте блоки. В командную строку пропишите команды:

#{i=1}
#{loop(360)}
block {i} add hex {i}
#{i++}
#{endloop}

Присвойте свойства всем блокам. На панели команд выберите Режим - Блоки, Объект - Блок, Действие - Свойства/параметры блока. Задайте следующие параметры и нажмите Применить.

Задание граничных условий

Закрепите поверхности z_coord=0 в перемещениях. На панели команд выберите Режим - Граничные условия, Объект - Перемещение, Действие - Создать. Задайте необходимые параметры и нажмите Применить.

Задайте значение температуры. На панели команд выберите Режим - Граничные условия, Объект - Температура, Действие - Создать. Задайте необходимые параметры и нажмите Применить.

При помощи цикла задайте значения температуры каждой ячейки на модели:

#{i=1}
#{delta=0.003}
#{h=0}
#{layer=1}
#{loop(360)}
create temperature  on node in hex {i} value 1300
create temperature on node in face with z_coord> {delta+h} and z_coord< {2*delta+h} in hex {i} value 500
#{i++}
#{If((i-1)/36 == layer)}
#{layer++}
#{h=h+0.005}
#{EndIf}
#{endloop}

Задайте силу гравитации. На панели команд выберите Режим - Граничные условия, Объект - Гравитация, Действие - Создать. Укажите необходимые параметры и нажмите Применить.

Запуск расчета

Для запуска на расчет в CAE Fidesys выберите на панели команд Режим - Настройки расчета, Объект - Статический, Действие - Общие. Задайте требуемые параметры и нажмите Применить.

Задайте число шагов нагружения. Введите в командной строке:

static steps 721
#{i=2}
#{j=3}
#{loop(359)}
block {i} step {j} to 721
#{i++}
#{j=j+2}
#{endloop}

#{i=1}
#{loop(719)}
bcdep temperature {i+1} step {i}
bcdep temperature {i+2} step {i+1}
#{i++}
#{endloop}

Нажмите Начать расчет.

Анализ результатов

Откройте файл с результатами. Это можно сделать тремя способами:

  • Нажмите Ctrl+E;

  • В главном меню выберите Расчёт - Результаты. Нажмите Открыть последний результат;

  • На панели команд выберите Результаты (Режим - Результаты, Результаты - Открыть Результаты).

Появится окно Fidesys Viewer, в котором вы сможете ознакомиться с результатами расчёта.

Использование консольного интерфейсa

Построение геометрии, генерацию сетки, задание граничных условий и материалов можно выполнить с использованием консольного интерфейса. Ниже приведён код программы, позволяющий выполнить шаги описанного выше руководства, необходимо только самостоятельно указать полный путь и название сохраняемого файла.

 
reset
set default element hex
create frustum height 0.05 radius 0.04 top 0.05
create frustum height 0.05 radius 0.035 top 0.045
subtract volume 2 from volume 1 
create vertex 0 0 0  
move Vertex 5 location vertex 7  except x y include_merged  
#{h=0.005}
#{loop(9)}
webcut volume all  with plane zplane offset {h}
#{h=h+0.005}
#{endloop}

#{alpha=0}
#{loop(18)}
webcut volume all with plane xplane offset 0 rotate {alpha} about z center 0 0 0  imprint merge
#{alpha=alpha+10}
#{endloop}

rotate Volume all angle 5  about Z include_merged
create vertex location on surface 3398  center  

#{Px=0}
#{Py=Vy(2924)}
#{Pz=Vz(2924)}
#{delta=0.0028}
#{deltaZ=0.0026}
#{h=0.001}

#Проверка выбираемости
select volume with x_coord> {Px-delta} and x_coord< {Px+delta} and y_coord> {Py-delta} and z_coord> {Pz-deltaZ+h} and z_coord< {Px+deltaZ+h}

#{loop(10)}
#{loop(36)}
volume with x_coord> {Px-delta} and x_coord< {Px+delta} and y_coord> {Py-delta} and z_coord> {Pz-deltaZ+h} and z_coord< {Px+deltaZ+h} interval 1 
mesh volume with x_coord> {Px-delta} and x_coord< {Px+delta} and y_coord> {Py-delta} and z_coord> {Pz-deltaZ+h} and z_coord< {Px+deltaZ+h}
rotate volume all angle 10  about Z include_merged
#{endloop}
#{h=h+0.005}
#{endloop}

create material 1 from 'Углеродистая сталь'
#{i=1}
#{loop(360)}
block {i} add hex {i}
#{i++}
#{endloop}

block all material 1 cs 1 element solid order 1
create displacement  on surface with z_coord=0 dof all fix  
create temperature  on surface with z_coord=0 value 100

#{i=1}
#{delta=0.003}
#{h=0}
#{layer=1}
#{loop(360)}
create temperature  on node in hex {i} value 1300
create temperature on node in face with z_coord> {delta+h} and z_coord< {2*delta+h} in hex {i} value 500
#{i++}
#{If((i-1)/36 == layer)}
#{layer++}
#{h=h+0.005}
#{EndIf}
#{endloop}

create gravity global
modify gravity 1 dof 3 value -9.81

analysis type static elasticity heattrans slm dim3
static steps 721
#{i=2}
#{j=3}
#{loop(359)}
block {i} step {j} to 721
#{i++}
#{j=j+2}
#{endloop}

#{i=1}
#{loop(719)}
bcdep temperature {i+1} step {i}
bcdep temperature {i+2} step {i+1}
#{i++}
#{endloop}