/[MITgcm]/MITgcm/tools/OAD_support/ad_inline.F
ViewVC logotype

Contents of /MITgcm/tools/OAD_support/ad_inline.F

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


Revision 1.3 - (show annotations) (download)
Fri Dec 21 16:18:40 2012 UTC (11 years, 3 months ago) by utke
Branch: MAIN
CVS Tags: checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64c, checkpoint64f
Changes since 1.2: +254 -199 lines
resync ad_inline with openad (part 2 of 2)

1 C taping --------------------------------------------
2
3
4 subroutine push_s0(x)
5 C $OpenAD$ INLINE DECLS
6 use OAD_tape
7 implicit none
8 double precision :: x
9 C $OpenAD$ END DECLS
10 if(oad_dt_sz .lt. oad_dt_ptr) call oad_dt_grow()
11 oad_dt(oad_dt_ptr)=x; oad_dt_ptr=oad_dt_ptr+1
12 end subroutine
13
14 subroutine pop_s0(x)
15 C $OpenAD$ INLINE DECLS
16 use OAD_tape
17 implicit none
18 double precision :: x
19 C $OpenAD$ END DECLS
20 oad_dt_ptr=oad_dt_ptr-1
21 x=oad_dt(oad_dt_ptr)
22 end subroutine
23
24 subroutine push_s1(x)
25 C $OpenAD$ INLINE DECLS
26 use OAD_tape
27 implicit none
28 double precision :: x(:)
29 C $OpenAD$ END DECLS
30 oad_chunk_size=size(x,1)
31 if(oad_dt_sz .lt. oad_dt_ptr+oad_chunk_size)
32 + call oad_dt_grow()
33 oad_dt(oad_dt_ptr:oad_dt_ptr+oad_chunk_size-1)=
34 +x
35 oad_dt_ptr=oad_dt_ptr+oad_chunk_size
36 end subroutine
37
38 subroutine pop_s1(x)
39 C $OpenAD$ INLINE DECLS
40 use OAD_tape
41 implicit none
42 double precision :: x(:)
43 C $OpenAD$ END DECLS
44 oad_chunk_size=size(x,1)
45 oad_dt_ptr=oad_dt_ptr-oad_chunk_size
46 x=oad_dt(oad_dt_ptr:oad_dt_ptr+oad_chunk_size-1)
47 end subroutine
48
49 subroutine push_s2(x)
50 C $OpenAD$ INLINE DECLS
51 use OAD_tape
52 implicit none
53 double precision :: x(:,:)
54 C $OpenAD$ END DECLS
55 oad_chunk_size=size(x,1)*size(x,2)
56 if(oad_dt_sz .lt. oad_dt_ptr+oad_chunk_size)
57 + call oad_dt_grow()
58 oad_dt(oad_dt_ptr:oad_dt_ptr+oad_chunk_size-1)=
59 +reshape(x,(/oad_chunk_size/))
60 oad_dt_ptr=oad_dt_ptr+oad_chunk_size
61 end subroutine
62
63 subroutine pop_s2(x)
64 C $OpenAD$ INLINE DECLS
65 use OAD_tape
66 implicit none
67 double precision :: x(:,:)
68 C $OpenAD$ END DECLS
69 oad_chunk_size=size(x,1)*size(x,2)
70 oad_dt_ptr=oad_dt_ptr-oad_chunk_size
71 x=reshape(oad_dt(oad_dt_ptr:oad_dt_ptr+oad_chunk_size-1),
72 +shape(x))
73 end subroutine
74
75 subroutine apush(x)
76 C $OpenAD$ INLINE DECLS
77 use OAD_tape
78 use OAD_active
79 implicit none
80 type(active) :: x
81 C $OpenAD$ END DECLS
82 if(oad_dt_sz .lt. oad_dt_ptr) call oad_dt_grow()
83 oad_dt(oad_dt_ptr)=x%v; oad_dt_ptr=oad_dt_ptr+1
84 end subroutine
85
86 subroutine apop(x)
87 C $OpenAD$ INLINE DECLS
88 use OAD_tape
89 use OAD_active
90 implicit none
91 type(active) :: x
92 C $OpenAD$ END DECLS
93 oad_dt_ptr=oad_dt_ptr-1
94 x%v=oad_dt(oad_dt_ptr)
95 end subroutine
96
97 subroutine push_i_s0(x)
98 C $OpenAD$ INLINE DECLS
99 use OAD_tape
100 implicit none
101 integer :: x
102 C $OpenAD$ END DECLS
103 if(oad_it_sz .lt. oad_it_ptr) call oad_it_grow()
104 oad_it(oad_it_ptr)=x; oad_it_ptr=oad_it_ptr+1
105 end subroutine
106
107 subroutine pop_i_s0(x)
108 C $OpenAD$ INLINE DECLS
109 use OAD_tape
110 implicit none
111 integer :: x
112 C $OpenAD$ END DECLS
113 oad_it_ptr=oad_it_ptr-1
114 x=oad_it(oad_it_ptr)
115 end subroutine
116
117 subroutine push_i_s1(x)
118 C $OpenAD$ INLINE DECLS
119 use OAD_tape
120 implicit none
121 integer :: x(:)
122 C $OpenAD$ END DECLS
123 oad_chunk_size=size(x,1)
124 if(oad_it_sz .lt. oad_it_ptr+oad_chunk_size)
125 +call oad_it_grow()
126 oad_it(oad_it_ptr:oad_it_ptr+oad_chunk_size-1)=
127 +x
128 oad_it_ptr=oad_it_ptr+oad_chunk_size
129 end subroutine
130
131 subroutine pop_i_s1(x)
132 C $OpenAD$ INLINE DECLS
133 use OAD_tape
134 implicit none
135 integer :: x(:)
136 C $OpenAD$ END DECLS
137 oad_chunk_size=size(x,1)
138 oad_it_ptr=oad_it_ptr-oad_chunk_size
139 x=oad_it(oad_it_ptr:oad_it_ptr+oad_chunk_size-1)
140 end subroutine
141
142 subroutine push_i_s2(x)
143 C $OpenAD$ INLINE DECLS
144 use OAD_tape
145 implicit none
146 integer :: x(:,:)
147 C $OpenAD$ END DECLS
148 oad_chunk_size=size(x,1)*size(x,2)
149 if(oad_it_sz .lt. oad_it_ptr+oad_chunk_size)
150 + call oad_it_grow()
151 oad_it(oad_it_ptr:oad_it_ptr+oad_chunk_size-1)=
152 +reshape(x,(/oad_chunk_size/))
153 oad_it_ptr=oad_it_ptr+oad_chunk_size
154 end subroutine
155
156 subroutine pop_i_s2(x)
157 C $OpenAD$ INLINE DECLS
158 use OAD_tape
159 implicit none
160 integer :: x(:,:)
161 C $OpenAD$ END DECLS
162 oad_chunk_size=size(x,1)*size(x,2)
163 oad_it_ptr=oad_it_ptr-oad_chunk_size
164 x=reshape(oad_it(oad_it_ptr:oad_it_ptr+oad_chunk_size-1),
165 +shape(x))
166 end subroutine
167
168 subroutine push_b(x)
169 C $OpenAD$ INLINE DECLS
170 use OAD_tape
171 implicit none
172 logical :: x
173 C $OpenAD$ END DECLS
174 if(oad_lt_sz .lt. oad_lt_ptr) call oad_lt_grow()
175 oad_lt(oad_lt_ptr)=x; oad_lt_ptr=oad_lt_ptr+1
176 end subroutine
177
178 subroutine pop_b(x)
179 C $OpenAD$ INLINE DECLS
180 use OAD_tape
181 implicit none
182 logical :: x
183 C $OpenAD$ END DECLS
184 oad_lt_ptr=oad_lt_ptr-1
185 x=oad_lt(oad_lt_ptr)
186 end subroutine
187
188 subroutine push_s(s)
189 C $OpenAD$ INLINE DECLS
190 use OAD_tape
191 implicit none
192 character*(80) :: s
193 C $OpenAD$ END DECLS
194 if(oad_st_sz .lt. oad_st_ptr) call oad_st_grow()
195 oad_st(oad_st_ptr)=s; oad_st_ptr=oad_st_ptr+1
196 end subroutine
197
198 subroutine pop_s(s)
199 C $OpenAD$ INLINE DECLS
200 use OAD_tape
201 implicit none
202 character*(80) :: s
203 C $OpenAD$ END DECLS
204 oad_st_ptr=oad_st_ptr-1
205 s=oad_st(oad_st_ptr)
206 end subroutine
207
208 C ----------------------- Propagation -----------------------
209
210 subroutine saxpy(a,x,y)
211 C $OpenAD$ INLINE DECLS
212 use OAD_active
213 implicit none
214 double precision, intent(in) :: a
215 type(active), intent(in) :: x
216 type(active), intent(inout) :: y
217 C $OpenAD$ END DECLS
218 y%d=y%d+x%d*(a)
219 end subroutine
220
221 subroutine zeroderiv(x)
222 C $OpenAD$ INLINE DECLS
223 use OAD_active
224 implicit none
225 type(active), intent(out) :: x
226 C $OpenAD$ END DECLS
227 x%d=0.0d0
228 end subroutine
229
230 subroutine setderiv(y,x)
231 C $OpenAD$ INLINE DECLS
232 use OAD_active
233 implicit none
234 type(active), intent(out) :: x
235 type(active), intent(in) :: y
236 C $OpenAD$ END DECLS
237 x%d=y%d
238 end subroutine
239
240 subroutine incderiv(y,x)
241 C $OpenAD$ INLINE DECLS
242 use OAD_active
243 implicit none
244 type(active), intent(out) :: x
245 type(active), intent(in) :: y
246 C $OpenAD$ END DECLS
247 x%d=x%d+y%d
248 end subroutine
249
250 subroutine decderiv(y,x)
251 C $OpenAD$ INLINE DECLS
252 use OAD_active
253 implicit none
254 type(active), intent(out) :: x
255 type(active), intent(in) :: y
256 C $OpenAD$ END DECLS
257 x%d = x%d - y%d
258 end subroutine decderiv
259
260 C Checkpointing stuff ---------------------------------------
261
262 C reals -----------------------------------------------------
263 subroutine cp_arg_store_real_scalar(x)
264 C $OpenAD$ INLINE DECLS
265 use OAD_cp
266 implicit none
267 double precision :: x
268 C $OpenAD$ END DECLS
269 #ifdef OAD_DEBUG_CP
270 write(standardmessageunit,*)'OAD: cp write x ', x
271 #endif
272 write(unit=cp_io_unit) x
273 end subroutine
274
275 subroutine cp_arg_restore_real_scalar(x)
276 C $OpenAD$ INLINE DECLS
277 use OAD_cp
278 implicit none
279 double precision :: x
280 C $OpenAD$ END DECLS
281 read(unit=cp_io_unit) x
282 #ifdef OAD_DEBUG_CP
283 write(standardmessageunit,*)'OAD: cp read x ', x
284 #endif
285 end subroutine
286
287 subroutine cp_arg_store_real_scalar_a(x)
288 C $OpenAD$ INLINE DECLS
289 use OAD_active
290 use OAD_cp
291 implicit none
292 type(active) :: x
293 C $OpenAD$ END DECLS
294 #ifdef OAD_DEBUG_CP
295 write(standardmessageunit,*)'OAD: cp write x ', x%v
296 #endif
297 write(unit=cp_io_unit) x%v
298 end subroutine
299
300 subroutine cp_arg_restore_real_scalar_a(x)
301 C $OpenAD$ INLINE DECLS
302 use OAD_active
303 use OAD_cp
304 implicit none
305 type(active) :: x
306 C $OpenAD$ END DECLS
307 read(unit=cp_io_unit) x%v
308 #ifdef OAD_DEBUG_CP
309 write(standardmessageunit,*)'OAD: cp read x ', x%v
310 #endif
311 end subroutine
312
313 subroutine cp_arg_store_real_vector(x)
314 C $OpenAD$ INLINE DECLS
315 use OAD_cp
316 implicit none
317 double precision, dimension(:) :: x
318 C $OpenAD$ END DECLS
319 #ifdef OAD_DEBUG_CP
320 write(standardmessageunit,*)'OAD: cp write x ', x(1)
321 #endif
322 write(unit=cp_io_unit) x
323 end subroutine
324
325 subroutine cp_arg_restore_real_vector(x)
326 C $OpenAD$ INLINE DECLS
327 use OAD_cp
328 implicit none
329 double precision, dimension(:) :: x
330 C $OpenAD$ END DECLS
331 read(unit=cp_io_unit) x
332 #ifdef OAD_DEBUG_CP
333 write(standardmessageunit,*)'OAD: cp read x ', x(1)
334 #endif
335 end subroutine
336
337 subroutine cp_arg_store_real_vector_a(x)
338 C $OpenAD$ INLINE DECLS
339 use OAD_active
340 use OAD_cp
341 implicit none
342 type(active), dimension(:) :: x
343 C $OpenAD$ END DECLS
344 #ifdef OAD_DEBUG_CP
345 write(standardmessageunit,*)'OAD: cp write x ', x(1)%v
346 #endif
347 write(unit=cp_io_unit) x%v
348 end subroutine
349
350 subroutine cp_arg_restore_real_vector_a(x)
351 C $OpenAD$ INLINE DECLS
352 use OAD_active
353 use OAD_cp
354 implicit none
355 type(active), dimension(:) :: x
356 C $OpenAD$ END DECLS
357 read(unit=cp_io_unit) x%v
358 #ifdef OAD_DEBUG_CP
359 write(standardmessageunit,*)'OAD: cp read x ', x(1)%v
360 #endif
361 end subroutine
362
363 subroutine cp_arg_store_real_matrix(x)
364 C $OpenAD$ INLINE DECLS
365 use OAD_cp
366 implicit none
367 double precision, dimension(:,:) :: x
368 C $OpenAD$ END DECLS
369 #ifdef OAD_DEBUG_CP
370 write(standardmessageunit,*)'OAD: cp write x ', x(1,1)
371 #endif
372 write(unit=cp_io_unit) x
373 end subroutine
374
375 subroutine cp_arg_restore_real_matrix(x)
376 C $OpenAD$ INLINE DECLS
377 use OAD_cp
378 implicit none
379 double precision, dimension(:,:) :: x
380 C $OpenAD$ END DECLS
381 read(unit=cp_io_unit) x
382 #ifdef OAD_DEBUG_CP
383 write(standardmessageunit,*)'OAD: cp read x ', x(1,1)
384 #endif
385 end subroutine
386
387 subroutine cp_arg_store_real_matrix_a(x)
388 C $OpenAD$ INLINE DECLS
389 use OAD_active
390 use OAD_cp
391 implicit none
392 type(active), dimension(:,:) :: x
393 C $OpenAD$ END DECLS
394 #ifdef OAD_DEBUG_CP
395 write(standardmessageunit,*)'OAD: cp write x ', x(1,1)%v
396 #endif
397 write(unit=cp_io_unit) x%v
398 end subroutine
399
400 subroutine cp_arg_restore_real_matrix_a(x)
401 C $OpenAD$ INLINE DECLS
402 use OAD_active
403 use OAD_cp
404 implicit none
405 type(active), dimension(:,:) :: x
406 C $OpenAD$ END DECLS
407 read(unit=cp_io_unit) x%v
408 #ifdef OAD_DEBUG_CP
409 write(standardmessageunit,*)'OAD: cp read x ', x(1,1)%v
410 #endif
411 end subroutine
412
413 subroutine cp_arg_store_real_three_tensor(x)
414 C $OpenAD$ INLINE DECLS
415 use OAD_cp
416 implicit none
417 double precision, dimension(:,:,:) :: x
418 C $OpenAD$ END DECLS
419 #ifdef OAD_DEBUG_CP
420 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)
421 #endif
422 write(unit=cp_io_unit) x
423 end subroutine
424
425 subroutine cp_arg_restore_real_three_tensor(x)
426 C $OpenAD$ INLINE DECLS
427 use OAD_cp
428 implicit none
429 double precision, dimension(:,:,:) :: x
430 C $OpenAD$ END DECLS
431 read(unit=cp_io_unit) x
432 #ifdef OAD_DEBUG_CP
433 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)
434 #endif
435 end subroutine
436
437 subroutine cp_arg_store_real_three_tensor_a(x)
438 C $OpenAD$ INLINE DECLS
439 use OAD_active
440 use OAD_cp
441 implicit none
442 type(active), dimension(:,:,:) :: x
443 C $OpenAD$ END DECLS
444 #ifdef OAD_DEBUG_CP
445 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)%v
446 #endif
447 write(unit=cp_io_unit) x%v
448 end subroutine
449
450 subroutine cp_arg_restore_real_three_tensor_a(x)
451 C $OpenAD$ INLINE DECLS
452 use OAD_active
453 use OAD_cp
454 implicit none
455 type(active), dimension(:,:,:) :: x
456 C $OpenAD$ END DECLS
457 read(unit=cp_io_unit) x%v
458 #ifdef OAD_DEBUG_CP
459 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)%v
460 #endif
461 end subroutine
462
463 subroutine cp_arg_store_real_four_tensor(x)
464 C $OpenAD$ INLINE DECLS
465 use OAD_cp
466 implicit none
467 double precision, dimension(:,:,:,:) :: x
468 C $OpenAD$ END DECLS
469 #ifdef OAD_DEBUG_CP
470 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)
471 #endif
472 write(unit=cp_io_unit) x
473 end subroutine
474
475 subroutine cp_arg_restore_real_four_tensor(x)
476 C $OpenAD$ INLINE DECLS
477 use OAD_cp
478 implicit none
479 double precision, dimension(:,:,:,:) :: x
480 C $OpenAD$ END DECLS
481 read(unit=cp_io_unit) x
482 #ifdef OAD_DEBUG_CP
483 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)
484 #endif
485 end subroutine
486
487 subroutine cp_arg_store_real_four_tensor_a(x)
488 C $OpenAD$ INLINE DECLS
489 use OAD_active
490 use OAD_cp
491 implicit none
492 type(active), dimension(:,:,:,:) :: x
493 C $OpenAD$ END DECLS
494 #ifdef OAD_DEBUG_CP
495 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)%v
496 #endif
497 write(unit=cp_io_unit) x%v
498 end subroutine
499
500 subroutine cp_arg_restore_real_four_tensor_a(x)
501 C $OpenAD$ INLINE DECLS
502 use OAD_active
503 use OAD_cp
504 implicit none
505 type(active), dimension(:,:,:,:) :: x
506 C $OpenAD$ END DECLS
507 read(unit=cp_io_unit) x%v
508 #ifdef OAD_DEBUG_CP
509 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)%v
510 #endif
511 end subroutine
512
513 subroutine cp_arg_store_real_five_tensor(x)
514 C $OpenAD$ INLINE DECLS
515 use OAD_cp
516 implicit none
517 double precision, dimension(:,:,:,:,:) :: x
518 C $OpenAD$ END DECLS
519 #ifdef OAD_DEBUG_CP
520 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)
521 #endif
522 write(unit=cp_io_unit) x
523 end subroutine
524
525 subroutine cp_arg_restore_real_five_tensor(x)
526 C $OpenAD$ INLINE DECLS
527 use OAD_cp
528 implicit none
529 double precision, dimension(:,:,:,:,:) :: x
530 C $OpenAD$ END DECLS
531 read(unit=cp_io_unit) x
532 #ifdef OAD_DEBUG_CP
533 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)
534 #endif
535 end subroutine
536
537 subroutine cp_arg_store_real_five_tensor_a(x)
538 C $OpenAD$ INLINE DECLS
539 use OAD_active
540 use OAD_cp
541 implicit none
542 type(active), dimension(:,:,:,:,:) :: x
543 C $OpenAD$ END DECLS
544 #ifdef OAD_DEBUG_CP
545 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)%v
546 #endif
547 write(unit=cp_io_unit) x%v
548 end subroutine
549
550 subroutine cp_arg_restore_real_five_tensor_a(x)
551 C $OpenAD$ INLINE DECLS
552 use OAD_active
553 use OAD_cp
554 implicit none
555 type(active), dimension(:,:,:,:,:) :: x
556 C $OpenAD$ END DECLS
557 read(unit=cp_io_unit) x%v
558 #ifdef OAD_DEBUG_CP
559 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)%v
560 #endif
561 end subroutine
562
563 subroutine cp_arg_store_real_six_tensor(x)
564 C $OpenAD$ INLINE DECLS
565 use OAD_cp
566 implicit none
567 double precision, dimension(:,:,:,:,:,:) :: x
568 C $OpenAD$ END DECLS
569 #ifdef OAD_DEBUG_CP
570 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1,1)
571 #endif
572 write(unit=cp_io_unit) x
573 end subroutine
574
575 subroutine cp_arg_restore_real_six_tensor(x)
576 C $OpenAD$ INLINE DECLS
577 use OAD_cp
578 implicit none
579 double precision, dimension(:,:,:,:,:,:) :: x
580 C $OpenAD$ END DECLS
581 read(unit=cp_io_unit) x
582 #ifdef OAD_DEBUG_CP
583 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1,1)
584 #endif
585 end subroutine
586
587 subroutine cp_arg_store_real_six_tensor_a(x)
588 C $OpenAD$ INLINE DECLS
589 use OAD_active
590 use OAD_cp
591 implicit none
592 type(active), dimension(:,:,:,:,:,:) :: x
593 C $OpenAD$ END DECLS
594 #ifdef OAD_DEBUG_CP
595 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1,1)%v
596 #endif
597 write(unit=cp_io_unit) x%v
598 end subroutine
599
600 subroutine cp_arg_restore_real_six_tensor_a(x)
601 C $OpenAD$ INLINE DECLS
602 use OAD_active
603 use OAD_cp
604 implicit none
605 type(active), dimension(:,:,:,:,:,:) :: x
606 C $OpenAD$ END DECLS
607 read(unit=cp_io_unit) x%v
608 #ifdef OAD_DEBUG_CP
609 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1,1)%v
610 #endif
611 end subroutine
612
613 C integers -----------------------------------------------------
614 subroutine cp_arg_store_integer_scalar(i)
615 C $OpenAD$ INLINE DECLS
616 use OAD_cp
617 implicit none
618 integer :: i
619 C $OpenAD$ END DECLS
620 #ifdef OAD_DEBUG_CP
621 write(standardmessageunit,*)'OAD: cp write i ', i
622 #endif
623 write(unit=cp_io_unit) i
624 end subroutine
625
626 subroutine cp_arg_restore_integer_scalar(i)
627 C $OpenAD$ INLINE DECLS
628 use OAD_cp
629 implicit none
630 integer :: i
631 C $OpenAD$ END DECLS
632 read(unit=cp_io_unit) i
633 #ifdef OAD_DEBUG_CP
634 write(standardmessageunit,*)'OAD: cp read i ', i
635 #endif
636 end subroutine
637
638 subroutine cp_arg_store_integer_vector(i)
639 C $OpenAD$ INLINE DECLS
640 use OAD_cp
641 implicit none
642 integer, dimension(:) :: i
643 C $OpenAD$ END DECLS
644 #ifdef OAD_DEBUG_CP
645 write(standardmessageunit,*)'OAD: cp write i ', i(1)
646 #endif
647 write(unit=cp_io_unit) i
648 end subroutine
649
650 subroutine cp_arg_restore_integer_vector(i)
651 C $OpenAD$ INLINE DECLS
652 use OAD_cp
653 implicit none
654 integer, dimension(:) :: i
655 C $OpenAD$ END DECLS
656 read(unit=cp_io_unit) i
657 #ifdef OAD_DEBUG_CP
658 write(standardmessageunit,*)'OAD: cp read i ', i(1)
659 #endif
660 end subroutine
661
662 subroutine cp_arg_store_integer_matrix(i)
663 C $OpenAD$ INLINE DECLS
664 use OAD_cp
665 implicit none
666 integer, dimension(:,:) :: i
667 C $OpenAD$ END DECLS
668 #ifdef OAD_DEBUG_CP
669 write(standardmessageunit,*)'OAD: cp write i ', i(1,1)
670 #endif
671 write(unit=cp_io_unit) i
672 end subroutine
673
674 subroutine cp_arg_restore_integer_matrix(i)
675 C $OpenAD$ INLINE DECLS
676 use OAD_cp
677 implicit none
678 integer, dimension(:,:) :: i
679 C $OpenAD$ END DECLS
680 read(unit=cp_io_unit) i
681 #ifdef OAD_DEBUG_CP
682 write(standardmessageunit,*)'OAD: cp read i ', i(1,1)
683 #endif
684 end subroutine
685
686 subroutine cp_arg_store_integer_three_tensor(i)
687 C $OpenAD$ INLINE DECLS
688 use OAD_cp
689 implicit none
690 integer, dimension(:,:,:) :: i
691 C $OpenAD$ END DECLS
692 #ifdef OAD_DEBUG_CP
693 write(standardmessageunit,*)'OAD: cp write i ', i(1,1,1)
694 #endif
695 write(unit=cp_io_unit) i
696 end subroutine
697
698 subroutine cp_arg_restore_integer_three_tensor(i)
699 C $OpenAD$ INLINE DECLS
700 use OAD_cp
701 implicit none
702 integer, dimension(:,:,:) :: i
703 C $OpenAD$ END DECLS
704 read(unit=cp_io_unit) i
705 #ifdef OAD_DEBUG_CP
706 write(standardmessageunit,*)'OAD: cp read i ', i(1,1,1)
707 #endif
708 end subroutine
709
710 subroutine cp_arg_store_integer_four_tensor(i)
711 C $OpenAD$ INLINE DECLS
712 use OAD_cp
713 implicit none
714 integer, dimension(:,:,:,:) :: i
715 C $OpenAD$ END DECLS
716 #ifdef OAD_DEBUG_CP
717 write(standardmessageunit,*)'OAD: cp write i ', i(1,1,1,1)
718 #endif
719 write(unit=cp_io_unit) i
720 end subroutine
721
722 subroutine cp_arg_restore_integer_four_tensor(i)
723 C $OpenAD$ INLINE DECLS
724 use OAD_cp
725 implicit none
726 integer, dimension(:,:,:,:) :: i
727 C $OpenAD$ END DECLS
728 read(unit=cp_io_unit) i
729 #ifdef OAD_DEBUG_CP
730 write(standardmessageunit,*)'OAD: cp read i ', i(1,1,1,1)
731 #endif
732 end subroutine
733
734 subroutine cp_arg_store_integer_five_tensor(i)
735 C $OpenAD$ INLINE DECLS
736 use OAD_cp
737 implicit none
738 integer, dimension(:,:,:,:,:) :: i
739 C $OpenAD$ END DECLS
740 #ifdef OAD_DEBUG_CP
741 write(standardmessageunit,*)'OAD: cp write i ', i(1,1,1,1,1)
742 #endif
743 write(unit=cp_io_unit) i
744 end subroutine
745
746 subroutine cp_arg_restore_integer_five_tensor(i)
747 C $OpenAD$ INLINE DECLS
748 use OAD_cp
749 implicit none
750 integer, dimension(:,:,:,:,:) :: i
751 C $OpenAD$ END DECLS
752 read (unit=cp_io_unit) i
753 #ifdef OAD_DEBUG_CP
754 write(standardmessageunit,*)'OAD: cp read i ', i(1,1,1,1,1)
755 #endif
756 end subroutine
757
758 C strings -----------------------------------------------------
759 subroutine cp_arg_store_string_scalar(s)
760 C $OpenAD$ INLINE DECLS
761 use OAD_cp
762 implicit none
763 character*(80) :: s
764 C $OpenAD$ END DECLS
765 #ifdef OAD_DEBUG_CP
766 write(standardmessageunit,*)'OAD: cp write s ', s
767 #endif
768 write(unit=cp_io_unit) s
769 end subroutine
770
771 subroutine cp_arg_restore_string_scalar(s)
772 C $OpenAD$ INLINE DECLS
773 use OAD_cp
774 implicit none
775 character*(80) :: s
776 C $OpenAD$ END DECLS
777 read (unit=cp_io_unit) s
778 #ifdef OAD_DEBUG_CP
779 write(standardmessageunit,*)'OAD: cp read s ', s
780 #endif
781 end subroutine
782
783 C bools -----------------------------------------------------
784 subroutine cp_arg_store_bool_scalar(b)
785 C $OpenAD$ INLINE DECLS
786 use OAD_cp
787 implicit none
788 logical :: b
789 C $OpenAD$ END DECLS
790 #ifdef OAD_DEBUG_CP
791 write(standardmessageunit,*)'OAD: cp write b ', b
792 #endif
793 write(unit=cp_io_unit) b
794 end subroutine
795
796 subroutine cp_arg_restore_bool_scalar(b)
797 C $OpenAD$ INLINE DECLS
798 use OAD_cp
799 implicit none
800 logical :: b
801 C $OpenAD$ END DECLS
802 read (unit=cp_io_unit) b
803 #ifdef OAD_DEBUG_CP
804 write(standardmessageunit,*)'OAD: cp read b ', b
805 #endif
806 end subroutine
807
808 subroutine cp_arg_store_bool_matrix(b)
809 C $OpenAD$ INLINE DECLS
810 use OAD_cp
811 implicit none
812 logical, dimension(:,:) :: b
813 C $OpenAD$ END DECLS
814 u#ifdef OAD_DEBUG_CP
815 write(standardmessageunit,*)'OAD: cp write b ', b(1,1)
816 #endif
817 write(unit=cp_io_unit) b
818 end subroutine
819
820 subroutine cp_arg_restore_bool_matrix(b)
821 C $OpenAD$ INLINE DECLS
822 use OAD_cp
823 implicit none
824 logical, dimension(:,:) :: b
825 C $OpenAD$ END DECLS
826 read(unit=cp_io_unit) b
827 #ifdef OAD_DEBUG_CP
828 write(standardmessageunit,*)'OAD: cp read b ', b(1,1)
829 #endif
830 end subroutine

  ViewVC Help
Powered by ViewVC 1.1.22