masks_cbl.F90 Source File


This source code is part of the Australian Community Atmosphere Biosphere Land Exchange (CABLE) model. This work is licensed under the CSIRO Open Source Software License Agreement (variation of the BSD / MIT License).

You may not use this file except in compliance with this License. A copy of the License (CSIRO_BSD_MIT_License_v2.0_CABLE.txt) can be found at https://github.com/CABLE-LSM/CABLE/blob/main/



Files dependent on this one

sourcefile~~masks_cbl.f90~~AfferentGraph sourcefile~masks_cbl.f90 masks_cbl.F90 sourcefile~cbl_model_driver_offline.f90 cbl_model_driver_offline.F90 sourcefile~cbl_model_driver_offline.f90->sourcefile~masks_cbl.f90 sourcefile~cable_mpimaster.f90 cable_mpimaster.F90 sourcefile~cable_mpimaster.f90->sourcefile~cbl_model_driver_offline.f90 sourcefile~cable_mpiworker.f90 cable_mpiworker.F90 sourcefile~cable_mpiworker.f90->sourcefile~cbl_model_driver_offline.f90 sourcefile~cable_serial.f90 cable_serial.F90 sourcefile~cable_serial.f90->sourcefile~cbl_model_driver_offline.f90 sourcefile~cable_offline_driver.f90 cable_offline_driver.F90 sourcefile~cable_offline_driver.f90->sourcefile~cable_serial.f90

Source Code

!******************************************************************************
! This source code is part of the
! Australian Community Atmosphere Biosphere Land Exchange (CABLE) model.
! This work is licensed under the CSIRO Open Source Software License
! Agreement (variation of the BSD / MIT License).
!
! You may not use this file except in compliance with this License.
! A copy of the License (CSIRO_BSD_MIT_License_v2.0_CABLE.txt) can be found
! at https://github.com/CABLE-LSM/CABLE/blob/main/
!
!******************************************************************************
MODULE cbl_masks_mod

!-----------------------------------------------------------------------------
! Description:
!   Computes various masks for CABLE:
!     - veg_mask: TRUE where LAI > LAI threshold value
!     - sunlit_mask: TRUE where the cosine of zenith angle is higher than a
!                    specified tolerance.
!     - sunlit_veg_mask: TRUE where veg_mask and sunlit_mask are TRUE.
!
! This MODULE is USEd in:
!     cable_land_albedo_mod_cbl.F90 (JULES),
!     cable_cbm.F90 (ESM1.5),
!     cable_rad_driver.F90 (ESM1.5),
!     cbl_model_driver_offline.F90 (CABLE)
!
! This MODULE contains 3 public Subroutine:
!     fveg_mask,
!     fsunlit_mask,
!     fsunlit_veg_mask
!
! Module specific documentation: https://trac.nci.org.au/trac/cable/wiki/TBC
! Where it fits in the model flow: https://trac.nci.org.au/trac/cable/wiki/TBC
!-----------------------------------------------------------------------------

IMPLICIT NONE

PUBLIC fveg_mask
PUBLIC fsunlit_mask
PUBLIC fsunlit_veg_mask

CONTAINS

SUBROUTINE fveg_mask( veg_mask, mp, lai_thresh, reducedLAIdue2snow )
! Description:
!   Computes mask where LAI is higher than a given threshold.

IMPLICIT NONE
LOGICAL, INTENT(OUT) :: veg_mask(:)

INTEGER, INTENT(IN) :: mp
REAL,    INTENT(IN) :: lai_thresh
REAL,    INTENT(IN) :: reducedLAIdue2snow(mp)
!local vars
INTEGER :: i

veg_mask(:) = .FALSE.
! Define vegetation mask:
DO i=1, mp
  IF ( reducedLAIdue2snow(i) > LAI_thresh ) veg_mask(i) = .TRUE.
END DO

RETURN
END SUBROUTINE fveg_mask

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

SUBROUTINE fsunlit_mask( sunlit_mask, mp, coszen_tols, coszen )
! Description:
!   Computes mask where the sun is above the horizon within a given tolerance.

IMPLICIT NONE
LOGICAL, INTENT(OUT) :: sunlit_mask(:)

INTEGER, INTENT(IN) :: mp
REAL,    INTENT(IN) :: coszen_tols
REAL,    INTENT(IN) :: coszen(mp)
!local vars
INTEGER :: i

sunlit_mask = .FALSE.
! Define sunlit mask:
DO i=1, mp
  IF ( coszen(i) > coszen_tols ) sunlit_mask(i) = .TRUE.
END DO

RETURN
END SUBROUTINE fsunlit_mask

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

SUBROUTINE fsunlit_veg_mask(  sunlit_veg_mask, veg_mask, sunlit_mask, mp )
! Description:
!   Computes mask where the sun is above the horizon within a given tolerance
!   and the LAI is above a given threshold. This is the union of the
!   masks from fsunlit_mask() and fveg_mask().

IMPLICIT NONE
LOGICAL, INTENT(OUT) :: sunlit_veg_mask(:)

INTEGER, INTENT(IN) :: mp
LOGICAL, INTENT(IN) :: veg_mask(mp)
LOGICAL, INTENT(IN) :: sunlit_mask(mp)
!local vars
INTEGER :: i

sunlit_veg_mask = .FALSE.
! Define sunlit AND vegetation mask:
DO i=1, mp
  IF ( veg_mask(i) .AND.  sunlit_mask(i) ) sunlit_veg_mask(i) = .TRUE.
END DO

RETURN
END SUBROUTINE fsunlit_veg_mask

END MODULE cbl_masks_mod