anchor.diff:          real,   intent(in),    dimension(ims:ime, kms:kme, jms:jme) :: z             ! model level heights [m]
           real,   intent(in),    dimension(ims:ime, kms:kme, jms:jme) :: dz            ! model level thickness [m]
           real,   intent(in),    dimension(ims:ime, jms:jme)          :: terrain       ! terrain height above sea level [m]
  +        integer,intent(in),    dimension(ims:ime, jms:jme)          :: land_mask      ! water = 2 (kLC_WATER) land = 1 (kLC_LAND)
           integer,intent(in) :: its, ite, jts, jte, kts, kte_in
           real,   intent(in) :: dt                                 ! time step [s]
           real,   intent(inout), dimension(ims:ime,kms:kme,jms:jme), optional :: tend_qv_pbl   ! output water vapor tendency [kg/kg/s] (for use in other physics)
  
positive.code:         ! don't process the top model level regardless, there shouldn't be any real pbl diffusion occuring there
          kte = min(kme-1, kte_in)
  !       OpenMP parallelization small static chunk size because we typically get a small area that takes most of the time (because of substepping)
          !$omp parallel shared(th, qv, cloud, ice, qrain, qsnow, um, vm, pii, rho, z, dz, terrain) & !, tend_qv_pbl)     &
          !$omp shared(l_m, K_m, Kq_m, stability_m, prandtl_m, virt_pot_temp_zgradient_m, rig_m, shear_m, lastqv_m, ims, ime, jms, jme, kms, kme) &
          !$omp firstprivate(its, ite, jts, jte, kts, kte, dt) private(i, k, j)
  
  
negative.code: !!----------------------------------------------------------
  module pbl_simple
      use data_structures
      use icar_constants,     only : kLC_LAND, kLC_WATER
      use domain_interface,   only : domain_t
      use options_interface,  only : options_t
  
  