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

Adjustments according new topography and surface-modelling concept implemented

File:
1 edited

Legend:

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

    r2101 r2232  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! topography representation via flags
    2323!
    2424! Former revisions:
     
    9595
    9696       USE indices,                                                            &
    97            ONLY:  nxlu, nxr, nyn, nys, nzb_u_inner, nzt
     97           ONLY:  nxlu, nxr, nyn, nys, nzb, nzt, wall_flags_0
    9898
    9999       USE kinds
     
    113113       DO  i = nxlu, nxr
    114114          DO  j = nys, nyn
    115              DO  k = nzb_u_inner(j,i)+1, nzt
     115             DO  k = nzb+1, nzt
    116116!
    117117!--             x-direction
     
    119119                IF ( ukomp > 0.0_wp )  THEN
    120120                   tend(k,j,i) = tend(k,j,i) - ukomp *                         &
    121                                          ( u(k,j,i) - u(k,j,i-1) ) * ddx
     121                                         ( u(k,j,i) - u(k,j,i-1) ) * ddx       &
     122                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     123                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    122124                ELSE
    123125                   tend(k,j,i) = tend(k,j,i) - ukomp *                         &
    124                                           ( u(k,j,i+1) - u(k,j,i) ) * ddx
     126                                          ( u(k,j,i+1) - u(k,j,i) ) * ddx      &
     127                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     128                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    125129                ENDIF
    126130!
     
    130134                IF ( vkomp > 0.0_wp )  THEN
    131135                   tend(k,j,i) = tend(k,j,i) - vkomp *                         &
    132                                          ( u(k,j,i) - u(k,j-1,i) ) * ddy
     136                                         ( u(k,j,i) - u(k,j-1,i) ) * ddy       &
     137                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     138                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    133139                ELSE
    134140                   tend(k,j,i) = tend(k,j,i) - vkomp *                         &
    135                                          ( u(k,j+1,i) - u(k,j,i) ) * ddy
     141                                         ( u(k,j+1,i) - u(k,j,i) ) * ddy       &
     142                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     143                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    136144                ENDIF
    137145!
     
    141149                IF ( wkomp > 0.0_wp )  THEN
    142150                   tend(k,j,i) = tend(k,j,i) - wkomp *                         &
    143                                          ( u(k,j,i) - u(k-1,j,i) ) * ddzu(k)
     151                                         ( u(k,j,i) - u(k-1,j,i) ) * ddzu(k)   &
     152                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     153                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    144154                ELSE
    145155                   tend(k,j,i) = tend(k,j,i) - wkomp *                         &
    146                                          ( u(k+1,j,i) - u(k,j,i) ) * ddzu(k+1)
     156                                         ( u(k+1,j,i) - u(k,j,i) ) * ddzu(k+1) &
     157                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     158                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    147159                ENDIF
    148160
     
    171183
    172184       USE indices,                                                            &
    173            ONLY:  nzb_u_inner, nzt
     185           ONLY:  nzb, nzt, wall_flags_0
    174186
    175187       USE kinds
     
    187199
    188200
    189        DO  k = nzb_u_inner(j,i)+1, nzt
     201       DO  k = nzb+1, nzt
    190202!
    191203!--       x-direction
     
    193205          IF ( ukomp > 0.0_wp )  THEN
    194206             tend(k,j,i) = tend(k,j,i) - ukomp *                               &
    195                                          ( u(k,j,i) - u(k,j,i-1) ) * ddx
     207                                         ( u(k,j,i) - u(k,j,i-1) ) * ddx       &
     208                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     209                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    196210          ELSE
    197211             tend(k,j,i) = tend(k,j,i) - ukomp *                               &
    198                                          ( u(k,j,i+1) - u(k,j,i) ) * ddx
     212                                         ( u(k,j,i+1) - u(k,j,i) ) * ddx       &
     213                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     214                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    199215          ENDIF
    200216!
     
    204220          IF ( vkomp > 0.0_wp )  THEN
    205221             tend(k,j,i) = tend(k,j,i) - vkomp *                               &
    206                                          ( u(k,j,i) - u(k,j-1,i) ) * ddy
     222                                         ( u(k,j,i) - u(k,j-1,i) ) * ddy       &
     223                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     224                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    207225          ELSE
    208226             tend(k,j,i) = tend(k,j,i) - vkomp *                               &
    209                                          ( u(k,j+1,i) - u(k,j,i) ) * ddy
     227                                         ( u(k,j+1,i) - u(k,j,i) ) * ddy       &
     228                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     229                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    210230          ENDIF
    211231!
     
    214234          IF ( wkomp > 0.0_wp )  THEN
    215235             tend(k,j,i) = tend(k,j,i) - wkomp *                               &
    216                                          ( u(k,j,i) - u(k-1,j,i) ) * ddzu(k)
     236                                         ( u(k,j,i) - u(k-1,j,i) ) * ddzu(k)   &
     237                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     238                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    217239          ELSE
    218240             tend(k,j,i) = tend(k,j,i) - wkomp *                               &
    219                                          ( u(k+1,j,i) - u(k,j,i) ) * ddzu(k+1)
     241                                         ( u(k+1,j,i) - u(k,j,i) ) * ddzu(k+1) &
     242                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     243                                               BTEST( wall_flags_0(k,j,i), 1 ) )
    220244          ENDIF
    221245
Note: See TracChangeset for help on using the changeset viewer.