Ignore:
Timestamp:
Jan 17, 2017 4:38:49 PM (7 years ago)
Author:
raasch
Message:

all OpenACC directives and related parts removed from the code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/diffusion_s.f90

    r2101 r2118  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! OpenACC version of subroutine removed
    2323!
    2424! Former revisions:
     
    3434! 1873 2016-04-18 14:50:06Z maronga
    3535! Module renamed (removed _mod)
    36 !
    37 !
     36!
    3837! 1850 2016-04-08 13:29:27Z maronga
    3938! Module renamed
    40 !
    4139!
    4240! 1691 2015-10-26 16:17:44Z maronga
     
    9492
    9593    PRIVATE
    96     PUBLIC diffusion_s, diffusion_s_acc
     94    PUBLIC diffusion_s
    9795
    9896    INTERFACE diffusion_s
     
    10098       MODULE PROCEDURE diffusion_s_ij
    10199    END INTERFACE diffusion_s
    102 
    103     INTERFACE diffusion_s_acc
    104        MODULE PROCEDURE diffusion_s_acc
    105     END INTERFACE diffusion_s_acc
    106100
    107101 CONTAINS
     
    242236! Description:
    243237! ------------
    244 !> Call for all grid points - accelerator version
    245 !------------------------------------------------------------------------------!
    246     SUBROUTINE diffusion_s_acc( s, s_flux_b, s_flux_t, wall_s_flux )
    247 
    248        USE arrays_3d,                                                          &
    249            ONLY:  ddzu, ddzw, kh, tend, drho_air, rho_air_zw
    250            
    251        USE control_parameters,                                                 &
    252            ONLY: use_surface_fluxes, use_top_fluxes
    253        
    254        USE grid_variables,                                                     &
    255            ONLY:  ddx2, ddy2, fwxm, fwxp, fwym, fwyp, wall_w_x, wall_w_y
    256        
    257        USE indices, &
    258            ONLY: i_left, i_right, j_north, j_south, nxlg, nxrg, nyng, nysg,    &
    259                  nzb, nzb_diff_s_inner, nzb_s_inner, nzb_s_outer, nzt, nzt_diff
    260            
    261        USE kinds
    262 
    263        IMPLICIT NONE
    264 
    265        INTEGER(iwp) ::  i                 !<
    266        INTEGER(iwp) ::  j                 !<
    267        INTEGER(iwp) ::  k                 !<
    268        REAL(wp)     ::  wall_s_flux(0:4)  !<
    269        REAL(wp), DIMENSION(nysg:nyng,nxlg:nxrg) ::  s_flux_b !<
    270        REAL(wp), DIMENSION(nysg:nyng,nxlg:nxrg) ::  s_flux_t !<
    271 #if defined( __nopointer )
    272        REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  s  !<
    273 #else
    274        REAL(wp), DIMENSION(:,:,:), POINTER ::  s  !<
    275 #endif
    276 
    277        !$acc kernels present( ddzu, ddzw, fwxm, fwxp, fwym, fwyp, kh )        &
    278        !$acc         present( nzb_diff_s_inner, nzb_s_inner, nzb_s_outer, s ) &
    279        !$acc         present( s_flux_b, s_flux_t, tend, wall_s_flux )         &
    280        !$acc         present( wall_w_x, wall_w_y )
    281        DO  i = i_left, i_right
    282           DO  j = j_south, j_north
    283 !
    284 !--          Compute horizontal diffusion
    285              DO  k = 1, nzt
    286                 IF ( k > nzb_s_outer(j,i) )  THEN
    287 
    288                    tend(k,j,i) = tend(k,j,i)                                   &
    289                                           + 0.5_wp * (                         &
    290                         ( kh(k,j,i) + kh(k,j,i+1) ) * ( s(k,j,i+1)-s(k,j,i) )  &
    291                       - ( kh(k,j,i) + kh(k,j,i-1) ) * ( s(k,j,i)-s(k,j,i-1) )  &
    292                                                      ) * ddx2                  &
    293                                           + 0.5_wp * (                         &
    294                         ( kh(k,j,i) + kh(k,j+1,i) ) * ( s(k,j+1,i)-s(k,j,i) )  &
    295                       - ( kh(k,j,i) + kh(k,j-1,i) ) * ( s(k,j,i)-s(k,j-1,i) )  &
    296                                                      ) * ddy2
    297                 ENDIF
    298              ENDDO
    299 
    300 !
    301 !--          Apply prescribed horizontal wall heatflux where necessary
    302              DO  k = 1, nzt
    303                 IF ( k > nzb_s_inner(j,i)  .AND.  k <= nzb_s_outer(j,i)  .AND. &
    304                      ( wall_w_x(j,i) /= 0.0_wp  .OR.  wall_w_y(j,i) /= 0.0_wp ) )    &
    305                 THEN
    306                    tend(k,j,i) = tend(k,j,i)                                   &
    307                                                 + ( fwxp(j,i) * 0.5_wp *       &
    308                         ( kh(k,j,i) + kh(k,j,i+1) ) * ( s(k,j,i+1)-s(k,j,i) )  &
    309                         + ( 1.0_wp - fwxp(j,i) ) * wall_s_flux(1)              &
    310                                                    -fwxm(j,i) * 0.5_wp *       &
    311                         ( kh(k,j,i) + kh(k,j,i-1) ) * ( s(k,j,i)-s(k,j,i-1) )  &
    312                         + ( 1.0_wp - fwxm(j,i) ) * wall_s_flux(2)              &
    313                                                   ) * ddx2                     &
    314                                                 + ( fwyp(j,i) * 0.5_wp *       &
    315                         ( kh(k,j,i) + kh(k,j+1,i) ) * ( s(k,j+1,i)-s(k,j,i) )  &
    316                         + ( 1.0_wp - fwyp(j,i) ) * wall_s_flux(3)              &
    317                                                    -fwym(j,i) * 0.5_wp *       &
    318                         ( kh(k,j,i) + kh(k,j-1,i) ) * ( s(k,j,i)-s(k,j-1,i) )  &
    319                         + ( 1.0_wp - fwym(j,i) ) * wall_s_flux(4)              &
    320                                                   ) * ddy2
    321                 ENDIF
    322              ENDDO
    323 
    324 !
    325 !--          Compute vertical diffusion. In case that surface fluxes have been
    326 !--          prescribed or computed at bottom and/or top, index k starts/ends at
    327 !--          nzb+2 or nzt-1, respectively.
    328              DO  k = 1, nzt_diff
    329                 IF ( k >= nzb_diff_s_inner(j,i) )  THEN
    330                    tend(k,j,i) = tend(k,j,i)                                   &
    331                                        + 0.5_wp * (                            &
    332             ( kh(k,j,i) + kh(k+1,j,i) ) * ( s(k+1,j,i)-s(k,j,i) ) * ddzu(k+1)  &
    333                                                             * rho_air_zw(k)    &
    334           - ( kh(k,j,i) + kh(k-1,j,i) ) * ( s(k,j,i)-s(k-1,j,i) ) * ddzu(k)    &
    335                                                             * rho_air_zw(k-1)  &
    336                                                   ) * ddzw(k) * drho_air(k)
    337                 ENDIF
    338              ENDDO
    339 
    340 !
    341 !--          Vertical diffusion at the first computational gridpoint along
    342 !--          z-direction
    343              DO  k = 1, nzt
    344                 IF ( use_surface_fluxes  .AND.  k == nzb_s_inner(j,i)+1 )  THEN
    345                    tend(k,j,i) = tend(k,j,i)                                   &
    346                                           + ( 0.5_wp * ( kh(k,j,i)+kh(k+1,j,i) )&
    347                                                      * ( s(k+1,j,i)-s(k,j,i) ) &
    348                                                      * ddzu(k+1)               &
    349                                                      * rho_air_zw(k)           &
    350                                               + s_flux_b(j,i)                  &
    351                                             ) * ddzw(k) * drho_air(k)
    352                 ENDIF
    353 
    354 !
    355 !--             Vertical diffusion at the last computational gridpoint along
    356 !--             z-direction
    357                 IF ( use_top_fluxes  .AND.  k == nzt )  THEN
    358                    tend(k,j,i) = tend(k,j,i)                                   &
    359                                           + ( - s_flux_t(j,i)                  &
    360                                               - 0.5_wp * ( kh(k-1,j,i)+kh(k,j,i) )&
    361                                                        * ( s(k,j,i)-s(k-1,j,i) )  &
    362                                                        * ddzu(k)                  &
    363                                                        * rho_air_zw(k-1)          &
    364                                             ) * ddzw(k) * drho_air(k)
    365                 ENDIF
    366              ENDDO
    367 
    368           ENDDO
    369        ENDDO
    370        !$acc end kernels
    371 
    372     END SUBROUTINE diffusion_s_acc
    373 
    374 
    375 !------------------------------------------------------------------------------!
    376 ! Description:
    377 ! ------------
    378238!> Call for grid point i,j
    379239!------------------------------------------------------------------------------!
Note: See TracChangeset for help on using the changeset viewer.