Разница между неявным и явным анализом

11/2020

Разница между неявным и явным анализом

 Представьте: вы выступаете с докладом о своей кандидатской диссертации по вопросу устойчивости на одном из семинаров. Все идет гладко, и, наконец, настает время для вопросов! И совершенно неожиданно кто-то спрашивает: “В чем разница между неявным и явным методами?”! А поскольку вы исследуете статическую устойчивость ... вы никогда в жизни не слышали эти понятия! Да… этим меня не удивишь! Теперь я стал немного умнее, поэтому давайте подробнее разберем различия между неявным и явным анализом.

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

Звучит довольно просто, правда? Если только вы не начнете думать о таких вещах, как “какой из методов мне следует использовать” или “насколько маленьким должно быть явное приращение по времени” и тому подобное. Все в порядке, я помогу!

Давайте приступим!

Динамика в лучшем своем проявлении – неявная/явная!

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

Коротко о динамическом анализе

Динамический анализ решает задачи, касающиеся действия инерционных сил. Они возникают, когда в вашей модели явления быстро изменяются (быстро прикладываемые нагрузки, удары и т.д.). Инженеры обычно называют это “нелинейной динамикой”.

Следует отметить, что зачастую инженеры также называют “динамическим” и другой тип анализа. Это могут быть, как модальный анализ или анализ силового отклика, которые связаны с вибрациями. Иногда их называют “процессами линейной динамики”, но обычно желательно удостовериться, что имеется в виду, когда используют такое выражение. Хотя задачи “линейной динамики” действительно интересны, здесь я их не буду рассматривать.

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

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

Как работает динамический анализ?

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

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

В нелинейном динамическом анализе время выполняет две функции. Во-первых, оно позволяет вам указать решателю, когда и сколько нагрузки следует приложить. Вам просто нужно снабдить каждую загрузку графиком зависимости от времени. Во-вторых,… время – это время! Оно сообщает решателю, насколько быстро происходят события!

Представьте, что вам требуется следующая последовательность нагружения:

В статике это будет анализ, состоящий из трех “шагов” (в NX Nastran они называются подслучаями, но я думаю, что Abaqus как раз использовал “шаг” в качестве названия, хотя не могу вспомнить это наверняка!). Идея проста: вы должны приложить 100 кН нагрузки на шаге 1, затем убрать 50 кН нагрузки на шаге 2 и убрать 50 кН на шаге 3. Не получится включить в анализ горизонтальный участок нагрузки после шага 2, и он не будет учитываться. Логика проста: нет изменений нагрузки = в статике ничего не меняется!

Приращения нагрузки в статике

Если задача будет сильно существенно нелинейной, нагрузка будет “увеличиваться”. В редких случаях можно приложить “полную нагрузку” в нелинейном анализе за один шаг! Обычно решатель будет прикладывать эквивалент 1 кН за каждое “приращение”. Это означает, что после 100 приращений будет приложена полная нагрузка для шага 1. Это позволяет решателю проще быстрее приблизиться к правильному ответу.

Как пользователь, вы можете определить, насколько большие приращения должен использовать решатель. Также существуют некоторые алгоритмы, которые позволяют изменять величину приращения нагрузки в процессе анализа. Разные решатели хотят, чтобы вы делали эти настройки по-разному. Обычно для этого в FEA программах используются множители нагрузки. Это означает, что вы можете запросить что-то вроде: “на каждом приращении прикладывать дополнительные 0.01 от всей нагрузки”.

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

Вы сразу же можете отметить несколько обстоятельств:

·              Нет шагов! Это связано с тем, что при динамическом анализе вы не наращиваете нагрузку. Вы увеличите время! А поскольку время идет “непрерывно” от нуля до заданного значения, вы можете увеличивать его “в течение одного шага”.

·              Время имеет существенное значение! В отношение показателей нагрузки представленные выше графики совпадают. Но это не одна и та же динамика! На правом графике нагрузка прикладывается в 1000 раз быстрее! Это не то, что можно просто проигнорировать при динамическом анализе!

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

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

Неявный метод против явного метода – когда время действительно имеет значение!

Вы только что узнали, что для того, чтобы произвести расчет нелинейной динамической задачи вам необходимо поступательно увеличивать “время анализа”. Как я уже отмечал, это можно сделать двумя способами.

Начну с неявного метода. Я думаю, этот метод проще для понимания, поскольку он работает примерно так же, как и поступательное увеличение нагрузки в нелинейном статическом анализе!

Как работает неявный анализ:

Во-первых, неявное решение кажется более “базовым”. В принципе оно и работает именно так, как вы думаете!

·              Во-первых, на каждом временном (шаге) в модели устанавливается

“общее равновесие”. Это означает, что каждое приращение должно сходиться (это происходит за счет выполнения итераций).

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

·              Преимущества: поскольку общее равновесие проверяется на каждом временном шаге, и эти приращения могут быть БОЛЬШИМИ!

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

Если вы хорошо знакомы с нелинейным статическим анализом, вы будете чувствовать себя “как дома” с неявным решателем. Как пользователь, вы обычно можете сказать, насколько большие приращения времени вы хотите иметь. Это является громадным преимуществом… поскольку это легко не заметить. С учетом того, что явный решатель такой возможности не предлагает!

Давайте теперь посмотрим на явный метод задания приращения!

Как работает явный анализ:

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

·              Вычисление всех внутренних переменных конечных элементов для заданного приращения и переход к следующему!

·              Преимущества: каждое приращение рассчитывается очень (чрезвычайно) быстро!

·              Недостатки: чтобы это сработало, временной шаг должен быть ЧРЕЗВЫЧАЙНО малым. В противном случае невозможно поддерживать равновесие, которое, предполагается “просто существующим”. Чтобы добиться этого, у пользователя нет прямого контроля над тем, насколько большими явный решатель будет делать приращения. Решатель сам определяет, насколько малым должен быть временной шаг, чтобы его было достаточно. И эти принимаемые временные интервалы СУПЕР МАЛЕНЬКИЕ! Вот почему задачи для явного метода должны длиться доли секунды! Если бы они длились секунды ... вам бы потребовались миллионы шагов!

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

Формально оба варианта должны давать одинаковый результат для всех случаев. В конце концов, вы можете проанализировать одну и ту же задачу с помощью обоих методов. Разумеется, ответ не может зависеть от метода решения задачи! Конечно, вы просто выберете один из подходов для решения предложенной задачи, так какой же? Давайте выясним!

Что для вас лучше: неявное или явное?

Мы уже установили, что вы можете использовать как неявные, так и явные решатели для решения однотипных задач. Единственное отличие заключается в подходе к приращению времени. Но это нетривиальный момент! Если бы разница была небольшая, никто бы не занимался выполнением обоих (типов расчета)! Итак, давайте посмотрим, какое влияние оказывает величина приращения времени!

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

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

·              Приращения по времени для явного метода вычисляются действительно быстро! По той простой причине, что они не вычисляются итерациями для общего равновесия ... но выбор временного шага – остается не за вами! Решатель просто принимает, что «приемлемый» шаг времени равен “X”, и работает с ним. Заметьте, что величина “X” легко может быть чем-то вроде 5e-7… Это супер-маленький шаг! Чтобы исследовать процесс, который длится в течение 1 с, вам потребуется 2 000 000 приращений!

·              Вот и все! Скорость вычислений – это как раз и есть разница между явным и неявным методами. Конечно, размер шага зависит в явном методе от вашей модели, а расчетное время зависит от вашего вычислительного оборудования. Однако существуют простые замечания, которые мы можем легко сделать:

Используйте неявный метод для “медленного анализа”!

Если процесс, который вы исследуете, протекает за несколько секунд ... нет смысла использовать явный решатель. Потребуется целая вечность на то, чтобы прорваться через миллионы временных интервалов, которые будут нужны для вычислений! Вместо этого установите “умеренный” временной шаг для неявного анализа (скажем, 100 равных временных интервалов для вашего расчета). Конечно, каждое из этих неявных приращений времени будет вычисляться намного дольше, чем одно явное приращение. Но не дольше, чем сотни тысяч таких приращений!

Используйте явный метод для “быстрого анализа”!

Это очевидно, правда? Если явление, которое вы исследуете, происходит за малую долю секунды, явный метод – ваш друг. При неявном анализе ваш шаг по времени был бы сверхмалым ... может быть, даже таким же маленьким, как приращение при явном анализе. В этом случае явный анализ будет выполняться НАМНОГО быстрее, поскольку он не требует выполнения итераций “общего равновесия”. При неявном анализе требуется выполнение этих итераций (вне зависимости от временного шага!).

Пограничные замечания!

Конечно, есть задачи, возникающие на стыке (например, удар со скоростью

 5 м/с). Обычно такую задачу можно решить обоими решателями, но это может быть муторно.

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

Каким образом явный метод предугадывает величину

временного шага?

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

Математическое объяснение потребует исследования наибольшей собственной частоты. Это связано с тем, что максимальный “вполне допустимый” временной шаг обратно пропорционален наибольшей собственной частоте. Такие вычисления, конечно, могут быть проведены. Результаты зависят от сетки на модели (от количества элементов и т.д.).

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

Максимальное приращение времени при явном анализе:

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

Как видите, компонента времени явного метода включает две составляющие:

·              Скорость упругой волны (иначе говоря скорость звука в вашем материале)! Это зависит только от материала в вашей модели (и, конечно, она разная для различных материалов!). Вам понадобятся модуль Юнга E, плотность материала и коэффициент Пуассона (в 2D и 3D задачах). Нетрудно найти таблицы, в которых указаны скорости упругих волн в различных материалах. Просто для справки, у стали она составляет около 5200 м/с (многие металлы имеют около 4500-5500 м/с).

·              Размер элемента (и его качество)! У вас есть скорость волны, но ее недостаточно! Чтобы знать время, которое необходимо волне для прохождения через элемент, вам нужно знать его “длину”. Хотя это очень просто для одномерных элементов (у них попросту есть длина), для 2D и 3D элементов это проблематично. Эта длина не является «всего лишь» самой короткой из кромок элемента, поскольку элементы могут иметь достаточно плохую геометрию. Существуют определенные действия, которые делает решатель, чтобы ее вычислить. В 2D это может быть площадь элемента, разделенная на максимальную длину кромки. В 3D это может означать, что объем элемента делится на наибольшую площадь боковой грани. Вот почему при явном анализе настолько важен не только размер элемента, но и его качество! Как бы то ни было… все, что вам нужно, – это один несчастный элемент, чтобы действительно сократить ваше расчетное время!

Я где-то читал, несмотря на то, что вышеприведенный процесс получения решения является “точным”, решатели зачастую используют “коэффициенты безопасности”. Если вы получаете временной шаг больший, чем “предел скорости” упругой волны, то возникнут математические ошибки. Поскольку применяются приблизительные вычисления, решатели часто уменьшают временной шаг “на всякий случай”. Обычно понижающий коэффициент составляет около 0,9, но, конечно, он может варьироваться от одного решателя к другому.

Масштабирование массы!

Напоследок я быстро хочу кое-что упомянуть.

Вы, скорее всего, заметили, что временной шаг в явном методе зависит только от сетки, модуля Юнга и плотности. Уменьшения модуля Юнга, конечно, может быть не достаточным, и для расчета деталей вам часто требуется малый размер сетки. Но в задачах “слабой динамики” вы можете попытаться увеличить явный временной шаг, увеличив плотность материала (за счет увеличения плотности материала).

Это называется “масштабированием массы”. Пакеты FEA даже предлагают решения, в которых плотность увеличивается только в тех элементах, по которым принимается “решение” относительно времени. Это означает, что иногда только небольшие части вашей модели становятся тяжелее! В некоторых отдельных случаях анализа вы можете “выйти из трудного положения”, увеличив массу вашей модели. В таком случае для вас это может быть решением. Просто знайте, что при этом действительно меняется поведение вашей модели! Если имеют место большие ускорения, то лучше соблюдать осторожность!

Резюме

Хорошо! Вы достигли цели, спасибо за чтение! Давайте сделаем заключение, чтобы было легче запомнить!

·              Динамический анализ задействует время! Когда вы прикладываете нагрузки, они должны быть определены во временной функции. Зачастую это линейная зависимость. Но это не меняет того, что время в течение которого прикладываются нагрузки, играет значительную роль (особенно если это время мало!).

·              2 примера динамического анализа! Вы можете решать “настоящие” динамические задачи с помощью неявных и явных алгоритмов. Оба хороши, и ни один из них не “лучше”. Но я должен сказать, что явный решатель входит в состав меньшего количества FEA пакетов. Так как не в каждом FEA пакете он есть, явный решатель рассматривается как “более продвинутый” инструмент.

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

·              Явный решатель отлично подходит для процессов (скажем, быстрее

0,1 с). Здесь у вас нет возможности выбрать шаг времени – решатель установит его автоматически. И хотя обычно они очень малы, по крайней мере, они вычисляются намного быстрее, чем “неявные”. Явный решатель вычисляет, насколько большим должно быть приращение времени. Это зависит от скорости звука в вашем материале, минимального размера конечного элемента (и качества элемента!). В некоторых случаях вы можете изменить плотность (даже в автоматическом режиме только для “определяющих элементов”!), чтобы скорректировать это приращение времени. Такой способ работает, потому что скорость звука в вашем материале зависит от его плотности! Это называется “масштабированием массы”.