Ignore:
Timestamp:
May 30, 2017 5:47:52 PM (4 years ago)
Author:
suehring
Message:

Adjustments according new topography and surface-modelling concept implemented

File:
1 edited

Legend:

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

    r2101 r2232  
    2626! $Id$
    2727!
    28 ! 2084 2016-12-09 15:59:42Z knoop
    29 ! Bugfix: missing rho_air_mg even/odd sorting implemented
    30 !
    3128! 2073 2016-11-30 14:34:05Z raasch
    3229! change of openmp directives in restrict
     
    111108    REAL(wp), DIMENSION(:,:), SAVE, ALLOCATABLE ::  f1_mg_b, f2_mg_b, f3_mg_b  !< blocked version of f1_mg ...
    112109
    113     REAL(wp), DIMENSION(:,:), SAVE, ALLOCATABLE ::  rho_air_mg_b               !< blocked version of rho_air_mg
    114 
    115110    INTERFACE poismg
    116111       MODULE PROCEDURE poismg
     
    320315                kp1 = k-ind_even_odd
    321316                r(k,j,i) = f_mg(k,j,i)                                         &
    322                       - rho_air_mg_b(k,l) * ddx2_mg(l) *                         &
     317                      - rho_air_mg(k,l) * ddx2_mg(l) *                         &
    323318                      ( p_mg(k,j,i+1) +  p_mg(k,j,i-1)  )                      &
    324                       - rho_air_mg_b(k,l) * ddy2_mg(l) *                         &
     319                      - rho_air_mg(k,l) * ddy2_mg(l) *                         &
    325320                      ( p_mg(k,j+1,i) + p_mg(k,j-1,i)  )                       &
    326321                      - f2_mg_b(k,l) * p_mg(kp1,j,i)                           &
     
    333328                kp1 = k+ind_even_odd+1
    334329                r(k,j,i) = f_mg(k,j,i)                                         &
    335                       - rho_air_mg_b(k,l) * ddx2_mg(l) *                         &
     330                      - rho_air_mg(k,l) * ddx2_mg(l) *                         &
    336331                      ( p_mg(k,j,i+1) +  p_mg(k,j,i-1)  )                      &
    337                       - rho_air_mg_b(k,l) * ddy2_mg(l) *                         &
     332                      - rho_air_mg(k,l) * ddy2_mg(l) *                         &
    338333                      ( p_mg(k,j+1,i) + p_mg(k,j-1,i)  )                       &
    339334                      - f2_mg_b(k,l) * p_mg(kp1,j,i)                           &
     
    766761                         kp1 = k-ind_even_odd
    767762                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    768                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     763                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    769764                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    770                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     765                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    771766                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    772767                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    785780                         kp1 = k-ind_even_odd
    786781                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    787                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     782                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    788783                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    789                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     784                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    790785                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    791786                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    804799                         kp1 = k+ind_even_odd+1
    805800                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    806                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     801                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    807802                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    808                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     803                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    809804                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    810805                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    823818                         kp1 = k+ind_even_odd+1
    824819                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    825                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     820                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    826821                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    827                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     822                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    828823                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    829824                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    854849                         j   = jj
    855850                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    856                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     851                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    857852                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    858                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     853                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    859854                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    860855                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    863858                         j = jj+2
    864859                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    865                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     860                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    866861                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    867                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     862                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    868863                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    869864                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    880875                         j   = jj
    881876                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    882                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     877                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    883878                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    884                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     879                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    885880                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    886881                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    889884                         j = jj+2
    890885                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    891                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     886                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    892887                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    893                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     888                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    894889                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    895890                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    906901                         j   = jj
    907902                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    908                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     903                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    909904                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    910                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     905                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    911906                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    912907                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    915910                         j = jj+2
    916911                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    917                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     912                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    918913                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    919                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     914                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    920915                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    921916                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    932927                         j   = jj
    933928                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    934                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     929                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    935930                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    936                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     931                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    937932                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    938933                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    941936                         j = jj+2
    942937                         p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
    943                                  rho_air_mg_b(k,l) * ddx2_mg(l) *                &
     938                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
    944939                               ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
    945                                + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
     940                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
    946941                               ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
    947942                               + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
     
    17581753
    17591754       USE arrays_3d,                                                          &
    1760            ONLY:  f1_mg, f2_mg, f3_mg, rho_air_mg
     1755           ONLY:  f1_mg, f2_mg, f3_mg
    17611756
    17621757       USE control_parameters,                                                 &
     
    17841779       ALLOCATE( f1_mg_b(nzb:nzt+1,maximum_grid_level),                        &
    17851780                 f2_mg_b(nzb:nzt+1,maximum_grid_level),                        &
    1786                  f3_mg_b(nzb:nzt+1,maximum_grid_level),                        &
    1787                  rho_air_mg_b(nzb:nzt+1,maximum_grid_level) )
     1781                 f3_mg_b(nzb:nzt+1,maximum_grid_level) )
    17881782
    17891783!
     
    18061800                                          f3_mg_b(nzb:nzt_mg(grid_level)+1,l), &
    18071801                                          l )
    1808           CALL sort_k_to_even_odd_blocks( rho_air_mg(nzb+1:nzt_mg(grid_level),l),   &
    1809                                           rho_air_mg_b(nzb:nzt_mg(grid_level)+1,l), &
    1810                                           l )
    18111802       ENDDO
    18121803
Note: See TracChangeset for help on using the changeset viewer.