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