Улучшение метода сопряженных градиентов? - PullRequest
0 голосов
/ 11 декабря 2018

Привет всем, эту проблему немного сложно описать в деталях, но я предоставлю как можно больше подробностей, просто спросите, нужна ли вам дополнительная информация.

В проекте, в котором я участвую, мне пришлосьРабота над алгоритмом, который связывает 2 явления: механическая задача (решаемая методом конечных элементов в 3D) и 0D гемодинамическая задача.Способ решения каждой проблемы не так уж важен, потому что моя проблема лежит в другом месте.

Следующая логика может облегчить понимание

Алгоритм логограммы

Используется процедура, подробно описанная в следующем отчете

В начале каждого временного шага n каждая первая оценка давления основывается на Адамсе четвертого порядка.Явная схема Башфорта;он использует предыдущие давления для экстраполяции и оценки нового начального давления (как объяснено в отчете).

Затем на основе значения, возвращаемого каждой проблемой (объем здесь), новое давление вычисляется с помощью сопряженногокак градиентный метод (см. стр. 11 отчета, уравнение 2.3,2.4,2.5, я могу написать здесь уравнение в TeX, если кто-то объяснит мне, как это сделать). Затем оно используется как новый вход для каждой задачи и так далее до сходимости.достигнуто.

Пока все хорошо, с небольшими «эмпирическими» модификациями он работал просто отлично, чтобы улучшить скорость сходимости.

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

Есть ли у вас какие-либо предложения /Идеи?

Заранее спасибо.

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

Что касается моих улучшений, то они не чистые, но работают до некоторой степени, чтобы предотвратить бесконечный цикл.Я видел, что иногда сопряженный градиент довольно близок к решению, но он не может его достичь.Поэтому моя идея состояла в том, чтобы каждый p (определяемый пользователем) шаг делить на 2 C в уравнении (2.4) в отчете.Поступая таким образом, эмпирически, это работает для моих тестов.

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

...