230 likes | 642 Views
スカイライン法. 2013 年 9 月 20 日 後 保範. 有限要素法の線形計算. 有限要素法離散化. 対称疎行列. 非対称疎行列. 直接解法. 反復 解法. 直接解法. 反復 解法. 対称帯行列 スカイライン法 スパースソルバ. 非 対称帯行列 スパースソルバ. 対称スカイライン行列の形( × ). この部分が 非ゼロになる. この形は 不可能. 対称スカイライン行列の形(○). この影響は 行列内だけ. 計算可能. 対称スカイライン行列の持ち方. IDX[k]: k 列の先頭行番号. データの 並び順. k.
E N D
スカイライン法 2013年9月20日 後 保範
有限要素法の線形計算 有限要素法離散化 対称疎行列 非対称疎行列 直接解法 反復解法 直接解法 反復解法 対称帯行列 スカイライン法 スパースソルバ 非対称帯行列 スパースソルバ
対称スカイライン行列の形(×) この部分が 非ゼロになる この形は 不可能
対称スカイライン行列の形(○) この影響は 行列内だけ 計算可能
対称スカイライン行列の持ち方 IDX[k]:k列の先頭行番号 データの 並び順 k A[PT[k]] : Kの対角要素
対称スカイライン行列の消去計算 Aの位置: PT[k]-k IDX[k] 内積で更新 i 内積で更新 i k Aの位置: PT[k]
対称スカイライン消去1(全体) for (k=1; k<n; k++) { KP = PT[k] – k; //密A[0][k]に対応位置 for (i=IDX[k]; i<k; i++) { i列によるk列の消去計算 } k列の正規化計算 }
対称スカイライン消去2(消去) JS = Math.max(IDX[k], IDX[i]); IP = PT[i] – i; S = 0.0; for (j=JS; j<i; j++) { S += A[IP+j]*A[KP+j]; } A[KP+i] -= S;
対称スカイライン消去3(正規化) S = 0.0; for (i=IDX[k]; i<k; i++) { Val = A[KP+i] / A[PT[i]]; S += Val*A[KP+i]; A[KP+i] = Val; } A[PT[k]] -= S;
対称スカイライン前進代入 for (k=1; k<n; k++) { KP = PT[k] – k; S = 0.0; for (i=IDX[k]; i<k; i++) { S += A[KP+i]*B[i]; } } B[k] -= S; for (k=0; k<n; k++) { B[k] = B[k] / A[PT[k]; }
対称スカイライン後退代入 for (k=n-1; k>0; k--) { KP = PT[k] – k; for (i=IDX[k]; i<k; i++) { B[i] -= A[KP+i]*B[k]; } }
3x3ブロックスカイライン法 • 構造解析用のスカイライン法 • 構造解析は1節点が3自由度を持つ場合が多いことに着目した方法 • スカイラインに1要素を3x3の行列として、ポインターを持つ • 3自由度を持たない点は、ダミー自由度を挿入して、1節点3自由度にする • ポインタ処理に対し演算量が9倍になるため、高速化が期待される
スカイライン用番号変換 • RCM法 Reverse Cuthill-Mckee Algorithm • 目的 UTDU分解において生じる帯幅(スカイライン幅)の縮小 • 基本的な考え方 既にラベル付けされた頂点に頂点を優先的に番号付けしていく。最後に番号を逆順に。
スパースソルバ用番号変換 • 最小次数順位法 Minimum Degree Ordering Algorithm • 目的 UTDU分解において生じるfill-in最小化 • 基本的な考え方 結合接点の少ない順に番号を付ける