Jul 22, 2019 5:00:34 PM (4 years ago)

Control discretization of advection term: separate initialization of WS advection flags for momentum and scalars. In this context, resort the bits and do some minor formatting; Make initialization of scalar-advection flags more flexible, i.e. introduce an arguemnt list to indicate non-cyclic boundaries (required for decycled scalars such as chemical species or aerosols); Introduce extended 'degradation zones', where horizontal advection of passive scalars is discretized by first-order scheme at all grid points that in the vicinity of buildings (<= 3 grid points). Even though no building is within the numerical stencil, first-order scheme is used. At fourth and fifth grid point the order of the horizontal advection scheme is successively upgraded. These extended degradation zones are used to avoid stationary numerical oscillations, which are responsible for high concentration maxima that may appear under shear-free stable conditions. Therefore, an additional 3D interger array used to store control flags is introduced; Change interface for scalar advection routine; Bugfix, avoid uninitialized value sk_num in vector version of WS scalar advection; Chemistry: Decycling boundary conditions are only set at the ghost points not on the prognostic grid points; Land-surface model: Relax checks for non-consistent initialization in case static or dynamic input is provided. For example, soil_temperature or deep_soil_temperature is not mandatory any more if dynamic input is available. Also, improper settings of x_type in namelist are only checked if no static file is available.

1 edited


  • palm/trunk/SOURCE/salsa_mod.f90

    r4102 r4109  
    2121! Current revisions:
    2222! -----------------
    23 !
     23! Pass integer flag array as well as boundary flags to WS scalar advection
     24! routine
    2526! Former revisions:
    77407741    USE indices,                                                                                   &
    7741         ONLY:  wall_flags_0
     7742        ONLY:  advc_flags_s, wall_flags_0
    77437744    USE pegrid,                                                                                    &
    77827783    IF ( timestep_scheme(1:5) == 'runge' )  THEN
    77837784       IF ( ws_scheme_sca )  THEN
    7784           CALL advec_s_ws( i, j, rs, id, flux_s, diss_s, flux_l, diss_l, i_omp_start, tn,          &
     7785          CALL advec_s_ws( advc_flags_s, i, j, rs, id, flux_s, diss_s, flux_l, diss_l,             &
     7786                           i_omp_start, tn,                                                        &
     7787                           bc_dirichlet_l  .OR.  bc_radiation_l,                                   &
     7788                           bc_dirichlet_n  .OR.  bc_radiation_n,                                   &
     7789                           bc_dirichlet_r  .OR.  bc_radiation_r,                                   &
     7790                           bc_dirichlet_s  .OR.  bc_radiation_s,                                   &
    77857791                           monotonic_limiter_z )
    77867792       ELSE
    78837889        ONLY:  diffusion_s
    78847890    USE indices,                                                                                   &
    7885         ONLY:  wall_flags_0
     7891        ONLY:  advc_flags_s, wall_flags_0
    78867892    USE surface_mod,                                                                               &
    78877893        ONLY :  surf_def_h, surf_def_v, surf_lsm_h, surf_lsm_v, surf_usm_h, surf_usm_v
    79147920    IF ( timestep_scheme(1:5) == 'runge' )  THEN
    79157921       IF ( ws_scheme_sca )  THEN
    7916           CALL advec_s_ws( rs, id )
     7922          CALL advec_s_ws( advc_flags_s, rs, id,                                                   &
     7923                           bc_dirichlet_l  .OR.  bc_radiation_l,                                   &
     7924                           bc_dirichlet_n  .OR.  bc_radiation_n,                                   &
     7925                           bc_dirichlet_r  .OR.  bc_radiation_r,                                   &
     7926                           bc_dirichlet_s  .OR.  bc_radiation_s )
    79177927       ELSE
    79187928          CALL advec_s_pw( rs )
Note: See TracChangeset for help on using the changeset viewer.