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