--- MITgcm/pkg/diagnostics/diagnostics_fract_fill.F 2006/07/31 16:26:32 1.4 +++ MITgcm/pkg/diagnostics/diagnostics_fract_fill.F 2011/06/15 13:50:22 1.7 @@ -1,4 +1,4 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/diagnostics/diagnostics_fract_fill.F,v 1.4 2006/07/31 16:26:32 jmc Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/diagnostics/diagnostics_fract_fill.F,v 1.7 2011/06/15 13:50:22 jmc Exp $ C $Name: $ #include "DIAG_OPTIONS.h" @@ -8,14 +8,14 @@ C !INTERFACE: SUBROUTINE DIAGNOSTICS_FRACT_FILL( I inpFld, fractFld, scaleFact, power, chardiag, - I kLev, nLevs, bibjFlg, biArg, bjArg, myThid) + I kLev, nLevs, bibjFlg, biArg, bjArg, myThid ) C !DESCRIPTION: C*********************************************************************** -C Wrapper routine to increment the diagnostics arrays with a field +C Wrapper routine to increment the diagnostics arrays with a RL field C using a scaling factor & square option (power=2) -C and using a fraction-weight (assumed to be the counter-mate -C of the current diagnostics) +C and using a RL fraction-weight (assumed to be the +C counter-mate of the current diagnostics) C Note: 1) fraction-weight has to correspond to the diagnostics C counter-mate (filled independently with a call to C DIAGNOSTICS_FILL) @@ -75,14 +75,17 @@ C !LOCAL VARIABLES: C ndId :: diagnostic Id number (in available diagnostics list) -C =============== INTEGER m, n, j, k, l, bi, bj INTEGER ndId, ipt, iSp INTEGER region2fill(0:nRegions) INTEGER mate, nLevFract - CHARACTER*8 parms1 + CHARACTER*10 gcode CHARACTER*(MAX_LEN_MBUF) msgBuf + INTEGER arrType + _RS dummyRS(1) +C =============== + arrType = 0 IF ( bibjFlg.EQ.0 ) THEN bi = myBxLo(myThid) bj = myByLo(myThid) @@ -102,14 +105,13 @@ ipt = ipt + pdiag(n,bi,bj)*kdiag(ndId) C- check for a counter-mate: mate = 0 - parms1 = gdiag(ndId)(1:8) - IF ( parms1(5:5).EQ.'C' ) READ(parms1,'(5X,I3)') mate - IF ( mdiag(m,n).EQ.0 ) mate = 0 + gcode = gdiag(ndId)(1:10) + IF ( gcode(5:5).EQ.'C' ) mate = hdiag(ndId) IF ( mate.LE.0 ) THEN WRITE(msgBuf,'(2A)') 'DIAGNOSTICS_FRACT_FILL: ', & 'did not find a valid counter-mate' CALL PRINT_ERROR( msgBuf , myThid ) - WRITE(msgBuf,'(2A,I4,2A)') 'DIAGNOSTICS_FRACT_FILL: ', + WRITE(msgBuf,'(2A,I6,2A)') 'DIAGNOSTICS_FRACT_FILL: ', & 'for diag(#',ndId,' ) :', chardiag CALL PRINT_ERROR( msgBuf , myThid ) STOP 'ABNORMAL END: S/R DIAGNOSTICS_FRACT_FILL' @@ -118,7 +120,8 @@ nLevFract = MIN(nLevs,kdiag(mate)) C- diagnostic is valid & active, has a counter-mate, do the filling: CALL DIAGNOSTICS_FILL_FIELD( - I inpFld, fractFld, scaleFact, power, nLevFract, + I inpFld, fractFld, dummyRS, dummyRS, + I scaleFact, power, arrType, nLevFract, I ndId, ipt, kLev, nLevs, I bibjFlg, biArg, bjArg, myThid ) ENDIF @@ -140,14 +143,14 @@ ndId = jSdiag(m,n) C- check for a counter-mate: mate = 0 - parms1 = gdiag(ndId)(1:8) - IF ( parms1(5:5).EQ.'C' ) READ(parms1,'(5X,I3)') mate - IF ( mSdiag(m,n).EQ.0 ) mate = 0 + gcode = gdiag(ndId)(1:10) +c IF ( gcode(5:5).EQ.'C' ) READ(gcode,'(5X,I3)') mate + IF ( gcode(5:5).EQ.'C' ) mate = hdiag(ndId) IF ( mate.LE.0 ) THEN WRITE(msgBuf,'(2A)') 'DIAGNOSTICS_FRACT_FILL: ', & 'did not find a valid counter-mate' CALL PRINT_ERROR( msgBuf , myThid ) - WRITE(msgBuf,'(2A,I4,2A)') 'DIAGNOSTICS_FRACT_FILL: ', + WRITE(msgBuf,'(2A,I6,2A)') 'DIAGNOSTICS_FRACT_FILL: ', & 'for diag(#',ndId,' ) :', chardiag CALL PRINT_ERROR( msgBuf , myThid ) STOP 'ABNORMAL END: S/R DIAGNOSTICS_FRACT_FILL' @@ -171,7 +174,11 @@ ENDDO C- diagnostics is valid and Active, has a counter mate: Now do the filling CALL DIAGSTATS_FILL( - I inpFld, fractFld, scaleFact, power, nLevFract, + I inpFld, fractFld, +#ifndef REAL4_IS_SLOW + I dummyRS, dummyRS, +#endif + I scaleFact, power, arrType, nLevFract, I ndId, iSp, region2fill, kLev, nLevs, I bibjFlg, biArg, bjArg, myThid ) ENDIF