- Timestamp:
- 12/30/17 02:00:38 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/kernels_unst/caldyn_slow_hydro.k90
r614 r658 5 5 ij_left = left(edge) 6 6 ij_right = right(edge) 7 !DIR$ SIMD 7 8 DO l = 1, llm 8 9 uu = .5*(rhodz(l,ij_left)+rhodz(l,ij_right))*u(l,edge) … … 13 14 !$OMP DO SCHEDULE(STATIC) 14 15 DO ij = 1, primal_num 15 DO l = 1, llm 16 ke=0.d0 17 DO iedge = 1, primal_deg(ij) 18 edge = primal_edge(iedge,ij) 19 ke = ke + le_de(edge)*u(l,edge)**2 16 ! this VLOOP iterates over primal cell edges 17 SELECT CASE(primal_deg(ij)) 18 CASE(4) 19 edge1 = primal_edge(1,ij) 20 edge2 = primal_edge(2,ij) 21 edge3 = primal_edge(3,ij) 22 edge4 = primal_edge(4,ij) 23 le_de1 = le_de(edge1) 24 le_de2 = le_de(edge2) 25 le_de3 = le_de(edge3) 26 le_de4 = le_de(edge4) 27 !DIR$ SIMD 28 DO l = 1, llm 29 ke=0.d0 30 ke = ke + le_de1*u(l,edge1)**2 31 ke = ke + le_de2*u(l,edge2)**2 32 ke = ke + le_de3*u(l,edge3)**2 33 ke = ke + le_de4*u(l,edge4)**2 34 BERNI(l,ij)=ke*(.25/Ai(ij)) 20 35 END DO 21 BERNI(l,ij)=ke*(.25/Ai(ij)) 22 END DO 36 CASE(5) 37 edge1 = primal_edge(1,ij) 38 edge2 = primal_edge(2,ij) 39 edge3 = primal_edge(3,ij) 40 edge4 = primal_edge(4,ij) 41 edge5 = primal_edge(5,ij) 42 le_de1 = le_de(edge1) 43 le_de2 = le_de(edge2) 44 le_de3 = le_de(edge3) 45 le_de4 = le_de(edge4) 46 le_de5 = le_de(edge5) 47 !DIR$ SIMD 48 DO l = 1, llm 49 ke=0.d0 50 ke = ke + le_de1*u(l,edge1)**2 51 ke = ke + le_de2*u(l,edge2)**2 52 ke = ke + le_de3*u(l,edge3)**2 53 ke = ke + le_de4*u(l,edge4)**2 54 ke = ke + le_de5*u(l,edge5)**2 55 BERNI(l,ij)=ke*(.25/Ai(ij)) 56 END DO 57 CASE(6) 58 edge1 = primal_edge(1,ij) 59 edge2 = primal_edge(2,ij) 60 edge3 = primal_edge(3,ij) 61 edge4 = primal_edge(4,ij) 62 edge5 = primal_edge(5,ij) 63 edge6 = primal_edge(6,ij) 64 le_de1 = le_de(edge1) 65 le_de2 = le_de(edge2) 66 le_de3 = le_de(edge3) 67 le_de4 = le_de(edge4) 68 le_de5 = le_de(edge5) 69 le_de6 = le_de(edge6) 70 !DIR$ SIMD 71 DO l = 1, llm 72 ke=0.d0 73 ke = ke + le_de1*u(l,edge1)**2 74 ke = ke + le_de2*u(l,edge2)**2 75 ke = ke + le_de3*u(l,edge3)**2 76 ke = ke + le_de4*u(l,edge4)**2 77 ke = ke + le_de5*u(l,edge5)**2 78 ke = ke + le_de6*u(l,edge6)**2 79 BERNI(l,ij)=ke*(.25/Ai(ij)) 80 END DO 81 CASE DEFAULT 82 !DIR$ SIMD 83 DO l = 1, llm 84 ke=0.d0 85 DO iedge = 1, primal_deg(ij) 86 edge = primal_edge(iedge,ij) 87 ke = ke + le_de(edge)*u(l,edge)**2 88 END DO 89 BERNI(l,ij)=ke*(.25/Ai(ij)) 90 END DO 91 END SELECT 23 92 END DO 24 93 !$OMP END DO … … 28 97 ij_left = left(edge) 29 98 ij_right = right(edge) 99 !DIR$ SIMD 30 100 DO l = 1, llm 31 101 du(l,edge) = 1.*(berni(l,ij_left)-berni(l,ij_right)) ! minus gradient … … 38 108 ij_left = left(edge) 39 109 ij_right = right(edge) 110 !DIR$ SIMD 40 111 DO l = 1, llm 41 112 du(l,edge) = du(l,edge) + 1.*(berni(l,ij_left)-berni(l,ij_right)) ! minus gradient
Note: See TracChangeset
for help on using the changeset viewer.