SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
write_bld_descriptionn.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 write_bld_description_n (DGU, U, &
7  bdd, &
8  hprogram)
9 ! #########################
10 !
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !! METHOD
16 !! ------
17 !!
18 !!
19 !! EXTERNAL
20 !! --------
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !! AUTHOR
29 !! ------
30 !!
31 !! V. Masson Meteo-France
32 !!
33 !! MODIFICATION
34 !! ------------
35 !!
36 !! Original 05/2012
37 !
38 !----------------------------------------------------------------------------
39 !
40 !* 0. DECLARATION
41 ! -----------
42 !
43 !
44 !
45 !
46 !
48 USE modd_surf_atm_n, ONLY : surf_atm_t
49 !
51 !
53 USE modi_abor1_sfx
54 !
55 !
56 USE yomhook ,ONLY : lhook, dr_hook
57 USE parkind1 ,ONLY : jprb
58 !
59 IMPLICIT NONE
60 !
61 !* 0.1 Declaration of arguments
62 ! ------------------------
63 !
64 !
65 !
66 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
67 TYPE(surf_atm_t), INTENT(INOUT) :: u
68 !
69 TYPE(bld_desc_t), INTENT(INOUT) :: bdd
70 !
71  CHARACTER(LEN=6), INTENT(IN) :: hprogram
72 !
73 !
74 !* 0.2 Declaration of local variables
75 ! ------------------------------
76 !
77 REAL(KIND=JPRB) :: zhook_handle
78 !
79 REAL, DIMENSION(:), ALLOCATABLE :: zwork
80 INTEGER :: iresp
81 INTEGER :: i1, i2
82 INTEGER :: jl
83 INTEGER :: itot
84  CHARACTER(LEN=100) :: ycomment
85 !-------------------------------------------------------------------------------
86 !-------------------------------------------------------------------------------
87 !
88 IF (lhook) CALL dr_hook('WRITE_BLD_DESCRIPTION_n',0,zhook_handle)
89 !
90 !-------------------------------------------------------------------------------
91 !
92 !* 1. Writes configuration variables of the descriptive data
93 ! ------------------------------------------------------
94 !
95 ALLOCATE(zwork(7))
96 !
97 zwork(1) = float(bdd%NDESC_BLD)
98 zwork(2) = float(bdd%NDESC_AGE)
99 zwork(3) = float(bdd%NDESC_USE)
100 zwork(4) = float(bdd%NDESC_WALL_LAYER)
101 zwork(5) = float(bdd%NDESC_ROOF_LAYER)
102 zwork(6) = float(bdd%NDESC_ROAD_LAYER)
103 zwork(7) = float(bdd%NDESC_FLOOR_LAYER)
104 !
105 ycomment='Configuration numbers for descriptive building data'
106  CALL write_surf(dgu, u, &
107  hprogram,'BLD_DESC_CNF',zwork,iresp,ycomment,'-','Bld_dimensions ')
108 DEALLOCATE(zwork)
109 !
110 !-------------------------------------------------------------------------------
111 !
112 !* 3. Writes descriptive data
113 ! -----------------------
114 !
115 itot=(21+3*bdd%NDESC_ROOF_LAYER+3*bdd%NDESC_ROAD_LAYER+3*bdd%NDESC_WALL_LAYER+3*bdd%NDESC_FLOOR_LAYER)*bdd%NDESC_CODE &
116  + 9*bdd%NDESC_USE+2*bdd%NDESC_AGE+bdd%NDESC_BLD
117 ALLOCATE(zwork(itot))
118 !
119 !
120 i1=0 ; i2=0
121  CALL up_desc_ind_w(bdd%NDESC_BLD) ; zwork(i1:i2) = float(bdd%NDESC_BLD_LIST(:))
122  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = float(bdd%NDESC_CODE_LIST(:))
123  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_ALB_ROOF(:)
124  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_ALB_ROAD(:)
125  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_ALB_WALL(:)
126  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_EMIS_ROOF(:)
127  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_EMIS_ROAD(:)
128  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_EMIS_WALL(:)
129 DO jl=1,bdd%NDESC_ROOF_LAYER
130  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_HC_ROOF(:,jl)
131 END DO
132 DO jl=1,bdd%NDESC_ROOF_LAYER
133  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_TC_ROOF(:,jl)
134 END DO
135 DO jl=1,bdd%NDESC_ROOF_LAYER
136  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_D_ROOF (:,jl)
137 END DO
138 DO jl=1,bdd%NDESC_ROAD_LAYER
139  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_HC_ROAD(:,jl)
140 END DO
141 DO jl=1,bdd%NDESC_ROAD_LAYER
142  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_TC_ROAD(:,jl)
143 END DO
144 DO jl=1,bdd%NDESC_ROAD_LAYER
145  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_D_ROAD (:,jl)
146 END DO
147 DO jl=1,bdd%NDESC_WALL_LAYER
148  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_HC_WALL(:,jl)
149 END DO
150 DO jl=1,bdd%NDESC_WALL_LAYER
151  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_TC_WALL(:,jl)
152 END DO
153 DO jl=1,bdd%NDESC_WALL_LAYER
154  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_D_WALL (:,jl)
155 END DO
156 DO jl=1,bdd%NDESC_FLOOR_LAYER
157  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_HC_FLOOR(:,jl)
158 END DO
159 DO jl=1,bdd%NDESC_FLOOR_LAYER
160  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_TC_FLOOR(:,jl)
161 END DO
162 DO jl=1,bdd%NDESC_FLOOR_LAYER
163  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_D_FLOOR (:,jl)
164 END DO
165 !
166  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_SHGC(:)
167  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_U_WIN(:)
168  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_GR(:)
169 !
170  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_F_WASTE_CAN(:)
171  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_F_WATER_COND(:)
172  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_COP_RAT(:)
173  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_EFF_HEAT(:)
174  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_INF(:)
175  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_V_VENT(:)
176  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_GREENROOF(:)
177  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_EMIS_PANEL(:)
178  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_ALB_PANEL(:)
179  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_EFF_PANEL(:)
180  CALL up_desc_ind_w(bdd%NDESC_CODE) ; zwork(i1:i2) = bdd%XDESC_FRAC_PANEL(:)
181 !
182  CALL up_desc_ind_w(bdd%NDESC_USE) ; zwork(i1:i2) = float(bdd%NDESC_USE_LIST(:))
183  CALL up_desc_ind_w(bdd%NDESC_USE) ; zwork(i1:i2) = bdd%XDESC_TCOOL_TARGET(:)
184  CALL up_desc_ind_w(bdd%NDESC_USE) ; zwork(i1:i2) = bdd%XDESC_THEAT_TARGET(:)
185  CALL up_desc_ind_w(bdd%NDESC_USE) ; zwork(i1:i2) = bdd%XDESC_QIN(:)
186  CALL up_desc_ind_w(bdd%NDESC_USE) ; zwork(i1:i2) = bdd%XDESC_QIN_FLAT(:)
187  CALL up_desc_ind_w(bdd%NDESC_USE) ; zwork(i1:i2) = bdd%XDESC_SHGC_SH(:)
188  CALL up_desc_ind_w(bdd%NDESC_USE) ; zwork(i1:i2) = bdd%XDESC_SHADE(:)
189  CALL up_desc_ind_w(bdd%NDESC_USE) ; zwork(i1:i2) = bdd%XDESC_NATVENT(:)
190  CALL up_desc_ind_w(bdd%NDESC_USE) ; zwork(i1:i2) = bdd%XDESC_RESIDENTIAL(:)
191 !
192  CALL up_desc_ind_w(bdd%NDESC_AGE) ; zwork(i1:i2) = float(bdd%NDESC_AGE_LIST(:))
193  CALL up_desc_ind_w(bdd%NDESC_AGE) ; zwork(i1:i2) = float(bdd%NDESC_AGE_DATE(:))
194 !
195 ycomment='Descriptive building data'
196  CALL write_surf(dgu, u, &
197  hprogram,'BLD_DESC_DAT',zwork,iresp,ycomment,'-','Bld_parameters ')
198 DEALLOCATE(zwork)
199 !
200 IF (lhook) CALL dr_hook('WRITE_BLD_DESCRIPTION_n',1,zhook_handle)
201 !-------------------------------------------------------------------------------
202  CONTAINS
203 SUBROUTINE up_desc_ind_w(K)
204 INTEGER, INTENT(IN) :: k
205 i1=i2+1
206 i2=i2+k
207 END SUBROUTINE up_desc_ind_w
208 !-------------------------------------------------------------------------------
209 !
210 END SUBROUTINE write_bld_description_n
subroutine write_bld_description_n(DGU, U, BDD, HPROGRAM)
subroutine up_desc_ind_w(K)