[3908] | 1 | ! radsurf_3d_vegetation.f90 - Compute radiative transfer in 3D vegetation canopy |
---|
| 2 | ! |
---|
| 3 | ! (C) Copyright 2018- ECMWF. |
---|
| 4 | ! |
---|
| 5 | ! This software is licensed under the terms of the Apache Licence Version 2.0 |
---|
| 6 | ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. |
---|
| 7 | ! |
---|
| 8 | ! In applying this licence, ECMWF does not waive the privileges and immunities |
---|
| 9 | ! granted to it by virtue of its status as an intergovernmental organisation |
---|
| 10 | ! nor does it submit to any jurisdiction. |
---|
| 11 | ! |
---|
| 12 | ! Author: Robin Hogan |
---|
| 13 | ! Email: r.j.hogan@ecmwf.int |
---|
| 14 | ! |
---|
| 15 | |
---|
| 16 | module radsurf_3d_vegetation |
---|
| 17 | |
---|
| 18 | contains |
---|
| 19 | subroutine calc_boundary_conditions_sw(config, n_albedo_bands, tile_fraction, & |
---|
| 20 | & canopy_depth, vegetation_optical_depth, vegetation_albedo, & |
---|
| 21 | & ground_albedo_diffuse, ground_albedo_direct, & |
---|
| 22 | & ref_dif, tra_dif, ref_dir, tra_dir_dif, tra_dir_dir, & |
---|
| 23 | & albedo_diffuse_reg, albedo_direct_reg, & |
---|
| 24 | & albedo_diffuse_out, albedo_direct_out, & |
---|
| 25 | & ext_air, ssa_air, g_air) |
---|
| 26 | |
---|
| 27 | use parkind, only : jprb |
---|
| 28 | use radiation_config, only : config_type |
---|
| 29 | |
---|
| 30 | implicit none |
---|
| 31 | |
---|
| 32 | ! Number of regions |
---|
| 33 | integer, parameter :: nreg = 2 |
---|
| 34 | |
---|
| 35 | type(config_type), intent(in) :: config |
---|
| 36 | |
---|
| 37 | integer, intent(in) :: n_albedo_bands |
---|
| 38 | |
---|
| 39 | ! Fraction of gridbox occupied by this tile |
---|
| 40 | real(kind=jprb), intent(in) :: tile_fraction |
---|
| 41 | |
---|
| 42 | ! Depth of vegetation canopy in metres |
---|
| 43 | real(kind=jprb), intent(in) :: canopy_depth |
---|
| 44 | |
---|
| 45 | ! Optical properties of vegetation |
---|
| 46 | real(kind=jprb), intent(in) :: vegetation_optical_depth |
---|
| 47 | real(kind=jprb), intent(in) :: vegetation_albedo(:) ! Spectral interval |
---|
| 48 | |
---|
| 49 | ! Optical properties of the ground (function of spectral interval) |
---|
| 50 | real(kind=jprb), intent(in) :: ground_albedo_diffuse(:) |
---|
| 51 | real(kind=jprb), intent(in) :: ground_albedo_direct(:) |
---|
| 52 | |
---|
| 53 | ! Geometric properties |
---|
| 54 | real(kind=jprb), intent(in) :: vegetation_fraction |
---|
| 55 | real(kind=jprb), intent(in) :: vegetation_normalized_perimeter ! m-1 |
---|
| 56 | |
---|
| 57 | |
---|
| 58 | ! Intermediate properties to store |
---|
| 59 | real(kind=jprb), intent(in), dimension(n_albedo_bands,nreg,nreg) :: ref_dif, tra_dif, tra_dir_dif, tra_dir_dir |
---|
| 60 | |
---|
| 61 | ! Outputs |
---|
| 62 | real(kind=jprb), intent(inout) :: albedo_diffuse_out, albedo_direct_out |
---|
| 63 | |
---|
| 64 | |
---|
| 65 | |
---|
| 66 | end subroutine calc_boundary_conditions_sw |
---|
| 67 | |
---|
| 68 | subroutine calc_boundary_conditions_lw |
---|
| 69 | |
---|
| 70 | end subroutine calc_boundary_conditions_lw |
---|
| 71 | |
---|
| 72 | |
---|
| 73 | end module radsurf_3d_vegetation |
---|