1 |
C $Header: /u/gcmpack/MITgcm/pkg/ocn_compon_interf/cpl_write_diags.F,v 1.1 2003/12/15 02:49:09 jmc Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "PACKAGES_CONFIG.h" |
5 |
#include "CPP_OPTIONS.h" |
6 |
|
7 |
CStartOfInterFace |
8 |
SUBROUTINE CPL_WRITE_DIAGS( myTime, myIter, myThid ) |
9 |
C /==========================================================\ |
10 |
C | SUBROUTINE CPL_WRITE_DIAGS | |
11 |
C | o Calculate CPL diagnostics | |
12 |
C | - Oceanic version - | |
13 |
C \==========================================================/ |
14 |
IMPLICIT NONE |
15 |
|
16 |
C === Global variables === |
17 |
#include "SIZE.h" |
18 |
#include "EEPARAMS.h" |
19 |
#include "PARAMS.h" |
20 |
#include "CPL_PARAMS.h" |
21 |
#include "OCNCPL.h" |
22 |
#include "CPL_DIAGS.h" |
23 |
|
24 |
LOGICAL DIFFERENT_MULTIPLE |
25 |
EXTERNAL DIFFERENT_MULTIPLE |
26 |
|
27 |
C == Routine arguments == |
28 |
C myTime - Current time of simulation ( s ) |
29 |
C myIter - Iteration number |
30 |
C myThid - Number of this instance of the routine |
31 |
_RL myTime |
32 |
INTEGER myIter |
33 |
INTEGER myThid |
34 |
CEndOfInterface |
35 |
|
36 |
#ifdef COMPONENT_MODULE |
37 |
|
38 |
C == Local variables == |
39 |
C bi,bj - Tile index |
40 |
INTEGER bi,bj |
41 |
CHARACTER*(MAX_LEN_MBUF) fn |
42 |
LOGICAL gf |
43 |
|
44 |
#ifdef ALLOW_TIMEAVE |
45 |
|
46 |
C Dump files and restart average computation if needed |
47 |
IF ( myIter.NE.nIter0 .AND. |
48 |
& DIFFERENT_MULTIPLE(cpl_taveFreq,myTime,myTime-deltaTClock) |
49 |
& ) THEN |
50 |
|
51 |
C Normalize by integrated time |
52 |
DO bj = myByLo(myThid), myByHi(myThid) |
53 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
54 |
CALL TIMEAVE_NORMALIZ(SLPtave, CPL_TimeAve, 1, bi, bj, myThid) |
55 |
CALL TIMEAVE_NORMALIZ(HFtave , CPL_TimeAve, 1, bi, bj, myThid) |
56 |
CALL TIMEAVE_NORMALIZ(QSWtave, CPL_TimeAve, 1, bi, bj, myThid) |
57 |
c CALL TIMEAVE_NORMALIZ(QLTtave, CPL_TimeAve, 1, bi, bj, myThid) |
58 |
c CALL TIMEAVE_NORMALIZ(QSNtave, CPL_TimeAve, 1, bi, bj, myThid) |
59 |
c CALL TIMEAVE_NORMALIZ(QLWtave, CPL_TimeAve, 1, bi, bj, myThid) |
60 |
c CALL TIMEAVE_NORMALIZ(UGtave , CPL_TimeAve, 1, bi, bj, myThid) |
61 |
c CALL TIMEAVE_NORMALIZ(VGtave , CPL_TimeAve, 1, bi, bj, myThid) |
62 |
CALL TIMEAVE_NORMALIZ(TXtave , CPL_TimeAve, 1, bi, bj, myThid) |
63 |
CALL TIMEAVE_NORMALIZ(TYtave , CPL_TimeAve, 1, bi, bj, myThid) |
64 |
CALL TIMEAVE_NORMALIZ(FWtave , CPL_TimeAve, 1, bi, bj, myThid) |
65 |
CALL TIMEAVE_NORMALIZ(SFxtave, CPL_TimeAve, 1, bi, bj, myThid) |
66 |
CALL TIMEAVE_NORMALIZ(SICtave, CPL_TimeAve, 1, bi, bj, myThid) |
67 |
CALL TIMEAVE_NORMALIZ(MXLtave, CPL_TimeAve, 1, bi, bj, myThid) |
68 |
CALL TIMEAVE_NORMALIZ(SSTtave, CPL_TimeAve, 1, bi, bj, myThid) |
69 |
CALL TIMEAVE_NORMALIZ(SSStave, CPL_TimeAve, 1, bi, bj, myThid) |
70 |
CALL TIMEAVE_NORMALIZ(vSqtave, CPL_TimeAve, 1, bi, bj, myThid) |
71 |
ENDDO |
72 |
ENDDO |
73 |
|
74 |
_BARRIER |
75 |
_BEGIN_MASTER( myThid ) |
76 |
gf = globalFiles |
77 |
WRITE(fn,'(A,I10.10)') 'cplFldtave.',myIter |
78 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
79 |
& 1, SLPtave , 1, myIter, myThid ) |
80 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
81 |
& 1, HFtave , 2, myIter, myThid ) |
82 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
83 |
& 1, QSWtave , 3, myIter, myThid ) |
84 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
85 |
& 1, TXtave , 4, myIter, myThid ) |
86 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
87 |
& 1, TYtave , 5, myIter, myThid ) |
88 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
89 |
& 1, FWtave , 6, myIter, myThid ) |
90 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
91 |
& 1, SFxtave , 7, myIter, myThid ) |
92 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
93 |
& 1, SICtave , 8, myIter, myThid ) |
94 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
95 |
& 1, MXLtave , 9, myIter, myThid ) |
96 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
97 |
& 1, SSTtave , 10, myIter, myThid ) |
98 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
99 |
& 1, SSStave , 11, myIter, myThid ) |
100 |
CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', |
101 |
& 1, vSqtave , 12, myIter, myThid ) |
102 |
|
103 |
_END_MASTER( myThid ) |
104 |
_BARRIER |
105 |
|
106 |
C Reset diagnostic counters |
107 |
DO bj = myByLo(myThid), myByHi(myThid) |
108 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
109 |
CALL TIMEAVE_RESET(SLPtave, 1, bi, bj, myThid) |
110 |
CALL TIMEAVE_RESET(HFtave , 1, bi, bj, myThid) |
111 |
CALL TIMEAVE_RESET(QSWtave, 1, bi, bj, myThid) |
112 |
c CALL TIMEAVE_RESET(QLTtave, 1, bi, bj, myThid) |
113 |
c CALL TIMEAVE_RESET(QSNtave, 1, bi, bj, myThid) |
114 |
c CALL TIMEAVE_RESET(QLWtave, 1, bi, bj, myThid) |
115 |
c CALL TIMEAVE_RESET(UGtave , 1, bi, bj, myThid) |
116 |
c CALL TIMEAVE_RESET(VGtave , 1, bi, bj, myThid) |
117 |
CALL TIMEAVE_RESET(TXtave , 1, bi, bj, myThid) |
118 |
CALL TIMEAVE_RESET(TYtave , 1, bi, bj, myThid) |
119 |
CALL TIMEAVE_RESET(FWtave , 1, bi, bj, myThid) |
120 |
CALL TIMEAVE_RESET(SFxtave, 1, bi, bj, myThid) |
121 |
CALL TIMEAVE_RESET(SICtave, 1, bi, bj, myThid) |
122 |
CALL TIMEAVE_RESET(MXLtave, 1, bi, bj, myThid) |
123 |
CALL TIMEAVE_RESET(SSTtave, 1, bi, bj, myThid) |
124 |
CALL TIMEAVE_RESET(SSStave, 1, bi, bj, myThid) |
125 |
CALL TIMEAVE_RESET(vSqtave, 1, bi, bj, myThid) |
126 |
CPL_TimeAve(1,bi,bj) = 0. |
127 |
ENDDO |
128 |
ENDDO |
129 |
|
130 |
ENDIF |
131 |
|
132 |
#endif /* ALLOW_TIMEAVE */ |
133 |
|
134 |
#endif /* COMPONENT_MODULE */ |
135 |
|
136 |
RETURN |
137 |
END |