Моделирование и линейно-спектральный расчет балочно-оболочечной модели по ПНАЭ Г-7-002-86 в Fidesys 3.1

В инженерной практике довольно часто возникает необходимость провести расчет рамных конструкций от действия сейсмических нагрузок, заданных в виде спектра ответа (спектра отклика).

Пример спектра ответа приведен ниже.

Для начала необходимо построить балочную модель. Детальный пример построения такой модели можно посмотреть здесь.

Однако, в отличие от вышеуказанного примера модель нам необходимо будет предварительно посчитать на собственные частоты (модальный анализ) с дополнительным включением опции "вычислять эффективные массы", т.к. это решение будет использовано как входные данные к линейно-спектральному анализу.

Для большей наглядности мы пожалуй построим модель с нуля и сделаем ее комбинированной - балочно-оболочечной.

Итак, начнем. Создадим раму на которой закреплена металлическая бочка.

Первым делом нам необходимо создать набор вершин, чтобы соединить их линиями ("кривыми"), которые в дальнейшем станут балками нашей рамы. Для этого идем в "Геометрия"-"Вершина"-"Создать", выбираем из выпадающего меню "Координаты" и вводим координаты точек, которые будут углами нашей рамы. Затем не забываем нажать "Применить", чтобы вершина создалась.

Для удобства включим нумерацию вершин, чтобы мы могли наблюдать за процессом создания.

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

Далее, по созданным вершинам начинаем создавать линии (т.н. "кривые", т.к. прямая линия - частный случай кривой). Для этого идем в "Геометрия"-"Кривая"-"Создать", из списка выбираем "Линия", ставим точку в "ID вершин", далее, зажимая CTRL кликаем на нужные вершины (или пишем их номера в строку вручную) и нажимаем "Применить".

Далее нам необходимо создать точку в центре будущего бака, чтобы создать дугу по трем точкам - центру, началу и концу дуги.

Создаем дугу.

Для удобства включаем отображение нумерации линий (кривых).

Далее создаем часть стенки бака путем протяжки кривой вдоль вектора "0 0 -1", что означает отрицательное направление по оси Z, на расстояние 0.8. Не забываем нажать "Применить", после ввода всех необходимых данных.

Повторяет то же самое для вектора "0 0 1", чтобы протянуть верхнюю часть бака в положительную по Z сторону.

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

Для того, чтобы это устранить (а это нужно устранить, чтобы построилась совместная сетка), необходимо использовать функцию "Срастить". В нашем случае мы можем выбрать - срастить все точки, чтобы устранить эту проблему везде.

Мы создали четверть бака, остальную часть создадим путем отражения. Мы можем предварительно посмотреть итоговый результат и если он нас устроит, то нажимаем "Применить".

Итоговый результат будет выглядеть так. Видно, что у нас появились дублирующиеся линии, которые позже необходимо будет срастить во избежание проблем с сеткой.

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

Точно также, с помощью отражения, можно скопировать и поверхности.

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

Теперь можно срастить накладывающиеся линии.

Если после процедуры сращивания линий попробовать срастить точки (вершины), то программа покажет, что срощено 0, т.к. при сращивании линий точки тоже сращиваются.

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

После того как нажали кнопку "Применить" получаем такой результат.

Повторяем процедуру для нижнего днища.

Если необходимо посмотреть номера созданных поверхностей, то делаем следующее.

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

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

Когда сетка создалась, узелки сетки приобретают черный цвет (этот цвет можно поменять в настройках, но по умолчанию он такой).

По аналогии создаем сетку для поверхностей.

Далее переходим к созданию материала. Материал также не обязательно создавать именно сейчас, но в нашем примере мы сделаем это на данном этапе.

После нажатия на кнопку создания материала откроется следующее окно.

Можно либо создать новый материал, либо перетащить готовый вариант из правого верхнего окошка. Затем надо нажать "Применить", а затем закрыть окно крестиком.

После создания материала в дереве можно посмотреть его свойства.

На следующем этапе мы создадим блоки, в которые добавим наши линии и поверхности, чтобы далее назначить им свойства. Блоки позволяют присваивать свойства объектам.

Вписываем в поле "ID блока" 1, хотя это не обязательно, если ничего не вписывать, то нумерация будет присваиваться по порядку автоматически. Также, для удобства, можно ввести имя блока, чтобы было проще ориентироваться в дереве свойств. Затем выбираем список сущностей (типов объектов, которые будут входить в блок), для первого блока это "кривая", то бишь - линии. Для простоты выберем "all", хотя в нашем случае это приведет к тому, что линии нашей бочки тоже будут иметь свойства профиля как и у рамы, что не совсем корректно (если конечно бочка в реальности не усилена профилем по контуру), но для нашего учебного примера это подойдет.

Далее, по аналогии, мы создаем блок для стенок бочки, только в качестве сущности уже будет использована "Поверхность". Также выберем "all".

Затем переходим в "Блок"->"Свойства/параметры блока", где мы уже присвоим конкретные свойства нашим объектам, заданным внутри блоков.

В поле "ID блока" вписываем сначала "1", чтобы задать свойства балкам рамы. Имя блока подхватится автоматически. А затем уже начнем присваивать свойства.

После того, как номер блока вписан и имя подхватилось, выбираем категорию "Балка", порядок "1" (в случае с балками - это будет 2-узловая балка - без промежуточного узла, если выбрать порядок "2", то будет 3-узловая балка). Проверяем, чтобы в материала был выбран нужный нам материал, а затем жмем "Применить".

У нас создался набор свойств блока, однако в страницы свойств видно, что "ID свойств блока" пишет "Неопределенный". Это произошло потому, что мы сначала создали набор свойств, но не задали этому набору свойства, в данном случае профиля балки. Для задания этих свойств нажимаем "Задать свойства балки".

Открывается окно, где мы должны задать свойства сечения балки, затем нажать применить, а после закрыть окно крестиком.

По правильному надо нажать еще раз "применить" на этом наборе свойств блока (т.к. в правильной последовательности мы сначала задаем и применяем свойства к сечению, а потом жмем "применить" для набора свойств), но ны этого делать не будем, чтобы позже увидеть ошибку, которая может появиться, если мы не выполним последовательность.

Т.е. в данном случае у нас есть свойства сечения балки и набор свойств для блока, но при этом они не связаны друг с другом, хоть и существуют в дереве свойств. Но если в дереве выбрать интересующий блок, то в "ID свойств блока" программа все еще пишет "Неопределенный" и будет писать пока мы не применить эти свойства блоку.

Также, с ошибкой в последовательности, создадим набор свойств для стенок бочки, заполнив поля и нажав "применить", а потом толщину этой бочки, перейдя в "задать свойства оболочки".

Задаем толщину стенок и материал.

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

Далее переходим к заданию граничных условий. Тут все просто. Зададим ограничения на перемещения по всем степеням свободы для точек внизу раму, имитируя то, что ножки рамы приварены к полу. И нажимаем "Применить".

В консоли во вкладке "история" мы можем посмотреть скрипт, который сформировался пока мы пользовались интерфейсом программы. Мы можем его скопировать и сохранить в блокнот для дальнейшего использования.

На всякий случай через верхнее меню "Файл"->"Сохранить как" сохраним созданную нами модель.

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

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

Затем в диалоговом окне выбираем место сохранения результатов расчета, вводим имя файла и нажимаем "сохранить", после чего начнется расчет.

Программа обнаружила у нас проблемы с нормалями оболочек, просто разрешим ей это исправить.

И теперь мы видим ту ошибку, про которую было упомянуто выше. Программа не видим свойств у блоков.

Переходим теперь в "блок"-"свойства/параметры блока", снова вписываем номер блока и просто нажимаем "применить".

Так делаем для обоих блоков и смотрим через дерево, чтобы на странице свойств в поле "ID свойств блока" стояла цифра, соответствующая номеру свойств (в нашем случае 1).

Далее повторяем запуск на расчет и ждем завершения расчета.

После того как в окне программы увидим надпись "Calculation has finished successfully", переходим в "результаты" и нажимаем там "открыть результат", после чего откроется постпроцессор.

Так выглядит открывшийся постпроцессор.

Включаем режим отображения 3D, чтобы смотреть результаты по сечениям балок.

В дереве видим, что режим 3D применился.

Далее готовим спектр ответа такого вида. Это .csv файл с разделителем в виде запятой. Можно сделать его в блокноте или другом удобном вам редакторе.

Далее в верхнем меню выбираем "Фильтр"->"Алфавитный указатель"->"Линейно-спектральный анализ".

После того, как линейно-спектральный анализ появился в дереве, выбираем файл .csv со спектром ответа (спектром отклика). В нашем случае спектр представлен на основе ускорений, также можно сделать спектр на основе скоростей и перемещений.

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

Далее, для наглядности, выберем отображение деформированного состояния.

Выбираем перемещения ККСК (SRSS или "корень квадратный из суммы квадратов"), множитель масштаба и нажимаем "Применить".

Программа отобразит деформированное состояние.

В конце можно будет через верхнее меню посмотреть напряжения и иные интересующие данные.

Итоговый скрипт будет иметь вид:

create vertex 0.5 0.5 0 
graphics axis off 
graphics axis on 
create vertex 0.5 0.5 2 
label vertex id 
create vertex 0 0.5 2 
create vertex 0.5 0 2 
create vertex 0.5 0 3 
create vertex 0 0.5 3 
create vertex 0 0.45 3 
create vertex 0.45 0 3 
create curve vertex 1 2  
label Curve id 
create curve vertex 2 3  
create curve vertex 2 4  
create curve vertex 3 6  
create curve vertex 4 5  
create curve vertex 6 7  
create curve vertex 5 8  
create vertex 0 0 3 
create curve arc center vertex 15  7  8  
merge vertex all 
Curve all copy reflect x  preview 
Curve 1 3 7 5 4 2 6 8  copy reflect x  preview 
Curve all copy reflect x 
merge vertex all 
Curve all copy reflect y  preview 
Curve all copy reflect y 
merge vertex all 
sweep curve 16 8 24 32  vector 0 0 -1  distance 0.8 
sweep curve 16 8 24 32  vector 0 0 1  distance 0.8 
merge curve all 
merge vertex all 
create surface curve 49 53 57 45  
create surface curve 36 33 39 42  
merge curve all 
curve all interval 10 
curve all scheme equal 
curve all interval 10 
curve all scheme equal 
mesh curve all 
undo group begin 
surface all size auto factor 5 
mesh surface all 
undo group end 
create material 1 
remove material 1 
create material 2 from 'Углеродистая сталь' 
set duplicate block elements off 
block 1 add curve all 
block 1 name 'Трубы' 
draw block 1 
set duplicate block elements off 
block 2 add surface all 
block 2 name 'Бак' 
block 1 material 2 cs 1 element beam order 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.02 
modify beam properties 1 geom_H 0.01 
modify beam properties 1 geom_c1 0.001 
modify beam properties 1 geom_c2 0.001 
modify beam properties 1 geom_d1 0.001 
modify beam properties 1 geom_d2 0.001 
modify beam properties 1 mesh_quality 6 
modify beam properties 1 warping_dof on 
block 1 material 2 cs 1 element beam order 1 
block 1 beam properties 1 
create shell properties 1 
modify shell properties 1 layer count 1 
modify shell properties 1 layer 1 thickness 0.01 
modify shell properties 1 layer 1 material 2 
modify shell properties 1 layer 1 angle 0 
modify shell properties 1 layer 1 cs 1 
modify shell properties 1 thickness 0.01 
modify shell properties 1 eccentricity 0.5 
modify shell properties 1 layer direction normal 
block 2 material 2 cs 1 element shell order 1 
block 2 shell properties 1
create displacement  on vertex 18 34 1 26  dof all fix  
analysis type eigenfrequencies dim3 preload off 
eigenvalue find 10 smallest
output nodalforce off energy off record3d on material off effective_mass on rotation_center 0 0 0 fullperiodic off 
calculation start path 'C:/Users/User/Documents/CAE-Fidesys-3.1/response.pvd'