39 CHARACTER(len=10),
PARAMETER:: &
48 CHARACTER(len=1),
PARAMETER:: &
58 CHARACTER(len=15) :: header
59 CHARACTER(len=12) :: unit
60 CHARACTER(len=10) :: fmt
61 CHARACTER(len=100) :: longnm
62 CHARACTER(len=1) :: aggreg
63 CHARACTER(len=10) :: group
72 varattr(
'Year',
'YYYY',
fy,
'Year',
at,
'datetime', 0), &
73 varattr(
'DOY',
'DOY',
ft,
'Day of Year',
at,
'datetime', 0), &
74 varattr(
'Hour',
'HH',
ft,
'Hour',
at,
'datetime', 0), &
75 varattr(
'Min',
'MM',
ft,
'Minute',
at,
'datetime', 0), &
76 varattr(
'Dectime',
'-',
fd,
'Decimal time',
at,
'datetime', 0) &
83 varattr(
'Kdown',
'W m-2',
f104,
'Incoming shortwave radiation',
aa,
'SUEWS', 0), &
84 varattr(
'Kup',
'W m-2',
f104,
'Outgoing shortwave radiation',
aa,
'SUEWS', 0), &
85 varattr(
'Ldown',
'W m-2',
f104,
'Incoming longwave radiation',
aa,
'SUEWS', 0), &
86 varattr(
'Lup',
'W m-2',
f104,
'Outgoing longwave radiation',
aa,
'SUEWS', 0), &
87 varattr(
'Tsurf',
'degC',
f104,
'Bulk surface temperature',
aa,
'SUEWS', 0), &
88 varattr(
'QN',
'W m-2',
f104,
'Net all-wave radiation',
aa,
'SUEWS', 0), &
89 varattr(
'QF',
'W m-2',
f104,
'Anthropogenic heat flux',
aa,
'SUEWS', 0), &
90 varattr(
'QS',
'W m-2',
f104,
'Net storage heat flux',
aa,
'SUEWS', 0), &
91 varattr(
'QH',
'W m-2',
f104,
'Sensible heat flux',
aa,
'SUEWS', 0), &
92 varattr(
'QE',
'W m-2',
f104,
'Latent heat flux',
aa,
'SUEWS', 0), &
93 varattr(
'QHlumps',
'W m-2',
f104,
'Sensible heat flux (using LUMPS)',
aa,
'SUEWS', 1), &
94 varattr(
'QElumps',
'W m-2',
f104,
'Latent heat flux (using LUMPS)',
aa,
'SUEWS', 1), &
95 varattr(
'QHresis',
'W m-2',
f104,
'Sensible heat flux (resistance method)',
aa,
'SUEWS', 1), &
100 varattr(
'TotCh',
'mm',
f146,
'Surface and soil moisture change',
as,
'SUEWS', 0), &
101 varattr(
'SurfCh',
'mm',
f146,
'Surface moisture change',
as,
'SUEWS', 0), &
102 varattr(
'State',
'mm',
f104,
'Surface Wetness State',
al,
'SUEWS', 0), &
103 varattr(
'NWtrState',
'mm',
f104,
'Surface wetness state (non-water surfaces)',
al,
'SUEWS', 0), &
104 varattr(
'Drainage',
'mm',
f104,
'Drainage',
as,
'SUEWS', 0), &
105 varattr(
'SMD',
'mm',
f94,
'Soil Moisture Deficit',
al,
'SUEWS', 0), &
106 varattr(
'FlowCh',
'mm',
f104,
'Additional flow into water body',
as,
'SUEWS', 1), &
107 varattr(
'AddWater',
'mm',
f104,
'Addtional water from other grids',
as,
'SUEWS', 1), &
108 varattr(
'ROSoil',
'mm',
f104,
'Runoff to soil',
as,
'SUEWS', 1), &
109 varattr(
'ROPipe',
'mm',
f104,
'Runoff to pipes',
as,
'SUEWS', 1), &
110 varattr(
'ROImp',
'mm',
f104,
'Runoff over impervious surfaces',
as,
'SUEWS', 1), &
111 varattr(
'ROVeg',
'mm',
f104,
'Runoff over vegetated surfaces',
as,
'SUEWS', 1), &
112 varattr(
'ROWater',
'mm',
f104,
'Runoff for water surface',
as,
'SUEWS', 1), &
113 varattr(
'WUInt',
'mm',
f94,
'InternalWaterUse',
as,
'SUEWS', 1), &
114 varattr(
'WUEveTr',
'mm',
f94,
'Water use for evergreen trees',
as,
'SUEWS', 1), &
115 varattr(
'WUDecTr',
'mm',
f94,
'Water use for deciduous trees',
as,
'SUEWS', 1), &
116 varattr(
'WUGrass',
'mm',
f94,
'Water use for grass',
as,
'SUEWS', 1), &
117 varattr(
'SMDPaved',
'mm',
f94,
'Soil moisture deficit for paved surface',
al,
'SUEWS', 1), &
118 varattr(
'SMDBldgs',
'mm',
f94,
'Soil moisture deficit for building surface',
al,
'SUEWS', 1), &
119 varattr(
'SMDEveTr',
'mm',
f94,
'Soil moisture deficit for evergreen tree surface',
al,
'SUEWS', 1), &
120 varattr(
'SMDDecTr',
'mm',
f94,
'Soil moisture deficit for deciduous tree surface',
al,
'SUEWS', 1), &
121 varattr(
'SMDGrass',
'mm',
f94,
'Soil moisture deficit for grass surface',
al,
'SUEWS', 1), &
122 varattr(
'SMDBSoil',
'mm',
f94,
'Soil moisture deficit for bare soil surface',
al,
'SUEWS', 1), &
123 varattr(
'StPaved',
'mm',
f94,
'Surface wetness state for paved surface',
al,
'SUEWS', 1), &
124 varattr(
'StBldgs',
'mm',
f94,
'Surface wetness state for building surface',
al,
'SUEWS', 1), &
125 varattr(
'StEveTr',
'mm',
f94,
'Surface wetness state for evergreen tree surface',
al,
'SUEWS', 1), &
126 varattr(
'StDecTr',
'mm',
f94,
'Surface wetness state for deciduous tree surface',
al,
'SUEWS', 1), &
127 varattr(
'StGrass',
'mm',
f94,
'Surface wetness state for grass surface',
al,
'SUEWS', 1), &
128 varattr(
'StBSoil',
'mm',
f94,
'Surface wetness state for bare soil surface',
al,
'SUEWS', 1), &
129 varattr(
'StWater',
'mm',
f104,
'Surface wetness state for water surface',
al,
'SUEWS', 1), &
130 varattr(
'Zenith',
'degree',
f104,
'Solar zenith angle',
al,
'SUEWS', 0), &
131 varattr(
'Azimuth',
'degree',
f94,
'Solar azimuth angle',
al,
'SUEWS', 0), &
132 varattr(
'AlbBulk',
'1',
f94,
'Bulk albedo',
aa,
'SUEWS', 0), &
133 varattr(
'Fcld',
'1',
f94,
'Cloud fraction',
aa,
'SUEWS', 0), &
134 varattr(
'LAI',
'm2 m-2',
f94,
'Leaf area index',
aa,
'SUEWS', 0), &
135 varattr(
'z0m',
'm',
f94,
'Roughness length for momentum',
aa,
'SUEWS', 1), &
136 varattr(
'zdm',
'm',
f94,
'Zero-plane displacement height',
aa,
'SUEWS', 1), &
137 varattr(
'UStar',
'm s-1',
f94,
'Friction velocity',
aa,
'SUEWS', 0), &
138 varattr(
'Lob',
'm',
f146,
'Obukhov length',
aa,
'SUEWS', 0), &
139 varattr(
'RA',
's m-1',
f104,
'Aerodynamic resistance',
aa,
'SUEWS', 1), &
140 varattr(
'RS',
's m-1',
f104,
'Surface resistance',
aa,
'SUEWS', 1), &
141 varattr(
'Fc',
'umol m-2 s-1',
f94,
'CO2 flux',
aa,
'SUEWS', 0), &
142 varattr(
'FcPhoto',
'umol m-2 s-1',
f94,
'CO2 flux from photosynthesis',
aa,
'SUEWS', 1), &
143 varattr(
'FcRespi',
'umol m-2 s-1',
f94,
'CO2 flux from respiration',
aa,
'SUEWS', 1), &
144 varattr(
'FcMetab',
'umol m-2 s-1',
f94,
'CO2 flux from metabolism',
aa,
'SUEWS', 1), &
145 varattr(
'FcTraff',
'umol m-2 s-1',
f94,
'CO2 flux from traffic',
aa,
'SUEWS', 1), &
146 varattr(
'FcBuild',
'umol m-2 s-1',
f94,
'CO2 flux from buildings',
aa,
'SUEWS', 1), &
147 varattr(
'FcPoint',
'umol m-2 s-1',
f94,
'CO2 flux from point source',
aa,
'SUEWS', 1), &
148 varattr(
'QNSnowFr',
'W m-2',
f94,
'Net all-wave radiation for non-snow area',
aa,
'SUEWS', 2), &
149 varattr(
'QNSnow',
'W m-2',
f94,
'Net all-wave radiation for snow area',
aa,
'SUEWS', 2), &
150 varattr(
'AlbSnow',
'-',
f94,
'Snow albedo',
aa,
'SUEWS', 2), &
151 varattr(
'QM',
'W m-2',
f106,
'Snow-related heat exchange',
aa,
'SUEWS', 2), &
152 varattr(
'QMFreeze',
'W m-2',
f146,
'Internal energy change',
aa,
'SUEWS', 2), &
153 varattr(
'QMRain',
'W m-2',
f106,
'Heat released by rain on snow',
aa,
'SUEWS', 2), &
154 varattr(
'SWE',
'mm',
f104,
'Snow water equivalent',
aa,
'SUEWS', 2), &
155 varattr(
'MeltWater',
'mm',
f104,
'Meltwater',
aa,
'SUEWS', 2), &
156 varattr(
'MeltWStore',
'mm',
f104,
'Meltwater store',
aa,
'SUEWS', 2), &
157 varattr(
'SnowCh',
'mm',
f104,
'Change in snow pack',
as,
'SUEWS', 2), &
158 varattr(
'SnowRPaved',
'mm',
f94,
'Snow removed from paved surface',
as,
'SUEWS', 2), &
159 varattr(
'SnowRBldgs',
'mm',
f94,
'Snow removed from building surface',
as,
'SUEWS', 2), &
160 varattr(
'Ts',
'degC',
f94,
'Skin temperature',
aa,
'SUEWS', 0), &
161 varattr(
'T2',
'degC',
f94,
'Air temperature at 2 m',
aa,
'SUEWS', 0), &
162 varattr(
'Q2',
'g kg-1',
f94,
'Specific humidity at 2 m',
aa,
'SUEWS', 0), &
163 varattr(
'U10',
'm s-1',
f94,
'Wind speed at 10 m',
aa,
'SUEWS', 0), &
164 varattr(
'RH2',
'%',
f94,
'Relative humidity at 2 m',
aa,
'SUEWS', 0) &
171 varattr(
'azimuth',
'to_add',
f106,
'azimuth',
aa,
'SOLWEIG', 0), &
172 varattr(
'altitude',
'to_add',
f106,
'altitude',
aa,
'SOLWEIG', 0), &
173 varattr(
'GlobalRad',
'to_add',
f106,
'GlobalRad',
aa,
'SOLWEIG', 0), &
174 varattr(
'DiffuseRad',
'to_add',
f106,
'DiffuseRad',
aa,
'SOLWEIG', 0), &
175 varattr(
'DirectRad',
'to_add',
f106,
'DirectRad',
aa,
'SOLWEIG', 0), &
176 varattr(
'Kdown2d',
'to_add',
f106,
'Kdown2d',
aa,
'SOLWEIG', 0), &
177 varattr(
'Kup2d',
'to_add',
f106,
'Kup2d',
aa,
'SOLWEIG', 0), &
178 varattr(
'Ksouth',
'to_add',
f106,
'Ksouth',
aa,
'SOLWEIG', 0), &
179 varattr(
'Kwest',
'to_add',
f106,
'Kwest',
aa,
'SOLWEIG', 0), &
180 varattr(
'Knorth',
'to_add',
f106,
'Knorth',
aa,
'SOLWEIG', 0), &
181 varattr(
'Keast',
'to_add',
f106,
'Keast',
aa,
'SOLWEIG', 0), &
182 varattr(
'Ldown2d',
'to_add',
f106,
'Ldown2d',
aa,
'SOLWEIG', 0), &
183 varattr(
'Lup2d',
'to_add',
f106,
'Lup2d',
aa,
'SOLWEIG', 0), &
184 varattr(
'Lsouth',
'to_add',
f106,
'Lsouth',
aa,
'SOLWEIG', 0), &
185 varattr(
'Lwest',
'to_add',
f106,
'Lwest',
aa,
'SOLWEIG', 0), &
186 varattr(
'Lnorth',
'to_add',
f106,
'Lnorth',
aa,
'SOLWEIG', 0), &
187 varattr(
'Least',
'to_add',
f106,
'Least',
aa,
'SOLWEIG', 0), &
192 varattr(
'shadow',
'to_add',
f106,
'shadow',
aa,
'SOLWEIG', 0), &
194 varattr(
'svfbuveg',
'to_add',
f106,
'svfbuveg',
aa,
'SOLWEIG', 0), &
212 varattr(
'Press_hPa',
'to_add',
f104,
'Press_hPa',
aa,
'BL', 0), &
216 varattr(
'lv_J_kg',
'to_add',
f146,
'lv_J_kg',
aa,
'BL', 0), &
226 varattr(
'SWE_Paved',
'mm',
f106,
'Snow water equivalent for paved surface',
aa,
'snow', 0), &
227 varattr(
'SWE_Bldgs',
'mm',
f106,
'Snow water equivalent for building surface',
aa,
'snow', 0), &
228 varattr(
'SWE_EveTr',
'mm',
f106,
'Snow water equivalent for evergreen tree surface',
aa,
'snow', 0), &
229 varattr(
'SWE_DecTr',
'mm',
f106,
'Snow water equivalent for deciduous tree surface',
aa,
'snow', 0), &
230 varattr(
'SWE_Grass',
'mm',
f106,
'Snow water equivalent for grass surface',
aa,
'snow', 0), &
231 varattr(
'SWE_BSoil',
'mm',
f106,
'Snow water equivalent for bare soil surface',
aa,
'snow', 0), &
232 varattr(
'SWE_Water',
'mm',
f106,
'Snow water equivalent for water surface',
aa,
'snow', 0), &
233 varattr(
'Mw_Paved',
'mm',
f106,
'Meltwater for paved surface',
as,
'snow', 0), &
234 varattr(
'Mw_Bldgs',
'mm',
f106,
'Meltwater for building surface',
as,
'snow', 0), &
235 varattr(
'Mw_EveTr',
'mm',
f106,
'Meltwater for evergreen tree surface',
as,
'snow', 0), &
236 varattr(
'Mw_DecTr',
'mm',
f106,
'Meltwater for deciduous tree surface',
as,
'snow', 0), &
237 varattr(
'Mw_Grass',
'mm',
f106,
'Meltwater for grass surface',
as,
'snow', 0), &
238 varattr(
'Mw_BSoil',
'mm',
f106,
'Meltwater for bare soil surface',
as,
'snow', 0), &
239 varattr(
'Mw_Water',
'mm',
f106,
'Meltwater for water surface',
as,
'snow', 0), &
240 varattr(
'Qm_Paved',
'W m-2',
f106,
'Snow-related heat exchange for paved surface',
aa,
'snow', 0), &
241 varattr(
'Qm_Bldgs',
'W m-2',
f106,
'Snow-related heat exchange for building surface',
aa,
'snow', 0), &
242 varattr(
'Qm_EveTr',
'W m-2',
f106,
'Snow-related heat exchange for evergreen tree surface',
aa,
'snow', 0), &
243 varattr(
'Qm_DecTr',
'W m-2',
f106,
'Snow-related heat exchange for deciduous tree surface',
aa,
'snow', 0), &
244 varattr(
'Qm_Grass',
'W m-2',
f106,
'Snow-related heat exchange for grass surface',
aa,
'snow', 0), &
245 varattr(
'Qm_BSoil',
'W m-2',
f106,
'Snow-related heat exchange for bare soil surface',
aa,
'snow', 0), &
246 varattr(
'Qm_Water',
'W m-2',
f106,
'Snow-related heat exchange for water surface',
aa,
'snow', 0), &
247 varattr(
'Qa_Paved',
'W m-2',
f106,
'Advective heat for paved surface',
aa,
'snow', 0), &
248 varattr(
'Qa_Bldgs',
'W m-2',
f106,
'Advective heat for building surface',
aa,
'snow', 0), &
249 varattr(
'Qa_EveTr',
'W m-2',
f106,
'Advective heat for evergreen tree surface',
aa,
'snow', 0), &
250 varattr(
'Qa_DecTr',
'W m-2',
f106,
'Advective heat for deciduous tree surface',
aa,
'snow', 0), &
251 varattr(
'Qa_Grass',
'W m-2',
f106,
'Advective heat for grass surface',
aa,
'snow', 0), &
252 varattr(
'Qa_BSoil',
'W m-2',
f106,
'Advective heat for bare soil surface',
aa,
'snow', 0), &
253 varattr(
'Qa_Water',
'W m-2',
f106,
'Advective heat for water surface',
aa,
'snow', 0), &
254 varattr(
'QmFr_Paved',
'W m-2',
f146,
'Heat related to freezing for paved surface',
aa,
'snow', 0), &
255 varattr(
'QmFr_Bldgs',
'W m-2',
f146,
'Heat related to freezing for building surface',
aa,
'snow', 0), &
256 varattr(
'QmFr_EveTr',
'W m-2',
f146,
'Heat related to freezing for evergreen tree surface',
aa,
'snow', 0), &
257 varattr(
'QmFr_DecTr',
'W m-2',
f146,
'Heat related to freezing for deciduous tree surface',
aa,
'snow', 0), &
258 varattr(
'QmFr_Grass',
'W m-2',
f146,
'Heat related to freezing for grass surface',
aa,
'snow', 0), &
259 varattr(
'QmFr_BSoil',
'W m-2',
f146,
'Heat related to freezing for bare soil surface',
aa,
'snow', 0), &
260 varattr(
'QmFr_Water',
'W m-2',
f146,
'Heat related to freezing for water surface',
aa,
'snow', 0), &
261 varattr(
'fr_Paved',
'1',
f106,
'Fraction of snow for paved surface',
aa,
'snow', 0), &
262 varattr(
'fr_Bldgs',
'1',
f106,
'Fraction of snow for building surface',
aa,
'snow', 0), &
263 varattr(
'fr_EveTr',
'1',
f106,
'Fraction of snow for evergreen tree surface',
aa,
'snow', 0), &
264 varattr(
'fr_DecTr',
'1',
f106,
'Fraction of snow for deciduous tree surface',
aa,
'snow', 0), &
265 varattr(
'fr_Grass',
'1',
f106,
'Fraction of snow for grass surface',
aa,
'snow', 0), &
266 varattr(
'fr_BSoil',
'1',
f106,
'Fraction of snow for bare soil surface',
aa,
'snow', 0), &
267 varattr(
'RainSn_Paved',
'mm',
f146,
'Rain on snow for paved surface',
as,
'snow', 0), &
268 varattr(
'RainSn_Bldgs',
'mm',
f146,
'Rain on snow for building surface',
as,
'snow', 0), &
269 varattr(
'RainSn_EveTr',
'mm',
f146,
'Rain on snow for evergreen tree surface',
as,
'snow', 0), &
270 varattr(
'RainSn_DecTr',
'mm',
f146,
'Rain on snow for deciduous tree surface',
as,
'snow', 0), &
271 varattr(
'RainSn_Grass',
'mm',
f146,
'Rain on snow for grass surface',
as,
'snow', 0), &
272 varattr(
'RainSn_BSoil',
'mm',
f146,
'Rain on snow for bare soil surface',
as,
'snow', 0), &
273 varattr(
'RainSn_Water',
'mm',
f146,
'Rain on snow for water surface',
as,
'snow', 0), &
274 varattr(
'Qn_PavedSnow',
'W m-2',
f146,
'Net all-wave radiation for snow paved surface',
aa,
'snow', 0), &
275 varattr(
'Qn_BldgsSnow',
'W m-2',
f146,
'Net all-wave radiation for snow building surface',
aa,
'snow', 0), &
276 varattr(
'Qn_EveTrSnow',
'W m-2',
f146,
'Net all-wave radiation for snow evergreen tree surface',
aa,
'snow', 0), &
277 varattr(
'Qn_DecTrSnow',
'W m-2',
f146,
'Net all-wave radiation for snow deciduous tree surface',
aa,
'snow', 0), &
278 varattr(
'Qn_GrassSnow',
'W m-2',
f146,
'Net all-wave radiation for snow grass surface',
aa,
'snow', 0), &
279 varattr(
'Qn_BSoilSnow',
'W m-2',
f146,
'Net all-wave radiation for snow bare soil surface',
aa,
'snow', 0), &
280 varattr(
'Qn_WaterSnow',
'W m-2',
f146,
'Net all-wave radiation for snow water surface',
aa,
'snow', 0), &
281 varattr(
'kup_PavedSnow',
'W m-2',
f146,
'Reflected shortwave radiation for snow paved surface',
aa,
'snow', 0), &
282 varattr(
'kup_BldgsSnow',
'W m-2',
f146,
'Reflected shortwave radiation for snow building surface',
aa,
'snow', 0), &
283 varattr(
'kup_EveTrSnow',
'W m-2',
f146,
'Reflected shortwave radiation for snow evergreen tree surface',
aa,
'snow', 0), &
284 varattr(
'kup_DecTrSnow',
'W m-2',
f146,
'Reflected shortwave radiation for snow deciduous tree surface',
aa,
'snow', 0), &
285 varattr(
'kup_GrassSnow',
'W m-2',
f146,
'Reflected shortwave radiation for snow grass surface',
aa,
'snow', 0), &
286 varattr(
'kup_BSoilSnow',
'W m-2',
f146,
'Reflected shortwave radiation for snow bare soil surface',
aa,
'snow', 0), &
287 varattr(
'kup_WaterSnow',
'W m-2',
f146,
'Reflected shortwave radiation for snow water surface',
aa,
'snow', 0), &
288 varattr(
'frMelt_Paved',
'mm',
f146,
'Amount of freezing melt water for paved surface',
aa,
'snow', 0), &
289 varattr(
'frMelt_Bldgs',
'mm',
f146,
'Amount of freezing melt water for building surface',
aa,
'snow', 0), &
290 varattr(
'frMelt_EveTr',
'mm',
f146,
'Amount of freezing melt water for evergreen tree surface',
aa,
'snow', 0), &
291 varattr(
'frMelt_DecTr',
'mm',
f146,
'Amount of freezing melt water for deciduous tree surface',
aa,
'snow', 0), &
292 varattr(
'frMelt_Grass',
'mm',
f146,
'Amount of freezing melt water for grass surface',
aa,
'snow', 0), &
293 varattr(
'frMelt_BSoil',
'mm',
f146,
'Amount of freezing melt water for bare soil surface',
aa,
'snow', 0), &
294 varattr(
'frMelt_Water',
'mm',
f146,
'Amount of freezing melt water for water surface',
aa,
'snow', 0), &
295 varattr(
'MwStore_Paved',
'mm',
f146,
'Meltwater store for paved surface',
aa,
'snow', 0), &
296 varattr(
'MwStore_Bldgs',
'mm',
f146,
'Meltwater store for building surface',
aa,
'snow', 0), &
297 varattr(
'MwStore_EveTr',
'mm',
f146,
'Meltwater store for evergreen tree surface',
aa,
'snow', 0), &
298 varattr(
'MwStore_DecTr',
'mm',
f146,
'Meltwater store for deciduous tree surface',
aa,
'snow', 0), &
299 varattr(
'MwStore_Grass',
'mm',
f146,
'Meltwater store for grass surface',
aa,
'snow', 0), &
300 varattr(
'MwStore_BSoil',
'mm',
f146,
'Meltwater store for bare soil surface',
aa,
'snow', 0), &
301 varattr(
'MwStore_Water',
'mm',
f146,
'Meltwater store for water surface',
aa,
'snow', 0), &
302 varattr(
'DensSnow_Paved',
'kg m-3',
f146,
'Snow density for paved surface',
aa,
'snow', 0), &
303 varattr(
'DensSnow_Bldgs',
'kg m-3',
f146,
'Snow density for building surface',
aa,
'snow', 0), &
304 varattr(
'DensSnow_EveTr',
'kg m-3',
f146,
'Snow density for evergreen tree surface',
aa,
'snow', 0), &
305 varattr(
'DensSnow_DecTr',
'kg m-3',
f146,
'Snow density for deciduous tree surface',
aa,
'snow', 0), &
306 varattr(
'DensSnow_Grass',
'kg m-3',
f146,
'Snow density for grass surface',
aa,
'snow', 0), &
307 varattr(
'DensSnow_BSoil',
'kg m-3',
f146,
'Snow density for bare soil surface',
aa,
'snow', 0), &
308 varattr(
'DensSnow_Water',
'kg m-3',
f146,
'Snow density for water surface',
aa,
'snow', 0), &
309 varattr(
'Sd_Paved',
'mm',
f106,
'Snow depth for paved surface',
aa,
'snow', 0), &
310 varattr(
'Sd_Bldgs',
'mm',
f106,
'Snow depth for building surface',
aa,
'snow', 0), &
311 varattr(
'Sd_EveTr',
'mm',
f106,
'Snow depth for evergreen tree surface',
aa,
'snow', 0), &
312 varattr(
'Sd_DecTr',
'mm',
f106,
'Snow depth for deciduous tree surface',
aa,
'snow', 0), &
313 varattr(
'Sd_Grass',
'mm',
f106,
'Snow depth for grass surface',
aa,
'snow', 0), &
314 varattr(
'Sd_BSoil',
'mm',
f106,
'Snow depth for bare soil surface',
aa,
'snow', 0), &
315 varattr(
'Sd_Water',
'mm',
f106,
'Snow depth for water surface',
aa,
'snow', 0), &
316 varattr(
'Tsnow_Paved',
'degC',
f146,
'Snow surface temperature for paved surface',
aa,
'snow', 0), &
317 varattr(
'Tsnow_Bldgs',
'degC',
f146,
'Snow surface temperature for building surface',
aa,
'snow', 0), &
318 varattr(
'Tsnow_EveTr',
'degC',
f146,
'Snow surface temperature for evergreen tree surface',
aa,
'snow', 0), &
319 varattr(
'Tsnow_DecTr',
'degC',
f146,
'Snow surface temperature for deciduous tree surface',
aa,
'snow', 0), &
320 varattr(
'Tsnow_Grass',
'degC',
f146,
'Snow surface temperature for grass surface',
aa,
'snow', 0), &
321 varattr(
'Tsnow_BSoil',
'degC',
f146,
'Snow surface temperature for bare soil surface',
aa,
'snow', 0), &
322 varattr(
'Tsnow_Water',
'degC',
f146,
'Snow surface temperature for water surface',
aa,
'snow', 0), &
323 varattr(
'SnowAlb',
'-',
f146,
'Surface albedo for snow/ice',
aa,
'snow', 0) &
330 varattr(
'QS',
'W m-2',
f104,
'Total Storage',
aa,
'ESTM', 0), &
331 varattr(
'QSAir',
'W m-2',
f104,
'Storage air',
aa,
'ESTM', 0), &
332 varattr(
'QSWall',
'W m-2',
f104,
'Storage Wall',
aa,
'ESTM', 0), &
333 varattr(
'QSRoof',
'W m-2',
f104,
'Storage Roof',
aa,
'ESTM', 0), &
334 varattr(
'QSGround',
'W m-2',
f104,
'Storage Ground',
aa,
'ESTM', 0), &
335 varattr(
'QSIBld',
'W m-2',
f104,
'Storage Internal building',
aa,
'ESTM', 0), &
336 varattr(
'TWALL1',
'degK',
f104,
'Temperature in wall layer 1',
aa,
'ESTM', 0), &
337 varattr(
'TWALL2',
'degK',
f104,
'Temperature in wall layer 2',
aa,
'ESTM', 0), &
338 varattr(
'TWALL3',
'degK',
f104,
'Temperature in wall layer 3',
aa,
'ESTM', 0), &
339 varattr(
'TWALL4',
'degK',
f104,
'Temperature in wall layer 4',
aa,
'ESTM', 0), &
340 varattr(
'TWALL5',
'degK',
f104,
'Temperature in wall layer 5',
aa,
'ESTM', 0), &
341 varattr(
'TROOF1',
'degK',
f104,
'Temperature in roof layer 1',
aa,
'ESTM', 0), &
342 varattr(
'TROOF2',
'degK',
f104,
'Temperature in roof layer 2',
aa,
'ESTM', 0), &
343 varattr(
'TROOF3',
'degK',
f104,
'Temperature in roof layer 3',
aa,
'ESTM', 0), &
344 varattr(
'TROOF4',
'degK',
f104,
'Temperature in roof layer 4',
aa,
'ESTM', 0), &
345 varattr(
'TROOF5',
'degK',
f104,
'Temperature in roof layer 5',
aa,
'ESTM', 0), &
346 varattr(
'TGROUND1',
'degK',
f104,
'Temperature in ground layer 1',
aa,
'ESTM', 0), &
347 varattr(
'TGROUND2',
'degK',
f104,
'Temperature in ground layer 2',
aa,
'ESTM', 0), &
348 varattr(
'TGROUND3',
'degK',
f104,
'Temperature in ground layer 3',
aa,
'ESTM', 0), &
349 varattr(
'TGROUND4',
'degK',
f104,
'Temperature in ground layer 4',
aa,
'ESTM', 0), &
350 varattr(
'TGROUND5',
'degK',
f104,
'Temperature in ground layer 5',
aa,
'ESTM', 0), &
351 varattr(
'TiBLD1',
'degK',
f104,
'Temperature in internal building layer 1',
aa,
'ESTM', 0), &
352 varattr(
'TiBLD2',
'degK',
f104,
'Temperature in internal building layer 2',
aa,
'ESTM', 0), &
353 varattr(
'TiBLD3',
'degK',
f104,
'Temperature in internal building layer 3',
aa,
'ESTM', 0), &
354 varattr(
'TiBLD4',
'degK',
f104,
'Temperature in internal building layer 4',
aa,
'ESTM', 0), &
355 varattr(
'TiBLD5',
'degK',
f104,
'Temperature in internal building layer 5',
aa,
'ESTM', 0), &
356 varattr(
'TaBLD',
'degK',
f104,
'Indoor air temperature',
aa,
'ESTM', 0) &
366 varattr(
'HDD1_h',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
367 varattr(
'HDD2_c',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
368 varattr(
'HDD3_Tmean',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
369 varattr(
'HDD4_T5d',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
370 varattr(
'P_day',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
371 varattr(
'DaysSR',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
372 varattr(
'GDD_EveTr',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
373 varattr(
'GDD_DecTr',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
374 varattr(
'GDD_Grass',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
375 varattr(
'SDD_EveTr',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
376 varattr(
'SDD_DecTr',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
377 varattr(
'SDD_Grass',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
378 varattr(
'Tmin',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
379 varattr(
'Tmax',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
380 varattr(
'DLHrs',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
381 varattr(
'LAI_EveTr',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
382 varattr(
'LAI_DecTr',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
383 varattr(
'LAI_Grass',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
384 varattr(
'DecidCap',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
385 varattr(
'Porosity',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
386 varattr(
'AlbEveTr',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
387 varattr(
'AlbDecTr',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
388 varattr(
'AlbGrass',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
389 varattr(
'WU_EveTr1',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
390 varattr(
'WU_EveTr2',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
391 varattr(
'WU_EveTr3',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
392 varattr(
'WU_DecTr1',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
393 varattr(
'WU_DecTr2',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
394 varattr(
'WU_DecTr3',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
395 varattr(
'WU_Grass1',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
396 varattr(
'WU_Grass2',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
397 varattr(
'WU_Grass3',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
398 varattr(
'deltaLAI',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
399 varattr(
'LAIlumps',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
400 varattr(
'AlbSnow',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
401 varattr(
'DensSnow_Paved',
'to be added',
f146,
'to be added',
al,
'DailyState', 0), &
402 varattr(
'DensSnow_Bldgs',
'to be added',
f146,
'to be added',
al,
'DailyState', 0), &
403 varattr(
'DensSnow_EveTr',
'to be added',
f146,
'to be added',
al,
'DailyState', 0), &
404 varattr(
'DensSnow_DecTr',
'to be added',
f146,
'to be added',
al,
'DailyState', 0), &
405 varattr(
'DensSnow_Grass',
'to be added',
f146,
'to be added',
al,
'DailyState', 0), &
406 varattr(
'DensSnow_BSoil',
'to be added',
f146,
'to be added',
al,
'DailyState', 0), &
407 varattr(
'DensSnow_Water',
'to be added',
f146,
'to be added',
al,
'DailyState', 0), &
408 varattr(
'a1',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
409 varattr(
'a2',
'to be added',
f104,
'to be added',
al,
'DailyState', 0), &
410 varattr(
'a3',
'to be added',
f104,
'to be added',
al,
'DailyState', 0) &
463 varattr(
'U_11',
'm s-1',
f104,
'U at 1.1Zh',
aa,
'RSL', 0), &
464 varattr(
'U_12',
'm s-1',
f104,
'U at 1.2Zh',
aa,
'RSL', 0), &
465 varattr(
'U_13',
'm s-1',
f104,
'U at 1.3Zh',
aa,
'RSL', 0), &
466 varattr(
'U_14',
'm s-1',
f146,
'U at 1.4Zh',
aa,
'RSL', 0), &
467 varattr(
'U_15',
'm s-1',
f104,
'U at 1.5Zh',
aa,
'RSL', 0), &
468 varattr(
'U_16',
'm s-1',
f104,
'U at 1.6Zh',
aa,
'RSL', 0), &
469 varattr(
'U_17',
'm s-1',
f104,
'U at 1.7Zh',
aa,
'RSL', 0), &
470 varattr(
'U_18',
'm s-1',
f104,
'U at 1.8Zh',
aa,
'RSL', 0), &
471 varattr(
'U_19',
'm s-1',
f104,
'U at 1.9Zh',
aa,
'RSL', 0), &
472 varattr(
'U_20',
'm s-1',
f104,
'U at 2.0Zh',
aa,
'RSL', 0), &
473 varattr(
'U_21',
'm s-1',
f146,
'U at 2.1Zh',
aa,
'RSL', 0), &
474 varattr(
'U_22',
'm s-1',
f104,
'U at 2.2Zh',
aa,
'RSL', 0), &
475 varattr(
'U_23',
'm s-1',
f104,
'U at 2.3Zh',
aa,
'RSL', 0), &
476 varattr(
'U_24',
'm s-1',
f104,
'U at 2.4Zh',
aa,
'RSL', 0), &
477 varattr(
'U_25',
'm s-1',
f104,
'U at 2.5Zh',
aa,
'RSL', 0), &
478 varattr(
'U_26',
'm s-1',
f104,
'U at 2.6Zh',
aa,
'RSL', 0), &
479 varattr(
'U_27',
'm s-1',
f104,
'U at 2.7Zh',
aa,
'RSL', 0), &
480 varattr(
'U_28',
'm s-1',
f104,
'U at 2.8Zh',
aa,
'RSL', 0), &
481 varattr(
'U_29',
'm s-1',
f104,
'U at 2.9Zh',
aa,
'RSL', 0), &
482 varattr(
'U_30',
'm s-1',
f104,
'U at 3.0Zh',
aa,
'RSL', 0), &
513 varattr(
'q_1',
'g kg-1',
f104,
'q at 0.1Zh',
aa,
'RSL', 0), &
514 varattr(
'q_2',
'g kg-1',
f104,
'q at 0.2Zh',
aa,
'RSL', 0), &
515 varattr(
'q_3',
'g kg-1',
f104,
'q at 0.3Zh',
aa,
'RSL', 0), &
516 varattr(
'q_4',
'g kg-1',
f104,
'q at 0.4Zh',
aa,
'RSL', 0), &
517 varattr(
'q_5',
'g kg-1',
f104,
'q at 0.5Zh',
aa,
'RSL', 0), &
518 varattr(
'q_6',
'g kg-1',
f104,
'q at 0.6Zh',
aa,
'RSL', 0), &
519 varattr(
'q_7',
'g kg-1',
f104,
'q at 0.7Zh',
aa,
'RSL', 0), &
520 varattr(
'q_8',
'g kg-1',
f104,
'q at 0.8Zh',
aa,
'RSL', 0), &
521 varattr(
'q_9',
'g kg-1',
f104,
'q at 0.9Zh',
aa,
'RSL', 0), &
523 varattr(
'q_11',
'g kg-1',
f104,
'q at 1.1Zh',
aa,
'RSL', 0), &
524 varattr(
'q_12',
'g kg-1',
f104,
'q at 1.2Zh',
aa,
'RSL', 0), &
525 varattr(
'q_13',
'g kg-1',
f104,
'q at 1.3Zh',
aa,
'RSL', 0), &
526 varattr(
'q_14',
'g kg-1',
f146,
'q at 1.4Zh',
aa,
'RSL', 0), &
527 varattr(
'q_15',
'g kg-1',
f104,
'q at 1.5Zh',
aa,
'RSL', 0), &
528 varattr(
'q_16',
'g kg-1',
f104,
'q at 1.6Zh',
aa,
'RSL', 0), &
529 varattr(
'q_17',
'g kg-1',
f104,
'q at 1.7Zh',
aa,
'RSL', 0), &
530 varattr(
'q_18',
'g kg-1',
f104,
'q at 1.8Zh',
aa,
'RSL', 0), &
531 varattr(
'q_19',
'g kg-1',
f104,
'q at 1.9Zh',
aa,
'RSL', 0), &
532 varattr(
'q_20',
'g kg-1',
f104,
'q at 2.0Zh',
aa,
'RSL', 0), &
533 varattr(
'q_21',
'g kg-1',
f146,
'q at 2.1Zh',
aa,
'RSL', 0), &
534 varattr(
'q_22',
'g kg-1',
f104,
'q at 2.2Zh',
aa,
'RSL', 0), &
535 varattr(
'q_23',
'g kg-1',
f104,
'q at 2.3Zh',
aa,
'RSL', 0), &
536 varattr(
'q_24',
'g kg-1',
f104,
'q at 2.4Zh',
aa,
'RSL', 0), &
537 varattr(
'q_25',
'g kg-1',
f104,
'q at 2.5Zh',
aa,
'RSL', 0), &
538 varattr(
'q_26',
'g kg-1',
f104,
'q at 2.6Zh',
aa,
'RSL', 0), &
539 varattr(
'q_27',
'g kg-1',
f104,
'q at 2.7Zh',
aa,
'RSL', 0), &
540 varattr(
'q_28',
'g kg-1',
f104,
'q at 2.8Zh',
aa,
'RSL', 0), &
541 varattr(
'q_29',
'g kg-1',
f104,
'q at 2.9Zh',
aa,
'RSL', 0), &
542 varattr(
'q_30',
'g kg-1',
f104,
'q at 3.0Zh',
aa,
'RSL', 0) &
549 INTEGER,
INTENT(in) :: irMax
553 INTEGER,
INTENT(in) ::iv, Gridiv, iyr
556 INTEGER :: xx, err, outLevel, i
557 TYPE(
varattr),
DIMENSION(:),
ALLOCATABLE::varListX
558 CHARACTER(len=10) :: grpList0(7)
559 CHARACTER(len=10),
DIMENSION(:),
ALLOCATABLE :: grpList
560 LOGICAL :: grpCond(7)
574 grplist0(1) =
'SUEWS' 575 grplist0(2) =
'SOLWEIG' 579 grplist0(6) =
'DailyState' 581 grpcond = (/.true., &
592 ALLOCATE (grplist(xx), stat=err)
593 IF (err /= 0) print *,
"grpList: Allocation request denied" 595 grplist = pack(grplist0, mask=grpcond)
600 DO i = 1,
SIZE(grplist), 1
602 xx = count(
varlistall%group == trim(grplist(i)), dim=1)
605 ALLOCATE (varlistx(5 + xx), stat=err)
606 IF (err /= 0) print *,
"varListX: Allocation request denied" 612 IF (trim(varlistx(
SIZE(varlistx))%group) /=
'DailyState')
THEN 653 IF (
ALLOCATED(varlistx))
DEALLOCATE (varlistx, stat=err)
654 IF (err /= 0) print *,
"varListX: Deallocation request denied" 664 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varListX
665 INTEGER,
INTENT(in) :: iv, irMax, iyr, Gridiv, outLevel, outFreq_s
669 INTEGER,
DIMENSION(:),
ALLOCATABLE ::id_seq
670 REAL(KIND(1d0)),
DIMENSION(:, :),
ALLOCATABLE::dataOutX
671 REAL(KIND(1d0)),
DIMENSION(:, :),
ALLOCATABLE::dataOutX_agg
673 IF (.NOT.
ALLOCATED(dataoutx))
THEN 674 ALLOCATE (dataoutx(irmax,
SIZE(varlistx)), stat=err)
675 IF (err /= 0) print *,
"dataOutX: Allocation request denied" 679 SELECT CASE (trim(varlistx(
SIZE(varlistx))%group))
681 dataoutx =
dataoutsuews(1:irmax, 1:
SIZE(varlistx), gridiv)
688 dataoutx =
dataoutbl(1:irmax, 1:
SIZE(varlistx), gridiv)
691 dataoutx =
dataoutsnow(1:irmax, 1:
SIZE(varlistx), gridiv)
694 dataoutx =
dataoutestm(1:irmax, 1:
SIZE(varlistx), gridiv)
697 dataoutx =
dataoutrsl(1:irmax, 1:
SIZE(varlistx), gridiv)
706 IF (
ALLOCATED(dataoutx))
THEN 707 DEALLOCATE (dataoutx)
708 IF (err /= 0) print *,
"dataOutX: Deallocation request denied" 711 IF (.NOT.
ALLOCATED(dataoutx))
THEN 712 ALLOCATE (dataoutx(
SIZE(id_seq),
SIZE(varlistx)), stat=err)
713 IF (err /= 0) print *,
"dataOutX: Allocation request denied" 724 IF (trim(varlistx(
SIZE(varlistx))%group) /=
'DailyState')
THEN 728 IF (.NOT.
ALLOCATED(dataoutx_agg))
THEN 729 ALLOCATE (dataoutx_agg(
SIZE(dataoutx, dim=1),
SIZE(varlistx)), stat=err)
730 IF (err /= 0) print *,
": Allocation request denied" 732 dataoutx_agg = dataoutx
737 IF (iv == 1)
CALL suews_output_init(dataoutx_agg, varlistx, iyr, gridiv, outlevel)
747 REAL(KIND(1d0)),
DIMENSION(:, :),
INTENT(in)::dataOutX
748 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varList
749 INTEGER,
INTENT(in) :: iyr, Gridiv, outLevel
751 TYPE(
varattr),
DIMENSION(:),
ALLOCATABLE::varListSel
752 INTEGER :: xx, err, fn, i, nargs
753 CHARACTER(len=365) :: FileOutX
754 CHARACTER(len=3) :: itextX
755 CHARACTER(len=6) :: args(5)
756 CHARACTER(len=16*SIZE(varList)) :: FormatOut
757 CHARACTER(len=16) :: formatX
758 CHARACTER(len=16),
DIMENSION(:),
ALLOCATABLE:: headerOut
761 xx = count((varlist%level <= outlevel), dim=1)
762 WRITE (itextx,
'(i3)') xx
763 ALLOCATE (varlistsel(xx), stat=err)
764 IF (err /= 0) print *,
"varListSel: Allocation request denied" 765 varlistsel = pack(varlist, mask=(varlist%level <= outlevel))
768 CALL filename_gen(dataoutx, varlist, iyr, gridiv, fileoutx)
771 ALLOCATE (headerout(xx), stat=err)
772 IF (err /= 0) print *,
"headerOut: Allocation request denied" 775 DO i = 1,
SIZE(varlistsel)
776 CALL parse(varlistsel(i)%fmt,
'if.,', args, nargs)
777 formatx = adjustl(
'(a'//trim(args(2))//
',1x)')
779 WRITE (headerout(i), formatx) adjustr(trim(adjustl(varlistsel(i)%header)))
781 formatout = adjustl(trim(formatx))
783 formatout = trim(formatout)//
' '//adjustl(trim(formatx))
786 formatout =
'('//trim(adjustl(formatout))//
')' 790 OPEN (fn, file=trim(adjustl(fileoutx)), status=
'unknown')
794 WRITE (fn, formatout) headerout
801 IF (
ALLOCATED(varlistsel))
DEALLOCATE (varlistsel, stat=err)
802 IF (err /= 0) print *,
"varListSel: Deallocation request denied" 803 IF (
ALLOCATED(headerout))
DEALLOCATE (headerout, stat=err)
804 IF (err /= 0) print *,
"headerOut: Deallocation request denied" 809 SUBROUTINE formatfile_gen(dataOutX, varList, iyr, Gridiv, outLevel)
811 REAL(KIND(1d0)),
DIMENSION(:, :),
INTENT(in)::dataOutX
812 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varList
813 INTEGER,
INTENT(in) :: iyr, Gridiv, outLevel
815 TYPE(
varattr),
DIMENSION(:),
ALLOCATABLE::varListSel
816 INTEGER :: xx, err, fn, i
817 CHARACTER(len=365) :: FileOutX
818 CHARACTER(len=100*300) :: str_cat
819 CHARACTER(len=100) :: str_x =
'' 820 CHARACTER(len=3) :: itextX
823 CALL filename_gen(dataoutx, varlist, iyr, gridiv, fileoutx, 1)
826 xx = count((varlist%level <= outlevel), dim=1)
827 ALLOCATE (varlistsel(xx), stat=err)
828 IF (err /= 0) print *,
"varListSel: Allocation request denied" 829 varlistsel = pack(varlist, mask=(varlist%level <= outlevel))
833 OPEN (fn, file=trim(adjustl(fileoutx)), status=
'unknown')
838 DO i = 1,
SIZE(varlistsel)
839 WRITE (itextx,
'(i3)') i
841 str_cat = trim(adjustl(itextx))
843 str_cat = trim(str_cat)//
';'//adjustl(itextx)
846 WRITE (fn,
'(a)') trim(str_cat)
850 DO i = 1,
SIZE(varlistsel)
851 str_x = varlistsel(i)%header
853 str_cat = trim(adjustl(str_x))
855 str_cat = trim(str_cat)//
';'//adjustl(str_x)
858 WRITE (fn,
'(a)') trim(str_cat)
862 DO i = 1,
SIZE(varlistsel)
863 str_x = varlistsel(i)%longNm
865 str_cat = trim(adjustl(str_x))
867 str_cat = trim(str_cat)//
';'//adjustl(str_x)
870 WRITE (fn,
'(a)') trim(str_cat)
874 DO i = 1,
SIZE(varlistsel)
875 str_x = varlistsel(i)%unit
877 str_cat = trim(adjustl(str_x))
879 str_cat = trim(str_cat)//
';'//adjustl(str_x)
882 WRITE (fn,
'(a)') trim(str_cat)
886 DO i = 1,
SIZE(varlistsel)
887 str_x = varlistsel(i)%fmt
889 str_cat = trim(adjustl(str_x))
891 str_cat = trim(str_cat)//
';'//adjustl(str_x)
894 WRITE (fn,
'(a)') trim(str_cat)
898 DO i = 1,
SIZE(varlistsel)
899 str_x = varlistsel(i)%aggreg
901 str_cat = trim(adjustl(str_x))
903 str_cat = trim(str_cat)//
';'//adjustl(str_x)
906 WRITE (fn,
'(a)') trim(str_cat)
912 IF (
ALLOCATED(varlistsel))
DEALLOCATE (varlistsel, stat=err)
913 IF (err /= 0) print *,
"varListSel: Deallocation request denied" 918 SUBROUTINE suews_output_agg(dataOut_agg, dataOutX, varList, irMax, outFreq_s)
920 REAL(KIND(1d0)),
DIMENSION(:, :),
INTENT(in)::dataOutX
921 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varList
922 INTEGER,
INTENT(in) :: irMax, outFreq_s
923 REAL(KIND(1d0)),
DIMENSION(:, :),
ALLOCATABLE,
INTENT(out)::dataOut_agg
925 INTEGER :: nlinesOut, i, j, x
926 REAL(KIND(1d0))::dataOut_aggX(1:size(varlist))
927 REAL(KIND(1d0)),
DIMENSION(:, :),
ALLOCATABLE::dataOut_agg0
928 nlinesout = int(
nsh/(60.*60/outfreq_s))
931 ALLOCATE (dataout_agg(int(irmax/nlinesout),
SIZE(varlist)))
932 ALLOCATE (dataout_agg0(nlinesout,
SIZE(varlist)))
934 DO i = nlinesout, irmax, nlinesout
936 dataout_agg0 = dataoutx(i - nlinesout + 1:i, :)
937 DO j = 1,
SIZE(varlist), 1
939 SELECT CASE (varlist(j)%aggreg)
941 dataout_aggx(j) = dataout_agg0(nlinesout, j)
943 dataout_aggx(j) = sum(dataout_agg0(:, j))/nlinesout
945 dataout_aggx(j) = sum(dataout_agg0(:, j))
947 dataout_aggx(j) = dataout_agg0(nlinesout, j)
950 IF (
diagnose == 1 .AND. i == irmax)
THEN 952 print *,
'raw data of ', j,
':' 953 print *, dataout_agg0(:, j)
954 print *,
'aggregated with method: ', varlist(j)%aggreg
955 print *, dataout_aggx(j)
959 dataout_agg(x, :) = dataout_aggx
967 REAL(KIND(1d0)),
DIMENSION(:, :),
INTENT(in)::dataOutX
968 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varList
969 INTEGER,
INTENT(in) :: iyr, Gridiv, outLevel
971 REAL(KIND(1d0)),
DIMENSION(:, :),
ALLOCATABLE::dataOutSel
972 TYPE(
varattr),
DIMENSION(:),
ALLOCATABLE::varListSel
973 CHARACTER(len=365) :: FileOutX
974 INTEGER :: fn, i, xx, err
975 INTEGER :: sizeVarListSel, sizedataOutX
976 CHARACTER(len=12*SIZE(varList)) :: FormatOut
980 IF (
diagnose == 1)
WRITE (*, *)
'Writting data of group: ', varlist(
SIZE(varlist))%group
983 sizevarlistsel = count((varlist%level <= outlevel), dim=1)
984 ALLOCATE (varlistsel(sizevarlistsel), stat=err)
985 IF (err /= 0) print *,
"varListSel: Allocation request denied" 986 varlistsel = pack(varlist, mask=(varlist%level <= outlevel))
989 sizedataoutx =
SIZE(dataoutx, dim=1)
990 ALLOCATE (dataoutsel(sizedataoutx, sizevarlistsel), stat=err)
991 IF (err /= 0) print *,
"dataOutSel: Allocation request denied" 994 dataoutsel = dataoutx(:, pack((/(i, i=1,
SIZE(varlist%level))/), varlist%level <= outlevel))
997 DO i = 1, sizevarlistsel
1004 formatout = varlistsel(i)%fmt
1008 formatout = trim(formatout)//
','//trim(varlistsel(i)%fmt)
1014 formatout =
'('//trim(adjustl(formatout))//
')' 1017 CALL filename_gen(dataoutsel, varlistsel, iyr, gridiv, fileoutx)
1027 OPEN (fn, file=trim(fileoutx), position=
'append')
1028 DO i = 1, sizedataoutx
1032 WRITE (fn, formatout) &
1033 (int(dataoutsel(i, xx)), xx=1, 4), &
1034 (dataoutsel(i, xx), xx=5, sizevarlistsel)
1038 IF (
ALLOCATED(varlistsel))
DEALLOCATE (varlistsel, stat=err)
1039 IF (err /= 0) print *,
"varListSel: Deallocation request denied" 1041 IF (
ALLOCATED(dataoutsel))
DEALLOCATE (dataoutsel, stat=err)
1042 IF (err /= 0) print *,
"dataOutSel: Deallocation request denied" 1046 SUBROUTINE filename_gen(dataOutX, varList, iyr, Gridiv, FileOutX, opt_fmt)
1050 REAL(KIND(1d0)),
DIMENSION(:, :),
INTENT(in)::dataOutX
1051 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varList
1052 INTEGER,
INTENT(in) :: iyr
1053 INTEGER,
INTENT(in) :: Gridiv
1054 INTEGER,
INTENT(in),
OPTIONAL :: opt_fmt
1055 CHARACTER(len=365),
INTENT(out) :: FileOutX
1057 CHARACTER(len=20):: str_out_min, str_grid, &
1058 str_date, str_year, str_DOY, str_grp, str_sfx
1059 INTEGER :: year_int, DOY_int, val_fmt, delta_t_min
1060 TYPE(datetime) :: dt1, dt2
1061 TYPE(timedelta) :: dt_x
1066 IF (
PRESENT(opt_fmt)) val_fmt = opt_fmt
1072 doy_int = int(dataoutx(1, 2))
1073 WRITE (str_doy,
'(i3.3)') doy_int
1086 WRITE (str_year,
'(i4)') year_int
1087 str_date =
'_'//trim(adjustl(str_year))
1090 IF (varlist(6)%group ==
'DailyState')
THEN 1095 dt1 = datetime(int(dataoutx(1, 1)), 1, 1) + &
1096 timedelta(days=int(dataoutx(1, 2) - 1), &
1097 hours=int(dataoutx(1, 3)), &
1098 minutes=int(dataoutx(1, 4)))
1100 dt2 = datetime(int(dataoutx(2, 1)), 1, 1) + &
1101 timedelta(days=int(dataoutx(2, 2) - 1), &
1102 hours=int(dataoutx(2, 3)), &
1103 minutes=int(dataoutx(2, 4)))
1106 delta_t_min = int(dt_x%total_seconds()/60)
1107 WRITE (str_out_min,
'(i4)') delta_t_min
1108 str_out_min =
'_'//trim(adjustl(str_out_min))
1112 str_grp = varlist(6)%group
1113 IF (len(trim(str_grp)) > 0) str_grp =
'_'//trim(adjustl(str_grp))
1130 trim(adjustl(str_grid))// &
1131 trim(adjustl(str_date))// &
1132 trim(adjustl(str_grp))// &
1133 trim(adjustl(str_out_min))// &
1134 trim(adjustl(str_sfx))
1137 IF (val_fmt == 1)
THEN 1140 trim(adjustl(str_grp))// &
1146 SUBROUTINE unique(vec, vec_unique)
1151 INTEGER,
DIMENSION(:),
INTENT(in) :: vec
1152 INTEGER,
DIMENSION(:),
ALLOCATABLE,
INTENT(out) :: vec_unique
1155 LOGICAL,
DIMENSION(SIZE(vec)) :: mask
1162 num = count(vec(i) == vec)
1169 IF (.NOT. any(vec(i) == vec .AND. mask)) mask(i) = .true.
1175 ALLOCATE (vec_unique(count(mask)))
1176 vec_unique = pack(vec, mask)
1187 CHARACTER(len=365),
INTENT(in) :: FileName
1189 CHARACTER(len=1000) :: longstring
1191 INQUIRE (file=trim(
filename), exist=existq)
1194 READ (10,
'(a)') longstring
1196 IF (verify(longstring,
'Year') == 0)
initq_file = .false.
1211 CHARACTER(len=*) :: filename
1215 OPEN (10, file=
filename, iostat=io, status=
'old')
1220 stop
'Cannot open file! ' 1225 READ (10, *, iostat=io) iv
1226 IF (io < 0 .OR. iv == -9)
EXIT character(len=1), parameter al
integer keeptstepfilesout
integer, parameter ncolumnsdataoutestm
real(kind(1d0)), dimension(:, :, :), allocatable dataoutestm
subroutine filename_gen(dataOutX, varList, iyr, Gridiv, FileOutX, opt_fmt)
character(len=10), parameter ft
character(len=10), parameter fd
integer, parameter ncolumnsdataoutdailystate
integer resolutionfilesout
real(kind(1d0)), dimension(:, :, :), allocatable dataoutbl
subroutine suews_output(irMax, iv, Gridiv, iyr)
subroutine suews_write_txt(dataOutX, varList, iyr, Gridiv, outLevel)
character(len=10), parameter f106
integer, parameter ncolumnsdataoutbl
integer, dimension(:), allocatable grididmatrix
subroutine suews_output_init(dataOutX, varList, iyr, Gridiv, outLevel)
integer, parameter ncolumnsdataoutsol
real(kind(1d0)), dimension(:, :, :), allocatable dataoutdailystate
character(len=1), parameter as
integer, parameter ncolumnsdataoutrsl
integer, parameter ncolumnsdataoutsnow
character(len=10), parameter f104
subroutine suews_output_txt_grp(iv, irMax, iyr, varListX, Gridiv, outLevel, outFreq_s)
type(varattr), dimension(500) varlistall
character(len=10), parameter f94
character(len=20) filecode
subroutine formatfile_gen(dataOutX, varList, iyr, Gridiv, outLevel)
character(len=1), parameter at
real(kind(1d0)), dimension(:, :, :), allocatable dataoutsuews
integer function count_lines(filename)
character(len=10), parameter f146
real(kind(1d0)), dimension(:, :, :), allocatable dataoutrsl
character(len=1), parameter aa
integer, parameter ncolumnsdataoutsuews
subroutine parse(str, delims, args, nargs)
subroutine unique(vec, vec_unique)
logical function initq_file(FileName)
real(kind(1d0)), dimension(:, :, :), allocatable dataoutsnow
character(len=10), parameter fy
integer storageheatmethod
character(len=150) fileoutputpath
subroutine suews_output_agg(dataOut_agg, dataOutX, varList, irMax, outFreq_s)