/[MITgcm]/MITgcm/pkg/seaice/seaice_write_pickup.F
ViewVC logotype

Contents of /MITgcm/pkg/seaice/seaice_write_pickup.F

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


Revision 1.23 - (show annotations) (download)
Tue May 27 15:24:00 2014 UTC (10 years ago) by mlosch
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64z, 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.22: +5 -5 lines
remove parameter MULTDIM, replace with nITD and runtime parameter
SEAICE_multDim (still hard-wired to nITD if SEAICE_ITD is defined)

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_write_pickup.F,v 1.22 2014/04/29 01:53:29 jmc Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: SEAICE_WRITE_PICKUP
8 C !INTERFACE:
9 SUBROUTINE SEAICE_WRITE_PICKUP ( permPickup, suff,
10 I myTime, myIter, myThid )
11
12 C !DESCRIPTION: \bv
13 C *==========================================================*
14 C | SUBROUTINE SEAICE_WRITE_PICKUP
15 C | o Write sea ice pickup file for restarting.
16 C *==========================================================*
17 C \ev
18
19 C !USES:
20 IMPLICIT NONE
21
22 C == Global variables ===
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 #include "PARAMS.h"
26 #include "SEAICE_SIZE.h"
27 #include "SEAICE_PARAMS.h"
28 #include "SEAICE.h"
29 #include "SEAICE_TRACER.h"
30
31 C !INPUT/OUTPUT PARAMETERS:
32 C == Routine arguments ==
33 C permPickup :: write a permanent pickup
34 C suff :: suffix for pickup file (eg. ckptA or 0000000010)
35 C myTime :: Current time in simulation
36 C myIter :: Current iteration number in simulation
37 C myThid :: My Thread Id number
38 LOGICAL permPickup
39 CHARACTER*(*) suff
40 _RL myTime
41 INTEGER myIter
42 INTEGER myThid
43
44 C !LOCAL VARIABLES:
45 C == Local variables ==
46 C fp :: pickup-file precision ( precFloat64 )
47 C glf :: local flag for "globalFiles"
48 C fn :: Temp. for building file name.
49 C nWrFlds :: number of fields being written
50 C listDim :: dimension of "wrFldList" local array
51 C wrFldList :: list of written fields
52 C j :: loop index / field number
53 C nj :: record number
54 C msgBuf :: Informational/error message buffer
55 INTEGER fp
56 LOGICAL glf
57 _RL timList(1)
58 CHARACTER*(MAX_LEN_FNAM) fn
59 INTEGER listDim, nWrFlds
60 PARAMETER( listDim = 20 )
61 CHARACTER*(8) wrFldList(listDim)
62 INTEGER j, nj
63 CHARACTER*(MAX_LEN_MBUF) msgBuf
64 #ifdef ALLOW_SITRACER
65 CHARACTER*(8) fldName
66 INTEGER iTrac
67 #endif
68 CEOP
69
70 C-- Write model fields
71 WRITE(fn,'(A,A)') 'pickup_seaice.',suff
72
73 c IF ( seaice_pickup_write_mdsio ) THEN
74
75 fp = precFloat64
76 j = 0
77 nj = 0
78 C record number < 0 : a hack not to write meta files now:
79
80 C-- write Sea-Ice Thermodynamics State variables, starting with 3-D fields:
81 IF ( .NOT.useThSIce ) THEN
82
83 #ifdef SEAICE_ITD
84
85 j = j + 1
86 CALL WRITE_REC_3D_RL( fn,fp, nITD, TICES, -j, myIter,myThid )
87 IF (j.LE.listDim) wrFldList(j) = 'siTICES '
88 j = j + 1
89 CALL WRITE_REC_3D_RL( fn,fp, nITD, AREAITD, -j, myIter,myThid )
90 IF (j.LE.listDim) wrFldList(j) = 'siAREAn '
91 j = j + 1
92 CALL WRITE_REC_3D_RL( fn,fp, nITD, HEFFITD, -j, myIter,myThid )
93 IF (j.LE.listDim) wrFldList(j) = 'siHEFFn '
94 j = j + 1
95 CALL WRITE_REC_3D_RL( fn,fp, nITD, HSNOWITD,-j, myIter,myThid )
96 IF (j.LE.listDim) wrFldList(j) = 'siHSNOWn'
97 C- switch to 2-D fields:
98 nj = -j*nITD
99
100 #else /* SEAICE_ITD */
101
102 j = j + 1
103 nj = nj-1
104 IF (SEAICE_multDim.GT.1) THEN
105 CALL WRITE_REC_3D_RL(fn,fp,nITD,TICES, nj, myIter, myThid )
106 IF (j.LE.listDim) wrFldList(j) = 'siTICES '
107 C- switch to 2-D fields:
108 c nj = nj*nITD
109 nj = nj-nITD+1
110 ELSE
111 CALL WRITE_REC_LEV_RL( fn, fp, nITD, 1, 1, TICES,
112 I nj, myIter, myThid )
113 IF (j.LE.listDim) wrFldList(j) = 'siTICE '
114 ENDIF
115
116 C--- continue to write 2-D fields:
117 j = j + 1
118 nj = nj-1
119 CALL WRITE_REC_3D_RL( fn, fp, 1, AREA , nj, myIter, myThid )
120 IF (j.LE.listDim) wrFldList(j) = 'siAREA '
121 j = j + 1
122 nj = nj-1
123 CALL WRITE_REC_3D_RL( fn, fp, 1, HEFF , nj, myIter, myThid )
124 IF (j.LE.listDim) wrFldList(j) = 'siHEFF '
125 j = j + 1
126 nj = nj-1
127 CALL WRITE_REC_3D_RL( fn, fp, 1, HSNOW , nj, myIter, myThid )
128 IF (j.LE.listDim) wrFldList(j) = 'siHSNOW '
129
130 #endif /* SEAICE_ITD */
131
132 #ifdef SEAICE_VARIABLE_SALINITY
133 j = j + 1
134 nj = nj-1
135 CALL WRITE_REC_3D_RL( fn, fp, 1, HSALT , nj, myIter, myThid )
136 IF (j.LE.listDim) wrFldList(j) = 'siHSALT '
137 #endif
138 #ifdef ALLOW_SITRACER
139 DO iTrac = 1, SItrNumInUse
140 WRITE(fldName,'(A6,I2.2)') 'siTrac', iTrac
141 j = j + 1
142 nj = nj-1
143 CALL WRITE_REC_3D_RL( fn, fp, 1,
144 & SItracer(1-OLx,1-OLy,1,1,iTrac),
145 & nj, myIter, myThid )
146 IF (j.LE.listDim) wrFldList(j) = fldName
147 ENDDO
148 #endif
149 ENDIF
150
151 C-- write Sea-Ice Dynamics variables (all 2-D fields):
152 j = j + 1
153 nj = nj-1
154 CALL WRITE_REC_3D_RL( fn, fp, 1, UICE , nj, myIter, myThid )
155 IF (j.LE.listDim) wrFldList(j) = 'siUICE '
156
157 j = j + 1
158 nj = nj-1
159 CALL WRITE_REC_3D_RL( fn, fp, 1, VICE , nj, myIter, myThid )
160 IF (j.LE.listDim) wrFldList(j) = 'siVICE '
161
162 IF ( SEAICEuseBDF2 ) THEN
163 j = j + 1
164 nj = nj-1
165 CALL WRITE_REC_3D_RL( fn, fp, 1, uIceNm1 , nj, myIter, myThid )
166 IF (j.LE.listDim) wrFldList(j) = 'siUicNm1'
167
168 j = j + 1
169 nj = nj-1
170 CALL WRITE_REC_3D_RL( fn, fp, 1, vIceNm1 , nj, myIter, myThid )
171 IF (j.LE.listDim) wrFldList(j) = 'siVicNm1'
172 ENDIF
173 #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
174 IF ( SEAICEuseEVP ) THEN
175 j = j + 1
176 nj = nj-1
177 CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma1,
178 & nj, myIter, myThid )
179 IF (j.LE.listDim) wrFldList(j) = 'siSigm1 '
180
181 j = j + 1
182 nj = nj-1
183 CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma2,
184 & nj, myIter, myThid )
185 IF (j.LE.listDim) wrFldList(j) = 'siSigm2 '
186
187 j = j + 1
188 nj = nj-1
189 CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma12,
190 & nj, myIter, myThid )
191 IF (j.LE.listDim) wrFldList(j) = 'siSigm12'
192 ENDIF
193 #endif /* SEAICE_ALLOW_EVP */
194
195 nWrFlds = j
196 IF ( nWrFlds.GT.listDim ) THEN
197 WRITE(msgBuf,'(2A,I5,A)') 'WRITE_SEAICE_PICKUP: ',
198 & 'trying to write ',nWrFlds,' fields'
199 CALL PRINT_ERROR( msgBuf, myThid )
200 WRITE(msgBuf,'(2A,I5,A)') 'WRITE_SEAICE_PICKUP: ',
201 & 'field-list dimension (listDim=',listDim,') too small'
202 CALL PRINT_ERROR( msgBuf, myThid )
203 STOP 'ABNORMAL END: S/R WRITE_SEAICE_PICKUP (list-size Pb)'
204 ENDIF
205
206 #ifdef ALLOW_MDSIO
207 C uses this specific S/R to write (with more informations) only meta files
208 nj = ABS(nj)
209 glf = globalFiles
210 timList(1) = myTime
211 CALL MDS_WR_METAFILES( fn, fp, glf, .FALSE.,
212 & 0, 0, 1, ' ',
213 & nWrFlds, wrFldList,
214 & 1, timList, oneRL,
215 & nj, myIter, myThid )
216 C
217 #endif /* ALLOW_MDSIO */
218 C--------------------------
219 c ENDIF
220
221 RETURN
222 END

  ViewVC Help
Powered by ViewVC 1.1.22