SURFEX v8.1
General documentation of Surfex
diag_teb_initn.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 diag_teb_init_n (DGO, D, DUT, HPROGRAM,KLU,KSW)
7 ! #####################
8 !
9 !!**** *DIAG_TEB_INIT_n* - routine to initialize TEB diagnostic variables
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !!** METHOD
15 !! ------
16 !!
17 !! EXTERNAL
18 !! --------
19 !!
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !!
28 !! AUTHOR
29 !! ------
30 !! V. Masson *Meteo France*
31 !!
32 !! MODIFICATIONS
33 !! -------------
34 !! Original 01/2004
35 !! V. Masson 10/2013 Adds integrated UTCI diagnostics
36 ! B. decharme 04/2013 : Add DIAG_TS
37 !-------------------------------------------------------------------------------
38 !
39 !* 0. DECLARATIONS
40 ! ------------
41 !
42 USE mode_diag
43 !
46 !
47 USE modd_surf_par, ONLY : xundef
49 !
50 USE modd_utci, ONLY : nutci_stress
51 
52 !
54 !
55 !
56 USE yomhook ,ONLY : lhook, dr_hook
57 USE parkind1 ,ONLY : jprb
58 !
59 IMPLICIT NONE
60 !
61 !* 0.1 Declarations of arguments
62 ! -------------------------
63 !
64 TYPE(diag_options_t), INTENT(IN) :: DGO
65 TYPE(diag_t), INTENT(INOUT) :: D
66 TYPE(diag_utci_teb_t), INTENT(INOUT) :: DUT
67 !
68 INTEGER, INTENT(IN) :: KLU ! size of arrays
69 INTEGER, INTENT(IN) :: KSW ! spectral bands
70  CHARACTER(LEN=6), INTENT(IN):: HPROGRAM ! program calling
71 !
72 !* 0.2 Declarations of local variables
73 ! -------------------------------
74 !
75 INTEGER :: IRESP ! IRESP : return-code if a problem appears
76  CHARACTER(LEN=12) :: YREC ! Name of the article to be read
77 REAL(KIND=JPRB) :: ZHOOK_HANDLE
78 !
79 !-------------------------------------------------------------------------------
80 !
81 !* surface energy budget
82 !
83 IF (lhook) CALL dr_hook('DIAG_TEB_INIT_N',0,zhook_handle)
84 !
85  CALL alloc_bud(dgo,d,klu,ksw)
86 !
87 IF (dgo%LSURF_BUDGET) THEN
88  ALLOCATE(d%XSFCO2(klu))
89  d%XSFCO2 = xundef
90 ELSE
91  ALLOCATE(d%XSFCO2(0))
92 END IF
93 !
94 !* miscellaneous fields
95 !
96 IF (dgo%N2M>0 .AND. dut%LUTCI) THEN
97  !
98  ALLOCATE(dut%XUTCI_IN (klu))
99  ALLOCATE(dut%XUTCI_OUTSUN (klu))
100  ALLOCATE(dut%XUTCI_OUTSHADE (klu))
101  ALLOCATE(dut%XTRAD_SUN (klu))
102  ALLOCATE(dut%XTRAD_SHADE (klu))
103  ALLOCATE(dut%XUTCIC_IN (klu,nutci_stress))
104  ALLOCATE(dut%XUTCIC_OUTSUN (klu,nutci_stress))
105  ALLOCATE(dut%XUTCIC_OUTSHADE(klu,nutci_stress))
106  !
107  dut%XUTCI_IN = xundef
108  dut%XUTCI_OUTSUN = xundef
109  dut%XUTCI_OUTSHADE = xundef
110  dut%XTRAD_SUN = xundef
111  dut%XTRAD_SHADE = xundef
112  dut%XUTCIC_IN = 0.
113  dut%XUTCIC_OUTSUN = 0.
114  dut%XUTCIC_OUTSHADE = 0.
115  !
116 ELSE
117  ALLOCATE(dut%XUTCI_IN (0))
118  ALLOCATE(dut%XUTCI_OUTSUN (0))
119  ALLOCATE(dut%XUTCI_OUTSHADE (0))
120  ALLOCATE(dut%XTRAD_SUN (0))
121  ALLOCATE(dut%XTRAD_SHADE (0))
122  ALLOCATE(dut%XUTCIC_IN (0,0))
123  ALLOCATE(dut%XUTCIC_OUTSUN (0,0))
124  ALLOCATE(dut%XUTCIC_OUTSHADE(0,0))
125 ENDIF
126 !
127 IF (lhook) CALL dr_hook('DIAG_TEB_INIT_N',1,zhook_handle)
128 !
129 !-------------------------------------------------------------------------------
130 !
131 END SUBROUTINE diag_teb_init_n
integer, parameter nutci_stress
Definition: modd_utci.F90:38
subroutine diag_teb_init_n(DGO, D, DUT, HPROGRAM, KLU, KSW)
real, parameter xundef
subroutine alloc_bud(DGO, DA, KLU, KSW)
Definition: mode_diag.F90:137
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15