/[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.2 - (hide annotations) (download)
Fri Apr 27 22:25:23 2012 UTC (13 years, 3 months ago) by dimitri
Branch: MAIN
Changes since 1.1: +21 -1 lines
first check in of itd code

1 dimitri 1.1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_write_pickup.F,v 1.14 2012/03/05 15:21:45 gforget 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 dimitri 1.2 CToM<<<
61     C PARAMETER( listDim = 20 )
62     PARAMETER( listDim = 23 )
63     C>>>ToM
64 dimitri 1.1 CHARACTER*(8) wrFldList(listDim)
65     INTEGER j, nj
66     CHARACTER*(MAX_LEN_MBUF) msgBuf
67     #ifdef ALLOW_SITRACER
68     CHARACTER*(8) fldName
69     INTEGER iTrac
70     #endif
71     CEOP
72    
73     C-- Write model fields
74     WRITE(fn,'(A,A)') 'pickup_seaice.',suff
75    
76     c IF ( seaice_pickup_write_mdsio ) THEN
77    
78     fp = precFloat64
79     j = 0
80     nj = 0
81     C record number < 0 : a hack not to write meta files now:
82    
83     C-- write Sea-Ice Thermodynamics State variables, starting with 3-D fields:
84     IF ( .NOT.useThSIce ) THEN
85     IF (SEAICE_multDim.GT.1) THEN
86     j = j + 1
87     nj = nj-1
88     CALL WRITE_REC_3D_RL(fn,fp,MULTDIM,TICES, nj, myIter, myThid )
89     IF (j.LE.listDim) wrFldList(j) = 'siTICES '
90     C- switch to 2-D fields:
91     nj = nj*MULTDIM
92     ELSE
93     j = j + 1
94     nj = nj-1
95     CALL WRITE_REC_3D_RL( fn, fp, 1, TICE , nj, myIter, myThid )
96     IF (j.LE.listDim) wrFldList(j) = 'siTICE '
97     ENDIF
98    
99     C--- continue to write 2-D fields:
100     j = j + 1
101     nj = nj-1
102     CALL WRITE_REC_3D_RL( fn, fp, 1, AREA , nj, myIter, myThid )
103     IF (j.LE.listDim) wrFldList(j) = 'siAREA '
104    
105     j = j + 1
106     nj = nj-1
107     CALL WRITE_REC_3D_RL( fn, fp, 1, HEFF , nj, myIter, myThid )
108     IF (j.LE.listDim) wrFldList(j) = 'siHEFF '
109    
110     j = j + 1
111     nj = nj-1
112     CALL WRITE_REC_3D_RL( fn, fp, 1, HSNOW , nj, myIter, myThid )
113     IF (j.LE.listDim) wrFldList(j) = 'siHSNOW '
114     #ifdef SEAICE_VARIABLE_SALINITY
115     j = j + 1
116     nj = nj-1
117     CALL WRITE_REC_3D_RL( fn, fp, 1, HSALT , nj, myIter, myThid )
118     IF (j.LE.listDim) wrFldList(j) = 'siHSALT '
119     #endif
120     #ifdef ALLOW_SITRACER
121     DO iTrac = 1, SItrNumInUse
122     WRITE(fldName,'(A6,I2.2)') 'siTrac', iTrac
123     j = j + 1
124     nj = nj-1
125     CALL WRITE_REC_3D_RL( fn, fp, 1,
126     & SItracer(1-Olx,1-Oly,1,1,iTrac),
127     & nj, myIter, myThid )
128     IF (j.LE.listDim) wrFldList(j) = fldName
129     ENDDO
130     #endif
131 dimitri 1.2 #ifdef SEAICE_ITD
132     C-- write 3-D fields related to ice thickness distribution
133     j = j + 1
134     nj = nj-1
135     CALL WRITE_REC_3D_RL( fn, fp, 1, AREAITD , nj, myIter, myThid )
136     IF (j.LE.listDim) wrFldList(j) = 'siAREAn '
137    
138     j = j + 1
139     nj = nj-1
140     CALL WRITE_REC_3D_RL( fn, fp, 1, HEFFITD , nj, myIter, myThid )
141     IF (j.LE.listDim) wrFldList(j) = 'siHEFFn '
142    
143     j = j + 1
144     nj = nj-1
145     CALL WRITE_REC_3D_RL( fn, fp, 1, HSNOWITD, nj, myIter, myThid )
146     IF (j.LE.listDim) wrFldList(j) = 'siHSNOWn'
147     #endif
148 dimitri 1.1 ENDIF
149    
150     C-- write Sea-Ice Dynamics variables (all 2-D fields):
151     j = j + 1
152     nj = nj-1
153     CALL WRITE_REC_3D_RL( fn, fp, 1, UICE , nj, myIter, myThid )
154     IF (j.LE.listDim) wrFldList(j) = 'siUICE '
155    
156     j = j + 1
157     nj = nj-1
158     CALL WRITE_REC_3D_RL( fn, fp, 1, VICE , nj, myIter, myThid )
159     IF (j.LE.listDim) wrFldList(j) = 'siVICE '
160    
161     #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
162     IF ( SEAICEuseEVP ) THEN
163     j = j + 1
164     nj = nj-1
165     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma1,
166     & nj, myIter, myThid )
167     IF (j.LE.listDim) wrFldList(j) = 'siSigm1 '
168    
169     j = j + 1
170     nj = nj-1
171     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma2,
172     & nj, myIter, myThid )
173     IF (j.LE.listDim) wrFldList(j) = 'siSigm2 '
174    
175     j = j + 1
176     nj = nj-1
177     CALL WRITE_REC_3D_RL( fn, fp, 1, seaice_sigma12,
178     & nj, myIter, myThid )
179     IF (j.LE.listDim) wrFldList(j) = 'siSigm12'
180     ENDIF
181     #endif /* SEAICE_ALLOW_EVP */
182    
183     nWrFlds = j
184     IF ( nWrFlds.GT.listDim ) THEN
185     WRITE(msgBuf,'(2A,I5,A)') 'WRITE_SEAICE_PICKUP: ',
186     & 'trying to write ',nWrFlds,' fields'
187     CALL PRINT_ERROR( msgBuf, myThid )
188     WRITE(msgBuf,'(2A,I5,A)') 'WRITE_SEAICE_PICKUP: ',
189     & 'field-list dimension (listDim=',listDim,') too small'
190     CALL PRINT_ERROR( msgBuf, myThid )
191     STOP 'ABNORMAL END: S/R WRITE_SEAICE_PICKUP (list-size Pb)'
192     ENDIF
193    
194     #ifdef ALLOW_MDSIO
195     C uses this specific S/R to write (with more informations) only meta files
196     nj = ABS(nj)
197     glf = globalFiles
198     timList(1) = myTime
199     CALL MDS_WR_METAFILES( fn, fp, glf, .FALSE.,
200     & 0, 0, 1, ' ',
201     & nWrFlds, wrFldList,
202     & 1, timList,
203     & nj, myIter, myThid )
204     C
205     #endif /* ALLOW_MDSIO */
206     C--------------------------
207     c ENDIF
208    
209     RETURN
210     END

  ViewVC Help
Powered by ViewVC 1.1.22