/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_setdiag.F
ViewVC logotype

Diff of /MITgcm/pkg/diagnostics/diagnostics_setdiag.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.9 by jmc, Fri Jul 1 18:26:54 2011 UTC revision 1.10 by jmc, Sun Jul 23 00:32:33 2017 UTC
# Line 46  CEOP Line 46  CEOP
46  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
47  C     == Local variables ==  C     == Local variables ==
48        INTEGER stdUnit, errUnit        INTEGER stdUnit, errUnit
49        INTEGER nn, k, l        INTEGER nn, k, l, no_hFac
50        LOGICAL diagIsPP, flagD, flagP, flagM        LOGICAL diagIsPP, flagD, flagP, flagM, use_hFac
51    
52        CHARACTER*10 gcode        CHARACTER*10 gcode
53        CHARACTER*12 tmpMsg        CHARACTER*12 tmpMsg
# Line 63  C ************************************** Line 63  C **************************************
63  C-    Case of Post-Procesed diag, not filled up but computed from other diags:  C-    Case of Post-Procesed diag, not filled up but computed from other diags:
64        diagIsPP = gdiag(ndId)(5:5).EQ.'P'        diagIsPP = gdiag(ndId)(5:5).EQ.'P'
65    
66    C-    Register negative "jdiag" when cumulating thickness (hFac) weighted field
67          no_hFac = 1
68          IF ( fflags(listId)(3:3).EQ.'h' ) THEN
69            gcode = gdiag(ndId)(1:10)
70            use_hFac = ( gcode(2:2).EQ.'U' .OR. gcode(2:2).EQ.'V'
71         &                                 .OR. gcode(2:2).EQ.'M' )
72            use_hFac = use_hFac .AND. gcode(9:10).EQ.'MR'
73         &                      .AND. gcode(3:3).EQ.'R'
74         &                      .AND. gcode(5:5).EQ.' '
75            IF ( use_hFac ) no_hFac = -1
76          ENDIF
77    
78  C---  Seach for the same diag (with same freq) to see if already set  C---  Seach for the same diag (with same freq) to see if already set
79  C     do it recursively on Post-Processed diag dependance (=mate)  C     do it recursively on Post-Processed diag dependance (=mate)
80  C     until we find either one already set or a non Post-Processed diag  C     until we find either one already set or a non Post-Processed diag
# Line 77  C     until we find either one already s Line 89  C     until we find either one already s
89       &             .AND. averagePhase(l).EQ.averagePhase(listId)       &             .AND. averagePhase(l).EQ.averagePhase(listId)
90       &             .AND. averageCycle(l).EQ.averageCycle(listId) ) THEN       &             .AND. averageCycle(l).EQ.averageCycle(listId) ) THEN
91            DO k=1,MIN(nActive(l),numperList)            DO k=1,MIN(nActive(l),numperList)
92             IF (flagD .AND. jdiag(k,l).GT.0) THEN             IF ( flagD .AND. no_hFac*jdiag(k,l).GT.0 ) THEN
93              IF ( cdiag(nn).EQ.cdiag(jdiag(k,l)) ) THEN              IF ( cdiag(nn).EQ.cdiag(ABS(jdiag(k,l))) ) THEN
94  C-    diagnostics already set ; use the same slot:  C-    diagnostics already set ; use the same slot:
95               flagD = .FALSE.               flagD = .FALSE.
96               idiag(mId,listId) = -ABS(idiag(k,l))               idiag(mId,listId) = -ABS(idiag(k,l))
# Line 91  C-    diagnostics already set ; use the Line 103  C-    diagnostics already set ; use the
103          flagP = flagD .AND. gdiag(nn)(5:5).EQ.'P'          flagP = flagD .AND. gdiag(nn)(5:5).EQ.'P'
104          IF ( flagP ) nn = hdiag(nn)          IF ( flagP ) nn = hdiag(nn)
105        ENDDO        ENDDO
106          jdiag(mId,listId) = no_hFac*ndId
107    
108  C---  Set pointer if not already set, otherwise just print a message  C---  Set pointer if not already set, otherwise just print a message
109    

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22