k_add_nz2_iccg

    ICCG法形式を用いて格納された対称行列情報中の,非零要素 \(a_{ij}\) の非零要素番号を求めるサブルーチン. もし,対称行列情報中に非零要素 \(a_{ij}\) が含まれていない場合は,対称行列情報を追加する. 但し,非零要素の値を格納した配列 val には変更を加えない.
    推奨される応用例:省メモリ版EFG,X−EFG.
     
     
  • サブルーチン名: k_add_nz2_iccg

  •  
  • 呼び出し方:call k_add_nz2_iccg(i, j, m, nzdim, iu, nzu, row_ptr, n_zero, k_zero, icode)

  •  
  • 引 数:
  • 引数
    意 味
    入出力の区分
    備 考
    i, j 非零要素 \(a_{ij}\) の行番号と列番号
    入力
    整数型
    m 行列 \(A=(a_{ij})\) の寸法
    入力
    整数型
    nzdim 非零要素数の見積値.配列iu,valの整合寸法.
    入力
    整数型
    iu(nzdim) iu(k)は第 \(k\) 番目の非零要素の列番号を表す.
    入出力
    整数型
    nzu(m) nzu(i)は行列 \(A\) の狭義上三角部分中の第 \(i\) 行に含まれる非零要素の数.
    入出力
    整数型
    row_ptr(m+1) row_ptr(i)は第 \(i\) 行目にある最初の非零要素の非零要素番号を表す.但し,row_ptr(m+1)=n_zero+1 でなければならない.
    入出力
    整数型
    n_zero 行列 \(A\) の狭義上三角部分にある非零要素数
    入出力
    整数型
    k_zero 非零要素 \(a_{ij}\) の非零要素番号
    出力
    整数型
    icode 非零要素を追加した場合には,icode=1が返され,それ以外の場合は,icode=0が返される.
    出力
    整数型

  • 注 意:
    1. 非零要素の値を格納した配列 val に変更を加える場合は,当サブルーチンを呼び出した直後に,サブルーチンk_mod_val_iccgを呼び出せば良い.
    2. 本ルーチンを最初に呼び出す直前には,iu=0, 0, ..., 0; nzu=0, 0, ..., 0; au=0, 0, ..., 0; row_prt=1, 1, ..., 1; n_zero=0と初期化しておく必要がある.
    3. X-EFG法やEFG法では,バックグラウンド・セルを用いた数値積分を実行している.それ故,本ルーチンの実行時間は殆ど無視できる. これに対して,行列要素が解析的に計算できるFEMでは,本ルーチンの実行時間は他の計算時間と比べて無視できない.このような場合,本ルーチンは使うべきではない.