Многофронтальный решатель

Это прямой метод решения систем линейных алгебраических уравнений. В программном комплексе SCAD этот метод реализует идею метода суперэлементов с автоматическим разбиением исходной расчетной модели на подконструкции без вмешательства пользователя и представлен в публикациях [1-5] как блочный метод подконструкций BSMFM – block substructure multifrontal method. Разложение разреженной матрицы большой размерности сводится к последовательности разложений плотных матриц относительно небольшой размерности (фронтальных матриц), что позволяет эффективно использовать практически все методы достижения высокой производительности, доступные на многоядерных настольных компьютерах. Разложенная матрица хранится в плотных блоках. Если размерность задачи превышает возможности оперативной памяти, блоки разложенной матрицы помещаются в файл на диске.

Точность разложения матрицы определяется параметром εt, позволяющим при факторизации идентифицировать вырожденность матрицы или плохую обусловленность (по умолчанию принимается 10-12).

Перед разложением собирается диагональ матрицы жесткости K. Если на каком-либо шаге разложения фронтальной матрицы окажется, что |Ljj/Kjj| < εk, где Ljj – диагональный элемент факторизованной матрицы, то матрица жесткости или особенная, или плохо обусловленная. Для того, чтобы можно было продолжить разложение матрицы, элементу Ljj присваивается большая величина (1050). В конце разложения выдается список всех степеней свободы, в которых это произошло. Параметр εt допустимо уменьшать до 10-14. Однако если при этом снова появляются сообщения о геометрической изменяемости, то расчет следует прервать. Скорее всего данная расчетная модель геометрически изменяема. Следует найти причину геометрической изменяемости и устранить ее (для этого можно использовать блочный метод Ланцоша в режиме верификации расчетной модели).

Кроме того, может оказаться, что расчетная модель приводит к плохо обусловленной системе линейных алгебраических уравнений. Такие системы обладают высокой чувствительностью к малым возмущениям правой части и накапливают большие ошибки при разложении матрицы. Поэтому необходимо выяснить причину плохой обусловленности и ее устранить. Понижать параметр εt далее (например, до 10-50) – это все равно что игнорировать показания термометра при гриппе или заклепывать предохранительный клапан в котле.

Использование оперативной памяти – параметр, регулирующий максимальный размер оперативной памяти для решателя. Если вы хотите решить задачу как можно быстрее, задайте 80 – 90%. Тогда решатель не будет использовать медленную дисковую память до тех пор, пока не исчерпает всю свободную оперативную память. Если свободной оперативной памяти достаточно для решения данной задачи, то разложение матрицы будет выполнено максимально быстро. Если же недостаточно, то решатель все равно будет использовать дисковую память. Если параметр «использование оперативной памяти» превышает объем оперативной памяти, требуемый для разложения матрицы без использования диска, решатель использует ровно столько оперативной памяти, сколько требуется, а не столько, сколько заказано. Если же Вы хотите одновременно решать несколько задач на одном компьютере, то тогда для каждой задачи параметр «использование оперативной памяти» должен быть задан так, чтобы все решаемые одновременно задачи не превысили объема свободной оперативной памяти. Задавать этот параметр более чем 90% нужно осторожно, так как при некоторой конфигурации компьютера можно вызвать интенсивный обмен со страничным файлом операционной системы, значительно замедлить процесс расчета и получить временное блокирование всего компьютера. Далее решение задачи будет продолжено.

Практика вычислений показывает, что контроль при разложении матрицы, основанный на анализе |Ljj/Kjj| < εt, срабатывает не во всех случаях, поскольку при задании параметра εt мы не имеем никакой информации об обусловленности матрицы K. При этом возможно как пропустить геометрическую изменяемость при слишком малом значении εt, так и поднять «ложную тревогу» при слишком большом. Поэтому рекомендуется использовать опцию «полный контроль при решении», при задании которой для каждого загружения выполняется анализ величин εi = ||biKxi||2/||bi||2, i ∈ [1, Nr], где i – номер загружения, Nr – количество загружений, bi – вектор нагрузки, xi – вектор решения, ||…||2 – эвклидова норма вектора, εi – мера ошибки. Для хорошо обусловленных систем уравнений εi < 10-8. Если εi > 10-4, то мы считаем решение неприемлемым вследствие слишком большой ошибки. Значение 10-8 < εi < 10-4 указывает на то, что система уравнений является «плохо обусловленной» – расчетная модель еще является корректной, но небольшие модификации могут привести ее к некорректной. Вычисленные значения εi помещаются в  файл с расширением p04, находящийся в каталоге SWORK. Вычисление εi выполняется только для линейного статического анализа и блокируется при анализе частот и форм собственных колебаний, устойчивости и нелинейном анализе. Если опция «полный контроль при решении» отключена, то εi не вычисляется.

Задачей упорядочения матрицы является уменьшение количества ненулевых элементов в факторизованной матрице жесткости, что позволяет в десятки раз ускорить разложение матрицы и в несколько раз – прямые и обратные подстановки [4]. К сожалению, какой из методов упорядочения является оптимальным, заранее неизвестно. Поэтому, если данная задача решается впервые, то целесообразно предоставить выбор оптимального метода упорядочения решателю. Для этого надо в параметрах расчета выбрать «Автоматический метод выбора оптимального упорядочения». Если топология расчетной модели не  менялась и выполняется повторный расчет, а метод упорядочения для задачи работает долго, можно задать метод упорядочения, который был выбран программой в предыдущем расчете в режиме автоматического выбора. Тогда решатель возьмет назначенный метод, и не будет тратить время на поиск оптимального. Если же этап оптимизации матрицы жесткости выполняется быстро, то при повторных расчетах не стоит отказываться от автоматического выбора метода упорядочения.