source: trunk/SRC/ReadWrite/writebat.pro @ 114

Last change on this file since 114 was 114, checked in by smasson, 18 years ago

new compilation options (compile_opt idl2, strictarrsubs) in each routine

  • Property svn:executable set to *
File size: 2.3 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5;
6; @file_comments write the bathymetry ASCII file of OPA
7;
8; @categories for OPA
9;
10; @param zbat {in}{required} the bathymetry, a 2d array 
11; @param filename {in}{required} a string containing the filename, 
12;
13; @history Sebastien Masson (smasson\@lodyc.jussieu.fr)
14;                      Sept 30, 2003
15;    based on batsav2.pro, written by Maurice Imbard, March 17, 1998
16;-
17PRO writebat, zbat, filename
18;
19  compile_opt idl2, strictarrsubs
20;
21; basic checks
22  IF n_params() NE 2 THEN BEGIN
23    print, 'bad number of aguments in the call of writebat'
24    return
25  ENDIF
26  IF size(filename, /type) NE 7 THEN BEGIN
27    print, 'the filename should be a string'
28    return
29  ENDIF
30  sbat = size(zbat)
31  IF sbat[0] NE 2 THEN BEGIN
32    print, 'bathymetry array should be 2d array'
33    return
34  ENDIF
35;
36  jpi2 = sbat[1]
37  jpj2 = sbat[2]
38; parameters def
39  ifreq  = 40
40  ifin   = jpi2/ifreq+1
41  irest  = jpi2-(ifin-1)*ifreq
42  zbati  = intarr(ifreq)
43  zbati2 = intarr(irest)
44  i0     = intarr(ifreq/5)
45  i1     = intarr(max([1, irest/5]))
46;
47  openw, iunit, filename, /get_lun
48;;
49;; fill the file
50;;
51  printf, iunit, FORMAT = '(1x," bathy IDL     ",2i8)', jpi2, jpj2
52  printf, iunit, FORMAT = '(/)'
53  il1 = 0
54  FOR jn = 1, ifin-1 DO BEGIN
55    printf, iunit, FORMAT = '(/)'
56    il2 = min([ jpi2-1, il1+ifreq-1] )
57    i0[0] = il1+1
58    FOR jj = 1, ifreq/5-1 DO BEGIN
59      i0[jj] = i0[jj-1]+5
60    END
61    printf, iunit, FORMAT = '(3x,13(i3,12x))', i0
62    printf, iunit, FORMAT = '(/)'
63    il3 = il2-(jn-1)*ifreq
64    iformat = string('(', il3+2, 'i3)')
65    FOR jj =  jpj2-1, 0, -1  DO BEGIN
66      zbati[0:il3] = zbat[il1:il2, jj]
67      printf, iunit, FORMAT = iformat, jj+1, zbati
68    END
69    il1 = il1 + ifreq
70  END
71  printf, iunit, FORMAT = '(/)'
72  il2 = min([ jpi2-1, il1+ifreq-1] )
73  i1[0] = il1+1
74  FOR jj = 1, irest/5-1 DO BEGIN
75    i1[jj] = i1[jj-1]+5
76  END
77  printf, iunit, FORMAT = '(3x,13(i3,12x))', i1
78  printf, iunit, FORMAT = '(/)'
79  il3 = il2-(ifin-1)*ifreq
80  iformat = string('(', il3+2, 'i3)')
81  FOR jj =  jpj2-1, 0, -1  DO BEGIN
82    zbati2[0:irest-1] = 0
83    zbati2[0:il3] = zbat[il1:il2, jj]
84    printf, iunit, FORMAT = iformat, jj+1, zbati2
85  END
86;;
87;; end
88;;
89  close, iunit
90  free_lun, iunit
91;
92  return
93end
Note: See TracBrowser for help on using the repository browser.