1

メモリを節約するために、剛性マトリックスをスパース形式で FORTRAN に格納しようとしています。つまり、非ゼロ要素 (irows、icols、A) の 3 つのベクトルを使用しています。これらの配列のサイズを確認したら、次のステップはそれらに値を挿入することです。したがって、ガウス ポイントを使用しています。つまり、ガウス ポイントごとにローカル剛性マトリックスを見つけて、このローカル剛性マトリックスをグローバル (irows、icols、A) マトリックスに挿入します。

この挿入の主な問題は、新しい値がグローバル配列に存在するかどうかを毎回確認する必要があるため、値が存在する場合は新しい値を古い値に追加し、存在しない場合は末尾に追加することです。つまり、配列全体を検索して、値が存在するかどうかを確認する必要があります。これらの配列 (irows、icols、A) のサイズが大きい場合、この検索は計算コストが非常に高くなります。

グローバル剛性マトリックスの各ガウスポイントにローカル剛性マトリックスを挿入するより良い方法を提案できる人はいますか。

4

2 に答える 2

2

事前にソートされたデータ構造を使用する場合は、それを検索するのが非常に効率的です。プライマリデータ構造または補助データ構造として。真ん中に別のエントリを挿入できるものが必要です。たとえば、バイナリ検索ツリー(http://en.wikipedia.org/wiki/Binary_search_tree)。

于 2012-05-29T02:34:10.917 に答える