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

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