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

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

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


Revision 1.23 - (hide 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 mlosch 1.23 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_write_pickup.F,v 1.22 2014/04/29 01:53:29 jmc Exp $
2 jmc 1.1 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 heimbach 1.4 #include "SEAICE_SIZE.h"
27 jmc 1.1 #include "SEAICE_PARAMS.h"
28     #include "SEAICE.h"
29 heimbach 1.4 #include "SEAICE_TRACER.h"
30 jmc 1.1
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 jmc 1.7 _RL timList(1)
58 jmc 1.1 CHARACTER*(MAX_LEN_FNAM) fn
59     INTEGER listDim, nWrFlds
60     PARAMETER( listDim = 20 )
61 jmc 1.5 CHARACTER*(8) wrFldList(listDim)
62     INTEGER j, nj
63 jmc 1.1 CHARACTER*(MAX_LEN_MBUF) msgBuf
64 gforget 1.12 #ifdef ALLOW_SITRACER
65 jmc 1.5 CHARACTER*(8) fldName
66 heimbach 1.8 INTEGER iTrac
67 jmc 1.5 #endif
68 jmc 1.1 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 jmc 1.18
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 torge 1.17 j = j + 1
103     nj = nj-1
104 gforget 1.14 IF (SEAICE_multDim.GT.1) THEN
105 mlosch 1.23 CALL WRITE_REC_3D_RL(fn,fp,nITD,TICES, nj, myIter, myThid )
106 gforget 1.14 IF (j.LE.listDim) wrFldList(j) = 'siTICES '
107 jmc 1.1 C- switch to 2-D fields:
108 mlosch 1.23 c nj = nj*nITD
109     nj = nj-nITD+1
110 gforget 1.14 ELSE
111 mlosch 1.23 CALL WRITE_REC_LEV_RL( fn, fp, nITD, 1, 1, TICES,
112 jmc 1.22 I nj, myIter, myThid )
113 gforget 1.14 IF (j.LE.listDim) wrFldList(j) = 'siTICE '
114     ENDIF
115 jmc 1.1
116     C--- continue to write 2-D fields:
117     j = j + 1
118 torge 1.17 nj = nj-1
119 mlosch 1.3 CALL WRITE_REC_3D_RL( fn, fp, 1, AREA , nj, myIter, myThid )
120 jmc 1.1 IF (j.LE.listDim) wrFldList(j) = 'siAREA '
121     j = j + 1
122 torge 1.17 nj = nj-1
123 mlosch 1.3 CALL WRITE_REC_3D_RL( fn, fp, 1, HEFF , nj, myIter, myThid )
124 jmc 1.1 IF (j.LE.listDim) wrFldList(j) = 'siHEFF '
125     j = j + 1
126 torge 1.17 nj = nj-1
127 jmc 1.1 CALL WRITE_REC_3D_RL( fn, fp, 1, HSNOW , nj, myIter, myThid )
128     IF (j.LE.listDim) wrFldList(j) = 'siHSNOW '
129 jmc 1.18
130     #endif /* SEAICE_ITD */
131    
132 ifenty 1.6 #ifdef SEAICE_VARIABLE_SALINITY
133 jmc 1.1 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 heimbach 1.8 #ifdef ALLOW_SITRACER
139 gforget 1.13 DO iTrac = 1, SItrNumInUse
140 heimbach 1.8 WRITE(fldName,'(A6,I2.2)') 'siTrac', iTrac
141 heimbach 1.11 j = j + 1
142     nj = nj-1
143     CALL WRITE_REC_3D_RL( fn, fp, 1,
144 jmc 1.16 & SItracer(1-OLx,1-OLy,1,1,iTrac),
145 heimbach 1.11 & nj, myIter, myThid )
146     IF (j.LE.listDim) wrFldList(j) = fldName
147 heimbach 1.8 ENDDO
148     #endif
149 jmc 1.1 ENDIF
150    
151     C-- write Sea-Ice Dynamics variables (all 2-D fields):
152     j = j + 1
153     nj = nj-1
154 mlosch 1.3 CALL WRITE_REC_3D_RL( fn, fp, 1, UICE , nj, myIter, myThid )
155 jmc 1.1 IF (j.LE.listDim) wrFldList(j) = 'siUICE '
156    
157     j = j + 1
158     nj = nj-1
159 mlosch 1.3 CALL WRITE_REC_3D_RL( fn, fp, 1, VICE , nj, myIter, myThid )
160 jmc 1.1 IF (j.LE.listDim) wrFldList(j) = 'siVICE '
161    
162 mlosch 1.20 IF ( SEAICEuseBDF2 ) THEN
163 mlosch 1.19 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 jmc 1.1 #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 heimbach 1.8
206 jmc 1.1 #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 jmc 1.7 timList(1) = myTime
211 jmc 1.1 CALL MDS_WR_METAFILES( fn, fp, glf, .FALSE.,
212     & 0, 0, 1, ' ',
213     & nWrFlds, wrFldList,
214 jmc 1.16 & 1, timList, oneRL,
215 jmc 1.1 & nj, myIter, myThid )
216 heimbach 1.8 C
217 jmc 1.1 #endif /* ALLOW_MDSIO */
218     C--------------------------
219     c ENDIF
220    
221     RETURN
222     END

  ViewVC Help
Powered by ViewVC 1.1.22