Данный пример демонстрирует возможность расчета модели, состоящей из разных типов элементов без контактного взаимодействия. Также в задаче демонстрируются возможности языка программирования APREPRO для работы в CAE Fidesys, а именно: присваивание переменной и дальнейшая работа с ней в скрипте; использование цикла loop (аналог for), условия if-else и оператора continue.
Язык программирования APREPRO - aлгебраический препроцессор для задания параметров анализа методом конечных элементов. Переменные APREPRO могут быть заданы и изменены с помощью графического интерфейса.
Построение модели
Для задания переменных, которые будут использоваться в дальнейших построениях и вычислениях, пропишите в командную строку:
#{order = 2} #{meshInterval = 128} #{load = 1.534e5} #{curveId = 2} #{surfaceId = 4} #{curveCount = 15} #{surfaceCount = curveCount - 2}
Создайте цилиндр. На панели команд выберите Режим - Геометрия, Объект - Объем, Действие - Создать. Из выпадающего списка выберите Цилиндр и задайте необходимые параметры. Нажмите Применить.
Получите из объемного цилиндра цилиндрическую оболочку. На панели инструментов выберите модуль удаления объемов Режим - Геометрия, Объект - Объём, Действие - Удалить. В поле ID объемов введите номер объема, поставьте галочку напротив Сохранить геометрию более низкого порядка. Нажмите Применить.
Удалите боковые плоскости. На панели инструментов выберите модуль удаления поверхностей Режим - Геометрия, Объект - Поверхность, Действие - Удалить. В окне ID поверхностей введите номера. Нажмите Применить. В результате от исходного объема осталась только боковая цилиндрическая оболочка.
Скопируйте и переместите поверхности с сохранением всех свойств. На панели команд выберите Режим - Геометрия, Объект - Поверхность, Действие - Создать. Из списка геометрических примитивов выберите Копировать и изменить. Задайте необходимые параметры и нажмите Применить.
Срастите геометрическую модель. Введите в командную строку команду: merge all.
Задание материала
Создайте материал. На панели команд выберите Режим - Материал, Объект - Управление материалами. В открывшемся виджете Управление материалами в средней колонке укажите имя материала. В колонке свойств откройте список Упругость и перетащите Материал Гука в колонку Свойства материала. Задайте необходимые значения.Нажмите Применить и закройте окно.
Задайте свойства для балки. Введите в командную строку команды:
create beam properties 1 modify beam properties 1 type 'Hollow Rectangle' modify beam properties 1 angle 0.0 modify beam properties 1 ey 0.0 modify beam properties 1 ez 0.0 modify beam properties 1 geom_B 0.2 modify beam properties 1 geom_H 0.2 modify beam properties 1 geom_c1 0.02 modify beam properties 1 geom_c2 0.02 modify beam properties 1 geom_d1 0.02 modify beam properties 1 geom_d2 0.02 modify beam properties 1 mesh_quality 6 modify beam properties 1 warping_dof off
Задайте свойства для первой оболочки. Введите в командную строку команды:
create shell properties 1 modify shell properties 1 layer count 1 modify shell properties 1 layer 1 thickness 0.02 modify shell properties 1 layer 1 material 1 modify shell properties 1 layer 1 angle 0 modify shell properties 1 eccentricity 0.5 modify shell properties 1 layer direction normal modify shell properties 1 thickness_change on
Задайте свойства для второй оболочки. Введите в командную строку команды:
create shell properties 2 modify shell properties 2 layer count 1 modify shell properties 2 layer 1 thickness 0.04 modify shell properties 2 layer 1 material 1 modify shell properties 2 layer 1 angle 0 modify shell properties 2 eccentricity 0.5 modify shell properties 2 layer direction normal modify shell properties 2 thickness_change on
При помощи цикла присвойте первому блоку свойства балки и посторойте сетку:
#{loop(curveCount)} #{if(curveId==4)} #{continue} #{else} curve {curveId} interval {meshInterval} curve {curveId} scheme equal mesh curve {curveId} block 1 add curve {curveId} #{endif} #{curveId+= 2} #{endloop} block 1 material 1 cs 1 element beam order {order} block 1 beam properties 1
При помощи цикла присвойте второму блоку свойства первой оболочки и посторойте сетку:
#{loop(surfaceCount)} surface {surfaceId} size auto factor 1 mesh surface {surfaceId} block 2 add surface {surfaceId} #{surfaceId++} #{endloop} block 2 material 1 cs 1 element shell order {order} block 2 shell properties 1
При помощи цикла присвойте третьему блоку свойства второй оболочки и посторойте сетку:
surface 1,17 size auto factor 1 mesh surface 1,17 block 3 add surface 1,17 block 3 material 1 cs 1 element shell order {order} block 3 shell properties 2
Задание граничных условий
Задайте давление по нормали к поверхности на все цилиндрические поверхности. На панели команд выберите Режим - Граничные условия, Объект - Давление, Действие - Создать. Задайте необходимые параметры и нажмите Применить.
Закрепите один торец модели по всем степеням свободы. На панели команд выберите Режим - Граничные условия, Объект - Перемещение, Действие - Создать. Задайте необходимые параметры. Нажмите Применить.
Закрепите второй торец в перемещении по X, Y и вокруг X, Y, Z. На панели команд выберите Режим - Граничные условия, Объект - Перемещение, Действие - Создать. Задайте необходимые параметры. Нажмите Применить.
Также на второй торец приложите сжимающую силу. На панели команд выберите Режим - Граничные условия, Объект - Точечная сила, Действие - Создать. Задайте необходимые значения и нажмите Применить.
Запуск расчета
Для запуска на расчет в CAE Fidesys выберите на панели команд Режим - Настройки расчета, Настройки расчета - Потеря устойчивости, Потеря устойчивости- Общие. Задайте требуемые параметры и нажмите Применить.
Задайте дополнительные настройки. На панели команд выберите Режим - Настройки расчета, Настройки расчета - Потеря устойчивости, Потеря устойчивости - Поля вывода. Поставьте галочку напротив Вычислять узловые силы и силы реакции и нажмите Применить, Начать расчет.
<Анализ результатов
Коэффициенты критической нагрузки выводятся в Командную строку:
Откройте файл с результатами. Это можно сделать тремя способами:
Нажмите Ctrl+E;
В главном меню выберите Расчёт - Результаты. Нажмите Открыть последний результат;
На панели команд выберите Результаты (Режим - Результаты, Результаты - Открыть Результаты).
В появившемся окне FidesysViewer отобразите фильтр Деформировать по вектору. В фильтре Деформировать по вектору во вкладке Свойства задайте необходимые параметры. Нажмите Применить. В результате отобразится деформированное тело.
Использование консольного интерфейса
Построение геометрии, генерацию сетки, задание граничных условий и материалов можно выполнить с использованием консольного интерфейса. Ниже приведён код программы, позволяющий выполнить шаги описанного выше руководства, необходимо только самостоятельно указать полный путь и название сохраняемого файла.
reset #{order = 2} #{meshInterval = 128} #{load = 1.534e5} #{curveId = 2} #{surfaceId = 4} #{curveCount = 15} #{surfaceCount = curveCount - 2} ## ADD Geometry create Cylinder height 1 radius 5 delete volume 1 keep_lower_geometry delete Surface 3 2 Surface 1 copy move z 1 repeat 14 merge all ## Add material create material 1 modify material 1 name 'Mat1' modify material 1 set property 'MODULUS' value 7e+10 modify material 1 set property 'POISSON' value 0.32 ##Add beam properties 1 create beam properties 1 modify beam properties 1 type 'Hollow Rectangle' modify beam properties 1 angle 0.0 modify beam properties 1 ey 0.0 modify beam properties 1 ez 0.0 modify beam properties 1 geom_B 0.2 modify beam properties 1 geom_H 0.2 modify beam properties 1 geom_c1 0.02 modify beam properties 1 geom_c2 0.02 modify beam properties 1 geom_d1 0.02 modify beam properties 1 geom_d2 0.02 modify beam properties 1 mesh_quality 6 modify beam properties 1 warping_dof off ##Add shell properties 1 create shell properties 1 modify shell properties 1 layer count 1 modify shell properties 1 layer 1 thickness 0.02 modify shell properties 1 layer 1 material 1 modify shell properties 1 layer 1 angle 0 modify shell properties 1 eccentricity 0.5 modify shell properties 1 layer direction normal modify shell properties 1 thickness_change on ##Add shell properties 2 create shell properties 2 modify shell properties 2 layer count 1 modify shell properties 2 layer 1 thickness 0.04 modify shell properties 2 layer 1 material 1 modify shell properties 2 layer 1 angle 0 modify shell properties 2 eccentricity 0.5 modify shell properties 2 layer direction normal modify shell properties 2 thickness_change on ## Add meshing and block 1 for beam #{loop(curveCount)} #{if(curveId==4)} #{continue} #{else} curve {curveId} interval {meshInterval} curve {curveId} scheme equal mesh curve {curveId} block 1 add curve {curveId} #{endif} #{curveId+= 2} #{endloop} block 1 material 1 cs 1 element beam order {order} block 1 beam properties 1 ## Add meshing and block 2 for shell 0.02 (property 1) #{loop(surfaceCount)} surface {surfaceId} size auto factor 1 mesh surface {surfaceId} block 2 add surface {surfaceId} #{surfaceId++} #{endloop} block 2 material 1 cs 1 element shell order {order} block 2 shell properties 1 ## Add meshing and block 3 for shell 0.04 (property 2) surface 1,17 size auto factor 1 mesh surface 1,17 block 3 add surface 1,17 block 3 material 1 cs 1 element shell order {order} block 3 shell properties 2 ##Add boundary conditions create pressure on surface all magnitude 500000 pressure create displacement on curve 1 dof all fix 0 create displacement on curve 32 dof 1 dof 2 dof 4 dof 5 dof 6 fix 0 create force on curve 32 vector 0 0 {-load/(meshInterval*order)} 0 0 0 ##Solution options analysis type buckling elasticity dim3 eigenvalue find 10 smallest output nodalforce on energy off record3d off material off fullperiodic off