Ignore:
Timestamp:
Apr 10, 2015 1:43:49 PM (6 years ago)
Author:
suehring
Message:

Bugfix: setting flags for 5th-order advection scheme, and stastical evaluation of scalar fluxes in 5th-order scheme in case of monotonic limiter.

File:
1 edited

Legend:

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

    r1576 r1580  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! Bugfix: setting flags for 5th order scheme near buildings.
    2323!
    2424! Former revisions:
     
    12431243       DO  i = nxl, nxr
    12441244          DO  j = nys, nyn
    1245              DO  k = nzb_u_inner(j,i)+1, nzt
     1245             DO  k = nzb+1, nzt
     1246!
     1247!--             At first, set flags to WS1.
     1248!--             Since fluxes are swapped in advec_ws.f90, this is necessary to
     1249!--             in order to handle the left/south flux.
     1250!--             near vertical walls.
     1251                wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 9 )
     1252                wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 12 )
    12461253!
    12471254!--             u component - x-direction
     
    12511258                     .OR. ( ( inflow_r .OR. outflow_r ) .AND. i == nxr  )     &
    12521259                   )  THEN
    1253                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 9 )
     1260                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 9 )
    12541261                ELSEIF ( k <= nzb_u_inner(j,i+2) .OR. k <= nzb_u_inner(j,i-1) &
    12551262                         .OR. ( ( inflow_r .OR. outflow_r ) .AND. i == nxr-1 )&
     
    12571264                       )  THEN
    12581265                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 10 )
     1266!
     1267!--                Clear flag for WS1
     1268                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 9 )
    12591269                ELSE
    12601270                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 11 )
     1271!
     1272!--                Clear flag for WS1
     1273                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 9 )
    12611274                ENDIF
    1262 
    12631275!
    12641276!--             u component - y-direction
     
    12671279                     .AND. j == nys ) .OR. ( ( inflow_n .OR. outflow_n )       &
    12681280                     .AND. j == nyn ) )  THEN
    1269                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 12 )
     1281                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 12 )
    12701282                ELSEIF ( k <= nzb_u_inner(j+2,i) .OR. k <= nzb_u_inner(j-1,i)  &
    12711283                         .OR. ( ( inflow_s .OR. outflow_s ) .AND. j == nysv  ) &
     
    12731285                       )  THEN
    12741286                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 13 )
     1287!
     1288!--                Clear flag for WS1
     1289                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 12 )
    12751290                ELSE
    12761291                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 14 )
     1292!
     1293!--                Clear flag for WS1
     1294                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 12 )
    12771295                ENDIF
    12781296!
     
    12961314       DO  i = nxl, nxr
    12971315          DO  j = nys, nyn
    1298              DO  k = nzb_v_inner(j,i)+1, nzt
     1316             DO  k = nzb+1, nzt
     1317!
     1318!--             At first, set flags to WS1.
     1319!--             Since fluxes are swapped in advec_ws.f90, this is necessary to
     1320!--             in order to handle the left/south flux.
     1321                wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 18 )
     1322                wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 21 )
    12991323!
    13001324!--             v component - x-direction
     
    13031327                     .AND. i == nxl ) .OR. (( inflow_r .OR. outflow_r )        &
    13041328                     .AND. i == nxr ) )  THEN
    1305                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 18 )
     1329                     wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 18 )
    13061330!--             WS3
    13071331                ELSEIF ( k <= nzb_v_inner(j,i+2) .OR. k <= nzb_v_inner(j,i-1)  &
     
    13101334                       )  THEN
    13111335                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 19 )
     1336!
     1337!--                Clear flag for WS1
     1338                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 18 )
    13121339                ELSE
    13131340                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 20 )
     1341!
     1342!--                Clear flag for WS1
     1343                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 18 )
    13141344                ENDIF
    13151345!
     
    13201350                     .OR. ( ( inflow_n .OR. outflow_n ) .AND. j == nyn  )      &
    13211351                   )  THEN
    1322                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 21 )
     1352                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 21 )
    13231353                ELSEIF ( k <= nzb_v_inner(j+2,i) .OR. k <= nzb_v_inner(j-1,i)  &
    13241354                         .OR. ( ( inflow_s .OR. outflow_s ) .AND. j == nysv+1 )&
     
    13261356                       )  THEN
    13271357                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 22 )
     1358!
     1359!--                Clear flag for WS1
     1360                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 21 )
    13281361                ELSE
    13291362                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 23 )
     1363!
     1364!--                Clear flag for WS1
     1365                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 21 )
    13301366                ENDIF
    13311367!
     
    13481384       DO  i = nxl, nxr
    13491385          DO  j = nys, nyn
    1350              DO  k = nzb_w_inner(j,i), nzt
     1386             DO  k = nzb+1, nzt
     1387!
     1388!--             At first, set flags to WS1.
     1389!--             Since fluxes are swapped in advec_ws.f90, this is necessary to
     1390!--             in order to handle the left/south flux.
     1391                wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 27 )
     1392                wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 30 )
    13511393!
    13521394!--             w component - x-direction
     
    13551397                     .AND. i == nxl ) .OR. ( ( inflow_r .OR. outflow_r )       &
    13561398                     .AND. i == nxr ) )  THEN
    1357                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 27 )
     1399                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 27 )
    13581400                ELSEIF ( k <= nzb_w_inner(j,i+2) .OR. k <= nzb_w_inner(j,i-1)  &
    13591401                         .OR. ( ( inflow_r .OR. outflow_r ) .AND. i == nxr-1 ) &
     
    13611403                       )  THEN
    13621404                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 28 )
     1405!
     1406!--                Clear flag for WS1
     1407                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 27 )
    13631408                ELSE
    13641409                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i),29 )
     1410!
     1411!--                Clear flag for WS1
     1412                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 27 )
    13651413                ENDIF
    13661414!
     
    13701418                     .AND. j == nys ) .OR. ( ( inflow_n .OR. outflow_n )       &
    13711419                     .AND. j == nyn ) )  THEN
    1372                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 30 )
     1420                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 30 )
    13731421                ELSEIF ( k <= nzb_w_inner(j+2,i) .OR. k <= nzb_w_inner(j-1,i)  &
    13741422                         .OR. ( ( inflow_s .OR. outflow_s ) .AND. j == nysv  ) &
     
    13761424                       )  THEN
    13771425                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 31 )
     1426!
     1427!--                Clear flag for WS1
     1428                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 30 )
    13781429                ELSE
    13791430                   wall_flags_00(k,j,i) = IBSET( wall_flags_00(k,j,i), 0 )
     1431!
     1432!--                Clear flag for WS1
     1433                   wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 30 )
    13801434                ENDIF
    13811435!
Note: See TracChangeset for help on using the changeset viewer.