** Warning **
Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle dbname=MITgcm at /usr/local/share/lxr/lib/LXR/Common.pm line 1224.
Last-Modified: Wed, 18 Nov 2025 06:09:00 GMT
Content-Type: text/html; charset=utf-8
MITgcm/MITgcm/pkg/diagnostics/diagnostics_fract_fill.F
File indexing completed on 2018-03-02 18:38:58 UTC
view on github raw 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