WebCAE
← Документация

Справочник WebCAE

Что именно считает WebCAE, в какой постановке и с какими допущениями. Для каждого вида расчёта приведены уравнения, способ дискретизации, параметры, ограничения и ссылки на кейсы верификации. Каждый подраздел помечен статусом готовности.

Версия продукта: 0.2.1+Актуально на: 28 октября 2026 г.
Статусы

1О продукте и о справочнике

↑ К оглавлению

1.1Что такое WebCAE

WebCAE — пакет инженерного анализа методом конечных элементов полного цикла. В нём есть подготовка геометрии (импорт CAD и параметрическое построение), построение сетки, назначение материалов, граничных условий и нагрузок, расчёт и обработка результатов. Основная область — прочность и динамика конструкций: объёмные тела, оболочки, балки и их сочетания. Дополнительно поддерживаются теплопередача, связанные термомеханические задачи, акустика и течения жидкости.

Продукт работает на двух платформах с одним и тем же расчётным ядром:

  • десктопное приложение (Windows, macOS) — нативный решатель, многопоточность, объём задачи ограничен только памятью машины;
  • браузер — то же ядро, скомпилированное в WebAssembly; удобно для знакомства и небольших моделей, ограничено памятью вкладки и одним потоком.

Эталоном считается десктопный нативный путь. Числа верификации снимаются на нём. Если результаты платформ на какой-то модели различаются, верным считается нативный результат, а расхождение описывается явно (см. Платформы, производительность и контроль качества).

1.2Как читать справочник

Справочник описывает, что именно считает программа: в какой постановке, какими элементами и методами, с какими допущениями. Он не заменяет учебник по МКЭ, но формулы в нём взяты из реализации, а не из учебника. Где реализация проще классической постановки, это сказано прямо.

Разделы идут в порядке расчётного цикла:

  1. Геометрия и CAD и Сетки — откуда берётся расчётная модель.
  2. Модели материалов, Граничные условия, нагрузки и связи, Контакт и соединения — что задаёт пользователь.
  3. Библиотека конечных элементов — как дискретизируется модель.
  4. Линейные виды анализа, Нелинейные расчёты и динамика, Теплопередача и мультифизика — какие задачи решаются и в какой постановке.
  5. Решатели — как решаются получившиеся системы уравнений.
  6. Результаты, постпроцессинг и оценка прочности — что получает инженер и как это вычисляется.
  7. Проекты, сценарии и автоматизация, Платформы, производительность и контроль качества — как с этим работать и почему результатам можно доверять.

Типовая структура подраздела: назначение, постановка и уравнения, что задаётся и что получается, способ реализации, ограничения, проверка (ссылки на кейсы верификации), пример команды сценария.

1.3Статусы готовности

Каждый подраздел помечен одним из трёх статусов:

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

Статус ставится осторожно: если сомнение было между двумя, выбран более строгий. Статусы пересматриваются с каждым выпуском.

1.4Единицы измерения

Внутри решателя все величины находятся в согласованной системе СИ: длина в метрах, сила в ньютонах, напряжение, давление и модуль упругости в паскалях, плотность в кг/м³, температура в кельвинах. Решатель размерно-агностичен: он решает систему уравнений, и ответ верен только при согласованных единицах на входе. Поэтому перевод единиц выполняется в одном месте, на границе между моделью и решателем, и нигде больше.

Пользователь независимо выбирает две вещи:

  • систему ввода нагрузок и свойств: СИ, метрическую инженерную (мм, Н, МПа) или имперскую;
  • единицу длины сцены, в которой хранится геометрия; обычно миллиметры, как в исходном CAD.

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

1.5Проверка и верификация

Утверждения о точности опираются на открытую программу верификации: более двухсот задач с аналитическими решениями, задачи NAFEMS и MacNeal–Harder, нелинейные и динамические бенчмарки. Для каждой задачи опубликованы постановка, эталонное значение, полученное значение, отклонение и версия решателя, на которой выполнен прогон. По тексту справочника ссылки ведут на конкретные кейсы; полный список — на странице Верификация.

Допуск сверки с эталоном в программе верификации — 5 %. Ослаблять его, чтобы кейс прошёл, нельзя: расхождение больше допуска считается дефектом и устраняется в расчёте, а не в критерии.

2Геометрия и CAD

↑ К оглавлению

Расчёт в WebCAE начинается с геометрии: твёрдых тел, листов и линий в виде граничного представления (B-Rep). Тело приходит из CAD-файла, строится из примитивов и эскизов или собирается из стержней и оболочечных патчей. Всё дальнейшее — сетка, граничные условия, результаты — привязано к граням, рёбрам и вершинам этого представления. Поэтому раздел описывает не только способы получить геометрию, но и то, как к её элементам можно обращаться и что происходит с привязкой, когда геометрия меняется.

Каждая операция проходит через единый командный слой. Кнопка на ленте, пункт контекстного меню и строка DSL выполняют одну и ту же команду, поэтому всё, что построено мышью, воспроизводится скриптом (синтаксис — на странице /docs/dsl). Исключения названы в подразделах: срединные поверхности и синхронизация с Onshape доступны только из интерфейса, импорт файла по пути из DSL работает в пакетном режиме.

2.1Геометрическое ядро и единицыстабильно

Геометрию строит и проверяет открытое ядро Open CASCADE Technology (OCCT 7.9). Тело в документе бывает твёрдым (solid), листовым (shell), каркасным (wire) или точкой. Булевы операции, скругления, сшивка и проверка валидности выполняются средствами OCCT. Ядро собрано для десктопного приложения и для браузера (WebAssembly) из одного исходного кода.

Единицы устроены в три слоя.

  • Геометрия живёт в миллиметрах. Координаты примитивов, эскизов и импортированных моделей — единицы сцены (мм).
  • Солвер получает данные в СИ (метры, ньютоны, паскали, килограммы). Пересчёт выполняется на границе солвера в одном месте, пользователь его не видит.
  • Единица скрипта задаётся командой units m|mm|in. Она действует на размеры, которые не являются координатами сцены: размер элемента size=, радиусы и размеры зон сгущения, процедурные балки, оболочки и точечные массы. Координаты команд построения тел (box, primitive, move) не пересчитываются и остаются миллиметрами сцены.
Ограничения. Скрипт без команды units считается метровым: mesh tet size=6 в нём означает шесть метров. Начинайте скрипт с units mm. Команды построения тел единицу скрипта не учитывают — это сознательное решение, но оно легко приводит к ошибке в смешанных скриптах.
Проверка. Согласованность длин проверена кейсом с сосредоточенной силой, решённым дважды в мм/МПа/Н и в м/Па/Н: Солидная консоль под точечной силой — сверка конвенций длины (отклонение 2.02 %). Геометрия и единицы лежат под всеми кейсами каталога.
units mm
box dx=20 dy=20 dz=100
list faces of body1

2.2Импорт STEPстабильно

STEP (AP203, AP214, AP242) — основной формат обмена. Файл читает STEP-читатель OCCT; единицы файла приводятся к миллиметрам. Содержимое раскладывается на тела: твёрдые тела, при их отсутствии — оболочки, иначе весь результат одним телом. Имена тел берутся из данных STEP по возможности. Крупные сборки показываются постепенно, по мере тесселяции.

После чтения каждое тело проходит проверку валидности (аналог BRepCheck), и модель получает один из статусов готовности:

  • валидное твёрдое тело — объёмную сетку можно строить;
  • валидный лист — доступна только поверхностная сетка;
  • требует проверки — часть тел сборки имеет замечания, остальные пригодны;
  • не поддерживается или ошибка чтения — расчёт не запускается, причина выводится кодом.

Если проверка по какой-то причине не выполнялась, статус помечается как непроверенный и не выдаётся за «годный». Объёмная сетка листового тела блокируется явно, с кодом причины, а не молча подменяется другой.

В интерфейсе файл загружается кнопкой импорта или перетаскиванием на холст. Из DSL команда import с путём к файлу работает в пакетном (node) режиме; внутри приложения используйте загрузку через интерфейс.

import "bracket.step"
list faces of body1
Ограничения. Из STEP импортируется геометрия и топология. Аннотации (PMI), допуски и параметрическая история исходной CAD-системы не используются: тело приходит «мёртвым» B-Rep. Качество исходной модели определяет результат — самопересекающиеся поверхности и зазоры между гранями не гарантированно лечатся автоматически (см. лечение геометрии).
Проверка. Отдельного численного кейса на сам импорт нет. Импорт и классификация готовности закрыты регрессионным корпусом лечения (7 из 7 пройдено: годное тело, сборка, лист, файл без B-Rep, пустой файл, отказ чтения, воспроизводимость результата) и корпусом сеток на реальных STEP-деталях.

2.3Импорт IGES и STLбета

IGES читается ядром OCCT, после чтения поверхности сшиваются в оболочки и, если замкнуты, — в тело. В DSL формат задаётся параметром format=iges или расширением файла. Как и для STEP, из DSL импорт по пути выполняется в пакетном режиме.

STL — сетка из треугольников, а не B-Rep. WebCAE читает бинарный и текстовый STL, склеивает совпадающие вершины, проверяет водонепроницаемость (каждое ребро — ровно у двух треугольников) и по ней относит тело к твёрдым или листовым. Чтобы к граням можно было обращаться по номеру, треугольники сегментируются на «грани» по двугранному углу между соседними треугольниками (порог по умолчанию — около 35°); границы сегментов становятся рёбрами. Для такого фасетного тела объёмная сетка строится по самим треугольникам.

Ограничения. У STL нет точных поверхностей: цилиндр остаётся многогранником, радиус скругления не извлекается. Булевы операции, скругления, лечение и параметрические операции для фасетных тел недоступны. Качество объёмной сетки по STL определяет качество треугольников исходного файла. Импорт BREP-файлов OCCT как отдельный пользовательский формат не предусмотрен: BREP используется внутри проекта как способ хранения тел.
Проверка. Отдельных кейсов верификации нет; проверка — модульные тесты разбора и сегментации.

2.4Нумерация топологиистабильно

Каждая грань, ребро и вершина получает номер. Это тот же номер, что виден в дереве модели рядом с узлом, и тот же адрес, который принимает DSL: surface number N, edge number N, vertex number N. Для тел нумерация идёт в дереве по телам.

Правила нумерации:

  • номер выдаётся один раз на сущность и привязан к её устойчивому идентификатору в реестре топологии, а не к позиции в массиве;
  • номер не переиспользуется после удаления: счётчик только растёт, чтобы ссылка в отчёте или скрипте не начала указывать на другую сущность;
  • если грань пережила операцию с тем же устойчивым идентификатором, её номер прежний; новые грани получают новые номера;
  • слово вида (surface, edge, vertex) обязательно и проверяется: surface number 27 отвергается, если 27 — вершина;
  • адреса по габариту (face z-, vertex "x-,y-,z-") и голые индексы не поддерживаются и дают явную ошибку. В сборке «грани z-» не существует, и такой адрес молча попадал бы в чужую сущность.

Узнать номера можно командами list faces of <body> и list edges of <body>: они печатают номер, площадь, центроид и нормаль каждой грани либо длину, середину и направление каждого ребра.

list faces of body1
fix surface number 3
load surface number 5 pressure=-1000000
Ограничения. После операций, которые перестраивают грань (булева операция, разрезание, скругление), номер сохраняется только у граней, переживших операцию с тем же идентификатором. Скрипт, в котором номер выбран по результату list faces до такой операции, нужно перечитывать после неё. Когда привязка граничного условия теряется, запись остаётся и помечается (см. лечение геометрии).
Проверка. Нумерация и обращение к ней из скриптов лежат под каждым кейсом каталога, в котором условия заданы формами fix surface number N, например Пластина с отверстием и Подкреплённая B-Rep панель.

2.5Примитивы, булевы операции и преобразованиястабильно

Базовый набор операций над телами:

  • примитивы: box, cylinder, sphere, cone, torus, wedge, pipe, hollowBox, полусферы (primitive <shape> params);
  • булевы операции boolean union|cut|intersect target= tool=, сшивка и объединение (sew, union);
  • скругления и фаски рёбер (fillet, chamfer), полое тело заданной толщины (hollow);
  • преобразования: move, rotate, mirror, scale, линейный и круговой массивы (pattern);
  • построение по профилю: sketch (контур по точкам), extrude, revolve, sweep, loft;
  • прямое редактирование граней: смещение (offset_face, pull), перенос (move_face) и литейный уклон (draft_face).

Булева операция строится средствами OCCT с историей: ядро сообщает, какие грани изменены, порождены или удалены, и по этой истории переносятся номера и привязки.

units mm
box dx=60 dy=40 dz=10
primitive cylinder r=8 h=10
boolean cut target=body1 tool=body2
Ограничения. Прямое редактирование граней работает на простых случаях (плоские и цилиндрические грани); универсального «перетаскивания любой грани с авто-перестроением соседей» в продукте нет. У прямого моделирования нет собственного кейса верификации.
Проверка. Примитивы и булевы операции построены в геометрии почти всех кейсов; отдельный упор на сборки — Контакт: несовместные сетки.

2.6Параметрическая CAD-модельбета

Параметрическая модель хранит не тело, а рецепт: эскиз, затем операции над ним. Правка эскиза или размера пересчитывает цепочку и заменяет тело на месте — оно сохраняет имя, цвет и номера.

Эскиз лежит на плоскости (xy, xz, yz, опорная плоскость или грань) в локальных координатах (u, v) в миллиметрах. Сущности эскиза: ломаная и прямоугольник, окружность, дуга. Операции над эскизом: extrude (добавить, вырезать или новое тело), revolve, sweep по пути-эскизу, loft по сечениям, thread (резьба — косметическая или геометрическая). Доступна правка эскиза: перенос, поворот, зеркало, смещение контура, обрезка и продление.

Ограничения эскиза включают совпадение точек, горизонталь, вертикаль, параллельность, перпендикулярность, коллинеарность, равенство, концентричность, середину, симметрию, касание, фиксацию и размеры (расстояния, угол, радиус, диаметр). Размеры можно называть и менять по номеру.

Решатель ограничений сводит их к невязкам \mathbf{r}(\mathbf{x}) по координатам эскиза и минимизирует \tfrac{1}{2}\lVert \mathbf{r}\rVert^{2} методом Левенберга–Марквардта с численным якобианом \mathbf{J}:

\left(\mathbf{J}^{\mathsf T}\mathbf{J} + \lambda\,\mathbf{D}\right)\boldsymbol{\delta} = -\mathbf{J}^{\mathsf T}\mathbf{r}

Число степеней свободы эскиза — n_{\text{dof}} = n_{\text{var}} - \operatorname{rank}(\mathbf{J}). Определение по рангу корректно и при дублирующих ограничениях, где разность «переменные минус уравнения» дала бы отрицательное число. Эскиз получает статус полностью определённого, недоопределённого (с числом степеней свободы) или переопределённого (с перечнем конфликтующих ограничений). Если система не решается, геометрия эскиза не изменяется частично.

Интерфейс: панель параметрических операций (FeaturePanel), группа «Операции» на ленте, ветви в дереве модели. DSL: команда cad с подкомандами sketch, extrude, revolve, sweep, loft, thread, constraint, dimension, solve, recompute, move, rotate, mirror, offset, trim, extend.

cad sketch plane=xy points=0,0,40,0,40,20,0,20 id=sketch1
cad extrude sketch=sketch1 distance=10
cad recompute
Ограничения. Эскиз и операции хранятся в проекте, но исходная CAD-система не видит этой истории: обмена параметрической историей с другими пакетами нет. Идентификатор эскиза в DSL не должен содержать дефиса, а текстовые значения с кириллицей берутся в кавычки — иначе лексер читает дефис как вычитание. Сложные эскизы с сотнями ограничений на численном якобиане не оптимизировались.
Проверка. Численных кейсов в каталоге нет: операции проверены тестами на объёмы, ранг якобиана, повторяемость пересчёта и сохранение в проект. Поэтому статус осторожный.

2.7Лечение геометрии и auto-fixбета

Импортированная модель часто непригодна для сетки: зазоры между гранями, вырожденные рёбра, мелкие фаски и отверстия мельче элемента. WebCAE различает три действия.

  1. Лечение при импорте. Ограниченный по бюджету набор стадий: сшивка оболочек, исправление формы средствами OCCT (ShapeFix), слияние копланарных и соосных граней (UnifySameDomain), сборка замкнутой оболочки в тело. Результат проверяется на валидность, а повторный прогон на том же входе даёт ту же форму.
  2. Auto-fix перед сеткой. Работает по копии. Исходное тело, дерево модели и сырой STEP не изменяются ни при каком исходе. Мелкие особенности (короткие рёбра, малые грани, узкие слайверы, отверстия и скругления меньше элемента) заклеиваются, чтобы мешер не дробил сетку под них. Пороги привязаны к размеру элемента, который задаёт пользователь, а не к абсолютным миллиметрам. Каждая стадия обязана доказать, что стало не хуже: результат валиден, число тел не изменилось, объём не ушёл больше допустимого. Иначе стадия откатывается, а причина попадает в отчёт.
  3. Явные команды. defeature <body> maxHoleRadius= maxFaceArea= удаляет отверстия и грани по вашим порогам; repair <body> [merge] [heal] tolerance= сливает швы и исправляет зазоры с заданным допуском; simplify отбрасывает мелкие тела сборки по порогам объёма и диагонали; shrinkwrap строит внешнюю оболочку сборки. Автоматический режим включается и выключается командой autofix on|off; autofix element=<mm> печатает отчёт для заданного размера элемента.

Граничные условия не теряются молча. Если стадия auto-fix унесла бы грань, с которой связано граничное условие, стадия откатывается на менее агрессивную конфигурацию. Если привязка всё же теряется (правка геометрии, повторный импорт), запись граничного условия остаётся в модели и помечается как осиротевшая, а отчёт перечисляет такие записи поимённо. Расчёт с осиротевшим условием не запускается, пока привязка не восстановлена: сетка без нужной грани выглядела бы как успешный расчёт другой задачи.

autofix on element=2
defeature body1 maxHoleRadius=1.5
repair body1 merge heal tolerance=0.01
Ограничения. Auto-fix повышает вероятность построить сетку, но не «чинит CAD»: самопересечения поверхностей и сильно разорванные оболочки по-прежнему требуют правки в исходной системе. Удаление особенностей меняет модель — перед расчётом концентрации напряжений у скругления его нельзя «лечить» этим же способом.
Проверка. Корпус лечения: 7 из 7 сценариев пройдено, повторяемость хеша результата подтверждена. Численных кейсов верификации на лечение в каталоге нет.

2.8Импринт и разрезаниестабильно

Импринт наносит на грань линию или плоскость и рассекает грань по ней; в B-Rep появляются внутренние рёбра и новые грани с собственными номерами. Это основной способ получить на листе линии стрингеров и шпангоутов, зоны приложения нагрузки или участки закрепления, не меняя объём тела. Рёбра импринта становятся линиями сетки, поэтому стержни, посаженные на них, делят узлы с оболочкой.

Варианты команды:

  • imprint <body> points=x,y,z,… — ломаная, проецируемая на лист вдоль заданного направления или по нормали (project=);
  • imprint <body> plane point=x,y,z normal=x,y,z — сечение листа или тела плоскостью;
  • imprint <body A> <body B> — импринт двух тел друг на друга (общие следы на касающихся гранях);
  • split target=<body> plane=<name> или point= normal= — разрезание тела на независимые части.

Параметр fuzzy= задаёт допуск операции в единицах скрипта.

units mm
imprint body1 points=-10,100,0, 2010,100,0
list edges of body1
Ограничения. Импринт ломаной на криволинейную грань зависит от направления проекции: для ребра жёсткости вдоль цилиндрической обшивки направление нужно задавать явно.
Проверка. Подкреплённая B-Rep панель с импринтом 9 линий — девять последовательных импринтов, 30 граней и 49 тавровых стержней на общих узлах; прогиб защемлённой пластины против решения Тимошенко отличается на 2.55 %.

2.9Сборки из нескольких телбета

Сборка — набор тел в одном документе. Тело можно скрыть, подавить (исключить из расчёта), сдвинуть и повернуть. Пересечение тел определяется замером объёма их общей части. Касающиеся тела можно склеить в единую модель или оставить раздельными с контактом. При склейке WebCAE выравнивает топологию общих граней булевой операцией (fragment), а для реального объёмного пересечения посадки с натягом предлагает три режима: вырезать (объём отдаётся меньшему телу), разделить на части или оставить как есть (тогда материал в натяге считается дважды, о чём выводится предупреждение). Допуск отбора пар и допуск самой булевой операции задаются отдельно.

Перед расчётом проверяется связность сетки сборки: тела, которые «склеить всё» не смогло соединить (нет касания), образуют отдельные куски без закреплений, и линейный расчёт на них расходится. Такие случаи ловятся до решателя. Подробности склейки сеток — в разделе «Сетки».

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

2.10Срединные поверхностиэксперимент

Для тонкостенных деталей объёмная модель избыточна: лист толщиной 2 мм удобнее считать оболочкой. Операция «срединная поверхность» (только интерфейс, панель операций над геометрией) ищет пары почти параллельных граней, расстояние между которыми лежит в заданном диапазоне толщин, и строит между ними листовое тело. Находятся пары плоских и цилиндрических граней; области, сходящиеся в углах, замыкаются подтяжкой свободных кромок к плоскостям сопряжения. Найденная толщина пары выводится в имени листа; толщину сечения оболочки (section shell t=) нужно задать отдельно.

Ограничения. Метод покрывает плоские и цилиндрические стенки постоянной толщины. Переменная толщина, конические, сферические и свободные поверхности не обрабатываются. Узлы, где несколько срединных листов сходятся под углом, требуют проверки: незамкнутые стыки сообщаются предупреждением. Независимой сверки результата с эталоном и DSL-команды нет.
Проверка. Кейсов верификации нет; подтверждено модульными тестами на синтетических телах.

2.11Каркас, балки и оболочечные патчистабильно

Для ферм, рам и подкреплённых оболочек WebCAE строит расчётную модель напрямую, минуя твёрдое тело. Есть два способа.

Параметрический каркас frame. Узлы и стержни нумеруются с 1 в порядке создания. Стержень — балка Тимошенко с сечением из библиотеки или заданным размерами (прямоугольник, круг, труба, двутавр, швеллер, уголок, тавр, коробка); стержню можно задать иное сечение на втором конце (конус) и шарниры на концах. Оболочка задаётся патчами из четырёхугольных ячеек: плоским четырёхугольником (geom=quad), цилиндром или конусом (geom=cyl), линейчатой поверхностью между двумя ломаными (geom=ruled) или явной сеткой точек (geom=points). Узлы патча в пределах допуска совпадают с существующими, поэтому оболочка и стержни делят общие узлы. Рёбра жёсткости добавляются командой frame stiffen по линиям сетки патча.

Балки на рёбрах B-Rep. assign beam edges=… section=rect w= h= flush=outer|inner [ecc=] сажает стержни Тимошенко на выбранные рёбра листового тела (в том числе на рёбра импринта). Параметр flush прижимает ребро к внешней или внутренней поверхности обшивки, ecc смещает ось стержня по нормали. Смещение учитывается кинематически, так что эффективная жёсткость включает слагаемое теоремы Штейнера I = I_{0} + A\,e^{2} (здесь e — расстояние от оси стержня до срединной поверхности обшивки), а не только собственный момент инерции сечения.

Что получает пользователь: модель, в которой стержни и оболочки связаны общими узлами, а не жёсткими связями-приближениями. Расчёты — статика, модальный анализ, устойчивость; для модального анализа свободного тела (корпус судна, самолёт) предусмотрен режим без проверки механизма, формы с первой по шестую в нём жёсткие.

units mm
frame node at=0,0,0
frame node at=1000,0,0
frame member 1 2 section=rect w=20 h=40
frame support node=1 dofs=all
frame load node=2 force=0,0,-500
frame solve static
Ограничения. Число форм в модальном анализе ограничено платформой: до 15 в браузере и до 100 в десктопном приложении; запрос выше потолка отклоняется, а не усекается молча. Напряжение оболочки печатается в центре четырёхугольного элемента, пик у концентратора занижен. Сшивка патчей проверяется по документу командой frame probe shellcheck: число незаменённых дублей узлов и T-стыков должно быть нулём, иначе конструкция разорвана.

2.12Синхронизация с Onshapeбета

Приложение подключается к документу Onshape (авторизация OAuth 2.0), получает модель в формате STEP с указанием версии (microversion) и загружает её как обычный импорт. Повторная синхронизация заменяет импортированные тела новой версией и пытается перенести граничные условия, нагрузки, закрепления и контакты на изменённую геометрию.

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

Ограничения. Сопоставление эвристическое: если грань при правке разделилась, объединилась или заметно сместилась, соответствие может не найтись или быть выбрано неверно. После синхронизации просмотрите список записей, требующих проверки, и проверьте нагрузки на изменённых гранях. Синхронизация доступна из интерфейса; DSL-команды нет. Обратной записи в Onshape нет.
Проверка. Кейсов верификации нет; перенос покрыт модульными тестами на синтетических изменениях геометрии.

2.13Коннектор FreeCADэксперимент

Дополнение для FreeCAD добавляет команду «Analyze in WebCAE». Она экспортирует выбранные тела или все видимые тела документа в STEP и открывает их в WebCAE: в браузере или в десктопном приложении по собственной ссылке. Передача односторонняя и одноразовая.

Ограничения. Это разовая передача геометрии, а не синхронизация: после изменения модели во FreeCAD экспорт нужно повторить, граничные условия при этом не переносятся. Дополнение устанавливается копированием в каталог модулей FreeCAD (Mod); публикация в каталоге FreeCAD Addon Manager не подтверждена. Автоматического теста связки с запущенным FreeCAD нет.
Проверка. Кейсов верификации нет; проверен Python-код экспорта на заглушках и приёмная часть приложения модульными тестами.

2.14Импорт и экспорт сетокэксперимент

Готовую сетку можно взять из внешней программы и отдать наружу. Поддерживаются Abaqus (.inp), Gmsh (.msh; экспорт — формат 2.2) и Nastran (.bdf, .nas). Кроме сеток, экспортируются деформированная поверхность и изоповерхность оптимизации топологии (STL, STEP).

  • Меню «Проект» экспортирует сетку с телами (SOLID_<k>) и поверхностями (SURF_<N>, то есть surface number N) и импортирует их обратно. Координаты в файле — в СИ (метры).
  • DSL: import mesh file="model.inp" и export mesh file="out.msh" [deformed] [scale=k]. Импорт сеток в DSL читает узлы и тетраэдры, без тел и поверхностей; экспорт пишет координаты в единицах сцены (мм) без пересчёта.
import mesh file="part.inp"
export mesh file="part_out.bdf"
Ограничения. Импорт принимает только линейные тетраэдры: десятиузловые тетраэдры (C3D10, Tet10) загружаются как четырёхузловые, средние узлы отбрасываются; гексаэдры, призмы и оболочки не читаются. Файлы разных путей (меню и DSL) используют разные единицы длины. Экспорт STEP — фасетная оболочка из треугольников, а не B-Rep с аналитическими поверхностями, и годится для просмотра, а не для редактирования. Проверка взаимодействия с Abaqus, Gmsh и Nastran на сторонних программах не выполнялась.
Проверка. Круговой импорт и экспорт проверен модульными тестами внутри WebCAE; сверки с независимыми пакетами нет.

Сетка превращает B-Rep-геометрию в конечные элементы. WebCAE строит тетраэдры (tet4, tet10) для произвольных тел, гексаэдры, призмы и пирамиды там, где геометрия позволяет, четырёхугольные и треугольные элементы оболочки на листах и балочные элементы вдоль линий. Типы элементов и их формулировки описаны на странице /docs/elements; здесь — как сетка строится, чем управляется и как оценивается её качество и достаточность.

Мешинг работает в двух средах: десктопное приложение (нативный процесс мешера) и браузер (WebAssembly). Оба собраны из одного исходного кода, но на одной и той же геометрии результат может отличаться числом элементов и качеством. Эталоном считается нативный путь; веб справочный. Некоторые возможности есть только в десктопе (пограничные слои, мешинг крупных сборок без ограничений) — это сказано в подразделах.

3.1Тетраэдральный мешерстабильно

Тетраэдры строит открытый мешер Netgen 6.2 поверх геометрии OCCT. Поверхностная сетка строится на гранях B-Rep, объёмная — методом Делоне с добором продвигающимся фронтом и последующей оптимизацией формы элементов (перестановки, сглаживание); подробно метод описан в Schöberl J., NETGEN: An advancing front 2D/3D-mesh generator based on abstract rules, Computing and Visualization in Science, 1997. Сетка конформна: на общей границе двух граней узлы совпадают.

Результат построения:

  • узлы и тетраэдры первого (tet4) или второго (tet10) порядка;
  • регион (номер тела) у каждого элемента, чтобы материалы назначались по телу;
  • граничные треугольники, у каждого — номер грани B-Rep, из которой он порождён. Поэтому условия, заданные как surface number N, переживают перестроение сетки: они привязаны к грани, а не к узлам.

Пользователь задаёт размер, плавность перехода (grading), плотность по кривизне (safety), минимальный размер и порядок элемента (управление размером). Есть три профиля качества: «Черновая» (быстрая грубая сетка без оптимизации, первый порядок), «Стандартная» и «Финальная» (полная оптимизация для рабочего расчёта).

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

Построение можно прервать кнопкой «Отмена» или командой mesh cancel. Для сборки частичный результат (уже смешанные тела) сохраняется.

units mm
box dx=60 dy=30 dz=10
mesh tet size=3 order=1
Ограничения. Netgen не гарантирует качество сетки на любой геометрии: тонкие слайверы, зазоры и самопересечения в исходной модели дают слабые элементы или отказ. Результат на нативной и веб-платформе может различаться; эталон — нативный. Листовые и каркасные тела объёмной сеткой не мешатся: для них есть поверхностная сетка.
Проверка. Тетраэдральная сетка — основа почти всех кейсов каталога. Напрямую на тетраэдрах P1: Задача Ляме для толстостенного цилиндра (mesh tet size=5, 0.48 %), Продольный отклик стержня (0.03 %), Пластина с отверстием (четверть модели против полной, 1.38 %).

3.2Порядок элементов P1 и P2стабильно

Линейный тетраэдр tet4 даёт постоянные деформации в элементе и «запирается» на изгибе и в почти несжимаемых материалах. Квадратичный tet10 имеет десять узлов (четыре угла и шесть середин рёбер), деформации линейны, а ребро и грань могут быть криволинейными. На той же сетке tet10 обычно заметно точнее tet4; цена — число узлов, которое для типичной тетраэдральной сетки растёт примерно в 7–8 раз.

P2-сетка строится в два шага. Мешер строит P1-сетку, затем добавляет узлы середин рёбер и сдвигает те из них, что лежат на границе, на поверхность CAD: ребро и грань элемента получают кривизну исходной геометрии. После этого каждый элемент проверяется на положительный якобиан. Определитель отображения tet10 — точно кубический полином, поэтому его раскладывают по базису Бернштейна степени 3 на тетраэдре: если все 20 коэффициентов одного знака, якобиан положителен во всей области элемента (Johnen A., Remacle J.-F., Geuzaine C., Geometrical validity of curvilinear finite elements, J. Comput. Phys., 2013). У элементов, где условие нарушено, средние узлы выпрямляются локально, и сетка остаётся пригодной для расчёта. Критерий достаточный, не необходимый: выпрямление может сработать и там, где элемент был допустим.

Порядок задаётся глобально параметром order=1|2 команды mesh или переключателем «Линейные/Квадратичные» в панели сетки. Для гексаэдров порядок задаётся тем же переключателем: после построения hex8 серединные узлы ставятся в середину прямого ребра, а на криволинейном ребре — на поверхность примитива (hex20). Призмы и пирамиды гибридных сеток остаются первого порядка; квадратичные гибриды отключены (отказ вслух, см. гибридные зоны).

units mm
mesh tet size=4 order=2
Ограничения. Прогрессивная сетка сборки (тела мешатся по отдельности) строится линейными элементами: для P2 смешите одно тело или всю сборку единой склеенной сеткой. Валидность P2 проверяется по угловым и средним узлам геометрии, но не гарантирует положительного якобиана в каждой точке интегрирования других формулировок.

3.3Локальный порядок элементабета

Деталь можно считать на tet4, а квадратичные элементы оставить только в нужной области. Размер h и порядок p при этом остаются независимыми настройками: зона refine zone … order=2 оставляет tet10 в элементах, пересекающих сферу, плюс один слой элементов перехода, а вне зоны остаются tet4.

Чтобы поле перемещений осталось непрерывным, на общем ребре P2-элемента и соседнего tet4 середина ребра связывается с его концами уравнением связи:

u_{\text{m}} = \tfrac{1}{2}\left(u_{a} + u_{b}\right)

где u_{a}, u_{b} — перемещения угловых узлов ребра, u_{\text{m}} — перемещение его среднего узла. Связь снимает квадратичную добавку ровно на границе областей и подаётся в солвер как обычное уравнение связи.

units mm
mesh tet size=6 order=1
refine zone at=30,15,5 radius=8 size=1.5 order=2
Ограничения. Мешер строит середины рёбер на всю деталь, поэтому время мешинга и память остаются как при глобальном P2. Экономия возникает только в солвере: отброшенные середины не входят в матрицу. Селектор области — сфера; выбор по грани или по кривизне не реализован. Пустая зона (сфера мимо детали) не считается успехом, об этом сообщается.
Проверка. Покрыто модульными тестами классификации элементов и интерфейсных связей; отдельного кейса в каталоге нет.

3.4Управление размером элементастабильно

Размер элемента задаётся из нескольких источников одновременно, и итог определяет не приоритет, а минимум. В точке \mathbf{p} мешер получает

h(\mathbf{p}) = \min\left\{\, h_{\text{glob}},\; h_{\text{face}},\; \frac{R}{s},\; h_{\text{zone},k} \,\right\}, \qquad h_{\text{min}} \le h(\mathbf{p}) \le h_{\text{max}}

где h_{\text{glob}} — глобальный размер, h_{\text{face}} — размер, заданный на грани, R — локальный радиус кривизны, s — параметр плотности по кривизне (safety), h_{\text{zone},k} — размеры зон сгущения, накрывающих точку, h_{\text{min}} и h_{\text{max}} — нижний и верхний пределы размера. Следствия, которые легко принять неверно: размер на грани не «важнее» зоны (внутри зоны побеждает меньший), и ни один вход не может укрупнить результат относительно глобального размера.

Параметры:

  • глобальный размер — задаётся в миллиметрах или пресетом по характерному габариту L: «Черновая» L/10, «Стандартная» L/20, «Мелкая» L/40;
  • safety s — плотность по кривизне h \le R/s, диапазон 0.3–6, по умолчанию 1.5. Меньший s даёт более грубую сетку на скруглениях и отверстиях. Это единственный рычаг, когда размер определяет кривизна, а не ползунок: интерфейс показывает, сколько граней ограничено кривизной, и предсказывает число элементов;
  • grading — плавность перехода от мелких элементов к крупным; меньше — плавнее;
  • минимальный размер — нижний предел; 0 — автоматически (доля от максимального размера);
  • размер на теле, грани, ребре, вершине — вкладки «Размер элемента» и «Локальный размер»; в DSL — зоны с привязкой к surface number N;
  • зоны сгущения — сфера (центр, радиус, размер), refine zone at=x,y,z radius=r size=h. Для локального гексаэдрового слоя есть цилиндр, кольцо вокруг отверстия, бокс, скругление и тороидальные зоны (см. гибридные зоны);
  • сброс зон — refine clear.

Режим «Поле размеров» красит тела по действующему размеру элемента и показывает, какой источник его определил и упирается ли он в нижний предел. Из гистограммы качества можно выбрать худшие элементы и поставить локальный размер на тех гранях CAD, которых они касаются («Уточнить зону»).

units mm
mesh tet size=5 safety=1.2
refine zone at=50,20,0 radius=15 size=1.5
refine clear
Ограничения. Размер в DSL задаётся в единице скрипта: без units это метры (см. единицы). Размер на ребре и вершине реализуется как локальное сгущение вокруг них, а не как жёсткое задание длины элемента на ребре. Нижний предел размера может не дать построить заказанный размер; интерфейс сообщает об этом и называет итоговый размер.
Проверка. Кейса, проверяющего именно правило минимума, в каталоге нет; оно проверено модульными тестами. Зоны сгущения работают в кейсах Гибридная сетка: пластина с отверстием (mesh tet size=12 и локальный слой) и Субмоделирование в задаче Кирша.

3.5Пограничные слоиэксперимент

Для пристенных зон (гидродинамика, тонкие контактные слои) нужны призматические слои вдоль стенки. Слои задаются числом слоёв n, коэффициентом роста q (диапазон 1–5) и толщиной первого слоя h_{1}. Суммарная толщина — сумма геометрической прогрессии:

t = h_{1}\,\frac{q^{n}-1}{q-1}, \qquad t = n\,h_{1} \;\;(q = 1)

Интерфейс (панель «Пограничные слои») показывает эту суммарную толщину. Слои строятся Netgen на выбранных гранях; в расчётной сетке призмы разбиваются на тетраэдры. Слои задаются в интерфейсе десктопного приложения; те же параметры доступны из встроенной консоли JS.

Ограничения. Пограничные слои есть только в десктопном приложении. В браузере панель слоёв вместо призм применяет заказанную толщину первого слоя как локальный размер элемента на выбранных гранях и честно пишет об этом в заметках мешера; DSL-команда mesh с параметрами слоёв (inflate=, layers=, ratio=, first=) отказывает: изотропное сгущение нельзя выдавать за пограничный слой. Функция новая и без независимой верификации; в интерфейсе она так и помечена.
Проверка. Кейсов верификации на сами слои нет.

3.6Метрики качества сеткибета

Для тетраэдров в приложении считаются три группы величин.

Форма элемента (панель «Качество сетки»). Отношение рёбер \mathrm{ER} = \ell_{\max}/\ell_{\min} по шести рёбрам тетраэдра. Гистограмма строится по q = 1/\mathrm{ER} в десяти интервалах от 0 до 1; наведение на столбец подсвечивает элементы на холсте, клик оставляет только их.

Нормированный якобиан (SICN). В паспорте сетки поле называется SICN (signed inverse condition number), и с ним сравниваются пороги допуска. Фактически мешер считает для тетраэдра нормированный определитель рёбер, исходящих из его первой вершины:

q_{J} = \frac{\lvert \det\left[\mathbf{e}_{1}\;\mathbf{e}_{2}\;\mathbf{e}_{3}\right]\rvert}{\lVert\mathbf{e}_{1}\rVert\,\lVert\mathbf{e}_{2}\rVert\,\lVert\mathbf{e}_{3}\rVert}

Правильный тетраэдр даёт q_{J} = 1/\sqrt{2} \approx 0.71, прямоугольный угол из взаимно ортогональных рёбер даёт 1. Это не полное определение SICN из литературы (по которому правильный тетраэдр даёт 1): величина считается по одному углу и годится для сравнения сеток внутри WebCAE, но не для сопоставления с числами других пакетов. Вывернутым считается элемент, знак определителя которого отличается от преобладающего в сетке; нулевой определитель — вырожденный.

Допуск. Порог принятия q_{J,\min} \ge 0.1 применён так:

  • принята — вывернутых и вырожденных элементов нет, \min q_{J} \ge 0.1;
  • предупреждение — якобиан положителен везде, но \min q_{J} < 0.1 (слайверы): расчёт разрешён, выводится подсказка о возможной ненадёжности;
  • отклонена — есть вывернутые или вырожденные элементы либо пустая сетка: расчёт блокируется;
  • несвязные куски сетки (сборка распалась) блокируют расчёт безусловно: матрица жёсткости сингулярна.

Для гексаэдров порог тот же, мера — минимум масштабированного якобиана по всем восьми углам элемента (определение Verdict); неположительных быть не должно. Для tet10 валидность определяется по коэффициентам Бернштейна (см. порядок элементов).

Линейный hex8 запирается на изгибе: при малом числе элементов по толщине слоя прогиб получается заниженным, и интерфейс показывает такое предупреждение рядом с сеткой.

Ограничения. Порог 0.1 — вентиль на грубой мере формы, а не доказательство точности: сетка может пройти допуск и быть слишком крупной. Для суждения о точности используйте исследование сходимости. Метрика качества считается мешером и может отличаться на нативной и веб-платформе.
Проверка. Метрика проверена тестами на синтетических сетках (вывернутые, вырожденные, правильные элементы). Сопоставления с независимой реализацией SICN нет, поэтому статус осторожный.

3.7Объёмная гексаэдральная сеткабета

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

  1. Структурированные примитивы. Параллелепипед, цилиндр (топология O-grid: центральный квадратный блок и четыре полярных блока), сфера, усечённый конус, полусферы: трансфинитная интерполяция, mesh hex nx=… ny=… nz=….
  2. Протяжка. Тело определяется как призматическое («2.5D»): сечение с отверстиями протягивается по направлению; допускаются тела вращения.
  3. Декомпозиция. Тело делится на призмы, сечение каждой — четырёхугольный блок; интерфейсы согласуются, затем в каждом блоке строится структурированная гекса-сетка и узлы сшиваются.
  4. Отказ. Если ни один маршрут не дал принятой сетки, строится тетраэдральная сетка, а причина выводится кодом: молчаливой подмены нет.

Построенная гекса-сетка проходит приёмку перед использованием: объём сетки сверяется с точным объёмом тела, свободные грани должны лежать на границе B-Rep, сетка обязана быть одной связной компонентой без висячих узлов и граней, общих более чем для двух элементов, минимум масштабированного якобиана по восьми углам — не ниже порога качества (0.1). Сетка, не прошедшая приёмку, не уходит в расчёт.

В десктопном приложении дополнительно доступны внешние генераторы, если они установлены: HOHQMesh (плоские детали постоянной толщины) и блочный метод HexaBlock из SALOME. В режиме «Авто» они подключаются по цепочке «структурированная протяжка → HexaBlock → тетраэдры».

units mm
box dx=60 dy=30 dz=10
mesh hex size=5
Ограничения. Автоматическая гекса-сетка надёжна для призматических и ортогональных тел. На замере с девятью промышленными STEP-деталями декомпозиция не прошла приёмку ни на одном из размеров, поэтому для общих литых и фрезерованных деталей используйте mesh tet и локальные гекса-зоны. Из DSL после mesh hex size=… поддержана статика одного тела на принятой гекса-сетке (расчёт в скриптовом пути идёт на WebAssembly-решателе); несколько тел, локальные гекса-зоны в том же скрипте, модальный анализ, устойчивость и тепло на такой сетке не поддержаны. Команда mesh hex decompose только строит сетку и печатает отчёт. Гекса-сетка строится одним и тем же кодом в браузере и в десктопе (нативной версии мешера нет).
Проверка. Приёмка и качество — тесты на реальных телах. Численный контроль гекса-элементов — в кейсах гибридных сеток ниже.

3.8Локальные гекса-зоны и гибридные сеткибета

Когда нужен гексаэдральный слой в одном месте (кромка отверстия, шейка вала, контактная накладка), остальное тело остаётся тетраэдральным. Зона задаётся относительно выбранной грани или объёма, остальные параметры — слоёв, прогрессия, способ сопряжения.

Виды зон:

  • refine tube surface number N thickness=t — слой вдоль цилиндрической грани (кромка отверстия, шейка вала);
  • refine inflate surface number N thickness=t — слой вдоль плоской или сферической грани (контактная накладка);
  • refine box at=… dx= dy= dz= — бокс внутри тела, заполняемый структурированными гексаэдрами (с обрезкой по границе при clip=on);
  • refine sweep surface number A to surface number B — призма между двумя параллельными плоскими гранями одного тела.

Параметры слоя: layers (1–12), bias — коэффициент прогрессии толщин от стенки (1–3), elements=wedge|hex — тип элементов слоя, conform=weld|mpc — способ сопряжения.

Согласованность стыка. Билинейный след четырёхугольной грани гекса не совпадает с кусочно-линейным следом двух тетраэдров над той же гранью, поэтому простое склеивание hex8 с tet4 не проходит патч-тест. По умолчанию слой строится из призм (wedge6): призма над каждым треугольником интерфейса согласована с тетраэдрами по построению. При elements=hex переход выполняется пирамидами (pyr5): интерфейсная ячейка hex8 делится к собственному центру на пирамиды, а на гранях со стороны тетраэдров пирамиды заменяются двумя тетраэдрами с той же диагональю. Способ conform=mpc строит независимый слой и связывает его с тетраэдрами узловыми уравнениями связи.

Измеренное согласие смешанных сеток в патч-тесте (максимальная относительная ошибка перемещений): призмы со склейкой с тетраэдрами — около 10^{-14} (веб-платформа); прямая склейка hex8 с двумя tet4 — 3.1 \times 10^{-3} (нативная); переход hex8 → pyr5 → tet4 — 9 \times 10^{-15} (нативная). Числа разных платформ не смешиваются.

Для задачи Кирша (пластина с отверстием) гибридная сетка с призмами у кромки даёт ошибку максимума \sigma_{\theta} в пределах 0.1–0.9 % и среднеквадратичную ошибку по дуге отверстия 0.7–1.2 % на 1635–4473 степенях свободы. Чисто тетраэдральная сетка на 1374–12828 степенях свободы колеблется в пределах −17…+4 % по пику, а среднеквадратичная ошибка по дуге не опускается ниже 5.3 %.

units mm
refine tube surface number 12 thickness=3 layers=3 bias=1.2
refine sweep surface number 1 to surface number 2 layers=4
Ограничения. Гибридные сетки строятся из элементов первого порядка (hex8, wedge6, pyr5, tet4). Квадратичный вариант (hex20 + tet10) не открыт: расчёт на нём отказывает вслух. Поддержаны статика (линейная и геометрически нелинейная) с силами, заданными перемещениями и связями; другие виды анализа на сетке с гекса-зонами отказывают с сообщением. Стык elements=hex требует переходных пирамид; старый файл со склейкой hex8 прямо с tet4 к повторному расчёту не допускается — сетку нужно перестроить.

3.9Сетки сборок и контактных парбета

У сборки две задачи, и они противоположны. Тела, связанные неподвижно (сварка, клей, посадка с натягом), должны делить узлы на стыке — иначе матрица жёсткости распадается на несвязные блоки. Тела, которые могут расходиться или скользить (контакт), мешаются независимо, а стык обеспечивает контактный алгоритм решателя.

Склейка (bonding=1). Касающиеся тела мешатся как одна конформная модель: общие грани получают общие узлы по построению. Режимы: склеить всё, склеить выбранные группы, не склеивать (bonding=0). Для касаний, зазоров в пределах допуска и перекрытий выполняется своя булевая операция; допуск отбора пар (bondtol=) и допуск самой операции (fuzzy=) задаются раздельно. Режим стыков glue=auto|contact|full: быстрая склейка по касанию, полный поиск пересечений либо автоматический выбор. Перекрытие трактуется параметром interference=cut|split|ignore: отдать объём меньшему телу (по умолчанию), раздробить пересечение (объём точный, но осколок посадки может быть тонкой плёнкой) или оставить как есть (материал в натяге считается дважды).

Контактные пары. Тела, не склеенные между собой, мешаются каждое отдельно; узлы на контактных поверхностях не обязаны совпадать. Перед расчётом проверяется готовность интерфейса: контактные области могли схлопнуться в один регион, пар не нашлось, зазор слишком велик, либо склеенная пара не конформна. Каждый такой исход сообщается явно.

Параллельный мешинг. При раздельном мешинге тела строятся независимо и параллельно, прогресс показывается по телам, результат собирается в одну сетку. Если тело не удалось смешить в нативном режиме, оно может быть добрано встроенным веб-мешером; приложение предупреждает, что такие сетки могут немного отличаться. При склейке сборка мешится как единая модель.

Сшивка готовой сетки. Команда weld [tol=] и панель «Сшить» объединяют совпадающие узлы уже построенной сетки в пределах допуска (0 — автоматически, малая доля диагонали габарита). Это сшивка узлов, а не геометрии: полезно для оболочечных патчей, смешанных намеренно.

units mm
mesh tet size=8 bonding=1 glue=auto interference=cut
Ограничения. Склейка не мостит зазор, превышающий допуск, и не угадывает намерения: бессвязные куски сетки блокируют расчёт. Мелкие слайверы в зоне посадки с натягом при interference=split могут сорвать мешинг. Размер safety на отдельном теле действует, только когда тела мешатся по отдельности. Мешинг крупных сборок в браузере ограничен памятью вкладки, поэтому настройки там фиксированы; для тяжёлых сборок используйте десктопное приложение.
Проверка. Контакт: несовместные сетки, сохранение (интерфейсы 1:1, 2:3, 3:5, смена ведущей/ведомой поверхностей), Повреждаемость: DCB с несовместной сеткой (0.09 %). Отдельного численного кейса на склейку нет.

3.10Сетки оболочек и балокбета

Оболочки. Лист (B-Rep shell) мешится поверхностной сеткой: mesh shell size=h element=tri|quad. Треугольники строятся на каждой грани в параметрическом пространстве — ограниченная триангуляция Делоне по контуру грани с проекцией на поверхность. Четырёхугольники получаются из треугольников по схеме «1 → 3»: каждый треугольник делится на три четырёхугольника через центроид и середины рёбер. Середина ребра общая у соседей, поэтому сетка конформна на швах граней, а элементы целиком четырёхугольные при любом числе треугольников. Размер ребра четырёхугольника составляет от 0.29 до 0.5 длины ребра исходного треугольника, поэтому исходная триангуляция строится заметно крупнее.

Для граней-четырёхугольников с прямыми сторонами (коробки, пластины) параметр pattern=structured (вместе с element=quad) строит структурированную сетку трансфинитным блендингом Кунса с согласованными делениями рёбер. Если в форме есть неподходящая грань (отверстие, дуга), команда отказывает с номером грани, а не смешивает несовместимые сетки.

Балки. Балочная сетка строится вдоль выбранных линий (рёбер B-Rep): задаётся число элементов или размер; общие узлы со смежной оболочкой возникают при посадке балки на ребро (Каркас и балки). Элементы для сборки компилируются на шаге расчёта.

units mm
mesh shell size=10 element=quad
assign beam edges=3,7 section=rect w=10 h=30 flush=outer
Ограничения. Новые узлы схемы «1 → 3» лежат на хордах треугольников, а не на поверхности, поэтому на криволинейных гранях добавляется погрешность порядка h^{2}/(8R) (на плоских гранях результат точен). Схема попарного слияния треугольников в четырёхугольники, оставляющая висячие узлы, для расчёта оболочки не используется: сетка с висячими узлами разрезает оболочку по рёбрам. Листовые тела объёмной сеткой не мешатся.
Проверка. Подкреплённая B-Rep панель (4-угольная сетка листа с 49 балками на общих узлах, 2.55 %), Круглая пластина Кирхгофа–Миндлина (структурированная четырёхугольная сетка mesh shell element=quad pattern=structured, 0.09 %). Тест защемлённой пластины против решения Тимошенко на четырёхугольной сетке даёт отклонения −2.2, −0.8, −0.35 и +0.35 % на размерах 25, 12, 10 и 6 мм.

3.11Индикатор ошибки Зенкевича–Жу и адаптивное сгущениебета

Максимум напряжения не отличает реальную концентрацию (отверстие, галтель) от артефакта грубой сетки. Для этого используется индикатор ошибки Зенкевича–Жу. Конечно-элементное поле напряжений \boldsymbol{\sigma}_{h} разрывно между элементами. Восстанавливается непрерывное поле \boldsymbol{\sigma}^{*} локальным сглаживанием по патчу элементов вокруг узла, и ошибка на элементе оценивается энергетической нормой невязки:

\eta_{e}^{2} = \int_{\Omega_{e}} \left(\boldsymbol{\sigma}^{*}-\boldsymbol{\sigma}_{h}\right)^{\mathsf T}\mathbf{C}^{-1}\left(\boldsymbol{\sigma}^{*}-\boldsymbol{\sigma}_{h}\right)\mathrm{d}\Omega, \qquad \eta^{2} = \sum_{e}\eta_{e}^{2}

где \mathbf{C} — матрица упругости. Относительная ошибка модели \eta_{\text{rel}} = \eta \,/\, \sqrt{\lVert\boldsymbol{\sigma}^{*}\rVert_{E}^{2}+\eta^{2}}. Для tet10 восстановление выполняется по суперсходящимся точкам Гаусса методом SPR (Zienkiewicz O.C., Zhu J.Z., The superconvergent patch recovery and a posteriori error estimates, Int. J. Numer. Meth. Eng., 1992); интеграл по элементу берётся точно, без квадратурной погрешности. Для tet4 и смешанных сеток используется усреднение по узлам, у которого точность ниже.

Команда hotspots по индикатору и полю напряжений находит очаги и их размеры, команда refine adaptive замыкает цикл: расчёт → очаги → зоны сгущения в очагах → перестроение сетки → расчёт. Цикл останавливается, когда выполнено одно из условий: индекс сходимости сетки (GCI, см. исследование сходимости) не выше цели, диагностирована сингулярность, относительная ошибка \eta_{\text{rel}} не выше заданной, исчерпано число проходов.

Параметры refine adaptive: passes — число проходов от 1 до 8 (по умолчанию 3); gci — целевая полоса GCI в процентах (по умолчанию 5); tol — целевая относительная ошибка ZZ в процентах; refine — во сколько раз уменьшать размер элемента в очаге на проходе (по умолчанию 1.8); minsize — нижний предел размера; grading, max_hotspots, at=, radius= — плавность перехода, число очагов и явная область измерения. После выполнения доступны замеры adaptive_passes, adaptive_verdict, adaptive_gci_percent, adaptive_richardson_peak, adaptive_zz_error_percent.

units mm
solve
refine adaptive passes=3 gci=5 tol=2 refine=1.6 minsize=0.5
probe adaptive_verdict

Субмоделирование (submodel at=… box=… size=… order=2) продолжает ту же идею: вокруг концентратора вырезается подобласть, мешится мелко (в том числе квадратичными tet10), а на секущие границы переносятся перемещения глобальной грубой модели по принципу Сен-Венана (метод граничной интерполяции перемещений). Перемещения узлов секущих границ, включая средние, задаются неоднородным условием Дирихле через уравнения связи.

Ограничения. Это не поэлементное h-адаптирование: сетка перестраивается заново с локальными зонами размера в очагах. Требуется решённая статическая тетраэдральная модель с полем напряжений Мизеса; гекса-сетки, оболочки и каркасы этим путём не обрабатываются и отказывают. Индикатор точен для tet10 с SPR (на консоли с известным решением индекс эффективности \theta = \eta/e_{\text{exact}} сходится к 1.00: 1.23 → 1.07 → 1.002 на трёх уровнях сетки); на tet4 индикатор грубее. Сечение секущей границы субмодели должно лежать вдали от концентратора (порядка 2–3 радиусов отверстия), иначе принцип Сен-Венана не оправдан.
Проверка. Индикатор проверен на консоли с точным решением. Кейс Субмоделирование в задаче Кирша проверяет submodel и refine adaptive в одной постановке: грубая P1-сетка (h = 6 мм) занижает пик на 41.3 %, итог после субмоделирования с локальным tet10 отличается от K_t = 3.08 на −3.57 %. Один кейс на две функции, поэтому статус осторожный.

3.12Исследование сходимости по сеткебета

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

Метрика ряда — максимум поля внутри сферы вокруг очага предыдущей итерации, а не глобальный максимум: на разных сетках глобальный максимум может стоять в разных местах модели (у отверстия на одной, у заделки на другой), и тогда сравниваются разные точки. Характерный размер элемента берётся из самой сетки в сфере как h = \overline{\Delta V_{e}}^{\,1/3} (Celik I.B. et al., Procedure for estimation and reporting of uncertainty due to discretization in CFD applications, J. Fluids Eng., 2008), а не из заказанного размера: мешер выдаёт не тот размер, который просили.

Для трёх последних сеток с размерами h_{1} > h_{2} > h_{3} и значениями f_{1}, f_{2}, f_{3}:

r_{21} = \frac{h_{1}}{h_{2}},\quad r_{32} = \frac{h_{2}}{h_{3}},\quad \varepsilon_{21} = f_{2}-f_{1},\quad \varepsilon_{32} = f_{3}-f_{2}
p = \frac{\ln\left\lvert\varepsilon_{21}/\varepsilon_{32}\right\rvert}{\ln r_{\text{eff}}}, \qquad r_{\text{eff}} = \sqrt{r_{21}\,r_{32}}
f_{\text{ext}} = f_{3} + \frac{\varepsilon_{32}}{r_{32}^{\,p}-1}, \qquad \mathrm{GCI} = F_{s}\,\frac{\lvert\varepsilon_{32}/f_{3}\rvert}{r_{32}^{\,p}-1}, \quad F_{s}=1.25

Здесь p — наблюдаемый порядок сходимости, f_{\text{ext}} — экстраполяция Ричардсона на бесконечно мелкую сетку, GCI — индекс сходимости сетки по Роучу (ASME V&V 20), полоса неопределённости равна \mathrm{GCI}\cdot\lvert f_{3}\rvert. Порядок p считается знаковым (у Celik стоит модуль всего выражения): знак p и есть диагноз расходимости. Для неравных r_{21}, r_{32} берётся среднее геометрическое r_{\text{eff}}, а не итерационная формула Celik.

Вердикт по ряду:

  • сошлось — GCI не выше цели (по умолчанию 5 %), результат записывается как f_{\text{ext}} \pm полоса;
  • продолжайте измельчать — ряд сходится, но полоса ещё широкая; то же при знакопеременных приращениях (ряд качается вокруг предела, экстраполяция недостоверна);
  • вероятно сингулярность — p \le 0, приращения не убывают: пик растёт с измельчением. Это типично для острого входящего угла (напряжение растёт как h^{-\lambda}, для угла 270° \lambda \approx 0.456), точечной силы или жёсткой заделки по ребру. Сетка не поможет — добавьте скругление или смените постановку;
  • мало данных — меньше трёх сеток; некорректно — размер не убывает, пик нулевой или нечисловой, либо сетка между итерациями не менялась.

Молчаливой остановки по лимиту итераций нет: вердикт всегда один из перечисленных.

Ограничения. Оценка Ричардсона предполагает монотонную сходимость в асимптотическом режиме; на грубых сетках она недостоверна. Отношение h_{1}/h_{2} неточно известно, поэтому оценка порядка смещена; вердикт использует для этого r_{\text{eff}}. Сходимость величины, вычисленной по узловым напряжениям, не заменяет проверки интегральных величин (реакций, энергии). Для сингулярных задач (острый угол) результат «не сошлось» — правильный ответ, а не дефект метода.
Проверка. На пластине с отверстием последовательные уточнения зоны дали ряд 2.27 → 2.63 → 2.89 МПа с убывающими приращениями; оценка порядка p \approx 0.48, вердикт «сходится, полоса ещё широкая», аналитический предел K_t \approx 3 при этом не превышен. Алгоритм GCI входит в цикл кейса Субмоделирование в задаче Кирша; отдельного кейса на сам алгоритм нет.

4Модели материалов

↑ К оглавлению

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

Соглашения. Растяжение положительно. Напряжения и деформации в законах записаны в порядке Фойгта [xx,\,yy,\,zz,\,xy,\,yz,\,zx]; сдвиговые деформации инженерные (\gamma_{ij} = 2\varepsilon_{ij}), сдвиговые напряжения тензорные (\tau_{ij} = \sigma_{ij}). На границе решателя всё в СИ (Па, К, кг/м³, с); в интерфейсе поля ввода принимают МПа, ГПа, psi, °C и пересчитывают в СИ при вводе. В DSL напряжения и модули задаются в паскалях, температуры пластичности — в кельвинах.

МодельАнализСтатус
Изотропная упругостьвсе линейные и нелинейные видыстабильно
3D-ортотропия с ориентациейлинейная статика, тетраэдрыбета
Слоистая оболочкастатика, модальный, устойчивость, тепловая нагрузкастабильно
Пластичность J2нелинейная статика солидов (десктоп), явная динамикастабильно
Джонсон–Кукявная динамика; в статике без скорости и температурыстабильно
Нео-Гукнелинейная статика солидовстабильно
Критерии разрушения материалаявная динамика (эрозия)бета
Критерии прочности по упругому решениюпостпроцессорбета
Муни–Ривлин, Йео, Арруда–Бойс, Огденядро; в расчёт тела не подключеныэкспериментально
F = Fe·Fp, Нортон–Бейли, Перзина, Прони, Друкер–Прагер, GTNядро; в расчёт тела не подключеныэкспериментально

4.1Линейно-упругий изотропный материалстабильно

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

Закон Гука в форме Фойгта:

\boldsymbol\sigma = \mathbf{C}\,\boldsymbol\varepsilon,\qquad \mathbf{C} = \begin{bmatrix} \lambda+2\mu & \lambda & \lambda & & & \\ \lambda & \lambda+2\mu & \lambda & & & \\ \lambda & \lambda & \lambda+2\mu & & & \\ & & & \mu & & \\ & & & & \mu & \\ & & & & & \mu \end{bmatrix}
\lambda = \frac{E\nu}{(1+\nu)(1-2\nu)},\qquad \mu = \frac{E}{2(1+\nu)},\qquad \kappa = \frac{E}{3(1-2\nu)}

Блок \mu на диагонали соответствует инженерным сдвигам: \tau_{xy} = \mu\gamma_{xy}. Допустимо -1 < \nu < 0.5. При \nu \to 0.5 матрица \mathbf{C} вырождается по объёмной части, и линейные тетраэдры запираются; для почти несжимаемых материалов берите элементы второго порядка (см. элементы).

Пользователь задаёт модуль Юнга E, коэффициент Пуассона \nu, плотность \rho (см. следующий подраздел). Результат — перемещения, деформации, напряжения и производные величины (эквивалентные по Мизесу, главные), которые разбирает раздел линейных анализов.

Один материал назначается телу целиком. Для сборки из нескольких тел у каждого тела свой материал, в том числе разные E, \nu, \rho на стыке тел.

Ограничения. Закон изотропный, линейный и не зависит от температуры, скорости и истории: таблиц E(T) и \nu(T) нет. Если рабочая температура далека от комнатной, задайте E при ней.
Проверка. Одноосное растяжение стали и алюминия (сталь, алюминий), толстостенный цилиндр Ляме (Ляме), набор NAFEMS по линейной упругости (LE1, LE10).
material E=200e9 nu=0.3 density=7850

4.2Плотность, тепловое расширение и температурные зависимостистабильно

Плотность \rho (кг/м³) нужна модальному анализу, динамике, гравитации и ускорению; без неё запрос с массой отказывает, а не берёт умолчание. Для оболочки и ламината масса берётся из плотности материала или слоёв.

Тепловое расширение задаётся коэффициентом линейного расширения \alpha (1/К). Тепловая деформация изотропна, напряжение определяется механической частью:

\boldsymbol\varepsilon_{\mathrm{th}} = \alpha\,\Delta T\,[1,\,1,\,1,\,0,\,0,\,0]^{T},\qquad \boldsymbol\sigma = \mathbf{C}\,(\boldsymbol\varepsilon - \boldsymbol\varepsilon_{\mathrm{th}})

Тепловые нагрузки и связанные задачи описывает раздел тепла и мультифизики. Здесь важно, что \alpha постоянен: зависимости \alpha(T) нет. Температурные зависимости в моделях материалов есть в трёх местах: таблица теплопроводности \kappa(T) (kappa_table="T:k,…", температура в °C, между узлами линейно, вне таблицы — константа крайнего значения), температурный множитель предела текучести в модели Джонсона–Кука и тепловое расширение слоёв ламината. Модуль Юнга от температуры не зависит.

Ограничения. Слой ламината без \alpha_1, \alpha_2 при \Delta T \ne 0 отказывает с названием материала: молчаливое \alpha = 0 исключено. Коэффициенты \alpha_1, \alpha_2, \alpha_3 ортотропного тела хранятся в материале, но в статике 3D-ортотропного тела тепловая деформация не применяется.
Проверка. Защемлённый стержень при нагреве: напряжение -E\alpha\Delta T (статика, динамика).

4.3Библиотека материаловстабильно

Встроенная библиотека — единая таблица пресетов; ею пользуются карточка материала в интерфейсе, DSL и программный интерфейс. Пресет несёт E, \nu, \rho, теплопроводность, теплоёмкость, \alpha и предел текучести для коэффициента запаса.

  • Стали: общая конструкционная (200 ГПа, 0.3, 7850 кг/м³), 20, 40Х, 09Г2С, нержавеющая 304.
  • Алюминий: общий (70 ГПа, 0.33), Д16Т, 6061.
  • Титан: общий (116 ГПа, 0.32) и ВТ6; медь (120 ГПа, 0.34); пластики ABS и PA6.
  • Резина как нео-гуковский материал: \mu = 3.36 МПа, K = 166.7 МПа.
  • Пластичные пресеты: сталь S355 (J2, \sigma_y = 355 МПа), алюминий 6061-T6 (J2), медь OFHC и сталь 4340 (Джонсон–Кук).
  • Среды для CFD: воздух, вода, моторное масло, керосин.

Значения справочные, групповые: теплоёмкость и пределы для конкретной марки возьмите из своего сертификата. Предел текучести в обычном пресете нужен только коэффициенту запаса и не включает пластичность; пластичность появляется у пресетов с явным законом и у материалов, где вы её задали.

Пользователь добавляет свои материалы в библиотеку проекта, правит их и назначает телам. Для слоистых оболочек есть отдельная библиотека ортотропных материалов слоя (встроенный однонаправленный пластик 140/10 ГПа).

В DSL пресет подставляет базу, а явные параметры её переопределяют:

material steel E=210e9
Ограничения. Таблица групповая, пересчёта по марке и температуре нет. Пресет резины задан через \mu и K и пересчитывается в E, \nu для расчётного ядра.

4.43D-ортотропный материал и ориентациябета

Для материалов, у которых свойства различаются по трём осям: однонаправленные и тканые композиты, древесина, прокат. Закон задаётся девятью независимыми константами E_1, E_2, E_3, \nu_{12}, \nu_{23}, \nu_{13}, G_{12}, G_{23}, G_{13} в осях материала и ориентацией осей в каждом элементе.

Матрица податливости в порядке Фойгта, сдвиги инженерные:

\mathbf{S} = \begin{bmatrix} \frac{1}{E_1} & -\frac{\nu_{12}}{E_1} & -\frac{\nu_{13}}{E_1} & & & \\ -\frac{\nu_{12}}{E_1} & \frac{1}{E_2} & -\frac{\nu_{23}}{E_2} & & & \\ -\frac{\nu_{13}}{E_1} & -\frac{\nu_{23}}{E_2} & \frac{1}{E_3} & & & \\ & & & \frac{1}{G_{12}} & & \\ & & & & \frac{1}{G_{23}} & \\ & & & & & \frac{1}{G_{13}} \end{bmatrix},\qquad \mathbf{C} = \mathbf{S}^{-1}

Коэффициенты Пуассона определены как \nu_{ij} = -\varepsilon_j/\varepsilon_i при одноосном \sigma_i; симметрия задаёт \nu_{ji} = \nu_{ij}E_j/E_i. Положительная определённость проверяется до расчёта: E_i > 0, G_{ij} > 0, 1 - \nu_{ij}\nu_{ji} > 0 для трёх пар и

\Delta = 1 - \nu_{12}\nu_{21} - \nu_{23}\nu_{32} - \nu_{13}\nu_{31} - 2\,\nu_{12}\nu_{23}\nu_{31} > 0

Непроходящий набор отказывает с названием нарушенного условия.

Ориентация. В центроиде каждого элемента строится правая тройка (\mathbf{e}_1, \mathbf{e}_2, \mathbf{e}_3), строки матрицы \mathbf{Q} — её векторы в глобальных осях. Матрица жёсткости элемента получается поворотом Бонда, а напряжения возвращаются в оси материала:

\mathbf{C}_{g} = \mathbf{T}_{\varepsilon}^{T}\,\mathbf{C}\,\mathbf{T}_{\varepsilon},\qquad \boldsymbol\varepsilon_{l} = \mathbf{T}_{\varepsilon}\,\boldsymbol\varepsilon_{g},\qquad \boldsymbol\sigma_{l} = \mathbf{T}_{\sigma}\,\boldsymbol\sigma_{g},\qquad \mathbf{T}_{\sigma}^{-1} = \mathbf{T}_{\varepsilon}^{T}

Режимы задания тройки:

  • surface — ось \mathbf{e}_3 равна внешней нормали ближайшего к центроиду треугольника опорной грани; \mathbf{e}_1 — проекция заданного направления axis на касательную плоскость, \mathbf{e}_2 = \mathbf{e}_3\times\mathbf{e}_1. Подходит для слоистых деталей по криволинейной поверхности.
  • cartesian — единая тройка: \mathbf{e}_3 вдоль normal, \mathbf{e}_1 — проекция axis.
  • cylindrical — \mathbf{e}_3 радиально от оси цилиндра через origin.
  • spherical — \mathbf{e}_3 радиально от точки origin.

Угол angle поворачивает \mathbf{e}_1, \mathbf{e}_2 вокруг \mathbf{e}_3: \mathbf{e}_1' = \cos\theta\,\mathbf{e}_1 + \sin\theta\,\mathbf{e}_2. Если проекция заданной оси вырождена, берётся запасное направление; число таких элементов фиксируется в результате. Тройки можно показать на модели.

Решение отдельное от общей изотропной сборки: для тетраэдров TET4 и TET10 жёсткость собирается по повёрнутым матрицам, система решается методом сопряжённых градиентов с блочным предобуславливателем по узлам, связи (CE, жёсткие области) вводятся штрафом. Результаты: перемещения, напряжения в глобальных осях и в осях материала (localStressXX…XZ, зонд ortho_local_s11_max и аналоги), поле троек.

Ограничения. Только линейная статика на тетраэдрах (TET4, TET10); гексаэдры в расчёт не принимаются. Один ортотропный материал на модель. Тепловая деформация анизотропии не применяется (см. выше); модальный анализ и нелинейные расчёты ортотропного тела не подключены. Смешанный порядок элементов по телам отказывает.
Проверка. Внеосевое растяжение ортотропного бруса, угол армирования 30°, решение Лехницкого: отклонение 0.01 %. Это единственный независимый кейс; расчёт в одной постановке, на одной платформе.
material E1=140e9 E2=10e9 E3=10e9 nu12=0.3 nu23=0.4 nu13=0.3 G12=5e9 G23=3.5e9 G13=5e9 density=1600
orientation surface number 3 axis=1,0,0 angle=30

В интерфейсе ортотропный закон выбирается в карточке материала («Ортотропная 3D», девять констант, опорная поверхность, направление, угол); режимы цилиндрический и сферический доступны из DSL.

4.5Слоистые оболочки: теория ламинатовстабильно

Слоистая оболочка заменяет набор слоёв одним осреднённым по толщине законом — пакетом жёсткостей. Подходит для композитных панелей и сэндвичей, где толщина мала по сравнению с размерами. Слои задаются снизу вверх (от -z_e к +z_e) своим ортотропным материалом, толщиной и углом.

Слой в осях материала, плоское напряжённое состояние:

Q_{11} = \frac{E_1}{1-\nu_{12}\nu_{21}},\quad Q_{22} = \frac{E_2}{1-\nu_{12}\nu_{21}},\quad Q_{12} = \frac{\nu_{12}E_2}{1-\nu_{12}\nu_{21}},\quad Q_{66} = G_{12},\quad \nu_{21} = \nu_{12}\frac{E_2}{E_1}

Поворот на угол \theta от оси x_e элемента против часовой стрелки вокруг +z_e (c = \cos\theta, s = \sin\theta):

\begin{aligned} \bar Q_{11} &= Q_{11}c^4 + 2(Q_{12}+2Q_{66})c^2s^2 + Q_{22}s^4, \\ \bar Q_{22} &= Q_{11}s^4 + 2(Q_{12}+2Q_{66})c^2s^2 + Q_{22}c^4, \\ \bar Q_{12} &= (Q_{11}+Q_{22}-4Q_{66})c^2s^2 + Q_{12}(c^4+s^4), \\ \bar Q_{66} &= (Q_{11}+Q_{22}-2Q_{12}-2Q_{66})c^2s^2 + Q_{66}(c^4+s^4), \\ \bar Q_{16} &= (Q_{11}-Q_{12}-2Q_{66})c^3s - (Q_{22}-Q_{12}-2Q_{66})cs^3, \\ \bar Q_{26} &= (Q_{11}-Q_{12}-2Q_{66})cs^3 - (Q_{22}-Q_{12}-2Q_{66})c^3s \end{aligned}

Члены \bar Q_{16}, \bar Q_{26} пропорциональны \sin 2\theta и меняют знак вместе с углом; на 0^\circ и 90^\circ они равны нулю, поэтому проверки только на этих углах знак и сдвиговые члены не ловят. Корпус проверок продукта прогоняет \pm15^\circ, \pm30^\circ, \pm45^\circ, \pm60^\circ, \pm75^\circ и несимметричные пакеты.

Для слоя k между z_{k-1} и z_k (от отсчётной поверхности) пакет жёсткостей на единицу ширины:

A_{ij} = \sum_k \bar Q_{ij}^{(k)}(z_k - z_{k-1}),\quad B_{ij} = \frac12\sum_k \bar Q_{ij}^{(k)}(z_k^2 - z_{k-1}^2),\quad D_{ij} = \frac13\sum_k \bar Q_{ij}^{(k)}(z_k^3 - z_{k-1}^3)
\mathbf{N} = \mathbf{A}\boldsymbol\varepsilon_0 + \mathbf{B}\boldsymbol\kappa,\qquad \mathbf{M} = \mathbf{B}\boldsymbol\varepsilon_0 + \mathbf{D}\boldsymbol\kappa,\qquad \mathbf{Q} = \mathbf{A}_s\boldsymbol\gamma,\qquad \mathbf{A}_s = \sum_k k_s^{(k)}\,\bar{\mathbf{Q}}_s^{(k)}\,t_k

Здесь \boldsymbol\varepsilon_0 = [\varepsilon_{xx}, \varepsilon_{yy}, \gamma_{xy}], \boldsymbol\kappa = [\kappa_{xx}, \kappa_{yy}, \kappa_{xy}] с инженерной кривизной кручения, \varepsilon(z) = \varepsilon_0 + z\kappa. Матрица связи \mathbf{B} ненулевая у несимметричных пакетов; растяжение тогда вызывает изгиб. Поперечный сдвиг слоя \bar{\mathbf{Q}}_s строится из G_{13}, G_{23} тем же поворотом:

\bar Q_{s,xz} = G_{13}c^2 + G_{23}s^2,\quad \bar Q_{s,yz} = G_{13}s^2 + G_{23}c^2,\quad \bar Q_{s,xz\,yz} = (G_{13}-G_{23})\,cs

Поправка на неравномерность сдвига: по умолчанию k_s = 5/6 на все слои. Вариант shear=energetic берёт k_s^{(k)} = \min\bigl(1,\ \tfrac56\,G_{\max}/G_k\bigr) по слоям (мягкий сердечник сэндвича приближает k_s к 1); это инженерная эвристика, не вывод из условий равновесия.

Смещение отсчётной поверхности на z_0 от срединной плоскости (offset=bottom|middle|top|number) пересчитывает пакет без повторной сборки: \mathbf{B}' = \mathbf{B} + z_0\mathbf{A}, \mathbf{D}' = \mathbf{D} + 2z_0\mathbf{B} + z_0^2\mathbf{A}.

Элемент — четырёхузловой MITC4 (Dvorkin, Bathe 1984; Bathe, Dvorkin 1985): сдвиг по ковариантным деформациям в точках связи, мембрана и изгиб на 2\times 2 точках Гаусса, вращение вокруг нормали стабилизировано штрафом Хьюза–Брецци с мембранной сдвиговой жёсткостью A_{66}. Пакет (\mathbf{A},\mathbf{B},\mathbf{D},\mathbf{A}_s) входит в элемент напрямую, так что изотропная оболочка — частный случай пакета (\mathbf{A} = Et/(1-\nu^2)\,\mathbf{C}, \mathbf{D} = Et^3/(12(1-\nu^2))\,\mathbf{C}, \mathbf{B}=0).

Ось x_e, от которой отсчитываются углы слоёв, задаётся проекцией опорной оси на оболочку (axis=X|Y|Z), системой координат (cs=) и поворотом phi=. Если опорная ось почти нормальна к элементу, берётся запасная ось, число таких элементов сообщается.

Тепловая нагрузка оболочки входит через усилия \mathbf{N}_T = \int \bar{\mathbf{Q}}\,\bar{\boldsymbol\alpha}\,\Delta T\,dz и моменты \mathbf{M}_T; напряжения слоя считаются по механической деформации \varepsilon - \bar\alpha\Delta T(z). Для слоя нужны \alpha_1, \alpha_2 (вдоль и поперёк волокна).

Что задаёт пользователь: ортотропный материал слоя (E1 E2 nu12 G12 G13 G23, плотность, прочности, \alpha_1, \alpha_2) и раскладку (plies="name:thickness:angle,…", symmetric, repeat, offset, shear). Толщины слоёв задаются в единицах длины скрипта, модули в паскалях. В интерфейсе — редактор раскладки слоёв в сечениях оболочек. Постановка одна и та же на обеих платформах: в десктопе (эталон) оболочки считаются нативным путём, в браузере — веб-сборкой.

ortho name=ud E1=140e9 E2=10e9 nu12=0.3 G12=5e9 G13=5e9 G23=3.5e9
section shell laminate plies="ud:0.25:45,ud:0.25:-45,ud:0.25:0" symmetric=true
Ограничения. Только четырёхугольные оболочки (mesh shell element=quad): у треугольного элемента нет связи мембраны с изгибом. Не поддержаны: геометрическая нелинейность многослойного пакета, неявная динамика (масса ламината к ней не подключена, расчёт не подменяется изотропной оболочкой). Теория первого порядка: линейный по толщине профиль перемещения, постоянный по толщине сдвиг. Относительно трёхмерной упругости она занижает прогиб толстых пластин: -10 \ldots -12\,\% при отношении сторона/толщина 4–10, -4\ldots-5\,\% при 20, -0.2\,\% при 100 (перекрёстный пакет, эталон — трёхмерное решение Пагано, воспроизведённое независимым кодом).
Проверка. Каталог верификации по ламинатам кейсов не содержит; проверки в наборе разработки. Сборка \mathbf{A},\mathbf{B},\mathbf{D} и напряжений слоёв сверена с независимым эталонным скриптом на 9 пакетах (допуск 10^{-9} отн.), углы \pm15^\circ\ldots\pm75^\circ — на 27 пакетах. Элемент против решения Ритца для той же теории первого порядка: до 0.7 % в 16 случаях; частоты и критическая нагрузка шарнирно опёртых пластин — до 3 % на сетке 18×12 (на сетке 12×8 высшая из трёх частот одного пакета давала 6.8 %, на 18×12 — 2.6 %). Консоль из однонаправленного пластика против балочной формулы с d_{11} — в пределах 3 %. Прогиб консоли 0^\circ и 90^\circ следует за E_1 и E_2. Числа этих проверок в основном сняты на веб-сборке; на нативном пути повторён блок модальных и устойчивостных проверок (до 4.6 % на сетке 12×8), остальное нативно не пересчитывалось.

4.6Критерии отказа слоя и межслойные напряжениябета

Постпроцессор по слоям: по обобщённым деформациям оболочки в элементе (или их узловому восстановлению SPR) считаются напряжения слоя в осях материала (\sigma_1, \sigma_2, \tau_{12}) в точках низ, середина, верх слоя, затем индексы отказа. Для критериев нужны прочности слоя X_t, X_c, Y_t, Y_c, S в ortho; без любой из них критерий отказывает с именем поля.

  • Максимальных напряжений: FI = \max\bigl(\lvert\sigma_1\rvert/X,\ \lvert\sigma_2\rvert/Y,\ \lvert\tau_{12}\rvert/S\bigr), X и Y выбираются по знаку напряжения.
  • Цай–Хилл: FI = (\sigma_1/X)^2 - \sigma_1\sigma_2/X^2 + (\sigma_2/Y)^2 + (\tau_{12}/S)^2.
  • Цай–Ву: FI = F_1\sigma_1 + F_2\sigma_2 + F_{11}\sigma_1^2 + F_{22}\sigma_2^2 + F_{66}\tau_{12}^2 + 2F_{12}\sigma_1\sigma_2, F_1 = 1/X_t - 1/X_c, F_{11} = 1/(X_tX_c), F_{12} = -\tfrac12\sqrt{F_{11}F_{22}}.
  • Хашин (плоский, четыре моды): разрыв волокна при растяжении (\sigma_1/X_t)^2 + (\tau_{12}/S)^2, потеря устойчивости волокна (\sigma_1/X_c)^2, растрескивание матрицы при растяжении (\sigma_2/Y_t)^2 + (\tau_{12}/S)^2, при сжатии (\sigma_2/2S_{23})^2 + \bigl[(Y_c/2S_{23})^2 - 1\bigr]\sigma_2/Y_c + (\tau_{12}/S)^2; индекс слоя — максимум по модам.
  • Расслоение: FI = (\tau_{13}/S_{13})^2 + (\tau_{23}/S_{23})^2 по межслойному сдвигу.

Запас прочности RF — множитель нагрузки, при котором FI = 1: для линейного критерия 1/FI, для квадратичных 1/\sqrt{FI}, для Цай–Ву и «матрица–сжатие» Хашина — положительный корень уравнения a\lambda^2 + b\lambda = 1. Зонды DSL: laminate_fi_<criterion>, laminate_rf_<criterion>, laminate_s1, laminate_s2, laminate_t12, laminate_t13, laminate_t23 с суффиксом _plyN для слоя N (1 — нижний).

Межслойные напряжения по теории первого порядка: \tau_{13}, \tau_{23} постоянны по толщине слоя. Опция interlaminar=equilibrium восстанавливает \tau_{xz}, \tau_{yz} интегрированием уравнений равновесия по толщине от свободной нижней грани (градиенты берутся по соседним элементам сетки), \sigma_{zz} — оценка по тому же принципу.

Ограничения. Первый отказ слоя, без деградации жёсткости и развития повреждения. Восстановленные по равновесию \tau и \sigma_{zz} — оценки: \sigma_{zz} с трёхмерным решением не сверено, не используйте её как количественный критерий; для сетки из одного элемента они недоступны. Прочности вводятся пользователем и не проверяются на согласованность. Отдельный прототип критериев Пака в продукт не подключён.
Проверка. Индексы отказа и запасы сверены с независимым эталонным скриптом, включая запас Цай–Ву как корень квадратного уравнения. Кейсов верификации в каталоге нет.

4.7Пластичность J2стабильно

Модель Губера–Мизеса для металлов: упругая работа до предела текучести, затем пластическое течение с упрочнением. Применяется в нелинейных расчётах объёмных тел (малые деформации или геометрическая нелинейность) и в явной динамике. Общая схема нелинейных итераций описана в разделе о нелинейности материала.

Поверхность текучести с тензором обратных напряжений \boldsymbol\alpha:

f = q - R,\qquad q = \sqrt{\tfrac32}\,\lVert\boldsymbol\xi\rVert,\qquad \boldsymbol\xi = \mathbf{s} - \boldsymbol\alpha

где \mathbf{s} — девиатор напряжения. Интегрирование — радиальное возвращение (Simo, Hughes, Computational Inelasticity, 1998, гл. 3; Wilkins, 1964). Пробный упругий шаг \mathbf{s}^{\mathrm{tr}} = 2\mu\,\mathrm{dev}(\boldsymbol\varepsilon - \boldsymbol\varepsilon_p); если f^{\mathrm{tr}} \le 0, шаг упругий. Иначе, с нормалью \mathbf{n} = \boldsymbol\xi^{\mathrm{tr}}/\lVert\boldsymbol\xi^{\mathrm{tr}}\rVert:

\mathbf{s}_{n+1} = \mathbf{s}^{\mathrm{tr}} - 2\mu\,\Delta\gamma\,\mathbf{n},\qquad \Delta\gamma = \sqrt{\tfrac32}\,\Delta p,\qquad g(\Delta p) = f^{\mathrm{tr}} - 3\mu\,\Delta p - \bigl[\sigma_c(p_n+\Delta p) - \sigma_c(p_n)\bigr] = 0

Скалярное уравнение для приращения эквивалентной пластической деформации \Delta p строго монотонно, корень единственный: для линейного упрочнения \Delta p = f^{\mathrm{tr}}/(3\mu + H), для кривой — безопасный Ньютон с бисекцией на скобке [0,\ f^{\mathrm{tr}}/3\mu]. Касательная — алгоритмическая (согласованная с интегратором), симметричная:

\mathbb{D}_{ep} = \kappa\,\mathbf{1}\otimes\mathbf{1} + 2\mu\theta\bigl(\mathbb{I} - \tfrac13\mathbf{1}\otimes\mathbf{1}\bigr) - 2\mu\Bigl[\frac{3\mu}{3\mu + \hat H} - (1-\theta)\Bigr]\mathbf{n}\otimes\mathbf{n},\qquad \theta = 1 - \frac{3\mu\,\Delta p}{q^{\mathrm{tr}}}

Упрочнение. Кривая \sigma_c(p) — диаграмма односного монотонного нагружения:

  • идеальная пластичность: \sigma_c = \sigma_{y0};
  • линейное по касательному модулю E_t: \sigma_c = \sigma_{y0} + Hp, H = E E_t/(E - E_t);
  • мультилинейное: таблица (p_i, \sigma_i), первая точка p_0 = 0 задаёт \sigma_{y0}, p строго возрастает, \sigma не убывает; за последней точкой напряжение постоянно (идеальная пластичность), а не продолжается по наклону.

Доля кинематического упрочнения \beta \in [0, 1] (0 — изотропное, 1 — линейное кинематическое по Прагеру) смешивает механизмы: радиус R = \sigma_{y0} + (1-\beta)\bigl(\sigma_c(p) - \sigma_{y0}\bigr), сдвиг центра \Delta\boldsymbol\alpha = \sqrt{2/3}\,\beta\,\bigl[\sigma_c(p_{n+1}) - \sigma_c(p_n)\bigr]\,\mathbf{n}. Односная диаграмма от \beta не зависит, а обратная текучесть (эффект Баушингера) зависит. Разупрочнение запрещено (H \ge 0).

Кинематика нелинейной статики: в режиме геометрической нелинейности закон принимает деформацию Грина–Лагранжа и возвращает второй тензор Пиолы–Кирхгофа (пластичность аддитивна в этой паре: малые деформации, большие повороты); вывод — напряжение Коши \sigma = \mathbf{F}\mathbf{S}\mathbf{F}^T/J. В режиме «только материал» \varepsilon = \mathrm{sym}\nabla\mathbf{u}. История нагружения (loadpath="1,0") даёт остаточные деформации после разгрузки и циклы.

Что задаёт пользователь: E, \nu (упругая часть), \sigma_{y0} (yield=, Па), упрочнение (hardening=linear|multilinear, et=, curve="p:σ,p:σ,…"), kinematic=. Результат: эквивалентная пластическая деформация (узловое поле, зонд plastic_strain), доля пластифицированных точек Гаусса, для идеальной пластичности — предельная доля нагрузки.

Ограничения. Только объёмные тела; балки и оболочки с пластичностью отказывают. Неявная нелинейная статика с пластичностью выполняется в десктопе; в браузере она отказывает с названной причиной, линейный расчёт пластичного материала считается упруго с предупреждением. Аддитивный закон не описывает течение при деформациях в десятки процентов (см. F = Fe·Fp). Идеальная пластичность выше предельной нагрузки теряет равновесие: это возвращается как результат с предельной долей нагрузки, а с упрочнением — как отказ. Модуль E_t строго меньше E, \sigma_{y0} меньше E.
Проверка. Замкнутые решения одноосного нагружения, разгрузки и обратной текучести, чистого сдвига: одноосное, разгрузка, обратная текучесть, чистый сдвиг — отклонение порядка 10^{-6} %. Шаровая инвариантность, патч на неструктурированной сетке, объективность при поворотах 17°, 53°, 121° (до 0.57 %, сетки повёрнутого и базового тела разные): гидростатика, патч, объективность. Пластический шарнир прямоугольного сечения, предельный момент \sigma_y b h^2/4: 0.05 %. Стадийный расчёт с пластичностью: стадии. Тот же закон в динамике: упругопластический брус, в явной динамике — линейное упрочнение, мультилинейная кривая, эффект Баушингера. Числа неявных кейсов сняты на нативном пути.
material E=210e9 nu=0.3 plasticity=j2 yield=250e6 hardening=linear et=1e9
nlgeom material loadpath="1,0"
solve

4.8Джонсон–Кукстабильно

Закон для металлов при высоких скоростях деформации и нагреве: предел текучести растёт со скоростью и падает с температурой. Основная область — явная динамика: удар, пробитие, разгон.

\sigma_y = \bigl[A + B\,\bar\varepsilon_p^{\,n}\bigr]\bigl[1 + C\ln\dot\varepsilon^{*}\bigr]\bigl[1 - T^{*m}\bigr],\qquad \dot\varepsilon^{*} = \frac{\dot{\bar\varepsilon}_p}{\dot\varepsilon_0},\quad T^{*} = \mathrm{clamp}\Bigl(\frac{T - T_{\mathrm{room}}}{T_{\mathrm{melt}} - T_{\mathrm{room}}},\,0,\,1\Bigr)

Скоростной множитель включается только при \dot\varepsilon^* > 1 (ниже — единица: квазистатика служит нижней границей). Возвращение то же, что у J2, но в уравнение для \Delta p входит скорость шага \dot{\bar\varepsilon}_p = \Delta p/\Delta t и текущий температурный множитель. Адиабатический разогрев включается заданием теплоёмкости c_p материала закона: \Delta T = \eta\,q\,\Delta p/(\rho c_p), \eta — доля Тейлора–Куинни (0.9 по умолчанию); температура меняется ступенчато, текучесть шага считается при температуре начала шага.

Параметры: A, B (Па), n, C, m, \dot\varepsilon_0 (epsdot0, 1/с), T_{\mathrm{room}} (troom, К), T_{\mathrm{melt}} (tmelt, К), taylor, cp. Кинематическое упрочнение с Джонсоном–Куком не сочетается (отказ).

Ограничения. Скорость и температура действуют в явной динамике. В неявной нелинейной статике закон считается без скоростного и температурного членов, то есть как степенное упрочнение A + B\bar\varepsilon_p^n при комнатной температуре; адиабатический разогрев в неявном пути отказывает. Модули E, \nu с температурой не меняются. Для меди (пресет «Cu-1») в явном расчёте теплоёмкость берётся зависящей от температуры (Banerjee, 2005); поля закона плавления и модуля сдвига Штейнберга–Кокрана–Гинана в пресете описывают справочную модель, в расчёте тела не участвуют.
Проверка. Явная динамика, натив: скоростная чувствительность меди (отношение напряжений 1.1147 против 1.1151), адиабатический разогрев, удар Тейлора, сходимость по шагу. Адиабатический нагрев материальной точки сверен с формулой точно (разогрев). Неявного кейса с Джонсоном–Куком в каталоге нет.
material E=120e9 nu=0.34 density=8900 plasticity=jc A=90e6 B=292e6 n=0.31 C=0.025 m=1.09 tmelt=1356 cp=385

4.9Критерии разрушения материалабета

Критерии работают внутри пластичного закона J2 или Джонсона–Кука и нужны для эрозии элементов в явной динамике; статика и модальный анализ их игнорируют. Срабатывание любого критерия — отказ точки Гаусса. Что делает продукт с элементом, описано в разделе об эрозии.

  • \varepsilon_p \ge \varepsilon_{\mathrm{fail}} — предельная эквивалентная пластическая деформация (ep:).
  • Накопленное повреждение Джонсона–Кука D = \sum \Delta\varepsilon_p/\varepsilon_f \ge 1 (jc:d1/d2/d3/d4/d5):
\varepsilon_f = \bigl[d_1 + d_2\,e^{d_3\eta}\bigr]\bigl[1 + d_4\ln\dot\varepsilon^{*}\bigr]\bigl[1 + d_5 T^{*}\bigr],\qquad \eta = \sigma_m/\sigma_{\mathrm{eq}}

Знак d_3 — как у Johnson, Cook (Eng. Fract. Mech. 21(1), 1985, 31–48): у металлов d_3 < 0; \eta ограничено интервалом [-3, 3].

  • \sigma_1 \ge \sigma_{\max} — наибольшее главное напряжение (smax:, Па).
  • \sigma_m \ge p_{\mathrm{spall}} — гидростатическое растяжение, отрыв (spall:, Па).

Повреждение D жёсткость не снижает: оно только запускает отказ.

Ограничения. Только явная динамика; эрозия на HEX8 и TET4. Критерии без пластичного закона не задаются. Параметры d_1\ldots d_5 вводятся пользователем; проверяется положительность \varepsilon_f на одноосных растяжении и сжатии.
Проверка. Эрозия однородного стержня по предельной пластической деформации: кейс, отклонение 1.46 %. Остальные критерии отдельных кейсов не имеют.
material steel plasticity=j2 yield=355e6 fail="ep:0.25,smax:1.2e9"

4.10Нео-гуковский материалстабильно

Гиперупругий материал для резины и эластомеров при конечных деформациях. Работает в нелинейной статике солидов в постановке Total Lagrangian (геометрическая нелинейность).

W = \frac{\mu}{2}\bigl(\bar I_1 - 3\bigr) + \frac{\kappa}{2}(J-1)^2,\qquad \bar I_1 = J^{-2/3}\,\mathrm{tr}\,\mathbf{C},\quad \mathbf{C} = \mathbf{F}^T\mathbf{F},\quad J = \det\mathbf{F}

Второй тензор Пиолы–Кирхгофа \mathbf{S} = 2\,\partial W/\partial\mathbf{C}, касательная \mathbb{D} = 4\,\partial^2 W/\partial\mathbf{C}\partial\mathbf{C} выписана аналитически (сверка с конечными разностями — до 10^{-8}). Выходное напряжение — Коши, \boldsymbol\sigma = \mathbf{F}\mathbf{S}\mathbf{F}^T/J. Постоянные \mu, \kappa берутся из E, \nu материала формулами из подраздела об изотропной упругости (в карточке резины задаются \mu и K). Элементы: HEX8, TET4, WEDGE6, PYR5, HEX20, TET10, HEX27.

Ограничения. Чисто перемещенческая постановка без смешанной формулировки по давлению: при \kappa/\mu порядка 10^3 и выше линейные элементы запираются, берите квадратичные. Не сочетается с пластичностью. Включается вместе с нелинейным расчётом тела (в DSL nlgeom on); в линейной статике и на пути коробки с тетраэдрами нелинейный материал отказывает, а не считается линейно под нелинейным именем.
Проверка. Одноосное, двухосное, плоское растяжение и простой сдвиг (эффект Пойнтинга) на одном элементе: одноосное, двухосное, плоское, сдвиг, порядок сходимости по сетке 2.0, объективность — все в пределах 0.6 %.
material E=1e7 nu=0.45 model="neo-hookean" density=1100
nlgeom on

4.11Муни–Ривлин, Йео, Арруда–Бойс, Огденэксперимент

Потенциалы для кривых растяжения резины, которые нео-гуковский закон не описывает. Ядро содержит все четыре с аналитической касательной; полной связки «карточка материала — расчёт тела» в текущей версии нет, поэтому раздел экспериментальный.

\begin{aligned} W_{\mathrm{MR}} &= C_{10}(\bar I_1-3) + C_{01}(\bar I_2-3), \\ W_{\mathrm{Y}} &= \sum_{i=1}^{3} C_{i0}(\bar I_1-3)^i, \\ W_{\mathrm{AB}} &= \mu\sum_{i=1}^{5}\frac{c_i}{\lambda_m^{2i-2}}\bigl(\bar I_1^{\,i} - 3^i\bigr),\quad c = \bigl\{\tfrac12,\tfrac1{20},\tfrac{11}{1050},\tfrac{19}{7000},\tfrac{519}{673750}\bigr\}, \\ W_{\mathrm{O}} &= \sum_{p=1}^{N}\frac{2\mu_p}{\alpha_p^2}\bigl(\bar\lambda_1^{\alpha_p}+\bar\lambda_2^{\alpha_p}+\bar\lambda_3^{\alpha_p}-3\bigr),\quad N\le 3 \end{aligned}

К каждому потенциалу добавляется объёмная часть \tfrac\kappa2(J-1)^2 (у Арруда–Бойса \tfrac\kappa2\bigl[\tfrac12(J^2-1)-\ln J\bigr]); \kappa = 2/D_1, если задан параметр сжимаемости D_1. Модули малых деформаций: Муни–Ривлин \mu_0 = 2(C_{10}+C_{01}), Йео \mu_0 = 2C_{10}, Арруда–Бойс \mu_0 = \mu, Огден \mu_0 = \sum\mu_p (соглашение Abaqus; классическое c_p = \mu_p/\alpha_p выбирается флагом ogden_abaqus=false). Для Огдена главные растяжения получаются спектральным разложением \mathbf{C}.

Ограничения. Карточка принимает константы потенциала, но в расчёт тела по коду они не доходят: DSL на геометрии отказывает для моделей, кроме нео-Гука, а нелинейный путь интерфейса получает только название модели; без констант ядро подставляет значения по умолчанию (например, Муни–Ривлин сводится к нео-гуковскому с C_{10} = \mu/2). Не используйте эти модели для расчёта тела, пока связка не закрыта.
Проверка. Одноосное растяжение \lambda = 2 на одном элементе, константы заданы напрямую в ядре: Йео 0.02 %, Огден 0.02 %, Арруда–Бойс 0.01 %; совместная калибровка по данным Трелоара — кейс. Это проверка потенциалов и касательных, а не расчёта детали. Для Муни–Ривлина кейса нет.

4.12Конечные упругопластические деформации F = Fe·Fpэксперимент

Мультипликативная пластичность нужна там, где аддитивная схема J2 неверна: деформации в десятки процентов. Реализован прототип закона, не подключённый к интерфейсу и DSL.

Градиент разлагается \mathbf{F} = \mathbf{F}_e\mathbf{F}_p, \det\mathbf{F}_p = 1. Упругость — Генки в упругой конфигурации: из спектрального разложения \mathbf{C}_e = \mathbf{F}_e^T\mathbf{F}_e получаются логарифмические деформации h_a = \tfrac12\ln\lambda_a, напряжение Кирхгофа \boldsymbol\tau = K\,\mathrm{tr}(\mathbf{h})\,\mathbf{1} + 2\mu\,\mathrm{dev}(\mathbf{h}). Течение ассоциированное по Мизесу с линейным упрочнением \sigma_y = \sigma_{y0} + Hp; приращение \Delta p = f^{\mathrm{tr}}/(3\mu + H) находится замкнуто в пространстве логарифмических деформаций, пластическая часть обновляется экспонентой \mathbf{F}_p^{n+1} = \exp(\Delta p\,\mathbf{N})\,\mathbf{F}_p^{n}, \mathbf{N} = \tfrac32\,\mathrm{dev}(\boldsymbol\tau)/q. Схема того же типа, что у Eterovic, Bathe (1990), и Simo (1992). Для передачи в итерации Ньютона напряжение Коши \boldsymbol\sigma = \boldsymbol\tau/J пересчитывается во второй тензор Пиолы–Кирхгофа, касательная \partial\mathbf{S}/\partial\mathbf{E} берётся центральными разностями четвёртого порядка; на элементах HEX8, HEX20, HEX27 и TET10 применяется \bar F-коррекция против объёмного запирания.

Ограничения. Закон есть в ядре и проверен на материальной точке (объективность, Генки-упругость, нулевое течение при шаровой нагрузке); из карточки материала и DSL его параметры в расчёт не передаются, подключение закона к элементам тела не вошло ни в один выпуск. Касательная численная. Кейсов верификации конечных деформаций на конечно-элементном расчёте в каталоге нет.

4.13Ползучесть Нортона–Бейлиэксперимент

Степенная ползучесть металлов при высоких температурах и длительных нагрузках: деформация растёт при постоянном напряжении, напряжение релаксирует при постоянной деформации.

\dot{\bar\varepsilon}_{cr} = A\,q^{\,n}\,t^{\,m},\qquad \dot{\boldsymbol\varepsilon}_{cr} = \tfrac32\,\dot{\bar\varepsilon}_{cr}\,\mathbf{s}/q

q — эквивалентное напряжение Мизеса; в ядре есть упрочнение по времени и по деформации и интегральная форма \bar\varepsilon_{cr} = A q^n t^m (NAFEMS Test 10B). Шаг — неявный Эйлер с радиальным возвращением и скалярным уравнением для q_{n+1}, касательная аналитическая. Параметры в DSL: creep_a, creep_n, creep_m.

Ограничения. Ядро и карточка материала есть; DSL на геометрии отказывает для этой модели, путь коробки отказывает, расчёта тела с ползучестью продукт не выполняет. Температурной зависимости A(T) нет. Кейсы выполнены на материальной точке и одномерных цепочках.
Проверка. Материальная точка: постоянное напряжение (точно), релаксация (0.2 %), NAFEMS Test 10B (до 3.4 %, плоское напряжённое состояние). Конечно-элементных кейсов нет.

4.14Вязкопластичность Перзиныэксперимент

Пластическое течение с зависимостью от скорости: напряжение может превосходить статический предел, избыток вызывает вязкопластическое течение.

\dot{\bar\varepsilon}_{vp} = \Bigl\langle \frac{q - \sigma_y(\bar\varepsilon_{vp})}{\eta}\Bigr\rangle^{m},\qquad \sigma_y = \sigma_{y0} + H\bar\varepsilon_{vp}

Неявный Эйлер, скалярное уравнение \Delta p - \Delta t\bigl\langle (f^{\mathrm{tr}} - (3\mu + H)\Delta p)/\eta\bigr\rangle^m = 0 на скобке, касательная аналитическая. При \Delta t\to\infty закон стремится к статическому J2, при малом \eta — к жёсткой пластичности.

Ограничения. Те же, что у ползучести: расчёт тела не подключён, в явной и неявной динамике модель не используется. Параметры \eta и m размерные (\eta — Па·с^{1/m}).
Проверка. Материальная точка: перенапряжение — скорость течения и накопленная деформация против формулы.

4.15Вязкоупругость: ряды Прони и реологические цепиэксперимент

Линейная вязкоупругость полимеров: релаксация модуля во времени. Модуль сдвига в виде ряда Прони, объёмный — аналогично:

G(t) = G_0\Bigl[g_\infty + \sum_{i=1}^{M} g_i\,e^{-t/\tau_i}\Bigr],\quad g_\infty = 1 - \sum g_i,\qquad K(t) = K_0\Bigl[k_\infty + \sum k_i\,e^{-t/\tau_i}\Bigr]

Внутренние переменные ветвей обновляются точной экспоненциальной рекуррентой (Simo, Hughes, 1998, §10.2): \mathbf{h}_i^{n+1} = e^{-\Delta t/\tau_i}\mathbf{h}_i^n + 2G_0 g_i\,\beta_i\,\Delta\mathbf{e}, \beta_i = (1 - e^{-\Delta t/\tau_i})\,\tau_i/\Delta t; до шести ветвей, при отсутствии k_i берётся k_i = g_i. Отдельно есть одномерные цепочки Максвелла, Кельвина–Фойгта, Зенера и Бюргерса с точным экспоненциальным шагом и термомеханический демпфер с балансом энергии.

Ограничения. Закон Прони для трёхмерной материальной точки ещё не вошёл ни в один выпуск; одномерные цепочки вошли в основную ветку после выпуска 0.2.1. Параметры из карточки в расчёт тела не передаются. Температурно-временной суперпозиции (WLF) нет.
Проверка. Одномерные цепочки против замкнутых решений: релаксация Максвелла, Кельвин–Фойгт, стандартное линейное тело, Бюргерс, вязкоупругий демпфер. Это проверка интеграторов, а не расчёта тела.

4.16Друкер–Прагер для грунтов и горных породэксперимент

Пластичность с зависимостью от давления для грунта, бетона и горных пород: предел сдвига растёт с обжатием, течение сопровождается дилатансией.

f = q + \alpha p - k(\bar\varepsilon_p),\qquad \alpha = \frac{6\sin\varphi}{3-\sin\varphi},\quad k = \frac{6\,c\cos\varphi}{3-\sin\varphi},\quad c = c_0 + H_c\bar\varepsilon_p,\quad p = \tfrac13\mathrm{tr}\,\boldsymbol\sigma

Конус подобран по меридиану трёхосного сжатия поверхности Мора–Кулона, поэтому предельное осевое напряжение при боковом давлении P_c равно

\sigma_{1c} = P_c\,\frac{1+\sin\varphi}{1-\sin\varphi} + \frac{2c\cos\varphi}{1-\sin\varphi}

Потенциал неассоциированный: g = q + \beta p, \beta = 6\sin\psi/(3-\sin\psi), угол дилатансии 0 \le \psi \le \varphi. Возврат на гладкую стенку конуса, при проекции за вершину — возврат в вершину (de Souza Neto, Perić, Owen, 2008, §8.3). Касательная при \psi \ne \varphi несимметрична. Параметры в DSL: cohesion (Па), friction_angle, dilatancy_angle (градусы).

Ограничения. Самостоятельной шестигранной поверхности Мора–Кулона нет: это конус Друкера–Прагера, совпадающий с ней на меридиане сжатия. Расчёт тела с этим законом не подключён (см. выше); задачи консолидации, несущей способности и устойчивости откоса в продукте как расчёты тела не реализованы. При \varphi=0 возврат в вершину невозможен.
Проверка. Материальная точка, трёхосное сжатие, дилатансия и вершина конуса: кейс. Конечно-элементных кейсов нет.

4.17Пористая пластичность GTNэксперимент

В ядре есть только функция текучести Гурсона–Твергора–Нидлмана \Phi = (q/\sigma_y)^2 + 2q_1 f\cosh\bigl(3q_2 p/2\sigma_y\bigr) - (1 + q_3 f^2) = 0 и кривая предельного эквивалентного напряжения по давлению. Эволюции пористости, интегратора напряжений и подключения к расчёту нет.

Проверка. Единственный кейс — предельный случай нулевой пористости, где функция сводится к Мизесу: GTN при f = 0.

4.18Критерии прочности по упругому решениюбета

Постпроцессор коэффициента запаса поверх узловых полей напряжений: смена критерия или предела не требует нового расчёта. Не часть закона материала и не пластичность. Для каждого узла считается использование u, запас n = 1/u (ограничен сверху для нулевого напряжения).

КритерийИспользование u
Мизес\sigma_{vm}/\sigma_y
Треска(\sigma_1 - \sigma_3)/\sigma_y
Сен-Венан(\sigma_1 - \nu\sigma_3)/\sigma_y
Ранкин\max(\sigma_1/S_t,\ -\sigma_3/S_c)
Кулон–Мор\sigma_1/S_t - \sigma_3/S_c при \sigma_1 \ge 0 \ge \sigma_3; иначе по знаку главных напряжений
Друкер–Прагер\bigl[\sigma_{vm} + \beta(\sigma_1+\sigma_3)\bigr]/\sigma_{eq}, \beta = \frac{S_c-S_t}{S_c+S_t}, \sigma_{eq} = \frac{2S_tS_c}{S_c+S_t}
Гудман, Содерберг, Гербер\sigma_{vm}/2S_f + \sigma_{vm}/2S_u; \sigma_{vm}/2S_f + \sigma_{vm}/2S_y; \sigma_{vm}/2S_f + (\sigma_{vm}/2S_u)^2
Ограничения. Упрощения: Сен-Венан использует только \sigma_3 вместо \nu(\sigma_2+\sigma_3); в Друкере–Прагере первый инвариант заменён суммой \sigma_1+\sigma_3 (точно для одноосных состояний, без учёта \sigma_2 в общем); усталостные критерии предполагают пульсирующий цикл 0\to\sigma с амплитудой и средним \sigma_{vm}/2, а не историю нагружения. Пределы \sigma_y, S_t, S_c, S_f, S_u задаются пользователем в карточке материала. Только интерфейс (шаг результатов), DSL-зонда коэффициента запаса нет.
Проверка. Покрыто модульными тестами формул; кейсов верификации в каталоге нет.

5Граничные условия, нагрузки и связи

↑ К оглавлению

Граничное условие или нагрузка в WebCAE — это запись. В записи четыре части: вид (закрепление, нагрузка, жёсткая связь, уравнение связи), элемент (перемещение, сила, давление, ускорение и т. д.), компонента с величиной и список объектов геометрии, к которым запись приложена: вершины, рёбра, грани или тело. Объекты адресуются номерами из дерева модели (surface number 3, edge number 7, vertex number 2), а не направлением в габарите. Форма в дереве и команда сценария создают одну и ту же запись, логика у них общая; грамматика команд описана на странице /docs/dsl.

Компилятор записей собирает все записи в одну постановку и передаёт её решателю. Записи складываются: давление и сила на одной грани дают одну суммарную тягу, закрепления разных компонент одной грани накапливаются. Величины вводятся в системе единиц проекта (единица подписана рядом с полем), геометрия хранится в мм, а на границе решателя всё переводится в СИ: метры, ньютоны, паскали, килограммы. Перевод выполняется в одном месте; повторного перевода ниже по тракту нет.

Температурные воздействия (заданная температура, тепловой поток, конвекция, излучение, объёмное тепловыделение) и температурный перепад для термоупругости описаны в разделе о тепловом анализе: Теплопередача и мультифизика. Контакт и склейка тел — в разделе Контакт и соединения. Здесь собраны механические воздействия и связи.

Что задаётсяК чему прикладываетсяКак входит в расчёт
Закрепление, заданное перемещениевершина, ребро, грань, телоисключение степеней свободы
Связь по нормали (каток, симметрия)граньуравнения связи по узлам грани
Силавершина, ребро, грань, телоузловые силы
Давление, распределённая силаграньсогласованные узловые силы по грани
Ускорение, сила тяжестився модельобъёмная сила \rho\,\mathbf{a}
Удалённая сила, момент, перемещениевершина, ребро, грань, теловиртуальный ведущий узел и RBE2
Жёсткая связь RBE2, уравнение MPCвершины, рёбра, грани, телаисключение зависимых степеней свободы

5.1Закрепления и заданные перемещениястабильно

Закрепление обнуляет перемещение узлов выбранной геометрии по одной, двум или трём осям. Заданное перемещение даёт этим узлам ненулевое значение d. Оба случая — условия Дирихле u_i = d для множества степеней свободы S.

Условия выполняются точно, без штрафа. Степени свободы из S исключаются из системы: решение записывается как \mathbf{u} = \mathbf{T}\,\mathbf{u}_{\mathrm{f}} + \mathbf{u}_0, где \mathbf{u}_{\mathrm{f}} — свободные степени, \mathbf{u}_0 несёт ненулевые значения d, и решается редуцированная система

\mathbf{T}^{\mathsf T}\mathbf{K}\,\mathbf{T}\;\mathbf{u}_{\mathrm{f}} = \mathbf{T}^{\mathsf T}\bigl(\mathbf{f} - \mathbf{K}\,\mathbf{u}_0\bigr).

Множители Лагранжа не вводятся. Тот же механизм исключения обслуживает жёсткие связи и уравнения MPC, подробности — в разделе Решатели.

Что задаёт пользователь: цель (вершина, ребро, грань или тело), компоненту all, x, y или z и величину. Нулевая величина — закрепление, ненулевая — заданное перемещение в единицах длины проекта. Компонента all с ненулевой величиной задаёт одно и то же значение по всем трём осям. Результат: поле перемещений и реакции опор (команда reactions, раздел Результаты).

Правила, которые стоит знать:

  • закрепления x, y и z на одной грани накапливаются; три оси — это полное закрепление;
  • на степень свободы допускается одна зависимая связь. Поэтому закрепление (d=0) сильнее заданного перемещения на той же грани и той же оси; из двух заданных перемещений на одну грань и ось действует первое по порядку, а различие значений даёт предупреждение;
  • заданное перемещение допускается только на грани. Запись на вершине, ребре или теле с ненулевым значением не пропадает молча: расчёт сообщает, что для неё нужна грань;
  • модель с заданным перемещением считается закреплённой: предупреждение «нет закрепления» не выдаётся;
  • закрепление на одной вершине солида даёт предупреждение: реакция собирается в одном узле, напряжение там растёт при сгущении сетки, и максимум напряжения становится свойством сетки, а не модели. Три вершины, гасящие шесть жёстких мод, постановка допускает;
  • для солидов закрепляются только поступательные степени свободы. Запись «поворот» на грани солида решателем не принимается; опоры балок и оболочек задаются командами каркаса (frame support).
Ограничения. Опора идеально жёсткая: на входящих углах и в точечных закреплениях напряжение сингулярно. Упругих опор в этом механизме нет — для них служит пружина. Локальная система координат на закрепления и заданные перемещения не действует (только на векторные нагрузки). Ненулевое заданное перемещение в линейной статике прикладывается целиком; поведение в нелинейных расчётах описано в разделе Нелинейные расчёты и динамика.
Проверка. Закрепление торца и осевая тяга: Одноосное растяжение (сталь), отклонение 3\cdot10^{-5}\,\%. Опоры и симметрия на толстой плите: NAFEMS LE10, 0.67\,\%. Заданное перемещение на границе: Субмоделирование: концентрация у выреза, -3.57\,\% (перемещения глобальной модели переносятся на границу подмодели). Заданное перемещение по нормали: Раздутие цилиндра, 0.24\,\%.
fix surface number 1
fix surface number 2 component=z value=0.5
fix edge number 4

5.2Связь по нормали: каток и плоскость симметриистабильно

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

Для узла a грани записывается уравнение

\mathbf{n}_a\cdot\mathbf{u}_a = d ,

где \mathbf{n}_a — узловая нормаль. Она получается усреднением нормалей смежных граничных треугольников с весом, равным их внутреннему углу при узле (Thürmer G., Wüthrich C., Computing vertex normals from polygonal facets, Journal of Graphics Tools, 1998). Вес по площади проверен и отвергнут: на плоском четырёхугольнике, разрезанном диагональю, он смещает нормаль, а вес по углу от разрезания не зависит.

Если узел лежит на стыке двух граней со связями по нормали, в нём появляется несколько уравнений на три степени свободы. Они приводятся полным методом Гаусса–Жордана с выбором ведущего элемента, и нормали не усредняются. Две ортогональные плоскости симметрии дают две независимые строки, и узел остаётся скользить вдоль линии их пересечения. Почти параллельные нормали (гладкая поверхность, разрезанная на две грани) дают избыточную строку, она отбрасывается. Противоречащие связи дают предупреждение, и строка не применяется. В углу трёх независимых плоскостей узел закреплён.

Специального типа «симметрия» нет. Плоскость симметрии — это связь по нормали с d=0, а на плоской грани, перпендикулярной оси, она эквивалентна закреплению одной компоненты. Нагрузки на симметричной части модели задаются долей от полной: если вырезана четверть, прикладывается четверть силы. Антисимметрии (условия u_t = 0 и u_n свободно) в продукте нет.

Ограничения. Нормаль узла осреднена по сетке. На криволинейной грани с неравномерной сеткой направление связи отличается от истинной нормали на малый угол, который убывает с измельчением. Одна грань — одна нормальная связь; повторная запись на ту же грань отбрасывается с предупреждением. Связь по нормали работает только на гранях. В контактной сборке без трения она допускается только на гранях, перпендикулярных осям: на наклонной грани расчёт отказывает.
fix surface number 2 component=normal value=0
fix surface number 3 component=normal value=0.05

5.3Сосредоточенные силы, линейные силы и силы на телостабильно

Сила задаётся вектором (Н) и прикладывается к вершине, ребру, грани или телу. Что именно решатель делает с равнодействующей, зависит от вида цели.

  • Вершина. Сосредоточенная сила идёт в один узел сетки. Вершина должна разрешаться ровно в один узел; иначе расчёт отказывает. Под точечной силой напряжение сингулярно, значения рядом с точкой зависят от сетки, судить о результате нужно по сечениям вдали от точки (принцип Сен-Венана).
  • Ребро. Равнодействующая делится поровну между узлами, лежащими на ребре. Доли одинаковы для всех узлов ребра, длина участков, приходящихся на узел, не учитывается. Поэтому на ребре с неравномерной сеткой нагрузка получается не равномерной линейной, а «поровну на узел».
  • Грань. Равнодействующая \mathbf{F} делится на площадь грани в м²: получается равномерная тяга \mathbf{t}=\mathbf{F}/A, которая интегрируется согласованно (следующий подраздел). Поэтому сумма узловых сил равна \mathbf{F}.
  • Тело. Равнодействующая распределяется по объёму: \mathbf{f}_a = (\mathbf{F}/V)\int_{\Omega} N_a\,dV, где V — объём тела. Для сборки адресуется тело; без указания тела сила действует на всю модель.

Сосредоточенный момент на солиде не задаётся: у узла объёмного элемента нет вращательной жёсткости. Момент, приложенный к области, задаётся удалённой нагрузкой. Для балок и оболочек узловые силы и моменты доступны командой frame load node=… force=… moment=… (см. Каркас, балки и оболочечные патчи).

Ограничения. Сила на ребро не учитывает длины, которые приходятся на узлы. Сила на тело в контактной сборке не принимается: у контактного пути нет входа для объёмной нагрузки, расчёт отказывает вслух. Ускорение в такой сборке работает.
Проверка. Единицы и конвенции точечной силы на консоли: Солидная консоль под точечной силой, отклонение 2.02\,\% (одна задача в мм/МПа/Н и в м/Па/Н). Сосредоточенные силы на оболочке: NAFEMS LE3, 0.13\,\%. Тяга на торце: Одноосное растяжение (сталь).
load vertex number 3 force=0,0,-100
load edge number 5 force=0,-2000,0
load surface number 2 force=5000 component=z

5.4Давление и распределённые силы на гранистабильно

Давление p действует по нормали к грани и считается положительным, когда прижимает к телу. Распределённая сила — это тяга \mathbf{t}_d в Па, заданная вектором. На грани действует тяга

\mathbf{t} = -\,p\,\mathbf{n}_{\mathrm{out}} + \mathbf{t}_d ,

где \mathbf{n}_{\mathrm{out}} — внешняя нормаль. Узловые силы согласованные:

\mathbf{f}_a = \int_{\Gamma} N_a\,\mathbf{t}\;d\Gamma .

Внешняя нормаль каждой грани определяется по смежному элементу: нормаль направлена от центроида элемента-владельца. Так знак давления верен и на внутренних поверхностях (канал трубы, расточка), где центроид всей модели лежит вне материала. Для плоских граней линейных элементов (tri3, quad4) интеграл берётся точно. Для граней квадратичных элементов применяются tri6 (трёхточечная квадратура) и quad8 (квадратура Гаусса 3\times3). На плоской грани tri6 угловые узлы получают 0, а серединные — по трети равнодействующей; на плоском прямоугольнике quad8 угловые узлы получают -1/12 равнодействующей, серединные — +1/3. Это классические узловые доли квадратичных элементов.

Сила на грани (в Н) переводится в тягу делением на площадь грани в м²; запись distributed_force задаётся сразу в Па. Давление и силы на одной грани складываются в одну нагрузку.

Ограничения. Давление постоянно по грани: зависимости от координаты (гидростатика, линейный градиент) в записи нет. Для сильно нелинейных задач давление, остающееся нормальным к исходной грани («мёртвое»), может оказаться неверной моделью; следящее давление описано ниже. Для оболочек давление задаётся на патч (frame load patch=… p=…), для балок — погонной нагрузкой (frame load member=… q=…).
Проверка. NAFEMS LE10 (толстая пластина под давлением), 0.67\,\%; NAFEMS LE1 (давление по кромке), 3.62\,\%; NAFEMS LE6 (косоугольная пластина), 1.65\,\%; Толстостенный цилиндр в обойме, 0.48\,\%; Консоль под распределённой нагрузкой, 1.03\,\%.
units mm
load surface number 1 pressure=10
load surface number 4 distributed_force=2 component=y

5.5Следящее давлениебета

Следящее давление поворачивается вместе с гранью и всегда действует по нормали текущей, деформированной конфигурации. Для больших перемещений и поворотов это единственная верная модель давления газа или жидкости. Грань параметризована координатами (\xi,\eta), текущие координаты \mathbf{x}=\sum N_a(\xi,\eta)\,\mathbf{x}_a, где \mathbf{x}_a=\mathbf{X}_a+\mathbf{u}_a. Узловая сила при доле нагрузки \lambda:

\mathbf{f}_a = -\,\lambda\,p\int N_a\;\mathbf{x}_{,\xi}\times\mathbf{x}_{,\eta}\;d\xi\,d\eta .

Схема Hibbitt (1979), см. также Wriggers, Nonlinear Finite Element Methods, 2008, §4.2.5. Грани tri3, quad4, tri6 и quad8, квадратура подобрана так, что интеграл берётся точно, и сумма сил и моментов по замкнутой поверхности равна нулю с машинной точностью. Касательная жёсткость нагрузки аналитическая и в общем случае несимметрична (нагрузка одной грани неконсервативна); для замкнутой поверхности под постоянным давлением сумма по граням симметрична. Подробности постановки и вклад в итерации Ньютона — в разделе Нелинейные расчёты и динамика.

Режим давления выбирается в настройках нелинейного расчёта тел: «следящее» или «мёртвое». При включённой геометрической нелинейности по умолчанию действует следящее. В режиме «только материальная нелинейность» (малые деформации) давление мёртвое. Для произвольной грани есть явная команда nlgeom follower nodes="…" p=… с узлами грани (3, 4, 6 или 8 штук, p>0 прижимает).

Ограничения. Следящее давление работает только в нелинейной статике тел и только в десктопном приложении. В неявной динамике и в расчётах по этапам возведения расчёт отказывает вслух; балки и оболочки каркаса режим давления не читают. Флажок «следящее» у отдельной записи давления сохраняется в проекте, но решатель берёт режим из настроек нелинейного расчёта, а не из флажка записи. Для метода длины дуги касательное решение не содержит производной нагрузки по параметру: корректор остаётся сходящимся, но не квадратичным.
Проверка. В каталоге верификации отдельного кейса на следящее давление нет. Ядро проверено контрольными расчётами: сумма сил и сумма моментов по замкнутой поверхности порядка 10^{-13} от нагрузки при искажении всех узлов; касательная совпадает с центральными разностями до 10^{-10}; пластина на торсионной пружине со следящим давлением даёт аналитический угол \theta=\lambda(M_0+pAL/2)/k с точностью до машинного нуля, мёртвое давление даёт другой ответ. Статус бета: проверка на уровне ядра, без независимого эталона в каталоге.

5.6Ускорение, сила тяжести и вращениестабильно

Ускорение — объёмная нагрузка на всю модель. Задаётся вектор \mathbf{a} в м/с²; на материал действует массовая сила

\mathbf{f}_b = \rho\,\mathbf{a}, \qquad f_a = \int_{\Omega} N_a\,\rho\,\mathbf{a}\;dV .

Сила тяжести — частный случай. Для силы тяжести вдоль -z задаётся a_z=-9.81\,\mathrm{m/s^2}: знак перед \rho\mathbf{a} положительный, вектор \mathbf{a} — это направление действия массовой силы. Для составляющих по x, y и z записи складываются в один вектор. Узловые силы вычисляются согласованным интегрированием по объёму, так что равнодействующая равна \rho V\mathbf{a} с точностью до интегрирования.

Нужна плотность материала. Для оболочки без плотности ускорение исчезло бы молча, поэтому расчёт отказывает с просьбой задать плотность. Для сборок плотность берётся по телам.

Центробежная нагрузка как отдельное статическое воздействие \omega^2\rho\,r в списке нагрузок отсутствует. Вращающиеся конструкции учитываются иначе: гироскопические члены и разупрочнение от вращения входят в анализ ротора (Роторная динамика), начальная угловая скорость задаётся в неявной динамике, а сейсмическое возбуждение основания — ускорением основания в динамике и спектральном анализе (относительная постановка \mathbf{F}=-\mathbf{M}\boldsymbol{\iota}\,\mathbf{a}_0\,k(t)).

Ограничения. Ускорение одно на модель: поле, переменное по телам, не задаётся. Фазы у ускорения нет. Не все пути расчёта имеют вход для ускорения: линейная устойчивость и термоупругость на упрощённых путях отказывают вместо того, чтобы потерять нагрузку.
Проверка. Собственный вес в этапах возведения и выемки: Стадийное возведение колонны, 0.12\,\%; Стадийная выемка, 0.17\,\%. Ускорение основания: Динамика: сейсмическое ускорение основания и RBE2, 0.051\,\%.
load accel=-9.81 component=z

5.7Удалённая сила, момент и перемещениебета

Удалённая нагрузка прикладывает силу \mathbf{F} и момент \mathbf{M} в произвольной точке \mathbf{x}_m (она может лежать вне тела), передавая их выбранной грани, ребру, вершине или телу. В точке создаётся виртуальный ведущий узел. Узлы цели становятся зависимыми по правилу жёсткого тела:

\mathbf{u}_i = \mathbf{u}_m + \boldsymbol{\theta}_m\times(\mathbf{x}_i-\mathbf{x}_m),

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

Ограничения. Нагруженная область ведёт себя как жёсткая: она не деформируется, поэтому жёсткость соседних участков и напряжения около области завышены (как у любой RBE2). Распределение нагрузки по цели определяется геометрией, а не податливостью материала; интерполяционной связи, которая передаёт нагрузку с весами и не добавляет жёсткости (RBE3), в продукте нет. Цилиндрическая локальная система не поддержана.
Проверка. Отдельного кейса на удалённую нагрузку в каталоге нет. Присоединение через RBE2 проверено кейсом Динамика: основание и связи RBE2 и тестами эквивалентности сил (сумма сил и момент относительно точки). Статус бета.
remote load surface number 2 point=150,5,5 force=1000,0,0 moment=0,0,5
remote motion surface number 2 point=1,2,3 translate=0.01,0,0 uaxes=1,0,0

5.8Жёсткие связи RBE2 и уравнения связистабильно

Жёсткая область (RBE2) заставляет зависимые узлы двигаться вместе с ведущим как одно жёсткое тело; формулы приведены в разделе Библиотека конечных элементов. В записи указываются ведущая цель и ведомые цели — любые из вершины, ребра, грани или тела.

Как это вводится в расчёт. Узлы ведущей и ведомых целей образуют одно жёсткое тело; ведущим выбирается узел, ближайший к центроиду ведущей цели. Для квадратичных сеток зависимыми становятся и серединные узлы. Зависимые степени свободы исключаются преобразованием \mathbf{u}=\mathbf{T}\mathbf{u}_{\mathrm{f}}+\mathbf{u}_0: множители Лагранжа и штраф не применяются, цепочки зависимостей сворачиваются, редуцированная система решается тем же решателем (см. Решатели). Конфликт двух связей на одну степень свободы или цикл останавливают расчёт с кодом причины.

Чтобы связь не противоречила другим условиям, перед расчётом из неё исключаются:

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

Если не остаётся ни одного ведомого узла, связь пропускается с предупреждением.

В проекте можно задать уравнение связи общего вида \sum_i c_i\,u_i = r (MPC) для степеней свободы вершин. Первый член уравнения — зависимая степень свободы, остальные — ведущие. Свободные уравнения создаются только в форме интерфейса; команды сценария для них нет (для каркасов есть frame constraint). Кинематические шарниры (вращательный, цилиндрический, сферический) собираются из жёстких областей и линейных уравнений вокруг виртуальных ведущих узлов; команды сценария для них нет, проверочного кейса нет.

Ограничения. RBE2 жёсткая: она не допускает деформации области и завышает жёсткость. Условие записано для малых поворотов (\boldsymbol{\theta}\times\mathbf{r} — линейное приближение). Интерполяционные связи RBE3 в продукте не реализованы; ближайшая возможность — удалённая нагрузка, которая тоже строится на RBE2. Режимы pinned и coupling-x/y/z в форме предлагаются как «шарнирные» и «по одной оси», но в решателе все эти записи проходят тем же каналом RBE2 с полной связью. Для связи только по одному направлению задавайте уравнение MPC. На солидах (три степени свободы в узле) отличие от «шарнирной» связи не видно; на балках и оболочках оно существенно.
Проверка. Динамика: основание и связи RBE2, 0.051\,\% (коэффициент динамичности 1.946, нативный путь); Термомеханика: параллельные стержни (уравнение связи плиты у каркаса), 0\,\%. Кейсов на свободные MPC и шарниры нет.
rigid link master vertex number 6 slaves surface number 2

5.9Локальные системы координатбета

Локальная система координат (СК) нужна для нагрузок, направленных по наклонным осям. Декартова СК задаётся началом, осью z и, при необходимости, направлением оси x. Триэдр строится так: \mathbf{e}_z — нормированный вектор оси z, \mathbf{e}_x — ортогонализованная по Граму–Шмидту ось x, \mathbf{e}_y=\mathbf{e}_z\times\mathbf{e}_x. Если ось x не задана или параллельна z, достраивается произвольный перпендикуляр, и в этом случае повернуть СК вокруг z можно, только указав x.

Компонента x записи, привязанной к СК, с заданной величиной q означает вектор q\,\mathbf{e}_x (аналогично y, z). Поворот делается один раз, в компиляторе нагрузок; все величины ниже по тракту уже глобальные. Начало СК используется только для удалённых точек, сосредоточенная сила как свободный вектор его не читает. Привязка к СК действует на силу, распределённую силу, ускорение, удалённую силу и удалённое перемещение.

Ограничения. Поддержана только декартова СК. Для цилиндрической СК орт \mathbf{e}_r зависит от положения узла, поворот одного вектора нагрузки здесь не определён: запись считается в глобальных осях и сопровождается предупреждением. Закрепления, заданные перемещения и связи по нормали не используют СК. Несуществующая СК даёт предупреждение, запись считается в глобальных осях.
Проверка. Покрыто модульными тестами (построение триэдра, сумма покомпонентных сил равна заданной равнодействующей); независимого кейса в каталоге нет, поэтому бета.
cs turned origin=0,0,0 axisZ=0,0,1 axisX=1,1,0
load surface number 2 fx=1000 cs=turned

5.10Преднатяг болтовэксперимент

Виртуальный болт моделирует затяжку соединения без построения резьбы: два фланца стягиваются осевым усилием F_0, а болт несёт его как упругий стержень. Подходит для оценки раскрытия стыка и нагрузки на болт в сборках.

Как строится модель. В центроидах опорных граней головки и гайки создаются два ведущих узла; каждый связан с узлами своей грани жёсткой областью. Между ведущими узлами вводится балка Тимошенко с площадью сечения A и осевой жёсткостью k_b=EA/L, где L — расстояние между центроидами. К ведущим узлам прикладывается самоуравновешенная пара сил \pm F_0 вдоль оси болта. Усилие можно задать силой F_0 или моментом затяжки: F_0 = T/(K\,d), где K — коэффициент закручивания (по умолчанию 0.2), d — диаметр. Площадь сечения: номинальная \pi d^2/4, площадь сечения по напряжениям A_s=\tfrac{\pi}{4}(d-0.9382\,P)^2 с шагом крупной резьбы (ISO 898-1) или заданная вручную. Класс прочности (8.8, 10.9, 12.9) определяет предел текучести по умолчанию: 640, 900 и 1080 МПа; значение можно задать вручную.

Постобработка для каждого болта: рабочее усилие F_{\mathrm{work}}=F_0+k_b\,\Delta u, где \Delta u — относительное осевое смещение ведущих узлов в решении; напряжение \sigma=F_{\mathrm{work}}/A; запас \mathrm{SF}=\sigma_y/\sigma. Помечаются текучесть болта, низкий запас (меньше 1.25) и раскрытие стыка, когда рабочее усилие падает почти до нуля.

Ограничения. Это оценка на основе КЭ-модели, а не полный расчёт по VDI 2230. В нём нет коэффициента введения нагрузки \Phi, потерь на осадку, разброса затяжки, температурных поправок, расчёта резьбы на срез, изгиба болта и усталости. Жёсткость соединяемых деталей задаётся полем, но в формулу усилия не входит: она получается из самой конечно-элементной модели. Жёсткие области на опорных гранях делают пятно под головкой жёстким. Согласованность оценки F_{\mathrm{work}} с ручным расчётом по VDI 2230 не проверена.
Проверка. Проверок с независимым эталоном нет: модульные тесты проверяют сборку модели (узлы, пауки, жёсткость, силы) и формулы постобработки, но не сверку со справочным расчётом соединения. Кейс Контакт: фланцевый стык с преднатягом задаёт силы затяжки непосредственно и виртуальный болт не использует. Команда сценария bolt появилась после выпущенной версии.
bolt surface number 10 surface number 20 preload=20000 diameter=12 class=10.9

5.11Пружины и точечные массыбета

Пружина — упругая связь между двумя областями модели или между областью и неподвижным основанием; точечная масса — одноузловой элемент без жёсткости. Оба элемента описаны в разделе Библиотека конечных элементов, здесь — как они входят в список условий.

Пружина создаётся записью со своей целью (грань, ребро или вершина) и жёсткостью k в Н/м; для основания указывается слово ground вместо второй цели. Дополнительно можно задать поперечную жёсткость, крутильную жёсткость и силу предварительного натяга F_0. Постобработка выдаёт удлинение \Delta L и рабочее усилие F=F_0+k\,\Delta L. Точечная масса — команда mass, в продукте она влияет на модальный и динамический анализ каркасов из балок и оболочек.

Ограничения. Пружина линейная и двусторонняя; односторонняя работа и зазор — задача контакта. Жёсткие области на концах делают присоединённые площадки жёсткими. Точечная масса в моделях из объёмных элементов регистрируется, но в расчёт не входит: для навесной массы на солиде используйте жёсткую область или плотность.
Проверка. Кейса на пружину в каталоге нет: тесты проверяют сборку и жёсткость эквивалентного элемента. Для точечной массы ближайший кейс — NAFEMS FV4, 1.06\,\%.
spring surface number 3 ground k=2e6 preload=100
mass node=1000,0,0 m=100

5.12Циклическая симметрияэксперимент

Циклическая симметрия позволяет считать один сектор диска, колеса или лопаточного венца вместо всей конструкции. Постановка: сектор повторяется N раз вокруг оси, угол сектора \Delta\theta=2\pi/N. Узлы нижней границы сектора поворачиваются на +\Delta\theta вокруг оси (формула Родрига) и сопоставляются с узлами верхней границы в пределах допуска. Для каждой пары накладываются три уравнения связи

\mathbf{u}_{\mathrm{high}} - \mathbf{R}(\Delta\theta)\,\mathbf{u}_{\mathrm{low}} = \mathbf{0}.

Это гармоника с индексом k=0: деформированное состояние одинаково во всех секторах. После расчёта результат можно развернуть на полные 360^\circ: перемещения поворачиваются, тензор напряжений поворачивается как тензор (эквивалентное напряжение по Мизесу при этом не меняется).

Для гармоник k\ge1 (волны Флоке–Блоха) в коде формируется связь с комплексным фазовым множителем \mathrm{e}^{\mathrm{i}k\Delta\theta} по вещественной и мнимой частям. Статический решатель вещественный и такого поля не несёт, поэтому гармоники k\ge1 в расчёте не используются.

Пользователь задаёт нижнюю и верхнюю границы сектора (грани), число секторов, ось и допуск: в интерфейсе — секция «Циклическая симметрия» шага граничных условий, в сценарии — команда cyclic. Расчёт сектора — линейная статика с уравнениями связи.

Ограничения. Только k=0, то есть осесимметричная картина нагружения. Сетки на двух границах должны совпадать с точностью до допуска; несовпадение даёт отказ или предупреждение о числе непарных узлов. Вращательные степени свободы (балки, оболочки) в связь не включаются. Нагрузка должна быть одинаковой во всех секторах.
Проверка. Независимого кейса в каталоге нет. Модульные тесты проверяют: сохранение длины и ортогональность вращения, инвариантность уравнений при чистом кручении и при радиальном расширении, инвариантность эквивалентного напряжения при повороте. Модуль и команда cyclic появились после выпущенной версии.
cyclic surface number 1 surface number 2 sectors=12 axis=0,0,1 tol=0.05

5.13Шаги, фазы и временные законы нагрузкибета

У записей нагрузок нет собственного понятия «этап», но несколько расчётов используют их по-разному.

  • Линейная статика. Ползунок шагов нагрузки показывает масштабирование единственного решения: поля умножаются на долю s/N. Реального пошагового нагружения здесь нет.
  • Нелинейная статика. Нагрузка и заданные перемещения нарастают пропорционально доле \lambda; путь нагружения loadpath="1,0" включает разгрузку, "1,-1,1" — цикл. Подробности в разделе Нелинейные расчёты и динамика.
  • Гармонический отклик. Сила, давление и распределённая сила могут нести фазовый угол \Delta\varphi: F(t)=F\cos(\omega t+\Delta\varphi) (параметр phase, градусы). Ускорение фазы не несёт. Статический расчёт фазу игнорирует и сообщает об этом.
  • Динамика. Нагрузка умножается на амплитудный закон k(t), заданный таблицей amplitude="t:k,…".
  • Рождение и смерть тел. Этапы возведения и выемки включают и отключают тела целиком: Нелинейные расчёты и динамика.
Проверка. Путь с разгрузкой: Нелинейный решатель: реверс нагрузки, 0.021\,\%; независимость от числа шагов: Независимость от размера шага. Фаза гармонической нагрузки: Гармонический отклик: фазовые углы нагрузок, 0.316\,\%.

5.14Что происходит с записями при перестройке геометриибета

Автоматическое лечение геометрии, сшивка, подавление тела и булевы операции могут убрать грань или вершину, к которой была привязана запись. Правило такое: запись никогда не удаляется молча.

  • Запись остаётся в состоянии проекта и помечается как осиротевшая («цель потеряна»); в отчёте о лечении названо, сколько записей потеряли привязку и каких.
  • Осиротевшая запись не переносится на другие объекты. Если несколько граней слились в одну, ни одна из исходных записей не переезжает на объединённую грань: перенос изменил бы физический смысл, пока пользователь не выберет грань сам.
  • Расчёт не делает вид, что записи нет. В сценариях расчёт отказывает с перечнем потерянных записей и их целей. В интерфейсе запись исключается из расчёта с предупреждением по имени; если после этого нет закрепления, расчёт блокируется.
  • Запись, у которой нет приёмника в решателе (например, автосвязь стыка срединных поверхностей, пока узлы стыка не построены), не превращается в уравнения-заглушки: она помечается как нереализованная, и расчёт отказывает с её именем.
  • Автоматическое лечение геометрии получает список граней, на которых стоят записи, и не снимает их.
Ограничения. Защита относится к автоматическому лечению. Ручная правка геометрии и булевы операции могут снять грань, и тогда привязка теряется; об этом сообщает значок «цель потеряна» в дереве. Такую запись нужно переназначить вручную: продукт не угадывает, на какую грань её переносить.
Проверка. Покрыто модульными тестами компилятора записей и сценарием автолечения, который проверяет, что ни одна запись не осиротела при защищённых гранях. Независимого кейса в каталоге нет: правило касается состояния проекта, а не численного результата.

6Контакт и соединения

↑ К оглавлению

Сборка из нескольких тел требует решения, как тела связаны на стыке. Для каждой пары тел в WebCAE выбирается один режим: склейка, пружинная связь, контакт без трения, контакт с трением или отсутствие связи. Режим задаётся в панели «Соединения» (матрица пар) или командой contact; для всей сборки можно задать режим по умолчанию, а для отдельной пары переопределить его.

Режимы существенно различаются по постановке. Склейка (bonded, tied) линейна: стык передаёт любые силы и не раскрывается. Контакт без трения односторонний: тела передают только сжатие и могут разойтись, поэтому задача нелинейна и решается шагами нагрузки. Трение добавляет зависимость от истории. Не каждый режим доступен в каждом виде расчёта. Если пара задана режимом, который выбранный расчёт не несёт, расчёт отказывает вслух; он не заменяет режим другим и не считается без пары.

РежимЛинейная статикаНелинейная статикаНеявная динамикаПлатформа
Bonded (общие узлы)дада, как единое телопо правилам расчёта (динамика)десктоп и браузер
Tied (точная связь MPC)даотказотказдесктоп и браузер
Penalty (пружинная связь)даотказотказдесктоп и браузер
Frictionless (без трения)да, шагами нагрузкидадатолько десктоп
Frictional (трение Кулона)отказотказдатолько десктоп

Модальный анализ, линейная устойчивость и гармонический отклик с контактом без трения линеаризуются: нормальная жёсткость берётся по зазору на момент расчёта, набор активных пар в собственной задаче не обновляется. Эталоном считается десктопное (нативное) приложение; браузер поддерживает склейку и пружинную связь.

6.1Поиск контактных парбета

Команда contact pairs all|visible <mode> и кнопка в панели создают пары для всех касающихся тел сборки. Критерий — расстояние между поверхностями тел, а не пересечение габаритных ящиков: ящик ничего не знает о форме, и деталь, стоящая в вырезе другой, для него неотличима от детали, которая вырезу лишь соседствует. Расстояние считается по тесселяции границы, которую строит ядро OpenCascade при импорте. Для каждой пары определяется вид стыка: касание, измеримый зазор (конструктивный стык) или нахлёст с объёмом пересечения (запрессовка либо ошибка сборки). Допуск относителен: привязан к габариту сборки. Пары у порога можно уточнить точным расстоянием между телами в B-Rep.

Кнопка «Проверить связность» находит группы тел и «плавающие» компоненты, не связанные ни закреплением, ни режимом соединения. В модальном анализе, устойчивости и гармонике расчёт отказывает с перечнем несвязанных тел, пока группы не связаны.

Ограничения. Тесселяция аппроксимирует криволинейную поверхность изнутри, и расстояние на криволинейном стыке может быть завышено на величину хордовой погрешности; на плоских стыках оно точно. Поиск находит стыки, но не выбирает режим: его назначает пользователь.
Проверка. Отдельного кейса верификации нет: поиск проверен модульными тестами и промерами на реальных сборках (на сборке из 22 тел геометрический критерий отбраковал 7 из 25 пар, найденных по габаритным ящикам, и каждая из семи подтверждена точным расстоянием). Статус бета.
contact pairs all tied
contact body1 body2 frictionless

6.2Склейка по общим узлам (bonded)стабильно

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

Управление — параметрами сетки: bonding=0|1 включает склейку, glue=auto|contact|full выбирает быстрый поиск касаний или полный поиск пересечений, interference=cut|split|ignore определяет, что делать с реальным нахлёстом. В режиме cut спорный объём отдаётся меньшему телу (штырь вытесняет материал плиты), стык становится точным касанием, объём равен объединению. В режиме split нахлёст фрагментируется: объём точный, но осколок посадки может оказаться тонкой плёнкой, которая срывает сетку. В режиме ignore нахлёст сохраняется, материал считается дважды.

Ограничения. Склейка по узлам требует касания или нахлёста в пределах допусков: если тела разделены зазором, общих узлов не будет. Сетки по обе стороны стыка согласованы, поэтому размер элемента на стыке задаётся один. Для несогласованных сеток нужна склейка tied.
Проверка. Склеенные сборки несут кейсы этапного расчёта: Стадийное возведение колонны, 0.12\,\%; Стадийная выемка, 0.17\,\%; Рождённое тело без преднапряжения. Специального кейса на склейку нет.
mesh tet size=125 bonding=1 glue=full

6.3Склейка на несогласованных сетках (tied)бета

Склейка tied нужна, когда сетки двух тел на стыке разные: разная плотность, раздельные узлы. Каждому узлу ведомой стороны (slave) находится точка проекции на грань ведущей стороны (master), и перемещение ведомого узла выражается через узлы грани барицентрическими весами w_k:

\mathbf{u}_s - \sum_{k} w_k\,\mathbf{u}_{m_k} = \mathbf{0}.

Это три уравнения связи на узел, для квадратичных сеток серединные узлы входят в пары. Связь выполняется точно: ведомые степени свободы исключаются из системы, как у жёсткой связи (Решатели), множители Лагранжа не вводятся. Метод — узел-к-поверхности (NTS); он основан на общей постановке контакта в Wriggers P., Computational Contact Mechanics, 2006.

Настройки панели «Соединения»:

  • Формулировка. «Авто» выбирает кинематическую связь для прямого решателя и пружинную для итерационного решателя с алгебраическим многосеточным предобуславливателем на больших сборках. «Кинематический (Exact MPC)» и «Штрафной» задают выбор явно.
  • Предел зазора MPC. Отношение расстояния ведомый–ведущий к размеру ведущей грани; пара за пределом отвергается (по умолчанию 0.8).

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

Ограничения. Метод односторонний: результат слегка зависит от выбора ведомой стороны, ведомой следует назначать более мелкую сетку. Метод NTS не проходит патч-тест на произвольных несогласованных сетках так строго, как mortar-метод; сохранение равнодействующей контролируется отдельным кейсом. Поддержаны сборки на тетраэдрах (первого и второго порядка). В нелинейной статике и в неявной динамике tied и bonded отказывают: там нет уравнений связи.
Проверка. Независимого кейса, где склейка tied — единственный режим пары, в каталоге нет: сохранение равнодействующей на несогласованных сетках проверено для контакта без трения (Контакт: несовместные сетки). Склейка проверена модульными тестами компилятора пар и сборкой UI. Статус бета.
contact body1 body2 tied

6.4Штрафная связь (penalty)бета

Пара penalty использует ту же геометрию пар, что tied, но связь податлива: между ведомым узлом и точкой на ведущей грани ставится пружина жёсткости k. При k\to\infty решение стремится к tied. Режим нужен, когда точная связь ухудшает обусловленность на больших сборках или когда стык должен немного уступать.

Пользователь задаёт множитель к расчётной жёсткости (по умолчанию 1.0, для склейки 10.0) или собственное значение k в Н/м.

Ограничения. Решение зависит от k: слишком малая жёсткость даёт заметное относительное проскальзывание на склеенном стыке, слишком большая ухудшает обусловленность. Связь двусторонняя: растяжение стык передаёт. Односторонний контакт — режим frictionless. В нелинейной статике и динамике penalty отказывает.
Проверка. Кейсов в каталоге нет, покрыто модульными тестами и тестами компилятора. Статус бета.

6.5Контакт без трения (frictionless)стабильно

Тела передают только сжатие по нормали к поверхности. Условия Синьорини для зазора g и нормального давления p:

g \ge 0,\qquad p \ge 0,\qquad p\,g = 0 ,

зазор g = g_0 + \mathbf{n}\cdot\bigl(\mathbf{u}_s - \sum_k w_k\,\mathbf{u}_{m_k}\bigr) для узла s ведомой стороны и точки на ведущей грани. Условия регуляризуются штрафом с потенциалом \Pi_c=\tfrac12\,k\sum\langle -g\rangle^2 (где \langle x\rangle=\max(x,0)): давление p=k\langle -g\rangle, касательная жёсткость активной пары k\,\mathbf{n}\mathbf{n}^{\mathsf T} симметрична и положительно определена. Пара активна при проникновении g<0; чтобы набор активных пар не дребезжал, переключение дополнено гистерезисом.

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

Название mortar в продукте относится к постановке с весовым зазором. Связь строится по узлам ведомой грани: каждому ведомому узлу сопоставляются до трёх узлов ведущей грани с барицентрическими весами, зазор и нормаль берутся в точке проекции. Полного интегрирования сегмент-к-сегменту с отсечением многоугольников (Popp A., Gee M., Wall W., A finite deformation mortar contact formulation using a primal–dual active set strategy, 2009) в продукте нет. Расширенный лагранжиан (метод Узавы) реализован в ядре как исследовательская опция; в продуктовый путь не включён, и решение держится на штрафе. Поэтому остаётся остаточное проникновение порядка p/k.

Пользователь задаёт жёсткость контакта k (Н/м) или множитель к расчётной, число шагов нагрузки и тела пары. Результаты: давление контакта по граням, статус (раскрыт, контакт), контактная сила, история по шагам нагрузки.

Ограничения. Режим доступен только в десктопном приложении; в браузере расчёт отказывает с сообщением. Постановка: сборки на тетраэдрах (линейных и квадратичных). Режим не сочетается с ненулевым заданным перемещением на грани, со связью по нормали на неосевых гранях и с силой на тело: эти расчёты отказывают с объяснением. Смешанный набор режимов в одной сборке (часть пар склеена, часть без трения) не поддержан: одна сборка — одна система уравнений. Метод однопроходный: результат слегка зависит от выбора ведомой стороны. Остаточное проникновение растёт при слабом k и ухудшает обусловленность при очень большом. Самоконтакт в этом пути не поддержан (он есть в нелинейной статике).
Проверка. Платформа всех чисел — нативная. Контакт Герца: сфера на полупространстве, давление p_0 — отклонение 0.67\,\%; Контакт Герца: линейный; Равномерный патч, 0.01\,\%; Несовместные сетки, сохранение равнодействующей; Посадка с натягом; Палец в проушине; Фланцевый стык с преднатягом; Кулачок и толкатель; Зубчатое зацепление. Раскрытие и замыкание, зазор-пружина: Зазор–пружина, Раскрытие и замыкание (проверены на уровне нелинейного ядра). Давление Герца проверено кейсом; сближение тел \delta даёт большее отклонение (около 4.7\,\% в приёмке ядра): штамп не абсолютно жёсткий, а штраф конечен.
contact frictionless
mesh tet size=0.25 order=1 bonding=0
load surface number 8 force=-25 component=z
solve
extract contact_pressure target="surface number 7"

6.6Контакт с трением Кулонабета

Трение ограничивает касательную силу в контакте законом Кулона: \lVert\mathbf{t}_t\rVert\le\mu\,p_n, сцепление ниже предела и скольжение на пределе. Закон необратим, поэтому ответ зависит от истории нагружения: для каждой активной точки контакта запоминается принятое состояние.

В неявной переходной динамике для каждого ведомого узла хранится положение на ведущей грани и накопленное упругое проскальзывание \mathbf{e}. Касательная сила регуляризована длиной s_{\mathrm{tol}} — упругим проскальзыванием на пределе Кулона:

\mathbf{f}_t = \frac{\mu\,p_n}{s_{\mathrm{tol}}}\;\mathbf{e},\qquad \lVert\mathbf{e}\rVert < s_{\mathrm{tol}},\qquad p_n = \varepsilon\,(-g),

где пробное упругое проскальзывание \mathbf{e}_{\mathrm{tr}}=\mathbf{e}_{\mathrm{old}}+\Delta\mathbf{s}_t складывается из предыдущего значения и касательного смещения узла относительно материальной точки ведущей грани, а затем плавно ограничивается длиной s_{\mathrm{tol}}. Ограничение непрерывно дифференцируемо, поэтому касательная жёсткость определена и в зоне перехода. Закон даёт настоящее статическое трение: блок под горизонтальной силой ниже предела остаётся на месте. Касательная находится центральными разностями силы пары и согласована с ней, включая движение проекции при смене фасета.

Пользователь задаёт коэффициент \mu в пределах 0<\mu\le10 (по умолчанию в форме 0.3) и необязательно длину s_{\mathrm{tol}} (параметр slip, м; по умолчанию доля ребра грани контакта). Результаты: контактное давление, статус (раскрыт, сцепление, скольжение), счётчики сцепления и скольжения, работа сил трения, число смен фасета.

В ядре нелинейного контакта есть и квазистатический вариант с возвратом на конус Кулона (проба сцепления и радиальный возврат при \Phi=\lVert\mathbf{t}_{\mathrm{tr}}\rVert-\mu p_n>0, согласованная касательная для скольжения), он проверен на аналитических задачах; в продукте он не подключён.

Ограничения. Трение доступно только в неявной переходной динамике, только в десктопном приложении, для тетраэдров первого и второго порядка. Статика, модальный анализ, устойчивость, тепло, гармоника и нелинейная статика с парой, где задано трение, отказывают: расчёт не откатывается к паре без трения. Статическую задачу с трением в продукте приходится решать как динамическую до установления. Недемпфированная схема Ньюмарка при трении может заставлять тело подпрыгивать на штрафных пружинах и терять торможение; рекомендуется HHT-\alpha или демпфирование Рэлея. Начальное состояние u0=static с парой, где задано трение, отказывает. Тела не должны делить узлы.
Проверка. Эталон — закон Кулона для твёрдого тела (нативный стенд, блок на плите, \mu=0.3): ошибки скорости и положения не более 0.06\,\%, путь торможения не более 0.13\,\%, работа трения против \tfrac12 mv_0^2 — 0.3\,\% при допуске 5\,\% для Tet4 и Tet10; сила ниже предела не сдвигает блок. В каталоге верификации нет кейса именно на динамику с трением. Квазистатический вариант ядра проверен кейсами Кулон: сцепление и скольжение (\mu N=300 Н, переход при Q=\mu N), Наклонный блок (\mu=0.5 против \tan 20^\circ), Каттанео–Миндлин, 0.2\,\%; это проверка ядра на малых моделях, а не продуктовой цепочки.
contact body1 body2 frictional mu=0.3
solve transient dt=0.001 tend=0.3

6.7Контакт при больших перемещениях и самоконтактбета

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

g=(\mathbf{x}_s-\mathbf{p})\cdot\mathbf{n},

где \mathbf{n} — нормаль контакта, интерполяция узловых нормалей ведущей грани: она непрерывна через рёбра и вершины, иначе направление силы скачет над ребром между некомпланарными фасетами. Контакт активен при g<0; на ведомый узел действует штраф \varepsilon\,g\,\mathbf{n} в конвенции внутренней силы ядра, на узлы ведущего треугольника — равная и противоположная сила с барицентрическими весами, так что третий закон Ньютона выполняется точно. Касательная согласована с силой и находится центральными разностями по двенадцати координатам пары (она несимметрична). Встречные нормали отсекают ложные пары: узел нижней грани тела не «проникает» в верхнюю грань того же тела сквозь толщу.

Штраф выбирается автоматически: \varepsilon=\kappa\,E\,h, где E — меньший из модулей двух тел, h — средняя длина ребра граней, \kappa — множитель, который задаёт пользователь (по умолчанию 10). Самоконтакт включается флажком на вкладке расчёта (там же задаётся \kappa): поверхность тела контактирует сама с собой, треугольники в топологической окрестности узла из поиска исключаются. Для узловых списков балок и оболочек есть команды nlgeom contact и nlgeom beamcontact.

Ограничения. Только нативный путь (десктоп), только тетраэдры и гексаэдры (линейные и квадратичные). Только контакт без трения: пары с трением, склейка и penalty отказывают (нет ни уравнений связи, ни трения), расчёт не заменяется линейным. Тела с общими узлами в качестве контактной пары отказывают: между склеенными узлами нечего размыкать. Штраф даёт проникновение, которое убывает с ростом \kappa, но ухудшает обусловленность. Поиск проникновения ограничен радиусом, поэтому слишком большой шаг нагрузки может пропустить касание: шаг следует держать малым.
Проверка. Нелинейный решатель: активный набор контакта, 1.42\,\% (оболочечный буфер, нативный путь); ядро NTS — кейсы Без трения: скольжение (0.06\,\%), Зазор–пружина, Раскрытие и замыкание. Кейса именно на самоконтакт тела в каталоге нет, статус бета.
nlgeom on method=load steps=10
contact body1 body2 frictionless
solve

6.8Контакт балок и оболочекэксперимент

Для балок контакт линия–линия (Wriggers P., Zavarise G., On contact between three-dimensional beams undergoing large deflections, 1997): для пары отрезков берутся ближайшие точки осей \mathbf{x}_1(\xi), \mathbf{x}_2(\zeta), зазор

g=\lVert\mathbf{x}_1(\xi)-\mathbf{x}_2(\zeta)\rVert-(r_1+r_2),

где r — радиусы сечений, сила — штраф вдоль нормали, переносимый на четыре узла линейными весами (сумма сил и сумма моментов равны нулю). Для параллельных отрезков берётся середина перекрытия и сила умножается на долю перекрытия, чтобы результат не зависел от сдвига сеток. Возможен самоконтакт балки.

Для оболочек контакт строится по срединной поверхности со смещением на половину толщины: g = s\,(\mathbf{x}_s-\mathbf{p})\cdot\mathbf{n}-(o_s+o_m), где o — смещения, s=\pm1 — сторона. Сторона ведущей двусторонней оболочки запоминается по паре узел–треугольник, иначе узел, прошедший срединную поверхность за одну итерацию, выталкивался бы с обратной стороны.

Пары задаются командами nlgeom contact и nlgeom beamcontact со списками узлов в нумерации модели, радиусами сечений и штрафом.

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

6.9Контакт в явной динамикебета

В явной схеме действует эродирующий контакт: односторонний штрафной узел–сегмент по всей внешней поверхности живых элементов. Поверхность обновляется по мере эрозии, ударник встречает вновь открытую каверну. Жёсткость штрафа задаётся долей жёсткости ведущей грани \alpha (параметр contactStiffness, по умолчанию 0.25): слишком малая даёт глубокое проникновение, слишком большая — прирост энергии, который виден в энергетическом балансе. В истории выводятся энергия контакта и общий баланс.

Описание схемы, эрозии и критериев — в разделе Нелинейные расчёты и динамика.

Ограничения. Только HEX8; без трения; контакт ребра с ребром не ловится.
Проверка. Нативные тесты: обмен скоростями при ударе стержней в пределах 2\,\%, баланс энергии в пределах 1\,\%, без контакта стержни проходят насквозь. Кейса именно на контакт в каталоге нет; эрозия: Explicit: эрозия по пластической деформации, 1.457\,\%.
explicit erodingContact=on contactStiffness=0.25

6.10Тепловой контактбета

Тепловой контакт связывает температуры двух раздельных тел через проводимость стыка h_c: q_c=h_c\,(T_A-T_B). Он не зависит от механического контакта и на механику не влияет. Постановка, допуск зазора и результаты описаны в разделе Теплопередача и мультифизика; там же сверка с эталоном.

В ядре есть и модель проводимости, зависящая от давления и зазора, h_c(p_n,g_n) по типу Купера–Микича–Яновича (Cooper M., Mikic B., Yovanovich M., Thermal contact conductance, 1969): при замкнутом стыке h_c=h_0+h_p\,(p_n/p_{\mathrm{ref}})^{\alpha}, при зазоре h_c=k_{\mathrm{gas}}/(g_n+g_0) с отсечкой по предельному зазору. Эта модель проверена только внутренним тестом ядра; в интерфейсе и сценарии она не подключена: пользователь задаёт постоянную h_c, и давление механического контакта на проводимость не влияет.

Ограничения. В продукте h_c постоянна. Тепловыделение от трения не считается.
Проверка. Тепловое контактное сопротивление, отклонение 0.0003\,\% (нативный путь).
contact body1 body2 thermal hc=1000

6.11Когезионные зоны (CZM)эксперимент

Когезионная зона описывает расслоение клеевых и композитных швов законом «тяга–раскрытие». В продукте закон билинейный: упругая ветвь с жёсткостью K до пиковой тяги T_{\max}, затем линейное разупрочнение до полного разрушения при раскрытии \delta_f:

\delta_0=\frac{T_{\max}}{K},\qquad \delta_f=\frac{2\,G_c}{T_{\max}},\qquad D=\frac{\delta_f\,(\delta_m-\delta_0)}{\delta_m\,(\delta_f-\delta_0)},\qquad T=(1-D)\,K\,\delta ,

где D\in[0,1] — скалярная переменная повреждения, не убывающая при разгрузке; G_c — энергия разрушения (площадь под диаграммой). Для смешанной моды эффективное раскрытие \delta_m=\sqrt{\delta_n^2+\delta_s^2}, критерий разрушения — степенной по Бенцеггаху–Кеньону (Benzeggagh M., Kenane M., 1996):

G_c = G_{Ic} + (G_{IIc}-G_{Ic})\left(\frac{G_{II}}{G_I+G_{II}}\right)^{\eta},

где G_I=\tfrac12 K_n\delta_n^2, G_{II}=\tfrac12 K_t\delta_s^2, показатель \eta по умолчанию 1.45. В смешанной моде \delta_0 и \delta_f вычисляются для текущего соотношения мод; начало повреждения эквивалентно квадратичному критерию номинальных напряжений при пропорциональном нагружении (Camanho P., Dávila C., 2002).

Пользователь задаёт пару поверхностей (ведущая и ведомая) и параметры; в панели «Соединения» у пары есть флажок когезионного контакта с полями прочности T_n и энергии G_{Ic}, остальные параметры доступны командой сценария: жёсткости K_n, K_t (Н/м³), прочности T_n, T_s (Па), энергии разрушения G_{Ic}, G_{IIc} (Дж/м²), показатель \eta. Результат: максимальное и среднее повреждение D по интерфейсу, пиковые нормальная и касательная тяга, максимальное раскрытие, число обработанных пар узлов.

Важно, как закон входит в расчёт. В продукте интерфейс вычисляется как постпроцессор: по перемещениям уже готового решения скачок на каждом ведомом узле сравнивается с ближайшим ведущим узлом, и считаются повреждение и тяги. Равновесие с разупрочнением внутри глобальной итерации не пересчитывается, поэтому результат не показывает, как падает несущая способность шва по мере роста трещины. Интеграция закона в нелинейное решение (пары контакта с повреждением) есть в ядре на уровне пары узел–поверхность, но в интерфейс и сценарий не выведена.

Ограничения. Постпроцессорная оценка: ближайший ведущий узел вместо проекции на грань; результат зависит от сетки на шве. Сжатие в оценке учитывается по модулю как раскрытие. Продвижение трещины и потеря равновесия не моделируются. Для развития расслоения с падением жёсткости пока нужен расчёт ядра вне интерфейса.
Проверка. Закон проверен на уровне ядра: Билинейная когезионная зона (G_c=0.05 Н/мм, T(0.005)=5.5556 МПа, совпадение точное), Смешанная мода (начало повреждения при t_s=8 МПа по квадратичному критерию), Двухконсольная балка: теория, Двухконсольная балка на несовместной сетке, 0.09\,\%, Балка с торцевым надрезом (мода II). Это проверка закона на аналитике, а не расчёт трёхмерной сборки: цепочка от интерфейса продукта до результата отдельного эталона не имеет, поэтому статус экспериментальный.
contact cohesive master="surface number 3" slave="surface number 4" kn=1e12 kt=1e12 tn_max=30e6 gc_n=450

6.12Признак «сошлось» для контактабета

В контактной задаче сходимость Ньютона не гарантирует физического равновесия: набор активных пар может дребезжать, а штрафная задача может «сойтись» к решению с неподвижным телом без опоры. Поэтому признак «сошлось» складывается из нескольких условий, а не только из итераций Ньютона.

  • Для контакта без трения в пошаговом режиме нужно достигнуть полной нагрузки: если шаги оборваны или отменены, признак ложный.
  • Физическая невязка равновесия, посчитанная по свободным степеням свободы (без стабилизирующей жёсткости), не должна превышать допуск в процентах нагрузки. Только это условие не зависит от того, что сделал Ньютон.
  • Если Ньютон не сошёлся, допускается запасной критерий малого проникновения, но только при наличии пар с проникновением в итоговом решении. Расчёт без контакта под нагрузкой не получает «сошёлся» из-за пустого набора.
  • Сообщение называет число активных пар, невязку равновесия в процентах нагрузки и максимальное перемещение; для тела без опоры («механизм») или несомкнувшегося контакта это сказано явно.

Для нелинейной статики признак строится по критерию Ньютона–Рафсона (см. Нелинейные расчёты и динамика), и результат не принимается, если задача не сошлась. Режим, который расчёт не несёт, отказывает: тела с общими узлами не берутся в контакт, трение в статике не откатывается к паре без трения.

Ограничения. Допуск на невязку — единый и не настраивается из интерфейса. Для задачи с механизмом (тело без опоры) невязка велика, но решение зависит от округления: такую модель нужно исправить закреплением.
Проверка. Проверено реальными вызовами нативного решателя на контактной сборке с перевёрнутой нагрузкой (растяжение вместо сжатия): тело уходит на километры, признак ложный, сообщение называет невязку и причину. Порча проверки красит соответствующие тесты. Кейса в каталоге нет: кейсы фиксируют ожидаемый результат, а здесь проверяется отказ. Статус бета.

7Библиотека конечных элементов

↑ К оглавлению

Структурные элементы собираются в одну глобальную систему: у каждого узла шесть степеней свободы [u_x, u_y, u_z, \theta_x, \theta_y, \theta_z]. Объёмные элементы несут только три перемещения; вращательные степени свободы узлов, к которым не подходят ни балки, ни оболочки, ни жёсткие связи, не имеют жёсткости и закрепляются автоматически. Так в одной модели сосуществуют тела, оболочки, балки, пружины и точечные массы.

Раздел описывает, какие элементы есть, в какой постановке построены и где у них пределы. Краткий каталог с кодами типов и числом узлов — на странице /docs/elements; сводная таблица в конце раздела сверена с кодом ядра.

7.1Общие соглашениястабильно

Все объёмные элементы изопараметрические (кроме Tet10, см. ниже). Градиенты функций формы по физическим координатам берутся через якобиан отображения:

\nabla N_i = \mathbf{J}^{-1}\,\frac{\partial N_i}{\partial \boldsymbol{\xi}},\qquad \mathbf{J}_{ab} = \sum_i \frac{\partial N_i}{\partial \xi_a}\,x_{i,b}.

Деформации и напряжения записываются в порядке Фойгта [\varepsilon_{xx},\varepsilon_{yy},\varepsilon_{zz},\gamma_{xy},\gamma_{yz},\gamma_{zx}] с инженерными сдвигами \gamma = 2\varepsilon. Матрица \mathbf{B} собирается из градиентов форм: блок узла i — это \partial N_i/\partial x в строке \varepsilon_{xx} и столбце u_x, \partial N_i/\partial y в строке \varepsilon_{yy} и столбце u_y, \partial N_i/\partial z в строке \varepsilon_{zz} и столбце u_z, а сдвиговые строки несут по два градиента (например, \gamma_{xy}: \partial N_i/\partial y в столбце u_x и \partial N_i/\partial x в столбце u_y). Изотропная упругость:

\mathbf{C} = \begin{bmatrix} \lambda + 2\mu & \lambda & \lambda & 0 & 0 & 0\\ \lambda & \lambda + 2\mu & \lambda & 0 & 0 & 0\\ \lambda & \lambda & \lambda + 2\mu & 0 & 0 & 0\\ 0 & 0 & 0 & \mu & 0 & 0\\ 0 & 0 & 0 & 0 & \mu & 0\\ 0 & 0 & 0 & 0 & 0 & \mu \end{bmatrix},\quad \lambda = \frac{E\nu}{(1+\nu)(1-2\nu)},\quad \mu = \frac{E}{2(1+\nu)}.

Матрица жёсткости элемента — квадратура по точкам Гаусса:

\mathbf{K}_e = \int_{V_e} \mathbf{B}^{\mathsf T}\mathbf{C}\,\mathbf{B}\,dV \approx \sum_g w_g \,\lvert\det\mathbf{J}_g\rvert\; \mathbf{B}_g^{\mathsf T}\mathbf{C}\,\mathbf{B}_g .

Те же функции формы и те же квадратуры использует геометрически нелинейный путь (Total Lagrangian): там касательная состоит из материальной и геометрической частей, \mathbf{K}_T = \mathbf{K}_{\text{mat}} + \mathbf{K}_{\text{geo}}, а материал по умолчанию — Сен-Венан–Кирхгоф (подробнее в разделе Нелинейные расчёты и динамика). Материалы с анизотропией, пластичностью и гиперупругостью описаны в разделе Модели материалов; здесь рассматривается только сам элемент.

Граничные условия и связи (жёсткие области, уравнения связи) исключаются из системы точно, по схеме «ведущий — ведомый»: решается система \mathbf{T}^{\mathsf T}\mathbf{K}\,\mathbf{T}\,\mathbf{u}_r = \mathbf{T}^{\mathsf T}\mathbf{f}, а не штрафная. Это не портит обусловленность и не даёт приближённого выполнения связей.

Единицы. Геометрия задаётся в миллиметрах (или в единицах, объявленных командой units), на границе решателя всё пересчитывается в СИ: метры, ньютоны, паскали, килограммы. Размеры сечений, толщины оболочек и массы точечных элементов пользователь вводит в тех же единицах, что и геометрию (массы — в килограммах).

Ограничения. В линейном пути материал объёмного элемента — изотропный упругий (E, \nu на элемент). Смешанной (перемещения–давление) формулировки для почти несжимаемых материалов нет; при \nu \to 0.5 линейные элементы запираются (см. Запирание).

7.2Линейный тетраэдр Tet4стабильно

Четырёхузловой симплекс с постоянной деформацией. Это основной элемент автоматической генерации сеток по произвольной CAD-геометрии: он устойчив к форме тела, но слабо передаёт изгиб.

Функции формы совпадают с барицентрическими координатами, N_i = L_i, i = 1,\dots,4. Градиенты \nabla L_i постоянны, поэтому \mathbf{B} тоже постоянна, а точное интегрирование даёт

\mathbf{K}_e = V_e\,\mathbf{B}^{\mathsf T}\mathbf{C}\,\mathbf{B},

то есть одна точка Гаусса в барицентре. Напряжение постоянно по элементу, \boldsymbol{\sigma} = \mathbf{C}\mathbf{B}\mathbf{u}_e; узловое поле строится осреднением по смежным элементам.

Элемент проходит кусочный тест на произвольно искажённой сетке: аффинное поле перемещений воспроизводится до машинной точности. Но постоянная деформация означает паразитную жёсткость на изгибе. На консольном брусе из \approx 1400 тетраэдров первая собственная частота завышена на 22\,\% (тот же размер элемента с Tet10 даёт -0.16\,\%). Для изгибающихся тел берите Tet10.

Ограничения. Изгиб и сдвиг в одном слое элементов по толщине передаются грубо; несжимаемые материалы запираются; напряжение разрывно между элементами.
mesh tet size=10 order=1

7.3Квадратичный тетраэдр Tet10стабильно

Десятиузловой элемент: четыре вершины и шесть середин рёбер. Квадратичное поле перемещений даёт линейно меняющуюся деформацию внутри элемента и снимает основную часть изгибного запирания Tet4 на той же сетке.

Функции формы через барицентрические координаты (N_i — вершина, N_{ij} — середина ребра между вершинами i и j):

N_i = L_i\,(2L_i - 1),\quad i = 1,\dots,4;\qquad N_{ij} = 4\,L_i L_j .

Градиенты: \nabla N_i = (4L_i - 1)\nabla L_i, \nabla N_{ij} = 4(L_j\nabla L_i + L_i\nabla L_j). Интегрирование — четырёхточечное правило степени 2 с точками (a,b,b,b) и перестановками, a = 0.5854101966, b = 0.1381966011, веса V_e/4. Для элемента с прямыми рёбрами подынтегральное выражение \mathbf{B}^{\mathsf T}\mathbf{C}\mathbf{B} — многочлен второй степени, и правило точное.

Важная особенность реализации: в основном ассемблере Tet10 субпараметрический. Геометрия определяется четырьмя вершинами (отображение линейное, якобиан постоянен), а поле перемещений — десятью узлами. Положения серединных узлов, смещённых на кривую CAD-поверхности, в матрице жёсткости не используются: элемент интегрируется как прямоугольный по рёбрам. Это сохраняет невырожденность на кривых границах, но объём и жёсткость элементов у криволинейной границы считаются по хорде, а не по дуге. Для гладкой границы ошибка убывает с размером элемента, но отдельного повышения точности за счёт кривых рёбер нет. Так построен основной ассемблер; в ветке расчёта нескольких тел со склейкой и контактом используются другие реализации элементов, и их отображение может отличаться.

Поверхностные нагрузки на гранях Tet10 интегрируются согласованно по шестиузловым треугольникам (Tri6), а не раскладываются по вершинам поровну.

Напряжение в ядре вычисляется в центроиде элемента, где вклад угловых узлов обнуляется (4L_i - 1 = 0). Для узловой картины постпроцессор считает напряжение в каждом узле элемента и осредняет по числу смежных элементов, поэтому на границе материалов и у концентраторов поле сглажено.

Ограничения. Кривизна рёбер в \mathbf{K} не учитывается (см. выше). Поле напряжений разрывно между элементами; узловое осреднение сглаживает пики. Объёмное запирание при \nu \to 0.5 ослаблено, но не снято.
Проверка. Гармонический отклик консольной балки (P2 Tet10), субмоделирование: концентрация у отверстия, Кирш (P1 → P2). На консоли 20\times20\times200 мм при размере элемента 10 мм первая частота Tet10 отличается от аналитики Эйлера–Бернулли на -0.16\,\% против +22.35\,\% у Tet4.
mesh tet size=10 order=2

7.4Гексаэдр Hex8стабильно

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

Функции формы в натуральных координатах (\xi,\eta,\zeta) \in [-1,1]^3:

N_i = \frac{1}{8}\,(1 + \xi_i\xi)(1 + \eta_i\eta)(1 + \zeta_i\zeta).

Интегрирование — полное, 2\times2\times2 точки Гаусса в \pm 1/\sqrt{3}, веса равны единице. Матрица \mathbf{K}_e собирается по формуле из раздела «Общие соглашения» без каких-либо модификаций.

Здесь важно сказать прямо: в линейном пути у Hex8 нет ни B-bar (селективной объёмной проекции), ни несовместных мод, ни редуцированного интегрирования. Элемент испытывает сдвиговое запирание на изгибе, когда по высоте балки стоит мало элементов, и объёмное запирание при \nu \to 0.5. Лечение — измельчение сетки по высоте или переход на Hex20. Примеры: консольная балка на структурированной сетке 128\times8\times8 даёт 1.03\,\% отклонения от Эйлера–Бернулли; консоль на сетке 96\times6\times6 (шесть элементов по высоте) даёт около 2\,\% из-за сдвигового запирания. В явной динамике Hex8 — отдельный одноточечный элемент с контролем «песочных часов» по Фланагану–Белычко; он не связан с матрицей из этого подраздела.

Напряжение вычисляется в центре элемента, \xi = \eta = \zeta = 0.

Ограничения. Запирание на изгибе и при почти несжимаемом материале. Для точных значений напряжений на изгибе используйте Hex20 или не менее 4–6 слоёв по толщине. Для искажённых элементов (\det\mathbf{J} близок к нулю) точность резко падает.
mesh hex size=5 order=1

7.5Гексаэдр Hex20 (серендипов)стабильно

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

Функции формы серендипова семейства. Вершина с координатами (\xi_i,\eta_i,\zeta_i) = (\pm1,\pm1,\pm1):

N_i = \frac{1}{8}(1 + \xi_i\xi)(1 + \eta_i\eta)(1 + \zeta_i\zeta)\,(\xi_i\xi + \eta_i\eta + \zeta_i\zeta - 2).

Середина ребра, параллельного оси \xi (\xi_i = 0):

N_i = \frac{1}{4}(1 - \xi^2)(1 + \eta_i\eta)(1 + \zeta_i\zeta),

для рёбер вдоль \eta и \zeta — по аналогии. Интегрирование 3\times3\times3 (27 точек Гаусса, \pm\sqrt{0.6} и 0 с весами 5/9, 8/9, 5/9). В отличие от Tet10, Hex20 полностью изопараметрический: используются координаты всех двадцати узлов, поэтому кривизна рёбер на CAD-границе учитывается в \mathbf{J}.

Напряжение вычисляется в центре элемента. Элемент проходит кусочный тест на искажённой сетке до машинной точности; на одиночной консоли снятие запирания относительно Hex8 существенное.

Ограничения. Генерируется структурированным гексаэдральным мешером для ортогональных областей (mesh hex … order=2); произвольные CAD-тела разбиваются тетраэдрами. В одной сетке с Tet10 Hex20 возможен только в экспериментальном виде, см. Квадратичный переход Hex20–Tet10. Узловое осреднение напряжений использует значения в центрах элементов.
Проверка. Элемент задействован в наборе гиперупругих кейсов, например нео-гукова упругость, одноосное растяжение, тест на объективность и MMS на конечных деформациях. Линейный путь проверен кусочным тестом и сравнением с Эйлером–Бернулли в тестах ядра.
mesh hex size=5 order=2

7.6Гексаэдр Hex27 (триквадратичный)эксперимент

Двадцатисемиузловой элемент полного квадратичного базиса Лагранжа: к узлам Hex20 добавлены центры шести граней и центр тела. Функции формы — произведения одномерных квадратичных многочленов Лагранжа:

N_n(\xi,\eta,\zeta) = l_a(\xi)\,l_b(\eta)\,l_c(\zeta),\quad l_{-1}(u) = \tfrac12 u(u-1),\;\; l_0(u) = 1 - u^2,\;\; l_{+1}(u) = \tfrac12 u(u+1),

где (a,b,c) \in \{-1,0,1\}^3 — положение узла n. Интегрирование 3\times3\times3. Элемент полнее серендипова: точнее на сильном искажении и изгибе, но дороже.

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

Ограничения. Нет генерации сеток, нет кейса верификации. Проверка — кусочный тест и сравнение с Hex20 в тестах ядра.

7.7Призма Wedge6стабильно

Шестиузловая линейная призма: треугольник в основании и линейная интерполяция по высоте. Возникает в призматических слоях у стенки (inflation) и в переходах между гексаэдрами и тетраэдрами.

Функции формы — произведение барицентрических координат основания на линейный множитель по высоте:

N_i = L_{k}\,\frac{1 \mp \zeta}{2},

где k — номер вершины основания, знак минус для нижнего треугольника (\zeta=-1), плюс для верхнего. Интегрирование — произведение трёхточечного правила на треугольнике (точки (1/6,1/6), (2/3,1/6), (1/6,2/3), веса 1/6) и двухточечного правила Гаусса по высоте: всего шесть точек. Сумма весов равна объёму эталонной призмы, 1.

Элемент линейно полон, поэтому проходит кусочный тест на сшитом стыке с Tet4. Вырожденный (неположительный) якобиан останавливает расчёт с сообщением.

Ограничения. Линейный элемент, запирание на изгибе как у Hex8. Для призмы нет квадратичной версии (Wedge15 отсутствует).

7.8Пирамида Pyr5бета

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

Прямое «вырождение» гексаэдра в пирамиду (слияние четырёх верхних узлов) не линейно полно и не проходит кусочный тест, поэтому используется рациональный базис пирамидального элемента (Zgainski и соавторы). В реализации он записан в «схлопнутых» координатах, \hat a, \hat b \in [-1,1], w \in [0,1), где физические координаты сечения сужаются как (1-w):

N_i = \frac{1}{4}(1-w)(1 + \xi_i\hat a)(1 + \eta_i\hat b),\quad i=1,\dots,4;\qquad N_5 = w .

В физических координатах \xi = \hat a(1-w), \eta = \hat b(1-w) базис содержит рациональное слагаемое \xi_i\eta_i\,\xi\eta/(1-w) — отсюда название. Интегрирование: 2\times2 точки Гаусса по (\hat a, \hat b) и два узла Гаусса по w на [0,1], всего восемь точек. Точки не попадают в вершину w=1, где отображение вырождено. Объём равен трети произведения площади основания на высоту, как у настоящей пирамиды. Напряжение вычисляется на оси пирамиды при w = 1/2.

Ограничения. Квадратичного аналога нет (Pyr13 в ядре отсутствует). Элемент появляется только в переходном слое гибридных сеток. Вершина пирамиды — особая точка отображения; сильно вытянутая пирамида даёт плохую обусловленность.
Проверка. Отдельного кейса верификации нет. В тестах ядра: кусочный тест «гексаэдр → шесть пирамид с общим внутренним узлом» (внутренний узел воспроизводит линейное поле до 10^{-19}) и проверка сохранения объёма и массы. Статус бета — из-за узкой проверки.

7.9Гибридные сетки: Hex8, Wedge6, Pyr5, Tet4бета

Гибридная сетка соединяет слой гексаэдров или призм (у стенки отверстия, в зоне концентрации, в протяжённом блоке) с тетраэдральным остатком. Стык делается двумя способами: сшивкой по общим узлам (conformal; переход через Pyr5 и Wedge6) либо уравнениями связи узел–поверхность. Для конформного стыка грань Hex8 делится к центру на пирамиды, а пирамида на стороне двух Tet4 — на два Tet4 по той же диагонали, так что треугольные грани совпадают.

Корректность стыка проверяется кусочным тестом: на сшитой сетке «призмы + тетраэдры» воспроизводится однородное поле напряжений до 5\cdot10^{-13}. Напряжение в гибридной сетке считается в точке узла каждого элемента и осредняется по смежным элементам: центр первого слоя гексаэдров у стенки отверстия отстоит на полслоя, и значение в центре занижает пик напряжений на 12–15 %.

Ограничения. Гибридные сетки линейные (P1). Совместное использование зон гексаэдров с mesh … order=2 не поддерживается и отказывает с сообщением. Напряжение разрывно на стыке, осреднение — выбор визуализации, а не равновесная величина.
Проверка. Кусочный тест через сшитый стык, пластина с отверстием, концентрация напряжений (2.3\,\%), посадка с натягом (Ламе) (-2.5\,\%). Кейсы покрывают переход «призма–тетраэдр»; переход через пирамиды отдельным кейсом не покрыт.

7.10Квадратичный переход Hex20–Pyr13–Tet10эксперимент

Стык квадратичных элементов требует совпадения следов на общей грани: восьмиузловая грань Hex20 должна встретиться с двумя шестиузловыми гранями Tet10. Для этого есть два прототипа; из пользовательского конвейера (сценарий, мешер) они недоступны.

Первый — «общий след» (common trace) для плоских интерфейсов Hex20–Tet10. Грань несёт девять узлов: четыре угла, четыре середины рёбер и середину диагонали триангуляции. Условие совпадения следов — три линейных соотношения на узловые значения (девять значений должны быть значениями одного полного квадратичного многочлена на параллелограмме). Они применяются как уравнения связи, а ведущие степени свободы выбираются глобальным приведением Гаусса–Жордана в точной рациональной арифметике, так что жёсткие моды и все квадратичные поля сохраняются. Сетка собирается отдельным адаптером (вырезка прямоугольной полости из тела с Tet10 и вставка Hex20). На сетке из 96 Tet10 и одного Hex20 при заданном точном квадратичном поле на границе отклонение по перемещениям составило порядка 10^{-8}.

Второй — преобразователь линейной гибридной сетки в конформную квадратичную Hex20–Pyr13–Tet10 с общими гранями Quad8 и Tri6. Тринадцатиузловая пирамида Pyr13 — пирамидальный элемент второго порядка (5 вершин и 8 середин рёбер). Как элемент жёсткости Pyr13 в решателе отсутствует. Есть только функции формы и проверка якобиана в точках Гаусса на стороне подготовки сетки; в выпуск этот преобразователь не вошёл, расчёт на такой сетке недоступен.

Ограничения. Сценарий mesh order=2 вместе с зонами гексаэдров отказывает. Прототип общего следа рассчитан на плоские (параллелограммные) интерфейсы; для криволинейных стыков он не доказан. Переходные Wedge6 и Pyr5 не имеют квадратичных форм. Расчёт гибридных квадратичных сеток нужно считать исследовательским.
Проверка. Нативный расчёт собранной сетки и проверка порчей уравнений связи выполнялись в ходе разработки; в наборе кейсов верификации этого стыка нет.

7.11Запирание: что есть и чего нетстабильно

Запирание — паразитная жёсткость элемента, когда его интерполяция не может воспроизвести нужную деформацию. Ниже честный перечень того, что реализовано.

  • Сдвиговое запирание изгибных элементов. Оболочка MITC4 снимает его предполагаемыми поперечными сдвигами (подраздел Оболочка MITC4). Треугольная оболочка DKT вводит кирхгофовы связи в серединах сторон и поперечных сдвигов не содержит. Балка Тимошенко строится стандартной \Phi-модификацией эрмитовой матрицы; при малой \Phi она переходит в элемент Эйлера–Бернулли без запирания.
  • Сдвиговое запирание объёмных элементов. Лечится порядком: Tet10, Hex20, Hex27 вместо Tet4, Hex8, Wedge6, Pyr5. Для Hex8 нет ни B-bar, ни несовместных мод, ни редуцированного интегрирования (в линейном пути).
  • Объёмное запирание при \nu \to 0.5. Смешанной формулировки нет: по мере приближения \nu к 0.5 линейные элементы жёстче, чем должны быть. Квадратичные элементы запирание ослабляют, но не снимают; для почти несжимаемых материалов используйте гиперупругие модели (см. Модели материалов).
  • F-bar. Для мультипликативной пластичности конечных деформаций \mathbf{F} = \mathbf{F}_e\mathbf{F}_p на элементах Hex8, Hex20, Hex27 и Tet10 вводится объёмное осреднение градиента деформации (F-bar): \bar{\mathbf{F}} = (\bar J / J)^{1/3}\mathbf{F}, где \bar J — среднее по элементу. Этот код присутствует только в рабочей версии и в выпуске не вошёл; считайте его экспериментальным.
  • Явная динамика. Hex8 интегрируется в одной точке с точным объёмно-усреднённым градиентом и контролем «песочных часов» по Фланагану–Белычко (вязкая и жёсткостная формы).
  • Мембранное запирание оболочек. Мембрана четырёхугольной оболочки — обычный билинейный Q4 с полным интегрированием, без несовместных мод; на грубых сетках при изгибе в плоскости он жёстче точного решения. Для треугольной оболочки мембрана — CST постоянной деформации.
Ограничения. Если задача чувствительна к запиранию (изгиб тонкого тела, почти несжимаемый материал), измельчайте сетку по толщине и сравнивайте два порядка элемента на одной геометрии.

7.12Балка Тимошенкостабильно

Двухузловой пространственный стержневой элемент для каркасов, ферм и рёбер жёсткости. Шесть степеней свободы в узле, двенадцать на элемент. Материал и сечение задаются шестью числами: E, G, A, I_y, I_z, J. Модуль сдвига берётся как G = E/(2(1+\nu)).

Жёсткость в локальных осях (x вдоль оси от узла 1 к узлу 2) — замкнутая форма, интегрирования по точкам нет. Осевая и крутильная части:

k_{u} = \frac{EA}{L},\qquad k_{\theta_x} = \frac{GJ}{L}.

Изгиб в плоскости xy (степени свободы v_1,\theta_{z1},v_2,\theta_{z2}):

\mathbf{k}_{xy} = \frac{E I_z}{(1+\Phi_y)L^3} \begin{bmatrix} 12 & 6L & -12 & 6L\\ 6L & (4+\Phi_y)L^2 & -6L & (2-\Phi_y)L^2\\ -12 & -6L & 12 & -6L\\ 6L & (2-\Phi_y)L^2 & -6L & (4+\Phi_y)L^2 \end{bmatrix},\qquad \Phi_y = \frac{12\,E I_z}{\kappa_y\,G A L^2}.

В плоскости xz матрица та же с заменой I_z \to I_y, \kappa_y \to \kappa_z и обратными знаками у связок «перемещение–поворот», так как \theta_y = -dw/dx. При \Phi \to 0 получается элемент Эйлера–Бернулли (длинная тонкая балка), при больших \Phi — сдвиговая податливость растёт; запирания нет. Коэффициент сдвига в продукте фиксирован: \kappa_y = \kappa_z = 5/6 (прямоугольник, классика Тимошенко); значение не зависит от формы сечения.

Ориентация. Локальная ось x — от узла 1 к узлу 2. Опорный вектор — глобальная Z (для почти вертикальной балки, \lvert x_z\rvert > 0.9999, — глобальная Y). Далее y = v_{\text{ref}} \times x, нормированный, z = x \times y. В глобальные оси матрица переводится преобразованием \mathbf{K}_g = \mathbf{T}^{\mathsf T}\mathbf{K}_l\,\mathbf{T}, \mathbf{T} = \operatorname{blockdiag}(\mathbf{R},\mathbf{R},\mathbf{R},\mathbf{R}).

Внутренние усилия на концах восстанавливаются как \mathbf{f}_l = \mathbf{k}_l\,\mathbf{u}_l с соглашением: N > 0 — растяжение, T > 0 — момент по правилу правой руки вдоль оси от узла 1 к узлу 2; перерезывающие силы и изгибающие моменты выдаются как внутренние усилия сечения.

Ограничения. Кручение — только по Сен-Венану; депланационной степени свободы (седьмой) нет, стеснённое кручение открытых тонкостенных профилей (двутавр, швеллер) не воспроизводится, как и потеря устойчивости плоской формы изгиба. Для таких задач используйте оболочечную модель стенок и полок. Материал балки линейно упругий. Геометрическая жёсткость \mathbf{K}_\sigma собрана от осевого усилия (формула Пшеменецкого), без вкладов от моментов и крутящего усилия.
Проверка. Консольная балка под распределённой нагрузкой (Тимошенко), кручение вала по Сен-Венану, потеря устойчивости стойки Эйлера при четырёх граничных условиях, изогнутая консоль MacNeal–Harder (96 прямых балочных элементов по дуге, 1.44\,\%), модальные кейсы NAFEMS FV2, FV4 и FV5 (глубокая балка; отклонение 3.49\,\%). Прямая и закрученная консоли MacNeal–Harder в наборе пройденных кейсов пока не опубликованы.
frame node at=0,0,0
frame node at=1000,0,0
frame member 1 2 section=rect w=40 h=80
frame support node=1 dofs="all"
frame load node=2 force=0,0,-5000

7.13Расширенная балка: сдвиг, смещения и неструктурная массастабильно

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

  • Крен и опорный вектор. Поворот сечения вокруг оси балки на заданный угол и произвольный опорный вектор, задающий плоскость xy (вместо автоматического).
  • Центробежный момент I_{yz}. Если оси сечения не главные, элемент поворачивается на угол главных осей \alpha, \tan 2\alpha = -2I_{yz}/(I_y - I_z), где изгиб в двух плоскостях развязан.
  • Смещение осевой линии. Центр сечения смещён от узла на каждом конце независимо (жёсткое плечо): \mathbf{u}_c = \mathbf{u}_n + \boldsymbol{\theta}\times\mathbf{r}, \boldsymbol{\theta}_c = \boldsymbol{\theta}_n. Гибкая длина — расстояние между центрами сечений на концах. Так моделируется ребро жёсткости, лежащее на поверхности листа, с учётом теоремы Штейнера: вместо искусственного увеличения моментов инерции эксцентриситет передаётся геометрически.
  • Центр сдвига. Элемент строится в центре сдвига, где изгиб и кручение развязаны; к центру сечения он переводится тем же жёстким плечом \mathbf{s}: \mathbf{K}_c = \mathbf{T}_s^{\mathsf T}\mathbf{K}_{sc}\mathbf{T}_s. Появляется связь изгиб–кручение, когда силовая линия проходит не через центр сдвига.
  • Коэффициенты сдвига \kappa_y, \kappa_z в данных элемента задаются отдельно (по умолчанию 5/6).
  • Неструктурная масса на единицу длины (кг/м): добавляется как согласованная трансляционная масса.

Жёсткость узла получается как \mathbf{K}_n = \mathbf{A}^{\mathsf T}\mathbf{K}_c\mathbf{A}, где \mathbf{A} переводит степени свободы узлов в степени свободы центров сечений. Те же \mathbf{A} применяются к массе, геометрической жёсткости и тепловой силе. При нулевых дополнительных данных матрицы совпадают с базовой балкой. Выбор типа автоматический: расширенный тип включается при ненулевом крене, смещениях, центре сдвига или неструктурной массе.

Ограничения. Центр сдвига и смещения заданы константами элемента; скручивающее поведение не учитывает депланацию. Вращательная инерция неструктурной массы не вводится. Коротационная версия (нелинейная) поддерживает только расширенную балку без смещений и без центра сдвига — иначе отказ.
assign beam edges=12,14 section=rect w=10 h=30 flush=outer

7.14Шарниры балокстабильно

Шарнир на конце балки отключает передачу одного из трёх моментов — M_y, M_z или крутящего T — в локальных осях балки. Допускаются шарнир на любом из концов и шарнир в пролёте.

Реализация — без штрафных пружин. Конец балки с шарниром получает собственный узел-двойник в тех же координатах: три перемещения двойника равны перемещениям основного узла, повороты связываются только по неосвобождённым осям уравнением \mathbf{a}\cdot(\boldsymbol{\theta}_d - \boldsymbol{\theta}_n) = 0. Освобождённый поворот остаётся свободной степенью двойника, и его жёсткость целиком даёт элемент — это статическая конденсация, выполняемая решателем. Узел, в котором все балки освобождены по одной оси, закрепляется по этому повороту; приложенный к такому повороту момент уравновесить нечем, расчёт отказывает с названием узла.

Ограничения. Поступательные механизмы (три шарнира подряд, ферма без раскосов) шарнирами не проверяются — это свойство схемы опор; такие модели вырождены.

7.15Библиотека сечений балокстабильно

Сечение выбирается по типу и размерам; из них вычисляются A, I_y, I_z, J и крайние волокна c_y, c_z (модули сопротивления W_y = I_y/c_z, W_z = I_z/c_y). Типы: прямоугольник, коробчатое сечение, сплошной круг, труба, двутавр, тавр, швеллер, уголок. В ядре предусмотрен и прямой ввод A, I_y, I_z, J, c_y, c_z набором чисел.

Составные профили считаются суммированием прямоугольников с переносом Штейнера, вырезы — прямоугольники с отрицательным знаком:

I_y = \sum_k \left( \frac{b_k h_k^3}{12} + A_k (z_k - z_c)^2 \right).

Постоянная кручения Сен-Венана:

  • круг и труба — полярный момент, J = \pi (D^4 - d^4)/32;
  • сплошной прямоугольник со сторонами a \ge b — формула Рорка, J = a\,b^3\left[\tfrac13 - 0.21\tfrac{b}{a}\left(1 - \tfrac{b^4}{12a^4}\right)\right];
  • коробка — тонкостенный замкнутый контур по Бредту, J = 4A_m^2\,t / s, где A_m — площадь по средней линии, s — её периметр, t — меньшая толщина стенки;
  • двутавр, тавр, швеллер, уголок — открытый тонкостенный профиль, J = \tfrac13\sum b_i t_i^3.

Для открытых профилей это оценка первого порядка: скругления и стыки полок со стенкой в A, I и J не учитываются.

По внутренним усилиям строится распределение напряжений по сечению: \sigma = N/A \pm M_y z/I_y \pm M_z y/I_z; касательные от перерезывающих сил — по формуле Журавского (статические моменты считаются численно по сетке точек сечения), от кручения — по формулам для круга и трубы, по Бредту для коробки и по теории тонкостенных открытых профилей для остальных. Эквивалентное напряжение — по Мизесу.

Ограничения. Сечения только перечисленных типов, без скруглений и без стеснённого кручения. Коэффициент сдвига фиксирован (5/6) и от формы сечения не зависит.
Проверка. Консоль Тимошенко, кручение Сен-Венана, полоса оболочки с тавровым стрингером, подкреплённая B-Rep панель с тавровыми рёбрами. Опубликованных кейсов на кручение некруглых и коробчатых сечений нет.

7.16Сечения по сетке и каталог профилейэксперимент

В ядро добавлен отдельный модуль характеристик произвольного сечения: многоугольник с вырезами. Площадь, центр тяжести, I_y, I_z, I_{yz} и главные оси вычисляются точно по контуру (теорема Грина). Кручение и сдвиг находятся конечно-элементным расчётом на сетке Tri6 из двух задач Пуассона для функции депланации \omega и функции поперечного сдвига \Psi:

J = I_p - \boldsymbol{\omega}^{\mathsf T}\mathbf{K}_\omega\boldsymbol{\omega},\qquad k_s = \frac{4(1+\nu)^2 I^2}{A\int \lvert\mathbf{g}\rvert^2\,dA}.

Здесь I_p — полярный момент, k_s — энергетический коэффициент сдвига (энергия сдвига балки Тимошенко приравнивается к энергии упругого решения), \mathbf{g} — сдвиговое поле. Определяется также центр сдвига. Модуль возвращает сдвиговую площадь k_s A: для узкого прямоугольника 5/6, для тонкой круговой трубы ровно 1/2. К модулю добавлен каталог стандартных профилей (двутавры IPE, HEA, HEB, HEM по EN и двутавры и швеллеры по ГОСТ 8239 и ГОСТ 8240).

Ограничения. Модуль не подключён ни к интерфейсу, ни к сценарию: расчётная балка продукта пользуется библиотекой из предыдущего подраздела с фиксированным \kappa = 5/6. Каталог моделирует профиль параллельными полками без скруглений; табличные I_y, I_z хранятся рядом для сверки. Проверка — тесты против точных решений; кейсов в наборе верификации нет.

7.17Коротационная балкастабильно

Для задач с большими перемещениями и поворотами балка пересчитывается в коротационной формулировке Баттини–Пакосте (Battini J.-M., Pacoste C., CMAME 191, 2002). Конфигурация задаётся положениями узлов и полными поворотами узлов \mathbf{R}_g; приращение поворота — пространственный спин \delta\mathbf{w}, обновление мультипликативное, \mathbf{R}_g \leftarrow \exp(\delta\mathbf{w})\,\mathbf{R}_g (сложение углов на конечных поворотах неверно).

Жёсткая рама элемента строится по хорде и усреднённой оси y узлов. Деформационные величины в этой раме малы при малой деформации: удлинение \bar u = l - l_0 и повороты \bar{\boldsymbol\theta}_i = \log\left(\mathbf{R}_r^{\mathsf T}\mathbf{R}_{g,i}\mathbf{R}_0\right). К ним применяется линейный элемент Тимошенко из предыдущих подразделов без изменений, \mathbf{f}_l = \mathbf{K}_l\,[\bar u, \bar{\boldsymbol\theta}_1, \bar{\boldsymbol\theta}_2]. Внутренние силы в глобальных осях получаются точной виртуальной работой; касательная матрица — численным дифференцированием аналитических внутренних сил с тем же спиновым обновлением, что и у Ньютона, поэтому согласована с итерацией.

Поддержаны базовая балка и расширенная без смещений и центра сдвига; иначе расчёт отказывает вслух, а не молча подменяет физику.

Ограничения. Материал упругий (линейный закон в рамке элемента), деформации в раме малы: элемент подходит для больших перемещений и поворотов при малых деформациях. Узловые моменты «осевые», сопряжены спину.

7.18Оболочка MITC4стабильно

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

Локальная рама строится по узлам: нормаль — векторное произведение диагоналей, ось e_1 направлена по ребру 1\to2 после ортогонализации к нормали. Четыре узла проецируются в плоскость рамы, коробление не моделируется. Матрица элемента в глобальных осях: \mathbf{K}_g = \mathbf{T}^{\mathsf T}\mathbf{K}_l\,\mathbf{T}. Для изгибной части используются не векторы вращения \theta_x, \theta_y, а углы наклона нормали \beta_x = -\theta_y, \beta_y = \theta_x, поэтому вращательный блок \mathbf{T} содержит дополнительную перестановку.

Мембрана — билинейный изопараметрический Q4 в плоском напряжении, полное интегрирование 2\times2:

\boldsymbol{\varepsilon}_m = [\partial_x u,\ \partial_y v,\ \partial_y u + \partial_x v]^{\mathsf T},\qquad \mathbf{A} = \frac{E t}{1-\nu^2}\begin{bmatrix}1 & \nu & 0\\ \nu & 1 & 0\\ 0 & 0 & \tfrac{1-\nu}{2}\end{bmatrix}.

Изгиб. Кривизны и поперечные сдвиги:

\boldsymbol{\kappa} = [\partial_x\beta_x,\ \partial_y\beta_y,\ \partial_y\beta_x + \partial_x\beta_y]^{\mathsf T},\qquad \boldsymbol{\gamma} = [\partial_x w - \beta_x,\ \partial_y w - \beta_y]^{\mathsf T},
\mathbf{D}_b = \frac{E t^3}{12(1-\nu^2)}\begin{bmatrix}1 & \nu & 0\\ \nu & 1 & 0\\ 0 & 0 & \tfrac{1-\nu}{2}\end{bmatrix},\qquad D_s = \kappa_s\,G\,t,\quad \kappa_s = \tfrac56 .

Изгибная часть интегрируется по 2\times2 Гаусса. Для сдвига применён MITC4 (Dvorkin E. N., Bathe K.-J., 1984; Bathe K.-J., Dvorkin E. N., 1985): ковариантные компоненты сдвига вычисляются только в четырёх точках привязки, в серединах сторон, и интерполируются линейно:

\gamma_\xi(\xi,\eta) = \tfrac12(1-\eta)\,\gamma_\xi^{A} + \tfrac12(1+\eta)\,\gamma_\xi^{C},\qquad \gamma_\eta(\xi,\eta) = \tfrac12(1-\xi)\,\gamma_\eta^{D} + \tfrac12(1+\xi)\,\gamma_\eta^{B},

где точки привязки A,C лежат при \xi=0, \eta=\mp1, а D,B при \xi=\mp1, \eta=0. Ковариантная компонента в точке привязки \gamma_\xi = \partial_\xi w - (\partial_\xi x\,\beta_x + \partial_\xi y\,\beta_y) вычисляется с якобианом именно в этой точке. В декартовы [\gamma_{xz},\gamma_{yz}] они переводятся на каждой точке интегрирования через \mathbf{J}^{-1}. Предполагаемые сдвиги снимают сдвиговое запирание при t/L \to 0. На прямоугольном элементе формулы совпадают с прямоугольной версией до машинной точности.

Напряжения вычисляются в центре элемента, \xi=\eta=0: мембранное \boldsymbol{\sigma}_m = \mathbf{C}_{ps}\boldsymbol{\varepsilon}_m плюс изгибное на верхнем и нижнем волокнах, \sigma_b = \pm 6m/t^2, m = \mathbf{D}_b\boldsymbol{\kappa}. Выдаются \sigma_{xx}, \sigma_{yy}, \tau_{xy} и эквивалент по Мизесу в плоском напряжении \sqrt{\sigma_{xx}^2 - \sigma_{xx}\sigma_{yy} + \sigma_{yy}^2 + 3\tau_{xy}^2} на каждом волокне; поперечные касательные напряжения этим путём не восстанавливаются. Узловая нагрузка от давления — согласованная (\int N_i\,p\,dA с полным якобианом); давление направлено против внешней нормали элемента.

Смещение отсчётной поверхности z_0 (параметр offset=bottom|middle|top или число в команде section shell) учитывается в пакете жёсткостей: \mathbf{B}' = \mathbf{B} + z_0\mathbf{A}, \mathbf{D}' = \mathbf{D} + 2z_0\mathbf{B} + z_0^2\mathbf{A}; тогда элемент эквивалентен жёстко смещённому изотропному (проверено тестом).

Ограничения. Мембрана Q4 без несовместных мод: на грубых сетках изгиб в плоскости листа получается жёстче точного. Четырёхугольник плоский, сильное коробление (закрученные сетки) искажает результат: в замерах разработки на закрученной балке MacNeal–Harder отклонение выходило за допуск 5\,\%, и пройденного кейса для неё нет. Поперечная сдвиговая жёсткость задана коэффициентом 5/6, эффекты толстой оболочки учитываются в рамках теории первого порядка.
Проверка. Прямоугольная пластина MacNeal–Harder (0.83\,\%), NAFEMS LE3 (полусферическая оболочка, 0.13\,\%), LE6 (косая пластина), круглая пластина Кирхгофа–Миндлина, модальные FV12 и FV22 (толстая ромбическая пластина).
units mm
section shell t=4
mesh shell size=40 element=quad pattern=structured

7.19Вращение вокруг нормали (drilling)стабильно

Мембрана Q4 и CST не содержат вращательной степени свободы \theta_z вокруг нормали, а у узла оболочки она есть и входит в глобальную систему. Без добавки матрица вырождена по этой степени свободы. Привязка \theta_z к нулю (заземляющая пружина) завышала бы жёсткость изгиба кривых оболочек, поэтому применён штраф Хьюза–Брецци (Hughes T. J. R., Brezzi F., 1989): он привязывает \theta_z не к нулю, а к вращению собственного поля перемещений элемента:

\Pi_d = \frac{1}{2}\,\gamma\,G\,t\int_{A_e}\left(\theta_z - \omega\right)^2 dA,\qquad \omega = \tfrac12\left(\frac{\partial v}{\partial x} - \frac{\partial u}{\partial y}\right).

Здесь \gamma — безразмерный параметр штрафа, подобранный по тестам и малый по сравнению с мембранной жёсткостью; в интерфейсе и в сценарии он не доступен. Штраф не вносит заметной энергии в состоянии чистой мембраны или чистого изгиба, а связывает вращения смежных некомпланарных оболочек на изломе. Для элемента с ламинатом используется мембранная сдвиговая жёсткость пакета.

Ограничения. Штраф — численная стабилизация, а не физическая жёсткость; значение параметра зашито в ядре и пользователем не меняется. Помимо штрафа в мембранные степени свободы вводится пренебрежимо малая стабилизация, исключающая плоские жёсткие моды несвязанной плоской оболочки.
Проверка. NAFEMS LE3 — криволинейная оболочка, чувствительная к способу стабилизации вращения вокруг нормали (0.13\,\%); прямоугольная пластина MacNeal–Harder и тесты инвариантности к ориентации элемента в пространстве.

7.20Треугольная оболочка CST и DKTстабильно

Трёхузловой плоский элемент для неструктурированных поверхностных сеток: треугольники строятся любым поверхностным мешером без рекомбинации. Состоит из мембраны CST, изгиба DKT и того же штрафа вращения вокруг нормали.

Мембрана — симплекс постоянной деформации: \mathbf{B} постоянна, \mathbf{K}_m = t\,A\,\mathbf{B}^{\mathsf T}\mathbf{C}_{ps}\mathbf{B}, одна точка. Изгиб — Discrete Kirchhoff Triangle (Batoz J.-L., Bathe K.-J., Ho L.-W., 1980): кривизны выражены через девять степеней свободы [w,\theta_x,\theta_y] трёх узлов при дискретном выполнении гипотезы Кирхгофа в серединах сторон, \boldsymbol{\kappa} = \mathbf{B}_{DKT}(\xi,\eta)\,\mathbf{u}. Интегрирование — три точки в серединах сторон с весами A/3. Поперечного сдвига в DKT нет, сдвигового запирания нет по построению.

Напряжение: мембранное постоянно по элементу, изгибное берётся в центроиде, \xi=\eta=1/3, \sigma_b = \pm 6m/t^2 на верхнем и нижнем волокне.

Ограничения. DKT применима к тонким оболочкам. На подробных сетках треугольная оболочка сходится хуже четырёхугольной: в замерах разработки на полусфере NAFEMS LE3 при густой сетке наблюдалось отклонение около -6\,\%. Мембрана CST требует густой сетки при изгибе в плоскости. Для ответственных расчётов предпочтительны четырёхугольные сетки (surface=quad).
Проверка. NAFEMS LE1 (эллиптическая мембрана с отверстием, сетка из MITC4 и CST+DKT, 3.62\,\% на грубой сетке). Остальные оболочечные кейсы набора выполнены на четырёхугольных сетках MITC4.
units mm
mesh shell size=20 surface=tri

7.21Ламинатная оболочка (пакет ABD)бета

Четырёхузловая оболочка MITC4, в которую вместо изотропных E, \nu, t подаётся конститутивный пакет на единицу ширины:

\mathbf{N} = \mathbf{A}\boldsymbol{\varepsilon}_0 + \mathbf{B}\boldsymbol{\kappa},\qquad \mathbf{M} = \mathbf{B}\boldsymbol{\varepsilon}_0 + \mathbf{D}\boldsymbol{\kappa},\qquad \mathbf{Q} = \mathbf{A}_s\boldsymbol{\gamma}.

Пакет собирается по слоям классической теории ламинатов с поперечным сдвигом первого порядка (FSDT). Для слоя k с границами z_{k-1}, z_k (от отсчётной поверхности):

\mathbf{A} = \sum_k \bar{\mathbf{Q}}_k\,(z_k - z_{k-1}),\quad \mathbf{B} = \tfrac12\sum_k \bar{\mathbf{Q}}_k\,(z_k^2 - z_{k-1}^2),\quad \mathbf{D} = \tfrac13\sum_k \bar{\mathbf{Q}}_k\,(z_k^3 - z_{k-1}^3),\quad \mathbf{A}_s = \sum_k \kappa_k\,\bar{\mathbf{Q}}^{s}_k\,t_k,

где \bar{\mathbf{Q}}_k — приведённая жёсткость слоя, повёрнутая на угол укладки (угол отсчитывается от оси x_e элемента вокруг нормали), \bar{\mathbf{Q}}^s_k — поперечная сдвиговая жёсткость слоя. Коэффициент сдвига: равномерный 5/6 или «энергетический» по слою, \kappa_k = \min\{1, \tfrac56\,G_{\max}/G_k\} (для сэндвичей с мягким сердечником \kappa \to 1). В остальном элемент совпадает с MITC4: сдвиг с предполагаемыми деформациями использует полную матрицу \mathbf{A}_s (2\times2), добавляется связь мембрана–изгиб \mathbf{B} и штраф вращения. Изотропный случай воспроизводится тождественно (регрессия на уровне 10^{-12}).

Дополнительно: послойные напряжения в осях материала и критерии отказа — максимальных напряжений, Цая–Хилла, Цая–Ву, Хашина (двумерный) и индекс расслоения по межслойным касательным; межслойные напряжения восстанавливаются либо из FSDT, либо из уравнений равновесия. Температурные усилия \mathbf{N}_T, \mathbf{M}_T вычисляются по КЛТР слоёв.

Ограничения. Теория первого порядка: профиль сдвига по толщине считается заданным, послойные межслойные напряжения — оценка. Масса ламината в неявной динамике балок и оболочек не подключена (такой тип в ней отказывает); в модальном анализе и анализе устойчивости масса и \mathbf{K}_\sigma ламината реализованы. Те же ограничения мембраны и коробления, что у MITC4.
Проверка. Независимого кейса в наборе верификации нет. Эталон — отдельная реализация классической теории ламинатов (фикстура со значениями \mathbf{A}, \mathbf{B}, \mathbf{D}, перемещений и напряжений слоёв) и сравнение с изотропным элементом; по этой причине статус бета.
units mm
ortho name=ud E1=140e9 E2=10e9 nu12=0.3 G12=5e9 G13=5e9 G23=3.5e9
section shell laminate plies="ud:0.25:0,ud:0.25:45" repeat=2 symmetric=true shear=energetic
mesh shell size=40 element=quad pattern=structured

7.22Коротационные оболочкистабильно

Для больших перемещений и поворотов оболочки применяется коротационная формулировка EICR (element-independent corotational; Rankin–Nour-Omid; Felippa C. A., Haugen B., CMAME 194, 2005) поверх линейных элементов MITC4 и CST+DKT. Как у коротационной балки, конфигурация — положения узлов и полные повороты, обновление мультипликативное.

Рама элемента определяется только положениями узлов: для четырёхугольника нормаль по диагоналям, ось e_1 — проекция вектора между серединами противоположных сторон; для треугольника — по ребру 1\to2. Деформационные степени свободы — перемещения узлов в раме \bar{\mathbf{u}}_i = \mathbf{R}_r^{\mathsf T}(\mathbf{x}_i - \mathbf{x}_c) - \mathbf{R}_0^{\mathsf T}(\mathbf{X}_i - \mathbf{X}_c) и повороты \bar{\boldsymbol\theta}_i = \log(\mathbf{R}_r^{\mathsf T}\mathbf{R}_{g,i}\mathbf{R}_0). К ним без изменений применяется линейная жёсткость элемента: \bar{\mathbf{f}} = \mathbf{K}_l\,\bar{\mathbf{d}}. Внутренние силы — точный градиент энергии \tfrac12\bar{\mathbf{d}}^{\mathsf T}\mathbf{K}_l\bar{\mathbf{d}} по глобальным степеням свободы (член проектора снимает работу жёстких мод рамы и трансляции центроида); касательная — разностями от аналитической силы, согласованной со спиновым обновлением.

Код поддерживает и ламинатный тип, но отдельного кейса верификации для него нет.

Ограничения. Элемент плоский: коробление не моделируется. Материал упругий, деформации малые в рамке элемента; конечные деформации оболочки с пластичностью не поддержаны.

7.23Точечная массабета

Одноузловой элемент с шестью степенями свободы без жёсткости (\mathbf{K} = 0). Параметры: масса m (кг) и три момента инерции I_{xx}, I_{yy}, I_{zz} в глобальных осях (в единицах СИ). Матрица масс диагональна:

\mathbf{M}_e = \operatorname{diag}(m, m, m, I_{xx}, I_{yy}, I_{zz}).

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

Ограничения. Точечная масса доступна из сценария и работает в моделях из балок и оболочек; на сетках из объёмных элементов эта команда не используется. Чтобы подвесить массу к телу или к узлу вне сетки, соедините её с поверхностью жёсткой областью (см. ниже).
Проверка. В кейс NAFEMS FV4 (консоль с двумя несоосными точечными массами на жёстких связях) отклонение 1.06\,\%. Отдельного кейса на сам элемент нет; статус бета, потому что элемент создаётся только из сценария.
units mm
mass node=1000,0,0 m=100 Ixx=0.5 Iyy=0.5 Izz=0.8

7.24Пружинабета

Упругая связь между двумя областями модели или между областью и неподвижным основанием. Область выбирается гранью, ребром или вершиной.

Реализация: в центроиде каждой из выбранных областей создаётся ведущий узел; он связан с узлами области жёсткой областью (RBE2); между ведущими узлами ставится двухузловой элемент Тимошенко с эквивалентными свойствами. Задаётся продольная жёсткость k (Н/м); подбирается E_{\text{eq}} = kL/A_{\text{eq}} при фиксированной площади, так что EA/L = k. Поперечная жёсткость k_t и крутильная k_\theta — необязательные: I_{\text{eq}} = k_t L^3 / (12 E_{\text{eq}}), J_{\text{eq}} = k_\theta L / G_{\text{eq}}; без них изгибная и крутильная жёсткость пренебрежимо мала. Режим «три оси» ставит три независимых ортогональных пружины k_x, k_y, k_z к основанию. Возможен предварительный натяг F_0 — самоуравновешенная пара сил вдоль оси пружины. Постпроцессор выдаёт удлинение \Delta L = (\mathbf{u}_B - \mathbf{u}_A)\cdot\mathbf{e} и рабочее усилие F = F_0 + k\,\Delta L.

Ограничения. Пружина линейная и не работает «только на сжатие»: односторонних характеристик и зазоров нет (для них используется контакт). Если центроиды областей совпадают, принимается эффективная длина 1 мм вдоль оси z; при пружине к основанию без заданной точки основание берётся на 10 мм ниже центроида вдоль -z (точку основания лучше задавать явно). Жёсткие области вокруг мастера локально делают закреплённую область жёсткой, что искажает напряжения у места присоединения.
Проверка. Отдельного кейса верификации нет; элемент проверяется автоматическими тестами сборки. Статус бета: в выпуск вошёл интерфейс, команда сценария появилась позже.
spring surface number 3 ground k=2e6 preload=100

7.25Жёсткие элементы и уравнения связистабильно

Жёсткая область (RBE2) заставляет зависимые узлы двигаться вместе с ведущим как одно жёсткое тело:

\mathbf{u}_d = \mathbf{u}_m + \boldsymbol{\theta}_m\times(\mathbf{x}_d - \mathbf{x}_m),\qquad \boldsymbol{\theta}_d = \boldsymbol{\theta}_m .

Тем самым передаются и силы, и момент, а стыковка узлов с тремя и шестью степенями свободы (объёмное тело с балкой) решается без особых приёмов.

Общее уравнение связи \sum_i c_i u_i = r (в терминах других систем — CE/MPC) тоже исключается точно: первый член — ведомая степень свободы, остальные — ведущие. Конфликт ведомых степеней и цикл связей обнаруживаются и останавливают расчёт.

Ограничения. Жёсткая область не имеет деформации: напряжения вблизи области зависят от выбора ведомых узлов (эффект «жёсткого пятна»).
rigid link master vertex number 6 slaves surface number 2

7.26Матрицы масс, геометрическая жёсткость, напряжениястабильно

Матрица масс. Для объёмных элементов в модальном анализе масса элемента \rho V_e делится поровну между его узлами (сосредоточенная, диагональная), только трансляции. Для правильного Hex8 и Tet4 это совпадает с HRZ-лампингом; для Tet10 и Hex20 равное деление даёт верную суммарную массу, но частоты получаются неточными (на изгибных модах консоли P2 всё же даёт хороший результат). Согласованной массы солидов в модальном анализе нет. Для балок и оболочек в ядре реализованы обе матрицы — сосредоточенная и согласованная.

  • Балка Тимошенко: согласованная масса Пшеменецкого с вращательной инерцией изгиба \rho I и инерцией кручения \rho J; при \Phi \to 0 — эрмитова масса. Эта инерция критична для глубоких балок и высоких мод (NAFEMS FV5).
  • Оболочка (MITC4, CST+DKT): согласованная трансляционная масса M_{ab} = \rho t\int N_aN_b\,dA, для треугольника в замкнутой форме \rho t A/12\cdot[2\ 1\ 1; 1\ 2\ 1; 1\ 1\ 2]; вращательная инерция изгиба в модальной массе не учитывается.
  • Неявная динамика солидов: на выбор согласованная \rho\int N^{\mathsf T}N\,dV, сосредоточенная HRZ (диагональ согласованной, масштабированная на полную массу — всегда положительна, в отличие от суммы по строке серендиповых элементов) и «поровну по узлам». Для Hex27 матрица масс в динамике не реализована.
  • Балки и оболочки в неявной динамике несут трансляционную массу и вращательную инерцию узла: для балки \tfrac12\rho L\,\operatorname{diag}(I_y+I_z, I_y, I_z) на конец, для оболочки \rho t^3/12\cdot A_i, где A_i — доля площади, приходящаяся на узел. Эта постановка появилась после последнего выпуска.
  • Явная динамика: диагональная масса (HRZ-лампинг); для Hex8 правильной формы это \rho V/8 в узле.

Геометрическая жёсткость \mathbf{K}_\sigma (для устойчивости и предварительно нагруженных частот). Для солидов — от действительного тензора напряжений, блок на три перемещения:

(\mathbf{K}_\sigma)_{ab} = \mathbf{I}_3\int_{V_e}\nabla N_a^{\mathsf T}\,\boldsymbol{\sigma}\,\nabla N_b\,dV .

Для балки — от осевого усилия N (матрица Пшеменецкого, вклад N/L в изгибных блоках). Для оболочек — только от мембранных усилий \mathbf{N} на все три трансляции, \int \nabla u_k^{\mathsf T}\mathbf{N}\nabla u_k\,dA; вклад вращений не учитывается. Знак един для всех типов: растяжение стабилизирует.

Напряжения на уровне элемента. Базовое восстановление — по формуле \boldsymbol{\sigma} = \mathbf{C}\mathbf{B}\mathbf{u}_e в характерной точке элемента (центр для гексаэдров и призм, центроид для тетраэдров, ось на середине высоты для пирамиды). Узловое поле — осреднение по смежным элементам; для Tet10 и гибридных сеток напряжение сначала считается в узлах каждого элемента, затем осредняется. Для балки — концевые усилия \mathbf{f} = \mathbf{k}\mathbf{u} и оценка в крайних волокнах; для оболочки — на верхнем и нижнем волокнах в центре элемента. Более точные способы (сглаживание, индикатор ошибки) описаны в разделе Результаты, постпроцессинг и оценка прочности.

Ограничения. Масса высших мод Tet10 и Hex20 в модальном анализе приближённая. \mathbf{K}_\sigma балки не содержит вклада моментов и крутящего усилия.
Проверка. NAFEMS FV5 (глубокая балка, вращательная инерция), FV12 (свободная пластина, оболочки), FV52 (брусок из Hex8), устойчивость стойки Эйлера.

7.27Тепловые элементыбета

Тепловая задача — скалярное поле T (одна степень свободы на узел) на тех же геометриях: Tet4, Hex8, Wedge6, Pyr5 и квадратичные Tet10, Hex20, Hex27 с теми же квадратурами и функциями формы. Элемент: K^e_{ij} = \int\kappa\,\nabla N_i\cdot\nabla N_j\,dV, нагрузка от объёмного тепловыделения F^e_i = \int Q\,N_i\,dV. Грани квадратичных элементов — Tri6 и Quad8 — это не самостоятельные элементы, а грани для интегрирования граничных условий: шестиузловой треугольник с шеститочечным правилом Данавана степени 4 и восьмиузловой четырёхугольник с правилом Гаусса 3\times3; на них интегрируются поток, конвекция, излучение и тепловой контакт. Постановки (стационарная, нестационарная, нелинейная с излучением, теплового контакта, термоупругость) описаны в разделе Теплопередача и мультифизика.

Ограничения. Квадратичные тепловые элементы и нелинейное тепло вошли в версию после последнего выпуска.

7.28Сводная таблицастабильно

В таблице n — число узлов, DOF — степеней свободы элемента, «Масса» — какая матрица реализована в модальном анализе. Подробности — в подразделах выше.

ЭлементnDOFКвадратураОсобенностьМасса (модальный анализ)\mathbf{K}_\sigmaСтатус
Tet44121 точкапостоянная деформация\rho V/4 в узлеестьстабильно
Tet1010304 точки (степень 2)субпараметрический\rho V/10 в узлеестьстабильно
Hex88242\times2\times2полное интегрирование, без B-bar\rho V/8 в узлеестьстабильно
Hex2020603\times3\times3серендипов, изопараметрический\rho V/20 в узлеестьстабильно
Hex2727813\times3\times3триквадратичный Лагранж, не строится мешером\rho V/27 в узлеестьэкспериментально
Wedge66183 × 2переходный, призматический слой\rho V/6 в узлеестьстабильно
Pyr55152\times2\times2 в схлопнутых координатахрациональный базис, переходный\rho V/5 в узлеестьбета
Балка Тимошенко212замкнутая форма\kappa = 5/6, кручение Сен-Венанасогласованная + вращательная инерцияосевое усилиестабильно
Расширенная балка212замкнутая формакрен, плечи, центр сдвига, NSMсогласованная в центрах сеченийосевое усилиестабильно
Оболочка MITC44242\times2MITC4-сдвиг, штраф Хьюза–Бреццисогласованная, трансляциимембранные усилиястабильно
Оболочка CST+DKT3181 / 3 точкиDKT-изгиб, CST-мембранасогласованная, трансляциимембранные усилиястабильно
Ламинатная оболочка4242\times2пакет ABD, FSDT, до 36 чиселмасса пакета на площадьмембранные усилия пакетабета
Коротационные балка и оболочка2 / 3 / 412 / 18 / 24как линейныеEICR, большие поворотыв неявной динамике—стабильно
Точечная масса16—\mathbf{K}=0диагональная m, I—бета
Пружина212замкнутая формаэквивалентная балка и жёсткие пауки——бета
Жёсткая область (RBE2)1 + k6 на узел—исключение связей——стабильно

Чего в библиотеке нет: Pyr13 и Wedge15 как элементов жёсткости; квадратичных оболочек; плоских (деформации, напряжения) и осесимметричных элементов в структурном ассемблере — такие задачи моделируются оболочками и узким клином объёмных элементов с условиями симметрии, плоские элементы есть только в явной динамике; балки с депланационной степенью свободы; нелинейных и односторонних пружин.

Короткий каталог элементов с кодами типов — на странице /docs/elements.

8Линейные виды анализа

↑ К оглавлению

В этом разделе собраны расчёты, в которых конструкция остаётся линейно-упругой, перемещения и повороты малы, а нагрузка от них не зависит. К ним относятся статика, собственные частоты и формы, устойчивость по собственным значениям, установившийся отклик на гармоническое возбуждение, отклик на спектр и на случайную вибрацию, а также вспомогательные приёмы: субмоделирование, редукция суперэлементом и роторная динамика. Контакт, пластичность, большие перемещения и переходная динамика во времени описаны в разделе Нелинейные расчёты и динамика. Элементы и их формулировки — в разделе Библиотека конечных элементов; способы решения систем и собственных задач — в разделе Решатели.

Общие положения для всех видов анализа:

  • у балок и оболочек шесть степеней свободы в узле (три перемещения и три поворота), у объёмных элементов три перемещения;
  • закрепления, уравнения связи и жёсткие области исключаются из системы методом «мастер–слейв», поэтому в собственных задачах и в гармонике действуют те же связи, что и в статике;
  • на границе решателя используется СИ (м, Н, Па, кг), геометрия хранится в миллиметрах, перевод выполняется в одном месте (см. Единицы измерения);
  • матрица масс объёмных элементов сосредоточенная: масса элемента делится поровну между его узлами, для квадратичных элементов — включая серединные узлы. Для балок и оболочек в модальном анализе каркасов доступна согласованная матрица масс;
  • результаты нативного (десктопного) и браузерного путей строятся по одной постановке; эталоном считается нативный.
Вид анализаЧто получаетсяСтатусКоманда сценария
Статикаперемещения, деформации, напряжения, реакциистабильноsolve static
Модальныйчастоты и формы колебанийстабильноsolve modal
Модальный с преднапряжениемчастоты и формы под нагрузкойбетаsolve modal prestress=on
Устойчивостькритические множители нагрузки и формыстабильноsolve buckling
Гармонический откликАЧХ, ФЧХ, поля на частотестабильноsolve harmonic
Спектр ответабазовая сила, перемещения, напряжениястабильноsolve spectrum
Случайная вибрация (PSD)СКЗ 1σ и 3σэкспериментальноsolve psd
Субмоделированиелокальное решение у концентраторабетаsubmodel
Суперэлемент Крейга–Бэмптонаредуцированные матрицыэкспериментальноcms
Роторная динамикадиаграмма Кэмпбеллаэкспериментальноsolve rotor
Чего нет. Инерционной разгрузки (inertia relief) для свободных тел нет: незакреплённое тело в статике не решается, а в спектральном анализе отвергается как содержащее движение жёсткого тела. Нет также структурного (гистерезисного) демпфирования с коэффициентом потерь; в гармонике доступны модальное демпфирование и демпфирование Рэлея.

8.1Линейная статикастабильно

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

Постановка

Принцип возможных перемещений для линейно-упругого тела: для любого допустимого \delta\mathbf{u}

\int_{\Omega} \boldsymbol{\varepsilon}(\delta\mathbf{u}) : \mathbf{C} : \boldsymbol{\varepsilon}(\mathbf{u})\, d\Omega = \int_{\Omega} \delta\mathbf{u} \cdot \mathbf{b}\, d\Omega + \int_{\Gamma_t} \delta\mathbf{u} \cdot \mathbf{t}\, d\Gamma + \sum_i \delta\mathbf{u}_i \cdot \mathbf{F}_i

где \mathbf{C} — тензор упругости, \mathbf{b} — объёмная сила (в том числе от ускорения), \mathbf{t} — поверхностная нагрузка (давление, распределённая сила), \mathbf{F}_i — сосредоточенные силы. После дискретизации функциями формы элементов получается система

\mathbf{K}\,\mathbf{u} = \mathbf{f}, \qquad \mathbf{K} = \sum_{e} \int_{\Omega_e} \mathbf{B}^{\mathsf{T}} \mathbf{C}\, \mathbf{B}\, d\Omega

где \mathbf{B} — матрица деформаций (градиенты функций формы). Для балок и оболочек локальные матрицы жёсткости поворачиваются в общие оси, и все типы элементов собираются в одну систему с шестью степенями свободы в узле.

Закрепления и связи

Закрепления (в том числе с заданным ненулевым перемещением), уравнения связи \sum_i c_i u_i = r и жёсткие области исключаются из системы линейным преобразованием:

\mathbf{u} = \mathbf{T}\,\mathbf{q} + \mathbf{u}_0, \qquad \mathbf{T}^{\mathsf{T}} \mathbf{K}\, \mathbf{T}\,\mathbf{q} = \mathbf{T}^{\mathsf{T}} (\mathbf{f} - \mathbf{K}\,\mathbf{u}_0)

Закрепление — это связь без ведущих степеней свободы (u = \text{const}). Жёсткая область ведёт зависимый узел по кинематике твёрдого тела: \mathbf{u}_d = \mathbf{u}_m + \boldsymbol{\theta}_m \times (\mathbf{x}_d - \mathbf{x}_m). Она передаёт и силы, и момент, поэтому годится для стыковки объёмных элементов с балочными и оболочечными. Конфликтующие или циклические связи приводят к отказу с кодом ошибки, а не к молчаливому выбору одной из них. Степени свободы с нулевой жёсткостью (например, повороты в узлах, где есть только объёмные элементы) закрепляются автоматически, чтобы матрица не была вырожденной.

Редуцированная система симметрична и положительно определена, если конструкция закреплена от движения как жёсткое целое. Способ решения (прямая факторизация или метод сопряжённых градиентов с предобуславливателем) выбирается по размеру задачи, подробности в разделе Решатели.

Что задаёт пользователь и что получает

Задаются материалы, закрепления, нагрузки (силы, давление, ускорение, моменты, дистанционные нагрузки), связи и контакты в линейной постановке. Результат: перемещения узлов, деформации и напряжения (компоненты, эквивалентное по Мизесу, главные), реакции опор, усилия в балках и мембранные и изгибные усилия в оболочках. Эквивалентное напряжение вычисляется как

\sigma_{\text{vM}} = \sqrt{\tfrac{1}{2}\left[(\sigma_x-\sigma_y)^2 + (\sigma_y-\sigma_z)^2 + (\sigma_z-\sigma_x)^2 + 6\,(\tau_{xy}^2 + \tau_{yz}^2 + \tau_{zx}^2)\right]}

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

Ограничения. Несколько независимых случаев нагружения с комбинациями в линейной статике как отдельные решения не реализованы: записи расчётных случаев в модели есть (у болтовых соединений и пружин они отбирают свои записи), но результаты по случаям строятся масштабированием единственного решения, а не повторным расчётом. Если нужны разные нагрузки, запускайте отдельные расчёты, а комбинируйте результаты сами: задача линейна. Закрепление обязательно: незакреплённое тело вырождено.

В сценарии статика — это тип расчёта по умолчанию:

material E=200000000000 nu=0.3 density=7850
fix surface number 1
load surface number 2 force=5000 component=z
solve static

В интерфейсе расчёт запускается на шаге «Расчёт», результаты смотрятся на шаге результатов.

8.2Модальный анализстабильно

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

Постановка

Обобщённая задача на собственные значения для редуцированных матриц:

\mathbf{K}\,\boldsymbol{\varphi}_r = \omega_r^{2}\,\mathbf{M}\,\boldsymbol{\varphi}_r, \qquad f_r = \frac{\omega_r}{2\pi}

Формы \boldsymbol{\varphi}_r ортогональны по матрице масс: \boldsymbol{\varphi}_i^{\mathsf{T}} \mathbf{M} \boldsymbol{\varphi}_j = m_i\,\delta_{ij}. В выдаче формы масштабируются по максимуму модуля перемещения: \max \lvert \mathbf{u} \rvert = 1. Это только удобная нормировка для показа; обобщённая масса m_r при ней не равна единице и учитывается при расчёте участия (см. спектр ответа).

Матрица масс собирается из плотности материала (объёмные элементы, оболочки, балки), неструктурной массы балок и ламинатных оболочек и сосредоточенных масс, заданных пользователем. Сосредоточенная масса не несёт вращательной инерции, кроме явно заданной у сосредоточенной массы.

Коэффициенты участия и эффективные массы

Для направления d (единичный вектор \mathbf{t}_d в степенях свободы) считаются

L_{r,d} = \boldsymbol{\varphi}_r^{\mathsf{T}} \mathbf{M}\, \mathbf{t}_d, \quad \Gamma_{r,d} = \frac{L_{r,d}}{m_r}, \quad M_{\text{eff},r,d} = \frac{L_{r,d}^{2}}{m_r}

Сумма эффективных масс по всем модам стремится к массе свободных поступательных степеней свободы (масса на закреплённых узлах уходит в основание). Эти величины выводятся в спектральном анализе, где они определяют охват массы; панель обычного модального расчёта показывает частоты и формы.

Как реализовано

Редуцированные матрицы \mathbf{K}_r = \mathbf{T}^{\mathsf{T}}\mathbf{K}\mathbf{T} и \mathbf{M}_r = \mathbf{T}^{\mathsf{T}}\mathbf{M}\mathbf{T} приводятся диагональным масштабированием к хорошей обусловленности; низшие моды ищутся подпространственными итерациями с одной факторизацией жёсткости (для каркасов — блочным методом LOBPCG). Свободные конструкции (балки, оболочки): низшие нулевые моды возвращаются нулевыми частотами, для факторизации применяется сдвиг спектра. Подробности и выбор метода по размеру задачи — в разделе Решатели.

Что задаёт пользователь и что получает

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

Ограничения. Сосредоточенная масса объёмных элементов занижает точность высших мод на грубых сетках по сравнению с согласованной; квадратичные элементы (по умолчанию в продукте) уменьшают эту погрешность. Без закреплений в конструкции остаются движения жёсткого тела (нулевые частоты); спектральный анализ такой модели отвергнет. Демпфирование в собственной задаче не участвует: частоты и формы — для недемпфированной системы.
Проверка. Задачи NAFEMS на свободные колебания: FV2, FV4, FV5 (глубокая балка, крутильные и осевая моды), FV12 (свободная пластина), FV13, FV15, FV16, FV22 (толстая ромбическая пластина, модель Миндлина), FV52 (объёмная модель). Отклонения от 0,7 % до 4,2 %, допуск 5 %. Балочно-оболочечная модель: подкреплённый отсек фюзеляжа. Частота балки на P2-сетке сверена и в гармоническом кейсе.
fix surface number 1
solve modal nmodes=6
probe frequency mode=1

8.3Модальный анализ с преднапряжениембета

Нагрузка меняет собственные частоты: растяжение жёстче (частоты растут), сжатие мягче (частоты падают, у границы устойчивости стремятся к нулю). Такой расчёт нужен для струн, лопаток, сжатых стоек и вообще для конструкций, работающих под большой постоянной нагрузкой.

Постановка

Сначала решается линейная статика под приложенной нагрузкой и находятся напряжения \boldsymbol{\sigma}_0. Затем по ним собирается матрица геометрической жёсткости (жёсткости напряжённого состояния) \mathbf{K}_\sigma и решается задача

\left(\mathbf{K} + \mathbf{K}_\sigma(\mathbf{u}_0)\right) \boldsymbol{\varphi}_r = \omega_r^{2}\,\mathbf{M}\,\boldsymbol{\varphi}_r

Для объёмного элемента блок матрицы \mathbf{K}_\sigma по паре узлов a, b — скалярный интеграл, повторённый на три перемещения:

\mathbf{K}_\sigma^{ab} = \left( \int_{\Omega_e} \nabla N_a^{\mathsf{T}}\, \boldsymbol{\sigma}_0\, \nabla N_b \; d\Omega \right) \mathbf{I}_3

Знак таков, что растяжение даёт положительный вклад, сжатие — отрицательный.

Почему решается именно эта задача, а не формула f = f_0\sqrt{1 - P/P_{\text{cr}}}. Формула — одномодовая редукция Рэлея–Ритца, точная, только когда форма колебаний совпадает с формой выпучивания. Для шарнирной балки это так (отклонение 0 %), для консоли ошибка до 4 %, но для шарнирной пластины 2:1 при половине критической нагрузки формула занижает частоту на 14 %, а при критической обращает её в ноль вместо истинных 60 % от f_0. Поэтому в продукте считается полная задача.

Что задаёт пользователь и что получает

Закрепления, нагрузки (поверхностные, сосредоточенные, объёмные), число мод; в интерфейсе — отметка «учитывать нагруженное состояние», в сценарии — prestress=on. Результат: частоты и формы под нагрузкой.

Расчёт отказывает вслух, а не возвращает правдоподобное число, в случаях: нет плотности; ничего не закреплено; нагрузка нулевая (преднапряжения нет, это обычная модалка); матрица \mathbf{K} + \mathbf{K}_\sigma потеряла положительную определённость (конструкция уже выпучилась, собственных частот нет); собственная задача не сошлась.

Ограничения. Только тетраэдральные объёмные модели (линейные и квадратичные) с изотропным материалом (модуль и коэффициент Пуассона по телам); балки и оболочки в этой постановке не поддерживаются. Преднапряжённое состояние находится линейной статикой, нагрузка не следящая, изменение геометрии от нагрузки не учитывается. Связи и контактный штраф учитываются так же, как в обычной модалке.
Проверка. Публичного кейса на этот вид нет; проверка выполнена автоматическими тестами против аналитики: шарнирная балка с осевой силой (частота по f_0\sqrt{1 - P/P_{\text{cr}}}, отклонение 0,05–0,5 % от нуля до 0,9 критической нагрузки, 0,03 % при растяжении), шарнирная пластина 2:1 при N = 0.5 N_{\text{cr}} (решение Навье, отклонение 0,25 %, тогда как приближение через формулу ошибается на 17 %). За критической нагрузкой расчёт отказывает. Узкая верификация и отсутствие публичного кейса — причина статуса «бета».
fix surface number 1
load surface number 2 force=-1000 component=z
solve modal nmodes=3 prestress=on

8.4Линейная устойчивостьстабильно

Расчёт по собственным значениям находит множитель нагрузки \lambda_{\text{cr}}, при котором идеальная конструкция теряет устойчивость (бифуркация), и форму выпучивания. Применяется для стоек, рам, оболочечных панелей и пластин.

Постановка

Под опорной нагрузкой \mathbf{f}_{\text{ref}} решается линейная статика, по перемещениям находятся внутренние усилия и собирается матрица геометрической жёсткости \mathbf{K}_G = \mathbf{K}_\sigma(\mathbf{u}_{\text{ref}}). Критический множитель — наименьшее положительное \lambda задачи

\left(\mathbf{K} + \lambda\,\mathbf{K}_G\right) \boldsymbol{\phi} = \mathbf{0} \quad\Longleftrightarrow\quad \mathbf{K}\,\boldsymbol{\phi} = \lambda\,(-\mathbf{K}_G)\,\boldsymbol{\phi}

Критическая нагрузка равна \lambda_{\text{cr}}\,\mathbf{f}_{\text{ref}}. Опорной считается вся нагрузка модели: поверхностная, сосредоточенная, объёмная и от ускорения. Множитель относится ко всей нагрузке сразу.

\mathbf{K}_G собирается по типу элемента:

  • балка — через осевое усилие N (среднее по концам элемента), согласованная геометрическая жёсткость Пшемецкого (блок ниже);
  • оболочка — через мембранные усилия N = \sigma_m t (четырёхугольные, треугольные и ламинатные оболочки);
  • объёмный элемент — через тензор напряжений \boldsymbol{\sigma}, как в предыдущем подразделе.

Для балки блок «прогиб–поворот» в плоскости v–\theta_z (в плоскости w–\theta_y — зеркальный блок с противоположными знаками связи):

\mathbf{K}_G^{v\theta_z} = \frac{N}{L} \begin{bmatrix} \tfrac{6}{5} & \tfrac{L}{10} & -\tfrac{6}{5} & \tfrac{L}{10} \\ \tfrac{L}{10} & \tfrac{2L^2}{15} & -\tfrac{L}{10} & -\tfrac{L^2}{30} \\ -\tfrac{6}{5} & -\tfrac{L}{10} & \tfrac{6}{5} & -\tfrac{L}{10} \\ \tfrac{L}{10} & -\tfrac{L^2}{30} & -\tfrac{L}{10} & \tfrac{2L^2}{15} \end{bmatrix}

Конвенция знаков одна для всех типов (растяжение стабилизирует, сжатие дестабилизирует), поэтому смешанные модели собираются в одну матрицу.

Порядок форм

Возвращается заданное число наименьших положительных множителей по возрастанию. Отрицательные \lambda (потеря устойчивости при обратном направлении нагрузки) не выводятся: для них поменяйте знак нагрузки. Кратные значения (например, симметричные формы квадратной пластины) выводятся как отдельные формы. Форма масштабируется по максимуму перемещения.

Как реализовано

Матрица -\mathbf{K}_G знаконеопределена и низкоранговая, поэтому прямая обратная итерация на ней расходится. Используются сдвиг спектра и K-ортонормирование подпространства (для масштабных задач) либо плотный решатель симметричной пары (для малых). Проверка по независимому плотному решателю совпала до шести знаков. Подробности — в разделе Решатели.

Ограничения. Предкритическое состояние линейно; рассчитывается бифуркация идеальной конструкции, без несовершенств и закритического пути (для них есть отдельный нелинейный расчёт с несовершенством по форме выпучивания). Нагрузка не следящая. На линейных тетраэдрах критическая нагрузка сильно завышается из-за сдвигового запирания; для устойчивости используйте квадратичные элементы (в замерах отклонение от Эйлера около 1 %). Для объёмных элементов напряжения в \mathbf{K}_G восстанавливаются по изотропному закону Гука (модуль и коэффициент Пуассона). Если нагрузка не создаёт усилий, влияющих на изгибную жёсткость (например, чисто поперечная сила на стойку без осевой компоненты), \mathbf{K}_G нулевая и расчёт завершается отказом.
fix surface number 1
load surface number 6 force=-100 component=z
solve buckling nmodes=2
probe load_factor mode=1

8.5Гармонический откликстабильно

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

Постановка

Нагрузка F\cos(\omega t + \varphi) представляется комплексной амплитудой \hat{\mathbf{F}} = \mathbf{F}\,e^{i\varphi}, отклик \mathbf{u}(t) = \operatorname{Re}\left(\hat{\mathbf{u}}\,e^{i\omega t}\right) удовлетворяет

\left(\mathbf{K} - \omega^{2}\mathbf{M} + i\omega\,\mathbf{C}\right)\hat{\mathbf{u}} = \hat{\mathbf{F}}

Фазовый угол \varphi задаётся у каждой нагрузки отдельно (положительный опережает), поэтому можно задать противофазные силы. Нагрузки группируются по фазам, модальные силы получаются комплексными. Выводятся амплитуда \lvert \hat{\mathbf{u}} \rvert, фаза, амплитуды скорости \omega\lvert \hat{\mathbf{u}} \rvert и ускорения \omega^{2}\lvert \hat{\mathbf{u}} \rvert, огибающая максимума по модели и пиковые частоты; на выбранной частоте и фазе доступно поле перемещений.

Модели демпфирования

Выбирается одна из трёх моделей, они взаимно исключают друг друга.

Модальное. Одна доля критического \zeta на все удержанные моды: \mathbf{C}_m = \operatorname{diag}(2\zeta\, m_j\,\omega_j).

Рэлея. \mathbf{C} = \alpha\mathbf{M} + \beta\mathbf{K}. В модальном базисе матрица диагональна точно, доля критического демпфирования моды

\zeta_j = \frac{\alpha}{2\omega_j} + \frac{\beta\,\omega_j}{2}

Коэффициенты задаются прямо (\alpha в 1/с, \beta в с) либо по двум парам «частота — доля критического» (f_1, \zeta_1), (f_2, \zeta_2):

\beta = \frac{2\,(\zeta_2\omega_2 - \zeta_1\omega_1)}{\omega_2^{2} - \omega_1^{2}}, \qquad \alpha = \frac{2\,\omega_1\omega_2\,(\zeta_1\omega_2 - \zeta_2\omega_1)}{\omega_2^{2} - \omega_1^{2}}

Пара, дающая отрицательный \alpha или \beta (то есть отрицательное демпфирование на части спектра), отвергается. В режиме Рэлея \zeta отдельно не добавляется.

Рэлея по телам. У каждого тела сборки своя пара (\alpha_r, \beta_r), \mathbf{C} = \sum_r (\alpha_r\mathbf{M}_r + \beta_r\mathbf{K}_r). Демпфирование непропорциональное, модальная матрица полная:

\left(\mathbf{C}_m\right)_{ij} = \sum_r\left(\alpha_r\,\boldsymbol{\varphi}_i^{\mathsf{T}}\mathbf{M}_r\boldsymbol{\varphi}_j + \beta_r\,\boldsymbol{\varphi}_i^{\mathsf{T}}\mathbf{K}_r\boldsymbol{\varphi}_j\right)

На каждой частоте решается комплексная система размера числа мод. Диагональное приближение не используется: оно теряет связь мод через границу тел. Панель результатов предупреждает о нулевом демпфировании, о доле критического выше единицы и о сильной непропорциональности.

Структурного (гистерезисного) демпфирования нет.

Два метода решения

Модальная суперпозиция. Отклик раскладывается по удержанным формам \hat{\mathbf{u}} = \sum_j \boldsymbol{\varphi}_j q_j, на каждой частоте решается система

\left(\operatorname{diag}(k_j - \omega^{2}m_j) + i\omega\,\mathbf{C}_m\right)\mathbf{q} = \hat{\mathbf{f}}, \qquad \hat{f}_j = \boldsymbol{\varphi}_j^{\mathsf{T}}\hat{\mathbf{F}}, \quad k_j = m_j\omega_j^{2}

Для постоянной \zeta это q_j = \hat{f}_j / \left[m_j(\omega_j^{2} - \omega^{2} + 2i\zeta\omega_j\omega)\right]. Метод быстрый, но зависит от числа удержанных мод: вклад отброшенных высших мод (статическая поправка) не добавляется. Модальная сила учитывает только поступательные компоненты нагрузки и форм. Сетка частот линейная или логарифмическая с необязательным сгущением вокруг резонансов.

Прямой метод (Direct FRF). Без усечения базиса решается полная разреженная комплексная система \left(\mathbf{K} - \omega^{2}\mathbf{M} + i\omega\mathbf{C}\right)\hat{\mathbf{u}} = \hat{\mathbf{F}} на каждой частоте (разреженная LU-факторизация с упорядочением COLAMD; структура факторизуется один раз на весь диапазон). Демпфирование Рэлея задаётся по элементам: \mathbf{C} = \sum_e(\alpha_e\mathbf{M}_e + \beta_e\mathbf{K}_e), общая пара — частный случай. Поддерживаются все типы элементов, включая балки и оболочки, а также однородные уравнения связи и жёсткие области. На каждой частоте проверяется невязка комплексной системы; при её превышении или при сингулярности (недемпфированный резонанс) расчёт останавливается с ошибкой и не подменяется модальным. Дополнительно выводятся комплексные поля: реакции опор, напряжения (линейные компоненты как комплексные амплитуды), усилия в балках, напряжения в оболочках. Нелинейные инварианты вроде эквивалентного напряжения Мизеса для комплексных амплитуд не вычисляются. Прямой метод включается явно (method=direct) либо выбирается автоматически при демпфировании Рэлея по телам, если доступен нативный решатель. Он требует демпфирования Рэлея (постоянная \zeta определена только в модальном базисе) и доступен только в десктопном приложении.

Что задаёт пользователь и что получает

Диапазон частот (f_{\min}, f_{\max}), число точек, число мод для модального метода, модель демпфирования, нагрузки с фазами. Результат: АЧХ и ФЧХ в выбранных узлах, огибающая по модели, пиковые частоты, поля на частоте, у прямого метода — ещё реакции и напряжения.

Ограничения. Только линейная система без контакта; контактный штраф в прямом методе отвергается. Ненулевое заданное перемещение опоры (кинематическое гармоническое возбуждение) не поддерживается. Модальный метод усекается по числу мод и не добавляет статическую поправку за отброшенные моды: проверяйте сходимость по числу мод. Моменты в нагрузке модальный метод не учитывает (проекция только на поступательные компоненты); прямой метод принимает полный вектор нагрузки. Ускорение основания как параметра возбуждения в интерфейсе и сценарии гармоники нет; для сейсмического и вибрационного возбуждения основания используйте спектр ответа и случайную вибрацию.
Проверка. Консоль на P2 (0,23 %), продольные колебания стержня на P1 (0,03 %), осциллятор с демпфированием Рэлея (0,06 %), консоль из двух тел с разными парами Рэлея (модальный базис против прямого решения), фазы нагрузок на шарнирной балке (0,32 %). Демпфирование Рэлея проверено и во временной области: свободные затухающие колебания консоли (0,07 %).
fix surface number 1
load surface number 2 force=-1000 component=z phase=0
solve harmonic fmin=380 fmax=440 npoints=61 nmodes=6 zeta=0.05
probe harmonic_amplitude x=200 freq=406

Прямой метод с демпфированием Рэлея, заданным двумя парами:

solve harmonic method=direct rayleigh f1=50 z1=0.02 f2=500 z2=0.05 fmin=10 fmax=1000 npoints=40

8.6Спектр ответа (RSA)стабильно

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

Постановка

Основание движется с ускорением a_g(t) в направлении d (вектор \mathbf{t}_d):

\mathbf{M}\ddot{\mathbf{u}} + \mathbf{C}\dot{\mathbf{u}} + \mathbf{K}\mathbf{u} = -\mathbf{M}\,\mathbf{t}_d\,a_g(t)

Для моды m с периодом T_m и псевдоускорением из спектра S_a(T_m) пиковые значения (участие \Gamma и эффективная масса M_{\text{eff}} — как в модальном анализе, формулы выше):

\mathbf{u}_m = \Gamma_{m,d}\,\frac{S_a(T_m)}{\omega_m^{2}}\,\boldsymbol{\varphi}_m, \qquad V_m = M_{\text{eff},m,d}\,S_a(T_m)

где V_m — модальная базовая сила. Масса считается по сосредоточенной матрице масс собственной задачи; форма умножается на \Gamma, поэтому результат не зависит от нормировки и знака формы.

Комбинация мод

Пиковые вклады r_m одной величины (со знаками!) комбинируются по одному из правил:

  • SRSS: R = \sqrt{\sum_m r_m^{2}}, для разнесённых частот;
  • CQC: R = \sqrt{\sum_m\sum_n \rho_{mn}\, r_m r_n}, для близких частот, с коэффициентом корреляции Дер Киурегяна (Der Kiureghian, 1981):
\rho_{mn} = \frac{8\sqrt{\zeta_m\zeta_n}\,(\zeta_m + \beta\zeta_n)\,\beta^{3/2}} {(1-\beta^{2})^{2} + 4\zeta_m\zeta_n\beta(1+\beta^{2}) + 4(\zeta_m^{2}+\zeta_n^{2})\beta^{2}}, \qquad \beta = \frac{\omega_n}{\omega_m}
  • ABS: R = \sum_m \lvert r_m \rvert, консервативная верхняя оценка.

Доля критического \zeta в CQC задаёт корреляцию; ординаты нормативных спектров заданы для 5 % и от \zeta не пересчитываются. Направления возбуждения комбинируются после мод: SRSS по направлениям, R = \sqrt{\sum_d R_d^{2}}, либо правило 100–30–30 (ASCE 7-16, п. 12.5.3): R = \max_d\left(R_d + 0.3\sum_{e\neq d}R_e\right).

Остаточная масса

Отброшенные моды дают жёсткий отклик на ускорение нулевого периода (ZPA). Остаточная масса M_{\text{res},d} = M_{\text{ref},d} - \sum_m M_{\text{eff},m,d}, где M_{\text{ref},d} — масса незакреплённых поступательных степеней свободы. Поправка к базовой силе V_{\text{res}} = M_{\text{res},d}\cdot \text{ZPA}_d складывается с модальным откликом по SRSS (NRC Regulatory Guide 1.92, ANSYS: missing mass). Для полей перемещений и напряжений остаточная часть находится отдельным статическим решением \mathbf{K}\mathbf{u}_{\text{res}} = \text{ZPA}\,\mathbf{M}\,(\mathbf{t}_d - \sum_m\Gamma_{m,d}\boldsymbol{\varphi}_m) с теми же связями. Нормы требуют охвата не менее 90 % массы по каждому направлению (СП 14.13330, ASCE 7-16, п. 12.9.1.1): при меньшем охвате результат помечается предупреждением, что он не годен для проектирования, и надо увеличить число мод.

Расчётные спектры

  • СП 14.13330.2018: расчётная сейсмичность площадки 7, 8, 9 баллов, категория грунта I–IV, коэффициенты назначения K_0, допускаемых повреждений K_1, рассеивания энергии K_\psi; для вертикальной составляющей — отдельный спектр по тем же формулам с K_\psi = 1 и множителем 0,75 (п. 5.12).
  • ASCE 7-16 и 7-22: параметры S_s, S_1 (7-16, коэффициенты F_a, F_v по таблицам) или S_{DS}, S_{D1} (7-22), класс грунта, период T_L, R, I_e.
  • Пользовательская таблица пар (период или частота, S_a) с линейной или логарифмической интерполяцией, в долях g или м/с².

Параметры нормы не подставляются молча: недостающее называется в ошибке до запуска модалки.

Что получается

Таблица мод (частота, период, обобщённая масса, \Gamma, эффективные массы и доли, накопленные доли, S_a, модальная базовая сила), охват массы по направлениям, базовая сила по направлениям и результирующая, поля. Перемещения комбинируются покомпонентно и неотрицательны (огибающая), знак перемещения при комбинации теряется, как принято в RSA. Компоненты напряжений и деформаций комбинируются по знаку модальных вкладов до применения SRSS или CQC. Эквивалентное напряжение Мизеса, главное напряжение и эквивалентная деформация не вычисляются из огибающих компонент: они строятся как максимумы квадратичного инварианта на эллипсоиде SRSS/CQC-комбинаций («пик на эллипсоиде спектра ответа», response-spectrum ellipsoid peak). Это пик огибающей, а не максимум по времени заданной акселерограммы; такие поля доступны для комбинированного результата при SRSS по направлениям и правилах SRSS или CQC по модам.

Ограничения. Поддержаны поступательные степени свободы возбуждения. Для массы объёмных элементов поддерживаются тетраэдры и гексаэдры из восьми узлов, квадратичные тетраэдры, балки, оболочки и сосредоточенные массы; призмы, пирамиды и квадратичные гексаэдры отвергаются, чтобы не потерять массу молча. Каркасная модалка в спектральном анализе использует сосредоточенную массу, чтобы \Gamma и M_\text{eff} считались по той же матрице, что и собственная задача; при расхождении матриц выводится предупреждение о нарушенной \mathbf{M}-ортогональности. Моды без поступательной массы (кручение, повороты) на поступательное возбуждение не отзываются и исключаются с перечнем номеров. Поправка остаточной массы входит в базовую силу и в поля, если решена остаточная статика; иначе в полях присутствуют только удержанные моды, что явно сообщается. Метод даёт пик по огибающей, а не последовательность во времени.
fix surface number 1
solve spectrum code=sp14 intensity=8 soil=II dir=x,y combine=cqc dircombine=srss zeta=0.05 nmodes=20
probe spectrum_base_shear dir=x
probe spectrum_cumulative_mass dir=x

8.7Случайная вибрация (PSD)эксперимент

Анализ случайных вибраций оценивает среднеквадратичный (СКЗ) отклик на стационарное гауссово возбуждение основания, заданное спектральной плотностью мощности ускорения (PSD, ASD) — типично для транспорта, авиации, космической техники.

Постановка

Возбуждение — односторонняя плотность S_a(f) в единицах g^2/Гц (или в единицах СИ, м²/с⁴ на Гц) по таблице точек «частота — плотность» с кусочно-логарифмической (log–log) или линейной интерполяцией. Между точками (f_1, S_1), (f_2, S_2) при log–log S(f) = S_1(f/f_1)^{k}, k = \ln(S_2/S_1)/\ln(f_2/f_1). Входное СКЗ a_{\text{rms}} = \sqrt{\int S_a\,df} интегрируется аналитически по сегментам.

Отклик строится модальной суперпозицией. Передаточная функция моды j по относительному перемещению и по абсолютному ускорению:

H_j^{u}(\omega) = \frac{-\Gamma_j}{\omega_j^{2} - \omega^{2} + 2i\zeta_j\omega_j\omega}, \qquad H_j^{a}(\omega) = \Gamma_j\,\frac{\omega_j^{2} + 2i\zeta_j\omega_j\omega}{\omega_j^{2} - \omega^{2} + 2i\zeta_j\omega_j\omega}

Ковариация обобщённых координат вычисляется прямым интегрированием по частоте (метод трапеций по сетке со сгущением вокруг резонансов), без предположения о разнесённости частот:

V_{jk} = \int \operatorname{Re}\left[H_j(2\pi f)\,H_k^{*}(2\pi f)\right] S_a(f)\,df

Дисперсия отклика в узле: \sigma^{2} = \sum_j\sum_k \phi_j\,\phi_k\,V_{jk}, где \phi_j — значение формы j в узле. Матрица корреляции CQC \rho_{jk} (та же формула, что в спектре ответа) вычисляется и выводится как диагностика, но сама дисперсия использует V_{jk}. Выводятся СКЗ 1σ, значение 3σ (утроенное СКЗ, вероятность непревышения 99,73 % для гауссова процесса) для относительных перемещений, абсолютных ускорений и эквивалентных напряжений Мизеса.

Для одномассовой системы с белым шумом получается формула Майлза (Miles, 1954):

z_{\text{rms}} = \sqrt{\frac{\pi\,S_a}{4\,\zeta\,f_n^{3}\,(2\pi)^{4}}}, \qquad a_{\text{rms}} \approx \sqrt{\frac{\pi}{2}\,f_n\,Q\,S_a}, \quad Q = \frac{1}{2\zeta}

(вторая формула — для малого демпфирования).

Как реализовано и что упрощено

Из модального анализа берутся частоты, формы и коэффициенты участия по направлению \Gamma (по массе, как в спектре ответа); модальные напряжения восстанавливаются из форм. Напряжение Мизеса оценивается как \sigma_{\text{vM}}^{2} \approx \sum_j\sum_k s_j s_k V_{jk}, где s_j — эквивалентное напряжение Мизеса j-й формы. Это упрощение: скаляр Мизеса не имеет знака и взаимных корреляций компонентов тензора, поэтому оценка точна для одной доминирующей моды и ориентировочна при заметном вкладе нескольких. По перемещениям используется модуль вектора формы в узле, а результат записывается в компоненту направления возбуждения. Усталость и распределение максимумов не рассчитываются: 3σ — линейное масштабирование СКЗ, а не пик во времени.

Ограничения. Это инженерная оценка поверх модальных результатов, а не независимая модель случайной вибрации. Возбуждение — одно направление, равномерное по основанию; нет коррелированного по пространству и многоопорного возбуждения. В интерфейсе (вкладка «Случайные вибрации» в карточке спектра) используется упрощённая оценка участия без учёта масс, \Gamma \approx \sum_i\varphi_{i,d}/\sum_i\lvert\boldsymbol{\varphi}_i\rvert^{2}, и модальные напряжения не восстанавливаются: поле напряжения в этом режиме — грубая оценка E\,u_{\text{rms}}/L (L — диагональ габарита модели), а не напряжение Мизеса. Расчёт из сценария (solve psd) использует массовое участие и модальные напряжения; для инженерных выводов опирайтесь на него. Сходимость по числу мод и по густоте частотной сетки проверяйте сами.
Проверка. Формула Майлза для одномассовой системы (0,08 %): проверяется интегрирование передаточных функций на одномассовом осцилляторе, а не конечно-элементная модель. Кейса на многомодовую конструкцию с независимой оценкой СКЗ напряжений нет; поэтому статус «экспериментально».
fix surface number 1
solve psd psd=[(20,0.01),(80,0.04),(350,0.04),(2000,0.005)] dir=z zeta=0.02 modes=10
probe psd_disp_3sigma
probe psd_stress_1sigma

8.8Субмоделированиебета

Метод граничной интерполяции перемещений (Cut Boundary Displacement Method) позволяет получить точные напряжения у концентратора (отверстия, галтели), не измельчая сетку всей детали. Опирается на принцип Сен-Венана: вдали от концентратора поле перемещений грубой сетки близко к точному, даже если пик напряжений на кромке занижен в 1,5–2 раза.

Постановка

  1. Решается глобальная модель на умеренной сетке: поле \mathbf{u}_g(\mathbf{x}).
  2. Вокруг зоны интереса вырезается локальная подмодель: пересечение тела с секущим боксом по булевой операции, затем мелкая сетка (линейная или квадратичная).
  3. Грани подмодели делятся на секущие (проходят внутри исходного тела) и исходные свободные (отверстие, галтель, внешние грани).
  4. В каждом узле секущих граней (включая серединные узлы квадратичных элементов) ставится условие Дирихле с интерполированным глобальным перемещением:
\mathbf{u}_{\text{sub}}(\mathbf{x}_i) = \mathbf{u}_g(\mathbf{x}_i) = \sum_a N_a(\mathbf{x}_i)\,\mathbf{u}_{g,a}

Интерполяция барицентрическая по тетраэдрам глобальной сетки (линейная или квадратичная по порядку глобальных элементов); точки вне глобальной сетки на криволинейной границе проецируются на ближайший элемент.

  1. Локальная система решается тем же структурным решателем; свободные грани остаются без нагрузки.

Что задаёт пользователь и что получает

В интерфейсе подмодель запускается в секции «Субмоделирование» шага результатов (она вызывает ту же команду, что и сценарий). После глобального solve задаются: центр at=x,y,z (по умолчанию — очаг максимума напряжений или найденный очаг концентрации), размер зоны radius= или box=dx,dy,dz, размер элемента подмодели size=, порядок order=1|2. Результат: пик напряжения Мизеса в подмодели вне пристеночного слоя у секущей границы, число узлов на секущей границе и число элементов (submodel_peak_vm, submodel_cut_node_count, submodel_element_count).

Ограничения. Берётся первое активное тело и один материал по умолчанию; секущий бокс выровнен по осям. Подмодель линейно-упругая; нагрузки на её свободных гранях не переносятся из глобальной модели (передаются только перемещения секущих границ), поэтому метод применим, когда нагрузка приложена вне подмодели. Секущие границы должны лежать в зоне, где грубая сетка ещё адекватна (порядка 2–3 радиусов от концентратора). Точность метода заложена в качество глобальной сетки на секущих границах; проверка ограничена одним кейсом.
Проверка. Задача Кирша с субмоделированием: пик на кромке отверстия в плите: глобальная грубая сетка занижает его на 41 %, подмодель на P2-сетке даёт отклонение −3,57 % от замкнутого решения при допуске 5 %. Единственный кейс, одна платформа и поздний выпуск (после тега 0.2.1) — основание статуса «бета».
mesh tet size=12 order=1
fix surface number 1
load surface number 3 pressure=-100000000
solve static
submodel at=60,30,4 box=36,36,8 size=2.4 order=2
probe submodel_peak_vm

8.9Редукция Крейга–Бэмптона (CMS)эксперимент

Метод синтеза форм компонентов (Craig, Bampton, 1968) заменяет крупную подсборку суперэлементом: граничными степенями свободы и небольшим числом нормальных мод с закреплённой границей. Применяется для сборок, где подсистему многократно используют в динамике.

Постановка

Степени свободы делятся на граничные b и внутренние i. Статические моды (принуждения) и нормальные моды с закреплённым интерфейсом:

\boldsymbol{\Phi}_C = -\mathbf{K}_{ii}^{-1}\mathbf{K}_{ib}, \qquad \left(\mathbf{K}_{ii} - \omega_k^{2}\mathbf{M}_{ii}\right)\boldsymbol{\phi}_k = \mathbf{0}, \quad \boldsymbol{\Phi}_N^{\mathsf{T}}\mathbf{M}_{ii}\boldsymbol{\Phi}_N = \mathbf{I}

Преобразование и редуцированные матрицы:

\begin{bmatrix}\mathbf{u}_b \\ \mathbf{u}_i\end{bmatrix} = \underbrace{\begin{bmatrix}\mathbf{I} & \mathbf{0} \\ \boldsymbol{\Phi}_C & \boldsymbol{\Phi}_N\end{bmatrix}}_{\mathbf{T}_{CB}} \begin{bmatrix}\mathbf{u}_b \\ \mathbf{q}_N\end{bmatrix}, \qquad \hat{\mathbf{K}} = \mathbf{T}_{CB}^{\mathsf{T}}\mathbf{K}\,\mathbf{T}_{CB} = \begin{bmatrix}\hat{\mathbf{K}}_{bb} & \mathbf{0} \\ \mathbf{0} & \boldsymbol{\Lambda}_N\end{bmatrix}

Матрица масс \hat{\mathbf{M}} имеет единичный блок по модальным координатам. Полное поле восстанавливается обратным преобразованием.

Что есть на деле

Реализованы плотные матричные операции: статические и нормальные моды, редуцированные матрицы, восстановление перемещений и напряжений для линейных тетраэдров, редуцированный вектор нагрузки. Модуль проверен автоматическими тестами на малых матрицах (предел Гюйана, блочно-диагональность \hat{\mathbf{K}}, совпадение низших собственных значений). Команда cms и секция «Суперэлемент Крейга–Бэмптона» в результатах принимают граничную поверхность и число мод, но в текущей сборке конечно-элементная сетка пользователя в них не передаётся: расчёт идёт на встроенной тестовой цепочке масс и пружин. Поэтому использовать эти команды для редукции реальной подсборки нельзя.

Ограничения. Плотные матрицы: масштаб ограничен сотнями степеней свободы. Нет сборки суперэлементов в общую модель, нет связи с динамическими расчётами продукта. Интерфейс и сценарий не подключены к сетке модели (см. выше).
Проверка. Кейсов верификации нет; только модульные тесты на матрицах.
cms boundary="surface number 1" modes=6

8.10Роторная динамикаэксперимент

Роторная динамика исследует, как вращение меняет собственные частоты: гироскопический эффект расщепляет изгибные частоты на прямую (FW) и обратную (BW) прецессию. Результат оформляется диаграммой Кэмпбелла (частоты как функция скорости вращения) с линиями синхронного возбуждения 1× и 2× и критическими скоростями на их пересечениях.

Постановка

В системе отсчёта, вращающейся с угловой скоростью \Omega вокруг оси:

\left(\lambda^{2}\mathbf{M} + \lambda\,(\mathbf{C} + \Omega\,\mathbf{G}) + \mathbf{K} - \Omega^{2}\mathbf{M}_{\text{spin}}\right)\boldsymbol{\psi} = \mathbf{0}

Здесь \mathbf{G} — кососимметричная матрица кориолисовых членов (\mathbf{G}^{\mathsf{T}} = -\mathbf{G}), \mathbf{M}_{\text{spin}} — разупрочнение от центробежных сил в плоскости, перпендикулярной оси. Задача линеаризуется в пространстве состояний с матрицей

\mathbf{H} = \begin{bmatrix} -\mathbf{M}^{-1}(\mathbf{C} + \Omega\mathbf{G}) & -\mathbf{M}^{-1}\mathbf{K}_{\text{tot}} \\ \mathbf{I} & \mathbf{0} \end{bmatrix}

и решается полной несимметричной задачей на собственные значения (приведение Хаусхолдера к форме Гессенберга и QR-алгоритм с двойным сдвигом). Из пар комплексно-сопряжённых собственных значений берётся частота \operatorname{Im}\lambda и доля критического демпфирования -\operatorname{Re}\lambda/\lvert\lambda\rvert. Критические скорости — пересечения \omega_i(\Omega) = k\,\Omega для k = 1, 2, найденные линейной интерполяцией по сетке скоростей.

Что есть на деле

Это не полноценный расчёт ротора пользователя, а прототип:

  • матрица \mathbf{G} строится из кориолисовых членов сосредоточенных масс; гироскопический момент дисков через полярный момент инерции, подшипники с жёсткостью и демпфированием и перекрёстные коэффициенты масляной плёнки в расчётном пути не участвуют;
  • направление прецессии определяется по знаку сдвига частоты относительно неподвижного ротора, а моды сопоставляются по порядку номера в списке частот, без отслеживания по форме, поэтому на пересечениях мод классификация может быть неверной;
  • команда solve rotor и секция «Роторная динамика» в результатах считают диаграмму для встроенной двухстепенной модели (масса 2 кг, жёсткость 2·10⁴ Н/м, гироскопический коэффициент 0,4), а не для сетки пользователя; параметры оси, диапазона скоростей, числа шагов и мод управляют только разверткой.
Ограничения. Расчёт не использует модель пользователя. Для реальных роторов результат по диаграмме нельзя использовать; нужна внешняя проверка.
Проверка. Кейсов верификации нет; модульные тесты проверяют кососимметричность \mathbf{G}, расщепление частот модели Джеффкотта (Лаваля) на FW и BW и обнаружение пересечения с линиями 1× и 2× на малых матрицах.
solve rotor axis=z speed_min=0 speed_max=1000 steps=20 modes=4
probe rotor_crit_speed_1

9Нелинейные расчёты и динамика

↑ К оглавлению

Раздел описывает расчёты, в которых жёсткость зависит от решения или в которых нельзя пренебречь инерцией: большие перемещения и повороты, потеря устойчивости с проходом предельных точек, этапы возведения и выемки, неявная и явная динамика. Линейная статика, модальный анализ и линейная потеря устойчивости описаны в разделе Линейные виды анализа. Модели материалов (пластичность, гиперупругость, ползучесть) — в разделе Модели материалов, контакт — в разделе Контакт и соединения, линейные решатели — в разделе Решатели.

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

Где что считается:

ВозможностьДесктоп (эталон)Браузер
Геометрическая нелинейность, длина дуги, этапыданет, явный отказ
Неявная динамика солидовдада, только упругие модели и Total Lagrangian без контакта, связей и пластичности
Неявная динамика балок и оболочекдаограниченно
Явная динамикадада

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

9.1Геометрическая нелинейность солидовстабильно

Включается, когда линейная жёсткость перестаёт описывать конструкцию: перемещения сравнимы с размерами сечения, элемент заметно поворачивается, давление остаётся нормальным к деформируемой поверхности. Для объёмных тел используется полная Лагранжева формулировка (Total Lagrangian): все интегралы берутся по начальной конфигурации V_0.

Постановка

Градиент перемещений и градиент деформации в точке Гаусса:

\mathbf{H} = \nabla_0 \mathbf{u} = \sum_i \mathbf{u}_i \otimes \nabla_0 N_i, \qquad \mathbf{F} = \mathbf{I} + \mathbf{H}

Градиент строится по перемещениям, а не по \nabla(\mathbf{X}+\mathbf{u}): при \lvert\mathbf{u}\rvert \ll \lvert\mathbf{X}\rvert вычитание близких чисел теряет знаки. По той же причине тензор Грина–Лагранжа считается через \mathbf{H}:

\mathbf{E} = \tfrac{1}{2}\left(\mathbf{F}^{T}\mathbf{F} - \mathbf{I}\right) = \tfrac{1}{2}\left(\mathbf{H} + \mathbf{H}^{T} + \mathbf{H}^{T}\mathbf{H}\right)

Второй тензор Пиолы–Кирхгофа \mathbf{S} вычисляется по закону материала. По умолчанию это модель Сен-Венана–Кирхгофа:

\mathbf{S} = \lambda\,\mathrm{tr}(\mathbf{E})\,\mathbf{I} + 2\mu\,\mathbf{E}

Для больших деформаций резины и эластомеров выбираются гиперупругие модели: сжимаемый Нео-Гук с энергией W = \tfrac{\mu}{2}(\bar I_1 - 3) + \tfrac{\kappa}{2}(J-1)^2, \bar I_1 = J^{-2/3} I_1, а также Муни–Ривлин, Йео, Арруда–Бойс и Огден (параметры — в разделе Модели материалов). Формулировка чисто перемещенческая, без отдельного поля давления.

Виртуальная работа внутренних сил \int_{V_0} \mathbf{S}:\delta\mathbf{E}\,dV_0 даёт вектор внутренних сил и касательную матрицу. В записи Фойгта с инженерным сдвигом (порядок 11, 22, 33, 12, 23, 13):

\mathbf{f}_{\mathrm{int}} = \int_{V_0} \mathbf{B}_{NL}^{T}\,\hat{\mathbf{S}}\,dV_0, \qquad \delta\hat{\mathbf{E}} = \mathbf{B}_{NL}\,\delta\mathbf{u}

Матрица \mathbf{B}_{NL} зависит от \mathbf{F}: для узла i и компоненты m строка E_{11} равна F_{m1}\,\partial N_i/\partial X, строка \gamma_{12} равна F_{m1}\,\partial N_i/\partial Y + F_{m2}\,\partial N_i/\partial X и так далее. Касательная — сумма материальной и геометрической частей:

\mathbf{K}_T = \underbrace{\int_{V_0} \mathbf{B}_{NL}^{T}\,\mathbb{D}\,\mathbf{B}_{NL}\,dV_0}_{\mathbf{K}_{\mathrm{mat}}} + \underbrace{\int_{V_0} \left(\nabla_0 N_i \cdot \mathbf{S}\,\nabla_0 N_j\right)\mathbf{I}_3\,dV_0}_{\mathbf{K}_{\mathrm{geo}}}, \qquad \mathbb{D} = \frac{\partial \mathbf{S}}{\partial \mathbf{E}}

Касательная аналитическая и симметричная (кроме вкладов следящих нагрузок и контакта). Для изотропного Сен-Венана–Кирхгофа \mathbb{D} постоянна. Для гиперупругих и упругопластических законов \mathbb{D} — согласованная касательная закона, поэтому сходимость Ньютона квадратичная.

Квадратуры те же, что в линейной сборке (раздел Библиотека конечных элементов): TET4 — одна точка, TET10 — четыре, HEX8 — 2\times2\times2 (полное интегрирование), HEX20 — 3\times3\times3. Ядро несёт также призмы, пирамиды и HEX27. Маршруты кнопки Solve и DSL подключают тетраэдры и гексаэдры первого и второго порядка и гибридную сетку Hex8–Pyr5–Tet4; другие сочетания типов отказывают вслух.

Что получает пользователь

Перемещения, реакции опор (\mathbf{f}_{\mathrm{int}} - \lambda\,\mathbf{f}_{\mathrm{ext}} в конечной конфигурации), деформации Грина–Лагранжа, истинные напряжения Коши и по ним эквивалентные напряжения по Мизесу и главные напряжения. Напряжения Коши получаются push-forward'ом:

\boldsymbol{\sigma} = J^{-1}\,\mathbf{F}\,\mathbf{S}\,\mathbf{F}^{T}, \qquad J = \det\mathbf{F}

Значение элемента — среднее по объёму V_0 по точкам Гаусса; значение узла — среднее по примыкающим элементам с весом в виде их объёма V_0. Это не суперсходимое восстановление: на градиентных участках узловые пики сглажены. Для принятых шагов нагружения сохраняются полные поля, и в постпроцессоре можно переключаться между шагами. Память снимков ограничена бюджетом; при переполнении шаги прореживаются равномерно, первый и последний остаются.

Настройки общие для панели Solution и DSL: число шагов нагрузки, потолок итераций на шаг, допуск невязки, режим давления (следящее или мёртвое), множитель штрафа контакта. Следящее давление действует по нормали текущей конфигурации: \mathbf{f}_a = -\lambda p \int N_a\,\tilde{\mathbf{n}}\,d\xi\,d\eta, где \tilde{\mathbf{n}} = \mathbf{x}_{,\xi}\times\mathbf{x}_{,\eta}. Касательная этой нагрузки учтена и в общем случае несимметрична (нагрузка одной грани неконсервативна).

nlgeom on pressure=dead steps=10 maxiter=25 tol=1e-6
solve static

Запирание низкого порядка при больших перемещениях измерено на изгибе консоли L/h = 20 при PL^2/EI = 10 (40 элементов по длине, один по толщине). Эталон — эластика Эйлера, интегрированная независимо. Максимальная ошибка перемещения конца:

ЭлементОшибка
TET456.5 %
HEX88.9 %
TET100.16 %
HEX200.19 %

Это запирание на конкретной сетке, а не гарантия для произвольной геометрии. Для изгиба при больших перемещениях используйте элементы второго порядка.

Ограничения. HEX8 интегрируется полностью, без B-bar и смешанных формулировок. На изгибе тонких тел при больших деформациях низкий порядок запирает: см. таблицу выше. Почти несжимаемые материалы на элементах первого порядка тоже склонны к запиранию. Аддитивная пластичность в паре (\mathbf{E}, \mathbf{S}) физически корректна при малых деформациях и больших поворотах и неверна на десятках процентов пластической деформации (подробнее — в подразделе о материале). Расчёт нативный: в браузере включённая нелинейность даёт отказ с просьбой открыть проект в десктопе. Каналы граничных условий, которых нет в нелинейной сборке (зоны локального порядка в смешанной модели со связями, оболочечная «кожа» на теле), отказывают поимённо.
Проверка. Однородное растяжение \lambda_x = 1.5 (E_{xx} = 0.625) воспроизводится на TET4, TET10, HEX8 и HEX20 до 10^{-14} по перемещениям, реакциям и напряжениям (независимое решение для плоского напряжённого состояния). Одноосное растяжение Сен-Венана–Кирхгофа до E_{GL}\approx 0.092 совпадает с замкнутой формулой до 10^{-8}; сила равна градиенту энергии, касательная совпадает с конечными разностями силы, жёсткое движение даёт нулевые силы. Изгиб консоли с эластикой — таблица выше. Кейсы верификации: Нео-Гук, одноосное растяжение, Нео-Гук, простой сдвиг, объективность гиперупругого закона, метод изготовленных решений при конечной деформации, NAFEMS 3DNLG5, жёсткое вращение.

9.2Коротационные балки и оболочкистабильно

Для балок и оболочек полная лагранжева формулировка избыточна: деформации остаются малыми, большими бывают повороты. Здесь используется коротационный (corotational) подход: рама элемента следует за узлами, в ней применяется линейный элемент, а геометрическая нелинейность целиком идёт от поворота рамы.

Конфигурация узла — положение \mathbf{x} = \mathbf{X} + \mathbf{u} и полный поворот \mathbf{R}_g\in SO(3). Приращение поворота — пространственный спин \delta\mathbf{w}, обновление мультипликативное:

\mathbf{R}_g \leftarrow \exp(\delta\mathbf{w})\,\mathbf{R}_g

Складывать углы нельзя: на больших поворотах это неверно. В результате поворот узла выводится как вектор \log\mathbf{R}_g с углом в диапазоне [0, \pi].

Балка

Формулировка Battini и Pacoste (2002). Рама элемента \mathbf{R}_r строится по хорде и среднему положению оси y узловых поворотов. Деформационные величины в раме:

\bar u = l - l_0, \qquad \bar{\boldsymbol\theta}_i = \log\left(\mathbf{R}_r^{T}\,\mathbf{R}_{g,i}\,\mathbf{R}_0\right)

Они малы при малой деформации, поэтому к ним применяется линейный элемент Тимошенко без изменений: \bar{\mathbf{f}}_l = \mathbf{K}_l\,[\bar u,\bar{\boldsymbol\theta}_1,\bar{\boldsymbol\theta}_2]^{T}. Внутренние силы получаются точной виртуальной работой с учётом производной вращения; касательная аналитическая (совпадение с конечными разностями — до 10^{-9}).

Оболочка

Элементно-независимая коротационная формулировка EICR (Rankin и Nour-Omid; Felippa и Haugen, CMAME 194, 2005) поверх линейных оболочек: четырёхугольник с мембраной Q4, изгибом MITC4 и фиктивной жёсткостью вращения вокруг нормали; треугольник — CST с изгибом DKT. Рама элемента зависит только от положений узлов. Силы — точный градиент энергии \tfrac12\bar{\mathbf{d}}^{T}\mathbf{K}_l\bar{\mathbf{d}} по глобальным степеням свободы; проекторное слагаемое снимает работу на жёстких модах рамы. Касательная аналитическая.

Что получает пользователь

Перемещения и повороты узлов (повороты — вектором полного поворота), реакции, усилия балок N, V_y, V_z, T, M_y, M_z на концах в текущей раме элемента. Для оболочек считается эквивалентное напряжение по Мизесу по верхнему и нижнему волокну в центре элемента, по линейным соотношениям от деформационных величин рамы; выдаётся большее из двух. Полей напряжений по толщине в нелинейном расчёте нет.

Узловые моменты задаются осевыми векторами, неподвижными в пространстве и сопряжёнными пространственному спину. В плоских задачах такая нагрузка консервативна; в пространственных следящих моментов нет.

frame solve static nlgeom=on steps=10 maxiter=30 tol=1e-6
Ограничения. Квадрилатеральная оболочка считается плоской: коробление четырёхугольника игнорируется (стандарт EICR для плоских элементов). Ламинатные оболочки в нелинейном пути отказывают. Для балок не поддержаны смещения сечения и центр сдвига в нативном нелинейном ядре. Связи RBE2 учитываются геометрически точно (\mathbf{x}_d = \mathbf{x}_m + \mathbf{R}_m \mathbf{d}_0), связи CE — только линейные на трансляциях; CE на поворотах и цепочки связей отказывают. Пластичность в балках и оболочках не поддержана (отказ, а не упругий ответ).
Проверка. Консоль под моментом M = \pi EI/L сворачивается в полукольцо: смещение конца (-L, 2L/\pi) с ошибкой 6.6\cdot10^{-4} (оболочечная полоса). Консоль под силой PL^2/EI = 10 даёт (-0.5550, -0.8106) против эластики Маттиассона, ошибка 2.5\cdot10^{-4}. Объективность: жёсткий поворот и сдвиг модели дают нулевые внутренние силы. Линейный предел совпадает с линейным решателем: оболочки до 3\cdot10^{-9}, балки в пределах допуска 10^{-6}. Кейсы верификации: эластика, конец под силой, чистый момент, четверть окружности, чистый момент, полный виток, рама Ли, стойка Эйлера, бифуркация.

9.3Итерации Ньютона–Рафсона и шаги нагружениястабильно

Задача: найти \mathbf{u}, при котором внутренние силы уравновешивают приложенные при доле нагрузки \lambda. Невязка на свободных степенях свободы:

\mathbf{r}(\mathbf{u},\lambda) = \lambda\,\mathbf{f}_{\mathrm{ref}} - \mathbf{f}_{\mathrm{int}}(\mathbf{u}) = \mathbf{0}

Нагрузка нарастает от \lambda = 0 до \lambda = 1 шагами. На каждом шаге выполняется метод Ньютона–Рафсона с полным пересчётом касательной на каждой итерации:

\mathbf{K}_T(\mathbf{u}_k)\,\delta\mathbf{u} = \mathbf{r}(\mathbf{u}_k,\lambda), \qquad \mathbf{u}_{k+1} = \mathbf{u}_k + \delta\mathbf{u}

Повороты обновляются мультипликативно (см. предыдущий подраздел). Касательную раскладывает разреженное LU (библиотека Eigen), символический анализ шаблона разреженности переиспользуется между итерациями. LU, а не Холецкий, потому что касательная коротационных элементов вне равновесия несимметрична; подробнее о линейных решателях — в разделе Решатели.

Критерий сходимости

Шаг принимается, когда относительная невязка не превышает допуск:

\lVert \mathbf{r}_{\mathrm{free}}\rVert \le \varepsilon\,\max\left(\lVert\lambda\,\mathbf{f}_{\mathrm{free}}\rVert,\ \lVert\mathbf{f}_{\mathrm{int,free}}\rVert,\ f_{\mathrm{ref}}\right)

Здесь f_{\mathrm{ref}} — опорная норма нагрузки (ниже). Критерий только по невязке; критерия по приращению перемещений или по энергии нет. Опорная норма учитывает следящие нагрузки (иначе чисто следящая задача с нулевой внешней силой в равновесии давала бы относительную невязку 1) и, при нагружении заданными перемещениями или разгрузкой в \lambda = 0, нижнюю границу по полной нагрузке модели. Итерация, у которой невязка мала уже до первого решения, не засчитывается: хотя бы одно приращение выполняется.

Автоматическое дробление шага

Начальный шаг \Delta\lambda — доля 1/N от заданного числа шагов. Если Ньютон не сошёлся за отведённое число итераций (или невязка нечисловая), шаг отбрасывается, состояние откатывается на последнее принятое и \Delta\lambda делится пополам. Если Ньютон сошёлся быстро, шаг растёт. Рост и дробление ограничены снизу и сверху. Дробление ниже минимума — отказ «автошаг исчерпан». Все принятые шаги и откаты считаются и показываются в результате.

Путь нагружения

Для упругопластических задач и циклов нагрузка может идти по произвольной последовательности целевых долей \lambda: \{1, 0\} — нагрузка и полная разгрузка (остаточная деформация), \{1, -1, 1\} — цикл. Автошаг работает на каждом отрезке. Путь нагружения поддержан только управлением по нагрузке.

Что задаёт пользователь

ПараметрDSLСмысл
Число шаговsteps=целевое число шагов до \lambda = 1 (по умолчанию 10)
Итерации на шагmaxiter=потолок итераций Ньютона (по умолчанию 25)
Допуск невязкиtol=относительный допуск \varepsilon (по умолчанию 10^{-6})
Потолок шаговmaxsteps=общее число принятых шагов, включая дробление
Контрольная степень свободыcontroldof=для кривой «нагрузка — перемещение»; по умолчанию наибольшее \lvert u\rvert
Путь нагруженияloadpath="1,0"целевые доли \lambda подряд

Причины отказа, которые видит пользователь, фиксированы: автошаг исчерпан (равновесие не найдено); достигнут потолок числа шагов; вырожденная касательная (механизм или предельная точка при управлении по нагрузке); приземление на \lambda=1 не сошлось; неверный вход; путь убежал на нефизичную ветвь (длина дуги). Вместе с причиной сообщается достигнутое \lambda и число шагов.

Ограничения. Прямое разложение касательной на каждой итерации: память и время растут быстрее числа степеней свободы, поэтому очень большие модели с нелинейностью дороги. Управление по нагрузке не проходит предельные точки (там касательная вырождается): для них нужен метод длины дуги. Граничные условия Дирихле — нулевые перемещения по маске; ненулевые заданные перемещения идут уравнениями связи (подраздел о заданных перемещениях).
Проверка. Невязка сходится квадратично (на оболочке: 1, 9\cdot10^{-4}, 9\cdot10^{-14} по итерациям). Результат не зависит от размера шага: 5, 10 и 20 шагов дают то же решение, что 40 (независимость от размера шага). Нагрузка и разгрузка возвращают упругое состояние (реверс нагрузки). Модель без равновесия честно не сходится: диагностика на недоограниченной модели — сингулярная касательная.

9.4Метод длины дуги Крисфилдастабильно

Когда на пути нагружения есть предельные точки по нагрузке (snap-through) или откат (snap-back), управление по нагрузке в них останавливается: касательная вырождена. Метод длины дуги растёт вдоль самой кривой равновесия, а не вдоль \lambda.

Неизвестные — приращения \Delta\mathbf{u} и \Delta\lambda с дополнительным уравнением связи. Реализован цилиндрический вариант Крисфилда: ограничение на длину дуги накладывается только на перемещения свободных степеней свободы,

\Delta\mathbf{u}^{T}\Delta\mathbf{u} = \Delta l^{2}

Корректор на итерации раскладывается как \delta\mathbf{u} = \delta\mathbf{u}_r + \delta\lambda\,\delta\mathbf{u}_t, где \delta\mathbf{u}_r = \mathbf{K}_T^{-1}\mathbf{r}, \delta\mathbf{u}_t = \mathbf{K}_T^{-1}\mathbf{f}_{\mathrm{ref}}, а \delta\lambda — корень квадратного уравнения

\left\lVert \Delta\mathbf{u} + \delta\mathbf{u}_r + \delta\lambda\,\delta\mathbf{u}_t \right\rVert^{2} = \Delta l^{2}

Из двух корней берётся тот, при котором обновлённое приращение образует меньший угол с приращением до коррекции. Комплексные корни — шаг дробится.

Предиктор касательный; знак приращения нагрузки определяется по Фенгу: знаком скалярного произведения предыдущего приращения и касательного вектора. Этого недостаточно на snap-back многих степеней свободы, поэтому добавлена проверка Крисфилда на разворот: принятое приращение шага обязано образовать острый угол с предыдущим, иначе шаг отвергается и дуга режется вдвое. Длина дуги подстраивается по числу итераций корректора. Если шаг дуги пересёк \lambda = 1, он откатывается и «приземляется» на \lambda = 1 управлением по нагрузке малыми подшагами. Если приземление невозможно (ветвь с отрицательной жёсткостью), принимается последний сошедшийся шаг дуги.

В результате пользователь получает полную историю \lambda(u) вдоль пути: с участками \lambda, убывающей при росте u, и с \lambda<0 после snap-back. Выбор метода — в шаге Solve (список «Метод») и в DSL (method=arc).

frame solve static nlgeom=on method=arc steps=40 maxiter=40 tol=1e-6
Ограничения. Пластичность с длиной дуги не поддержана: история точек Гаусса и разворот пути не согласованы, расчёт отказывает. Путь нагружения (loadpath) с длиной дуги тоже отказывает. Приёмка длины дуги проводилась на упругих балках и оболочках; прохода предельных точек для твёрдых тел с пластичной историей нет. Метод строит путь, но не выбирает ветвь за пользователя: на бифуркации с несколькими ветвями путь зависит от несовершенства (следующий подраздел). Предохранитель останавливает расчёт с отказом «путь убежал», если нагрузка по модулю уходит слишком далеко от заданной.
Проверка. Рама Ли (предельная точка и откат по многим степеням свободы): предельная нагрузка 1.8665, 1.8590 и 1.8569 на 10, 20 и 40 элементах на плечо против эталона 1.85, путь проходит на дальнюю ветвь; рама Ли. Шарнирная цилиндрическая панель (Sze, Sabir–Lock): предельная нагрузка 2221 Н при прогибе 10.3 мм, затем сброс нагрузки до \lambda = 0.22 и выход на \lambda = 1 без откатов шага (шарнирная цилиндрическая секция, отклонение 3.6 % — по прогибу в предельной точке). Ферма Мизеса проходит две предельные точки, замкнутая форма P(s) = EA\,s\,(h^2 - s^2)/l_0^3 сверена в приёмке ядра. На страницах прощёлкивание фермы и длина дуги, ферма эталон — та же замкнутая формула, а решатель подтверждает прохождение предельной точки; поточечная сверка кривой выполнена в тестах ядра.

9.5Начальные несовершенства и закритическое поведениебета

Совершенная конструкция под сжатием теряет устойчивость по бифуркации; реальная — по предельной нагрузке, которая зависит от формы и амплитуды начальных отклонений (чувствительность к несовершенствам, Koiter). Типичная цепочка: линейный расчёт устойчивости \to внесение несовершенства по найденной форме \to нелинейный расчёт длиной дуги.

Команда imperfection берёт k-ю собственную форму линейной потери устойчивости \boldsymbol\phi_k, нормирует её по наибольшему поступательному перемещению и смещает координаты узлов сетки:

\mathbf{X}_i \leftarrow \mathbf{X}_i + w_0\,\frac{\boldsymbol\phi_{k,i}}{\max_j \lVert\boldsymbol\phi_{k,j}\rVert}

Здесь w_0 — наибольшее смещение в единицах длины модели (параметр scale). Несколько команд подряд складывают формы (многомодовое несовершенство). Применимо к оболочечным сеткам, объёмным сеткам и каркасам. Команда требует предшествующего solve buckling на той же модели и меняет геометрию рабочей модели: последующие расчёты идут по возмущённой сетке.

solve buckling nmodes=3
imperfection mode=1 scale=0.5
solve static nlgeom=on method=arc steps=20 maxiter=30 tol=1e-5
Ограничения. Отдельного элемента интерфейса для внесения несовершенства пока нет, команда доступна в DSL. Несовершенство по собственной форме — одна из моделей отклонений; реальные несовершенства (овальность, сварные швы, остаточные напряжения) нужно задавать отдельно. Закритическая ветвь тонких оболочек чувствительна к сетке, амплитуде и числу учтённых форм; результат следует понимать как оценку чувствительности, а не как нормативную предельную нагрузку.
Проверка. В тестах проверены нормировка формы, возмущение координат и критическая нагрузка консоли Эйлера. Критическая нагрузка идеальной квадратной пластины — критическая нагрузка пластины (0.79 % против 4\pi^2 D/b^2). Поведение за точкой бифуркации у оболочек проверено на панели Sze (предыдущий подраздел). Количественной сверки закритических предельных нагрузок с независимым эталоном для команды imperfection пока нет.

9.6Нелинейность материала в итерацияхстабильно

Материальная нелинейность входит в тот же цикл Ньютона. На каждой точке Гаусса хранится история закона (принятое состояние); на итерации закон вычисляется от принятого состояния, а не накапливается по итерациям. Принятое состояние обновляется после сошедшегося шага, при откате шага состояние остаётся прежним. Поэтому повторная сборка при тех же перемещениях идемпотентна, а дробление шага не портит историю.

Закон возвращает напряжение и согласованную касательную \partial\mathbf{S}/\partial\mathbf{E}. Для пластичности по Мизесу (изотропное, кинематическое, мультилинейное упрочнение) и Джонсона–Кука на вход закона идёт тензор Грина–Лагранжа, на выходе второй тензор Пиолы–Кирхгофа: пластичность аддитивна в этой паре. Описание законов и их параметров — в разделе Модели материалов.

Режим «только материальная нелинейность» (nlgeom=material) отключает геометрическую нелинейность солидов: \boldsymbol\varepsilon = \mathrm{sym}\,\nabla\mathbf{u}, \mathbf{K}_{\mathrm{geo}} не собирается, давление мёртвое.

Для идеальной пластичности исчерпание автошага у последней цели нагрузки означает исчерпание несущей способности. В этом случае продукт возвращает последнее сошедшееся равновесие как результат и сообщает предельную долю нагрузки (\lambda_{\mathrm{lim}}); с упрочнением такой отказ остаётся ошибкой расчёта.

material steel plasticity=j2 yield=250e6
nlgeom material steps=20 loadpath="1,0"
solve static
Ограничения. Пластичность и гиперупругость не смешиваются в одной модели. Аддитивная пластичность (\mathbf{E}, \mathbf{S}) не описывает течение на десятках процентов деформации. Это видно на толстостенном цилиндре под давлением при заданном трёхкратном расширении полости: расчёт с мёртвой нагрузкой доходит лишь до a/a_0 = 1.44 (со следящей — до 1.005), и эти результаты не принимаются как решение. Прототип мультипликативной пластичности (\mathbf{F}=\mathbf{F}_e\mathbf{F}_p) существует на уровне материальной точки, в выпущенную версию не входит и здесь не заявляется. Адиабатический разогрев в неявной статике отказывает (он зависит от скорости) — используйте явную динамику.
Проверка. Пластический шарнир прямоугольного сечения: предельный момент отличается от \sigma_y b h^2/4 на 0.05\% (пластический шарнир). Отклонения порядка 10^{-6} % на одном элементе при одноосном нагружении, чистом сдвиге и разгрузке: одноосное нагружение, чистый сдвиг, остаточное состояние после разгрузки, реверс текучести. Совместное действие геометрии и пластичности проверено на деформациях менее 1 %.

9.7Заданные перемещения в нелинейной постановкебета

Нагружать можно не только силой, но и заданным перемещением (привод, посадка, растяжение образца). В нелинейной статике ненулевое заданное перемещение вводится линейным уравнением связи на трансляционных степенях свободы с правой частью, пропорциональной \lambda:

\sum_i c_i\,u_i = \lambda\,\bar r

Здесь c_i — коэффициенты связи (для заданного перемещения одна степень свободы с коэффициентом 1), \bar r — заданное значение (в метрах на границе решателя); первый член уравнения — зависимая степень свободы. Перемещение растёт вместе с долей нагрузки и в путях нагружения \{1, 0\} возвращается к нулю. Связь на трансляциях остаётся точной при больших перемещениях. Заданные перемещения совместимы с силами, следящим давлением и путём нагружения.

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

Ограничения. Только трансляции: заданный поворот и связи на поворотах отказывают. Зависимая степень свободы не может одновременно быть закреплена. Заданное перемещение удалённой точки (цепочка связей на мастере RBE2) отказывает.
Проверка. Два элемента HEX8 неравной длины с заданным удлинением 2 %: сила опоры и привода \mp 4120.8 Н совпадает с точной силой Сен-Венана–Кирхгофа, после разгрузки до \lambda = 0 максимальное перемещение порядка 10^{-12} м. Гибридный брус (Tet4, Hex8, Pyr5) при растяжении на 15 % воспроизводит эталон до 10^{-7} относительно. Отдельного кейса на странице верификации нет.

9.8Неявная динамика солидовстабильно

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

\mathbf{M}\ddot{\mathbf{u}} + \mathbf{C}\dot{\mathbf{u}} + \mathbf{f}_{\mathrm{int}}(\mathbf{u}) = \mathbf{F}(t)

с нагрузкой \mathbf{F}(t) = k(t)\,\mathbf{F}_0, где k(t) — кусочно-линейная амплитуда по таблице пар «время — множитель».

Схемы

Реализованы Newmark-\beta и HHT-\alpha (Хилберт–Хьюз–Тейлор). Обобщённой \alpha-схемы (Chung–Hulbert) нет. Обе схемы записаны в одной форме:

\mathbf{M}\mathbf{a}_{n+1} + (1+\alpha)\left[\mathbf{C}\mathbf{v}_{n+1} + \mathbf{f}_{\mathrm{int}}(\mathbf{u}_{n+1})\right] - \alpha\left[\mathbf{C}\mathbf{v}_n + \mathbf{f}_{\mathrm{int}}(\mathbf{u}_n)\right] = (1+\alpha)\mathbf{F}_{n+1} - \alpha\mathbf{F}_n
\mathbf{u}_{n+1} = \mathbf{u}_n + h\mathbf{v}_n + h^2\left[(\tfrac12 - \beta)\mathbf{a}_n + \beta\mathbf{a}_{n+1}\right], \qquad \mathbf{v}_{n+1} = \mathbf{v}_n + h\left[(1-\gamma)\mathbf{a}_n + \gamma\mathbf{a}_{n+1}\right]

Newmark — это \alpha = 0; по умолчанию \beta = 1/4, \gamma = 1/2 (правило трапеций: безусловно устойчиво, без численного демпфирования). Для HHT-\alpha параметр \alpha\in[-1/3, 0], а \beta = (1-\alpha)^2/4, \gamma = (1-2\alpha)/2; численное демпфирование высоких частот тем сильнее, чем меньше \alpha: предел спектрального радиуса при \Omega\to\infty равен (1+\alpha)/(1-\alpha). Обобщённые \beta, \gamma принимаются при \gamma \ge 1/2 и \beta \ge (\gamma + 1/2)^2/4, то есть только безусловно устойчивые; остальные (в том числе «линейное ускорение») отказывают, чтобы не допустить тихой неустойчивости.

Неизвестная схемы — приращение \Delta\mathbf{u} шага. Ньютон идёт по эффективной касательной

\mathbf{J} = \frac{\mathbf{M}}{\beta h^2} + (1+\alpha)\left[\frac{\gamma}{\beta h}\mathbf{C} + \mathbf{K}_T(\mathbf{u}_{n+1})\right]

Демпфирование Рэлея \mathbf{C} = a_R\mathbf{M} + b_R\mathbf{K}_0; \mathbf{K}_0 — касательная начальной конфигурации, она не обновляется по ходу расчёта (как материальное демпфирование в промышленных кодах). Коэффициенты задаются парой (a_R, b_R) или двумя парами «частота — доля критического». Если шаг не сошёлся, он режется пополам рекурсивно до заданной глубины (подшаги внутри одного шага вывода). При малых деформациях без пластичности (\mathbf{K} постоянна) используется быстрый линейный путь с одной факторизацией на весь расчёт.

Что задаёт пользователь

Шаг h и конечное время обязательны. Масса: согласованная (по умолчанию), сосредоточенная по HRZ либо «поровну по узлам». Кинематика: малые деформации либо большие перемещения (Total Lagrangian). Начальные условия: статика под полной нагрузкой («отпускание») или нули; начальная скорость всем узлам или выбранному телу. Ускорение основания задаётся в относительной постановке \mathbf{F} = -\mathbf{M}\boldsymbol\iota\,\mathbf{a}_0\,k(t). Результат: перемещения, скорости, ускорения в точках-пробниках по времени, ряды энергий (кинетическая, внутренняя работа, рассеяние демпфированием, работа внешних сил, баланс), максимум по Мизесу и пластической деформации, кадры поля и огибающая Мизеса по узлам.

solve transient dt=1e-4 tend=0.05 scheme=hht alpha=-0.05 amplitude="0:0,0.001:1"
solve transient dt=1e-4 tend=0.05 rayleigh f1=50 z1=0.02 f2=500 z2=0.05

Ключи alpha= и beta= здесь параметры схемы, а не коэффициенты Рэлея. Альтернатива прямому интегрированию — модовая суперпозиция (method=modal) с точным интегралом Дюамеля и статической поправкой остаточных мод; она линейна и не заменяет нелинейную динамику.

Ограничения. Безусловная устойчивость доказана для линейной системы. В нелинейной задаче баланс энергии не гарантирован: консоль в Total Lagrangian даёт дрейф T+U за пять периодов 3\cdot10^{-7} при амплитуде 10^{-4} м и 2.9\cdot10^{-4} при амплитуде 0.078 м. HHT и \beta,\gamma вне правила трапеций рассеивают энергию численно, баланс показывает эту потерю. Пластичность и Total Lagrangian платят факторизацию на каждую итерацию: практический потолок — десятки тысяч шагов на тысячи степеней свободы. Следящее давление в динамике отказывает. Гиперупругость вместе с пластичностью не смешивается. В браузере доступны упругие модели и Total Lagrangian без пластичности, контакта и связей; результат веб-пути совпадает с нативным на одной сетке.
Проверка. Период колебаний совпадает с периодом дискретной схемы до 10^{-6}; траектория системы с одной степенью свободы совпадает с независимой матрицей перехода до 4\cdot10^{-12} (Newmark и HHT при безразмерной частоте \omega h от 0.3 до 60); коэффициент динамичности ступени на консоли 1.958 против модальной суммы 1.957 и 2.000 для чисто модальной нагрузки. Кейсы верификации: свободные затухающие колебания консоли, демпфирование Рэлея (0.065 %), ступенчатая нагрузка, коэффициент динамичности (0.84 %), энергия Newmark за 100 периодов, численное затухание HHT, упругопластический брус под импульсом (остаточное удлинение против квазистатической разгрузки 0.42 %).

9.9Неявная динамика балок и оболочек, связи и основаниебета

Для балок и оболочек динамика ведётся на группе поворотов SO(3). Узел несёт вращательную инерцию; уравнение Эйлера для вращения в пространственной форме

\mathbf{g} = \mathbf{J}_s\,\boldsymbol\alpha + \boldsymbol\omega\times\left(\mathbf{J}_s\boldsymbol\omega\right), \qquad \mathbf{J}_s = \mathbf{R}\,\mathbf{J}_{\mathrm{ref}}\,\mathbf{R}^{T}

Приращение поворота шага \Delta\boldsymbol\theta = \log(\mathbf{R}\,\mathbf{R}_n^{T}) входит в Newmark/HHT, касательная вращательного блока включает производную \mathbf{T}^{-1}. Масса: согласованная или сосредоточенная; поддержана начальная угловая скорость \mathbf{w}_0 (жёсткое вращение вокруг центра масс).

Для солидов дополнительно доступны: связи CE/MPC и RBE2, нормальные связи, удалённые силы и моменты, заданное движение опор (u = k(t)\bar u в абсолютной постановке), ускорение основания (сейсмическое возбуждение). Динамика идёт в независимых степенях свободы с редуцированной массой \mathbf{M}_r = \mathbf{T}^{T}\mathbf{M}\mathbf{T}. Контакт и трение (штраф узел–поверхность, регуляризованное кулоновское трение) описаны в разделе Контакт и соединения.

Ограничения. Модель из солидов вместе с балками или оболочками в динамике отказывает. У балок и оболочек нативное ядро не несёт связей, возбуждения основания и смещённых сечений. Следящее давление отказывает. Призмы и пирамиды имеют матрицу масс; HEX27 — нет. Часть возможностей появилась после выпущенной версии и подтверждена меньшим числом независимых сверок.
Проверка. На матрицах жёсткости и масс консольной балки (8 элементов) ошибка перемещений и скоростей против точного затухающего решения падает в четыре раза при каждом уменьшении шага вдвое (второй порядок) у Newmark и HHT. Кейсы: сейсмическое ускорение основания и RBE2 в трёхмерных телах, двухпролётная балка с эксцентриситетом и шарниром.

9.10Явная динамикастабильно

Явная схема нужна для быстрых процессов: удар, пробитие, взрывное нагружение, распространение волн. Шаг по времени ограничен условием Куранта–Фридрихса–Леви, зато нет решения системы уравнений и итераций: одна оценка внутренних сил на шаг. Уравнения движения интегрируются схемой центральных разностей (скоростная форма Верле) с диагональной матрицей масс:

\mathbf{v}^{n+1/2} = \mathbf{v}^{n-1/2} + \Delta t\,\mathbf{M}^{-1}\left[\mathbf{f}_{\mathrm{ext}} - \mathbf{f}_{\mathrm{int}}(\mathbf{u}^{n})\right], \qquad \mathbf{u}^{n+1} = \mathbf{u}^{n} + \Delta t\,\mathbf{v}^{n+1/2}

Сосредоточенная масса по HRZ (Hinton–Rock–Zienkiewicz): диагональ согласованной массы, отмасштабированная на полную массу элемента. Она положительна и для элементов второго порядка, где суммирование по строке даёт отрицательные массы угловых узлов.

Критический шаг

Шаг не превышает оценки времени пробега волны через самый малый элемент:

\Delta t = \alpha_{\Delta t}\,\min_e \frac{L_e}{c_e}, \qquad c = \sqrt{\frac{K + \tfrac{4}{3}G}{\rho}}

Здесь L_e — характерный размер элемента (для гексаэдра V/A_{\max}, для тетраэдра 3V/A_{\max}, где A_{\max} — наибольшая грань), \alpha_{\Delta t} — коэффициент запаса, который задаёт пользователь (dtScale). Для HEX8 используется строгий предел элемента 2/\omega_{\max} по максимальному собственному числу \mathbf{M}^{-1}\mathbf{K}_e. Для куба при \nu=0.3 он равен 0.735\,L_e/c (объёмное «дыхание»), поэтому оценка L_e/c сама по себе не безопасна. Шаг пересчитывается по ходу счёта: по живым элементам и по текущему размеру при конечных деформациях. Если в сетке есть вырожденные элементы с аномально малым характерным размером, их масса масштабируется, чтобы они не обнуляли шаг всего расчёта. Масштабирование искажает инерцию этих элементов.

Элементы, материалы, нагрузки

Трёхмерные TET4, TET10, HEX8; двумерные QUAD4 и QUAD8 (плоская деформация или плоское напряжение). HEX8 — одноточечный элемент с точным объёмно-усреднённым градиентом и контролем «песочных часов» по Фланагану–Белычко (вязкая и жёсткостная формы, коэффициент задаёт пользователь, расчёт сообщает отношение энергии песочных часов к внутренней и предупреждает о чрезмерном). Материалы: линейно-упругий, J2 с идеальным, линейным или мультилинейным упрочнением (изотропная и кинематическая доли), Джонсон–Кук (скорость, температура, адиабатический разогрев), уравнение состояния Ми–Грюнайзена для ударных волн (см. раздел Модели материалов). Объёмная вязкость q_1 (линейная) и q_2 (квадратичная) подавляет осцилляции на фронтах.

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

Конечные деформации

Для TET4 и HEX8 включается режим конечных деформаций (largeStrain=on): обновлённая Лагранжева формулировка, градиенты на текущей сетке, гипоупругость Яумана с поворотом накопленных деформаций по Хьюзу–Уингету, текущий объём и размер элемента в оценке шага. Без него постановка геометрически линейная (малые деформации и повороты). Для ударов с деформациями порядка единицы этот режим необходим: удар Тейлора в геометрически линейной постановке отклоняется от теории на 1.6 % и 5.1 % (при безразмерной нагрузке \rho U^2/\sigma_y, равной 0.25 и 0.5).

material E=124e9 nu=0.34 density=8960 plasticity=j2 yield=300e6
explicit endTime=0.00017 dtScale=0.8 largeStrain=on
bc explicit_velocity body vx=-91.5
bc rigid_wall plane x 0 friction=0
solve explicit
Ограничения. Шаг мал (микросекунды и меньше): полные секунды физического времени на детальной сетке — миллионы шагов. Контакт в явной схеме — эродирующий (описан ниже), трения в нём нет. TET10 и двумерные элементы не поддерживают конечные деформации и эрозию. Для равновесных задач используйте неявную статику. Расчёт можно отменить: флаг отмены опрашивается на каждом шаге.
Проверка. Растяжение стержня с линейным упрочнением (J2, линейное упрочнение), мультилинейная кривая (мультилинейное упрочнение), эффект Баушингера (смешанное и кинематическое упрочнение), скоростная чувствительность и разогрев меди (скоростная чувствительность Джонсона–Кука, адиабатический разогрев), ударная волна в меди (Ми–Грюнайзен, U_s = c_0 + s\,U_p). Удар Тейлора медного цилиндра: отношение конечной и начальной длины L_1/L_0 = 0.9002 против 0.8957 по теории Хокъярда (энергия) и 0.8968 по теории Тейлора (импульс), отклонение 0.5 % (удар Тейлора); сходимость по шагу — удар стержня Тейлора: средняя пластическая деформация 0.14021, 0.13983, 0.13962, 0.13956 при четырёх коэффициентах запаса. Скорость волны в стержне из HEX8 (скорость продольной волны), консоль под собственным весом (консоль Эйлера–Бернулли, 1.7 %). Удар пластины в явной схеме при пробитии сверен грубо, на 16–20 %, и в справочнике как проверенный не заявляется.

9.11Эрозия элементов и разрушениебета

Для расчётов пробития и откола элемент, достигший критерия разрушения, удаляется из внутренних сил. Критерии можно комбинировать, разрушение наступает при достижении любого:

  • предельная эквивалентная пластическая деформация \varepsilon_p \ge \varepsilon_{\mathrm{fail}};
  • накопленное повреждение Джонсона–Кука D = \sum \Delta\varepsilon_p/\varepsilon_f, где \varepsilon_f = [d_1 + d_2 e^{d_3\eta}]\,[1 + d_4\ln\dot\varepsilon^*]\,[1 + d_5 T^*];
  • максимальное главное напряжение \sigma_1 \ge \sigma_{\max};
  • отрывное давление \sigma_m \ge p_{\mathrm{spall}}.

Удалённый элемент перестаёт нести силы, но масса его узлов остаётся (импульс сохраняется), шаг считается по живым элементам, внутренняя энергия элемента фиксируется как энергия эрозии, и энергетический баланс остаётся замкнутым. Эродирующий контакт — односторонний штрафной узел–сегмент по всей внешней поверхности живых элементов; по мере эрозии открываются новые грани, и ударник встречает образовавшуюся каверну.

material steel plasticity=j2 yield=355e6 fail="ep:0.25,smax:1.2e9"
explicit endTime=0.03 dtScale=0.8 largeStrain=on erodingContact=on
Ограничения. Эрозия поддержана на HEX8 и TET4 (TET10 и двумерные элементы отказывают). Эродирующий контакт — только HEX8, без трения; контакт ребра с ребром не ловится; для TET4 отказывает. Эрозия удаляет массу из модели только по критерию, сетка не перестраивается; результат зависит от размера элемента. Параметры критериев берутся из эксперимента или литературы, продукт их не подбирает. Метод даёт качественно верную картину откола и пробития, но количественная точность пробития хуже, чем у однородных задач.
Проверка. Однородный стержень при конечной деформации отказывает при перемещении, предсказанном формулой u_f = L\,[\exp(\varepsilon_{\mathrm{fail}} + \sigma_f/E) - 1], первая эрозия в пределах 0.5 %; баланс энергии замкнут до 0.11 % (эрозия, однородный стержень, 1.46 %). Стержень с надрезом разделяется на две части, свободный стержень — на три с точным сохранением импульса. Пробитие пластины сверено грубо, на 16–20 %.

9.12Волновые задачи в явной динамикебета

Распространение упругих волн в грунте и твёрдом теле. Источники: давление или касательная нагрузка на грань, сила в узле, взрывная полость с давлением по закону во времени, гладкий центр расширения (безвихревая объёмная сила, чистая P-волна). Законы во времени: импульс Рикера, экспонента, свип частоты, гармоника, ступень, таблица. Упругие слои задают расслоённое полупространство. Виртуальные геофоны записывают перемещение, скорость и ускорение в узле или в ближайшем к заданной точке узле; по ним считаются PPV, время прихода и скорость волны. Поля \nabla\cdot\mathbf{u} и \lvert\nabla\times\mathbf{u}\rvert выводятся на сетку и в узлы.

Неотражающая граница Лисмера–Кулемейера задаёт напряжения, пропорциональные скорости:

\sigma_n = -\rho\,c_p\,v_n, \qquad \tau = -\rho\,c_s\,v_t

Плотность и скорости волн берутся по материалу смежного элемента, нормаль — по самой грани, демпфер входит в шаг неявно.

explicit geophone at=0,0,-100 name=g1
explicit layer axis=z at=-300 E=2e9 nu=0.3 density=1800
bc explicit_absorbing surface number 4
Ограничения. Граница Лисмера–Кулемейера точна при нормальном падении и ухудшается с углом: отражение P- и S-волн порядка долей процента при нормальном падении, 2.5 % при 30°, 9 % при 45°, 24 % при 60°. Для скользящих волн границу нужно отодвигать от источника. Слой CPML для HEX8 существует как опция, но в справочнике не заявляется как проверенный. Размер элемента должен разрешать длину волны, иначе возникает численная дисперсия.
Проверка. Отражение от поглощающей границы при нормальном падении: P-волна 0.39 %, S-волна 0.4–1.4 % (поглощающая граница Лисмера–Кулемейера). Скорости P- и S-волн в столбе грунта по геофонам: скорости волн в столбе грунта. Отражение и прохождение на границе слоёв: отражение на границе слоёв. Волна Рэлея: скорость волны Рэлея (1.3 %). Спад 1/r сферической волны: точечный источник (4.6 %, близко к допуску).

9.13Рождение и смерть элементов, этапы возведения и выемкистабильно

Для возведения сооружения по ярусам, выемки грунта, проходки туннеля и послойного наплавления набор активных элементов меняется от этапа к этапу, нагрузки и закрепления кумулятивны, перемещения и напряжения накапливаются. Задаётся список этапов: каждый этап включает тела (рождение) и выключает тела (смерть) в своём начале.

Метод «мягких элементов»: сетка остаётся целиком, размер системы не меняется между этапами. Неактивный элемент не удаляется; его внутренняя сила и касательная умножаются на малый множитель мягкости s (параметр stagesoft), закон упругий и без истории, плотность и вес ему не назначаются. Ошибка алгоритма пропорциональна множителю: относительная погрешность порядка 0.04\,s. Узлы, принадлежащие только неактивным элементам, следуют за активной частью: в начале этапа их положение задаётся по ближайшему узлу границы с активным телом.

Рождение. В начале этапа опорная конфигурация нового элемента принимается равной текущей: \mathbf{H} = \nabla(\mathbf{u} - \mathbf{u}_{\mathrm{ref}}) = \mathbf{0}, \mathbf{S} = \mathbf{0}, история пластичности чистая. Элемент рождается ненапряжённым на деформированной конфигурации, а не на исходной сетке. Смерть. Элемент становится мягким, его остаточная сила обнуляется; снятую им нагрузку конструкция принимает постепенно вместе с приращением нагрузки этапа.

Нагружение этапа идёт по параметру \lambda\in[0,1]:

\mathbf{P}(\lambda) = (1-\lambda)\,\mathbf{b} + \lambda\,\mathbf{f}_{\mathrm{stage}}, \qquad \mathbf{b} = \mathbf{f}_{\mathrm{int}}(\mathbf{u}_0)

где \mathbf{b} — внутренняя сила для нового набора активных элементов на конфигурации \mathbf{u}_0 в начале этапа (равновесной по построению), \mathbf{f}_{\mathrm{stage}} — полная нагрузка этапа. Разность \mathbf{f}_{\mathrm{stage}} - \mathbf{b} несёт и приращение внешней нагрузки, и «силу выемки» умерших элементов. Ньютон и автошаг — общие с нелинейной статикой. Допуск этапа измеряется по полной нагрузке модели. Вес и объёмные силы назначаются по телам: у неактивного тела веса нет.

Результаты хранятся по этапам; команда stage view переключает просмотр и замеры.

nlgeom on pressure=dead
stage add name=L1
stage add name=L2 activate=body2
solve static
stage view 2
Ограничения. Расчёт нативный, в браузере этапы отказывают. Поддержаны только солиды на тетраэдрах (первого и второго порядка); балки, оболочки, контакт, связи, длина дуги и путь нагружения с этапами отказывают. Давление мёртвое. Нагрузка на узел, у которого нет активных элементов, на этапе приостанавливается (число таких узлов сообщается). Стоимость растёт с числом этапов: восемь этапов на модели в 55 тысяч степеней свободы дали рост времени в 6–9 раз относительно одного прохода. Множитель мягкости задаёт пользователь (диапазон от 10^{-12} до 10^{-2}): слишком малый ухудшает обусловленность, слишком большой вносит ошибку.
Проверка. Этап с полным набором тел совпадает с обычной статикой побитово (одна стадия). Возведение колонны слоями под собственным весом: отклонение от замкнутой формы не более 0.12 % на каждом из четырёх этапов (возведение колонны). Выемка с упругим отскоком: до 0.17 % (выемка, отскок). Рождённое на нагруженной конструкции тело ничего не несёт (ненапряжённое рождение); обычный расчёт даёт осадку на 18 % больше. Пластичность: течёт только тело, рождённое позже (пластичность и рождение).

Нестационарная температура может нагружать конструкцию в динамике. Связь односторонняя: шаг теплопроводности даёт T_{n+1}, термонагрузка \mathbf{f}_{\mathrm{th}}(T_{n+1}) входит в механику; обратного влияния деформации на температуру (член Гоу–Джоуля) нет. Два режима: квазистатика (на каждом тепловом шаге \mathbf{K}\mathbf{u} = \mathbf{f}_{\mathrm{ext}} + \mathbf{f}_{\mathrm{th}}(T), без инерции) и динамика — тот же интегратор Newmark/HHT, что в неявной динамике, с термонагрузкой в правой части; HHT берёт (1+\alpha)\mathbf{f}_{\mathrm{th}}(T_{n+1}) - \alpha\mathbf{f}_{\mathrm{th}}(T_n). Один тепловой шаг приходится на заданное число механических. Постановка нестационарной теплопроводности — в разделе Теплопередача и мультифизика.

Ограничения. Односторонняя связь: тепловыделение от пластической работы в неявной динамике не возвращается в температуру. Контакт и радиация в связанной постановке отказывают. Пластичность с нагревом считается только нативно.
Проверка. Волна Даниловской: скорость фронта отклоняется на 0.3 % (ядро) и 2 % (продукт на TET10); профиль напряжений сходится при сгущении сетки (волна Даниловской, 1.7 %). Режим квазистатики без инерции совпадает со статической термоупругостью до 10^{-13} по перемещениям.

9.15Отмена расчётабета

Кнопка «Отмена» в шаге Solve выставляет флаг отмены нативного решателя и прерывает ожидание результата. Что именно остановится, зависит от расчёта.

Флаг опрашивается: в цикле явной динамики на каждом шаге (расчёт возвращает частичный результат со статусом «отменён»), в нестационарной теплопроводности после каждого шага (частичные кадры), в шагах нагружения контакта mortar. В цикле Ньютона нелинейной статики, в неявной динамике и в стадийном расчёте точки опроса нет: интерфейс показывает отмену сразу, но ядро может дойти до конца текущего вызова.

Ограничения. Для длинных нелинейных статических и неявных динамических расчётов досрочная остановка ядра не гарантирована. Если расчёт мог занять много времени, ограничивайте его заранее: число шагов, потолок общего числа шагов, конечное время.

9.16Честность флага «сошлось»стабильно

Нелинейный расчёт, который показывает результат под видом решения, хуже расчёта, который отказал. В продукте принято следующее.

Для управления по нагрузке расчёт считается сошедшимся только если достигнута \lambda = 1 (или последняя цель пути нагружения) и последний шаг сошёлся по невязке. Исчерпанный автошаг, потолок числа шагов, вырожденная касательная, нечисловые значения — отказ с кодом причины, достигнутым \lambda и числом шагов, а не последний шаг под видом результата. В интерфейсе статус звучит «Сошлось: достигнута \lambda = 1» либо «Не сошлось: причина». Проверка: задача без равновесия возвращает converged = false и \lambda < 1.

Частичный прогресс не маскируется: пользователь видит число принятых шагов, откатов и итераций. Для идеальной пластичности предельная нагрузка — отдельный явный результат, помеченный как предельная доля нагрузки. Вывернутый элемент (с неположительным якобианом) считается нечисловым и режет шаг: расчёт под давлением, превышающим предельное, не возвращает «сошедшееся» решение с отрицательным объёмом. Нативные результаты проверяются на полноту: старый бинарь, не знающий пластичности или пути нагружения, отказывает с просьбой обновить приложение, а не возвращает упругий ответ.

Ограничения. Метод длины дуги может завершить расчёт на достигнутой точке пути, если дробление шага исчерпано после нескольких пройденных шагов; признак сходимости при этом остаётся истинным, хотя \lambda может быть меньше 1. Сверяйте достигнутое \lambda с единицей: для метода длины дуги это единственный надёжный признак того, что заданная нагрузка достигнута. В интерфейсе оно выводится вместе со статусом.

10Теплопередача и мультифизика

↑ К оглавлению

Раздел описывает тепловые задачи (теплопроводность, излучение, тепловой контакт), термоупругость, обтекание потоком жидкости или газа (CFD) и акустику полостей. Модули разные по зрелости: теплопроводность и термоупругость считаются и в десктопе, и в браузере, CFD — только в десктопе; акустика и эффект Гоу–Джоуля пока экспериментальные. Статус каждого подраздела стоит в заголовке, ограничения вынесены в отдельные врезки.

Единицы на входе и выходе: геометрия в мм, время в секундах, температура в °C (в формулах излучения ядро само переводит её в кельвины), теплопроводность \kappa в Вт/(м·К), теплоёмкость c_p в Дж/(кг·К), плотность в кг/м³, плотность теплового потока в Вт/м², коэффициент теплоотдачи h в Вт/(м²·К), объёмное тепловыделение Q в Вт/м³, коэффициент теплового расширения \alpha в 1/К. На границе солвера — СИ.

Десктопная сборка считает нативным ядром, браузерная — тем же кодом в WebAssembly. Эталоном считается десктоп. На проверенных задачах (нелинейное тепло, связная термоупругая динамика) числа двух платформ совпадают до печатаемых цифр. CFD доступен только в десктопе.

10.1Стационарная теплопроводностьбета

Стационарная задача даёт установившееся поле температуры при заданных температурах, потоках, конвекции и объёмном тепловыделении. Применяется для оценки перепадов температуры в деталях, мощности теплоотвода и как первый шаг связной термоупругости.

Постановка

Уравнение Фурье для изотропного материала в области \Omega:

-\nabla\cdot(\kappa\,\nabla T)=Q \quad\text{in }\Omega

Граничные условия на непересекающихся частях границы (нормаль \mathbf n внешняя):

  • температура: T=T_D;
  • поток, положительный внутрь тела: \kappa\,\partial_n T=q;
  • конвекция: -\kappa\,\partial_n T=h\,(T-T_\infty);
  • излучение в среду: -\kappa\,\partial_n T=\varepsilon\sigma\,(T_K^4-T_{\infty K}^4) — см. нелинейную теплопроводность.

Слабая форма для линейного случая (без излучения): найти T, равную T_D на границе с заданной температурой, такую что для любой пробной функции w

\int_\Omega \kappa\,\nabla T\cdot\nabla w\,dV+\int_{\Gamma_h} h\,T\,w\,dA=\int_\Omega Q\,w\,dV+\int_{\Gamma_q} q\,w\,dA+\int_{\Gamma_h} h\,T_\infty\,w\,dA

Дискретизация даёт симметричную положительно определённую систему \mathbf K\,\mathbf T=\mathbf F с матрицей K_{ij}=\int_\Omega\kappa\,\nabla N_i\cdot\nabla N_j\,dV+\int_{\Gamma_h}h\,N_iN_j\,dA и вектором F_i=\int_\Omega Q\,N_i\,dV+\int_{\Gamma_q}q\,N_i\,dA+\int_{\Gamma_h}h\,T_\infty N_i\,dA.

Что задаёт пользователь и что получает

Пользователь задаёт \kappa материала (отдельно для каждого тела), температуры, потоки и коэффициенты конвекции на гранях по номерам поверхностей, объёмное тепловыделение Q для всего тела или для выбранного тела. Результат — поле температуры в узлах, минимум и максимум, баланс мощности в ваттах:

P_Q+P_q=P_D+P_h+P_r

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

Как реализовано

Элементы — линейные и квадратичные тетраэдры (тип 4 и 10 узлов). Ядро умеет и гексаэдры 8/20/27 узлов, клин и пирамиду. Граничные грани — треугольники и четырёхугольники первого и второго порядка. Матрица разреженная: небольшие системы решаются прямым разложением LDL^T, большие — методом сопряжённых градиентов с предобуславливателем неполным Холецким. Без закреплённой температуры или конвекции хотя бы на одной грани задача вырождена (температура определена с точностью до константы), и расчёт отказывает с пояснением.

Ограничения. Теплопроводность изотропная, скалярная. Излучение только в среду с заданной температурой, без излучения между поверхностями полости (коэффициенты облучённости в расчёт не подключены). Конвекция — с постоянным h, без зависимости от температуры. Сетка с призматическими пограничными слоями для тепловой задачи отклоняется. Выбор гексаэдральной сетки в интерфейсе для теплового расчёта не предусмотрен: входы продукта собирают тетраэдры.
Проверка. Отдельного кейса на линейную стационарную задачу в списке верификации нет. Линейное ядро проверено в тестах на замкнутом решении для стержня с тепловыделением, T_{\max}-T_0=QL^2/(2\kappa): ошибка у квадратичных элементов не выше 4\cdot10^{-14} относительной, у линейного тетраэдра 0.33 %. Тот же ассемблер работает в нелинейных кейсах: NAFEMS T2, теплопроводность с κ(T), тепловой контакт. Статус бета, потому что ядро переписано после выпуска 0.2.1 (разреженные решатели, квадратичные элементы, тепловыделение).

Интерфейс: тепловой анализ в ленте, тепловые ГУ («Тепловой поток», «Объёмное тепловыделение») на шаге граничных условий, результат — поле «Температура» и баланс мощности.

material preset=steel kappa=40
thermal surface number 1 temperature=100
thermal surface number 2 convection=25 ambient=20
load heat_generation=2e6
solve thermal

10.2Нестационарная теплопроводностьбета

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

Постановка

\rho c_p\,\dot T-\nabla\cdot(\kappa\,\nabla T)=Q \quad\Rightarrow\quad \mathbf C\,\dot{\mathbf T}+\mathbf K\,\mathbf T=\mathbf F(t)

Матрица теплоёмкости C_{ij}=\int_\Omega\rho c_p\,N_iN_j\,dV — согласованная либо диагональная HRZ (Hinton, Rock, Zienkiewicz, 1976): диагональ согласованной матрицы, отмасштабированная на элемент так, чтобы сумма равнялась \int\rho c_p\,dV. Диагональная матрица убирает осцилляции на резком фронте, но поддерживается только для линейных элементов.

Интегрирование по времени — \theta-метод:

\left(\tfrac{1}{\Delta t}\mathbf C+\theta\mathbf K\right)\mathbf T_{n+1}=\left(\tfrac{1}{\Delta t}\mathbf C-(1-\theta)\mathbf K\right)\mathbf T_n+\theta\,\mathbf F_{n+1}+(1-\theta)\,\mathbf F_n,\qquad \tfrac12\le\theta\le1

При \theta=1 схема — неявный Эйлер: первый порядок, L-устойчива, монотонна. При \theta=\tfrac12 — Кранк–Николсон: второй порядок, A-устойчива, но на скачке нагрузки даёт затухающие колебания — это свойство схемы. Матрица шага постоянна, поэтому факторизуется один раз. Шаг подгоняется под конечное время: \Delta t_{\text{used}}=t_{\text{end}}/\lceil t_{\text{end}}/\Delta t\rceil. Возможен и заданный пользователем неравномерный график шагов.

Что задаёт пользователь

Обязательны шаг \Delta t, конечное время и начальная температура: начальное состояние продукт не угадывает. Дополнительно — плотность и c_p материала, схема \theta и тип теплоёмкости, пробники (точки в мм, привязываются к ближайшему узлу), число сохраняемых кадров поля. Каждый канал нагрузки умножается на кусочно-линейную таблицу времени k(t): температура T_D(t)=T_D\,k_T(t), поток, коэффициент конвекции, температура среды, тепловыделение. Вне таблицы множитель постоянен. Температура на узлах с заданным значением в момент t=0 равна T_D(0), поэтому скачок стенки при t=0 не создаёт импульса в первом шаге.

Баланс энергии

Суммирование строк уравнения шага даёт точное тождество

\mathbf 1^T\mathbf C\,(\mathbf T_{n+1}-\mathbf T_n)=\Delta t\,\left[\theta\,P_{n+1}+(1-\theta)\,P_n\right]

где P — суммарная мощность тепловыделения, потока и реакций на заданной температуре за вычетом конвекции и излучения. Продукт выводит невязку этого тождества и независимый интеграл накопленной энергии \int\rho c_p\,\Delta T\,dV. Невязка порядка машинной означает, что реакции, конвекция и источники собраны согласованно с матрицей.

Ограничения. Теплопроводность изотропная; \rho и c_p не зависят от температуры. Нет коэффициента h, зависящего от температуры, нет фазовых переходов. Диагональная теплоёмкость на квадратичных элементах (тетраэдр 10 узлов, гексаэдр 20/27) отклоняется. В браузере очень крупные задачи отклоняются с рекомендацией перейти в десктоп.
Проверка. NAFEMS T3: 36.584 °C против 36.6 °C (0.045 %), невязка баланса 1.4\cdot10^{-14}. Полубесконечное тело, erfc: 0.316 %. Баланс энергии при переменных нагрузках: невязка 2\cdot10^{-14}, сверка пробника со средним по сечению 1.13 %. Все три кейса — на квадратичных тетраэдрах, натив.

Интерфейс: на шаге расчёта переключатель «Стационарное / нестационарное», поля шага, времени, схемы, таблиц k(t).

material preset=steel kappa=40 specific_heat=460
thermal surface number 1 temperature=120
solve thermal transient dt=0.1 tend=16 t0=20 theta=0.5 probes="10,0,0;20,0,0"

10.3Нелинейная теплопроводность: κ(T) и излучениебета

Нелинейный режим включается автоматически, если в модели есть граница с излучением или таблица \kappa(T). Применяется для высокотемпературных режимов: остывание нагретой детали, теплоотвод излучением, материалы со сильной зависимостью проводимости от температуры.

Постановка

Излучение с поверхности в среду по закону Стефана–Больцмана:

q_r=\varepsilon\,\sigma\,\left(T_K^4-T_{\infty K}^4\right),\qquad T_K=T+273.15,\qquad \sigma=5.670374419\cdot10^{-8}

здесь \sigma в Вт/(м²·К⁴), \varepsilon — степень черноты.

Зависимость \kappa(T) — кусочно-линейная таблица пар «температура : проводимость»; вне таблицы берётся значение крайней точки. Невязка и касательная матрица стационарной задачи:

\mathbf R(\mathbf T)=\mathbf K(\mathbf T)\,\mathbf T-\mathbf F+\mathbf F_r(\mathbf T),\qquad J_{ij}=\int_\Omega\left(\kappa\,\nabla N_j\cdot\nabla N_i+\kappa'\,N_j\,\nabla T\cdot\nabla N_i\right)dV+\int_{\Gamma_r}4\varepsilon\sigma\,T_K^3\,N_iN_j\,dA

Касательная полная и несимметричная (из-за \kappa'), поэтому порядок сходимости метода Ньютона–Рафсона квадратичный. В нестационарном расчёте на каждом шаге \theta-метода решается нелинейное уравнение

\tfrac{1}{\Delta t}\mathbf C\,(\mathbf T-\mathbf T_n)+\theta\,\mathbf F_{\text{int}}(\mathbf T)+(1-\theta)\,\mathbf F_{\text{int}}(\mathbf T_n)-\theta\,\mathbf F_{n+1}-(1-\theta)\,\mathbf F_n=0

с якобианом \tfrac{1}{\Delta t}\mathbf C+\theta\,\mathbf J_{\text{int}}. Шаг Ньютона демпфируется по норме невязки; критерий сходимости — относительная невязка с учётом уровня округления.

Что задаёт пользователь и что получает

Излучение: степень черноты \varepsilon\in(0,1] и температура среды в °C. Таблица \kappa(T) — пары «°C : Вт/(м·К)», температуры строго возрастают, \kappa>0. Результат дополняется числом итераций Ньютона, историей невязки и мощностью излучения в балансе. Если метод не сошёлся, температура не отдаётся: расчёт отказывает, а не выдаёт приближение.

Ограничения. Одна таблица \kappa(T) на модель. Степень черноты и h постоянны. Излучение только в среду, без обмена между поверхностями. \rho и c_p от температуры не зависят. Основной способ задать излучение и \kappa(T) — DSL; формы ввода таблицы \kappa(T) в интерфейсе нет.
Проверка. NAFEMS T2: температура излучающего торца 927.004 К против 927 К, три итерации Ньютона. κ(T) против преобразования Кирхгофа: 58.1139 °C, совпадение до 4 знаков после запятой. Нестационарное лучистое охлаждение: 695.581 °C против 695.576 °C интеграла ОДУ (0.0008 %). Все кейсы на линейных тетраэдрах, натив; веб даёт те же цифры.
material preset=steel kappa_table="0:20,400:60" specific_heat=460
thermal surface number 2 radiation=0.85 ambient=20
solve thermal transient dt=5 tend=600 t0=900 theta=0.5

10.4Тепловой контакт стыкабета

Тепловой контакт моделирует термическое сопротивление между двумя раздельными телами сборки: поток через стык пропорционален скачку температуры. Нужен для болтовых и прессовых соединений, прокладок, контактных площадок. Механический контакт описан в разделе Контакт; тепловой от него не зависит и на механику не влияет.

Постановка

q_c=h_c\,(T_A-T_B),\qquad \Pi_c=\tfrac12\,h_c\int_{\Gamma_s}(T_s-T_m)^2\,dA

Одно тело пары — ведомое (slave, первое в команде), второе — ведущее (master). В точках Гаусса ведомых граней находится проекция на ведущую поверхность; точка засчитывается как стык, если расстояние до ведущей грани не больше допуска, нормали почти антипараллельны, а зазор направлен вдоль нормали. Остальные грани тел остаются адиабатными. Вклад в матрицу \mathbf K_c=\sum h_c\,w\,\boldsymbol\varphi\boldsymbol\varphi^T, где \boldsymbol\varphi=[N_s;\,-N_m], симметричен и полуопределён: стык сам тепла не создаёт и не уносит. Метод — коллокация по ведомым точкам, без множителей mortar. Поскольку вклад линеен, сам по себе контакт Ньютона не включает.

Что задаёт пользователь и что получает

Проводимость стыка h_c в Вт/(м²·К) и допуск зазора в мм (по умолчанию — четверть среднего размера грани). Результат: мощность через стык, площадь связанных поверхностей, число связанных точек, средний скачок температуры. Если h_c\le0, стык не найден в пределах допуска или тела склеены общими узлами, расчёт отказывает: стык не молча изолируется и не молча идеален.

Ограничения. h_c постоянна, без зависимости от давления, зазора и температуры. Тепловыделение от трения в контакте не считается. На несогласованных сетках коллокация не проходит патч-тест: отклонение до 0.4 % от перепада температуры; ведомой следует назначать более мелкую сторону. Тела должны быть раздельными — склеенная сборка не имеет стыка.
Проверка. Тепловое контактное сопротивление: скачок на стыке 60.000 К, мощность 6.0000 Вт, середины тел 90.000 и 10.000 °C (отклонение 0.0003 %). На несогласованных сетках скачок отличается не более чем на 0.07 %. Один кейс, натив.
contact body1 body2 thermal hc=1000
thermal surface number 5 temperature=100
thermal surface number 32 temperature=0
solve thermal

10.5Термоупругость (односторонняя, статика)бета

Односторонняя термоупругость: температура влияет на напряжённо-деформированное состояние, обратного влияния деформации на температуру нет. Применяется для температурных напряжений в деталях при известном или рассчитанном поле температуры.

Постановка

Тепловая деформация изотропна: \boldsymbol\varepsilon_{th}=\alpha\,\Delta T\,\mathbf I, \Delta T=T-T_{\text{ref}}, где T_{\text{ref}} — температура без напряжений. Напряжение определяется механической частью деформации:

\boldsymbol\sigma=\mathbb C\,(\boldsymbol\varepsilon-\boldsymbol\varepsilon_{th}),\qquad \mathbf f_{th}=\int_\Omega\mathbf B^T\,\mathbb C\,\boldsymbol\varepsilon_{th}\,dV

Твёрдые тела

Для изотропного материала \mathbb C\,\boldsymbol\varepsilon_{th}=c_0\,(1,1,1,0,0,0)^T, где

c_0=\frac{E\,\alpha\,\Delta T}{1-2\nu},\qquad F_i=\int_\Omega c_0\,\nabla N_i\,dV

Узловые силы собираются для всех семи типов твёрдых элементов. Для квадратичного тетраэдра нагрузка интегрируется более точной квадратурой, чем жёсткость (27 точек): подынтегральная функция содержит произведение градиента формы и квадратичного поля \Delta T. Напряжения восстанавливаются из полной деформации, поэтому в постпроцессоре из них вычитается шаровая часть c_0\,\mathbf I. Источник \Delta T: равномерное значение, заданное пользователем, либо узловое поле из стационарного теплового расчёта (связанная термоупругость).

Балки и рамы

Задаётся равномерное \Delta T и перепады температуры между гранями сечения \Delta T_y, \Delta T_z. Температура сечения T(y,z)=T_{\text{ref}}+\Delta T+g_y\,y+g_z\,z, g_y=\Delta T_y/h_y. Эквивалентные узловые силы: осевая N_T=E\,A\,\alpha\,\Delta T, изгибные M_{T,z}=E\,I_z\,\alpha\,g_y и M_{T,y}=E\,I_y\,\alpha\,g_z. Те же величины вычитаются из внутренних усилий. Поперечных сил и кручения от нагрева нет.

Оболочки

Для изотропной оболочки в плоском напряжённом состоянии c_0=E\,\alpha\,\Delta T/(1-\nu) (не 1-2\nu: третье направление не стеснено). Для слоистой оболочки (MITC4) тепловые усилия и моменты вычисляются по слоям:

\mathbf N_T=\sum_k \bar{\mathbb Q}_k\,\bar{\boldsymbol\alpha}_k\int_{z_k}\Delta T\,dz,\qquad \mathbf M_T=\sum_k \bar{\mathbb Q}_k\,\bar{\boldsymbol\alpha}_k\int_{z_k}\Delta T\,z\,dz,\qquad \mathbf f=\int_A\left(\mathbf B_m^T\mathbf N_T+\mathbf B_b^T\mathbf M_T\right)dA

Здесь \bar{\mathbb Q}_k — приведённая жёсткость слоя в осях элемента, \bar{\boldsymbol\alpha}_k=(\alpha_1c^2+\alpha_2s^2,\ \alpha_1s^2+\alpha_2c^2,\ 2(\alpha_1-\alpha_2)\,sc)^T — коэффициенты расширения слоя, повёрнутые на угол укладки (сдвиг инженерный), z отсчитывается от отсчётной поверхности, знак изгибной части задаётся принятым направлением кривизны. Температура по толщине линейна: задаются \Delta T в срединной плоскости и перепад «верх минус низ». Напряжения слоёв считаются по механической деформации \boldsymbol\varepsilon-\bar{\boldsymbol\alpha}_k\,\Delta T(z).

Что задаёт пользователь

Коэффициент \alpha материала и нагрев: равномерное \Delta T (в DSL deltaT=) либо поле температуры из теплового расчёта (только для твёрдых тел). Для балки — dt, dty, dtz; для оболочки — shell_temperature dt=… gradient=… или temperature=… reference=… (температура без напряжений). Нулевой режим нагрузкой не считается, \alpha при этом не требуется; при ненулевом \Delta T без \alpha расчёт отказывает вслух.

Ограничения. Малые деформации; E, \nu, \alpha постоянны (зависимость от температуры в этой постановке не учитывается). Для твёрдых тел \alpha изотропен. Тепловая нагрузка оболочек и балок задаётся значением \Delta T, а не берётся из теплового расчёта. Треугольная оболочка DKT поддерживает только равномерный \Delta T — для перепада по толщине нужен четырёхугольный элемент. Модальный анализ оболочек с нагревом не учитывает тепловое преднапряжение (расчёт выводит предупреждение), устойчивость оболочек с нагревом отказывает. Нагрев вместе с геометрической нелинейностью (nlgeom) не поддерживается.
Проверка. Смежные кейсы раздела термомеханики: закреплённый стержень (−240 МПа, точное совпадение) и параллельные стержни (57.037 МПа); оба снимались на веб-платформе. Статику твёрдых тел с тепловой деформацией проверяет также защемлённый по оси стержень (-192.000 МПа =-E\alpha\,\Delta T при \Delta T=80 К), который считается связным динамическим решателем. В тестах ядра: защемлённая балка даёт N=-EA\alpha\,\Delta T с точностью 10^{-13}, консоль с перепадом по сечению — прогиб -\alpha\,g\,L^2/2 при обоих знаках и осях, плоская защемлённая пластина — -E\alpha\,\Delta T/(1-\nu), одинаково для четырёхугольной и треугольной разбивок. Статус бета: коррекция напряжений для квадратичных элементов, каналы балок и слоистой оболочки добавлены после выпуска 0.2.1.

Интерфейс: тип анализа «Термоупругость» (поля \Delta T и \alpha), «Связанная термоупругость» на шаге расчёта (тепло → напряжения), для балок и оболочек — поля температуры в их панелях.

material preset=steel
fix surface number 1
solve thermoelastic deltaT=80

10.6Связная термоупругая динамикабета

Нестационарный расчёт «температура → перемещения»: тепловое поле меняется во времени, механика отвечает с учётом инерции. Применяется для теплового удара, быстрых нагревов, термоупругих волн, где квазистатическое приближение недопустимо.

Что здесь значит «связная»

Связь односторонняя: температура T(t) влияет на перемещения \mathbf u(t), обратного влияния (нагрева от деформирования) в продуктовом расчёте нет. Название унаследовано от постановки «тепло и механика на одной сетке в одном шаге». Для стали безразмерная сила обратной связи

\delta=\frac{\beta^2\,T_{\text{ref}}}{\rho c_p\,(\lambda+2\mu)},\qquad \beta=\frac{E\,\alpha}{1-2\nu}

около 1 %. Для быстрых процессов (удар, ультразвук) эта поправка может быть значимой, см. Гоу–Джоуль.

Постановка

\mathbf C\,\dot{\mathbf T}+\mathbf K\,\mathbf T=\mathbf F(t),\qquad \mathbf M\ddot{\mathbf u}+\mathbf C_d\,\dot{\mathbf u}+\mathbf f_{\text{int}}(\mathbf u)=\mathbf f_{\text{ext}}(t)+\mathbf G\,(\mathbf T-T_{\text{ref}})

Оператор термонагрузки \mathbf G собирается один раз тем же интегралом, что и в статике, F_i=\int c_0\,\nabla N_i\,dV, и на шаге сводится к умножению матрицы на вектор. Порядок на шаге — «тепло, затем механика» (изотермическое расщепление Армеро–Симо, 1992): сначала \theta-шаг тепла даёт T_{n+1}, затем термонагрузка \mathbf f_{th}(T_{n+1}) входит в правую часть шага механики. Для HHT-α интегратор берёт (1+\alpha)\,\mathbf f_{th}(T_{n+1})-\alpha\,\mathbf f_{th}(T_n). При односторонней связи схема безусловно устойчива, порядок равен меньшему из порядков схем тепла и механики.

Два режима:

  • Квазистатика без инерции: на каждом тепловом шаге решается \mathbf K_s\,\mathbf u=\mathbf f_{\text{ext}}+\mathbf f_{th}; линейная задача факторизуется один раз. Допускается упругопластический материал J2 (только в десктопе).
  • Динамика: интегрирование Ньюмарка или HHT-α, тепловой шаг равен нескольким механическим.

В тепловой части можно использовать излучение и \kappa(T) из нелинейной теплопроводности.

Что задаёт пользователь и что получает

Шаг, конечное время и начальная температура обязательны; температура без напряжений, схема тепла \theta, схема механики, затухание Рэлея, таблицы k(t) тепловых и механических нагрузок, пробники. Результат: поля температуры и перемещений по кадрам, ряды T, \mathbf u, \dot{\mathbf u} в пробниках, тензор напряжений с вычетом тепловой деформации, эквивалентные напряжения, огибающая, энергии, баланс тепла.

Ограничения. Малые деформации; геометрическая нелинейность, контакт, жёсткие связи и опорное ускорение не поддерживаются. Балки и оболочки — отказ (их термоупругая динамика отсутствует). Элементы: тетраэдры 4/10 и гексаэдры 8/20 узлов. Тепловой шаг постоянный. Упругопластичность с нагревом — только квазистатика, нативно; начальный \Delta T\ne0 вместе с пластичностью отказывает. Интерфейсной формы нет: расчёт запускается из DSL. Эталонные решения Даниловской и Боли–Барбера выведены разработчиками для той же континуальной постановки; сверка с текстами публикаций не проводилась.
Проверка. Защемлённый по оси стержень: -192.000 МПа =-E\alpha\,\Delta T, кинетическая энергия на уровне машинного нуля. Волна Даниловской: скорость фронта и профиль напряжения, 1.72 %. Боли–Барбер: пик прогиба консоли 4.6504 мкм против 4.6297 мкм модального решения, 0.447 %. Квазистатика против динамики: 0.567 % при медленном нагреве, 45.9 % разницы при быстром (контроль чувствительности). Излучение и κ(T) в связной динамике: совпадение с отдельным тепловым расчётом (максимальное расхождение T нулевое), 0.0008 %. Натив; веб совпадает до печатаемых цифр.
solve thermoelastic transient mode=dynamic dt=1e-6 tend=2e-4 t0=20 tref=20 scheme=hht alpha=-0.2

10.7Эффект Гоу–Джоуляэксперимент

Обратный канал термоупругой связи «деформация → температура»: при быстром сжатии тело нагревается, при растяжении остывает. Эффект включается как объёмный источник в уравнении тепла.

Что реализовано

\rho c_p\,\dot T=\nabla\cdot(\kappa\,\nabla T)+Q-T_{\text{ref}}\,\beta\,\operatorname{tr}\dot{\boldsymbol\varepsilon},\qquad \beta=\frac{E\,\alpha}{1-2\nu}

При адиабатическом нагружении отсюда следует \Delta T=-\dfrac{T_{\text{ref}}\,\beta}{\rho c_p}\,\operatorname{tr}\boldsymbol\varepsilon (Кельвин, 1853; Био, 1956). Схема — с запаздыванием по шагу: после механического шага собирается узловая мощность и подмешивается в правую часть следующего теплового шага. Работает только в квазистатическом режиме; динамика с эффектом отказывает.

Терминологическая оговорка. В литературе «эффект Гоу–Джоуля» — это энтропийная упругость эластомеров: растянутая резина нагревается, а при нагреве сжимается. Здесь реализован линейный термоупругий (пьезокалорический) эффект Кельвина для сжимаемого линейно-упругого тела. Модель энтропийной упругости резины, связанная с гиперупругими законами, не реализована.

Ограничения. В продуктовый расчёт модуль не подключён: ни из интерфейса, ни из DSL эффект включить нельзя. Он существует как отдельное ядро с автономной приёмкой. Не учтены диссипация пластического течения как отдельный канал, динамика, геометрическая нелинейность. При свободном одноосном растяжении \operatorname{tr}\dot{\boldsymbol\varepsilon}\approx0 и нагрева нет — это ожидаемо.
Проверка. Кейс «адиабатический нагрев при сжатии» на автономном стенде подтверждает знак (сжатие греет) и линейность по нагрузке: удвоение силы удваивает \Delta T, тогда как упругая работа растёт вчетверо. Абсолютная величина \Delta T в кейсе не сверялась с формулой адиабатического нагрева: в приёмочной задаче одна грань поддерживается при T_{\text{ref}}, и идёт теплоотвод. Поэтому статус экспериментальный.

10.8CFD: несжимаемое течение (SU2)стабильно

CFD считает стационарное течение жидкости или газа вокруг тела или внутри канала: поля скорости и давления, силы на стенках, потери давления, расход. Расчёт идёт во внешнем решателе SU2 (Stanford University Unstructured, открытый код, лицензия LGPL-2.1) в десктопном приложении; в браузере CFD недоступен.

Какие уравнения решаются

Несжимаемые уравнения Навье–Стокса (постоянные плотность и вязкость):

\nabla\cdot\mathbf u=0,\qquad \rho\left(\partial_t\mathbf u+\mathbf u\cdot\nabla\mathbf u\right)=-\nabla p+\nabla\cdot\left[(\mu+\mu_t)\left(\nabla\mathbf u+\nabla\mathbf u^T\right)\right]

В ламинарном режиме \mu_t=0. В турбулентных режимах — осреднённые по Рейнольдсу уравнения (RANS) с вихревой вязкостью \mu_t из модели Menter k–\omega SST (1994) или Spalart–Allmaras (1992). Эйлеровы (невязкие) и сжимаемые уравнения не используются. Энергия не решается: течение изотермическое, подъёмной силы Архимеда нет.

Метод — вершинно-центрированные конечные объёмы на двойственной сетке исходных тетраэдров (Economon и др., AIAA J., 2016). Конвективные потоки — расщепление разности потоков (FDS) со вторым порядком по схеме MUSCL и ограничителем Венкатакришнана; турбулентные величины — противопоточной схемой. Установление — неявный Эйлер по псевдовремени с адаптивным числом Куранта, при необходимости с геометрической многосеточностью.

Что задаёт пользователь и что получает

Среда: воздух, вода, масло или керосин (плотность и вязкость настраиваются в материалах). Граничные условия по номерам поверхностей: вход со скоростью (величина, направление, интенсивность турбулентности), выход с избыточным давлением, стенка с прилипанием (с опциональным мониторингом сил), стенка со скольжением, плоскость симметрии. Неразмеченные грани становятся стенкой с прилипанием, без мониторинга сил; список таких граней выводится в предупреждения. Для турбулентных расчётов у стенок нужны призматические слои сетки (y⁺ порядка единицы): модели интегрируются до стенки.

Критерий остановки задаёт пользователь: максимум итераций и допуск. При наличии стенки с мониторингом сил сходимость определяется стабилизацией коэффициента силы (критерий Коши), для внутренних течений — относительным падением невязки давления.

Результаты в СИ: поля скорости и давления, завихренность, Q-критерий, C_p, касательное напряжение на стенке, y^+, коэффициенты C_d, C_l и силы (при заданных опорной площади и длине), перепад давления между входами и выходами, массовые расходы, история невязок. Постпроцессор: срезы, линии тока, изоповерхности, частицы.

Связь с остальным продуктом

CFD использует ту же геометрию, тот же журнал нумерации поверхностей и тот же вьюпорт. Расчёт односторонний и изолированный: передачи давления в прочностной расчёт и теплового сопряжения (CHT) нет, силы и давления вы переносите вручную.

Ограничения. Только несжимаемая постановка. Для чисел Маха выше примерно 0.3 влияние сжимаемости не учитывается, поэтому результаты по соплам и высокоскоростным обтеканиям (см. кейсы ЖРД, Aerospike, решётчатого руля) следует рассматривать как оценку несжимаемой модели, а не как газодинамический расчёт. Нет энергии, теплопереноса, плавучести, свободной поверхности, многофазности, кавитации. Только RANS, без LES. Стационарный RANS в отрывных течениях сходится не всегда: при отрыве за цилиндром или уступом коэффициент силы может не успокоиться, и для таких задач надёжнее нестационарный режим. Точность зависит от сетки: кейсы верификации считались на тетраэдральных сетках первого порядка размером 9–44 тысячи элементов.
Проверка. 14 кейсов, все с отклонением до 2.51 %. Количественные эталоны: течение Гагена–Пуазёйля (u_{\max}/U_{\text{mean}}, 2.51 %), плоский канал Пуазёйля (перепад давления, 0.32 %), цилиндр при Re = 40 (C_d против Триттона и Кутансо–Буара, 1.89 %), обратный уступ при Re = 400 (Армали и др., 2.37 %), пучок труб (корреляция Жукаускаса, 1.57 %), крыло БПЛА (несущая линия Прандтля, 1.55 %). Кейсы сохранения массы в коллекторе (0.06 %) и камеры ЖРД (0.62 %) проверяют баланс расходов. Кейсы задвижки API 6A, насадки Корта, диффузора, индьюсера, Aerospike и решётчатого руля сверены с инженерными оценками и справочными корреляциями, а не с точными решениями.

Интерфейс: настройки CFD на шаге расчёта, граничные условия и постпроцессор «Течение».

cfd fluid air
cfd set speed=15 turbulence=sst iterations=500
cfd inlet surface number 1
cfd outlet surface number 2
cfd wall surface number 3 monitor=on
solve cfd

10.9CFD: нестационарные задачи и движение телбета

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

Что реализовано

Физическое время интегрируется двойным шагом по времени (dual time stepping) второго порядка: на каждом физическом шаге выполняются внутренние итерации до сходимости. Пользователь задаёт шаг, длительность, число внутренних итераций и частоту сохранения кадров. Сессия сохраняется на диске, расчёт можно отменить и продолжить с контрольной точки; кадры воспроизводятся в постпроцессоре.

Движение:

  • вращающаяся стенка (скорость поверхности задаётся по оси и частоте вращения);
  • вращающаяся система координат для области жидкости (подход MRF) — стационарное осреднённое решение для ротора;
  • заданный перенос тела вдоль одного направления (линейный, гармонический, выражение, таблица) с деформацией сетки по упругой ALE-схеме первого порядка по времени; скорость стенки контролируется относительно шага сетки;
  • заданное и свободное вращение ротора с одной степенью свободы (момент, демпфирование).

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

Ограничения. Перенос только вдоль одного направления; произвольная ориентация, свободный перенос, шесть степеней свободы, связь «жидкость — конструкция», большие ходы и контакт тел не реализованы. Скользящий интерфейс двух зон существует как прототип и в продукт не подключён. Всё ограничения несжимаемой постановки из базового CFD сохраняются. Стационарность по коэффициентам силы для отрывных течений нужно проверять осреднением по периодам.
Проверка. В списке верификации кейсов нет. Приёмка — нативные тесты: продолжение расчёта с контрольной точки совпадает с непрерывным (координаты точно, давление и скорость в пределах 1 %), перенос и вращение проверены на тестовых случаях. Статус бета: верификация узкая, независимых эталонов для движущихся границ нет.
cfd set mode=transient dt=0.001 time=0.005 inner=40 output=1
solve cfd

10.10Акустика полости (уравнение Гельмгольца)эксперимент

Модальный анализ воздушной (или заполненной жидкостью) полости: собственные частоты и формы колебаний давления. Применяется для оценки резонансов объёмов — камер, воздуховодов, салонов.

Постановка

Уравнение Гельмгольца для амплитуды давления p при гармоническом процессе e^{i\omega t}:

\nabla^2 p+k^2\,p=0,\qquad k=\frac{\omega}{c_0}

На стенках — условие акустической жёсткости \partial_n p=0 (естественное граничное условие). Конечноэлементная дискретизация приводит к обобщённой задаче на собственные значения

\mathbf K_a\,\mathbf p=\omega^2\,\mathbf M_a\,\mathbf p,\qquad \mathbf K_a=\int_\Omega\nabla N^T\nabla N\,dV,\qquad \mathbf M_a=\frac{1}{c_0^2}\int_\Omega N^TN\,dV

Для замкнутой жёсткой трубы длиной L частоты продольных мод f_n=n\,c_0/(2L), включая нулевую (постоянное давление). Нулевая мода присутствует и в расчёте.

Как реализовано

Элемент — линейный тетраэдр с согласованной акустической массой. Матрицы плотные, задача решается приведением к стандартной форме через разложение Холецкого матрицы \mathbf M_a и диагонализацией симметричной матрицы методом Якоби. Такой подход применим к малым полостям (до нескольких сотен узлов); для крупных сеток он слишком медленный и ёмкий по памяти.

Пользователь задаёт скорость звука c_0 (воздух 343 м/с, вода 1481 м/с), плотность \rho_0 и число мод. Полостью считается тело, по которому построена тетраэдральная сетка. Результат: частоты в Гц, формы давления по узлам, анимация стоячей волны p(\mathbf x)\cos\omega t в окне просмотра.

Ограничения. Это прототип. Только жёсткие стенки: параметры impedance= и fsi= команды разбираются и проверяются на числовую адресацию, но на собственные частоты не влияют. Формы нормированы условно, поэтому печатаемый после расчёта «уровень звукового давления» физического смысла не имеет; используйте только частоты и формы. Отклик на источник в этом расчёте не строится. Если сетки нет, расчёт подставляет встроенный пробный канал 1 м × 0.1 м × 0.1 м: перед запуском убедитесь, что сетка построена. Сборка только на тетраэдрах; зависимость от размера сетки и сходимость по частотам не исследованы.
Проверка. Кейсов верификации в списке нет. В тестах первая ненулевая частота канала длиной 1 м на сетке из 11 сечений проверяется на попадание в полосу 150–210 Гц при аналитическом значении 171.5 Гц, то есть с допуском около 20 %, а не 5 %. Витринный пример глушителя показывает частоты и формы, но заявленный в его описании уровень давления не воспроизводится этим расчётом.

Интерфейс: секция «Виброакустика (Гельмгольц)» на шаге результатов.

solve acoustics c0=343 rho0=1.204 modes=5
probe acoustic_f1

10.11Виброакустикаэксперимент

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

Что есть в коде

  • Импеданс границы (условие Робина). Матрица демпфирования \mathbf C_a=\dfrac{\rho_0}{Z_a}\int_{\Gamma_z}N^TN\,dA с акустическим импедансом Z_a в Рэлях (Па·с/м); для воздуха волновое сопротивление \rho_0c_0\approx413 Рэлей.
  • Матрица связи структуры с полостью \mathbf C_{fsi}=\int_{\Gamma}\mathbf N_u^T\,\mathbf n\,N_p\,dA на общей границе.
  • Частотный отклик полости на источник: \left(\mathbf K_a-\omega^2\mathbf M_a+i\omega\,\mathbf C_a\right)\mathbf p=\mathbf q с решением на сетке частот и пересчётом в уровень звукового давления \text{SPL}=20\log_{10}(p_{\text{rms}}/p_{\text{ref}}), p_{\text{ref}}=20 мкПа для воздуха и 1 мкПа для воды.

Это отдельные функции с модульными тестами. Связанная система «структура — полость» из них не собирается, частотный отклик и матрицы импеданса в расчёт из интерфейса и DSL не подключены. Доступен только модальный расчёт акустики полости с жёсткими стенками.

Ограничения. Вибро-акустический расчёт как модель не реализован, а как оценка не предлагается. Практический путь на сегодня: собственные частоты и формы конструкции из модального и гармонического анализов сравнить вручную с акустическими модами полости. Совпадение частот указывает на возможный резонанс, но амплитуды и излучение этот путь не даёт.
Проверка. Кейсов верификации нет. Модульные тесты проверяют сборку матриц и преобразование в децибелы (в том числе опорные значения 0 дБ при 20 мкПа и 94 дБ при 1 Па), но не сравнение с аналитическим или опубликованным решением связанной задачи.

11Решатели: прямые, итерационные, собственные

↑ К оглавлению

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

В реализации используются открытые библиотеки: MFEM (разреженные матрицы и метод сопряжённых градиентов), Eigen (разреженные разложения и малые плотные задачи), AMGCL (алгебраический многосеточный предобуславливатель, только в десктопном приложении). На macOS прямое разложение выполняет также Apple Accelerate. Вся арифметика ядра идёт в двойной точности (IEEE 754 binary64). На границе решателя действует система СИ: метры, ньютоны, паскали, килограммы. Пользователь видит результаты в своих единицах, перевод выполняется в одном месте.

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

11.1Системы уравнений МКЭ: разреженность, определённость, связистабильно

Статическая задача после сборки имеет вид

\mathbf{K}\,\mathbf{u} = \mathbf{f}

Матрица жёсткости \mathbf{K} обладает тремя свойствами, на которых держится выбор методов. Она разрежена: узел связан только с узлами общих элементов, в строке десятки ненулевых элементов, и доля ненулей падает с ростом модели. Она симметрична, потому что симметрична билинейная форма. Она неотрицательно определена, а после закрепления твёрдого тела положительно определена: \mathbf{v}^{\mathsf T}\mathbf{K}\mathbf{v} > 0 для всех \mathbf{v} \neq \mathbf{0} в допустимом подпространстве. Для объёмных тел число обусловленности растёт как O(h^{-2}) при измельчении сетки. У тонких оболочек и стержней оно растёт сильнее: примерно с квадратом отношения мембранной жёсткости к изгибной, то есть (L/t)^2.

Единый ассемблер собирает балки, оболочки и объёмные элементы в одну систему с шестью степенями свободы на узел (три перемещения, три поворота). Степени свободы без жёсткости, например повороты узлов, окружённых только объёмными элементами, исключаются автоматически.

Граничные условия и связи

Закрепления, линейные уравнения связи, жёсткие области (RBE2) и склеенные интерфейсы с точным исключением обрабатываются исключением зависимых степеней свободы, а не множителями Лагранжа:

\mathbf{u} = \mathbf{T}\,\mathbf{u}_r + \mathbf{u}_0, \qquad \mathbf{K}_r = \mathbf{T}^{\mathsf T}\mathbf{K}\,\mathbf{T}, \qquad \mathbf{f}_r = \mathbf{T}^{\mathsf T}\left(\mathbf{f} - \mathbf{K}\,\mathbf{u}_0\right)

Матрица \mathbf{T} связывает независимые степени свободы \mathbf{u}_r с полным вектором, \mathbf{u}_0 несёт неоднородные части связей. Редуцированная матрица \mathbf{K}_r = \mathbf{T}^{\mathsf T}\mathbf{K}\mathbf{T} остаётся симметричной и положительно определённой, если \mathbf{K} была такой на допустимом подпространстве. Седловой системы с блоком нулей не возникает. Поэтому для линейной статики хватает методов для симметричных положительно определённых матриц (Холецкий, сопряжённые градиенты), а индефинитные методы (MINRES, разложения с выбором ведущего элемента) не требуются. Контакт со штрафом добавляет жёсткость в \mathbf{K} и тоже сохраняет положительную определённость, но ухудшает обусловленность.

Масштабирование

Перед решением редуцированная система симметрично масштабируется по диагонали:

\tilde{\mathbf{K}} = \mathbf{S}\,\mathbf{K}_r\,\mathbf{S}, \quad \mathbf{S} = \operatorname{diag}\!\left(K_{r,ii}^{-1/2}\right), \quad \tilde{\mathbf{f}} = \mathbf{S}\,\mathbf{f}_r, \quad \mathbf{u}_r = \mathbf{S}\,\tilde{\mathbf{u}}

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

Ограничения. Недозакреплённая модель (тело без опор, механизм) даёт вырожденную матрицу. Продукт её не регуляризует молча: прямой метод либо не факторизует матрицу, либо возвращает нефинитный результат, и расчёт помечается несошедшимся. Почти вырожденная матрица может дать конечное, но бессмысленное решение. Против этого служит проверка равновесия: сумма реакций опор должна уравновешивать нагрузку. Для тонких оболочек плохая обусловленность делает итерационные методы с универсальными предобуславливателями ненадёжными, см. итерационный решатель.
Проверка. Корректность сборки матрицы и исключения связей проверяют патч-тесты: Патч-тест на объёмных элементах MacNeal-Harder и Гибридная сетка: патч-тест через сшитый стык призм и тетраэдров. Аналитическая сверка статики: Консольная балка (Эйлер-Бернулли).

11.2Хранение матриц и переупорядочиваниестабильно

Матрицы хранятся в разреженном строчном формате CSR (массивы смещений строк, индексов столбцов и значений). Повторяющиеся вклады соседних элементов суммируются при сборке. Редуцированная матрица получается тройным произведением \mathbf{T}^{\mathsf T}\mathbf{K}\mathbf{T} в том же формате. Для прямых разложений матрица приводится к формату Eigen, при необходимости только нижний треугольник.

Локальные матрицы элементов считаются параллельно, но складываются в глобальную матрицу последовательно в порядке номеров элементов. Поэтому собранная матрица не зависит от числа потоков.

Число ненулей фактора \mathbf{L} зависит от порядка нумерации неизвестных. Для симметричных разложений применяется приближённый минимальный степенной порядок (AMD): Amestoy P., Davis T., Duff I., An approximate minimum degree ordering algorithm, SIAM J. Matrix Anal. Appl., 1996. Его выполняют и Apple Accelerate, и Eigen SimplicialLDLT. Для несимметричных и комплексных систем разреженное LU использует упорядочивание по столбцам COLAMD. Упорядочивание вложенными сечениями (METIS) и обратный Катхилл–Макки (RCM) в решателях не применяются.

Для трёхмерных сеток при хорошем упорядочении память фактора растёт примерно как O(n^{4/3}), число операций факторизации примерно как O(n^{2}) (George A., вложенные сечения). Измеренные показатели у Eigen SimplicialLDLT на объёмных моделях чуть выше, около n^{2.3}. Экран расчёта показывает прогноз памяти прямого решателя по эмпирической степенной зависимости от числа степеней свободы.

Ограничения. Прогноз памяти калибровался на тетраэдрах второго порядка и может занижать пик факторизации на гексаэдрах. Это оценка для выбора маршрута, а не гарантия. Порядок AMD не оптимален для самых больших 3D-моделей: заполнение фактора там растёт быстрее, чем дало бы упорядочивание вложенными сечениями.

11.3Прямой разреженный решательстабильно

Для симметричной положительно определённой матрицы используется разложение Холецкого или \mathbf{L}\mathbf{D}\mathbf{L}^{\mathsf T} с предварительной перестановкой \mathbf{P}:

\mathbf{P}\,\tilde{\mathbf{K}}\,\mathbf{P}^{\mathsf T} = \mathbf{L}\,\mathbf{D}\,\mathbf{L}^{\mathsf T}, \qquad \mathbf{L}\mathbf{y} = \mathbf{P}\tilde{\mathbf{f}}, \quad \mathbf{D}\mathbf{z} = \mathbf{y}, \quad \mathbf{L}^{\mathsf T}\mathbf{w} = \mathbf{z}, \quad \tilde{\mathbf{u}} = \mathbf{P}^{\mathsf T}\mathbf{w}

На положительно определённой матрице это разложение устойчиво без выбора ведущего элемента (Golub G., Van Loan C., Matrix Computations). Поэтому перестановка выбирается только по заполнению, не по величине элементов. Метод точный с точностью до округления. Обусловленность влияет на точность ответа, но не на сам факт получения ответа, как это бывает у итераций. Отказ факторизации означает потерю положительной определённости или нехватку памяти.

На macOS факторизацию выполняет разреженный решатель Apple Accelerate (Холецкий или \mathbf{L}\mathbf{D}\mathbf{L}^{\mathsf T}), многопоточный и векторизованный. На Windows, Linux и в браузере используется Eigen SimplicialLDLT. Он однопоточный и заметно медленнее. Прямой и итерационный пути на моделях продукта дают совпадающие перемещения: расхождение порядка 10^{-9} относительно (таблица ниже). Если факторизация не удалась, включаются запасные пути, и только когда все они исчерпаны, расчёт возвращает признак несходимости.

Факторизация делается один раз и переиспользуется для нескольких правых частей: в собственных задачах, при гармоническом анализе по частотной сетке, в неявных переходных расчётах с постоянным шагом.

Для матриц, которые могут быть знаконеопределёнными, например \mathbf{K} + \mathbf{K}_{\sigma} в модальном анализе с предварительным напряжением, разложение \mathbf{L}\mathbf{D}\mathbf{L}^{\mathsf T} без перестановок по величине не гарантирует устойчивости и само не отличает положительную определённость от индефинитности. Поэтому после факторизации просматриваются знаки диагонали \mathbf{D}. Если матрица перестала быть положительно определённой (нагрузка выше критической), расчёт возвращает признак несходимости, а не правдоподобную частоту.

Для несимметричных систем (касательные матрицы некоторых нелинейных задач) и комплексных систем применяется разреженное LU с упорядочиванием COLAMD, см. гармонический анализ и нелинейные расчёты.

Измерения

Оболочка с заделкой и давлением, нативный путь, Apple M5, Apple Accelerate (замер 13.10.2026):

Степеней свободыВремя, сПамять (RSS), ГБ
13 8240.07—
144 1500.80.9
584 0646.03.2
1 000 0007.44.3
2 100 00012.88.2

Для объёмных тел прямой метод дороже из-за большего заполнения. На Hex20 с 89 тыс. активных степеней свободы Accelerate на эталонной платформе решает систему за 35 с, а однопоточный Eigen на стенде Linux x86-64 (третья платформа, не эталон, справочно) за 734 с. Поэтому на Windows и Linux для объёмных моделей выше умеренного размера продукт выбирает итерационный решатель, см. выбор решателя.

Ограничения. Прямой метод ограничен памятью: заполнение фактора растёт быстрее размера матрицы. После прямого решения невязка \lVert \mathbf{K}\mathbf{u} - \mathbf{f} \rVert / \lVert \mathbf{f} \rVert отдельно не вычисляется: продукт полагается на успех факторизации и конечность результата. Исключение составляет гармонический анализ, где невязка проверяется на каждой частоте. На Windows и Linux прямой метод однопоточный.
Проверка. Прямой метод стоит под большинством кейсов верификации статики, например NAFEMS LE10 и Консольная балка (Тимошенко). Отдельной серии «прямой против итерационного» в публичном наборе нет: такая сверка выполняется автоматическими тестами разработки.

11.4Плотный решатель для малых системстабильно

Для малых каркасных и оболочечных моделей, а также для эталонных проверок используется плотное решение. Алгоритм таков: матрица проверяется на симметрию, затем раскладывается по Холецкому на месте. Для положительно определённой матрицы Холецкий устойчив без выбора ведущего элемента, поэтому масштабирование и перестановки не нужны. Если матрица несимметрична или не положительно определена (механизм, потеря устойчивости), разложение откатывается на LU с выбором главного элемента по столбцу. Симметрия проверяется явно, потому что Холецкий читает один треугольник и молча дал бы неверный ответ на несимметричной матрице. На вырожденной матрице результат нефинитный, и вызывающий код распознаёт механизм.

Плотное решение требует памяти O(n^2) и времени O(n^3), поэтому подходит только для малых моделей. На нативном пути оболочечные и каркасные модели выше небольшого размера автоматически переходят на разреженное разложение, в браузере действует потолок размера по памяти вкладки. Плотный и разреженный пути дают одинаковые перемещения: расхождение на оболочечной модели порядка 10^{-11} относительно.

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

11.5Итерационный решатель: CG с алгебраическим многосеточным предобуславливателембета

Метод сопряжённых градиентов с предобуславливателем \mathbf{M} решает \tilde{\mathbf{K}}\tilde{\mathbf{u}} = \tilde{\mathbf{f}} последовательностью шагов вдоль сопряжённых направлений. Метод корректен, если сама матрица и предобуславливатель симметричны и положительно определены. Скорость сходимости определяется числом обусловленности предобусловленной матрицы: для неё число итераций растёт как \sqrt{\kappa(\mathbf{M}^{-1}\tilde{\mathbf{K}})} (Saad Y., Iterative Methods for Sparse Linear Systems, 2003, гл. 6).

В десктопном приложении предобуславливатель — алгебраический многосеточный (AMG) на сглаженной агрегации из библиотеки AMGCL (Vaněk P., Mandel J., Brezina M., Computing 56, 1996; Demidov D., AMGCL, Lobachevskii J. Math., 2019). Группы связанных узлов объединяются в агрегаты, строятся грубые уровни, на каждом уровне выполняется сглаживание, на самом грубом — прямое решение. Один V-цикл служит предобуславливателем. Где система блочная, агрегация учитывает три степени свободы узла. Сглаживатель симметричен, поэтому V-цикл симметричен по построению, как требует метод сопряжённых градиентов. Свойство AMG — число итераций почти не растёт при измельчении сетки. На стенде Linux x86-64 (справочно) для Hex8 с 14, 105, 202 и 346 тыс. активных степеней свободы AMG-CG сходится за 32, 43, 48 и 52 итерации. Одиночные Якоби или Гаусс–Зейдель такого свойства не имеют.

Критерий остановки — относительная невязка. Для AMG-пути это евклидова норма невязки, отнесённая к норме правой части: \lVert \mathbf{r}_k \rVert_2 / \lVert \tilde{\mathbf{f}} \rVert_2 \le \varepsilon. Для остальных ступеней (метод сопряжённых градиентов MFEM) — норма предобусловленной невязки, отнесённая к начальной. Допуск \varepsilon и максимум итераций пользователь задаёт на шаге «Расчёт»; по умолчанию \varepsilon = 10^{-6} и 5000 итераций. Ход невязки отображается в окне расчёта, расчёт можно отменить.

Защиты от некорректной работы. Продукт проверяет предобуславливатель на каждой итерации: скалярное произведение (\mathbf{M}^{-1}\mathbf{r}, \mathbf{r}) должно оставаться положительным. Если нет, метод сопряжённых градиентов останавливается и называет причину, а не итерирует дальше по мусорным направлениям. Расходящаяся невязка тоже прерывает AMG-ступень. У невязки сопряжённых градиентов евклидова норма немонотонна и на объёмных телах может временно вырастать, прежде чем сойтись, поэтому обрыв срабатывает только на явном расхождении. При отказе ступени расчёт переходит на запасной путь. Если сходимости нет ни на одной ступени, результат помечается как несошедшийся.

Сравнение с прямым методом на эталонной платформе (Apple M5, 2 потока, замер 21.10.2026 на загруженной машине, время ориентировочное; одна и та же модель считалась обоими путями):

МодельАктивных степеней свободыAMG-CG: итераций, сПрямой (Accelerate), сРасхождение перемещений
Hex2036 432179, 13.36.210^{-9}
Hex2089 280218, 40.335.44 \cdot 10^{-10}
Tet1045 00078, 6.23.92 \cdot 10^{-9}
Tet10104 544100, 10.218.13 \cdot 10^{-9}
Hex8147 85246, 8.791.35 \cdot 10^{-10}

Выигрыш итерационного пути по времени растёт с размером модели и становится решающим, когда прямому не хватает памяти.

В браузерной сборке AMGCL недоступна. Там итерационный путь использует метод сопряжённых градиентов с более простыми предобуславливателями (неполный Холецкий на небольших системах, Гаусс–Зейдель на больших). Они сходятся медленнее на мелких сетках, поэтому браузерные числа итераций нельзя переносить на десктоп.

Ограничения. (1) Тонкие оболочки и системы, редуцированные жёсткими связями, плохо подходят универсальному AMG: агрегаты не учитывают поворотное ближнее ядро, итерации сходятся медленно или не сходятся. Для чистых оболочек и каркасов продукт использует прямой метод. (2) AMG-предобуславливатель применяется не ко всем постановкам; на остальных работают другие предобуславливатели с худшей скоростью. (3) Выбор метода (CG, MINRES, GMRES) и предобуславливателя на панели решателя сохраняется в проекте, но ядро всегда использует CG с автоматически выбранным предобуславливателем: поэтому статус подраздела бета. (4) При многопоточном выполнении порядок суммирования в скалярных произведениях может меняться, различия остаются на уровне округления.
Проверка. Отдельный кейс публичной верификации итерационного пути не выделен. Автоматический тест десктопа требует, чтобы итерационный режим на реальной модели Hex20 сходился и давал перемещения, совпадающие с прямым расчётом той же модели.

11.6Контроль результата: невязка, признак сходимости, отказ вместо подменыбета

Любой расчёт возвращает признак сходимости. Он выставляется только тогда, когда достигнутая невязка не превосходит допуска, а результат конечен. При его отсутствии интерфейс показывает предупреждение «Не сошлось — значения ниже могут быть недостоверными», сценарий завершается ошибкой «solver did not converge». Результат не выдаётся за успешный.

Принципы, которых придерживается ядро:

  • Отказ вместо молчаливой подмены. Если выбранный метод неприменим или не помещается в память, расчёт возвращает ошибку с причиной и числом степеней свободы, а не тихо считает другим способом с другой точностью. Недопустимые значения настроек решателя отвергаются при вводе. Для тонких оболочек потолок размера зависит от памяти машины (учитывается лимит из «Настройки → Вычисления»); выше него расчёт отказывает.
  • Проверка на каждом шаге. Метод сопряжённых градиентов проверяет положительность предобуславливателя, AMG — рост невязки. Гармонический расчёт проверяет невязку на каждой частоте. Нелинейный решатель распознаёт сингулярную касательную и сообщает диагноз.
  • Собственные задачи. Для каркасов и оболочек на нативном пути проверяется относительная невязка каждой запрошенной собственной пары. Для объёмных тел критерий остановки — стабилизация ритцевых значений, невязка собственных пар на этом пути в продукт не выводится.
  • Проверка равновесия. Реакции опор и интегральные величины можно запросить командами постпроцессинга; для каркасных моделей доступна frame probe equilibrium — относительная невязка \lVert \sum \mathbf{R} + \sum \mathbf{F} \rVert по силам и по моментам.

Точность и воспроизводимость. Арифметика двойная во всех путях ядра. Матрица жёсткости не зависит от числа потоков. Побитовая воспроизводимость не заявляется: многопоточные суммирования и библиотечные разложения могут давать различия на уровне округления. Между платформами побитового совпадения нет и не ожидается: используются разные библиотеки, разный порядок операций, на нативе возможны слитые операции умножения и сложения. Ранняя сверка браузерного и нативного решений на консольной балке дала расхождение порядка 10^{-9} относительно.

Ограничения. Контроль неравномерен по путям: у итерационного пути невязка контролируется, у прямого проверяется факторизация и конечность результата. На одной геометрии мешеры браузерной и десктопной сборок могут построить разные сетки, и тогда расчётные числа различаются; эталоном служит нативный результат.
Проверка. Диагностика отказа нелинейной задачи: Нелинейный решатель — сингулярная касательная диагностика. Остальные кейсы раздела проверяют результат расчёта целиком, а не механизм контроля сходимости.

11.7Матрично-свободный (операторный) путьбета

В матрично-свободном подходе глобальная матрица не собирается: решатель знает только действие \mathbf{K}\mathbf{v} на вектор. Для простой линейной статики объёмных тел (поверхностные закрепления и нагрузки, без жёстких областей и связей) продукт использует операторную сборку MFEM (частичная сборка, partial assembly) с элементами первого и второго порядка и методом сопряжённых градиентов с диагональным (Якоби) предобуславливателем. Оператор физически тот же, что и у собранной матрицы: ранняя сверка частичной и полной сборки на консольной балке дала расхождение порядка 10^{-11}.

Геометрический многосеточный метод (h-мультигрид MFEM с чебышёвским сглаживанием) проверялся как исследовательский стенд: при росте размера задачи в 225 раз (189 до 42 483 степеней свободы) число итераций выросло только в 1.9 раза (28 до 52), то есть сходимость не зависит от сетки. В расчётный путь продукта этот метод не включён: он требует вложенной иерархии сеток, а продукт строит неструктурированные сетки.

Ограничения. Операторный путь охватывает только простую линейную статику солидов. Режим «прямой» на нём не действует: путь всегда итерационный. Для всего остального (сборки со связями, смешанные балочно-оболочечные модели) продукт собирает матрицу явно.
Проверка. Отдельного публичного кейса нет; сверка с аналитикой выполняется тестами разработки на консольной балке.

11.8Собственные задачи: модальный анализ и устойчивостьстабильно

Модальный анализ решает обобщённую задачу

\mathbf{K}_r\,\boldsymbol{\varphi} = \lambda\,\mathbf{M}_r\,\boldsymbol{\varphi}, \qquad f = \frac{\sqrt{\lambda}}{2\pi}

Потеря устойчивости: (\mathbf{K}_r + \lambda\,\mathbf{K}_{\sigma})\boldsymbol{\varphi} = \mathbf{0}, где \mathbf{K}_{\sigma} — геометрическая жёсткость от предварительного напряжённого состояния, а \lambda_{\text{cr}} — наименьшее положительное собственное число (множитель критической нагрузки). Постановки и допущения описаны в разделе Линейные виды анализа. Здесь описан способ решения.

Блочная обратная итерация (подпространство)

Для объёмных и смешанных моделей применяется итерация в подпространстве с процедурой Рэлея–Ритца (Bathe K.-J., Finite Element Procedures, 2014, гл. 11). Шаг итерации:

\mathbf{Y} = \mathbf{K}_r^{-1}\,\mathbf{M}_r\,\mathbf{X}, \quad \mathbf{K}_p = \mathbf{Y}^{\mathsf T}\mathbf{K}_r\mathbf{Y}, \quad \mathbf{M}_p = \mathbf{Y}^{\mathsf T}\mathbf{M}_r\mathbf{Y}, \quad \mathbf{K}_p\,\mathbf{Q} = \mathbf{M}_p\,\mathbf{Q}\,\boldsymbol{\Theta}, \quad \mathbf{X} \leftarrow \mathbf{Y}\,\mathbf{Q}

Блок содержит больше векторов, чем запрошено форм; малая плотная задача p \times p решается стандартным методом (Eigen). Итерации останавливаются, когда относительное изменение запрошенных ритцевых значений между шагами становится пренебрежимо малым. Матрица \mathbf{K}_r факторизуется один раз, дальше каждое \mathbf{K}_r^{-1}\mathbf{b} — это пара треугольных решений. На macOS для моделей умеренного размера применяется разложение Accelerate, на остальных платформах Eigen SimplicialLDLT. Для очень больших моделей \mathbf{K}_r^{-1} применяется приближённо через AMG-CG с внутренним допуском; приближённая обратная требует осторожности (см. ограничения). К матрице масс добавляется малая диагональная добавка («пол»), чтобы безмассовые степени свободы не нарушали разложение Холецкого малой матрицы \mathbf{M}_p; порождаемые ею ложные высокие моды отфильтровываются.

Задача устойчивости использует то же подпространство с другой формой. Матрица -\mathbf{K}_{\sigma} знакопеременна и низкого ранга, поэтому спектр сдвигается на константу c, а векторы ортонормируются в скалярном произведении \mathbf{K}_r. Обратные величины \theta = 1/\lambda пересчитываются из сдвинутых значений.

Каркасы и оболочки: LOBPCG

Для каркасов и оболочек на нативном пути используется блочный метод LOBPCG (Knyazev A., SIAM J. Sci. Comput., 2001) с точным предобуславливателем \mathbf{K}_r^{-1} из однократной факторизации Холецкого. По сути это блочный Ланцош с локально оптимальным направлением. Он работает с согласованной матрицей масс и не требует сдвига спектра для задачи устойчивости. Статика под опорной нагрузкой решается той же факторизацией, поэтому её погрешность в критический множитель не входит. Критерий остановки — относительная невязка каждой запрошенной пары. Сверка с плотным путём на тех же моделях даёт расхождение не больше 10^{-7}. На малых системах остаётся плотный путь: обобщённая задача сводится к стандартной через разложение Холецкого \mathbf{K}_r и решается методом Якоби. Он эталонный, но его время растёт как n^3.

Свободные тела и механизмы

У незакреплённой модели матрица \mathbf{K}_r вырождена (шесть жёстких мод). Тогда спектр сдвигается: решается (\mathbf{K}_r + \tau\,\mathbf{M}_r)\boldsymbol{\varphi} = (\lambda + \tau)\,\mathbf{M}_r\boldsymbol{\varphi} с малым \tau > 0, после чего сдвиг вычитается. Жёсткие моды остаются нулевыми частотами и отделяются от упругих. Для каркасов команда frame solve modal free=on явно отсекает шесть форм движения твёрдого тела. Если упругие формы потеряны за жёсткой модой (меньше форм, чем запрошено, и первая частота близка к нулю), продукт отклоняет результат и называет причину: модель недозакреплена.

Ограничения. (1) Сходимость блочной итерации зависит от точности \mathbf{K}_r^{-1}. Приближённая обратная способна дать правдоподобные, но неверные частоты; в стендовых сверках AMG-вариант совпал с точной факторизацией до 3 \cdot 10^{-9} по частотам, но в самом продукте невязка собственных пар на объёмном пути не проверяется. (2) Масса в разреженном пути для объёмных тел сосредоточена в узлах (диагональная \mathbf{M}). (3) Время собственной задачи — в десятки раз выше статики: каждая итерация подпространства решает p систем. (4) В браузере собственная задача каркаса и оболочки идёт плотным путём и ограничена по размеру (порядка тысяч степеней свободы); на нативном пути разреженный метод доходит до сотен тысяч. (5) Число запрошенных форм не должно превосходить числа степеней свободы, несущих массу.
Проверка. Собственные частоты: NAFEMS FV4, NAFEMS FV12 (свободная пластина, отбраковка жёстких мод), NAFEMS FV52 (объёмная пластина, первые три моды жёсткие), Спектральный анализ консольной балки: модальные массы. Устойчивость: Потеря устойчивости стойки Эйлера.
solve modal nmodes=6
solve buckling nmodes=4

11.9Комплексные системы гармонического анализабета

Установившийся гармонический отклик \mathbf{u}(t) = \operatorname{Re}\left(\hat{\mathbf{u}}\,e^{i\omega t}\right) при демпфировании по Рэлею даёт на каждой частоте комплексную систему

\left(\mathbf{K} - \omega^2\mathbf{M} + i\omega\,\mathbf{C}\right)\hat{\mathbf{u}} = \hat{\mathbf{f}}, \qquad \mathbf{C} = \sum_e \left(\alpha_e\,\mathbf{M}_e + \beta_e\,\mathbf{K}_e\right)

Матрица комплексно-симметрична, но при демпфировании не эрмитова, поэтому метод Холецкого неприменим. Применяется разреженное комплексное LU (Eigen SparseLU, упорядочивание COLAMD). Символический анализ структуры выполняется один раз для всей частотной сетки, числовая факторизация — на каждой частоте. Ограничения и редукция те же, что в статике, система масштабируется по диагонали. После решения на каждой частоте считается относительная невязка; если она превышает допуск, расчёт останавливается с указанием частоты. Сингулярность (резонанс без демпфирования) тоже даёт ошибку с частотой, а не ложный ответ. В сценарии выбирается метод разложения по формам (modal) или прямой (direct).

Ограничения. Прямой гармонический анализ доступен только в десктопном приложении. Он требует однородных связей и демпфирования Рэлея; объём выходных данных ограничен. Неоднородные уравнения связи он отклоняет.
solve harmonic fmin=20 fmax=400 npoints=60 method=direct rayleigh a=1.5 b=0.000002

11.10Линейная алгебра в нелинейных расчётахстабильно

Нелинейные задачи (геометрическая и материальная нелинейность, контакт, метод длины дуги) решаются ньютоновскими итерациями. На каждой итерации решается линейная система с касательной матрицей \mathbf{K}_T(\mathbf{u})\,\Delta\mathbf{u} = -\mathbf{r}(\mathbf{u}). Касательную раскладывает разреженное прямое разложение. Символический анализ и упорядочивание переиспользуются между итерациями, пока структура разреженности не изменилась; изменение структуры (например, смена активного контакта) вызывает новый анализ. Ньютоновские критерии сходимости, шаги нагружения и метод длины дуги описаны в разделе Нелинейные расчёты и динамика.

Ограничения. Контактные системы со штрафом хуже обусловлены, чем линейная статика. Для активного контакта на панели решателя тип фиксируется на итерационном CG с жёстким допуском.
Проверка. Нелинейный путь подтверждается кейсами геометрически и физически нелинейных расчётов: см. Ньютон–Рафсон и пошаговое нагружение и метод длины дуги.

11.11Параллельность и платформыбета

В десктопном приложении используется OpenMP: параллельная сборка матриц элементов и многопоточный AMG-предобуславливатель. Прямой решатель Apple Accelerate многопоточен сам по себе. Число потоков по умолчанию подобрано измерением, пользователь меняет его в «Настройки → Вычисления» («Ядра под солвер»). Масштабирование ограничено пропускной способностью памяти, а не числом ядер: на модели 215 тыс. степеней свободы (Apple M5) два ядра дали ускорение в 1.2–1.5 раза, шесть ядер — около 1.8, а десять уже не быстрее шести. Поле действует на пути, идущие через AMG; часть нативных расчётов однопоточна.

Браузерная сборка однопоточна, использует только память вкладки (32-разрядный модуль WebAssembly не выходит за 4 ГБ) и не содержит AMG. На больших моделях браузер упирается в память и время задолго до пределов нативного пути. Режим решателя и порог размера в браузере не настраиваются. Прямое разложение Eigen работает там до порога по памяти, выше идёт итерационный CG.

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

Ограничения. Прямой решатель на Windows и Linux однопоточен и существенно медленнее, чем Accelerate на macOS. Ускорение от числа ядер ограничено пропускной способностью памяти.
Проверка. Измерения платформ приведены в разделе Платформы, производительность и контроль качества.

11.12Выбор решателя: автоматический и ручнойбета

Пользователь управляет выбором на двух экранах.

Шаг «Расчёт», панель решателя. Тип (прямой или итерационный), флажок «Приоритет прямого решателя», лимит памяти для прямого (МБ). Для итерационного режима доступны допуск и максимум итераций. Панель показывает прогноз памяти прямого метода и выбранный маршрут. Если прогноз не укладывается в лимит, решатель переключается на итерационный и показывает уведомление. При активном контакте тип фиксируется на итерационном CG.

«Настройки → Вычисления» (только десктоп): режим решателя «авто» / «прямой» / «итерационный», порог размера прямого метода в степенях свободы, число потоков, лимит памяти. Режим «авто» выбирает прямой метод в пределах порога и итерационный выше. Пустой порог означает автоматический выбор: для объёмных тел он считается из лимита памяти экрана расчёта. На Windows и Linux автоматический порог для объёмных моделей ниже, потому что прямой метод там медленнее (см. прямой решатель). Для оболочек и каркасов прямой метод поднимается автоматически на время вызова, потому что итерационные методы на них ненадёжны.

В сценариях отдельной команды выбора линейного решателя нет: solve использует настройки документа. Настройки доступны из программного интерфейса сценариев (cae.solver, cae.compute).

Ограничения. Выпадающие списки «метод» (CG, MINRES, GMRES) и «предобуславливатель» (нет, Jacobi, ILU, AMG) на панели итерационного режима сохраняются в проекте, но не меняют алгоритм: ядро использует CG и выбирает предобуславливатель само. Настройка «WebGPU-ускорение» тоже не подключена к расчёту. Поэтому статус подраздела бета.
Проверка. Поведение режимов проверяют автоматические тесты интерфейса и десктопной обвязки (смена режима и порога доходит до ядра, после вызова настройки возвращаются). Публичного кейса верификации нет.

11.13Прототипы и нереализованное: GPU, облако, матрично-свободный P2эксперимент

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

  • Матрично-свободный PCG для Tet10 и Hex20 на WebGPU. Модуль элемент-за-элементом считает \mathbf{y}_e = \mathbf{K}_e\mathbf{u}_e с раскраской графа, предобуславливает диагональю и двухуровневой p-мультисеткой. Он покрыт тестами, но ни один расчёт его не вызывает. Флажок «Matrix-Free P2 GPU» на панели решателя сохраняется в проекте и ничего не меняет.
  • WebGPU-решатель CG. Модуль решает разреженную систему в одинарной точности на GPU с запасным CPU-вариантом; тест разработки подтверждает, что расчёты его не вызывают. Продуктовое ядро считает в двойной точности.
  • Гибридный облачный расчёт. Модуль маршрутизации и клиент передачи сетки решают, отдавать ли расчёт удалённому серверу (по размеру модели, типу анализа, настройке «Auto / Force Local / Force Cloud»). Серверная часть к расчёту не подключена, выбор режима расчёт не меняет. В текущей сборке расчёт всегда выполняется локально.
  • LOBPCG с IC(0) для P2-тетраэдров. Исследовательский модуль разреженной модалки; в основной путь не включён.
  • Геометрический многосеточный метод (GMG). Есть в тестовых стендах (см. выше), в расчёте не используется.
Ограничения. Опираться на эти возможности в расчётах нельзя. Статус пересматривается с выпуском, в котором модуль подключён к расчёту и проверен независимым кейсом.
Проверка. Нет: эти модули не участвуют в расчёте и в публичной верификации не представлены.

12Результаты, постпроцессинг и оценка прочности

↑ К оглавлению

После расчёта решатель отдаёт перемещения (и повороты у балок и оболочек). Всё остальное — напряжения, деформации, реакции, запасы прочности, оценки ошибки сетки — строится из них постпроцессором. Этот раздел описывает, что именно вычисляется, в каких осях и единицах, где постпроцессор делает упрощения и какие величины остаются оценками, а не результатом строгого расчёта.

Соглашения для всего раздела:

  • тензоры записываются в порядке Фойгта [xx,\ yy,\ zz,\ xy,\ yz,\ zx]; растяжение положительно;
  • для напряжений сдвиговые компоненты тензорные, для деформаций \gamma_{ij} = 2\,\varepsilon_{ij} (инженерный сдвиг);
  • постпроцессор линейного упругого расчёта работает по перемещениям и материалу элемента: \boldsymbol{\varepsilon} = \mathbf{B}\,\mathbf{u}_e, \boldsymbol{\sigma} = \mathbf{C}\,\boldsymbol{\varepsilon}, где \mathbf{B} и \mathbf{C} — те же, что в матрице жёсткости элемента;
  • в нелинейных расчётах поля (напряжение Коши, пластическая деформация, реакции) приходят от нелинейного ядра и линейной реконструкцией по перемещениям не пересчитываются.

12.1Поля результатов и единицыстабильно

Результат одного расчёта — набор узловых полей. Их можно раскрасить на модели, снять зондом, вывести в отчёт и в файл. Основные группы:

ГруппаПоляРазмерность
Перемещенияu_x, u_y, u_z, модуль \lvert\mathbf{u}\rvertдлина
Повороты (балки, оболочки)\theta_x, \theta_y, \theta_zрад
Напряжения\sigma_{xx}, \sigma_{yy}, \sigma_{zz}, \sigma_{xy}, \sigma_{yz}, \sigma_{zx}, эквивалентное по Мизесу, \sigma_1, \sigma_3давление
Деформации\varepsilon_{xx}, \varepsilon_{yy}, \varepsilon_{zz}, \gamma_{xy}, \gamma_{yz}, \gamma_{zx}, эквивалентная, пластическаябезразмерные
Запас прочностикоэффициент запаса или использование (по выбранному критерию)безразмерные
Реакциимодуль реакции в узлах опорысила
Контактдавление, статус, касательная силадавление, код, сила

Компоненты напряжений и деформаций можно показать не только в глобальных осях, но и в пользовательской системе координат (декартовой или цилиндрической): тензор пересчитывается в каждом узле по формуле T'_{ij} = \mathbf{v}_i^{\mathsf T}\,\mathbf{T}\,\mathbf{v}_j, где \mathbf{v}_i — орты системы в этой точке. Инварианты (Мизес, \sigma_1, \sigma_3) от выбора системы не зависят.

Единицы

На границе решателя действует СИ (м, Н, Па, кг), геометрия модели хранится в миллиметрах. Поля результата хранятся в тех единицах, в которых их естественно получает конвейер:

  • напряжения — в паскалях;
  • перемещения — в единицах модели (мм), чтобы деформированный вид складывался с исходной геометрией без пересчёта;
  • реакции считаются по координатам модели, поэтому перед показом приводятся к ньютонам;
  • деформации и коэффициенты запаса безразмерны.

Показ идёт в системе единиц, выбранной в строке состояния: СИ, «метрическая инженерная» (мм, Н, МПа) или английская (дюйм, фунт-сила, psi). Одна таблица переводит значения для легенды, зондов, фильтра по значению, ручного диапазона шкалы и отчёта, поэтому подпись на шкале и число всегда согласованы. В DSL величины возвращаются в СИ, если в описании величины не сказано иное. В файл VTK единица входит в имя поля (displacement_mm, vonMises_Pa, reactionMag_N) — ParaView единиц не знает.

Ограничения. Узловые поля хранятся в одинарной точности (около семи значащих цифр); разности близких величин на них теряют знаки.
Проверка. Согласованность единиц силы и длины подтверждена кейсом Солидная консоль под точечной силой: одна и та же задача в мм/МПа/Н и в м/Па/Н даёт один прогиб. Напряжения при простом растяжении сверены в кейсах Одноосное растяжение (сталь) и Одноосное растяжение, чувствительность к материалу.

12.2Восстановление напряжений в узлыстабильно

Конечный элемент даёт напряжение внутри элемента, а раскраска и зонды работают с узловыми значениями. Переход «элемент → узел» — отдельный шаг со своими погрешностями.

Что вычисляется

Для линейного упругого расчёта напряжение в точке элемента \boldsymbol{\sigma} = \mathbf{C}\,\mathbf{B}(\mathbf{x})\,\mathbf{u}_e, где для изотропного материала

\mathbf{C}:\ \sigma_{ii} = \lambda\,\operatorname{tr}\boldsymbol{\varepsilon} + 2\mu\,\varepsilon_{ii},\quad \sigma_{ij} = \mu\,\gamma_{ij},\quad \lambda = \frac{E\nu}{(1+\nu)(1-2\nu)},\ \mu = \frac{E}{2(1+\nu)}.

Точка вычисления зависит от типа элемента:

  • TET4 — деформации постоянны, напряжение одно на элемент;
  • TET10 — внутри элемента с прямыми рёбрами напряжение меняется линейно; его вычисляют в десяти узлах элемента по градиентам функций формы самого элемента;
  • HEX8, HEX20, HEX27, призма, пирамида — одно значение в центре (центроиде) элемента.

Узел получает среднее арифметическое по элементам, которые его содержат. Усредняются компоненты тензора, а не эквивалентные величины: Мизес, \sigma_1 и \sigma_3 считаются уже из усреднённого тензора, потому что главные напряжения нелинейно зависят от компонент. Веса — по числу элементов, не по объёму. В смешанной сетке TET4/TET10 (зона квадратичных элементов) каждый элемент считается в своём базисе, узел усредняется по своим соседям, поле остаётся однозначным в узле.

В нелинейных расчётах для твёрдых тел напряжение Коши берётся в точках Гаусса элемента, усредняется по объёму элемента в исходной конфигурации, затем узел усредняется по соседям с весом, равным этому объёму.

В режиме термоупругости из нормальных компонент вычитается тепловая часть \sigma^{\text{th}} = E\,\alpha\,\Delta T/(1-2\nu), поэтому показанные напряжения — механические.

В панели результатов можно переключиться между «узловым» (усреднённым) и «поэлементным» полем. Поэлементное поле ступенчатое, зато честно показывает скачки между элементами; разность двух режимов — грубая оценка того, насколько сетка разрешает градиент (точнее её оценивает индикатор ошибки).

Что важно знать

Граница материалов и тел. Узловое поле однозначно, поэтому на границе двух материалов (или двух соединённых тел) усреднение размазывает физический скачок напряжений между материалами с разными E. Узловое значение на самой границе — среднее двух разных величин, а не значение «слева» или «справа». Для мест, где скачок существенен, смотрите поэлементный режим или отдельные регионы. Из-за этого карта запаса прочности для моделей с несколькими материалами не строится: допускаемое напряжение в узле границы не привязывается ни к одному материалу. Индикатор ошибки, наоборот, восстанавливает поле раздельно по материалам.

Пики у границы. Значения в центре элемента занижают пик на грубой сетке: центроид стоит в глубине элемента, а не на волокне. При чистом изгибе консоли на сетке из TET10 (четыре слоя элементов по высоте) узловое вычисление дало на крайнем волокне ошибку 0,34 %, а центроидные значения того же расчёта — 14–18 % (замер при разработке).

Балки в узле не усредняются. В одном узле каркаса сходятся стержни с разными усилиями, и среднее было бы неверным по постановке.

Ограничения. Нет экстраполяции из точек Гаусса с взвешиванием по объёму и нет суперсходящегося восстановления для выводимого поля (оно есть только внутри индикатора ошибки). Для HEX и других элементов с центровым значением внутреннее изменение поля не разрешается: пик на ребре или грани может быть недооценён. Значения в пересекающих материалы узлах — среднее, а не предел с одной из сторон.
Проверка. Восстановление в узлах сверено с аналитикой в кейсах Толстостенный цилиндр в жёсткой обойме (задача Ляме), Пластина с отверстием (плоскости симметрии по нормали), NAFEMS LE1 (эллиптическая мембрана), NAFEMS LE10 (толстая пластина). Патч-тест постоянного напряжения через сшитый стык разных типов элементов — Гибридная сетка: патч-тест.

12.3Эквивалентные напряжения и деформациистабильно

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

Эквивалентное напряжение по Мизесу (энергия формоизменения):

\sigma_{\text{vm}} = \sqrt{\tfrac12\left[(\sigma_{xx}-\sigma_{yy})^2 + (\sigma_{yy}-\sigma_{zz})^2 + (\sigma_{zz}-\sigma_{xx})^2\right] + 3\left(\sigma_{xy}^2 + \sigma_{yz}^2 + \sigma_{zx}^2\right)}.

Главные напряжения \sigma_1 \ge \sigma_2 \ge \sigma_3 — собственные значения симметричной матрицы 3\times3. Они находятся в замкнутом виде тригонометрической формулой Смита: пусть q = \operatorname{tr}\boldsymbol{\sigma}/3, p = \sqrt{\lVert \boldsymbol{\sigma} - q\mathbf{I}\rVert_F^2/6}, \mathbf{B} = (\boldsymbol{\sigma} - q\mathbf{I})/p, \varphi = \tfrac13\arccos\!\left(\det\mathbf{B}/2\right), тогда

\sigma_1 = q + 2p\cos\varphi,\qquad \sigma_3 = q + 2p\cos\!\left(\varphi + \tfrac{2\pi}{3}\right),\qquad \sigma_2 = 3q - \sigma_1 - \sigma_3.

Для шарового тензора (p = 0) все три равны q. В виде полей на модели выводятся \sigma_1 (максимальное главное) и \sigma_3 (минимальное); \sigma_2 доступна в калькуляторе полей.

Интенсивность напряжений по Треска — разность крайних главных:

\sigma_{\text{int}} = \sigma_1 - \sigma_3 = 2\,\tau_{\max}.

Она используется в картах прочности (критерий Треска) и в линеаризации напряжений по ASME.

Эквивалентная деформация. Для тензора деформаций \boldsymbol{\varepsilon} с девиатором \mathbf{e} = \boldsymbol{\varepsilon} - \tfrac13\operatorname{tr}\boldsymbol{\varepsilon}\,\mathbf{I} поле «эквивалентная деформация» равно норме девиатора:

\varepsilon_{\text{eq}} = \sqrt{\mathbf{e}:\mathbf{e}} = \sqrt{\tfrac23\left[\varepsilon_{xx}^2 + \varepsilon_{yy}^2 + \varepsilon_{zz}^2 - \varepsilon_{xx}\varepsilon_{yy} - \varepsilon_{yy}\varepsilon_{zz} - \varepsilon_{zz}\varepsilon_{xx} + 3\left(\varepsilon_{xy}^2 + \varepsilon_{yz}^2 + \varepsilon_{zx}^2\right)\right]},

где \varepsilon_{xy} = \gamma_{xy}/2 и так далее. Это не «пластическая» эквивалентная деформация, нормированная на несжимаемость (\sqrt{2/3}\,\lVert\mathbf{e}\rVert): при одноосном растяжении несжимаемого материала показанное значение в \sqrt{3/2}\approx 1.22 раза больше осевой деформации. Накопленная пластическая деформация \bar\varepsilon^{p} выводится отдельным полем из модели материала нелинейного расчёта.

Ограничения. Мизес и Треска применимы к пластичным материалам; для хрупких используйте критерии на главные напряжения (см. критерии прочности). Для оболочек эквивалентное напряжение считается для плоского напряжённого состояния (см. результаты оболочек).
Проверка. Мизес и главные напряжения при одноосном нагружении проверяются в кейсах Одноосное растяжение (сталь) и Одноосное растяжение (алюминий); напряжение при чистом изгибе цилиндрической оболочки — NAFEMS LE2.

12.4Критерии прочности и коэффициент запасабета

Карта прочности — постпроцесс над уже посчитанными узловыми напряжениями; смена критерия или предела не требует нового расчёта. Для каждого узла вычисляется «использование» D, коэффициент запаса n = 1/D. Если D = 0, запас ограничивается верхним потолком отображения.

КритерийИспользование DНужные свойства материала
Мизес\sigma_{\text{vm}}/\sigma_yпредел текучести \sigma_y
Треска(\sigma_1-\sigma_3)/\sigma_y\sigma_y
Ранкин\max\!\left(\sigma_1/\sigma_t,\ -\sigma_3/\sigma_c\right)пределы при растяжении \sigma_t и сжатии \sigma_c
Кулон–Мор\sigma_1/\sigma_t - \sigma_3/\sigma_c (при \sigma_1\ge0\ge\sigma_3)\sigma_t, \sigma_c
Сен-Венан(\sigma_1 - \nu\,\sigma_3)/\sigma_y\sigma_y (или \sigma_t), \nu
Друкер–Прагер\left[\sigma_{\text{vm}} + \beta(\sigma_1+\sigma_3)\right]/\sigma_{\text{lim}}\sigma_t, \sigma_c
Усталость: Гудман, Содерберг, Герберсм. нижепредел выносливости, \sigma_u или \sigma_y

Для Друкера–Прагера \beta = (\sigma_c - \sigma_t)/(\sigma_c + \sigma_t) и \sigma_{\text{lim}} = 2\sigma_t\sigma_c/(\sigma_c + \sigma_t); константы подобраны так, чтобы критерий точно давал D=1 при одноосном растяжении и сжатии до пределов.

Три усталостных варианта карты — упрощённая оценка для пульсирующего цикла от нуля (амплитуда равна среднему \sigma_{\text{vm}}/2), при пределе выносливости \sigma_e:

D_{\text{Gdm}} = \frac{\sigma_{\text{vm}}}{2\sigma_e} + \frac{\sigma_{\text{vm}}}{2\sigma_u},\qquad D_{\text{Sdb}} = \frac{\sigma_{\text{vm}}}{2\sigma_e} + \frac{\sigma_{\text{vm}}}{2\sigma_y},\qquad D_{\text{Gbr}} = \frac{\sigma_{\text{vm}}}{2\sigma_e} + \left(\frac{\sigma_{\text{vm}}}{2\sigma_u}\right)^2.

Для произвольного цикла нагружения используйте расчёт усталости по кривым S-N.

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

Своё условие прочности можно задать в калькуляторе полей как поле «запас» K = [\sigma]/f(\sigma).

Ограничения. Критерии работают по хранимым узловым полям, где есть только \sigma_{\text{vm}}, \sigma_1 и \sigma_3. Поэтому первый инвариант I_1 в критерии Друкера–Прагера заменён на \sigma_1+\sigma_3 (точно при \sigma_2, равном среднему), а Сен-Венан использует \sigma_1 - \nu\sigma_3 без члена со средним главным. Для моделей из нескольких материалов карта не строится (узловое напряжение на границе нельзя сопоставить одному допускаемому). Критерии не учитывают концентрацию, размер, состояние поверхности и температуру — эти поправки вводятся пользователем через допускаемые значения.
Проверка. Формулы критериев проверены модульными тестами по аналитическим значениям. Отдельного кейса верификации карты запаса в списке нет; за это подраздел помечен как бета.

12.5Результаты оболочекстабильно

Для оболочек (четырёхугольник MITC4 с мембранной частью и треугольник CST+DKT) напряжения выводятся на волокнах по толщине. В центре элемента вычисляются мембранная часть и изгибная часть:

\sigma^{\text{top/bot}}_{\alpha\beta} = \sigma^{m}_{\alpha\beta} \pm \frac{6}{t^2}\,m_{\alpha\beta},\qquad \mathbf{m} = \mathbf{D}_b\,\boldsymbol{\kappa},\quad D = \frac{E\,t^3}{12(1-\nu^2)},

где \boldsymbol{\kappa} — кривизны, m_{\alpha\beta} — изгибные моменты на единицу длины, \sigma^m — мембранные напряжения плоского напряжённого состояния (\sigma_{zz} \approx 0). Знак «+» — верхнее волокно (по нормали элемента), «−» — нижнее. Эквивалентное напряжение на волокне — плоское:

\sigma_{\text{vm}} = \sqrt{\sigma_{xx}^2 - \sigma_{xx}\sigma_{yy} + \sigma_{yy}^2 + 3\sigma_{xy}^2}.

В панели результатов выбирается волокно: верхнее, нижнее или большее по модулю. Компоненты считаются в локальной системе элемента. Перед узловым усреднением плоский тензор поворачивается в глобальные оси (\boldsymbol{\sigma}_{\text{glob}} = \mathbf{R}^{\mathsf T}\boldsymbol{\sigma}_{\text{loc}}\mathbf{R}), иначе усреднение на кривой оболочке смешало бы компоненты в разных базисах; верхнее и нижнее волокна усредняются раздельно.

Для слоистых оболочек напряжения восстанавливаются послойно: в трёх точках каждого слоя (низ, середина, верх) по обобщённым деформациям (\boldsymbol{\varepsilon}^0, \boldsymbol{\kappa}) и жёсткостям слоя; поперечные касательные \tau_{13}, \tau_{23} — отдельные поля. Обобщённые деформации переносятся в узлы подгонкой по патчу (SPR), без сглаживания через стык разных сечений или излом.

Ограничения. Напряжение вычисляется в одной точке — центре элемента, поэтому у кромки и в местах скачка кривизны пик может быть недооценён. Мембранные усилия N и изгибные моменты M на единицу длины отдельными полями не выводятся; пользователь получает напряжения на волокнах (при необходимости N = \sigma^{m}\,t и M = \sigma^{b}\,t^2/6 восстанавливаются вручную). Тепловая поправка в узловом поле оболочек пока не учитывается, поэтому для термонагруженных оболочек опирайтесь на поэлементные значения.
Проверка. NAFEMS LE2 (окружное напряжение на внешней поверхности, эталон 6M/t^2 точно), мембранные напряжения подкреплённого отсека — Наддув цилиндрического отсека фюзеляжа (осевое и окружное напряжения против Ламе–Барлоу, отклонение до 0,01 %), прогибы — Прямоугольная пластина MacNeal-Harder и Круглая пластина Кирхгофа–Миндлина.

12.6Результаты балокбета

Для каждого балочного элемента постпроцессор восстанавливает внутренние усилия на концах из узловых перемещений: \mathbf{f} = \mathbf{k}_{\text{loc}}\,\mathbf{T}\,\mathbf{u}_e, где \mathbf{T} — поворот в локальные оси. Выводятся осевая сила N, поперечные Q_y, Q_z, крутящий момент T и изгибающие M_y, M_z. Знаки: N>0 — растяжение, T>0 — по правилу правой руки вдоль оси от первого узла ко второму. Если на элемент действует распределённая нагрузка, концевые усилия корректируются на вклад приведённых нагрузок (\mathbf{f}_{\text{int}} = \mathbf{f}_{\text{solver}} - \mathbf{F}).

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

Напряжения в сечении считаются двумя способами.

Оценка по библиотечным характеристикам (для сводки и поиска наихудшего сечения): \sigma = N/A \pm \lvert M_y\rvert/W_z \pm \lvert M_z\rvert/W_y — сумма модулей, то есть напряжение в угловой точке сечения. Для круглых и трубчатых сечений это консервативная оценка: точки наибольшего изгиба в двух плоскостях у них не совпадают.

Распределение по сечению (панель «Сечение») — в узлах сетки точек сечения:

\sigma_{xx} = \frac{N}{A} + \frac{M_z\,y}{I_z} - \frac{M_y\,z}{I_y},\qquad \tau_{\text{shear}} = \frac{V\,Q(\zeta)}{I\,b(\zeta)},

где статический момент Q и ширина b отсечённой части вычисляются численно на сетке сечения (формула Журавского). Крутильные касательные: круг и труба — \tau = T r/J; прямоугольник — приближение функции напряжений Прандтля; замкнутая коробка — формула Бредта \tau = T/(2A_m t); тонкостенные открытые профили (двутавр, тавр, швеллер, уголок) — линейный закон по толщине пластины. Эквивалентное напряжение: \sigma_{\text{vm}} = \sqrt{\sigma_{xx}^2 + 3\tau^2} с \tau = \sqrt{\tau_{xy}^2 + \tau_{xz}^2}.

Ограничения. Депланационное (стеснённое) кручение и концентрация в узлах сопряжения не учитываются; для открытых тонкостенных профилей кручение — приближение линейным законом. Теория Журавского даёт среднее по ширине касательное напряжение и для коротких толстых балок неточна. Оценка по библиотечным характеристикам не заменяет распределение по сечению.
Проверка. Прогибы консольных балок сверены в кейсах Консольная балка (Эйлер–Бернулли) и (Тимошенко), составные сечения — Полоса оболочки с тавровым стрингером. Усилия на концах и распределение по сечению проверены модульными тестами по формулам сопротивления материалов (отклонение до 3,4 %); отдельного кейса на усилия в списке верификации нет, поэтому подраздел помечен как бета.

12.7Напряжения в локальных осях материалабета

Для ортотропных твёрдых тел (волокнистые композиты, дерево, прокат) закон Гука записывается в осях материала 1,2,3, а напряжения в тех же осях важнее глобальных: по ним проверяют прочность вдоль и поперёк волокон. Ориентация осей задаётся для тела по поверхности, по декартовой, цилиндрической или сферической системе координат, плюс угол поворота в плоскости.

Матрица жёсткости ортотропного материала (девять независимых констант E_i, \nu_{ij}, G_{ij}) переводится в глобальные оси преобразованием Бонда, деформации считаются через \mathbf{B}\mathbf{u} в глобальных осях, а напряжение переводится в оси материала: \boldsymbol{\sigma}_{\text{loc}} = \mathbf{T}_\sigma\,\boldsymbol{\sigma}_{\text{glob}}, где \mathbf{T}_\sigma — матрица Бонда для напряжений. Поля \sigma_{11}, \sigma_{22}, \sigma_{12} доступны для раскраски и зондов (stress_local11, stress_local22, stress_local12); значения в узле — среднее по соседним элементам.

Ограничения. Решатель ортотропных твёрдых тел работает на тетраэдрах (TET4 и TET10); напряжение берётся в центроиде элемента и усредняется по узлам (то есть та же погрешность, что в восстановлении напряжений). Карты прочности для твёрдых тел строятся по изотропным критериям из таблицы выше и работают с эквивалентными напряжениями, а не с \sigma_{11}, \sigma_{22}, \sigma_{12}; композитные критерии (Цай–Ву, Хашин) реализованы для слоёв оболочек.
Проверка. Преобразование осей и ориентация по поверхности сверены с формулой Лехницкого для внеосевого растяжения однонаправленного композита: Лехницкий (1977) §6. Подраздел помечен как бета: функция вошла после версии 0.2.1, кейс один.

12.8Реакции опор и баланс силстабильно

Реакция на закреплённые степени свободы — сила, с которой опора действует на тело. Для твёрдых тел она считается через невязку уравнения равновесия на связанных DOF:

\mathbf{R} = \left(\mathbf{K}\,\mathbf{u}\right)_{\text{c}} - \mathbf{F}_{\text{c}},

где \mathbf{K}\mathbf{u} собирается поэлементно (\sum_e \int_{\Omega_e} \mathbf{B}^{\mathsf T}\boldsymbol{\sigma}\,d\Omega) для связанных узлов, а \mathbf{F} — правая часть, включающая поверхностные, сосредоточенные, объёмные и узловые нагрузки. Реакция относится как к закреплениям (нулевое перемещение), так и к заданным ненулевым перемещениям; в последнем случае она показывает силу, нужную для задания перемещения.

Выводятся: реакция по каждой записи граничных условий (компоненты и модуль), распределение по узлам опоры и суммарная реакция \sum R_x, \sum R_y, \sum R_z. Проверка баланса — сравнить суммарную реакцию с суммой приложенных нагрузок: для статики \sum \mathbf{R} + \sum \mathbf{F} = \mathbf{0}. Для каркасных моделей (балки, оболочки) реакции получаются из равновесия узла по концевым усилиям и узловым нагрузкам.

Реакция — разность двух больших чисел, поэтому любая нагрузка, пропущенная в \mathbf{F} на закреплённом узле, уходит в ответ целиком. Постпроцессор ведёт учёт полноты правой части: если какой-то вид нагрузки не удалось учесть (например, сила на вершину, не найденную в сетке), число реакции выводится с явным предупреждением, а не молча.

Ограничения. Реакция не выводится там, где формула \mathbf{K}\mathbf{u} - \mathbf{F} неверна: при контакте (часть равновесия несёт контактная сила) и для нелинейного расчёта, у которого реакции не сохранены (линейная реконструкция была бы ложной). Для расчёта на квадратичных элементах реакция требует той же квадратичной сетки: P1-матрица жёсткости по P2-перемещениям даёт искажённый результат на изгибе, и запрос отклоняется. Результаты сохранённого нелинейного расчёта выводятся как есть.
Проверка. Формула \mathbf{K}\mathbf{u} - \mathbf{F} проверена скриптовым тестом на аналитике: растяжение бруса 20×20×100 мм силой 5000 Н даёт реакцию −5000 Н (в пределах четырёх значащих цифр) как на геометрическом, так и на упрощённом маршруте. Реакции нелинейного расчёта с контактом (сохраняются самим нелинейным ядром, а не пересчитываются) и их равновесие с приложенной нагрузкой проверяются в кейсах Контакт — палец в проушине, Контакт — равномерный патч, Контакт — зазор пружина, Контакт — несовместные сетки.

Пример

reactions
probe reaction_z

12.9Линеаризация напряжений по ASME VIII-2 (SCL)бета

В сосудах и трубопроводах критерием прочности служит не пик, а интегральные составляющие напряжения по толщине стенки. Линия классификации напряжений (SCL) пересекает стенку от внутренней поверхности (x=0) до внешней (x=t); поля вдоль неё раскладываются на мембранную, изгибную и пиковую части (ASME BPVC Section VIII Division 2, Annex 5-A; EN 13445-3; ГОСТ 34233).

Линеаризуются компоненты тензора в локальной системе линии (ось x — вдоль SCL, остальные оси — меридиан и окружное направление), а эквивалентные величины считаются уже от линеаризованного тензора:

\boldsymbol{\sigma}_m = \frac1t\int_0^t \boldsymbol{\sigma}(x)\,dx,\qquad \boldsymbol{\sigma}_b^{\text{in}} = \frac{6}{t^2}\int_0^t \boldsymbol{\sigma}(x)\left(\tfrac t2 - x\right)dx,\qquad \boldsymbol{\sigma}_b(x) = \boldsymbol{\sigma}_b^{\text{in}}\left(1 - \tfrac{2x}{t}\right),

на внешней поверхности изгибная часть равна -\boldsymbol{\sigma}_b^{\text{in}}. Пиковая часть — остаток на поверхностях: \boldsymbol{\sigma}_F = \boldsymbol{\sigma}(x_s) - \boldsymbol{\sigma}_m - \boldsymbol{\sigma}_b(x_s). Интегралы берутся составным правилом Симпсона по равноотстоящим точкам вдоль линии. Для каждой из составляющих (P_m, P_b, P_m + P_b на каждой поверхности, F) выдаются эквивалентные напряжения по Мизесу и по Треска (интенсивность \sigma_1 - \sigma_3).

Допускаемые напряжения (если заданы свойства материала):

S_m = \min\!\left(\tfrac23\,\sigma_y,\ \frac{\sigma_u}{2.4}\right),\qquad P_m \le S_m,\qquad P_m + P_b \le 1.5\,S_m.

Запас — отношение допускаемого к фактическому. Допускаемое S_m можно задать и напрямую.

Линия задаётся двумя точками (внутри, снаружи) и третьей точкой для ориентации меридиана либо осью сосуда; число точек вдоль линии по умолчанию 47.

Ограничения. Линеаризуются узловые сглаженные напряжения: значения вдоль линии интерполируются линейно по четырём угловым узлам тетраэдра (середины рёбер TET10 не используются). Вблизи концентратора это сглаживание влияет на P_b и F. Классификация на общую и местную мембрану P_L, первичные и вторичные Q напряжения остаётся за инженером: модуль считает составляющие вдоль выбранной линии и сравнивает P_m с S_m и P_m + P_b с 1.5\,S_m. Проверка P_L + P_b + Q \le 3 S_m и оценка усталости по пику F не выполняются. Линия обязана быть нормальна к стенке; отклонение от нормали выводится предупреждением.
Проверка. В кейсах верификации SCL отдельной записи нет. Алгоритм проверен модульными тестами на аналитических профилях: чистое растяжение (только P_m), чистый изгиб (только P_b), комбинация с нелинейным пиком и инвариантность к повороту линии в пространстве. Подраздел помечен как бета: нет независимого эталона по справочному примеру ASME. Интерфейс линеаризации входит в 0.2.1, команда DSL scl — позже.

Где в интерфейсе, DSL

Панель результатов «Линеаризация»: три клика по модели (точки внутри, снаружи, на меридиане), график эпюры по толщине и таблица составляющих.

scl p1=(50,0,0) p2=(62,0,0) samples=47 criterion=tresca
probe scl_pm
probe scl_pm_pb

12.10Очаги концентрации и индикатор ошибки Зенкевича–Жубета

Максимум напряжения не отвечает на вопрос, физическая это концентрация (отверстие, галтель) или артефакт грубой сетки (угол закрепления). На него отвечает оценка ошибки конечно-элементного поля напряжений.

Метод

Индикатор Zienkiewicz–Zhu (1987) для сеток из тетраэдров (TET4, TET10 и смешанных).

  1. Конечно-элементное поле \boldsymbol{\sigma}_h разрывно между элементами. Оно берётся в четырёх точках Гаусса элемента (точки суперсходимости напряжений).
  2. Восстанавливается непрерывное поле \boldsymbol{\sigma}^*: по патчу элементов вокруг узла подгоняется полином (SPR — суперсходящееся восстановление по патчу, Zienkiewicz–Zhu 1992); в узле берётся значение этого полинома. Восстановление идёт раздельно по материалам, так что скачок на границе материалов не размазывается.
  3. Ошибка элемента — энергетическая норма разности:
\eta_e = \lVert \boldsymbol{\sigma}^* - \boldsymbol{\sigma}_h\rVert_{E,e} = \sqrt{\int_{\Omega_e} (\boldsymbol{\sigma}^* - \boldsymbol{\sigma}_h)^{\mathsf T}\,\mathbf{C}^{-1}\,(\boldsymbol{\sigma}^* - \boldsymbol{\sigma}_h)\,d\Omega}.

Глобальная относительная ошибка \eta = \lVert e\rVert / \sqrt{\lVert\boldsymbol{\sigma}^*\rVert^2 + \lVert e\rVert^2}. Для TET10 разность \boldsymbol{\sigma}^* - \boldsymbol{\sigma}_h на элементе — полином второй степени, и интеграл берётся точно (аналитическая матрица масс), без квадратурной погрешности. Рядом с абсолютным \eta_e выводится плотность ошибки \eta_e/\sqrt{V_e} — она не зависит от размера элемента.

От ошибки к очагам

  1. Маркировка Дёрфлера (Dörfler 1996): минимальное множество элементов, несущее долю \theta суммарной квадратичной ошибки, \sum_{e\in M}\eta_e^2 \ge \theta \sum_e \eta_e^2; классический выбор \theta = 0.5. Критерий задаётся через ошибку, а не через число элементов, поэтому не зависит от размера сетки.
  2. Склейка помеченных элементов в связные группы (по общей грани).
  3. Отсев шума: одиночные элементы и очень малые группы чаще связаны с вырожденным элементом, чем с физикой; они не пропадают молча, а показываются в отчёте как отброшенные. Если ошибка по модели мала и равномерна, очагов нет, и панель так и пишет.
  4. Ранжирование по плотности ошибки \sqrt{\sum\eta_e^2/\sum V_e}, а не по сумме: сумма ставит первой самую крупноячеистую область.

Для каждого очага выдаётся центр, радиус описанной сферы, объём, доля общей ошибки и текущий размер элемента. Из очага строится зона сгущения (сфера) с размером h_{\text{new}} = h_{\text{old}}/k (по умолчанию вдвое) и запасом на переходную полосу сетки; её можно создать одной кнопкой или во всех очагах сразу.

Ограничения. Индикатор оценивает ошибку дискретизации, а не причину: у настоящей сингулярности (входящий угол, точечная сила, ребро заделки) ошибка тоже высока, и очаг будет, а сгущение её не уберёт. Ранжирование по плотности снимает только влияние размера элементов; на задачах, где артефакт закрепления остаётся сильнее концентратора, он может оказаться первым в списке. Отличить сингулярность позволяет сеточная сходимость. Метод определён для тетраэдров; для сеток из шестигранников и оболочек очаги не строятся. Оценка не заменяет проверку сходимости пика напряжения по серии сеток.
Проверка. Индекс эффективности \theta_{\text{eff}} = \eta/\lVert e_{\text{exact}}\rVert на консоли с точным решением Тимошенко (плоская деформация) на трёх уровнях сетки: SPR — 1,226 → 1,066 → 1,002 (сходится к 1); простое усреднение по патчу занижало ошибку примерно на 30 %, поэтому по умолчанию используется SPR. Замер сделан при разработке в тестовой обвязке на WASM-сборке ядра; на нативном пути не переснят. Цикл «ошибка → сфера сгущения → пересчёт» на пластине с отверстием входит в кейс Субмоделирование: концентрация у отверстия Кирша (отклонение −3,57 % от замкнутого решения при допуске 5 %). Верификация узкая: одна геометрия и один публичный кейс, поэтому подраздел помечен как бета.

Где в интерфейсе и DSL

Панель результатов «Очаги»: список, кнопки «Сфера здесь» и «Сферы во все очаги». В DSL — hotspots и автоматический цикл refine adaptive, у которого пользователь задаёт целевые погрешности: gci (порог сеточной сходимости, %) и tol (порог ошибки ZZ, %).

hotspots refine=2 minsize=0.5
probe hotspot_count
refine adaptive passes=3 gci=5 tol=2

12.11Сеточная сходимость: экстраполяция Ричардсона и GCIбета

Сходимость решателя (падение невязки внутри одного расчёта) — одно; сходимость по сетке (к чему стремится пик напряжения при измельчении) — другое. Модуль отвечает на второй вопрос серией независимых расчётов на всё более мелкой сетке.

Метрика — максимум поля внутри сферы очага, зафиксированной с предыдущей итерации (глобальный максимум на разных сетках может стоять в разных местах и сравнивать его нельзя). Характерный размер элемента h берётся из самой сетки в этой сфере как h = (\overline{\Delta V_e})^{1/3} (Celik et al., ASME J. Fluids Eng., 2008), а не из заказанного размера: мешер выдаёт не то, что просили, а метод работает с отношениями h.

По трём последним сеткам (h_1 > h_2 > h_3, значения пика f_1, f_2, f_3) вычисляется:

\varepsilon_{21} = f_2 - f_1,\quad \varepsilon_{32} = f_3 - f_2,\quad r_{\text{eff}} = \sqrt{\frac{h_1}{h_2}\cdot\frac{h_2}{h_3}},\quad p = \frac{\ln\lvert\varepsilon_{21}/\varepsilon_{32}\rvert}{\ln r_{\text{eff}}},
f_{\text{ext}} = f_3 + \frac{\varepsilon_{32}}{r_{32}^{\,p} - 1},\qquad \text{GCI} = \frac{F_s\,\lvert\varepsilon_{32}/f_3\rvert}{r_{32}^{\,p} - 1},\quad F_s = 1.25 \ \text{(Roache)}.

Порядок p считается знаковым, без модуля из записи Celik: отрицательный p — это диагноз расходимости, а не шум. Вердикт один из:

  • «сошлось»: предел f_{\text{ext}} \pm \text{GCI}\cdot\lvert f_3\rvert, GCI не выше цели (по умолчанию 5 %);
  • «сходится, но полоса ещё широкая» — измельчать дальше;
  • «не сходится — вероятно сингулярность» (p \le 0): добавьте скругление, дальнейшее измельчение ответа не даст;
  • «недостаточно истории» (меньше трёх итераций) или «вход непригоден».

Если знак приращений сменился (ряд качается вокруг предела), вердикт — «измельчать дальше»: экстраполяция в таком ряду недостоверна.

Ограничения. Каждая итерация — новая неструктурированная сетка со своим шумом пика; оценка p при неточных h смещена (две сетки не дают ничего). Ричардсон предполагает асимптотический режим: для грубых сеток результат «сошлось» ненадёжен. Метрика привязана к одному очагу; другой очаг на этой же модели требует своего ряда. Модуль не отличает физическую расходимость от дефекта постановки (точечная сила, жёсткая заделка рёбер).
Проверка. Замер при разработке (тетраэдры TET4, WASM-сборка ядра; на нативном пути не переснят): пластина с отверстием (Кирш, K_t = 3), четыре итерации — пик 2,139 → 2,511 → 2,747 → 2,853 МПа, вердикт «сошлось к 2.939 \pm 0.108 МПа» при точном 3,0 МПа (экстраполяция промахивается на 2 %); входящий прямой угол — пик 18,0 → 21,9 → 27,6 → 38,9 МПа, p = -1.26, вердикт «вероятно сингулярность». Отдельного кейса верификации сходимости по сетке в списке нет; смежный — Субмоделирование: концентрация у отверстия Кирша.

12.12Усталость по кривым S-Nбета

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

Кривая S-N — одна из трёх:

  • Баскин: \sigma_a = \sigma'_f\,(2N_f)^b, откуда N_f = \tfrac12(\sigma_a/\sigma'_f)^{1/b}; необязательный предел выносливости \sigma_e: ниже него N_f = \infty.
  • Двухнаклонная с изломом на базе N_e: N_f = N_e(\sigma_a/\sigma_e)^{1/b_1} при \sigma_a \ge \sigma_e и N_f = N_e(\sigma_a/\sigma_e)^{1/b_2} ниже предела (при b_2 = 0 — бесконечная жизнь).
  • Табличная: кусочная интерполяция в осях \log\sigma–\log N.

Поправка на среднее напряжение \sigma_m переводит цикл (\sigma_a, \sigma_m) в эквивалентную симметричную амплитуду \sigma_{a,\text{eq}}:

Метод\sigma_{a,\text{eq}}Нужно
Гудман\sigma_a/(1-\sigma_m/\sigma_u)\sigma_u
Гербер\sigma_a/(1-(\sigma_m/\sigma_u)^2)\sigma_u
Морроу\sigma_a/(1-\sigma_m/\sigma'_f)\sigma'_f
Содерберг\sigma_a/(1-\sigma_m/\sigma_y)\sigma_y

При \sigma_m \ge предела знаменателя поправка даёт бесконечность (статическое разрушение). По умолчанию при сжимающем среднем \sigma_m \le 0 поправка не применяется (консервативно, \sigma_{a,\text{eq}} = \sigma_a); учёт благоприятного влияния сжатия включается явно.

Нагружение задаётся одним из способов: коэффициент асимметрии R = \sigma_{\min}/\sigma_{\max} (по умолчанию R=-1); диапазон масштабов; история масштабных множителей статического решения; последовательность результатов нескольких шагов (непропорциональное нагружение). История разбирается методом «дождя» (rainflow, ASTM E1049-85, §5.4.4) на замкнутые циклы и полуциклы \{\Delta\sigma,\ \sigma_m,\ w\} (вес 1 или 0,5), остаточные полуциклы входят с весом 0,5. Повреждения суммируются по правилу Пальмгрена–Майнера:

D = \sum_i \frac{n_i}{N_{f,i}},\qquad N_{\text{blocks}} = \frac1D.

Здесь N_{\text{blocks}} — долговечность в повторениях заданного блока нагружения.

Скалярное напряжение, по которому считаются циклы, — Мизес, Мизес со знаком (знак по наибольшему по модулю главному) или \sigma_1. Результат — поля повреждения D, \log_{10}N_f, эквивалентной амплитуды и коэффициента усталостного запаса n = \sigma_a^{\text{allow}}(N_{\text{target}})/\sigma_{a,\text{eq}} — отношения допускаемой амплитуды при целевой долговечности к эквивалентной (ограничен сверху), а также наиболее опасный узел.

Ограничения. Модуль работает по напряжениям линейного упругого решения (многоцикловая усталость); пластическое перераспределение у концентраторов, малоцикловая усталость по деформациям и критические плоскости для многоосного нагружения не поддерживаются. Многоосное состояние сводится к скаляру (\sigma_{\text{vm}} или \sigma_1). Поправок на масштаб, состояние поверхности, коэффициент концентрации K_f нет: их нужно заложить в кривую. Кривая S-N — свойство материала, которое задаёт пользователь; в DSL при незаданных параметрах подставляется обобщённая кривая стали, пригодная только для проверки сценария. Узловые напряжения усредняются (см. восстановление напряжений), что влияет на оценку у концентраторов.
Проверка. Формулы S-N-кривых, поправок и rainflow (включая замкнутый внутренний цикл и внешний) проверены модульными тестами по аналитическим значениям; отдельного кейса верификации усталости в списке нет. Функция вошла после версии 0.2.1.
fatigue sigma_f=900e6 b=-0.09 sigma_e=200e6 sigma_u=600e6 correction=goodman r_ratio=0
probe fatigue_min_log_life

12.13Механика разрушения: оценка KI, J и рост трещины по Пэрисуэксперимент

Модуль даёт инженерные оценки по замкнутым формулам линейной механики разрушения и по напряжению в месте предполагаемой трещины. Это не расчёт J-интеграла по контуру или области вокруг вершины трещины и не расчёт на сетке с трещиной.

Формулы.

  • K_I = Y\,\sigma\sqrt{\pi a}; для центральной трещины 2a в бесконечной пластине Y=1 и K_I = \sigma\sqrt{\pi a}.
  • Скорость высвобождения энергии (Гриффитс–Ирвин): G = K_I^2/E', где E' = E (плоское напряжение) или E/(1-\nu^2) (плоская деформация).
  • Рост усталостной трещины по Пэрису: da/dN = C\,(\Delta K)^m, \Delta K = Y\,\Delta\sigma\sqrt{\pi a}. При постоянном Y интеграл берётся аналитически: N = \dfrac{a_f^{\,1-m/2} - a_0^{\,1-m/2}}{(1-m/2)\,C\,(Y\Delta\sigma\sqrt\pi)^m} (при m=2 — N = \ln(a_f/a_0)/[C(Y\Delta\sigma\sqrt\pi)^2]).
  • Критерий страгивания: трещина нестабильна при K_I \ge K_{Ic}; критическая длина a_c = \dfrac1\pi\left(\dfrac{K_{Ic}}{Y\sigma}\right)^2, запас n = K_{Ic}/K_I.
  • Для образцов DCB (мода I) и ENF (мода II) в модуле есть балочные формулы податливости, G и критической нагрузки; они используются в кейсах верификации когезионных зон.

Оценка по ребру (fracture edge number N): пользователь указывает ребро (место предполагаемой трещины), начальную и конечную длины a_0 и a_f, параметры Пэриса C, m, вязкость K_{Ic} и фактор формы Y. В узлах ребра берётся раскрывающее напряжение \sigma_{\text{open}} — наибольшее главное напряжение из расчёта модели без трещины. Далее K_I = Y\,\sigma_{\text{open}}\sqrt{\pi a_0}, J = K_I^2/E', а число циклов получается интегрированием закона Пэриса с \Delta\sigma = \sigma_{\text{open}} (цикл «от нуля до максимума»). Единицы: K_{Ic} в МПа·√м, C — для \Delta K в МПа·√м и длины трещины в метрах; в панели результатов a_0 и a_f вводятся в миллиметрах, в DSL — в метрах.

Ограничения. Это оценка «напряжение × формула для идеализированной трещины», а не поле вокруг вершины. «J» здесь K_I^2/E' — энергетический эквивалент, а не независимый контурный интеграл, и он не проверяет K_I. Решение чувствительно к выбору a_0 и Y (задаются пользователем) и к тому, насколько напряжение в месте трещины сглажено сеткой (узловое усреднение занижает пик; для малой трещины в градиенте напряжения оценка неприменима). Только режим I; смешанные моды, пластичность у вершины и взаимодействие трещин не учитываются. Рост по Пэрису — оценка числа циклов при постоянном \Delta\sigma без учёта порога \Delta K_{th}, эффекта асимметрии цикла и перегрузок. Когезионные зоны (расслоение, мода I/II) и пористая пластичность Гурсона — отдельные модели материала, они в этой оценке не участвуют.
Проверка. Кейсы Центральная трещина KI, Закон Пэриса при постоянном ΔK и Энергия Гриффитса по описанию кейсов сверяют реализацию замкнутых формул с эталонными значениями (отклонение 0 %): проверяются арифметика и единицы, а конечно-элементное извлечение K_I или J в них не участвует. Сверки с независимым численным решением (трещина в сетке, контурный интеграл) нет, поэтому подраздел помечен как экспериментальный.
fracture edge number 7 a0=0.002 af=0.008 c=1e-11 m=3 ki_c=50
probe sif_k1
probe paris_cycles

12.14Калькулятор полей: пользовательские выражениястабильно

Инженер задаёт собственное поле — выражение над узловыми полями результата, — и оно красится на модели, как встроенное: с легендой, зондом, фильтром по значению.

Выражение строится из переменных: компонент напряжений sxx … szx, vm, s1 s2 s3, компонент деформации exx … gxz, eeq, epeq, перемещений ux uy uz umag, а также чисел, констант и функций (abs sqrt cbrt sign exp log log10 sin cos tan atan atan2 min max hypot clamp pow, арифметика и степень). Разбор безопасный (без выполнения произвольного кода).

Размерности проверяются на этапе разбора. Внутри выражения всё в СИ (Па, м). Единицы — именованные величины: допускаемое пишется 250*MPa, а не 250e6. Выражение 250e6/vm отклоняется (размерность 1/Па), как и vm + 5 (нельзя складывать давление с числом). Размерность результата выводится из выражения: Па → «давление» (показ в МПа, psi или Па по системе единиц), метр → «длина», 1 → безразмерное; прочие степени показать нечем, и выражение отклоняется с названием размерности. Необязательный unit= — утверждение о размерности: не совпало — отказ.

Запас прочности по своему критерию (отдельный тип поля): K = [\sigma]/f(\boldsymbol\sigma), где f — критерий в единицах давления (например vm или max(s1, -s3*ft/fc)), [\sigma] — константное допускаемое. При f=0 запас ограничивается потолком, при f<0 или нечисловом значении узел не определён.

Узел, где значение не определено, получает «не число» и считается: их число и первая причина отдаются в отчёте; молчаливый ноль не подставляется.

Ограничения. Выражение действует над узловыми (усреднёнными) полями, а не над точками Гаусса. Переменные, которых нет в результате (например, epeq в линейном расчёте), отклоняются с названием. Для огибающих спектрального анализа главные напряжения и инварианты не определены (амплитуды компонент не образуют знакового тензора), и такие переменные отказываются.
Проверка. Модульные тесты сверяют фон Мизеса, собранный из компонент пользовательской формулой, с встроенным полем на 1000 узлах, главные тройки, критерий Треска через \sigma_1 - \sigma_3, пересчёт единиц и отказы по размерностям. Независимых кейсов верификации в списке нет: поле — композиция встроенных величин.
field define name=sigma_ratio expr="vm / (250*MPa)" unit=none
field safety name=n_shell criterion="vm" allowable="250*MPa"
probe n_shell

12.15Зонды, фильтры и замерыстабильно

В интерфейсе зонд ставится кликом по модели; панель показывает значение поля в узле. Автозонды отмечают минимум и максимум выбранного поля на модели. Фильтр по значению оставляет на модели только узлы вне или внутри заданного диапазона. Диапазон цветовой шкалы можно закрепить вручную (в единицах показа выбранной системы).

В DSL:

probe displacement_magnitude at=0,0,100
minmax vonMises
legend range min=0 max=250
result field vonMises

probe <quantity> at=… усредняет поле по узлам, попавшим в окно допуска tol= вокруг заданных координат (без интерполяции; если координата одна, получается среднее по срезу); если в окне нет узлов, команда отказывает и просит расширить допуск. minmax возвращает минимум и максимум по всему узловому массиву (значением выражения служит максимум). Доступны величины: перемещения, vonMises, principalMax, principalMin, компоненты тензора, локальные напряжения материала, реакции (reaction_x, reaction_y, reaction_z, reaction_magnitude), результаты линеаризации, усталости, механики разрушения, оптимизации, а также динамические и частотные величины. Полный перечень — на странице /docs/dsl.

Ограничения. Зонд не интерполирует поле внутри элемента: его значение — среднее по узлам окна, а сами узловые значения усреднены (см. восстановление напряжений). Ширина окна по умолчанию связана с размером сетки; для острых пиков задавайте tol= явно.
Проверка. Зонды и minmax используются как средство измерения во всех кейсах верификации; их собственное поведение (единицы, агрегаты, отказы на неверные аргументы) проверено скриптовыми тестами.

12.16Параметрический DOE и суррогатная оптимизацияэксперимент

Раздел «Параметрический DOE и оптимизация» собран из трёх узлов; ни один из них пока не связан с расчётом конечно-элементной модели.

  • Планирование эксперимента. Латинский гиперкуб (LHS) с выбором из нескольких кандидатов по максимальному минимальному расстоянию между точками (maximin); детерминированный генератор с фиксируемым зерном. Режим, названный «Соболь», реализован как последовательность Хэлтона (радикальная инверсия по простым основаниям) — малодисперсная, но не Соболя.
  • Суррогатная модель. Обычный кригинг (гауссовский процесс с постоянным трендом): корреляция гауссова или экспоненциальная, холецкий корреляционной матрицы, прогноз среднего и дисперсии, ожидаемое улучшение (Expected Improvement) для байесовской оптимизации. Длины корреляции подбираются эвристикой по средним расстояниям между точками, а не максимизацией правдоподобия.
  • Оптимизатор с ограничениями. Начальный набор точек DOE, затем локальный поиск по образцу (покоординатный, с уменьшением шага вдвое при отсутствии улучшения) по штрафной функции f(\mathbf p) + c\,v(\mathbf p)^2, где v — наибольшее нарушение ограничения. Выдаются оптимум, фронт Парето по допустимым точкам, историю и конечно-разностные чувствительности \partial f/\partial p_k в оптимуме. Это не метод SQP: градиентов и квадратичных подзадач в нём нет.

Ограничения задаются на напряжение, частоту, коэффициент потери устойчивости и перемещение; цели и адреса сущностей подчиняются тем же правилам нумерации, что и остальной продукт (нумерация документа, без bbox-адресов).

Ограничения. В текущей сборке и интерфейсный раздел, и команда DSL doe run вычисляют цель и ограничения по встроенным модельным функциям (масса — как произведение размеров бруса, напряжение и частота — упрощённые зависимости от высоты и длины), а не по расчёту вашей модели; параметры по умолчанию — длина, ширина, высота. Суррогатная модель и ожидаемое улучшение реализованы и проверены в тестах, но в сквозном сценарии продукта не вызываются. Результат поэтому показывает работу алгоритмов, а не оптимальную конструкцию вашей детали. Использовать результат doe_best_mass как инженерный вывод нельзя.
Проверка. Модульные тесты: воспроизводимость LHS и Хэлтона, ступени параметров, интерполяция кригинга с нулевой дисперсией в обучающих точках, формула EI, оптимизация модельной консоли с ограничениями. Сверки на реальной модели нет; кейсов верификации в списке нет.
doe param name=thickness min=1 max=10
doe run method=lhs samples=20 objective=mass
probe doe_feasible_count

12.17Экспорт результатовстабильно

  • VTK (legacy ASCII, UNSTRUCTURED_GRID) для ParaView: узлы недеформированной сетки, ячейки всех поддерживаемых типов (TET4, квадратичный TET10, HEX8, призмы, пирамиды), перемещения как векторное поле VECTORS (для Warp By Vector), узловые скаляры (модуль перемещения, Мизес, \sigma_1, \sigma_3, запас прочности, деформации, контакт, реакции в Н) и температура. Единицы указаны в именах полей. В интерфейсе — меню проекта, в DSL — export vtk path=... (запись в файл по пути работает в десктопной и скриптовой среде).
  • Сетка в формате расчётных пакетов: export mesh file="model.inp", при необходимости с деформированной геометрией и масштабом перемещений.
  • HTML-отчёт: параметры расчёта, пробы и снимок вьюпорта; числа выводятся в выбранной системе единиц.
Ограничения. В VTK выводятся узловые поля после усреднения (элементных значений нет). Для спектральных огибающих компоненты пишутся как независимые скаляры (FIELD), а не как знаковый вектор: применять к ним Warp By Vector нельзя. Файл ASCII, для больших моделей он тяжёл.
Проверка. Отдельных кейсов нет; корректность единиц в именах полей и состав полей проверяются тестами при выгрузке.

12.18Легенда и деформированный видстабильно

Цветовая шкала на модели берёт диапазон из поля (минимум и максимум по узлам), подпись — из таблицы единиц выбранной системы; диапазон можно закрепить вручную (двойной клик по краям шкалы или legend range min= max=). Для контакта шкала категориальная (статус), для запаса прочности значения выше потолка подписываются как «бесконечность». Деформированный вид рисует \mathbf{x} + s\,\mathbf{u} с масштабом s, который выбирает пользователь; при s = 1 показана истинная деформация, при большем s — условная, поэтому числа берите из зондов и легенды, а не из картинки.

Ограничения. При большом масштабе деформированная форма — иллюстрация, а не геометрия нагруженного тела. Числа на шкале относятся к узловому усреднённому полю, а не к значениям в точках Гаусса.

13Проекты, сценарии и автоматизация

↑ К оглавлению

Один и тот же расчёт в WebCAE можно провести тремя способами: мышью в интерфейсе, сценарием на встроенном языке DSL или поручить внешнему ИИ-ассистенту через MCP. Все три способа работают с одной моделью и одними и теми же командами, поэтому результат не зависит от того, чем он получен. Раздел описывает рабочий процесс, файл проекта, язык сценариев, подключение ассистентов, готовые примеры, обмен данными и локализацию.

Зачем это инженеру. Сценарий превращает расчёт в воспроизводимый документ: его можно положить рядом с отчётом, перезапустить на новой версии и сравнить числа. Файл проекта хранит модель вместе с результатами, а не только исходные данные. Подробный справочник команд DSL ведётся отдельно: Язык сценариев DSL.

13.1Рабочий процесс: шесть шаговстабильно

Интерфейс устроен как цепочка из шести шагов. Каждому шагу соответствует вкладка верхней панели и своя панель параметров.

ШагЧто делает инженерЧто получается
1. ГеометрияСтроит примитивы и эскизы, импортирует STEP и IGES, режет, склеивает, лечит геометрию (см. Геометрия и CAD)Тела, листы и линии с нумерацией граней, рёбер и вершин
2. МодельЗадаёт материалы и назначает их телам, сечения балок, толщины оболочек, группыРасчётная модель без нагрузок
3. Нагрузки и ГУСтавит закрепления, силы, давления, температуры, контакты и связиЗаписи граничных условий, привязанные к номерам сущностей
4. СеткаВыбирает тип сетки, размер элемента, порядок элементов, зоны сгущенияСетка тетраэдров, гексаэдров, оболочек или балок
5. РасчётВыбирает вид анализа и параметры решателя, запускает расчётПоля перемещений, напряжений, температур, частоты, формы, коэффициенты устойчивости
6. РезультатыСмотрит поля, зонды, реакции, сечения, экспортируетТаблицы, картинки, файлы

Вид анализа на шаге 5 выбирается из групп: структурный (статика, модальный анализ, устойчивость, гармонический отклик, переходная динамика), тепловой, explicit-динамика и CFD. Модели из балок и оболочек, заданные командами frame, проходят те же шаги, но на шагах 3 и 4 вместо обычных панелей показывают панель каркаса.

Шаги не образуют жёсткого конвейера. К любому доступному шагу можно вернуться. Шаги «Геометрия», «Модель» и «Нагрузки и ГУ» открыты всегда; «Сетка» и «Расчёт» ждут геометрию или сетку, «Результаты» открываются, когда есть результат расчёта. Изменения модели можно отменить и вернуть (Undo и Redo).

Автосохранение пишет снимок модели (без результатов) в локальное хранилище браузера или приложения, чтобы пережить перезагрузку вкладки или сбой. Это страховка, а не замена сохранению проекта в файл.

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

13.2Файл проекта .wceстабильно

Проект сохраняется одним файлом с расширением .wce. Прежнее расширение .caeweb продолжает открываться; при следующем сохранении предлагается .wce. Расширение ничего не говорит о содержимом: читатель определяет формат по сигнатуре и сжатию, поэтому переименованный файл открывается так же.

Внутри лежит полная модель, а не только исходные данные.

  • Геометрия: байты исходного STEP, проверенное B-Rep каждого тела, созданные и импортированные тела, моментальный снимок топологии с устойчивыми идентификаторами, журнал нумерации сущностей.
  • Модель: материалы и их назначение, сечения, группы, граничные условия, нагрузки, контакты и связи, настройки сетки и расчёта.
  • Сетка: тетраэдры, гексаэдры, гибридные элементы и поверхностные сетки с качеством элементов.
  • Результаты: статика, тепловое поле, explicit, гармонический отклик, результаты каркаса (статика, формы, устойчивость, динамика), история шагов нагружения, архив адаптивных перестроений.

Массивы чисел (узлы, элементы, поля) лежат в бинарном блоке без перекодирования в текст, а контейнер целиком сжимается gzip. Файл записывает версию схемы данных. Старые файлы открываются новой версией приложения: недостающие поля берутся по умолчанию, устаревшие адреса сущностей переводятся в нумерацию при чтении. Файл более новой схемы старая сборка открывать отказывается, а не читает с потерей данных.

Не сохраняются временное состояние интерфейса (текущая вкладка, статусы, выделение), частичный ряд оборванного расчёта, скрипты и журнал терминала. Проект открывается из меню «Проект», перетаскиванием файла в окно, двойным щелчком в десктопе (приложение регистрируется для .wce) и командой cae_open_project для ассистентов. Меню «Проект» также сохраняет результаты отдельно от модели и читает их обратно.

Ограничения. Скрипты и журнал действий в файл не входят, храните их рядом. Кадры больших CFD-расчётов в файл не попадают: он хранит метаданные и ссылку на сессию расчёта, а поля читаются из каталога сессии на той же машине. Запись и открытие проекта командами DSL отсутствуют; это делается из меню или через MCP. Файл большой модели с результатами может занимать сотни мегабайт.
Проверка. Круговое сохранение и чтение (модель, сетки, результаты, миграция старых схем, отказ на более новой схеме) покрыты модульными тестами. Независимого кейса верификации у формата нет, и для файла он не имеет смысла: проверяется целостность данных, а не физика.

13.3Единый командный слой и журнал действийбета

Любая функция продукта заводится как команда единого командного слоя. Кнопка ленты, пункт контекстного меню, строка DSL и вызов ассистента обращаются к одной функции. Форма в интерфейсе и скрипт не дублируют логику, поэтому одна и та же операция даёт одинаковый результат на любом пути. Это правило разработки: новая возможность считается законченной, когда достижима и из интерфейса, и из сценария.

Доступны три поверхности. Первая — интерфейс. Вторая — язык DSL, строка за строкой. Третья — программный интерфейс cae.* на JavaScript, через который работают терминал и MCP-мост. В терминале внизу окна строка, начинающаяся с cae., выполняется как JavaScript; остальные строки сначала пробуются как JavaScript, затем как DSL. Несколько строк можно вставить сразу.

Журнал действий строится автоматически. Терминал показывает два канала: команды расчётного ядра (геометрия, сетка, материалы, ГУ, запуск расчёта; показываются всегда) и события интерфейса (смена вкладки, выбор, видимость, камера; включаются флажком «UI-события»). Команды записываются в форме вызовов cae.*, например cae.fix(...) или cae.setMeshOrder(...). Такую строку можно скопировать и выполнить повторно, то есть собрать из журнала макрос.

Ограничения. Журнал записывает вызовы cae.*, а не строки DSL, и не сохраняется в проекте. Не у каждой операции есть воспроизводимая строка: часть событий записывается как читаемый комментарий. Выбор мышью в 3D-виде и настройки отображения существуют только в интерфейсе. Покрытие DSL неполное, а ряд режимов в скрипте отказывает с пояснением вместо тихой подмены; список ограничений ведётся на странице DSL. Некоторые команды работают только внутри приложения, например автоматический поиск контактных пар contact pairs. Поэтому статус бета: принцип выдержан для основной цепочки, но не гарантирован для каждой операции.
Проверка. Преобразование действий в строки журнала покрыто модульными тестами; кейсов верификации на командный слой нет.

13.4Воспроизводимость результатовбета

Чтобы расчёт можно было повторить, нужны сценарий, версия программы и платформа. На одной платформе повторный запуск того же сценария даёт ту же сетку и те же числа: мешер детерминирован. Между десктопом и браузером сетки на одной геометрии могут отличаться, поэтому числа разных платформ сравнивают с подписью платформы (см. расхождения платформ).

Результат несёт метку «эпохи решателя». Когда в решателе исправляют ошибку, из-за которой числа сохранённого результата могли выйти за допуск 5 %, номер эпохи растёт. Открыв проект, сохранённый до такой правки, программа показывает стойкое уведомление «результаты могли устареть». Сам результат не удаляется: его можно сравнить с пересчётом. Тот же вердикт отдают отчёт, DSL (поле staleResults в ответе интерпретатора) и MCP.

Версия продукта видна в панелях, в окне «О программе» и в «Настройки → Обновления», в ответе cae_get_state и в свойстве cae.version. Клик по номеру версии открывает историю изменений.

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

13.5Язык сценариев DSLстабильно

DSL — текстовый язык команд. Скрипт — обычный UTF-8 файл, одна команда на строку; комментарии начинаются с # или //, блоки и циклы заключаются в { }. Каждая команда — слово, затем позиционные и именованные аргументы вида key=value. Векторы пишутся числами через запятую: origin=0,0,10. Числа допускают экспоненту: E=200e9.

Язык содержит переменные (let), условия (if/else), циклы (for x in [0..3], while), функции (func/return) и встроенные функции (abs, sqrt, min, max, floor, ceil, round, len, str, num, basename). Вывод — print, запись значений в структурированный ответ — record. Для защиты от зацикливания число шагов исполнения ограничено миллионом, а глубина рекурсии — 64.

Команды охватывают всю цепочку: геометрия (primitive, boolean, sketch, extrude, import), материал и сечения (material, section, assign), сетка (mesh, refine), граничные условия (fix, load, contact, remote), расчёт (solve static|modal|buckling|thermal|nonlinear|...), результаты (probe, minmax, reactions, hotspots) и вывод (export vtk). Единица длины скрипта задаётся командой units; нагрузки и константы материала задаются в СИ.

Адресация сущностей

Грани, рёбра и вершины адресуются только номерами из дерева модели: surface number N, edge number N, vertex number N. Слово вида обязательно. Направления по габаритам (face z-) и голые индексы отвергаются синтаксической ошибкой. Номера узнают командой list faces of body1 или list edges of body1. В скрипте результат list можно сохранить в переменную: у каждой грани есть .n (номер), .area, .centroid, .normal. Это позволяет выбирать грани по критерию и подставлять номер в команду: fix surface number faces[0].n. Подробнее — в подразделе Нумерация топологии.

Пример сценария от геометрии до результата

Консольный брус сечением 20×20 мм и длиной 100 мм: заделка на одном торце, растяжение силой 5000 Н на другом. Тетраэдры второго порядка, линейная статика, затем проверка по формуле \delta = FL/(EA).

# Консольный брус 20x20x100 мм, растяжение 5 кН вдоль оси z
units mm
material E=200e9 nu=0.3 density=7850
primitive box dx=20 dy=20 dz=100
mesh tet size=8 order=2
fix surface number 5
load surface number 6 force=5000 component=z
solve static
reactions
minmax vonMises
minmax displacement_magnitude

В этом примере грань 5 — торец при z=0, грань 6 — торец при z=100 мм. У параллелепипеда грани нумеруются в порядке x-, x+, y-, y+, z-, z+; у других тел номера смотрите командой list faces of body1 до постановки ГУ. Ожидаемый результат: суммарная реакция равна приложенной силе по модулю (5000 Н), а наибольшее перемещение торца близко к аналитическому \delta = FL/(EA) = 5000\cdot 0.1/(2\cdot 10^{11}\cdot 4\cdot 10^{-4}) \approx 6.25\cdot 10^{-6} м. Заделка полностью запрещает перемещения на торце, поэтому вблизи неё возникает локальный концентратор, и наибольшее напряжение по Мизесу превысит однородное F/A = 12.5 МПа. Для сравнения с аналитикой берите значения вдали от заделки.

Скрипт запускается в терминале приложения или из MCP командой cae_run_script; вывод print и записанные значения record возвращаются вместе со статусом выполнения.

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

let faces = list faces of body1
for f in faces {
  print f.n f.area f.normal
}
Ограничения. Скрипт без команды units считается метровым, поэтому mesh tet size=6 в нём — шесть метров: начинайте скрипт с units mm. Часть команд работает только внутри приложения, с открытой моделью, а не в безголовом прогоне. Режимы, которые в скрипте недоступны или отказывают с пояснением, перечислены на странице DSL в разделе известных ограничений; язык не гарантирует, что любая операция интерфейса имеет команду.
Проверка. На DSL написана почти вся программа верификации: исполняемый скрипт опубликован на странице 207 кейсов из 213, например Консольная балка Тимошенко и Пластина с отверстием. Набор DSL-кейсов на нативном пути проходит с отклонением в пределах допуска; подробности — в разделе Платформы, производительность и контроль качества.

13.6MCP-сервер для ИИ-ассистентовбета

MCP (Model Context Protocol) — открытый протокол, по которому ассистент (Claude Desktop, Claude Code, Cursor и подобные) вызывает инструменты. WebCAE поставляет локальный мост, соединяющий ассистента с открытым окном приложения. Ассистент работает с настоящей моделью: открывает проект, осматривает грани и рёбра, назначает материал, ставит граничные условия, строит сетку, запускает расчёт, получает числа и снимок экрана.

Инструменты типизированы и делятся на группы: осмотр (cae_inspect_surfaces, cae_inspect_edges, cae_get_state, cae_get_model_context), построение (cad_create_from_template, cad_create_from_script, cae_import_step_artifact, cae_open_project), задание модели (cae_set_material, cae_add_boundary_condition), расчёт и просмотр (cae_solve, cae_screenshot) и универсальный cae_run_script, который принимает сценарий DSL строкой и возвращает вывод print, записанные значения record и статусы. Цели граничных условий адресуются теми же номерами surface number N; осевые псевдоимена («верхняя грань») мост отвергает. Список инструментов и параметры: MCP-сервер.

Мост слушает только локальный адрес. В релизной десктопной сборке он по умолчанию выключен: на соединении нет авторизации, и постоянно открытый порт отдал бы модель любому процессу машины. Включение — кнопкой «MCP» в верхней панели или при запуске приложения. Активное окно приложения одно: если подключены несколько клиентов, команды идут в одно окно, остальные ждут.

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

13.7Библиотека примеровбета

В приложении есть готовые проекты с посчитанными результатами: около девяноста в выпуске 0.2.1 и больше ста в рабочей ветке. Они открываются из меню «Примеры» верхней панели, из «Настройки → Открыть пример» и по ссылке вида ?example=<id>. Проект открывается сразу с полями результатов, легендой и зондами, расчёт повторять не нужно. Примеры сгруппированы по отраслям (автомобилестроение, машиностроение, железнодорожный транспорт, горное дело, нефть и газ, энергетика, авиация и космос, строительство, судостроение) и по видам анализа: статика, модальный анализ, устойчивость, большие прогибы, контакт, связи RBE2, CFD (RANS), каркасные и оболочечные конструкции. Витрина на сайте показывает те же модели.

Отдельный набор — нелинейные и многофизические кейсы: торможение колодки с трением, сейсмика башни со связями RBE2, динамическое прощёлкивание арки, джоулев нагрев шины с термоупругим ударом, а в рабочей ветке ещё гиперупругий сайлентблок, сектор турбинного диска с ползучестью и усталостью, расслоение двухслойной балки DCB, акустическая полость глушителя. Для каждого хранятся скрипт построения и численный паспорт. Кейсы, добавленные после выпуска 0.2.1, в нём отсутствуют.

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

13.8Обмен данными: проекты, результаты, геометриябета

Меню «Проект» собирает операции обмена.

  • Геометрия: импорт STEP и IGES (см. Импорт STEP и Импорт IGES и STL), экспорт в STEP и IGES при наличии геометрии.
  • Проект: «Новый проект», «Сохранить проект…», «Открыть проект…» (формат .wce, см. выше).
  • Результаты: «Экспорт результатов…» и «Импорт результатов…» работают с файлами .wce и .caeweb, а импорт принимает и .vtk. Это позволяет передать коллеге поля результатов, не передавая весь проект.
  • VTK: экспорт сетки с полями в формат .vtk, который читает ParaView. Для explicit- и CFD-расчётов используется VTK, сформированный расчётным модулем.
  • DSL: export vtk [path=...].

В десктопе файловые диалоги системные. В браузерах с File System Access API (Chrome, Edge) проект сохраняется прямо в выбранный файл, в остальных (Safari, Firefox) скачивается как обычный файл.

Ограничения. Экспорт VTK содержит сетку и поля, но не граничные условия и не материалы: это формат для просмотра, а не обмена моделью. Импорт результатов восстанавливает поля на сетке из файла и не переносит задание на расчёт. Связь с CAD-системами сводится к файлам STEP и IGES; синхронизация с Onshape и коннектор FreeCAD описаны в разделе Геометрия и CAD.
Проверка. Круговой обмен проектами и результатами покрыт модульными тестами. Экспортированные поля с независимыми пакетами (ParaView) не сверялись автоматически.

13.9Обмен сетками и экспорт деформированной формыэксперимент

В рабочем дереве, но не в выпущенной версии 0.2.1, добавлены обмен конечно-элементными сетками и экспорт результатов в CAD-подобные форматы. Импорт и экспорт сетки Abaqus (.inp), Gmsh (.msh) и Nastran (.bdf), экспорт деформированной формы и изоповерхности напряжений в STL и STEP открываются пунктами меню «Проект» при наличии сетки или поля перемещений. Подробнее об импорте сетки и его ограничениях — в подразделе Импорт и экспорт сеток.

Ограничения. Эти функции не вошли в выпуск, их формат меню и поведение могут измениться. Импорт принимает только линейные тетраэдры. Экспорт деформированной формы в STEP — фасетная оболочка из треугольников, а не B-Rep: годится для просмотра, не для проектирования.
Проверка. Сверки с независимыми пакетами нет; круговой импорт и экспорт проверен модульными тестами.

13.10Локализация и системы единицбета

Интерфейс переведён на четыре языка: английский, русский, испанский и китайский. Язык определяется по адресу страницы, параметру lng, сохранённой настройке и языку браузера; переключается в настройках. Английский — язык-источник: если перевода нет, показывается английский текст, а не служебный ключ.

Полнота перевода неодинакова. Испанская и китайская локали покрывают почти все строки английской (около 98 %). Русская локаль на конец октября 2026 переведена примерно на три четверти: непереведёнными остаются несколько панелей, в том числе часть общих подписей, редакторы материалов и сечений, плоскости и системы координат, контекстное меню дерева. Эти места показываются по-английски.

Единицы выбираются независимо от языка. Доступны три системы ввода: СИ (м, Н, Па, кг), метрическая инженерная (мм, Н, МПа, °C) и имперская (дюйм, фунт-сила, psi, °F). Подписи единиц берутся из справочника: в русской локали кириллические обозначения по ГОСТ 8.417, в остальных — международные. На границе солвера всегда СИ: пересчёт делает единственный модуль преобразования, а геометрия хранится в миллиметрах.

Ограничения. Русский интерфейс переведён не полностью, и этот справочник не гарантирует совпадения названий кнопок на английском фоне. Названия команд DSL не переводятся и одинаковы на всех языках. Единицы в DSL заданы иначе, чем в интерфейсе: константы материала и нагрузки — в СИ, длины процедурных объектов — в единицах команды units.
Проверка. Полноту перевода и отсутствие служебных ключей на экране проверяют автоматические тесты по реальным исходникам; счётчики непереведённого фиксированы и могут только уменьшаться. Согласованность единиц проверена кейсом с сосредоточенной силой, решённым в разных системах: Консоль под точечной силой.

14Платформы, производительность и контроль качества

↑ К оглавлению

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

Принцип один: эталон — нативный путь десктопа. Верификация, замеры производительности и разбор расхождений снимаются на нём. Браузерная версия считает тем же ядром, собранным в WebAssembly, и служит для знакомства и небольших моделей. Если на одной модели результаты платформ различаются, верным считается нативный результат, а расхождение описывается явно.

14.1Десктоп и браузер: что где считаетсястабильно

Десктопное приложение выпускается для Windows (64-разрядная, установщик NSIS, установка для текущего пользователя) и для macOS на процессорах Apple (образ DMG; образа для процессоров Intel нет). Сборки для Linux нет. Браузерная версия работает в современных браузерах с поддержкой WebAssembly; проект сохраняется напрямую в выбранный файл в Chrome и Edge и скачивается обычным файлом в Safari и Firefox.

ПараметрДесктопБраузер
Расчётное ядронативное, на C++то же ядро, собранное в WebAssembly
Решательпрямой разреженный и итерационный CG с AMG-предобуславливателем, многопоточная сборка матрицпрямой Холецкий до порога по памяти, выше итерационный CG без AMG, один поток
Памятьограничена оперативной памятью машины; прогноз памяти показан до запускадо 4 ГБ линейной памяти на модуль (32-разрядная адресация) и память вкладки
МешерNetgen, несколько тел строятся параллельно, отмена доступна в любой моментNetgen в WebAssembly, несколько тел параллельно в пуле рабочих потоков
ГеометрияOpenCASCADE, нативный импорт STEPOpenCASCADE в WebAssembly
CFDесть на macOS (SU2); в сборке для Windows нетнет
Настройки вычислений«Настройки → Вычисления»: режим решателя, число потоков, лимит памятине настраиваются
Обновлениеустановка нового выпускастраница обновляется при загрузке; приложение предлагает перезагрузку при новой версии

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

Основные расчёты на десктопе идут нативным путём по умолчанию. Если нативный путь отказал (нет бинаря, неверный ответ, превышен размер), программа сообщает причину и не подменяет его браузерным: молчаливая смена платформы дала бы другие числа без предупреждения.

Ограничения. Образ macOS на момент выпуска 0.2.0 не подписан сертификатом разработчика и не нотаризован, поэтому при первом запуске система может потребовать подтвердить открытие приложения. Сборка для Windows не содержит CFD. Прямой решатель на Windows однопоточен и заметно медленнее нативного прямого решателя на macOS, поэтому на Windows автоматический выбор раньше переходит на итерационный метод (см. Параллельность и платформы и Выбор решателя). Кнопка «Проверить обновления» в настройках в текущей сборке сообщает лишь номер установленной версии и сеть не опрашивает.
Проверка. Кейсы верификации сняты в основном нативным солвером; платформа записана в паспорте сетки и расчёта не у каждой карточки, часть старых помечена «WASM» (см. Программа верификации). Парной сверки нативного и браузерного результата по всему каталогу нет.

14.2Характерные размеры задач и временабета

Ниже собраны замеры нативного пути. Каждая таблица подписана машиной. Это порядки величин для планирования, а не гарантии: время зависит от процессора, загрузки машины, типа задачи и качества сетки. Замеры сняты в разное время на разных машинах и в одну таблицу не сводятся.

Линейная статика объёмных тел, нативный солвер, 8 потоков, 28 ГБ ОЗУ, замер 02.09.2026. Тетраэдры 2-го порядка, CG с алгебраическим многосеточным предобуславливателем (AMGCL, сглаживатель Гаусса–Зейделя, базис жёстких движений тела в агрегации). Время — полное: построение предобуславливателя и решение.

Степеней свободыВремя, сИтераций CGПамять, ГБ
175 тыс.2.4201.1
408 тыс.5.6192.4
788 тыс.11.0214.6
1.35 млн20.3258.1
2.13 млн31.42112.7

Число итераций почти не растёт с размером: многосеточный предобуславливатель делает сходимость практически независимой от шага сетки. На реальной CAD-модели антенны (741 тыс. степеней свободы, Tet10) тот же метод на 8 потоках считает за 10.7 с, на одном потоке за 19.8 с; прямой разреженный Холецкий (Eigen) на одном потоке тратит 843 с и 6.7 ГБ; на macOS прямой решатель Apple Accelerate заметно быстрее. На малых моделях (десятки тысяч степеней свободы) прямой метод быстрее и надёжнее итерационного, поэтому автоматический выбор оставляет его, пока модель умещается в лимит памяти.

Статика оболочек MITC4, нативный солвер, Apple M5, 24 ГБ, замер 13.10.2026. Квадратная пластина 1000×1000×10 мм, заделка по кромке, равномерное давление; время от нажатия «Решить» до результата, включая подготовку модели и передачу данных.

Степеней свободыВремя, сПик памяти нативного солвера, ГБПрогиб против эталона
1.0 млн7.25.9+0.008 %
2.0 млн16.86.4+0.008 %

Солвер один занимает 6–7 ГБ на 2 млн степеней свободы, но приложение целиком вместе с интерфейсом на том же размере занимает около 15.7 ГБ (при 1 млн около 9.6 ГБ), и на машине с 24 ГБ при 2 млн начинается своп. Поэтому потолок размера статики оболочек зависит от физической памяти: сейчас порядка 1.8 млн степеней свободы на 24 ГБ и порядка 1 млн на 16 ГБ. Выше потолка расчёт отказывает до запуска с названием причины и не переходит на браузерный путь.

Построение сетки, нативный мешер Netgen, Apple M5 (4 производительных и 6 энергоэффективных ядер), 24 ГБ, замеры августа и октября 2026 на загруженной машине.

Задача (дата замера)Результат
Сборка из 15 тел, 634 поверхности, 120 тыс. тетраэдров (10.08)13.8 с последовательно; около 4.3 с при четырёх одновременно строящихся телах (ускорение 3.2×)
Тот же файл, тонкая сетка (13.10)5.25 млн тетраэдров за 435 с, пик памяти около 3.2 ГБ
Сборка из 271 тела, 2.09 млн тетраэдров (11.08)352–433 с нативно (270 тел из 271), для сравнения 621 с в браузере

Ускорение мешера дают одновременно строящиеся тела (по числу производительных ядер), а не потоки внутри одного тела: десять потоков на одно тело дали только 1.2×.

Что известно о браузере. Размер задачи ограничен 4 ГБ линейной памяти каждого модуля и одним потоком решателя. По замерам июля 2026 практический потолок для статики 2-го порядка — порядка миллиона тетраэдров, для связанных контактов 2-го порядка — порядка сотен тысяч. Точная граница зависит от типа задачи, браузера и свободной памяти вкладки. Сопоставимых таблиц времени для браузера в справочнике нет: эталоном служит нативный путь.

Ограничения. Времена нестрого переносятся на другое железо. Замеры мешера сняты на загруженной машине; разброс между повторами одной конфигурации доходил до 19–25 %. Линейное решение масштабируется по ядрам умеренно: на модели 215 тыс. степеней свободы два ядра дали выигрыш около 1.2–1.5 раза, а дальше он упирается в пропускную способность памяти. Замеры оболочек и сеток сняты на одной машине (Apple M5), замеры объёмных тел — на другой; на Windows замеров нет.
Проверка. Первичные замеры сохранены в разборах разработки и воспроизводятся стендами; публичных кейсов верификации на производительность нет (кейсы проверяют точность, а не время).

14.3Расхождения платформбета

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

  • Сетки могут отличаться. На сборке из 271 тела из 269 тел, которые строят обе платформы, 115 (43 %) получили одинаковые сетки, у остальных число тетраэдров различается, в худшем теле на 11.9 %. Суммарно число тетраэдров совпало до 0.01 %, потому что отличия в разные стороны компенсируют друг друга. Каждая платформа по отдельности детерминирована: повторный запуск даёт ту же сетку.
  • Отказы бывают разные. Есть тела, которые сетку в браузере не строят, а на десктопе строят (одно из тел той же сборки, 20 599 тетраэдров на десктопе), и наоборот (другое тело той же сборки). Причина — расходимость сеточного алгоритма на сплайновых поверхностях при чуть разной арифметике, а не порча памяти. Вывод для практики: отказ мешера на одной платформе не доказывает дефекта геометрии, попробуйте другую или измените размер элемента.
  • Качество сетки нативной платформы не всегда выше. На тестовом кубе 10 мм с размером элемента 4 мм минимальное SICN (знаковая обратная обусловленность элемента, см. Метрики качества сетки) составило 0.146 на десктопе и 0.182 в браузере. Эталоном нативный путь остаётся по решению, а не потому, что он везде лучше: он совпадает с тем, что получает пользователь десктопа.
  • На числа влияет сетка, а не решатель. Набор DSL-кейсов с числовой приёмкой на нативном мешере проходит целиком. При смене платформы мешера 111 из 115 числовых замеров набора совпали побитово; остальные четыре разошлись на величину от 10^{-13} до 5\cdot 10^{-2} процента, то есть не менее чем в сто раз меньше допуска.
  • Функции. CFD есть только на десктопе (и не в сборке Windows). Карточки верификации, снятые в браузере, помечены «WASM».
Ограничения. Разбор мешера опирается на одну сборку из 271 тела и один тестовый куб; общей статистики расхождений по всему каталогу нет. Нативный и браузерный результаты одного кейса верификации пока не публикуются парами.
Проверка. Расхождения измерены сравнительными стендами и разобраны по шагам алгоритма мешера; приёмка DSL-набора ведётся на нативной платформе.

14.4Программа верификациистабильно

Публичная программа верификации — страница Верификация. В каталоге 213 кейсов; у 211 есть выполненный прогон, и все они прошли. Два кейса MacNeal–Harder (прямая и закрученная консольные балки) опубликованы как «В разработке»: постановка есть, прогона нет. Для каждого выполненного кейса на странице показаны постановка, эталон, полученное значение, отклонение, сетка и версия решателя. У 207 кейсов из 213 опубликован скрипт на DSL: его можно вставить в терминал приложения и повторить расчёт.

КатегорияКейсовЧто проверяется
Нелинейные и контакт112контакт и трение, гиперупругость, пластичность и ползучесть, повреждаемость и разрушение, геометрическая нелинейность и устойчивость, стадийное строительство, динамика и explicit
Аналитика50замкнутые решения: балки и пластины, толстостенные цилиндры, потеря устойчивости, динамика и гармонический отклик, спектры, случайные вибрации, теплопроводность, термоупругость, гибридные сетки
NAFEMS22линейная статика (серия LE), собственные частоты (FV), теплопередача (T)
CFD14течения в трубах и каналах, обтекание, перепады давления, силы на теле (расчёт SU2)
Балки и оболочки10подкреплённые панели, фюзеляж, корпус судна, эксцентричные рёбра
MacNeal–Harder5три выполнены: Изогнутая консольная балка, Прямоугольная пластина, Патч-тест; два в разработке

Примеры: NAFEMS LE1, эллиптическая мембрана, контакт Герца: шар, толстостенный цилиндр в жёсткой обойме (задача Ламе), потеря устойчивости квадратной пластины, рама Ли с предельной точкой, цилиндр в потоке при Re = 40.

Эталоны трёх типов. Аналитические решения: формулы теории упругости и динамики, для которых результат известен в замкнутом виде. Опубликованные бенчмарки: наборы NAFEMS и MacNeal–Harder. Инварианты и балансы: энергия, равновесие сил, симметрия, независимость от поворота тела или шага нагружения, где численный эталон дать нельзя.

Ограничения. Верификация доказывает, что реализация воспроизводит известные решения на заданных сетках, но не что модель применима к вашей конструкции: выбор элемента, сетки и граничных условий остаётся за инженером. Кейсы подобраны разработчиками, независимой сертификации программы третьей стороной этот справочник не заявляет. Платформа указана не в каждой карточке (в части старых кейсов она помечена как WASM); часть карточек на браузерном пути не пересоздана на нативном. Кейсы в основном небольшие; крупные промышленные сборки представлены готовыми примерами без сверки с эталоном (см. Библиотека примеров).
Проверка. Результаты кейсов публикуются автоматически из прогонов, а не вручную. Дата и версия решателя для карточки записываются при прогоне (см. Версии и паспорт результата).

14.5Политика допуска ≤5 %стабильно

Допуск сверки с эталоном единый: отклонение не более 5 %. Отклонение считается относительно эталонного значения:

\varepsilon = 100\,\frac{\lvert v_{\text{calc}} - v_{\text{ref}}\rvert}{\lvert v_{\text{ref}}\rvert}\ \%

где v_{\text{calc}} — результат WebCAE, v_{\text{ref}} — эталон. У кейсов с несколькими величинами в карточке приведены отклонения по каждой, а в таблице стоит одно число на кейс.

Правило жёсткое: допуск не ослабляют ради прохождения кейса. Отклонение выше 5 % считается дефектом и устраняется в расчёте, а не в критерии. Если кейс не удаётся довести, его не закрывают широким допуском, а публикуют как «В разработке» или откладывают с причиной.

Распределение отклонений по 211 выполненным кейсам:

ПоказательЗначение
Отклонение не выше 1 %165 кейсов (78 %)
Отклонение не выше 2 %190 кейсов (90 %)
Отклонение не выше 5 %211 кейсов (100 %)
Среднее отклонение0.59 %
Медиана0.05 %
Наибольшее4.88 % (NAFEMS LE11)

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

Ограничения. Единый допуск 5 % не подходит для всех целей: для сертификационного расчёта вам может потребоваться более жёсткий критерий и своя проверка сходимости по сетке (см. Исследование сходимости по сетке). Допуск проверяется по значимой величине кейса (прогиб, напряжение, частота), а не по всему полю.
Проверка. Допуск зашит в запись каждого кейса (все 213 записей несут 5 %), прогон сверяется автоматически, кейс с отклонением больше допуска не публикуется как пройденный.

14.6Автоматические регрессионные проверкибета

Качество держится слоями проверок, которые запускаются при разработке. Порядки величин на конец октября 2026:

  • модульные тесты — порядка пяти тысяч проверок в сотнях файлов: формулы, сборка матриц, разбор файлов, команды, интерфейс;
  • типовая проверка в двух проходах, отдельно для продукта и для тестов: ловит ошибки, которые тестовый прогон пропускает, потому что среда исполнения тестов не проверяет типы;
  • сквозные скриптовые наборы — около восьмидесяти файлов, которые прогоняют цепочку от геометрии до результата;
  • корпус сеток — 17 задач из реальных STEP-файлов, мешер нативный; проверяется результат, качество сетки и связность;
  • набор DSL-кейсов — 74 случая, 115 числовых проверок с допусками, нативный мешер;
  • тесты нативной части приложения — порядка двухсот пятидесяти;
  • нативные проверки физики ядра — около девяноста: комплексные частотные отклики, предписанные нелинейные траектории, восстановление напряжений в оболочках;
  • кейсы верификации — те самые 213, с исполняемыми скриптами.

Новый тест принимается только после того, как доказана его способность краснеть: в продуктовый код возвращают регрессию, тест обязан упасть, потом правку откатывают. Это защита от «зелёных пустышек» — тестов, которые ничего не проверяют. Отдельное правило касается числа тестов: молчание гейта без числа исполненных тестов не считается результатом, потому что набор мог перестать собираться.

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

14.7GPU и облачные режимыэксперимент

Расчёт всегда идёт на процессоре, локально. Видеокарта и удалённый сервер в расчёте не участвуют.

В коде есть прототипы: решатель CG на WebGPU, матрично-свободный вариант для Tet10 и Hex20 и маршрутизатор расчёта между браузером, локальным модулем и удалённым сервером. Они покрыты собственными тестами, но расчёт продукта их не вызывает, серверной части в продукте нет. В панели расчёта и в «Настройки → Вычисления» есть соответствующие переключатели («WebGPU-ускорение», «Matrix-Free P2 GPU», «Hybrid Cloud RPC»): сейчас они сохраняются в проекте и расчёт не меняют. Подробнее: Прототипы и нереализованное.

Ограничения. Опираться на GPU и облачный режим при планировании нельзя. Все цифры производительности в этом разделе — процессорные. Дата и состав будущего подключения не обещаются.
Проверка. Проверки на уровне модулей есть, но в расчёт они не включены и не верифицированы кейсами.

14.8Версии и паспорт результатастабильно

Нумерация единая для приложения, установщиков, сайта и карточек верификации: Semantic Versioning MAJOR.MINOR.PATCH, тег выпуска vX.Y.Z. Текущая версия — 0.2.1. Правка исправления увеличивает последнюю цифру; новая возможность или новая физика — среднюю; пока старшая цифра равна нулю, несовместимые изменения тоже уходят в среднюю. Плановые версии на странице документации помечены «план» и без дат.

Где посмотреть версию:

  • в программе: значок версии в верхней и нижней панелях, окно «О программе», «Настройки → Обновления»; клик по номеру открывает историю изменений, сгруппированную по выпускам;
  • из сценариев: свойство cae.version и ответ cae_get_state в MCP возвращают строку вида WebCAE 0.2.1;
  • в карточках верификации: поле «Версия решателя».

Паспорт прогона в карточке записывается как WebCAE <version> · <short commit>. Метка +dirty после коммита означает, что в отслеживаемых файлах на момент прогона были незафиксированные правки: такое число воспроизводится точно только вместе с этими правками. Карточки, записанные до введения единой нумерации, не переписываются, потому что их числа получены другими сборками. Они показывают «до введения нумерации (до 0.1.1)» либо «версия не записана». Из 211 выполненных кейсов паспорт с номером версии сейчас у 14, «до введения нумерации» у 28, «версия не записана» у 169. Пересъёмка старых карточек с записью версии не завершена.

Совместимость файлов. Проект, сохранённый старой версией, открывается новой. Проект более новой схемы старая версия открывать отказывается, а не читает с потерей данных. Если после обновления числа сохранённого результата могли измениться, программа выдаёт предупреждение «результаты могли устареть» (см. Воспроизводимость результатов).

Ограничения. Политики долгосрочной поддержки прежних версий (бэкпорта исправлений) публично не объявлено: исправления выходят в новых выпусках. Для каждого отчёта фиксируйте номер версии и платформу, на которой сделан расчёт.
Проверка. Совпадение номера версии во всех файлах выпуска, формат паспорта и порядок записи проверяются автоматическими тестами.

15Глоссарий и литература

↑ К оглавлению

15.1Глоссарий

ТерминЗначение
Степень свободы (DOF)Неизвестная дискретной задачи: перемещение или поворот узла, температура узла. Размер задачи обычно указывается числом степеней свободы.
Матрица жёсткости \mathbf{K}Связывает узловые перемещения и узловые силы в линейной задаче: \mathbf{K}\mathbf{u}=\mathbf{f}. Симметрична; после закрепления — положительно определена. См. Решатели.
Касательная матрица \mathbf{K}_TПроизводная невязки по перемещениям в нелинейной задаче; сумма материальной и геометрической частей. См. Нелинейные расчёты.
Геометрическая жёсткость \mathbf{K}_G (\mathbf{K}_\sigma)Вклад начальных напряжений в жёсткость; основа расчёта устойчивости и модального анализа с преднапряжением. См. Линейные виды анализа.
НевязкаРазность внешних и внутренних сил \mathbf{r}=\mathbf{f}_{ext}-\mathbf{f}_{int}; её норма — основной критерий сходимости.
Точки ГауссаТочки численного интегрирования по элементу; в них вычисляются деформации и напряжения. См. Библиотека элементов.
Запирание (locking)Искусственное завышение жёсткости элемента: сдвиговое у тонких оболочек и балок, объёмное у почти несжимаемых материалов.
MITCСмешанная интерполяция тензорных компонент — способ устранить сдвиговое запирание оболочек (Дворкин–Бате).
P1 / P2Линейные и квадратичные функции формы; Tet4 и Tet10 соответственно.
RBE2Жёсткая связь: ведомые узлы движутся вместе с ведущим как одно тело. См. Граничные условия.
MPC / уравнение связиЛинейное соотношение между степенями свободы, исключаемое из системы точно.
ШтрафПриближённое наложение ограничения через пружину большой жёсткости; точность зависит от её величины.
Длина дугиМетод продолжения по параметру, позволяющий пройти предельные точки кривой «нагрузка — перемещение». См. Метод длины дуги.
Радиальный возвратАлгоритм интегрирования упругопластического состояния в точке: упругий пробный шаг и проекция на поверхность текучести. См. Модели материалов.
SICNМера качества тетраэдра через нормированный якобиан; значение \le 0 означает вывернутый элемент. Определение, используемое в продукте, и пороги — в разделе Сетки.
ZZ / SPRОценка ошибки дискретизации Зенкевича–Чжу по восстановленному полю напряжений.
Экстраполяция РичардсонаОценка предела величины при измельчении сетки по результатам на трёх сетках.
Мизес, ТрескаЭквивалентные напряжения для критериев текучести; формулы — в Постпроцессинге.
SCLЛиния классификации напряжений по ASME VIII-2: мембранная, изгибная и пиковая составляющие.
HHT-α, НьюмаркНеявные схемы интегрирования уравнений движения по времени. См. Неявная динамика.
Центральные разностиЯвная схема интегрирования; устойчива при шаге меньше критического. См. Явная динамика.
AMGАлгебраический многосеточный предобуславливатель для итерационного решения больших систем. См. Итерационный решатель.
WebAssembly (WASM)Формат исполняемого кода для браузера; в нём работает браузерная версия расчётного ядра.

15.2Литература

Учебники и монографии, на которые опираются постановки справочника:

  1. Bathe K.-J. Finite Element Procedures. 2nd ed. Watertown: K.-J. Bathe, 2014.
  2. Zienkiewicz O.C., Taylor R.L., Zhu J.Z. The Finite Element Method: Its Basis and Fundamentals. 7th ed. Butterworth-Heinemann, 2013.
  3. Hughes T.J.R. The Finite Element Method: Linear Static and Dynamic Finite Element Analysis. Dover, 2000.
  4. Belytschko T., Liu W.K., Moran B., Elkhodary K. Nonlinear Finite Elements for Continua and Structures. 2nd ed. Wiley, 2014.
  5. Simo J.C., Hughes T.J.R. Computational Inelasticity. Springer, 1998.
  6. Wriggers P. Computational Contact Mechanics. 2nd ed. Springer, 2006.
  7. Crisfield M.A. Non-linear Finite Element Analysis of Solids and Structures. Vol. 1–2. Wiley, 1991, 1997.
  8. Reddy J.N. Mechanics of Laminated Composite Plates and Shells. 2nd ed. CRC Press, 2004.
  9. Clough R.W., Penzien J. Dynamics of Structures. 3rd ed. Computers & Structures, 2003.
  10. Saad Y. Iterative Methods for Sparse Linear Systems. 2nd ed. SIAM, 2003.
  11. Davis T.A. Direct Methods for Sparse Linear Systems. SIAM, 2006.
  12. Тимошенко С.П., Гудьер Дж. Теория упругости. М.: Наука, 1979.
  13. Лехницкий С.Г. Теория упругости анизотропного тела. М.: Наука, 1977.

Статьи по отдельным методам:

  1. Dvorkin E.N., Bathe K.-J. A continuum mechanics based four-node shell element for general nonlinear analysis. Engineering Computations, 1984, 1(1).
  2. Batoz J.-L., Bathe K.-J., Ho L.-W. A study of three-node triangular plate bending elements. Int. J. Numer. Meth. Eng., 1980, 15.
  3. Hughes T.J.R., Brezzi F. On drilling degrees of freedom. Comput. Methods Appl. Mech. Eng., 1989, 72.
  4. Battini J.-M., Pacoste C. Co-rotational beam elements with warping effects in instability problems. Comput. Methods Appl. Mech. Eng., 2002, 191.
  5. Felippa C.A., Haugen B. A unified formulation of small-strain corotational finite elements. Comput. Methods Appl. Mech. Eng., 2005, 194.
  6. Zienkiewicz O.C., Zhu J.Z. The superconvergent patch recovery and a posteriori error estimates. Int. J. Numer. Meth. Eng., 1992, 33.
  7. Dörfler W. A convergent adaptive algorithm for Poisson's equation. SIAM J. Numer. Anal., 1996, 33.
  8. Celik I.B. et al. Procedure for estimation and reporting of uncertainty due to discretization in CFD applications. J. Fluids Eng., 2008, 130.
  9. Popp A., Gee M.W., Wall W.A. A finite deformation mortar contact formulation using a primal–dual active set strategy. Int. J. Numer. Meth. Eng., 2009, 79.
  10. Wriggers P., Zavarise G. On contact between three-dimensional beams undergoing large deflections. Commun. Numer. Meth. Eng., 1997, 13.
  11. Camanho P.P., Dávila C.G. Mixed-mode decohesion finite elements for the simulation of delamination in composite materials. NASA/TM-2002-211737, 2002.
  12. Benzeggagh M.L., Kenane M. Measurement of mixed-mode delamination fracture toughness. Compos. Sci. Technol., 1996, 56.
  13. Cooper M.G., Mikic B.B., Yovanovich M.M. Thermal contact conductance. Int. J. Heat Mass Transfer, 1969, 12.
  14. Craig R.R., Bampton M.C.C. Coupling of substructures for dynamic analyses. AIAA J., 1968, 6(7).
  15. Der Kiureghian A. A response spectrum method for random vibration analysis of MDF systems. Earthquake Eng. Struct. Dyn., 1981, 9.
  16. Miles J.W. On structural fatigue under random loading. J. Aeronaut. Sci., 1954, 21.
  17. Hinton E., Rock T., Zienkiewicz O.C. A note on mass lumping and related processes in the finite element method. Earthquake Eng. Struct. Dyn., 1976, 4.
  18. Knyazev A.V. Toward the optimal preconditioned eigensolver: LOBPCG. SIAM J. Sci. Comput., 2001, 23.
  19. Vaněk P., Mandel J., Brezina M. Algebraic multigrid by smoothed aggregation for second and fourth order elliptic problems. Computing, 1996, 56.
  20. Johnen A., Remacle J.-F., Geuzaine C. Geometrical validity of curvilinear finite elements. J. Comput. Phys., 2013, 233.
  21. Economon T.D. et al. SU2: An open-source suite for multiphysics simulation and design. AIAA J., 2016, 54(3).

Стандарты и наборы эталонных задач:

  1. NAFEMS. The Standard NAFEMS Benchmarks. Rev. 3, 1990; Selected Benchmarks for Natural Frequency Analysis, 1987.
  2. MacNeal R.H., Harder R.L. A proposed standard set of problems to test finite element accuracy. Finite Elements in Analysis and Design, 1985, 1.
  3. ASME Boiler and Pressure Vessel Code, Section VIII, Division 2, Part 5.
  4. ASTM E1049-85. Standard Practices for Cycle Counting in Fatigue Analysis.
  5. VDI 2230 Blatt 1. Systematische Berechnung hochbeanspruchter Schraubenverbindungen.

15.3Открытые компоненты

Расчётное ядро и подготовка модели используют открытые библиотеки:

КомпонентНазначение
MFEMКонечно-элементная инфраструктура: пространства, сборка, часть решателей
EigenПлотная и разреженная линейная алгебра, прямые разложения
AMGCLАлгебраический многосеточный предобуславливатель (десктоп)
Apple AccelerateРазреженные прямые разложения (десктоп, macOS)
NetgenПостроение тетраэдральных сеток
Open CASCADE TechnologyГеометрическое ядро: импорт, булевы операции, топология
SU2Расчёт течений методом конечных объёмов

Лицензии компонентов перечислены на странице Open source.

Мы используем обязательные cookie для работы сайта и аналитические — с вашего согласия. Политика конфиденциальности