/[MITgcm]/MITgcm_contrib/llc_hires/llc_4320/code-async/seaice_write_pickup.F
ViewVC logotype

Annotation of /MITgcm_contrib/llc_hires/llc_4320/code-async/seaice_write_pickup.F

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


Revision 1.3 - (hide annotations) (download)
Thu Apr 14 03:51:44 2016 UTC (9 years, 3 months ago) by dimitri
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +6 -5 lines
updating for checkpoint65v

1 dimitri 1.3 C $Header: /u/gcmpack/MITgcm_contrib/llc_hires/llc_4320/code-async/seaice_write_pickup.F,v 1.2 2014/03/06 02:45:05 dimitri Exp $
2 dimitri 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     #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    
71     chenze
72    
73     COMMON /ICOUNTER_COMM/ ICOUNTER
74     INTEGER ICOUNTER
75     CHARACTER*(MAX_LEN_MBUF) mysuff
76     WRITE(mysuff,'(I10.10)') myIter
77    
78     call timer_start('asyncio_seaice_pickup ',myThid)
79    
80     ICOUNTER = ICOUNTER+1
81     CALL beginNewEpoch(icounter,myIter,2)
82     CALL ASYNCIO_WRITE_FLD_XYM_RL( 'A.',mysuff,TICES,iCounter,myThid)
83     CALL ASYNCIO_WRITE_FLD_XY_RL( 'B.',mysuff,AREA,iCounter,myThid)
84     CALL ASYNCIO_WRITE_FLD_XY_RL( 'C.',mysuff,HEFF,iCounter,myThid)
85     CALL ASYNCIO_WRITE_FLD_XY_RL( 'D.',mysuff,HSNOW,iCounter,myThid)
86     CALL ASYNCIO_WRITE_FLD_XY_RL( 'G.',mysuff,HSALT,iCounter,myThid)
87     CALL ASYNCIO_WRITE_FLD_XY_RL( 'E.',mysuff,UICE,iCounter,myThid)
88     CALL ASYNCIO_WRITE_FLD_XY_RL( 'F.',mysuff,VICE,iCounter,myThid)
89    
90     call timer_stop('asyncio_seaice_pickup ',myThid)
91    
92     return
93    
94     chenze
95    
96    
97    
98     C-- Write model fields
99     WRITE(fn,'(A,A)') 'pickup_seaice.',suff
100    
101     c IF ( seaice_pickup_write_mdsio ) THEN
102    
103     fp = precFloat64
104     j = 0
105     nj = 0
106     C record number < 0 : a hack not to write meta files now:
107    
108     C-- write Sea-Ice Thermodynamics State variables, starting with 3-D fields:
109     IF ( .NOT.useThSIce ) THEN
110    
111     #ifdef SEAICE_ITD
112    
113     j = j + 1
114     CALL WRITE_REC_3D_RL( fn,fp, nITD, TICES, -j, myIter,myThid )
115     IF (j.LE.listDim) wrFldList(j) = 'siTICES '
116     j = j + 1
117     CALL WRITE_REC_3D_RL( fn,fp, nITD, AREAITD, -j, myIter,myThid )
118     IF (j.LE.listDim) wrFldList(j) = 'siAREAn '
119     j = j + 1
120     CALL WRITE_REC_3D_RL( fn,fp, nITD, HEFFITD, -j, myIter,myThid )
121     IF (j.LE.listDim) wrFldList(j) = 'siHEFFn '
122     j = j + 1
123     CALL WRITE_REC_3D_RL( fn,fp, nITD, HSNOWITD,-j, myIter,myThid )
124     IF (j.LE.listDim) wrFldList(j) = 'siHSNOWn'
125     C- switch to 2-D fields:
126     nj = -j*nITD
127    
128     #else /* SEAICE_ITD */
129    
130     j = j + 1
131     nj = nj-1
132     IF (SEAICE_multDim.GT.1) THEN
133 dimitri 1.3 CALL WRITE_REC_3D_RL(fn,fp,nITD,TICES, nj, myIter, myThid )
134 dimitri 1.1 IF (j.LE.listDim) wrFldList(j) = 'siTICES '
135     C- switch to 2-D fields:
136 dimitri 1.3 c nj = nj*nITD
137     nj = nj-nITD+1
138 dimitri 1.1 ELSE
139 dimitri 1.3 CALL WRITE_REC_LEV_RL( fn, fp, nITD, 1, 1, TICES,
140     I nj, myIter, myThid )
141 dimitri 1.1 IF (j.LE.listDim) wrFldList(j) = 'siTICE '
142     ENDIF
143    
144     C--- continue to write 2-D fields:
145     j = j + 1
146     nj = nj-1
147     CALL WRITE_REC_3D_RL( fn, fp, 1, AREA , nj, myIter, myThid )
148     IF (j.LE.listDim) wrFldList(j) = 'siAREA '
149     j = j + 1
150     nj = nj-1
151     CALL WRITE_REC_3D_RL( fn, fp, 1, HEFF , nj, myIter, myThid )
152     IF (j.LE.listDim) wrFldList(j) = 'siHEFF '
153     j = j + 1
154     nj = nj-1
155     CALL WRITE_REC_3D_RL( fn, fp, 1, HSNOW , nj, myIter, myThid )
156     IF (j.LE.listDim) wrFldList(j) = 'siHSNOW '
157    
158     #endif /* SEAICE_ITD */
159    
160     #ifdef SEAICE_VARIABLE_SALINITY
161     j = j + 1
162     nj = nj-1
163     CALL WRITE_REC_3D_RL( fn, fp, 1, HSALT , nj, myIter, myThid )
164     IF (j.LE.listDim) wrFldList(j) = 'siHSALT '
165     #endif
166     #ifdef ALLOW_SITRACER
167     DO iTrac = 1, SItrNumInUse
168     WRITE(fldName,'(A6,I2.2)') 'siTrac', iTrac
169     j = j + 1
170     nj = nj-1
171     CALL WRITE_REC_3D_RL( fn, fp, 1,
172     & SItracer(1-OLx,1-OLy,1,1,iTrac),
173     & nj, myIter, myThid )
174     IF (j.LE.listDim) wrFldList(j) = fldName
175     ENDDO
176     #endif
177     ENDIF
178    
179     C-- write Sea-Ice Dynamics variables (all 2-D fields):
180     j = j + 1
181     nj = nj-1
182     CALL WRITE_REC_3D_RL( fn, fp, 1, UICE , nj, myIter, myThid )
183     IF (j.LE.listDim) wrFldList(j) = 'siUICE '
184    
185     j = j + 1
186     nj = nj-1
187     CALL WRITE_REC_3D_RL( fn, fp, 1, VICE , nj, myIter, myThid )
188     IF (j.LE.listDim) wrFldList(j) = 'siVICE '
189    
190 dimitri 1.2 IF ( SEAICEuseBDF2 ) THEN
191 dimitri 1.1 j = j + 1
192     nj = nj-1
193     CALL WRITE_REC_3D_RL( fn, fp, 1, uIceNm1 , nj, myIter, myThid )
194     IF (j.LE.listDim) wrFldList(j) = 'siUicNm1'
195    
196     j = j + 1
197     nj = nj-1
198     CALL WRITE_REC_3D_RL( fn, fp, 1, vIceNm1 , nj, myIter, myThid )
199     IF (j.LE.listDim) wrFldList(j) = 'siVicNm1'
200     ENDIF
201     #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
202     IF ( SEAICEuseEVP ) THEN
203     j = j + 1
204     nj = nj-1
205     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma1,
206     & nj, myIter, myThid )
207     IF (j.LE.listDim) wrFldList(j) = 'siSigm1 '
208    
209     j = j + 1
210     nj = nj-1
211     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma2,
212     & nj, myIter, myThid )
213     IF (j.LE.listDim) wrFldList(j) = 'siSigm2 '
214    
215     j = j + 1
216     nj = nj-1
217     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma12,
218     & nj, myIter, myThid )
219     IF (j.LE.listDim) wrFldList(j) = 'siSigm12'
220     ENDIF
221     #endif /* SEAICE_ALLOW_EVP */
222    
223     nWrFlds = j
224     IF ( nWrFlds.GT.listDim ) THEN
225     WRITE(msgBuf,'(2A,I5,A)') 'WRITE_SEAICE_PICKUP: ',
226     & 'trying to write ',nWrFlds,' fields'
227     CALL PRINT_ERROR( msgBuf, myThid )
228     WRITE(msgBuf,'(2A,I5,A)') 'WRITE_SEAICE_PICKUP: ',
229     & 'field-list dimension (listDim=',listDim,') too small'
230     CALL PRINT_ERROR( msgBuf, myThid )
231     STOP 'ABNORMAL END: S/R WRITE_SEAICE_PICKUP (list-size Pb)'
232     ENDIF
233    
234     #ifdef ALLOW_MDSIO
235     C uses this specific S/R to write (with more informations) only meta files
236     nj = ABS(nj)
237     glf = globalFiles
238     timList(1) = myTime
239     CALL MDS_WR_METAFILES( fn, fp, glf, .FALSE.,
240     & 0, 0, 1, ' ',
241     & nWrFlds, wrFldList,
242     & 1, timList, oneRL,
243     & nj, myIter, myThid )
244     C
245     #endif /* ALLOW_MDSIO */
246     C--------------------------
247     c ENDIF
248    
249     RETURN
250     END

  ViewVC Help
Powered by ViewVC 1.1.22