@@ -75,10 +75,11 @@ contains
7575 type(scalar_field), dimension (sys_size), intent (inout ) :: rhs_vf
7676
7777 integer :: k, l, q, r
78- type(vec3 ) :: v, B
78+ real (wp), dimension ( 3 ) :: v, B
7979 real (wp) :: divB, vdotB
8080
81- !$acc parallel loop collapse(3 ) gang vector default(present)
81+ !$acc parallel loop collapse(3 ) gang vector default(present) &
82+ !$acc private(v, B)
8283 do q = 0 , p
8384 do l = 0 , n
8485 do k = 0 , m
@@ -99,15 +100,15 @@ contains
99100 end do
100101 end if
101102
102- v%x = q_prim_vf(momxb)%sf(k, l, q)
103- v%y = q_prim_vf(momxb + 1 )%sf(k, l, q)
104- v%z = q_prim_vf(momxb + 2 )%sf(k, l, q)
103+ v( 1 ) = q_prim_vf(momxb)%sf(k, l, q)
104+ v( 2 ) = q_prim_vf(momxb + 1 )%sf(k, l, q)
105+ v( 3 ) = q_prim_vf(momxb + 2 )%sf(k, l, q)
105106
106- B%x = q_prim_vf(Bxb)%sf(k, l, q)
107- B%y = q_prim_vf(Bxb + 1 )%sf(k, l, q)
108- B%z = q_prim_vf(Bxb + 2 )%sf(k, l, q)
107+ B( 1 ) = q_prim_vf(Bxb)%sf(k, l, q)
108+ B( 2 ) = q_prim_vf(Bxb + 1 )%sf(k, l, q)
109+ B( 3 ) = q_prim_vf(Bxb + 2 )%sf(k, l, q)
109110
110- vdotB = v%x * B%x + v%y * B%y + v%z * B%z
111+ vdotB = sum (v * B)
111112
112113 ! 1 : rho - > unchanged
113114 ! 2 : vx - > - (divB) * Bx
@@ -118,15 +119,15 @@ contains
118119 ! 7 : By - > - (divB) * vy
119120 ! 8 : Bz - > - (divB) * vz
120121
121- rhs_vf(momxb)%sf(k, l, q) = rhs_vf(momxb)%sf(k, l, q) - divB* B%x
122- rhs_vf(momxb + 1 )%sf(k, l, q) = rhs_vf(momxb + 1 )%sf(k, l, q) - divB* B%y
123- rhs_vf(momxb + 2 )%sf(k, l, q) = rhs_vf(momxb + 2 )%sf(k, l, q) - divB* B%z
122+ rhs_vf(momxb)%sf(k, l, q) = rhs_vf(momxb)%sf(k, l, q) - divB* B( 1 )
123+ rhs_vf(momxb + 1 )%sf(k, l, q) = rhs_vf(momxb + 1 )%sf(k, l, q) - divB* B( 2 )
124+ rhs_vf(momxb + 2 )%sf(k, l, q) = rhs_vf(momxb + 2 )%sf(k, l, q) - divB* B( 3 )
124125
125126 rhs_vf(E_idx)%sf(k, l, q) = rhs_vf(E_idx)%sf(k, l, q) - divB* vdotB
126127
127- rhs_vf(Bxb)%sf(k, l, q) = rhs_vf(Bxb)%sf(k, l, q) - divB* v%x
128- rhs_vf(Bxb + 1 )%sf(k, l, q) = rhs_vf(Bxb + 1 )%sf(k, l, q) - divB* v%y
129- rhs_vf(Bxb + 2 )%sf(k, l, q) = rhs_vf(Bxb + 2 )%sf(k, l, q) - divB* v%z
128+ rhs_vf(Bxb)%sf(k, l, q) = rhs_vf(Bxb)%sf(k, l, q) - divB* v( 1 )
129+ rhs_vf(Bxb + 1 )%sf(k, l, q) = rhs_vf(Bxb + 1 )%sf(k, l, q) - divB* v( 2 )
130+ rhs_vf(Bxb + 2 )%sf(k, l, q) = rhs_vf(Bxb + 2 )%sf(k, l, q) - divB* v( 3 )
130131
131132 end do
132133 end do
0 commit comments