File indexing completed on 2018-03-02 18:38:58 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
17626c8a28 Jean*0001 #include "DIAG_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE DIAGNOSTICS_FRACT_FILL(
62f9c88755 Jean*0007 I inpFld, fractFld, scaleFact, power, chardiag,
931cda44c0 Jean*0008 I kLev, nLevs, bibjFlg, biArg, bjArg, myThid )
17626c8a28 Jean*0009
0010
0011
2d87091177 Jean*0012
62f9c88755 Jean*0013
2d87091177 Jean*0014
0015
17626c8a28 Jean*0016
0017
0018
0019
0020
0021
0022
0023 IMPLICIT NONE
0024
0025
0026 #include "EEPARAMS.h"
0027 #include "SIZE.h"
0028 #include "DIAGNOSTICS_SIZE.h"
0029 #include "DIAGNOSTICS.h"
0030
0031
0032
0033
0034
0035
0036
0037
62f9c88755 Jean*0038
17626c8a28 Jean*0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064 _RL inpFld(*)
0065 _RL fractFld(*)
0066 _RL scaleFact
62f9c88755 Jean*0067 INTEGER power
17626c8a28 Jean*0068 CHARACTER*8 chardiag
0069 INTEGER kLev, nLevs, bibjFlg, biArg, bjArg
0070 INTEGER myThid
0071
0072
0073
0074
102b7abbed Jean*0075
17626c8a28 Jean*0076 INTEGER m, n, j, k, l, bi, bj
0077 INTEGER ndId, ipt, iSp
0078 INTEGER region2fill(0:nRegions)
0079 INTEGER mate, nLevFract
931cda44c0 Jean*0080 CHARACTER*10 gcode
17626c8a28 Jean*0081 CHARACTER*(MAX_LEN_MBUF) msgBuf
2d87091177 Jean*0082 INTEGER arrType
0083 _RS dummyRS(1)
0084
17626c8a28 Jean*0085
102b7abbed Jean*0086
0087
0088 IF ( diag_pkgStatus.NE.ready2fillDiags ) THEN
0089 CALL DIAGNOSTICS_STATUS_ERROR( 'DIAGNOSTICS_FRACT_FILL',
0090 & ' ', chardiag, ready2fillDiags, myThid )
0091 ENDIF
0092
2d87091177 Jean*0093 arrType = 0
17626c8a28 Jean*0094 IF ( bibjFlg.EQ.0 ) THEN
970e63b3d6 Jean*0095 bi = myBxLo(myThid)
0096 bj = myByLo(myThid)
17626c8a28 Jean*0097 ELSE
0098 bi = biArg
0099 bj = bjArg
0100 ENDIF
0101
0102
0103
0104 DO n=1,nlists
0105 DO m=1,nActive(n)
0106 IF ( chardiag.EQ.flds(m,n) .AND. idiag(m,n).GT.0 ) THEN
0107 ipt = idiag(m,n)
0108 IF ( ndiag(ipt,bi,bj).GE.0 ) THEN
b38beaf3c1 Jean*0109 ndId = ABS(jdiag(m,n))
666b944083 Jean*0110 ipt = ipt + pdiag(n,bi,bj)*kdiag(ndId)
17626c8a28 Jean*0111
0112 mate = 0
931cda44c0 Jean*0113 gcode = gdiag(ndId)(1:10)
0114 IF ( gcode(5:5).EQ.'C' ) mate = hdiag(ndId)
17626c8a28 Jean*0115 IF ( mate.LE.0 ) THEN
0116 WRITE(msgBuf,'(2A)') 'DIAGNOSTICS_FRACT_FILL: ',
0117 & 'did not find a valid counter-mate'
0118 CALL PRINT_ERROR( msgBuf , myThid )
931cda44c0 Jean*0119 WRITE(msgBuf,'(2A,I6,2A)') 'DIAGNOSTICS_FRACT_FILL: ',
17626c8a28 Jean*0120 & 'for diag(#',ndId,' ) :', chardiag
0121 CALL PRINT_ERROR( msgBuf , myThid )
0122 STOP 'ABNORMAL END: S/R DIAGNOSTICS_FRACT_FILL'
0123 ENDIF
0124
0125 nLevFract = MIN(nLevs,kdiag(mate))
0126
0127 CALL DIAGNOSTICS_FILL_FIELD(
2d87091177 Jean*0128 I inpFld, fractFld, dummyRS, dummyRS,
0129 I scaleFact, power, arrType, nLevFract,
62f9c88755 Jean*0130 I ndId, ipt, kLev, nLevs,
0131 I bibjFlg, biArg, bjArg, myThid )
17626c8a28 Jean*0132 ENDIF
0133 ENDIF
0134 ENDDO
0135 ENDDO
0136
0137
0138
0139
0140
0141
0142
0143 DO n=1,diagSt_nbLists
0144 DO m=1,diagSt_nbActv(n)
0145 IF ( chardiag.EQ.diagSt_Flds(m,n) .AND. iSdiag(m,n).GT.0 ) THEN
0146 iSp = iSdiag(m,n)
0147 IF ( qSdiag(0,0,iSp,bi,bj).GE.0. ) THEN
0148 ndId = jSdiag(m,n)
0149
0150 mate = 0
931cda44c0 Jean*0151 gcode = gdiag(ndId)(1:10)
0152
0153 IF ( gcode(5:5).EQ.'C' ) mate = hdiag(ndId)
17626c8a28 Jean*0154 IF ( mate.LE.0 ) THEN
0155 WRITE(msgBuf,'(2A)') 'DIAGNOSTICS_FRACT_FILL: ',
0156 & 'did not find a valid counter-mate'
0157 CALL PRINT_ERROR( msgBuf , myThid )
931cda44c0 Jean*0158 WRITE(msgBuf,'(2A,I6,2A)') 'DIAGNOSTICS_FRACT_FILL: ',
17626c8a28 Jean*0159 & 'for diag(#',ndId,' ) :', chardiag
0160 CALL PRINT_ERROR( msgBuf , myThid )
0161 STOP 'ABNORMAL END: S/R DIAGNOSTICS_FRACT_FILL'
0162 ENDIF
0163
0164 nLevFract = MIN(nLevs,kdiag(mate))
0165
0166 DO j=0,nRegions
0167 region2fill(j) = diagSt_region(j,n)
0168 ENDDO
0169
0170
0171 DO l=1,diagSt_nbLists
0172 DO k=1,diagSt_nbActv(l)
0173 IF ( iSdiag(k,l).EQ.-iSp ) THEN
0174 DO j=0,nRegions
0175 region2fill(j) = MAX(region2fill(j),diagSt_region(j,l))
0176 ENDDO
0177 ENDIF
0178 ENDDO
0179 ENDDO
0180
0181 CALL DIAGSTATS_FILL(
2d87091177 Jean*0182 I inpFld, fractFld,
0183 #ifndef REAL4_IS_SLOW
0184 I dummyRS, dummyRS,
0185 #endif
0186 I scaleFact, power, arrType, nLevFract,
62f9c88755 Jean*0187 I ndId, iSp, region2fill, kLev, nLevs,
0188 I bibjFlg, biArg, bjArg, myThid )
17626c8a28 Jean*0189 ENDIF
0190 ENDIF
0191 ENDDO
0192 ENDDO
0193
0194 RETURN
0195 END