N/A.
1132 character (len = 15) :: file_name
1133 integer,
parameter :: ndims = 4
1134 integer,
parameter :: deflate = 1
1135 integer :: outputType, ncid, oldMode
1136 integer :: nlons,nlats,nsys,rec,ntime,ivar
1137 double precision :: date1,date2,timenc
1138 real :: data_in(nlons, nlats, nsys,ntime)
1139 real :: lats(nlats), lons(nlons),dt
1140 double precision :: times(ntime)
1141 integer :: iyc,imc,idc,ihc,iminc,isc,Jday,Jday0
1146 integer :: lon_varid, lat_varid, rec_varid
1147 character (len = *),
parameter :: lsys_name =
"system_index"
1148 character (len = *),
parameter :: lat_name =
"latitude"
1149 character (len = *),
parameter :: lon_name =
"longitude"
1150 character (len = *),
parameter :: time_name =
"time"
1151 integer :: sys_dimid, lon_dimid, lat_dimid, rec_dimid
1152 integer :: start(ndims), count(ndims)
1156 character (len = *),
parameter :: var1_name=
"hs"
1157 character (len = *),
parameter :: var2_name=
"tp"
1158 character (len = *),
parameter :: var3_name=
"dir"
1159 character (len = *),
parameter :: var4_name=
"dspr"
1160 integer :: var1_varid, var2_varid, var3_varid,var4_varid
1161 integer :: dimids(ndims)
1165 character (len = *),
parameter :: units =
"units"
1166 character (len = *),
parameter :: var1_units =
"m"
1167 character (len = *),
parameter :: var2_units =
"s"
1168 character (len = *),
parameter :: var3_units =
"degrees"
1169 character (len = *),
parameter :: var4_units =
"degrees"
1170 character (len = *),
parameter :: lat_units =
"degrees_north"
1171 character (len = *),
parameter :: lon_units =
"degrees_east"
1173 imc=(date1-iyc*10000)/100
1174 idc=int(date1-dble(iyc*10000)-dble(imc*100))
1176 iminc=(date2-ihc*10000)/100
1177 isc=date2-ihc*10000-100*iminc
1178 timenc=dble(
julday(idc,imc,iyc))+(dble(ihc)+(dble(iminc)+ &
1179 (dble(isc)/60.0d0))/60.0d0)/24.0d0
1183 times(rec)=timenc+dble( (rec-1)*dt)/3600.0d0/24.0d0
1186 file_name =
"sys_hs.ww3.nc"
1187 else if( ivar == 2)
then
1188 file_name =
"sys_tp.ww3.nc"
1189 else if( ivar == 3)
then
1190 file_name =
"sys_dir.ww3.nc"
1192 file_name =
"sys_dspr.ww3.nc"
1198 if (outputtype.EQ.3)
then
1199 call check( nf90_create(file_name, nf90_clobber, ncid) )
1201 if(outputtype.EQ.4)
call check( nf90_create(file_name,nf90_netcdf4,ncid))
1202 call check ( nf90_set_fill(ncid,nf90_nofill,oldmode) )
1203 call check( nf90_def_dim(ncid, lsys_name, nsys, sys_dimid) )
1204 call check( nf90_def_dim(ncid, lat_name, nlats, lat_dimid) )
1205 call check( nf90_def_dim(ncid, lon_name, nlons, lon_dimid) )
1206 call check( nf90_def_dim(ncid, time_name, ntime, rec_dimid) )
1207 call check( nf90_def_var(ncid, lat_name, nf90_real, lat_dimid,lat_varid))
1208 if(outputtype.EQ.4)
call check( nf90_def_var_deflate(ncid,lat_varid,1,1,deflate) )
1209 call check( nf90_def_var(ncid, lon_name, nf90_real, lon_dimid,lon_varid))
1210 if(outputtype.EQ.4)
call check( nf90_def_var_deflate(ncid,lon_varid,1,1,deflate) )
1211 call check( nf90_def_var(ncid,time_name,nf90_double,rec_dimid,rec_varid))
1212 if(outputtype.EQ.4)
call check( nf90_def_var_deflate(ncid,rec_varid,1,1,deflate) )
1216 call check( nf90_put_att(ncid, lat_varid, units, lat_units) )
1217 call check( nf90_put_att(ncid, lat_varid,
'long_name',
'latitude') )
1218 call check( nf90_put_att(ncid, lat_varid,
'standard_name',
'latitude') )
1219 call check( nf90_put_att(ncid, lat_varid,
'axis',
'Y'))
1220 call check( nf90_put_att(ncid, lon_varid, units, lon_units) )
1221 call check( nf90_put_att(ncid, lon_varid,
'long_name',
'longitude') )
1222 call check( nf90_put_att(ncid, lon_varid,
'standard_name',
'longitude') )
1223 call check( nf90_put_att(ncid, lon_varid,
'axis',
'X'))
1224 call check(nf90_put_att(ncid,rec_varid,units,&
1225 'days since 1990-01-01 00:00:00'))
1226 call check(nf90_put_att(ncid,rec_varid,
'long_name',
'julian day (UT)'))
1227 call check( nf90_put_att(ncid, rec_varid,
'standard_name',
'time') )
1228 call check( nf90_put_att(ncid, rec_varid,
'conventions',&
1229 'relative julian day with decimal part (as part of the day)' ) )
1230 call check( nf90_put_att(ncid, rec_varid,
'axis',
'T'))
1234 dimids = (/ lon_dimid, lat_dimid, sys_dimid, rec_dimid /)
1236 call check( nf90_def_var(ncid, var1_name, nf90_real, dimids,var1_varid) )
1237 if(outputtype.EQ.4)
call check( nf90_def_var_deflate(ncid,var1_varid,1,1,deflate) )
1238 call check( nf90_put_att(ncid, var1_varid, units, var1_units) )
1239 call check( nf90_put_att(ncid, var1_varid,
'long_name',
'significant_wave_height') )
1240 call check( nf90_put_att(ncid, var1_varid,
'missing_value',
'9999.00'))
1241 else if( ivar == 2)
then
1242 call check( nf90_def_var(ncid, var2_name, nf90_real, dimids, var2_varid) )
1243 if(outputtype.EQ.4)
call check( nf90_def_var_deflate(ncid,var2_varid,1,1,deflate) )
1244 call check( nf90_put_att(ncid, var2_varid, units, var2_units) )
1245 call check( nf90_put_att(ncid, var2_varid,
'long_name',
'peak_period') )
1246 call check( nf90_put_att(ncid, var2_varid,
'missing_value',
'9999.00') )
1247 else if ( ivar ==3 )
then
1248 call check( nf90_def_var(ncid, var3_name, nf90_real, dimids, var3_varid) )
1249 if(outputtype.EQ.4)
call check( nf90_def_var_deflate(ncid,var3_varid,1,1,deflate) )
1250 call check( nf90_put_att(ncid, var3_varid, units, var3_units) )
1251 call check( nf90_put_att(ncid, var3_varid,
'long_name',
'peak_direction') )
1252 call check( nf90_put_att(ncid, var3_varid,
'missing_value',
'9999.00') )
1254 call check( nf90_def_var(ncid, var4_name, nf90_real, dimids, var4_varid) )
1255 if(outputtype.EQ.4)
call check( nf90_def_var_deflate(ncid,var4_varid,1,1,deflate) )
1256 call check( nf90_put_att(ncid, var4_varid, units, var4_units) )
1257 call check( nf90_put_att(ncid,var4_varid,
'long_name',
'directional_spread') )
1258 call check( nf90_put_att(ncid, var4_varid,
'missing_value',
'9999.00') )
1260 call check( nf90_enddef(ncid) )
1264 call check( nf90_put_var(ncid, lat_varid, lats) )
1265 call check( nf90_put_var(ncid, lon_varid, lons) )
1266 call check( nf90_put_var(ncid, rec_varid, times) )
1270 count = (/ nlons, nlats, nsys, ntime /)
1271 start = (/ 1, 1, 1, 1 /)
1273 call check( nf90_put_var(ncid, var1_varid, data_in, start = start, &
1275 else if( ivar == 2)
then
1276 call check( nf90_put_var(ncid, var2_varid, data_in, start = start, &
1278 else if( ivar == 3)
then
1279 call check( nf90_put_var(ncid, var3_varid, data_in, start = start, &
1282 call check( nf90_put_var(ncid, var4_varid, data_in, start = start, &
1285 call check( nf90_close(ncid) )