Ignore:
Timestamp:
Jun 6, 2012 7:15:04 PM (9 years ago)
Author:
raasch
Message:

masking method can be switched on for mg-solver using inipar parameter masking_method

File:
1 edited

Legend:

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

    r865 r927  
    44! Current revisions:
    55! -----------------
    6 !
     6! Wall flags are not set for multigrid method in case of masking method
    77!
    88! Former revisions:
     
    1111!
    1212! 864 2012-03-27 15:10:33Z gryschka
    13 ! In case of ocean and dirichlet bc for u and v at the ground
    14 ! dzu_mg and ddzu_pres where not defined correctly for k=1.
     13! In case of ocean and Dirichlet bottom bc for u and v dzu_mg and ddzu_pres
     14! were not correctly defined for k=1.
    1515!
    1616! 861 2012-03-26 14:18:34Z suehring
     
    992992          flags = 0
    993993
    994           DO  i = nxl_l-1, nxr_l+1
    995              DO  j = nys_l-1, nyn_l+1
    996                 DO  k = nzb, nzt_l+1
     994!
     995!--       In case of masking method, flags are not set and multigrid method
     996!--       works like FFT-solver
     997          IF ( .NOT. masking_method )  THEN
     998
     999             DO  i = nxl_l-1, nxr_l+1
     1000                DO  j = nys_l-1, nyn_l+1
     1001                   DO  k = nzb, nzt_l+1
    9971002                         
    9981003!
    999 !--                Inside/outside building (inside building does not need
    1000 !--                further tests for walls)
    1001                    IF ( k*inc <= nzb_local(j*inc,i*inc) )  THEN
    1002 
    1003                       flags(k,j,i) = IBSET( flags(k,j,i), 6 )
    1004 
    1005                    ELSE
    1006 !
    1007 !--                   Bottom wall
    1008                       IF ( (k-1)*inc <= nzb_local(j*inc,i*inc) )  THEN
    1009                          flags(k,j,i) = IBSET( flags(k,j,i), 0 )
     1004!--                   Inside/outside building (inside building does not need
     1005!--                   further tests for walls)
     1006                      IF ( k*inc <= nzb_local(j*inc,i*inc) )  THEN
     1007
     1008                         flags(k,j,i) = IBSET( flags(k,j,i), 6 )
     1009
     1010                      ELSE
     1011!
     1012!--                      Bottom wall
     1013                         IF ( (k-1)*inc <= nzb_local(j*inc,i*inc) )  THEN
     1014                            flags(k,j,i) = IBSET( flags(k,j,i), 0 )
     1015                         ENDIF
     1016!
     1017!--                      South wall
     1018                         IF ( k*inc <= nzb_local((j-1)*inc,i*inc) )  THEN
     1019                            flags(k,j,i) = IBSET( flags(k,j,i), 2 )
     1020                         ENDIF
     1021!
     1022!--                      North wall
     1023                         IF ( k*inc <= nzb_local((j+1)*inc,i*inc) )  THEN
     1024                            flags(k,j,i) = IBSET( flags(k,j,i), 3 )
     1025                         ENDIF
     1026!
     1027!--                      Left wall
     1028                         IF ( k*inc <= nzb_local(j*inc,(i-1)*inc) )  THEN
     1029                            flags(k,j,i) = IBSET( flags(k,j,i), 4 )
     1030                         ENDIF
     1031!
     1032!--                      Right wall
     1033                         IF ( k*inc <= nzb_local(j*inc,(i+1)*inc) )  THEN
     1034                            flags(k,j,i) = IBSET( flags(k,j,i), 5 )
     1035                         ENDIF
     1036
    10101037                      ENDIF
    1011 !
    1012 !--                   South wall
    1013                       IF ( k*inc <= nzb_local((j-1)*inc,i*inc) )  THEN
    1014                          flags(k,j,i) = IBSET( flags(k,j,i), 2 )
    1015                       ENDIF
    1016 !
    1017 !--                   North wall
    1018                       IF ( k*inc <= nzb_local((j+1)*inc,i*inc) )  THEN
    1019                          flags(k,j,i) = IBSET( flags(k,j,i), 3 )
    1020                       ENDIF
    1021 !
    1022 !--                   Left wall
    1023                       IF ( k*inc <= nzb_local(j*inc,(i-1)*inc) )  THEN
    1024                          flags(k,j,i) = IBSET( flags(k,j,i), 4 )
    1025                       ENDIF
    1026 !
    1027 !--                   Right wall
    1028                       IF ( k*inc <= nzb_local(j*inc,(i+1)*inc) )  THEN
    1029                          flags(k,j,i) = IBSET( flags(k,j,i), 5 )
    1030                       ENDIF
    1031 
    1032                    ENDIF
    10331038                           
     1039                   ENDDO
    10341040                ENDDO
    10351041             ENDDO
    1036           ENDDO
     1042
     1043          ENDIF
    10371044
    10381045!
Note: See TracChangeset for help on using the changeset viewer.