SURFEX v8.1
General documentation of Surfex
init_inland_watern.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #############################################################
6  SUBROUTINE init_inland_water_n (DTCO, OREAD_BUDGETC, UG, U, WM, FM, &
7  DGO, DL, DLC, HPROGRAM,HINIT, KI, KSV,&
8  KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, &
9  PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, &
10  PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, &
11  PTIME, HATMFILE, HATMFILETYPE, HTEST )
12 ! #############################################################
13 !
14 !!**** *INIT_INLAND_WATER_n* - routine to initialize inland water
15 !!
16 !! PURPOSE
17 !! -------
18 !!
19 !!** METHOD
20 !! ------
21 !!
22 !! EXTERNAL
23 !! --------
24 !!
25 !!
26 !! IMPLICIT ARGUMENTS
27 !! ------------------
28 !!
29 !! REFERENCE
30 !! ---------
31 !!
32 !!
33 !! AUTHOR
34 !! ------
35 !! V. Masson *Meteo France*
36 !!
37 !! MODIFICATIONS
38 !! -------------
39 !! Original 01/2003
40 !! B. Decharme 04/2013 new coupling variables
41 !-------------------------------------------------------------------------------
42 !
43 !* 0. DECLARATIONS
44 ! ------------
45 !
46 !
47 USE modd_surfex_n, ONLY : flake_model_t
49 !
52 USE modd_surf_atm_n, ONLY : surf_atm_t
54 !
55 !
56 USE modd_csts, ONLY : xtt
57 !
58 !
59 USE yomhook ,ONLY : lhook, dr_hook
60 USE parkind1 ,ONLY : jprb
61 !
62 USE modi_init_flake_n
63 !
64 USE modi_init_ideal_flux
65 !
66 USE modi_init_watflux_n
67 !
68 IMPLICIT NONE
69 !
70 !* 0.1 Declarations of arguments
71 ! -------------------------
72 !
73 !
74 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
75 LOGICAL, INTENT(IN) :: OREAD_BUDGETC
76 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
77 TYPE(surf_atm_t), INTENT(INOUT) :: U
78 TYPE(watflux_model_t), INTENT(INOUT) :: WM
79 TYPE(flake_model_t), INTENT(INOUT) :: FM
80 TYPE(diag_options_t), INTENT(INOUT) :: DGO
81 TYPE(diag_t), INTENT(INOUT) :: DL
82 TYPE(diag_t), INTENT(INOUT) :: DLC
83 !
84  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
85  CHARACTER(LEN=3), INTENT(IN) :: HINIT ! choice of fields to initialize
86 INTEGER, INTENT(IN) :: KI ! number of points
87 INTEGER, INTENT(IN) :: KSV ! number of scalars
88 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands
89  CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: HSV ! name of all scalar variables
90 REAL, DIMENSION(KI), INTENT(IN) :: PCO2 ! CO2 concentration (kg/m3)
91 REAL, DIMENSION(KI), INTENT(IN) :: PRHOA ! air density
92 REAL, DIMENSION(KI), INTENT(IN) :: PZENITH ! solar zenithal angle
93 REAL, DIMENSION(KI), INTENT(IN) :: PAZIM ! solar azimuthal angle (rad from N, clock)
94 REAL, DIMENSION(KSW), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band
95 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB ! direct albedo for each band
96 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each band
97 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS ! emissivity
98 REAL, DIMENSION(KI), INTENT(OUT) :: PTSRAD ! radiative temperature
99 REAL, DIMENSION(KI), INTENT(OUT) :: PTSURF ! surface effective temperature (K)
100 INTEGER, INTENT(IN) :: KYEAR ! current year (UTC)
101 INTEGER, INTENT(IN) :: KMONTH ! current month (UTC)
102 INTEGER, INTENT(IN) :: KDAY ! current day (UTC)
103 REAL, INTENT(IN) :: PTIME ! current time since
104  ! midnight (UTC, s)
105 !
106  CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name
107  CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type
108  CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK'
109 REAL(KIND=JPRB) :: ZHOOK_HANDLE
110 !
111 !* 0.2 Declarations of local variables
112 ! -------------------------------
113 !
114 !-------------------------------------------------------------------------------
115 !
116 !* 2. Selection of surface scheme
117 ! ---------------------------
118 !
119 IF (lhook) CALL dr_hook('INIT_INLAND_WATER_N',0,zhook_handle)
120 IF (u%CWATER=='NONE ') THEN
121  pdir_alb=0.
122  psca_alb=0.
123  pemis =1.
124  ptsrad =xtt
125  ptsurf =xtt
126 ELSE IF (u%CWATER=='FLUX ') THEN
127  CALL init_ideal_flux(dgo, dl, dlc, oread_budgetc, hprogram, hinit, &
128  ki, ksv, ksw, hsv, pdir_alb, psca_alb, pemis, &
129  ptsrad, ptsurf, 'OK' )
130 ELSE IF (u%CWATER=='WATFLX') THEN
131  CALL init_watflux_n(dtco, oread_budgetc, ug, u, wm, &
132  hprogram, hinit, ki, ksv, ksw, hsv, pco2, prhoa,&
133  pzenith, pazim, psw_bands, pdir_alb, psca_alb, &
134  pemis, ptsrad, ptsurf, kyear, kmonth, kday, &
135  ptime, hatmfile, hatmfiletype, 'OK' )
136 ELSE IF (u%CWATER=='FLAKE ') THEN
137  CALL init_flake_n(dtco, oread_budgetc, ug, u, fm, &
138  hprogram, hinit, ki, ksv, ksw, hsv, pco2, prhoa, &
139  pzenith, pazim, psw_bands, pdir_alb, psca_alb, &
140  pemis, ptsrad, ptsurf, kyear, kmonth, kday, &
141  ptime, hatmfile, hatmfiletype, 'OK')
142 END IF
143 IF (lhook) CALL dr_hook('INIT_INLAND_WATER_N',1,zhook_handle)
144 !
145 !
146 !-------------------------------------------------------------------------------
147 !
148 END SUBROUTINE init_inland_water_n
subroutine init_watflux_n(DTCO, OREAD_BUDGETC, UG, U, WM, HPROGRAM, HINIT,
subroutine init_ideal_flux(DGO, D, DC, OREAD_BUDGETC, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, HTEST)
subroutine init_inland_water_n(DTCO, OREAD_BUDGETC, UG, U, WM, FM
subroutine init_flake_n(DTCO, OREAD_BUDGETC, UG, U, FM, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
Definition: init_flaken.F90:15
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
real, save xtt
Definition: modd_csts.F90:66