SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
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, DGU, UG, U, WM, FM, DGL, &
7  hprogram,hinit, &
8  ki,ksv,ksw, &
9  hsv,pco2,prhoa, &
10  pzenith,pazim,psw_bands,pdir_alb,psca_alb, &
11  pemis,ptsrad,ptsurf, &
12  kyear, kmonth,kday, ptime, &
13  hatmfile,hatmfiletype, &
14  htest )
15 ! #############################################################
16 !
17 !!**** *INIT_INLAND_WATER_n* - routine to initialize inland water
18 !!
19 !! PURPOSE
20 !! -------
21 !!
22 !!** METHOD
23 !! ------
24 !!
25 !! EXTERNAL
26 !! --------
27 !!
28 !!
29 !! IMPLICIT ARGUMENTS
30 !! ------------------
31 !!
32 !! REFERENCE
33 !! ---------
34 !!
35 !!
36 !! AUTHOR
37 !! ------
38 !! V. Masson *Meteo France*
39 !!
40 !! MODIFICATIONS
41 !! -------------
42 !! Original 01/2003
43 !! B. Decharme 04/2013 new coupling variables
44 !-------------------------------------------------------------------------------
45 !
46 !* 0. DECLARATIONS
47 ! ------------
48 !
49 !
50 USE modd_surfex_n, ONLY : flake_model_t
52 !
56 USE modd_surf_atm_n, ONLY : surf_atm_t
58 !
59 !
60 USE modd_csts, ONLY : xtt
61 !
62 !
63 USE yomhook ,ONLY : lhook, dr_hook
64 USE parkind1 ,ONLY : jprb
65 !
66 USE modi_init_flake_n
67 !
68 USE modi_init_ideal_flux
69 !
70 USE modi_init_watflux_n
71 !
72 IMPLICIT NONE
73 !
74 !* 0.1 Declarations of arguments
75 ! -------------------------
76 !
77 !
78 TYPE(data_cover_t), INTENT(INOUT) :: dtco
79 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
80 TYPE(surf_atm_grid_t), INTENT(INOUT) :: ug
81 TYPE(surf_atm_t), INTENT(INOUT) :: u
82 TYPE(watflux_model_t), INTENT(INOUT) :: wm
83 TYPE(flake_model_t), INTENT(INOUT) :: fm
84 TYPE(diag_ideal_t), INTENT(INOUT) :: dgl
85 !
86  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
87  CHARACTER(LEN=3), INTENT(IN) :: hinit ! choice of fields to initialize
88 INTEGER, INTENT(IN) :: ki ! number of points
89 INTEGER, INTENT(IN) :: ksv ! number of scalars
90 INTEGER, INTENT(IN) :: ksw ! number of short-wave spectral bands
91  CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: hsv ! name of all scalar variables
92 REAL, DIMENSION(KI), INTENT(IN) :: pco2 ! CO2 concentration (kg/m3)
93 REAL, DIMENSION(KI), INTENT(IN) :: prhoa ! air density
94 REAL, DIMENSION(KI), INTENT(IN) :: pzenith ! solar zenithal angle
95 REAL, DIMENSION(KI), INTENT(IN) :: pazim ! solar azimuthal angle (rad from N, clock)
96 REAL, DIMENSION(KSW), INTENT(IN) :: psw_bands ! middle wavelength of each band
97 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: pdir_alb ! direct albedo for each band
98 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: psca_alb ! diffuse albedo for each band
99 REAL, DIMENSION(KI), INTENT(OUT) :: pemis ! emissivity
100 REAL, DIMENSION(KI), INTENT(OUT) :: ptsrad ! radiative temperature
101 REAL, DIMENSION(KI), INTENT(OUT) :: ptsurf ! surface effective temperature (K)
102 INTEGER, INTENT(IN) :: kyear ! current year (UTC)
103 INTEGER, INTENT(IN) :: kmonth ! current month (UTC)
104 INTEGER, INTENT(IN) :: kday ! current day (UTC)
105 REAL, INTENT(IN) :: ptime ! current time since
106  ! midnight (UTC, s)
107 !
108  CHARACTER(LEN=28), INTENT(IN) :: hatmfile ! atmospheric file name
109  CHARACTER(LEN=6), INTENT(IN) :: hatmfiletype! atmospheric file type
110  CHARACTER(LEN=2), INTENT(IN) :: htest ! must be equal to 'OK'
111 REAL(KIND=JPRB) :: zhook_handle
112 !
113 !* 0.2 Declarations of local variables
114 ! -------------------------------
115 !
116 !-------------------------------------------------------------------------------
117 !
118 !* 2. Selection of surface scheme
119 ! ---------------------------
120 !
121 IF (lhook) CALL dr_hook('INIT_INLAND_WATER_N',0,zhook_handle)
122 IF (u%CWATER=='NONE ') THEN
123  pdir_alb=0.
124  psca_alb=0.
125  pemis =1.
126  ptsrad =xtt
127  ptsurf =xtt
128 ELSE IF (u%CWATER=='FLUX ') THEN
129  CALL init_ideal_flux(dgl, dgu%LREAD_BUDGETC, &
130  hprogram,hinit,ki,ksv,ksw,hsv,pco2,prhoa, &
131  pzenith,pazim,psw_bands,pdir_alb,psca_alb, &
132  pemis,ptsrad,ptsurf,'OK' )
133 ELSE IF (u%CWATER=='WATFLX') THEN
134  CALL init_watflux_n(dtco, dgu, ug, u, wm, &
135  hprogram,hinit,ki,ksv,ksw,hsv,pco2,prhoa, &
136  pzenith,pazim,psw_bands,pdir_alb,psca_alb, &
137  pemis,ptsrad,ptsurf, &
138  kyear,kmonth,kday,ptime,hatmfile,hatmfiletype,&
139  'OK' )
140 ELSE IF (u%CWATER=='FLAKE ') THEN
141  CALL init_flake_n(dtco, dgu, ug, u, fm, &
142  hprogram,hinit,ki,ksv,ksw,hsv,pco2,prhoa, &
143  pzenith,pazim,psw_bands,pdir_alb,psca_alb, &
144  pemis,ptsrad,ptsurf, &
145  kyear,kmonth,kday,ptime,hatmfile,hatmfiletype,&
146  'OK')
147 END IF
148 IF (lhook) CALL dr_hook('INIT_INLAND_WATER_N',1,zhook_handle)
149 !
150 !
151 !-------------------------------------------------------------------------------
152 !
153 END SUBROUTINE init_inland_water_n
subroutine init_watflux_n(DTCO, DGU, UG, U, WM, 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)
subroutine init_ideal_flux(DGL, OREAD_BUDGETC, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, HTEST)
subroutine init_flake_n(DTCO, DGU, 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:6
subroutine init_inland_water_n(DTCO, DGU, UG, U, WM, FM, DGL, 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)