;+ ; ; @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}{type=string} ; It contains the filename ; ; @history ; Sebastien Masson (smasson\@lodyc.jussieu.fr) ; Sept 30, 2003 ; based on batsav2.pro, written by Maurice Imbard, March 17, 1998 ; ; @version ; $Id$ ; ;- ; PRO writebat, zbat, filename ; compile_opt idl2, strictarrsubs ; ; basic checks IF n_params() NE 2 THEN BEGIN ras = report( 'bad number of arguments in the call of writebat') return ENDIF IF size(filename, /type) NE 7 THEN BEGIN ras = report( 'the filename should be a string') return ENDIF sbat = size(zbat) IF sbat[0] NE 2 THEN BEGIN ras = report( '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