diff --git a/tensorproductmultigrid_Source/communication.f90 b/tensorproductmultigrid_Source/communication.f90 index e362a6f2d1b59b90967586d9a93d6b3ba6121e8b..b7b1fef019a506cd0e79221c34ab869645069cc2 100644 --- a/tensorproductmultigrid_Source/communication.f90 +++ b/tensorproductmultigrid_Source/communication.f90 @@ -37,9 +37,12 @@ module communication use messages use datatypes - use parameters - !use mpi + +#ifndef MNH + use mpi +#else use modd_mpif +#endif use timer implicit none diff --git a/tensorproductmultigrid_Source/conjugategradient.f90 b/tensorproductmultigrid_Source/conjugategradient.f90 index 320e272c9ffbd58d44279094ad1edcd57656c184..30277d8625ad6735444ad7335b761ab6ed369b7a 100644 --- a/tensorproductmultigrid_Source/conjugategradient.f90 +++ b/tensorproductmultigrid_Source/conjugategradient.f90 @@ -40,8 +40,11 @@ module conjugategradient use discretisation use messages use communication - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none diff --git a/tensorproductmultigrid_Source/datatypes.f90 b/tensorproductmultigrid_Source/datatypes.f90 index ef71df25c8e791932abd914914712bbeadf38ce2..7f7c6eab07766a2a9978a089b07262f4e0b405f6 100644 --- a/tensorproductmultigrid_Source/datatypes.f90 +++ b/tensorproductmultigrid_Source/datatypes.f90 @@ -39,8 +39,11 @@ module datatypes - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif use parameters use messages @@ -341,7 +344,7 @@ private if (LUseT) then zphi_st => phi%st - !$acc kernels loop collapse(3) + !$acc kernels loop dtype(nvidia) collapse(3) do iz=1,nz do iy=1,nlocaly do ix=1,nlocalx diff --git a/tensorproductmultigrid_Source/discretisation.f90 b/tensorproductmultigrid_Source/discretisation.f90 index a42888a1d43b6c71fd93a7526f2a472bf321a569..9fa41dd2779aac88d52de2f14bc225b1351e1c0d 100644 --- a/tensorproductmultigrid_Source/discretisation.f90 +++ b/tensorproductmultigrid_Source/discretisation.f90 @@ -65,8 +65,11 @@ module discretisation use messages use datatypes use communication - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none @@ -631,9 +634,10 @@ end subroutine construct_vertical_coeff real(kind=rl) :: tmp integer :: iib,iie,ijb,ije - real, dimension(:,:,:) , pointer :: zv_st , zu_st - real, dimension(:) , pointer :: za_k, zb_k, zc_k, zd_k + real(kind=rl), dimension(:,:,:) , pointer :: zv_st , zu_st + real(kind=rl), dimension(:) , pointer :: za_k, zb_k, zc_k, zd_k integer :: ii,ij + integer :: ize call boundary_mnh(u) @@ -676,22 +680,29 @@ end subroutine construct_vertical_coeff iie=u%icompx_max ijb=u%icompy_min ije=u%icompy_max + ize=u%grid_param%nz ! zv_st => v%st zu_st => u%st zb_k => vert_coeff%b zc_k => vert_coeff%c zd_k => vert_coeff%d - - !$acc kernels + + !$acc kernels iz=1 - zv_st(iib:iie,ijb:ije,iz) = zd_k(iz)* ( (-zb_k(iz)-zc_k(iz))*Tij * zu_st(iib:iie,ijb:ije,iz ) & - +zb_k(iz) *Tij * zu_st(iib:iie,ijb:ije,iz+1) ) + !$acc loop independent dtype(nvidia) collapse(2) + do ij=ijb,ije + do ii=iib,iie + zv_st(ii,ij,iz) = zd_k(iz)* ( (-zb_k(iz)-zc_k(iz))*Tij * zu_st(ii,ij,iz ) & + +zb_k(iz) *Tij * zu_st(ii,ij,iz+1) ) + end do + end do ! - do iz=2,u%grid_param%nz-1 + do iz=2,ize-1 + !$acc loop independent dtype(nvidia) collapse(2) do ij=ijb,ije do ii=iib,iie - zv_st(ii,ij,iz) = zd_k(iz)* ( ((-zb_k(iz)-zc_k(iz))*Tij - 4.0_rl ) * zu_st(ii,ij,iz) & + zv_st(ii,ij,iz) = zd_k(iz)* ( ((-zb_k(iz)-zc_k(iz))*Tij - 4.0_rl ) * zu_st(ii,ij,iz) & +zb_k(iz) *Tij * zu_st(ii,ij,iz+1) & +zc_k(iz) *Tij * zu_st(ii,ij,iz-1) & + zu_st(ii+1,ij,iz) & @@ -703,9 +714,15 @@ end subroutine construct_vertical_coeff end do end do ! - iz=u%grid_param%nz - zv_st(iib:iie,ijb:ije,iz) = zd_k(iz)* ( (-zb_k(iz)-zc_k(iz))*Tij * zu_st(iib:iie,ijb:ije,iz) & - +zc_k(iz) *Tij * zu_st(iib:iie,ijb:ije,iz-1) ) + iz=ize + !$acc loop independent dtype(nvidia) collapse(2) + do ij=ijb,ije + do ii=iib,iie + zv_st(ii,ij,iz) = zd_k(iz)* ( (-zb_k(iz)-zc_k(iz))*Tij * zu_st(ii,ij,iz) & + +zc_k(iz) *Tij * zu_st(ii,ij,iz-1) ) + end do + end do + !$acc end kernels endif diff --git a/tensorproductmultigrid_Source/messages.f90 b/tensorproductmultigrid_Source/messages.f90 index ce0fd76c35e8517fa73c433258e2b3f2d23fe0e2..7b4345777a92dcb235e12c456284ecc66b06c980 100644 --- a/tensorproductmultigrid_Source/messages.f90 +++ b/tensorproductmultigrid_Source/messages.f90 @@ -36,8 +36,11 @@ module messages use parameters - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none diff --git a/tensorproductmultigrid_Source/mg_main.f90 b/tensorproductmultigrid_Source/mg_main.f90 index 2ce0607a8279cc04855c7e0d3c408acd9372d6a7..a97d51b494603178c8f34336f074d49d4f8aa8ec 100644 --- a/tensorproductmultigrid_Source/mg_main.f90 +++ b/tensorproductmultigrid_Source/mg_main.f90 @@ -51,8 +51,11 @@ program mg_main use messages use communication use timer - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif use mode_mg_read_param use mode_mg diff --git a/tensorproductmultigrid_Source/mg_main_mnh.f90 b/tensorproductmultigrid_Source/mg_main_mnh.f90 index 4263ea443b6c440e41143473a2db1149ccd9166e..cbe833f9a7d71a8dd327c5c53796ec9fc6471e06 100644 --- a/tensorproductmultigrid_Source/mg_main_mnh.f90 +++ b/tensorproductmultigrid_Source/mg_main_mnh.f90 @@ -51,8 +51,11 @@ module mode_mg_main_mnh use messages use communication use timer - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif use mode_mg_read_param use mode_mg @@ -143,7 +146,7 @@ end subroutine mg_main_get_u_mnh call mg_main_mnh_init() - DO it=1,10 + DO it=1,1 call mg_main_initialise_rhs_mnh() call mg_main_initialise_u_mnh() diff --git a/tensorproductmultigrid_Source/mode_mg.f90 b/tensorproductmultigrid_Source/mode_mg.f90 index c388cee404dfd606e9a815d13adbd4677cce2ee1..806825f1b47d9e14c0d528fe57666e2931faeb0e 100644 --- a/tensorproductmultigrid_Source/mode_mg.f90 +++ b/tensorproductmultigrid_Source/mode_mg.f90 @@ -8,8 +8,11 @@ module mode_mg use solver use parameters use timer - !use mpi - use modd_mpif +#ifndef MNH + use mpi +#else + use modd_mpif +#endif use profiles use mode_mg_read_param diff --git a/tensorproductmultigrid_Source/mode_mg_read_param.f90 b/tensorproductmultigrid_Source/mode_mg_read_param.f90 index 87b1ae7f2b2d8e4c162e386a9f6d29ddb5015a28..63c7f5ff7a00cc85146093b2641d84209fb2867d 100644 --- a/tensorproductmultigrid_Source/mode_mg_read_param.f90 +++ b/tensorproductmultigrid_Source/mode_mg_read_param.f90 @@ -36,8 +36,11 @@ subroutine read_general_parameters(filename,savefields_out) use parameters use communication use messages - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none character(*), intent(in) :: filename logical, intent(out) :: savefields_out @@ -68,8 +71,11 @@ subroutine read_solver_parameters(filename,solver_param_out) use parameters use communication use messages - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none character(*), intent(in) :: filename type(solver_parameters), intent(out) :: solver_param_out @@ -121,8 +127,11 @@ subroutine read_grid_parameters_mnh(filename,grid_param,KN,KNZ,PL,PH) use datatypes use communication use messages - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none character(*), intent(in) :: filename type(grid_parameters), intent(out) :: grid_param @@ -193,8 +202,12 @@ subroutine read_grid_parameters(filename,grid_param) use datatypes use communication use messages - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif + implicit none character(*), intent(in) :: filename type(grid_parameters), intent(out) :: grid_param @@ -251,8 +264,11 @@ subroutine read_comm_parameters(filename,comm_param) use parameters use communication use messages - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none character(*), intent(in) :: filename type(comm_parameters), intent(out) :: comm_param @@ -290,8 +306,11 @@ subroutine read_model_parameters(filename,model_param) use discretisation use communication use messages - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none character(*), intent(in) :: filename type(model_parameters), intent(out) :: model_param @@ -328,8 +347,11 @@ subroutine read_smoother_parameters(filename,smoother_param) use discretisation use communication use messages - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none character(*), intent(in) :: filename type(smoother_parameters), intent(out) :: smoother_param @@ -393,8 +415,11 @@ subroutine read_multigrid_parameters(filename,mg_param) use multigrid use communication use messages - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none character(*), intent(in) :: filename type(mg_parameters), intent(out) :: mg_param @@ -493,8 +518,11 @@ subroutine read_conjugategradient_parameters(filename,cg_param) use conjugategradient use communication use messages - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif implicit none character(*), intent(in) :: filename type(cg_parameters), intent(out) :: cg_param diff --git a/tensorproductmultigrid_Source/multigrid.f90 b/tensorproductmultigrid_Source/multigrid.f90 index 2a594d28ef2e0d7ab82d2fb10ff8b8e955a1ffa7..d00404df25f62bc23ed6844d84f92a913cd9ad39 100644 --- a/tensorproductmultigrid_Source/multigrid.f90 +++ b/tensorproductmultigrid_Source/multigrid.f90 @@ -36,8 +36,11 @@ !================================================================== module multigrid - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif use parameters use datatypes use discretisation @@ -483,7 +486,7 @@ contains if (LUseT) then zphifine_st => phifine%st zphicoarse_st => phicoarse%st - !$acc kernels loop independent collapse(3) + !$acc kernels loop independent dtype(nvidia) collapse(3) do iz=1,phicoarse%grid_param%nz do iy=iy_min,iy_max do ix=ix_min,ix_max @@ -807,7 +810,7 @@ contains zphifine_st => phifine%st zphicoarse_st => phicoarse%st - !$acc kernels loop independent collapse(5) + !$acc kernels loop independent dtype(nvidia) collapse(5) do iz=1,phicoarse%grid_param%nz do diy = -1,0 do dix = -1,0 diff --git a/tensorproductmultigrid_Source/timer.f90 b/tensorproductmultigrid_Source/timer.f90 index 6966c9bb850a959566fed4d06d100418b9f9b950..da0f17907a28016c0aad1fee4b78d348cf72ecfd 100644 --- a/tensorproductmultigrid_Source/timer.f90 +++ b/tensorproductmultigrid_Source/timer.f90 @@ -36,8 +36,11 @@ module timer - !use mpi +#ifndef MNH + use mpi +#else use modd_mpif +#endif use parameters implicit none