/[MITgcm]/MITgcm/pkg/shelfice/shelfice_output.F
ViewVC logotype

Contents of /MITgcm/pkg/shelfice/shelfice_output.F

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


Revision 1.1 - (show annotations) (download)
Wed Jun 17 14:48:04 2009 UTC (14 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y
rename SHELFICE_DIAGS.h --> SHELFICE_TAVE.h
 and shelfice_do_diags.F --> shelfice_output.F

1 C $Header: /u/gcmpack/MITgcm/pkg/shelfice/shelfice_do_diags.F,v 1.5 2008/09/09 19:58:27 jmc Exp $
2 C $Name: $
3
4 #include "SHELFICE_OPTIONS.h"
5
6 SUBROUTINE SHELFICE_OUTPUT( myTime, myIter, myThid )
7 C *==========================================================*
8 C | SUBROUTINE SHELFICE_OUTPUT
9 C | o Do SHELFICE diagnostic output.
10 C *==========================================================*
11 IMPLICIT NONE
12
13 C === Global variables ===
14 #include "SIZE.h"
15 #include "EEPARAMS.h"
16 #include "PARAMS.h"
17 #include "SHELFICE.h"
18 #include "SHELFICE_TAVE.h"
19
20 C == Routine arguments ==
21 C myTime :: my time in simulation ( s )
22 C myIter :: my Iteration number
23 C myThid :: my Thread Id number
24 _RL myTime
25 INTEGER myIter
26 INTEGER myThid
27
28 C == Local variables ==
29 CHARACTER*(MAX_LEN_MBUF) suff
30 LOGICAL DIFFERENT_MULTIPLE
31 EXTERNAL DIFFERENT_MULTIPLE
32 INTEGER i, j, k, bi, bj
33 LOGICAL dumpFiles
34 CHARACTER*(1) pf
35
36 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
37 pf(1:1) = 'D'
38 ELSE
39 pf(1:1) = 'R'
40 ENDIF
41
42 IF (SHELFICEwriteState) THEN
43
44 IF ( DIFFERENT_MULTIPLE(SHELFICE_dumpFreq,myTime,deltaTClock)
45 & ) THEN
46
47 #ifdef ALLOW_MNC
48 IF ( useMNC .AND. SHELFICE_dump_mnc ) THEN
49 CALL MNC_CW_SET_UDIM('shelfice', -1, myThid)
50 CALL MNC_CW_RL_W_S('D','shelfice',0,0,'T', myTime, myThid)
51 CALL MNC_CW_SET_UDIM('shelfice', 0, myThid)
52 CALL MNC_CW_I_W_S('I','shelfice',0,0,'iter', myIter, myThid)
53 CALL MNC_CW_RL_W_S('D','shelfice',0,0,'model_time',
54 & myTime,myThid)
55 CALL MNC_CW_RS_W(pf,'shelfice',0,0,'fwFlux',
56 & shelfIceFreshWaterFlux,myThid)
57 CALL MNC_CW_RS_W(pf,'shelfice',0,0,'heatFlux',
58 & shelfIceHeatFlux,myThid)
59 ENDIF
60 #endif
61 IF (SHELFICE_dump_mdsio) THEN
62 WRITE(suff,'(I10.10)') myIter
63 _BARRIER
64 CALL WRITE_FLD_XY_RS( 'SHICE_fwFlux.',suff,
65 & shelficeFreshWaterFlux,myIter,myThid)
66 CALL WRITE_FLD_XY_RS( 'SHICE_heatFlux.',suff,
67 & shelficeHeatFlux,myIter,myThid)
68 _BARRIER
69 ENDIF
70
71 ENDIF
72 ENDIF
73
74 C----------------------------------------------------------------
75 C Do SHELFICE time averaging.
76 C----------------------------------------------------------------
77
78 #ifdef ALLOW_TIMEAVE
79
80 IF ( SHELFICE_taveFreq .GT. 0 ) THEN
81 C-- Time-cumulations
82 DO bj = myByLo(myThid), myByHi(myThid)
83 DO bi = myBxLo(myThid), myBxHi(myThid)
84 DO j=1,sNy
85 DO i=1,sNx
86 shelfice_FrshFluxtave(i,j,1,bi,bj)=
87 & shelfice_frshFluxtave(i,j,1,bi,bj)
88 & + shelficeFreshWaterFlux(i,j,bi,bj) *deltaTclock
89 shelfice_heatFluxtave(i,j,1,bi,bj) =
90 & shelfice_heatFluxtave(i,j,1,bi,bj)
91 & + shelficeHeatFlux(i,j,bi,bj) *deltaTclock
92 ENDDO
93 ENDDO
94 SHELFICE_TimeAve(1,bi,bj)=SHELFICE_TimeAve(1,bi,bj)+deltaTclock
95 ENDDO
96 ENDDO
97
98 C Dump files and restart average computation if needed
99 dumpFiles = .FALSE.
100 IF ( myIter .NE. nIter0 ) THEN
101 dumpFiles =
102 & DIFFERENT_MULTIPLE(SHELFICE_taveFreq,myTime,deltaTClock)
103 #ifdef ALLOW_CAL
104 IF ( useCAL ) THEN
105 CALL CAL_TIME2DUMP( SHELFICE_taveFreq, deltaTClock,
106 U dumpFiles,
107 I myTime, myIter, myThid )
108 ENDIF
109 #endif
110 ENDIF
111
112 IF (dumpFiles) THEN
113 C Normalize by integrated time
114 DO bj = myByLo(myThid), myByHi(myThid)
115 DO bi = myBxLo(myThid), myBxHi(myThid)
116 CALL TIMEAVE_NORMALIZ(shelfice_frshFluxtave,SHELFICE_timeave,
117 & 1,bi,bj,myThid)
118 CALL TIMEAVE_NORMALIZ(shelfice_heatFluxtave,SHELFICE_timeave,
119 & 1,bi,bj,myThid)
120 ENDDO
121 ENDDO
122
123 #ifdef ALLOW_MNC
124 IF (useMNC .AND. SHELFICE_tave_mnc) THEN
125 CALL MNC_CW_SET_UDIM('shelfice_tave', -1, myThid)
126 CALL MNC_CW_RL_W_S('D','shelfice_tave',0,0,'T', myTime, myThid)
127 CALL MNC_CW_SET_UDIM('shelfice_tave', 0, myThid)
128 CALL MNC_CW_I_W_S('I','shelfice_tave',0,0,'iter', myIter,
129 & myThid)
130 C CALL MNC_CW_RL_W_S('D','shelfice_tave',0,0,'model_time',
131 C & myTime,myThid)
132 CALL MNC_CW_RL_W(pf,'shelfice_tave',0,0,
133 & 'fwFluxtave',Shelfice_FrshFluxtave,myThid)
134 CALL MNC_CW_RL_W(pf,'shelfice_tave',0,0,
135 & 'heatFluxtave',Shelfice_HeatFluxtave,myThid)
136 ENDIF
137 #endif
138 IF (SHELFICE_tave_mdsio) THEN
139 WRITE(suff,'(I10.10)') myIter
140 _BARRIER
141 CALL WRITE_FLD_XY_RL('SHICE_fwFluxtave.',suff,
142 & shelfice_frshFluxtave,myIter,myThid)
143 CALL WRITE_FLD_XY_RL('SHICE_heatFluxtave.',suff,
144 & shelfice_heatFluxtave ,myIter,myThid)
145 _BARRIER
146 ENDIF
147
148 C Reset averages to zero
149 DO bj = myByLo(myThid), myByHi(myThid)
150 DO bi = myBxLo(myThid), myBxHi(myThid)
151 CALL TIMEAVE_RESET(shelfice_frshFluxtave,1,bi,bj,myThid)
152 CALL TIMEAVE_RESET(shelfice_heatFluxtave ,1,bi,bj,myThid)
153 SHELFICE_TimeAve(1,bi,bj) = 0. _d 0
154 ENDDO
155 ENDDO
156
157 ENDIF
158 C ( SHELFICE_taveFreq .GT. 0 )
159 ENDIF
160 #endif /* ALLOW_TIMEAVE */
161
162 RETURN
163 END

  ViewVC Help
Powered by ViewVC 1.1.22