Постобработка результатов анализа методом конечных элементов через Paraview

From FreeCAD Documentation
Jump to navigation Jump to search
This page is a translated version of the page Post-Processing of FEM Results with Paraview and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎français • ‎italiano • ‎русский

Base ExampleCommandModel.png Руководство

Тема
Post-Processing of FEM Results with ParaView
уровень
Intermediate
Время для завершения
120 минут
автор
HarryvL
FreeCAD версия
0.19
Пример файла (ов)
beam и wall найденные в этих ветках форума FreeCAD


Введение

В некоторых сообщениях на форуме и учебных пособиях для просмотра и анализа результатов Workbench FEM.svg верстака FEM FreeCADа используется Paraview (PV). В этом руководстве объясняются основы передачи данных из верстака FEM в PV и показаны некоторые параметры и настройки для отображения данных.

Требования

  • Версия FreeCAD, совместимая с указанной версией этого Руководства.
  • Paraview, загруженный непосредственно с его веб-сайта, или через ваш менеджер пакетов.
    • Это руководство основано на версии Paraview 5.8.0 для Windows, которая была самой последней версией на момент написания учебника.
  • Файлы FreeCAD, используемые для этого руководства, доступны в этой и этой теме форума FreeCAD.

Передача данных из верстака FEM

В верстаке FEM выделите объект CCX_Results, затем используйте меню Файл > Экспортировать... > FEM result VTK (*.vtk *.vtu) для экспорта данных VTK.

Импорт данных в Paraview

На начальном экране отображается пустой Pipeline Browser. Здесь будут видны импортированные объекты данных VTK и примененные объекты фильтров (для геометрии или данных). PVPic1.png

Используйте пункт меню File > Open > *.vtk, чтобы открыть файл VTK, созданный в верстаке FEM.

PVPic2.png

Нажмите Apply на вкладке свойств. По умолчанию это покажет вид геометрии сверху (взгляд вниз по оси Z).

PVPic3.png ... PVPic0.png

Геометрию серого цвета можно просмотреть, поворачивая вид. Левая кнопка мыши заставляет геометрию вращаться, но, к сожалению, это трудно контролировать (в сравнении с FreeCAD). Чтобы получить предсказуемый поворот, удерживайте клавишу X, Y или Z, перетаскивая мышь с нажатой левой кнопкой мыши, чтобы повернуть модель вокруг X, Y или Ось Z соответственно

PVPic5.png

Сохранение/загрузка состояния

Вместо сохранения данных Paraview сохраняет статус (состояние) действий, выполненных над импортированным объектом VTK. Поэтому для сохранения вашей работы используйте опцию меню File > Save State. ПРИМЕЧАНИЕ: при выходе из Paraview предупреждения для сохранения состояния не будет, и вся работа может быть потеряна при выходе.

Чтобы продолжить с того места, на котором вы остановились в предыдущем сеансе, используйте File > Load State. При этом пользователю предлагается указать файл VTK, что означает, что действия, выполненные в предыдущем сеансе, также могут быть применены к новому файлу VTK. Таким образом, данные из различных анализов верстака FEM, могут отображаться одинаково без дополнительных усилий.

Визуализация результатов из верстака FEM

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

Базовые данные, отображаемые на исходной геометрии

Поскольку обозреватель конвейера может содержать несколько объектов VTK и объектов фильтра, сначала убедитесь, что нужный объект VTK выделен в обозревателе конвейера. Выбор и настройки для отображения этого объекта VTK теперь можно найти на вкладке свойств. Чтобы убедиться, что все настройки видны и соответствуют этому руководству, нажмите кнопку «Advanced Settings» (значок шестеренки на рисунке ниже).

PVPic6.png

Первая настройка, которую мы можем изменить, - это способ представления данных в геометрии. Это делается в ниспадающем меню «Representation». Пока мы будем использовать только опцию Surface или Wireframe.

PVPic7.png

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

PVPic8.png

PVPic9.png

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

В окне RenderView теперь будет отображаться изо-график выбранного типа данных и цветовая легенда диапазона данных.

PVPic10.png

Цветовую легенду можно перетащить по экрану в более удобное место, и она изменит ориентацию при приближении к любому краю окна.

PVPic11.png

Кроме того, настройками цветовой легенды можно очень подробно управлять, открыв диалоговое окно «Edit Color Legend Properties» на вкладке «Свойства» (нажмите последний значок справа)

PVPic12.png

Это открывает следующее окно для настроек цветовой легенды.

PVPic13.png

Раскраской iso-карты можно управлять через Color Map Editor, который активируется нажатием кнопки Edit на вкладке Properties:

PVPic12.png . PVPic15.png

Параметр «Color Discretization» полезен для ограничения количества значений ISO, тем самым создавая более практичные диапазоны для дизайна. По умолчанию количество диапазонов равно 256, но здесь установлено 10.

PVPic16.png

Применение фильтров к результатам верстака FEM

Для изменения базовых данных или геометрии, импортированных из верстака FEM, можно применять фильтры.

Здесь будут обсуждаться только фильтры Slice и Warp. Фильтры для создания составных результатов из базовых данных будут обсуждаться в следующем разделе.

Чтобы применить фильтр Slice, выделите объект VTK, который необходимо разрезать, и нажмите значок «Slice». Также можно найти фильтр «Slice» в меню «Filters > Alphabetical». Это добавляет объект фильтра Slice в Pipeline Browser, и расположение в древе показывает, что он применен к объекту VTK. Положение в древе имеет значение, потому что фильтры могут применяться к различным объектам VTK или даже к другим объектам фильтров. Объект фильтра нельзя перетаскивать в дереве, чтобы изменить объект, к которому он применяется. Целевой объект можно изменить только через меню (или щелкнув правой кнопкой мыши) пункт «Edit > Change Input».

PVPic17.png

Расположение и ориентацию среза можно изменить, перетащив срез и его вектор нормали с помощью мыши или через вкладку Properties. На рисунке ниже начало среза размещено в центре балки (над центральной опорой), а нормаль к плоскости указывает на направление X.

PVPic18.png

Чтобы избавиться от ограничивающих рамок, снимите флажок «Show Plane» в верхней части диалогового окна «Plane Parameters».

PVPic19.png

Фильтр «Warp by Vector» можно использовать для отображения деформированной геометрии. Выделите объект VTK и нажмите значок «Warp by Vector». Это добавляет фильтр в Pipeline Browser. Или найдите фильтр в меню «Filters > Alphabetical». Затем выберите «Displacement» в раскрывающемся меню «Vectors» на вкладке «Properties» и установите соответствующий масштабный коэффициент. Не забудьте нажать кнопку «Apply» после изменения настроек.

PVPic20.png . PVPic21.png

Максимальное значение смещения составляет 0,98 мм.

Чтобы отобразить деформированную геометрию, наложенную на недеформированную, просто сделайте видимыми объект VTK и объект фильтра Деформации, щелкнув значок глаза рядом с ним. На следующем рисунке параметр «Representation» для объекта VTK был изменен на «Wireframe», а Opacity уменьшена до 0,5, чтобы предотвратить скрытие деформированной геометрии.

PVPic22.png

ПРИМЕЧАНИЕ: по мере того, как в Pipeline Browser добавляется больше объектов и открывается больше окон отображения, становится все более важным убедиться, что в Pipeline Browser был выбран правильный объект, и при внесении изменений во вкладке "Properties" фокус имеет правильное окно. В противном случае можно потратить много времени на поиск нужного свойства, или изменения свойств могут не вступить в силу.

Применение фильтров для получения сложных результатов из базовых данных импорта

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

Например, общий объем стержней арматуры в балке, проходящей в направлении x, получается из интеграла INTEGRATE(ReinforcementRatio_x * dx * dy * dz) по всей геометрии и общей площади прохода арматурной стали, хотя конкретное поперечное сечение балки получается из INTEGRATE(ReinforcementRatio_x * dy * dz) по сечению.

В Paraview интегрированин можно выполнить с помощью Integration Filter. Этот фильтр можно применить ко всему объекту VTK (балке) или к Slice (поперечное сечение).

ПРИМЕЧАНИЕ: из-за несоответствия порядка узлов между FCFEM и PV, интегрирование по объему дает отрицательные результаты, то есть INTEGRATE( 1.0 * dx * dy *dz) = - Volume вместо + Volume.

Для вычисления интегралов нам необходимо применить Integration Filter, который можно найти в пункте меню «Filters > Alphabetical». Выделите объект VTK и примените фильтр.

PVPic23.png

Нажмите кнопку Apply на вкладке "Properties", и результаты откроются в отдельном окне справа от окна просмотра.

PVPic24.png

Прежде чем мы приведем это в порядок для получения желаемого результата, то есть INTEGRATE(ReinforcementRatio_x * dx * dy * dz), давайте сначала посмотрим, как мы можем контролировать местонахождение и содержание окна.

Сначала закройте окно SpreadSheetView, открывшееся справа. Затем нажмите значок горизонтального разделения в окне Renderview, откроется новое окно с меню параметров отображения. Перед выбором параметра убедитесь, что объект фильтра интеграции выделен в Pipeline Browser.

PVPic25.png

Чтобы отобразить числовые результаты, нам нужно выбрать SpreadSheet View в нижней части списка Create View. Это генерирует электронную таблицу всех доступных результатов в объекте VTK, интегрированном по объёму.

PVPic26.png

Чтобы проверить INTEGRATE(ReinforcementRatio_x * dx * dy * dz), мы можем прокрутить таблицу вправо, но мы также можем удалить все нежелательные результаты, сняв их выделение, то есть отменив выбор «All Columns» и выбрав ReinforcementRatio_x.

PVPic27.png . PVPic28.png

Теперь в таблице результатов интегрирования осталось только одно значение

PVPic29.png

Как объяснялось ранее, это отрицательное значение интеграла, которое мы ищем. Таким образом, ориентировочный общий объем стали, необходимый в направлении x, составляет 2,27e+06 мм3 (= 2272 см3) или 2272 см3 * 7,6 г/см3 = 17267 г (= 17,3 кг). На практике это число будет выше из-за практических соображений (например, требований к анкеровке, минимальных требований к арматуре и так далее). Тем не менее, этот результат можно использовать для сравнения концептуальных проектов.

Выше был пример интеграции переменной, напрямую экспортированной верстаком FEM. В некоторых случаях мы можем захотеть объединить переменные VTK для получения новых результатов. Это можно сделать несколькими способами, но здесь я остановлюсь только на самом простом, то есть с помощью Calculator Filter.

Например, если мы хотим узнать общее требование к армированию по всем трем координатным направлениям, нам нужно будет суммировать ReinforcementRatio_x, ReinforcementRatio_y и ReinforcementRatio_z.

Фильтр «Calculator» можно найти в виде значка слева от панели фильтров или через меню «Filters > Alphabetical». Имя результирующей переменной можно ввести в поле Result Array Name. Здесь мы называем результат Total_Reinforcement_Ratio. Формулу можно составить в поле под полем Result Array Name. Входные значения могут быть выбраны в раскрывающемся меню «Scalars», и их можно объединить в формулу для результата, используя указанные операторы. После нажатия кнопки Apply результат будет доступен как новая переменная в любых последующих операциях (например, в Integration Filter) или представлениях (например, RenderView или SpreadSheetView, см. ниже).

PVPic30.png

Например, теперь мы можем применить фильтр интегрирования к новой переменной Total Reinforcement Ratio.

PVPic31.png

Это показывает, как общая потребность в армировании сравнивается с требованиями в отдельных координатных направлениях.

Интегрирование по срезу

В предыдущем разделе мы обсудили фильтр Integration и его применение ко всему объекту VTK. Чтобы продемонстрировать интегрирование по срезу, в этом разделе мы определим общие требования к армированию и его центр тяжести для центрального поперечного сечения балки. Конечный результат показан на картинке ниже. Взаимодействие различных объектов может проверяться в Pipeline Browser. Фильтр срезов применяется к объекту VTK балки, а два фильтра Calculator применяются к фильтру срезов, чтобы получить из базовых данных новые переменные «Reinforcement_ratio_x * z» и «Reinforcement_ratio_x * y». Эти переменные необходимо интегрировать, чтобы определить центр тяжести арматуры. Наконец, фильтры Integration применяются к каждому фильтру Calculator для интегрирования результатов по срезу. Пожалуйста, обратитесь к предыдущему разделу, чтобы получить общее представление об фильтре интегрирования и его настройках.

PVPicSlice1.png

Примените следующие настройки во вкладке Properties для объекта VTK:

Настройки вкладки Properties Комментарий
Representation: Wireframe Чтобы срез (Slice) был видим
Coloring: ReinforcementRatio_x Или любой другой цвет
Styling > Line Width: 2 Или любой другой параметр, дающий приятный результат

PVPicSlice2.png

Затем выделите объект VTK и примените фильтр Slice со следующими настройками на вкладке Properties:

Настройки вкладки Properties Комментарий
Plane Parameters > Show Plane: deselect Убрать граничные рамки
Plane Parameters > Origin: 4000 / 100 / 200 Положение центральной секции
Plane Parameters > Normal: 1 /0 /0 Нормаль точек среза (Slice) в направлении x
Coloring: ReinforcementRatio_x По выбору
Styling > Line Width: 2 Или любой другой параметр, дающий приятный результат

PVPicSlice3.png

Настройки Calculator 1

Calculator 1 вычисляет новую переменную “ReinforcementRatio_x * y”, которую необходимо интегрировать, чтобы получить координату y центра тяжести армирования.

PVPicSlice4.png

После нажатия кнопки «Apply» новая переменная с именем “ReinforcementRatio_x * y” становится доступной для отображения или дальнейшей обработки.


Настройки Calculator 2

Calculator 2 вычисляет новую переменную “ReinforcementRatio_x * z”, которую необходимо интегрировать, чтобы получить координату z центра тяжести армирования.

PVPicSlice5.png

После нажатия кнопки «Apply» новая переменная с именем “ReinforcementRatio_x * z” становится доступной для отображения или дальнейшей обработки.

В итоге применяются два фильтра интегрирования: один на Calculator1 для интеграции переменной ReinforcementRatio_x * y и другой на Calculator2 для интеграции ReinforcementRatio_x * z. Каждый из них отображается в собственном окне с выбранным SpreadSheetView. Как отменить выбор всех других результатов было объяснено ранее.

PVPicSlice6.png

В итоге центр тяжести (Center of Gravity) можно рассчитать по результатам выше как:

CoG_y = 55744,2 / 556,277 = 100,2 мм (точное значение: 100 мм)

CoG_z = 187144 / 556,277 = 336,4 мм (точное значение: 5/6 * 400 мм)

Интегрирование по линии

Чтобы продемонстрировать визуализацию и интегрирование результатов по линии, мы используем двумерный пример тяжелой стены, представленный в этой ветке форума FreeCAD. Файл FreeCAD для этого примера можно загрузить в этой ветке форума. Задача состоит в том, чтобы визуализировать коэффициент армирования в различных вертикальных сечениях и определить требуемую площадь стали на основе интегрирования этих результатов.

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

Начиная с объекта VTK, импортированного из верстака FEM, мы отмечаем, что элементы управления Paraview работают с двухмерным объектом несколько иначе. Левая кнопка мыши перемещает геометрию, а средняя кнопка мыши вращает ее. Чтобы расположить геометрию в плоскости анализа (т.е. x-y), нажмите значок, который помещает вид вдоль отрицательной оси z:

PVPicLine1.png

Для рисунка ниже свойство Coloring на вкладке Properties для объекта VTK было установлено на ReinforcementRatio_x.

Единственный дополнительный объект, необходимый для визуализации переменной вдоль прямой линии - это фильтр Plot Over Line. Его можно активировать на панели значков или в пункте меню «Filters > Alphabetical».

Далее мы хотим отобразить требования к горизонтальному армированию в вертикальном поперечном сечении под колонной. Чтобы добиться этого как показано ниже, необходимо изменить следующие настройки на вкладке Properties фильтра Plot Over Line (убедитесь, что окно LineChartView и объект Plot Over Line имеют фокус).

Настройки вкладки Properties Комментарий
Line Parameters > Point 1: 4000 / 0 / 0 Точка внизу стены под колонной
Line Parameters > Point 2: 4000 / 4000 / 0 Точка вверху стены под колонной
x Axis Parameters > x Array Name: ReinforcementRatio_x Показывает ReinforcementRatio_x по горизонтальной оси
Series Parameters: tick “arc length” only Это параметр длинны вдоль линии
Title > Chart Title: Mid Section
Annotation > Show Legend: deselect Неважно для текущего выбора вертикальной оси
Left Axis > Left Axis Title: Height Across Beam
Left Axis Range > Use Custom Range: deselect Снимите флажок, чтобы максимизировать диапазон данных вдоль оси
Bottom Axis > Bottom Axis Title: Reinforcement Ratio in x-Direction
Bottom Axis Range > Use Custom Range: deselect Снимите флажок, чтобы максимизировать диапазон данных вдоль оси

PVPicLine2.png


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


На следующих двух картинках было изменено только расположение линии. Однако обратите внимание, что это перемещение автоматически устанавливает параметр «Left Axis Range > Use Custom Range». Это может означать, что график не помещается должным образом в окне LineChartView. Поэтому необходимо снимать этот флажок каждый раз при изменении положения линии. Остальные настройки соответствуют приведенной выше таблице.

Настройки вкладки Properties Комментарий
Line Parameters > Point 1: 6700 / 0 / 0 Точка внизу стены под левой стороной выреза.
Line Parameters > Point 2: 6700 / 4000 / 0 Точка вверху стены над левой стороной выреза.
Title > Chart Title: Section left of Cut-out
Left Axis Range > Use Custom Range: снять выделение Снимите флажок, чтобы максимизировать диапазон данных вдоль оси
Bottom Axis Range > Use Custom Range: снять выделение Снимите флажок, чтобы максимизировать диапазон данных вдоль оси

PVPicLine3.png

Настройки вкладки Properties Комментарий
Line Parameters > Point 1: 10950 / 0 / 0 Точка внизу стены у правой опоры
Line Parameters > Point 2: 10950 / 4000 / 0 Точка вверху стены у правой опоры
Title > Chart Title: Section at Support
Left Axis Range > Use Custom Range: deselect Снимите флажок, чтобы максимизировать диапазон данных вдоль оси
Bottom Axis Range > Use Custom Range: deselect Снимите флажок, чтобы максимизировать диапазон данных вдоль оси

PVPicLine4.png

Общее требование к горизонтальному армированию в последнем поперечном сечении теперь можно просто получить, применив фильтр интеграции к объекту Plot Over Line, то есть выделив объект Plot Over Line внутри Pipeline Browser и добавив фильтр интегрирования (Integration) из пункта меню «Filters > Alphabetical».

PVPicLine5.png

При обычном способе снимите в SpreadSheetView выделение со всех результатов, кроме ReinforcementRatio_x, и прочтите результат как 23,11 мм2 / мм. Чтобы получить общую площадь поперечного сечения стали, нам все равно нужно умножить на толщину стены, которая в этом примере составляет (впечатляющие) 600 мм. Таким образом, общая площадь поперечного сечения стали, проходящей через поперечное сечение возле правой опоры, составляет 23,11 * 600 = 13866 мм2 = 139 см2.

Чтобы добиться более практичного распределения армирования, мы можем интегрировать приведенный выше график по частям. Например, если мы хотим узнать требуемую площадь поперечного сечения стали в верхних 400 мм стены, мы должны настроить свойства объекта Plot Over Line следующим образом

Настройки вкладки Properties Комментарий
Line Parameters > Point 1: 10950 / 3600 / 0 Точка у верха стены у правой опоры
Line Parameters > Point 2: 10950 / 4000 / 0 Точка вверху стены у правой опоры
Left Axis Range > Use Custom Range: deselect Снимите флажок, чтобы максимизировать диапазон данных вдоль оси
Bottom Axis Range > Use Custom Range: deselect Снимите флажок, чтобы максимизировать диапазон данных вдоль оси

Это даст следующий результат

PVPicLine6.png

Результат для верхних 400 мм стены составляет соответственно 8,436 мм2 / мм. Так что верхние 10% стены требуют 8,44 / 23,11 * 100% = 37% арматурной стали.

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

Представление векторных результатов с помощью фильтра Glyph 3D

До сих пор мы имели дело только со скалярными значениями, такими как коэффициент армирования и величина смещения. Визуализация векторных результатов, таких как векторы главного напряжения (Principal Stress), выполняется с помощью глифов (Glyphs).

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

Выделите объект данных VTK в Pipeline Browser и выберите фильтр Glyph на панели значков фильтра или из пункта меню Filter > Alphabetical. Затем примените следующие настройки во вкладке Properties объекта Glyph Filter (см. таблицу и рисунок):

Настройки вкладки Properties Комментарий
Glyph Source > Glyph Type: Line К сожалению, нет опции для двусторонней стрелки.
Orientation > Orientation: Major Principal Stress Glyph принимает направление основного напряжения
Scale > Scale Array: Major Principal Stress Длина линии будет представлять величину главного напряжения.
Scale > Vector Scale Mode: Scale by Magnitude
Scale > Scale Factor: 100 Или любой другой параметр, дающий приятный результат
Masking > Glyph Mode: All Points Чтобы гарантировать отображение напряжения в каждом узле
Coloring > Solid Color Один цвет дает максимальную четкость «потока напряжения»
Coloring > Edit > Green Или любой другой параметр, дающий приятный результат
Styling > Line Width > 2 Или любой другой параметр, дающий приятный результат

PVPic32.png; PVPic33.png

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

PVPic34.png

Затем добавьте еще один фильтр Glyph со следующими настройками для Minor Principal Stress (не забудьте сначала выделить объект данных VTK в Pipeline Browser):

Настройки вкладки Properties Комментарий
Glyph Source > Glyph Type: Line К сожалению, нет опции для двусторонней стрелки.
Orientation > Orientation: Minor Principal Stress Glyph принимает направление основного напряжения
Scale > Scale Array: Minor Principal Stress Длина линии будет представлять величину главного напряжения.
Scale > Vector Scale Mode: Scale by Magnitude
Scale > Scale Factor: 100 Или любой другой параметр, дающий приятный результат
Masking > Glyph Mode: All Points Чтобы гарантировать отображение напряжения в каждом узле
Coloring > Solid Color Один цвет дает максимальную четкость «потока напряжения»
Coloring > Edit > Red Или любой другой параметр, дающий приятный результат
Styling > Line Width > 2 Или любой другой параметр, дающий приятный результат

PVPic35.png

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

Экспорт графических результатов

Чтобы экспортировать окно RenderView, выделите окно и используйте опцию меню File > Save Screenshot