メソッド(元サブルーチン) uetone を呼ぶだけで, とりあえず負の領域にトーンをつ
けることができます. 次のプログラム例 u2d2 は, u2d1 の結果
に加えて, 負の領域に斜線のハッチをつけます. ここで, 24行めで sglset ルーチンを呼んで, トーンに関する論理型内部変数 'LSOFTF'
を .true. に設定しています. これを .false.(初期値) で描く
と, 出力装置によっては先に描かれた図形が消えてしまうことがあります.
'LSOFTF' の設定を変えたり, uetone を呼ぶ順序を usdaxs の前にしたりして, 結果がどのようになるか確かめてみましょう. ま
た, この例では, ビューポートを陽に設定して長方形にしている点にも注意し
て下さい.
z (実数型) mx×nyの2次元配列. 作画には nx×nyの部分を使う. mx (整数型) 配列 zの第1次元整合寸法. nx (整数型) 作画に使う配列 zの第1次元寸法. ny (整数型) 作画に使う配列 zの第2次元寸法. 塗り分けの設定を陽に行なわなければ, 負の領域に斜線を引く. この塗り分けレベルとパターンの設定は第6.4節を参照のこと.
# u2d2.rb require "narray" require "numru/dcl" include NumRu include NMath nt = 51 nz = 21 tmin = 0.0 tmax = 5.0 zmin = 20.0 zmax = 50.0 dt = (tmax-tmin)/(nt-1) dz = (zmax-zmin)/(nz-1) u = NArray.sfloat(nt, nz) #-- data ---- zj = NArray.sfloat(nz).indgen! * dz uz = exp(-0.2*zj)*(zj**0.5) tz = -2.0*exp(-0.1*zj) for i in 0..nt-1 u[i,true] = uz*sin(3.0*(tz+i*dt)) end #-- graph ---- iws = (ARGV[0] || (puts ' WORKSTATION ID (I) ? ;'; DCL::sgpwsn; gets)).to_i DCL::gropn iws DCL::sglset('LSOFTF', true) DCL::grfrm DCL::grswnd(tmin, tmax, zmin, zmax) DCL::grsvpt(0.2, 0.9, 0.4, 0.8) DCL::uspfit DCL::grstrf DCL::ussttl('TIME', 'YEAR', 'HEIGHT', 'km') DCL::usdaxs DCL::udcntr(u) DCL::uetone(u) DCL::grclsprogram u2d2