12 ! Structures for the core radiation code interface
13 control, isolir, atm, dimen, spectrum, bound, socrates_derived_fields)
16 USE def_control,
ONLY: strctrl
17 USE def_atm,
ONLY: stratm
18 USE def_spectrum,
ONLY: strspecdata
19 USE def_dimen,
ONLY: strdim
20 USE def_bound,
ONLY: strbound, allocate_bound
26 TYPE(strctrl),
INTENT(IN) :: control
29 INTEGER,
INTENT(IN) :: isolir
32 TYPE(stratm),
INTENT(IN) :: atm
35 TYPE(strdim),
INTENT(IN) :: dimen
38 TYPE (StrSpecData),
INTENT(IN) :: spectrum
41 TYPE(strbound),
INTENT(OUT) :: bound
44 type (str_socrates_derived_fields),
intent(in) :: socrates_derived_fields
46 call allocate_bound(bound, dimen, spectrum)
49 bound%n_brdf_basis_fnc = 1
52 bound%f_brdf(1,0,0,0) = 4.0
53 if ( isolir == ip_solar )
then
55 bound%rho_alb(1:atm%n_profile, ip_surf_alb_diff, 1:spectrum%basic%n_band) = &
56 socrates_derived_fields%albedoin1
57 bound%rho_alb(1:atm%n_profile, ip_surf_alb_dir, 1:spectrum%basic%n_band) = &
58 socrates_derived_fields%albedoin1
59 else if ( isolir == ip_infra_red )
then
60 bound%rho_alb(1:atm%n_profile, ip_surf_alb_diff, 1:spectrum%basic%n_band) = &
62 bound%rho_alb(1:atm%n_profile, ip_surf_alb_dir, 1:spectrum%basic%n_band) = &
66 bound%zen_0(1:atm%n_profile) = socrates_derived_fields%sec_out
69 bound%solar_irrad(:) = socrates_derived_fields%sol_const * socrates_derived_fields%fraction_lit
71 bound%t_ground(1:atm%n_profile) = socrates_derived_fields%srf_temperature