/[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.5 - (show annotations) (download)
Mon Apr 2 21:26:12 2012 UTC (12 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint64, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, HEAD
Changes since 1.4: +15 -12 lines
avoid multiple print to the same file (STDOUT) if multi-threads

1 C $Header: /u/gcmpack/MITgcm/pkg/matrix/matrix_write_tendency.F,v 1.4 2011/08/26 19:47: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 #include "MATRIX.h"
19
20 _RL myTime
21 INTEGER myIter
22 INTEGER myThid
23
24 #ifdef ALLOW_MATRIX
25
26 LOGICAL DIFFERENT_MULTIPLE
27 EXTERNAL DIFFERENT_MULTIPLE
28
29 INTEGER bi,bj,i,j,k,iTracer,iRec
30 CHARACTER*(MAX_LEN_FNAM) suff
31 CHARACTER*(MAX_LEN_MBUF) msgBuf
32 _RL recipImpMatrixCounter, recipExpDeltaTtracer
33
34 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
35
36 IF ( DIFFERENT_MULTIPLE(expMatrixWriteTime,myTime,deltaTClock)
37 & ) THEN
38 bj=myByLo(myThid)
39 bi=myBxLo(myThid)
40 recipExpDeltaTtracer = expMatrixCounter(bi,bj)*dTtracerLev(1)
41 recipExpDeltaTtracer = 1. _d 0 / recipExpDeltaTtracer
42 iRec = expMatrixWriteCount
43 DO iTracer=1,PTRACERS_numInUse
44 DO bj=myByLo(myThid),myByHi(myThid)
45 DO bi=myBxLo (myThid),myBxHi(myThid)
46 DO k=1,Nr
47 DO j=1-OLy, sNy+OLy
48 DO i=1-OLx, sNx+OLx
49 MATRIX(i,j,k,bi,bj,iTracer,1) =
50 & MATRIX(i,j,k,bi,bj,iTracer,1)
51 & *recipExpDeltaTtracer
52 ENDDO
53 ENDDO
54 ENDDO
55 ENDDO
56 ENDDO
57 _BEGIN_MASTER(myThid)
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 _END_MASTER(myThid)
65 WRITE(suff,'(A9,I2.2)') 'MATRIXEXP',iTracer
66 CALL WRITE_REC_XYZ_RL(suff,
67 & MATRIX(1-OLx,1-OLy,1,1,1,iTracer,1),iRec,myIter,myThid)
68 ENDDO
69 _BARRIER
70 _BEGIN_MASTER(myThid)
71 expMatrixWriteCount = expMatrixWriteCount + 1
72 _END_MASTER(myThid)
73
74 C Reset explicit matrix
75 DO bj=myByLo(myThid),myByHi(myThid)
76 DO bi=myBxLo (myThid),myBxHi(myThid)
77 expMatrixCounter(bi,bj) = 0
78 ENDDO
79 ENDDO
80 DO iTracer=1,PTRACERS_numInUse
81 DO bj=myByLo(myThid),myByHi(myThid)
82 DO bi=myBxLo (myThid),myBxHi(myThid)
83 DO k=1,Nr
84 DO j=1-OLy, sNy+OLy
85 DO i=1-OLx, sNx+OLx
86 MATRIX(i,j,k,bi,bj,iTracer,1) = 0. _d 0
87 ENDDO
88 ENDDO
89 ENDDO
90 ENDDO
91 ENDDO
92 ENDDO
93 ENDIF
94
95 IF ( DIFFERENT_MULTIPLE(impMatrixWriteTime,myTime,deltaTClock)
96 & ) THEN
97 bj=myByLo(myThid)
98 bi=myBxLo(myThid)
99 recipImpMatrixCounter = impMatrixCounter(bi,bj)
100 recipImpMatrixCounter = 1. _d 0 / recipImpMatrixCounter
101 iRec = impMatrixWriteCount
102 DO iTracer=1,PTRACERS_numInUse
103 DO bj=myByLo(myThid), myByHi (myThid)
104 DO bi=myBxLo (myThid), myBxHi (myThid)
105 DO k=1,Nr
106 DO j=1-OLy, sNy+OLy
107 DO i=1-OLx, sNx+OLx
108 MATRIX(i,j,k,bi,bj,iTracer,2) =
109 & MATRIX(i,j,k,bi,bj,iTracer,2)
110 & *recipImpMatrixCounter
111 ENDDO
112 ENDDO
113 ENDDO
114 ENDDO
115 ENDDO
116 _BEGIN_MASTER(myThid)
117 bj=myByLo(myThid)
118 bi=myBxLo(myThid)
119 WRITE(msgBuf,'(A,I4,2I6)') 'Writing implicit matrix :',
120 & iTracer, impMatrixWriteCount, impMatrixCounter(bi,bj)
121 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
122 & SQUEEZE_RIGHT, myThid )
123 _END_MASTER(myThid)
124 WRITE(suff,'(A9,I2.2)') 'MATRIXIMP',iTracer
125 CALL WRITE_REC_XYZ_RL(suff,
126 & MATRIX(1-OLx,1-OLy,1,1,1,iTracer,2),iRec,myIter,myThid)
127 ENDDO
128 _BARRIER
129 _BEGIN_MASTER(myThid)
130 impMatrixWriteCount = impMatrixWriteCount + 1
131 _END_MASTER(myThid)
132
133 C Reset implicit matrix
134 DO bj=myByLo(myThid),myByHi(myThid)
135 DO bi=myBxLo (myThid),myBxHi(myThid)
136 impMatrixCounter(bi,bj) = 0
137 ENDDO
138 ENDDO
139 DO iTracer=1,PTRACERS_numInUse
140 DO bj=myByLo(myThid), myByHi (myThid)
141 DO bi=myBxLo (myThid), myBxHi (myThid)
142 DO k=1,Nr
143 DO j=1-OLy, sNy+OLy
144 DO i=1-OLx, sNx+OLx
145 MATRIX(i,j,k,bi,bj,iTracer,2) = 0. _d 0
146 ENDDO
147 ENDDO
148 ENDDO
149 ENDDO
150 ENDDO
151 ENDDO
152 ENDIF
153
154 #endif /* ALLOW_MATRIX */
155 RETURN
156 END

  ViewVC Help
Powered by ViewVC 1.1.22