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_s_up.f90

    r2101 r2232  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! topography representation via flags
    2323!
    2424! Former revisions:
     
    104104
    105105       USE indices,                                                            &
    106            ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzb_s_inner,&
    107                   nzt
     106           ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt,        &
     107                  wall_flags_0
    108108
    109109       USE kinds
     
    128128       DO  i = nxl, nxr
    129129          DO  j = nys, nyn
    130              DO  k = nzb_s_inner(j,i)+1, nzt
     130             DO  k = nzb+1, nzt
    131131!
    132132!--             x-direction
     
    134134                IF ( ukomp > 0.0_wp )  THEN
    135135                   tend(k,j,i) = tend(k,j,i) - ukomp *                         &
    136                                          ( sk(k,j,i) - sk(k,j,i-1) ) * ddx
     136                                         ( sk(k,j,i) - sk(k,j,i-1) ) * ddx     &
     137                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     138                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    137139                ELSE
    138140                   tend(k,j,i) = tend(k,j,i) - ukomp *                         &
    139                                          ( sk(k,j,i+1) - sk(k,j,i) ) * ddx
     141                                         ( sk(k,j,i+1) - sk(k,j,i) ) * ddx     &
     142                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     143                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    140144                ENDIF
    141145!
     
    144148                IF ( vkomp > 0.0_wp )  THEN
    145149                   tend(k,j,i) = tend(k,j,i) - vkomp *                         &
    146                                          ( sk(k,j,i) - sk(k,j-1,i) ) * ddy
     150                                         ( sk(k,j,i) - sk(k,j-1,i) ) * ddy     &
     151                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     152                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    147153                ELSE
    148154                   tend(k,j,i) = tend(k,j,i) - vkomp *                         &
    149                                          ( sk(k,j+1,i) - sk(k,j,i) ) * ddy
     155                                         ( sk(k,j+1,i) - sk(k,j,i) ) * ddy     &
     156                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     157                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    150158                ENDIF
    151159!
     
    154162                IF ( wkomp > 0.0_wp )  THEN
    155163                   tend(k,j,i) = tend(k,j,i) - wkomp *                         &
    156                                          ( sk(k,j,i) - sk(k-1,j,i) ) * ddzu(k)
     164                                         ( sk(k,j,i) - sk(k-1,j,i) ) * ddzu(k) &
     165                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     166                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    157167                ELSE
    158168                   tend(k,j,i) = tend(k,j,i) - wkomp *                         &
    159                                          ( sk(k+1,j,i)-sk(k,j,i) ) * ddzu(k+1)
     169                                         ( sk(k+1,j,i)-sk(k,j,i) ) * ddzu(k+1) &
     170                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     171                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    160172                ENDIF
    161173
     
    184196
    185197       USE indices,                                                            &
    186            ONLY:  nxlg, nxrg, nyng, nysg, nzb, nzb_s_inner, nzt
     198           ONLY:  nxlg, nxrg, nyng, nysg, nzb, nzt, wall_flags_0
    187199
    188200       USE kinds
     
    206218
    207219
    208        DO  k = nzb_s_inner(j,i)+1, nzt
     220       DO  k = nzb+1, nzt
    209221!
    210222!--       x-direction
     
    212224          IF ( ukomp > 0.0_wp )  THEN
    213225             tend(k,j,i) = tend(k,j,i) - ukomp *                               &
    214                                          ( sk(k,j,i) - sk(k,j,i-1) ) * ddx
     226                                         ( sk(k,j,i) - sk(k,j,i-1) ) * ddx     &
     227                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     228                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    215229          ELSE
    216230             tend(k,j,i) = tend(k,j,i) - ukomp *                               &
    217                                          ( sk(k,j,i+1) - sk(k,j,i) ) * ddx
     231                                         ( sk(k,j,i+1) - sk(k,j,i) ) * ddx     &
     232                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     233                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    218234          ENDIF
    219235!
     
    222238          IF ( vkomp > 0.0_wp )  THEN
    223239             tend(k,j,i) = tend(k,j,i) - vkomp *                               &
    224                                          ( sk(k,j,i) - sk(k,j-1,i) ) * ddy
     240                                         ( sk(k,j,i) - sk(k,j-1,i) ) * ddy     &
     241                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     242                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    225243          ELSE
    226244             tend(k,j,i) = tend(k,j,i) - vkomp *                               &
    227                                          ( sk(k,j+1,i) - sk(k,j,i) ) * ddy
     245                                         ( sk(k,j+1,i) - sk(k,j,i) ) * ddy     &
     246                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     247                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    228248          ENDIF
    229249!
     
    232252          IF ( wkomp > 0.0_wp )  THEN
    233253             tend(k,j,i) = tend(k,j,i) - wkomp *                               &
    234                                          ( sk(k,j,i) - sk(k-1,j,i) ) * ddzu(k)
     254                                         ( sk(k,j,i) - sk(k-1,j,i) ) * ddzu(k) &
     255                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     256                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    235257          ELSE
    236258             tend(k,j,i) = tend(k,j,i) - wkomp *                               &
    237                                          ( sk(k+1,j,i)-sk(k,j,i) ) * ddzu(k+1)
     259                                         ( sk(k+1,j,i)-sk(k,j,i) ) * ddzu(k+1) &
     260                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     261                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    238262          ENDIF
    239263
Note: See TracChangeset for help on using the changeset viewer.