/[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.2 - (show annotations) (download)
Fri Dec 21 03:40:10 2012 UTC (11 years, 4 months ago) by utke
Branch: MAIN
Changes since 1.1: +279 -91 lines
sync with openad (part 1)

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(x)
189 C $OpenAD$ INLINE DECLS
190 use OAD_tape
191 implicit none
192 character*(80) :: x
193 C $OpenAD$ END DECLS
194 if(oad_st_sz .lt. oad_st_ptr) call oad_st_grow()
195 oad_st(oad_st_ptr)=x; oad_st_ptr=oad_st_ptr+1
196 end subroutine
197
198 subroutine pop_s(x)
199 C $OpenAD$ INLINE DECLS
200 use OAD_tape
201 implicit none
202 character*(80) :: x
203 C $OpenAD$ END DECLS
204 oad_st_ptr=oad_st_ptr-1
205 x=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 double precision, intent(in) :: a
214 type(active), intent(in) :: x
215 type(active), intent(inout) :: y
216 C $OpenAD$ END DECLS
217 y%d=y%d+x%d*(a)
218 end subroutine
219
220 subroutine zeroderiv(x)
221 C $OpenAD$ INLINE DECLS
222 use OAD_active
223 type(active), intent(out) :: x
224 C $OpenAD$ END DECLS
225 x%d=0.0d0
226 end subroutine
227
228 subroutine setderiv(y,x)
229 C $OpenAD$ INLINE DECLS
230 use OAD_active
231 type(active), intent(out) :: x
232 type(active), intent(in) :: y
233 C $OpenAD$ END DECLS
234 x%d=y%d
235 end subroutine
236
237 subroutine incderiv(y,x)
238 C $OpenAD$ INLINE DECLS
239 use OAD_active
240 type(active), intent(out) :: x
241 type(active), intent(in) :: y
242 C $OpenAD$ END DECLS
243 x%d=x%d+y%d
244 end subroutine
245
246 subroutine decderiv(y,x)
247 C $OpenAD$ INLINE DECLS
248 use OAD_active
249 type(active), intent(out) :: x
250 type(active), intent(in) :: y
251 C $OpenAD$ END DECLS
252 x%d = x%d - y%d
253 end subroutine decderiv
254
255 C Checkpointing stuff ---------------------------------------
256
257 C reals -----------------------------------------------------
258 subroutine cp_arg_store_real_scalar(x)
259 C $OpenAD$ INLINE DECLS
260 use OAD_cp
261 double precision :: x
262 C $OpenAD$ END DECLS
263 #ifdef OAD_DEBUG_CP
264 write(standardmessageunit,*)'OAD: cp write x ', x
265 #endif
266 write(unit=cp_io_unit) x
267 end subroutine
268
269 subroutine cp_arg_restore_real_scalar(x)
270 C $OpenAD$ INLINE DECLS
271 use OAD_cp
272 implicit none
273 double precision :: x
274 C $OpenAD$ END DECLS
275 read(unit=cp_io_unit) x
276 #ifdef OAD_DEBUG_CP
277 write(standardmessageunit,*)'OAD: cp read x ', x
278 #endif
279 end subroutine
280
281 subroutine cp_arg_store_real_scalar_a(x)
282 C $OpenAD$ INLINE DECLS
283 use OAD_active
284 use OAD_cp
285 implicit none
286 type(active) :: x
287 C $OpenAD$ END DECLS
288 #ifdef OAD_DEBUG_CP
289 write(standardmessageunit,*)'OAD: cp write x ', x%v
290 #endif
291 write(unit=cp_io_unit) x%v
292 end subroutine
293
294 subroutine cp_arg_restore_real_scalar_a(x)
295 C $OpenAD$ INLINE DECLS
296 use OAD_active
297 use OAD_cp
298 implicit none
299 type(active) :: x
300 C $OpenAD$ END DECLS
301 read(unit=cp_io_unit) x%v
302 #ifdef OAD_DEBUG_CP
303 write(standardmessageunit,*)'OAD: cp read x ', x%v
304 #endif
305 end subroutine
306
307 subroutine cp_arg_store_real_vector(x)
308 C $OpenAD$ INLINE DECLS
309 use OAD_cp
310 implicit none
311 double precision, dimension(:) :: x
312 C $OpenAD$ END DECLS
313 #ifdef OAD_DEBUG_CP
314 write(standardmessageunit,*)'OAD: cp write x ', x(1)
315 #endif
316 write(unit=cp_io_unit) x
317 end subroutine
318
319 subroutine cp_arg_restore_real_vector(x)
320 C $OpenAD$ INLINE DECLS
321 use OAD_cp
322 implicit none
323 double precision, dimension(:) :: x
324 C $OpenAD$ END DECLS
325 read(unit=cp_io_unit) x
326 #ifdef OAD_DEBUG_CP
327 write(standardmessageunit,*)'OAD: cp read x ', x(1)
328 #endif
329 end subroutine
330
331 subroutine cp_arg_store_real_vector_a(x)
332 C $OpenAD$ INLINE DECLS
333 use OAD_active
334 use OAD_cp
335 implicit none
336 type(active), dimension(:) :: x
337 C $OpenAD$ END DECLS
338 #ifdef OAD_DEBUG_CP
339 write(standardmessageunit,*)'OAD: cp write x ', x(1)%v
340 #endif
341 write(unit=cp_io_unit) x%v
342 end subroutine
343
344 subroutine cp_arg_restore_real_vector_a(x)
345 C $OpenAD$ INLINE DECLS
346 use OAD_active
347 use OAD_cp
348 implicit none
349 type(active), dimension(:) :: x
350 C $OpenAD$ END DECLS
351 read(unit=cp_io_unit) x%v
352 #ifdef OAD_DEBUG_CP
353 write(standardmessageunit,*)'OAD: cp read x ', x(1)%v
354 #endif
355 end subroutine
356
357 subroutine cp_arg_store_real_matrix(x)
358 C $OpenAD$ INLINE DECLS
359 use OAD_cp
360 implicit none
361 double precision, dimension(:,:) :: x
362 C $OpenAD$ END DECLS
363 #ifdef OAD_DEBUG_CP
364 write(standardmessageunit,*)'OAD: cp write x ', x(1,1)
365 #endif
366 write(unit=cp_io_unit) x
367 end subroutine
368
369 subroutine cp_arg_restore_real_matrix(x)
370 C $OpenAD$ INLINE DECLS
371 use OAD_cp
372 implicit none
373 double precision, dimension(:,:) :: x
374 C $OpenAD$ END DECLS
375 read(unit=cp_io_unit) x
376 #ifdef OAD_DEBUG_CP
377 write(standardmessageunit,*)'OAD: cp read x ', x(1,1)
378 #endif
379 end subroutine
380
381 subroutine cp_arg_store_real_matrix_a(x)
382 C $OpenAD$ INLINE DECLS
383 use OAD_active
384 use OAD_cp
385 implicit none
386 type(active), dimension(:,:) :: x
387 C $OpenAD$ END DECLS
388 #ifdef OAD_DEBUG_CP
389 write(standardmessageunit,*)'OAD: cp write x ', x(1,1)%v
390 #endif
391 write(unit=cp_io_unit) x%v
392 end subroutine
393
394 subroutine cp_arg_restore_real_matrix_a(x)
395 C $OpenAD$ INLINE DECLS
396 use OAD_active
397 use OAD_cp
398 implicit none
399 type(active), dimension(:,:) :: x
400 C $OpenAD$ END DECLS
401 read(unit=cp_io_unit) x%v
402 #ifdef OAD_DEBUG_CP
403 write(standardmessageunit,*)'OAD: cp read x ', x(1.1)%v
404 #endif
405 end subroutine
406
407 subroutine cp_arg_store_real_three_tensor(x)
408 C $OpenAD$ INLINE DECLS
409 use OAD_cp
410 implicit none
411 double precision, dimension(:,:,:) :: x
412 C $OpenAD$ END DECLS
413 #ifdef OAD_DEBUG_CP
414 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)
415 #endif
416 write(unit=cp_io_unit) x
417 end subroutine
418
419 subroutine cp_arg_restore_real_three_tensor(x)
420 C $OpenAD$ INLINE DECLS
421 use OAD_cp
422 implicit none
423 double precision, dimension(:,:,:) :: x
424 C $OpenAD$ END DECLS
425 read(unit=cp_io_unit) x
426 #ifdef OAD_DEBUG_CP
427 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)
428 #endif
429 end subroutine
430
431 subroutine cp_arg_store_real_three_tensor_a(x)
432 C $OpenAD$ INLINE DECLS
433 use OAD_active
434 use OAD_cp
435 implicit none
436 type(active), dimension(:,:,:) :: x
437 C $OpenAD$ END DECLS
438 #ifdef OAD_DEBUG_CP
439 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)%v
440 #endif
441 write(unit=cp_io_unit) x%v
442 end subroutine
443
444 subroutine cp_arg_restore_real_three_tensor_a(x)
445 C $OpenAD$ INLINE DECLS
446 use OAD_active
447 use OAD_cp
448 implicit none
449 type(active), dimension(:,:,:) :: x
450 C $OpenAD$ END DECLS
451 #ifdef OAD_DEBUG_CP
452 write(standardmessageunit,*)'OAD: cp read x ', x%v
453 #endif
454 read(unit=cp_io_unit) x%v
455 end subroutine
456
457 subroutine cp_arg_store_real_four_tensor(x)
458 C $OpenAD$ INLINE DECLS
459 use OAD_cp
460 implicit none
461 double precision, dimension(:,:,:,:) :: x
462 C $OpenAD$ END DECLS
463 #ifdef OAD_DEBUG_CP
464 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)
465 #endif
466 write(unit=cp_io_unit) x
467 end subroutine
468
469 subroutine cp_arg_restore_real_four_tensor(x)
470 C $OpenAD$ INLINE DECLS
471 use OAD_cp
472 implicit none
473 double precision, dimension(:,:,:,:) :: x
474 C $OpenAD$ END DECLS
475 read(unit=cp_io_unit) x
476 #ifdef OAD_DEBUG_CP
477 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)
478 #endif
479 end subroutine
480
481 subroutine cp_arg_store_real_four_tensor_a(x)
482 C $OpenAD$ INLINE DECLS
483 use OAD_active
484 use OAD_cp
485 implicit none
486 type(active), dimension(:,:,:,:) :: x
487 C $OpenAD$ END DECLS
488 #ifdef OAD_DEBUG_CP
489 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)%v
490 #endif
491 write(unit=cp_io_unit) x%v
492 end subroutine
493
494 subroutine cp_arg_restore_real_four_tensor_a(x)
495 C $OpenAD$ INLINE DECLS
496 use OAD_active
497 use OAD_cp
498 implicit none
499 type(active), dimension(:,:,:,:) :: x
500 C $OpenAD$ END DECLS
501 read(unit=cp_io_unit) x%v
502 #ifdef OAD_DEBUG_CP
503 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)%v
504 #endif
505 end subroutine
506
507 subroutine cp_arg_store_real_five_tensor(x)
508 C $OpenAD$ INLINE DECLS
509 use OAD_cp
510 implicit none
511 double precision, dimension(:,:,:,:,:) :: x
512 C $OpenAD$ END DECLS
513 #ifdef OAD_DEBUG_CP
514 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)
515 #endif
516 write(unit=cp_io_unit) x
517 end subroutine
518
519 subroutine cp_arg_restore_real_five_tensor(x)
520 C $OpenAD$ INLINE DECLS
521 use OAD_cp
522 implicit none
523 double precision, dimension(:,:,:,:,:) :: x
524 C $OpenAD$ END DECLS
525 read(unit=cp_io_unit) x
526 #ifdef OAD_DEBUG_CP
527 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)
528 #endif
529 end subroutine
530
531 subroutine cp_arg_store_real_five_tensor_a(x)
532 C $OpenAD$ INLINE DECLS
533 use OAD_active
534 use OAD_cp
535 implicit none
536 type(active), dimension(:,:,:,:,:) :: x
537 C $OpenAD$ END DECLS
538 #ifdef OAD_DEBUG_CP
539 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)%v
540 #endif
541 write(unit=cp_io_unit) x%v
542 end subroutine
543
544 subroutine cp_arg_restore_real_five_tensor_a(x)
545 C $OpenAD$ INLINE DECLS
546 use OAD_active
547 use OAD_cp
548 implicit none
549 type(active), dimension(:,:,:,:,:) :: x
550 C $OpenAD$ END DECLS
551 read(unit=cp_io_unit) x%v
552 #ifdef OAD_DEBUG_CP
553 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)%v
554 #endif
555 end subroutine
556
557
558 C integers -----------------------------------------------------
559 subroutine cp_arg_store_integer_scalar(x)
560 C $OpenAD$ INLINE DECLS
561 use OAD_cp
562 implicit none
563 integer :: x
564 C $OpenAD$ END DECLS
565 #ifdef OAD_DEBUG_CP
566 write(standardmessageunit,*)'OAD: cp write x ', x
567 #endif
568 write(unit=cp_io_unit) x
569 end subroutine
570
571 subroutine cp_arg_restore_integer_scalar(x)
572 C $OpenAD$ INLINE DECLS
573 use OAD_cp
574 implicit none
575 integer :: x
576 C $OpenAD$ END DECLS
577 read(unit=cp_io_unit) x
578 #ifdef OAD_DEBUG_CP
579 write(standardmessageunit,*)'OAD: cp read x ', x
580 #endif
581 end subroutine
582
583 subroutine cp_arg_store_integer_vector(x)
584 C $OpenAD$ INLINE DECLS
585 use OAD_cp
586 implicit none
587 integer, dimension(:) :: x
588 C $OpenAD$ END DECLS
589 #ifdef OAD_DEBUG_CP
590 write(standardmessageunit,*)'OAD: cp write x ', x(1)
591 #endif
592 write(unit=cp_io_unit) x
593 end subroutine
594
595 subroutine cp_arg_restore_integer_vector(x)
596 C $OpenAD$ INLINE DECLS
597 use OAD_cp
598 implicit none
599 integer, dimension(:) :: x
600 C $OpenAD$ END DECLS
601 read(unit=cp_io_unit) x
602 #ifdef OAD_DEBUG_CP
603 write(standardmessageunit,*)'OAD: cp read x ', x(1)
604 #endif
605 end subroutine
606
607 subroutine cp_arg_store_integer_matrix(x)
608 C $OpenAD$ INLINE DECLS
609 use OAD_cp
610 implicit none
611 integer, dimension(:,:) :: x
612 C $OpenAD$ END DECLS
613 #ifdef OAD_DEBUG_CP
614 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)
615 #endif
616 write(unit=cp_io_unit) x
617 end subroutine
618
619 subroutine cp_arg_restore_integer_matrix(x)
620 C $OpenAD$ INLINE DECLS
621 use OAD_cp
622 implicit none
623 integer, dimension(:,:) :: x
624 C $OpenAD$ END DECLS
625 read(unit=cp_io_unit) x
626 #ifdef OAD_DEBUG_CP
627 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)
628 #endif
629 end subroutine
630
631 subroutine cp_arg_store_integer_three_tensor(x)
632 C $OpenAD$ INLINE DECLS
633 use OAD_cp
634 implicit none
635 integer, dimension(:,:,:) :: x
636 C $OpenAD$ END DECLS
637 #ifdef OAD_DEBUG_CP
638 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)
639 #endif
640 write(unit=cp_io_unit) x
641 end subroutine
642
643 subroutine cp_arg_restore_integer_three_tensor(x)
644 C $OpenAD$ INLINE DECLS
645 use OAD_cp
646 implicit none
647 integer, dimension(:,:,:) :: x
648 C $OpenAD$ END DECLS
649 read(unit=cp_io_unit) x
650 #ifdef OAD_DEBUG_CP
651 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)
652 #endif
653 end subroutine
654
655 subroutine cp_arg_store_integer_four_tensor(x)
656 C $OpenAD$ INLINE DECLS
657 use OAD_cp
658 implicit none
659 integer, dimension(:,:,:,:) :: x
660 C $OpenAD$ END DECLS
661 #ifdef OAD_DEBUG_CP
662 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)
663 #endif
664 write(unit=cp_io_unit) x
665 end subroutine
666
667 subroutine cp_arg_restore_integer_four_tensor(x)
668 C $OpenAD$ INLINE DECLS
669 use OAD_cp
670 implicit none
671 integer, dimension(:,:,:,:) :: x
672 C $OpenAD$ END DECLS
673 read(unit=cp_io_unit) x
674 #ifdef OAD_DEBUG_CP
675 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)
676 #endif
677 end subroutine
678
679 subroutine cp_arg_store_integer_five_tensor(x)
680 C $OpenAD$ INLINE DECLS
681 use OAD_cp
682 implicit none
683 integer, dimension(:,:,:,:,:) :: x
684 C $OpenAD$ END DECLS
685 #ifdef OAD_DEBUG_CP
686 write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)
687 #endif
688 write(unit=cp_io_unit) x
689 end subroutine
690
691 subroutine cp_arg_restore_integer_five_tensor(x)
692 C $OpenAD$ INLINE DECLS
693 use OAD_cp
694 implicit none
695 integer, dimension(:,:,:,:,:) :: x
696 C $OpenAD$ END DECLS
697 read (unit=cp_io_unit) x
698 #ifdef OAD_DEBUG_CP
699 write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)
700 #endif
701 end subroutine
702
703 C strings -----------------------------------------------------
704 subroutine cp_arg_store_string_scalar(x)
705 C $OpenAD$ INLINE DECLS
706 use OAD_cp
707 implicit none
708 character*(80) :: x
709 C $OpenAD$ END DECLS
710 #ifdef OAD_DEBUG_CP
711 write(standardmessageunit,*)'OAD: cp write x ', x
712 #endif
713 write(unit=cp_io_unit) x
714 end subroutine
715
716 subroutine cp_arg_restore_string_scalar(x)
717 C $OpenAD$ INLINE DECLS
718 use OAD_cp
719 implicit none
720 character*(80) :: x
721 C $OpenAD$ END DECLS
722 read (unit=cp_io_unit) x
723 #ifdef OAD_DEBUG_CP
724 write(standardmessageunit,*)'OAD: cp read x ', x
725 #endif
726 end subroutine
727
728 C bools -----------------------------------------------------
729 subroutine cp_arg_store_bool_scalar(x)
730 C $OpenAD$ INLINE DECLS
731 use OAD_cp
732 implicit none
733 logical :: x
734 C $OpenAD$ END DECLS
735 #ifdef OAD_DEBUG_CP
736 write(standardmessageunit,*)'OAD: cp write x ', x
737 #endif
738 write(unit=cp_io_unit) x
739 end subroutine
740
741 subroutine cp_arg_restore_bool_scalar(x)
742 C $OpenAD$ INLINE DECLS
743 use OAD_cp
744 implicit none
745 logical :: x
746 C $OpenAD$ END DECLS
747 read (unit=cp_io_unit) x
748 #ifdef OAD_DEBUG_CP
749 write(standardmessageunit,*)'OAD: cp read x ', x
750 #endif
751 end subroutine
752
753 subroutine cp_arg_store_bool_matrix(x)
754 C $OpenAD$ INLINE DECLS
755 use OAD_cp
756 implicit none
757 logical, dimension(:,:) :: x
758 C $OpenAD$ END DECLS
759 u#ifdef OAD_DEBUG_CP
760 write(standardmessageunit,*)'OAD: cp write x ', x(1)
761 #endif
762 write(unit=cp_io_unit) x
763 end subroutine
764
765 subroutine cp_arg_restore_bool_matrix(x)
766 C $OpenAD$ INLINE DECLS
767 use OAD_cp
768 implicit none
769 logical, dimension(:,:) :: x
770 C $OpenAD$ END DECLS
771 read(unit=cp_io_unit) x
772 #ifdef OAD_DEBUG_CP
773 write(standardmessageunit,*)'OAD: cp read x ', x(1)
774 #endif
775 end subroutine

  ViewVC Help
Powered by ViewVC 1.1.22