6.2 トーン付き等高線図

メソッド(元サブルーチン) uetone を呼ぶだけで, とりあえず負の領域にトーンをつ けることができます. 次のプログラム例 u2d2 は, u2d1 の結果 に加えて, 負の領域に斜線のハッチをつけます. ここで, 24行めで sglset ルーチンを呼んで, トーンに関する論理型内部変数 'LSOFTF'.true. に設定しています. これを .false.(初期値) で描く と, 出力装置によっては先に描かれた図形が消えてしまうことがあります. 'LSOFTF' の設定を変えたり, uetone を呼ぶ順序を usdaxs の前にしたりして, 結果がどのようになるか確かめてみましょう. ま た, この例では, ビューポートを陽に設定して長方形にしている点にも注意し て下さい.

# 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::grcls

program u2d2

\resizebox{10cm}{!}{\includegraphics{u2d/u2d2.eps}}
u2d2.rb: frame1