Ignore:
Timestamp:
Jul 22, 2019 5:00:34 PM (2 years ago)
Author:
suehring
Message:

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.

File:
1 edited

Legend:

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

    r3873 r4109  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! Pass integer flag array as well as boundary flags to WS scalar advection
     23! routine
    2324!
    2425! Former revisions:
     
    15821583
    15831584    USE control_parameters,                                                    &
    1584         ONLY:  dt_3d, intermediate_timestep_count,                             &
     1585        ONLY:  bc_dirichlet_l,                                                 &
     1586               bc_dirichlet_n,                                                 &
     1587               bc_dirichlet_r,                                                 &
     1588               bc_dirichlet_s,                                                 &
     1589               bc_radiation_l,                                                 &
     1590               bc_radiation_n,                                                 &
     1591               bc_radiation_r,                                                 &
     1592               bc_radiation_s,                                                 &
     1593               dt_3d, intermediate_timestep_count,                             &
    15851594               intermediate_timestep_count_max, scalar_advec, simulated_time,  &
    15861595               timestep_scheme, tsc, ws_scheme_sca
     
    15931602
    15941603    USE indices,                                                               &
    1595         ONLY:  nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0
     1604        ONLY:  advc_flags_s, nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0
    15961605
    15971606    USE surface_mod,                                                           &
     
    16471656          IF ( timestep_scheme(1:5) == 'runge' )  THEN
    16481657             IF ( ws_scheme_sca )  THEN
    1649                 CALL advec_s_ws( sa, 'sa' )
     1658                CALL advec_s_ws( advc_flags_s, sa, 'sa',                       &
     1659                                 bc_dirichlet_l  .OR.  bc_radiation_l,         &
     1660                                 bc_dirichlet_n  .OR.  bc_radiation_n,         &
     1661                                 bc_dirichlet_r  .OR.  bc_radiation_r,         &
     1662                                 bc_dirichlet_s  .OR.  bc_radiation_s )
    16501663             ELSE
    16511664                CALL advec_s_pw( sa )
     
    17451758
    17461759    USE control_parameters,                                                    &
    1747         ONLY:  dt_3d, intermediate_timestep_count,                             &
     1760        ONLY:  bc_dirichlet_l,                                                 &
     1761               bc_dirichlet_n,                                                 &
     1762               bc_dirichlet_r,                                                 &
     1763               bc_dirichlet_s,                                                 &
     1764               bc_radiation_l,                                                 &
     1765               bc_radiation_n,                                                 &
     1766               bc_radiation_r,                                                 &
     1767               bc_radiation_s,                                                 &
     1768               dt_3d, intermediate_timestep_count,                             &
    17481769               intermediate_timestep_count_max, simulated_time,                &
    17491770               timestep_scheme, tsc, ws_scheme_sca
     
    17531774
    17541775    USE indices,                                                               &
    1755         ONLY:  nzb, nzt, wall_flags_0
     1776        ONLY:  advc_flags_s, nzb, nzt, wall_flags_0
    17561777
    17571778    USE surface_mod,                                                           &
     
    17901811       THEN
    17911812          IF ( ws_scheme_sca )  THEN
    1792              CALL advec_s_ws( i, j, sa, 'sa', flux_s_sa,  diss_s_sa, flux_l_sa,&
    1793                               diss_l_sa, i_omp_start, tn  )
     1813             CALL advec_s_ws( advc_flags_s,                                    &
     1814                              i, j, sa, 'sa', flux_s_sa,  diss_s_sa, flux_l_sa,&
     1815                              diss_l_sa, i_omp_start, tn,                      &
     1816                              bc_dirichlet_l  .OR.  bc_radiation_l,            &
     1817                              bc_dirichlet_n  .OR.  bc_radiation_n,            &
     1818                              bc_dirichlet_r  .OR.  bc_radiation_r,            &
     1819                              bc_dirichlet_s  .OR.  bc_radiation_s )
    17941820          ELSE
    17951821             CALL advec_s_pw( i, j, sa )
Note: See TracChangeset for help on using the changeset viewer.