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

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

  ViewVC Help
Powered by ViewVC 1.1.22