/[MITgcm]/MITgcm/pkg/matrix/matrix_write_tendency.F
ViewVC logotype

Diff of /MITgcm/pkg/matrix/matrix_write_tendency.F

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

revision 1.3 by jmc, Mon Nov 5 18:58:00 2007 UTC revision 1.4 by jmc, Fri Aug 26 19:47:00 2011 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3    
4  #include "PACKAGES_CONFIG.h"  #include "MATRIX_OPTIONS.h"
 #include "CPP_OPTIONS.h"  
5    
6  C !ROUTINE MATRIX_WRITE_TENDENCY.F  C !ROUTINE MATRIX_WRITE_TENDENCY.F
7  C This routine writes both the explicit and implicit matrices  C This routine writes both the explicit and implicit matrices
# Line 25  c#include "PTRACERS_FIELDS.h" Line 24  c#include "PTRACERS_FIELDS.h"
24    
25  #ifdef ALLOW_MATRIX  #ifdef ALLOW_MATRIX
26    
27          LOGICAL  DIFFERENT_MULTIPLE
28          EXTERNAL DIFFERENT_MULTIPLE
29    
30        INTEGER bi,bj,i,j,k,iTracer,iRec        INTEGER bi,bj,i,j,k,iTracer,iRec
31        CHARACTER*(MAX_LEN_MBUF) suff        CHARACTER*(MAX_LEN_FNAM) suff
32          CHARACTER*(MAX_LEN_MBUF) msgBuf
33        _RL recipImpMatrixCounter, recipExpDeltaTtracer        _RL recipImpMatrixCounter, recipExpDeltaTtracer
34    
35        DATA expMatrixWriteCount /0/  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
       DATA impMatrixWriteCount /0/  
36    
37        IF ( (mod(myTime-startTime,expMatrixWriteTime)        IF ( DIFFERENT_MULTIPLE(expMatrixWriteTime,myTime,deltaTClock)
38       &     .EQ. (0.0 _d 0))) THEN       &   ) THEN
39          recipExpDeltaTtracer =          bj=myByLo(myThid)
40       &       (1. _d 0)/(expMatrixCounter*dTtracerLev(1))          bi=myBxLo(myThid)
41          IF (expMatrixWriteCount.EQ.0) expMatrixWriteCount=1          recipExpDeltaTtracer = expMatrixCounter(bi,bj)*dTtracerLev(1)
42          iRec=expMatrixWriteCount          recipExpDeltaTtracer = 1. _d 0 / recipExpDeltaTtracer
43            iRec = expMatrixWriteCount
44          DO iTracer=1,PTRACERS_numInUse          DO iTracer=1,PTRACERS_numInUse
45            DO bj=myByLo(myThid), myByHi (myThid)            DO bj=myByLo(myThid),myByHi(myThid)
46              DO bi=myBxLo (myThid), myBxHi (myThid)             DO bi=myBxLo (myThid),myBxHi(myThid)
47                DO k=1,Nr               DO k=1,Nr
48                  DO j=1-Oly, sNy+Oly                DO j=1-Oly, sNy+Oly
49                    DO i=1-Olx, sNx+Olx                 DO i=1-Olx, sNx+Olx
50                      MATRIX(i,j,k,bi,bj,iTracer,1) =                   MATRIX(i,j,k,bi,bj,iTracer,1) =
51       &                   MATRIX(i,j,k,bi,bj,iTracer,1)       &                   MATRIX(i,j,k,bi,bj,iTracer,1)
52       &                   *recipExpDeltaTtracer       &                   *recipExpDeltaTtracer
53                    ENDDO                 ENDDO
                 ENDDO  
54                ENDDO                ENDDO
55              ENDDO               ENDDO
56               ENDDO
57            ENDDO            ENDDO
58              bj=myByLo(myThid)
59              bi=myBxLo(myThid)
60              WRITE(msgBuf,'(A,I4,2I6)') 'Writing explicit matrix :',
61         &       iTracer, expMatrixWriteCount, expMatrixCounter(bi,bj)
62              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
63         &                        SQUEEZE_RIGHT, myThid )
64            WRITE(suff,'(A9,I2.2)') 'MATRIXEXP',iTracer            WRITE(suff,'(A9,I2.2)') 'MATRIXEXP',iTracer
           write(*,*)'Writing explicit matrix :',iTracer,  
      &         expMatrixWriteCount, expMatrixCounter  
65            CALL WRITE_REC_XYZ_RL(suff,            CALL WRITE_REC_XYZ_RL(suff,
66       &         MATRIX(1-Olx,1-Oly,1,1,1,iTracer,1),iRec,myIter,myThid)       &         MATRIX(1-Olx,1-Oly,1,1,1,iTracer,1),iRec,myIter,myThid)
67          ENDDO          ENDDO
68          expMatrixCounter=0          _BARRIER
69          expMatrixWriteCount=expMatrixWriteCount+1          _BEGIN_MASTER(myThid)
70             expMatrixWriteCount = expMatrixWriteCount + 1
71            _END_MASTER(myThid)
72    
73  C       Reset explicit matrix  C       Reset explicit matrix
74            DO bj=myByLo(myThid),myByHi(myThid)
75             DO bi=myBxLo (myThid),myBxHi(myThid)
76               expMatrixCounter(bi,bj) = 0
77             ENDDO
78            ENDDO
79          DO iTracer=1,PTRACERS_numInUse          DO iTracer=1,PTRACERS_numInUse
80            DO bj=myByLo(myThid), myByHi (myThid)            DO bj=myByLo(myThid),myByHi(myThid)
81              DO bi=myBxLo (myThid), myBxHi (myThid)             DO bi=myBxLo (myThid),myBxHi(myThid)
82                DO k=1,Nr               DO k=1,Nr
83                  DO j=1-Oly, sNy+Oly                DO j=1-Oly, sNy+Oly
84                    DO i=1-Olx, sNx+Olx                 DO i=1-Olx, sNx+Olx
85                      MATRIX(i,j,k,bi,bj,iTracer,1)= 0. _d 0                   MATRIX(i,j,k,bi,bj,iTracer,1) = 0. _d 0
86                    ENDDO                 ENDDO
                 ENDDO  
87                ENDDO                ENDDO
88              ENDDO               ENDDO
89               ENDDO
90            ENDDO            ENDDO
91          ENDDO          ENDDO
92        ENDIF        ENDIF
93    
94        IF ( (mod(myTime-startTime,impMatrixWriteTime)        IF ( DIFFERENT_MULTIPLE(impMatrixWriteTime,myTime,deltaTClock)
95       &     .EQ.(0.0 _d 0)) ) THEN       &   ) THEN
96          recipImpMatrixCounter = (1. _d 0)/dble(impMatrixCounter)          bj=myByLo(myThid)
97          IF (impMatrixWriteCount.EQ.0) impMatrixWriteCount=1          bi=myBxLo(myThid)
98          iRec=impMatrixWriteCount          recipImpMatrixCounter = impMatrixCounter(bi,bj)
99            recipImpMatrixCounter = 1. _d 0 / recipImpMatrixCounter
100            iRec = impMatrixWriteCount
101          DO iTracer=1,PTRACERS_numInUse          DO iTracer=1,PTRACERS_numInUse
102            DO bj=myByLo(myThid), myByHi (myThid)            DO bj=myByLo(myThid), myByHi (myThid)
103              DO bi=myBxLo (myThid), myBxHi (myThid)             DO bi=myBxLo (myThid), myBxHi (myThid)
104                DO k=1,Nr               DO k=1,Nr
105                  DO j=1-Oly, sNy+Oly                DO j=1-Oly, sNy+Oly
106                    DO i=1-Olx, sNx+Olx                 DO i=1-Olx, sNx+Olx
107                      MATRIX(i,j,k,bi,bj,iTracer,2) =                   MATRIX(i,j,k,bi,bj,iTracer,2) =
108       &                   MATRIX(i,j,k,bi,bj,iTracer,2)       &                   MATRIX(i,j,k,bi,bj,iTracer,2)
109       &                   *recipImpMatrixCounter       &                   *recipImpMatrixCounter
110                    ENDDO                 ENDDO
                 ENDDO  
111                ENDDO                ENDDO
112              ENDDO               ENDDO
113               ENDDO
114            ENDDO            ENDDO
115              bj=myByLo(myThid)
116              bi=myBxLo(myThid)
117              WRITE(msgBuf,'(A,I4,2I6)') 'Writing implicit matrix :',
118         &       iTracer, impMatrixWriteCount, impMatrixCounter(bi,bj)
119              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
120         &                        SQUEEZE_RIGHT, myThid )
121            WRITE(suff,'(A9,I2.2)') 'MATRIXIMP',iTracer            WRITE(suff,'(A9,I2.2)') 'MATRIXIMP',iTracer
           write(*,*)'Writing implicit matrix :',iTracer,  
      &         impMatrixWriteCount, impMatrixCounter  
122            CALL WRITE_REC_XYZ_RL(suff,            CALL WRITE_REC_XYZ_RL(suff,
123       &         MATRIX(1-Olx,1-Oly,1,1,1,iTracer,2),iRec,myIter,myThid)       &         MATRIX(1-Olx,1-Oly,1,1,1,iTracer,2),iRec,myIter,myThid)
124          ENDDO          ENDDO
125          impMatrixCounter=0          _BARRIER
126          impMatrixWriteCount=impMatrixWriteCount+1          _BEGIN_MASTER(myThid)
127             impMatrixWriteCount = impMatrixWriteCount + 1
128            _END_MASTER(myThid)
129    
130  C       Reset implicit matrix  C       Reset implicit matrix
131            DO bj=myByLo(myThid),myByHi(myThid)
132             DO bi=myBxLo (myThid),myBxHi(myThid)
133               impMatrixCounter(bi,bj) = 0
134             ENDDO
135            ENDDO
136          DO iTracer=1,PTRACERS_numInUse          DO iTracer=1,PTRACERS_numInUse
137            DO bj=myByLo(myThid), myByHi (myThid)            DO bj=myByLo(myThid), myByHi (myThid)
138              DO bi=myBxLo (myThid), myBxHi (myThid)             DO bi=myBxLo (myThid), myBxHi (myThid)
139                DO k=1,Nr               DO k=1,Nr
140                  DO j=1-Oly, sNy+Oly                DO j=1-Oly, sNy+Oly
141                    DO i=1-Olx, sNx+Olx                 DO i=1-Olx, sNx+Olx
142                      MATRIX(i,j,k,bi,bj,iTracer,2)= 0. _d 0                   MATRIX(i,j,k,bi,bj,iTracer,2) = 0. _d 0
143                    ENDDO                 ENDDO
                 ENDDO  
144                ENDDO                ENDDO
145              ENDDO               ENDDO
146               ENDDO
147            ENDDO            ENDDO
148          ENDDO          ENDDO
149        ENDIF        ENDIF

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.22