Система нумерации элементов и библиотека функций формы¶
Функция формы \(N_\alpha^e(\boldsymbol{r})\), введённая в разделе Функции формы и конечно-элементная аппроксимация, имеет конкретный вид для каждого типа элемента. В этой главе группы элементов, предоставляемые FrontISTR, классифицируются с помощью трёхзначных номеров типов элементов и описывается интерфейс библиотеки функций формы для единообразной работы с каждым элементом. Конкретные естественные системы координат и функции формы трёхмерных объёмных элементов, а также преобразование порядка срединных узлов для квадратичных элементов рассматриваются в разделе Функции формы трёхмерных объёмных элементов, а рекомендации по выбору типов элементов приведены в разделе Библиотека элементов (функции).
Классификация элементов и правила нумерации¶
Типы элементов FrontISTR обозначаются трёхзначными числами. Значение каждой цифры следующее.
- Первая цифра (группа элементов): 1 = линейный элемент/ферма, 2 = плоский элемент, 3 = объёмный элемент, 5 = интерфейсный элемент, 6 = балочный элемент, 7 = оболочечный элемент.
- Вторая цифра (базовая форма): различает геометрическую форму внутри группы элементов (треугольник, четырёхугольник, тетраэдр, призма или гексаэдр).
- Третья цифра (порядок интерполяции): 1 = первый порядок (только угловые узлы), 2 = второй порядок (включая срединные узлы). Исключение: двухузловой ферменный элемент имеет номер 301.
Предоставляемые элементы по группам перечислены в следующей таблице.
| Группа элементов | Тип элемента | Число узлов | Описание |
|---|---|---|---|
| Линейный элемент | 111 | 2 | 2-узловой связующий элемент (недоступен для анализа напряжений) |
| 112 | 3 | 3-узловой связующий элемент (недоступен для анализа напряжений) | |
| Плоский элемент | 231 | 3 | 3-узловой линейный треугольный элемент |
| 232 | 6 | 6-узловой квадратичный треугольный элемент | |
| 241 | 4 | 4-узловой линейный четырёхугольный элемент | |
| 242 | 8 | 8-узловой квадратичный четырёхугольный элемент (семейство Serendipity) | |
| Объёмный элемент | 301 | 2 | 2-узловой ферменный элемент |
| 341 | 4 | 4-узловой линейный тетраэдральный элемент | |
| 342 | 10 | 10-узловой квадратичный тетраэдральный элемент | |
| 351 | 6 | 6-узловой линейный призматический элемент | |
| 352 | 15 | 15-узловой квадратичный призматический элемент | |
| 361 | 8 | 8-узловой линейный гексаэдральный элемент | |
| 362 | 20 | 20-узловой квадратичный гексаэдральный элемент (семейство Serendipity) | |
| Интерфейсный элемент | 541 | 4×2 | 4-узловой линейный элемент четырёхугольной грани (недоступен для анализа напряжений) |
| 542 | 8×2 | 8-узловой квадратичный элемент четырёхугольной грани (недоступен для анализа напряжений) | |
| Балочный элемент | 611 | 2 | 2-узловой балочный элемент Бернулли — Эйлера (6 степеней свободы на узел) |
| 641 | 2×2 | 2-узловой балочный элемент Бернулли — Эйлера (3 степени свободы на узел, для смешанных степеней свободы) | |
| Оболочечный элемент | 731 | 3 | Треугольный оболочечный элемент MITC3 (6 степеней свободы на узел) |
| 741 | 4 | Четырёхугольный оболочечный элемент MITC4 (6 степеней свободы на узел) | |
| 743 | 9 | Четырёхугольный оболочечный элемент MITC9 (6 степеней свободы на узел) | |
| 761 | 3×2 | Треугольный оболочечный элемент MITC3 (3 степени свободы на узел, для смешанных степеней свободы) | |
| 781 | 4×2 | Четырёхугольный оболочечный элемент MITC4 (3 степени свободы на узел, для смешанных степеней свободы) |
Линейный гексаэдральный элемент 361 имеет несколько формулировок (полное интегрирование, несовместимая мода, B-bar и F-bar), которые выбираются через управление анализом. Подробнее см. Расширенные формулировки элементов.
Балочный элемент 641 и оболочечные элементы 761/781 предназначены для соединения структурных элементов с 6 степенями свободы и объёмных элементов с 3 степенями свободы в одних и тех же узлах; один структурный узел представляется двумя узлами с 3 степенями свободы. Сами формулировки идентичны соответствующим вариантам с 6 степенями свободы (611, 731 и 741).
Библиотека функций формы¶
Процедуры вычислений элемента (построение матрицы жёсткости и вектора внутренних сил) не имеют отдельных реализаций для каждого типа элемента. Вместо этого они обращаются к библиотеке функций формы через единый интерфейс, принимающий номер типа элемента fetype в качестве аргумента. Модуль elementInfo (fistr1/src/lib/element/element.f90) предоставляет следующие функции.
NumOfQuadPoints(fetype): возвращает число точек интегрирования \(n_q\) для типа элемента.getQuadPoint(fetype, np, pos): возвращает естественные координаты \(\boldsymbol{r}_i\) точки интегрирования \(i\).getWeight(fetype, np): возвращает вес \(w_i\) точки интегрирования \(i\).getShapeFunc(fetype, r, N): возвращает значения функций формы \(N_\alpha^e(\boldsymbol{r})\) в естественных координатах \(\boldsymbol{r}\).getShapeDeriv(fetype, r, dN): возвращает производные функций формы по естественным координатам \(\partial N_\alpha^e/\partial \boldsymbol{r}\).getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): по узловым координатам элемента \(\boldsymbol{X}^e\) возвращает производные по физическим координатам \(\partial N_\alpha^e/\partial \boldsymbol{x}\) и определитель якобиана \(J\).getNumberOfSubface(fetype),getSubFace(fetype, k, ...): возвращают число граничных граней элемента и номера узлов, образующих каждую грань. Они используются для построения поверхностных нагрузок и контактных поверхностей.
Каждая функция внутри разветвляется по номеру типа элемента и вызывает подпрограммы функций формы и их производных из модулей нижнего уровня, предусмотренных для каждого типа элемента (tet4n.f90, tet10n.f90, prism6n.f90, prism15n.f90, hex8n.f90, hex20n.f90, tri3n.f90, tri6n.f90, quad4n.f90, quad8n.f90, quad9n.f90, line2n.f90, line3n.f90). Числовые таблицы координат и весов точек интегрирования собраны в quadrature.f90. Чтобы добавить новый тип элемента, реализуйте соответствующий модуль нижнего уровня и добавьте ветви для него в каждую функцию elementInfo.
Преобразование порядка срединных узлов для квадратичных треугольных элементов¶
Для квадратичного треугольного элемента 232 порядок срединных узлов различается между входным форматом сетки HEC-MW (в котором сначала идут угловые узлы по периметру элемента, затем срединные узлы на рёбрах 1-2, 2-3, …) и внутренним форматом FrontISTR, предполагаемым функциями формы библиотеки элементов. Различие между двумя форматами устраняется сразу после загрузки сетки процедурой hecmw2fstr_mesh_conv (fistr1/src/common/hecmw2fstr_mesh_conv.f90 и hecmw2fstr_connect_conv.c), которая переупорядочивает шесть узлов в \(\{1,2,3,6,4,5\}\) согласно таблице преобразования Table232. Поскольку преобразование выполняется непосредственно над массивом связности элементов, все последующие вызовы библиотеки элементов используют внутренний порядок узлов FrontISTR. При выводе результатов обратное преобразование fstr2hecmw_mesh_conv восстанавливает формат HEC-MW перед записью, поэтому пользователю достаточно учитывать только формат HEC-MW как для ввода, так и для вывода.
Квадратичные трёхмерные объёмные элементы 342 (тетраэдральный) и 352 (призматический) имеют аналогичные автоматические преобразования, тогда как для 362 (квадратичного гексаэдрального) преобразование отсутствует. Их обработку см. в разделе Функции формы трёхмерных объёмных элементов. Для квадратичного плоского четырёхугольного элемента 242 и интерфейсного элемента 542 преобразование не выполняется, поскольку порядок срединных узлов во входном формате HEC-MW совпадает с внутренним форматом.
Связанные темы¶
- Функции формы и конечно-элементная аппроксимация — Математическое определение функций формы
- Численное интегрирование — Точки интегрирования, веса и приближённая форма интегрирования по элементу
- Функции формы трёхмерных объёмных элементов — Конкретные естественные координаты и функции формы для сплошных объёмных элементов
- Расширенные формулировки элементов — B-bar / F-bar / несовместимая мода / оболочка / балка
- Библиотека элементов (функции) — Варианты типов элементов и рекомендации по выбору