/[MITgcm]/MITgcm/model/src/write_pickup.F
ViewVC logotype

Annotation of /MITgcm/model/src/write_pickup.F

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


Revision 1.1 - (hide annotations) (download)
Thu Aug 24 01:14:19 2006 UTC (17 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: mitgcm_mapl_00, checkpoint58u_post, checkpoint58r_post, checkpoint58t_post, checkpoint58q_post, checkpoint58o_post, checkpoint58v_post, checkpoint58s_post, checkpoint58p_post
split checkpoint.F (between different S/R) ; clean up the code
 and use RW interface package (instead of low level MDSIO S/R)

1 jmc 1.1 C $Header: /u/gcmpack/MITgcm/model/src/checkpoint.F,v 1.67 2006/08/09 02:23:13 jmc Exp $
2     C $Name: $
3    
4     #include "PACKAGES_CONFIG.h"
5     #include "CPP_OPTIONS.h"
6    
7     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8     CBOP
9     C !ROUTINE: WRITE_PICKUP
10     C !INTERFACE:
11     SUBROUTINE WRITE_PICKUP(
12     I permPickup,
13     I myTime, myIter, myThid )
14    
15     C !DESCRIPTION:
16     C Write the main-model pickup-file and do it NOW.
17     C It writes both "rolling-pickup" files (ckptA,ckptB) and
18     C permanent pickup files (with iteration number in the file name).
19     C It calls routines from other packages (\textit{eg.} rw and mnc)
20     C to do the per-variable writes.
21    
22     C !USES:
23     IMPLICIT NONE
24     #include "SIZE.h"
25     #include "EEPARAMS.h"
26     #include "PARAMS.h"
27     #include "DYNVARS.h"
28     #include "SURFACE.h"
29     #ifdef ALLOW_NONHYDROSTATIC
30     #include "NH_VARS.h"
31     #endif
32     #ifdef ALLOW_MNC
33     #include "MNC_PARAMS.h"
34     #endif
35    
36     C !INPUT PARAMETERS:
37     C permPickup :: Is or is not a permanent pickup.
38     C myTime :: Current time of simulation ( s )
39     C myIter :: Iteration number
40     C myThid :: Thread number for this instance of the routine.
41     LOGICAL permPickup
42     _RL myTime
43     INTEGER myIter
44     INTEGER myThid
45     CEOP
46    
47     C !LOCAL VARIABLES:
48     C fn :: Temp. for building file name string.
49     C fp :: file precision
50     INTEGER fp
51     INTEGER i, nj
52     CHARACTER*(MAX_LEN_FNAM) fn
53    
54     C Write model fields
55     DO i = 1,MAX_LEN_FNAM
56     fn(i:i) = ' '
57     ENDDO
58     IF ( permPickup ) THEN
59     WRITE(fn,'(A,I10.10)') 'pickup.',myIter
60     ELSE
61     WRITE(fn,'(A,A)') 'pickup.',checkPtSuff(nCheckLev)
62     ENDIF
63    
64     C Going to really do some IO. Make everyone except master thread wait.
65     _BARRIER
66    
67     IF (pickup_write_mdsio) THEN
68    
69     fp = precFloat64
70    
71     #ifdef ALLOW_ADAMSBASHFORTH_3
72     CALL WRITE_REC_3D_RL( fn, fp, Nr, uVel, 1, myIter, myThid )
73     CALL WRITE_REC_3D_RL( fn, fp, Nr, guNm(1-Olx,1-Oly,1,1,1,1),
74     & 2, myIter, myThid )
75     CALL WRITE_REC_3D_RL( fn, fp, Nr, guNm(1-Olx,1-Oly,1,1,1,2),
76     & 3, myIter, myThid )
77     CALL WRITE_REC_3D_RL( fn, fp, Nr, vVel, 4, myIter, myThid )
78     CALL WRITE_REC_3D_RL( fn, fp, Nr, gvNm(1-Olx,1-Oly,1,1,1,1),
79     & 5, myIter, myThid )
80     CALL WRITE_REC_3D_RL( fn, fp, Nr, gvNm(1-Olx,1-Oly,1,1,1,2),
81     & 6, myIter, myThid )
82     CALL WRITE_REC_3D_RL( fn, fp, Nr, theta, 7, myIter, myThid )
83     CALL WRITE_REC_3D_RL( fn, fp, Nr, gtNm(1-Olx,1-Oly,1,1,1,1),
84     & 8, myIter, myThid )
85     CALL WRITE_REC_3D_RL( fn, fp, Nr, gtNm(1-Olx,1-Oly,1,1,1,2),
86     & 9, myIter, myThid )
87     CALL WRITE_REC_3D_RL( fn, fp, Nr, salt, 10, myIter, myThid )
88     CALL WRITE_REC_3D_RL( fn, fp, Nr, gsNm(1-Olx,1-Oly,1,1,1,1),
89     & 11, myIter, myThid )
90     CALL WRITE_REC_3D_RL( fn, fp, Nr, gsNm(1-Olx,1-Oly,1,1,1,2),
91     & 12, myIter, myThid )
92     nj = 12
93     #else /* ALLOW_ADAMSBASHFORTH_3 */
94     CALL WRITE_REC_3D_RL( fn, fp, Nr, uVel, 1, myIter, myThid )
95     CALL WRITE_REC_3D_RL( fn, fp, Nr, guNm1, 2, myIter, myThid )
96     CALL WRITE_REC_3D_RL( fn, fp, Nr, vVel, 3, myIter, myThid )
97     CALL WRITE_REC_3D_RL( fn, fp, Nr, gvNm1, 4, myIter, myThid )
98     CALL WRITE_REC_3D_RL( fn, fp, Nr, theta, 5, myIter, myThid )
99     CALL WRITE_REC_3D_RL( fn, fp, Nr, gtNm1, 6, myIter, myThid )
100     CALL WRITE_REC_3D_RL( fn, fp, Nr, salt, 7, myIter, myThid )
101     CALL WRITE_REC_3D_RL( fn, fp, Nr, gsNm1, 8, myIter, myThid )
102     nj = 8
103     #endif /* ALLOW_ADAMSBASHFORTH_3 */
104     CALL WRITE_REC_3D_RL( fn, fp, 1,etaN, nj*Nr+1, myIter, myThid )
105     #ifdef EXACT_CONSERV
106     CALL WRITE_REC_3D_RL( fn, fp, 1,dEtaHdt,nj*Nr+2,myIter,myThid )
107     CALL WRITE_REC_3D_RL( fn, fp, 1,etaHnm1,nj*Nr+3,myIter,myThid )
108     #endif /* EXACT_CONSERV */
109     IF ( useDynP_inEos_Zc ) THEN
110     IF ( permPickup ) THEN
111     WRITE(fn,'(A,I10.10)') 'pickup_ph.',myIter
112     ELSE
113     WRITE(fn,'(A,A)') 'pickup_ph.',checkPtSuff(nCheckLev)
114     ENDIF
115     CALL WRITE_REC_3D_RL( fn,fp,Nr, totPhiHyd,1, myIter,myThid )
116     ENDIF
117     #ifdef ALLOW_NONHYDROSTATIC
118     IF ( use3Dsolver ) THEN
119     IF ( permPickup ) THEN
120     WRITE(fn,'(A,I10.10)') 'pickup_nh.',myIter
121     ELSE
122     WRITE(fn,'(A,A)') 'pickup_nh.',checkPtSuff(nCheckLev)
123     ENDIF
124     CALL WRITE_REC_3D_RL( fn,fp,Nr, phi_nh, 1, myIter, myThid )
125     CALL WRITE_REC_3D_RL( fn,fp,Nr, gwNm1, 2, myIter, myThid )
126     ENDIF
127     #endif /* ALLOW_NONHYDROSTATIC */
128    
129     ENDIF
130    
131     #ifdef ALLOW_MNC
132     IF (useMNC .AND. pickup_write_mnc) THEN
133     IF ( permPickup ) THEN
134     WRITE(fn,'(A)') 'pickup'
135     ELSE
136     WRITE(fn,'(A,A)') 'pickup.',checkPtSuff(nCheckLev)
137     ENDIF
138     C First ***define*** the file group name
139     CALL MNC_CW_SET_UDIM(fn, 0, myThid)
140     IF ( permPickup ) THEN
141     CALL MNC_CW_SET_CITER(fn, 3, 3, myIter, 0, myThid)
142     ELSE
143     CALL MNC_CW_SET_CITER(fn, 2, -1, -1, -1, myThid)
144     ENDIF
145     C Then set the actual unlimited dimension
146     CALL MNC_CW_SET_UDIM(fn, 1, myThid)
147     CALL MNC_CW_RL_W_S('D',fn,0,0,'T', myTime, myThid)
148     CALL MNC_CW_I_W_S('I',fn,0,0,'iter', myIter, myThid)
149     CALL MNC_CW_RL_W('D',fn,0,0,'U', uVel, myThid)
150     CALL MNC_CW_RL_W('D',fn,0,0,'V', vVel, myThid)
151     CALL MNC_CW_RL_W('D',fn,0,0,'Temp', theta, myThid)
152     CALL MNC_CW_RL_W('D',fn,0,0,'S', salt, myThid)
153     CALL MNC_CW_RL_W('D',fn,0,0,'Eta', etaN, myThid)
154     #ifndef ALLOW_ADAMSBASHFORTH_3
155     CALL MNC_CW_RL_W('D',fn,0,0,'gUnm1', guNm1, myThid)
156     CALL MNC_CW_RL_W('D',fn,0,0,'gVnm1', gvNm1, myThid)
157     CALL MNC_CW_RL_W('D',fn,0,0,'gTnm1', gtNm1, myThid)
158     CALL MNC_CW_RL_W('D',fn,0,0,'gSnm1', gsNm1, myThid)
159     #endif /* ALLOW_ADAMSBASHFORTH_3 */
160     #ifdef EXACT_CONSERV
161     CALL MNC_CW_RL_W('D',fn,0,0,'dEtaHdt', dEtaHdt, myThid)
162     CALL MNC_CW_RL_W('D',fn,0,0,'EtaH', etaHnm1, myThid)
163     #endif
164     #ifdef ALLOW_NONHYDROSTATIC
165     IF ( use3Dsolver ) THEN
166     CALL MNC_CW_RL_W('D',fn,0,0,'phi_nh', phi_nh, myThid)
167     c CALL MNC_CW_RL_W('D',fn,0,0,'gW', gW, myThid)
168     CALL MNC_CW_RL_W('D',fn,0,0,'gWnm1', gwNm1, myThid)
169     ENDIF
170     #endif
171     IF ( useDynP_inEos_Zc ) THEN
172     CALL MNC_CW_RL_W('D',fn,0,0,'phiHyd', totPhiHyd, myThid)
173     ENDIF
174     ENDIF
175     #endif /* ALLOW_MNC */
176    
177     C-- Every one else must wait until writing is done.
178     _BARRIER
179    
180     RETURN
181     END

  ViewVC Help
Powered by ViewVC 1.1.22