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

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

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


Revision 1.20 - (hide annotations) (download)
Sun Nov 25 21:39:32 2007 UTC (16 years, 5 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 jmc 1.20 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_pickup.F,v 1.19 2007/10/19 03:21:39 jmc Exp $
2 edhill 1.5 C $Name: $
3 heimbach 1.2
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 mlosch 1.13 #include "SEAICE_PARAMS.h"
26 heimbach 1.2 #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 dimitri 1.18 INTEGER iRec
36 heimbach 1.2
37     _BARRIER
38    
39     C-- Read ice model fields
40     WRITE(fn,'(A,I10.10)') 'pickup_seaice.',nIter0
41 dimitri 1.18 iRec = 1
42 mlosch 1.16 #ifdef SEAICE_MULTICATEGORY
43 dimitri 1.18 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 mlosch 1.10 #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
62 dimitri 1.12 IF ( SEAICEuseEVP .AND. SEAICEuseEVPpickup ) THEN
63 dimitri 1.18 CALL MDSREADFIELD(fn,precFloat64,'RL',1,
64     & seaice_sigma1,iRec,myThid )
65     iRec = iRec + 1
66 mlosch 1.13 CALL MDSREADFIELD( fn, precFloat64, 'RL', 1,
67 dimitri 1.18 & seaice_sigma2,iRec,myThid )
68     iRec = iRec + 1
69 mlosch 1.13 CALL MDSREADFIELD( fn, precFloat64, 'RL', 1,
70 dimitri 1.18 & seaice_sigma12,iRec,myThid )
71     iRec = iRec + 1
72 dimitri 1.12 ENDIF
73 mlosch 1.10 #endif /* SEAICE_ALLOW_EVP */
74 dimitri 1.18 #ifdef SEAICE_SALINITY
75     CALL MDSREADFIELD(fn,precFloat64,'RL',1,HSALT,iRec,myThid)
76     #endif
77 heimbach 1.2
78     _BARRIER
79    
80 dimitri 1.7 C-- Update overlap regions
81 mlosch 1.17 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 dimitri 1.18 #ifdef SEAICE_MULTICATEGORY
85     cdm CALL EXCH_3D_RL ( TICES, MULTDIM, myThid )
86     #else
87 dimitri 1.3 _EXCH_XY_R8(TICE , myThid )
88 dimitri 1.18 #endif /* SEAICE_MULTICATEGORY */
89 dimitri 1.3 _EXCH_XY_R8(YNEG , myThid )
90     _EXCH_XY_R8(HSNOW, myThid )
91 mlosch 1.11 #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
92 dimitri 1.18 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 mlosch 1.11 #endif /* SEAICE_CGRID SEAICE_ALLOW_EVP */
98 dimitri 1.18 #ifdef SEAICE_SALINITY
99     _EXCH_XY_R8(HSALT, myThid )
100     #endif
101 heimbach 1.2
102     RETURN
103     END
104    
105 jmc 1.19 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 heimbach 1.2 C | SUBROUTINE SEAICE_WRITE_PICKUP |
114     C | o Write sea ice pickup file for restarting. |
115 jmc 1.19 C *==========================================================*
116     C *==========================================================*
117    
118     C !USES:
119 heimbach 1.2 IMPLICIT NONE
120    
121     C == Global variables ===
122     #include "SIZE.h"
123     #include "EEPARAMS.h"
124     #include "PARAMS.h"
125 mlosch 1.14 #include "SEAICE_PARAMS.h"
126 heimbach 1.2 #include "SEAICE.h"
127    
128 jmc 1.19 C !INPUT/OUTPUT PARAMETERS:
129 heimbach 1.2 C == Routine arguments ==
130 jmc 1.19 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 heimbach 1.2 INTEGER myThid
140 jmc 1.19 CEOP
141 heimbach 1.2
142     C == Local variables ==
143 jmc 1.19 C prec :: Precision of pickup file ( precFloat64 )
144 heimbach 1.2 CHARACTER*(MAX_LEN_FNAM) fn
145 dimitri 1.18 INTEGER iRec
146 jmc 1.19 INTEGER prec
147 heimbach 1.2 LOGICAL lgf
148    
149     C-- Write model fields
150 jmc 1.19 prec = precFloat64
151     WRITE(fn,'(A,A)') 'pickup_seaice.',suff
152    
153 dimitri 1.18 iRec = 1
154 mlosch 1.16 #ifdef SEAICE_MULTICATEGORY
155 jmc 1.19 CALL WRITE_REC_3D_RL(fn,prec,MULTDIM, TICES, iRec,myIter,myThid)
156 dimitri 1.18 iRec = iRec + MULTDIM
157     #else
158 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 1, TICE , iRec, myIter, myThid )
159 dimitri 1.18 iRec = iRec + 1
160     #endif /* SEAICE_MULTICATEGORY */
161 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 1, YNEG , iRec, myIter, myThid )
162 dimitri 1.18 iRec = iRec + 1
163 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 1, HSNOW, iRec, myIter, myThid )
164 dimitri 1.18 iRec = int((iRec+3)/3)
165 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 3, UICE , iRec, myIter, myThid )
166 dimitri 1.18 iRec = iRec + 1
167 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 3, VICE , iRec, myIter, myThid )
168 dimitri 1.18 iRec = iRec + 1
169 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 3, HEFF , iRec, myIter, myThid )
170 dimitri 1.18 iRec = iRec + 1
171 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 3, AREA , iRec, myIter, myThid )
172 dimitri 1.18 iRec = iRec * 3 + 1
173 mlosch 1.10 #if (defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP))
174 mlosch 1.15 IF ( SEAICEuseEVP ) THEN
175 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 1,
176     & seaice_sigma1, iRec, myIter, myThid )
177 dimitri 1.18 iRec = iRec + 1
178 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 1,
179     & seaice_sigma2, iRec, myIter, myThid )
180 dimitri 1.18 iRec = iRec + 1
181 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 1,
182     & seaice_sigma12, iRec, myIter, myThid )
183 dimitri 1.18 iRec = iRec + 1
184 dimitri 1.12 ENDIF
185 mlosch 1.10 #endif /* SEAICE_ALLOW_EVP */
186 dimitri 1.18 #ifdef SEAICE_SALINITY
187 jmc 1.19 CALL WRITE_REC_3D_RL( fn, prec, 1, HSALT, iRec, myIter, myThid )
188 dimitri 1.18 #endif
189 heimbach 1.2
190     RETURN
191     END

  ViewVC Help
Powered by ViewVC 1.1.22