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/init_1d_model.f90

    r1347 r1353  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! REAL constants provided with KIND-attribute
    2323!
    2424! Former revisions:
     
    113113       kh1d = km_constant / prandtl_number
    114114    ELSE
    115        e1d = 0.0; e1d_p = 0.0
    116        kh1d = 0.0; km1d = 0.0
    117        rif1d = 0.0
     115       e1d = 0.0_wp; e1d_p = 0.0_wp
     116       kh1d = 0.0_wp; km1d = 0.0_wp
     117       rif1d = 0.0_wp
    118118!
    119119!--    Compute the mixing length
    120        l_black(nzb) = 0.0
     120       l_black(nzb) = 0.0_wp
    121121
    122122       IF ( TRIM( mixing_length_1d ) == 'blackadar' )  THEN
    123123!
    124124!--       Blackadar mixing length
    125           IF ( f /= 0.0 )  THEN
    126              lambda = 2.7E-4 * SQRT( ug(nzt+1)**2 + vg(nzt+1)**2 ) /           &
    127                                ABS( f ) + 1E-10
     125          IF ( f /= 0.0_wp )  THEN
     126             lambda = 2.7E-4_wp * SQRT( ug(nzt+1)**2 + vg(nzt+1)**2 ) /        &
     127                               ABS( f ) + 1E-10_wp
    128128          ELSE
    129              lambda = 30.0
     129             lambda = 30.0_wp
    130130          ENDIF
    131131
    132132          DO  k = nzb+1, nzt+1
    133              l_black(k) = kappa * zu(k) / ( 1.0 + kappa * zu(k) / lambda )
     133             l_black(k) = kappa * zu(k) / ( 1.0_wp + kappa * zu(k) / lambda )
    134134          ENDDO
    135135
     
    152152!-- value in order to avoid too small time steps caused by the diffusion limit
    153153!-- in the initial phase of a run (at k=1, dz/2 occurs in the limiting formula!)
    154     u1d(0:1)   = 0.1
    155     u1d_p(0:1) = 0.1
    156     v1d(0:1)   = 0.1
    157     v1d_p(0:1) = 0.1
     154    u1d(0:1)   = 0.1_wp
     155    u1d_p(0:1) = 0.1_wp
     156    v1d(0:1)   = 0.1_wp
     157    v1d_p(0:1) = 0.1_wp
    158158
    159159!
    160160!-- For u*, theta* and the momentum fluxes plausible values are set
    161161    IF ( prandtl_layer )  THEN
    162        us1d = 0.1   ! without initial friction the flow would not change
     162       us1d = 0.1_wp   ! without initial friction the flow would not change
    163163    ELSE
    164        e1d(nzb+1)  = 1.0
    165        km1d(nzb+1) = 1.0
    166        us1d = 0.0
     164       e1d(nzb+1)  = 1.0_wp
     165       km1d(nzb+1) = 1.0_wp
     166       us1d = 0.0_wp
    167167    ENDIF
    168     ts1d = 0.0
    169     usws1d = 0.0
    170     vsws1d = 0.0
     168    ts1d = 0.0_wp
     169    usws1d = 0.0_wp
     170    vsws1d = 0.0_wp
    171171    z01d  = roughness_length
    172172    z0h1d = z0h_factor * z01d
    173     IF ( humidity .OR. passive_scalar )  qs1d = 0.0
     173    IF ( humidity .OR. passive_scalar )  qs1d = 0.0_wp
    174174
    175175!
    176176!-- Tendencies must be preset in order to avoid runtime errors within the
    177177!-- first Runge-Kutta step
    178     te_em = 0.0
    179     te_um = 0.0
    180     te_vm = 0.0
     178    te_em = 0.0_wp
     179    te_um = 0.0_wp
     180    te_vm = 0.0_wp
    181181
    182182!
     
    270270          DO  k = nzb_diff, nzt
    271271
    272              kmzm = 0.5 * ( km1d(k-1) + km1d(k) )
    273              kmzp = 0.5 * ( km1d(k) + km1d(k+1) )
     272             kmzm = 0.5_wp * ( km1d(k-1) + km1d(k) )
     273             kmzp = 0.5_wp * ( km1d(k) + km1d(k+1) )
    274274!
    275275!--          u-component
     
    289289!
    290290!--             TKE
    291                 kmzm = 0.5 * ( km1d(k-1) + km1d(k) )
    292                 kmzp = 0.5 * ( km1d(k) + km1d(k+1) )
     291                kmzm = 0.5_wp * ( km1d(k-1) + km1d(k) )
     292                kmzp = 0.5_wp * ( km1d(k) + km1d(k+1) )
    293293                IF ( .NOT. humidity )  THEN
    294294                   pt_0 = pt_init(k)
    295295                   flux =  ( pt_init(k+1)-pt_init(k-1) ) * dd2zu(k)
    296296                ELSE
    297                    pt_0 = pt_init(k) * ( 1.0 + 0.61 * q_init(k) )
    298                    flux = ( ( pt_init(k+1) - pt_init(k-1) ) +                 &
    299                             0.61 * pt_init(k) * ( q_init(k+1) - q_init(k-1) ) &
    300                           ) * dd2zu(k)
     297                   pt_0 = pt_init(k) * ( 1.0_wp + 0.61_wp * q_init(k) )
     298                   flux = ( ( pt_init(k+1) - pt_init(k-1) ) +                  &
     299                            0.61_wp * pt_init(k) *                            &
     300                            ( q_init(k+1) - q_init(k-1) ) ) * dd2zu(k)
    301301                ENDIF
    302302
     
    304304!
    305305!--                According to Detering, c_e=0.064
    306                    dissipation = 0.064 * e1d(k) * SQRT( e1d(k) ) / l1d(k)
     306                   dissipation = 0.064_wp * e1d(k) * SQRT( e1d(k) ) / l1d(k)
    307307                ELSEIF ( dissipation_1d == 'as_in_3d_model' )  THEN
    308                    dissipation = ( 0.19 + 0.74 * l1d(k) / l_grid(k) ) &
     308                   dissipation = ( 0.19_wp + 0.74_wp * l1d(k) / l_grid(k) )    &
    309309                                 * e1d(k) * SQRT( e1d(k) ) / l1d(k)
    310310                ENDIF
     
    329329
    330330             k = nzb+1
    331              kmzm = 0.5 * ( km1d(k-1) + km1d(k) )
    332              kmzp = 0.5 * ( km1d(k) + km1d(k+1) )
     331             kmzm = 0.5_wp * ( km1d(k-1) + km1d(k) )
     332             kmzp = 0.5_wp * ( km1d(k) + km1d(k+1) )
    333333             IF ( .NOT. humidity )  THEN
    334334                pt_0 = pt_init(k)
    335335                flux =  ( pt_init(k+1)-pt_init(k-1) ) * dd2zu(k)
    336336             ELSE
    337                 pt_0 = pt_init(k) * ( 1.0 + 0.61 * q_init(k) )
    338                 flux = ( ( pt_init(k+1) - pt_init(k-1) ) +                 &
    339                          0.61 * pt_init(k) * ( q_init(k+1) - q_init(k-1) ) &
     337                pt_0 = pt_init(k) * ( 1.0_wp + 0.61_wp * q_init(k) )
     338                flux = ( ( pt_init(k+1) - pt_init(k-1) ) +                     &
     339                         0.61_wp * pt_init(k) * ( q_init(k+1) - q_init(k-1) ) &
    340340                       ) * dd2zu(k)
    341341             ENDIF
     
    344344!
    345345!--             According to Detering, c_e=0.064
    346                 dissipation = 0.064 * e1d(k) * SQRT( e1d(k) ) / l1d(k)
     346                dissipation = 0.064_wp * e1d(k) * SQRT( e1d(k) ) / l1d(k)
    347347             ELSEIF ( dissipation_1d == 'as_in_3d_model' )  THEN
    348                 dissipation = ( 0.19 + 0.74 * l1d(k) / l_grid(k) ) &
     348                dissipation = ( 0.19_wp + 0.74_wp * l1d(k) / l_grid(k) )      &
    349349                              * e1d(k) * SQRT( e1d(k) ) / l1d(k)
    350350             ENDIF
     
    354354             te_u(k) = f * ( v1d(k) - vg(k) ) + (                              &
    355355                       kmzp * ( u1d(k+1) - u1d(k) ) * ddzu(k+1) + usws1d       &
    356                                                 ) * 2.0 * ddzw(k)
     356                                                ) * 2.0_wp * ddzw(k)
    357357!
    358358!--          v-component
    359359             te_v(k) = -f * ( u1d(k) - ug(k) ) + (                             &
    360360                       kmzp * ( v1d(k+1) - v1d(k) ) * ddzu(k+1) + vsws1d       &
    361                                                  ) * 2.0 * ddzw(k)
     361                                                 ) * 2.0_wp * ddzw(k)
    362362!
    363363!--          TKE
     
    394394!--          integration due to numerical inaccuracies. In such cases the TKE
    395395!--          value is reduced to 10 percent of its old value.
    396              WHERE ( e1d_p < 0.0 )  e1d_p = 0.1 * e1d
     396             WHERE ( e1d_p < 0.0_wp )  e1d_p = 0.1_wp * e1d
    397397          ENDIF
    398398
     
    417417
    418418                DO  k = nzb+1, nzt
    419                    te_um(k) = -9.5625 * te_u(k) + 5.3125 * te_um(k)
    420                    te_vm(k) = -9.5625 * te_v(k) + 5.3125 * te_vm(k)
     419                   te_um(k) = -9.5625_wp * te_u(k) + 5.3125_wp * te_um(k)
     420                   te_vm(k) = -9.5625_wp * te_v(k) + 5.3125_wp * te_vm(k)
    421421                ENDDO
    422422
    423423                IF ( .NOT. constant_diffusion )  THEN
    424424                   DO k = nzb+1, nzt
    425                       te_em(k) = -9.5625 * te_e(k) + 5.3125 * te_em(k)
     425                      te_em(k) = -9.5625_wp * te_e(k) + 5.3125_wp * te_em(k)
    426426                   ENDDO
    427427                ENDIF
     
    440440         ! v1d_p(nzb) = -v1d_p(nzb+1)
    441441
    442           u1d_p(nzb) = 0.0
    443           v1d_p(nzb) = 0.0
     442          u1d_p(nzb) = 0.0_wp
     443          v1d_p(nzb) = 0.0_wp
    444444
    445445!
     
    460460!
    461461!--             Compute theta* using Rif numbers of the previous time step
    462                 IF ( rif1d(1) >= 0.0 )  THEN
     462                IF ( rif1d(1) >= 0.0_wp )  THEN
    463463!
    464464!--                Stable stratification
    465                    ts1d = kappa * ( pt_init(nzb+1) - pt_init(nzb) ) /       &
    466                           ( LOG( zu(nzb+1) / z0h1d ) + 5.0 * rif1d(nzb+1) * &
    467                                           ( zu(nzb+1) - z0h1d ) / zu(nzb+1) &
     465                   ts1d = kappa * ( pt_init(nzb+1) - pt_init(nzb) ) /          &
     466                          ( LOG( zu(nzb+1) / z0h1d ) + 5.0_wp * rif1d(nzb+1) * &
     467                                          ( zu(nzb+1) - z0h1d ) / zu(nzb+1)    &
    468468                          )
    469469                ELSE
    470470!
    471471!--                Unstable stratification
    472                    a = SQRT( 1.0 - 16.0 * rif1d(nzb+1) )
    473                    b = SQRT( 1.0 - 16.0 * rif1d(nzb+1) / zu(nzb+1) * z0h1d )
     472                   a = SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) )
     473                   b = SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) /                 &
     474                       zu(nzb+1) * z0h1d )
    474475!
    475476!--                In the borderline case the formula for stable stratification
    476477!--                must be applied, because otherwise a zero division would
    477478!--                occur in the argument of the logarithm.
    478                    IF ( a == 0.0  .OR.  b == 0.0 )  THEN
     479                   IF ( a == 0.0_wp  .OR.  b == 0.0_wp )  THEN
    479480                      ts1d = kappa * ( pt_init(nzb+1) - pt_init(nzb) ) /       &
    480                              ( LOG( zu(nzb+1) / z0h1d ) + 5.0 * rif1d(nzb+1) * &
    481                                              ( zu(nzb+1) - z0h1d ) / zu(nzb+1) &
     481                             ( LOG( zu(nzb+1) / z0h1d ) +                      &
     482                               5.0_wp * rif1d(nzb+1) *                         &
     483                               ( zu(nzb+1) - z0h1d ) / zu(nzb+1)               &
    482484                             )
    483485                   ELSE
    484                       ts1d = kappa * ( pt_init(nzb+1) - pt_init(nzb) ) / &
    485                              LOG( (a-1.0) / (a+1.0) * (b+1.0) / (b-1.0) )
     486                      ts1d = kappa * ( pt_init(nzb+1) - pt_init(nzb) ) /       &
     487                             LOG( (a-1.0_wp) / (a+1.0_wp) *                    &
     488                                  (b+1.0_wp) / (b-1.0_wp) )
    486489                   ENDIF
    487490                ENDIF
     
    500503                   flux = ts1d
    501504                ELSE
    502                    pt_0 = pt_init(nzb+1) * ( 1.0 + 0.61 * q_init(nzb+1) )
    503                    flux = ts1d + 0.61 * pt_init(k) * qs1d
     505                   pt_0 = pt_init(nzb+1) * ( 1.0_wp + 0.61_wp * q_init(nzb+1) )
     506                   flux = ts1d + 0.61_wp * pt_init(k) * qs1d
    504507                ENDIF
    505508                rif1d(nzb+1) = zu(nzb+1) * kappa * g * flux / &
    506                                ( pt_0 * ( us1d**2 + 1E-30 ) )
     509                               ( pt_0 * ( us1d**2 + 1E-30_wp ) )
    507510             ENDIF
    508511
     
    512515                   flux = ( pt_init(k+1) - pt_init(k-1) ) * dd2zu(k)
    513516                ELSE
    514                    pt_0 = pt_init(k) * ( 1.0 + 0.61 * q_init(k) )
     517                   pt_0 = pt_init(k) * ( 1.0_wp + 0.61_wp * q_init(k) )
    515518                   flux = ( ( pt_init(k+1) - pt_init(k-1) )                    &
    516                             + 0.61 * pt_init(k) * ( q_init(k+1) - q_init(k-1) )&
     519                            + 0.61_wp * pt_init(k)                             &
     520                            * ( q_init(k+1) - q_init(k-1) )                    &
    517521                          ) * dd2zu(k)
    518522                ENDIF
    519                 IF ( rif1d(k) >= 0.0 )  THEN
    520                    rif1d(k) = g / pt_0 * flux /                              &
    521                               (  ( ( u1d(k+1) - u1d(k-1) ) * dd2zu(k) )**2   &
    522                                + ( ( v1d(k+1) - v1d(k-1) ) * dd2zu(k) )**2   &
    523                                + 1E-30                                       &
     523                IF ( rif1d(k) >= 0.0_wp )  THEN
     524                   rif1d(k) = g / pt_0 * flux /                                &
     525                              (  ( ( u1d(k+1) - u1d(k-1) ) * dd2zu(k) )**2     &
     526                               + ( ( v1d(k+1) - v1d(k-1) ) * dd2zu(k) )**2     &
     527                               + 1E-30_wp                                      &
    524528                              )
    525529                ELSE
    526                    rif1d(k) = g / pt_0 * flux /                              &
    527                               (  ( ( u1d(k+1) - u1d(k-1) ) * dd2zu(k) )**2   &
    528                                + ( ( v1d(k+1) - v1d(k-1) ) * dd2zu(k) )**2   &
    529                                + 1E-30                                       &
    530                               ) * ( 1.0 - 16.0 * rif1d(k) )**0.25
     530                   rif1d(k) = g / pt_0 * flux /                                &
     531                              (  ( ( u1d(k+1) - u1d(k-1) ) * dd2zu(k) )**2     &
     532                               + ( ( v1d(k+1) - v1d(k-1) ) * dd2zu(k) )**2     &
     533                               + 1E-30_wp                                      &
     534                              ) * ( 1.0_wp - 16.0_wp * rif1d(k) )**0.25_wp
    531535                ENDIF
    532536             ENDDO
     
    543547                uv_total = SQRT( u1d(nzb+1)**2 + v1d(nzb+1)**2 )
    544548
    545                 IF ( rif1d(nzb+1) >= 0.0 )  THEN
     549                IF ( rif1d(nzb+1) >= 0.0_wp )  THEN
    546550!
    547551!--                Stable stratification
    548552                   us1d = kappa * uv_total / (                                 &
    549                              LOG( zu(nzb+1) / z01d ) + 5.0 * rif1d(nzb+1) *    &
     553                             LOG( zu(nzb+1) / z01d ) + 5.0_wp * rif1d(nzb+1) * &
    550554                                              ( zu(nzb+1) - z01d ) / zu(nzb+1) &
    551555                                             )
     
    553557!
    554558!--                Unstable stratification
    555                    a = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rif1d(nzb+1) ) )
    556                    b = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rif1d(nzb+1) / zu(nzb+1) &
    557                                                     * z01d ) )
     559                   a = 1.0_wp / SQRT( SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) ) )
     560                   b = 1.0_wp / SQRT( SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) / &
     561                                                     zu(nzb+1) * z01d ) )
    558562!
    559563!--                In the borderline case the formula for stable stratification
    560564!--                must be applied, because otherwise a zero division would
    561565!--                occur in the argument of the logarithm.
    562                    IF ( a == 1.0  .OR.  b == 1.0 )  THEN
    563                       us1d = kappa * uv_total / (                            &
    564                              LOG( zu(nzb+1) / z01d ) +                       &
    565                              5.0 * rif1d(nzb+1) * ( zu(nzb+1) - z01d ) /     &
     566                   IF ( a == 1.0_wp  .OR.  b == 1.0_wp )  THEN
     567                      us1d = kappa * uv_total / (                              &
     568                             LOG( zu(nzb+1) / z01d ) +                         &
     569                             5.0_wp * rif1d(nzb+1) * ( zu(nzb+1) - z01d ) /    &
    566570                                                  zu(nzb+1) )
    567571                   ELSE
    568572                      us1d = kappa * uv_total / (                              &
    569                                  LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) +&
    570                                  2.0 * ( ATAN( b ) - ATAN( a ) )               &
     573                                 LOG( (1.0_wp+b) / (1.0_wp-b) * (1.0_wp-a) /   &
     574                                      (1.0_wp+a) ) +                           &
     575                                 2.0_wp * ( ATAN( b ) - ATAN( a ) )            &
    571576                                                )
    572577                   ENDIF
     
    584589!--             compatibility with the 3D model.
    585590                IF ( ibc_e_b == 2 )  THEN
    586                    e1d(nzb+1) = ( us1d / 0.1 )**2
    587 !                  e1d(nzb+1) = ( us1d / 0.4 )**2  !not used so far, see also
    588                                                    !prandtl_fluxes
     591                   e1d(nzb+1) = ( us1d / 0.1_wp )**2
     592!                  e1d(nzb+1) = ( us1d / 0.4_wp )**2  !not used so far, see also
     593                                                      !prandtl_fluxes
    589594                ENDIF
    590595                e1d(nzb) = e1d(nzb+1)
     
    593598!
    594599!--                Compute q*
    595                    IF ( rif1d(1) >= 0.0 )  THEN
     600                   IF ( rif1d(1) >= 0.0_wp )  THEN
    596601!
    597602!--                Stable stratification
    598                    qs1d = kappa * ( q_init(nzb+1) - q_init(nzb) ) /         &
    599                           ( LOG( zu(nzb+1) / z0h1d ) + 5.0 * rif1d(nzb+1) * &
    600                                           ( zu(nzb+1) - z0h1d ) / zu(nzb+1) &
     603                   qs1d = kappa * ( q_init(nzb+1) - q_init(nzb) ) /            &
     604                          ( LOG( zu(nzb+1) / z0h1d ) + 5.0_wp * rif1d(nzb+1) * &
     605                                          ( zu(nzb+1) - z0h1d ) / zu(nzb+1)    &
    601606                          )
    602607                ELSE
    603608!
    604609!--                Unstable stratification
    605                    a = SQRT( 1.0 - 16.0 * rif1d(nzb+1) )
    606                    b = SQRT( 1.0 - 16.0 * rif1d(nzb+1) / zu(nzb+1) * z0h1d )
     610                   a = SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) )
     611                   b = SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) /                 &
     612                                      zu(nzb+1) * z0h1d )
    607613!
    608614!--                In the borderline case the formula for stable stratification
    609615!--                must be applied, because otherwise a zero division would
    610616!--                occur in the argument of the logarithm.
    611                    IF ( a == 1.0  .OR.  b == 1.0 )  THEN
     617                   IF ( a == 1.0_wp  .OR.  b == 1.0_wp )  THEN
    612618                      qs1d = kappa * ( q_init(nzb+1) - q_init(nzb) ) /         &
    613                              ( LOG( zu(nzb+1) / z0h1d ) + 5.0 * rif1d(nzb+1) * &
    614                                              ( zu(nzb+1) - z0h1d ) / zu(nzb+1) &
     619                             ( LOG( zu(nzb+1) / z0h1d ) +                      &
     620                               5.0_wp * rif1d(nzb+1) *                         &
     621                               ( zu(nzb+1) - z0h1d ) / zu(nzb+1)               &
    615622                             )
    616623                   ELSE
    617                       qs1d = kappa * ( q_init(nzb+1) - q_init(nzb) ) / &
    618                              LOG( (a-1.0) / (a+1.0) * (b+1.0) / (b-1.0) )
     624                      qs1d = kappa * ( q_init(nzb+1) - q_init(nzb) ) /         &
     625                             LOG( (a-1.0_wp) / (a+1.0_wp) *                    &
     626                                  (b+1.0_wp) / (b-1.0_wp) )
    619627                   ENDIF
    620628                ENDIF               
    621629                ELSE
    622                    qs1d = 0.0
     630                   qs1d = 0.0_wp
    623631                ENDIF             
    624632
     
    629637             IF ( mixing_length_1d == 'blackadar' )  THEN
    630638                DO  k = nzb+1, nzt
    631                    IF ( rif1d(k) >= 0.0 )  THEN
    632                       l1d(k) = l_black(k) / ( 1.0 + 5.0 * rif1d(k) )
     639                   IF ( rif1d(k) >= 0.0_wp )  THEN
     640                      l1d(k) = l_black(k) / ( 1.0_wp + 5.0_wp * rif1d(k) )
    633641                   ELSE
    634                       l1d(k) = l_black(k) * ( 1.0 - 16.0 * rif1d(k) )**0.25
     642                      l1d(k) = l_black(k) *                                    &
     643                               ( 1.0_wp - 16.0_wp * rif1d(k) )**0.25_wp
    635644                   ENDIF
    636645                   l1d(k) = l_black(k)
     
    640649                DO  k = nzb+1, nzt
    641650                   dpt_dz = ( pt_init(k+1) - pt_init(k-1) ) * dd2zu(k)
    642                    IF ( dpt_dz > 0.0 )  THEN
    643                       l_stable = 0.76 * SQRT( e1d(k) ) / &
    644                                      SQRT( g / pt_init(k) * dpt_dz ) + 1E-5
     651                   IF ( dpt_dz > 0.0_wp )  THEN
     652                      l_stable = 0.76_wp * SQRT( e1d(k) ) /                    &
     653                                     SQRT( g / pt_init(k) * dpt_dz ) + 1E-5_wp
    645654                   ELSE
    646655                      l_stable = l_grid(k)
     
    657666!--          already been taken account of via the TKE (cf. also Diss.).
    658667             IF ( prandtl_layer )  THEN
    659                 IF ( rif1d(nzb+1) >= 0.0 )  THEN
    660                    km1d(nzb+1) = us1d * kappa * zu(nzb+1) / &
    661                                  ( 1.0 + 5.0 * rif1d(nzb+1) )
    662                 ELSE
    663                    km1d(nzb+1) = us1d * kappa * zu(nzb+1) * &
    664                                  ( 1.0 - 16.0 * rif1d(nzb+1) )**0.25
     668                IF ( rif1d(nzb+1) >= 0.0_wp )  THEN
     669                   km1d(nzb+1) = us1d * kappa * zu(nzb+1) /                    &
     670                                 ( 1.0_wp + 5.0_wp * rif1d(nzb+1) )
     671                ELSE
     672                   km1d(nzb+1) = us1d * kappa * zu(nzb+1) *                    &
     673                                 ( 1.0_wp - 16.0_wp * rif1d(nzb+1) )**0.25_wp
    665674                ENDIF
    666675             ENDIF
    667676             DO  k = nzb_diff, nzt
    668677!                km1d(k) = 0.4 * SQRT( e1d(k) ) !changed: adjustment to 3D-model
    669                 km1d(k) = 0.1 * SQRT( e1d(k) )
    670                 IF ( rif1d(k) >= 0.0 )  THEN
     678                km1d(k) = 0.1_wp * SQRT( e1d(k) )
     679                IF ( rif1d(k) >= 0.0_wp )  THEN
    671680                   km1d(k) = km1d(k) * l1d(k)
    672681                ELSE
     
    678687!--          Add damping layer
    679688             DO  k = damp_level_ind_1d+1, nzt+1
    680                 km1d(k) = 1.1 * km1d(k-1)
     689                km1d(k) = 1.1_wp * km1d(k-1)
    681690                km1d(k) = MIN( km1d(k), 10.0_wp )
    682691             ENDDO
     
    686695!--          kh = phim / phih * km
    687696             DO  k = nzb+1, nzt
    688                 IF ( rif1d(k) >= 0.0 )  THEN
     697                IF ( rif1d(k) >= 0.0_wp )  THEN
    689698                   kh1d(k) = km1d(k)
    690699                ELSE
    691                    kh1d(k) = km1d(k) * ( 1.0 - 16.0 * rif1d(k) )**0.25
     700                   kh1d(k) = km1d(k) * ( 1.0_wp - 16.0_wp * rif1d(k) )**0.25_wp
    692701                ENDIF
    693702             ENDDO
     
    778787!--    Compute control quantities
    779788!--    grid level nzp is excluded due to mirror boundary condition
    780        umax = 0.0; vmax = 0.0; energy = 0.0
     789       umax = 0.0_wp; vmax = 0.0_wp; energy = 0.0_wp
    781790       DO  k = nzb+1, nzt+1
    782791          umax = MAX( ABS( umax ), ABS( u1d(k) ) )
    783792          vmax = MAX( ABS( vmax ), ABS( v1d(k) ) )
    784           energy = energy + 0.5 * ( u1d(k)**2 + v1d(k)**2 )
     793          energy = energy + 0.5_wp * ( u1d(k)**2 + v1d(k)**2 )
    785794       ENDDO
    786795       energy = energy / REAL( nzt - nzb + 1, KIND=wp )
    787796
    788797       uv_total = SQRT( u1d(nzb+1)**2 + v1d(nzb+1)**2 )
    789        IF ( ABS( v1d(nzb+1) ) .LT. 1.0E-5 )  THEN
     798       IF ( ABS( v1d(nzb+1) ) .LT. 1.0E-5_wp )  THEN
    790799          alpha = ACOS( SIGN( 1.0_wp , u1d(nzb+1) ) )
    791800       ELSE
    792801          alpha = ACOS( u1d(nzb+1) / uv_total )
    793           IF ( v1d(nzb+1) <= 0.0 )  alpha = 2.0 * pi - alpha
     802          IF ( v1d(nzb+1) <= 0.0_wp )  alpha = 2.0_wp * pi - alpha
    794803       ENDIF
    795        alpha = alpha / ( 2.0 * pi ) * 360.0
     804       alpha = alpha / ( 2.0_wp * pi ) * 360.0_wp
    796805
    797806       WRITE ( 15, 101 )  current_timestep_number_1d, simulated_time_chr, &
     
    853862!-- Compute the currently feasible time step according to the diffusion
    854863!-- criterion. At nzb+1 the half grid length is used.
    855     fac = 0.35
     864    fac = 0.35_wp
    856865    dt_diff = dt_max_1d
    857866    DO  k = nzb+2, nzt
    858        value   = fac * dzu(k) * dzu(k) / ( km1d(k) + 1E-20 )
     867       value   = fac * dzu(k) * dzu(k) / ( km1d(k) + 1E-20_wp )
    859868       dt_diff = MIN( value, dt_diff )
    860869    ENDDO
    861     value   = fac * zu(nzb+1) * zu(nzb+1) / ( km1d(nzb+1) + 1E-20 )
     870    value   = fac * zu(nzb+1) * zu(nzb+1) / ( km1d(nzb+1) + 1E-20_wp )
    862871    dt_1d = MIN( value, dt_diff )
    863872
    864873!
    865874!-- Set flag when the time step becomes too small
    866     IF ( dt_1d < ( 0.00001 * dt_max_1d ) )  THEN
     875    IF ( dt_1d < ( 0.00001_wp * dt_max_1d ) )  THEN
    867876       stop_dt_1d = .TRUE.
    868877
     
    876885!-- A more or less simple new time step value is obtained taking only the
    877886!-- first two significant digits
    878     div = 1000.0
     887    div = 1000.0_wp
    879888    DO  WHILE ( dt_1d < div )
    880        div = div / 10.0
     889       div = div / 10.0_wp
    881890    ENDDO
    882     dt_1d = NINT( dt_1d * 100.0 / div ) * div / 100.0
     891    dt_1d = NINT( dt_1d * 100.0_wp / div ) * div / 100.0_wp
    883892
    884893    old_dt_1d = dt_1d
Note: See TracChangeset for help on using the changeset viewer.