| 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 |
|---|