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

Contents of /MITgcm/pkg/seaice/seaice_pickup.F

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


Revision 1.20 - (show annotations) (download)
Sun Nov 25 21:39:32 2007 UTC (16 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.19: +1 -1 lines
FILE REMOVED
new version of seaice read/write pickup: Only write/read fields needed
for a restart.

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_pickup.F,v 1.19 2007/10/19 03:21:39 jmc Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5
6 C-- File seaice_pickup.F: Routines to handle reading and writing
7 C-- sea ice pickup files.
8 C-- Contents
9 C-- o SEAICE_READ_PICKUP - Read sea ice pickup file for restarting.
10 C-- o SEAICE_WRITE_PICKUP - Write out sea ice pickup file.
11
12 CStartofinterface
13 SUBROUTINE SEAICE_READ_PICKUP ( myThid )
14 C /==========================================================\
15 C | SUBROUTINE SEAICE_READ_PICKUP |
16 C | o Read in sea ice pickup file for restarting. |
17 C |==========================================================|
18 C \==========================================================/
19 IMPLICIT NONE
20
21 C == Global variables ===
22 #include "SIZE.h"
23 #include "EEPARAMS.h"
24 #include "PARAMS.h"
25 #include "SEAICE_PARAMS.h"
26 #include "SEAICE.h"
27
28 C == Routine arguments ==
29 C myThid - Thread number for this instance of the routine.
30 INTEGER myThid
31 CEndofinterface
32
33 C == Local variables ==
34 CHARACTER*(MAX_LEN_FNAM) fn
35 INTEGER iRec
36
37 _BARRIER
38
39 C-- Read ice model fields
40 WRITE(fn,'(A,I10.10)') 'pickup_seaice.',nIter0
41 iRec = 1
42 #ifdef SEAICE_MULTICATEGORY
43 CALL MDSREADFIELD(fn,precFloat64,'RL',MULTDIM,TICES,iRec,myThid)
44 iRec = iRec + MULTDIM
45 #else
46 CALL MDSREADFIELD(fn,precFloat64,'RL',1,TICE,iRec,myThid)
47 iRec = iRec + 1
48 #endif /* SEAICE_MULTICATEGORY */
49 CALL MDSREADFIELD(fn,precFloat64,'RL',1,YNEG,iRec,myThid)
50 iRec = iRec + 1
51 CALL MDSREADFIELD(fn,precFloat64,'RL',1,HSNOW,iRec,myThid)
52 iRec = int((iRec+3)/3)
53 CALL MDSREADFIELD(fn,precFloat64,'RL',3,UICE,iRec,myThid)
54 iRec = iRec + 1
55 CALL MDSREADFIELD(fn,precFloat64,'RL',3,VICE,iRec,myThid)
56 iRec = iRec + 1
57 CALL MDSREADFIELD(fn,precFloat64,'RL',3,HEFF,iRec,myThid)
58 iRec = iRec + 1
59 CALL MDSREADFIELD(fn,precFloat64,'RL',3,AREA,iRec,myThid)
60 iRec = iRec * 3 + 1
61 #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
62 IF ( SEAICEuseEVP .AND. SEAICEuseEVPpickup ) THEN
63 CALL MDSREADFIELD(fn,precFloat64,'RL',1,
64 & seaice_sigma1,iRec,myThid )
65 iRec = iRec + 1
66 CALL MDSREADFIELD( fn, precFloat64, 'RL', 1,
67 & seaice_sigma2,iRec,myThid )
68 iRec = iRec + 1
69 CALL MDSREADFIELD( fn, precFloat64, 'RL', 1,
70 & seaice_sigma12,iRec,myThid )
71 iRec = iRec + 1
72 ENDIF
73 #endif /* SEAICE_ALLOW_EVP */
74 #ifdef SEAICE_SALINITY
75 CALL MDSREADFIELD(fn,precFloat64,'RL',1,HSALT,iRec,myThid)
76 #endif
77
78 _BARRIER
79
80 C-- Update overlap regions
81 CALL EXCH_UV_3D_RL( UICE, VICE, .TRUE., 3, myThid )
82 CALL EXCH_3D_RL ( HEFF, 3, myThid )
83 CALL EXCH_3D_RL ( AREA, 3, myThid )
84 #ifdef SEAICE_MULTICATEGORY
85 cdm CALL EXCH_3D_RL ( TICES, MULTDIM, myThid )
86 #else
87 _EXCH_XY_R8(TICE , myThid )
88 #endif /* SEAICE_MULTICATEGORY */
89 _EXCH_XY_R8(YNEG , myThid )
90 _EXCH_XY_R8(HSNOW, myThid )
91 #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
92 IF ( SEAICEuseEVP .AND. SEAICEuseEVPpickup ) THEN
93 _EXCH_XY_R8(seaice_sigma1 , myThid )
94 _EXCH_XY_R8(seaice_sigma2 , myThid )
95 _EXCH_XY_R8(seaice_sigma12, myThid )
96 ENDIF
97 #endif /* SEAICE_CGRID SEAICE_ALLOW_EVP */
98 #ifdef SEAICE_SALINITY
99 _EXCH_XY_R8(HSALT, myThid )
100 #endif
101
102 RETURN
103 END
104
105 CBOP
106 C !ROUTINE: SEAICE_WRITE_PICKUP
107 C !INTERFACE:
108 SUBROUTINE SEAICE_WRITE_PICKUP ( permPickup, suff,
109 I myTime, myIter, myThid )
110
111 C !DESCRIPTION:
112 C *==========================================================*
113 C | SUBROUTINE SEAICE_WRITE_PICKUP |
114 C | o Write sea ice pickup file for restarting. |
115 C *==========================================================*
116 C *==========================================================*
117
118 C !USES:
119 IMPLICIT NONE
120
121 C == Global variables ===
122 #include "SIZE.h"
123 #include "EEPARAMS.h"
124 #include "PARAMS.h"
125 #include "SEAICE_PARAMS.h"
126 #include "SEAICE.h"
127
128 C !INPUT/OUTPUT PARAMETERS:
129 C == Routine arguments ==
130 C permPickup :: write a permanent pickup
131 C suff :: suffix for pickup file (eg. ckptA or 0000000010)
132 C myTime :: Current time in simulation
133 C myIter :: Current iteration number in simulation
134 C myThid :: My Thread Id number
135 LOGICAL permPickup
136 CHARACTER*(*) suff
137 _RL myTime
138 INTEGER myIter
139 INTEGER myThid
140 CEOP
141
142 C == Local variables ==
143 C prec :: Precision of pickup file ( precFloat64 )
144 CHARACTER*(MAX_LEN_FNAM) fn
145 INTEGER iRec
146 INTEGER prec
147 LOGICAL lgf
148
149 C-- Write model fields
150 prec = precFloat64
151 WRITE(fn,'(A,A)') 'pickup_seaice.',suff
152
153 iRec = 1
154 #ifdef SEAICE_MULTICATEGORY
155 CALL WRITE_REC_3D_RL(fn,prec,MULTDIM, TICES, iRec,myIter,myThid)
156 iRec = iRec + MULTDIM
157 #else
158 CALL WRITE_REC_3D_RL( fn, prec, 1, TICE , iRec, myIter, myThid )
159 iRec = iRec + 1
160 #endif /* SEAICE_MULTICATEGORY */
161 CALL WRITE_REC_3D_RL( fn, prec, 1, YNEG , iRec, myIter, myThid )
162 iRec = iRec + 1
163 CALL WRITE_REC_3D_RL( fn, prec, 1, HSNOW, iRec, myIter, myThid )
164 iRec = int((iRec+3)/3)
165 CALL WRITE_REC_3D_RL( fn, prec, 3, UICE , iRec, myIter, myThid )
166 iRec = iRec + 1
167 CALL WRITE_REC_3D_RL( fn, prec, 3, VICE , iRec, myIter, myThid )
168 iRec = iRec + 1
169 CALL WRITE_REC_3D_RL( fn, prec, 3, HEFF , iRec, myIter, myThid )
170 iRec = iRec + 1
171 CALL WRITE_REC_3D_RL( fn, prec, 3, AREA , iRec, myIter, myThid )
172 iRec = iRec * 3 + 1
173 #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
174 IF ( SEAICEuseEVP ) THEN
175 CALL WRITE_REC_3D_RL( fn, prec, 1,
176 & seaice_sigma1, iRec, myIter, myThid )
177 iRec = iRec + 1
178 CALL WRITE_REC_3D_RL( fn, prec, 1,
179 & seaice_sigma2, iRec, myIter, myThid )
180 iRec = iRec + 1
181 CALL WRITE_REC_3D_RL( fn, prec, 1,
182 & seaice_sigma12, iRec, myIter, myThid )
183 iRec = iRec + 1
184 ENDIF
185 #endif /* SEAICE_ALLOW_EVP */
186 #ifdef SEAICE_SALINITY
187 CALL WRITE_REC_3D_RL( fn, prec, 1, HSALT, iRec, myIter, myThid )
188 #endif
189
190 RETURN
191 END

  ViewVC Help
Powered by ViewVC 1.1.22