Ignore:
Timestamp:
Mar 26, 2014 5:04:47 PM (7 years ago)
Author:
kanani
Message:

REAL constants defined as wp-kind

File:
1 edited

Legend:

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

    r1323 r1342  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! REAL constants defined as wp-kind
    2323!
    2424! Former revisions:
     
    153153!--       Horizontal averages already existent, just need to average them
    154154!--       vertically.
    155           u_gtrans = 0.0
    156           v_gtrans = 0.0
     155          u_gtrans = 0.0_wp
     156          v_gtrans = 0.0_wp
    157157          DO  k = nzb+1, nzt
    158158             u_gtrans = u_gtrans + hom(k,1,1,0)
     
    164164!
    165165!--       Averaging over the entire model domain.
    166           u_gtrans_l = 0.0
    167           v_gtrans_l = 0.0
     166          u_gtrans_l = 0.0_wp
     167          v_gtrans_l = 0.0_wp
    168168          !$acc parallel present( u, v )
    169169          DO  i = nxl, nxr
     
    196196#if defined( __openacc )
    197197    IF ( dt_fixed )  THEN  ! otherwise do it further below for better cache usage
    198        u_max_l = -999999.9
    199        u_min_l =  999999.9
    200        v_max_l = -999999.9
    201        v_min_l =  999999.9
    202        w_max_l = -999999.9
    203        w_min_l =  999999.9
     198       u_max_l = -999999.9_wp
     199       u_min_l =  999999.9_wp
     200       v_max_l = -999999.9_wp
     201       v_min_l =  999999.9_wp
     202       w_max_l = -999999.9_wp
     203       w_min_l =  999999.9_wp
    204204       !$acc parallel present( u, v, w )
    205205       DO  i = nxl, nxr
     
    266266!--    Calculate the maximum time step according to the CFL-criterion,
    267267!--    individually for each velocity component
    268        dt_u_l  =  999999.9
    269        dt_v_l  =  999999.9
    270        dt_w_l  =  999999.9
    271        u_max_l = -999999.9
    272        u_min_l =  999999.9
    273        v_max_l = -999999.9
    274        v_min_l =  999999.9
    275        w_max_l = -999999.9
    276        w_min_l =  999999.9
     268       dt_u_l  =  999999.9_wp
     269       dt_v_l  =  999999.9_wp
     270       dt_w_l  =  999999.9_wp
     271       u_max_l = -999999.9_wp
     272       u_min_l =  999999.9_wp
     273       v_max_l = -999999.9_wp
     274       v_min_l =  999999.9_wp
     275       w_max_l = -999999.9_wp
     276       w_min_l =  999999.9_wp
    277277       !$acc parallel loop collapse(3) present( u, v, w )
    278278       DO  i = nxl, nxr
    279279          DO  j = nys, nyn
    280280             DO  k = nzb+1, nzt
    281                 dt_u_l  = MIN( dt_u_l, ( dx     / ( ABS( u(k,j,i) - u_gtrans ) + 1.0E-10 ) ) )
    282                 dt_v_l  = MIN( dt_v_l, ( dy     / ( ABS( v(k,j,i) - v_gtrans ) + 1.0E-10 ) ) )
    283                 dt_w_l  = MIN( dt_w_l, ( dzu(k) / ( ABS( w(k,j,i) )            + 1.0E-10 ) ) )
     281                dt_u_l  = MIN( dt_u_l, ( dx     / ( ABS( u(k,j,i) - u_gtrans ) + 1.0E-10_wp ) ) )
     282                dt_v_l  = MIN( dt_v_l, ( dy     / ( ABS( v(k,j,i) - v_gtrans ) + 1.0E-10_wp ) ) )
     283                dt_w_l  = MIN( dt_w_l, ( dzu(k) / ( ABS( w(k,j,i) )            + 1.0E-10_wp ) ) )
    284284                u_max_l = MAX( u_max_l, u(k,j,i) )
    285285                u_min_l = MIN( u_min_l, u(k,j,i) )
     
    346346!--    Calculate the maximum time step according to the CFL-criterion,
    347347!--    individually for each velocity component
    348        dt_u_l = 999999.9
    349        dt_v_l = 999999.9
    350        dt_w_l = 999999.9
     348       dt_u_l = 999999.9_wp
     349       dt_v_l = 999999.9_wp
     350       dt_w_l = 999999.9_wp
    351351       DO  i = nxl, nxr
    352352          DO  j = nys, nyn
    353353             DO  k = nzb+1, nzt
    354                 dt_u_l = MIN( dt_u_l, ( dx     / ( ABS( u(k,j,i) - u_gtrans ) + 1.0E-10 ) ) )
    355                 dt_v_l = MIN( dt_v_l, ( dy     / ( ABS( v(k,j,i) - v_gtrans ) + 1.0E-10 ) ) )
    356                 dt_w_l = MIN( dt_w_l, ( dzu(k) / ( ABS( w(k,j,i) )            + 1.0E-10 ) ) )
     354                dt_u_l = MIN( dt_u_l, ( dx     / ( ABS( u(k,j,i) - u_gtrans ) + 1.0E-10_wp ) ) )
     355                dt_v_l = MIN( dt_v_l, ( dy     / ( ABS( v(k,j,i) - v_gtrans ) + 1.0E-10_wp ) ) )
     356                dt_w_l = MIN( dt_w_l, ( dzu(k) / ( ABS( w(k,j,i) )            + 1.0E-10_wp ) ) )
    357357             ENDDO
    358358          ENDDO
     
    382382!--          in the Prandtl-layer friction term only dz/2 is used.
    383383!--          Experience from the old model seems to justify this.
    384        dt_diff_l = 999999.0
     384       dt_diff_l = 999999.0_wp
    385385
    386386       DO  k = nzb+1, nzt
    387            dxyz2_min(k) = MIN( dx2, dy2, dzw(k)*dzw(k) ) * 0.125
     387           dxyz2_min(k) = MIN( dx2, dy2, dzw(k)*dzw(k) ) * 0.125_wp
    388388       ENDDO
    389389
     
    395395             DO  k = nzb+1, nzt
    396396                dt_diff_l = MIN( dt_diff_l, dxyz2_min(k) / &
    397                                        ( MAX( kh(k,j,i), km(k,j,i) ) + 1E-20 ) )
     397                                       ( MAX( kh(k,j,i), km(k,j,i) ) + 1E-20_wp ) )
    398398             ENDDO
    399399          ENDDO
     
    414414       IF ( plant_canopy ) THEN
    415415
    416           dt_plant_canopy_l = 0.0
     416          dt_plant_canopy_l = 0.0_wp
    417417          DO  i = nxl, nxr
    418418             DO  j = nys, nyn
     
    424424                                                 v(k,j+1,i)      +  &
    425425                                                 v(k,j+1,i-1) )     &
    426                                                / 4.0 )**2        +  &
     426                                               / 4.0_wp )**2     +  &
    427427                                             ( ( w(k-1,j,i-1)    +  &
    428428                                                 w(k-1,j,i)      +  &
    429429                                                 w(k,j,i-1)      +  &
    430430                                                 w(k,j,i) )         &
    431                                                  / 4.0 )**2 )
     431                                                 / 4.0_wp )**2 )
    432432                   IF ( dt_plant_canopy_u > dt_plant_canopy_l ) THEN
    433433                      dt_plant_canopy_l = dt_plant_canopy_u 
     
    438438                                                 u(k,j,i)        +  &
    439439                                                 u(k,j,i+1) )       &
    440                                                / 4.0 )**2        +  &
     440                                               / 4.0_wp )**2     +  &
    441441                                                 v(k,j,i)**2     +  &
    442442                                             ( ( w(k-1,j-1,i)    +  &
     
    444444                                                 w(k,j-1,i)      +  &
    445445                                                 w(k,j,i) )         &
    446                                                  / 4.0 )**2 )
     446                                                 / 4.0_wp )**2 )
    447447                   IF ( dt_plant_canopy_v > dt_plant_canopy_l ) THEN
    448448                      dt_plant_canopy_l = dt_plant_canopy_v
     
    453453                                                 u(k+1,j,i)      +  &
    454454                                                 u(k+1,j,i+1) )     &
    455                                                / 4.0 )**2        +  &
     455                                               / 4.0_wp )**2     +  &
    456456                                             ( ( v(k,j,i)        +  &
    457457                                                 v(k,j+1,i)      +  &
    458458                                                 v(k+1,j,i)      +  &
    459459                                                 v(k+1,j+1,i) )     &
    460                                                / 4.0 )**2        +  &
     460                                               / 4.0_wp )**2        +  &
    461461                                                 w(k,j,i)**2 )     
    462462                   IF ( dt_plant_canopy_w > dt_plant_canopy_l ) THEN
     
    467467          ENDDO
    468468
    469           IF ( dt_plant_canopy_l > 0.0 ) THEN
     469          IF ( dt_plant_canopy_l > 0.0_wp ) THEN
    470470!
    471471!--          Invert dt_plant_canopy_l and apply a security timestep factor 0.1
    472              dt_plant_canopy_l = 0.1 / dt_plant_canopy_l
     472             dt_plant_canopy_l = 0.1_wp / dt_plant_canopy_l
    473473          ELSE
    474474!
     
    515515!
    516516!--    Set flag if the time step becomes too small.
    517        IF ( dt_3d < ( 0.00001 * dt_max ) )  THEN
     517       IF ( dt_3d < ( 0.00001_wp * dt_max ) )  THEN
    518518          stop_dt = .TRUE.
    519519
     
    553553!
    554554!--    Ensure a smooth value (two significant digits) of the timestep.
    555        div = 1000.0
     555       div = 1000.0_wp
    556556       DO  WHILE ( dt_3d < div )
    557           div = div / 10.0
     557          div = div / 10.0_wp
    558558       ENDDO
    559        dt_3d = NINT( dt_3d * 100.0 / div ) * div / 100.0
     559       dt_3d = NINT( dt_3d * 100.0_wp / div ) * div / 100.0_wp
    560560
    561561!
Note: See TracChangeset for help on using the changeset viewer.