/[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.2 by utke, Fri Dec 21 03:40:10 2012 UTC revision 1.5 by heimbach, Fri Jul 3 21:33:55 2015 UTC
# Line 185  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 OAD_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 OAD_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 -----------------------  C ----------------------- Propagation -----------------------
# Line 210  C ----------------------- Propagation -- Line 210  C ----------------------- Propagation --
210        subroutine saxpy(a,x,y)        subroutine saxpy(a,x,y)
211  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
212        use OAD_active        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 220  C $OpenAD$ END DECLS Line 221  C $OpenAD$ END DECLS
221        subroutine zeroderiv(x)        subroutine zeroderiv(x)
222  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
223        use OAD_active        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 228  C $OpenAD$ END DECLS Line 230  C $OpenAD$ END DECLS
230        subroutine setderiv(y,x)        subroutine setderiv(y,x)
231  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
232        use OAD_active        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 237  C $OpenAD$ END DECLS Line 240  C $OpenAD$ END DECLS
240        subroutine incderiv(y,x)        subroutine incderiv(y,x)
241  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
242        use OAD_active        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 246  C $OpenAD$ END DECLS Line 250  C $OpenAD$ END DECLS
250        subroutine decderiv(y,x)        subroutine decderiv(y,x)
251  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
252        use OAD_active        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 257  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        use OAD_cp          use OAD_cp
266        double precision :: x          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(unit=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        use OAD_cp          use OAD_cp
278        implicit none          implicit none
279        double precision :: x          double precision :: x
280  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
281          read(unit=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
285        end subroutine        end subroutine
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        use OAD_active          use OAD_active
290        use OAD_cp          use OAD_cp
291        implicit none          implicit none
292        type(active) :: x          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(unit=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        use OAD_active          use OAD_active
303        use OAD_cp          use OAD_cp
304        implicit none          implicit none
305        type(active) :: x          type(active) :: x
306  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
307          read(unit=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        use OAD_cp          use OAD_cp
316        implicit none          implicit none
317        double precision, dimension(:) :: x          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(unit=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        use OAD_cp          use OAD_cp
328        implicit none          implicit none
329        double precision, dimension(:) :: x          double precision, dimension(:) :: x
330  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
331          read(unit=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
335        end subroutine        end subroutine
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        use OAD_active          use OAD_active
340        use OAD_cp          use OAD_cp
341        implicit none          implicit none
342        type(active), dimension(:) :: x          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(unit=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        use OAD_active          use OAD_active
353        use OAD_cp          use OAD_cp
354        implicit none          implicit none
355        type(active), dimension(:) :: x          type(active), dimension(:) :: x
356  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
357          read(unit=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
361        end subroutine        end subroutine
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        use OAD_cp          use OAD_cp
366        implicit none          implicit none
367        double precision, dimension(:,:) :: x          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(unit=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        use OAD_cp          use OAD_cp
378        implicit none          implicit none
379        double precision, dimension(:,:) :: x          double precision, dimension(:,:) :: x
380  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
381          read(unit=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
385        end subroutine        end subroutine
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        use OAD_active          use OAD_active
390        use OAD_cp          use OAD_cp
391        implicit none          implicit none
392        type(active), dimension(:,:) :: x          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(unit=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        use OAD_active          use OAD_active
403        use OAD_cp          use OAD_cp
404        implicit none          implicit none
405        type(active), dimension(:,:) :: x          type(active), dimension(:,:) :: x
406  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
407          read(unit=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        use OAD_cp          use OAD_cp
416        implicit none          implicit none
417        double precision, dimension(:,:,:) :: x          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(unit=cp_io_unit) x          write(unit=cp_io_unit) x
423        end subroutine        end subroutine
424    
425        subroutine cp_arg_restore_real_three_tensor(x)        subroutine cp_arg_restore_real_three_tensor(x)
426  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
427        use OAD_cp          use OAD_cp
428        implicit none          implicit none
429        double precision, dimension(:,:,:) :: x          double precision, dimension(:,:,:) :: x
430  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
431          read(unit=cp_io_unit) x          read(unit=cp_io_unit) x
432  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
433          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)          !write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1)
434  #endif  #endif
435        end subroutine        end subroutine
436    
437        subroutine cp_arg_store_real_three_tensor_a(x)        subroutine cp_arg_store_real_three_tensor_a(x)
438  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
439        use OAD_active          use OAD_active
440        use OAD_cp          use OAD_cp
441        implicit none          implicit none
442        type(active), dimension(:,:,:) :: x          type(active), dimension(:,:,:) :: x
443  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
444  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
445          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)%v          !write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1)%v
446  #endif  #endif
447          write(unit=cp_io_unit) x%v          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        use OAD_active          use OAD_active
453        use OAD_cp          use OAD_cp
454        implicit none          implicit none
455        type(active), dimension(:,:,:) :: x          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(unit=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        use OAD_cp          use OAD_cp
466        implicit none          implicit none
467        double precision, dimension(:,:,:,:) :: x          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(unit=cp_io_unit) x          write(unit=cp_io_unit) x
473        end subroutine        end subroutine
474    
475        subroutine cp_arg_restore_real_four_tensor(x)        subroutine cp_arg_restore_real_four_tensor(x)
476  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
477        use OAD_cp          use OAD_cp
478        implicit none          implicit none
479        double precision, dimension(:,:,:,:) :: x          double precision, dimension(:,:,:,:) :: x
480  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
481          read(unit=cp_io_unit) x          read(unit=cp_io_unit) x
482  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
483          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)          !write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1)
484  #endif  #endif
485        end subroutine        end subroutine
486    
487        subroutine cp_arg_store_real_four_tensor_a(x)        subroutine cp_arg_store_real_four_tensor_a(x)
488  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
489        use OAD_active          use OAD_active
490        use OAD_cp          use OAD_cp
491        implicit none          implicit none
492        type(active), dimension(:,:,:,:) :: x          type(active), dimension(:,:,:,:) :: x
493  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
494  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
495          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)%v          !write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1)%v
496  #endif  #endif
497          write(unit=cp_io_unit) x%v          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        use OAD_active          use OAD_active
503        use OAD_cp          use OAD_cp
504        implicit none          implicit none
505        type(active), dimension(:,:,:,:) :: x          type(active), dimension(:,:,:,:) :: x
506  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
507          read(unit=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        use OAD_cp          use OAD_cp
516        implicit none          implicit none
517        double precision, dimension(:,:,:,:,:) :: x          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(unit=cp_io_unit) x          write(unit=cp_io_unit) x
523        end subroutine        end subroutine
524    
525        subroutine cp_arg_restore_real_five_tensor(x)        subroutine cp_arg_restore_real_five_tensor(x)
526  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
527        use OAD_cp          use OAD_cp
528        implicit none          implicit none
529        double precision, dimension(:,:,:,:,:) :: x          double precision, dimension(:,:,:,:,:) :: x
530  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
531          read(unit=cp_io_unit) x          read(unit=cp_io_unit) x
532  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
533          write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)          !write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1)
534  #endif  #endif
535        end subroutine        end subroutine
536    
537        subroutine cp_arg_store_real_five_tensor_a(x)        subroutine cp_arg_store_real_five_tensor_a(x)
538  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
539        use OAD_active          use OAD_active
540        use OAD_cp          use OAD_cp
541        implicit none          implicit none
542        type(active), dimension(:,:,:,:,:) :: x          type(active), dimension(:,:,:,:,:) :: x
543  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
544  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
545          write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)%v          !write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1)%v
546  #endif  #endif
547          write(unit=cp_io_unit) x%v          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        use OAD_active          use OAD_active
553        use OAD_cp          use OAD_cp
554        implicit none          implicit none
555        type(active), dimension(:,:,:,:,:) :: x          type(active), dimension(:,:,:,:,:) :: x
556  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
557          read(unit=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)
 C integers -----------------------------------------------------  
       subroutine cp_arg_store_integer_scalar(x)  
564  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
565        use OAD_cp          use OAD_cp
566        implicit none          implicit none
567        integer :: x          double precision, dimension(:,:,:,:,:,:) :: x
568  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
569  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
570          write(standardmessageunit,*)'OAD: cp write x ', x          !write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1,1)
571  #endif  #endif
572          write(unit=cp_io_unit) x          write(unit=cp_io_unit) x
573        end subroutine        end subroutine
574    
575        subroutine cp_arg_restore_integer_scalar(x)        subroutine cp_arg_restore_real_six_tensor(x)
576  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
577        use OAD_cp          use OAD_cp
578        implicit none          implicit none
579        integer :: x          double precision, dimension(:,:,:,:,:,:) :: x
580  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
581          read(unit=cp_io_unit) x          read(unit=cp_io_unit) x
582  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
583          write(standardmessageunit,*)'OAD: cp read x ', x          !write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1,1)
584  #endif  #endif
585        end subroutine        end subroutine
586    
587        subroutine cp_arg_store_integer_vector(x)        subroutine cp_arg_store_real_six_tensor_a(x)
588  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
589        use OAD_cp          use OAD_active
590        implicit none          use OAD_cp
591        integer, dimension(:) :: x          implicit none
592            type(active), dimension(:,:,:,:,:,:) :: x
593  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
594  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
595          write(standardmessageunit,*)'OAD: cp write x ', x(1)          !write(standardmessageunit,*)'OAD: cp write x ', x(1,1,1,1,1,1)%v
596  #endif  #endif
597          write(unit=cp_io_unit) x          write(unit=cp_io_unit) x%v
598        end subroutine        end subroutine
599    
600        subroutine cp_arg_restore_integer_vector(x)        subroutine cp_arg_restore_real_six_tensor_a(x)
601  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
602        use OAD_cp          use OAD_active
603        implicit none          use OAD_cp
604        integer, dimension(:) :: x          implicit none
605            type(active), dimension(:,:,:,:,:,:) :: x
606  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
607          read(unit=cp_io_unit) x          read(unit=cp_io_unit) x%v
608  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
609          write(standardmessageunit,*)'OAD: cp read x ', x(1)          !write(standardmessageunit,*)'OAD: cp read x ', x(1,1,1,1,1,1)%v
610  #endif  #endif
611        end subroutine        end subroutine
612    
613        subroutine cp_arg_store_integer_matrix(x)  C integers -----------------------------------------------------
614          subroutine cp_arg_store_integer_scalar(i)
615  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
616        use OAD_cp          use OAD_cp
617        implicit none          implicit none
618        integer, dimension(:,:) :: x          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(1,1,1)          !write(standardmessageunit,*)'OAD: cp write i ', i
622  #endif  #endif
623          write(unit=cp_io_unit) x          write(unit=cp_io_unit) i
624        end subroutine        end subroutine
625    
626        subroutine cp_arg_restore_integer_matrix(x)        subroutine cp_arg_restore_integer_scalar(i)
627  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
628        use OAD_cp          use OAD_cp
629        implicit none          implicit none
630        integer, dimension(:,:) :: x          integer :: i
631  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
632          read(unit=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(1,1,1)          !write(standardmessageunit,*)'OAD: cp read i ', i
635  #endif  #endif
636        end subroutine        end subroutine
637    
638        subroutine cp_arg_store_integer_three_tensor(x)        subroutine cp_arg_store_integer_vector(i)
639  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
640        use OAD_cp          use OAD_cp
641        implicit none          implicit none
642        integer, dimension(:,:,:) :: x          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,1,1)          !write(standardmessageunit,*)'OAD: cp write i ', i(1)
646  #endif  #endif
647          write(unit=cp_io_unit) x          write(unit=cp_io_unit) i
648        end subroutine        end subroutine
649    
650        subroutine cp_arg_restore_integer_three_tensor(x)        subroutine cp_arg_restore_integer_vector(i)
651  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
652        use OAD_cp          use OAD_cp
653        implicit none          implicit none
654        integer, dimension(:,:,:) :: x          integer, dimension(:) :: i
655  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
656          read(unit=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,1,1)          !write(standardmessageunit,*)'OAD: cp read i ', i(1)
659  #endif  #endif
660        end subroutine        end subroutine
661    
662        subroutine cp_arg_store_integer_four_tensor(x)        subroutine cp_arg_store_integer_matrix(i)
663  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
664        use OAD_cp          use OAD_cp
665        implicit none          implicit none
666        integer, dimension(:,:,:,:) :: x          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,1)          !write(standardmessageunit,*)'OAD: cp write i ', i(1,1)
670  #endif  #endif
671          write(unit=cp_io_unit) x          write(unit=cp_io_unit) i
672        end subroutine        end subroutine
673    
674        subroutine cp_arg_restore_integer_four_tensor(x)        subroutine cp_arg_restore_integer_matrix(i)
675  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
676        use OAD_cp          use OAD_cp
677        implicit none          implicit none
678        integer, dimension(:,:,:,:) :: x          integer, dimension(:,:) :: i
679  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
680          read(unit=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,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_five_tensor(x)        subroutine cp_arg_store_integer_three_tensor(i)
687  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
688        use OAD_cp          use OAD_cp
689        implicit none          implicit none
690        integer, dimension(:,:,:,:,:) :: x          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,1,1)          !write(standardmessageunit,*)'OAD: cp write i ', i(1,1,1)
694  #endif  #endif
695          write(unit=cp_io_unit) x          write(unit=cp_io_unit) i
696        end subroutine        end subroutine
697    
698        subroutine cp_arg_restore_integer_five_tensor(x)        subroutine cp_arg_restore_integer_three_tensor(i)
699  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
700        use OAD_cp          use OAD_cp
701        implicit none          implicit none
702        integer, dimension(:,:,:,:,:) :: x          integer, dimension(:,:,:) :: i
703  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
704          read (unit=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,1,1)          !write(standardmessageunit,*)'OAD: cp read i ', i(1,1,1)
707    #endif
708          end subroutine
709    
710          subroutine cp_arg_store_integer_four_tensor(i)
711    C $OpenAD$ INLINE DECLS
712            use OAD_cp
713            implicit none
714            integer, dimension(:,:,:,:) :: i
715    C $OpenAD$ END DECLS
716    #ifdef OAD_DEBUG_CP
717            !write(standardmessageunit,*)'OAD: cp write i ', i(1,1,1,1)
718    #endif
719            write(unit=cp_io_unit) i
720          end subroutine
721    
722          subroutine cp_arg_restore_integer_four_tensor(i)
723    C $OpenAD$ INLINE DECLS
724            use OAD_cp
725            implicit none
726            integer, dimension(:,:,:,:) :: i
727    C $OpenAD$ END DECLS
728            read(unit=cp_io_unit) i
729    #ifdef OAD_DEBUG_CP
730            !write(standardmessageunit,*)'OAD: cp read i ', i(1,1,1,1)
731    #endif
732          end subroutine
733    
734          subroutine cp_arg_store_integer_five_tensor(i)
735    C $OpenAD$ INLINE DECLS
736            use OAD_cp
737            implicit none
738            integer, dimension(:,:,:,:,:) :: i
739    C $OpenAD$ END DECLS
740    #ifdef OAD_DEBUG_CP
741            !write(standardmessageunit,*)'OAD: cp write i ', i(1,1,1,1,1)
742    #endif
743            write(unit=cp_io_unit) i
744          end subroutine
745    
746          subroutine cp_arg_restore_integer_five_tensor(i)
747    C $OpenAD$ INLINE DECLS
748            use OAD_cp
749            implicit none
750            integer, dimension(:,:,:,:,:) :: i
751    C $OpenAD$ END DECLS
752            read (unit=cp_io_unit) i
753    #ifdef OAD_DEBUG_CP
754            !write(standardmessageunit,*)'OAD: cp read i ', i(1,1,1,1,1)
755  #endif  #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        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(unit=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        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 (unit=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        use OAD_cp          use OAD_cp
787        implicit none          implicit none
788        logical :: x          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(unit=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        use OAD_cp          use OAD_cp
799        implicit none          implicit none
800        logical :: x          logical :: b
801  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
802          read (unit=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  #endif
806        end subroutine        end subroutine
807    
808        subroutine cp_arg_store_bool_matrix(x)        subroutine cp_arg_store_bool_matrix(b)
809  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
810        use OAD_cp          use OAD_cp
811        implicit none          implicit none
812        logical, dimension(:,:) :: x          logical, dimension(:,:) :: b
813  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
814  u#ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
815          write(standardmessageunit,*)'OAD: cp write x ', x(1)          !write(standardmessageunit,*)'OAD: cp write b ', b(1,1)
816  #endif  #endif
817          write(unit=cp_io_unit) x          write(unit=cp_io_unit) b
818        end subroutine        end subroutine
819    
820        subroutine cp_arg_restore_bool_matrix(x)        subroutine cp_arg_restore_bool_matrix(b)
821  C $OpenAD$ INLINE DECLS  C $OpenAD$ INLINE DECLS
822        use OAD_cp          use OAD_cp
823        implicit none          implicit none
824        logical, dimension(:,:) :: x          logical, dimension(:,:) :: b
825  C $OpenAD$ END DECLS  C $OpenAD$ END DECLS
826          read(unit=cp_io_unit) x          read(unit=cp_io_unit) b
827    #ifdef OAD_DEBUG_CP
828            !write(standardmessageunit,*)'OAD: cp read b ', b(1,1)
829    #endif
830          end subroutine
831    
832    C adjoints of active reals ----------------------------------
833          subroutine cp_arg_store_real_scalar_a_d(x)
834    C $OpenAD$ INLINE DECLS
835            use OAD_active
836            use OAD_cp
837            implicit none
838            type(active) :: x
839    C $OpenAD$ END DECLS
840    #ifdef OAD_DEBUG_CP
841            !write(standardmessageunit,*)'OAD: cp write x%d ', x%d
842    #endif
843            write(unit=cp_io_unit) x%d
844          end subroutine
845    
846          subroutine cp_arg_restore_real_scalar_a_d(x)
847    C $OpenAD$ INLINE DECLS
848            use OAD_active
849            use OAD_cp
850            implicit none
851            type(active) :: x
852    C $OpenAD$ END DECLS
853            read(unit=cp_io_unit) x%d
854  #ifdef OAD_DEBUG_CP  #ifdef OAD_DEBUG_CP
855          write(standardmessageunit,*)'OAD: cp read x ', x(1)          !write(standardmessageunit,*)'OAD: cp read x%d ', x%d
856  #endif  #endif
857        end subroutine        end subroutine
858    
859          subroutine cp_arg_store_real_vector_a_d(x)
860    C $OpenAD$ INLINE DECLS
861            use OAD_active
862            use OAD_cp
863            implicit none
864            type(active), dimension(:) :: x
865    C $OpenAD$ END DECLS
866    #ifdef OAD_DEBUG_CP
867            !write(standardmessageunit,*)'OAD: cp write x%d ', x(1)%d
868    #endif
869            write(unit=cp_io_unit) x%d
870          end subroutine
871    
872          subroutine cp_arg_restore_real_vector_a_d(x)
873    C $OpenAD$ INLINE DECLS
874            use OAD_active
875            use OAD_cp
876            implicit none
877            type(active), dimension(:) :: x
878    C $OpenAD$ END DECLS
879            read(unit=cp_io_unit) x%d
880    #ifdef OAD_DEBUG_CP
881            !write(standardmessageunit,*)'OAD: cp read x%d ', x(1)%d
882    #endif
883          end subroutine  
884    
885          subroutine cp_arg_store_real_matrix_a_d(x)
886    C $OpenAD$ INLINE DECLS
887            use OAD_active
888            use OAD_cp
889            implicit none
890            type(active), dimension(:,:) :: x
891    C $OpenAD$ END DECLS
892    #ifdef OAD_DEBUG_CP
893            !write(standardmessageunit,*)'OAD: cp write x%d ', x(1,1)%d
894    #endif
895            write(unit=cp_io_unit) x%d
896          end subroutine
897    
898          subroutine cp_arg_restore_real_matrix_a_d(x)
899    C $OpenAD$ INLINE DECLS
900            use OAD_active
901            use OAD_cp
902            implicit none
903            type(active), dimension(:,:) :: x
904    C $OpenAD$ END DECLS
905            read(unit=cp_io_unit) x%d
906    #ifdef OAD_DEBUG_CP
907            !write(standardmessageunit,*)'OAD: cp read x%d ', x(1,1)%d
908    #endif
909          end subroutine
910    
911          subroutine cp_arg_store_real_three_tensor_a_d(x)
912    C $OpenAD$ INLINE DECLS
913            use OAD_active
914            use OAD_cp
915            implicit none
916            type(active), dimension(:,:,:) :: x
917    C $OpenAD$ END DECLS
918    #ifdef OAD_DEBUG_CP
919            !write(standardmessageunit,*)'OAD: cp write x%d ', x(1,1,1)%d
920    #endif
921            write(unit=cp_io_unit) x%d
922          end subroutine
923    
924          subroutine cp_arg_restore_real_three_tensor_a_d(x)
925    C $OpenAD$ INLINE DECLS
926            use OAD_active
927            use OAD_cp
928            implicit none
929            type(active), dimension(:,:,:) :: x
930    C $OpenAD$ END DECLS
931            read(unit=cp_io_unit) x%d
932    #ifdef OAD_DEBUG_CP
933            !write(standardmessageunit,*)'OAD: cp read x%d ', x(1,1,1)%d
934    #endif
935          end subroutine
936    
937          subroutine cp_arg_store_real_four_tensor_a_d(x)
938    C $OpenAD$ INLINE DECLS
939            use OAD_active
940            use OAD_cp
941            implicit none
942            type(active), dimension(:,:,:,:) :: x
943    C $OpenAD$ END DECLS
944    #ifdef OAD_DEBUG_CP
945            !write(standardmessageunit,*)'OAD: cp write x%d ', x(1,1,1,1)%d
946    #endif
947            write(unit=cp_io_unit) x%d
948          end subroutine
949    
950          subroutine cp_arg_restore_real_four_tensor_a_d(x)
951    C $OpenAD$ INLINE DECLS
952            use OAD_active
953            use OAD_cp
954            implicit none
955            type(active), dimension(:,:,:,:) :: x
956    C $OpenAD$ END DECLS
957            read(unit=cp_io_unit) x%d
958    #ifdef OAD_DEBUG_CP
959            !write(standardmessageunit,*)'OAD: cp read x%d ', x(1,1,1,1)%d
960    #endif
961          end subroutine
962    
963          subroutine cp_arg_store_real_five_tensor_a_d(x)
964    C $OpenAD$ INLINE DECLS
965            use OAD_active
966            use OAD_cp
967            implicit none
968            type(active), dimension(:,:,:,:,:) :: x
969    C $OpenAD$ END DECLS
970    #ifdef OAD_DEBUG_CP
971            !write(standardmessageunit,*)'OAD: cp write x%d ', x(1,1,1,1,1)%d
972    #endif
973            write(unit=cp_io_unit) x%d
974          end subroutine
975    
976          subroutine cp_arg_restore_real_five_tensor_a_d(x)
977    C $OpenAD$ INLINE DECLS
978            use OAD_active
979            use OAD_cp
980            implicit none
981            type(active), dimension(:,:,:,:,:) :: x
982    C $OpenAD$ END DECLS
983            read(unit=cp_io_unit) x%d
984    #ifdef OAD_DEBUG_CP
985            !write(standardmessageunit,*)'OAD: cp read x%d ', x(1,1,1,1,1)%d
986    #endif
987          end subroutine
988    
989          subroutine cp_arg_store_real_six_tensor_a_d(x)
990    C $OpenAD$ INLINE DECLS
991            use OAD_active
992            use OAD_cp
993            implicit none
994            type(active), dimension(:,:,:,:,:,:) :: x
995    C $OpenAD$ END DECLS
996    #ifdef OAD_DEBUG_CP
997            !write(standardmessageunit,*)'OAD: cp write x%d ', x(1,1,1,1,1,1)%d
998    #endif
999            write(unit=cp_io_unit) x%d
1000          end subroutine
1001    
1002          subroutine cp_arg_restore_real_six_tensor_a_d(x)
1003    C $OpenAD$ INLINE DECLS
1004            use OAD_active
1005            use OAD_cp
1006            implicit none
1007            type(active), dimension(:,:,:,:,:,:) :: x
1008    C $OpenAD$ END DECLS
1009            read(unit=cp_io_unit) x%d
1010    #ifdef OAD_DEBUG_CP
1011            !write(standardmessageunit,*)'OAD: cp read x%d ', x(1,1,1,1,1,1)%d
1012    #endif
1013          end subroutine  

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

  ViewVC Help
Powered by ViewVC 1.1.22