k_add_nz2_crs

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

  •  
  • 呼び出し方:call k_add_nz2_crs(i, j, m, nzdim, col_ind, row_ptr, n_zero, k_zero, icode)

  •  
  • 引 数:
  • 引数
    意 味
    入出力の区分
    備 考
    i, j 非零要素\(a_{ij}\)の行番号と列番号
    入力
    整数型
    m 行列\(A\)の行数
    入力
    整数型
    nzdim 非零要素数の見積値.配列col_ind,valの整合寸法.
    入力
    整数型
    col_ind(nzdim) col_ind(k)は第k番目の非零要素の列番号を表す.
    入出力
    整数型
    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を呼び出せば良い.
    2. 本ルーチンを最初に呼び出す直前には,col_ind=0, 0, ..., 0; val=0, 0, ..., 0; row_prt=1, 1, ..., 1; n_zero=0と初期化しておく必要がある.
    3. X-EFG法やEFG法では,バックグラウンド・セルを用いた数値積分を実行している.それ故,本ルーチンの実行時間は殆ど無視できる. これに対して,行列要素が解析的に計算できるFEMでは,本ルーチンの実行時間は他の計算時間と比べて無視できない.このような場合,本ルーチンは使うべきではない.