Данный пример демонстрирует способ ручного (с частичной автоматизацией) построения модели с контролем над стратегией производства. Также в задаче демонстрируются возможности языка программирования 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}
