Hi all,
I just installed the last ROMS version a couple of days ago. This compiles well but doesn't run. I had this model running before in another computer, but now I moved to a another computer and updated the model and the new version doesn't work. I'm using the option BULK_FLUXES. When I run de model, I obtain this message (repeated several times):
GET_2DFLD - unable to find requested variable: wind_time
in file:
/home/david/mydir/Data/ROMS/Forcing/TSBroms_blk_ModDR2006_PROM.nc
But I'm completely sure that the variable "wind_time" does exist in the NETCDF file.
I also get this message by the end of my output file:
ROMS/TOMS - Input error ............. exit_flag: 2
ERROR: Abnormal termination: NetCDF INPUT.
REASON: No error
I guess the problem is simple, but I haven't able to find it. Any comment is welcome.
Thanks,
drivas
GET_2DFLD - unable to find requested variable: wind_time
Re: GET_2DFLD - unable to find requested variable: wind_time
Please show us the header of your wind forcing file by doing
One header that work well (other combinations are possible) is
Code: Select all
ncdump -h wind_frc.nc
Code: Select all
netcdf aladin_wet_wind {
dimensions:
eta_rho = 291 ;
xi_rho = 266 ;
wind_time = 489 ;
variables:
double wind_time(wind_time) ;
wind_time:units = "days since 1968-05-23" ;
wind_time:_FillValue = 1.e+35 ;
float Uwind(wind_time, eta_rho, xi_rho) ;
Uwind:_FillValue = 1.e+35f ;
Uwind:units = "m/s" ;
float Vwind(wind_time, eta_rho, xi_rho) ;
Vwind:_FillValue = 1.e+35f ;
Vwind:units = "m/s" ;
// global attributes:
:title = "wind file forcing" ;
}
Re: GET_2DFLD - unable to find requested variable: wind_time
I prepare the NC files by using Matlab. Here is what results from the "ncdump":
%% ncdump('TSBroms_blk_ModDR2006_PROM.nc') %% Generated 09-Apr-2010 15:52:43
nc = netcdf('TSBroms_blk_ModDR2006_PROM.nc', 'noclobber');
if isempty(nc), return, end
%% Global attributes:
nc.title = ncchar('Todos Santos Bay Experiment');
nc.date = ncchar('10-Aug-2009');
nc.clim_file = ncchar('../Run/ROMS_FILES/TSB_roms_bry.nc');
nc.grd_file = ncchar('../Run/ROMS_FILES/TSB_roms_grd.nc');
nc.type = ncchar('BULK file');
nc.history = ncchar('ROMS');
%% Dimensions:
nc('xi_rho') = 75;
nc('eta_rho') = 110;
nc('bulk_time') = 365;
nc('wind_time') = 365;
nc('srf_time') = 365;
nc('qair_time') = 365;
nc('tair_time') = 365;
nc('rain_time') = 365;
nc('lrf_time') = 365;
nc('pair_time') = 365;
nc('tide_period') = 10;
%% Variables and attributes:
nc{'bulk_time'} = ncdouble('bulk_time'); %% 365 elements.
nc{'bulk_time'}.long_name = ncchar('bulk formulation execution time');
nc{'bulk_time'}.units = ncchar('days');
nc{'bulk_time'}.cycle_length = ncdouble(365);
nc{'wind_time'} = ncdouble('wind_time'); %% 365 elements.
nc{'wind_time'}.long_name = ncchar('wind time');
nc{'wind_time'}.units = ncchar('days');
nc{'wind_time'}.cycle_length = ncdouble(365);
nc{'srf_time'} = ncdouble('srf_time'); %% 365 elements.
nc{'srf_time'}.long_name = ncchar('Solar shortwave radiation time');
nc{'srf_time'}.units = ncchar('days');
nc{'srf_time'}.cycle_length = ncdouble(365);
nc{'qair_time'} = ncdouble('qair_time'); %% 365 elements.
nc{'qair_time'}.long_name = ncchar('Relative humidity time');
nc{'qair_time'}.units = ncchar('days');
nc{'qair_time'}.cycle_length = ncdouble(365);
nc{'tair_time'} = ncdouble('tair_time'); %% 365 elements.
nc{'tair_time'}.long_name = ncchar('Surface air temperature time');
nc{'tair_time'}.units = ncchar('days');
nc{'tair_time'}.cycle_length = ncdouble(365);
nc{'rain_time'} = ncdouble('rain_time'); %% 365 elements.
nc{'rain_time'}.long_name = ncchar('Rainfall rate time');
nc{'rain_time'}.units = ncchar('days');
nc{'rain_time'}.cycle_length = ncdouble(365);
nc{'lrf_time'} = ncdouble('lrf_time'); %% 365 elements.
nc{'lrf_time'}.long_name = ncchar('Downwelling longwave radiation time');
nc{'lrf_time'}.units = ncchar('days');
nc{'lrf_time'}.cycle_length = ncdouble(365);
nc{'pair_time'} = ncdouble('pair_time'); %% 365 elements.
nc{'pair_time'}.long_name = ncchar('Surface air pressure time');
nc{'pair_time'}.units = ncchar('days');
nc{'pair_time'}.cycle_length = ncdouble(365);
nc{'swrad'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'swrad'}.long_name = ncchar('shortwave radiation');
nc{'swrad'}.units = ncchar('Watts meter-2');
nc{'swrad'}.positive = ncchar('downward flux, heating water');
nc{'Qair'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'Qair'}.long_name = ncchar('relative humidity');
nc{'Qair'}.units = ncchar('percentage');
nc{'Tair'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'Tair'}.long_name = ncchar('surface air temperature');
nc{'Tair'}.units = ncchar('Celsius');
nc{'Uwind'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'Uwind'}.long_name = ncchar('u-wind');
nc{'Uwind'}.units = ncchar('m/s');
nc{'Vwind'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'Vwind'}.long_name = ncchar('v-wind');
nc{'Vwind'}.units = ncchar('m/s');
nc{'rain'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'rain'}.long_name = ncchar('rain fall rate');
nc{'rain'}.units = ncchar('kg/m^2/s');
nc{'lwrad_down'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'lwrad_down'}.long_name = ncchar('downwelling longwave radiation');
nc{'lwrad_down'}.units = ncchar('Watts meter-2');
nc{'lwrad_down'}.positive = ncchar('upward flux, cooling water');
nc{'Pair'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'Pair'}.long_name = ncchar('surface air PRESSURE');
nc{'Pair'}.units = ncchar('hPa');
nc{'tide_period'} = ncdouble('tide_period'); %% 10 elements.
nc{'tide_period'}.long_name = ncchar('Tide angular period');
nc{'tide_period'}.units = ncchar('Hours');
nc{'tide_Ephase'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Ephase'}.long_name = ncchar('Tidal elevation phase angle');
nc{'tide_Ephase'}.units = ncchar('Degrees');
nc{'tide_Eamp'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Eamp'}.long_name = ncchar('Tidal elevation amplitude');
nc{'tide_Eamp'}.units = ncchar('Meter');
nc{'tide_Cmin'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Cmin'}.long_name = ncchar('Tidal current ellipse semi-minor axis');
nc{'tide_Cmin'}.units = ncchar('Meter second-1');
nc{'tide_Cmax'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Cmax'}.long_name = ncchar('Tidal current, ellipse semi-major axis');
nc{'tide_Cmax'}.units = ncchar('Meter second-1');
nc{'tide_Cangle'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Cangle'}.long_name = ncchar('Tidal current inclination angle');
nc{'tide_Cangle'}.units = ncchar('Degrees between semi-major axis and East');
nc{'tide_Cphase'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Cphase'}.long_name = ncchar('Tidal current phase angle');
nc{'tide_Cphase'}.units = ncchar('Degrees');
endef(nc)
close(nc)
This configuration worked very well in my previous model version, but now it doesn't.
Thanks again,
DAVID
%% ncdump('TSBroms_blk_ModDR2006_PROM.nc') %% Generated 09-Apr-2010 15:52:43
nc = netcdf('TSBroms_blk_ModDR2006_PROM.nc', 'noclobber');
if isempty(nc), return, end
%% Global attributes:
nc.title = ncchar('Todos Santos Bay Experiment');
nc.date = ncchar('10-Aug-2009');
nc.clim_file = ncchar('../Run/ROMS_FILES/TSB_roms_bry.nc');
nc.grd_file = ncchar('../Run/ROMS_FILES/TSB_roms_grd.nc');
nc.type = ncchar('BULK file');
nc.history = ncchar('ROMS');
%% Dimensions:
nc('xi_rho') = 75;
nc('eta_rho') = 110;
nc('bulk_time') = 365;
nc('wind_time') = 365;
nc('srf_time') = 365;
nc('qair_time') = 365;
nc('tair_time') = 365;
nc('rain_time') = 365;
nc('lrf_time') = 365;
nc('pair_time') = 365;
nc('tide_period') = 10;
%% Variables and attributes:
nc{'bulk_time'} = ncdouble('bulk_time'); %% 365 elements.
nc{'bulk_time'}.long_name = ncchar('bulk formulation execution time');
nc{'bulk_time'}.units = ncchar('days');
nc{'bulk_time'}.cycle_length = ncdouble(365);
nc{'wind_time'} = ncdouble('wind_time'); %% 365 elements.
nc{'wind_time'}.long_name = ncchar('wind time');
nc{'wind_time'}.units = ncchar('days');
nc{'wind_time'}.cycle_length = ncdouble(365);
nc{'srf_time'} = ncdouble('srf_time'); %% 365 elements.
nc{'srf_time'}.long_name = ncchar('Solar shortwave radiation time');
nc{'srf_time'}.units = ncchar('days');
nc{'srf_time'}.cycle_length = ncdouble(365);
nc{'qair_time'} = ncdouble('qair_time'); %% 365 elements.
nc{'qair_time'}.long_name = ncchar('Relative humidity time');
nc{'qair_time'}.units = ncchar('days');
nc{'qair_time'}.cycle_length = ncdouble(365);
nc{'tair_time'} = ncdouble('tair_time'); %% 365 elements.
nc{'tair_time'}.long_name = ncchar('Surface air temperature time');
nc{'tair_time'}.units = ncchar('days');
nc{'tair_time'}.cycle_length = ncdouble(365);
nc{'rain_time'} = ncdouble('rain_time'); %% 365 elements.
nc{'rain_time'}.long_name = ncchar('Rainfall rate time');
nc{'rain_time'}.units = ncchar('days');
nc{'rain_time'}.cycle_length = ncdouble(365);
nc{'lrf_time'} = ncdouble('lrf_time'); %% 365 elements.
nc{'lrf_time'}.long_name = ncchar('Downwelling longwave radiation time');
nc{'lrf_time'}.units = ncchar('days');
nc{'lrf_time'}.cycle_length = ncdouble(365);
nc{'pair_time'} = ncdouble('pair_time'); %% 365 elements.
nc{'pair_time'}.long_name = ncchar('Surface air pressure time');
nc{'pair_time'}.units = ncchar('days');
nc{'pair_time'}.cycle_length = ncdouble(365);
nc{'swrad'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'swrad'}.long_name = ncchar('shortwave radiation');
nc{'swrad'}.units = ncchar('Watts meter-2');
nc{'swrad'}.positive = ncchar('downward flux, heating water');
nc{'Qair'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'Qair'}.long_name = ncchar('relative humidity');
nc{'Qair'}.units = ncchar('percentage');
nc{'Tair'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'Tair'}.long_name = ncchar('surface air temperature');
nc{'Tair'}.units = ncchar('Celsius');
nc{'Uwind'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'Uwind'}.long_name = ncchar('u-wind');
nc{'Uwind'}.units = ncchar('m/s');
nc{'Vwind'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'Vwind'}.long_name = ncchar('v-wind');
nc{'Vwind'}.units = ncchar('m/s');
nc{'rain'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'rain'}.long_name = ncchar('rain fall rate');
nc{'rain'}.units = ncchar('kg/m^2/s');
nc{'lwrad_down'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'lwrad_down'}.long_name = ncchar('downwelling longwave radiation');
nc{'lwrad_down'}.units = ncchar('Watts meter-2');
nc{'lwrad_down'}.positive = ncchar('upward flux, cooling water');
nc{'Pair'} = ncdouble('bulk_time', 'eta_rho', 'xi_rho'); %% 3011250 elements.
nc{'Pair'}.long_name = ncchar('surface air PRESSURE');
nc{'Pair'}.units = ncchar('hPa');
nc{'tide_period'} = ncdouble('tide_period'); %% 10 elements.
nc{'tide_period'}.long_name = ncchar('Tide angular period');
nc{'tide_period'}.units = ncchar('Hours');
nc{'tide_Ephase'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Ephase'}.long_name = ncchar('Tidal elevation phase angle');
nc{'tide_Ephase'}.units = ncchar('Degrees');
nc{'tide_Eamp'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Eamp'}.long_name = ncchar('Tidal elevation amplitude');
nc{'tide_Eamp'}.units = ncchar('Meter');
nc{'tide_Cmin'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Cmin'}.long_name = ncchar('Tidal current ellipse semi-minor axis');
nc{'tide_Cmin'}.units = ncchar('Meter second-1');
nc{'tide_Cmax'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Cmax'}.long_name = ncchar('Tidal current, ellipse semi-major axis');
nc{'tide_Cmax'}.units = ncchar('Meter second-1');
nc{'tide_Cangle'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Cangle'}.long_name = ncchar('Tidal current inclination angle');
nc{'tide_Cangle'}.units = ncchar('Degrees between semi-major axis and East');
nc{'tide_Cphase'} = ncdouble('tide_period', 'eta_rho', 'xi_rho'); %% 82500 elements.
nc{'tide_Cphase'}.long_name = ncchar('Tidal current phase angle');
nc{'tide_Cphase'}.units = ncchar('Degrees');
endef(nc)
close(nc)
This configuration worked very well in my previous model version, but now it doesn't.
Thanks again,
DAVID
Re: GET_2DFLD - unable to find requested variable: wind_time
Well try replacing bulk_time by wind_time or srf_time, etc. and tell us how it goes. Splitting file in several forcing files also helps in practice.
Re: GET_2DFLD - unable to find requested variable: wind_time
Thank you very much for your kind reply, Mathieu. But I think the solution you suggest could be a little problematic, since there can be some cases when I apply forcing variables with different temporal resolution. I think it's better to find out where exactly the model is failing in reading the variables in the file. Don't you think? (And please don't get me wrong, I do appreciate your concern)
DAVID
DAVID
Re: GET_2DFLD - unable to find requested variable: wind_time
ROMS has two ways of associating a time variable with a forcing variable.
(1) Use the 5th entry for the forcing variable in varinfo.dat. Read about how varinfo works on the Wiki at https://www.myroms.org/wiki/index.php/varinfo.dat. The default for wind stress is "wind_time". If your time variable is actually something else, liked "bulk_time", you can just change the entry in varinfo.dat.
(2) Name the time variable to associate with a forcing variable by giving it a "time" attribute in the forcing netcdf file. There are templates for the files in your source code: Data/ROMS/CDL/*.cdl If the forcing variable has a "time" attribute then this over-rides the varinfo.dat entry:
float Vwind(time, eta_rho, xi_rho) ;
Vwind:long_name = "surface v-wind component" ;
Vwind:units = "meter second-1" ;
Vwind:time = "bulk_time" ;
(1) Use the 5th entry for the forcing variable in varinfo.dat. Read about how varinfo works on the Wiki at https://www.myroms.org/wiki/index.php/varinfo.dat. The default for wind stress is "wind_time". If your time variable is actually something else, liked "bulk_time", you can just change the entry in varinfo.dat.
(2) Name the time variable to associate with a forcing variable by giving it a "time" attribute in the forcing netcdf file. There are templates for the files in your source code: Data/ROMS/CDL/*.cdl If the forcing variable has a "time" attribute then this over-rides the varinfo.dat entry:
float Vwind(time, eta_rho, xi_rho) ;
Vwind:long_name = "surface v-wind component" ;
Vwind:units = "meter second-1" ;
Vwind:time = "bulk_time" ;
John Wilkin: DMCS Rutgers University
71 Dudley Rd, New Brunswick, NJ 08901-8521, USA. ph: 609-630-0559 jwilkin@rutgers.edu
71 Dudley Rd, New Brunswick, NJ 08901-8521, USA. ph: 609-630-0559 jwilkin@rutgers.edu