Постобработка результатов анализа методом конечных элементов через Paraview
Тема |
---|
Post-Processing of FEM Results with ParaView |
Уровень |
Intermediate |
Время для завершения |
120 минут |
Авторы |
HarryvL |
FreeCAD версия |
0.19 |
Примеры файлов |
beam и wall найденные в этих ветках форума FreeCAD |
Смотрите также |
None |
Введение
В некоторых сообщениях на форуме и учебных пособиях для просмотра и анализа результатов верстака 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 и примененные объекты фильтров (для геометрии или данных).
Используйте пункт меню File > Open > *.vtk, чтобы открыть файл VTK, созданный в верстаке FEM.
Нажмите Apply на вкладке свойств. По умолчанию это покажет вид геометрии сверху (взгляд вниз по оси Z).
Геометрию серого цвета можно просмотреть, поворачивая вид. Левая кнопка мыши заставляет геометрию вращаться, но, к сожалению, это трудно контролировать (в сравнении с FreeCAD). Чтобы получить предсказуемый поворот, удерживайте клавишу X, Y или Z, перетаскивая мышь с нажатой левой кнопкой мыши, чтобы повернуть модель вокруг X, Y или Ось Z соответственно
Сохранение/загрузка состояния
Вместо сохранения данных Paraview сохраняет статус (состояние) действий, выполненных над импортированным объектом VTK. Поэтому для сохранения вашей работы используйте опцию меню File > Save State. ПРИМЕЧАНИЕ: при выходе из Paraview предупреждения для сохранения состояния не будет, и вся работа может быть потеряна при выходе.
Чтобы продолжить с того места, на котором вы остановились в предыдущем сеансе, используйте File > Load State. При этом пользователю предлагается указать файл VTK, что означает, что действия, выполненные в предыдущем сеансе, также могут быть применены к новому файлу VTK. Таким образом, данные из различных анализов верстака FEM, могут отображаться одинаково без дополнительных усилий.
Визуализация результатов из верстака FEM
Paraview имеет множество опций и настроек для отображения результатов. Сначала мы рассмотрим отображение базовых данных импорта для исходной геометрии, а затем посмотрим, как применять фильтры для изменения геометрии. Наконец, мы будем использовать калькулятор и фильтры интеграции для получения новых результатов путем объединения базовых данных импорта.
Базовые данные, отображаемые на исходной геометрии
Поскольку обозреватель конвейера может содержать несколько объектов VTK и объектов фильтра, сначала убедитесь, что нужный объект VTK выделен в обозревателе конвейера. Выбор и настройки для отображения этого объекта VTK теперь можно найти на вкладке свойств. Чтобы убедиться, что все настройки видны и соответствуют этому руководству, нажмите кнопку «Advanced Settings» (значок шестеренки на рисунке ниже).
Первая настройка, которую мы можем изменить, - это способ представления данных в геометрии. Это делается в ниспадающем меню «Representation». Пока мы будем использовать только опцию Surface или Wireframe.
Пока результаты не отображаются. Для этого нам нужно изменить опцию Coloring. По умолчанию используется сплошной цвет (Solid Color), но в раскрывающемся меню отображаются все скалярные данные, доступные в импортированном файле VTK.
Для целей этого руководства мы выбираем ReinforcementRatio_x, но его легко изменить на любой тип данных.
В окне RenderView теперь будет отображаться изо-график выбранного типа данных и цветовая легенда диапазона данных.
Цветовую легенду можно перетащить по экрану в более удобное место, и она изменит ориентацию при приближении к любому краю окна.
Кроме того, настройками цветовой легенды можно очень подробно управлять, открыв диалоговое окно «Редактировать свойства цветовой легенды» на вкладке «Свойства» (нажмите последний значок справа)
Это открывает следующее окно для настроек цветовой легенды.
Раскраской iso-карты можно управлять через Color Map Editor, который активируется нажатием кнопки Edit на вкладке Properties:
Параметр «Color Discretization» полезен для ограничения количества значений ISO, тем самым создавая более практичные диапазоны для дизайна. По умолчанию количество диапазонов равно 256, но здесь установлено 10.
Применение фильтров к результатам верстака FEM
Для изменения базовых данных или геометрии, импортированных из верстака FEM, можно применять фильтры.
Здесь будут обсуждаться только фильтры Slice и Warp. Фильтры для создания составных результатов из базовых данных будут обсуждаться в следующем разделе.
Чтобы применить фильтр Slice, выделите объект VTK, который необходимо разрезать, и нажмите значок «Slice». Также можно найти фильтр «Slice» в меню «Filters > Alphabetical». Это добавляет объект фильтра Slice в Pipeline Browser, и расположение в древе показывает, что он применен к объекту VTK. Положение в древе имеет значение, потому что фильтры могут применяться к различным объектам VTK или даже к другим объектам фильтров. Объект фильтра нельзя перетаскивать в дереве, чтобы изменить объект, к которому он применяется. Целевой объект можно изменить только через меню (или щелкнув правой кнопкой мыши) пункт «Edit > Change Input».
Расположение и ориентацию среза можно изменить, перетащив срез и его вектор нормали с помощью мыши или через вкладку Properties. На рисунке ниже начало среза размещено в центре балки (над центральной опорой), а нормаль к плоскости указывает на направление X.
Чтобы избавиться от ограничивающих рамок, снимите флажок «Show Plane» в верхней части диалогового окна «Plane Parameters».
Фильтр «Warp by Vector» можно использовать для отображения деформированной геометрии. Выделите объект VTK и нажмите значок «Warp by Vector». Это добавляет фильтр в Pipeline Browser. Или найдите фильтр в меню «Filters > Alphabetical». Затем выберите «Displacement» в раскрывающемся меню «Vectors» на вкладке «Properties» и установите соответствующий масштабный коэффициент. Не забудьте нажать кнопку «Apply» после изменения настроек.
Максимальное значение смещения составляет 0,98 мм.
Чтобы отобразить деформированную геометрию, наложенную на недеформированную, просто сделайте видимыми объект VTK и объект фильтра Деформации, щелкнув значок глаза рядом с ним. На следующем рисунке параметр «Representation» для объекта VTK был изменен на «Wireframe», а Opacity уменьшена до 0,5, чтобы предотвратить скрытие деформированной геометрии.
ПРИМЕЧАНИЕ: по мере того, как в 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 и примените фильтр.
Нажмите кнопку Apply на вкладке "Properties", и результаты откроются в отдельном окне справа от окна просмотра.
Прежде чем мы приведем это в порядок для получения желаемого результата, то есть INTEGRATE(ReinforcementRatio_x * dx * dy * dz)
, давайте сначала посмотрим, как мы можем контролировать местонахождение и содержание окна.
Сначала закройте окно SpreadSheetView, открывшееся справа. Затем нажмите значок горизонтального разделения в окне Renderview, откроется новое окно с меню параметров отображения. Перед выбором параметра убедитесь, что объект фильтра интеграции выделен в Pipeline Browser.
Чтобы отобразить числовые результаты, нам нужно выбрать SpreadSheet View в нижней части списка Create View. Это генерирует электронную таблицу всех доступных результатов в объекте VTK, интегрированном по объёму.
Чтобы проверить INTEGRATE(ReinforcementRatio_x * dx * dy * dz)
, мы можем прокрутить таблицу вправо, но мы также можем удалить все нежелательные результаты, сняв их выделение, то есть отменив выбор «All Columns» и выбрав ReinforcementRatio_x.
Теперь в таблице результатов интегрирования осталось только одно значение
Как объяснялось ранее, это отрицательное значение интеграла, которое мы ищем. Таким образом, ориентировочный общий объем стали, необходимый в направлении 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, см. ниже).
Например, теперь мы можем применить фильтр интегрирования к новой переменной Total Reinforcement Ratio.
Это показывает, как общая потребность в армировании сравнивается с требованиями в отдельных координатных направлениях.
Интегрирование по срезу
В предыдущем разделе мы обсудили фильтр Integration и его применение ко всему объекту VTK. Чтобы продемонстрировать интегрирование по срезу, в этом разделе мы определим общие требования к армированию и его центр тяжести для центрального поперечного сечения балки. Конечный результат показан на картинке ниже. Взаимодействие различных объектов может проверяться в Pipeline Browser. Фильтр срезов применяется к объекту VTK балки, а два фильтра Calculator применяются к фильтру срезов, чтобы получить из базовых данных новые переменные «Reinforcement_ratio_x * z» и «Reinforcement_ratio_x * y». Эти переменные необходимо интегрировать, чтобы определить центр тяжести арматуры. Наконец, фильтры Integration применяются к каждому фильтру Calculator для интегрирования результатов по срезу. Пожалуйста, обратитесь к предыдущему разделу, чтобы получить общее представление об фильтре интегрирования и его настройках.
Примените следующие настройки во вкладке Properties для объекта VTK:
Настройки вкладки Properties | Комментарий |
---|---|
Representation: Wireframe | Чтобы срез (Slice) был видим |
Coloring: ReinforcementRatio_x | Или любой другой цвет |
Styling > Line Width: 2 | Или любой другой параметр, дающий приятный результат |
Затем выделите объект 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 | Или любой другой параметр, дающий приятный результат |
Настройки Calculator 1
Calculator 1 вычисляет новую переменную “ReinforcementRatio_x * y”, которую необходимо интегрировать, чтобы получить координату y центра тяжести армирования.
После нажатия кнопки «Apply» новая переменная с именем “ReinforcementRatio_x * y” становится доступной для отображения или дальнейшей обработки.
Настройки Calculator 2
Calculator 2 вычисляет новую переменную “ReinforcementRatio_x * z”, которую необходимо интегрировать, чтобы получить координату z центра тяжести армирования.
После нажатия кнопки «Apply» новая переменная с именем “ReinforcementRatio_x * z” становится доступной для отображения или дальнейшей обработки.
В итоге применяются два фильтра интегрирования: один на Calculator1 для интеграции переменной ReinforcementRatio_x * y и другой на Calculator2 для интеграции ReinforcementRatio_x * z. Каждый из них отображается в собственном окне с выбранным SpreadSheetView. Как отменить выбор всех других результатов было объяснено ранее.
В итоге центр тяжести (Center of Gravity) можно рассчитать по результатам выше как:
CoG_y = 55744,2 / 556,277 = 100,2 мм (точное значение: 100 мм)
CoG_z = 187144 / 556,277 = 336,4 мм (точное значение: 5/6 * 400 мм)
Интегрирование по линии
To demonstrate visualisation and integration of results over a line we use the 2D example of a heavy wall as introduced in this FC forum thread. The FreeCAD file for this example can be downloaded in this FC forum thread. The challenge is to visualise reinforcement ratio across various vertical cross sections and to determine the required area of steel from integration of those results.
Techniques introduced in previous sections of this tutorial will not be repeated here. It is also important to note again that as more objects are added to the Pipeline Browser and more display windows are open, it becomes increasingly important to ensure that the right object is selected in the Pipeline Browser and the right Window has focus when making changes to the Properties Tab. Otherwise much time can be spent on finding the right property or changes to properties may not seem to take effect.
Starting with the VTK object imported from FEMWB we note that the PV controls operate slightly differently on a 2 dimensional object. The left mouse button drags the geometry and the middle mouse button rotates it. To position the geometry in the plane of analysis (i.e. x-y), press the icon that puts the view along the negative z axis:
For the picture below the Coloring property on the Properties tab for the VTK object was set to ReinforcementRatio_x.
The only additional object required to visualise a variable along a straight line is a Plot Over Line filter. This can be activated from the icon bar or the menu option Filters > Alphabetical.
We next want to display the horizontal reinforcement requirements in the vertical cross section under the column. To achieve this in the way shown below, the following settings need to be changed in the Properties tab of the Plot Over Line filter (make sure the LineChartView window and the Plot Over Line object both have the focus)
Properties Tab Settings | Comment |
---|---|
Line Parameters > Point 1: 4000 / 0 / 0 | Point at bottom of wall under the column |
Line Parameters > Point 2: 4000 / 4000 / 0 | Point at top of wall under the column |
x Axis Parameters > x Array Name: ReinforcementRatio_x | Displays ReinforcementRatio_x on the horizontal axis |
Series Parameters: tick “arc length” only | This is the length parameter along the line |
Title > Chart Title: Mid Section | |
Annotation > Show Legend: deselect | Meaningless for the current choice of vertical axis |
Left Axis > Left Axis Title: Height Across Beam | |
Left Axis Range > Use Custom Range: deselect | Deselect to maximise the data range along the axis |
Bottom Axis > Bottom Axis Title: Reinforcement Ratio in x-Direction | |
Bottom Axis Range > Use Custom Range: deselect | Deselect to maximise the data range along the axis |
Note that the distance along the line (arc length) is usually on the horizontal axis and the variable that we want to display (here ReinforcementRatio_x) on the vertical axis. However, as the wall section in this example is vertical and we want to see the reinforcement requirement over the height of the wall, it is more natural to inverse the axes. This, however, comes at the expense of a lot more changes to the settings in the Properties tab for the Plot Over Line filter.
In the next two picture only the location of the line was changed. Note however that this relocation will automatically change the Left Axis Range > Use Custom Range setting to “select”. This may mean that the graph does not properly fit in the LineChartView window. It is therefore necessary to deselect this option every time the position of the line is changed. Other settings are as per the above table.
Properties Tab Settings | Comment |
---|---|
Line Parameters > Point 1: 6700 / 0 / 0 | Point at bottom of wall under left side of cut-out |
Line Parameters > Point 2: 6700 / 4000 / 0 | Point at top of wall above left side of cut-out |
Title > Chart Title: Section left of Cut-out | |
Left Axis Range > Use Custom Range: deselect | Deselect to maximise the data range along the axis |
Bottom Axis Range > Use Custom Range: deselect | Deselect to maximise the data range along the axis |
Properties Tab Settings | Comment |
---|---|
Line Parameters > Point 1: 10950 / 0 / 0 | Point at bottom of wall at right-hand support |
Line Parameters > Point 2: 10950 / 4000 / 0 | Point at top of wall at right-hand support |
Title > Chart Title: Section at Support | |
Left Axis Range > Use Custom Range: deselect | Deselect to maximise the data range along the axis |
Bottom Axis Range > Use Custom Range: deselect | Deselect to maximise the data range along the axis |
The total horizontal reinforcement requirement in the last cross section can now simply be obtained by applying an Integration filter to the Plot Over Line object, i.e. highlight the Plot Over Line object in the Pipeline Browser and add an Integration filter from the menu option Filters > Alphabetical.
In the usual way deselect all but the ReinforcementRatio_x result in the SpreadSheetView and read off the result as 23.11 mm2 / mm. To obtain the total cross sectional area of steel, we still need to multiply with the thickness of the wall, which in this example is (an impressive) 600 mm. So the total cross sectional area of steel running through the cross section near the right hand support is 23.11 * 600 = 13866 mm2 = 139 cm2
To achieve a more practical distribution of reinforcement we could integrate the above graph in parts. For example, if we want to know the required cross sectional area of steel in the top 400mm of the wall then we should adjust the properties of the Plot Over Line object as follows
Properties Tab Settings | Comment |
---|---|
Line Parameters > Point 1: 10950 / 3600 / 0 | Point near top of wall at right-hand support |
Line Parameters > Point 2: 10950 / 4000 / 0 | Point at top of wall at right-hand support |
Left Axis Range > Use Custom Range: deselect | Deselect to maximise the data range along the axis |
Bottom Axis Range > Use Custom Range: deselect | Deselect to maximise the data range along the axis |
This yields the following result
The result for the top 400 mm of the wall is thus 8.436 mm2 / mm. So the top 10% of the wall requires 8.44 / 23.11 * 100% = 37% of the reinforcement steel.
This procedure could be repeated to divide the wall in zones of constant reinforcement.
Representation of Vector Results with the Glyph 3D Filter
So far we have only dealt with Scalar values, like reinforcement ratio and displacement magnitude. Visualization of vector results, like Principal Stress vectors, is done with Glyphs.
Let’s return to the VTK data object for the beam with central support and visualize maximum and minimum principal stress vectors.
Highlight the VTK data object in the Pipeline Browser and select the Glyph Filter from the Filter Icon bar or from the menu option Filter > Alphabetical. Then apply the following settings in the Properties tab of the Glyph Filter object (see table and picture):
Properties Tab Settings | Comment |
---|---|
Glyph Source > Glyph Type: Line | Unfortunately there is no option for a double sided arrow |
Orientation > Orientation: Major Principal Stress | The Glyph takes the principal stress direction |
Scale > Scale Array: Major Principal Stress | The length of the line will represent the magnitude of the principal stress |
Scale > Vector Scale Mode: Scale by Magnitude | |
Scale > Scale Factor: 100 | Or any other setting that gives a pleasing result |
Masking > Glyph Mode: All Points | To make sure the stress in every node is displayed |
Coloring > Solid Color | A single color gives greatest clarity of “stress flow” |
Coloring > Edit > Green | Or any other setting that gives a pleasing result |
Styling > Line Width > 2 | Or any other setting that gives a pleasing result |
If all goes well you should see the following result for the example file.
Next add another Glyph Filter with the following settings for the Minor Principal Stress (don’t forget to first highlight the VTK data object in the Pipeline Browser):
Properties Tab Settings | Comment |
---|---|
Glyph Source > Glyph Type: Line | Unfortunately there is no option for a double sided arrow |
Orientation > Orientation: Minor Principal Stress | The Glyph takes the principal stress direction |
Scale > Scale Array: Minor Principal Stress | The length of the line will represent the magnitude of the principal stress |
Scale > Vector Scale Mode: Scale by Magnitude | |
Scale > Scale Factor: 100 | Or any other setting that gives a pleasing result |
Masking > Glyph Mode: All Points | To make sure the stress in every node is displayed |
Coloring > Solid Color | A single color gives greatest clarity of “stress flow” |
Coloring > Edit > Red | Or any other setting that gives a pleasing result |
Styling > Line Width > 2 | Or any other setting that gives a pleasing result |
The final result shows the major and minor principal stress vectors superimposed on the beam with ReinforcementRatio_x.
Экспорт графических результатов
To export a RenderView window highlight the window and use menu option File > Save Screenshot Template:Tutorials navi/ru
- Materials: Solid, Fluid, Nonlinear mechanical, Reinforced (concrete); Material editor
- Element geometry: Beam (1D), Beam rotation (1D), Shell (2D), Fluid flow (1D)
Constraints
- Electromagnetic: Electrostatic potential, Current density, Magnetization
- Geometrical: Plane rotation, Section print, Transform
- Mechanical: Fixed, Displacement, Contact, Tie, Spring, Force, Pressure, Centrif, Self weight
- Thermal: Initial temperature, Heat flux, Temperature, Body heat source
- Overwrite Constants: Constant vacuum permittivity
- Solve: CalculiX Standard, Elmer, Mystran, Z88; Equations: Deformation, Elasticity, Electrostatic, Electricforce, Magnetodynamic, Magnetodynamic 2D, Flow, Flux, Heat; Solver: Solver control, Solver run
- Results: Purge, Show; Postprocessing: Apply changes, Pipeline from result, Warp filter, Scalar clip filter, Function cut filter, Region clip filter, Contours filter, Line clip filter, Stress linearization plot, Data at point clip filter, Filter function plane, Filter function sphere, Filter function cylinder, Filter function box
- Additional: Preferences; FEM Install, FEM Mesh, FEM Solver, FEM CalculiX, FEM Concrete; FEM Element Types
![](/images/thumb/9/94/User_hub.png/24px-User_hub.png)
- Начинающим
- Установка: Загрузка, Windows, Linux, Mac, Дополнительных компонентов, Docker, AppImage, Ubuntu Snap
- Базовая: О FreeCAD, Интерфейс, Навигация мыши, Методы выделения, Имя объекта, Настройки, Верстаки, Структура документа, Свойства, Помоги FreeCAD, Пожертвования
- Помощь: Учебники, Видео учебники
- Верстаки: Std Base, Arch, Assembly, CAM, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test Framework