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

Translation update pending

The Russian translation may be out of date because the Japanese source has changed. The existing translation remains available while it is being updated.

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

Функция формы \(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). Однако элемент 641 поддерживает только балку Бернулли — Эйлера и не поддерживает балку Тимошенко, доступную для 611.

Библиотека функций формы

Процедуры вычислений элемента (построение матрицы жёсткости и вектора внутренних сил) не имеют отдельных реализаций для каждого типа элемента. Вместо этого они обращаются к библиотеке функций формы через единый интерфейс, принимающий номер типа элемента 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 совпадает с внутренним форматом.

Связанные разделы