/[MITgcm]/MITgcm/pkg/gmredi/gmredi_write_pickup.F
ViewVC logotype

Contents of /MITgcm/pkg/gmredi/gmredi_write_pickup.F

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


Revision 1.2 - (show annotations) (download)
Thu Mar 6 05:00:33 2014 UTC (10 years, 2 months ago) by m_bates
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64u, checkpoint64w, checkpoint64v, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint65, HEAD
Changes since 1.1: +6 -6 lines
fixed minor bug with writing k3d pickups

1 C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_write_pickup.F,v 1.1 2013/07/11 14:33:23 m_bates Exp $
2 C $Name: $
3
4 #include "GMREDI_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: GMREDI_WRITE_PICKUP
8
9 C !INTERFACE: ==========================================================
10 SUBROUTINE GMREDI_WRITE_PICKUP( permPickup,
11 & suff, myTime, myIter, myThid )
12
13 C !DESCRIPTION:
14 C Writes current state of passive tracers to a pickup file
15
16 C !USES: ===============================================================
17 IMPLICIT NONE
18 #include "SIZE.h"
19 #include "EEPARAMS.h"
20 #include "PARAMS.h"
21 #include "GMREDI.h"
22
23 C !INPUT PARAMETERS: ===================================================
24 C permPickup :: write a permanent pickup
25 C suff :: suffix for pickup file (eg. ckptA or 0000000010)
26 C myTime :: model time
27 C myIter :: time-step number
28 C myThid :: thread number
29 LOGICAL permPickup
30 CHARACTER*(*) suff
31 _RL myTime
32 INTEGER myIter
33 INTEGER myThid
34
35 C !OUTPUT PARAMETERS: ==================================================
36 C none
37
38 #ifdef GM_K3D
39
40 C === Functions ====
41 INTEGER ILNBLNK
42 EXTERNAL ILNBLNK
43
44 C !LOCAL VARIABLES: ====================================================
45 C m :: loop index / field number
46 C nm :: record number
47 C fp :: pickup-file precision
48 C glf :: local flag for "globalFiles"
49 C fn :: character buffer for creating filename
50 C nWrFlds :: number of fields being written
51 C listDim :: dimension of "wrFldList" local array
52 C wrFldList :: list of written fields
53 C msgBuf :: Informational/error message buffer
54 INTEGER i,j,k,bi,bj,m,n, nm, fp, lChar
55 LOGICAL glf
56 _RL timList(1)
57 CHARACTER*(MAX_LEN_FNAM) fn
58 INTEGER listDim, nWrFlds
59 PARAMETER( listDim = 2+2*GM_K3D_NModes )
60 CHARACTER*(8) wrFldList(listDim)
61 CHARACTER*(MAX_LEN_MBUF) msgBuf
62 _RL vec(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
63 CHARACTER*(8) fieldname
64 CEOP
65
66 IF (.NOT. GM_useK3D) RETURN
67
68 lChar = ILNBLNK(suff)
69 IF ( lChar.EQ.0 ) THEN
70 WRITE(fn,'(2A)') 'pickup_gmredi'
71 ELSE
72 WRITE(fn,'(2A)') 'pickup_gmredi.',suff(1:lChar)
73 ENDIF
74 fp = precFloat64
75 m = 0
76
77 C record number < 0 : a hack not to write meta files now:
78
79 C Centre mode
80 DO bj=myByLo(myThid),myByHi(myThid)
81 DO bi=myBxLo(myThid),myBxHi(myThid)
82 DO k=1,Nr
83 DO j=1-Oly,sNy+Oly
84 DO i=1-Olx,sNx+Olx
85 vec(i,j,k,bi,bj) = modesC(1,i,j,k,bi,bj)
86 ENDDO
87 ENDDO
88 ENDDO
89 ENDDO
90 ENDDO
91 m = m + 1
92 CALL WRITE_REC_3D_RL( fn, fp, Nr,
93 & vec, -m, myIter, myThid )
94 fieldname='mode01C'
95 IF (m.LE.listDim) wrFldList(m) = fieldname
96
97 C Western Mode
98 DO n=1,GM_K3D_NModes
99 DO bj=myByLo(myThid),myByHi(myThid)
100 DO bi=myBxLo(myThid),myBxHi(myThid)
101 DO k=1,Nr
102 DO j=1-Oly,sNy+Oly
103 DO i=1-Olx,sNx+Olx
104 vec(i,j,k,bi,bj) = modesW(n,i,j,k,bi,bj)
105 ENDDO
106 ENDDO
107 ENDDO
108 ENDDO
109 ENDDO
110 m = m + 1
111 CALL WRITE_REC_3D_RL( fn, fp, Nr,
112 & vec, -m, myIter, myThid )
113 WRITE(fieldname, '(A,I2.2,A)') 'mode',n,'W'
114 IF (m.LE.listDim) wrFldList(m) = fieldname
115 ENDDO
116
117 C Southern Mode
118 DO n=1,GM_K3D_NModes
119 DO bj=myByLo(myThid),myByHi(myThid)
120 DO bi=myBxLo(myThid),myBxHi(myThid)
121 DO k=1,Nr
122 DO j=1-Oly,sNy+Oly
123 DO i=1-Olx,sNx+Olx
124 vec(i,j,k,bi,bj) = modesS(n,i,j,k,bi,bj)
125 ENDDO
126 ENDDO
127 ENDDO
128 ENDDO
129 ENDDO
130 m = m + 1
131 CALL WRITE_REC_3D_RL( fn, fp, Nr,
132 & vec, -m, myIter, myThid )
133 WRITE(fieldname, '(A,I2.2,A)') 'mode',n,'S'
134 IF (m.LE.listDim) wrFldList(m) = fieldname
135 ENDDO
136 C--------------------------
137
138 C- switch to 2-D fields:
139 nm = -m*Nr
140
141 C The deformation radius (2D field)
142 m = m + 1
143 nm = nm-1
144 CALL WRITE_REC_3D_RL( fn, fp, 1,
145 & Rdef, nm, myIter, myThid )
146 fieldname = 'Rdef'
147 IF (m.LE.listDim) wrFldList(m) = fieldname
148
149 nWrFlds = m
150 IF ( nWrFlds.GT.listDim ) THEN
151 WRITE(msgBuf,'(2A,I5,A)') 'GMREDI_WRITE_PICKUP: ',
152 & 'trying to write ',nWrFlds,' fields'
153 CALL PRINT_ERROR( msgBuf, myThid )
154 WRITE(msgBuf,'(2A,I5,A)') 'GMREDI_WRITE_PICKUP: ',
155 & 'field-list dimension (listDim=',listDim,') too small'
156 CALL PRINT_ERROR( msgBuf, myThid )
157 CALL ALL_PROC_DIE( myThid )
158 STOP 'ABNORMAL END: S/R GMREDI_WRITE_PICKUP (list-size Pb)'
159 ENDIF
160 #ifdef ALLOW_MDSIO
161 C uses this specific S/R to write (with more informations) only meta files
162 m = 1
163 nm = ABS(nm)
164 IF ( nWrFlds*Nr .EQ. nm ) THEN
165 m = Nr
166 nm = nWrFlds
167 ENDIF
168 glf = globalFiles
169 timList(1) = myTime
170 CALL MDS_WR_METAFILES( fn, fp, glf, .FALSE.,
171 & 0, 0, m, ' ',
172 & nWrFlds, wrFldList,
173 & 1, timList, oneRL,
174 & nm, myIter, myThid )
175 #endif /* ALLOW_MDSIO */
176 C--------------------------
177
178 #endif /* GM_K3D */
179
180 RETURN
181 END

  ViewVC Help
Powered by ViewVC 1.1.22