52 integer,
private :: out_cnt
53 integer,
private :: stck_cnt
54 character(len=120),
private :: cdfname
58 integer,
private :: nc_ofid
61 integer,
private :: station_did,clen_did
62 integer,
private :: siglay_did,siglev_did
63 integer,
private :: time_did
66 integer,
private :: x_s_vid,y_s_vid,lat_s_vid,lon_s_vid
67 integer,
private :: siglay_vid,siglev_vid
70 integer,
private :: time_s_vid
71 integer,
private :: iint_vid
72 integer,
private :: u_s_vid
73 integer,
private :: v_s_vid
74 integer,
private :: ww_s_vid
75 integer,
private :: s1_s_vid
76 integer,
private :: t1_s_vid
77 integer,
private :: el_s_vid
78 integer,
private :: h_s_vid
79 integer,
private :: ua_s_vid
80 integer,
private :: va_s_vid
81 integer,
private :: uuwind_s_vid
82 integer,
private :: vvwind_s_vid
83 integer,
private :: atmpres_s_vid
84 integer,
private :: name_s_vid
112 out_interval =
"A length of time: 'seconds= ','days= ', or 'cycles= '" 123 WRITE(unit=
ipt,nml=nml_station_timeseries)
136 CHARACTER(LEN=120) :: FNAME
137 CHARACTER(LEN=160) :: PATHNFILE
140 &
WRITE(ipt,*)
"Subroutine Begins: Read_Station_Name_List;" 144 fname =
"./"//trim(
casename)//
"_run.nml" 152 READ(unit=
nmlunit, nml=nml_station_timeseries,iostat=ios)
155 Call fatal_error(
"Can Not Read NameList NML_STATION_TIMESERIES from file: "//trim(fname))
167 USE all_vars,
ONLY : serial, par, nprocs,
h, one_third,
nvg,start_date
173 CHARACTER(LEN=120) :: FNAME
174 CHARACTER(LEN=3) :: NAC
175 INTEGER :: IZAJ_MAX,IOS,IDUMMY1,I
178 REAL(SP),
ALLOCATABLE :: FTEMP(:),FTEMPC(:)
179 INTEGER :: IDD,IMM,IYY,ICC,IHH,IMI,ISS
180 INTEGER :: IDD1,IMM1,IYY1,ICC1,IHH1,IMI1,ISS1
181 INTEGER :: KD_REFERENCE
185 ALLOCATE(ftemp(
mgl)) ; ftemp = 0.0_sp
189 ALLOCATE(ftempc(
ngl)) ;ftempc = 0.0_sp
191 ftempc(i) = one_third*(ftemp(
nvg(i,1))+ftemp(
nvg(i,2))+ftemp(
nvg(i,3)))
196 CALL fopen(127,trim(fname),
'cfr')
200 READ(127,*,iostat=ios)
202 READ(127,*,iostat=ios)idummy1
204 izaj_max = izaj_max + 1
218 CALL fatal_error(
"LOCATION_TYPE should be either node or cell")
240 READ(start_date(1:2),*) icc
241 READ(start_date(3:4),*) iyy
242 READ(start_date(6:7),*) imm
243 READ(start_date(9:10),*) idd
244 READ(start_date(12:13),*) ihh
245 READ(start_date(15:16),*) imi
246 READ(start_date(18:19),*) iss
259 CALL gday1(idd1,imm1,iyy1,icc1,kd_reference)
261 CALL gday1(17,11,58,18,kd_reference)
266 kdd%MuSOD = ihh*3600.+imi*60.+iss
278 REAL(SP),
ALLOCATABLE,
DIMENSION(:,:) :: UTMP,VTMP,T1TMP,S1TMP
279 REAL(SP),
ALLOCATABLE,
DIMENSION(:) :: UATMP,VATMP,UUWINDTMP,VVWINDTMP,ELTMP
283 INTEGER ::IZAJ_MAX,IZAJ_MIN,IZAJ,IZAJ_MAX_s,IZAJ_MIN_s,IZAJ_MAX_t,IZAJ_MIN_t
284 INTEGER ::kZAJ_MAX_s,kZAJ_MIN_s,kZAJ_MAX_t,kZAJ_MIN_t
286 REAL(SP) :: THOUR,THOUR1
287 REAL(SP) :: STATMP(NSTA),STATMP1(NSTA),STATMPT(NSTA,KB),STATMPS(NSTA,KB)
289 real(sp),
allocatable :: ftemp(:)
299 thour = dti*float(iint-istart+1)/3600.0_sp
300 thour1 = dti*float(iint)/3600.0_sp
302 out_cnt = out_cnt + 1
303 stck_cnt = stck_cnt + 1
310 ierr = nf90_open(cdfname,nf90_write,nc_ofid)
311 if(ierr /= nf90_noerr)
then 316 ierr = nf90_put_var(nc_ofid,iint_vid,iint,start=dims)
317 if(ierr /= nf90_noerr)
then 318 call handle_ncerr(ierr,
"error writing variable to netcdf")
321 IF(use_real_world_time)
THEN 322 kdd1%MJD =
kdd%MJD + int((
kdd%MuSOD/3600.+thour)/24.0)
323 kdd1%MuSOD =
kdd%MuSOD + thour * 3600 - int((
kdd%MuSOD/3600.+thour)/24.0) * 24 * 3600
324 kdd_tmp =
kdd1%MJD +
kdd1%MuSOD/86400.0
326 ierr = nf90_put_var(nc_ofid,time_s_vid,kdd_tmp,start=dims)
327 if(ierr /= nf90_noerr)
then 328 call handle_ncerr(ierr,
"error writing variable to netcdf")
332 ierr = nf90_put_var(nc_ofid,time_s_vid,thour1*3600.,start=dims)
333 if(ierr /= nf90_noerr)
then 334 call handle_ncerr(ierr,
"error writing variable to netcdf")
340 if(msr)
write(ipt,*)
'dumping to netcdf file: ',trim(cdfname),stck_cnt
343 i1 = lbound(
el,1) ; i2 = ubound(
el,1)
344 call putvar(i1,i2,m,mgl,1,1,
"n",
el,nc_ofid,el_s_vid,myid,nprocs&
349 i1 = lbound(
t1,1) ; i2 = ubound(
t1,1)
350 call putvar(i1,i2,m,mgl,kb,kb-1,
"n",
t1,nc_ofid,t1_s_vid,myid&
351 &,nprocs,ipt, stck_cnt)
352 i1 = lbound(
s1,1) ; i2 = ubound(
s1,1)
353 call putvar(i1,i2,m,mgl,kb,kb-1,
"n",
s1,nc_ofid,s1_s_vid,myid&
354 &,nprocs,ipt, stck_cnt)
358 i1 = lbound(
u,1) ; i2 = ubound(
u,1)
359 call putvar(i1,i2,n,ngl,kb,kb-1,
"e",
u,nc_ofid,u_s_vid,myid&
360 &,nprocs,ipt, stck_cnt)
361 i1 = lbound(
v,1) ; i2 = ubound(
v,1)
362 call putvar(i1,i2,n,ngl,kb,kb-1,
"e",
v,nc_ofid,v_s_vid,myid&
363 &,nprocs,ipt, stck_cnt)
364 i1 = lbound(
ww,1) ; i2 = ubound(
ww,1)
365 call putvar(i1,i2,n,ngl,kb,kb-1,
"e",
ww,nc_ofid,ww_s_vid,myid&
366 &,nprocs,ipt, stck_cnt)
372 i1 = lbound(ftemp,1) ; i2 = ubound(ftemp,1)
373 call putvar(i1,i2,n,ngl,1,1,
"e",ftemp,nc_ofid,ua_s_vid,myid&
374 &,nprocs,ipt, stck_cnt)
378 i1 = lbound(ftemp,1) ; i2 = ubound(ftemp,1)
379 call putvar(i1,i2,n,ngl,1,1,
"e",ftemp,nc_ofid,va_s_vid,myid&
380 &,nprocs,ipt, stck_cnt)
387 i1 = lbound(ftemp,1) ; i2 = ubound(ftemp,1)
388 call putvar(i1,i2,n,ngl,1,1,
"e",ftemp,nc_ofid,uuwind_s_vid,myid&
389 &,nprocs,ipt, stck_cnt)
393 i1 = lbound(ftemp,1) ; i2 = ubound(ftemp,1)
394 call putvar(i1,i2,n,ngl,1,1,
"e",ftemp,nc_ofid,vvwind_s_vid,myid&
395 &,nprocs,ipt, stck_cnt)
401 ierr = nf90_close(nc_ofid)
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)
719 SUBROUTINE putvar1d_real(i1,i2,n1,n1gl,kt,k1,map_type,var,nc_fid,vid&
720 &,myid,nprocs,ipt,stk)
724 integer,
intent(in) :: i1,i2,n1,n1gl,kt,k1,nc_fid,vid,myid,nprocs&
726 character(len=*),
intent(in) :: map_type
727 real(sp),
dimension(i1:i2) :: var
729 real(sp),
allocatable,
dimension(:,:) :: temp
731 allocate(temp(i1:i2,kt))
734 CALL putvar2d_real(i1,i2,n1,n1gl,kt,k1,map_type,temp,nc_fid,vid&
735 &,myid,nprocs,ipt,stk)
742 subroutine putvar2d_real(i1,i2,n1,n1gl,kt,k1,map_type,var,nc_fid,vid&
743 &,myid,nprocs,ipt,stk)
751 integer,
intent(in) :: i1,i2,n1,n1gl,kt,k1,nc_fid,vid,myid,nprocs&
753 character(len=*),
intent(in) :: map_type
754 real(sp),
allocatable :: var(:,:)
756 real(sp),
allocatable,
dimension(:,:) :: temp,gtemp
757 integer :: ierr,k1m1,i,j
758 integer,
allocatable :: dims(:)
774 if(map_type(1:1) /=
"e" .and. map_type(1:1) /=
"n")
then 775 write(ipt,*)
'map_type input to putvar should be "e" OR "n"' 780 allocate(temp(
nsta,k1m1))
782 if(map_type(1:1) ==
'n' .and. trim(
location_type) ==
'node')
then 784 temp(i,1:k1m1) = var(
node_sta(i),1:k1m1)
786 else if(map_type(1:1) ==
'e' .and. trim(
location_type) ==
'cell')
then 790 else if(map_type(1:1) ==
'n' .and. trim(
location_type) ==
'cell')
then 794 temp(i,1:k1m1) = temp(i,1:k1m1) + var(
nvg(
element_sta(i),j),1:k1m1)
796 temp(i,:) = temp(i,:)/3.0_sp
798 else if(map_type(1:1) ==
'e' .and. trim(
location_type) ==
'node')
then 802 temp(i,1:k1m1) = temp(i,1:k1m1) + var(
nbvegl(
node_sta(i),j),1:k1m1)
812 ierr = nf90_put_var(nc_fid,vid,temp,start=dims)
813 if(ierr /= nf90_noerr)
then 814 call handle_ncerr(ierr,
"error writing variable to netcdf")
817 deallocate(dims,temp)
823 SUBROUTINE putvar1d_int(i1,i2,n1,n1gl,kt,k1,map_type,var,nc_fid,vid&
824 &,myid,nprocs,ipt,stk )
828 integer,
intent(in) :: i1,i2,n1,n1gl,kt,k1,nc_fid,vid,myid,nprocs&
830 character(len=*),
intent(in) :: map_type
831 INTEGER,
dimension(i1:i2) :: var
833 INTEGER,
allocatable,
dimension(:,:) :: temp
835 allocate(temp(i1:i2,kt))
838 call putvar2d_int(i1,i2,n1,n1gl,kt,k1,map_type,temp,nc_fid,vid&
839 &,myid,nprocs,ipt, stk)
845 subroutine putvar2d_int(i1,i2,n1,n1gl,kt,k1,map_type,var,nc_fid,vid&
846 &,myid,nprocs,ipt, stk)
854 integer,
intent(in) :: i1,i2,n1,n1gl,kt,k1,nc_fid,vid,myid,nprocs&
856 character(len=*),
intent(in) :: map_type
857 INTEGER,
allocatable :: var(:,:)
859 INTEGER,
allocatable,
dimension(:,:) :: temp,gtemp
860 integer :: ierr,k1m1,i,j
861 integer,
allocatable :: dims(:)
877 if(map_type(1:1) /=
"e" .and. map_type(1:1) /=
"n")
then 878 write(ipt,*)
'map_type input to putvar should be "e" OR "n"' 883 allocate(temp(
nsta,k1m1))
885 if(map_type(1:1) ==
'n' .and. trim(
location_type) ==
'node')
then 887 temp(i,1:k1m1) = var(
node_sta(i),1:k1m1)
889 else if(map_type(1:1) ==
'e' .and. trim(
location_type) ==
'cell')
then 893 else if(map_type(1:1) ==
'n' .and. trim(
location_type) ==
'cell')
then 897 temp(i,1:k1m1) = temp(i,1:k1m1) + var(
nvg(
element_sta(i),j),1:k1m1)
899 temp(i,:) = temp(i,:)/3.0_sp
901 else if(map_type(1:1) ==
'e' .and. trim(
location_type) ==
'node')
then 905 temp(i,1:k1m1) = temp(i,1:k1m1) + var(
nbvegl(
node_sta(i),j),1:k1m1)
915 ierr = nf90_put_var(nc_fid,vid,temp,start=dims)
916 if(ierr /= nf90_noerr)
then 917 call handle_ncerr(ierr,
"error writing variable to netcdf")
920 deallocate(dims,temp)
927 SUBROUTINE putvar_char(i1,i2,var,nc_fid,vid,myid,nprocs,ipt,stk )
932 integer,
intent(in) :: i1,i2,nc_fid,vid,myid,nprocs,ipt, stk
933 CHARACTER(LEN=20),
dimension(i1:i2) :: var
934 CHARACTER(LEN=20),
allocatable,
dimension(:,:) :: var_tmp
936 integer,
allocatable :: dims(:)
942 allocate(var_tmp(i1:i2,1))
943 var_tmp(i1:i2,1) = var(i1:i2)
945 ierr = nf90_put_var(nc_fid,vid,var_tmp,start=dims)
946 if(ierr /= nf90_noerr)
then 947 call handle_ncerr(ierr,
"error writing variable to netcdf")
968 INTEGER I,J,NCNT,MX_NBR_ELEM_GL
977 IF( float(
nvg(j,1)-i)*float(
nvg(j,2)-i)*float(
nvg(j,3)-i) == 0.0_sp) &
980 mx_nbr_elem_gl = max(mx_nbr_elem_gl,ncnt)
996 IF (float(
nvg(j,1)-i)*float(
nvg(j,2)-i)*float(
nvg(j,3)-i) == 0.0_sp)
THEN
subroutine station_name_list_print
real(sp), dimension(:), allocatable, target va
character(len=80) casename
subroutine get_output_file_interval(STRING, INTERVAL)
subroutine get_timestamp(TS)
integer, parameter nmlunit
real(sp), dimension(:), allocatable, target h
real(sp), dimension(:), allocatable, target el
character(len=20), dimension(:), allocatable name_sta
real(sp), dimension(:), allocatable h_sta
real(sp), dimension(:,:), allocatable, target v
character(len=120), public netcdf_timestring
subroutine out_station_timeseries
real(sp), dimension(:), allocatable lat_sta
character(len=80) location_type
logical function dbg_set(vrb)
subroutine read_station_file
real(sp), dimension(:,:), allocatable, target t1
character(len=80) output_dir
subroutine station_name_list_read
subroutine putvar1d_real(i1, i2, n1, n1gl, kt, k1, map_type, var, nc_fid, vid, myid, nprocs, ipt, stk)
real(sp), dimension(:), allocatable lon_sta
logical out_wind_velocity
real(sp), dimension(:,:), allocatable, target ww
real(sp), dimension(:,:), allocatable, target u
real(sp), dimension(:,:), allocatable, target s1
character(len=80) date_reference
integer, dimension(:,:), allocatable nbvegl
real(sp), dimension(:), allocatable, target vx
integer, dimension(:), allocatable idummy
logical out_station_timeseries_on
subroutine putvar2d_int(i1, i2, n1, n1gl, kt, k1, map_type, var, nc_fid, vid, myid, nprocs, ipt, stk)
subroutine gday1(IDD, IMM, IYY, ICC, KD)
subroutine write_netcdf_setup
real(sp), dimension(:), allocatable, target vy
type(time) interval_time_series
integer, dimension(:,:), allocatable nvg
integer, dimension(:), allocatable ntvegl
subroutine fopen(IUNIT, INSTR, IOPT)
logical use_real_world_time
real(sp), dimension(:), allocatable, target ua
real(sp), dimension(:), allocatable, target lat
real(sp), dimension(:,:), allocatable, target z
character(len=80) out_interval
subroutine putvar1d_int(i1, i2, n1, n1gl, kt, k1, map_type, var, nc_fid, vid, myid, nprocs, ipt, stk)
subroutine fatal_error(ER1, ER2, ER3, ER4)
real(sp), dimension(:), allocatable, target lon
real(sp), dimension(:), allocatable, target vvwind
subroutine triangle_grid_edge_gl
integer, dimension(:), allocatable node_sta
character(len=80) input_dir
subroutine station_name_list_initialize
integer, parameter dbg_sbr
subroutine putvar_char(i1, i2, var, nc_fid, vid, myid, nprocs, ipt, stk)
real(sp), dimension(:,:), allocatable, target zz
character(len=80) station_file
real(sp), dimension(:), allocatable, target uuwind
subroutine putvar2d_real(i1, i2, n1, n1gl, kt, k1, map_type, var, nc_fid, vid, myid, nprocs, ipt, stk)
integer, parameter dbg_log
integer, dimension(:), allocatable element_sta