preparing ECHAM data for INT2LM – in #8: General Questions

in #8: General Questions

<p> There is a very old version of a converter under https://redc.clm-community.eu/projects/int2lm/wiki/Pre-Processor_Programs </p> <p> In the tape archive <code> /hpss/doku/ik0555/DKRZ_LTA_555_ds00001/cordex/MPI-ESM-LR </code> at <span class="caps"> DKRZ </span> you find examples how the files should look like. Below is a “ncdump -h” listing as an example </p> <p> T_SO is not needed for <span class="caps"> COSMO </span> _CLM. INT2LM calculates an exponential profile using T_S or T_SKIN (or even T(ke) in the worst case, if the latter are not available). <br/> W_SO_REL: I cannot remember if a conversion factor is needed. Anyway, you can also initialise with an artificial soil moisture by setting <br/> in CONTRL <br/> itype_w_so_rel = 0 <br/> and in LMGRID <br/> czvw_so_lm= 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, </p> <p> Setting <code> lmulti_layer_in=FALSE </code> is probably not a good idea. </p> <pre> netcdf caf2090010100 { dimensions: lat = 96 ; lon = 192 ; time = UNLIMITED ; // (1 currently) level = 47 ; soil1 = 5 ; nhyi = 48 ; nhym = 47 ; level1 = 48 ; bnds = 2 ; variables: float FR_LAND(lat, lon) ; FR_LAND:long_name = "sea_land_mask" ; FR_LAND:units = "0,1" ; FR_LAND:code = 172 ; FR_LAND:grid_type = "gaussian" ; float FR_SEA_ICE(time, lat, lon) ; FR_SEA_ICE:long_name = "sea_ice_area_fraction" ; FR_SEA_ICE:units = "fraction" ; FR_SEA_ICE:code = 210 ; FR_SEA_ICE:grid_type = "gaussian" ; FR_SEA_ICE:_FillValue = -1.e+20f ; float PS(time, lat, lon) ; PS:long_name = "surface_air_pressure" ; PS:units = "Pa" ; PS:code = 134 ; PS:table = 128 ; PS:grid_type = "gaussian" ; PS:_FillValue = -1.e+20f ; float QC(time, level, lat, lon) ; QC:long_name = "mass_fraction_of_cloud_liquid_water_in_air" ; QC:units = "kg/kg" ; QC:code = 153 ; QC:table = 128 ; QC:grid_type = "gaussian" ; QC:_FillValue = -1.e+20f ; float QI(time, level, lat, lon) ; QI:long_name = "mass_fraction_of_cloud_ice_in_air" ; QI:units = "kg/kg" ; QI:code = 154 ; QI:table = 128 ; QI:grid_type = "gaussian" ; QI:_FillValue = -1.e+20f ; float QV(time, level, lat, lon) ; QV:long_name = "specific_humidity" ; QV:units = "kg/kg" ; QV:code = 133 ; QV:table = 128 ; QV:grid_type = "gaussian" ; QV:_FillValue = -1.e+20f ; float T(time, level, lat, lon) ; T:long_name = "air_temperature" ; T:units = "K" ; T:code = 130 ; T:table = 128 ; T:grid_type = "gaussian" ; T:_FillValue = -1.e+20f ; float T_S(time, lat, lon) ; T_S:long_name = "soil_surface_temperature" ; T_S:units = "K" ; T_S:code = 1 ; T_S:table = 128 ; T_S:grid_type = "gaussian" ; T_S:_FillValue = -1.e+20f ; float T_SO(time, soil1, lat, lon) ; T_SO:long_name = "soil_temperature" ; T_SO:units = "K" ; T_SO:code = 68 ; T_SO:table = 180 ; T_SO:grid_type = "gaussian" ; T_SO:_FillValue = -1.e+20f ; float U(time, level, lat, lon) ; U:long_name = "eastward_wind" ; U:units = "m/s" ; U:code = 131 ; U:table = 128 ; U:grid_type = "gaussian" ; U:_FillValue = -1.e+20f ; float V(time, level, lat, lon) ; V:long_name = "northward_wind" ; V:units = "m/s" ; V:code = 132 ; V:table = 128 ; V:grid_type = "gaussian" ; V:_FillValue = -1.e+20f ; float W_I(time, lat, lon) ; W_I:long_name = "canopy_water_amount" ; W_I:units = "kg/m2" ; W_I:code = 193 ; W_I:table = 128 ; W_I:grid_type = "gaussian" ; W_I:_FillValue = -1.e+20f ; float W_SNOW(time, lat, lon) ; W_SNOW:long_name = "lwe_thickness_of_surface_snow_amount" ; W_SNOW:units = "m" ; W_SNOW:code = 141 ; W_SNOW:table = 128 ; W_SNOW:grid_type = "gaussian" ; W_SNOW:_FillValue = -1.e+20f ; float W_SO_REL(time, soil1, lat, lon) ; W_SO_REL:long_name = "volume_fraction_of_soil_moisture scaled to max. field capacity" ; W_SO_REL:units = "m/m" ; W_SO_REL:code = 2 ; W_SO_REL:table = 255 ; W_SO_REL:grid_type = "gaussian" ; W_SO_REL:_FillValue = -1.e+20f ; float ak(nhyi) ; ak:long_name = "hybrid A coefficient at layer interfaces" ; ak:units = "Pa" ; float bk(nhyi) ; bk:long_name = "hybrid B coefficient at layer interfaces" ; bk: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" ; float lat(lat) ; lat:axis = "Y" ; lat:long_name = "latitude" ; lat:standard_name = "latitude" ; lat:units = "degrees_north" ; float level(level) ; level:formula = "hyam hybm (mlev=hyam+hybm*aps)" ; level:formula_terms = "ap: hyam b: hybm ps: aps" ; level:long_name = "hybrid level at layer midpoints" ; level:positive = "down" ; level:standard_name = "hybrid_sigma_pressure" ; level:units = "level" ; float level1(level1) ; float lon(lon) ; lon:axis = "X" ; lon:long_name = "longitude" ; lon:standard_name = "longitude" ; lon:units = "degrees_east" ; float soil1(soil1) ; soil1:axis = "Z" ; soil1:long_name = "depth of soil layers" ; soil1:positive = "down" ; soil1:units = "m" ; float soil1_bnds(soil1, bnds) ; double time(time) ; time:units = "days since 2090-01-01 00:00:00" ; time:calendar = "proleptic_gregorian" ; float FIS(lat, lon) ; FIS:long_name = "surface geopotential" ; FIS:units = "m2/s2" ; FIS:code = 129 ; FIS:grid_type = "gaussian" ; </pre>

  @burkhardtrockel in #ffc0213

<p> There is a very old version of a converter under https://redc.clm-community.eu/projects/int2lm/wiki/Pre-Processor_Programs </p> <p> In the tape archive <code> /hpss/doku/ik0555/DKRZ_LTA_555_ds00001/cordex/MPI-ESM-LR </code> at <span class="caps"> DKRZ </span> you find examples how the files should look like. Below is a “ncdump -h” listing as an example </p> <p> T_SO is not needed for <span class="caps"> COSMO </span> _CLM. INT2LM calculates an exponential profile using T_S or T_SKIN (or even T(ke) in the worst case, if the latter are not available). <br/> W_SO_REL: I cannot remember if a conversion factor is needed. Anyway, you can also initialise with an artificial soil moisture by setting <br/> in CONTRL <br/> itype_w_so_rel = 0 <br/> and in LMGRID <br/> czvw_so_lm= 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, </p> <p> Setting <code> lmulti_layer_in=FALSE </code> is probably not a good idea. </p> <pre> netcdf caf2090010100 { dimensions: lat = 96 ; lon = 192 ; time = UNLIMITED ; // (1 currently) level = 47 ; soil1 = 5 ; nhyi = 48 ; nhym = 47 ; level1 = 48 ; bnds = 2 ; variables: float FR_LAND(lat, lon) ; FR_LAND:long_name = "sea_land_mask" ; FR_LAND:units = "0,1" ; FR_LAND:code = 172 ; FR_LAND:grid_type = "gaussian" ; float FR_SEA_ICE(time, lat, lon) ; FR_SEA_ICE:long_name = "sea_ice_area_fraction" ; FR_SEA_ICE:units = "fraction" ; FR_SEA_ICE:code = 210 ; FR_SEA_ICE:grid_type = "gaussian" ; FR_SEA_ICE:_FillValue = -1.e+20f ; float PS(time, lat, lon) ; PS:long_name = "surface_air_pressure" ; PS:units = "Pa" ; PS:code = 134 ; PS:table = 128 ; PS:grid_type = "gaussian" ; PS:_FillValue = -1.e+20f ; float QC(time, level, lat, lon) ; QC:long_name = "mass_fraction_of_cloud_liquid_water_in_air" ; QC:units = "kg/kg" ; QC:code = 153 ; QC:table = 128 ; QC:grid_type = "gaussian" ; QC:_FillValue = -1.e+20f ; float QI(time, level, lat, lon) ; QI:long_name = "mass_fraction_of_cloud_ice_in_air" ; QI:units = "kg/kg" ; QI:code = 154 ; QI:table = 128 ; QI:grid_type = "gaussian" ; QI:_FillValue = -1.e+20f ; float QV(time, level, lat, lon) ; QV:long_name = "specific_humidity" ; QV:units = "kg/kg" ; QV:code = 133 ; QV:table = 128 ; QV:grid_type = "gaussian" ; QV:_FillValue = -1.e+20f ; float T(time, level, lat, lon) ; T:long_name = "air_temperature" ; T:units = "K" ; T:code = 130 ; T:table = 128 ; T:grid_type = "gaussian" ; T:_FillValue = -1.e+20f ; float T_S(time, lat, lon) ; T_S:long_name = "soil_surface_temperature" ; T_S:units = "K" ; T_S:code = 1 ; T_S:table = 128 ; T_S:grid_type = "gaussian" ; T_S:_FillValue = -1.e+20f ; float T_SO(time, soil1, lat, lon) ; T_SO:long_name = "soil_temperature" ; T_SO:units = "K" ; T_SO:code = 68 ; T_SO:table = 180 ; T_SO:grid_type = "gaussian" ; T_SO:_FillValue = -1.e+20f ; float U(time, level, lat, lon) ; U:long_name = "eastward_wind" ; U:units = "m/s" ; U:code = 131 ; U:table = 128 ; U:grid_type = "gaussian" ; U:_FillValue = -1.e+20f ; float V(time, level, lat, lon) ; V:long_name = "northward_wind" ; V:units = "m/s" ; V:code = 132 ; V:table = 128 ; V:grid_type = "gaussian" ; V:_FillValue = -1.e+20f ; float W_I(time, lat, lon) ; W_I:long_name = "canopy_water_amount" ; W_I:units = "kg/m2" ; W_I:code = 193 ; W_I:table = 128 ; W_I:grid_type = "gaussian" ; W_I:_FillValue = -1.e+20f ; float W_SNOW(time, lat, lon) ; W_SNOW:long_name = "lwe_thickness_of_surface_snow_amount" ; W_SNOW:units = "m" ; W_SNOW:code = 141 ; W_SNOW:table = 128 ; W_SNOW:grid_type = "gaussian" ; W_SNOW:_FillValue = -1.e+20f ; float W_SO_REL(time, soil1, lat, lon) ; W_SO_REL:long_name = "volume_fraction_of_soil_moisture scaled to max. field capacity" ; W_SO_REL:units = "m/m" ; W_SO_REL:code = 2 ; W_SO_REL:table = 255 ; W_SO_REL:grid_type = "gaussian" ; W_SO_REL:_FillValue = -1.e+20f ; float ak(nhyi) ; ak:long_name = "hybrid A coefficient at layer interfaces" ; ak:units = "Pa" ; float bk(nhyi) ; bk:long_name = "hybrid B coefficient at layer interfaces" ; bk: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" ; float lat(lat) ; lat:axis = "Y" ; lat:long_name = "latitude" ; lat:standard_name = "latitude" ; lat:units = "degrees_north" ; float level(level) ; level:formula = "hyam hybm (mlev=hyam+hybm*aps)" ; level:formula_terms = "ap: hyam b: hybm ps: aps" ; level:long_name = "hybrid level at layer midpoints" ; level:positive = "down" ; level:standard_name = "hybrid_sigma_pressure" ; level:units = "level" ; float level1(level1) ; float lon(lon) ; lon:axis = "X" ; lon:long_name = "longitude" ; lon:standard_name = "longitude" ; lon:units = "degrees_east" ; float soil1(soil1) ; soil1:axis = "Z" ; soil1:long_name = "depth of soil layers" ; soil1:positive = "down" ; soil1:units = "m" ; float soil1_bnds(soil1, bnds) ; double time(time) ; time:units = "days since 2090-01-01 00:00:00" ; time:calendar = "proleptic_gregorian" ; float FIS(lat, lon) ; FIS:long_name = "surface geopotential" ; FIS:units = "m2/s2" ; FIS:code = 129 ; FIS:grid_type = "gaussian" ; </pre>

There is a very old version of a converter under https://redc.clm-community.eu/projects/int2lm/wiki/Pre-Processor_Programs

In the tape archive /hpss/doku/ik0555/DKRZ_LTA_555_ds00001/cordex/MPI-ESM-LR at DKRZ you find examples how the files should look like. Below is a “ncdump -h” listing as an example

T_SO is not needed for COSMO _CLM. INT2LM calculates an exponential profile using T_S or T_SKIN (or even T(ke) in the worst case, if the latter are not available).
W_SO_REL: I cannot remember if a conversion factor is needed. Anyway, you can also initialise with an artificial soil moisture by setting
in CONTRL
itype_w_so_rel = 0
and in LMGRID
czvw_so_lm= 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75,

Setting lmulti_layer_in=FALSE is probably not a good idea.

netcdf caf2090010100 {
dimensions:
	lat = 96 ;
	lon = 192 ;
	time = UNLIMITED ; // (1 currently)
	level = 47 ;
	soil1 = 5 ;
	nhyi = 48 ;
	nhym = 47 ;
	level1 = 48 ;
	bnds = 2 ;
variables:
	float FR_LAND(lat, lon) ;
		FR_LAND:long_name = "sea_land_mask" ;
		FR_LAND:units = "0,1" ;
		FR_LAND:code = 172 ;
		FR_LAND:grid_type = "gaussian" ;
	float FR_SEA_ICE(time, lat, lon) ;
		FR_SEA_ICE:long_name = "sea_ice_area_fraction" ;
		FR_SEA_ICE:units = "fraction" ;
		FR_SEA_ICE:code = 210 ;
		FR_SEA_ICE:grid_type = "gaussian" ;
		FR_SEA_ICE:_FillValue = -1.e+20f ;
	float PS(time, lat, lon) ;
		PS:long_name = "surface_air_pressure" ;
		PS:units = "Pa" ;
		PS:code = 134 ;
		PS:table = 128 ;
		PS:grid_type = "gaussian" ;
		PS:_FillValue = -1.e+20f ;
	float QC(time, level, lat, lon) ;
		QC:long_name = "mass_fraction_of_cloud_liquid_water_in_air" ;
		QC:units = "kg/kg" ;
		QC:code = 153 ;
		QC:table = 128 ;
		QC:grid_type = "gaussian" ;
		QC:_FillValue = -1.e+20f ;
	float QI(time, level, lat, lon) ;
		QI:long_name = "mass_fraction_of_cloud_ice_in_air" ;
		QI:units = "kg/kg" ;
		QI:code = 154 ;
		QI:table = 128 ;
		QI:grid_type = "gaussian" ;
		QI:_FillValue = -1.e+20f ;
	float QV(time, level, lat, lon) ;
		QV:long_name = "specific_humidity" ;
		QV:units = "kg/kg" ;
		QV:code = 133 ;
		QV:table = 128 ;
		QV:grid_type = "gaussian" ;
		QV:_FillValue = -1.e+20f ;
	float T(time, level, lat, lon) ;
		T:long_name = "air_temperature" ;
		T:units = "K" ;
		T:code = 130 ;
		T:table = 128 ;
		T:grid_type = "gaussian" ;
		T:_FillValue = -1.e+20f ;
	float T_S(time, lat, lon) ;
		T_S:long_name = "soil_surface_temperature" ;
		T_S:units = "K" ;
		T_S:code = 1 ;
		T_S:table = 128 ;
		T_S:grid_type = "gaussian" ;
		T_S:_FillValue = -1.e+20f ;
	float T_SO(time, soil1, lat, lon) ;
		T_SO:long_name = "soil_temperature" ;
		T_SO:units = "K" ;
		T_SO:code = 68 ;
		T_SO:table = 180 ;
		T_SO:grid_type = "gaussian" ;
		T_SO:_FillValue = -1.e+20f ;
	float U(time, level, lat, lon) ;
		U:long_name = "eastward_wind" ;
		U:units = "m/s" ;
		U:code = 131 ;
		U:table = 128 ;
		U:grid_type = "gaussian" ;
		U:_FillValue = -1.e+20f ;
	float V(time, level, lat, lon) ;
		V:long_name = "northward_wind" ;
		V:units = "m/s" ;
		V:code = 132 ;
		V:table = 128 ;
		V:grid_type = "gaussian" ;
		V:_FillValue = -1.e+20f ;
	float W_I(time, lat, lon) ;
		W_I:long_name = "canopy_water_amount" ;
		W_I:units = "kg/m2" ;
		W_I:code = 193 ;
		W_I:table = 128 ;
		W_I:grid_type = "gaussian" ;
		W_I:_FillValue = -1.e+20f ;
	float W_SNOW(time, lat, lon) ;
		W_SNOW:long_name = "lwe_thickness_of_surface_snow_amount" ;
		W_SNOW:units = "m" ;
		W_SNOW:code = 141 ;
		W_SNOW:table = 128 ;
		W_SNOW:grid_type = "gaussian" ;
		W_SNOW:_FillValue = -1.e+20f ;
	float W_SO_REL(time, soil1, lat, lon) ;
		W_SO_REL:long_name = "volume_fraction_of_soil_moisture scaled to max. field capacity" ;
		W_SO_REL:units = "m/m" ;
		W_SO_REL:code = 2 ;
		W_SO_REL:table = 255 ;
		W_SO_REL:grid_type = "gaussian" ;
		W_SO_REL:_FillValue = -1.e+20f ;
	float ak(nhyi) ;
		ak:long_name = "hybrid A coefficient at layer interfaces" ;
		ak:units = "Pa" ;
	float bk(nhyi) ;
		bk:long_name = "hybrid B coefficient at layer interfaces" ;
		bk: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" ;
	float lat(lat) ;
		lat:axis = "Y" ;
		lat:long_name = "latitude" ;
		lat:standard_name = "latitude" ;
		lat:units = "degrees_north" ;
	float level(level) ;
		level:formula = "hyam hybm (mlev=hyam+hybm*aps)" ;
		level:formula_terms = "ap: hyam b: hybm ps: aps" ;
		level:long_name = "hybrid level at layer midpoints" ;
		level:positive = "down" ;
		level:standard_name = "hybrid_sigma_pressure" ;
		level:units = "level" ;
	float level1(level1) ;
	float lon(lon) ;
		lon:axis = "X" ;
		lon:long_name = "longitude" ;
		lon:standard_name = "longitude" ;
		lon:units = "degrees_east" ;
	float soil1(soil1) ;
		soil1:axis = "Z" ;
		soil1:long_name = "depth of soil layers" ;
		soil1:positive = "down" ;
		soil1:units = "m" ;
	float soil1_bnds(soil1, bnds) ;
	double time(time) ;
		time:units = "days since 2090-01-01 00:00:00" ;
		time:calendar = "proleptic_gregorian" ;
	float FIS(lat, lon) ;
		FIS:long_name = "surface geopotential" ;
		FIS:units = "m2/s2" ;
		FIS:code = 129 ;
		FIS:grid_type = "gaussian" ;