Changeset 702


Ignore:
Timestamp:
Mar 24, 2011 7:33:15 PM (11 years ago)
Author:
suehring
Message:

Removed bugfix in exchange_horiz_2d_int().

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

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

    r668 r702  
    44! Current revisions:
    55! -----------------
     6!
     7! Bugfix in declaration of ar in exchange_horiz_2d_int and number of MPI-blocks
     8! in MPI_SENDRECV().
    69!
    710! Former revisions:
     
    5558!--    One-dimensional decomposition along y, boundary values can be exchanged
    5659!--    within the PE memory
    57        ar(:,nxl-nbgp:nxl-1) = ar(:,nxr-nbgp+1:nxr)
    58        ar(:,nxr+1:nxr+nbgp) = ar(:,nxl:nxl+nbgp-1)
     60       ar(:,nxlg:nxl-1) = ar(:,nxr-nbgp+1:nxr)
     61       ar(:,nxr+1:nxrg) = ar(:,nxl:nxl+nbgp-1)
    5962
    6063    ELSE
     
    6265!--    Send left boundary, receive right one
    6366
    64        CALL MPI_SENDRECV( ar(nysg,nxl), 1, type_y, pleft,  0, &
    65                           ar(nysg,nxr+1), 1, type_y, pright, 0, &
     67       CALL MPI_SENDRECV( ar(nysg,nxl), 1, type_y, pleft,  0,                 &
     68                          ar(nysg,nxr+1), 1, type_y, pright, 0,               &
    6669                          comm2d, status, ierr )
    6770!
    6871!--    Send right boundary, receive left one
    69        CALL MPI_SENDRECV( ar(nysg,nxr+1-nbgp), 1, type_y, pright,  1, &
    70                           ar(nysg,nxlg), 1, type_y, pleft,   1, &
    71                           comm2d, status, ierr )
     72       CALL MPI_SENDRECV( ar(nysg,nxr+1-nbgp), 1, type_y, pright,  1,         &
     73                          ar(nysg,nxlg), 1, type_y, pleft,   1,               &
     74                          comm2d, status, ierr )
     75                         
     76     
    7277    ENDIF
    7378
     
    7681!--    One-dimensional decomposition along x, boundary values can be exchanged
    7782!--    within the PE memory
    78        ar(nys-nbgp:nys-1,:) = ar(nyn-nbgp+1:nyn,:)
    79        ar(nyn+1:nyn+nbgp,:) = ar(nys:nys+nbgp-1,:)
     83       ar(nysg:nys-1,:) = ar(nyn-nbgp+1:nyn,:)
     84       ar(nyn+1:nyng,:) = ar(nys:nys+nbgp-1,:)
    8085
    8186    ELSE
     
    8388!--    Send front boundary, receive rear one
    8489
    85        CALL MPI_SENDRECV( ar(nys,nxlg), 1, type_x, psouth, 0, &        !replace number of sended elements from
    86                           ar(nyn+1,nxlg), 1, type_x, pnorth, 0, &      ! nbgp to 1
     90       CALL MPI_SENDRECV( ar(nys,nxlg), 1, type_x, psouth, 0,                 &       
     91                          ar(nyn+1,nxlg), 1, type_x, pnorth, 0,               &
    8792                          comm2d, status, ierr )
    8893!
    8994!--    Send rear boundary, receive front one
    90        CALL MPI_SENDRECV( ar(nyn+1-nbgp,nxlg), 1, type_x, pnorth, 1, &
    91                           ar(nysg,nxlg), 1, type_x, psouth, 1, &
     95       CALL MPI_SENDRECV( ar(nyn+1-nbgp,nxlg), 1, type_x, pnorth, 1,          &
     96                          ar(nysg,nxlg), 1, type_x, psouth, 1,                &
    9297                          comm2d, status, ierr )
    9398
     
    99104!-- Lateral boundary conditions in the non-parallel case
    100105    IF ( bc_lr == 'cyclic' )  THEN
    101        ar(:,nxl-nbgp:nxl-1) = ar(:,nxr-nbgp+1:nxr)
    102        ar(:,nxr+1:nxr+nbgp) = ar(:,nxl:nxl+nbgp-1)
     106       ar(:,nxlg:nxl-1) = ar(:,nxr-nbgp+1:nxr)
     107       ar(:,nxr+1:nxrg) = ar(:,nxl:nxl+nbgp-1)
    103108    ENDIF
    104109
    105110    IF ( bc_ns == 'cyclic' )  THEN
    106        ar(nys-nbgp:nys-1,:) = ar(nyn-nbgp+1:nyn,:)
    107        ar(nyn+1:nyn+nbgp,:) = ar(nys:nys+nbgp-1,:)
     111       ar(nysg:nys-1,:) = ar(nyn-nbgp+1:nyn,:)
     112       ar(nyn+1:nyng,:) = ar(nys:nys+nbgp-1,:)
    108113    ENDIF
    109114
     
    157162    IMPLICIT NONE
    158163
    159     REAL ::  ar(nysg:nyng,nxlg:nxrg)
     164    INTEGER ::  ar(nysg:nyng,nxlg:nxrg)
    160165    INTEGER :: i
    161 
    162 
    163166
    164167    CALL cpu_log( log_point_s(13), 'exchange_horiz_2d', 'start' )
     
    173176!--    One-dimensional decomposition along y, boundary values can be exchanged
    174177!--    within the PE memory
    175        ar(nys:nyn,nxl-1) = ar(nys:nyn,nxr)
    176        ar(nys:nyn,nxr+1) = ar(nys:nyn,nxl)
     178       ar(:,nxlg:nxl-1) = ar(:,nxr-nbgp+1:nxr)
     179       ar(:,nxr+1:nxrg) = ar(:,nxl:nxl+nbgp-1)
     180
    177181
    178182    ELSE
    179183!
    180184!--    Send left boundary, receive right one
    181        CALL MPI_SENDRECV( ar(nysg,nxl), 1, type_y_int, pleft,  0, &
    182                           ar(nysg,nxr+1), 1, type_y_int, pright, 0, &
     185       CALL MPI_SENDRECV( ar(nysg,nxl), 1, type_y_int, pleft,  0,             &
     186                          ar(nysg,nxr+1), 1, type_y_int, pright, 0,           &
    183187                          comm2d, status, ierr )
    184188!
    185189!--    Send right boundary, receive left one
    186        CALL MPI_SENDRECV( ar(nysg,nxr+1-nbgp), 1, type_y_int, pright,  1, &
    187                           ar(nysg,nxlg), 1, type_y_int, pleft,   1, &
     190       CALL MPI_SENDRECV( ar(nysg,nxr+1-nbgp), 1, type_y_int, pright,  1,     &
     191                          ar(nysg,nxlg), 1, type_y_int, pleft,   1,           &
    188192                          comm2d, status, ierr )
    189193
     
    201205!
    202206!--    Send front boundary, receive rear one
    203        CALL MPI_SENDRECV( ar(nys,nxlg),1, type_x_int, psouth, 0, &
    204                           ar(nyn+1,nxlg),1, type_x_int, pnorth, 0, &
    205                           comm2d, status, ierr )
     207       CALL MPI_SENDRECV( ar(nys,nxlg), 1, type_x_int, psouth, 0,            &
     208                          ar(nyn+1,nxlg), 1, type_x_int, pnorth, 0,          &
     209                          comm2d, status, ierr )                         
    206210
    207211!
    208212!--    Send rear boundary, receive front one
    209        CALL MPI_SENDRECV( ar(nyn+1-nbgp,nxlg), nbgp, type_x_int, pnorth, 1, &
    210                           ar(nysg,nxlg), nbgp, type_x_int, psouth, 1, &
     213       CALL MPI_SENDRECV( ar(nyn+1-nbgp,nxlg), 1, type_x_int, pnorth, 1,      &
     214                          ar(nysg,nxlg), 1, type_x_int, psouth, 1,            &
    211215                          comm2d, status, ierr )
    212216
     
    218222!-- Lateral boundary conditions in the non-parallel case
    219223    IF ( bc_lr == 'cyclic' )  THEN
    220        ar(nys:nyn,nxl-1) = ar(nys:nyn,nxr)
    221        ar(nys:nyn,nxr+1) = ar(nys:nyn,nxl)
     224       ar(:,nxlg:nxl-1) = ar(:,nxr-nbgp+1:nxr)
     225       ar(:,nxr+1:nxrg) = ar(:,nxl:nxl+nbgp-1)
    222226    ENDIF
    223227
     
    228232
    229233#endif
    230 
    231234    CALL cpu_log( log_point_s(13), 'exchange_horiz_2d', 'stop' )
    232235
  • palm/trunk/SOURCE/user_read_restart_data.f90

    r668 r702  
    77! Current revisions:
    88! -----------------
     9!
     10! nys-1, nyn+1, nxl-1, nxr+1 changed to nysg, nyng, nxlg, nxrg.
    911!
    1012! Former revisions:
     
    8284!                CASE ( 'u2_av' )
    8385!                   IF ( .NOT. ALLOCATED( u2_av ) ) THEN
    84 !                      ALLOCATE( u2_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
     86!                      ALLOCATE( u2_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    8587!                   ENDIF
    8688!                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    87 !                   u2_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    88 !                                          tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     89!                   u2_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     90!                                          tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    8991!
    9092!                CASE DEFAULT
Note: See TracChangeset for help on using the changeset viewer.