!-------------------------------------------------------------------------- !---------------------------- compute_vorticity ---------------------------------- !$OMP DO SCHEDULE(STATIC) DO ij = 1, dual_num ! this VLOOP iterates over dual cell edges SELECT CASE(dual_deg(ij)) CASE(3) edge1 = dual_edge(1,ij) edge2 = dual_edge(2,ij) edge3 = dual_edge(3,ij) de1 = de(edge1) de2 = de(edge2) de3 = de(edge3) sign1 = dual_ne(1,ij) sign2 = dual_ne(2,ij) sign3 = dual_ne(3,ij) !DIR$ SIMD DO l = 1, llm etav = 0.d0 etav = etav + sign1*ue(l,edge1)*de1 etav = etav + sign2*ue(l,edge2)*de2 etav = etav + sign3*ue(l,edge3)*de3 vort(l,ij) = etav / Av(ij) END DO CASE(4) edge1 = dual_edge(1,ij) edge2 = dual_edge(2,ij) edge3 = dual_edge(3,ij) edge4 = dual_edge(4,ij) de1 = de(edge1) de2 = de(edge2) de3 = de(edge3) de4 = de(edge4) sign1 = dual_ne(1,ij) sign2 = dual_ne(2,ij) sign3 = dual_ne(3,ij) sign4 = dual_ne(4,ij) !DIR$ SIMD DO l = 1, llm etav = 0.d0 etav = etav + sign1*ue(l,edge1)*de1 etav = etav + sign2*ue(l,edge2)*de2 etav = etav + sign3*ue(l,edge3)*de3 etav = etav + sign4*ue(l,edge4)*de4 vort(l,ij) = etav / Av(ij) END DO CASE DEFAULT !DIR$ SIMD DO l = 1, llm etav = 0.d0 DO iedge = 1, dual_deg(ij) edge = dual_edge(iedge,ij) etav = etav + dual_ne(iedge,ij)*ue(l,edge)*de(edge) END DO vort(l,ij) = etav / Av(ij) END DO END SELECT END DO !$OMP END DO !---------------------------- compute_vorticity ---------------------------------- !--------------------------------------------------------------------------