После применения метода конечных элементов задача сводится к системе линейных алгебраических уравнений
(3.1)
Матрица в такой системе обычно большая, но разреженная: почти все её элементы равны нулю. Это естественно для МКЭ — каждый симплекс связан лишь с небольшим числом соседних узлов, поэтому одна строка глобальной матрицы содержит ненулевые элементы только в позициях локальной окрестности узла. Хранить такую матрицу как плотную таблицу расточительно: большая часть памяти уходит на нули, а умножение матрицы на вектор выполняет много лишних операций.
В реализации МКЭ удобно использовать три представления одной и той же разреженной матрицы.
- COO (coordinate list) хранит матрицу как список троек , где — номер строки, — номер столбца, — значение элемента. Формат удобен при сборке глобальной матрицы: локальные матрицы симплексов просто добавляются в общий список, а дублирующиеся индексы суммируются.
- CSR (compressed sparse row) хранит матрицу построчно в трёх массивах: значений ненулевых элементов, номеров их столбцов и массива смещений начала каждой строки. Формат неудобен для добавления новых элементов, зато оптимален для операции , которая выполняется на каждой итерации.
- CSC (compressed sparse column) — столбцовый аналог CSR. Для решения системы он не нужен, но полезен при умножении двух разреженных матриц, когда требуется быстрый доступ к элементам по столбцам правой матрицы.
Все три формата для одной и той же матрицы показаны на рисунке (3.1).
Далее поговорим о методе решения.