source: LMDZ6/trunk/libf/phylmd/ecrad.v1.5.1/radsurf_3d_vegetation.F90.or @ 5451

Last change on this file since 5451 was 3908, checked in by idelkadi, 4 years ago

Online implementation of the radiative transfer code ECRAD in the LMDZ model.

  • Inclusion of the ecrad directory containing the sources of the ECRAD code
    • interface routine : radiation_scheme.F90
  • Adaptation of compilation scripts :
    • compilation under CPP key CPP_ECRAD
    • compilation with option "-rad ecard" or "-ecard true"
    • The "-rad old/rtm/ecran" build option will need to replace the "-rrtm true" and "-ecrad true" options in the future.
  • Runing LMDZ simulations with ecrad, you need :
    • logical key iflag_rrtm = 2 in physiq.def
    • namelist_ecrad (DefLists?)
    • the directory "data" containing the configuration files is temporarily placed in ../libfphylmd/ecrad/
  • Compilation and execution are tested in the 1D case. The repository under svn would allow to continue the implementation work: tests, verification of the results, ...
File size: 2.3 KB
Line 
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
16module radsurf_3d_vegetation
17
18contains
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
73end module radsurf_3d_vegetation
Note: See TracBrowser for help on using the repository browser.