Ignore:
Timestamp:
Apr 8, 2014 3:21:23 PM (10 years ago)
Author:
heinze
Message:

REAL constants provided with KIND-attribute

File:
1 edited

Legend:

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

    r1323 r1353  
    2323! Current revisions:
    2424! -----------------
    25 !
     25! REAL constants provided with KIND-attribute
    2626!
    2727! Former revisions:
     
    166166    ENDIF
    167167
    168     p3 = 0.0
     168    p3 = 0.0_wp
    169169 
    170170!
     
    185185    IF ( mg_cycles == -1 )  THEN
    186186       maximum_mgcycles = 0
    187        residual_norm    = 1.0 
     187       residual_norm    = 1.0_wp
    188188    ELSE
    189189       maximum_mgcycles = mg_cycles
    190        residual_norm    = 0.0
     190       residual_norm    = 0.0_wp
    191191    ENDIF
    192192
     
    334334!
    335335!--          Residual within topography should be zero
    336              r(k,j,i) = r(k,j,i) * ( 1.0 - IBITS( flags(k,j,i), 6, 1 ) )
     336             r(k,j,i) = r(k,j,i) * ( 1.0_wp - IBITS( flags(k,j,i), 6, 1 ) )
    337337          ENDDO
    338338       ENDDO
     
    361361       r(nzb,:,: ) = r(nzb+1,:,:)
    362362    ELSE
    363        r(nzb,:,: ) = 0.0
     363       r(nzb,:,: ) = 0.0_wp
    364364    ENDIF
    365365
     
    367367       r(nzt_mg(l)+1,:,: ) = r(nzt_mg(l),:,:)
    368368    ELSE
    369        r(nzt_mg(l)+1,:,: ) = 0.0
     369       r(nzt_mg(l)+1,:,: ) = 0.0_wp
    370370    ENDIF
    371371
     
    508508                                        ( r(k,j,i) - r(k-1,j+1,i+1) )
    509509
    510              f_mg(kc,jc,ic) = 1.0 / 64.0_wp * (                         &
    511                               8.0 * r(k,j,i)                            &
    512                             + 4.0 * ( rkjim   + rkjip   +               &
    513                                       rkjpi   + rkjmi   )               &
    514                             + 2.0 * ( rkjmim  + rkjpim  +               &
    515                                       rkjmip  + rkjpip  )               &
    516                             + 4.0 * rkmji                               &
    517                             + 2.0 * ( rkmjim  + rkmjim  +               &
    518                                       rkmjpi  + rkmjmi  )               &
    519                             +       ( rkmjmim + rkmjpim +               &
    520                                       rkmjmip + rkmjpip )               &
    521                             + 4.0 * r(k+1,j,i)                          &
    522                             + 2.0 * ( r(k+1,j,i-1)   + r(k+1,j,i+1)   + &
    523                                       r(k+1,j+1,i)   + r(k+1,j-1,i)   ) &
    524                             +       ( r(k+1,j-1,i-1) + r(k+1,j+1,i-1) + &
    525                                       r(k+1,j-1,i+1) + r(k+1,j+1,i+1) ) &
    526                                               )
    527 
    528 !             f_mg(kc,jc,ic) = 1.0 / 64.0_wp * (                         &
    529 !                              8.0 * r(k,j,i)                            &
    530 !                            + 4.0 * ( r(k,j,i-1)     + r(k,j,i+1)     + &
    531 !                                      r(k,j+1,i)     + r(k,j-1,i)     ) &
    532 !                            + 2.0 * ( r(k,j-1,i-1)   + r(k,j+1,i-1)   + &
    533 !                                      r(k,j-1,i+1)   + r(k,j+1,i+1)   ) &
    534 !                            + 4.0 * r(k-1,j,i)                          &
    535 !                            + 2.0 * ( r(k-1,j,i-1)   + r(k-1,j,i+1)   + &
    536 !                                      r(k-1,j+1,i)   + r(k-1,j-1,i)   ) &
    537 !                            +       ( r(k-1,j-1,i-1) + r(k-1,j+1,i-1) + &
    538 !                                      r(k-1,j-1,i+1) + r(k-1,j+1,i+1) ) &
    539 !                            + 4.0 * r(k+1,j,i)                          &
    540 !                            + 2.0 * ( r(k+1,j,i-1)   + r(k+1,j,i+1)   + &
    541 !                                      r(k+1,j+1,i)   + r(k+1,j-1,i)   ) &
    542 !                            +       ( r(k+1,j-1,i-1) + r(k+1,j+1,i-1) + &
    543 !                                      r(k+1,j-1,i+1) + r(k+1,j+1,i+1) ) &
    544 !                                              )
     510             f_mg(kc,jc,ic) = 1.0_wp / 64.0_wp * (                         &
     511                              8.0_wp * r(k,j,i)                            &
     512                            + 4.0_wp * ( rkjim   + rkjip   +               &
     513                                         rkjpi   + rkjmi   )               &
     514                            + 2.0_wp * ( rkjmim  + rkjpim  +               &
     515                                         rkjmip  + rkjpip  )               &
     516                            + 4.0_wp * rkmji                               &
     517                            + 2.0_wp * ( rkmjim  + rkmjim  +               &
     518                                         rkmjpi  + rkmjmi  )               &
     519                            +          ( rkmjmim + rkmjpim +               &
     520                                         rkmjmip + rkmjpip )               &
     521                            + 4.0_wp * r(k+1,j,i)                          &
     522                            + 2.0_wp * ( r(k+1,j,i-1)   + r(k+1,j,i+1)   + &
     523                                         r(k+1,j+1,i)   + r(k+1,j-1,i)   ) &
     524                            +          ( r(k+1,j-1,i-1) + r(k+1,j+1,i-1) + &
     525                                         r(k+1,j-1,i+1) + r(k+1,j+1,i+1) ) &
     526                                                 )
     527
     528!             f_mg(kc,jc,ic) = 1.0_wp / 64.0_wp * (                         &
     529!                              8.0_wp * r(k,j,i)                            &
     530!                            + 4.0_wp * ( r(k,j,i-1)     + r(k,j,i+1)     + &
     531!                                         r(k,j+1,i)     + r(k,j-1,i)     ) &
     532!                            + 2.0_wp * ( r(k,j-1,i-1)   + r(k,j+1,i-1)   + &
     533!                                         r(k,j-1,i+1)   + r(k,j+1,i+1)   ) &
     534!                            + 4.0_wp * r(k-1,j,i)                          &
     535!                            + 2.0_wp * ( r(k-1,j,i-1)   + r(k-1,j,i+1)   + &
     536!                                         r(k-1,j+1,i)   + r(k-1,j-1,i)   ) &
     537!                            +          ( r(k-1,j-1,i-1) + r(k-1,j+1,i-1) + &
     538!                                         r(k-1,j-1,i+1) + r(k-1,j+1,i+1) ) &
     539!                            + 4.0_wp * r(k+1,j,i)                          &
     540!                            + 2.0_wp * ( r(k+1,j,i-1)   + r(k+1,j,i+1)   + &
     541!                                         r(k+1,j+1,i)   + r(k+1,j-1,i)   ) &
     542!                            +          ( r(k+1,j-1,i-1) + r(k+1,j+1,i-1) + &
     543!                                         r(k+1,j-1,i+1) + r(k+1,j+1,i+1) ) &
     544!                                                )
    545545          ENDDO
    546546       ENDDO
     
    569569       f_mg(nzb,:,: ) = f_mg(nzb+1,:,:)
    570570    ELSE
    571        f_mg(nzb,:,: ) = 0.0
     571       f_mg(nzb,:,: ) = 0.0_wp
    572572    ENDIF
    573573
     
    575575       f_mg(nzt_mg(l)+1,:,: ) = f_mg(nzt_mg(l),:,:)
    576576    ELSE
    577        f_mg(nzt_mg(l)+1,:,: ) = 0.0
     577       f_mg(nzt_mg(l)+1,:,: ) = 0.0_wp
    578578    ENDIF
    579579
     
    634634!
    635635!--          Points between two coarse-grid points
    636              temp(2*k-1,2*j,2*i+1) = 0.5 * ( p(k,j,i) + p(k,j,i+1) )
    637              temp(2*k-1,2*j+1,2*i) = 0.5 * ( p(k,j,i) + p(k,j+1,i) )
    638              temp(2*k,2*j,2*i)     = 0.5 * ( p(k,j,i) + p(k+1,j,i) )
     636             temp(2*k-1,2*j,2*i+1) = 0.5_wp * ( p(k,j,i) + p(k,j,i+1) )
     637             temp(2*k-1,2*j+1,2*i) = 0.5_wp * ( p(k,j,i) + p(k,j+1,i) )
     638             temp(2*k,2*j,2*i)     = 0.5_wp * ( p(k,j,i) + p(k+1,j,i) )
    639639!
    640640!--          Points in the center of the planes stretched by four points
    641641!--          of the coarse grid cube
    642              temp(2*k-1,2*j+1,2*i+1) = 0.25 * ( p(k,j,i)   + p(k,j,i+1) + &
    643                                                 p(k,j+1,i) + p(k,j+1,i+1) )
    644              temp(2*k,2*j,2*i+1)     = 0.25 * ( p(k,j,i)   + p(k,j,i+1) + &
    645                                                 p(k+1,j,i) + p(k+1,j,i+1) )
    646              temp(2*k,2*j+1,2*i)     = 0.25 * ( p(k,j,i)   + p(k,j+1,i) + &
    647                                                 p(k+1,j,i) + p(k+1,j+1,i) )
     642             temp(2*k-1,2*j+1,2*i+1) = 0.25_wp * ( p(k,j,i)   + p(k,j,i+1) + &
     643                                                   p(k,j+1,i) + p(k,j+1,i+1) )
     644             temp(2*k,2*j,2*i+1)     = 0.25_wp * ( p(k,j,i)   + p(k,j,i+1) + &
     645                                                   p(k+1,j,i) + p(k+1,j,i+1) )
     646             temp(2*k,2*j+1,2*i)     = 0.25_wp * ( p(k,j,i)   + p(k,j+1,i) + &
     647                                                   p(k+1,j,i) + p(k+1,j+1,i) )
    648648!
    649649!--          Points in the middle of coarse grid cube
    650              temp(2*k,2*j+1,2*i+1) = 0.125 * ( p(k,j,i)     + p(k,j,i+1)   + &
    651                                                p(k,j+1,i)   + p(k,j+1,i+1) + &
    652                                                p(k+1,j,i)   + p(k+1,j,i+1) + &
    653                                                p(k+1,j+1,i) + p(k+1,j+1,i+1) )
     650             temp(2*k,2*j+1,2*i+1) = 0.125_wp * ( p(k,j,i)     + p(k,j,i+1)   + &
     651                                                  p(k,j+1,i)   + p(k,j+1,i+1) + &
     652                                                  p(k+1,j,i)   + p(k+1,j,i+1) + &
     653                                                  p(k+1,j+1,i) + p(k+1,j+1,i+1) )
    654654          ENDDO
    655655       ENDDO
     
    676676       temp(nzb,:,: ) = temp(nzb+1,:,:)
    677677    ELSE
    678        temp(nzb,:,: ) = 0.0
     678       temp(nzb,:,: ) = 0.0_wp
    679679    ENDIF
    680680
     
    682682       temp(nzt_mg(l)+1,:,: ) = temp(nzt_mg(l),:,:)
    683683    ELSE
    684        temp(nzt_mg(l)+1,:,: ) = 0.0
     684       temp(nzt_mg(l)+1,:,: ) = 0.0_wp
    685685    ENDIF
    686686
     
    791791                DO  j = nys_mg(l) + 2 - color, nyn_mg(l), 2
    792792                   DO  k = nzb+1, nzt_mg(l), 2
    793 !                      p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     793!                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    794794!                                ddx2_mg(l) * ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) &
    795795!                              + ddy2_mg(l) * ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) &
     
    798798!                                                       )
    799799
    800                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     800                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    801801                             ddx2_mg(l) *                                      &
    802802                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    821821                DO  j = nys_mg(l) + (color-1), nyn_mg(l), 2
    822822                   DO  k = nzb+1, nzt_mg(l), 2
    823                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     823                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    824824                             ddx2_mg(l) *                                      &
    825825                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    844844                DO  j = nys_mg(l) + (color-1), nyn_mg(l), 2
    845845                   DO  k = nzb+2, nzt_mg(l), 2
    846                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     846                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    847847                             ddx2_mg(l) *                                      &
    848848                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    867867                DO  j = nys_mg(l) + 2 - color, nyn_mg(l), 2
    868868                   DO  k = nzb+2, nzt_mg(l), 2
    869                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     869                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    870870                             ddx2_mg(l) *                                      &
    871871                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    899899                   DO  k = nzb+1, nzt_mg(l), 2
    900900                      j = jj
    901                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     901                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    902902                             ddx2_mg(l) *                                      &
    903903                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    916916                           - f_mg(k,j,i)               )
    917917                      j = jj+2
    918                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     918                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    919919                             ddx2_mg(l) *                                      &
    920920                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    938938                   DO  k = nzb+1, nzt_mg(l), 2
    939939                      j =jj
    940                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     940                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    941941                             ddx2_mg(l) *                                      &
    942942                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    955955                           - f_mg(k,j,i)               )
    956956                      j = jj+2
    957                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     957                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    958958                             ddx2_mg(l) *                                      &
    959959                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    977977                   DO  k = nzb+2, nzt_mg(l), 2
    978978                      j =jj
    979                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     979                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    980980                             ddx2_mg(l) *                                      &
    981981                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    994994                           - f_mg(k,j,i)               )
    995995                      j = jj+2
    996                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     996                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    997997                             ddx2_mg(l) *                                      &
    998998                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    10161016                   DO  k = nzb+2, nzt_mg(l), 2
    10171017                      j =jj
    1018                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     1018                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    10191019                             ddx2_mg(l) *                                      &
    10201020                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    10331033                           - f_mg(k,j,i)               )
    10341034                      j = jj+2
    1035                       p_mg(k,j,i) = 1.0 / f1_mg(k,l) * (                       &
     1035                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    10361036                             ddx2_mg(l) *                                      &
    10371037                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
     
    10841084             p_mg(nzb,:,: ) = p_mg(nzb+1,:,:)
    10851085          ELSE
    1086              p_mg(nzb,:,: ) = 0.0
     1086             p_mg(nzb,:,: ) = 0.0_wp
    10871087          ENDIF
    10881088
     
    10901090             p_mg(nzt_mg(l)+1,:,: ) = p_mg(nzt_mg(l),:,:)
    10911091          ELSE
    1092              p_mg(nzt_mg(l)+1,:,: ) = 0.0
     1092             p_mg(nzt_mg(l)+1,:,: ) = 0.0_wp
    10931093          ENDIF
    10941094
     
    11061106!
    11071107!--          First, set pressure inside topography to zero
    1108              p_mg(k,j,i) = p_mg(k,j,i) * ( 1.0 - IBITS( flags(k,j,i), 6, 1 ) )
     1108             p_mg(k,j,i) = p_mg(k,j,i) * ( 1.0_wp - IBITS( flags(k,j,i), 6, 1 ) )
    11091109!
    11101110!--          Second, determine if the gridpoint inside topography is adjacent
     
    11191119                          wall_top
    11201120
    1121              IF ( wall_total > 0.0 )  THEN
    1122                 p_mg(k,j,i) = 1.0 / wall_total *                 &
    1123                                   ( wall_left  * p_mg(k,j,i-1) + &
    1124                                     wall_right * p_mg(k,j,i+1) + &
    1125                                     wall_south * p_mg(k,j-1,i) + &
    1126                                     wall_north * p_mg(k,j+1,i) + &
    1127                                     wall_top   * p_mg(k+1,j,i) )
     1121             IF ( wall_total > 0.0_wp )  THEN
     1122                p_mg(k,j,i) = 1.0_wp / wall_total *                 &
     1123                                     ( wall_left  * p_mg(k,j,i-1) + &
     1124                                       wall_right * p_mg(k,j,i+1) + &
     1125                                       wall_south * p_mg(k,j-1,i) + &
     1126                                       wall_north * p_mg(k,j+1,i) + &
     1127                                       wall_top   * p_mg(k+1,j,i) )
    11281128             ENDIF
    11291129          ENDDO
     
    11821182    CALL cpu_log( log_point_s(34), 'mg_gather', 'start' )
    11831183
    1184     f2_l = 0.0
     1184    f2_l = 0.0_wp
    11851185
    11861186!
     
    14561456       ENDIF
    14571457
    1458        p2 = 0.0
     1458       p2 = 0.0_wp
    14591459
    14601460!
Note: See TracChangeset for help on using the changeset viewer.