420 integer,
dimension(3) :: dynm2de_lay,dynm2dn_lay
421 integer,
dimension(2) :: dynm2ds
422 integer,
dimension(1) :: stat2ds
423 integer,
dimension(2) :: stat2ds_lev,stat2ds_lay
424 integer,
dimension(2) :: stat2ds_char
425 integer,
dimension(1) :: dynmtime
426 character(len=100) :: netcdf_convention
427 character(len=100) :: timestamp ,temp
428 integer :: i,j,ierr,i1,i2
440 netcdf_convention =
'CF-1.0' 444 timestamp =
'model started at: '//trim(temp)
452 cdfname = trim(output_dir)//trim(
casename)//
'_station_timeseries.nc' 455 ierr = nf90_create(path=cdfname,cmode=nf90_clobber,ncid=nc_ofid)
456 if(ierr /= nf90_noerr)
then 461 ierr = nf90_put_att(nc_ofid,nf90_global,
"title" ,trim(case_title))
462 ierr = nf90_put_att(nc_ofid,nf90_global,
"institution",trim(institution))
463 ierr = nf90_put_att(nc_ofid,nf90_global,
"source" ,trim(fvcom_version))
464 ierr = nf90_put_att(nc_ofid,nf90_global,
"history" ,trim(timestamp))
465 ierr = nf90_put_att(nc_ofid,nf90_global,
"references" ,trim(fvcom_website))
466 ierr = nf90_put_att(nc_ofid,nf90_global,
"Conventions",trim(netcdf_convention))
469 ierr = nf90_def_dim(nc_ofid,
"siglay" ,kbm1 ,siglay_did )
470 ierr = nf90_def_dim(nc_ofid,
"siglev" ,kb ,siglev_did )
471 ierr = nf90_def_dim(nc_ofid,
"station" ,
nsta ,station_did )
472 ierr = nf90_def_dim(nc_ofid,
"clen", 20, clen_did )
475 ierr = nf90_def_dim(nc_ofid,
"time" ,nf90_unlimited,time_did)
478 stat2ds = (/station_did/)
479 stat2ds_lev = (/station_did,siglev_did/)
480 stat2ds_lay = (/station_did,siglay_did/)
481 stat2ds_char = (/clen_did,station_did/)
484 dynm2ds = (/station_did,time_did/)
485 dynm2de_lay = (/station_did,siglay_did,time_did/)
486 dynm2dn_lay = (/station_did,siglay_did,time_did/)
487 dynmtime = (/time_did/)
492 ierr = nf90_def_var(nc_ofid,
"name_station",nf90_char,stat2ds_char,name_s_vid)
493 ierr = nf90_put_att(nc_ofid,name_s_vid,
"long_name",
"Station Name")
497 ierr = nf90_def_var(nc_ofid,
"x",nf90_float,stat2ds,x_s_vid)
498 ierr = nf90_put_att(nc_ofid,x_s_vid,
"long_name",
"station x-coordinate")
499 ierr = nf90_put_att(nc_ofid,x_s_vid,
"units",
"meters")
502 ierr = nf90_def_var(nc_ofid,
"y",nf90_float,stat2ds,y_s_vid)
503 ierr = nf90_put_att(nc_ofid,y_s_vid,
"long_name",
"station y-coordinate")
504 ierr = nf90_put_att(nc_ofid,y_s_vid,
"units",
"meters")
507 ierr = nf90_def_var(nc_ofid,
"lon",nf90_float,stat2ds,lon_s_vid)
508 ierr = nf90_put_att(nc_ofid,lon_s_vid,
"long_name",
"Longitude")
509 ierr = nf90_put_att(nc_ofid,lon_s_vid,
"standard_name",
"longitude")
510 ierr = nf90_put_att(nc_ofid,lon_s_vid,
"units",
"degrees_east")
513 ierr = nf90_def_var(nc_ofid,
"lat",nf90_float,stat2ds,lat_s_vid)
514 ierr = nf90_put_att(nc_ofid,lat_s_vid,
"long_name",
"Latitude")
515 ierr = nf90_put_att(nc_ofid,lat_s_vid,
"standard_name",
"latitude")
516 ierr = nf90_put_att(nc_ofid,lat_s_vid,
"units",
"degrees_north")
517 ierr = nf90_put_att(nc_ofid,lat_s_vid,
"grid",
"Bathymetry_Mesh")
520 ierr = nf90_def_var(nc_ofid,
"siglay",nf90_float,stat2ds_lay,siglay_vid)
521 ierr = nf90_put_att(nc_ofid,siglay_vid,
"long_name",
"Sigma Layers")
522 ierr = nf90_put_att(nc_ofid,siglay_vid,
"standard_name",
"ocean_sigma/general_coordinate")
523 ierr = nf90_put_att(nc_ofid,siglay_vid,
"positive",
"up")
524 ierr = nf90_put_att(nc_ofid,siglay_vid,
"valid_min",
"-1")
525 ierr = nf90_put_att(nc_ofid,siglay_vid,
"valid_max",
"0")
526 ierr = nf90_put_att(nc_ofid,siglay_vid,
"formula_terms",
"siglay:siglay eta:zeta depth:depth")
529 ierr = nf90_def_var(nc_ofid,
"siglev",nf90_float,stat2ds_lev,siglev_vid)
530 ierr = nf90_put_att(nc_ofid,siglev_vid,
"long_name",
"Sigma Levels")
531 ierr = nf90_put_att(nc_ofid,siglev_vid,
"standard_name",
"ocean_sigma/general_coordinate")
532 ierr = nf90_put_att(nc_ofid,siglev_vid,
"positive",
"up")
533 ierr = nf90_put_att(nc_ofid,siglev_vid,
"valid_min",
"-1")
534 ierr = nf90_put_att(nc_ofid,siglev_vid,
"valid_max",
"0")
535 ierr = nf90_put_att(nc_ofid,siglev_vid,
"formula_terms",
"siglev:siglev eta:zeta depth:depth")
540 ierr = nf90_def_var(nc_ofid,
"h",nf90_float,stat2ds,h_s_vid)
541 ierr = nf90_put_att(nc_ofid,h_s_vid,
"long_name",
"Bathymetry")
542 ierr = nf90_put_att(nc_ofid,h_s_vid,
"units",
"meters")
543 ierr = nf90_put_att(nc_ofid,h_s_vid,
"positive",
"down")
544 ierr = nf90_put_att(nc_ofid,h_s_vid,
"standard_name",
"depth")
547 IF(use_real_world_time)
THEN 548 ierr = nf90_def_var(nc_ofid,
"time",nf90_float,dynmtime,time_s_vid)
549 ierr = nf90_put_att(nc_ofid,time_s_vid,
"long_name",
"time")
550 if(date_reference ==
'default')
then 551 ierr = nf90_put_att(nc_ofid,time_s_vid,
"units",trim(
"days since 1858-11-17 00:00:00"))
552 ierr = nf90_put_att(nc_ofid,time_s_vid,
"format",trim(
"modified julian day (MJD)"))
554 ierr = nf90_put_att(nc_ofid,time_s_vid,
"units",
"days since "//trim(date_reference))
555 ierr = nf90_put_att(nc_ofid,time_s_vid,
"format",trim(
"defined reference date"))
558 ierr = nf90_put_att(nc_ofid,time_s_vid,
"time_zone",
"UTC")
561 ierr = nf90_def_var(nc_ofid,
"time",nf90_float,dynmtime,time_s_vid)
562 ierr = nf90_put_att(nc_ofid,time_s_vid,
"long_name",
"time")
565 ierr = nf90_put_att(nc_ofid,time_s_vid,
"time_zone",
"none")
568 ierr = nf90_def_var(nc_ofid,
"iint",nf90_int,dynmtime,iint_vid)
569 ierr = nf90_put_att(nc_ofid,iint_vid,
"long_name",
"internal mode iteration number")
573 ierr = nf90_def_var(nc_ofid,
"u",nf90_float,dynm2de_lay,u_s_vid)
574 ierr = nf90_put_att(nc_ofid,u_s_vid,
"long_name",
"Eastward Water Velocity")
575 ierr = nf90_put_att(nc_ofid,u_s_vid,
"standard_name",
"eastward_sea_water_velocity")
576 ierr = nf90_put_att(nc_ofid,u_s_vid,
"units",
"meters s-1")
577 ierr = nf90_put_att(nc_ofid,u_s_vid,
"type",
"data")
578 ierr = nf90_put_att(nc_ofid,u_s_vid,
"coordinates",
"time siglay station")
580 ierr = nf90_def_var(nc_ofid,
"v",nf90_float,dynm2de_lay,v_s_vid)
581 ierr = nf90_put_att(nc_ofid,v_s_vid,
"long_name",
"Northward Water Velocity")
582 ierr = nf90_put_att(nc_ofid,u_s_vid,
"standard_name",
"northward_sea_water_velocity")
583 ierr = nf90_put_att(nc_ofid,v_s_vid,
"units",
"meters s-1")
584 ierr = nf90_put_att(nc_ofid,v_s_vid,
"type",
"data")
585 ierr = nf90_put_att(nc_ofid,v_s_vid,
"coordinates",
"time siglay station")
587 ierr = nf90_def_var(nc_ofid,
"ww",nf90_float,dynm2de_lay,ww_s_vid)
588 ierr = nf90_put_att(nc_ofid,ww_s_vid,
"long_name",
"Upward Water Velocity")
589 ierr = nf90_put_att(nc_ofid,ww_s_vid,
"units",
"meters s-1")
590 ierr = nf90_put_att(nc_ofid,ww_s_vid,
"type",
"data")
594 ierr = nf90_def_var(nc_ofid,
"ua",nf90_float,dynm2ds,ua_s_vid)
595 ierr = nf90_put_att(nc_ofid,ua_s_vid,
"long_name",
"Vertically Averaged x-velocity")
596 ierr = nf90_put_att(nc_ofid,ua_s_vid,
"units",
"meters s-1")
597 ierr = nf90_put_att(nc_ofid,ua_s_vid,
"type",
"data")
599 ierr = nf90_def_var(nc_ofid,
"va",nf90_float,dynm2ds,va_s_vid)
600 ierr = nf90_put_att(nc_ofid,va_s_vid,
"long_name",
"Vertically Averaged y-velocity")
601 ierr = nf90_put_att(nc_ofid,va_s_vid,
"units",
"meters s-1")
602 ierr = nf90_put_att(nc_ofid,va_s_vid,
"type",
"data")
606 ierr = nf90_def_var(nc_ofid,
"temp",nf90_float,dynm2dn_lay,t1_s_vid)
607 ierr = nf90_put_att(nc_ofid,t1_s_vid,
"long_name",
"temperature")
608 ierr = nf90_put_att(nc_ofid,t1_s_vid,
"standard_name",
"sea_water_temperature")
609 ierr = nf90_put_att(nc_ofid,t1_s_vid,
"units",
"degrees_C")
610 ierr = nf90_put_att(nc_ofid,t1_s_vid,
"type",
"data")
611 ierr = nf90_put_att(nc_ofid,t1_s_vid,
"coordinates",
"time siglay station")
613 ierr = nf90_def_var(nc_ofid,
"salinity",nf90_float,dynm2dn_lay,s1_s_vid)
614 ierr = nf90_put_att(nc_ofid,s1_s_vid,
"long_name",
"salinity")
615 ierr = nf90_put_att(nc_ofid,s1_s_vid,
"standard_name",
"sea_water_salinity")
616 ierr = nf90_put_att(nc_ofid,s1_s_vid,
"units",
"1e-3")
617 ierr = nf90_put_att(nc_ofid,s1_s_vid,
"type",
"data")
618 ierr = nf90_put_att(nc_ofid,s1_s_vid,
"coordinates",
"time siglay station")
622 ierr = nf90_def_var(nc_ofid,
"zeta",nf90_float,dynm2ds,el_s_vid)
623 ierr = nf90_put_att(nc_ofid,el_s_vid,
"long_name",
"Water Surface Elevation")
624 ierr = nf90_put_att(nc_ofid,el_s_vid,
"units",
"meters")
625 ierr = nf90_put_att(nc_ofid,el_s_vid,
"positive",
"up")
626 ierr = nf90_put_att(nc_ofid,el_s_vid,
"standard_name",
"sea_surface_height_above_geoid")
627 ierr = nf90_put_att(nc_ofid,el_s_vid,
"type",
"data")
628 ierr = nf90_put_att(nc_ofid,el_s_vid,
"coordinates",
"time station")
632 ierr = nf90_def_var(nc_ofid,
"uwind_speed",nf90_float,dynm2ds,uuwind_s_vid)
633 ierr = nf90_put_att(nc_ofid,uuwind_s_vid,
"long_name",
"Eastward wind velocity")
634 ierr = nf90_put_att(nc_ofid,uuwind_s_vid,
"units",
"(m/s)")
635 ierr = nf90_put_att(nc_ofid,uuwind_s_vid,
"standard_name",
"eastward wind")
636 ierr = nf90_put_att(nc_ofid,uuwind_s_vid,
"type",
"data")
637 ierr = nf90_put_att(nc_ofid,uuwind_s_vid,
"coordinates",
"time station")
639 ierr = nf90_def_var(nc_ofid,
"vwind_speed",nf90_float,dynm2ds,vvwind_s_vid)
640 ierr = nf90_put_att(nc_ofid,vvwind_s_vid,
"long_name",
"Northward wind velocity")
641 ierr = nf90_put_att(nc_ofid,vvwind_s_vid,
"units",
"(m/s)")
642 ierr = nf90_put_att(nc_ofid,vvwind_s_vid,
"standard_name",
"northward wind")
643 ierr = nf90_put_att(nc_ofid,vvwind_s_vid,
"type",
"data")
644 ierr = nf90_put_att(nc_ofid,vvwind_s_vid,
"coordinates",
"time station")
649 ierr = nf90_enddef(nc_ofid)
650 ierr = nf90_close(nc_ofid)
658 ierr = nf90_open(cdfname,nf90_write,nc_ofid)
659 if(ierr /= nf90_noerr)
then 665 i1 = lbound(
lon,1) ; i2 = ubound(
lon,1)
666 call putvar(i1,i2,m,
mgl,1,1,
"n",
lon,nc_ofid,lon_s_vid,
myid&
667 &,nprocs,ipt, stck_cnt)
670 i1 = lbound(
lat,1) ; i2 = ubound(
lat,1)
671 call putvar(i1,i2,m,
mgl,1,1,
"n",
lat,nc_ofid,lat_s_vid,
myid&
672 &,nprocs,ipt, stck_cnt)
675 i1 = lbound(
vx,1) ; i2 = ubound(
vx,1)
676 call putvar(i1,i2,m,
mgl,1,1,
"n",
vx+
vxmin,nc_ofid,x_s_vid,
myid,nprocs&
680 i1 = lbound(
vy,1) ; i2 = ubound(
vy,1)
681 call putvar(i1,i2,m,
mgl,1,1,
"n",
vy+
vymin,nc_ofid,y_s_vid,
myid,nprocs&
685 i1 = lbound(
h,1) ; i2 = ubound(
h,1)
686 call putvar(i1,i2,m,
mgl,1,1,
"n",
h,nc_ofid,h_s_vid,
myid,nprocs,ipt,&
690 i1 = lbound(
zz,1) ; i2 = ubound(
zz,1)
691 call putvar(i1,i2,m,
mgl,kb,kb-1,
"n",
zz,nc_ofid,siglay_vid,
myid&
692 &,nprocs,ipt, stck_cnt)
695 i1 = lbound(
z,1) ; i2 = ubound(
z,1)
696 call putvar(i1,i2,m,
mgl,kb,kb,
"n",
z,nc_ofid,siglev_vid,
myid,nprocs&
710 if(msr) ierr = nf90_close(nc_ofid)
character(len=80) casename
subroutine get_timestamp(TS)
real(sp), dimension(:), allocatable, target h
character(len=20), dimension(:), allocatable name_sta
character(len=120), public netcdf_timestring
logical out_wind_velocity
real(sp), dimension(:), allocatable, target vx
real(sp), dimension(:), allocatable, target vy
real(sp), dimension(:), allocatable, target lat
real(sp), dimension(:,:), allocatable, target z
real(sp), dimension(:), allocatable, target lon
subroutine putvar_char(i1, i2, var, nc_fid, vid, myid, nprocs, ipt, stk)
real(sp), dimension(:,:), allocatable, target zz