Ignore:
Timestamp:
Feb 27, 2020 3:24:30 PM (5 years ago)
Author:
raasch
Message:

serial (non-MPI) test case added, several bugfixes for the serial mode

File:
1 edited

Legend:

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

    r4360 r4429  
    2525! -----------------
    2626! $Id$
     27! statement added to avoid compile error due to unused dummy argument
     28! bugfix: cpp-directives added for serial mode
     29!
     30! 4360 2020-01-07 11:25:50Z suehring
    2731! Corrected "Former revisions" section
    2832!
     
    12101214!> Gather subdomain data from all PEs.
    12111215!------------------------------------------------------------------------------!
     1216#if defined( __parallel )
    12121217    SUBROUTINE mg_gather( f2, f2_sub )
    12131218
     
    12441249
    12451250
    1246 #if defined( __parallel )
    12471251       CALL cpu_log( log_point_s(34), 'mg_gather', 'start' )
    12481252
     
    12791283
    12801284       CALL cpu_log( log_point_s(34), 'mg_gather', 'stop' )
    1281 #endif
    12821285   
    12831286    END SUBROUTINE mg_gather
    1284 
     1287#endif
    12851288
    12861289
     
    12911294!>       non-blocking communication
    12921295!------------------------------------------------------------------------------!
     1296#if defined( __parallel )
    12931297    SUBROUTINE mg_scatter( p2, p2_sub )
    12941298
     
    13031307
    13041308       IMPLICIT NONE
    1305 
    1306        INTEGER(iwp) ::  nwords  !<
    13071309
    13081310       REAL(wp), DIMENSION(nzb:nzt_mg(grid_level-1)+1,                         &
     
    13141316                           mg_loc_ind(1,myid)-1:mg_loc_ind(2,myid)+1) ::  p2_sub  !<
    13151317
    1316 !
    1317 !--    Find out the number of array elements of the subdomain array
    1318        nwords = SIZE( p2_sub )
    1319 
    1320 #if defined( __parallel )
     1318
    13211319       CALL cpu_log( log_point_s(35), 'mg_scatter', 'start' )
    13221320
     
    13251323
    13261324       CALL cpu_log( log_point_s(35), 'mg_scatter', 'stop' )
    1327 #endif
    13281325   
    13291326    END SUBROUTINE mg_scatter
    1330 
     1327#endif
    13311328
    13321329!------------------------------------------------------------------------------!
     
    13831380
    13841381       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  f2_sub  !<
     1382
     1383#if defined( __parallel )
    13851384       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  p2_sub  !<
     1385#endif
    13861386
    13871387!
     
    14721472!
    14731473!--          Gather all arrays from the subdomains on PE0
     1474#if defined( __parallel )
    14741475             CALL mg_gather( f2, f2_sub )
     1476#endif
    14751477
    14761478!
     
    17601762
    17611763       USE control_parameters,                                                 &
    1762            ONLY:  grid_level, mg_switch_to_pe0_level, synchronous_exchange
     1764           ONLY:  grid_level
     1765
     1766#if defined( __parallel )
     1767       USE control_parameters,                                                 &
     1768           ONLY:  mg_switch_to_pe0_level, synchronous_exchange
     1769#endif
    17631770
    17641771       USE indices,                                                            &
    1765            ONLY:  nxl, nxl_mg, nxr, nxr_mg, nys, nys_mg, nyn,      &
    1766                   nyn_mg, nzb, nzt, nzt_mg
     1772           ONLY:  nxl_mg, nxr_mg, nys_mg, nyn_mg, nzb, nzt_mg
     1773
     1774#if defined( __parallel )
     1775       USE indices,                                                            &
     1776           ONLY:  nxl, nxr, nys, nyn, nzt
     1777#endif
    17671778
    17681779       IMPLICIT NONE
     
    17731784                                    p_mg   !< treated array
    17741785
    1775        INTEGER(iwp), intent(IN) ::  color  !< flag for grid point type (red or black)
     1786       INTEGER(iwp), INTENT(IN) ::  color  !< flag for grid point type (red or black)
     1787
     1788#if defined ( __parallel )
    17761789!
    17771790!--    Local variables
     
    17941807       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  temp  !< temporary array on next coarser grid level
    17951808
    1796 #if defined ( __parallel )
    17971809       synchronous_exchange_save   = synchronous_exchange
    17981810       synchronous_exchange        = .FALSE.
     
    22612273
    22622274                IF ( i == nxl_mg(l) )  THEN
    2263                    !DIR$ IVDEP
     2275                   !DIR$ IVDEP       INTEGER(iwp) ::  ngp       !<
     2276
    22642277                   DO  k = nzb+1, ind_even_odd
    22652278                      p_mg(k,j,nxr_mg(l)+1)  = temp(k,j1,ixr+1)
     
    22992312
    23002313!
     2314!--    Next line is to avoid compile error due to unused dummy argument
     2315       IF ( color == 1234567 )  RETURN
     2316!
    23012317!--    Standard horizontal ghost boundary exchange for small coarse grid
    23022318!--    levels, where the transfer time is latency bound
Note: See TracChangeset for help on using the changeset viewer.