Irregular Mesh: OpenMP Program with Data Reordering

!$OMP PARALLEL, DEFAULT(SHARED)
CALL renumber_nodes( iedge, permute_node)
!$OMP DO
DO i = 1, nnode
    x( permute_node(i) ) = old_x(i)
END DO
!$OMP END DO NOWAIT
!$OMP DO
DO i = 1, nedge
    iedge(i,1) = permute_node(iedge(i,1))
    iedge(i,2) = permute_node(iedge(i,2))
END DO
!$OMP END DO
CALL sort_edges(iedge, nedge)
!$OMP SINGLE
err = tol * 1e6
!$OMP END SINGLE
DO WHILE (err > tol)
    !$OMP DO, SCHEDULE(STATIC), PRIVATE(flux), REDUCTION(+:err)
    ...
    !$OMP END DO
END DO
!$OMP END PARALLEL