Анализ устойчивости оболочечно-балочной модели в виде цилиндра

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