COPYIN - OpenMP Tutorial

real, parameter :: nvals = 501
real, dimension(nvals) :: x, y, xmet, ymet>
common /work1/ work(nvals), istart, iend
!$OMP THREADPRIVATE(/work1/)

istart = 2
iend = 500
call read_coords(x,y)

!$OMP PARALLEL SECTIONS COPYIN(istart,iend)

   !$OMP SECTION
   call metric(x)
   xmet = work

   !$OMP SECTION
   call metric(y)
   ymet = work

!$OMP END PARALLEL SECTIONS

!------------------------------------------

subroutine metric(c)
real, dimension(:) :: c
common /work1/ work(nvals), istart, iend
!$OMP THREADPRIVATE(/work1/)

do i = istart, iend
   work(i) = 0.5*(c(i+1)-c(i-1))
enddo

end subroutine metric