Ignore:
Timestamp:
Aug 9, 2012 8:28:32 AM (12 years ago)
Author:
fricke
Message:

merge fricke branch back into trunk

Location:
palm/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk

  • palm/trunk/SOURCE

  • palm/trunk/SOURCE/init_grid.f90

    r928 r978  
    44! Current revisions:
    55! -----------------
    6 !
     6! Bugfix: nzb_max is set to nzt at non-cyclic lateral boundaries
     7! Bugfix: Set wall_flags_0 for inflow boundary
    78!
    89! Former revisions:
     
    608609!-- Determine the maximum level of topography. Furthermore it is used for
    609610!-- steering the degradation of order of the applied advection scheme.
     611!-- In case of non-cyclic lateral boundaries, the order of the advection
     612!-- scheme is reduced at the lateral boundaries up to nzt.
    610613    nzb_max = MAXVAL( nzb_local )
     614    IF ( inflow_l .OR. outflow_l .OR. inflow_r .OR. outflow_r .OR.    &
     615         inflow_n .OR. outflow_n .OR. inflow_s .OR. outflow_s )  THEN
     616         nzb_max = nzt
     617    ENDIF
     618
    611619!
    612620!-- Consistency checks and index array initialization are only required for
     
    10791087!--             scalar - x-direction
    10801088!--             WS1 (0), WS3 (1), WS5 (2)
    1081                 IF ( k <= nzb_s_inner(j,i+1) .OR. ( outflow_l .AND. i == nxl ) &
    1082                      .OR. ( outflow_r .AND. i == nxr ) )  THEN
     1089                IF ( k <= nzb_s_inner(j,i+1) .OR. ( ( inflow_l .OR. outflow_l )&
     1090                     .AND. i == nxl ) .OR. ( ( inflow_r .OR. outflow_r )       &
     1091                     .AND. i == nxr ) )  THEN
    10831092                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 0 )
    10841093                ELSEIF ( k <= nzb_s_inner(j,i+2) .OR. k <= nzb_s_inner(j,i-1)  &
    1085                          .OR. ( outflow_r .AND. i == nxr-1 )                   &
    1086                          .OR. ( outflow_l .AND. i == nxlu  ) )  THEN
     1094                         .OR. ( ( inflow_r .OR. outflow_r ) .AND. i == nxr-1 ) &
     1095                         .OR. ( ( inflow_l .OR. outflow_l ) .AND. i == nxlu  ) &
     1096                       )  THEN
    10871097                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 1 )
    10881098                ELSE
     
    10921102!--             scalar - y-direction
    10931103!--             WS1 (3), WS3 (4), WS5 (5)
    1094                 IF ( k <= nzb_s_inner(j+1,i) .OR. ( outflow_s .AND. j == nys ) &
    1095                      .OR. ( outflow_n .AND. j == nyn ) )  THEN
     1104                IF ( k <= nzb_s_inner(j+1,i) .OR. ( ( inflow_s .OR. outflow_s )&
     1105                     .AND. j == nys ) .OR. ( ( inflow_n .OR. outflow_n )       &
     1106                     .AND. j == nyn ) )  THEN
    10961107                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 3 )
    10971108!--             WS3
    10981109                ELSEIF ( k <= nzb_s_inner(j+2,i) .OR. k <= nzb_s_inner(j-1,i)  &
    1099                         .OR. ( outflow_s .AND. j == nysv )                     &
    1100                         .OR. ( outflow_n .AND. j == nyn-1  ) )  THEN
     1110                         .OR. ( ( inflow_s .OR. outflow_s ) .AND. j == nysv  ) &
     1111                         .OR. ( ( inflow_n .OR. outflow_n ) .AND. j == nyn-1 ) &
     1112                       )  THEN
    11011113                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 4 )
    11021114!--             WS5
     
    11351147!--             WS1 (9), WS3 (10), WS5 (11)
    11361148                IF ( k <= nzb_u_inner(j,i+1)                                  &
    1137                      .OR. ( outflow_r .AND. i == nxr ) )  THEN
     1149                     .OR. ( ( inflow_l .OR. outflow_l ) .AND. i == nxlu )     &
     1150                     .OR. ( ( inflow_r .OR. outflow_r ) .AND. i == nxr  )     &
     1151                   )  THEN
    11381152                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 9 )
    11391153                ELSEIF ( k <= nzb_u_inner(j,i+2) .OR. k <= nzb_u_inner(j,i-1) &
    1140                          .OR. ( outflow_r .AND. i == nxr-1 )                  &
    1141                          .OR. ( outflow_l .AND. i == nxlu  ) )  THEN
     1154                         .OR. ( ( inflow_r .OR. outflow_r ) .AND. i == nxr-1 )&
     1155                         .OR. ( ( inflow_l .OR. outflow_l ) .AND. i == nxlu+1)&
     1156                       )  THEN
    11421157                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 10 )
    11431158                ELSE
    11441159                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 11 )
    11451160                ENDIF
     1161
    11461162!
    11471163!--             u component - y-direction
    11481164!--             WS1 (12), WS3 (13), WS5 (14)
    1149                 IF ( k <= nzb_u_inner(j+1,i) .OR. ( outflow_s .AND. j == nys ) &
    1150                     .OR. ( outflow_n .AND. j == nyn ) )  THEN
     1165                IF ( k <= nzb_u_inner(j+1,i) .OR. ( ( inflow_s .OR. outflow_s )&
     1166                     .AND. j == nys ) .OR. ( ( inflow_n .OR. outflow_n )       &
     1167                     .AND. j == nyn ) )  THEN
    11511168                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 12 )
    11521169                ELSEIF ( k <= nzb_u_inner(j+2,i) .OR. k <= nzb_u_inner(j-1,i)  &
    1153                     .OR. ( outflow_s .AND. j == nysv )                         &
    1154                     .OR. ( outflow_n .AND. j == nyn-1  ) )  THEN
     1170                         .OR. ( ( inflow_s .OR. outflow_s ) .AND. j == nysv  ) &
     1171                         .OR. ( ( inflow_n .OR. outflow_n ) .AND. j == nyn-1 ) &
     1172                       )  THEN
    11551173                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 13 )
    11561174                ELSE
     
    11811199!--             v component - x-direction
    11821200!--             WS1 (18), WS3 (19), WS5 (20)
    1183                 IF ( k <= nzb_v_inner(j,i+1) .OR. ( outflow_l .AND. i == nxl ) &
    1184                     .OR. ( outflow_r .AND. i == nxr ) )  THEN
     1201                IF ( k <= nzb_v_inner(j,i+1) .OR. ( ( inflow_l .OR. outflow_l )&
     1202                     .AND. i == nxl ) .OR. (( inflow_r .OR. outflow_r )        &
     1203                     .AND. i == nxr ) )  THEN
    11851204                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 18 )
    11861205!--             WS3
    11871206                ELSEIF ( k <= nzb_v_inner(j,i+2) .OR. k <= nzb_v_inner(j,i-1)  &
    1188                     .OR. ( outflow_r .AND. i == nxr-1 )                        &
    1189                     .OR. ( outflow_l .AND. i == nxlu  ) )  THEN
     1207                         .OR. ( ( inflow_r .OR. outflow_r ) .AND. i == nxr-1 ) &
     1208                         .OR. ( ( inflow_l .OR. outflow_l ) .AND. i == nxlu  ) &
     1209                       )  THEN
    11901210                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 19 )
    11911211                ELSE
     
    11961216!--             WS1 (21), WS3 (22), WS5 (23)
    11971217                IF ( k <= nzb_v_inner(j+1,i)                                   &
    1198                      .OR. ( outflow_n .AND. j == nyn ) )  THEN
     1218                     .OR. ( ( inflow_s .OR. outflow_s ) .AND. i == nysv )      &
     1219                     .OR. ( ( inflow_n .OR. outflow_n ) .AND. j == nyn  )      &
     1220                   )  THEN
    11991221                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 21 )
    12001222                ELSEIF ( k <= nzb_v_inner(j+2,i) .OR. k <= nzb_v_inner(j-1,i)  &
    1201                          .OR. ( outflow_s .AND. j == nysv )                    &
    1202                          .OR. ( outflow_n .AND. j == nyn-1  ) )  THEN
     1223                         .OR. ( ( inflow_s .OR. outflow_s ) .AND. j == nysv+1 )&
     1224                         .OR. ( ( inflow_n .OR. outflow_n ) .AND. j == nyn-1  )&
     1225                       )  THEN
    12031226                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 22 )
    12041227                ELSE
     
    12281251!--             w component - x-direction
    12291252!--             WS1 (27), WS3 (28), WS5 (29)
    1230                 IF ( k <= nzb_w_inner(j,i+1) .OR. ( outflow_l .AND. i == nxl ) &
    1231                     .OR. ( outflow_r .AND. i == nxr ) )  THEN
     1253                IF ( k <= nzb_w_inner(j,i+1) .OR. ( ( inflow_l .OR. outflow_l )&
     1254                     .AND. i == nxl ) .OR. ( ( inflow_r .OR. outflow_r )       &
     1255                     .AND. i == nxr ) )  THEN
    12321256                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 27 )
    12331257                ELSEIF ( k <= nzb_w_inner(j,i+2) .OR. k <= nzb_w_inner(j,i-1)  &
    1234                          .OR. ( outflow_r .AND. i == nxr-1 )                   &
    1235                          .OR. ( outflow_l .AND. i == nxlu  ) )  THEN
     1258                         .OR. ( ( inflow_r .OR. outflow_r ) .AND. i == nxr-1 ) &
     1259                         .OR. ( ( inflow_l .OR. outflow_l ) .AND. i == nxlu  ) &
     1260                       )  THEN
    12361261                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 28 )
    12371262                ELSE
     
    12411266!--             w component - y-direction
    12421267!--             WS1 (30), WS3 (31), WS5 (32)
    1243                 IF ( k <= nzb_w_inner(j+1,i) .OR. ( outflow_s .AND. j == nys ) &
    1244                      .OR. ( outflow_n .AND. j == nyn ) )  THEN
     1268                IF ( k <= nzb_w_inner(j+1,i) .OR. ( ( inflow_s .OR. outflow_s )&
     1269                     .AND. j == nys ) .OR. ( ( inflow_n .OR. outflow_n )       &
     1270                     .AND. j == nyn ) )  THEN
    12451271                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 30 )
    12461272                ELSEIF ( k <= nzb_w_inner(j+2,i) .OR. k <= nzb_w_inner(j-1,i)  &
    1247                          .OR. ( outflow_s .AND. j == nysv )                    &
    1248                          .OR. ( outflow_n .AND. j == nyn-1  ) )  THEN
     1273                         .OR. ( ( inflow_s .OR. outflow_s ) .AND. j == nysv  ) &
     1274                         .OR. ( ( inflow_n .OR. outflow_n ) .AND. j == nyn-1 ) &
     1275                       )  THEN
    12491276                   wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 31 )
    12501277                ELSE
Note: See TracChangeset for help on using the changeset viewer.