Цитата:
Пусть экономное храненение матрицы (симметрия+выкинуть нулевые элементы) позволит в 10 раз сократить нам требование памяти.
Не совсем так. Матрица жесткости получается ОЧЕНЬ сильно разреженной.
Количество ненулевых элементов в строке матрицы можно определить априори по сетке конечных элементов. Если узел N1 "соединяется" с узлом N2 посредством некоторого конечныого элемента, то в матрице жесткости элемент (N1, N2) будет ненулевым.
В обычных треугольных сетках один узел может "соединяться" с 4-8 соседними узлами (если сетка качественная и практически нет элементов с очень малыми узлами).
В четырехугольных сетках - примерно тоже самое.
Так что в итоге получаем, что в матрице жесткости в не зависимости от количества конечных элементов в строке имеется всего 4-8 (для "кривых" сеток это чуть больше, но все равно малое значение) ненулевых элементов. Во всей матрице ненулевых элементов будет ЧИСЛО СТРОК*(4-8). В Вашем случае - 65000*3*(4-8). С учетом симметрии - получаем в два раза меньше. Здесь еще важный момент - в чем хранить числа. Если используется формат double - то это 8 байт на число, float - всего 4 байта. При решении гармонических задач - необходимы комплексные числа, а это два числа на одну степень свободы.
При использовании спарс-матриц экономия получается существенной. Так, например, в задачах расчета электрических полей (1 степень свободы) с 200,000 узлов (примерно 400,000 треугольных элементов) у меня требуется метров 400-500 для формата double precision.
Добавлено спустя 13 минут 48 секунд:worm2 писал(а):
Во всяком случае, не больше, чем 3*65000*N, где N --- максимальное число конечных элементов, которые могут сходиться в одном узле.
Это если элементы первого порядка, а если высших - тут нужно также учитывать промежуточные узлы. В любом случае - число ненулевых элементов в матрице жесткости соответствует числу узлов, с которыми "соединяется" некоторый
i-узел посредством конечных элементов:))