1 |
C $Header: /u/gcmpack/MITgcm/pkg/autodiff/active_file_g.F,v 1.9 2011/11/05 19:20:42 heimbach Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "AUTODIFF_OPTIONS.h" |
5 |
|
6 |
C ================================================================== |
7 |
C active_file_g.F: Routines to handle the I/O of the active file for |
8 |
C the tangent linear calculations. All files are |
9 |
C direct access files. |
10 |
C Routines |
11 |
C o g_active_read_xy - Read an active 2D variable from file. |
12 |
C o g_active_read_xyz - Read an active 3D variable from file. |
13 |
C o g_active_read_xz - Read an active 2D xz-slice from file. |
14 |
C o g_active_read_yz - Read an active 2D yz-slice from file. |
15 |
C |
16 |
C o g_active_write_xy - Write an active 2D variable to a file. |
17 |
C o g_active_write_xyz - Write an active 3D variable to a file. |
18 |
C o g_active_write_xz - Write an active 2D xz-slice to a file. |
19 |
C o g_active_write_yz - Write an active 2D yz-slice to a file. |
20 |
C |
21 |
C changed: Christian Eckert eckert@mit.edu 24-Apr-2000 |
22 |
C - Added routines that do active writes on tiles |
23 |
C instead of a whole thread. |
24 |
C changed: heimbach@mit.edu 05-Mar-2001 |
25 |
C - added active file handling of xz-/yz-arrays |
26 |
C ================================================================== |
27 |
|
28 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
29 |
CBOP |
30 |
C !ROUTINE: g_active_read_xy |
31 |
C !INTERFACE: |
32 |
subroutine g_active_read_xy( |
33 |
I active_var_file, |
34 |
O active_var, |
35 |
I g_active_var, |
36 |
I iRec, |
37 |
I doglobalread, |
38 |
I lAdInit, |
39 |
I myOptimIter, |
40 |
I myThid, |
41 |
I dummy, |
42 |
I g_dummy |
43 |
& ) |
44 |
|
45 |
C !DESCRIPTION: \bv |
46 |
C ================================================================== |
47 |
C SUBROUTINE g_active_read_xy |
48 |
C ================================================================== |
49 |
C o Read an active 2D (XY) variable from file. |
50 |
C started: Christian Eckert eckert@mit.edu 30-Jun-1999 |
51 |
C ================================================================== |
52 |
C SUBROUTINE g_active_read_xy |
53 |
C ================================================================== |
54 |
C \ev |
55 |
|
56 |
C !USES: |
57 |
IMPLICIT NONE |
58 |
|
59 |
C == global variables == |
60 |
#include "EEPARAMS.h" |
61 |
#include "SIZE.h" |
62 |
|
63 |
C !INPUT/OUTPUT PARAMETERS: |
64 |
C active_var_file: filename |
65 |
C active_var: array |
66 |
C iRec: record number |
67 |
C myOptimIter: number of optimization iteration (default: 0) |
68 |
C myThid: thread number for this instance |
69 |
C doglobalread: flag for global or local read/write |
70 |
C (default: .false.) |
71 |
C lAdInit: initialisation of corresponding adjoint |
72 |
C variable and write to active file |
73 |
CHARACTER*(*) active_var_file |
74 |
_RL active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
75 |
_RL g_active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
76 |
INTEGER iRec |
77 |
INTEGER myOptimIter |
78 |
INTEGER myThid |
79 |
LOGICAL doglobalread |
80 |
LOGICAL lAdInit |
81 |
_RL dummy, g_dummy |
82 |
|
83 |
C !FUNCTIONS: |
84 |
INTEGER ILNBLNK |
85 |
EXTERNAL ILNBLNK |
86 |
|
87 |
C !LOCAL VARIABLES: |
88 |
CHARACTER*(2) pref |
89 |
CHARACTER*(80) fname |
90 |
INTEGER il |
91 |
INTEGER myNr |
92 |
LOGICAL useCurrentDir |
93 |
CEOP |
94 |
|
95 |
pref = 'g_' |
96 |
il = ILNBLNK( active_var_file ) |
97 |
WRITE(fname(1:80),'(A)') ' ' |
98 |
WRITE(fname(1:2+il),'(2A)') pref, active_var_file(1:il) |
99 |
myNr = 1 |
100 |
useCurrentDir = .FALSE. |
101 |
|
102 |
CALL ACTIVE_READ_3D_RL( |
103 |
& active_var_file, active_var, doglobalread, |
104 |
& useCurrentDir, lAdInit, iRec, myNr, |
105 |
& FORWARD_SIMULATION, myOptimIter, myThid ) |
106 |
|
107 |
CALL ACTIVE_READ_3D_RL( |
108 |
& fname, g_active_var, doglobalread, |
109 |
& useCurrentDir, lAdInit, iRec, myNr, |
110 |
& TANGENT_SIMULATION, myOptimIter, myThid ) |
111 |
|
112 |
RETURN |
113 |
END |
114 |
|
115 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
116 |
CBOP |
117 |
C !ROUTINE: g_active_read_xyz |
118 |
C !INTERFACE: |
119 |
subroutine g_active_read_xyz( |
120 |
I active_var_file, |
121 |
O active_var, |
122 |
I g_active_var, |
123 |
I iRec, |
124 |
I doglobalread, |
125 |
I lAdInit, |
126 |
I myOptimIter, |
127 |
I myThid, |
128 |
I dummy, |
129 |
I g_dummy |
130 |
& ) |
131 |
|
132 |
C !DESCRIPTION: \bv |
133 |
C ================================================================== |
134 |
C SUBROUTINE g_active_read_xyz |
135 |
C ================================================================== |
136 |
C o Read an active 3D variable from file. |
137 |
C started: Christian Eckert eckert@mit.edu 30-Jun-1999 |
138 |
C ================================================================== |
139 |
C SUBROUTINE g_active_read_xyz |
140 |
C ================================================================== |
141 |
C \ev |
142 |
|
143 |
C !USES: |
144 |
IMPLICIT NONE |
145 |
|
146 |
C == global variables == |
147 |
#include "EEPARAMS.h" |
148 |
#include "SIZE.h" |
149 |
|
150 |
C !INPUT/OUTPUT PARAMETERS: |
151 |
C active_var_file: filename |
152 |
C active_var: array |
153 |
C iRec: record number |
154 |
C myOptimIter: number of optimization iteration (default: 0) |
155 |
C myThid: thread number for this instance |
156 |
C doglobalread: flag for global or local read/write |
157 |
C (default: .false.) |
158 |
C lAdInit: initialisation of corresponding adjoint |
159 |
C variable and write to active file |
160 |
CHARACTER*(*) active_var_file |
161 |
_RL active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
162 |
_RL g_active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
163 |
INTEGER iRec |
164 |
INTEGER myOptimIter |
165 |
INTEGER myThid |
166 |
LOGICAL doglobalread |
167 |
LOGICAL lAdInit |
168 |
_RL dummy, g_dummy |
169 |
|
170 |
C !FUNCTIONS: |
171 |
INTEGER ILNBLNK |
172 |
EXTERNAL ILNBLNK |
173 |
|
174 |
C !LOCAL VARIABLES: |
175 |
CHARACTER*(2) pref |
176 |
CHARACTER*(80) fname |
177 |
INTEGER il |
178 |
INTEGER myNr |
179 |
LOGICAL useCurrentDir |
180 |
CEOP |
181 |
|
182 |
pref = 'g_' |
183 |
il = ILNBLNK( active_var_file ) |
184 |
WRITE(fname(1:80),'(A)') ' ' |
185 |
WRITE(fname(1:2+il),'(2A)') pref, active_var_file(1:il) |
186 |
myNr = Nr |
187 |
useCurrentDir = .FALSE. |
188 |
|
189 |
CALL ACTIVE_READ_3D_RL( |
190 |
& active_var_file, active_var, doglobalread, |
191 |
& useCurrentDir, lAdInit, iRec, myNr, |
192 |
& FORWARD_SIMULATION, myOptimIter, myThid ) |
193 |
|
194 |
CALL ACTIVE_READ_3D_RL( |
195 |
& fname, g_active_var, doglobalread, |
196 |
& useCurrentDir, lAdInit, iRec, myNr, |
197 |
& TANGENT_SIMULATION, myOptimIter, myThid ) |
198 |
|
199 |
RETURN |
200 |
END |
201 |
|
202 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
203 |
CBOP |
204 |
C !ROUTINE: g_active_read_xz |
205 |
C !INTERFACE: |
206 |
subroutine g_active_read_xz( |
207 |
I active_var_file, |
208 |
O active_var, |
209 |
I g_active_var, |
210 |
I iRec, |
211 |
I doglobalread, |
212 |
I lAdInit, |
213 |
I myOptimIter, |
214 |
I myThid, |
215 |
I dummy, |
216 |
I g_dummy |
217 |
& ) |
218 |
|
219 |
C !DESCRIPTION: \bv |
220 |
C ================================================================== |
221 |
C SUBROUTINE g_active_read_xz |
222 |
C ================================================================== |
223 |
C o Read an active 2D xz-slice from file. |
224 |
C started: heimbach@mit.edu 05-Mar-2001 |
225 |
C ================================================================== |
226 |
C SUBROUTINE g_active_read_xz |
227 |
C ================================================================== |
228 |
C \ev |
229 |
|
230 |
C !USES: |
231 |
IMPLICIT NONE |
232 |
|
233 |
C == global variables == |
234 |
#include "EEPARAMS.h" |
235 |
#include "SIZE.h" |
236 |
|
237 |
C !INPUT/OUTPUT PARAMETERS: |
238 |
C active_var_file: filename |
239 |
C active_var: array |
240 |
C iRec: record number |
241 |
C myOptimIter: number of optimization iteration (default: 0) |
242 |
C myThid: thread number for this instance |
243 |
C doglobalread: flag for global or local read/write |
244 |
C (default: .false.) |
245 |
C lAdInit: initialisation of corresponding adjoint |
246 |
C variable and write to active file |
247 |
CHARACTER*(*) active_var_file |
248 |
_RL active_var(1-OLx:sNx+OLx,nSx,nSy) |
249 |
_RL g_active_var(1-OLx:sNx+OLx,nSx,nSy) |
250 |
INTEGER iRec |
251 |
INTEGER myOptimIter |
252 |
INTEGER myThid |
253 |
LOGICAL doglobalread |
254 |
LOGICAL lAdInit |
255 |
_RL dummy, g_dummy |
256 |
|
257 |
C !FUNCTIONS: |
258 |
INTEGER ILNBLNK |
259 |
EXTERNAL ILNBLNK |
260 |
|
261 |
C !LOCAL VARIABLES: |
262 |
CHARACTER*(2) pref |
263 |
CHARACTER*(80) fname |
264 |
INTEGER il |
265 |
INTEGER myNr |
266 |
LOGICAL useCurrentDir |
267 |
CEOP |
268 |
|
269 |
pref = 'g_' |
270 |
il = ILNBLNK( active_var_file ) |
271 |
WRITE(fname(1:80),'(A)') ' ' |
272 |
WRITE(fname(1:2+il),'(2A)') pref, active_var_file(1:il) |
273 |
myNr = Nr |
274 |
useCurrentDir = .FALSE. |
275 |
|
276 |
CALL ACTIVE_READ_XZ_RL( |
277 |
& active_var_file, active_var, doglobalread, |
278 |
& useCurrentDir, lAdInit, iRec, myNr, |
279 |
& FORWARD_SIMULATION, myOptimIter, myThid ) |
280 |
|
281 |
CALL ACTIVE_READ_XZ_RL( |
282 |
& fname, g_active_var, doglobalread, |
283 |
& useCurrentDir, lAdInit, iRec, myNr, |
284 |
& TANGENT_SIMULATION, myOptimIter, myThid ) |
285 |
|
286 |
RETURN |
287 |
END |
288 |
|
289 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
290 |
CBOP |
291 |
C !ROUTINE: g_active_read_yz |
292 |
C !INTERFACE: |
293 |
subroutine g_active_read_yz( |
294 |
I active_var_file, |
295 |
O active_var, |
296 |
I g_active_var, |
297 |
I iRec, |
298 |
I doglobalread, |
299 |
I lAdInit, |
300 |
I myOptimIter, |
301 |
I myThid, |
302 |
I dummy, |
303 |
I g_dummy |
304 |
& ) |
305 |
|
306 |
C !DESCRIPTION: \bv |
307 |
C ================================================================== |
308 |
C SUBROUTINE g_active_read_yz |
309 |
C ================================================================== |
310 |
C o Read an active 2D yz-slice from file. |
311 |
C started: heimbach@mit.edu 05-Mar-2001 |
312 |
C ================================================================== |
313 |
C SUBROUTINE g_active_read_yz |
314 |
C ================================================================== |
315 |
C \ev |
316 |
|
317 |
C !USES: |
318 |
IMPLICIT NONE |
319 |
|
320 |
C == global variables == |
321 |
#include "EEPARAMS.h" |
322 |
#include "SIZE.h" |
323 |
|
324 |
C !INPUT/OUTPUT PARAMETERS: |
325 |
C active_var_file: filename |
326 |
C active_var: array |
327 |
C iRec: record number |
328 |
C myOptimIter: number of optimization iteration (default: 0) |
329 |
C myThid: thread number for this instance |
330 |
C doglobalread: flag for global or local read/write |
331 |
C (default: .false.) |
332 |
C lAdInit: initialisation of corresponding adjoint |
333 |
C variable and write to active file |
334 |
CHARACTER*(*) active_var_file |
335 |
_RL active_var(1-OLy:sNy+OLy,nSx,nSy) |
336 |
_RL g_active_var(1-OLy:sNy+OLy,nSx,nSy) |
337 |
INTEGER iRec |
338 |
INTEGER myOptimIter |
339 |
INTEGER myThid |
340 |
LOGICAL doglobalread |
341 |
LOGICAL lAdInit |
342 |
_RL dummy, g_dummy |
343 |
|
344 |
C !FUNCTIONS: |
345 |
INTEGER ILNBLNK |
346 |
EXTERNAL ILNBLNK |
347 |
|
348 |
C !LOCAL VARIABLES: |
349 |
CHARACTER*(2) pref |
350 |
CHARACTER*(80) fname |
351 |
INTEGER il |
352 |
INTEGER myNr |
353 |
LOGICAL useCurrentDir |
354 |
CEOP |
355 |
|
356 |
pref = 'g_' |
357 |
il = ILNBLNK( active_var_file ) |
358 |
WRITE(fname(1:80),'(A)') ' ' |
359 |
WRITE(fname(1:2+il),'(2A)') pref, active_var_file(1:il) |
360 |
myNr = Nr |
361 |
useCurrentDir = .FALSE. |
362 |
|
363 |
CALL ACTIVE_READ_YZ_RL( |
364 |
& active_var_file, active_var, doglobalread, |
365 |
& useCurrentDir, lAdInit, iRec, myNr, |
366 |
& FORWARD_SIMULATION, myOptimIter, myThid ) |
367 |
|
368 |
CALL ACTIVE_READ_YZ_RL( |
369 |
& fname, g_active_var, doglobalread, |
370 |
& useCurrentDir, lAdInit, iRec, myNr, |
371 |
& TANGENT_SIMULATION, myOptimIter, myThid ) |
372 |
|
373 |
RETURN |
374 |
END |
375 |
|
376 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
377 |
CBOP |
378 |
C !ROUTINE: g_active_write_xy |
379 |
C !INTERFACE: |
380 |
subroutine g_active_write_xy( |
381 |
I active_var_file, |
382 |
I active_var, |
383 |
I g_active_var, |
384 |
I iRec, |
385 |
I myOptimIter, |
386 |
I myThid, |
387 |
I dummy, |
388 |
I g_dummy |
389 |
& ) |
390 |
|
391 |
C !DESCRIPTION: \bv |
392 |
C ================================================================== |
393 |
C SUBROUTINE g_active_write_xy |
394 |
C ================================================================== |
395 |
C o Write an active 2D variable to a file. |
396 |
C started: Christian Eckert eckert@mit.edu 30-Jun-1999 |
397 |
C ================================================================== |
398 |
C SUBROUTINE g_active_write_xy |
399 |
C ================================================================== |
400 |
C \ev |
401 |
|
402 |
C !USES: |
403 |
IMPLICIT NONE |
404 |
|
405 |
C == global variables == |
406 |
#include "EEPARAMS.h" |
407 |
#include "SIZE.h" |
408 |
|
409 |
C !INPUT/OUTPUT PARAMETERS: |
410 |
C active_var_file: filename |
411 |
C active_var: array |
412 |
C iRec: record number |
413 |
C myOptimIter: number of optimization iteration (default: 0) |
414 |
C myThid: thread number for this instance |
415 |
CHARACTER*(*) active_var_file |
416 |
_RL active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
417 |
_RL g_active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
418 |
INTEGER iRec |
419 |
INTEGER myOptimIter |
420 |
INTEGER myThid |
421 |
_RL dummy |
422 |
_RL g_dummy |
423 |
|
424 |
C !FUNCTIONS: |
425 |
INTEGER ILNBLNK |
426 |
EXTERNAL ILNBLNK |
427 |
|
428 |
C !LOCAL VARIABLES: |
429 |
CHARACTER*(2) pref |
430 |
CHARACTER*(80) fname |
431 |
INTEGER il |
432 |
INTEGER myNr |
433 |
LOGICAL globalFile |
434 |
LOGICAL useCurrentDir |
435 |
CEOP |
436 |
|
437 |
pref = 'g_' |
438 |
il = ILNBLNK( active_var_file ) |
439 |
WRITE(fname(1:80),'(A)') ' ' |
440 |
WRITE(fname(1:2+il),'(2A)') pref, active_var_file(1:il) |
441 |
myNr = 1 |
442 |
globalFile = .FALSE. |
443 |
useCurrentDir = .FALSE. |
444 |
|
445 |
CALL ACTIVE_WRITE_3D_RL( |
446 |
& active_var_file, active_var, globalFile, |
447 |
& useCurrentDir, iRec, myNr, |
448 |
& FORWARD_SIMULATION, myOptimIter, myThid ) |
449 |
|
450 |
CALL ACTIVE_WRITE_3D_RL( |
451 |
& fname, g_active_var, globalFile, |
452 |
& useCurrentDir, iRec, myNr, |
453 |
& TANGENT_SIMULATION, myOptimIter, myThid ) |
454 |
|
455 |
RETURN |
456 |
END |
457 |
|
458 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
459 |
CBOP |
460 |
C !ROUTINE: g_active_write_xyz |
461 |
C !INTERFACE: |
462 |
subroutine g_active_write_xyz( |
463 |
I active_var_file, |
464 |
I active_var, |
465 |
I g_active_var, |
466 |
I iRec, |
467 |
I myOptimIter, |
468 |
I myThid, |
469 |
I dummy, |
470 |
I g_dummy |
471 |
& ) |
472 |
|
473 |
C !DESCRIPTION: \bv |
474 |
C ================================================================== |
475 |
C SUBROUTINE g_active_write_xyz |
476 |
C ================================================================== |
477 |
C o Write an active 3D variable to a file. |
478 |
C started: Christian Eckert eckert@mit.edu 30-Jun-1999 |
479 |
C ================================================================== |
480 |
C SUBROUTINE g_active_write_xyz |
481 |
C ================================================================== |
482 |
C \ev |
483 |
|
484 |
C !USES: |
485 |
IMPLICIT NONE |
486 |
|
487 |
C == global variables == |
488 |
#include "EEPARAMS.h" |
489 |
#include "SIZE.h" |
490 |
|
491 |
C !INPUT/OUTPUT PARAMETERS: |
492 |
C active_var_file: filename |
493 |
C active_var: array |
494 |
C iRec: record number |
495 |
C myOptimIter: number of optimization iteration (default: 0) |
496 |
C myThid: thread number for this instance |
497 |
CHARACTER*(*) active_var_file |
498 |
_RL active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
499 |
_RL g_active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
500 |
INTEGER iRec |
501 |
INTEGER myOptimIter |
502 |
INTEGER myThid |
503 |
_RL dummy |
504 |
_RL g_dummy |
505 |
|
506 |
C !FUNCTIONS: |
507 |
INTEGER ILNBLNK |
508 |
EXTERNAL ILNBLNK |
509 |
|
510 |
C !LOCAL VARIABLES: |
511 |
CHARACTER*(2) pref |
512 |
CHARACTER*(80) fname |
513 |
INTEGER il |
514 |
INTEGER myNr |
515 |
LOGICAL globalFile |
516 |
LOGICAL useCurrentDir |
517 |
CEOP |
518 |
|
519 |
pref = 'g_' |
520 |
il = ILNBLNK( active_var_file ) |
521 |
WRITE(fname(1:80),'(A)') ' ' |
522 |
WRITE(fname(1:2+il),'(2A)') pref, active_var_file(1:il) |
523 |
myNr = Nr |
524 |
globalFile = .FALSE. |
525 |
useCurrentDir = .FALSE. |
526 |
|
527 |
CALL ACTIVE_WRITE_3D_RL( |
528 |
& active_var_file, active_var, globalFile, |
529 |
& useCurrentDir, iRec, myNr, |
530 |
& FORWARD_SIMULATION, myOptimIter, myThid ) |
531 |
|
532 |
CALL ACTIVE_WRITE_3D_RL( |
533 |
& fname, g_active_var, globalFile, |
534 |
& useCurrentDir, iRec, myNr, |
535 |
& TANGENT_SIMULATION, myOptimIter, myThid ) |
536 |
|
537 |
RETURN |
538 |
END |
539 |
|
540 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
541 |
CBOP |
542 |
C !ROUTINE: g_active_write_xz |
543 |
C !INTERFACE: |
544 |
subroutine g_active_write_xz( |
545 |
I active_var_file, |
546 |
I active_var, |
547 |
I g_active_var, |
548 |
I iRec, |
549 |
I myOptimIter, |
550 |
I myThid, |
551 |
I dummy, |
552 |
I g_dummy |
553 |
& ) |
554 |
|
555 |
C !DESCRIPTION: \bv |
556 |
C ================================================================== |
557 |
C SUBROUTINE g_active_write_xz |
558 |
C ================================================================== |
559 |
C o Write an active 2D xz-slice to a file. |
560 |
C started: heimbach@mit.edu 05-Mar-2001 |
561 |
C ================================================================== |
562 |
C SUBROUTINE g_active_write_xz |
563 |
C ================================================================== |
564 |
C \ev |
565 |
|
566 |
C !USES: |
567 |
IMPLICIT NONE |
568 |
|
569 |
C == global variables == |
570 |
#include "EEPARAMS.h" |
571 |
#include "SIZE.h" |
572 |
|
573 |
C !INPUT/OUTPUT PARAMETERS: |
574 |
C active_var_file: filename |
575 |
C active_var: array |
576 |
C iRec: record number |
577 |
C myOptimIter: number of optimization iteration (default: 0) |
578 |
C myThid: thread number for this instance |
579 |
CHARACTER*(*) active_var_file |
580 |
_RL active_var(1-OLx:sNx+OLx,nSx,nSy) |
581 |
_RL g_active_var(1-OLx:sNx+OLx,nSx,nSy) |
582 |
INTEGER iRec |
583 |
INTEGER myOptimIter |
584 |
INTEGER myThid |
585 |
_RL dummy |
586 |
_RL g_dummy |
587 |
|
588 |
C !FUNCTIONS: |
589 |
INTEGER ILNBLNK |
590 |
EXTERNAL ILNBLNK |
591 |
|
592 |
C !LOCAL VARIABLES: |
593 |
CHARACTER*(2) pref |
594 |
CHARACTER*(80) fname |
595 |
INTEGER il |
596 |
INTEGER myNr |
597 |
LOGICAL globalFile |
598 |
LOGICAL useCurrentDir |
599 |
CEOP |
600 |
|
601 |
pref = 'g_' |
602 |
il = ILNBLNK( active_var_file ) |
603 |
WRITE(fname(1:80),'(A)') ' ' |
604 |
WRITE(fname(1:2+il),'(2A)') pref, active_var_file(1:il) |
605 |
myNr = Nr |
606 |
globalFile = .FALSE. |
607 |
useCurrentDir = .FALSE. |
608 |
|
609 |
CALL ACTIVE_WRITE_XZ_RL( |
610 |
& active_var_file, active_var, globalFile, |
611 |
& useCurrentDir, iRec, myNr, |
612 |
& FORWARD_SIMULATION, myOptimIter, myThid ) |
613 |
|
614 |
CALL ACTIVE_WRITE_XZ_RL( |
615 |
& fname, g_active_var, globalFile, |
616 |
& useCurrentDir, iRec, myNr, |
617 |
& TANGENT_SIMULATION, myOptimIter, myThid ) |
618 |
|
619 |
RETURN |
620 |
END |
621 |
|
622 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
623 |
CBOP |
624 |
C !ROUTINE: g_active_write_yz |
625 |
C !INTERFACE: |
626 |
subroutine g_active_write_yz( |
627 |
I active_var_file, |
628 |
I active_var, |
629 |
I g_active_var, |
630 |
I iRec, |
631 |
I myOptimIter, |
632 |
I myThid, |
633 |
I dummy, |
634 |
I g_dummy |
635 |
& ) |
636 |
|
637 |
C !DESCRIPTION: \bv |
638 |
C ================================================================== |
639 |
C SUBROUTINE g_active_write_yz |
640 |
C ================================================================== |
641 |
C o Write an active 2D variable to a file. |
642 |
C started: heimbach@mit.edu 05-Mar-2001 |
643 |
C ================================================================== |
644 |
C SUBROUTINE g_active_write_yz |
645 |
C ================================================================== |
646 |
C \ev |
647 |
|
648 |
C !USES: |
649 |
IMPLICIT NONE |
650 |
|
651 |
C == global variables == |
652 |
#include "EEPARAMS.h" |
653 |
#include "SIZE.h" |
654 |
|
655 |
C !INPUT/OUTPUT PARAMETERS: |
656 |
C active_var_file: filename |
657 |
C active_var: array |
658 |
C iRec: record number |
659 |
C myOptimIter: number of optimization iteration (default: 0) |
660 |
C myThid: thread number for this instance |
661 |
CHARACTER*(*) active_var_file |
662 |
_RL active_var(1-OLy:sNy+OLy,nSx,nSy) |
663 |
_RL g_active_var(1-OLy:sNy+OLy,nSx,nSy) |
664 |
INTEGER iRec |
665 |
INTEGER myOptimIter |
666 |
INTEGER myThid |
667 |
_RL dummy |
668 |
_RL g_dummy |
669 |
|
670 |
C !FUNCTIONS: |
671 |
INTEGER ILNBLNK |
672 |
EXTERNAL ILNBLNK |
673 |
|
674 |
C !LOCAL VARIABLES: |
675 |
CHARACTER*(2) pref |
676 |
CHARACTER*(80) fname |
677 |
INTEGER il |
678 |
INTEGER myNr |
679 |
LOGICAL globalFile |
680 |
LOGICAL useCurrentDir |
681 |
CEOP |
682 |
|
683 |
pref = 'g_' |
684 |
il = ILNBLNK( active_var_file ) |
685 |
WRITE(fname(1:80),'(A)') ' ' |
686 |
WRITE(fname(1:2+il),'(2A)') pref, active_var_file(1:il) |
687 |
myNr = Nr |
688 |
globalFile = .FALSE. |
689 |
useCurrentDir = .FALSE. |
690 |
|
691 |
CALL ACTIVE_WRITE_YZ_RL( |
692 |
& active_var_file, active_var, globalFile, |
693 |
& useCurrentDir, iRec, myNr, |
694 |
& FORWARD_SIMULATION, myOptimIter, myThid ) |
695 |
|
696 |
CALL ACTIVE_WRITE_YZ_RL( |
697 |
& fname, g_active_var, globalFile, |
698 |
& useCurrentDir, iRec, myNr, |
699 |
& TANGENT_SIMULATION, myOptimIter, myThid ) |
700 |
|
701 |
RETURN |
702 |
END |