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

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

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

revision 1.1 by heimbach, Thu Sep 20 23:12:47 2012 UTC revision 1.3 by utke, Fri Dec 21 16:18:40 2012 UTC
# Line 3  C taping ------------------------------- Line 3  C taping -------------------------------
3    
4        subroutine push_s0(x)        subroutine push_s0(x)
5  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
6        use OpenAD_tape        use OAD_tape
7        implicit none        implicit none
8        double precision :: x        double precision :: x
9  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 13  C $OpenAD$ END DECLS Line 13  C $OpenAD$ END DECLS
13    
14        subroutine pop_s0(x)        subroutine pop_s0(x)
15  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
16        use OpenAD_tape        use OAD_tape
17        implicit none        implicit none
18        double precision :: x        double precision :: x
19  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 21  C $OpenAD$ END DECLS Line 21  C $OpenAD$ END DECLS
21        x=oad_dt(oad_dt_ptr)        x=oad_dt(oad_dt_ptr)
22        end subroutine        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)        subroutine apush(x)
76  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
77        use OpenAD_tape        use OAD_tape
78          use OAD_active
79        implicit none        implicit none
80        type(active) :: x        type(active) :: x
81  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 33  C $OpenAD$ END DECLS Line 85  C $OpenAD$ END DECLS
85    
86        subroutine apop(x)        subroutine apop(x)
87  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
88        use OpenAD_tape        use OAD_tape
89          use OAD_active
90        implicit none        implicit none
91        type(active) :: x        type(active) :: x
92  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 43  C $OpenAD$ END DECLS Line 96  C $OpenAD$ END DECLS
96    
97        subroutine push_i_s0(x)        subroutine push_i_s0(x)
98  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
99        use OpenAD_tape        use OAD_tape
100        implicit none        implicit none
101        integer :: x        integer :: x
102  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 53  C $OpenAD$ END DECLS Line 106  C $OpenAD$ END DECLS
106    
107        subroutine pop_i_s0(x)        subroutine pop_i_s0(x)
108  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
109        use OpenAD_tape        use OAD_tape
110        implicit none        implicit none
111        integer :: x        integer :: x
112  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 61  C $OpenAD$ END DECLS Line 114  C $OpenAD$ END DECLS
114        x=oad_it(oad_it_ptr)        x=oad_it(oad_it_ptr)
115        end subroutine        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)        subroutine push_b(x)
169  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
170        use OpenAD_tape        use OAD_tape
171        implicit none        implicit none
172        logical :: x        logical :: x
173  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 73  C $OpenAD$ END DECLS Line 177  C $OpenAD$ END DECLS
177    
178        subroutine pop_b(x)        subroutine pop_b(x)
179  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
180        use OpenAD_tape        use OAD_tape
181        implicit none        implicit none
182        logical :: x        logical :: x
183  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 81  C $OpenAD$ END DECLS Line 185  C $OpenAD$ END DECLS
185        x=oad_lt(oad_lt_ptr)        x=oad_lt(oad_lt_ptr)
186        end subroutine        end subroutine
187    
188        subroutine push_s(x)        subroutine push_s(s)
189  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
190        use OpenAD_tape        use OAD_tape
191        implicit none        implicit none
192        character*(80) :: x        character*(80) :: s
193  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
194        if(oad_st_sz .lt. oad_st_ptr) call oad_st_grow()        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        oad_st(oad_st_ptr)=s; oad_st_ptr=oad_st_ptr+1
196        end subroutine        end subroutine
197    
198        subroutine pop_s(x)        subroutine pop_s(s)
199  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
200        use OpenAD_tape        use OAD_tape
201        implicit none        implicit none
202        character*(80) :: x        character*(80) :: s
203  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
204        oad_st_ptr=oad_st_ptr-1        oad_st_ptr=oad_st_ptr-1
205        x=oad_st(oad_st_ptr)        s=oad_st(oad_st_ptr)
206        end subroutine        end subroutine
207          
208    C ----------------------- Propagation -----------------------
209    
210        subroutine saxpy(a,x,y)        subroutine saxpy(a,x,y)
211  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
212          use OAD_active
213          implicit none
214        double precision, intent(in) :: a        double precision, intent(in) :: a
215        type(active), intent(in) :: x        type(active), intent(in) :: x
216        type(active), intent(inout) :: y        type(active), intent(inout) :: y
# Line 112  C $OpenAD$ END DECLS Line 220  C $OpenAD$ END DECLS
220    
221        subroutine zeroderiv(x)        subroutine zeroderiv(x)
222  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
223          use OAD_active
224          implicit none
225        type(active), intent(out) :: x        type(active), intent(out) :: x
226  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
227        x%d=0.0d0        x%d=0.0d0
# Line 119  C $OpenAD$ END DECLS Line 229  C $OpenAD$ END DECLS
229    
230        subroutine setderiv(y,x)        subroutine setderiv(y,x)
231  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
232          use OAD_active
233          implicit none
234        type(active), intent(out) :: x        type(active), intent(out) :: x
235        type(active), intent(in) :: y        type(active), intent(in) :: y
236  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 127  C $OpenAD$ END DECLS Line 239  C $OpenAD$ END DECLS
239    
240        subroutine incderiv(y,x)        subroutine incderiv(y,x)
241  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
242          use OAD_active
243          implicit none
244        type(active), intent(out) :: x        type(active), intent(out) :: x
245        type(active), intent(in) :: y        type(active), intent(in) :: y
246  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 135  C $OpenAD$ END DECLS Line 249  C $OpenAD$ END DECLS
249    
250        subroutine decderiv(y,x)        subroutine decderiv(y,x)
251  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
252          use OAD_active
253          implicit none
254        type(active), intent(out) :: x        type(active), intent(out) :: x
255        type(active), intent(in) :: y        type(active), intent(in) :: y
256  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
# Line 146  C Checkpointing stuff ------------------ Line 262  C Checkpointing stuff ------------------
262  C reals -----------------------------------------------------  C reals -----------------------------------------------------
263        subroutine cp_arg_store_real_scalar(x)        subroutine cp_arg_store_real_scalar(x)
264  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
265        double precision :: x          use OAD_cp
266            implicit none
267            double precision :: x
268  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
269  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
270          write(standardmessageunit,*)'OAD: cp write x ', x          write(standardmessageunit,*)'OAD: cp write x ', x
271  #endif  #endif
272          write(cp_io_unit) x          write(unit=cp_io_unit) x
273        end subroutine        end subroutine
274    
275        subroutine cp_arg_restore_real_scalar(x)        subroutine cp_arg_restore_real_scalar(x)
276  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
277        implicit none          use OAD_cp
278        double precision :: x          implicit none
279            double precision :: x
280  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
281          read(cp_io_unit) x          read(unit=cp_io_unit) x
282  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
283          write(standardmessageunit,*)'OAD: cp read x ', x          write(standardmessageunit,*)'OAD: cp read x ', x
284  #endif  #endif
# Line 167  C $OpenAD$ END DECLS Line 286  C $OpenAD$ END DECLS
286    
287        subroutine cp_arg_store_real_scalar_a(x)        subroutine cp_arg_store_real_scalar_a(x)
288  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
289        double precision :: x          use OAD_active
290            use OAD_cp
291            implicit none
292            type(active) :: x
293  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
294  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
295          write(standardmessageunit,*)'OAD: cp write x ', x%v          write(standardmessageunit,*)'OAD: cp write x ', x%v
296  #endif  #endif
297          write(cp_io_unit) x%v          write(unit=cp_io_unit) x%v
298        end subroutine        end subroutine
299    
300        subroutine cp_arg_restore_real_scalar_a(x)        subroutine cp_arg_restore_real_scalar_a(x)
301  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
302        implicit none          use OAD_active
303        double precision :: x          use OAD_cp
304            implicit none
305            type(active) :: x
306  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
307          read(cp_io_unit) x%v          read(unit=cp_io_unit) x%v
308  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
309          write(standardmessageunit,*)'OAD: cp read x ', x%v          write(standardmessageunit,*)'OAD: cp read x ', x%v
310  #endif  #endif
311        end subroutine        end subroutine
312          
313        subroutine cp_arg_store_real_vector(x)        subroutine cp_arg_store_real_vector(x)
314  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
315        implicit none          use OAD_cp
316        double precision, dimension(:) :: x          implicit none
317            double precision, dimension(:) :: x
318  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
319  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
320          write(standardmessageunit,*)'OAD: cp write x ', x(1)          write(standardmessageunit,*)'OAD: cp write x ', x(1)
321  #endif  #endif
322          write(cp_io_unit) x          write(unit=cp_io_unit) x
323        end subroutine        end subroutine
324    
325        subroutine cp_arg_restore_real_vector(x)        subroutine cp_arg_restore_real_vector(x)
326  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
327        implicit none          use OAD_cp
328        double precision, dimension(:) :: x          implicit none
329            double precision, dimension(:) :: x
330  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
331          read(cp_io_unit) x          read(unit=cp_io_unit) x
332  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
333          write(standardmessageunit,*)'OAD: cp read x ', x(1)          write(standardmessageunit,*)'OAD: cp read x ', x(1)
334  #endif  #endif
# Line 210  C $OpenAD$ END DECLS Line 336  C $OpenAD$ END DECLS
336    
337        subroutine cp_arg_store_real_vector_a(x)        subroutine cp_arg_store_real_vector_a(x)
338  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
339        implicit none          use OAD_active
340        double precision, dimension(:) :: x          use OAD_cp
341            implicit none
342            type(active), dimension(:) :: x
343  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
344  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
345          write(standardmessageunit,*)'OAD: cp write x ', x(1)%v          write(standardmessageunit,*)'OAD: cp write x ', x(1)%v
346  #endif  #endif
347          write(cp_io_unit) x%v          write(unit=cp_io_unit) x%v
348        end subroutine        end subroutine
349    
350        subroutine cp_arg_restore_real_vector_a(x)        subroutine cp_arg_restore_real_vector_a(x)
351  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
352        implicit none          use OAD_active
353        double precision, dimension(:) :: x          use OAD_cp
354            implicit none
355            type(active), dimension(:) :: x
356  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
357          read(cp_io_unit) x%v          read(unit=cp_io_unit) x%v
358  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
359          write(standardmessageunit,*)'OAD: cp read x ', x(1)%v          write(standardmessageunit,*)'OAD: cp read x ', x(1)%v
360  #endif  #endif
# Line 232  C $OpenAD$ END DECLS Line 362  C $OpenAD$ END DECLS
362    
363        subroutine cp_arg_store_real_matrix(x)        subroutine cp_arg_store_real_matrix(x)
364  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
365        implicit none          use OAD_cp
366        double precision, dimension(::) :: x          implicit none
367            double precision, dimension(:,:) :: x
368  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
369  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
370          write(standardmessageunit,*)'OAD: cp write x ', x(1,1)          write(standardmessageunit,*)'OAD: cp write x ', x(1,1)
371  #endif  #endif
372          write(cp_io_unit) x          write(unit=cp_io_unit) x
373        end subroutine        end subroutine
374    
375        subroutine cp_arg_restore_real_matrix(x)        subroutine cp_arg_restore_real_matrix(x)
376  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
377        implicit none          use OAD_cp
378        double precision, dimension(::) :: x          implicit none
379            double precision, dimension(:,:) :: x
380  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
381          read(cp_io_unit) x          read(unit=cp_io_unit) x
382  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
383          write(standardmessageunit,*)'OAD: cp read x ', x(1,1)          write(standardmessageunit,*)'OAD: cp read x ', x(1,1)
384  #endif  #endif
# Line 254  C $OpenAD$ END DECLS Line 386  C $OpenAD$ END DECLS
386    
387        subroutine cp_arg_store_real_matrix_a(x)        subroutine cp_arg_store_real_matrix_a(x)
388  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
389        implicit none          use OAD_active
390        double precision, dimension(::) :: x          use OAD_cp
391            implicit none
392            type(active), dimension(:,:) :: x
393  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
394  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
395          write(standardmessageunit,*)'OAD: cp write x ', x(1,1)%v          write(standardmessageunit,*)'OAD: cp write x ', x(1,1)%v
396  #endif  #endif
397          write(cp_io_unit) x%v          write(unit=cp_io_unit) x%v
398        end subroutine        end subroutine
399    
400        subroutine cp_arg_restore_real_matrix_a(x)        subroutine cp_arg_restore_real_matrix_a(x)
401  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
402        implicit none          use OAD_active
403        double precision, dimension(::) :: x          use OAD_cp
404            implicit none
405            type(active), dimension(:,:) :: x
406  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
407          read(cp_io_unit) x%v          read(unit=cp_io_unit) x%v
408  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
409          write(standardmessageunit,*)'OAD: cp read x ', x(1.1)%v          write(standardmessageunit,*)'OAD: cp read x ', x(1,1)%v
410  #endif  #endif
411        end subroutine        end subroutine
412    
413        subroutine cp_arg_store_real_three_tensor(x)        subroutine cp_arg_store_real_three_tensor(x)
414  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
415        implicit none          use OAD_cp
416        double precision, dimension(::) :: x          implicit none
417            double precision, dimension(:,:,:) :: x
418  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
419  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
420          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)
421  #endif  #endif
422          write(cp_io_unit) x          write(unit=cp_io_unit) x
423        end subroutine        end subroutine
424    
425        subroutine cp_arg_store_real_three_tensor_a(x)        subroutine cp_arg_restore_real_three_tensor(x)
426  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
427        implicit none          use OAD_cp
428        double precision, dimension(::) :: x          implicit none
429            double precision, dimension(:,:,:) :: x
430  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
431            read(unit=cp_io_unit) x
432  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
433          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)%v          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)
434  #endif  #endif
         write(cp_io_unit) x%v  
435        end subroutine        end subroutine
436    
437        subroutine cp_arg_restore_real_three_tensor(x)        subroutine cp_arg_store_real_three_tensor_a(x)
438  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
439        implicit none          use OAD_active
440        double precision, dimension(::) :: x          use OAD_cp
441            implicit none
442            type(active), dimension(:,:,:) :: x
443  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
         read(cp_io_unit) x  
444  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
445          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)%v
446  #endif  #endif
447            write(unit=cp_io_unit) x%v
448        end subroutine        end subroutine
449    
450        subroutine cp_arg_restore_real_three_tensor_a(x)        subroutine cp_arg_restore_real_three_tensor_a(x)
451  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
452        implicit none          use OAD_active
453        double precision, dimension(::) :: x          use OAD_cp
454            implicit none
455            type(active), dimension(:,:,:) :: x
456  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
457            read(unit=cp_io_unit) x%v
458  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
459          write(standardmessageunit,*)'OAD: cp read x ', x%v          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)%v
460  #endif  #endif
         read(cp_io_unit) x%v  
461        end subroutine        end subroutine
462    
463        subroutine cp_arg_store_real_four_tensor(x)        subroutine cp_arg_store_real_four_tensor(x)
464  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
465        implicit none          use OAD_cp
466        double precision, dimension(::) :: x          implicit none
467            double precision, dimension(:,:,:,:) :: x
468  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
469  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
470          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)
471  #endif  #endif
472          write(cp_io_unit) x          write(unit=cp_io_unit) x
473        end subroutine        end subroutine
474    
475        subroutine cp_arg_store_real_four_tensor_a(x)        subroutine cp_arg_restore_real_four_tensor(x)
476  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
477        implicit none          use OAD_cp
478        double precision, dimension(::) :: x          implicit none
479            double precision, dimension(:,:,:,:) :: x
480  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
481            read(unit=cp_io_unit) x
482  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
483          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)%v          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)
484  #endif  #endif
         write(cp_io_unit) x%v  
485        end subroutine        end subroutine
486    
487        subroutine cp_arg_restore_real_four_tensor(x)        subroutine cp_arg_store_real_four_tensor_a(x)
488  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
489        implicit none          use OAD_active
490        double precision, dimension(::) :: x          use OAD_cp
491            implicit none
492            type(active), dimension(:,:,:,:) :: x
493  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
         read(cp_io_unit) x  
494  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
495          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)%v
496  #endif  #endif
497            write(unit=cp_io_unit) x%v
498        end subroutine        end subroutine
499    
500        subroutine cp_arg_restore_real_four_tensor_a(x)        subroutine cp_arg_restore_real_four_tensor_a(x)
501  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
502        implicit none          use OAD_active
503        double precision, dimension(::) :: x          use OAD_cp
504            implicit none
505            type(active), dimension(:,:,:,:) :: x
506  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
507          read(cp_io_unit) x%v          read(unit=cp_io_unit) x%v
508  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
509          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)%v          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)%v
510  #endif  #endif
511        end subroutine        end subroutine
512    
513        subroutine cp_arg_store_real_five_tensor(x)        subroutine cp_arg_store_real_five_tensor(x)
514  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
515        implicit none          use OAD_cp
516        double precision, dimension(::) :: x          implicit none
517            double precision, dimension(:,:,:,:,:) :: x
518  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
519  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
520          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)
521  #endif  #endif
522          write(cp_io_unit) x          write(unit=cp_io_unit) x
523        end subroutine        end subroutine
524    
525        subroutine cp_arg_store_real_five_tensor_a(x)        subroutine cp_arg_restore_real_five_tensor(x)
526  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
527        implicit none          use OAD_cp
528        double precision, dimension(::) :: x          implicit none
529            double precision, dimension(:,:,:,:,:) :: x
530  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
531            read(unit=cp_io_unit) x
532  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
533          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)%v          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)
534  #endif  #endif
         write(cp_io_unit) x%v  
535        end subroutine        end subroutine
536    
537        subroutine cp_arg_restore_real_five_tensor(x)        subroutine cp_arg_store_real_five_tensor_a(x)
538  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
539        implicit none          use OAD_active
540        double precision, dimension(::) :: x          use OAD_cp
541            implicit none
542            type(active), dimension(:,:,:,:,:) :: x
543  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
         read(cp_io_unit) x  
544  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
545          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)%v
546  #endif  #endif
547            write(unit=cp_io_unit) x%v
548        end subroutine        end subroutine
549    
550        subroutine cp_arg_restore_real_five_tensor_a(x)        subroutine cp_arg_restore_real_five_tensor_a(x)
551  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
552        implicit none          use OAD_active
553        double precision, dimension(::) :: x          use OAD_cp
554            implicit none
555            type(active), dimension(:,:,:,:,:) :: x
556  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
557          read(cp_io_unit) x%v          read(unit=cp_io_unit) x%v
558  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
559          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)%v          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)%v
560  #endif  #endif
561        end subroutine        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 -----------------------------------------------------  C integers -----------------------------------------------------
614        subroutine cp_arg_store_integer_scalar(x)        subroutine cp_arg_store_integer_scalar(i)
615  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
616        implicit none          use OAD_cp
617        integer :: x          implicit none
618            integer :: i
619  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
620  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
621          write(standardmessageunit,*)'OAD: cp write x ', x          write(standardmessageunit,*)'OAD: cp write i ', i
622  #endif  #endif
623          write(cp_io_unit) x          write(unit=cp_io_unit) i
624        end subroutine        end subroutine
625    
626        subroutine cp_arg_restore_integer_scalar(x)        subroutine cp_arg_restore_integer_scalar(i)
627  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
628        implicit none          use OAD_cp
629        integer :: x          implicit none
630            integer :: i
631  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
632          read(cp_io_unit) x          read(unit=cp_io_unit) i
633  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
634          write(standardmessageunit,*)'OAD: cp read x ', x          write(standardmessageunit,*)'OAD: cp read i ', i
635  #endif  #endif
636        end subroutine        end subroutine
637    
638        subroutine cp_arg_store_integer_vector(x)        subroutine cp_arg_store_integer_vector(i)
639  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
640        implicit none          use OAD_cp
641        integer, dimension(:) :: x          implicit none
642            integer, dimension(:) :: i
643  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
644  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
645          write(standardmessageunit,*)'OAD: cp write x ', x(1)          write(standardmessageunit,*)'OAD: cp write i ', i(1)
646  #endif  #endif
647          write(cp_io_unit) x          write(unit=cp_io_unit) i
648        end subroutine        end subroutine
649    
650        subroutine cp_arg_restore_integer_vector(x)        subroutine cp_arg_restore_integer_vector(i)
651  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
652        implicit none          use OAD_cp
653        integer, dimension(:) :: x          implicit none
654            integer, dimension(:) :: i
655  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
656          read(cp_io_unit) x          read(unit=cp_io_unit) i
657  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
658          write(standardmessageunit,*)'OAD: cp read x ', x(1)          write(standardmessageunit,*)'OAD: cp read i ', i(1)
659  #endif  #endif
660        end subroutine        end subroutine
661    
662        subroutine cp_arg_store_integer_matrix(x)        subroutine cp_arg_store_integer_matrix(i)
663  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
664        implicit none          use OAD_cp
665        integer, dimension(::) :: x          implicit none
666            integer, dimension(:,:) :: i
667  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
668  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
669          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)          write(standardmessageunit,*)'OAD: cp write i ', i(1,1)
670  #endif  #endif
671          write(cp_io_unit) x          write(unit=cp_io_unit) i
672        end subroutine        end subroutine
673    
674        subroutine cp_arg_restore_integer_matrix(x)        subroutine cp_arg_restore_integer_matrix(i)
675  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
676        implicit none          use OAD_cp
677        integer, dimension(::) :: x          implicit none
678            integer, dimension(:,:) :: i
679  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
680          read(cp_io_unit) x          read(unit=cp_io_unit) i
681  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
682          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)          write(standardmessageunit,*)'OAD: cp read i ', i(1,1)
683  #endif  #endif
684        end subroutine        end subroutine
685    
686        subroutine cp_arg_store_integer_three_tensor(x)        subroutine cp_arg_store_integer_three_tensor(i)
687  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
688        implicit none          use OAD_cp
689        integer, dimension(::) :: x          implicit none
690            integer, dimension(:,:,:) :: i
691  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
692  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
693          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)          write(standardmessageunit,*)'OAD: cp write i ', i(1,1,1)
694  #endif  #endif
695          write(cp_io_unit) x          write(unit=cp_io_unit) i
696        end subroutine        end subroutine
697    
698        subroutine cp_arg_restore_integer_three_tensor(x)        subroutine cp_arg_restore_integer_three_tensor(i)
699  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
700        implicit none          use OAD_cp
701        integer, dimension(::) :: x          implicit none
702            integer, dimension(:,:,:) :: i
703  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
704          read(cp_io_unit) x          read(unit=cp_io_unit) i
705  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
706          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)          write(standardmessageunit,*)'OAD: cp read i ', i(1,1,1)
707  #endif  #endif
708        end subroutine        end subroutine
709    
710        subroutine cp_arg_store_integer_four_tensor(x)        subroutine cp_arg_store_integer_four_tensor(i)
711  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
712        implicit none          use OAD_cp
713        integer, dimension(::) :: x          implicit none
714            integer, dimension(:,:,:,:) :: i
715  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
716  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
717          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)          write(standardmessageunit,*)'OAD: cp write i ', i(1,1,1,1)
718  #endif  #endif
719          write(cp_io_unit) x          write(unit=cp_io_unit) i
720        end subroutine        end subroutine
721    
722        subroutine cp_arg_restore_integer_four_tensor(x)        subroutine cp_arg_restore_integer_four_tensor(i)
723  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
724        implicit none          use OAD_cp
725        integer, dimension(::) :: x          implicit none
726            integer, dimension(:,:,:,:) :: i
727  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
728          read(cp_io_unit) x          read(unit=cp_io_unit) i
729  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
730          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)          write(standardmessageunit,*)'OAD: cp read i ', i(1,1,1,1)
731  #endif  #endif
732        end subroutine        end subroutine
733    
734        subroutine cp_arg_store_integer_five_tensor(x)        subroutine cp_arg_store_integer_five_tensor(i)
735  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
736        implicit none          use OAD_cp
737        integer, dimension(::) :: x          implicit none
738            integer, dimension(:,:,:,:,:) :: i
739  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
740  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
741          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)          write(standardmessageunit,*)'OAD: cp write i ', i(1,1,1,1,1)
742  #endif  #endif
743          write(cp_io_unit) x          write(unit=cp_io_unit) i
744        end subroutine        end subroutine
745    
746        subroutine cp_arg_restore_integer_five_tensor(x)        subroutine cp_arg_restore_integer_five_tensor(i)
747  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
748        implicit none          use OAD_cp
749        integer, dimension(::) :: x          implicit none
750            integer, dimension(:,:,:,:,:) :: i
751  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
752          read (cp_io_unit) x          read (unit=cp_io_unit) i
753  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
754          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)          write(standardmessageunit,*)'OAD: cp read i ', i(1,1,1,1,1)
755  #endif  #endif
756        end subroutine        end subroutine
757    
758  C strings  -----------------------------------------------------  C strings  -----------------------------------------------------
759        subroutine cp_arg_store_string_scalar(x)        subroutine cp_arg_store_string_scalar(s)
760  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
761          use OAD_cp
762        implicit none        implicit none
763        character*(80) :: x        character*(80) :: s
764  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
765  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
766          write(standardmessageunit,*)'OAD: cp write x ', x          write(standardmessageunit,*)'OAD: cp write s ', s
767  #endif  #endif
768          write(cp_io_unit) x          write(unit=cp_io_unit) s
769        end subroutine        end subroutine
770                
771        subroutine cp_arg_restore_string_scalar(x)        subroutine cp_arg_restore_string_scalar(s)
772  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
773          use OAD_cp
774        implicit none        implicit none
775        character*(80) :: x        character*(80) :: s
776  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
777          read (cp_io_unit) x          read (unit=cp_io_unit) s
778  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
779          write(standardmessageunit,*)'OAD: cp read x ', x          write(standardmessageunit,*)'OAD: cp read s ', s
780  #endif  #endif
781        end subroutine        end subroutine
782    
783  C bools  -----------------------------------------------------  C bools  -----------------------------------------------------
784        subroutine cp_arg_store_bool_scalar(x)        subroutine cp_arg_store_bool_scalar(b)
785  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
786        implicit none          use OAD_cp
787        logical :: x          implicit none
788            logical :: b
789  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
790  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
791          write(standardmessageunit,*)'OAD: cp write x ', x          write(standardmessageunit,*)'OAD: cp write b ', b
792  #endif  #endif
793          write(cp_io_unit) x          write(unit=cp_io_unit) b
794        end subroutine        end subroutine
795    
796        subroutine cp_arg_restore_bool_scalar(x)        subroutine cp_arg_restore_bool_scalar(b)
797  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
798        implicit none          use OAD_cp
799        logical :: x          implicit none
800            logical :: b
801  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
802          read (cp_io_unit) x          read (unit=cp_io_unit) b
803  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
804          write(standardmessageunit,*)'OAD: cp read x ', x          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  #endif
830        end subroutine        end subroutine

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.22