{{TutorialInfo |Topic=Метод конечных элементов |Level=Начальный |Time=Н/Д |Author=[[1](https://www.freecad.org/wiki/index.php?title=User):NewJoker NewJoker] |FCVersion=1.0 или выше |SeeAlso=Рабочая среда FEM }}
Подготовка геометрии и создание сетки являются ключевыми этапами предварительной обработки для симуляций с использованием метода конечных элементов (МКЭ). Хотя доступное программное обеспечение для симуляций, интегрированное с CAD-средой (например, Модуль МКЭ в FreeCAD), делает заманчивым немедленное выполнение анализов новых конструкций, важно помнить, что МКЭ — это сложный метод, требующий правильно подготовленной геометрии и сетки для получения достоверных и точных результатов. Здесь особенно применимо правило «мусор на входе — мусор на выходе». Существуют и другие важные настройки, от которых сильно зависит точность МКЭ (например, свойства материалов и граничные условия), но первыми шагами и одними из наиболее частых источников проблем являются подготовка геометрии и создание сетки, которые обсуждаются на этой странице.
Хотя большинство конструкций состоят из тел, часто настоятельно рекомендуется использовать линии или поверхности для МКЭ, если структура это позволяет:
Следует помнить, что балочные, оболочечные, плосконапряжённые/плоскодеформированные и осесимметричные элементы, используемые в CalculiX, не являются настоящими элементами такого типа (они не используют классические формулировки элементов, известные из литературы и других программ). Внутренне они преобразуются в объёмные элементы. Тем не менее, их использование рекомендуется в вышеупомянутых случаях.
If a part is slender (long and thin) and beam-like and has a regular cross-section of one of the currently supported beam section types (rectangular, box, elliptical, circular, or pipe), then it should be analyzed using beam elements (unless there are some specific forms of loading, response, or unavoidable geometry details that invalidate this assumption).
Basically, one should draw a centerline (some tips on how to extract it from existing solid geometry can be found in this forum thread - in short, use Draft Wire or Draft BSpline with proper snaps and lines as supports) and apply beam section with optional rotation.
There's no single rule dictating when beam elements can be used, but it's often advised that the cross-section dimensions should be < 1/10 of the part's length for the beam assumption to be valid.
introduced in 1.1: Very slender beams may have negligible bending stiffness and truss elements can be used to model them. These elements cannot sustain bending. They only transmit axial forces, not moments. To use them, enable the ДанныеExclude Bending Stiffness property of the CalculiX solver. Instead of a profile, the ДанныеTruss Area property of the FEM ElementGeometry1D object is used to define their cross-section.
Тонкая деталь, подходящая для анализа с балочными элементами — выделена центральная линия
To obtain the geometry suitable for analysis with shell elements, one should draw a midsurface of the part (some tips on how to extract it from existing solid geometry can be found in this forum thread, this one and this one - in short, apply PartDesign SubShapeBinder or Draft Facebinder, then Part Offset and finally use SubShapeBinder and Extrude to extend edges of the midsurfaces and thus close the gaps between them) and apply proper thickness.
Again, there's no single rule regarding the applicability of shell elements, but it's usually recommended that the thickness should be < 1/10 of a typical global dimension (length/width) for the shell assumption to be valid.
introduced in 1.1: Very thin shells may have negligible bending stiffness and membrane elements can be used to model them. These elements cannot sustain bending. To use them, enable the ДанныеExclude Bending Stiffness property of the CalculiX solver.
Деталь с тонкими стенками, подходящая для анализа с оболочечными элементами — выделена срединная поверхность
Parts suitable for 2D analyses and their highlighted profiles that will be used in such analyses. From the left - plane strain, plane stress and axisymmetric models. Revolution axis is also shown for the axisymmetric case. It must coincide with the global Y axis.
Геометрия, используемая для МКЭ, должна быть корректной. В первую очередь, в ней не должно быть пересечений. Это распространённая проблема, которая часто возникает, когда сборки моделируются без надлежащих ограничений между деталями. Инструмент Part SectionCut может помочь выявить такие пересечения между деталями. Конечно, Part Fuse может помочь устранить их, если они созданы намеренно. Другие проблемы с геометрией (такие как неразвёртываемые геометрии, избыточные рёбра или грани и т. д.) также должны быть исправлены перед переходом к созданию сетки. Инструмент Part CheckGeometry может быть полезен, но визуальная проверка также важна. При подготовке симуляции с использованием объёмных элементов, если есть сомнения, является ли деталь действительно твёрдым телом или просто замкнутой оболочкой, упомянутые инструменты (Part SectionCut и вкладка Shape Content в результатах инструмента Part CheckGeometry) могут это прояснить.
В случае поверхностной геометрии, используемой для анализов с оболочечными и 2D-элементами, направление нормалей поверхностей может быть важным. Они используются для определения положительной и отрицательной стороны сетки конечных элементов поверхности и влияют на такие аспекты анализа, как нагрузки от давления и контакт. Кроме того, 2D-анализы (плоское напряжение/деформация и осесимметричные) в CalculiX требуют, чтобы нормали были направлены в положительном направлении оси Z. Если они инвертированы, возникнут ошибки отрицательного якобиана.
Для проверки нормалей используйте один из следующих подходов:
Для инвертирования нормалей используйте инструмент Инвертировать формы.
Поверхностные сетки MeshObject, обычно импортируемые из файлов STL, OBJ и подобных или созданные в Модуле работы с сетками, не могут использоваться напрямую для МКЭ. Сначала необходимо создать форму из сетки. Затем эта форма может быть разбита на сетку в модуле МКЭ для создания поверхностной (оболочечной / 2D) сетки конечных элементов. Если требуется объёмная (3D) сетка конечных элементов, после создания формы необходимо выполнить преобразование в твёрдое тело.
Самая большая проблема с формами, созданными из поверхностных сеток, заключается в том, что все их треугольники становятся гранями полученной формы. В МКЭ это делает назначение характеристик анализа (таких как нагрузки и граничные условия) особенно проблематичным. В случае плоских поверхностей очистка после преобразования в твёрдое тело может удалить избыточные треугольные грани. Однако в практических сценариях большинство из них всё же останутся, и поэтому использование поверхностных сеток для МКЭ не рекомендуется. Вместо этого следует использовать CAD-геометрии (созданные в FreeCAD или импортированные из файлов STEP/IGES). Иногда даже может иметь смысл воссоздать геометрию на основе поверхностной сетки.
Конструкции, подготовленные в CAD-программах, обычно слишком детализированы для использования в симуляциях МКЭ. Во многих случаях их необходимо сначала упростить. Этот шаг часто упускается из виду, но он очень важен, поскольку получение качественной сетки может быть затруднительным, если деталь слишком сложная, и даже если такая сетка в итоге будет создана, она может быть очень плотной, что приведёт к неоправданно долгому времени решения. Поэтому всегда следует анализировать конструкцию и стараться максимально её упростить, оставляя только те геометрические особенности, которые могут существенно влиять на результаты (прочность/жёсткость) и, следовательно, не могут быть проигнорированы. Обычно исключаются следующие элементы:
Инструмент Удаление мелких деталей и дополнение Модуль упрощения геометрии могут быть полезны при упрощении деталей для симуляций.
Исходная геометрия кронштейна
Геометрия кронштейна, упрощённая с использованием только инструмента удаления мелких деталей
В случае сборок (подробнее о них в одном из следующих разделов) некоторые детали часто можно исключить из симуляций и заменить граничными условиями, если они были прикреплены к анализируемым деталям. Такой подход оправдан, если исключённые детали значительно жёстче (с точки зрения конструктивной жёсткости, учитывающей не только упругость материала, но и геометрию детали), чем анализируемые детали, к которым они были присоединены. Это связано с тем, что фиксированные граничные условия обеспечивают жёсткость (как если бы анализируемая деталь была прикреплена к бесконечно жёсткому компоненту), а гибкие опоры, такие как пружинные элементы, недоступны в модуле МКЭ FreeCAD при использовании CalculiX (в Elmer есть Ограничение пружины).
Упрощение геометрии для МКЭ также может включать разрезание её по одной из плоскостей симметрии для использования предположения о плоскостной симметрии в анализе. Это предположение справедливо только в том случае, если все следующие аспекты модели обладают симметрией в заданной плоскости:
Использование симметрии (1/2, 1/4 или 1/8 модели) рекомендуется, когда это возможно, поскольку это может значительно снизить вычислительные затраты на анализ. Другим преимуществом является устранение некоторых движений твёрдого тела, что упрощает закрепление детали. Условие симметрии должно быть применено к граням, принадлежащим плоскости разреза:
Приложенная сила должна быть соответствующим образом уменьшена, если плоскость симметрии пересекает область, к которой приложена сила (не имеет значения при использовании нагрузки давлением).
Модель 1/8 цилиндрического сосуда под давлением с граничными условиями симметрии и внутренней нагрузкой давлением
Другой, менее распространённый тип симметрии, доступный в FreeCAD FEM, — это циклическая симметрия. Она может быть задана с помощью ограничения связывания и позволяет анализировать только один представительный сектор структуры, состоящей из таких круговых узоров вокруг оси. Предполагается, что граничные условия и нагрузки также обладают этой формой симметрии. Могут быть приложены тангенциальные нагрузки, что позволяет моделировать кручение. Однако чаще всего с циклической симметрией используется центробежная нагрузка. Этот подход может применяться, например, для роторов, валов, турбин, вентиляторов и маховиков.
Так называемое разбиение представляет собой деление геометрии на более мелкие сегменты. В других программах оно обычно используется для создания гексаэдральной сетки, но в FreeCAD оно может быть полезно и по другим причинам:
Основное применение разбиения заключается в случаях, когда нагрузка (или граничное условие) должна быть приложена только к выбранной области поверхности детали. Самый простой способ добиться этого для твёрдых тел — создать эскиз с соответствующим контуром на этой грани и использовать инструмент Булевы фрагменты для разделения грани с помощью эскиза.
Деталь с разбиением грани для приложения нагрузки или граничного условия
Ещё одна причина для разбиения — необходимость применения нескольких материалов к одной детали (без использования нескольких деталей, соединённых друг с другом). В этом случае разбиение можно выполнить с помощью опорной плоскости и инструмента Булевы фрагменты в режиме «Комбинированное тело».
В случае поверхностных (оболочечных) геометрий самый простой способ создания разбиения на основе эскиза — использовать инструмент Булевы фрагменты (как для разбиения граней твёрдых тел). Однако, как объяснено здесь, если в настройках МКЭ включено создание групп сетки, это может работать некорректно, и следует использовать следующий подход: 1. Создайте грань для одной стороны, например, с помощью инструмента Создать грань (например, квадратная пластина с круглым отверстием). 2. Создайте грань для другой стороны аналогичным образом (например, круглая грань, заполняющая отверстие в квадратной пластине). 3. Примените инструмент Конструктор деталей в режиме «Оболочка из граней» с отключённой опцией «Очистить форму» к ранее созданным граням.
Квадратная пластина с разбиением на круглую грань
Разбиение только выбранных граней твёрдого тела с использованием опорных плоскостей вместо эскизов без разделения всего объёма также является сложной задачей. Один из возможных подходов: 1. Разделите тело на грани. 2. Выберите эту грань и опорную плоскость и используйте инструмент Разделить на части. 3. Удалите контейнер Exploded Slice, не удаляя его содержимое. 4. Выберите все грани и срезы и Объедините их в оболочку. 5. Объедините оболочку в твёрдое тело или используйте инструмент Преобразовать в твёрдое тело. Другой способ: 1. Создайте подобъект грани, которую нужно разбить. 2. Разделите подобъект с помощью опорной плоскости, используя инструмент Разделить на части. 3. Создайте новое Тело (чтобы избежать циклической зависимости). 4. Создайте новый подобъект из рёбер, полученных от пересечения предыдущего подобъекта и опорной плоскости. 5. Выберите исходное тело и новый подобъект и используйте инструмент Булевы фрагменты. Другие идеи можно найти в этой теме форума, но они более специфичны для конкретных случаев.
Цилиндрическая грань отверстия, разделённая плоскостью для приложения нагрузки на 180° от штифта
Одним из текущих основных ограничений модуля МКЭ является отсутствие поддержки нескольких сеток. На практике это означает, что нельзя создать сетку для каждой детали сборки отдельно, а затем соединить их с помощью соответствующих ограничений для анализа. Вместо этого необходимо создать единый объект, содержащий все детали сборки, и разбить его на сетку. Здесь есть несколько различных вариантов, все они основаны на булевых инструментах модуля Part. Выбор зависит от желаемого результата — должны ли отдельные детали/объёмы и их границы быть доступными для выбора (например, для назначения материалов или определения граничных условий, действующих на внутренние грани) или нет:
Важно отметить, что если детали точно соприкасаются, на булевом объекте будет создана непрерывная сетка, и для симуляции не потребуются дополнительные ограничения (за исключением случаев, когда используется Part Compound и узлы не совпадают, или свойство «Coherence Mesh» Gmsh установлено в false). Если между деталями есть даже небольшой зазор (или пересечение в случае Part Compound), сетка не будет непрерывной, и потребуются ограничения, такие как связывание или контакт. Проведение частотного анализа — хороший способ определить, является ли сетка непрерывной: если детали не соединены, первые формы мод с визуализированной деформацией с помощью фильтра деформации покажут разделение — детали будут «разлетаться».
Первая форма моды частотного анализа, визуализированная с помощью фильтра деформации — анализировались два куба с небольшим начальным зазором
Часто рекомендуется использовать булевы фрагменты в режиме Compsolid, а затем применять к ним Фильтр составных объектов, особенно при анализе сборок из нескольких материалов и твёрдых тел, встроенных в другие твёрдые тела без вырезов (как в руководстве Сдвиг композитного блока в МКЭ). Как видно на вкладке «Shape Content» инструмента Проверка геометрии (важно использовать этот инструмент в случае сомнений в таких ситуациях), фильтр составных объектов удаляет составной объект и оставляет только Compsolid, состоящий из нескольких твёрдых тел, соединённых своими гранями.
Обходы ошибок, таких как:
ERROR: femelement_table != count_femelements
Error in get_femelement_sets -- > femelements_count_ok() failed!
и:
*ERROR in calinput: no material was assigned
to element …
включают:
Такие ошибки вызваны отсутствием или перекрытием определений материалов в некоторых элементах. Эта публикация на форуме содержит ссылки, которые ясно это демонстрируют, и вся ветка обсуждения может быть полезна при возникновении подобных проблем.
Выбор внутренних регионов (например, граней/объёмов) может быть сложным. Это может потребоваться для применения различных материалов, объёмных нагрузок или граничных условий (особенно в тепловых и электромагнитных анализах). Возможны несколько способов:
Manually editing the References property
introduced in 1.1: If the selected face of CompSolid (Boolean fragments with CompSolid mode + Compound filter standard workflow described in the Assembly geometries section) belongs to two solids, a pop-up menu appears, allowing the selection of the proper solid.
Слишком грубая сетка — одна из наиболее распространённых причин неточностей и других проблем в методе конечных элементов (FEM). Часто это связано с настройками автоматического генератора сетки — по умолчанию он создаёт слишком грубую, неподходящую сетку, если размер элемента не задан вручную и остаётся по умолчанию. Всегда следует знать примерные размеры детали, особенно размер наименьшего важного элемента (для его определения можно использовать инструмент Std Measure), и задавать максимальный размер элемента на основе этих данных.Существует также параметр минимального размера элемента, который может предотвратить создание слишком мелких элементов вокруг малых геометрических особенностей. Такие мелкие элементы могут приводить к чрезмерно плотной сетке (а иногда даже к сбоям или зависаниям FreeCAD при попытке сгенерировать подобную сетку). В общем случае лучше начинать с более грубой сетки (её создание занимает меньше времени), посмотреть, как она выглядит (для этого требуется некоторый опыт), и при необходимости уточнить её. Часто имеет смысл использовать плотную сетку только в областях интереса (зонах с большими градиентами или концентрациями напряжений — например, в местах вырезов или надрезов) и относительно грубую сетку на удалении от них. Таким образом, количество элементов можно значительно сократить, что приведёт к уменьшению времени решения задачи. Локальное уточнение сетки определяется с помощью инструмента FEM MeshRegion.
Сетка по умолчанию, слишком грубая
Глобально уточнённая сетка
Локально уточнённая сетка
Выбор типа элемента — задача непростая и зависит от множества факторов, однако общее правило заключается в том, что гексагональные и квадратные элементы предпочтительнее тетраэдрических и треугольных. Тем не менее, сложные геометрии невозможно разбить на сетку с гексагональными элементами, и FreeCAD не способен корректно их генерировать (только с использованием алгоритма Subdivision генератора сетки Gmsh, но результаты отличаются от ожидаемых для гексагональной сетки).
Квадратные или преимущественно квадратные сетки могут быть нормально сгенерированы на поверхностях — см. [[2](https://forum.freecad.org/viewtopic.php?t=20351) эту тему на форуме]. Гексагональные элементы можно импортировать из внешних генераторов сеток, таких как [[3](https://gmsh.info) Gmsh], и использовать в рабочей среде FEM, как показано в [[4](https://www.youtube.com/watch?v=vylt24G7qj4&t=932s) этом видео].
Выбор порядка элементов (первого или второго) зависит от условий анализа, но в большинстве случаев предпочтение отдаётся элементам второго порядка. Это особенно важно для треугольных и тетраэдрических элементов — их элементы первого порядка (линейные) обычно не рекомендуются для регулярного использования и должны применяться только как заполняющие элементы в областях, не имеющих большого значения. Однако, поскольку FreeCAD не может корректно генерировать гексагональные элементы, в некоторых случаях можно использовать линейные тетраэдры, если сетка достаточно плотная. Особенно это актуально при выполнении анализов с контактами.
Quadrilateral elements can be generated on surface geometries using both meshers:
Quad-dominated mesh generated with Netgen
Hexahedral meshes can be generated on volume geometries using both meshers with some significant limitations:
Hex-dominated mesh generated with Netgen's ZRefine algorithm
Если соблюдать приведённые выше правила (особенно касающиеся корректности геометрии, упрощения модели и выбора размера элемента), сетка должна генерироваться корректно. Однако в некоторых случаях геометрию невозможно сильно упростить, или же сама процедура моделирования корректна, но всё равно приводит к появлению мелких рёбер и граней. В таких ситуациях генерация сетки с элементами второго порядка может завершиться неудачей из-за отрицательных якобианов.
Причина заключается в том, что генераторы сеток должны следовать форме CAD-модели и размещать узлы середины сторон элементов второго порядка непосредственно на геометрию. Для сложных форм это может привести к чрезмерному растяжению элементов, из-за чего они становятся инвертированными. Якобиан является одной из наиболее распространённых мер качества сетки — он отражает отклонение элемента от его идеальной формы. Он становится отрицательным, когда элемент «выворачивается наизнанку» (инвертируется) — либо вследствие сильной деформации во время анализа (не рассматривается здесь), либо из-за указанных выше проблем при генерации сетки.
Отрицательные якобианы в FreeCAD FEM могут быть обнаружены Gmsh или CalculiX. Их расположение в сетке подсвечивается, когда анализ CalculiX запускается с помощью кнопки Run solver calculations. Следующие рекомендации могут помочь устранить проблему:
Независимо от приведённых выше рекомендаций, важно ещё раз подчеркнуть, что отрицательные якобианы обычно являются следствием неаккуратного моделирования и отсутствия подготовки геометрии к анализу (особенно часто это встречается в STEP-моделях, загруженных с различных сайтов). Даже если в таких случаях сетку всё же удаётся сгенерировать, результаты, скорее всего, будут низкого качества (вспомните правило GIGO, упомянутое в первом абзаце). Поэтому очистка и подготовка геометрии к анализу в FEM всегда должны быть приоритетом.
Исследования сходимости сетки рекомендуются для всех серьёзных проектов, требующих высокой точности результатов. Причина заключается в том, что результаты могут значительно изменяться, приближаясь к корректным значениям по мере уточнения сетки. Следует использовать следующий подход:
Обычно полезно построить график зависимости интересующего результата от плотности сетки. Это позволяет легче определить момент, когда результаты начинают сходиться. Допустимая разница между результатами двух последовательных расчётов обычно составляет несколько процентов (например, менее 5%).
В некоторых случаях может происходить так, что максимальные напряжения будут расти бесконечно, независимо от того, насколько плотной будет сетка. Такой нефизический эффект называется сингулярностью напряжений. Он может возникать по следующим причинам:
Типичные способы устранения сингулярностей напряжений:
Типичные графики сходимости сетки: