@@ -181,7 +181,6 @@ program main
181
181
! allocate variables
182
182
! NS variables
183
183
allocate (u(piX% shape (1 ),piX% shape (2 ),piX% shape (3 )),v(piX% shape (1 ),piX% shape (2 ),piX% shape (3 )),w(piX% shape (1 ),piX% shape (2 ),piX% shape (3 ))) ! velocity vector
184
- allocate (ustar(piX% shape (1 ),piX% shape (2 ),piX% shape (3 )),vstar(piX% shape (1 ),piX% shape (2 ),piX% shape (3 )),wstar(piX% shape (1 ),piX% shape (2 ),piX% shape (3 ))) ! provisional velocity field
185
184
allocate (rhsu(piX% shape (1 ),piX% shape (2 ),piX% shape (3 )),rhsv(piX% shape (1 ),piX% shape (2 ),piX% shape (3 )),rhsw(piX% shape (1 ),piX% shape (2 ),piX% shape (3 ))) ! right hand side u,v,w
186
185
allocate (rhsu_o(piX% shape (1 ),piX% shape (2 ),piX% shape (3 )),rhsv_o(piX% shape (1 ),piX% shape (2 ),piX% shape (3 )),rhsw_o(piX% shape (1 ),piX% shape (2 ),piX% shape (3 ))) ! right hand side u,v,w
187
186
allocate (div(piX% shape (1 ),piX% shape (2 ),piX% shape (3 )))
@@ -652,9 +651,12 @@ program main
652
651
do k= 1 + halo_ext, piX% shape (3 )- halo_ext
653
652
do j= 1 + halo_ext, piX% shape (2 )- halo_ext
654
653
do i= 1 ,nx
655
- ustar(i,j,k) = u(i,j,k) + dt* (alpha* rhsu(i,j,k)- beta* rhsu_o(i,j,k))
656
- vstar(i,j,k) = v(i,j,k) + dt* (alpha* rhsv(i,j,k)- beta* rhsv_o(i,j,k))
657
- wstar(i,j,k) = w(i,j,k) + dt* (alpha* rhsw(i,j,k)- beta* rhsw_o(i,j,k))
654
+ u(i,j,k) = u(i,j,k) + dt* (alpha* rhsu(i,j,k)- beta* rhsu_o(i,j,k))
655
+ v(i,j,k) = v(i,j,k) + dt* (alpha* rhsv(i,j,k)- beta* rhsv_o(i,j,k))
656
+ w(i,j,k) = w(i,j,k) + dt* (alpha* rhsw(i,j,k)- beta* rhsw_o(i,j,k))
657
+ rhsu_o(i,j,k)= rhsu(i,j,k)
658
+ rhsv_o(i,j,k)= rhsv(i,j,k)
659
+ rhsw_o(i,j,k)= rhsw(i,j,k)
658
660
enddo
659
661
enddo
660
662
enddo
@@ -664,24 +666,20 @@ program main
664
666
! After first step move to AB2
665
667
alpha= 1.5d0
666
668
beta= 0.5d0
667
- ! $acc kernels
668
- rhsu_o= rhsu
669
- rhsv_o= rhsv
670
- rhsw_o= rhsw
671
- ! $acc end kernels
669
+
672
670
673
671
! 5.3 update halos (y and z directions), required to then compute the RHS of Poisson equation because of staggered grid
674
672
! $acc host_data use_device(ustar)
675
- CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, ustar , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 2 ))
676
- CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, ustar , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 3 ))
673
+ CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, u , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 2 ))
674
+ CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, u , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 3 ))
677
675
! $acc end host_data
678
676
! $acc host_data use_device(vstar)
679
- CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, vstar , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 2 ))
680
- CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, vstar , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 3 ))
677
+ CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, v , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 2 ))
678
+ CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, v , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 3 ))
681
679
! $acc end host_data
682
680
! $acc host_data use_device(wstar)
683
- CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, wstar , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 2 ))
684
- CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, wstar , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 3 ))
681
+ CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, w , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 2 ))
682
+ CHECK_CUDECOMP_EXIT(cudecompUpdateHalosX(handle, grid_desc, w , work_halo_d, CUDECOMP_DOUBLE, piX% halo_extents, halo_periods, 3 ))
685
683
! $acc end host_data
686
684
! ########################################################################################################################################
687
685
! END STEP 5: USTAR COMPUTATION
@@ -709,9 +707,9 @@ program main
709
707
jp= j+1
710
708
kp= k+1
711
709
if (ip > nx) ip= 1
712
- rhsp(i,j,k) = (rho* dxi/ dt)* (ustar (ip,j,k)- ustar (i,j,k))
713
- rhsp(i,j,k) = rhsp(i,j,k) + (rho* dxi/ dt)* (vstar (i,jp,k)- vstar (i,j,k))
714
- rhsp(i,j,k) = rhsp(i,j,k) + (rho* dxi/ dt)* (wstar (i,j,kp)- wstar (i,j,k))
710
+ rhsp(i,j,k) = (rho* dxi/ dt)* (u (ip,j,k)- u (i,j,k))
711
+ rhsp(i,j,k) = rhsp(i,j,k) + (rho* dxi/ dt)* (v (i,jp,k)- v (i,j,k))
712
+ rhsp(i,j,k) = rhsp(i,j,k) + (rho* dxi/ dt)* (w (i,j,kp)- w (i,j,k))
715
713
enddo
716
714
enddo
717
715
enddo
@@ -869,9 +867,9 @@ program main
869
867
jm= j-1
870
868
km= k-1
871
869
if (im < 1 ) im= nx
872
- u(i,j,k)= ustar (i,j,k) - dt/ rho* (p(i,j,k)- p(im,j,k))* dxi
873
- v(i,j,k)= vstar (i,j,k) - dt/ rho* (p(i,j,k)- p(i,jm,k))* dxi
874
- w(i,j,k)= wstar (i,j,k) - dt/ rho* (p(i,j,k)- p(i,j,km))* dxi
870
+ u(i,j,k)= u (i,j,k) - dt/ rho* (p(i,j,k)- p(im,j,k))* dxi
871
+ v(i,j,k)= v (i,j,k) - dt/ rho* (p(i,j,k)- p(i,jm,k))* dxi
872
+ w(i,j,k)= w (i,j,k) - dt/ rho* (p(i,j,k)- p(i,j,km))* dxi
875
873
enddo
876
874
enddo
877
875
enddo
0 commit comments