Я работаю над проектом, в котором у меня есть два связанных с adv-diff домена через соответствующие термины источника (один домен добавляет массу, другой вычитает массу). Для краткости я их моделирую в устойчивом состоянии. Уравнения - это ваше стандартное уравнение переноса адвекции-диффузии с исходным термином, похожим на это:
куда диффузный и адвективный поток для видов , а также является исходным термином для вида ,
Я смог написать решатель для моей проблемы, используя метод Ньютона-Рафсона, и полностью связал две области, используя матрицу блочной массы, то есть:
Семестр используется для определения матрицы Якоби и обновления как а также :
или
Чтобы ускорить процесс, я не вычисляю якобиан каждую итерацию - сейчас я играю с каждыми пятью итерациями, которые, кажется, работают достаточно хорошо и поддерживают устойчивое решение.
Проблема в том, что я собираюсь перейти к более крупной системе, в которой оба домена находятся в 2D / 2.5D, и вычисление матрицы Якоби приведет к быстрому истощению моих доступных компьютерных ресурсов. Я строю эту модель для использования в настройках оптимизации позже, поэтому я не могу сидеть за рулем на каждой итерации, настраивая коэффициент демпфирования и т. Д.
Правильно ли я искать в другом месте более надежный алгоритм для моей проблемы, или это так хорошо, как это получается? Я немного изучил квазилинеаризацию, но не уверен, насколько она применима к моей системе.
Могут ли я упустить какие-либо другие хитрые алгоритмы, которые могут решить систему нелинейных уравнений, не прибегая к перерасчету якобиана как обидного?
Ответы:
Я предполагаю, что ограничение в 2D и 3D хранит якобиан.
Один из вариантов - сохранить производные по времени и использовать явный «псевдо» шаг по времени для итерации до устойчивого состояния. Обычно число CFL, необходимое для диффузионных и реактивных систем, может быть слишком маленьким. Вы можете попробовать нелинейную многосетку (также называемую многосетью с полным хранилищем приближений) и локальный шаг по времени для ускорения сходимости.
Другой вариант - использовать полностью неявную схему, как вы делаете сейчас, но не хранить глобальный якобиан. Вы можете использовать не матричную неявную схему.
Теперь с надлежащим значениемε (обычно о 10- 7 для операций с плавающей запятой двойной точности) вы можете выполнить цикл Ньютона, не вычисляя и не сохраняя якобиан. Я точно знаю, что эта техника используется для решения некоторых нетривиальных случаев в вычислительной гидродинамике. Обратите внимание, однако, что количество оценок функцииF будет больше, чем в методе хранения матрицы, вместо того, чтобы требовать матрично-векторного произведения.
Еще одна вещь, на которую следует обратить внимание: если ваша система такова, что необходим мощный прекондиционер (т.е. Jacobi или block-Jacobi не хватит), вы можете попробовать использовать вышеупомянутый метод в качестве сглаживающего в многосеточной схеме. Если вы хотите попробовать прекондиционер Якоби с точечной или блок-схемой, вы можете вычислить и сохранить только диагональные элементы или диагональные блоки якобиана, что немного. Я также хотел бы упомянуть, что предварительный кондиционер Гаусса-Зейделя или SSOR можно реализовать без явного сохранения якобиана. В данной статье описывается реализация безматричной GMRES, предварительно обусловленной безматричной симметричной Гаусса-Зейделя, в контексте вычислительной гидродинамики.
источник
Исходя из моего опыта с уравнениями Навье-Стокса, можно очень хорошо обходиться без полностью неявных схем.
Если вам просто нужна быстрая числовая схема для решения эволюции времени, взгляните на IMEX (неявно-явные) схемы; см., например, эту статью Ашера, Руута, Неявно-Явные Спитери Методы Рунге-Кутты для зависящих от времени дифференциальных уравнений в частных производных .
Вы можете даже попытаться использовать явную схему интеграции времени высокого порядка с контролем размера шага (как в Matlab
ODE45
). Тем не менее, вы можете столкнуться с проблемами из-за жесткости вашей системы, которая исходит от диффузионной части. К счастью, диффузионная часть является линейной, так что ее можно трактовать неявно (такова идея схем IMEX).источник
Сначала я решил добавить только замечание, но места было недостаточно, поэтому я добавил краткое описание моего опыта в этой теме.
Во-первых, глядя на вашу записьFс о у р л е д Я не вижу связанную форму, я полагаю, что б1 а также б2 оба должны быть зависимы от с1 , я а также с2 ,я , Более того, еслиA1 а также A2 являются матричными представлениями приближений F1 а также F2 тогда они не должны зависеть только от ся , но также и о соседских ценностях, но это может быть только неправильное понимание вашей записи.
В качестве общего комментария я хотел бы добавить, что использование аналитического якобиана, по-видимому, является единственным способом получения квадратичной сходимости нелинейного итерационного решателя (т. Е. Решателя Ньютона-Рафсона в вашем случае). Вы наблюдали это в вашем случае? Это очень важно, потому что в противном случае в ваших приближениях может возникнуть недопонимание (линеаризация).
Во всех приложениях, в которых я принимал участие (некоторые из них включали крупномасштабные вычисления), у нас никогда не возникало проблем с затратами времени на сборку якобиана, самой трудоемкой проблемой всегда было применение линейного решателя. Аналитический якобиан (если есть) всегда использовался в приложениях, над которыми я работал, из-за квадратичной сходимости. В некоторых случаях такой нелинейный решатель создает матрицу, которая вызывает проблемы сходимости итеративного линейного решателя, поэтому мы попытались использовать более простую линеаризацию, чем аналитический якобиан, чтобы помочь линейному решателю. Такой компромисс между поведением нелинейного и линейного алгебраического решателя в зависимости от линеаризации нелинейной алгебраической системы всегда был хитрым, и я не мог дать общую рекомендацию.
Но вы правы, что недостаток (или свойство) аналитического якобиана для системы PDE состоит в том, что он создает связанную алгебраическую систему, поэтому, если вы каким-либо образом разъедините такую систему, например, решите отдельно аппроксимацию каждого PDE, скажем, посредством итеративного расщепления метод, то снова вы теряете квадратичную сходимость глобального решателя. Но тогда, по крайней мере, если вы решите отдельно каждую дискретизированную (развязанную) PDE, вы можете снова ускорить решение этой конкретной проблемы с помощью метода Ньютона-Рафсона.
источник