module igrad2 {                       # 2-D gradient with adjoint,  r= grad( p)
integer :: n1, n2
#%_init   (n1, n2)
#%_lop ( p(n1, n2),  r(n1,n2,2))
integer i,j
do i= 1, n1-1 {
do j= 1, n2-1 {
	if( adj) {
		p(i+1,j  )  +=  r(i,j,1) 
                p(i  ,j  )  -=  r(i,j,1) 
                p(i  ,j+1)  +=  r(i,j,2) 
                p(i  ,j  )  -=  r(i,j,2)
		}
	else {  r(i,j,1)  +=  ( p(i+1,j) - p(i,j)) 
                r(i,j,2)  +=  ( p(i,j+1) - p(i,j)) 
		}
	}}
}
