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',
'W m-2',
f106,
'Global Irradiance',
aa,
'SOLWEIG', 0), &
174 varattr(
'DiffuseRad',
'W m-2',
f106,
'Diffuse Radiation',
aa,
'SOLWEIG', 0), &
175 varattr(
'DirectRad',
'W m-2',
f106,
'Direct Radiation',
aa,
'SOLWEIG', 0), &
176 varattr(
'Kdown2d',
'W m-2',
f106,
'Incoming shortwave radiation at POI',
aa,
'SOLWEIG', 0), &
177 varattr(
'Kup2d',
'W m-2',
f106,
'Outgoing shortwave radiation at POI',
aa,
'SOLWEIG', 0), &
178 varattr(
'Ksouth',
'W m-2',
f106,
'Shortwave radiation from south at POI',
aa,
'SOLWEIG', 0), &
179 varattr(
'Kwest',
'W m-2',
f106,
'Shortwave radiation from west at POI',
aa,
'SOLWEIG', 0), &
180 varattr(
'Knorth',
'W m-2',
f106,
'Shortwave radiation from north at POI',
aa,
'SOLWEIG', 0), &
181 varattr(
'Keast',
'W m-2',
f106,
'Shortwave radiation from east at POI',
aa,
'SOLWEIG', 0), &
182 varattr(
'Ldown2d',
'W m-2',
f106,
'Incoming longwave radiation at POI',
aa,
'SOLWEIG', 0), &
183 varattr(
'Lup2d',
'W m-2',
f106,
'Outgoing longwave radiation at POI',
aa,
'SOLWEIG', 0), &
184 varattr(
'Lsouth',
'W m-2',
f106,
'Longwave radiation from west at POI',
aa,
'SOLWEIG', 0), &
185 varattr(
'Lwest',
'W m-2',
f106,
'Longwave radiation from south at POI',
aa,
'SOLWEIG', 0), &
186 varattr(
'Lnorth',
'W m-2',
f106,
'Longwave radiation from north at POI',
aa,
'SOLWEIG', 0), &
187 varattr(
'Least',
'W m-2',
f106,
'Longwave radiation from east at POI',
aa,
'SOLWEIG', 0), &
188 varattr(
'Tmrt',
'degC',
f106,
'Mean Radiant Temperature',
aa,
'SOLWEIG', 0), &
189 varattr(
'I0',
'W m-2',
f106,
'theoretical value of maximum incoming solar radiation',
aa,
'SOLWEIG', 0), &
190 varattr(
'CI',
'',
f106,
'clearness index for Ldown',
aa,
'SOLWEIG', 0), &
191 varattr(
'gvf',
'',
f106,
'Ground view factor',
aa,
'SOLWEIG', 0), &
192 varattr(
'shadow',
'',
f106,
'Shadow value (0= shadow, 1 = sun)',
aa,
'SOLWEIG', 0), &
193 varattr(
'svf',
'',
f106,
'Sky View Factor from ground and buildings',
aa,
'SOLWEIG', 0), &
194 varattr(
'svfbuveg',
'',
f106,
'Sky View Factor from ground, buildings and vegetation',
aa,
'SOLWEIG', 0), &
195 varattr(
'Ta',
'degC',
f106,
'Air temperature',
aa,
'SOLWEIG', 0), &
196 varattr(
'Tg',
'degC',
f106,
'Surface temperature',
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' 593 ALLOCATE (grplist(xx), stat=err)
594 IF (err /= 0) print *,
"grpList: Allocation request denied" 596 grplist = pack(grplist0, mask=grpcond)
601 DO i = 1,
SIZE(grplist), 1
603 xx = count(
varlistall%group == trim(grplist(i)), dim=1)
606 ALLOCATE (varlistx(5 + xx), stat=err)
607 IF (err /= 0) print *,
"varListX: Allocation request denied" 613 IF (trim(varlistx(
SIZE(varlistx))%group) /=
'DailyState')
THEN 631 IF (
ALLOCATED(varlistx))
DEALLOCATE (varlistx, stat=err)
632 IF (err /= 0) print *,
"varListX: Deallocation request denied" 642 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varListX
643 INTEGER,
INTENT(in) :: iv, irMax, iyr, Gridiv, outLevel, outFreq_s
647 INTEGER,
DIMENSION(:),
ALLOCATABLE ::id_seq
648 REAL(KIND(1d0)),
DIMENSION(:, :),
ALLOCATABLE::dataOutX
649 REAL(KIND(1d0)),
DIMENSION(:, :),
ALLOCATABLE::dataOutX_agg
651 IF (.NOT.
ALLOCATED(dataoutx))
THEN 652 ALLOCATE (dataoutx(irmax,
SIZE(varlistx)), stat=err)
653 IF (err /= 0) print *,
"dataOutX: Allocation request denied" 657 SELECT CASE (trim(varlistx(
SIZE(varlistx))%group))
659 dataoutx =
dataoutsuews(1:irmax, 1:
SIZE(varlistx), gridiv)
665 dataoutx =
dataoutbl(1:irmax, 1:
SIZE(varlistx), gridiv)
668 dataoutx =
dataoutsnow(1:irmax, 1:
SIZE(varlistx), gridiv)
671 dataoutx =
dataoutestm(1:irmax, 1:
SIZE(varlistx), gridiv)
674 dataoutx =
dataoutrsl(1:irmax, 1:
SIZE(varlistx), gridiv)
683 IF (
ALLOCATED(dataoutx))
THEN 684 DEALLOCATE (dataoutx)
685 IF (err /= 0) print *,
"dataOutX: Deallocation request denied" 688 IF (.NOT.
ALLOCATED(dataoutx))
THEN 689 ALLOCATE (dataoutx(
SIZE(id_seq),
SIZE(varlistx)), stat=err)
690 IF (err /= 0) print *,
"dataOutX: Allocation request denied" 701 IF (trim(varlistx(
SIZE(varlistx))%group) /=
'DailyState')
THEN 705 IF (.NOT.
ALLOCATED(dataoutx_agg))
THEN 706 ALLOCATE (dataoutx_agg(
SIZE(dataoutx, dim=1),
SIZE(varlistx)), stat=err)
707 IF (err /= 0) print *,
": Allocation request denied" 709 dataoutx_agg = dataoutx
714 IF (iv == 1)
CALL suews_output_init(dataoutx_agg, varlistx, iyr, gridiv, outlevel)
724 REAL(KIND(1d0)),
DIMENSION(:, :),
INTENT(in)::dataOutX
725 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varList
726 INTEGER,
INTENT(in) :: iyr, Gridiv, outLevel
728 TYPE(
varattr),
DIMENSION(:),
ALLOCATABLE::varListSel
729 INTEGER :: xx, err, fn, i, nargs
730 CHARACTER(len=365) :: FileOutX
731 CHARACTER(len=3) :: itextX
732 CHARACTER(len=6) :: args(5)
733 CHARACTER(len=16*SIZE(varList)) :: FormatOut
734 CHARACTER(len=16) :: formatX
735 CHARACTER(len=16),
DIMENSION(:),
ALLOCATABLE:: headerOut
738 xx = count((varlist%level <= outlevel), dim=1)
739 WRITE (itextx,
'(i3)') xx
740 ALLOCATE (varlistsel(xx), stat=err)
741 IF (err /= 0) print *,
"varListSel: Allocation request denied" 742 varlistsel = pack(varlist, mask=(varlist%level <= outlevel))
745 CALL filename_gen(dataoutx, varlist, iyr, gridiv, fileoutx)
748 ALLOCATE (headerout(xx), stat=err)
749 IF (err /= 0) print *,
"headerOut: Allocation request denied" 752 DO i = 1,
SIZE(varlistsel)
753 CALL parse(varlistsel(i)%fmt,
'if.,', args, nargs)
754 formatx = adjustl(
'(a'//trim(args(2))//
',1x)')
756 WRITE (headerout(i), formatx) adjustr(trim(adjustl(varlistsel(i)%header)))
758 formatout = adjustl(trim(formatx))
760 formatout = trim(formatout)//
' '//adjustl(trim(formatx))
763 formatout =
'('//trim(adjustl(formatout))//
')' 767 OPEN (fn, file=trim(adjustl(fileoutx)), status=
'unknown')
771 WRITE (fn, formatout) headerout
778 IF (
ALLOCATED(varlistsel))
DEALLOCATE (varlistsel, stat=err)
779 IF (err /= 0) print *,
"varListSel: Deallocation request denied" 780 IF (
ALLOCATED(headerout))
DEALLOCATE (headerout, stat=err)
781 IF (err /= 0) print *,
"headerOut: Deallocation request denied" 786 SUBROUTINE formatfile_gen(dataOutX, varList, iyr, Gridiv, outLevel)
788 REAL(KIND(1d0)),
DIMENSION(:, :),
INTENT(in)::dataOutX
789 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varList
790 INTEGER,
INTENT(in) :: iyr, Gridiv, outLevel
792 TYPE(
varattr),
DIMENSION(:),
ALLOCATABLE::varListSel
793 INTEGER :: xx, err, fn, i
794 CHARACTER(len=365) :: FileOutX
795 CHARACTER(len=100*300) :: str_cat
796 CHARACTER(len=100) :: str_x =
'' 797 CHARACTER(len=3) :: itextX
800 CALL filename_gen(dataoutx, varlist, iyr, gridiv, fileoutx, 1)
803 xx = count((varlist%level <= outlevel), dim=1)
804 ALLOCATE (varlistsel(xx), stat=err)
805 IF (err /= 0) print *,
"varListSel: Allocation request denied" 806 varlistsel = pack(varlist, mask=(varlist%level <= outlevel))
810 OPEN (fn, file=trim(adjustl(fileoutx)), status=
'unknown')
815 DO i = 1,
SIZE(varlistsel)
816 WRITE (itextx,
'(i3)') i
818 str_cat = trim(adjustl(itextx))
820 str_cat = trim(str_cat)//
';'//adjustl(itextx)
823 WRITE (fn,
'(a)') trim(str_cat)
827 DO i = 1,
SIZE(varlistsel)
828 str_x = varlistsel(i)%header
830 str_cat = trim(adjustl(str_x))
832 str_cat = trim(str_cat)//
';'//adjustl(str_x)
835 WRITE (fn,
'(a)') trim(str_cat)
839 DO i = 1,
SIZE(varlistsel)
840 str_x = varlistsel(i)%longNm
842 str_cat = trim(adjustl(str_x))
844 str_cat = trim(str_cat)//
';'//adjustl(str_x)
847 WRITE (fn,
'(a)') trim(str_cat)
851 DO i = 1,
SIZE(varlistsel)
852 str_x = varlistsel(i)%unit
854 str_cat = trim(adjustl(str_x))
856 str_cat = trim(str_cat)//
';'//adjustl(str_x)
859 WRITE (fn,
'(a)') trim(str_cat)
863 DO i = 1,
SIZE(varlistsel)
864 str_x = varlistsel(i)%fmt
866 str_cat = trim(adjustl(str_x))
868 str_cat = trim(str_cat)//
';'//adjustl(str_x)
871 WRITE (fn,
'(a)') trim(str_cat)
875 DO i = 1,
SIZE(varlistsel)
876 str_x = varlistsel(i)%aggreg
878 str_cat = trim(adjustl(str_x))
880 str_cat = trim(str_cat)//
';'//adjustl(str_x)
883 WRITE (fn,
'(a)') trim(str_cat)
889 IF (
ALLOCATED(varlistsel))
DEALLOCATE (varlistsel, stat=err)
890 IF (err /= 0) print *,
"varListSel: Deallocation request denied" 895 SUBROUTINE suews_output_agg(dataOut_agg, dataOutX, varList, irMax, outFreq_s)
897 REAL(KIND(1d0)),
DIMENSION(:, :),
INTENT(in)::dataOutX
898 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varList
899 INTEGER,
INTENT(in) :: irMax, outFreq_s
900 REAL(KIND(1d0)),
DIMENSION(:, :),
ALLOCATABLE,
INTENT(out)::dataOut_agg
902 INTEGER :: nlinesOut, i, j, x
903 REAL(KIND(1d0))::dataOut_aggX(1:size(varlist))
904 REAL(KIND(1d0)),
DIMENSION(:, :),
ALLOCATABLE::dataOut_agg0
905 nlinesout = int(
nsh/(60.*60/outfreq_s))
908 ALLOCATE (dataout_agg(int(irmax/nlinesout),
SIZE(varlist)))
909 ALLOCATE (dataout_agg0(nlinesout,
SIZE(varlist)))
911 DO i = nlinesout, irmax, nlinesout
913 dataout_agg0 = dataoutx(i - nlinesout + 1:i, :)
914 DO j = 1,
SIZE(varlist), 1
916 SELECT CASE (varlist(j)%aggreg)
918 dataout_aggx(j) = dataout_agg0(nlinesout, j)
920 dataout_aggx(j) = sum(dataout_agg0(:, j))/nlinesout
922 dataout_aggx(j) = sum(dataout_agg0(:, j))
924 dataout_aggx(j) = dataout_agg0(nlinesout, j)
927 IF (
diagnose == 1 .AND. i == irmax)
THEN 929 print *,
'raw data of ', j,
':' 930 print *, dataout_agg0(:, j)
931 print *,
'aggregated with method: ', varlist(j)%aggreg
932 print *, dataout_aggx(j)
936 dataout_agg(x, :) = dataout_aggx
944 REAL(KIND(1d0)),
DIMENSION(:, :),
INTENT(in)::dataOutX
945 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varList
946 INTEGER,
INTENT(in) :: iyr, Gridiv, outLevel
948 REAL(KIND(1d0)),
DIMENSION(:, :),
ALLOCATABLE::dataOutSel
949 TYPE(
varattr),
DIMENSION(:),
ALLOCATABLE::varListSel
950 CHARACTER(len=365) :: FileOutX
951 INTEGER :: fn, i, xx, err
952 INTEGER :: sizeVarListSel, sizedataOutX
953 CHARACTER(len=12*SIZE(varList)) :: FormatOut
957 IF (
diagnose == 1)
WRITE (*, *)
'Writting data of group: ', varlist(
SIZE(varlist))%group
960 sizevarlistsel = count((varlist%level <= outlevel), dim=1)
961 ALLOCATE (varlistsel(sizevarlistsel), stat=err)
962 IF (err /= 0) print *,
"varListSel: Allocation request denied" 963 varlistsel = pack(varlist, mask=(varlist%level <= outlevel))
966 sizedataoutx =
SIZE(dataoutx, dim=1)
967 ALLOCATE (dataoutsel(sizedataoutx, sizevarlistsel), stat=err)
968 IF (err /= 0) print *,
"dataOutSel: Allocation request denied" 971 dataoutsel = dataoutx(:, pack((/(i, i=1,
SIZE(varlist%level))/), varlist%level <= outlevel))
974 DO i = 1, sizevarlistsel
981 formatout = varlistsel(i)%fmt
985 formatout = trim(formatout)//
','//trim(varlistsel(i)%fmt)
991 formatout =
'('//trim(adjustl(formatout))//
')' 994 CALL filename_gen(dataoutsel, varlistsel, iyr, gridiv, fileoutx)
1004 OPEN (fn, file=trim(fileoutx), position=
'append')
1005 DO i = 1, sizedataoutx
1009 WRITE (fn, formatout) &
1010 (int(dataoutsel(i, xx)), xx=1, 4), &
1011 (dataoutsel(i, xx), xx=5, sizevarlistsel)
1015 IF (
ALLOCATED(varlistsel))
DEALLOCATE (varlistsel, stat=err)
1016 IF (err /= 0) print *,
"varListSel: Deallocation request denied" 1018 IF (
ALLOCATED(dataoutsel))
DEALLOCATE (dataoutsel, stat=err)
1019 IF (err /= 0) print *,
"dataOutSel: Deallocation request denied" 1023 SUBROUTINE filename_gen(dataOutX, varList, iyr, Gridiv, FileOutX, opt_fmt)
1027 REAL(KIND(1d0)),
DIMENSION(:, :),
INTENT(in)::dataOutX
1028 TYPE(
varattr),
DIMENSION(:),
INTENT(in)::varList
1029 INTEGER,
INTENT(in) :: iyr
1030 INTEGER,
INTENT(in) :: Gridiv
1031 INTEGER,
INTENT(in),
OPTIONAL :: opt_fmt
1032 CHARACTER(len=365),
INTENT(out) :: FileOutX
1034 CHARACTER(len=20):: str_out_min, str_grid, &
1035 str_date, str_year, str_DOY, str_grp, str_sfx
1036 INTEGER :: year_int, DOY_int, val_fmt, delta_t_min
1037 TYPE(datetime) :: dt1, dt2
1038 TYPE(timedelta) :: dt_x
1043 IF (
PRESENT(opt_fmt)) val_fmt = opt_fmt
1049 doy_int = int(dataoutx(1, 2))
1050 WRITE (str_doy,
'(i3.3)') doy_int
1063 WRITE (str_year,
'(i4)') year_int
1064 str_date =
'_'//trim(adjustl(str_year))
1067 IF (varlist(6)%group ==
'DailyState')
THEN 1072 dt1 = datetime(int(dataoutx(1, 1)), 1, 1) + &
1073 timedelta(days=int(dataoutx(1, 2) - 1), &
1074 hours=int(dataoutx(1, 3)), &
1075 minutes=int(dataoutx(1, 4)))
1077 dt2 = datetime(int(dataoutx(2, 1)), 1, 1) + &
1078 timedelta(days=int(dataoutx(2, 2) - 1), &
1079 hours=int(dataoutx(2, 3)), &
1080 minutes=int(dataoutx(2, 4)))
1083 delta_t_min = int(dt_x%total_seconds()/60)
1084 WRITE (str_out_min,
'(i4)') delta_t_min
1085 str_out_min =
'_'//trim(adjustl(str_out_min))
1089 str_grp = varlist(6)%group
1090 IF (len(trim(str_grp)) > 0) str_grp =
'_'//trim(adjustl(str_grp))
1107 trim(adjustl(str_grid))// &
1108 trim(adjustl(str_date))// &
1109 trim(adjustl(str_grp))// &
1110 trim(adjustl(str_out_min))// &
1111 trim(adjustl(str_sfx))
1114 IF (val_fmt == 1)
THEN 1117 trim(adjustl(str_grp))// &
1123 SUBROUTINE unique(vec, vec_unique)
1128 INTEGER,
DIMENSION(:),
INTENT(in) :: vec
1129 INTEGER,
DIMENSION(:),
ALLOCATABLE,
INTENT(out) :: vec_unique
1132 LOGICAL,
DIMENSION(SIZE(vec)) :: mask
1139 num = count(vec(i) == vec)
1146 IF (.NOT. any(vec(i) == vec .AND. mask)) mask(i) = .true.
1152 ALLOCATE (vec_unique(count(mask)))
1153 vec_unique = pack(vec, mask)
1164 CHARACTER(len=365),
INTENT(in) :: FileName
1166 CHARACTER(len=1000) :: longstring
1168 INQUIRE (file=trim(
filename), exist=existq)
1171 READ (10,
'(a)') longstring
1173 IF (verify(longstring,
'Year') == 0)
initq_file = .false.
1188 CHARACTER(len=*) :: filename
1192 OPEN (10, file=
filename, iostat=io, status=
'old')
1197 stop
'Cannot open file! ' 1202 READ (10, *, iostat=io) iv
1203 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
real(kind(1d0)), dimension(:, :, :), allocatable dataoutsolweig
subroutine suews_output_agg(dataOut_agg, dataOutX, varList, irMax, outFreq_s)