Convert IFS netCDF data to arl

Post questions and find resources to convert meteorological data into a format HYSPLIT can read.
Post Reply
Matt Li
Posts: 8
Joined: February 27th, 2017, 3:25 pm
Registered HYSPLIT User: Yes

Convert IFS netCDF data to arl

Post by Matt Li » February 27th, 2017, 3:44 pm

Hello,
I am new to Hysplit so I need some help to get my data running. I have the registered PC version and Linux but i don't really know where to start.
I should use the integrated forecast system (IFS) data of ecmwf in the netcdf format ( 3 hour resolution on a 0.25 x 0.25 grid ) . I can also get them in grib if this makes the conversion easier. Has someone already written a script for the conversion or could point me in the right direction?
I also posted the header with the variables and grid information
thank you.




Code: Select all

dimensions:
	lon = 149 ;
	lat = 113 ;
	lev = 91 ;
	nhym = 91 ;
	nhyi = 92 ;
	lev_2 = 1 ;
	depth = 1 ;
	nb2 = 2 ;
	depth_2 = 1 ;
	depth_3 = 1 ;
	depth_4 = 1 ;
	time = UNLIMITED ; // (248 currently)
variables:
	double lon(lon) ;
		lon:standard_name = "longitude" ;
		lon:long_name = "longitude" ;
		lon:units = "degrees_east" ;
		lon:axis = "X" ;
	double lat(lat) ;
		lat:standard_name = "latitude" ;
		lat:long_name = "latitude" ;
		lat:units = "degrees_north" ;
		lat:axis = "Y" ;
	double lev(lev) ;
		lev:standard_name = "hybrid_sigma_pressure" ;
		lev:long_name = "hybrid level at layer midpoints" ;
		lev:units = "level" ;
		lev:positive = "down" ;
		lev:formula = "hyam hybm (mlev=hyam+hybm*aps)" ;
		lev:formula_terms = "ap: hyam b: hybm ps: aps" ;
	double hyai(nhyi) ;
		hyai:long_name = "hybrid A coefficient at layer interfaces" ;
		hyai:units = "Pa" ;
	double hybi(nhyi) ;
		hybi:long_name = "hybrid B coefficient at layer interfaces" ;
		hybi:units = "1" ;
	double hyam(nhym) ;
		hyam:long_name = "hybrid A coefficient at layer midpoints" ;
		hyam:units = "Pa" ;
	double hybm(nhym) ;
		hybm:long_name = "hybrid B coefficient at layer midpoints" ;
		hybm:units = "1" ;
	double lev_2(lev_2) ;
		lev_2:standard_name = "hybrid_sigma_pressure" ;
		lev_2:long_name = "hybrid level at layer midpoints" ;
		lev_2:units = "level" ;
		lev_2:positive = "down" ;
		lev_2:formula = "hyam hybm (mlev=hyam+hybm*aps)" ;
		lev_2:formula_terms = "ap: hyam b: hybm ps: aps" ;
	double depth(depth) ;
		depth:long_name = "depth_below_land" ;
		depth:units = "cm" ;
		depth:positive = "down" ;
		depth:axis = "Z" ;
		depth:bounds = "depth_bnds" ;
	double depth_bnds(depth, nb2) ;
	double depth_2(depth_2) ;
		depth_2:long_name = "depth_below_land" ;
		depth_2:units = "cm" ;
		depth_2:positive = "down" ;
		depth_2:axis = "Z" ;
		depth_2:bounds = "depth_2_bnds" ;
	double depth_2_bnds(depth_2, nb2) ;
	double depth_3(depth_3) ;
		depth_3:long_name = "depth_below_land" ;
		depth_3:units = "cm" ;
		depth_3:positive = "down" ;
		depth_3:axis = "Z" ;
		depth_3:bounds = "depth_3_bnds" ;
	double depth_3_bnds(depth_3, nb2) ;
	double depth_4(depth_4) ;
		depth_4:long_name = "depth_below_land" ;
		depth_4:units = "cm" ;
		depth_4:positive = "down" ;
		depth_4:axis = "Z" ;
		depth_4:bounds = "depth_4_bnds" ;
	double depth_4_bnds(depth_4, nb2) ;
	double time(time) ;
		time:standard_name = "time" ;
		time:units = "hours since 2009-06-01 00:00:00" ;
		time:calendar = "proleptic_gregorian" ;
	float T(time, lev, lat, lon) ;
		T:long_name = "Temperature" ;
		T:units = "K" ;
		T:code = 130 ;
		T:table = 128 ;
	float Q(time, lev, lat, lon) ;
		Q:long_name = "Specific humidity" ;
		Q:units = "kg kg**-1" ;
		Q:code = 133 ;
		Q:table = 128 ;
	float LNSP(time, lev_2, lat, lon) ;
		LNSP:long_name = "Logarithm of surface pressure" ;
		LNSP:code = 152 ;
		LNSP:table = 128 ;
	float CLWC(time, lev, lat, lon) ;
		CLWC:long_name = "Cloud liquid water content" ;
		CLWC:units = "kg kg**-1" ;
		CLWC:code = 246 ;
		CLWC:table = 128 ;
	float CIWC(time, lev, lat, lon) ;
		CIWC:long_name = "Cloud ice water content" ;
		CIWC:units = "kg kg**-1" ;
		CIWC:code = 247 ;
		CIWC:table = 128 ;
	float CC(time, lev, lat, lon) ;
		CC:long_name = "Cloud cover" ;
		CC:code = 248 ;
		CC:table = 128 ;
	float U(time, lev, lat, lon) ;
		U:long_name = "U velocity" ;
		U:units = "m s**-1" ;
		U:code = 131 ;
		U:table = 128 ;
	float V(time, lev, lat, lon) ;
		V:long_name = "V velocity" ;
		V:units = "m s**-1" ;
		V:code = 132 ;
		V:table = 128 ;
	float Z(time, lat, lon) ;
		Z:long_name = "Geopotential" ;
		Z:units = "m**2 s**-2" ;
		Z:code = 129 ;
		Z:table = 128 ;
	float LSM(time, lat, lon) ;
		LSM:long_name = "Land/sea mask" ;
		LSM:code = 172 ;
		LSM:table = 128 ;
	float SWVL1(time, depth, lat, lon) ;
		SWVL1:long_name = "Volumetric soil water layer 1" ;
		SWVL1:units = "m**3 m**-3" ;
		SWVL1:code = 39 ;
		SWVL1:table = 128 ;
	float SWVL2(time, depth_2, lat, lon) ;
		SWVL2:long_name = "Volumetric soil water layer 2" ;
		SWVL2:units = "m**3 m**-3" ;
		SWVL2:code = 40 ;
		SWVL2:table = 128 ;
	float SWVL3(time, depth_3, lat, lon) ;
		SWVL3:long_name = "Volumetric soil water layer 3" ;
		SWVL3:units = "m**3 m**-3" ;
		SWVL3:code = 41 ;
		SWVL3:table = 128 ;
	float SWVL4(time, depth_4, lat, lon) ;
		SWVL4:long_name = "Volumetric soil water layer 4" ;
		SWVL4:units = "m**3 m**-3" ;
		SWVL4:code = 42 ;
		SWVL4:table = 128 ;
	float SP(time, lat, lon) ;
		SP:long_name = "Surface pressure" ;
		SP:units = "Pa" ;
		SP:code = 134 ;
		SP:table = 128 ;
	float STL1(time, depth, lat, lon) ;
		STL1:long_name = "Soil temperature level 1" ;
		STL1:units = "K" ;
		STL1:code = 139 ;
		STL1:table = 128 ;
	float SD(time, lat, lon) ;
		SD:long_name = "Snow depth         1 m of water equivalent" ;
		SD:code = 141 ;
		SD:table = 128 ;
	float STL2(time, depth_2, lat, lon) ;
		STL2:long_name = "Soil temperature level 2" ;
		STL2:units = "K" ;
		STL2:code = 170 ;
		STL2:table = 128 ;
	float STL3(time, depth_3, lat, lon) ;
		STL3:long_name = "Soil temperature level 3" ;
		STL3:units = "K" ;
		STL3:code = 183 ;
		STL3:table = 128 ;
	float SRC(time, lat, lon) ;
		SRC:long_name = "Skin reservoir content" ;
		SRC:units = "m of water" ;
		SRC:code = 198 ;
		SRC:table = 128 ;
	float SKT(time, lat, lon) ;
		SKT:long_name = "Skin temperature" ;
		SKT:units = "K" ;
		SKT:code = 235 ;
		SKT:table = 128 ;
	float STL4(time, depth_4, lat, lon) ;
		STL4:long_name = "Soil temperature level 4" ;
		STL4:units = "K" ;
		STL4:code = 236 ;
		STL4:table = 128 ;
	float TSN(time, lat, lon) ;
		TSN:long_name = "Temperature of snow layer" ;
		TSN:units = "K" ;
		TSN:code = 238 ;
		TSN:table = 128 ;
	float TCW(time, lat, lon) ;
		TCW:long_name = "Total column water" ;
		TCW:units = "kg m**-2" ;
		TCW:code = 136 ;
		TCW:table = 128 ;
	float TCWV(time, lat, lon) ;
		TCWV:long_name = "Total column water vapour" ;
		TCWV:units = "kg m**-2" ;
		TCWV:code = 137 ;
		TCWV:table = 128 ;
	float TCC(time, lat, lon) ;
		TCC:long_name = "Total cloud cover" ;
		TCC:code = 164 ;
		TCC:table = 128 ;
	float LCC(time, lat, lon) ;
		LCC:long_name = "Low cloud cover" ;
		LCC:code = 186 ;
		LCC:table = 128 ;
	float MCC(time, lat, lon) ;
		MCC:long_name = "Medium cloud cover" ;
		MCC:code = 187 ;
		MCC:table = 128 ;
	float HCC(time, lat, lon) ;
		HCC:long_name = "High cloud cover" ;
		HCC:code = 188 ;
		HCC:table = 128 ;

// global attributes:
		:CDI = "Climate Data Interface version 1.6.1 (http://code.zmaw.de/projects/cdi)" ;
		:Conventions = "CF-1.4" ;
		:history = "Sun Aug 07 04:13:05 2016: cdo -f nc4c -t ecmwf copy odan.200906.grb odan.200906.grb_nc" ;
		:institution = "European Centre for Medium-Range Weather Forecasts" ;
		:CDO = "Climate Data Operators version 1.6.1 (http://code.zmaw.de/projects/cdo)" ;
data:

 lon = -5.175, -4.95, -4.725, -4.5, -4.275, -4.05, -3.825, -3.6, -3.375, 
    -3.15, -2.925, -2.7, -2.475, -2.25, -2.025, -1.8, -1.575, -1.35, -1.125, 
    -0.899999999999999, -0.675, -0.449999999999999, -0.225, 0, 
    0.225000000000001, 0.45, 0.675000000000001, 0.9, 1.125, 1.35, 1.575, 1.8, 
    2.025, 2.25, 2.475, 2.7, 2.925, 3.15, 3.375, 3.6, 3.825, 4.05, 4.275, 
    4.5, 4.725, 4.95, 5.175, 5.4, 5.625, 5.85, 6.075, 6.3, 6.525, 6.75, 
    6.975, 7.2, 7.425, 7.65, 7.875, 8.1, 8.325, 8.55, 8.775, 9, 9.225, 9.45, 
    9.675, 9.9, 10.125, 10.35, 10.575, 10.8, 11.025, 11.25, 11.475, 11.7, 
    11.925, 12.15, 12.375, 12.6, 12.825, 13.05, 13.275, 13.5, 13.725, 13.95, 
    14.175, 14.4, 14.625, 14.85, 15.075, 15.3, 15.525, 15.75, 15.975, 16.2, 
    16.425, 16.65, 16.875, 17.1, 17.325, 17.55, 17.775, 18, 18.225, 18.45, 
    18.675, 18.9, 19.125, 19.35, 19.575, 19.8, 20.025, 20.25, 20.475, 20.7, 
    20.925, 21.15, 21.375, 21.6, 21.825, 22.05, 22.275, 22.5, 22.725, 22.95, 
    23.175, 23.4, 23.625, 23.85, 24.075, 24.3, 24.525, 24.75, 24.975, 25.2, 
    25.425, 25.65, 25.875, 26.1, 26.325, 26.55, 26.775, 27, 27.225, 27.45, 
    27.675, 27.9, 28.125 ;

 lat = 60.075, 59.85, 59.625, 59.4, 59.175, 58.95, 58.725, 58.5, 58.275, 
    58.05, 57.825, 57.6, 57.375, 57.15, 56.925, 56.7, 56.475, 56.25, 56.025, 
    55.8, 55.575, 55.35, 55.125, 54.9, 54.675, 54.45, 54.225, 54, 53.775, 
    53.55, 53.325, 53.1, 52.875, 52.65, 52.425, 52.2, 51.975, 51.75, 51.525, 
    51.3, 51.075, 50.85, 50.625, 50.4, 50.175, 49.95, 49.725, 49.5, 49.275, 
    49.05, 48.825, 48.6, 48.375, 48.15, 47.925, 47.7, 47.475, 47.25, 47.025, 
    46.8, 46.575, 46.35, 46.125, 45.9, 45.675, 45.45, 45.225, 45, 44.775, 
    44.55, 44.325, 44.1, 43.875, 43.65, 43.425, 43.2, 42.975, 42.75, 42.525, 
    42.3, 42.075, 41.85, 41.625, 41.4, 41.175, 40.95, 40.725, 40.5, 40.275, 
    40.05, 39.825, 39.6, 39.375, 39.15, 38.925, 38.7, 38.475, 38.25, 38.025, 
    37.8, 37.575, 37.35, 37.125, 36.9, 36.675, 36.45, 36.225, 36, 35.775, 
    35.55, 35.325, 35.1, 34.875 ;

 lev = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 
    57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 
    75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91 ;

 lev_2 = 1 ;

 depth = 3.5 ;

 depth_2 = 17.5 ;

 depth_3 = 64 ;

 depth_4 = 177.5 ;

 time = 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 
    54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 
    108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 
    150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 
    192, 195, 198, 201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231, 
    234, 237, 240, 243, 246, 249, 252, 255, 258, 261, 264, 267, 270, 273, 
    276, 279, 282, 285, 288, 291, 294, 297, 300, 303, 306, 309, 312, 315, 
    318, 321, 324, 327, 330, 333, 336, 339, 342, 345, 348, 351, 354, 357, 
    360, 363, 366, 369, 372, 375, 378, 381, 384, 387, 390, 393, 396, 399, 
    402, 405, 408, 411, 414, 417, 420, 423, 426, 429, 432, 435, 438, 441, 
    444, 447, 450, 453, 456, 459, 462, 465, 468, 471, 474, 477, 480, 483, 
    486, 489, 492, 495, 498, 501, 504, 507, 510, 513, 516, 519, 522, 525, 
    528, 531, 534, 537, 540, 543, 546, 549, 552, 555, 558, 561, 564, 567, 
    570, 573, 576, 579, 582, 585, 588, 591, 594, 597, 600, 603, 606, 609, 
    612, 615, 618, 621, 624, 627, 630, 633, 636, 639, 642, 645, 648, 651, 
    654, 657, 660, 663, 666, 669, 672, 675, 678, 681, 684, 687, 690, 693, 
    696, 699, 702, 705, 708, 711, 714, 717, 720, 723, 726, 729, 732, 735, 
    738, 741 ;

alicec
Posts: 234
Joined: February 8th, 2016, 12:56 pm
Registered HYSPLIT User: Yes

Re: Convert IFS netCDF data to arl

Post by alicec » February 28th, 2017, 12:40 pm

There is a program that is distributed with HYSPLIT called ecmwf2arl which
will convert ECMWF grib files to HYSPLIT ARL format.
It was created to work with ERA-INTERIM files downloaded through the ECMWF API but I think it should work with your forecast data as well.
Below are the fields that are needed and optional.

In your header file it looks like you have the 3D fields but I don't see the surface fields (2 meter temperature and 10 meter winds at least)

The ecmwf2arl program will take 2 to 4 input files. You probably need 2.
The primary grib data file should have all the 3D fields. The supplemental grib file should have the 2D (surface) fields.
(A third file can be input if a mix of analysis and forecast data is being used for the 2D fields. precip is only available as forecast in ERA-INTERIM).
(A forth file can contain the surface geopotential field).

Please let us know if the ecmwf2arl program works for your forecast data and if not what errors you are getting.

Fields for ECMWF ERA-INTERIM
#Needed for 3D
param['TEMP'] = "130.128"
param['UWND'] = "131.128"
param['VWND'] = "132.128"
param['WWND'] = "135.128"
param['RELH'] = "157.128" #Can use specific humidity if not available.
param['HGTS'] = "129.128" #geopotential heights

#Optional for 3D
param['SPHU']= '133.128' #specific humidity. redundant since have RELH

#Needed for 2D
param['T02M'] = '167.128' #Analysis or forecast
param['U10M'] = '165.128' #Analysis or forecast
param['V10M'] = '166.128' #Analysis or forecast

#Optional for 2D
param['TPPT'] = '228.128' #precipitation forecast only at times 00/12
param['TCLD'] = "164.128" #Analysis or forecast: total cloud cover
param['PRSS'] = "134.128" #Analysis or forecast: pressure at surface. This is only archived once a day at 00Z.
param['DP2M'] = "168.128" #Analysis or forecast: 2m dew point temperature : Units K : level_indicator 1 , gds_grid_type 0

#---------------------------These three are accumulated over the forecast time (6 or 12 hours) and units are in W/m2 * s
param['SHTF'] = '146.128' #Forecast: surface sensible heat flux.
param['DSWF'] = "169.128" #Forecast: surface solar radiation downward
param['LTHF'] = "147.128" #Forecast: surface latent heat flux
#----------------------------------------------------------------------------------------------------------------------------

param['PBLH'] = "159.128" #Forecast: boundarly layer height
param['CAPE'] = "59.128" #Forecast: convective available potential energy

Matt Li
Posts: 8
Joined: February 27th, 2017, 3:25 pm
Registered HYSPLIT User: Yes

Re: Convert IFS netCDF data to arl

Post by Matt Li » April 17th, 2017, 6:57 am

Hello.
thank you very much for your reply. It took me some time to get everything in order.
The conversion works for the most part. in My Data I got 91 modell levels. when I try to do the conversion i get this Error.

Code: Select all

900
900
    while executing
"exec $exec_dir/grib2arl.exe $arg1 $arg2 $arg3 $arg4 $arg9 $arg5 $arg6 $arg7 $arg8 >STDOUT"
    (procedure "xtrct_data" line 60)
    invoked from within
"xtrct_data "
    invoked from within
".eraarch.bot.save invoke"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list $w invoke]"
    (procedure "tk::ButtonUp" line 24)
    invoked from within
"tk::ButtonUp .eraarch.bot.save"
    (command bound to event)
when I try it with 65 or less levels there is no Error. Its the same for weekly or daily data.
I am analyzing the moisture flux. the the first 65 levels enough?
thanks for your help.

alicec
Posts: 234
Joined: February 8th, 2016, 12:56 pm
Registered HYSPLIT User: Yes

Re: Convert IFS netCDF data to arl

Post by alicec » July 5th, 2017, 3:53 pm

You can try using ecmwf2arl instead of the generic grib2arl. The ecmwf2arl was created to work with ERA-INTERIM data and you will
have to run it from the command line. Also please include output from the MESSAGE file that is written to your working directory when you get an error.

Matt Li
Posts: 8
Joined: February 27th, 2017, 3:25 pm
Registered HYSPLIT User: Yes

Re: Convert IFS netCDF data to arl

Post by Matt Li » July 11th, 2017, 10:58 am

Thanks for your reply.
It worked all right for me. It gave an error message but until the hight of 10000meters it worked fine. thats also the region i'm interested in.
Now I got another problem. Ecmwf changed to Grib2 an now i ḿ struggling doing the conversion with api2arl. Fist it was impossible to get it running under windows so I switched to linux.
this is the error message i get.
i'm kind of lost and would appreciate your help.

Code: Select all

./api2arl -i/home/matthias/hysplit-886/3D-All-2014.grb -oTest2014.arl
 Existing decoding configuration:api2arl.cfg
 Existing encoding configuration:arldata.cfg
  NOTICE pakset:
  Number of index records =            1
  Number of records /time =          257
  NOTICE pakini: start initialization rec =            1
  NOTICE pakini:   end initialization rec =          257
 *ERROR* pakrec - at index:            1
   Argument list times    :           14           9           1           3
   Do not match initial   :           14           9           1           0
STOP 900
this is the header for my Grib2 file

Code: Select all

File format : GRIB2
    -1 : Institut Source   Ttype    Levels Num    Points Num Dtype : Parameter name
     1 : ECMWF    unknown  instant     137   1     56027   1  P16  : w             
     2 : ECMWF    unknown  instant       1   2     56027   1  P16  : z             
     3 : ECMWF    unknown  instant     137   1     56027   1  P16  : t             
     4 : ECMWF    unknown  instant     137   1     56027   1  P16  : q             
     5 : ECMWF    unknown  instant     137   1     56027   1  P16  : clwc          
     6 : ECMWF    unknown  instant     137   1     56027   1  P16  : ciwc          
     7 : ECMWF    unknown  instant       1   2     56027   1  P16  : lnsp          
     8 : ECMWF    unknown  instant     137   1     56027   1  P16  : u             
     9 : ECMWF    unknown  instant     137   1     56027   1  P16  : v             
    10 : ECMWF    unknown  instant       1   3     56027   1  P16  : z             
    11 : ECMWF    unknown  instant       1   3     56027   1  P16  : lsm           
    12 : ECMWF    unknown  instant       1   4     56027   1  P16  : swvl1         
    13 : ECMWF    unknown  instant       1   5     56027   1  P16  : swvl2         
    14 : ECMWF    unknown  instant       1   6     56027   1  P16  : swvl3         
    15 : ECMWF    unknown  instant       1   7     56027   1  P16  : swvl4         
    16 : ECMWF    unknown  instant       1   3     56027   1  P16  : sp            
    17 : ECMWF    unknown  instant       1   4     56027   1  P16  : stl1          
    18 : ECMWF    unknown  instant       1   3     56027   1  P24  : sd            
    19 : ECMWF    unknown  instant       1   5     56027   1  P16  : stl2          
    20 : ECMWF    unknown  instant       1   6     56027   1  P16  : stl3          
    21 : ECMWF    unknown  instant       1   3     56027   1  P16  : src           
    22 : ECMWF    unknown  instant       1   3     56027   1  P16  : skt           
    23 : ECMWF    unknown  instant       1   7     56027   1  P16  : stl4          
    24 : ECMWF    unknown  instant       1   3     56027   1  P16  : tsn           
    25 : ECMWF    unknown  instant       1   8     56027   1  P16  : 2t            
    26 : ECMWF    unknown  instant       1   9     56027   1  P16  : 10u           
    27 : ECMWF    unknown  instant       1   9     56027   1  P16  : 10v           
    28 : ECMWF    unknown  instant       1   3     56027   1  P16  : tcc           
    29 : ECMWF    unknown  instant       1   8     56027   1  P16  : 2d            
   Grid coordinates :
     1 : lonlat                   : points=56027 (313x179)
                              lon : -10.125 to 60.075 by 0.225 degrees_east
                              lat : 65.025 to 24.975 by -0.225 degrees_north
   Vertical coordinates :
     1 : hybrid                   : levels=137
                              lev : 1 to 137 by 1 level
                        available : vct
     2 : hybrid                   : levels=1
                              lev : 1 level
                        available : vct
     3 : surface                  : levels=1
     4 : depth_below_land         : levels=1
                            depth : 3.5 m
                           bounds : 0-7 m
     5 : depth_below_land         : levels=1
                            depth : 17.5 m
                           bounds : 7-28 m
     6 : depth_below_land         : levels=1
                            depth : 64 m
                           bounds : 28-100 m
     7 : depth_below_land         : levels=1
                            depth : 50 m
                           bounds : 100-0 m
     8 : height                   : levels=1
                           height : 2 m
     9 : height                   : levels=1
                           height : 10 m
and this is the api2arl config file

Code: Select all

&SETUP
 numatm = 12,
 atmgrb = 'gh','pres','t','pt','u','v','w','z','r','qv','q','etad',
 atmcat =     3 ,   3 ,    0 ,   0 ,   2 ,    2 ,    2 ,   2 ,   1 ,   1 ,    1,   2,
 atmnum =     5 ,   0 ,    0 ,   2 ,   2 ,    3 ,    8 ,   9 ,   1 ,   2 ,    2,   8,
 atmcnv =   1.0 ,0.01 ,  1.0 , 1.0 , 1.0 ,  1.0 , 0.01 , 1.0 , 1.0 , 1.0 ,  1.0, 0.01
 atmarl = 'HGTS','PRES','TEMP','THET','UWND','VWND','WWND','DZDT','RELH','SPHU','SPHU','WWND',
 numsfc = 21,
 sfcgrb = 'orog','sp','tp','tcc','hpbl','uflx','vflx','dswr','shtf','lhtf','2t','r','10u','10v','ewss','nsss','z','sshf','ssr','ncpc','acpc',
 sfccat =   3,   3,   1,  6,  19,  2, 17,  4,  0,  0,  0,  1,  2,  2,  2,  2,  3,  0,  4,   1,   1
 sfcnum =   5,   0,   8,  1,   3, 17, 18,  0, 11, 10,  0,  1,  2,  3,  2,  3,  5, 11,  0,   9,  10
 sfccnv = 1.0,0.01,.001,1.0, 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.1,1.0,1.0,.001,.001
 sfcarl = 'SHGT','PRSS','TPPT','TCLD','PBLH','UMOF','VMOF','DSWF','SHTF','LHTF','T02M','RH2M','U10M','V10M','UMOF','VMOF','SHGT','SHTF','DSWF','TPPN','TPPC',
/

mapekin
Posts: 3
Joined: December 13th, 2019, 4:10 am
Registered HYSPLIT User: Yes

Re: Convert IFS netCDF data to arl

Post by mapekin » December 24th, 2019, 9:31 am

Hi Matt li,
Your input files are Ecmwf grib2 format. I think you must use api2arl_v1,api2arl_v2,api2arl_v3 or api2arl_v1.

Post Reply