/[MITgcm]/MITgcm/pkg/obcs/obcs_checkpoint.F
ViewVC logotype

Contents of /MITgcm/pkg/obcs/obcs_checkpoint.F

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


Revision 1.4 - (show annotations) (download)
Mon Sep 20 23:22:57 2004 UTC (19 years, 8 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint57m_post, checkpoint57g_pre, checkpoint57s_post, checkpoint58b_post, checkpoint57b_post, checkpoint57g_post, checkpoint56b_post, checkpoint57y_post, checkpoint57r_post, checkpoint57d_post, checkpoint57i_post, checkpoint59, checkpoint58, checkpoint57, checkpoint56, checkpoint58f_post, checkpoint57n_post, checkpoint58d_post, checkpoint58a_post, checkpoint57z_post, checkpoint58y_post, checkpoint55a_post, checkpoint58t_post, checkpoint55i_post, checkpoint57l_post, checkpoint57h_post, checkpoint57t_post, checkpoint55c_post, checkpoint57v_post, checkpoint57f_post, checkpoint57a_post, checkpoint57h_pre, checkpoint57x_post, checkpoint58w_post, checkpoint57y_pre, checkpoint55g_post, checkpoint58o_post, checkpoint57c_post, checkpoint58p_post, checkpoint58q_post, checkpoint58e_post, checkpoint58m_post, checkpoint55d_pre, checkpoint57c_pre, checkpoint58r_post, checkpoint55j_post, checkpoint55h_post, checkpoint58n_post, checkpoint57e_post, checkpoint55b_post, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint55f_post, checkpoint59c, checkpoint59b, checkpoint59h, checkpoint57p_post, checkpint57u_post, checkpoint57q_post, eckpoint57e_pre, checkpoint58k_post, checkpoint58v_post, checkpoint56a_post, checkpoint58l_post, checkpoint57h_done, checkpoint57j_post, checkpoint57f_pre, checkpoint58g_post, checkpoint58x_post, checkpoint58h_post, checkpoint56c_post, checkpoint58j_post, checkpoint57a_pre, checkpoint57o_post, checkpoint57k_post, checkpoint57w_post, checkpoint58i_post, checkpoint58c_post, checkpoint58u_post, checkpoint58s_post, checkpoint55e_post, checkpoint55d_post
Changes since 1.3: +74 -34 lines
o merged code to
  * prescribe/read time-dependent open boundaries
    (works in conjunction with exf, cal)
  * sponge layer code for open boundaries
  * each boundary N/S/E/W now has its own CPP option
    (healthy for the adjoint)

1 C $Header:
2 C $Name:
3
4 #include "OBCS_OPTIONS.h"
5
6 CStartofinterface
7 SUBROUTINE OBCS_READ_CHECKPOINT( prec, myIt, suff, myThid )
8 C /==========================================================\
9 C | SUBROUTINE OBCS_READ_CHECKPOINT |
10 C | o Read open boundary checkpoint arrays |
11 C |==========================================================|
12 C | |
13 C \==========================================================/
14 IMPLICIT NONE
15
16 C === Global variables ===
17 #include "SIZE.h"
18 #include "EEPARAMS.h"
19 #include "PARAMS.h"
20 #include "OBCS.h"
21
22 C == Routine arguments ==
23 INTEGER prec
24 INTEGER myIt
25 CHARACTER*(10) suff
26 INTEGER myThid
27 CEndofinterface
28
29 #ifdef ALLOW_OBCS
30
31 C == Local variables ==
32 CHARACTER*(MAX_LEN_FNAM) fn
33
34 C READ N and S OB arrays
35 #ifdef ALLOW_OBCS_NORTH
36 WRITE(fn,'(A,A10)') 'pickup_obN.',suff
37 CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBNu,1,myThid)
38 CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBNv,2,myThid)
39 CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBNt,3,myThid)
40 CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBNs,4,myThid)
41 # ifdef ALLOW_NONHYDROSTATIC
42 CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBNw,5,myThid)
43 # endif
44 #endif
45 #ifdef ALLOW_OBCS_SOUTH
46 WRITE(fn,'(A,A10)') 'pickup_obS.',suff
47 CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBSu,1,myThid)
48 CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBSv,2,myThid)
49 CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBSt,3,myThid)
50 CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBSs,4,myThid)
51 # ifdef ALLOW_NONHYDROSTATIC
52 CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBSw,5,myThid)
53 # endif
54 #endif
55
56 C READ E and W OB arrays
57 #ifdef ALLOW_OBCS_EAST
58 WRITE(fn,'(A,A10)') 'pickup_obE.',suff
59 CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBEu,1,myThid)
60 CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBEv,2,myThid)
61 CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBEt,3,myThid)
62 CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBEs,4,myThid)
63 # ifdef ALLOW_NONHYDROSTATIC
64 CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBEw,5,myThid)
65 # endif
66 #endif
67
68 #ifdef ALLOW_OBCS_WEST
69 WRITE(fn,'(A,A10)') 'pickup_obW.',suff
70 CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBWu,1,myThid)
71 CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBWv,2,myThid)
72 CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBWt,3,myThid)
73 CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBWs,4,myThid)
74 # ifdef ALLOW_NONHYDROSTATIC
75 CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBWw,5,myThid)
76 # endif
77 #endif
78
79 C Fill in edge regions
80 c _EXCH_XZ_R4(OBNu , myThid)
81 c _EXCH_XZ_R4(OBNv , myThid)
82 c _EXCH_XZ_R4(OBNt , myThid)
83 c _EXCH_XZ_R4(OBNs , myThid)
84 c _EXCH_XZ_R4(OBSu , myThid)
85 c _EXCH_XZ_R4(OBSv , myThid)
86 c _EXCH_XZ_R4(OBSt , myThid)
87 c _EXCH_XZ_R4(OBSs , myThid)
88 c#ifdef ALLOW_NONHYDROSTATIC
89 c _EXCH_XZ_R4(OBNw , myThid)
90 c _EXCH_XZ_R4(OBSw , myThid)
91 c#endif
92
93 C Fill in edge regions
94 c _EXCH_YZ_R4(OBEu , myThid)
95 c _EXCH_YZ_R4(OBEv , myThid)
96 c _EXCH_YZ_R4(OBEt , myThid)
97 c _EXCH_YZ_R4(OBEs , myThid)
98 c _EXCH_YZ_R4(OBWu , myThid)
99 c _EXCH_YZ_R4(OBWv , myThid)
100 c _EXCH_YZ_R4(OBWt , myThid)
101 c _EXCH_YZ_R4(OBWs , myThid)
102 c#ifdef ALLOW_NONHYDROSTATIC
103 c _EXCH_YZ_R4(OBEw , myThid)
104 c _EXCH_YZ_R4(OBWw , myThid)
105 c#endif
106
107 #ifdef ALLOW_ORLANSKI
108 IF (useOrlanskiNorth.OR.useOrlanskiSouth.OR.
109 & useOrlanskiEast.OR.useOrlanskiWest) THEN
110 CALL ORLANSKI_READ_CHECKPOINT(
111 & prec, myIt, suff, myThid )
112 ENDIF
113 #endif /* ALLOW_ORLANSKI */
114
115 #endif /* ALLOW_OBCS */
116 RETURN
117 END
118
119
120 CStartofinterface
121 SUBROUTINE OBCS_WRITE_CHECKPOINT( prec, lgf, permCheckPoint,
122 & myIt, myThid )
123 C /==========================================================\
124 C | SUBROUTINE OBCS_WRITE_CHECKPOINT |
125 C | o Write open boundary checkpoint arrays |
126 C |==========================================================|
127 C | |
128 C \==========================================================/
129 IMPLICIT NONE
130
131 C === Global variables ===
132 #include "SIZE.h"
133 #include "EEPARAMS.h"
134 #include "PARAMS.h"
135 #include "OBCS.h"
136
137 C == Routine arguments ==
138 INTEGER prec
139 LOGICAL lgf
140 LOGICAL permCheckPoint
141 INTEGER myIt
142 INTEGER myThid
143 CEndofinterface
144
145 #ifdef ALLOW_OBCS
146
147 C == Local variables ==
148 CHARACTER*(MAX_LEN_FNAM) fn
149
150 C Write N and S OB arrays
151 #ifdef ALLOW_OBCS_NORTH
152 IF ( permCheckPoint ) THEN
153 WRITE(fn,'(A,I10.10)') 'pickup_obN.',myIt
154 ELSE
155 WRITE(fn,'(A,A)') 'pickup_obN.',checkPtSuff(nCheckLev)
156 ENDIF
157 CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBNu,1,myIt,myThid)
158 CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBNv,2,myIt,myThid)
159 CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBNt,3,myIt,myThid)
160 CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBNs,4,myIt,myThid)
161 # ifdef ALLOW_NONHYDROSTATIC
162 CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBNw,5,myIt,myThid)
163 # endif
164 #endif
165
166 #ifdef ALLOW_OBCS_SOUTH
167 IF ( permCheckPoint ) THEN
168 WRITE(fn,'(A,I10.10)') 'pickup_obS.',myIt
169 ELSE
170 WRITE(fn,'(A,A)') 'pickup_obS.',checkPtSuff(nCheckLev)
171 ENDIF
172 CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBSu,1,myIt,myThid)
173 CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBSv,2,myIt,myThid)
174 CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBSt,3,myIt,myThid)
175 CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBSs,4,myIt,myThid)
176 # ifdef ALLOW_NONHYDROSTATIC
177 CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBSw,5,myIt,myThid)
178 # endif
179 #endif
180
181 C Write E and W OB arrays
182 #ifdef ALLOW_OBCS_EAST
183 IF ( permCheckPoint ) THEN
184 WRITE(fn,'(A,I10.10)') 'pickup_obE.',myIt
185 ELSE
186 WRITE(fn,'(A,A)') 'pickup_obE.',checkPtSuff(nCheckLev)
187 ENDIF
188 CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBEu,1,myIt,myThid)
189 CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBEv,2,myIt,myThid)
190 CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBEt,3,myIt,myThid)
191 CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBEs,4,myIt,myThid)
192 # ifdef ALLOW_NONHYDROSTATIC
193 CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBEw,5,myIt,myThid)
194 # endif
195 #endif
196
197 #ifdef ALLOW_OBCS_WEST
198 IF ( permCheckPoint ) THEN
199 WRITE(fn,'(A,I10.10)') 'pickup_obW.',myIt
200 ELSE
201 WRITE(fn,'(A,A)') 'pickup_obW.',checkPtSuff(nCheckLev)
202 ENDIF
203 CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBWu,1,myIt,myThid)
204 CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBWv,2,myIt,myThid)
205 CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBWt,3,myIt,myThid)
206 CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBWs,4,myIt,myThid)
207 # ifdef ALLOW_NONHYDROSTATIC
208 CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBWw,5,myIt,myThid)
209 # endif
210 #endif
211
212
213 #ifdef ALLOW_ORLANSKI
214 IF (useOrlanskiNorth.OR.useOrlanskiSouth.OR.
215 & useOrlanskiEast.OR.useOrlanskiWest) THEN
216 CALL ORLANSKI_WRITE_CHECKPOINT(
217 & prec, lgf, permCheckPoint, myIt, myThid )
218 ENDIF
219 #endif /* ALLOW_ORLANSKI */
220
221 #endif /* ALLOW_OBCS */
222 RETURN
223 END
224

  ViewVC Help
Powered by ViewVC 1.1.22