Changeset 4697 for palm/trunk


Ignore:
Timestamp:
Sep 25, 2020 8:24:29 AM (4 years ago)
Author:
suehring
Message:

To avoid numerical oscillations which may lead to a built-up of passive scalar near non-cyclic boundaries, employ a first-order scheme at the 3 grid points next to the boundary for passive scalars

File:
1 edited

Legend:

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

    r4581 r4697  
    1919! Current revisions:
    2020! ------------------
    21 ! 
    22 ! 
     21!
     22!
    2323! Former revisions:
    2424! -----------------
    2525! $Id$
     26! To avoid numerical oscillations which may lead to a built-up of passive scalar near non-cyclic
     27! boundaries, employ a first-order scheme at the 3 grid points next to the boundary for passive
     28! scalars
     29!
     30! 4581 2020-06-29 08:49:58Z suehring
    2631! Enable output of resolved-scale vertical fluxes of chemical species.
    2732!
     
    10431048
    10441049!
    1045 !--             Near lateral boundary flags might be overwritten. Set them again.
     1050!--             Near lateral boundaries set the flags again. In order to avoid strong numerical
     1051!--             oscillations near the boundaries, which may lead to scalar built-up, also employ
     1052!--             extended degradation zones here.
    10461053!--             x-direction
    1047                 IF ( ( non_cyclic_l  .AND.  i == 0  )  .OR.                                        &
    1048                      ( non_cyclic_r  .AND.  i == nx ) )  THEN
     1054                IF ( ( non_cyclic_l  .AND.  i <= 3  )  .OR.                                        &
     1055                     ( non_cyclic_r  .AND.  i >= nx-3 ) )  THEN
    10491056                   advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 0 )
    10501057                   advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 1 )
     
    10541061                ENDIF
    10551062
    1056                 IF ( ( non_cyclic_l  .AND.  i == 1    )  .OR.                                      &
    1057                      ( non_cyclic_r  .AND.  i == nx-1 ) )  THEN
     1063                IF ( ( non_cyclic_l  .AND.  i == 4    )  .OR.                                      &
     1064                     ( non_cyclic_r  .AND.  i == nx-4 ) )  THEN
    10581065                   advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 0 )
    10591066                   advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 1 )
     
    10641071!
    10651072!--             y-direction
    1066                 IF ( ( non_cyclic_n  .AND.  j == 0  )  .OR.                                        &
    1067                      ( non_cyclic_s  .AND.  j == ny ) )  THEN
     1073                IF ( ( non_cyclic_n  .AND.  j <= 3  )  .OR.                                        &
     1074                     ( non_cyclic_s  .AND.  j >= ny-3 ) )  THEN
    10681075                   advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 3 )
    10691076                   advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 4 )
     
    10731080                ENDIF
    10741081
    1075                 IF ( ( non_cyclic_n  .AND.  j == 1    )  .OR.                                      &
    1076                      ( non_cyclic_s  .AND.  j == ny-1 ) )  THEN
     1082                IF ( ( non_cyclic_n  .AND.  j == 4    )  .OR.                                      &
     1083                     ( non_cyclic_s  .AND.  j == ny-4 ) )  THEN
    10771084                   advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 3 )
    10781085                   advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 4 )
     
    10831090
    10841091             ENDIF
    1085 
    1086 
    10871092!
    10881093!--          scalar - z-direction. Fluxes are calculated on w-grid level. Boundary values at/within
Note: See TracChangeset for help on using the changeset viewer.