Как происходит построение расчётной сетки для линейных статических задач

Walter Frei 22/10/2013
Share this on Facebook Share this on Twitter Share this on Google+ Share this on LinkedIn

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

Построение сетки конечных элементов

Расчётная сетка конечных элементов нужна для двух целей. Первая — разбиение смоделированных в САПР геометрий на меньшие части или элементы. По ним можно записать систему уравнений, описывающую решение главного уравнения. Ещё сетка используется для отображения области решений физических задач. Существует погрешность, связанная с дискретизацией геометрии и дискретизацией решения. Рассмотрим каждый случай отдельно.

Дискретизация геометрии

Рассмотрим два простых геометрических тела: куб и цилиндрическую оболочку.

Block and a cylindrical shell geometries Как происходит построение расчётной сетки для линейных статических задач

Существует четыре различных типа элементов, которые можно использовать для построения сеток. Это геометрические тела — тетраэдры (четырехгранники), гексаэдры (шестигранники), треугольные призматические элементы (призмы) и пирамиды.

Mesh elements Как происходит построение расчётной сетки для линейных статических задач

Серые кружки отображают углы или узлы элементов. Эти четыре элемента могут быть использованы в любой комбинации. (Для двухмерного моделирования доступны треугольные и четырехугольные элементы.) После рассмотрения иллюстрации становится видно, что расчётные сетки обоих геометрических тел могут быть построены с использованием всего лишь одного шестигранника, двух призм, трёх пирамид или пяти четырёхгранников. Как мы узнали из более ранней записи в блоге о решении линейных статических задач методом конечных элементов, вы всегда получите решение уже в первой итерации метода Ньютона-Рафсона. Это является верным для всех линейных задач конечных элементов независимо от вида расчётной сетки. Так что давайте взглянем на простейшую сетку, которую мы можем наложить на выбранные структуры. Иллюстрация ниже — это графическое представление дискретизации наших геометрических тел на один шестигранник:

Brick element discretization of block and cylindrical shell geometries Как происходит построение расчётной сетки для линейных статических задач

Очевидно, что расчётная сетка куба — это идеальное представление исходного геометрического тела, а вот сетка цилиндрической оболочки проявляется достаточно плохо. Фактически она появляется в таком виде только при выводе изображения. Элементы всегда выводятся на экран с прямыми рёбрами, (это сделано для повышения графической производительности) но для дискретизации геометрии (и решения) COMSOL обычно использует элементы Лагранжа второго порядка. Так что, хотя рёбра элемента всегда появляются в виде прямых, внутри среды они представлены как:

Quadratic elements Как происходит построение расчётной сетки для линейных статических задач

Белые кружки отображают срединные узлы рёбер элементов второго порядка. Линии, определяющие ребра элементов, проходят через три точки. Рёбра аппроксимированы полиномиальным приближением. В центре каждой из четырехсторонних поверхностей и в центре объема шестигранных элементов Лагранжа второго порядка также есть дополнительные узлы (опущены для простоты). Видно, что эти узлы хорошо служат для представления искривленных границ элементов. Для большинства физических задач COMSOL использует элементы второго порядка по умолчанию. Два исключения из этого — задачи, связанные с переносом химических веществ и полем потока жидкости. (Пока в проблемах такого типа в основном речь идёт о конвекции, главные уравнения лучше решать с элементами первого порядка.) Также доступны и элементы более высокого порядка. А вот элементы второго порядка — это отличный компромисс между точностью и требованиями к вычислительной производительности.

Иллюстрация ниже показывает погрешность геометрической дискретизации при построении сетки для дуги в 90° в количестве элементов первого и второго порядка:

Geometric discretization error when meshing a ninety degree arc Как происходит построение расчётной сетки для линейных статических задач

Вывод, который можно сделать из всего вышесказанного: для уменьшения погрешности геометрической дискретизации до уровня ниже 1% нужно хотя бы два элемента второго порядка или восемь элементов первого порядка. Фактически два элемента второго порядка вносят погрешность геометрической дискретизации менее чем 0.1%. Более густые сетки будут точнее представлять фигуру, но и используют больше вычислительных ресурсов. Это дает нам два хороших практических совета:

  1. При использовании элементов первого порядка подгоняйте сетку таким образом, чтобы приходилось хотя бы 8 элементов на дугу в 90° градусов
  2. При использовании элементов второго порядка на дугу в 90° должно приходиться два элемента

Теперь с этими правилами, полученными опытным путём, мы можем оценить погрешность, внесённую при построении сетки. Это возможно сделать с определенной уверенностью даже до непосредственного решения модели. А сейчас давайте обратим наше внимание на то, как сетка дискретизирует решение.

Дискретизация решения

Расчётная сетка конечных элементов также используется для представления области решений. Решение вычисляется по узловым точкам. При его интерполяции используется полиномиальный базис для восстановления полного поля решений. При расчёте линейных задач методом конечных элементов у нас всегда получится решение, и не важно насколько сетка груба. Она может не быть слишком точной. Чтобы понять, как плотность сетки влияет на точность решения, взглянем на простую задачу передачи тепла на предыдущие тела:

Heat transfer example using block and cylindrical shell geometries Как происходит построение расчётной сетки для линейных статических задач

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

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

Heated blocks Как происходит построение расчётной сетки для линейных статических задач

А теперь давайте посмотрим на чуть более сложный вариант. Мы уже видели, что модель цилиндрической оболочки будет с погрешностью геометрической дискретизации из-за искривленных рёбер, так что мы запустим её хотя бы с двумя элементами второго порядка (или восьмью первого порядка) вдоль искривленных рёбер. Если вы посмотрите внимательно на изображение выше, увидите, как на границах искривлены рёбра элементов. Внутренние же элементы имеют прямые ребра. Пока поле температуры не изменяется вдоль оси цилиндра, мы можем использовать одиночный элемент. Однако в радиальном направлении от внутренней к внешней поверхности нам необходимо иметь достаточно элементов для дискретизации решения. Аналитическое решение для этого случая выглядит так: \ln(r). Его можно сравнить с нашим решением методом конечных элементов. Пока полиномиальные базисные функции не могут дать идеального описания, давайте выведем изображение погрешности в решении конечных элементов для линейного и квадратичного элементов:

Graph showing error in the finite element solution Как происходит построение расчётной сетки для линейных статических задач

Из этого графика становится ясно, что по мере увеличения количества элементов в модели погрешность уменьшается. Это фундаментальное свойство метода конечных элементов: чем больше элементов, тем точнее решение. Конечно, с этим связаны затраты. Для решения больших моделей требуется больше вычислительных ресурсов и времени. Теперь вы заметите, что здесь нет единиц измерения по оси x. Величина выбирается в каждом конкретном случае. Коэффициент, при котором погрешность уменьшается с увеличением густоты сетки, будет своим для каждой модели. Он зависит от многих факторов. Единственный важный момент это то, что погрешность будет всегда монотонно уменьшаться для корректно поставленных задач.

Также вы заметите, что после определённой точки погрешность начинает снова увеличиваться. Это происходит, когда отдельные элементы сетки становятся очень маленькими, и мы сталкиваемся с пределами числовой точности. То есть числа в нашей модели меньше, чем могут быть точно представлены компьютером. Эта проблема присуща всем вычислительным методам, не только с использованием конечных элементов. Компьютеры не способны точно отображать действительные числа. Точка, в которой погрешность начинает снова возрастать, будет примерно такой: \sqrt{2^{-52}} \approx 1.5 \times 10^{-8}. Мы часто говорим, что минимальная достижимая погрешность равна 10-6, чтобы не уходить от достоверной практики. Таким образом, проинтегрируем вычисленную разность между точным и расчетным решением по всей модели:

\epsilon = \int_{\Omega} {\left| \frac{u_{computed}-u_{true}}{u_{true}} \right| } d\Omega

Мы говорим, что обычно в пределах увеличения густоты сетки погрешность \epsilon может быть приведена к такому небольшому значению, как 10-6. В любом случае на практике же вводные данные наших моделей часто будут иметь намного большую неопределенность, чем эта величина. Также помните о том, что в целом мы не знаем точного решения. Поэтому мы должны сравнить расчётные решения по сеткам с разными размерами и наблюдать, к каким значениям сходится результат.

Уплотнение адаптивной сетки

Хотелось бы завершить эту статью описанием лучшего способа уплотнить сетку. Графики выше показывают, что погрешность идёт на спад, когда все элементы в модели становятся меньше. Как бы то ни было, в идеальном случае вы сделаете элементы меньше только в участках, где погрешность высока. Среда COMSOL реализует это через Adaptive Mesh Refinement (уплотнение адаптивной сетки), которое сначала строит первоначальную сетку. Затем среда по итерациям добавляет элементы в участки, где по оценке должна быть высокая погрешность и после этого решает модель снова. Это можно проделывать столько итераций, сколько хочется. Данная функция работает с треугольными элементами в двухмерном пространстве и четырёхгранными в трехмерном. Давайте проверим это в контексте простой строительной задачи из механики — пластина с одноосным натяжением и отверстием, как показано на рисунке ниже. Из-за того, что пластина симметрична, нам надо решить только одну четверть модели.

Plate under uniaxial tension with a hole Как происходит построение расчётной сетки для линейных статических задач

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

Mesh refinement iterations and computed stress field Как происходит построение расчётной сетки для линейных статических задач

Обратите внимание, как избирательно среда COMSOL добавляет небольшие элементы вокруг отверстия. Это не должно удивлять вас, нам ведь известно, что здесь будет более сильное напряжение вокруг отверстия. На практике для выбора подходящей сетки рекомендуется использовать комбинацию сгущения адаптивной сетки, инженерной оценки и опыта.

Резюме основных моментов

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

Загрузка комментариев...

Темы публикаций


Теги