;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; ; @file_comments write the bathymetry ASCII file of OPA ; ; @categories for OPA ; ; @param zbat {in}{required} the bathymetry, a 2d array ; @param filename {in}{required} a string containing the filename, ; ; @history Sebastien Masson (smasson\@lodyc.jussieu.fr) ; Sept 30, 2003 ; based on batsav2.pro, written by Maurice Imbard, March 17, 1998 ;- PRO writebat, zbat, filename ; basic checks IF n_params() NE 2 THEN BEGIN print, 'bad number of aguments in the call of writebat' return ENDIF IF size(filename, /type) NE 7 THEN BEGIN print, 'the filename should be a string' return ENDIF sbat = size(zbat) IF sbat[0] NE 2 THEN BEGIN print, 'bathymetry array should be 2d array' return ENDIF ; jpi2 = sbat[1] jpj2 = sbat[2] ; parameters def ifreq = 40 ifin = jpi2/ifreq+1 irest = jpi2-(ifin-1)*ifreq zbati = intarr(ifreq) zbati2 = intarr(irest) i0 = intarr(ifreq/5) i1 = intarr(max([1, irest/5])) ; openw, iunit, filename, /get_lun ;; ;; fill the file ;; printf, iunit, FORMAT = '(1x," bathy IDL ",2i8)', jpi2, jpj2 printf, iunit, FORMAT = '(/)' il1 = 0 FOR jn = 1, ifin-1 DO BEGIN printf, iunit, FORMAT = '(/)' il2 = min([ jpi2-1, il1+ifreq-1] ) i0[0] = il1+1 FOR jj = 1, ifreq/5-1 DO BEGIN i0[jj] = i0[jj-1]+5 END printf, iunit, FORMAT = '(3x,13(i3,12x))', i0 printf, iunit, FORMAT = '(/)' il3 = il2-(jn-1)*ifreq iformat = string('(', il3+2, 'i3)') FOR jj = jpj2-1, 0, -1 DO BEGIN zbati(0:il3) = zbat(il1:il2, jj) printf, iunit, FORMAT = iformat, jj+1, zbati END il1 = il1 + ifreq END printf, iunit, FORMAT = '(/)' il2 = min([ jpi2-1, il1+ifreq-1] ) i1[0] = il1+1 FOR jj = 1, irest/5-1 DO BEGIN i1[jj] = i1[jj-1]+5 END printf, iunit, FORMAT = '(3x,13(i3,12x))', i1 printf, iunit, FORMAT = '(/)' il3 = il2-(ifin-1)*ifreq iformat = string('(', il3+2, 'i3)') FOR jj = jpj2-1, 0, -1 DO BEGIN zbati2(0:irest-1) = 0 zbati2(0:il3) = zbat(il1:il2, jj) printf, iunit, FORMAT = iformat, jj+1, zbati2 END ;; ;; end ;; close, iunit free_lun, iunit ; return end