module light { # directional light use igrad1 integer :: nx, ny real :: ax, ay real, dimension (nx), allocatable :: x real, dimension (ny), allocatable :: y #% _init( nx,ny, ax,ay) #% _lop ( mod (nx,ny), ruf (nx,ny)) integer ix, iy, stat do ix=1,nx { if( adj) y = ay*ruf (ix,:) stat = igrad1_lop (adj, adj, mod(ix,:), y) if (.not. adj) ruf (ix,:) = ruf (ix,:) + ay*y } do iy=1,ny { if( adj) x = ax*ruf (:,iy) stat = igrad1_lop (adj, adj, mod(:,iy), x) if (.not. adj) ruf (:,iy) = ruf (:,iy) + ax*x } }