/[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.1 - (hide annotations) (download)
Fri Sep 20 12:38:04 2013 UTC (11 years, 10 months ago) by dimitri
Branch: MAIN
adding llc_2160 and llc_4320 coonfiguration files

1 dimitri 1.1 C $Header: /CVS/people/chenze/ECCO/code-async/seaice_write_pickup.F,v 1.3 2013/09/14 02:16:11 chenze 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    
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     CALL WRITE_REC_3D_RL(fn,fp,MULTDIM,TICES, nj, myIter, myThid )
134     IF (j.LE.listDim) wrFldList(j) = 'siTICES '
135     C- switch to 2-D fields:
136     c nj = nj*MULTDIM
137     nj = nj-MULTDIM+1
138     ELSE
139     CALL WRITE_REC_3D_RL( fn, fp, 1, TICE , nj, myIter, myThid )
140     IF (j.LE.listDim) wrFldList(j) = 'siTICE '
141     ENDIF
142    
143     C--- continue to write 2-D fields:
144     j = j + 1
145     nj = nj-1
146     CALL WRITE_REC_3D_RL( fn, fp, 1, AREA , nj, myIter, myThid )
147     IF (j.LE.listDim) wrFldList(j) = 'siAREA '
148     j = j + 1
149     nj = nj-1
150     CALL WRITE_REC_3D_RL( fn, fp, 1, HEFF , nj, myIter, myThid )
151     IF (j.LE.listDim) wrFldList(j) = 'siHEFF '
152     j = j + 1
153     nj = nj-1
154     CALL WRITE_REC_3D_RL( fn, fp, 1, HSNOW , nj, myIter, myThid )
155     IF (j.LE.listDim) wrFldList(j) = 'siHSNOW '
156    
157     #endif /* SEAICE_ITD */
158    
159     #ifdef SEAICE_VARIABLE_SALINITY
160     j = j + 1
161     nj = nj-1
162     CALL WRITE_REC_3D_RL( fn, fp, 1, HSALT , nj, myIter, myThid )
163     IF (j.LE.listDim) wrFldList(j) = 'siHSALT '
164     #endif
165     #ifdef ALLOW_SITRACER
166     DO iTrac = 1, SItrNumInUse
167     WRITE(fldName,'(A6,I2.2)') 'siTrac', iTrac
168     j = j + 1
169     nj = nj-1
170     CALL WRITE_REC_3D_RL( fn, fp, 1,
171     & SItracer(1-OLx,1-OLy,1,1,iTrac),
172     & nj, myIter, myThid )
173     IF (j.LE.listDim) wrFldList(j) = fldName
174     ENDDO
175     #endif
176     ENDIF
177    
178     C-- write Sea-Ice Dynamics variables (all 2-D fields):
179     j = j + 1
180     nj = nj-1
181     CALL WRITE_REC_3D_RL( fn, fp, 1, UICE , nj, myIter, myThid )
182     IF (j.LE.listDim) wrFldList(j) = 'siUICE '
183    
184     j = j + 1
185     nj = nj-1
186     CALL WRITE_REC_3D_RL( fn, fp, 1, VICE , nj, myIter, myThid )
187     IF (j.LE.listDim) wrFldList(j) = 'siVICE '
188    
189     IF ( SEAICEuseAB2 ) THEN
190     j = j + 1
191     nj = nj-1
192     CALL WRITE_REC_3D_RL( fn, fp, 1, uIceNm1 , nj, myIter, myThid )
193     IF (j.LE.listDim) wrFldList(j) = 'siUicNm1'
194    
195     j = j + 1
196     nj = nj-1
197     CALL WRITE_REC_3D_RL( fn, fp, 1, vIceNm1 , nj, myIter, myThid )
198     IF (j.LE.listDim) wrFldList(j) = 'siVicNm1'
199     ENDIF
200     #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
201     IF ( SEAICEuseEVP ) THEN
202     j = j + 1
203     nj = nj-1
204     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma1,
205     & nj, myIter, myThid )
206     IF (j.LE.listDim) wrFldList(j) = 'siSigm1 '
207    
208     j = j + 1
209     nj = nj-1
210     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma2,
211     & nj, myIter, myThid )
212     IF (j.LE.listDim) wrFldList(j) = 'siSigm2 '
213    
214     j = j + 1
215     nj = nj-1
216     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma12,
217     & nj, myIter, myThid )
218     IF (j.LE.listDim) wrFldList(j) = 'siSigm12'
219     ENDIF
220     #endif /* SEAICE_ALLOW_EVP */
221    
222     nWrFlds = j
223     IF ( nWrFlds.GT.listDim ) THEN
224     WRITE(msgBuf,'(2A,I5,A)') 'WRITE_SEAICE_PICKUP: ',
225     & 'trying to write ',nWrFlds,' fields'
226     CALL PRINT_ERROR( msgBuf, myThid )
227     WRITE(msgBuf,'(2A,I5,A)') 'WRITE_SEAICE_PICKUP: ',
228     & 'field-list dimension (listDim=',listDim,') too small'
229     CALL PRINT_ERROR( msgBuf, myThid )
230     STOP 'ABNORMAL END: S/R WRITE_SEAICE_PICKUP (list-size Pb)'
231     ENDIF
232    
233     #ifdef ALLOW_MDSIO
234     C uses this specific S/R to write (with more informations) only meta files
235     nj = ABS(nj)
236     glf = globalFiles
237     timList(1) = myTime
238     CALL MDS_WR_METAFILES( fn, fp, glf, .FALSE.,
239     & 0, 0, 1, ' ',
240     & nWrFlds, wrFldList,
241     & 1, timList, oneRL,
242     & nj, myIter, myThid )
243     C
244     #endif /* ALLOW_MDSIO */
245     C--------------------------
246     c ENDIF
247    
248     RETURN
249     END

  ViewVC Help
Powered by ViewVC 1.1.22