Я пытаюсь сохранить матрицу жесткости в FORTRAN в разреженном формате для сохранения памяти, т. Е. Я использую три вектора ненулевых элементов (irows, icols, A). После определения размера этих массивов следующим шагом будет вставка значений в них. Поэтому я использую точки gauss, т. Е. Для каждой точки gauss я собираюсь найти локальную матрицу жесткости, а затем вставить эту локальную матрицу жесткости в Global (irows, icols, A).Эффективно поиск массивов в FORTRAN
Основная проблема с этой вставкой заключается в том, что каждый раз мы должны проверять, существует ли новое значение в глобальном массиве или нет, поэтому, если значение существует, добавьте новое в старое, но если не добавить к концу , то есть мы должны искать весь массив, чтобы найти, что либо значение существует, либо нет. Если размер этих массивов (irows, icols, A) является большим, поэтому этот поиск вычисляется очень дорого.
Может ли кто-нибудь предложить лучший способ вставки локальной матрицы жесткости для каждой точки гаусс глобальной матрицы жесткости.
Итак, что это? FORTRAN 90 или FORTRAN 77? – Ryan
Я использую FORTRAN 90, но я думаю, что даже если вы можете предложить что-то в FORTRAN 77, это сработает. –
Возможно, вам стоит взглянуть на книгу Тима Дэвиса о [CSparse] (http://www.ec-securehost.com/SIAM/FA02.html), которая объясняет, как реализованы разреженные массивы. –