/[MITgcm]/MITgcm_contrib/torge/itd/code/seaice_write_pickup.F
ViewVC logotype

Annotation of /MITgcm_contrib/torge/itd/code/seaice_write_pickup.F

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


Revision 1.5 - (hide annotations) (download)
Wed Apr 3 03:34:07 2013 UTC (12 years, 4 months ago) by torge
Branch: MAIN
Changes since 1.4: +9 -8 lines
the number of blocks nj was incorrectly stepped forward for case SEAICE_ITD

1 torge 1.5 C $Header: /u/gcmpack/MITgcm_contrib/torge/itd/code/seaice_write_pickup.F,v 1.4 2013/03/27 18:59:53 torge 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 torge 1.3 PARAMETER( listDim = 20 )
61 dimitri 1.1 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     IF (SEAICE_multDim.GT.1) THEN
83     j = j + 1
84     nj = nj-1
85     CALL WRITE_REC_3D_RL(fn,fp,MULTDIM,TICES, nj, myIter, myThid )
86     IF (j.LE.listDim) wrFldList(j) = 'siTICES '
87     C- switch to 2-D fields:
88 torge 1.5 c nj = nj*MULTDIM
89     nj = nj-MULTDIM+1
90 dimitri 1.1 ELSE
91     j = j + 1
92     nj = nj-1
93     CALL WRITE_REC_3D_RL( fn, fp, 1, TICE , nj, myIter, myThid )
94     IF (j.LE.listDim) wrFldList(j) = 'siTICE '
95     ENDIF
96    
97     C--- continue to write 2-D fields:
98     j = j + 1
99 torge 1.5 nj = nj-1
100 torge 1.3 #ifdef SEAICE_ITD
101     CALL WRITE_REC_3D_RL(fn, fp, nITD, AREAITD , nj, myIter, myThid)
102     IF (j.LE.listDim) wrFldList(j) = 'siAREAn '
103 torge 1.5 nj = nj-nITD+1
104 torge 1.3 #else
105 dimitri 1.1 CALL WRITE_REC_3D_RL( fn, fp, 1, AREA , nj, myIter, myThid )
106     IF (j.LE.listDim) wrFldList(j) = 'siAREA '
107 torge 1.3 #endif
108 dimitri 1.1
109     j = j + 1
110 torge 1.5 nj = nj-1
111 torge 1.3 #ifdef SEAICE_ITD
112     CALL WRITE_REC_3D_RL(fn, fp, nITD, HEFFITD , nj, myIter, myThid)
113     IF (j.LE.listDim) wrFldList(j) = 'siHEFFn '
114 torge 1.5 nj = nj-nITD+1
115 torge 1.3 #else
116 dimitri 1.1 CALL WRITE_REC_3D_RL( fn, fp, 1, HEFF , nj, myIter, myThid )
117     IF (j.LE.listDim) wrFldList(j) = 'siHEFF '
118 torge 1.3 #endif
119 dimitri 1.1
120     j = j + 1
121 torge 1.5 nj = nj-1
122 torge 1.3 #ifdef SEAICE_ITD
123     CALL WRITE_REC_3D_RL(fn, fp, nITD, HSNOWITD, nj, myIter, myThid)
124     IF (j.LE.listDim) wrFldList(j) = 'siHSNOWn'
125 torge 1.5 nj = nj-nITD+1
126 torge 1.3 #else
127 dimitri 1.1 CALL WRITE_REC_3D_RL( fn, fp, 1, HSNOW , nj, myIter, myThid )
128     IF (j.LE.listDim) wrFldList(j) = 'siHSNOW '
129 torge 1.3 #endif
130 dimitri 1.1 #ifdef SEAICE_VARIABLE_SALINITY
131     j = j + 1
132     nj = nj-1
133     CALL WRITE_REC_3D_RL( fn, fp, 1, HSALT , nj, myIter, myThid )
134     IF (j.LE.listDim) wrFldList(j) = 'siHSALT '
135     #endif
136     #ifdef ALLOW_SITRACER
137     DO iTrac = 1, SItrNumInUse
138     WRITE(fldName,'(A6,I2.2)') 'siTrac', iTrac
139     j = j + 1
140     nj = nj-1
141     CALL WRITE_REC_3D_RL( fn, fp, 1,
142 torge 1.4 & SItracer(1-OLx,1-OLy,1,1,iTrac),
143 dimitri 1.1 & nj, myIter, myThid )
144     IF (j.LE.listDim) wrFldList(j) = fldName
145     ENDDO
146     #endif
147     ENDIF
148    
149     C-- write Sea-Ice Dynamics variables (all 2-D fields):
150     j = j + 1
151     nj = nj-1
152     CALL WRITE_REC_3D_RL( fn, fp, 1, UICE , nj, myIter, myThid )
153     IF (j.LE.listDim) wrFldList(j) = 'siUICE '
154    
155     j = j + 1
156     nj = nj-1
157     CALL WRITE_REC_3D_RL( fn, fp, 1, VICE , nj, myIter, myThid )
158     IF (j.LE.listDim) wrFldList(j) = 'siVICE '
159    
160     #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
161     IF ( SEAICEuseEVP ) THEN
162     j = j + 1
163     nj = nj-1
164     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma1,
165     & nj, myIter, myThid )
166     IF (j.LE.listDim) wrFldList(j) = 'siSigm1 '
167    
168     j = j + 1
169     nj = nj-1
170     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma2,
171     & nj, myIter, myThid )
172     IF (j.LE.listDim) wrFldList(j) = 'siSigm2 '
173    
174     j = j + 1
175     nj = nj-1
176     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma12,
177     & nj, myIter, myThid )
178     IF (j.LE.listDim) wrFldList(j) = 'siSigm12'
179     ENDIF
180     #endif /* SEAICE_ALLOW_EVP */
181    
182     nWrFlds = j
183     IF ( nWrFlds.GT.listDim ) THEN
184     WRITE(msgBuf,'(2A,I5,A)') 'WRITE_SEAICE_PICKUP: ',
185     & 'trying to write ',nWrFlds,' fields'
186     CALL PRINT_ERROR( msgBuf, myThid )
187     WRITE(msgBuf,'(2A,I5,A)') 'WRITE_SEAICE_PICKUP: ',
188     & 'field-list dimension (listDim=',listDim,') too small'
189     CALL PRINT_ERROR( msgBuf, myThid )
190     STOP 'ABNORMAL END: S/R WRITE_SEAICE_PICKUP (list-size Pb)'
191     ENDIF
192    
193     #ifdef ALLOW_MDSIO
194     C uses this specific S/R to write (with more informations) only meta files
195     nj = ABS(nj)
196     glf = globalFiles
197     timList(1) = myTime
198     CALL MDS_WR_METAFILES( fn, fp, glf, .FALSE.,
199     & 0, 0, 1, ' ',
200     & nWrFlds, wrFldList,
201 torge 1.4 & 1, timList, oneRL,
202 dimitri 1.1 & nj, myIter, myThid )
203     C
204     #endif /* ALLOW_MDSIO */
205     C--------------------------
206     c ENDIF
207    
208     RETURN
209     END

  ViewVC Help
Powered by ViewVC 1.1.22