Variable missing error when trying to use own emissions files

James King

James King
Member
Hi all,

I'm trying to use some NH3 emissions files of my own to force CAM-Chem. I have made sure the emissions are in the same units and sectors are summed; made sure the lons go from 0 to 360; and made sure that the file is in netcdf-classic format to match the CMIP6 emissions files the model uses by default. However, when running, I get this error in the cesm.log:

Opened existing file /work/n02/n02/jking/cesm/CESM2.2.2_test/cesm_inputdata/atm/cam/chem/emis/emissions_ssp370/emissions-cmip6-ScenarioMIP_IAMC-AIM-ssp370-1-1_so4_a2_anthro-res_surface_mol_175001-210101_0.9x1.25_c20190222.nc 297
Opened existing file /work/n02/n02/jking/cesm/UK_soil/SSP3_CONTROL_NH3_emissions_with_uk_sum_units_rotated_fixedgrid_classic.nc 298
Abort with message NetCDF: Variable not found in file /work/n02/n02/jking/cesm/CESM2.2.2_test/my_cesm_sandbox/cime/src/externals/pio2/src/clib/pio_nc.c at line 1164


Now, the variables in the CMIP6 emissions files I am otherwise using are as follows (output from cdo sinfon):

File format : NetCDF
-1 : Institut Source T Steptype Levels Num Points Num Dtype : Parameter name
1 : unknown unknown v instant 1 1 1 1 I32 : date
2 : unknown unknown v instant 1 1 55296 2 F32 : emiss_anthro
Grid coordinates :
1 : generic : points=1
2 : lonlat : points=55296 (288x192)
lon : 0 to 358.75 by 1.25 degrees_east circular
lat : -90 to 90 by 0.9424084 degrees_north
Vertical coordinates :
1 : surface : levels=1
Time coordinate :
time : 3301 steps
RefTime = 1750-01-01 00:00:00 Units = days Calendar = gregorian


The variables in the file I want to use are as follows:

File format : NetCDF
-1 : Institut Source T Steptype Levels Num Points Num Dtype : Parameter name
1 : unknown unknown v instant 1 1 882432 1 F32 : emiss_anthro
2 : unknown unknown c instant 1 1 2 2 F64 : sector_bnds
Grid coordinates :
1 : lonlat : points=882432 (1149x768)
lon : 0 to 358.75 by 0.3125 degrees_east
lat : -89.88281 to 89.88281 by 0.234375 degrees_north
2 : generic : points=2
Vertical coordinates :
1 : surface : levels=1
Time coordinate :
time : 84 steps
RefTime = 2015-01-01 00:00:00 Units = days Calendar = 365_day Bounds = true


I can see that the CMIP6 files have a variable called 'date' which my file doesn't have, and my file has a variable called 'sector_bnds' which the CMIP6 files don't have. The time coordinates are also slightly differently formated. Is this mismatch causing the error, and if so, how should I fix it? I have tried to add a 'date' variable to my file using nco and dates formatted as YYYYMMDD, as per the CMIP6 'date' variable:

ncap2 -s 'date=20150116;20150216...'
but this results in a different error:

Opened existing file /work/n02/n02/jking/cesm/CESM2.2.2_test/cesm_inputdata/atm/cam/chem/emis/emissions_ssp370/emissions-cmip6-ScenarioMIP_IAMC-AIM-ssp370-1-1_so4_a2_anthro-res_surface_mol_175001-210101_0.9x1.25_c20190222.nc 297
Opened existing file /work/n02/n02/jking/cesm/UK_soil/SSP3_CONTROL_NH3_emissions_with_uk_sum_units_rotated_fixedgrid_classic_withdatevar.nc 298
Opened existing file /work/n02/n02/jking/cesm/UK_soil/SSP3_CONTROL_NH3_emissions_with_uk_sum_units_rotated_fixedgrid_classic_withdatevar.nc 299
ERROR timeaddmonths(): MM out of range
set_time_float_from_date: error return from ESMF_TimeSet for set_time_float_from_date


Trying to run in DEBUG mode also doesn't help, as the model then fails after reading a standard CMIP6 FLBC file which works perfectly when DEBUG mode is off.
Any advice on how to run CAM-Chem with my own emissions file would be much appreciated - I've not had any luck on the forums with this error, or been able to find a page on the CAM-Chem wiki for using user-generated emissions files.

Thanks,

James
 

rrbuchholz

Rebecca Buchholz
CSEG and Liaisons
Staff member
Hi James,

Your emission files will need to be of the same format as is expected by CESM. Some issues that can trip up the model:
- Don't have NaN values, use zero where there are no emissions
- If you provide emissions or any input files in NetCDF version 4 (either NetCDF4 or NetCDF4_classic), the model will crash.
- Your emissions should be in units of molecules/cm2/s

You likely need to have these variables defined in your files something like:
dimensions:
time = 7890 // unlimited
lat = 192
lon = 288
variables:
integer date ( time )
units : YYYYMMDD
long_name : Date

float time ( time )
long_name : Time
calendar : Gregorian
units : days since 1850-01-01 00:00:00

float lat ( lat )
long_name : latitude
units : degrees_north

float lon ( lon )
long_name : longitude
units : degrees_east
An ncdump should be able to show you if the format looks OK.

Hope that helps!

Best,
Rebecca
 
Back
Top