Перейти к содержанию

Система нумерации элементов и библиотека функций формы

Функция формы \(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 совпадает с внутренним форматом.

Связанные темы