Данный пример демонстрирует возможность расчета модели, состоящей из разных типов элементов без контактного взаимодействия. Также в задаче демонстрируются возможности языка программирования 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
fidesys