ruby-dcl 1.6.2
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +321 -0
- data/GenWrapper/Makefile +14 -0
- data/GenWrapper/cproto2init.rb +41 -0
- data/GenWrapper/dcl_narrayed_funcs.rb +181 -0
- data/GenWrapper/dcl_rb_footing +29 -0
- data/GenWrapper/dcl_rb_heading +129 -0
- data/GenWrapper/def.rb +20 -0
- data/GenWrapper/elim_ary_size.rb +398 -0
- data/GenWrapper/etc/Mk_proto +375 -0
- data/GenWrapper/etc/dcl_gen +13 -0
- data/GenWrapper/etc/p_header +63 -0
- data/GenWrapper/etc/p_init +410 -0
- data/GenWrapper/pparse.rb +137 -0
- data/GenWrapper/proto/Makefile +35 -0
- data/GenWrapper/proto/grph1_00 +17 -0
- data/GenWrapper/proto/grph1_csgi.fp +27 -0
- data/GenWrapper/proto/grph1_scpack.fp +442 -0
- data/GenWrapper/proto/grph1_sgpack.fp +1406 -0
- data/GenWrapper/proto/grph1_slpack.fp +316 -0
- data/GenWrapper/proto/grph1_stpack.fp +411 -0
- data/GenWrapper/proto/grph1_swpack.fp +746 -0
- data/GenWrapper/proto/grph2_00 +16 -0
- data/GenWrapper/proto/grph2_grpack.fp +139 -0
- data/GenWrapper/proto/grph2_ucpack.fp +522 -0
- data/GenWrapper/proto/grph2_udpack.fp +692 -0
- data/GenWrapper/proto/grph2_uepack.fp +601 -0
- data/GenWrapper/proto/grph2_ugpack.fp +436 -0
- data/GenWrapper/proto/grph2_uhpack.fp +246 -0
- data/GenWrapper/proto/grph2_ulpack.fp +516 -0
- data/GenWrapper/proto/grph2_umpack.fp +676 -0
- data/GenWrapper/proto/grph2_uspack.fp +989 -0
- data/GenWrapper/proto/grph2_uupack.fp +663 -0
- data/GenWrapper/proto/grph2_uvpack.fp +246 -0
- data/GenWrapper/proto/grph2_uwpack.fp +203 -0
- data/GenWrapper/proto/grph2_uxpack.fp +295 -0
- data/GenWrapper/proto/grph2_uypack.fp +295 -0
- data/GenWrapper/proto/grph2_uzpack.fp +574 -0
- data/GenWrapper/proto/math1_00 +12 -0
- data/GenWrapper/proto/math1_blklib.fp +58 -0
- data/GenWrapper/proto/math1_chrlib.fp +83 -0
- data/GenWrapper/proto/math1_fnclib.fp +79 -0
- data/GenWrapper/proto/math1_gnmlib.fp +118 -0
- data/GenWrapper/proto/math1_gt2dlib.fp +144 -0
- data/GenWrapper/proto/math1_ifalib.fp +123 -0
- data/GenWrapper/proto/math1_indxlib.fp +222 -0
- data/GenWrapper/proto/math1_intlib.fp +46 -0
- data/GenWrapper/proto/math1_lrllib.fp +276 -0
- data/GenWrapper/proto/math1_maplib.fp +24 -0
- data/GenWrapper/proto/math1_oslib.fp +28 -0
- data/GenWrapper/proto/math1_rfalib.fp +420 -0
- data/GenWrapper/proto/math1_rfblib.fp +51 -0
- data/GenWrapper/proto/math1_sublib.fp +60 -0
- data/GenWrapper/proto/math1_syslib.fp +767 -0
- data/GenWrapper/proto/math1_vialib.fp +339 -0
- data/GenWrapper/proto/math1_viblib.fp +264 -0
- data/GenWrapper/proto/math1_vralib.fp +339 -0
- data/GenWrapper/proto/math1_vrblib.fp +264 -0
- data/GenWrapper/proto/math1_xfclib.fp +68 -0
- data/GenWrapper/proto/math2_00 +12 -0
- data/GenWrapper/proto/math2_fftlib.fp +803 -0
- data/GenWrapper/proto/math2_intrlib.fp +32 -0
- data/GenWrapper/proto/math2_odelib.fp_notused +568 -0
- data/GenWrapper/proto/math2_rnmlib.fp +54 -0
- data/GenWrapper/proto/math2_shtlib.fp +1292 -0
- data/GenWrapper/proto/math2_shtlib.fp_old +1294 -0
- data/GenWrapper/proto/math2_vstlib.fp +84 -0
- data/GenWrapper/proto/misc1_00 +17 -0
- data/GenWrapper/proto/misc1_chnlib.fp +47 -0
- data/GenWrapper/proto/misc1_datelib.fp +352 -0
- data/GenWrapper/proto/misc1_fmtlib.fp +19 -0
- data/GenWrapper/proto/misc1_misclib.fp +26 -0
- data/GenWrapper/proto/misc1_randlib.fp +36 -0
- data/GenWrapper/proto/misc1_timelib.fp +151 -0
- data/GenWrapper/proto2c.rb +13 -0
- data/GenWrapper/prototype.rb +209 -0
- data/GenWrapper/util.rb +9 -0
- data/GenWrapper/variable.rb +671 -0
- data/README +29 -0
- data/Rakefile +44 -0
- data/ToDo +2 -0
- data/dcl_cary2obj.c +354 -0
- data/dcl_narrayed_funcs.c +518 -0
- data/dcl_obj2cary.c +512 -0
- data/dcl_rubydcloriginal.c +129 -0
- data/demo/gokuraku/hop/hop.rb +26 -0
- data/demo/gokuraku/jump/jump1.rb +64 -0
- data/demo/gokuraku/jump/jump2.rb +50 -0
- data/demo/gokuraku/layout/lay1.rb +46 -0
- data/demo/gokuraku/layout/lay2.rb +44 -0
- data/demo/gokuraku/step/step0.rb +34 -0
- data/demo/gokuraku/step/step1.rb +84 -0
- data/demo/gokuraku/step/step2.rb +62 -0
- data/demo/gokuraku/u1d/u1d1.rb +37 -0
- data/demo/gokuraku/u1d/u1d2.rb +50 -0
- data/demo/gokuraku/u2d/u2d1.rb +46 -0
- data/demo/gokuraku/u2d/u2d2.rb +49 -0
- data/demo/gokuraku/u2d/u2d3.rb +45 -0
- data/demo/gokuraku/u2d/u2d4.rb +61 -0
- data/demo/grph1/scpack/scpkt2.rb +40 -0
- data/demo/grph1/scpack/scpkt3.rb +102 -0
- data/demo/grph1/scpack/scpkt6.rb +84 -0
- data/demo/grph1/scpack/scpkt7.rb +59 -0
- data/demo/grph1/scpack/scpkt8.rb +60 -0
- data/demo/grph1/scpack/t810630.dat +296 -0
- data/demo/grph1/scpack/t811231.dat +296 -0
- data/demo/grph1/sgpack/sgfont.rb +52 -0
- data/demo/grph1/sgpack/sgfonz.rb +53 -0
- data/demo/grph1/sgpack/sgksx1.rb +44 -0
- data/demo/grph1/sgpack/sgksx2.rb +90 -0
- data/demo/grph1/sgpack/sgksx3.rb +75 -0
- data/demo/grph1/sgpack/sglidx.rb +40 -0
- data/demo/grph1/sgpack/sgltyp.rb +48 -0
- data/demo/grph1/sgpack/sgpk01.rb +39 -0
- data/demo/grph1/sgpack/sgpk02.rb +79 -0
- data/demo/grph1/sgpack/sgpk03.rb +107 -0
- data/demo/grph1/sgpack/sgpk04.rb +86 -0
- data/demo/grph1/sgpack/sgpk05.rb +66 -0
- data/demo/grph1/sgpack/sgpk06.rb +91 -0
- data/demo/grph1/sgpack/sgpk07.rb +66 -0
- data/demo/grph1/sgpack/sgpk08.rb +67 -0
- data/demo/grph1/sgpack/sgpk09.rb +61 -0
- data/demo/grph1/sgpack/sgpk10.rb +58 -0
- data/demo/grph1/sgpack/sgtclr.rb +59 -0
- data/demo/grph1/sgpack/sgtone.rb +70 -0
- data/demo/grph1/sgpack/sgtonz.rb +66 -0
- data/demo/grph1/slpack/slpk01.rb +37 -0
- data/demo/grph1/slpack/slpk02.rb +29 -0
- data/demo/grph1/slpack/slpk03.rb +36 -0
- data/demo/grph1/slpack/slpk04.rb +36 -0
- data/demo/grph2/g2pack/g2pk01.rb +78 -0
- data/demo/grph2/g2pack/g2pk02.rb +75 -0
- data/demo/grph2/grpack/grpk01.rb +65 -0
- data/demo/grph2/ucpack/ucpk01.rb +95 -0
- data/demo/grph2/ucpack/ucpk02.rb +95 -0
- data/demo/grph2/udegpk/u2df01.rb +50 -0
- data/demo/grph2/udegpk/u2df02.rb +76 -0
- data/demo/grph2/udegpk/u2df03.rb +80 -0
- data/demo/grph2/udegpk/u2df04.rb +52 -0
- data/demo/grph2/udegpk/u2df05.rb +70 -0
- data/demo/grph2/udegpk/u2df06.rb +59 -0
- data/demo/grph2/udegpk/u2df07.rb +68 -0
- data/demo/grph2/udegpk/u2df08.rb +91 -0
- data/demo/grph2/udegpk/u2df09b.rb +88 -0
- data/demo/grph2/udegpk/u2df09c.rb +89 -0
- data/demo/grph2/udegpk/u2df09e.rb +88 -0
- data/demo/grph2/udegpk/u2df09f.rb +89 -0
- data/demo/grph2/ulpack/ulpk01.rb +111 -0
- data/demo/grph2/ulpack/ulpk01n.rb +111 -0
- data/demo/grph2/ulpack/ulpk02.rb +111 -0
- data/demo/grph2/ulpack/ulpk02n.rb +111 -0
- data/demo/grph2/umpack/t811231.dat +296 -0
- data/demo/grph2/umpack/test01.rb +69 -0
- data/demo/grph2/umpack/test02.rb +64 -0
- data/demo/grph2/umpack/test03.rb +84 -0
- data/demo/grph2/umpack/test04.rb +54 -0
- data/demo/grph2/umpack/test05.rb +85 -0
- data/demo/grph2/umpack/test06.rb +44 -0
- data/demo/grph2/umpack/test07.rb +43 -0
- data/demo/grph2/umpack/test08.rb +37 -0
- data/demo/grph2/umpack/test09.rb +86 -0
- data/demo/grph2/umpack/test10.rb +52 -0
- data/demo/grph2/umpack/umpk01.rb +65 -0
- data/demo/grph2/umpack/umpk02.rb +54 -0
- data/demo/grph2/umpack/umpk03.rb +46 -0
- data/demo/grph2/umpack/umpk04.rb +65 -0
- data/demo/grph2/umpack/umpk05.rb +84 -0
- data/demo/grph2/uspack/uspk01.rb +39 -0
- data/demo/grph2/uspack/uspk02.rb +47 -0
- data/demo/grph2/uspack/uspk03.rb +38 -0
- data/demo/grph2/uspack/uspk04.rb +64 -0
- data/demo/grph2/uspack/uspk05.rb +68 -0
- data/demo/grph2/uspack/uspk06.rb +43 -0
- data/demo/grph2/uspack/uspk07.rb +62 -0
- data/demo/grph2/uspack/uspk08.rb +46 -0
- data/demo/grph2/uspack/uspk09.rb +89 -0
- data/demo/grph2/uspack/uspk10.rb +48 -0
- data/demo/grph2/uspack/uspk11.rb +71 -0
- data/demo/grph2/uspack/uspk12.rb +51 -0
- data/demo/grph2/uupack/uupk01.rb +50 -0
- data/demo/grph2/uupack/uupk02.rb +74 -0
- data/demo/grph2/uupack/uupk03.rb +56 -0
- data/demo/grph2/uupack/uupk04.rb +84 -0
- data/demo/grph2/uupack/uupk05.rb +74 -0
- data/demo/grph2/uupack/uupk06.rb +77 -0
- data/demo/grph2/uupack/uupk07.rb +88 -0
- data/demo/grph2/uxyzpk/uxyz01.rb +38 -0
- data/demo/grph2/uxyzpk/uxyz02.rb +36 -0
- data/demo/grph2/uxyzpk/uxyz03.rb +37 -0
- data/demo/grph2/uxyzpk/uxyz04.rb +54 -0
- data/demo/grph2/uxyzpk/uxyz05.rb +41 -0
- data/demo/grph2/uxyzpk/uxyz06.rb +42 -0
- data/demo/grph2/uxyzpk/uxyz07.rb +38 -0
- data/demo/grph2/uxyzpk/uxyz08.rb +60 -0
- data/demo/grph2/uxyzpk/uxyz09.rb +52 -0
- data/demo/grph2/uxyzpk/uxyz10.rb +57 -0
- data/demo/grph2/ximage/MEMO +23 -0
- data/demo/grph2/ximage/tomsclm.dat +1344 -0
- data/demo/grph2/ximage/ximg01.rb +145 -0
- data/demo/math1/gt2dlib/gt2d01.rb +33 -0
- data/demo/math2/fftlib/fftl01.rb +28 -0
- data/demo/math2/fftlib/fftl02.rb +224 -0
- data/demo/math2/intrlib/intr01.rb +22 -0
- data/demo/math2/rnmlib/rnml01.rb +21 -0
- data/demo/math2/vstlib/vstl01.rb +29 -0
- data/demo/math2/vstlib/vstl02.rb +38 -0
- data/demo/rakuraku/color/color1.rb +61 -0
- data/demo/rakuraku/color/color2.rb +57 -0
- data/demo/rakuraku/color/color3.rb +81 -0
- data/demo/rakuraku/kihon/kihon1.rb +39 -0
- data/demo/rakuraku/kihon/kihon2.rb +56 -0
- data/demo/rakuraku/kihon/kihon3.rb +57 -0
- data/demo/rakuraku/kihon/kihon4.rb +70 -0
- data/demo/rakuraku/kihon/kihon5.rb +56 -0
- data/demo/rakuraku/kihon/kihon6.rb +40 -0
- data/demo/rakuraku/kihon/kihon7.rb +98 -0
- data/demo/rakuraku/kihon/kihon8.rb +93 -0
- data/demo/rakuraku/kihon/kihon9.rb +77 -0
- data/demo/rakuraku/kihon/kihona.rb +123 -0
- data/demo/rakuraku/kihon/kihonb.rb +73 -0
- data/demo/rakuraku/kihon/kihonc.rb +110 -0
- data/demo/rakuraku/layout/lay1.rb +29 -0
- data/demo/rakuraku/layout/lay2.rb +28 -0
- data/demo/rakuraku/layout/lay3.rb +29 -0
- data/demo/rakuraku/map3d/map3d1.rb +68 -0
- data/demo/rakuraku/map3d/map3d2.rb +67 -0
- data/demo/rakuraku/map3d/map3d3.rb +66 -0
- data/demo/rakuraku/map3d/map3d4.rb +107 -0
- data/demo/rakuraku/map3d/map3d5.rb +118 -0
- data/demo/rakuraku/map3d/map3d6.rb +96 -0
- data/demo/rakuraku/map3d/map3d7.rb +98 -0
- data/demo/rakuraku/miss/miss1.rb +76 -0
- data/demo/rakuraku/miss/miss2.rb +60 -0
- data/demo/rakuraku/quick/quick1.rb +35 -0
- data/demo/rakuraku/quick/quick2.rb +33 -0
- data/demo/rakuraku/quick/quick3.rb +46 -0
- data/demo/rakuraku/quick/quick4.rb +47 -0
- data/demo/rakuraku/quick/quick5.rb +46 -0
- data/demo/rakuraku/u2d/u2d1.rb +50 -0
- data/demo/rakuraku/u2d/u2d2.rb +51 -0
- data/demo/rakuraku/u2d/u2d3.rb +70 -0
- data/demo/rakuraku/u2d/u2d4.rb +59 -0
- data/demo/rakuraku/u2d/u2d5.rb +61 -0
- data/demo/rakuraku/u2d/u2d6.rb +57 -0
- data/demo/rakuraku/u2d/u2d7.rb +103 -0
- data/demo/rakuraku/uspack/uspac1.rb +35 -0
- data/demo/rakuraku/uspack/uspac2.rb +66 -0
- data/demo/rakuraku/uspack/uspac3.rb +37 -0
- data/demo/rakuraku/uspack/uspac4.rb +49 -0
- data/demo/rakuraku/uxyz/uxyz1.rb +37 -0
- data/demo/rakuraku/uxyz/uxyz2.rb +35 -0
- data/demo/rakuraku/uxyz/uxyz3.rb +38 -0
- data/demo/rakuraku/uxyz/uxyz4.rb +36 -0
- data/demo/rakuraku/uxyz/uxyz5.rb +57 -0
- data/demo/rakuraku/uxyz/uxyz6.rb +43 -0
- data/demo/rakuraku/uxyz/uxyz7.rb +39 -0
- data/demo/rakuraku/uxyz/uxyz8.rb +56 -0
- data/demo/rubydcloriginal/uemrkz1.rb +37 -0
- data/dummy.c +9 -0
- data/extconf.rb +133 -0
- data/grph1_csgi.c +119 -0
- data/grph1_scpack.c +1388 -0
- data/grph1_sgpack.c +3876 -0
- data/grph1_slpack.c +432 -0
- data/grph1_stpack.c +1044 -0
- data/grph1_swpack.c +1922 -0
- data/grph1_zgpack.c.org +141 -0
- data/grph2_grpack.c +368 -0
- data/grph2_ucpack.c +1232 -0
- data/grph2_udpack.c +1404 -0
- data/grph2_uepack.c +1443 -0
- data/grph2_ugpack.c +1073 -0
- data/grph2_uhpack.c +943 -0
- data/grph2_ulpack.c +1304 -0
- data/grph2_umpack.c +1540 -0
- data/grph2_uspack.c +2481 -0
- data/grph2_uupack.c +1689 -0
- data/grph2_uvpack.c +943 -0
- data/grph2_uwpack.c +552 -0
- data/grph2_uxpack.c +555 -0
- data/grph2_uypack.c +555 -0
- data/grph2_uzpack.c +1455 -0
- data/init.c.default +187 -0
- data/init.c.gtk +189 -0
- data/lib/dcl.rb +5084 -0
- data/math1_blklib.c +227 -0
- data/math1_chrlib.c +239 -0
- data/math1_fnclib.c +254 -0
- data/math1_gnmlib.c +356 -0
- data/math1_gt2dlib.c +514 -0
- data/math1_ifalib.c +427 -0
- data/math1_indxlib.c +709 -0
- data/math1_intlib.c +167 -0
- data/math1_lrllib.c +817 -0
- data/math1_maplib.c +172 -0
- data/math1_oslib.c +111 -0
- data/math1_rfalib.c +1417 -0
- data/math1_rfblib.c +232 -0
- data/math1_sublib.c +221 -0
- data/math1_syslib.c +2025 -0
- data/math1_vialib.c +1156 -0
- data/math1_viblib.c +1027 -0
- data/math1_vralib.c +1156 -0
- data/math1_vrblib.c +1027 -0
- data/math1_xfclib.c +142 -0
- data/math2_fftlib.c +833 -0
- data/math2_intrlib.c +138 -0
- data/math2_rnmlib.c +226 -0
- data/math2_shtlib.c +1568 -0
- data/math2_vstlib.c +366 -0
- data/misc1_chnlib.c +179 -0
- data/misc1_datelib.c +953 -0
- data/misc1_fmtlib.c +99 -0
- data/misc1_misclib.c +118 -0
- data/misc1_randlib.c +142 -0
- data/misc1_timelib.c +380 -0
- data/obsolete/README +2 -0
- data/obsolete/dcl_ext.html +112 -0
- data/obsolete/dcl_ext.rb +313 -0
- metadata +433 -0
@@ -0,0 +1,145 @@
|
|
1
|
+
#
|
2
|
+
# ximg01.rb
|
3
|
+
#
|
4
|
+
# $Id: ximg01.rb,v 1.1.1.1 2011-02-23 07:21:27 horinout Exp $
|
5
|
+
#
|
6
|
+
|
7
|
+
#-----------------------------------------------------------------------
|
8
|
+
# TOMS OZONE DISTRIBUTION (MONTHLY MEAN CLIMATOLOGY)
|
9
|
+
#-----------------------------------------------------------------------
|
10
|
+
|
11
|
+
require "narray"
|
12
|
+
require "numru/dcl"
|
13
|
+
|
14
|
+
include NumRu
|
15
|
+
include Math
|
16
|
+
|
17
|
+
|
18
|
+
KXBK = 12
|
19
|
+
IXBK = KXBK*2+1
|
20
|
+
JXBK = 37
|
21
|
+
IXBG = 73
|
22
|
+
JXBG = 37
|
23
|
+
IXGX = 361
|
24
|
+
JXGX = 181
|
25
|
+
NCL = 100
|
26
|
+
NCL1 = NCL+1
|
27
|
+
|
28
|
+
bkdata = NArray.sfloat(IXBK*JXBK)
|
29
|
+
bgdata = NArray.sfloat(IXBG, JXBG)
|
30
|
+
gxdata = NArray.sfloat(IXGX, JXGX)
|
31
|
+
tlevn = NArray.sfloat(NCL1)
|
32
|
+
|
33
|
+
def fftezb(fc, nx)
|
34
|
+
nn = 0
|
35
|
+
maxwn = fc.shape[0]
|
36
|
+
|
37
|
+
nmax = 512
|
38
|
+
if (nx > nmax)
|
39
|
+
cmsg = format("WORKING AREA IS NOT ENOUGH / NX SHOULD BE .LE. %4d.", nmax)
|
40
|
+
DCL::msgdmp('E', 'FFTEZB', cmsg)
|
41
|
+
end
|
42
|
+
if (nx < maxwn*2)
|
43
|
+
cmsg = "MAXWN CANNOT BE CALCULATED / NX SOULD BE .GE. MAXWN*2.0"
|
44
|
+
DCL::msgdmp('E', 'FFTEZB', cmsg)
|
45
|
+
end
|
46
|
+
|
47
|
+
if (nx != nn)
|
48
|
+
wsave = DCL::rffti(nx)
|
49
|
+
nn=nx
|
50
|
+
end
|
51
|
+
y = Array.new(nx, 0)
|
52
|
+
y[0] = fc[0]
|
53
|
+
1.step(maxwn-1, 2) do |i|
|
54
|
+
y[i] = fc[i] * 0.5
|
55
|
+
y[i+1] = fc[i+1] * -0.5
|
56
|
+
end
|
57
|
+
y = DCL::rfftb(y, wsave)
|
58
|
+
end
|
59
|
+
|
60
|
+
def bktobg(bkdata, bgdata)
|
61
|
+
rmiss = DCL::glrget('RMISS')
|
62
|
+
# CALL DTPGET('MAXWN',KX)
|
63
|
+
for j in 0..JXBG-1
|
64
|
+
if (bkdata[0,j] == rmiss)
|
65
|
+
bgdata[true,j] = rmiss
|
66
|
+
else
|
67
|
+
wk = fftezb(bkdata[true,j], IXBG-1)
|
68
|
+
bgdata[0..-2, j] = wk
|
69
|
+
bgdata[-1,j]=bgdata[0,j]
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
#-- data ---
|
75
|
+
ipatn = []
|
76
|
+
for i in 0..NCL-1
|
77
|
+
ipatn[i] = ([11, i+1].max) *1000 + 999
|
78
|
+
end
|
79
|
+
tlevn.indgen(203.0, 3.0)
|
80
|
+
|
81
|
+
cdsn = 'tomsclm.dat'
|
82
|
+
file = open(cdsn, "r")
|
83
|
+
|
84
|
+
DCL::swlstx('LWAIT', false)
|
85
|
+
DCL::swlstx('LWAIT0', false)
|
86
|
+
DCL::swlstx('LDUMP', false)
|
87
|
+
DCL::swistx('IPOSX', 200)
|
88
|
+
DCL::swistx('IPOSY', 200)
|
89
|
+
DCL::swistx('IWIDTH', 800)
|
90
|
+
DCL::swistx('IHEIGHT', 400)
|
91
|
+
|
92
|
+
#-- graph ---
|
93
|
+
iws = (ARGV[0] || (puts ' WORKSTATION ID (I) ? ;'; DCL::sgpwsn; gets)).to_i
|
94
|
+
DCL::gropn iws
|
95
|
+
DCL::gllset('LMISS', true)
|
96
|
+
rmiss = DCL::glrget('RMISS')
|
97
|
+
DCL::sglset('LFULL', true)
|
98
|
+
DCL::sglset('LSOFTF', false)
|
99
|
+
DCL::umlset('LGLOBE', true)
|
100
|
+
DCL::slrat(1.0, 0.5)
|
101
|
+
|
102
|
+
for m in 1..12
|
103
|
+
mon = file.gets.split(" ")[-1].to_i
|
104
|
+
bkdata.reshape(IXBK*JXBK)
|
105
|
+
i = 0
|
106
|
+
(JXBK*3).times do |j|
|
107
|
+
file.gets.split(" ").each do |data|
|
108
|
+
bkdata[i] = data.to_f
|
109
|
+
i += 1
|
110
|
+
end
|
111
|
+
end
|
112
|
+
bktobg(bkdata.reshape(IXBK, JXBK), bgdata)
|
113
|
+
gxdata.fill!(rmiss)
|
114
|
+
for j in 0..JXBG-1
|
115
|
+
for i in 0..IXBG-1
|
116
|
+
gxdata[i*5, j*5] = bgdata[i,j]
|
117
|
+
end
|
118
|
+
wk = DCL::vrintr(gxdata[true, j*5], IXGX, 1)
|
119
|
+
gxdata[true, j*5] = wk
|
120
|
+
end
|
121
|
+
for i in 0..IXGX-1
|
122
|
+
wk = DCL::vrintr(gxdata[i, true], JXGX, 1)
|
123
|
+
gxdata[i, true] = wk
|
124
|
+
end
|
125
|
+
|
126
|
+
DCL::grfrm
|
127
|
+
DCL::grswnd(0.0, 360.0, -90.0, 90.0)
|
128
|
+
DCL::grsmpl(180.0, 90.0, 0.0)
|
129
|
+
DCL::grstrn(DCL::isgtrc('HMR'))
|
130
|
+
DCL::umpfit
|
131
|
+
DCL::grstrf
|
132
|
+
|
133
|
+
DCL::slpwwr(1)
|
134
|
+
DCL::ueitlv
|
135
|
+
DCL::uestln(tlevn, ipatn)
|
136
|
+
DCL::uetonf(gxdata)
|
137
|
+
|
138
|
+
DCL::umpgrd
|
139
|
+
DCL::umplim
|
140
|
+
DCL::umpmap('coast_world')
|
141
|
+
end
|
142
|
+
file.close
|
143
|
+
|
144
|
+
DCL::grcls
|
145
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# program gt2d01
|
3
|
+
#
|
4
|
+
# T Horinouchi 2004/11/11
|
5
|
+
|
6
|
+
require "numru/dcl"
|
7
|
+
include NumRu
|
8
|
+
include NMath
|
9
|
+
|
10
|
+
nx=15
|
11
|
+
ny=15
|
12
|
+
|
13
|
+
ux = NArray.sfloat(nx).indgen!/(nx-1.0) - 0.5
|
14
|
+
terrain = 0.1 * exp(-24*ux**2)
|
15
|
+
uy = NArray.sfloat(ny).indgen!/(ny-1.0)
|
16
|
+
|
17
|
+
cx = NArray.sfloat(nx,ny)
|
18
|
+
cx[0,0] = DCL::glrget('rundef')
|
19
|
+
cy = uy.reshape(1,ny)*(1.0-terrain) + terrain
|
20
|
+
|
21
|
+
DCL::g2sctr(ux,uy, cx,cy)
|
22
|
+
|
23
|
+
print "terrain following coordinate\n"
|
24
|
+
|
25
|
+
uxp = 0.2
|
26
|
+
uyp = 0.3
|
27
|
+
print "original ux, uy:", uxp, " ", uyp,"\n"
|
28
|
+
|
29
|
+
cxp, cyp = DCL::g2fctr(uxp, uyp)
|
30
|
+
print "transformed cx, cy:", cxp, " ", cyp,"\n"
|
31
|
+
uxp, uyp = DCL::g2ictr(cxp, cyp)
|
32
|
+
print "inverted ux, uy:", uxp, " ", uyp,"\n"
|
33
|
+
print "(...Note that DCL uses single precision floats.)\n"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#
|
2
|
+
# fftl01.rb
|
3
|
+
#
|
4
|
+
# $Id: fftl01.rb,v 1.1.1.1 2011-02-23 07:21:28 horinout Exp $
|
5
|
+
#
|
6
|
+
|
7
|
+
require "narray"
|
8
|
+
require "numru/dcl"
|
9
|
+
|
10
|
+
include NumRu
|
11
|
+
include Math
|
12
|
+
|
13
|
+
|
14
|
+
N = 12
|
15
|
+
NW = N/2
|
16
|
+
NWS = 3*N+15
|
17
|
+
|
18
|
+
rx = [0, 1, 2, 3, 4, 3, 2, 1, 0, -1, -2, -1].collect{|i| i.to_f}
|
19
|
+
#rx = [0, 1, 2, 3, 2, 1, 0, -1, -2, -3, -2, -1].collect{|i| i.to_f}
|
20
|
+
|
21
|
+
wsave = DCL::ezffti(N)
|
22
|
+
printf " LIST OF RX : %s\n", "%5.1f"*N % rx
|
23
|
+
a0, ak, bk = DCL::ezfftf(rx, wsave)
|
24
|
+
printf " LIST OF CX : %8.3f%s\n", a0, "%8.3f"*NW % ak.to_a
|
25
|
+
printf " LIST OF SX : %s%s\n", " "*8, "%8.3f"*NW % bk.to_a
|
26
|
+
rx = DCL::ezfftb(a0, ak, bk, wsave)
|
27
|
+
printf " LIST OF RX : %s\n", "%5.1f"*N % rx.to_a
|
28
|
+
|
@@ -0,0 +1,224 @@
|
|
1
|
+
#
|
2
|
+
# fftl02.rb
|
3
|
+
#
|
4
|
+
# $Id: fftl02.rb,v 1.1.1.1 2011-02-23 07:21:28 horinout Exp $
|
5
|
+
#
|
6
|
+
|
7
|
+
require "narray"
|
8
|
+
require "numru/dcl"
|
9
|
+
|
10
|
+
include NumRu
|
11
|
+
include Math
|
12
|
+
|
13
|
+
|
14
|
+
#-----------------------------------------------------------------------
|
15
|
+
module Tfftp
|
16
|
+
#
|
17
|
+
#
|
18
|
+
# PURPOSE TO DEMONSTRATE THE USE OF FFTPACK, AND TO
|
19
|
+
# TEST THE PERFORMANCE OF FFTPACK ON ONE
|
20
|
+
# WELL-CONDITIONED PROBLEM.
|
21
|
+
#
|
22
|
+
# USAGE CALL TFFTPK (IERROR)
|
23
|
+
#
|
24
|
+
# ARGUMENTS
|
25
|
+
#
|
26
|
+
# ON OUTPUT IERROR
|
27
|
+
# INTEGER VARIABLE SET TO ZERO IF FFTPACK
|
28
|
+
# CORRECTLY SOLVED THE TEST PROBLEM, AND
|
29
|
+
# ONE IF FFTPACK FAILED.
|
30
|
+
#
|
31
|
+
# I/O IF THE TEST SUCCEEDS(FAILS), THE MESSAGE
|
32
|
+
#
|
33
|
+
# FFTPACK TEST SUCCESSFUL (UNSUCCESSFUL)
|
34
|
+
#
|
35
|
+
# IS WRITTEN ON UNIT 6. IN THE CASE OF FAILURE,
|
36
|
+
# ADDITIONAL MESSAGES ARE WRITTEN IDENTIFYING THE
|
37
|
+
# FAILURE MORE EXPLICITLY.
|
38
|
+
#
|
39
|
+
# PRECISION SINGLE
|
40
|
+
#
|
41
|
+
# REQUIRED LIBRARY NONE
|
42
|
+
# FILES
|
43
|
+
#
|
44
|
+
# LANGUAGE FORTRAN
|
45
|
+
#
|
46
|
+
# HISTORY WRITTEN BY MEMBERS OF THE SCIENTIFIC
|
47
|
+
# COMPUTING DIVISION OF NCAR,
|
48
|
+
# BOULDER COLORADO.
|
49
|
+
#
|
50
|
+
# ALGORITHM FOR EACH OF THE ROUTINES, RFFTF, RFFTB, EZFFTF,
|
51
|
+
# AND EZFFTB IN THE FFTPACK PACKAGE A SIMILAR
|
52
|
+
# TEST IS RUN. AN APPROPIATE VECTOR, FOR WHICH
|
53
|
+
# THE EXACT TRANSFORM IS KNOWN IS USED AS THE
|
54
|
+
# INPUT VECTOR. THE ROUTINE IS CALLED TO PERFORM
|
55
|
+
# THE TRANSFORM. THE CALCULATED TRANSFORM VECTOR
|
56
|
+
# IS COMPARED WITH THE EXACT TRANSFORM TO SEE
|
57
|
+
# WHETHER THE PERFORMANCE CRITERION IS MET WITHIN
|
58
|
+
# THE SPECIFED TOLERANCE.
|
59
|
+
#
|
60
|
+
# FOR RFFTF AND EZFFTF, A REAL VECTOR, THE ELEMEN
|
61
|
+
# WHICH ARE EQUAL TO ONE, IS USED AS INPUT. THE
|
62
|
+
# TRANSFORMED VECTOR HAS THE FIRST ELEMENT EQUAL
|
63
|
+
# TO THE LENGTH OF THE INPUT VECTOR. ALL OTHER
|
64
|
+
# ELEMENTS ARE EQUAL TO ZERO.
|
65
|
+
#
|
66
|
+
# FOR RFFTB AND EZFFTB, THE INPUT VECTOR HAS FIRS
|
67
|
+
# ELEMENT EQUAL TO ONE AND ALL THE OTHER ELEMENTS
|
68
|
+
# EQUAL TO ZERO. THE TRANSFORMED VECTOR HAS ALL
|
69
|
+
# COMPONENTS EQUAL TO ONE.
|
70
|
+
#
|
71
|
+
# PORTABILITY ANSI STANDARD
|
72
|
+
#
|
73
|
+
#
|
74
|
+
N = 36
|
75
|
+
DIM1 = 2*N+15
|
76
|
+
DIM2 = 3*N+15
|
77
|
+
ND2 = N/2
|
78
|
+
TOL = 0.01
|
79
|
+
|
80
|
+
M998 = " FFTPACK TEST SUCCESSFUL\n"
|
81
|
+
M999 = " FFTPACK TEST UNSUCCESSFUL\n"
|
82
|
+
M1001 = " IN FFTPACK, ENTRY RFFTF RESULTS IN ERROR\n"
|
83
|
+
M1002 = " IN FFTPACK, ENTRY RFFTB RESULTS IN ERROR\n"
|
84
|
+
M1003 = " IN FFTPACK, ENTRY EZFFTF RESULTS IN ERROR\n"
|
85
|
+
M1004 = " IN FFTPACK, ENTRY EZFFTB RESULTS IN ERROR\n"
|
86
|
+
|
87
|
+
# def stores(x)
|
88
|
+
#
|
89
|
+
# FORCES THE ARGUMENT VALUE X TO BE STORED IN MEMORY LOCATION V.
|
90
|
+
#
|
91
|
+
# common /value/ v
|
92
|
+
# v=x
|
93
|
+
# end
|
94
|
+
def trunc(x)
|
95
|
+
#
|
96
|
+
# TRUNC IS A PORTABLE FORTRAN FUNCTION WHICH TRUNCATES A VALUE TO THE
|
97
|
+
# MACHINE SINGLE PRECISION WORD SIZE, REGARDLESS OF WHETHER LONGER
|
98
|
+
# PRECISION INTERNAL REGISTERS ARE USED FOR FLOATING POINT ARITHMETIC IN
|
99
|
+
# COMPUTING THE VALUE INPUT TO TRUNC. THE METHOD USED IS TO FORCE A
|
100
|
+
# STORE INTO MEMORY BY USING A COMMON BLOCK IN ANOTHER SUBROUTINE.
|
101
|
+
#
|
102
|
+
# common /value/ v
|
103
|
+
# stores(x)
|
104
|
+
# trunc=v
|
105
|
+
x.to_f #????
|
106
|
+
end
|
107
|
+
#
|
108
|
+
# STATEMENT FUNCTION SMALL(EX) IS FOR TESTING WHETHER X IS CLOSE TO ZERO
|
109
|
+
# INDEPENDENTLY OF MACHINE WORD SIZE. SMALL(EX) IS EXACTLY ZERO ONLY IF
|
110
|
+
# ABS(X) .LT. EPS/TOL, WHERE EPS IS THE MACHINE PRECESION AND TOL IS A
|
111
|
+
# TOLERANCE FACTOR USED TO CONTROL THE STRICTNESS OF THE TEST.
|
112
|
+
#
|
113
|
+
def small(ex)
|
114
|
+
trunc(1.0+TOL*ex.abs)-1.0
|
115
|
+
end
|
116
|
+
|
117
|
+
def fft_test
|
118
|
+
rldat = NArray.sfloat(N)
|
119
|
+
#
|
120
|
+
# CALL INITIALIZATION ROUTINE FOR RFFTF AND RFFTB.
|
121
|
+
#
|
122
|
+
wrfft = DCL::rffti(N)
|
123
|
+
#
|
124
|
+
# TEST OF RFFTF.
|
125
|
+
#
|
126
|
+
rldat.fill!(1.0)
|
127
|
+
#
|
128
|
+
result = DCL::rfftf(rldat, wrfft)
|
129
|
+
#
|
130
|
+
# TEST RESULTS OF RFFTF
|
131
|
+
#
|
132
|
+
error = (N.to_f - result[0]).abs
|
133
|
+
for i in 1..N-1
|
134
|
+
error = [error, (result[i]).abs].max
|
135
|
+
end
|
136
|
+
if (small(error) == 0)
|
137
|
+
ier1 = 0
|
138
|
+
else
|
139
|
+
ier1 = 1
|
140
|
+
print M1001
|
141
|
+
end
|
142
|
+
#
|
143
|
+
# TEST OF RFFTB.
|
144
|
+
#
|
145
|
+
rldat.fill!(0.0)
|
146
|
+
rldat[0] = 1.0
|
147
|
+
#
|
148
|
+
result = DCL::rfftb(rldat, wrfft)
|
149
|
+
#
|
150
|
+
# TEST RESULTS OF RFFTB
|
151
|
+
#
|
152
|
+
error = 0.0
|
153
|
+
for i in 0..N-1
|
154
|
+
error = [error, (1.0 - result[i]).abs].max
|
155
|
+
end
|
156
|
+
if (small(error) == 0)
|
157
|
+
ier2 = 0
|
158
|
+
else
|
159
|
+
ier2 = 1
|
160
|
+
print M1002
|
161
|
+
end
|
162
|
+
#
|
163
|
+
# CALL INITIALIZATION ROUTINE EZFFTI FOR EZFFTF AND EZFFTB
|
164
|
+
#
|
165
|
+
wezfft = DCL::ezffti(N)
|
166
|
+
#
|
167
|
+
# TEST OF EZFFTF.
|
168
|
+
#
|
169
|
+
rldat.fill!(1.0)
|
170
|
+
#
|
171
|
+
#
|
172
|
+
azero, a, b = DCL::ezfftf(rldat, wezfft)
|
173
|
+
#
|
174
|
+
# TEST RESULTS OF EZFFTF
|
175
|
+
#
|
176
|
+
error = (azero - 1.0).abs
|
177
|
+
for i in 0..ND2-1
|
178
|
+
error = [(a[i]).abs + (b[i]).abs, error].max
|
179
|
+
end
|
180
|
+
if (small(error) == 0)
|
181
|
+
ier3 = 0
|
182
|
+
else
|
183
|
+
ier3 = 1
|
184
|
+
print M1003
|
185
|
+
end
|
186
|
+
#
|
187
|
+
# TEST OF EZFFTB.
|
188
|
+
#
|
189
|
+
azero = 1.0
|
190
|
+
a[0..ND2-1] = 0.0
|
191
|
+
b[0..ND2-1] = 0.0
|
192
|
+
#
|
193
|
+
result = DCL::ezfftb(azero, a, b, wezfft)
|
194
|
+
#
|
195
|
+
# TEST RESULTS OF EZFFTB
|
196
|
+
#
|
197
|
+
error = 0.0
|
198
|
+
for i in 0..N-1
|
199
|
+
error = [(1.0 - result[i]).abs, error].max
|
200
|
+
end
|
201
|
+
if (small(error) == 0)
|
202
|
+
ier4 = 0
|
203
|
+
else
|
204
|
+
ier4 = 1
|
205
|
+
print M1004
|
206
|
+
end
|
207
|
+
#
|
208
|
+
#
|
209
|
+
ierror = ier1 + ier2 + ier3 + ier4
|
210
|
+
if (ierror == 0)
|
211
|
+
print M998
|
212
|
+
else
|
213
|
+
ierror = 1
|
214
|
+
print M999
|
215
|
+
end
|
216
|
+
ierror
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
|
221
|
+
include Tfftp
|
222
|
+
|
223
|
+
ier = Tfftp::fft_test
|
224
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#
|
2
|
+
# intr01.rb
|
3
|
+
#
|
4
|
+
# $Id: intr01.rb,v 1.1.1.1 2011-02-23 07:21:28 horinout Exp $
|
5
|
+
#
|
6
|
+
|
7
|
+
require "narray"
|
8
|
+
require "numru/dcl"
|
9
|
+
|
10
|
+
include NumRu
|
11
|
+
include Math
|
12
|
+
|
13
|
+
|
14
|
+
N = 12
|
15
|
+
|
16
|
+
rx = [0, 1, 2, 999, 4, 3, 999, 999, 0, -1, -2, 999].collect{|i| i.to_f}
|
17
|
+
|
18
|
+
printf " LIST OF RX : %s\n", "%5.0f"*N % rx.to_a
|
19
|
+
rx = DCL::vrintr(rx, N, 1)
|
20
|
+
print " AFTER CALLING VRINTR(RX,12,1)\n"
|
21
|
+
printf " LIST OF RX : %s\n", "%5.0f"*N % rx.to_a
|
22
|
+
|