347
348
350
351
352
353 integer, intent(in) :: ng
354
355
356
357 integer :: Fcount, itrc, l, status
358
359 real(r8), dimension(Nfloats(ng)) :: Tout
360
361 character (len=*), parameter :: MyFile = &
362 & __FILE__//", wrt_floats_pio"
363
364 sourcefile=myfile
365
366
367
368
369
370 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
371
372
373
374 flt(ng)%Rindex=flt(ng)%Rindex+1
375 fcount=flt(ng)%Fcount
376 flt(ng)%Nrec(fcount)=flt(ng)%Nrec(fcount)+1
377
378
379
381 & trim(vname(1,idtime)), time(ng:), &
382 & (/flt(ng)%Rindex/), (/1/), &
383 & piofile = flt(ng)%pioFile, &
384 & piovar = flt(ng)%pioVar(idtime)%vd)
385 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
386
387
388
389 DO l=1,nfloats(ng)
390 IF (drifter(ng)%bounded(l)) THEN
391 tout(l)=drifter(ng)%track(ixgrd,nf(ng),l)
392 ELSE
393 tout(l)=spval
394 END IF
395 END DO
397 & 'Xgrid', tout, &
398 & (/1,flt(ng)%Rindex/), &
399 & (/nfloats(ng),1/), &
400 & piofile = flt(ng)%pioFile, &
401 & piovar = flt(ng)%pioVar(idxgrd)%vd)
402 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
403
404
405
406 DO l=1,nfloats(ng)
407 IF (drifter(ng)%bounded(l)) THEN
408 tout(l)=drifter(ng)%track(iygrd,nf(ng),l)
409 ELSE
410 tout(l)=spval
411 END IF
412 END DO
414 & 'Ygrid', tout, &
415 & (/1,flt(ng)%Rindex/), &
416 & (/nfloats(ng),1/), &
417 & piofile = flt(ng)%pioFile, &
418 & piovar = flt(ng)%pioVar(idygrd)%vd)
419 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
420
421# ifdef SOLVE3D
422
423
424
425 DO l=1,nfloats(ng)
426 IF (drifter(ng)%bounded(l)) THEN
427 tout(l)=drifter(ng)%track(izgrd,nf(ng),l)
428 ELSE
429 tout(l)=spval
430 END IF
431 END DO
433 & 'Zgrid', tout, &
434 & (/1,flt(ng)%Rindex/), &
435 & (/nfloats(ng),1/), &
436 & piofile = flt(ng)%pioFile, &
437 & piovar = flt(ng)%pioVar(idzgrd)%vd)
438 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
439# endif
440
441
442
443 DO l=1,nfloats(ng)
444 IF (drifter(ng)%bounded(l)) THEN
445 tout(l)=drifter(ng)%track(iflon,nf(ng),l)
446 ELSE
447 tout(l)=spval
448 END IF
449 END DO
450 IF (spherical) THEN
452 & 'lon', tout, &
453 & (/1,flt(ng)%Rindex/), &
454 & (/nfloats(ng),1/), &
455 & piofile = flt(ng)%pioFile, &
456 & piovar = flt(ng)%pioVar(idglon)%vd)
457 ELSE
459 & 'x', tout, &
460 & (/1,flt(ng)%Rindex/), &
461 & (/nfloats(ng),1/), &
462 & piofile = flt(ng)%pioFile, &
463 & piovar = flt(ng)%pioVar(idglon)%vd)
464 END IF
465 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
466
467 DO l=1,nfloats(ng)
468 IF (drifter(ng)%bounded(l)) THEN
469 tout(l)=drifter(ng)%track(iflat,nf(ng),l)
470 ELSE
471 tout(l)=spval
472 END IF
473 END DO
474 IF (spherical) THEN
476 & 'lat', tout, &
477 & (/1,flt(ng)%Rindex/), &
478 & (/nfloats(ng),1/), &
479 & piofile = flt(ng)%pioFile, &
480 & piovar = flt(ng)%pioVar(idglat)%vd)
481 ELSE
483 & 'y', tout, &
484 & (/1,flt(ng)%Rindex/), &
485 & (/nfloats(ng),1/), &
486 & piofile = flt(ng)%pioFile, &
487 & piovar = flt(ng)%pioVar(idglat)%vd)
488 END IF
489 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
490
491# ifdef SOLVE3D
492
493
494
495 DO l=1,nfloats(ng)
496 IF (drifter(ng)%bounded(l)) THEN
497 tout(l)=drifter(ng)%track(idpth,nf(ng),l)
498 ELSE
499 tout(l)=spval
500 END IF
501 END DO
503 & 'depth', tout, &
504 & (/1,flt(ng)%Rindex/), &
505 & (/nfloats(ng),1/), &
506 & piofile = flt(ng)%pioFile, &
507 & piovar = flt(ng)%pioVar(iddpth)%vd)
508 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
509
510
511
512 DO l=1,nfloats(ng)
513 IF (drifter(ng)%bounded(l)) THEN
514 tout(l)=drifter(ng)%track(ifden,nf(ng),l)
515 ELSE
516 tout(l)=spval
517 END IF
518 END DO
520 & trim(vname(1,iddano)), tout, &
521 & (/1,flt(ng)%Rindex/), &
522 & (/nfloats(ng),1/), &
523 & piofile = flt(ng)%pioFile, &
524 & piovar = flt(ng)%pioVar(iddano)%vd)
525 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
526
527
528
529 DO itrc=1,nt(ng)
530 DO l=1,nfloats(ng)
531 IF (drifter(ng)%bounded(l)) THEN
532 tout(l)=drifter(ng)%track(iftvar(itrc),nf(ng),l)
533 ELSE
534 tout(l)=spval
535 END IF
536 END DO
538 & trim(vname(1,idtvar(itrc))), tout, &
539 & (/1,flt(ng)%Rindex/), &
540 & (/nfloats(ng),1/), &
541 & piofile = flt(ng)%pioFile, &
542 & piovar = flt(ng)%pioTrc(itrc)%vd)
543 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
544 END DO
545# endif
546
547# ifdef FLOAT_OYSTER
548
549
550
551 DO l=1,nfloats(ng)
552 IF (drifter(ng)%bounded(l)) THEN
553 tout(l)=drifter(ng)%track(iswim,nf(ng),l)
554 ELSE
555 tout(l)=spval
556 END IF
557 END DO
559 & 'swim_time', tout, &
560 & (/1,flt(ng)%Rindex/), &
561 & (/nfloats(ng),1/), &
562 & piofile = flt(ng)%pioFile, &
563 & piovar = flt(ng)%pioVar(idswim)%vd)
564 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
565
566
567
568 DO l=1,nfloats(ng)
569 IF (drifter(ng)%bounded(l)) THEN
570 tout(l)=drifter(ng)%track(iwbio,nf(ng),l)
571 ELSE
572 tout(l)=spval
573 END IF
574 END DO
576 & 'w_bio', tout, &
577 & (/1,flt(ng)%Rindex/), &
578 & (/nfloats(ng),1/), &
579 & piofile = flt(ng)%pioFile, &
580 & piovar = flt(ng)%pioVar(idwbio)%vd)
581 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
582
583
584
585 DO l=1,nfloats(ng)
586 IF (drifter(ng)%bounded(l)) THEN
587 tout(l)=drifter(ng)%track(isizf,nf(ng),l)
588 ELSE
589 tout(l)=spval
590 END IF
591 END DO
593 & 'bio_size', tout, &
594 & (/1,flt(ng)%Rindex/), &
595 & (/nfloats(ng),1/), &
596 & piofile = flt(ng)%pioFile, &
597 & piovar = flt(ng)%pioVar(idsize)%vd)
598 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
599
600
601
602 DO l=1,nfloats(ng)
603 IF (drifter(ng)%bounded(l)) THEN
604 tout(l)=drifter(ng)%track(iwsin,nf(ng),l)
605 ELSE
606 tout(l)=spval
607 END IF
608 END DO
610 & 'bio_sink', tout, &
611 & (/1,flt(ng)%Rindex/), &
612 & (/nfloats(ng),1/), &
613 & piofile = flt(ng)%pioFile, &
614 & piovar = flt(ng)%pioVar(idwsin)%vd)
615 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
616# endif
617
618
619
620
621
623
624 RETURN
subroutine, public pio_netcdf_sync(ng, model, ncname, piofile)