the nc file of station

Bug reports, work arounds and fixes

Moderators: arango, robertson

Post Reply
Message
Author
jiangyuwu
Posts: 9
Joined: Mon Jun 13, 2005 3:57 pm
Location: the state key lab of marine environment science, Xiamen,P.R.China

the nc file of station

#1 Unread post by jiangyuwu »

I am using ROMS 736
in ferret, the station results(e.g.ocean_sta.nc) always note error below:
"*** NOTE: unsupported ordering of axes in variable u
*** NOTE: The default ordering will be used
*** NOTE: Axis S_RHO marked as DU
*** NOTE: but it has different directions in grids. Axes in grids may be inconsistent.
*** NOTE: Axis S_W marked as DU
*** NOTE: but it has different directions in grids. Axes in grids may be inconsistent.
*** NOTE: Axis OCEAN_TIME marked as TI
*** NOTE: but it has different directions in grids. Axes in grids may be inconsistent."
and the structure is :

LON_RHO longitude of RHO-points ... 1:8 ... ...
LAT_RHO latitude of RHO-points ... 1:8 ... ...
ANGLE angle between XI-axis and EAST ... 1:8 ... ...
ZETA free-surface ... 1:8 ... 1:2141
UBAR vertically integrated u-momentu ... 1:8 ... 1:2141
VBAR vertically integrated v-momentu ... 1:8 ... 1:2141
U u-momentum component 1:30 1:8 1:2141 ...
V v-momentum component 1:30 1:8 1:2141 ...
W vertical momentum component 1:31 1:8 1:2141 ...
OMEGA S-coordinate vertical momentum 1:31 1:8 1:2141 ...
TEMP potential temperature 1:30 1:8 1:2141 ...
SUSTR surface u-momentum stress ... 1:8 ... 1:2141
SVSTR surface v-momentum stress ... 1:8 ... 1:2141
BUSTR bottom u-momentum stress ... 1:8 ... 1:2141
BVSTR bottom v-momentum stress ... 1:8 ... 1:2141"
so you can not plot figure in ferret directly.


this can be corrected in "def_station.f" and "wrt_station.f"


"def_station.f"

in line 172-182
"! Define dimension vector for cast variables at vertical RHO-points.
!
rgrd(1)=DimIDs( 9) ==> rgrd(2=DimIDs( 9)
rgrd(2)=DimIDs(13) ==> rgrd(1)=DimIDs(13)
rgrd(3)=DimIDs(12)
!
! Define dimension vector for cast variables at vertical W-points.
!
wgrd(1)=DimIDs(10) ==> wgrd(2)=DimIDs(10)
wgrd(2)=DimIDs(13) ==> wgrd(1)=DimIDs(13)
wgrd(3)=DimIDs(12)

"wrt_station.f"

add lines below in line 68-69
real(r8), dimension(Nstation(ng),N(ng)+1) :: rsta2dw !jyw
real(r8), dimension(N(ng),Nstation(ng)) :: rsta2drho !jyw

and modify some in each 3D variables e.g. u,v,w, t, s...

variables at vertical RHO-points, for example 272-277:

IF (Sout(idUvel,ng)) THEN
scale=1.0_r8
CALL extract_sta3d (ng, iNLM, Cgrid, idUvel, u3dvar, &
& LBi, UBi, LBj, UBj, 1, N(ng), &
& scale, OCEAN(ng)%u(:,:,:,NOUT), &
& NposR, XposR, YposR, ZposR, rsta)
rsta2drho=reshape(rsta,shape(rsta2drho)) !jyw

CALL netcdf_put_fvar (ng, iNLM, STA(ng)%name, &
& TRIM(Vname(1,idUvel)),transpose(rsta2drho),& !jyw
& (/1,1,STA(ng)%Rindex/), &
& (/Nstation(ng),N(ng),1/), &
& ncid = STA(ng)%ncid, &
& varid = STA(ng)%Vid(idUvel))
IF (exit_flag.ne.NoError) RETURN
END IF

variables at vertical W-points,for example 363-378:


! Write out vertical velocity (m/s).
!
IF (Sout(idWvel,ng)) THEN
scale=1.0_r8
CALL extract_sta3d (ng, iNLM, Cgrid, idWvel, w3dvar, &
& LBi, UBi, LBj, UBj, 0, N(ng), &
& scale, OCEAN(ng)%wvel, &
& NposW, XposW, YposW, ZposW, rsta)

rsta2dw=reshape(rsta,shape(rsta2dw)) !jyw

CALL netcdf_put_fvar (ng, iNLM, STA(ng)%name, &
& TRIM(Vname(1,idWvel)),transpose(rsta2dw), & !jyw
& (/1,1,STA(ng)%Rindex/), &
& (/Nstation(ng),N(ng)+1,1/), &
& ncid = STA(ng)%ncid, &
& varid = STA(ng)%Vid(idWvel))
IF (exit_flag.ne.NoError) RETURN
END IF
!


and the data structure can be corrected as :
"
CS_R S-coordinate stretching curves ... ... 1:30 ...
CS_W S-coordinate stretching curves ... ... 1:31 ...
IPOS stations I-direction positions 1:8 ... ... ...
JPOS stations J-direction positions 1:8 ... ... ...
H bathymetry at RHO-points 1:8 ... ... ...
LON_RHO longitude of RHO-points 1:8 ... ... ...
LAT_RHO latitude of RHO-points 1:8 ... ... ...
ANGLE angle between XI-axis and EAST 1:8 ... ... ...
ZETA free-surface 1:8 ... ... 1:220
UBAR vertically integrated u-momentu 1:8 ... ... 1:220
VBAR vertically integrated v-momentu 1:8 ... ... 1:220
U u-momentum component 1:8 ... 1:30 1:220
V v-momentum component 1:8 ... 1:30 1:220
U_EASTWARD
eastward momentum component at 1:8 ... 1:30 1:220
V_NORTHWARD
northward momentum component at 1:8 ... 1:30 1:220
W vertical momentum component 1:8 ... 1:31 1:220
OMEGA S-coordinate vertical momentum 1:8 ... 1:31 1:220
TEMP potential temperature 1:8 ... 1:30 1:220
SALT salinity 1:8 ... 1:30 1:220
RHO density anomaly 1:8 ... 1:30 1:220
AKV vertical viscosity coefficient 1:8 ... 1:31 1:220
TKE turbulent kinetic energy 1:8 ... 1:31 1:220"


the netcdf structure is always confuse us

User avatar
kate
Posts: 4088
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: the nc file of station

#2 Unread post by kate »

This strikes me as more a ferret bug than a ROMS bug. I'm glad you found a work-around.

My stations file looks like:

Code: Select all

netcdf bering_sta {
dimensions:
	station = 4 ;
	boundary = 4 ;
	ocean_time = UNLIMITED ; // (2881 currently)
variables:
...
	double ocean_time(ocean_time) ;
		ocean_time:long_name = "time since initialization" ;
		ocean_time:units = "seconds since 1900-01-01 00:00:00" ;
		ocean_time:calendar = "gregorian" ;
		ocean_time:field = "time, scalar, series" ;
	float zeta(ocean_time, station) ;
		zeta:long_name = "free-surface" ;
		zeta:units = "meter" ;
		zeta:time = "ocean_time" ;
		zeta:field = "free-surface, scalar, series" ;
		zeta:_FillValue = 1.e+37f ;
	float sustr(ocean_time, station) ;
		sustr:long_name = "surface u-momentum stress" ;
		sustr:units = "newton meter-2" ;
		sustr:time = "ocean_time" ;
		sustr:field = "surface u-momentum stress, scalar, series" ;
		sustr:_FillValue = 1.e+37f ;
...
I have read them with NCL and Python, no problem.

Post Reply