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

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

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


Revision 1.4 - (hide annotations) (download)
Fri Aug 26 19:47:00 2011 UTC (12 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63b, checkpoint63c
Changes since 1.3: +88 -59 lines
- fix for multi-tiles (add bi,bj indices to exp/impMatrixCounter);
- fix for multi-threaded (remove DATA statement);
- use standard DIFFERENT_MULTIPLE function;
- add MATRIX_OPTIONS.h

1 jmc 1.4 C $Header: /u/gcmpack/MITgcm/pkg/matrix/matrix_write_tendency.F,v 1.3 2007/11/05 18:58:00 jmc Exp $
2 edhill 1.2 C $Name: $
3 spk 1.1
4 jmc 1.4 #include "MATRIX_OPTIONS.h"
5 spk 1.1
6     C !ROUTINE MATRIX_WRITE_TENDENCY.F
7 jmc 1.3 C This routine writes both the explicit and implicit matrices
8 spk 1.1 C to file.
9    
10     SUBROUTINE MATRIX_WRITE_TENDENCY( myTime, myIter, myThid )
11 jmc 1.3
12 spk 1.1 IMPLICIT NONE
13 jmc 1.3 #include "SIZE.h"
14 spk 1.1 #include "EEPARAMS.h"
15 jmc 1.3 #include "PARAMS.h"
16 spk 1.1 #include "PTRACERS_SIZE.h"
17 jmc 1.3 #include "PTRACERS_PARAMS.h"
18     c#include "PTRACERS_FIELDS.h"
19     #include "MATRIX.h"
20    
21 spk 1.1 _RL myTime
22     INTEGER myIter
23     INTEGER myThid
24    
25     #ifdef ALLOW_MATRIX
26    
27 jmc 1.4 LOGICAL DIFFERENT_MULTIPLE
28     EXTERNAL DIFFERENT_MULTIPLE
29    
30 spk 1.1 INTEGER bi,bj,i,j,k,iTracer,iRec
31 jmc 1.4 CHARACTER*(MAX_LEN_FNAM) suff
32     CHARACTER*(MAX_LEN_MBUF) msgBuf
33 spk 1.1 _RL recipImpMatrixCounter, recipExpDeltaTtracer
34    
35 jmc 1.4 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
36 spk 1.1
37 jmc 1.4 IF ( DIFFERENT_MULTIPLE(expMatrixWriteTime,myTime,deltaTClock)
38     & ) THEN
39     bj=myByLo(myThid)
40     bi=myBxLo(myThid)
41     recipExpDeltaTtracer = expMatrixCounter(bi,bj)*dTtracerLev(1)
42     recipExpDeltaTtracer = 1. _d 0 / recipExpDeltaTtracer
43     iRec = expMatrixWriteCount
44 spk 1.1 DO iTracer=1,PTRACERS_numInUse
45 jmc 1.4 DO bj=myByLo(myThid),myByHi(myThid)
46     DO bi=myBxLo (myThid),myBxHi(myThid)
47     DO k=1,Nr
48     DO j=1-Oly, sNy+Oly
49     DO i=1-Olx, sNx+Olx
50     MATRIX(i,j,k,bi,bj,iTracer,1) =
51 edhill 1.2 & MATRIX(i,j,k,bi,bj,iTracer,1)
52     & *recipExpDeltaTtracer
53 jmc 1.4 ENDDO
54 spk 1.1 ENDDO
55 jmc 1.4 ENDDO
56     ENDDO
57 spk 1.1 ENDDO
58 jmc 1.4 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 spk 1.1 WRITE(suff,'(A9,I2.2)') 'MATRIXEXP',iTracer
65     CALL WRITE_REC_XYZ_RL(suff,
66     & MATRIX(1-Olx,1-Oly,1,1,1,iTracer,1),iRec,myIter,myThid)
67     ENDDO
68 jmc 1.4 _BARRIER
69     _BEGIN_MASTER(myThid)
70     expMatrixWriteCount = expMatrixWriteCount + 1
71     _END_MASTER(myThid)
72    
73 spk 1.1 C Reset explicit matrix
74 jmc 1.4 DO bj=myByLo(myThid),myByHi(myThid)
75     DO bi=myBxLo (myThid),myBxHi(myThid)
76     expMatrixCounter(bi,bj) = 0
77     ENDDO
78     ENDDO
79 spk 1.1 DO iTracer=1,PTRACERS_numInUse
80 jmc 1.4 DO bj=myByLo(myThid),myByHi(myThid)
81     DO bi=myBxLo (myThid),myBxHi(myThid)
82     DO k=1,Nr
83     DO j=1-Oly, sNy+Oly
84     DO i=1-Olx, sNx+Olx
85     MATRIX(i,j,k,bi,bj,iTracer,1) = 0. _d 0
86     ENDDO
87 spk 1.1 ENDDO
88 jmc 1.4 ENDDO
89     ENDDO
90 spk 1.1 ENDDO
91     ENDDO
92     ENDIF
93 jmc 1.3
94 jmc 1.4 IF ( DIFFERENT_MULTIPLE(impMatrixWriteTime,myTime,deltaTClock)
95     & ) THEN
96     bj=myByLo(myThid)
97     bi=myBxLo(myThid)
98     recipImpMatrixCounter = impMatrixCounter(bi,bj)
99     recipImpMatrixCounter = 1. _d 0 / recipImpMatrixCounter
100     iRec = impMatrixWriteCount
101 spk 1.1 DO iTracer=1,PTRACERS_numInUse
102     DO bj=myByLo(myThid), myByHi (myThid)
103 jmc 1.4 DO bi=myBxLo (myThid), myBxHi (myThid)
104     DO k=1,Nr
105     DO j=1-Oly, sNy+Oly
106     DO i=1-Olx, sNx+Olx
107     MATRIX(i,j,k,bi,bj,iTracer,2) =
108 edhill 1.2 & MATRIX(i,j,k,bi,bj,iTracer,2)
109     & *recipImpMatrixCounter
110 jmc 1.4 ENDDO
111 spk 1.1 ENDDO
112 jmc 1.4 ENDDO
113     ENDDO
114 spk 1.1 ENDDO
115 jmc 1.4 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 spk 1.1 WRITE(suff,'(A9,I2.2)') 'MATRIXIMP',iTracer
122     CALL WRITE_REC_XYZ_RL(suff,
123     & MATRIX(1-Olx,1-Oly,1,1,1,iTracer,2),iRec,myIter,myThid)
124 jmc 1.3 ENDDO
125 jmc 1.4 _BARRIER
126     _BEGIN_MASTER(myThid)
127     impMatrixWriteCount = impMatrixWriteCount + 1
128     _END_MASTER(myThid)
129    
130 jmc 1.3 C Reset implicit matrix
131 jmc 1.4 DO bj=myByLo(myThid),myByHi(myThid)
132     DO bi=myBxLo (myThid),myBxHi(myThid)
133     impMatrixCounter(bi,bj) = 0
134     ENDDO
135     ENDDO
136 spk 1.1 DO iTracer=1,PTRACERS_numInUse
137     DO bj=myByLo(myThid), myByHi (myThid)
138 jmc 1.4 DO bi=myBxLo (myThid), myBxHi (myThid)
139     DO k=1,Nr
140     DO j=1-Oly, sNy+Oly
141     DO i=1-Olx, sNx+Olx
142     MATRIX(i,j,k,bi,bj,iTracer,2) = 0. _d 0
143     ENDDO
144 spk 1.1 ENDDO
145 jmc 1.4 ENDDO
146     ENDDO
147 spk 1.1 ENDDO
148 jmc 1.3 ENDDO
149 spk 1.1 ENDIF
150 jmc 1.3
151 spk 1.1 #endif /* ALLOW_MATRIX */
152 jmc 1.3 RETURN
153 spk 1.1 END

  ViewVC Help
Powered by ViewVC 1.1.22