C**** OST070.S Make file of Ocean STrait Diagnostics 98/08/05 C**** C**** OST070 reads a Climate Model restartfile, calculates diagnostic C**** quantities from the accumulating arrays of OLNST, and writes C**** the scaled data to a text output file. C**** INCLUDE '/u/cmrun/C070.COM' PARAMETER (KDINT = 15 + 1 + 4 + 2*4 + 42*50, * KDST0 = JM*KAJ*6 + JM*LMA*KAJL + JM*3*4 + IM*JM*KAIJ + * IM*JM*LMA*KAIJL + IM*JM*LMO*KOIJL, * KDACC = KDST0 + LMO*NMST*KOLNST + 24*50*4 + JM*KCON) INTEGER*4 IPARM(300),IDIAG(KDINT) REAL*4 DIAGR4(KDACC) EQUIVALENCE (IPARM,IM$),(IDIAG,IDACC) C**** REAL*8 AS(LMO,NMST),SCALE(KOLNST) CHARACTER FILEIN*80, TITLE*80, NAME*50, STRAIT(NMST)*20 COMMON /NAMECB/ NAME(KOLNST) COMMON /WORK01/ LINECT DATA STRAIT / * 'Fury & Hecla','Nares ','Gibraltar','English ', * 'Kattegat ','Bosporous','Red Sea ','Bab-al-Mandab', * 'Hormuz ','Malacca ','Korea ','Soya-kaikyo '/ C**** C**** Read data from ReStartFile C**** IF(IARGC().ne.1) GO TO 800 CALL GETARG (1,FILEIN) OPEN (1,FILE=FILEIN,FORM='UNFORMATTED',STATUS='OLD',ERR=810) READ (1) IHOURX,LABEL,IPARM,IDIAG,DIAGR4,IHOURY CLOSE (1) IF(IHOURX.ne.IHOURY) GO TO 820 C**** Fill in OLNST from DIAGR4 DO 10 L=1,LMO*NMST*KOLNST 10 OLNST(L,1,1) = DIAGR4(KDST0+L) C**** Calculate distance of strait DLON = TWOPI/IM DLAT = TWOPI*NINT(360./JM)/720. FJEQ = (JM+1.)/2. DO 20 N=1,NMST DSLON = (IST(N,2)+.5*XST(N,2) - IST(N,1)-.5*XST(N,1))*DLON DSLAT = (JST(N,2)+.5*YST(N,2) - JST(N,1)-.5*YST(N,1))*DLAT SLAT = (JST(N,2)+.5*YST(N,2) + JST(N,1)+.5*YST(N,1) - 2.*FJEQ)* * DLAT/2. 20 DIST(N) = RADIUS*SQRT((DSLON*COS(SLAT))**2 + DSLAT*DSLAT) C**** Build the title including run number and month WRITE (TITLE(50:80),905) LABEL(1:7),JMON0,JYEAR0 OPEN (6,FILE='OST070.PRT') LINECT = 100 C**** C**** Transport through straits C**** SCALE(1) = 1.d- 6 / DTS SCALE(2) = .5d-11 / DTS SCALE(3) = .5d- 5 / DTS DO 120 N=1,3 TITLE(1:50) = NAME(N) DO 110 NS=1,NMST DO 110 L=1,LMST(NS) 110 AS(L,NS) = OLNST(L,NS,N)*SCALE(N)/IDACC(1) 120 CALL STABLE (NMST,LMST,STRAIT,AS,TITLE) C**** C**** Convective Flux in the Straits C**** SCALE(4) = 1.D2 / DTS TITLE(1:50) = NAME(4) DO 210 NS=1,NMST DO 210 L=1,LMST(NS) 210 AS(L,NS) = OLNST(L,NS,4)*SCALE(4)/(IDACC(1)*WIST(NS)*DIST(NS)) CALL STABLE (NMST,LMST,STRAIT,AS,TITLE) C**** C**** Vertical Diffusion Coefficient in the Straits C**** SCALE(5) = .5 TITLE(1:50) = NAME(5) DO 310 NS=1,NMST DO 310 L=1,LMST(NS) 310 AS(L,NS) = OLNST(L,NS,5)*SCALE(5)/IDACC(1) CALL STABLE (NMST,LMST,STRAIT,AS,TITLE) C**** C**** Sea Ice Mass Flux in the Straits C**** C SCALE(6) = .5D-4 / DTS C TITLE(1:50) = NAME(6) C DO 360 NS=1,NMST C 360 AS(1,NS) = ( 2.*OLNST(2,NS,6))*SCALE(6)/IDACC(1) C 360 AS(1,NS) = (OLNST(1,NS,6)+OLNST(2,NS,6))*SCALE(6)/IDACC(1) C CALL STABLE (NMST,1,STRAIT,AS,TITLE) CLOSE (6) RETURN C**** 800 WRITE (0,*) 'Usage: OST070 /raid1/C070/DJan1990 ', * 'Ocean STrait diagnostics 98/08/05' RETURN 810 WRITE (0,*) 'Error accessing ',FILEIN RETURN 820 WRITE (0,*) 'IHOURX and IHOURY do not match:',IHOURX,IHOURY RETURN 901 FORMAT (I3,A1) 905 FORMAT (' Run ',A7,2X,A4,I4,8X) END SUBROUTINE STABLE (NMST,LMST,STRAIT,AX,TITLE) C**** C**** STABLE produces a layer by strait table on the line printer. C**** C**** Input: NMST = number of straits C**** LMST = number of layers for each strait C**** STRAIT = names of straits C**** AX = two dimensional input array C**** TITLE = title of run C**** IMPLICIT REAL*8 (A-H,M,O-Z) PARAMETER (LMO=13,LMAXST=6) INTEGER*4 LMST(NMST) REAL*8 AX(LMO,NMST) CHARACTER STRAIT(NMST)*20, TITLE*80 COMMON /WORK01/ LINECT C**** C**** Produce leading title lines C**** LINECT = LINECT + 19 IF(LINECT.le.63) THEN WRITE (6,900) TITLE ELSE LINECT = 8 WRITE (6,901) TITLE ENDIF WRITE (6,902) ('------',L=1,LMAXST),(L,L=1,LMAXST), * ('------',L=1,LMAXST) C**** C**** Calculate sums and print the table C**** DO 40 NS=1,NMST LMAX = LMST(NS) SUML = 0. DO 30 L=1,LMAX 30 SUML = SUML + AX(L,NS) 40 WRITE (6,904) STRAIT(NS),SUML,(NINT(AX(L,NS)),L=1,LMAX) C**** RETURN 900 FORMAT ('0'//1X,A80) 901 FORMAT ('1',A80) 902 FORMAT ('0',29('-'),6A6 / ' Strait',19X,'Sum ',6I6 / * ' ',29('-'),6A6) 904 FORMAT (1X,A20,F8.1,1X,10I6) END BLOCK DATA C**** C**** Names of quantities and default parameters for straits C**** INCLUDE '/u/cmrun/C070.COM' CHARACTER*50 NAME COMMON /NAMECB/ NAME(KOLNST) C**** C**** Strait From To LM Width C**** ------ ---- -- -- ----- C**** 1 Fury & Hecla 19,42 ES 20,40 WN 2 20000 C**** 2 Nares 22,43 EN 24,44 WS 4 50000 C**** 3 Gibraltar 35,32 EN 37,33 WS 4 25000 C**** 4 English 36,36 EN 37,37 WS 2 35000 C**** 5 Kattegat 38,38 EN 40,38 WS 2 60000 C**** 6 Bosporous 42,33 EN 43,34 WS 2 6000 C**** 7 Red Sea 1 44,29 ES 45,28 WN 5 250000 C**** 8 Bab-al-Mandab 45,28 ES 46,27 WN 5 25000 C**** 9 Hormuz 47,30 ES 48,28 WN 2 50000 C**** 10 Malacca 56,25 EN 58,24 WS 3 50000 C**** 11 Korea 62,32 EN 63,33 WS 3 170000 C**** 12 Soya-kaikyo 64,34 EN 65,35 WS 2 40000 C**** DATA IST / 19, 22, 35, 36, 38, 42, 44, 45, 47, 56, 62, 64, * 20, 24, 37, 37, 40, 43, 45, 46, 49, 58, 63, 65/, * JST / 42, 43, 32, 36, 38, 33, 29, 28, 30, 25, 32, 34, * 40, 44, 33, 37, 38, 34, 28, 27, 29, 24, 33, 35/, * LMST/ 2, 5, 5, 2, 2, 2, 6, 6, 2, 3, 4, 2/, * XST / .0, .6, .6, 1., 1., .0, .6, .6, 1., .6, .0, .6, * .0,-.8,-.8, .0,-.6,-.8,-.8,-1.,-.7,-1.,-.6,-1./, * YST /-1., .8, .8, .0, .0, 1.,-.8,-.8, .0,-.8, 1., .8, * 1.,-.6,-.6,-1.,-.8,-.6, .6, .0, .7, .0,-.8, .0/, * WIST/ 20000., 50000., 25000., 35000., 60000., 6000., * 250000., 25000., 50000., 50000.,170000., 40000./ C**** DATA NAME / 1'Strait Transport of Mass (10^6 kg/s)', 2'Strait Trans of Potential Enthalpy (10^11 W)', 3'Strait Transport of Salt (10^5 kg/s)', 4'Convective Mass Flux (10^-2 kg/s*m^2)', 5'Vertical Diffusion Coefficient (kg^2/s*m^4)', 6'Sea Ice Mass Flux (10^4 kg/s)'/ END