209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
240 USE pio
241
243
244 implicit none
245
246
247
248 integer, intent(in) :: ng
249 integer, intent(out) :: status
250
251 character (*), intent(in) :: ncname
252 character (*), intent(in) :: aname
253
254 TYPE (File_desc_t), intent(in) :: pioFile
255 TYPE(T_ADV), intent(in) :: Hadv(MAXVAL(NT),Ngrids)
256 TYPE(T_ADV), intent(in) :: Vadv(MAXVAL(NT),Ngrids)
257
258
259
260 integer :: i, ie, is, itrc, lvar, lstr, nTvar
261
262 character (len= 1) :: newline
263 character (len= 13) :: Hstring, Vstring
264 character (len= 17) :: frmt
265 character (len= 70) :: line
266 character (len=2816) :: tadv_att
267
268 character (len=*), parameter :: MyFile = &
269 & __FILE__//", tadv_putatt_pio"
270
271
272
273
274
275
276
278 lvar=0
279 DO itrc=1,ntvar
281 END DO
282 WRITE (frmt,10) max(10,lvar)+4
283 10 FORMAT ("(a,':',t",i2.2,',a,a,a)')
284
285
286
287 newline=char(10)
288 lstr=len_trim(newline)
289 DO i=1,len(tadv_att)
290 tadv_att(i:i)=' '
291 END DO
292 tadv_att(1:lstr)=newline(1:lstr)
293 is=lstr+1
294 WRITE (line,frmt) 'ADVECTION', &
295 & 'HORIZONTAL ', &
296 & 'VERTICAL ', &
297 & newline(1:lstr)
298 lstr=len_trim(line)
299 ie=is+lstr
300 tadv_att(is:ie)=line(1:lstr)
301 is=ie
302
303
304
305
306 lstr=(ntvar+1)*(26+lvar+4)+1
307 IF (len(tadv_att).lt.lstr) THEN
309 WRITE (
stdout,20) len(tadv_att), lstr
310 20 FORMAT (/,' TADV_PUTATT_PIO - Length of local string ', &
311 & 'tadv_att too small',/,19x,'Current = ',i5, &
312 & ' Needed = ',i5)
313 END IF
315 RETURN
316 END IF
317
318
319
320 DO itrc=1,ntvar
321 IF (hadv(itrc,ng)%AKIMA4) THEN
322 hstring='Akima4'
323 ELSE IF (hadv(itrc,ng)%CENTERED2) THEN
324 hstring='Centered2'
325 ELSE IF (hadv(itrc,ng)%CENTERED4) THEN
326 hstring='Centered4'
327 ELSE IF (hadv(itrc,ng)%HSIMT) THEN
328 hstring='HSIMT'
329 ELSE IF (hadv(itrc,ng)%MPDATA) THEN
330 hstring='MPDATA'
331 ELSE IF (hadv(itrc,ng)%SPLINES) THEN
332 hstring='Splines'
333 ELSE IF (hadv(itrc,ng)%SPLIT_U3) THEN
334 hstring='Split_U3'
335 ELSE IF (hadv(itrc,ng)%UPSTREAM3) THEN
336 hstring='Upstream3'
337 END IF
338
339 IF (vadv(itrc,ng)%AKIMA4) THEN
340 vstring='Akima4'
341 ELSE IF (vadv(itrc,ng)%CENTERED2) THEN
342 vstring='Centered2'
343 ELSE IF (vadv(itrc,ng)%CENTERED4) THEN
344 vstring='Centered4'
345 ELSE IF (vadv(itrc,ng)%HSIMT) THEN
346 vstring='HSIMT'
347 ELSE IF (vadv(itrc,ng)%MPDATA) THEN
348 vstring='MPDATA'
349 ELSE IF (vadv(itrc,ng)%SPLINES) THEN
350 vstring='Splines'
351 ELSE IF (vadv(itrc,ng)%SPLIT_U3) THEN
352 vstring='Split_U3'
353 ELSE IF (vadv(itrc,ng)%UPSTREAM3) THEN
354 vstring='Upstream3'
355 END IF
356 IF (itrc.eq.ntvar) newline=' '
358 & hstring, vstring, &
359 & newline
360 lstr=len_trim(line)
361 ie=is+lstr
362 tadv_att(is:ie)=line(1:lstr)
363 is=ie
364 END DO
365
366
367
368 status=pio_put_att(piofile, pio_global, trim(aname), &
369 & trim(tadv_att))
370 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
373 RETURN
374 END IF
375
376 RETURN