This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
On Fri, 3 Dec 2004, Matthew Hanna wrote: > Hi! I am trying to convert some GRIB files to NetCDF so I can use the > data in my research project. > I found the gribtonc program and its friends and was able to compile > them and work with the example data. hiya matthew, i think the problem might be a old version of the decoders package, make sure you have version decoders-3.0.6.tar.Z. the files in question were downloaded/made cdls/converted to netcdf w/o any problems. the platform was solaris 5.9 but that shouldn't matter. the cdl's for the u/v winds are attached to the msg. if you want to have both u/v winds in the same netcdf file, just include the v variable: > float v(record,level,lat,lon) ; > v:long_name = "v-component of wind at isobaric levels" ; > v:GRIB_parameter_number = 34 ; > v:GRIB_level_flag = 100 ; > v:units = "m/s" ; > v:_FillValue = -9999.f ; > v:navigation = "nav" ; in the u_winds.cdl file, might want to rename file too. a method for created a cdl w/ all the variables needed, concate the grib files together before running gribtocdl routine. robb... ps daryl these are grib 1 files not grib 2 files. Dec 6 there will be a decoders release w/ grib 2 decoders and utilities in java, so it will be platform independant. > > The data I am using for my research can be found at > ftp://usgodae1.usgodae.org/pub/outgoing/fnmoc/models/ > in both the coamps and nogaps folders. Occasionally I get lucky and I > am able to create a cdl file and a netcdf > file but for the most part I just get cdl files that don't work. > > Example > --------------------------- > I download these files: > ftp://usgodae1.usgodae.org/pub/outgoing/fnmoc/models/nogaps/2004/2004120100/US058GMET-GR1mdl.0058_0240_00000F0RL2004120100_0100_006000-000000wnd_ucmp > ftp://usgodae1.usgodae.org/pub/outgoing/fnmoc/models/nogaps/2004/2004120100/US058GMET-GR1mdl.0058_0240_00000F0RL2004120100_0100_006000-000000wnd_vcmp > > I run gribtocdl to create the cdl files: > $ gribtocdl > US058GMET-GR1mdl.0058_0240_14400F0RL2004120100_0105_000100-000000wnd_ucmp > > wnd_ucmp.cdl > $ gribtocdl > US058GMET-GR1mdl.0058_0240_14400F0RL2004120100_0105_000100-000000wnd_vcmp > > wnd_vcmp.cdl > > In this case wnd_ucmp.cdl doesn't look right. It is missing the lat and > lon information and perhaps a few other details however > wnd_vcmp.cdl looks like it is correct. > > I run gribtonc to create the new netcdf files: > US058GMET-GR1mdl.0058_0240_14400F0RL2004120100_0105_000100-000000wnd_ucmp > Dec 03 14:53:37 gribtonc[1884]: Starting Up > ncgen: wnd_ucmp.cdl line 6: dimension length must be positive > ncgen: wnd_ucmp.cdl line 7: dimension length must be positive > ncgen: wnd_ucmp.cdl line 9: dimension length must be positive > ncgen: wnd_ucmp.cdl line 10: dimension length must be positive > ncgen: wnd_ucmp.cdl line 11: dimension length must be positive > ncgen: wnd_ucmp.cdl line 130: too many values for this variable, 0 >= 0 > Dec 03 14:53:37 gribtonc[1884]: can't run "ncgen -o wnd_ucmp.nc > wnd_ucmp.cdl" > Dec 03 14:53:37 gribtonc[1884]: can't create or size 0 output netCDF > file wnd_ucmp.nc, exiting > Dec 03 14:53:37 gribtonc[1884]: Exiting > Dec 03 14:53:37 gribtonc[1884]: 0 WMO msgs, 0 GRIBs decoded, 0 written > > US058GMET-GR1mdl.0058_0240_14400F0RL2004120100_0105_000100-000000wnd_vcmp > Dec 03 14:54:47 gribtonc[2068]: Starting Up > Dec 03 14:54:47 gribtonc[2068]: 1: wrote v_fhg(0,0,*,*) to wnd_vcmp.nc > Dec 03 14:54:47 gribtonc[2068]: EOF on input > Dec 03 14:54:47 gribtonc[2068]: Exiting > Dec 03 14:54:47 gribtonc[2068]: 1 WMO msgs, 1 GRIBs decoded, 1 written > > So wnd_ucmp.nc wasn't created but wnd_vcmp.nc was. wnd_vcmp.nc is > exactly what I expected. These two files are supposed to go together. > In fact, once I can get this working the two netcdf files will be merged > into one file and will possibly include additional data from the same > folder where these files were downloaded from. > > If it helps I believe these GRIB files were created using GrADS. > > Can someone please help me figure this out? > > Thanks! > Matthew Hanna > =============================================================================== Robb Kambic Unidata Program Center Software Engineer III Univ. Corp for Atmospheric Research address@hidden WWW: http://www.unidata.ucar.edu/ ===============================================================================
netcdf Replace_with_model_name{ dimensions: record = UNLIMITED ; // (reference time, forecast time) lat = 181 ; // latitude lon = 360 ; // longitude level = 1 ; // isobaric levels time_len = 21 ; // string length for datetime strings valtime_offset = 1 ; // number of offset times nmodels = 1 ; // number of models ngrids = 1 ; // number of grids nav = 1 ; // for navigation nav_len = 100 ; // max string length for navigation strings variables: double reftime(record) ; // reference time of the model reftime:long_name = "reference time" ; reftime:units = "hours since 1992-1-1" ; double valtime(record) ; // forecast time ("valid" time) valtime:long_name = "valid time" ; valtime:units = "hours since 1992-1-1" ; :record = "reftime, valtime" ; // "dimension attribute" -- means // (reftime, valtime) uniquely // determine record char datetime(record, time_len) ; // derived from reftime datetime:long_name = "reference date and time" ; // units YYYY-MM-DD hh:mm:ssZ (ISO 8601) double valtime_offset(valtime_offset) ; // valtime - reftime valtime_offset:long_name = "hours from reference time" ; valtime_offset:units = "hours" ; char forecasttime(record, time_len) ; // derived from valtime forecasttime:long_name = "forecast date and time" ; // units YYYY-MM-DD hh:mm:ssZ (ISO 8601) float level(level) ; level:long_name = "isobaric level" ; level:units = "hectopascals" ; // The following lat and lon coordinate variables are redundant, // since the navigation variables provide the necessary information. // The extra information is included here for human readability. float lat(lat) ; lat:long_name = "latitude" ; lat:units = "degrees_north" ; float lon(lon) ; lon:long_name = "longitude" ; lon:units = "degrees_east" ; long model_id(nmodels) ; model_id:long_name = "generating process ID number" ; // navigation variables all use nav dimension char nav_model(nav, nav_len) ; // navigation parameterization nav_model:long_name = "navigation model name" ; int grid_type_code(nav) ; grid_type_code:long_name = "GRIB-1 GDS data representation type" ; char grid_type(nav, nav_len) ; grid_type:long_name = "GRIB-1 grid type" ; char grid_name(nav, nav_len) ; grid_name:long_name = "grid name" ; int grid_center(nav) ; grid_center:long_name = "GRIB-1 originating center ID" ; int grid_number(nav, ngrids) ; grid_number:long_name = "GRIB-1 catalogued grid numbers" ; grid_number:_FillValue = -9999 ; char i_dim(nav, nav_len) ; i_dim:long_name = "longitude dimension name" ; char j_dim(nav, nav_len) ; j_dim:long_name = "latitude dimension name" ; int Ni(nav) ; Ni:long_name = "number of points along a latitude circle" ; int Nj(nav) ; Nj:long_name = "number of points along a longitude circle" ; float La1(nav) ; La1:long_name = "latitude of first grid point" ; La1:units = "degrees_north" ; float Lo1(nav) ; Lo1:long_name = "longitude of first grid point" ; Lo1:units = "degrees_east" ; float La2(nav) ; La2:long_name = "latitude of last grid point" ; La2:units = "degrees_north" ; float Lo2(nav) ; Lo2:long_name = "longitude of last grid point" ; Lo2:units = "degrees_east" ; float Di(nav) ; Di:long_name = "longitudinal direction increment" ; Di:units = "degrees" ; float Dj(nav) ; Dj:long_name = "latitudinal direction increment" ; Dj:units = "degrees" ; byte ResCompFlag(nav) ; ResCompFlag:long_name = "resolution and component flags" ; // end of navigation variables float u(record,level,lat,lon) ; u:long_name = "u-component of wind at isobaric levels" ; u:GRIB_parameter_number = 33 ; u:GRIB_level_flag = 100 ; u:units = "m/s" ; u:_FillValue = -9999.f ; u:navigation = "nav" ; // global attributes :history = "2004-12-03 09:47:55 - created by gribtocdl" ; :title = "Enter model definition here" ; :Conventions = "NUWG" ; :GRIB_reference = "Office Note 388 GRIB" ; :GRIB_URL = "http://www.nco.ncep.noaa.gov/pmb/docs/on388/" ; :version = 0.0 ; data: level = 600.0 ; model_id = 58 ; valtime_offset = 0 ; // Navigation nav_model = "GRIB1" ; grid_type_code = 0 ; grid_type = "Latitude/Longitude" ; grid_name = " " ; grid_center = 58 ; grid_number = 240 ; i_dim = "lon" ; j_dim = "lat" ; Ni = 360 ; Nj = 181 ; La1 = -90.000000 ; Lo1 = 0.000000 ; La2 = 90.000000 ; Lo2 = 359.000000 ; Di = 1.000000 ; Dj = 1.000000 ; ResCompFlag = 128 ; lon = 0.00, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00, 21.00, 22.00, 23.00, 24.00, 25.00, 26.00, 27.00, 28.00, 29.00, 30.00, 31.00, 32.00, 33.00, 34.00, 35.00, 36.00, 37.00, 38.00, 39.00, 40.00, 41.00, 42.00, 43.00, 44.00, 45.00, 46.00, 47.00, 48.00, 49.00, 50.00, 51.00, 52.00, 53.00, 54.00, 55.00, 56.00, 57.00, 58.00, 59.00, 60.00, 61.00, 62.00, 63.00, 64.00, 65.00, 66.00, 67.00, 68.00, 69.00, 70.00, 71.00, 72.00, 73.00, 74.00, 75.00, 76.00, 77.00, 78.00, 79.00, 80.00, 81.00, 82.00, 83.00, 84.00, 85.00, 86.00, 87.00, 88.00, 89.00, 90.00, 91.00, 92.00, 93.00, 94.00, 95.00, 96.00, 97.00, 98.00, 99.00,100.00,101.00,102.00,103.00, 104.00,105.00,106.00,107.00,108.00,109.00,110.00,111.00, 112.00,113.00,114.00,115.00,116.00,117.00,118.00,119.00, 120.00,121.00,122.00,123.00,124.00,125.00,126.00,127.00, 128.00,129.00,130.00,131.00,132.00,133.00,134.00,135.00, 136.00,137.00,138.00,139.00,140.00,141.00,142.00,143.00, 144.00,145.00,146.00,147.00,148.00,149.00,150.00,151.00, 152.00,153.00,154.00,155.00,156.00,157.00,158.00,159.00, 160.00,161.00,162.00,163.00,164.00,165.00,166.00,167.00, 168.00,169.00,170.00,171.00,172.00,173.00,174.00,175.00, 176.00,177.00,178.00,179.00,180.00,181.00,182.00,183.00, 184.00,185.00,186.00,187.00,188.00,189.00,190.00,191.00, 192.00,193.00,194.00,195.00,196.00,197.00,198.00,199.00, 200.00,201.00,202.00,203.00,204.00,205.00,206.00,207.00, 208.00,209.00,210.00,211.00,212.00,213.00,214.00,215.00, 216.00,217.00,218.00,219.00,220.00,221.00,222.00,223.00, 224.00,225.00,226.00,227.00,228.00,229.00,230.00,231.00, 232.00,233.00,234.00,235.00,236.00,237.00,238.00,239.00, 240.00,241.00,242.00,243.00,244.00,245.00,246.00,247.00, 248.00,249.00,250.00,251.00,252.00,253.00,254.00,255.00, 256.00,257.00,258.00,259.00,260.00,261.00,262.00,263.00, 264.00,265.00,266.00,267.00,268.00,269.00,270.00,271.00, 272.00,273.00,274.00,275.00,276.00,277.00,278.00,279.00, 280.00,281.00,282.00,283.00,284.00,285.00,286.00,287.00, 288.00,289.00,290.00,291.00,292.00,293.00,294.00,295.00, 296.00,297.00,298.00,299.00,300.00,301.00,302.00,303.00, 304.00,305.00,306.00,307.00,308.00,309.00,310.00,311.00, 312.00,313.00,314.00,315.00,316.00,317.00,318.00,319.00, 320.00,321.00,322.00,323.00,324.00,325.00,326.00,327.00, 328.00,329.00,330.00,331.00,332.00,333.00,334.00,335.00, 336.00,337.00,338.00,339.00,340.00,341.00,342.00,343.00, 344.00,345.00,346.00,347.00,348.00,349.00,350.00,351.00, 352.00,353.00,354.00,355.00,356.00,357.00,358.00,359.00 ; lat =-90.00,-89.00,-88.00,-87.00,-86.00,-85.00,-84.00,-83.00, -82.00,-81.00,-80.00,-79.00,-78.00,-77.00,-76.00,-75.00, -74.00,-73.00,-72.00,-71.00,-70.00,-69.00,-68.00,-67.00, -66.00,-65.00,-64.00,-63.00,-62.00,-61.00,-60.00,-59.00, -58.00,-57.00,-56.00,-55.00,-54.00,-53.00,-52.00,-51.00, -50.00,-49.00,-48.00,-47.00,-46.00,-45.00,-44.00,-43.00, -42.00,-41.00,-40.00,-39.00,-38.00,-37.00,-36.00,-35.00, -34.00,-33.00,-32.00,-31.00,-30.00,-29.00,-28.00,-27.00, -26.00,-25.00,-24.00,-23.00,-22.00,-21.00,-20.00,-19.00, -18.00,-17.00,-16.00,-15.00,-14.00,-13.00,-12.00,-11.00, -10.00, -9.00, -8.00, -7.00, -6.00, -5.00, -4.00, -3.00, -2.00, -1.00, 0.00, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00, 21.00, 22.00, 23.00, 24.00, 25.00, 26.00, 27.00, 28.00, 29.00, 30.00, 31.00, 32.00, 33.00, 34.00, 35.00, 36.00, 37.00, 38.00, 39.00, 40.00, 41.00, 42.00, 43.00, 44.00, 45.00, 46.00, 47.00, 48.00, 49.00, 50.00, 51.00, 52.00, 53.00, 54.00, 55.00, 56.00, 57.00, 58.00, 59.00, 60.00, 61.00, 62.00, 63.00, 64.00, 65.00, 66.00, 67.00, 68.00, 69.00, 70.00, 71.00, 72.00, 73.00, 74.00, 75.00, 76.00, 77.00, 78.00, 79.00, 80.00, 81.00, 82.00, 83.00, 84.00, 85.00, 86.00, 87.00, 88.00, 89.00, 90.00 ; }
netcdf Replace_with_model_name{ dimensions: record = UNLIMITED ; // (reference time, forecast time) lat = 181 ; // latitude lon = 360 ; // longitude level = 1 ; // isobaric levels time_len = 21 ; // string length for datetime strings valtime_offset = 1 ; // number of offset times nmodels = 1 ; // number of models ngrids = 1 ; // number of grids nav = 1 ; // for navigation nav_len = 100 ; // max string length for navigation strings variables: double reftime(record) ; // reference time of the model reftime:long_name = "reference time" ; reftime:units = "hours since 1992-1-1" ; double valtime(record) ; // forecast time ("valid" time) valtime:long_name = "valid time" ; valtime:units = "hours since 1992-1-1" ; :record = "reftime, valtime" ; // "dimension attribute" -- means // (reftime, valtime) uniquely // determine record char datetime(record, time_len) ; // derived from reftime datetime:long_name = "reference date and time" ; // units YYYY-MM-DD hh:mm:ssZ (ISO 8601) double valtime_offset(valtime_offset) ; // valtime - reftime valtime_offset:long_name = "hours from reference time" ; valtime_offset:units = "hours" ; char forecasttime(record, time_len) ; // derived from valtime forecasttime:long_name = "forecast date and time" ; // units YYYY-MM-DD hh:mm:ssZ (ISO 8601) float level(level) ; level:long_name = "isobaric level" ; level:units = "hectopascals" ; // The following lat and lon coordinate variables are redundant, // since the navigation variables provide the necessary information. // The extra information is included here for human readability. float lat(lat) ; lat:long_name = "latitude" ; lat:units = "degrees_north" ; float lon(lon) ; lon:long_name = "longitude" ; lon:units = "degrees_east" ; long model_id(nmodels) ; model_id:long_name = "generating process ID number" ; // navigation variables all use nav dimension char nav_model(nav, nav_len) ; // navigation parameterization nav_model:long_name = "navigation model name" ; int grid_type_code(nav) ; grid_type_code:long_name = "GRIB-1 GDS data representation type" ; char grid_type(nav, nav_len) ; grid_type:long_name = "GRIB-1 grid type" ; char grid_name(nav, nav_len) ; grid_name:long_name = "grid name" ; int grid_center(nav) ; grid_center:long_name = "GRIB-1 originating center ID" ; int grid_number(nav, ngrids) ; grid_number:long_name = "GRIB-1 catalogued grid numbers" ; grid_number:_FillValue = -9999 ; char i_dim(nav, nav_len) ; i_dim:long_name = "longitude dimension name" ; char j_dim(nav, nav_len) ; j_dim:long_name = "latitude dimension name" ; int Ni(nav) ; Ni:long_name = "number of points along a latitude circle" ; int Nj(nav) ; Nj:long_name = "number of points along a longitude circle" ; float La1(nav) ; La1:long_name = "latitude of first grid point" ; La1:units = "degrees_north" ; float Lo1(nav) ; Lo1:long_name = "longitude of first grid point" ; Lo1:units = "degrees_east" ; float La2(nav) ; La2:long_name = "latitude of last grid point" ; La2:units = "degrees_north" ; float Lo2(nav) ; Lo2:long_name = "longitude of last grid point" ; Lo2:units = "degrees_east" ; float Di(nav) ; Di:long_name = "longitudinal direction increment" ; Di:units = "degrees" ; float Dj(nav) ; Dj:long_name = "latitudinal direction increment" ; Dj:units = "degrees" ; byte ResCompFlag(nav) ; ResCompFlag:long_name = "resolution and component flags" ; // end of navigation variables float v(record,level,lat,lon) ; v:long_name = "v-component of wind at isobaric levels" ; v:GRIB_parameter_number = 34 ; v:GRIB_level_flag = 100 ; v:units = "m/s" ; v:_FillValue = -9999.f ; v:navigation = "nav" ; // global attributes :history = "2004-12-03 10:07:24 - created by gribtocdl" ; :title = "Enter model definition here" ; :Conventions = "NUWG" ; :GRIB_reference = "Office Note 388 GRIB" ; :GRIB_URL = "http://www.nco.ncep.noaa.gov/pmb/docs/on388/" ; :version = 0.0 ; data: level = 600.0 ; model_id = 58 ; valtime_offset = 0 ; // Navigation nav_model = "GRIB1" ; grid_type_code = 0 ; grid_type = "Latitude/Longitude" ; grid_name = " " ; grid_center = 58 ; grid_number = 240 ; i_dim = "lon" ; j_dim = "lat" ; Ni = 360 ; Nj = 181 ; La1 = -90.000000 ; Lo1 = 0.000000 ; La2 = 90.000000 ; Lo2 = 359.000000 ; Di = 1.000000 ; Dj = 1.000000 ; ResCompFlag = 128 ; lon = 0.00, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00, 21.00, 22.00, 23.00, 24.00, 25.00, 26.00, 27.00, 28.00, 29.00, 30.00, 31.00, 32.00, 33.00, 34.00, 35.00, 36.00, 37.00, 38.00, 39.00, 40.00, 41.00, 42.00, 43.00, 44.00, 45.00, 46.00, 47.00, 48.00, 49.00, 50.00, 51.00, 52.00, 53.00, 54.00, 55.00, 56.00, 57.00, 58.00, 59.00, 60.00, 61.00, 62.00, 63.00, 64.00, 65.00, 66.00, 67.00, 68.00, 69.00, 70.00, 71.00, 72.00, 73.00, 74.00, 75.00, 76.00, 77.00, 78.00, 79.00, 80.00, 81.00, 82.00, 83.00, 84.00, 85.00, 86.00, 87.00, 88.00, 89.00, 90.00, 91.00, 92.00, 93.00, 94.00, 95.00, 96.00, 97.00, 98.00, 99.00,100.00,101.00,102.00,103.00, 104.00,105.00,106.00,107.00,108.00,109.00,110.00,111.00, 112.00,113.00,114.00,115.00,116.00,117.00,118.00,119.00, 120.00,121.00,122.00,123.00,124.00,125.00,126.00,127.00, 128.00,129.00,130.00,131.00,132.00,133.00,134.00,135.00, 136.00,137.00,138.00,139.00,140.00,141.00,142.00,143.00, 144.00,145.00,146.00,147.00,148.00,149.00,150.00,151.00, 152.00,153.00,154.00,155.00,156.00,157.00,158.00,159.00, 160.00,161.00,162.00,163.00,164.00,165.00,166.00,167.00, 168.00,169.00,170.00,171.00,172.00,173.00,174.00,175.00, 176.00,177.00,178.00,179.00,180.00,181.00,182.00,183.00, 184.00,185.00,186.00,187.00,188.00,189.00,190.00,191.00, 192.00,193.00,194.00,195.00,196.00,197.00,198.00,199.00, 200.00,201.00,202.00,203.00,204.00,205.00,206.00,207.00, 208.00,209.00,210.00,211.00,212.00,213.00,214.00,215.00, 216.00,217.00,218.00,219.00,220.00,221.00,222.00,223.00, 224.00,225.00,226.00,227.00,228.00,229.00,230.00,231.00, 232.00,233.00,234.00,235.00,236.00,237.00,238.00,239.00, 240.00,241.00,242.00,243.00,244.00,245.00,246.00,247.00, 248.00,249.00,250.00,251.00,252.00,253.00,254.00,255.00, 256.00,257.00,258.00,259.00,260.00,261.00,262.00,263.00, 264.00,265.00,266.00,267.00,268.00,269.00,270.00,271.00, 272.00,273.00,274.00,275.00,276.00,277.00,278.00,279.00, 280.00,281.00,282.00,283.00,284.00,285.00,286.00,287.00, 288.00,289.00,290.00,291.00,292.00,293.00,294.00,295.00, 296.00,297.00,298.00,299.00,300.00,301.00,302.00,303.00, 304.00,305.00,306.00,307.00,308.00,309.00,310.00,311.00, 312.00,313.00,314.00,315.00,316.00,317.00,318.00,319.00, 320.00,321.00,322.00,323.00,324.00,325.00,326.00,327.00, 328.00,329.00,330.00,331.00,332.00,333.00,334.00,335.00, 336.00,337.00,338.00,339.00,340.00,341.00,342.00,343.00, 344.00,345.00,346.00,347.00,348.00,349.00,350.00,351.00, 352.00,353.00,354.00,355.00,356.00,357.00,358.00,359.00 ; lat =-90.00,-89.00,-88.00,-87.00,-86.00,-85.00,-84.00,-83.00, -82.00,-81.00,-80.00,-79.00,-78.00,-77.00,-76.00,-75.00, -74.00,-73.00,-72.00,-71.00,-70.00,-69.00,-68.00,-67.00, -66.00,-65.00,-64.00,-63.00,-62.00,-61.00,-60.00,-59.00, -58.00,-57.00,-56.00,-55.00,-54.00,-53.00,-52.00,-51.00, -50.00,-49.00,-48.00,-47.00,-46.00,-45.00,-44.00,-43.00, -42.00,-41.00,-40.00,-39.00,-38.00,-37.00,-36.00,-35.00, -34.00,-33.00,-32.00,-31.00,-30.00,-29.00,-28.00,-27.00, -26.00,-25.00,-24.00,-23.00,-22.00,-21.00,-20.00,-19.00, -18.00,-17.00,-16.00,-15.00,-14.00,-13.00,-12.00,-11.00, -10.00, -9.00, -8.00, -7.00, -6.00, -5.00, -4.00, -3.00, -2.00, -1.00, 0.00, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00, 21.00, 22.00, 23.00, 24.00, 25.00, 26.00, 27.00, 28.00, 29.00, 30.00, 31.00, 32.00, 33.00, 34.00, 35.00, 36.00, 37.00, 38.00, 39.00, 40.00, 41.00, 42.00, 43.00, 44.00, 45.00, 46.00, 47.00, 48.00, 49.00, 50.00, 51.00, 52.00, 53.00, 54.00, 55.00, 56.00, 57.00, 58.00, 59.00, 60.00, 61.00, 62.00, 63.00, 64.00, 65.00, 66.00, 67.00, 68.00, 69.00, 70.00, 71.00, 72.00, 73.00, 74.00, 75.00, 76.00, 77.00, 78.00, 79.00, 80.00, 81.00, 82.00, 83.00, 84.00, 85.00, 86.00, 87.00, 88.00, 89.00, 90.00 ; }