## Anthropogenic SLCF, CO2, and open biomass burning emissions forcing for ACCES…S-ESM1.6 historical:
### Forcing dataset definitions:
The ancillaries described here are produced from a combination of two forcing datasets:
1. [Anthropogenic short-lived climate forcer (SLCF) and CO2 emissions](https://input4mips-cvs.readthedocs.io/en/latest/dataset-overviews/anthropogenic-slcf-co2-emissions/) ([wiki page](../wiki/Forcings_AnthropogenicSLCF_CO2Emissions))
2. [Open biomass burning emissions](https://input4mips-cvs.readthedocs.io/en/latest/dataset-overviews/open-biomass-burning-emissions/) ([wiki page](../wiki/Forcings_OpenBiomassBurningEmissions))
The two forcing datasets contain data for many species. The datasets and species for CMIP7 are available, but are not yet fully described. The datasets are very similar to the ones used for CMIP6, as described in ["CMIP6 Forcing Datasets Summary"](https://docs.google.com/document/d/1pU9IiJvPJwRvIgVaSDdJ4O0Jeorv_2ekEtted34K9cA/edit?tab=t.0) and ["The generation of gridded emissions data for CMIP6"](https://gmd.copernicus.org/articles/13/461/2020/).
1. The first dataset concerns historical "anthropogenic emissions, which are defined as emissions that stem directly from human activities such as energy transformation, buildings, transportation, and agricultural and industrial activities", and is produced by the Community Emissions Data System (CEDS).
2. The second dataset contains "historical open burning emissions, which are defined as forest, grassland, and peatland fires, along with agricultural waste burning (AWB) on fields", and includes data from the Global Fire Emissions Database (GFED).
### [Anthropogenic short-lived climate forcer (SLCF) and CO2 emissions](../wiki/Forcings_AnthropogenicSLCF_CO2Emissions))
#### Input files:
The directory
```
${INPUT4MIPS_DIR}/CMIP7/CMIP/PNNL-JGCRI/CEDS-CMIP-2025-04-18/atmos/mon/
```
contains the subdirectories `${SPECIES}_em_anthro` and `${SPECIES}_em_AIR_anthro`, where `${SPECIES}` is one of: `BC`, `CH4`, `CO2`, `CO`, `N2O`, `NH3`, `NMVOC`, `NOx`, `OC`, `SO2`, and the `*_AIR_*` subdirectory contains observations from aircraft at various levels.
The species needed for ACCESS-ESM1.6 are (at least):
- [`BC` (black carbon)](https://archive.ipcc.ch/publications_and_data/ar4/wg1/en/ch2s2-4-4-3.html)
- [`OC` (organic carbon), also known as OCFF (organic carbon from fossil fuels)](https://archive.ipcc.ch/publications_and_data/ar4/wg1/en/ch2s2-4-4-2.html)
- [`SO2` (sulphur dioxide)](https://archive.ipcc.ch/publications_and_data/ar4/wg1/en/ch2s2-4-4-1.html)
Note: CO2 emissions are not used in the historical simulation because it is concentration-driven.
Each of these subdirectories contains a `gn/v${DIR_VERSION}` subdirectory, eg. `gn/v20250421/`
For each species, the required files are in this sudirectory, and the filenames follow the same two patterns:
For `${SPECIES}_em_anthro/gn/v${DIR_VERSION}`:
```
${SPECIES}-em-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-${VERSION}_gn_${YEAR_RANGE}.nc
```
For `${SPECIES}_em_AIR_anthro/gn/v${DIR_VERSION}`:
```
${SPECIES}-em-AIR-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-${VERSION}_gn_${YEAR_RANGE}.nc
```
For example, for `BC`, in directory
```
${INPUT4MIPS_DIR}/CMIP7/CMIP/PNNL-JGCRI/CEDS-CMIP-2025-04-18/atmos/mon/BC_em_anthro/gn/v20250421
```
use the files
```
BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-2025-04-18_gn_185001-189912.nc
BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-2025-04-18_gn_190001-194912.nc
BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-2025-04-18_gn_195001-199912.nc
BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-2025-04-18_gn_200001-202312.nc
```
For `BC` aircraft data, in directory
```
${INPUT4MIPS_DIR}/CMIP7/CMIP/PNNL-JGCRI/CEDS-CMIP-2025-04-18/atmos/mon/BC_em_AIR_anthro/gn/v20250421/
```
use the files
```
BC-em-AIR-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-2025-04-18_gn_185001-189912.nc
BC-em-AIR-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-2025-04-18_gn_190001-194912.nc
BC-em-AIR-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-2025-04-18_gn_195001-199912.nc
BC-em-AIR-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-2025-04-18_gn_200001-202312.nc
```
Similar files exist for the other species.
#### Independent variable definitions:
For `${SPECIES}-em-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-${VERSION}_gn_${YEAR_RANGE}.nc`
```
double lon(lon) ;
lon:units = "degrees_east" ;
lon:long_name = "longitude" ;
lon:axis = "X" ;
lon:bounds = "lon_bnds" ;
lon:modulo = 360. ;
lon:realtopology = "circular" ;
lon:standard_name = "longitude" ;
lon:topology = "circular" ;
double lat(lat) ;
lat:units = "degrees_north" ;
lat:long_name = "latitude" ;
lat:axis = "Y" ;
lat:bounds = "lat_bnds" ;
lat:realtopology = "linear" ;
lat:standard_name = "latitude" ;
int sector(sector) ;
sector:long_name = "sector" ;
sector:bounds = "sector_bnds" ;
sector:ids = "0: Agriculture; 1: Energy; 2: Industrial; 3: Transportation; 4: Residential, Commercial, Other; 5: Solvents production and application; 6: Waste; 7: International Shipping" ;
double time(time) ;
time:units = "days since 1750-01-01 0:0:0" ;
time:long_name = "time" ;
time:calendar = "365_day" ;
time:axis = "T" ;
time:bounds = "time_bnds" ;
time:realtopology = "linear" ;
time:standard_name = "time" ;
```
For `${SPECIES}-em-AIR-anthro_input4MIPs_emissions_CMIP_CEDS-CMIP-${VERSION}_gn_${YEAR_RANGE}.nc`
```
double lon(lon) ;
lon:units = "degrees_east" ;
lon:long_name = "longitude" ;
lon:axis = "X" ;
lon:bounds = "lon_bnds" ;
lon:modulo = 360. ;
lon:realtopology = "circular" ;
lon:standard_name = "longitude" ;
lon:topology = "circular" ;
double lat(lat) ;
lat:units = "degrees_north" ;
lat:long_name = "latitude" ;
lat:axis = "Y" ;
lat:bounds = "lat_bnds" ;
lat:realtopology = "linear" ;
lat:standard_name = "latitude" ;
double level(level) ;
level:units = "km" ;
level:long_name = "altitude" ;
double time(time) ;
time:units = "days since 1750-01-01 0:0:0" ;
time:long_name = "time" ;
time:calendar = "365_day" ;
time:axis = "T" ;
time:bounds = "time_bnds" ;
time:realtopology = "linear" ;
time:standard_name = "time" ;
```
#### Forcing variable definitions:
(Per species, one species per file)
```
float BC_em_anthro(time, sector, lat, lon) ;
BC_em_anthro:units = "kg m-2 s-1" ;
BC_em_anthro:_FillValue = 1.e+20f ;
BC_em_anthro:long_name = "BC Anthropogenic Emissions" ;
BC_em_anthro:cell_methods = "time: mean" ;
BC_em_anthro:missing_value = 1.e+20f ;
```
```
float BC_em_AIR_anthro(time, level, lat, lon) ;
BC_em_AIR_anthro:units = "kg m-2 s-1" ;
BC_em_AIR_anthro:_FillValue = 1.e+20f ;
BC_em_AIR_anthro:long_name = "BC Aircraft Anthropogenic Emissions" ;
BC_em_AIR_anthro:cell_methods = "time: mean" ;
BC_em_AIR_anthro:missing_value = 1.e+20f ;
```
```
float OC_em_anthro(time, sector, lat, lon) ;
OC_em_anthro:units = "kg m-2 s-1" ;
OC_em_anthro:_FillValue = 1.e+20f ;
OC_em_anthro:long_name = "OC Anthropogenic Emissions" ;
OC_em_anthro:cell_methods = "time: mean" ;
OC_em_anthro:missing_value = 1.e+20f ;
```
```
float OC_em_AIR_anthro(time, level, lat, lon) ;
OC_em_AIR_anthro:units = "kg m-2 s-1" ;
OC_em_AIR_anthro:_FillValue = 1.e+20f ;
OC_em_AIR_anthro:long_name = "OC Aircraft Anthropogenic Emissions" ;
OC_em_AIR_anthro:cell_methods = "time: mean" ;
OC_em_AIR_anthro:missing_value = 1.e+20f ;
```
```
float SO2_em_anthro(time, sector, lat, lon) ;
SO2_em_anthro:units = "kg m-2 s-1" ;
SO2_em_anthro:_FillValue = 1.e+20f ;
SO2_em_anthro:long_name = "SO2 Anthropogenic Emissions" ;
SO2_em_anthro:cell_methods = "time: mean" ;
SO2_em_anthro:missing_value = 1.e+20f ;
```
```
float SO2_em_AIR_anthro(time, level, lat, lon) ;
SO2_em_AIR_anthro:units = "kg m-2 s-1" ;
SO2_em_AIR_anthro:_FillValue = 1.e+20f ;
SO2_em_AIR_anthro:long_name = "SO2 Aircraft Anthropogenic Emissions" ;
SO2_em_AIR_anthro:cell_methods = "time: mean" ;
SO2_em_AIR_anthro:missing_value = 1.e+20f ;
```
### [Open biomass burning emissions](../wiki/Forcings_OpenBiomassBurningEmissions)
#### Input files:
The directory
```
${INPUT4MIPS_DIR}/CMIP7/CMIP/DRES/DRES-CMIP-BB4CMIP7-${VERSION}/atmos/mon
```
where `${VERSION}` is the version number, eg.
```
${INPUT4MIPS_DIR}/CMIP7/CMIP/DRES/DRES-CMIP-BB4CMIP7-2-0/atmos/mon
```
contains the species directories `BC`, `C10H16`, `C2H2`, `C2H4`, `C2H4O`, `C2H5OH`, `C2H6`, `C2H6S`, `C3H6`, `C3H6O`, `C3H8`, `C5H8`, `C6H6`, `C7H8`, `C8H10`, `CH2O`, `CH3COCHO`, `CH3COOH`, `CH3OH`, `CH4`, `CO`, `CO2`, `datasource`, `H2`, `HCN`, `HCOOH`, `HigherAlkanes`, `HigherAlkenes`, `HOCH2CHO`, `MEK`, `N2O`, `NH3`, `NMVOCbulk`, `NOx`, `NOxasNO2`, `OC`, `SO2`, `Toluenelump`.
The species needed for ACCESS-ESM1.6 are (at least):
- [`BC` (black carbon)](https://archive.ipcc.ch/publications_and_data/ar4/wg1/en/ch2s2-4-4-3.html)
- [`OC` (organic carbon), also known as OCFF (organic carbon from fossil fuels)](https://archive.ipcc.ch/publications_and_data/ar4/wg1/en/ch2s2-4-4-2.html)
- [`SO2` (sulphur dioxide)](https://archive.ipcc.ch/publications_and_data/ar4/wg1/en/ch2s2-4-4-1.html)
Note: CO2 emissions are not used in the historical simulation because it is concentration-driven.
Each of these subdirectories contains a `gn/v${DIR_VERSION}` subdirectory, eg. `gn/v20250227/`. This subdirectory contains files whose filenames follow the pattern
```
${SPECIES}_input4MIPs_emissions_CMIP_DRES-CMIP-BB4CMIP7-${VERSION}_gn_${YEAR_RANGE}.nc
```
For example, for `BC`, in directory
```
${INPUT4MIPS_DIR}/CMIP7/CMIP/DRES/DRES-CMIP-BB4CMIP7-2-0/atmos/mon/BC/gn/v20250227/
```
use the files
```
BC_input4MIPs_emissions_CMIP_DRES-CMIP-BB4CMIP7-2-0_gn_175001-189912.nc
BC_input4MIPs_emissions_CMIP_DRES-CMIP-BB4CMIP7-2-0_gn_190001-202312.nc
```
#### Independent variable definitions:
```
double latitude(latitude) ;
latitude:bounds = "lat_bnds" ;
latitude:units = "degrees_north" ;
latitude:long_name = "Latitude" ;
latitude:standard_name = "latitude" ;
latitude:axis = "Y" ;
double longitude(longitude) ;
longitude:bounds = "lon_bnds" ;
longitude:long_name = "Longitude" ;
longitude:standard_name = "longitude" ;
longitude:units = "degrees_east" ;
longitude:axis = "X" ;
float time(time) ;
time:units = "days since 1750-01-01 0:0:0" ;
time:long_name = "time" ;
time:standard_name = "time" ;
time:calendar = "noleap" ;
time:axis = "T" ;
time:bounds = "time_bnds" ;
```
#### Forcing variable definitions:
(Per species, one species per file)
```
float BC(time, latitude, longitude) ;
BC:long_name = "biomass_burning_BC_flux" ;
BC:molecular_weight = "molecular weight of BC: 12" ;
BC:missing_value = 1.e+20f ;
BC:units = "kg m-2 s-1" ;
BC:cell_methods = "time: mean" ;
BC:cell_measures = "area: gridcellarea" ;
```
```
float OC(time, latitude, longitude) ;
OC:long_name = "biomass_burning_OC_flux" ;
OC:molecular_weight = "molecular weight of OC: 12" ;
OC:missing_value = 1.e+20f ;
OC:units = "kg m-2 s-1" ;
OC:cell_methods = "time: mean" ;
OC:cell_measures = "area: gridcellarea" ;
```
```
float SO2(time, latitude, longitude) ;
SO2:long_name = "biomass_burning_SO2_flux" ;
SO2:molecular_weight = "molecular weight of SO2: 64.02" ;
SO2:missing_value = 1.e+20f ;
SO2:units = "kg m-2 s-1" ;
SO2:cell_methods = "time: mean" ;
SO2:cell_measures = "area: gridcellarea" ;
```
### Ancillary files relative to ESM1.6 config directory:
For the ACCESS-ESM1.6 historical configuration, the file `atmosphere/um_env.yaml` should contain the definitions:
```
# Ancillary files
BIOMASS: INPUT/Bio_1849_2015_ESM1.anc
[...]
OCFFEMIS: INPUT/OCFF_1849_2015_ESM1.anc
[...]
SOOTEMIS: INPUT/BC_hi_1849_2015_ESM1.anc
SULPEMIS: INPUT/scycl_1849_2015_ESM1_v4.anc
```
and `config.yaml` should contain:
```
submodels:
- name: atmosphere
model: um
[...]
# Aerosols
- ${INPUT}/modern/pre-industrial/atmosphere/aerosol/global.N96/${VERSIONING}/OCFF_1849_2015_ESM1.anc
- ${INPUT}/modern/pre-industrial/atmosphere/aerosol/global.N96/${VERSIONING}/BC_hi_1849_2015_ESM1.anc
- ${INPUT}/modern/pre-industrial/atmosphere/aerosol/global.N96/${VERSIONING}/scycl_1849_2015_ESM1_v4.anc
- ${INPUT}/modern/pre-industrial/atmosphere/aerosol/global.N96/${VERSIONING}/Bio_1849_2015_ESM1.anc
[...]
```
For the ACCESS-ESM1.6 piControl configuration, the file `atmosphere/um_env.yaml` should contain the definitions:
```
# Ancillary files
BIOMASS: INPUT/Bio_1850_ESM1.anc
[...]
OCFFEMIS: INPUT/OCFF_1850_ESM1.anc
[...]
SOOTEMIS: INPUT/BC_hi_1850_ESM1.anc
SULPEMIS: INPUT/scycl_1850_ESM1_v4.anc
```
and `config.yaml` should contain:
```
submodels:
- name: atmosphere
model: um
[...]
# Aerosols
- ${INPUT}/modern/pre-industrial/atmosphere/aerosol/global.N96/${VERSIONING}/OCFF_1850_ESM1.anc
- ${INPUT}/modern/pre-industrial/atmosphere/aerosol/global.N96/${VERSIONING}/BC_hi_1850_ESM1.anc
- ${INPUT}/modern/pre-industrial/atmosphere/aerosol/global.N96/${VERSIONING}/scycl_1850_ESM1_v4.anc
- ${INPUT}/modern/pre-industrial/atmosphere/aerosol/global.N96/${VERSIONING}/Bio_1850_ESM1.anc
[...]
```
where `INPUT` is yet to be defined, but is most likely an ESM1.6 config directory such as ` /g/data/vk83/configurations/inputs/access-esm1p6/cmip7`, and `VERSIONING` is yet to be defined, but is most likely a date in `YYYY.MM.DD` format.
### Ancillary fields:
See "ACCESS-ESM1.5 CMIP6 ancillaries" below for the field definitions of the equivalent ACCESS-ESM1.5 ancillary files.
### Processing:
Process as per
1. "UKESM CMIP6 ancillaries" below, except that the CMIP7 forcing files defined above are to be used,
2. "ACCESS-ESM1.5 CMIP6 ancillaries", except that the ACCESS-ESM1.6 ancillary files defined above are to be produced.
#### Processing descriptions and examples:
##### Notebooks comparing ACCESS-ESM1.6 CMIP7 piControl ancillaries to CMIP6
For the pre-industrial control experiment, as at 2025-06-09, see https://github.com/ACCESS-NRI/CMIP7-Input/tree/53-PI-aerosol-emissions/notebooks/aerosols for a notebook that compares the CMIP7 forcings to CMIP6.
##### ACCESS-ESM1.5 CMIP6 ancillaries
For background, see the [Aerosol emissions section of the ACCESS_ESM1.5_CMIP6_piControl wiki page](../wiki/ACCESS_ESM1.5_CMIP6_piControl#4-aerosol-emissions-anthropogenic-and-natural).
1. From UKCMIP6 NetCDF ancillaries to regridded NetCDF files
The UKCMIP6 UKMO ancillary generation from CMIP6 forcings resulted in files such as
`/g/data/access/TIDS/CMIP6_ANCIL/data/ancils/n96e/timeseries_1850-2014/AerosolChemistryEmissions/v1/BC_biofuel_1849_2015_time_series.nc` where the latitude variable has dimension 144, meaning that the variable takes its value in the centre of each 1.25 degree zone. See "UKESM CMIP6 ancillaries" below.
For the corresponding files used by ACCESS-ESM1.5, such as `/g/data/p66/txz599/data/ancil/CMIP6/BC_hi_1849_2015_ESM1.nc` the latitude variable has dimension 145, and the variable takes its value at the boundary of each zone.
Similarly, the longitudes are offset by 0.9375 degrees, which is half the width of each 1.875 degree longitude band. This can also be interpreted as the variable taking its value at the centre of each grid cell of the UKMO ancillary, and the edges of each grid cell of the ESM1.5 NetCDF file, with the poles being special cases where the zonal average must be used.
The Python script `/g/data/access/projects/access/apps/pythonlib/umfile_utils/interpolate_ancillary.py` looks like it performs the required interpolation in the case of UM ancillary fieldsfiles rather than NetCDF files.
For CMIP7, we would just interpolate values directly to the required grid, ideally producing both NetCDF and UM FF format ancillary files. The UM FF files would be used directly by ACCESS-ESM1.6 and the corresponding NetCDF files could then be published.
Example of the NetCDF output for `BC_hi_1849_2015_ESM1.nc`. This looks like the output of `xconv` applied to the corresponding fieldsfile.
```
$ ncdump -h /g/data/p66/txz599/data/ancil/CMIP6/BC_hi_1849_2015_ESM1.nc
netcdf BC_hi_1849_2015_ESM1 {
dimensions:
longitude = 192 ;
latitude = 145 ;
pseudo = 1 ;
t = UNLIMITED ; // (2004 currently)
variables:
float longitude(longitude) ;
longitude:long_name = "longitude" ;
longitude:standard_name = "longitude" ;
longitude:units = "degrees_east" ;
longitude:point_spacing = "even" ;
longitude:modulo = " " ;
float latitude(latitude) ;
latitude:long_name = "latitude" ;
latitude:standard_name = "latitude" ;
latitude:units = "degrees_north" ;
latitude:point_spacing = "even" ;
float pseudo(pseudo) ;
pseudo:long_name = "pseudo" ;
pseudo:units = " " ;
pseudo:positive = "up" ;
float t(t) ;
t:long_name = "t" ;
t:units = "days since 1849-01-01 00:00:00" ;
t:time_origin = "01-JAN-1849:00:00:00" ;
float field573(t, pseudo, latitude, longitude) ;
field573:source = "Unified Model Output (Vn 7.3):" ;
field573:name = "field573" ;
field573:title = "FRESH SOOT HI LEV EMISS KG/M2/S" ;
field573:date = "01/01/49" ;
field573:time = "00:00" ;
field573:long_name = "FRESH SOOT HI LEV EMISS KG/M2/S" ;
field573:units = "kg m-2 s-1" ;
field573:missing_value = 2.e+20f ;
field573:_FillValue = 2.e+20f ;
field573:valid_min = -0.f ;
field573:valid_max = 7.722244e-11f ;
// global attributes:
:history = "Thu May 30 14:41:38 AEST 2019 - XCONV V1.92 16-February-2006" ;
}
```
The other relevant NetCDF files in the same directory have headers as follows:
```
/g/data/p66/txz599/data/ancil/CMIP6/Bio_1849_2015_ESM1.nc
netcdf Bio_1849_2015_ESM1 {
dimensions:
longitude = 192 ;
latitude = 145 ;
time = 2004 ;
surface = 1 ;
variables:
double longitude(longitude) ;
longitude:long_name = "longitude" ;
longitude:units = "degrees_east" ;
longitude:point_spacing = "even" ;
double latitude(latitude) ;
latitude:long_name = "latitude" ;
latitude:units = "degrees_north" ;
latitude:point_spacing = "even" ;
double surface(surface) ;
surface:long_name = "Surface" ;
surface:units = "level" ;
surface:positive = "up" ;
double time(time) ;
time:long_name = "time" ;
time:units = "days since 0000-01-01 00:00:00" ;
time:time_origin = "01-JAN-0000:00:00:00" ;
double field574(time, surface, latitude, longitude) ;
field574:long_name = "FRESH BIOMASS SURF EMISS KG/M2/S" ;
field574:missing_value = 2.00000004008175e+20 ;
field574:_FillValue = 2.00000004008175e+20 ;
field574:units = "kg m-2 s-1" ;
double field574_1(time, surface, latitude, longitude) ;
field574_1:long_name = "FRESH BIOMASS HI LEV EMISS KG/M2/S" ;
field574_1:missing_value = 2.00000004008175e+20 ;
field574_1:_FillValue = 2.00000004008175e+20 ;
field574_1:units = "kg m-2 s-1" ;
}
```
```
/g/data/p66/txz599/data/ancil/CMIP6/OCFF_1849_2015_ESM1.nc
netcdf OCFF_1849_2015_ESM1 {
dimensions:
longitude = 192 ;
latitude = 145 ;
time = 2004 ;
surface = 1 ;
variables:
double longitude(longitude) ;
longitude:long_name = "longitude" ;
longitude:units = "degrees_east" ;
longitude:point_spacing = "even" ;
double latitude(latitude) ;
latitude:long_name = "latitude" ;
latitude:units = "degrees_north" ;
latitude:point_spacing = "even" ;
double surface(surface) ;
surface:long_name = "Surface" ;
surface:units = "level" ;
surface:positive = "up" ;
double time(time) ;
time:long_name = "time" ;
time:units = "days since 0000-01-01 00:00:00" ;
time:time_origin = "01-JAN-0000:00:00:00" ;
double field573(time, surface, latitude, longitude) ;
field573:long_name = "Stash code = 135" ;
field573:missing_value = 2.00000004008175e+20 ;
field573:_FillValue = 2.00000004008175e+20 ;
field573:units = "kg m-2 s-1" ;
}
```
```
/g/data/p66/txz599/data/ancil/CMIP6/scycl_1849_2015_ESM1_v4.nc
netcdf scycl_1849_2015_ESM1_v4 {
dimensions:
time = 2004 ;
surface = 1 ;
latitude = 145 ;
longitude = 192 ;
variables:
double field570(time, surface, latitude, longitude) ;
field570:units = "kg m-2 s-1" ;
field570:_FillValue = 2.00000004008175e+20 ;
field570:missing_value = 2.00000004008175e+20 ;
field570:long_name = "DIMETHYL SULPHIDE EMISSIONS (ANCIL)" ;
double time(time) ;
time:time_origin = "01-JAN-0000:00:00:00" ;
time:units = "days since 0000-01-01 00:00:00" ;
time:long_name = "time" ;
double surface(surface) ;
surface:positive = "up" ;
surface:units = "level" ;
surface:long_name = "Surface" ;
double latitude(latitude) ;
latitude:point_spacing = "even" ;
latitude:units = "degrees_north" ;
latitude:long_name = "latitude" ;
double longitude(longitude) ;
longitude:point_spacing = "even" ;
longitude:units = "degrees_east" ;
longitude:long_name = "longitude" ;
double field572(time, surface, latitude, longitude) ;
field572:units = "kg m-2 s-1" ;
field572:_FillValue = 2.00000004008175e+20 ;
field572:missing_value = 2.00000004008175e+20 ;
field572:long_name = "AMMONIA GAS EMISSIONS KG/M2/S" ;
double field569(time, surface, latitude, longitude) ;
field569:units = "kg m-2 s-1" ;
field569:_FillValue = 2.00000004008175e+20 ;
field569:missing_value = 2.00000004008175e+20 ;
field569:long_name = "SULPHUR DIOXIDE EMISSIONS" ;
double field569_1(time, surface, latitude, longitude) ;
field569_1:units = "kg m-2 s-1" ;
field569_1:_FillValue = 2.00000004008175e+20 ;
field569_1:missing_value = 2.00000004008175e+20 ;
field569_1:long_name = "HIGH LEVEL SO2 EMISSIONS KG/M2/S" ;
}
```
2. From NetCDF files to UM FF files
The script https://github.com/ACCESS-Community-Hub/CMIP6-Input-Scripts/blob/main/scripts/mrd599/src/python/aerosol_ancil.py was used to convert each interpolated NetCDF file to FF format.
The file https://github.com/ACCESS-Community-Hub/CMIP6-Input-Scripts/tree/main/scripts/txz599/ACCESS-ESM_tools/aerosol_forcing/readme_bp describes how this script was used to produce `BC.anc`, `OCFF.anc`, and `Bio.anc`. Presumably these files were subsequently renamed.
```
[...]
python ~mrd599/src/python/aerosol_ancil.py --vars field573 --stash 129 -f 1849 BC_hi_1849_2015_ESM1.nc BC.anc
python ~mrd599/src/python/aerosol_ancil.py --vars field573 --stash 135 -f 1849 OCFF_1849_2015_ESM1.nc OCFF.anc
python ~mrd599/src/python/aerosol_ancil.py --vars field574 field574_1 --stash 130 131 -f 1849 Bio_1849_2015_ESM1.nc Bio.anc
N.B. Please check the variable names in the netCDF files and matching them to the stash codes from the stashmaster file, ~access/umdir/vn7.3/ctldata/STASHmaster/STASHmaster_A
[...]
```
The file https://github.com/ACCESS-Community-Hub/CMIP6-Input-Scripts/tree/main/scripts/txz599/ACCESS-ESM_tools/aerosol_forcing/readme describes how this script was used to produce `BC_hi_1849_2015_ESM1.anc`, and `scycl_1849_2015_ESM1_v4.anc`.
```
[...]
python ~mrd599/src/python/aerosol_ancil.py --vars field573 --stash 129 -f 1849 BC_hi_1849_2015_ESM1.nc $WORKDIR/ESM_CMIP6/BC_hi_1849_2015_ESM1.anc
python ~mrd599/src/python/aerosol_ancil.py --vars field570 field572 field569 field569_1 --stash 59 127 58 126 -f 1849 scycl_1849_2015_ESM1_v4.nc scycl_1849_2015_ESM1_v4.anc
[...]
```
The resulting ancillary files contain time series for the following fields.
```
BC_hi_1849_2015_ESM1.anc
| stash_name | lbft | lblev | lbfc | lbuser4 | lbnpt | lbrow |
| FRESH SOOT HI LEV EMISS KG/M2/S | 0 | 0 | 573 | 129 | 192 | 145 |
```
```
Bio_1849_2015_ESM1.anc
| stash_name | lbft | lblev | lbfc | lbuser4 | lbnpt | lbrow |
| FRESH BIOMASS SURF EMISS KG/M2/S | 0 | 0 | 574 | 130 | 192 | 145 |
| FRESH BIOMASS HI LEV EMISS KG/M2/S | 0 | 0 | 574 | 131 | 192 | 145 |
```
```
OCFF_1849_2015_ESM1.anc
| stash_name | lbft | lblev | lbfc | lbuser4 | lbnpt | lbrow |
| FRESH OCFF HI LEV EMISS KG/M2/S | 0 | 0 | 573 | 135 | 192 | 145 |
```
```
scycl_1849_2015_ESM1_v4.anc
| stash_name | lbft | lblev | lbfc | lbuser4 | lbnpt | lbrow |
| DIMETHYL SULPHIDE EMISSIONS (ANCIL) | 0 | 0 | 570 | 59 | 192 | 145 |
| AMMONIA GAS EMISSIONS KG/M2/S | 0 | 0 | 572 | 127 | 192 | 145 |
| SULPHUR DIOXIDE EMISSIONS | 0 | 0 | 569 | 58 | 192 | 145 |
| HIGH LEVEL SO2 EMISSIONS KG/M2/S | 0 | 0 | 569 | 126 | 192 | 145 |
```
##### UKESM CMIP7 ancillaries
##### UKESM CMIP6 ancillaries
[MOSRS ancil #627](https://code.metoffice.gov.uk/trac/ancil/ticket/627) describes the initial creation of aerosol emissions ancillaries from CMIP6 forcing datasets. This data was produced by the following two step process. [Subsequent versions of these ancillaries were produced using the `u-aj635` suite.](https://github.com/ACCESS-NRI/CMIP7-Input/wiki/UKCMIP6_Inputs)
1. As per [MOSRS ancil #511](https://code.metoffice.gov.uk/trac/ancil/ticket/511) and the [populate_raw_sources.sh](https://code.metoffice.gov.uk/trac/ancil/browser/contrib/branches/dev/harolddyson/cmip6_utils/populate_raw_sources.sh?rev=3824) shell script , copy the appropriate input4MIPS dataset files into a single directory, `tids/CMIP6_ANCIL/data/raw_sources/AerosolChemistryEmissions/1750_2014`, distinguished only by dated subdirectories.
2. As per [MOSRS ancil #526](https://code.metoffice.gov.uk/trac/ancil/ticket/526), the [ancil contrib AerosolChemistryEmissions](https://code.metoffice.gov.uk/trac/ancil/browser/contrib/trunk/AerosolChemistryEmissions?rev=4045) code, and according to the description in `README.txt`, run the following :
```
1. bin/translate_gfed.py if working with GFED data
2. bin/preproc_emiss_cmip6.py for CEDS or GFED data
3. bin/regrid_ancil.py for each target resolution to perform an area weighted
regrid.
4. If working with aircraft data:
a. bin/construct_altitude_cube.py (once) to generate a suitable target for
vertical interpolation from a vertical levels namelist.
b. bin/add_orography.py to convert CEDS vertical coordinate to altitude for
each species. This is needed for the CEDS data since the coordinate
named 'altitude' is CF 'height' - i.e. vertical distance above the
surface).
b. bin/vertical_interpolation.py for each species being generated.
Details for data translation for GFED data (bin/translate_gfed.py).
1. This multiplies the relevant sector from the percentages file with the data
from the substance file to generate a netCDF file per sector for use with the
preprocessing stage.
Details for preprocessing (bin/preproc_emiss_cmip6.py):
1. Uses the ukca_netcdf.cmip6_sources.py file to identify the sectors (and
potentially fractions) required for each species.
2. Combines the sectors for each species. Note the following:
a: this is the only part where the processing differs for CEDS v1
(i.e. Aircraft) data and CEDS v2 (i.e. surface) data. Requirement is
that sectors are defined by either variables, or a coordinate. GFED
data is an additional special case - here, the data is a single sector
per file, so the requirement is that there is a single species per
source file.
b: if fractions are required (e.g. splitting SO2 into low and high), the
split occurs here.
c: Some metadata handling is performed here: the attributes that define
the origin of the data are preserved, and checked for consistency across
all the files being used for this specied.
3. Converts to 360 day calendar. Note that only CH4 has the data scaled to
account for this: all other species retain the same emission rates on the
different calendar.
4. Adds in UKCA metadata.
5. Writes result.
Details for vertical interpolation (bin/vertical_interpolation.py):
1. Requires a cube to have coordinates in the order (t, z, y, x)
2. Per column, computes the contribution of each source vertical level to each
target vertical level.
3. Per column, applies those contributions to the source data to calculate the
target data.
```
Example of the NetCDF output of ancillary generation, for `CMIP6_ANCIL/data/ancils/n96e/timeseries_1850-2014/AerosolChemistryEmissions/v1/BC_biofuel_1849_2015_time_series.nc`
```
$ ncdump -h /g/data/access/TIDS/CMIP6_ANCIL/data/ancils/n96e/timeseries_1850-2014/AerosolChemistryEmissions/v1/BC_biofuel_1849_2015_time_series.nc | more
netcdf BC_biofuel_1849_2015_time_series {
dimensions:
time = 2004 ;
model_level_number = 1 ;
latitude = 144 ;
longitude = 192 ;
bnds = 2 ;
variables:
double emissions_BC_biofuel(time, model_level_number, latitude, longitude) ;
emissions_BC_biofuel:long_name = "BC biofuel surf emissions" ;
emissions_BC_biofuel:units = "kg m-2 s-1" ;
emissions_BC_biofuel:tracer_name = "BC_biofuel" ;
emissions_BC_biofuel:vertical_scaling = "surface" ;
emissions_BC_biofuel:cell_methods = "time: mean" ;
emissions_BC_biofuel:grid_mapping = "latitude_longitude" ;
int latitude_longitude ;
latitude_longitude:grid_mapping_name = "latitude_longitude" ;
latitude_longitude:longitude_of_prime_meridian = 0. ;
latitude_longitude:earth_radius = 6371229. ;
double time(time) ;
time:axis = "T" ;
time:bounds = "time_bnds" ;
time:units = "days since 1750-01-01 00:00:00" ;
time:standard_name = "time" ;
time:long_name = "time" ;
time:calendar = "360_day" ;
time:calendar_flexible = 1 ;
time:realtopology = "linear" ;
double time_bnds(time, bnds) ;
int model_level_number(model_level_number) ;
model_level_number:axis = "Z" ;
model_level_number:units = "1" ;
model_level_number:standard_name = "model_level_number" ;
model_level_number:positive = "up" ;
double latitude(latitude) ;
latitude:axis = "Y" ;
latitude:bounds = "latitude_bnds" ;
latitude:units = "degrees_north" ;
latitude:standard_name = "latitude" ;
double latitude_bnds(latitude, bnds) ;
double longitude(longitude) ;
longitude:axis = "X" ;
longitude:bounds = "longitude_bnds" ;
longitude:units = "degrees_east" ;
longitude:standard_name = "longitude" ;
double longitude_bnds(longitude, bnds) ;
// global attributes:
:activity_id = "input4MIPs" ;
:dataset_version_number = "2017-05-18" ;
:history = "2017-08-01T15:54:52: regrid_ancil.py -s /group_workspaces/jasmin2/tids/CMIP6_ANCIL/users/hdyson/TestData/Preproc/AerosolChemistryEmissions/BC_biofuel_1849_2015_time_series.nc -g /group_workspaces/jasmin2/tids/UM/ancil/data/namelist/grids/grid.n96e/latest/grid.n96e -o /group_workspaces/jasmin2/tids/CMIP6_ANCIL/users/hdyson/TestData/Results/AerosolChemistryEmissions/BC_biofuel_1849_2015_time_series.nc\n",
"2017-08-01T15:27:49: preproc_emiss_cmip6.py -n BC_biofuel -s /group_workspaces/jasmin2/tids/CMIP6_ANCIL/data/raw_sources/AerosolChemistryEmissions/1750_2014/2017_05-18/BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-2017-05-18_gn_175001-179912.nc /group_workspaces/jasmin2/tids/CMIP6_ANCIL/data/raw_sources/AerosolChemistryEmissions/1750_2014/2017_05-18/BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-2017-05-18_gn_180001-184912.nc /group_workspaces/jasmin2/tids/CMIP6_ANCIL/data/raw_sources/AerosolChemistryEmissions/1750_2014/2017_05-18/BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-2017-05-18_gn_185001-185012.nc /group_workspaces/jasmin2/tids/CMIP6_ANCIL/data/raw_sources/AerosolChemistryEmissions/1750_2014/2017_05-18/BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-2017-05-18_gn_185101-189912.nc /group_workspaces/jasmin2/tids/CMIP6_ANCIL/data/raw_sources/AerosolChemistryEmissions/1750_2014/2017_05-18/BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-2017-05-18_gn_190001-194912.nc /group_workspaces/jasmin2/tids/CMIP6_ANCIL/data/raw_sources/AerosolChemistryEmissions/1750_2014/2017_05-18/BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-2017-05-18_gn_195001-199912.nc /group_workspaces/jasmin2/tids/CMIP6_ANCIL/data/raw_sources/AerosolChemistryEmissions/1750_2014/2017_05-18/BC-em-anthro_input4MIPs_emissions_CMIP_CEDS-2017-05-18_gn_200001-201412.nc -o /group_workspaces/jasmin2/tids/CMIP6_ANCIL/users/hdyson/TestData/Preproc/AerosolChemistryEmissions/BC_biofuel_1849_2015_time_series.nc -b 1849 -e 2015" ;
[...]
```
### Where used: