Разобрался, сделал суммирование по каждой строке СЛАУ и поместил сумму в диагональный элемент. Подход обоснован с физической точки зрения для матриц масс, когда в интеграле стоят только произведения базисных функций (без производных). Для всех остальных случаев такой подход не применим. Получается, что мы укрупняем массу элемента и помещаем ее в конкретный узел. Нет разницы, как делать такое суммирование - можно собрать глобальную матрицу и потом просуммировать, можно сразу в локальной суммировать, а потом размещать в глобальной. Если, конечно, необходимо экономить оперативную память, то лучше суммирование делать в локальной матрице масс.
Провел тест на движении уединенной волны по ровному дну, когда СЛАУ решается методом сопряженных градиентов и при помощи диагонализации. Решения немного отличаются, но в целом законы сохранения выполняются также. Зенкевич говорит, что диагонализация приводит к некоторому сглаживанию, в результате чего решение стабилизируется. Пока как это оценить - не знаю.
|