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

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

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


Revision 1.4 - (show annotations) (download)
Fri Aug 26 19:47:00 2011 UTC (12 years, 10 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 C $Header: /u/gcmpack/MITgcm/pkg/matrix/matrix_write_tendency.F,v 1.3 2007/11/05 18:58:00 jmc Exp $
2 C $Name: $
3
4 #include "MATRIX_OPTIONS.h"
5
6 C !ROUTINE MATRIX_WRITE_TENDENCY.F
7 C This routine writes both the explicit and implicit matrices
8 C to file.
9
10 SUBROUTINE MATRIX_WRITE_TENDENCY( myTime, myIter, myThid )
11
12 IMPLICIT NONE
13 #include "SIZE.h"
14 #include "EEPARAMS.h"
15 #include "PARAMS.h"
16 #include "PTRACERS_SIZE.h"
17 #include "PTRACERS_PARAMS.h"
18 c#include "PTRACERS_FIELDS.h"
19 #include "MATRIX.h"
20
21 _RL myTime
22 INTEGER myIter
23 INTEGER myThid
24
25 #ifdef ALLOW_MATRIX
26
27 LOGICAL DIFFERENT_MULTIPLE
28 EXTERNAL DIFFERENT_MULTIPLE
29
30 INTEGER bi,bj,i,j,k,iTracer,iRec
31 CHARACTER*(MAX_LEN_FNAM) suff
32 CHARACTER*(MAX_LEN_MBUF) msgBuf
33 _RL recipImpMatrixCounter, recipExpDeltaTtracer
34
35 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
36
37 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 DO iTracer=1,PTRACERS_numInUse
45 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 & MATRIX(i,j,k,bi,bj,iTracer,1)
52 & *recipExpDeltaTtracer
53 ENDDO
54 ENDDO
55 ENDDO
56 ENDDO
57 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
65 CALL WRITE_REC_XYZ_RL(suff,
66 & MATRIX(1-Olx,1-Oly,1,1,1,iTracer,1),iRec,myIter,myThid)
67 ENDDO
68 _BARRIER
69 _BEGIN_MASTER(myThid)
70 expMatrixWriteCount = expMatrixWriteCount + 1
71 _END_MASTER(myThid)
72
73 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
80 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 ENDDO
88 ENDDO
89 ENDDO
90 ENDDO
91 ENDDO
92 ENDIF
93
94 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 DO iTracer=1,PTRACERS_numInUse
102 DO bj=myByLo(myThid), myByHi (myThid)
103 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 & MATRIX(i,j,k,bi,bj,iTracer,2)
109 & *recipImpMatrixCounter
110 ENDDO
111 ENDDO
112 ENDDO
113 ENDDO
114 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
122 CALL WRITE_REC_XYZ_RL(suff,
123 & MATRIX(1-Olx,1-Oly,1,1,1,iTracer,2),iRec,myIter,myThid)
124 ENDDO
125 _BARRIER
126 _BEGIN_MASTER(myThid)
127 impMatrixWriteCount = impMatrixWriteCount + 1
128 _END_MASTER(myThid)
129
130 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
137 DO bj=myByLo(myThid), myByHi (myThid)
138 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 ENDDO
145 ENDDO
146 ENDDO
147 ENDDO
148 ENDDO
149 ENDIF
150
151 #endif /* ALLOW_MATRIX */
152 RETURN
153 END

  ViewVC Help
Powered by ViewVC 1.1.22