Changeset 1003


Ignore:
Timestamp:
Sep 14, 2012 2:35:53 PM (9 years ago)
Author:
raasch
Message:

subdomains must have identical size, i.e. grid_matching = "match" not allowed any more
parameter grid_matching removed
some obsolete variables removed

Location:
palm/trunk/SOURCE
Files:
13 edited

Legend:

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

    r708 r1003  
    44! Current revisions:
    55! -----------------
    6 !
     6! adjustment of array tend for cases with unequal subdomain sizes removed
    77!
    88! Former revisions:
     
    7373    IF ( psolver == 'multigrid' )  THEN
    7474       DEALLOCATE( d )
    75        ALLOCATE( d(nzb+1:nzta,nys:nyna,nxl:nxra) )
    76     ENDIF
    77 
    78 !
    79 !-- Enlarge the size of tend, used as a working array for the transpositions
    80     IF ( nxra > nxr  .OR.  nyna > nyn  .OR.  nza > nz )  THEN
    81        DEALLOCATE( tend )
    82        ALLOCATE( tend(1:nza,nys:nyna,nxl:nxra) )
     75       ALLOCATE( d(nzb+1:nzt,nys:nyn,nxl:nxr) )
    8376    ENDIF
    8477
     
    154147!-- Increase counter for averaging process in routine plot_spectra
    155148    average_count_sp = average_count_sp + 1
    156 
    157 !
    158 !-- Resize tend to its normal size
    159     IF ( nxra > nxr  .OR.  nyna > nyn  .OR.  nza > nz )  THEN
    160        DEALLOCATE( tend )
    161        ALLOCATE( tend(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    162     ENDIF
    163149
    164150    CALL cpu_log( log_point(30), 'calc_spectra', 'stop' )
     
    249235    REAL, DIMENSION(0:nx/2,100)::  sums_spectra
    250236
    251     REAL, DIMENSION(0:nxa,nys_x:nyn_xa,nzb_x:nzt_xa) ::  ddd
     237    REAL, DIMENSION(0:nx,nys_x:nyn_x,nzb_x:nzt_x) ::  ddd
    252238
    253239!
     
    359345    REAL, DIMENSION(0:ny/2,100)::  sums_spectra
    360346
    361     REAL, DIMENSION(0:nya,nxl_yd:nxr_yda,nzb_yd:nzt_yda) :: ddd
     347    REAL, DIMENSION(0:ny,nxl_yd:nxr_yd,nzb_yd:nzt_yd) :: ddd
    362348
    363349
  • palm/trunk/SOURCE/check_parameters.f90

    r1002 r1003  
    44! Current revisions:
    55! -----------------
    6 !
     6! checks for cases with unequal subdomain sizes removed
    77!
    88! Former revisions:
     
    597597       CALL message( 'check_parameters', 'PA0017', 1, 2, 0, 6, 0 )
    598598    ENDIF
    599     IF ( psolver == 'poisfft_hybrid'  .AND.                     &
    600          ( nxra > nxr  .OR.  nyna > nyn  .OR.  nza > nz )  .OR. &
    601           psolver == 'multigrid'      .AND.                     &
    602          ( nxra > nxr  .OR.  nyna > nyn ) )  THEN
    603        message_string = 'psolver = "' // TRIM( psolver ) // '" does not ' // &
    604                         'work for subdomains with unequal size & please ' // &
    605                         'set grid_matching = ''strict'' in the parameter file'
    606        CALL message( 'check_parameters', 'PA0018', 1, 2, 0, 6, 0 )
    607     ENDIF
    608599#else
    609600    IF ( psolver == 'poisfft_hybrid' )  THEN
     
    809800                        'is not allowed simultaneously'
    810801       CALL message( 'check_parameters', 'PA0038', 1, 2, 0, 6, 0 )
    811     ENDIF
    812 
    813     IF ( grid_matching /= 'strict'  .AND.  grid_matching /= 'match' )  THEN
    814        message_string = 'illegal value "' // TRIM( grid_matching ) // &
    815                         '" found for parameter grid_matching'
    816        CALL message( 'check_parameters', 'PA0040', 1, 2, 0, 6, 0 )
    817802    ENDIF
    818803
  • palm/trunk/SOURCE/header.f90

    r1002 r1003  
    44! Current revisions:
    55! -----------------
    6 !
     6! output of information about equal/unequal subdomain size removed
    77!
    88! Former revisions:
     
    433433    WRITE ( io, 254 )  nx, ny, nzt+1, MIN( nnx, nx+1 ), MIN( nny, ny+1 ), &
    434434                       MIN( nnz+2, nzt+2 )
    435     IF ( numprocs > 1 )  THEN
    436        IF ( nxa == nx  .AND.  nya == ny  .AND.  nza == nz )  THEN
    437           WRITE ( io, 255 )
    438        ELSE
    439           WRITE ( io, 256 )  nnx-(nxa-nx), nny-(nya-ny), nzt+2
    440        ENDIF
    441     ENDIF
    442435    IF ( sloping_surface )  WRITE ( io, 260 )  alpha_surface
    443436
     
    16931686254 FORMAT (' Number of gridpoints (x,y,z):  (0:',I4,', 0:',I4,', 0:',I4,')'/ &
    16941687            ' Subdomain size (x,y,z):        (  ',I4,',   ',I4,',   ',I4,')'/)
    1695 255 FORMAT (' Subdomains have equal size')
    1696 256 FORMAT (' Subdomains at the upper edges of the virtual processor grid ', &
    1697               'have smaller sizes'/                                          &
    1698             ' Size of smallest subdomain:    (  ',I4,',   ',I4,',   ',I4,')')
    16991688260 FORMAT (/' The model has a slope in x-direction. Inclination angle: ',F6.2,&
    17001689             ' degrees')
  • palm/trunk/SOURCE/init_3d_model.f90

    r1002 r1003  
    77! Current revisions:
    88! ------------------
    9 !
     9! nxra,nyna, nzta replaced ny nxr, nyn, nzt
    1010!
    1111! Former revisions:
     
    235235              z0h(nysg:nyng,nxlg:nxrg) )
    236236
    237     ALLOCATE( d(nzb+1:nzta,nys:nyna,nxl:nxra),     &
     237    ALLOCATE( d(nzb+1:nzt,nys:nyn,nxl:nxr),        &
    238238              e_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
    239239              e_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
  • palm/trunk/SOURCE/init_advec.f90

    r1002 r1003  
    44! Current revisions:
    55! -----------------
    6 !
     6! obsolete variables removed
    77!
    88! Former revisions:
     
    3434    IMPLICIT NONE
    3535
    36     INTEGER :: i, intervals, j, k
    37     REAL    :: delt, dn, dnneu, ex1, ex2, ex3, ex4, ex5, ex6, spl_alpha, &
    38                spl_beta, sterm
    39     REAL, DIMENSION(:), ALLOCATABLE ::  spl_u, temp
     36    INTEGER :: i, intervals, j
     37    REAL    :: delt, dn, dnneu, ex1, ex2, ex3, ex4, ex5, ex6, sterm
    4038
    4139
  • palm/trunk/SOURCE/init_pegrid.f90

    r1002 r1003  
    11 SUBROUTINE init_pegrid
    2 
    32!------------------------------------------------------------------------------!
    43! Current revisions:
    54! -----------------
    6 !
     5! subdomains must have identical size (grid matching = "match" removed)
    76!
    87! Former revisions:
     
    255254
    256255!
    257 !-- Find a grid (used for array d) which will match the transposition demands
    258     IF ( grid_matching == 'strict' )  THEN
    259 
    260        nxa = nx;  nya = ny;  nza = nz
    261 
    262     ELSE
    263 
    264        found = .FALSE.
    265    xn: DO  nxa = nx, 2*nx
    266 !
    267 !--       Meet conditions for nx
    268           IF ( MOD( nxa+1, pdims(1) ) /= 0 .OR. &
    269                MOD( nxa+1, pdims(2) ) /= 0 )  CYCLE xn
    270 
    271       yn: DO  nya = ny, 2*ny
    272 !
    273 !--          Meet conditions for ny
    274              IF ( MOD( nya+1, pdims(2) ) /= 0 .OR. &
    275                   MOD( nya+1, pdims(1) ) /= 0 )  CYCLE yn
    276 
    277 
    278          zn: DO  nza = nz, 2*nz
    279 !
    280 !--             Meet conditions for nz
    281                 IF ( ( MOD( nza, pdims(1) ) /= 0  .AND.  pdims(1) /= 1  .AND. &
    282                        pdims(2) /= 1 )  .OR.                                  &
    283                      ( MOD( nza, pdims(2) ) /= 0  .AND.  dt_dosp /= 9999999.9 &
    284                      ) )  THEN
    285                    CYCLE zn
    286                 ELSE
    287                    found = .TRUE.
    288                    EXIT xn
    289                 ENDIF
    290 
    291              ENDDO zn
    292 
    293           ENDDO yn
    294 
    295        ENDDO xn
    296 
    297        IF ( .NOT. found )  THEN
    298           message_string = 'no matching grid for transpositions found'
    299           CALL message( 'init_pegrid', 'PA0224', 1, 2, 0, 6, 0 )
    300        ENDIF
    301 
    302     ENDIF
    303 
    304 !
    305 !-- Calculate array bounds in x-direction for every PE.
    306 !-- The last PE along x may get less grid points than the others
     256!-- Calculate array bounds along x-direction for every PE.
    307257    ALLOCATE( nxlf(0:pdims(1)-1), nxrf(0:pdims(1)-1), nynf(0:pdims(2)-1), &
    308               nysf(0:pdims(2)-1), nnx_pe(0:pdims(1)-1), nny_pe(0:pdims(2)-1) )
    309 
    310     IF ( MOD( nxa+1 , pdims(1) ) /= 0 )  THEN
     258              nysf(0:pdims(2)-1) )
     259
     260    IF ( MOD( nx+1 , pdims(1) ) /= 0 )  THEN
    311261       WRITE( message_string, * ) 'x-direction: gridpoint number (',nx+1,') ',&
    312262                               'is not an& integral divisor of the number ',  &
     
    314264       CALL message( 'init_pegrid', 'PA0225', 1, 2, 0, 6, 0 )
    315265    ELSE
    316        nnx  = ( nxa + 1 ) / pdims(1)
     266       nnx  = ( nx + 1 ) / pdims(1)
    317267       IF ( nnx*pdims(1) - ( nx + 1) > nnx )  THEN
    318268          WRITE( message_string, * ) 'x-direction: nx does not match the',    &
     
    329279       nxlf(i)   = i * nnx
    330280       nxrf(i)   = ( i + 1 ) * nnx - 1
    331        nnx_pe(i) = MIN( nx, nxrf(i) ) - nxlf(i) + 1
    332281    ENDDO
    333282
    334283!
    335284!-- Calculate array bounds in y-direction for every PE.
    336     IF ( MOD( nya+1 , pdims(2) ) /= 0 )  THEN
     285    IF ( MOD( ny+1 , pdims(2) ) /= 0 )  THEN
    337286       WRITE( message_string, * ) 'y-direction: gridpoint number (',ny+1,') ', &
    338287                           'is not an& integral divisor of the number of',     &
     
    340289       CALL message( 'init_pegrid', 'PA0227', 1, 2, 0, 6, 0 )
    341290    ELSE
    342        nny  = ( nya + 1 ) / pdims(2)
     291       nny  = ( ny + 1 ) / pdims(2)
    343292       IF ( nny*pdims(2) - ( ny + 1) > nny )  THEN
    344293          WRITE( message_string, * ) 'y-direction: ny does not match the',    &
     
    355304       nysf(j)   = j * nny
    356305       nynf(j)   = ( j + 1 ) * nny - 1
    357        nny_pe(j) = MIN( ny, nynf(j) ) - nysf(j) + 1
    358306    ENDDO
    359307
    360308!
    361309!-- Local array bounds of the respective PEs
    362     nxl  = nxlf(pcoord(1))
    363     nxra = nxrf(pcoord(1))
    364     nxr  = MIN( nx, nxra )
    365     nys  = nysf(pcoord(2))
    366     nyna = nynf(pcoord(2))
    367     nyn  = MIN( ny, nyna )
    368     nzb  = 0
    369     nzta = nza
    370     nzt  = MIN( nz, nzta )
    371     nnz  = nza
     310    nxl = nxlf(pcoord(1))
     311    nxr = nxrf(pcoord(1))
     312    nys = nysf(pcoord(2))
     313    nyn = nynf(pcoord(2))
     314    nzb = 0
     315    nzt = nz
     316    nnz = nz
    372317
    373318!
     
    390335    IF ( pdims(2) /= 1 )  THEN
    391336
    392        nys_x  = nys
    393        nyn_xa = nyna
    394        nyn_x  = nyn
    395        nny_x  = nny
    396        IF ( MOD( nza , pdims(1) ) /= 0 )  THEN
     337       nys_x = nys
     338       nyn_x = nyn
     339       nny_x = nny
     340       IF ( MOD( nz , pdims(1) ) /= 0 )  THEN
    397341          WRITE( message_string, * ) 'transposition z --> x:',                &
    398342                       '&nz=',nz,' is not an integral divisior of pdims(1)=', &
     
    400344          CALL message( 'init_pegrid', 'PA0230', 1, 2, 0, 6, 0 )
    401345       ENDIF
    402        nnz_x  = nza / pdims(1)
    403        nzb_x  = 1 + myidx * nnz_x
    404        nzt_xa = ( myidx + 1 ) * nnz_x
    405        nzt_x  = MIN( nzt, nzt_xa )
    406 
     346       nnz_x = nz / pdims(1)
     347       nzb_x = 1 + myidx * nnz_x
     348       nzt_x = ( myidx + 1 ) * nnz_x
    407349       sendrecvcount_zx = nnx * nny * nnz_x
    408350
     
    412354!---   the next step  x --> y
    413355!---   WARNING: This case has still to be clarified!!!!!!!!!!!!
    414        nnz_x  = 1
    415        nzb_x  = 1
    416        nzt_xa = 1
    417        nzt_x  = 1
    418        nny_x  = nny
     356       nnz_x = 1
     357       nzb_x = 1
     358       nzt_x = 1
     359       nny_x = nny
    419360
    420361    ENDIF
     
    422363!
    423364!-- 2. transposition  x --> y
    424     nnz_y  = nnz_x
    425     nzb_y  = nzb_x
    426     nzt_ya = nzt_xa
    427     nzt_y  = nzt_x
    428     IF ( MOD( nxa+1 , pdims(2) ) /= 0 )  THEN
     365    nnz_y = nnz_x
     366    nzb_y = nzb_x
     367    nzt_y = nzt_x
     368    IF ( MOD( nx+1 , pdims(2) ) /= 0 )  THEN
    429369       WRITE( message_string, * ) 'transposition x --> y:',                &
    430370                         '&nx+1=',nx+1,' is not an integral divisor of ',&
     
    432372       CALL message( 'init_pegrid', 'PA0231', 1, 2, 0, 6, 0 )
    433373    ENDIF
    434     nnx_y = (nxa+1) / pdims(2)
     374    nnx_y = (nx+1) / pdims(2)
    435375    nxl_y = myidy * nnx_y
    436     nxr_ya = ( myidy + 1 ) * nnx_y - 1
    437     nxr_y  = MIN( nx, nxr_ya )
    438 
     376    nxr_y = ( myidy + 1 ) * nnx_y - 1
    439377    sendrecvcount_xy = nnx_y * nny_x * nnz_y
    440378
     
    447385!--    This transposition is not neccessary in case of a 1d-decomposition
    448386!--    along x, except that the uptream-spline method is switched on
    449        nnx_z  = nnx_y
    450        nxl_z  = nxl_y
    451        nxr_za = nxr_ya
    452        nxr_z  = nxr_y
    453        IF ( MOD( nya+1 , pdims(1) ) /= 0 )  THEN
     387       nnx_z = nnx_y
     388       nxl_z = nxl_y
     389       nxr_z = nxr_y
     390       IF ( MOD( ny+1 , pdims(1) ) /= 0 )  THEN
    454391          WRITE( message_string, * ) 'transposition y --> z:',            &
    455392                            '& ny+1=',ny+1,' is not an integral divisor of ',&
     
    457394          CALL message( 'init_pegrid', 'PA0232', 1, 2, 0, 6, 0 )
    458395       ENDIF
    459        nny_z  = (nya+1) / pdims(1)
    460        nys_z  = myidx * nny_z
    461        nyn_za = ( myidx + 1 ) * nny_z - 1
    462        nyn_z  = MIN( ny, nyn_za )
    463 
     396       nny_z = (ny+1) / pdims(1)
     397       nys_z = myidx * nny_z
     398       nyn_z = ( myidx + 1 ) * nny_z - 1
    464399       sendrecvcount_yz = nnx_y * nny_z * nnz_y
    465400
     
    467402!
    468403!--    x --> y. This condition must be fulfilled for a 1D-decomposition along x
    469        IF ( MOD( nya+1 , pdims(1) ) /= 0 )  THEN
     404       IF ( MOD( ny+1 , pdims(1) ) /= 0 )  THEN
    470405          WRITE( message_string, * ) 'transposition x --> y:',               &
    471406                            '& ny+1=',ny+1,' is not an integral divisor of ',&
     
    479414!-- Indices for direct transpositions z --> y (used for calculating spectra)
    480415    IF ( dt_dosp /= 9999999.9 )  THEN
    481        IF ( MOD( nza, pdims(2) ) /= 0 )  THEN
     416       IF ( MOD( nz, pdims(2) ) /= 0 )  THEN
    482417          WRITE( message_string, * ) 'direct transposition z --> y (needed ', &
    483418                    'for spectra):& nz=',nz,' is not an integral divisor of ',&
     
    485420          CALL message( 'init_pegrid', 'PA0234', 1, 2, 0, 6, 0 )
    486421       ELSE
    487           nxl_yd  = nxl
    488           nxr_yda = nxra
    489           nxr_yd  = nxr
    490           nzb_yd  = 1 + myidy * ( nza / pdims(2) )
    491           nzt_yda = ( myidy + 1 ) * ( nza / pdims(2) )
    492           nzt_yd  = MIN( nzt, nzt_yda )
    493 
    494           sendrecvcount_zyd = nnx * nny * ( nza / pdims(2) )
     422          nxl_yd = nxl
     423          nxr_yd = nxr
     424          nzb_yd = 1 + myidy * ( nz / pdims(2) )
     425          nzt_yd = ( myidy + 1 ) * ( nz / pdims(2) )
     426          sendrecvcount_zyd = nnx * nny * ( nz / pdims(2) )
    495427       ENDIF
    496428    ENDIF
     
    500432!-- of a 1d-decomposition along x)
    501433    IF ( pdims(2) == 1 )  THEN
    502        nny_x  = nny / pdims(1)
    503        nys_x  = myid * nny_x
    504        nyn_xa = ( myid + 1 ) * nny_x - 1
    505        nyn_x  = MIN( ny, nyn_xa )
    506        nzb_x  = 1
    507        nzt_xa = nza
    508        nzt_x  = nz
    509        sendrecvcount_xy = nnx * nny_x * nza
     434       nny_x = nny / pdims(1)
     435       nys_x = myid * nny_x
     436       nyn_x = ( myid + 1 ) * nny_x - 1
     437       nzb_x = 1
     438       nzt_x = nz
     439       sendrecvcount_xy = nnx * nny_x * nz
    510440    ENDIF
    511441
     
    514444!-- of a 1d-decomposition along y)
    515445    IF ( pdims(1) == 1 )  THEN
    516        nnx_y  = nnx / pdims(2)
    517        nxl_y  = myid * nnx_y
    518        nxr_ya = ( myid + 1 ) * nnx_y - 1
    519        nxr_y  = MIN( nx, nxr_ya )
    520        nzb_y  = 1
    521        nzt_ya = nza
    522        nzt_y  = nz
    523        sendrecvcount_xy = nnx_y * nny * nza
     446       nnx_y = nnx / pdims(2)
     447       nxl_y = myid * nnx_y
     448       nxr_y = ( myid + 1 ) * nnx_y - 1
     449       nzb_y = 1
     450       nzt_y = nz
     451       sendrecvcount_xy = nnx_y * nny * nz
    524452    ENDIF
    525453
     
    782710!-- Array bounds when running on a single PE (respectively a non-parallel
    783711!-- machine)
    784     nxl  = 0
    785     nxr  = nx
    786     nxra = nx
    787     nnx  = nxr - nxl + 1
    788     nys  = 0
    789     nyn  = ny
    790     nyna = ny
    791     nny  = nyn - nys + 1
    792     nzb  = 0
    793     nzt  = nz
    794     nzta = nz
    795     nnz  = nz
     712    nxl = 0
     713    nxr = nx
     714    nnx = nxr - nxl + 1
     715    nys = 0
     716    nyn = ny
     717    nny = nyn - nys + 1
     718    nzb = 0
     719    nzt = nz
     720    nnz = nz
    796721
    797722    ALLOCATE( hor_index_bounds(4,0:0) )
     
    804729!-- Array bounds for the pressure solver (in the parallel code, these bounds
    805730!-- are the ones for the transposed arrays)
    806     nys_x  = nys
    807     nyn_x  = nyn
    808     nyn_xa = nyn
    809     nzb_x  = nzb + 1
    810     nzt_x  = nzt
    811     nzt_xa = nzt
    812 
    813     nxl_y  = nxl
    814     nxr_y  = nxr
    815     nxr_ya = nxr
    816     nzb_y  = nzb + 1
    817     nzt_y  = nzt
    818     nzt_ya = nzt
    819 
    820     nxl_z  = nxl
    821     nxr_z  = nxr
    822     nxr_za = nxr
    823     nys_z  = nys
    824     nyn_z  = nyn
    825     nyn_za = nyn
     731    nys_x = nys
     732    nyn_x = nyn
     733    nzb_x = nzb + 1
     734    nzt_x = nzt
     735
     736    nxl_y = nxl
     737    nxr_y = nxr
     738    nzb_y = nzb + 1
     739    nzt_y = nzt
     740
     741    nxl_z = nxl
     742    nxr_z = nxr
     743    nys_z = nys
     744    nyn_z = nyn
    826745
    827746#endif
  • palm/trunk/SOURCE/modules.f90

    r1002 r1003  
    44! Current revisions:
    55! -----------------
    6 !
     6! -grid_matching, nxa, nya, etc., nnx_pe, nny_pe, spl_*
    77!
    88! Former revisions:
     
    296296!------------------------------------------------------------------------------!
    297297
    298     REAL ::  spl_gamma_x, spl_gamma_y
    299 
    300     REAL, DIMENSION(:), ALLOCATABLE   ::  aex, bex, dex, eex, spl_z_x, spl_z_y
    301     REAL, DIMENSION(:,:), ALLOCATABLE ::  spl_tri_x, spl_tri_y, spl_tri_zu, &
    302                                           spl_tri_zw
     298    REAL, DIMENSION(:), ALLOCATABLE   ::  aex, bex, dex, eex
    303299
    304300    SAVE
     
    484480    CHARACTER (LEN=2)    ::  coupling_char = ''
    485481    CHARACTER (LEN=5)    ::  write_binary = 'false'
    486     CHARACTER (LEN=6)    ::  grid_matching = 'strict'
    487482    CHARACTER (LEN=8)    ::  run_date, run_time
    488483    CHARACTER (LEN=9)    ::  simulated_time_chr
     
    926921!------------------------------------------------------------------------------!
    927922
    928     INTEGER ::  nbgp = 3, ngp_sums, nnx, nx = 0, nx_a, nx_o, nxa, nxl, nxlg,   &
    929                 nxlu, nxr, nxra, nxrg, nx_on_file, nny, ny = 0, ny_a, ny_o,    &
    930                 nya, nyn, nyna, nyng, nys, nysg, nysv, ny_on_file, nnz, nz = 0,&
    931                 nza, nzb, nzb_diff, nzb_max, nzt, nzta, nzt_diff
     923    INTEGER ::  nbgp = 3, ngp_sums, nnx, nx = 0, nx_a, nx_o, nxl, nxlg,   &
     924                nxlu, nxr, nxrg, nx_on_file, nny, ny = 0, ny_a, ny_o,    &
     925                nyn, nyng, nys, nysg, nysv, ny_on_file, nnz, nz = 0,&
     926                nzb, nzb_diff, nzb_max, nzt, nzt_diff
    932927
    933928
     
    936931
    937932    INTEGER, DIMENSION(:), ALLOCATABLE ::                                      &
    938                 ngp_2dh, nnx_pe, nny_pe, nxl_mg, nxr_mg, nyn_mg, nys_mg, nzt_mg
     933                ngp_2dh, nxl_mg, nxr_mg, nyn_mg, nys_mg, nzt_mg
    939934
    940935
     
    15151510!------------------------------------------------------------------------------!
    15161511
    1517     INTEGER ::  nxl_y, nxl_yd, nxl_z, nxr_y, nxr_ya, nxr_yd, nxr_yda, nxr_z, &
    1518                 nxr_za, nyn_x, nyn_xa, nyn_z, nyn_za, nys_x, nys_z, nzb_x,   &
    1519                 nzb_y, nzb_yd, nzt_x, nzt_xa, nzt_y, nzt_ya, nzt_yd, nzt_yda
     1512    INTEGER ::  nxl_y, nxl_yd, nxl_z, nxr_y, nxr_yd, nxr_z, nyn_x, nyn_z,      &
     1513                nys_x, nys_z, nzb_x, nzb_y, nzb_yd, nzt_x, nzt_y, nzt_yd
    15201514               
    15211515
  • palm/trunk/SOURCE/parin.f90

    r1002 r1003  
    44! Current revisions:
    55! -----------------
    6 !
     6! -grid_matching
    77!
    88! Former revisions:
     
    175175             dt, dt_pr_1d, dt_run_control_1d, dx, dy, dz, dz_max, &
    176176             dz_stretch_factor, dz_stretch_level, e_init, e_min, end_time_1d, &
    177              fft_method, galilei_transformation, grid_matching, humidity, &
     177             fft_method, galilei_transformation, humidity, &
    178178             inflow_damping_height, inflow_damping_width, &
    179179             inflow_disturbance_begin, inflow_disturbance_end, &
  • palm/trunk/SOURCE/poisfft.f90

    r941 r1003  
    44! Current revisions:
    55! -----------------
    6 !
     6! indices nxa, nya, etc. replaced by nx, ny, etc.
    77!
    88! Former revisions:
     
    157157       IMPLICIT NONE
    158158
    159        REAL, DIMENSION(1:nza,nys:nyna,nxl:nxra) ::  ar, work
     159       REAL, DIMENSION(1:nz,nys:nyn,nxl:nxr) ::  ar, work
    160160
    161161
     
    315315
    316316#if defined( __parallel )
    317        REAL    ::  ar(nxl_z:nxr_za,nys_z:nyn_za,1:nza)
     317       REAL    ::  ar(nxl_z:nxr_z,nys_z:nyn_z,1:nz)
    318318#else
    319319       REAL    ::  ar(1:nz,nys_z:nyn_z,nxl_z:nxr_z)
     
    462462          REAL    ::  tri(5,nxl_z:nxr_z,0:nz-1)
    463463#if defined( __parallel )
    464           REAL    ::  ar(nxl_z:nxr_za,nys_z:nyn_za,1:nza)
     464          REAL    ::  ar(nxl_z:nxr_z,nys_z:nyn_z,1:nz)
    465465#else
    466466          REAL    ::  ar(1:nz,nys_z:nyn_z,nxl_z:nxr_z)
     
    570570       CHARACTER (LEN=*) ::  direction
    571571       INTEGER           ::  j, k
    572        REAL              ::  ar(0:nxa,nys_x:nyn_xa,nzb_x:nzt_xa)
     572       REAL              ::  ar(0:nx,nys_x:nyn_x,nzb_x:nzt_x)
    573573
    574574!
     
    624624       CHARACTER (LEN=*) ::  direction
    625625       INTEGER           ::  i, k
    626        REAL              ::  ar(0:nya,nxl_y:nxr_ya,nzb_y:nzt_ya)
     626       REAL              ::  ar(0:ny,nxl_y:nxr_y,nzb_y:nzt_y)
    627627
    628628!
     
    698698       REAL, DIMENSION(0:ny+1,1:nz,nxl:nxr)             ::  work_ffty_vec
    699699#endif
    700        REAL, DIMENSION(1:nza,0:nya,nxl:nxra)            ::  f_in
    701        REAL, DIMENSION(nnx,1:nza,nys_x:nyn_xa,pdims(1)) ::  f_out
    702        REAL, DIMENSION(nxl:nxra,1:nza,0:nya)            ::  work
     700       REAL, DIMENSION(1:nz,0:ny,nxl:nxr)            ::  f_in
     701       REAL, DIMENSION(nnx,1:nz,nys_x:nyn_x,pdims(1)) ::  f_out
     702       REAL, DIMENSION(nxl:nxr,1:nz,0:ny)            ::  work
    703703
    704704!
     
    814814       REAL, DIMENSION(0:ny+1,1:nz,nxl:nxr)             ::  work_ffty_vec
    815815#endif
    816        REAL, DIMENSION(nnx,1:nza,nys_x:nyn_xa,pdims(1)) ::  f_in
    817        REAL, DIMENSION(1:nza,0:nya,nxl:nxra)            ::  f_out
    818        REAL, DIMENSION(nxl:nxra,1:nza,0:nya)            ::  work
     816       REAL, DIMENSION(nnx,1:nz,nys_x:nyn_x,pdims(1)) ::  f_in
     817       REAL, DIMENSION(1:nz,0:ny,nxl:nxr)             ::  f_out
     818       REAL, DIMENSION(nxl:nxr,1:nz,0:ny)             ::  work
    819819
    820820!
     
    931931       INTEGER ::  i, j, k, m, n, omp_get_thread_num, tn
    932932
    933        REAL, DIMENSION(0:nx)                            ::  work_fftx
    934        REAL, DIMENSION(0:nx,1:nz)                       ::  work_trix
    935        REAL, DIMENSION(nnx,1:nza,nys_x:nyn_xa,pdims(1)) ::  ar
    936        REAL, DIMENSION(:,:,:,:), ALLOCATABLE            ::  tri
     933       REAL, DIMENSION(0:nx)                          ::  work_fftx
     934       REAL, DIMENSION(0:nx,1:nz)                     ::  work_trix
     935       REAL, DIMENSION(nnx,1:nz,nys_x:nyn_x,pdims(1)) ::  ar
     936       REAL, DIMENSION(:,:,:,:), ALLOCATABLE          ::  tri
    937937
    938938
     
    954954                m = 0
    955955                DO  n = 1, pdims(1)
    956                    DO  i = 1, nnx_pe( n-1 ) ! WARN: pcoord(i) should be used!!
     956                   DO  i = 1, nnx
    957957                      work_trix(m,k) = ar(i,k,j,n)
    958958                      m = m + 1
     
    971971                m = 0
    972972                DO  n = 1, pdims(1)
    973                    DO  i = 1, nnx_pe( n-1 ) ! WARN: pcoord(i) should be used!!
     973                   DO  i = 1, nnx
    974974                      work_fftx(m) = ar(i,k,j,n)
    975975                      m = m + 1
     
    10001000                m = 0
    10011001                DO  n = 1, pdims(1)
    1002                    DO  i = 1, nnx_pe( n-1 ) ! WARN: pcoord(i) should be used!!
     1002                   DO  i = 1, nnx
    10031003                      ar(i,k,j,n) = work_trix(m,k)
    10041004                      m = m + 1
     
    10211021                m = 0
    10221022                DO  n = 1, pdims(1)
    1023                    DO  i = 1, nnx_pe( n-1 ) ! WARN: pcoord(i) should be used!!
     1023                   DO  i = 1, nnx
    10241024                      ar(i,k,j,n) = work_fftx(m)
    10251025                      m = m + 1
     
    10621062       INTEGER            ::  i, j, k
    10631063
    1064        REAL, DIMENSION(0:nx,1:nz,nys:nyn)               ::  work_fftx
    1065        REAL, DIMENSION(1:nza,nys:nyna,0:nxa)            ::  f_in
    1066        REAL, DIMENSION(nny,1:nza,nxl_y:nxr_ya,pdims(2)) ::  f_out
    1067        REAL, DIMENSION(nys:nyna,1:nza,0:nxa)            ::  work
     1064       REAL, DIMENSION(0:nx,1:nz,nys:nyn)             ::  work_fftx
     1065       REAL, DIMENSION(1:nz,nys:nyn,0:nx)             ::  f_in
     1066       REAL, DIMENSION(nny,1:nz,nxl_y:nxr_y,pdims(2)) ::  f_out
     1067       REAL, DIMENSION(nys:nyn,1:nz,0:nx)             ::  work
    10681068
    10691069!
     
    11661166       INTEGER            ::  i, j, k
    11671167
    1168        REAL, DIMENSION(0:nx,1:nz,nys:nyn)               ::  work_fftx
    1169        REAL, DIMENSION(nny,1:nza,nxl_y:nxr_ya,pdims(2)) ::  f_in
    1170        REAL, DIMENSION(1:nza,nys:nyna,0:nxa)            ::  f_out
    1171        REAL, DIMENSION(nys:nyna,1:nza,0:nxa)            ::  work
     1168       REAL, DIMENSION(0:nx,1:nz,nys:nyn)             ::  work_fftx
     1169       REAL, DIMENSION(nny,1:nz,nxl_y:nxr_y,pdims(2)) ::  f_in
     1170       REAL, DIMENSION(1:nz,nys:nyn,0:nx)             ::  f_out
     1171       REAL, DIMENSION(nys:nyn,1:nz,0:nx)             ::  work
    11721172
    11731173!
     
    12711271       INTEGER ::  i, j, k, m, n, omp_get_thread_num, tn
    12721272
    1273        REAL, DIMENSION(0:ny)                            ::  work_ffty
    1274        REAL, DIMENSION(0:ny,1:nz)                       ::  work_triy
    1275        REAL, DIMENSION(nny,1:nza,nxl_y:nxr_ya,pdims(2)) ::  ar
    1276        REAL, DIMENSION(:,:,:,:), ALLOCATABLE            ::  tri
     1273       REAL, DIMENSION(0:ny)                          ::  work_ffty
     1274       REAL, DIMENSION(0:ny,1:nz)                     ::  work_triy
     1275       REAL, DIMENSION(nny,1:nz,nxl_y:nxr_y,pdims(2)) ::  ar
     1276       REAL, DIMENSION(:,:,:,:), ALLOCATABLE          ::  tri
    12771277
    12781278
     
    12941294                m = 0
    12951295                DO  n = 1, pdims(2)
    1296                    DO  j = 1, nny_pe( n-1 ) ! WARN: pcoord(j) should be used!!
     1296                   DO  j = 1, nny
    12971297                      work_triy(m,k) = ar(j,k,i,n)
    12981298                      m = m + 1
     
    13111311                m = 0
    13121312                DO  n = 1, pdims(2)
    1313                    DO  j = 1, nny_pe( n-1 ) ! WARN: pcoord(j) should be used!!
     1313                   DO  j = 1, nny
    13141314                      work_ffty(m) = ar(j,k,i,n)
    13151315                      m = m + 1
     
    13401340                m = 0
    13411341                DO  n = 1, pdims(2)
    1342                    DO  j = 1, nny_pe( n-1 ) ! WARN: pcoord(j) should be used!!
     1342                   DO  j = 1, nny
    13431343                      ar(j,k,i,n) = work_triy(m,k)
    13441344                      m = m + 1
     
    13611361                m = 0
    13621362                DO  n = 1, pdims(2)
    1363                    DO  j = 1, nny_pe( n-1 ) ! WARN: pcoord(j) should be used!!
     1363                   DO  j = 1, nny
    13641364                      ar(j,k,i,n) = work_ffty(m)
    13651365                      m = m + 1
  • palm/trunk/SOURCE/pres.f90

    r779 r1003  
    44! Current revisions:
    55! -----------------
    6 !
     6! adjustment of array tend for cases with unequal subdomain sizes removed
    77!
    88! Former revisions:
     
    279279    ELSE
    280280       !$OMP PARALLEL DO SCHEDULE( STATIC )
    281        DO  i = nxl, nxra
    282           DO  j = nys, nyna
    283              DO  k = nzb+1, nzta
     281       DO  i = nxl, nxr
     282          DO  j = nys, nyn
     283             DO  k = nzb+1, nzt
    284284                d(k,j,i) = 0.0
    285285             ENDDO
     
    409409
    410410!
    411 !--    Enlarge the size of tend, used as a working array for the transpositions
    412        IF ( nxra > nxr  .OR.  nyna > nyn  .OR.  nza > nz )  THEN
    413           DEALLOCATE( tend )
    414           ALLOCATE( tend(1:nza,nys:nyna,nxl:nxra) )
    415        ENDIF
    416 
    417 !
    418411!--    Solve Poisson equation via FFT and solution of tridiagonal matrices
    419412       IF ( psolver == 'poisfft' )  THEN
     
    427420!--       are some optimization problems in poisfft
    428421          CALL poisfft_hybrid( d )
    429        ENDIF
    430 
    431 !
    432 !--    Resize tend to its normal size
    433        IF ( nxra > nxr  .OR.  nyna > nyn  .OR.  nza > nz )  THEN
    434           DEALLOCATE( tend )
    435           ALLOCATE( tend(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    436422       ENDIF
    437423
  • palm/trunk/SOURCE/read_var_list.f90

    r1002 r1003  
    44! Current revisions:
    55! ------------------
    6 !
     6! -grid_matching
    77!
    88! Former revisions:
     
    363363          CASE ( 'galilei_transformation' )
    364364             READ ( 13 )  galilei_transformation
    365           CASE ( 'grid_matching' )
    366              READ ( 13 )  grid_matching
    367365          CASE ( 'hom' )
    368366             READ ( 13 )  hom
  • palm/trunk/SOURCE/transpose.f90

    r684 r1003  
    44! Current revisions:
    55! -----------------
    6 !
     6! indices nxa, nya, etc. replaced by nx, ny, etc.
    77!
    88! Former revisions:
     
    5454    INTEGER ::  i, j, k, l, m, ys
    5555   
    56     REAL ::  f_in(0:nxa,nys_x:nyn_xa,nzb_x:nzt_xa),                     &
    57              f_inv(nys_x:nyn_xa,nzb_x:nzt_xa,0:nxa),                    &
    58              f_out(0:nya,nxl_y:nxr_ya,nzb_y:nzt_ya),                    &
     56    REAL ::  f_in(0:nx,nys_x:nyn_x,nzb_x:nzt_x),   &
     57             f_inv(nys_x:nyn_x,nzb_x:nzt_x,0:nx),  &
     58             f_out(0:ny,nxl_y:nxr_y,nzb_y:nzt_y),  &
    5959             work(nnx*nny*nnz)
    6060
     
    6666!$OMP  PARALLEL PRIVATE ( i, j, k )
    6767!$OMP  DO
    68     DO  i = 0, nxa
    69        DO  k = nzb_x, nzt_xa
    70           DO  j = nys_x, nyn_xa
     68    DO  i = 0, nx
     69       DO  k = nzb_x, nzt_x
     70          DO  j = nys_x, nyn_x
    7171             f_inv(j,k,i) = f_in(i,j,k)
    7272          ENDDO
     
    8989!$OMP  DO
    9090    DO  l = 0, pdims(2) - 1
    91        m  = l * ( nxr_ya - nxl_y + 1 ) * ( nzt_ya - nzb_y + 1 ) * &
    92                 ( nyn_xa - nys_x + 1 )
    93        ys = 0 + l * ( nyn_xa - nys_x + 1 )
    94        DO  i = nxl_y, nxr_ya
    95           DO  k = nzb_y, nzt_ya
    96              DO  j = ys, ys + nyn_xa - nys_x
     91       m  = l * ( nxr_y - nxl_y + 1 ) * ( nzt_y - nzb_y + 1 ) * &
     92                ( nyn_x - nys_x + 1 )
     93       ys = 0 + l * ( nyn_x - nys_x + 1 )
     94       DO  i = nxl_y, nxr_y
     95          DO  k = nzb_y, nzt_y
     96             DO  j = ys, ys + nyn_x - nys_x
    9797                m = m + 1
    9898                f_out(j,i,k) = work(m)
     
    128128    INTEGER ::  i, j, k, l, m, xs
    129129   
    130     REAL ::  f_in(0:nxa,nys_x:nyn_xa,nzb_x:nzt_xa),             &
    131              f_inv(nys:nyna,nxl:nxra,1:nza),                    &
    132              f_out(1:nza,nys:nyna,nxl:nxra),                    &
     130    REAL ::  f_in(0:nx,nys_x:nyn_x,nzb_x:nzt_x),  &
     131             f_inv(nys:nyn,nxl:nxr,1:nz),         &
     132             f_out(1:nz,nys:nyn,nxl:nxr),         &
    133133             work(nnx*nny*nnz)
    134134
     
    144144!$OMP  DO
    145145       DO  l = 0, pdims(1) - 1
    146           m  = l * ( nzt_xa - nzb_x + 1 ) * nnx * ( nyn_xa - nys_x + 1 )
     146          m  = l * ( nzt_x - nzb_x + 1 ) * nnx * ( nyn_x - nys_x + 1 )
    147147          xs = 0 + l * nnx
    148           DO  k = nzb_x, nzt_xa
     148          DO  k = nzb_x, nzt_x
    149149             DO  i = xs, xs + nnx - 1
    150                 DO  j = nys_x, nyn_xa
     150                DO  j = nys_x, nyn_x
    151151                   m = m + 1
    152152                   work(m) = f_in(i,j,k)
     
    170170!$OMP  PARALLEL PRIVATE ( i, j, k )
    171171!$OMP  DO
    172        DO  k = 1, nza
    173           DO  i = nxl, nxra
    174              DO  j = nys, nyna
     172       DO  k = 1, nz
     173          DO  i = nxl, nxr
     174             DO  j = nys, nyn
    175175                f_out(k,j,i) = f_inv(j,i,k)
    176176             ENDDO
     
    183183!$OMP  PARALLEL PRIVATE ( i, j, k )
    184184!$OMP  DO
    185        DO  i = nxl, nxra
    186           DO  j = nys, nyna
    187              DO  k = 1, nza
     185       DO  i = nxl, nxr
     186          DO  j = nys, nyn
     187             DO  k = 1, nz
    188188                f_inv(j,i,k) = f_in(i,j,k)
    189189             ENDDO
     
    194194!$OMP  PARALLEL PRIVATE ( i, j, k )
    195195!$OMP  DO
    196        DO  k = 1, nza
    197           DO  i = nxl, nxra
    198              DO  j = nys, nyna
     196       DO  k = 1, nz
     197          DO  i = nxl, nxr
     198             DO  j = nys, nyn
    199199                f_out(k,j,i) = f_inv(j,i,k)
    200200             ENDDO
     
    231231    INTEGER ::  i, j, k, l, m, ys
    232232   
    233     REAL ::  f_in(0:nya,nxl_y:nxr_ya,nzb_y:nzt_ya),                     &
    234              f_inv(nys_x:nyn_xa,nzb_x:nzt_xa,0:nxa),                    &
    235              f_out(0:nxa,nys_x:nyn_xa,nzb_x:nzt_xa),                    &
     233    REAL ::  f_in(0:ny,nxl_y:nxr_y,nzb_y:nzt_y),  &
     234             f_inv(nys_x:nyn_x,nzb_x:nzt_x,0:nx), &
     235             f_out(0:nx,nys_x:nyn_x,nzb_x:nzt_x), &
    236236             work(nnx*nny*nnz)
    237237
     
    243243!$OMP  DO
    244244    DO  l = 0, pdims(2) - 1
    245        m  = l * ( nxr_ya - nxl_y + 1 ) * ( nzt_ya - nzb_y + 1 ) * &
    246                 ( nyn_xa - nys_x + 1 )
    247        ys = 0 + l * ( nyn_xa - nys_x + 1 )
    248        DO  i = nxl_y, nxr_ya
    249           DO  k = nzb_y, nzt_ya
    250              DO  j = ys, ys + nyn_xa - nys_x
     245       m  = l * ( nxr_y - nxl_y + 1 ) * ( nzt_y - nzb_y + 1 ) * &
     246                ( nyn_x - nys_x + 1 )
     247       ys = 0 + l * ( nyn_x - nys_x + 1 )
     248       DO  i = nxl_y, nxr_y
     249          DO  k = nzb_y, nzt_y
     250             DO  j = ys, ys + nyn_x - nys_x
    251251                m = m + 1
    252252                work(m) = f_in(j,i,k)
     
    270270!$OMP  PARALLEL PRIVATE ( i, j, k )
    271271!$OMP  DO
    272     DO  i = 0, nxa
    273        DO  k = nzb_x, nzt_xa
    274           DO  j = nys_x, nyn_xa
     272    DO  i = 0, nx
     273       DO  k = nzb_x, nzt_x
     274          DO  j = nys_x, nyn_x
    275275             f_out(i,j,k) = f_inv(j,k,i)
    276276          ENDDO
     
    306306    INTEGER ::  i, j, k, l, m, recvcount_yx, sendcount_yx, xs
    307307
    308     REAL ::  f_in(1:nza,nys:nyna,nxl:nxra), f_inv(nxl:nxra,1:nza,nys:nyna), &
    309              f_out(0:nxa,nys_x:nyn_xa,nzb_x:nzt_xa),                        &
     308    REAL ::  f_in(1:nz,nys:nyn,nxl:nxr), f_inv(nxl:nxr,1:nz,nys:nyn), &
     309             f_out(0:nx,nys_x:nyn_x,nzb_x:nzt_x),                     &
    310310             work(nnx*nny*nnz)
    311311
     
    315315!-- Rearrange indices of input array in order to make data to be send
    316316!-- by MPI contiguous
    317     DO  k = 1, nza
    318        DO  j = nys, nyna
    319           DO  i = nxl, nxra
     317    DO  k = 1, nz
     318       DO  j = nys, nyn
     319          DO  i = nxl, nxr
    320320             f_inv(i,k,j) = f_in(k,j,i)
    321321          ENDDO
     
    337337    DO  l = 0, pdims(1) - 1
    338338       xs = 0 + l * nnx
    339        DO  j = nys_x, nyn_xa
    340           DO  k = 1, nza
     339       DO  j = nys_x, nyn_x
     340          DO  k = 1, nz
    341341             DO  i = xs, xs + nnx - 1
    342342                m = m + 1
     
    372372    INTEGER ::  i, j, k, l, m, zs
    373373   
    374     REAL ::  f_in(0:nya,nxl_y:nxr_ya,nzb_y:nzt_ya),                     &
    375              f_inv(nxl_y:nxr_ya,nzb_y:nzt_ya,0:nya),                    &
    376              f_out(nxl_z:nxr_za,nys_z:nyn_za,1:nza),                    &
     374    REAL ::  f_in(0:ny,nxl_y:nxr_y,nzb_y:nzt_y),  &
     375             f_inv(nxl_y:nxr_y,nzb_y:nzt_y,0:ny), &
     376             f_out(nxl_z:nxr_z,nys_z:nyn_z,1:nz), &
    377377             work(nnx*nny*nnz)
    378378
     
    384384!$OMP  PARALLEL PRIVATE ( i, j, k )
    385385!$OMP  DO
    386     DO  j = 0, nya
    387        DO  k = nzb_y, nzt_ya
    388           DO  i = nxl_y, nxr_ya
     386    DO  j = 0, ny
     387       DO  k = nzb_y, nzt_y
     388          DO  i = nxl_y, nxr_y
    389389             f_inv(i,k,j) = f_in(j,i,k)
    390390          ENDDO
     
    401401!$OMP  PARALLEL PRIVATE ( i, j, k )
    402402!$OMP  DO
    403        DO  j = 0, nya
    404           DO  k = nzb_y, nzt_ya
    405              DO  i = nxl_y, nxr_ya
     403       DO  j = 0, ny
     404          DO  k = nzb_y, nzt_y
     405             DO  i = nxl_y, nxr_y
    406406                f_out(i,j,k) = f_inv(i,k,j)
    407407             ENDDO
     
    426426!$OMP  DO
    427427    DO  l = 0, pdims(1) - 1
    428        m  = l * ( nyn_za - nys_z + 1 ) * ( nzt_ya - nzb_y + 1 ) * &
    429                 ( nxr_za - nxl_z + 1 )
    430        zs = 1 + l * ( nzt_ya - nzb_y + 1 )
    431        DO  j = nys_z, nyn_za
    432           DO  k = zs, zs + nzt_ya - nzb_y
    433              DO  i = nxl_z, nxr_za
     428       m  = l * ( nyn_z - nys_z + 1 ) * ( nzt_y - nzb_y + 1 ) * &
     429                ( nxr_z - nxl_z + 1 )
     430       zs = 1 + l * ( nzt_y - nzb_y + 1 )
     431       DO  j = nys_z, nyn_z
     432          DO  k = zs, zs + nzt_y - nzb_y
     433             DO  i = nxl_z, nxr_z
    434434                m = m + 1
    435435                f_out(i,j,k) = work(m)
     
    465465    INTEGER ::  i, j, k, l, m, xs
    466466   
    467     REAL ::  f_in(1:nza,nys:nyna,nxl:nxra), f_inv(nys:nyna,nxl:nxra,1:nza), &
    468              f_out(0:nxa,nys_x:nyn_xa,nzb_x:nzt_xa),                        &
     467    REAL ::  f_in(1:nz,nys:nyn,nxl:nxr), f_inv(nys:nyn,nxl:nxr,1:nz), &
     468             f_out(0:nx,nys_x:nyn_x,nzb_x:nzt_x),                     &
    469469             work(nnx*nny*nnz)
    470470
     
    476476!$OMP  PARALLEL PRIVATE ( i, j, k )
    477477!$OMP  DO
    478     DO  k = 1,nza
    479        DO  i = nxl, nxra
    480           DO  j = nys, nyna
     478    DO  k = 1,nz
     479       DO  i = nxl, nxr
     480          DO  j = nys, nyn
    481481             f_inv(j,i,k) = f_in(k,j,i)
    482482          ENDDO
     
    493493!$OMP  PARALLEL PRIVATE ( i, j, k )
    494494!$OMP  DO
    495        DO  k = 1, nza
    496           DO  i = nxl, nxra
    497              DO  j = nys, nyna
     495       DO  k = 1, nz
     496          DO  i = nxl, nxr
     497             DO  j = nys, nyn
    498498                f_out(i,j,k) = f_inv(j,i,k)
    499499             ENDDO
     
    518518!$OMP  DO
    519519    DO  l = 0, pdims(1) - 1
    520        m  = l * ( nzt_xa - nzb_x + 1 ) * nnx * ( nyn_xa - nys_x + 1 )
     520       m  = l * ( nzt_x - nzb_x + 1 ) * nnx * ( nyn_x - nys_x + 1 )
    521521       xs = 0 + l * nnx
    522        DO  k = nzb_x, nzt_xa
     522       DO  k = nzb_x, nzt_x
    523523          DO  i = xs, xs + nnx - 1
    524              DO  j = nys_x, nyn_xa
     524             DO  j = nys_x, nyn_x
    525525                m = m + 1
    526526                f_out(i,j,k) = work(m)
     
    556556    INTEGER ::  i, j, k, l, m, zs
    557557   
    558     REAL ::  f_in(nxl_z:nxr_za,nys_z:nyn_za,1:nza),                     &
    559              f_inv(nxl_y:nxr_ya,nzb_y:nzt_ya,0:nya),                    &
    560              f_out(0:nya,nxl_y:nxr_ya,nzb_y:nzt_ya),                    &
     558    REAL ::  f_in(nxl_z:nxr_z,nys_z:nyn_z,1:nz),  &
     559             f_inv(nxl_y:nxr_y,nzb_y:nzt_y,0:ny), &
     560             f_out(0:ny,nxl_y:nxr_y,nzb_y:nzt_y), &
    561561             work(nnx*nny*nnz)
    562562
     
    572572!$OMP  DO
    573573       DO  l = 0, pdims(1) - 1
    574           m  = l * ( nyn_za - nys_z + 1 ) * ( nzt_ya - nzb_y + 1 ) * &
    575                    ( nxr_za - nxl_z + 1 )
    576           zs = 1 + l * ( nzt_ya - nzb_y + 1 )
    577           DO  j = nys_z, nyn_za
    578              DO  k = zs, zs + nzt_ya - nzb_y
    579                 DO  i = nxl_z, nxr_za
     574          m  = l * ( nyn_z - nys_z + 1 ) * ( nzt_y - nzb_y + 1 ) * &
     575                   ( nxr_z - nxl_z + 1 )
     576          zs = 1 + l * ( nzt_y - nzb_y + 1 )
     577          DO  j = nys_z, nyn_z
     578             DO  k = zs, zs + nzt_y - nzb_y
     579                DO  i = nxl_z, nxr_z
    580580                   m = m + 1
    581581                   work(m) = f_in(i,j,k)
     
    599599!$OMP  PARALLEL PRIVATE ( i, j, k )
    600600!$OMP  DO
    601        DO  j = 0, nya
    602           DO  k = nzb_y, nzt_ya
    603              DO  i = nxl_y, nxr_ya
     601       DO  j = 0, ny
     602          DO  k = nzb_y, nzt_y
     603             DO  i = nxl_y, nxr_y
    604604                f_out(j,i,k) = f_inv(i,k,j)
    605605             ENDDO
     
    612612!$OMP  PARALLEL PRIVATE ( i, j, k )
    613613!$OMP  DO
    614        DO  k = nzb_y, nzt_ya
    615           DO  j = 0, nya
    616              DO  i = nxl_y, nxr_ya
     614       DO  k = nzb_y, nzt_y
     615          DO  j = 0, ny
     616             DO  i = nxl_y, nxr_y
    617617                f_inv(i,k,j) = f_in(i,j,k)
    618618             ENDDO
     
    624624!$OMP  PARALLEL PRIVATE ( i, j, k )
    625625!$OMP  DO
    626        DO  k = nzb_y, nzt_ya
    627           DO  i = nxl_y, nxr_ya
    628              DO  j = 0, nya
     626       DO  k = nzb_y, nzt_y
     627          DO  i = nxl_y, nxr_y
     628             DO  j = 0, ny
    629629                f_out(j,i,k) = f_inv(i,k,j)
    630630             ENDDO
     
    662662    INTEGER ::  i, j, k, l, m, ys
    663663   
    664     REAL ::  f_in(1:nza,nys:nyna,nxl:nxra), f_inv(nys:nyna,nxl:nxra,1:nza), &
    665              f_out(0:nya,nxl_yd:nxr_yda,nzb_yd:nzt_yda),                    &
     664    REAL ::  f_in(1:nz,nys:nyn,nxl:nxr), f_inv(nys:nyn,nxl:nxr,1:nz), &
     665             f_out(0:ny,nxl_yd:nxr_yd,nzb_yd:nzt_yd),                 &
    666666             work(nnx*nny*nnz)
    667667
     
    671671!-- Rearrange indices of input array in order to make data to be send
    672672!-- by MPI contiguous
    673     DO  i = nxl, nxra
    674        DO  j = nys, nyna
    675           DO  k = 1, nza
     673    DO  i = nxl, nxr
     674       DO  j = nys, nyn
     675          DO  k = 1, nz
    676676             f_inv(j,i,k) = f_in(k,j,i)
    677677          ENDDO
     
    685685!-- of the data is necessary and no transposition has to be done.
    686686    IF ( pdims(2) == 1 )  THEN
    687        DO  k = 1, nza
    688           DO  i = nxl, nxra
    689              DO  j = nys, nyna
     687       DO  k = 1, nz
     688          DO  i = nxl, nxr
     689             DO  j = nys, nyn
    690690                f_out(j,i,k) = f_inv(j,i,k)
    691691             ENDDO
     
    709709    DO  l = 0, pdims(2) - 1
    710710       ys = 0 + l * nny
    711        DO  k = nzb_yd, nzt_yda
    712           DO  i = nxl_yd, nxr_yda
     711       DO  k = nzb_yd, nzt_yd
     712          DO  i = nxl_yd, nxr_yd
    713713             DO  j = ys, ys + nny - 1
    714714                m = m + 1
  • palm/trunk/SOURCE/write_var_list.f90

    r1002 r1003  
    44! Current revisions:
    55! -----------------
    6 !
     6! -grid_matching
    77!
    88! Former revisions:
     
    285285    WRITE ( 14 )  'galilei_transformation        '
    286286    WRITE ( 14 )  galilei_transformation
    287     WRITE ( 14 )  'grid_matching                 '
    288     WRITE ( 14 )  grid_matching
    289287    WRITE ( 14 )  'hom                           '
    290288    WRITE ( 14 )  hom
Note: See TracChangeset for help on using the changeset viewer.