@@ -174,6 +174,8 @@ contains
174174
175175 integer :: i, j, k, l, id !< Generic loop iterators
176176
177+ integer :: num_eqns_after_adv
178+
177179 !$acc enter data copyin(idwbuff, idwbuff)
178180 !$acc update device(idwbuff, idwbuff)
179181
@@ -188,19 +190,11 @@ contains
188190 @:ALLOCATE(q_prim_qp%vf(l)%sf(idwbuff(1 )%beg:idwbuff(1 )%end, idwbuff(2 )%beg:idwbuff(2 )%end, idwbuff(3 )%beg:idwbuff(3 )%end))
189191 end do
190192
191- if (surface_tension .or. cont_damage) then
192- ! This assumes that the color function advection equation or cont_damage is
193- ! the last equation. If this changes then this logic will
194- ! need updated
195- do l = adv_idx%end + 1 , sys_size - 1
196- @:ALLOCATE(q_prim_qp%vf(l)%sf(idwbuff(1 )%beg:idwbuff(1 )%end, idwbuff(2 )%beg:idwbuff(2 )%end, idwbuff(3 )%beg:idwbuff(3 )%end))
197- end do
198- else
199- do l = adv_idx%end + 1 , sys_size
200- @:ALLOCATE(q_prim_qp%vf(l)%sf(idwbuff(1 )%beg:idwbuff(1 )%end, idwbuff(2 )%beg:idwbuff(2 )%end, idwbuff(3 )%beg:idwbuff(3 )%end))
201- end do
193+ num_eqns_after_adv = count ((/ surface_tension, cont_damage/ ))
202194
203- end if
195+ do l = adv_idx%end + 1 , sys_size - num_eqns_after_adv
196+ @:ALLOCATE(q_prim_qp%vf(l)%sf(idwbuff(1 )%beg:idwbuff(1 )%end, idwbuff(2 )%beg:idwbuff(2 )%end, idwbuff(3 )%beg:idwbuff(3 )%end))
197+ end do
204198
205199 @:ACC_SETUP_VFs(q_cons_qp, q_prim_qp)
206200
0 commit comments