Manual Osloctm3

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 145

DownloadManual Osloctm3
Open PDF In BrowserView PDF
Oslo CTM3
v1.0
User manual

Amund Søvde Haslerud
CICERO Center for International Climate Research
November 6, 2018

Oslo CTM3 user manual

November 6, 2018

Abstract
This manual contains a description of the Oslo CTM3
and how to set up simulations. Information about emissions, which type of simulation you want do, with which
components etc. are described, but most of all, this manual attempts to document the different processes and the
source code of the Oslo CTM3.

4.4

Contents
1 Oslo CTM3 manual
1.1 Historical background . . . .
1.2 Version numbering . . . . . .
1.3 Oslo CTM3 vs the UCI CTM
1.4 Limitations to Oslo CTM3 . .

.
.
.
.

.
.
.
.

2 Get
2.1
2.2
2.3
2.4

started
How to get the model – SVN . .
User manual . . . . . . . . . . . .
Source code directory . . . . . .
Model grid . . . . . . . . . . . .
2.4.1 Degraded resolution . . .
2.5 Oslo CTM3 vs Oslo CTM2 . . .
2.6 Variable names . . . . . . . . . .
2.7 Setting up the model . . . . . . .
2.7.1 Makefile . . . . . . . . . .
2.7.2 Main program – pmain .
2.7.3 Input file – LxxCTM.inp .
2.7.4 Tracer list – tracer_list.d
2.7.5 Emissions
list
Ltracer_emis_xxxx.inp .
2.7.6 Meteorological data . . .
2.7.7 Restart file . . . . . . . .
2.7.8 Other input data . . . . .
2.7.9 Surface CH4 . . . . . . .
2.7.10 Transport options . . . .
2.8 Compiling . . . . . . . . . . . . .
2.9 Running the model . . . . . . . .
2.9.1 Model crashes . . . . . . .
2.10 Publishing & documenting . . . .
2.10.1 Publishing in journals . .
2.10.2 Documenting changes . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

5
5
5
5
6
6
6
6
6
6
7
7
8
8
9
9
9
10

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
–
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .

10
11
11
12
12
13
13
13
13
13
13
13

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

14
14
14
14
14
14
14
14
15
15

4 Program structure
4.1 Main structure – pmain.f90 . . . . . .
4.1.1 Main loops . . . . . . . . . . .
4.1.2 Sub-stepping loop . . . . . . .
4.1.3 Internal chemistry loop . . . .
4.1.4 Important notes . . . . . . . .
4.2 The C-code preprocessing system . . .
4.3 Parallelisation of the Oslo CTM3 . . .
4.3.1 OpenMP . . . . . . . . . . . .
4.3.2 Parallel IJ-blocks (MP-blocks)
4.3.3 Parallel layers . . . . . . . . . .
4.3.4 OpenMP and advection . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

15
15
15
16
16
16
17
17
17
17
18
18

3 Source code introduction
3.1 The core source . . . . . . .
3.1.1 The parameter files .
3.1.2 Global variable files
3.1.3 Main program . . .
3.1.4 Core diagnostics . .
3.2 The Oslo core source . . . .
3.2.1 Important variables
3.2.2 Application variables
3.2.3 Dummies . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

2

4.3.5 Writing parallelized code . . . . .
4.3.6 How many CPUs and IJ-blocks? .
Module based programming . . . . . . . .

18
18
20

5 Programming guidelines
5.1 Comment your code! . . . . . . . . . . . .
5.2 Change existing code? . . . . . . . . . . .
5.3 Accessing variables in Fortran90 free format
5.4 Adding a new subroutine . . . . . . . . .
5.5 Adding new components . . . . . . . . . .
5.6 Efficient code . . . . . . . . . . . . . . . .
5.7 Unit conversion . . . . . . . . . . . . . . .
5.7.1 Mass to concentration . . . . . . .
5.7.2 Mass to mixing ratio . . . . . . . .
5.7.3 vmr to mmr . . . . . . . . . . . . .
5.7.4 Concentration to mixing ratio . . .
5.8 Keep pmain clean . . . . . . . . . . . . . .
5.9 Precision of numbers . . . . . . . . . . . .
5.10 Stay away from C-code . . . . . . . . . . .
5.11 Looping in Fortran . . . . . . . . . . . . .
5.12 Implicit none . . . . . . . . . . . . . . . .

20
20
20
20
20
20
21
21
21
21
21
21
22
22
22
22
23

6 Transport
6.1 Secondary Order Moments . . . .
6.2 Advection . . . . . . . . . . . . .
6.2.1 Horizontal advection . . .
6.2.2 Vertical advection . . . .
6.3 Convection . . . . . . . . . . . .
6.4 Boundary layer mixing . . . . . .
6.4.1 NBLX=1: Prather scheme
6.4.2 NBLX=5: Holtslag . . . .
6.4.3 Other schemes . . . . . .

23
23
23
23
23
24
25
25
25
25

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

7 Wet and dry scavenging
7.1 Wet scavenging . . . . . . . . . . . . . . .
7.1.1 Large scale scavenging . . . . . . .
7.1.2 Convective scavenging . . . . . . .
7.1.3 Theory on Henry’s law . . . . . . .
7.1.4 Hard-coded Henry coefficients . . .
7.2 Dry deposition . . . . . . . . . . . . . . .
7.2.1 Historical note . . . . . . . . . . .
7.2.2 The new dry deposition scheme . .
7.2.3 Technical description:
gaseous
species . . . . . . . . . . . . . . . .
7.2.4 Technical description: aerosols . .
7.2.5 Soil uptake of CH4 . . . . . . . . .
7.2.6 Inside or outside chemistry? . . . .
7.2.7 UCI dry deposition . . . . . . . . .
7.3 Uptake on aerosols . . . . . . . . . . . . .

25
25
26
26
27
28
28
28
29

8 Emissions
8.1 Emissions treatment . . . . . . . . . . . .
8.1.1 Emissions in chemistry . . . . . . .
8.1.2 Emissions as a process . . . . . . .
8.2 Important about NOx . . . . . . . . . . .
8.3 How to set up emissions . . . . . . . . . .
8.4 Emission datasets . . . . . . . . . . . . . .
8.4.1 Monthly & annual emissions . . .
8.4.2 Diurnal scaling . . . . . . . . . . .
8.4.3 Vertical distribution of 2D emissions
8.4.4 Short term variations . . . . . . .
8.5 Forest fires emissions . . . . . . . . . . . .
8.6 Biogenic emissions: MEGAN . . . . . . .
8.6.1 Modifications to MEGAN code . .
8.6.2 MEGAN total emissions . . . . . .
8.7 Aircraft emissions . . . . . . . . . . . . . .
8.8 Lightning emissions . . . . . . . . . . . . .
8.8.1 Horizontal distribution – OAS2015

34
34
34
34
34
34
35
36
36
37
37
38
39
39
40
40
40
40

29
33
33
33
34
34

Oslo CTM3 user manual

8.8.2 Horizontal distribution –
8.8.3 Horizontal distribution –
8.8.4 Horizontal distribution –
8.8.5 Horizontal distribution –
8.8.6 Vertical distribution . .
8.8.7 Lightning scaling factors
8.9 CH4 emissions . . . . . . . . .
8.10 Emission diagnoses . . . . . . .
8.11 Pre-defined datasets . . . . . .
8.11.1 CEDS . . . . . . . . . .
8.11.2 ECLIPSE . . . . . . . .
8.11.3 EDGAR v4.2 . . . . . .
8.11.4 Lamarque/IPCC . . . .
8.11.5 HTAP . . . . . . . . . .
8.11.6 RETRO . . . . . . . . .
8.11.7 POET . . . . . . . . . .
8.11.8 CH4 emissions Bousquet
8.11.9 Volcanic emissions . . .
8.11.10 Soil emissions . . . . . .
8.11.11 Biomass burning . . . .

November 6, 2018

GMD2012
AP2002 .
UCI2015
other . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .

9 QSSA chemical integrator
9.1 Long-lived species . . . . . . . . . . . . .
9.2 Short-lived species . . . . . . . . . . . . .
9.3 Species of intermediate lifetime . . . . . .

42
43
43
43
43
43
44
44
44
44
45
45
45
45
45
45
45
45
45
45
45
46
46
46

10 Tropospheric chemistry
46
10.1 Non-transported species . . . . . . . . . . 46
10.2 Tropospheric domain . . . . . . . . . . . . 46
10.3 Without stratospheric chemistry; O3 ,
NOx and HNO3 . . . . . . . . . . . . . . . 46
10.4 Box version of tropospheric chemistry code 48
11 Stratospheric chemistry
11.1 Technical information . . . . . . . . . .
11.2 Stratospheric H2 O . . . . . . . . . . . .
11.3 Microphysics . . . . . . . . . . . . . . .
11.4 Heterogeneous chemistry . . . . . . . . .
11.5 Input files needed . . . . . . . . . . . . .
11.6 Upper boundary / Chemistry in LPAR?
11.7 Linoz . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

48
48
48
49
50
50
50
50

12 Photochemistry
12.1 Solar flux . . . . . . . . . . . . .
12.2 Cloud cover . . . . . . . . . . . .
12.2.1 Average cloud cover . . .
12.2.2 Random cloud cover . . .
12.3 Aerosols in fast-JX . . . . . . . .
12.4 Generating cross sections . . . .
12.5 Generating scattering properties
12.5.1 FJ_phase . . . . . . . . .
12.5.2 Mishchenko spher.f . . . .

.
.
.
.
.
.
.
.
.

50
51
51
51
51
52
52
52
53
54

13 Sulphur module
13.1 Sulphur emissions . . . . . . . . . . . . . .
13.2 SO4 scattering and absorption . . . . . . .

54
55
55

14 Black carbon and organic matter
14.1 BC/OM emissions . . . . . . . . .
14.2 BC/OM deposition . . . . . . . . .
14.3 BC/OM wet scavenging . . . . . .
14.4 BC/OM scattering and absorption
14.5 BC on snow – BCsnow . . . . . . .
14.6 Secondary organic aerosols . . . . .

.
.
.
.
.
.

55
55
56
56
56
56
57

15 Mineral dust
15.1 Get DUST running . . . . . . . . . . . . .
15.2 Dust size bins . . . . . . . . . . . . . . . .

57
57
58

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

3

15.3 Dust sources . . . . . . . . . . .
15.3.1 Input files needed . . . . .
15.3.2 Technical . . . . . . . . .
15.3.3 Wind speed variability . .
15.4 Dust sinks . . . . . . . . . . . . .
15.4.1 Gravitational settling . .
15.4.2 Wet scavenging . . . . . .
15.5 DUST scattering and absorption
15.6 Things to watch out for . . . . .
15.7 Dust budgets . . . . . . . . . . .
15.8 Additional notes . . . . . . . . .
15.9 Into the future . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

58
58
58
59
59
59
59
59
60
60
60
60

16 Sea salt
16.1 Sea salt production . . . . . . . .
16.2 Technical information . . . . . .
16.2.1 Wet scavenging . . . . . .
16.3 SALT scattering and absorption .
16.4 Salt budgets . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

60
60
61
61
61
61

17 Nitrate
17.1 Nitrate physics – modes . . .
17.2 Nitrate tracers . . . . . . . .
17.3 Sea salt in the nitrate model
17.4 Nitrate emissions . . . . . . .
17.5 Remaining problems . . . . .
17.6 Box version . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

61
61
62
62
62
62
63

.
.
.
.
.
.

.
.
.
.
.
.

18 M7

63

19 Secondary organic aerosols (SOA)
19.1 SOA precursor tracers . . . . . . . . . . .
19.2 SOA tracers . . . . . . . . . . . . . . . . .
19.3 SOA sources and sinks . . . . . . . . . . .

63
63
63
63

20 Physics
20.1 Tropopause height . . . . . . . . . . .
20.1.1 PVU based tropopause . . . . .
20.1.2 Lapse rate based tropopause .
20.1.3 Lapse rate based on E90 tracer
20.2 Potential vorticity . . . . . . . . . . .
20.3 Equivalent latitude . . . . . . . . . . .
20.4 Boundary layer height . . . . . . . . .
20.5 Land surface types . . . . . . . . . . .
20.6 Leaf area index . . . . . . . . . . . . .
20.7 Roughness length . . . . . . . . . . . .

64
64
64
64
64
64
64
65
65
65
66

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

21 Diagnostics
21.1 Core diagnostics . . . . . . . . . . . . . .
21.1.1 3D averages . . . . . . . . . . . . .
21.1.2 Process diagnostics / budget diagnostics . . . . . . . . . . . . . . . .
21.1.3 e90 tracer . . . . . . . . . . . . . .
21.1.4 Stratosphere-Troposphere-Exchange
21.2 Oslo CTM3 diagnostics . . . . . . . . . .
21.2.1 Chemical production and loss . . .
21.2.2 CH4 and N2 O burdens and lifetimes
21.2.3 OH and CH4 lifetimes . . . . . . .
21.2.4 Atmospheric burdens . . . . . . . .
21.2.5 Atmospheric lifetimes . . . . . . .
21.2.6 Time series of vertical profiles . . .
21.2.7 Satellite vertical profiles . . . . . .
21.2.8 O3 column . . . . . . . . . . . . .
21.2.9 3-hourly output . . . . . . . . . . .
21.2.10 Snapshots on θ-levels . . . . . . . .
21.2.11 Emission tendencies . . . . . . . .

66
66
66

A Description of model files

71

67
67
67
69
69
69
69
69
69
69
70
70
71
71
71

Oslo CTM3 user manual

A.1 UCI core source files . . . . . . . . . .
A.1.1 cmn_precision.f90 . . . . . . .
A.1.2 cmn_size.F90 . . . . . . . . . .
A.1.3 cmn_parameters.f90 . . . . . .
A.1.4 cmn_ctm.f90 . . . . . . . . . .
A.1.5 cmn_chem.f90 . . . . . . . . .
A.1.6 cmn_diag.f90 . . . . . . . . . .
A.1.7 cmn_fjx.f90 . . . . . . . . . . .
A.1.8 cmn_met.f90 . . . . . . . . . .
A.1.9 cmn_sfc.f90 . . . . . . . . . . .
A.1.10 averages.f90 . . . . . . . . . . .
A.1.11 budgets.f90 . . . . . . . . . . .
A.1.12 cloudjx.f90 . . . . . . . . . . .
A.1.13 convection.f90 . . . . . . . . . .
A.1.14 fastjx.f90 . . . . . . . . . . . .
A.1.15 grid.f90 . . . . . . . . . . . . .
A.1.16 initialize.f90 . . . . . . . . . . .
A.1.17 lightning.f90 . . . . . . . . . . .
A.1.18 metdata_ecmwf.f90 . . . . . . .
A.1.19 metdata_ecmwf_uioformat.f90
A.1.20 omp.f90 . . . . . . . . . . . . .
A.1.21 pbl_mixing.f90 . . . . . . . . .
A.1.22 pmain.f90 . . . . . . . . . . . .
A.1.23 regridding.f90 . . . . . . . . . .
A.1.24 source_uci.f90 . . . . . . . . .
A.1.25 scavenging_largescale_uci.f90 .
A.1.26 spectral_routines.f . . . . . . .
A.1.27 steflux.f90 . . . . . . . . . . . .
A.1.28 stt_save_load.f90 . . . . . . .
A.1.29 utilities.f90 . . . . . . . . . . .
A.1.30 p-cloud2.f . . . . . . . . . . . .
A.1.31 p-dyn0.f . . . . . . . . . . . . .
A.1.32 p-dyn0-v2.f . . . . . . . . . . .
A.1.33 p-dyn2.f . . . . . . . . . . . . .
A.1.34 p-dyn2-v2.f . . . . . . . . . . .
A.1.35 p-linoz.f . . . . . . . . . . . . .
A.1.36 p-vect3.f . . . . . . . . . . . . .
A.1.37 p-phot_oc.f . . . . . . . . . . .
A.2 Oslo source files . . . . . . . . . . . . .
A.2.1 cmn_oslo.f90 . . . . . . . . . .
A.2.2 aerosols2fastjx.f90 . . . . . . .
A.2.3 bcoc_oslo.f90 . . . . . . . . . .
A.2.4 caribic2.f90 . . . . . . . . . . .
A.2.5 ch4routines.f90 . . . . . . . . .
A.2.6 chem_oslo.f90 . . . . . . . . .
A.2.7 chem_oslo_rates.f90 . . . . . .
A.2.8 cnv_oslo.f90 . . . . . . . . . .
A.2.9 dateconv.f90 . . . . . . . . . . .
A.2.10 drydeposition_oslo.f90 . . . . .
A.2.11 diagnostics_general.f90 . . . .
A.2.12 diagnostics_scavenging.f90 . .
A.2.13 dust_oslo.f90 . . . . . . . . . .
A.2.14 emisdep4chem_oslo.f90 . . . .
A.2.15 emissions_aircraft.f90 . . . . .
A.2.16 emissions_megan.f90 . . . . .
A.2.17 emissions_ocean.f90 . . . . . .
A.2.18 emissions_oslo.f90 . . . . . . .
A.2.19 emissions_volcanoes.f90 . . . .
A.2.20 emisutils_oslo.f90 . . . . . . .
A.2.21 eqsam_v03d.f90 . . . . . . . . .
A.2.22 fallingaerosols.f90 . . . . . . . .
A.2.23 gmdump3hrs.f90 . . . . . . . .
A.2.24 hippo.f90 . . . . . . . . . . . .
A.2.25 input_oslo.f90 . . . . . . . . .
A.2.26 main_oslo.f90 . . . . . . . . .
A.2.27 ncutils.f90 . . . . . . . . . . . .
A.2.28 nitrate.f90 . . . . . . . . . . . .

November 6, 2018

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

A.2.29 pchemc_ij.f90 . . . . . . . . .
A.2.30 pchemc_str_ij.f90 . . . . . .
A.2.31 physics_oslo.f90 . . . . . . .
A.2.32 psc_microphysics.f90 . . . . .
A.2.33 qssa_integrator.f90 . . . . . .
A.2.34 satelliteprofiles_mls.f90 . . .
A.2.35 seasalt.f90 . . . . . . . . . . .
A.2.36 seasaltprod.f90 . . . . . . . .
A.2.37 soa_oslo.f90 . . . . . . . . .
A.2.38 strat_aerosols.f90 . . . . . .
A.2.39 strat_h2o.f90 . . . . . . . . .
A.2.40 strat_loss.f90 . . . . . . . . .
A.2.41 strat_o3noy_clim.f90 . . . .
A.2.42 stratchem_oslo.f90 . . . . . .
A.2.43 sulphur_oslo.f90 . . . . . . .
A.2.44 troccinox_xxx.f90 . . . . . . .
A.2.45 tropchem_oslo.f90 . . . . . .
A.2.46 utilities_oslo.f90 . . . . . . .
A.2.47 verticalprofiles_stations2.f90
A.3 DUST source code . . . . . . . . . .
A.4 Oslo dummy files . . . . . . . . . . .

71
71
71
71
71
71
72
72
72
72
72
72
73
73
73
73
73
73
73
74
74
74
74
74
74
74
74
75
75
75
76
76
76
76
76
76
76
76
77
77
78
78
78
78
79
79
79
79
79
79
80
80
80
81
81
82
82
82
82
83
83
83
83
83
83
83
84

B SVN – Subversion
B.1 Repository structure . . . .
B.2 Checkout . . . . . . . . . .
B.3 Status . . . . . . . . . . . .
B.4 Conflicts & resolve . . . . .
B.5 Adding a file . . . . . . . .
B.6 Deleting a file . . . . . . . .
B.7 Committing changes . . . .
B.8 Go back to previous version
B.9 Diff . . . . . . . . . . . . . .
B.10 Log . . . . . . . . . . . . . .
B.11 Help . . . . . . . . . . . . .
B.12 Branching . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

C Technical notes
C.1 AIR mass . . . . . . . . . . . .
C.2 Calculation of layer heights . .
C.3 Calculation of relative humidity
C.4 How Makefile works . . . . . .
C.5 DUST map . . . . . . . . . . .
C.5.1 Libraries needed to run
module . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

84
84
84
84
85
85
85
85
85
85
85
86
86
86
86
86
86
86
87
87
87

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

87
87
87
88
88
88
88
89
89
89
89
89
89

. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
the map
. . . . . .

D Future work/revisions
D.1 Optimisation . . . . . . . . . . . . . .
D.2 Dry deposition update . . . . . . . . .
D.3 New chemistry solver . . . . . . . . . .
D.4 Uptake and conversion on aerosols . .
D.5 J-values . . . . . . . . . . . . . . . . .
D.6 Aerosol sedimentation . . . . . . . . .
D.7 PSC microphysics . . . . . . . . . . . .
D.8 Upper and lower boundary conditions
D.9 Lightning factors . . . . . . . . . . . .

4

89
89
90
90
90
90
91

.
.
.
.
.
.
.
.
.

91
91
91
91
91
91
91
91
92
92

E Compiler options and optimisation
E.1 Linux . . . . . . . . . . . . . . . . . . . .
E.1.1 intel – ifort . . . . . . . . . . . . .
E.1.2 portland – pgf90 . . . . . . . . . .

92
92
92
92

F HPC
F.1 slurm interactively . . . . . . . . . . . . .
F.2 Checking your run . . . . . . . . . . . . .

93
93
94

G External libraries
G.1 netCDF . . . . . . . . . . . . . . . . . . .
G.2 HDF . . . . . . . . . . . . . . . . . . . . .

94
94
94

.
.
.
.
.
.
.
.
.

Oslo CTM3 user manual

November 6, 2018

H Meteorological data
H.1 ECMWF meteorological data . . . . . .
H.1.1 File format . . . . . . . . . . . .
H.1.2 Available fields . . . . . . . . . .
H.1.3 Producing openIFS data . . . . .
H.1.4 Producing IFS data . . . . . . .
H.2 Meteorological fields in the Oslo CTM3
H.2.1 Convective mass flux . . . . . . .
H.3 GCM meteorological data . . . . . . . .
H.3.1 Read-in routine . . . . . . . . . .
I

.
.
.
.
.
.
.
.
.

Trouble shooting

1.1

94
95
95
95
95
96
97
97
97
97

Historical background

Oslo CTM3 is developed at the Department of Geosciences at the University of Oslo (UiO), and later at
the CICERO Center for International Climate Research.
It is described by Søvde et al. (2012) and is an updated
version of the Oslo CTM2, which was based on a CTM
from University of California, Irvine (UCI), developed
by Michael Prather & Xin Zhu (January 1996, p-code
1.0/96), and where the chemical modules developed at
the UiO were included.

97

J Chemical reactions
J.1 Photolytic reactions . . . . . . .
J.2 Bi-molecular reactions . . . . . .
J.3 Tri-molecular reactions . . . . . .
J.4 Instantaneous reactions . . . . .
J.5 Thermal decomposition reactions
J.6 Heterogeneous reactions . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

98
98
99
102
102
102
102

K Peer-reviewed papers
K.1 2017 – 6 papers . . . . .
K.2 2016 – 11 papers . . . .
K.3 2015 – 5 papers . . . . .
K.4 2014 – 11 papers . . . .
K.5 2013 – 20 papers . . . .
K.6 2012 – 8 papers . . . . .
K.7 2011 – 16 papers . . . .
K.8 2010 – 4 papers . . . . .
K.9 2009 – 13 papers . . . .
K.10 2008 – 4 papers . . . . .
K.11 2007 – 10 papers . . . .
K.12 2006 – 13 papers . . . .
K.13 2005 – 5 papers . . . . .
K.14 2004 – 4 papers . . . . .
K.15 2003 – 10 papers . . . .
K.16 2002 – 4 papers . . . . .
K.17 2001 – 4 papers . . . . .
K.18 Oslo CTM1 – 12 papers

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

103
103
103
103
104
104
105
105
105
105
106
106
106
107
107
107
107
107
108

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

L Contact information

108

Acknowledgements

108

References

108

Index

132

In roughly a decade the two models diverged substantially; the Oslo CTM2 grew with additional chemistry/aerosol packages, while the UCI group developed
and improved the efficiency of the transport. In order to
save CPU hour requirements, the UCI group (Prather et
al.) updated their CTM to improve the structure, parallelisation and transport in 2007. Due to the large CPU
requirements for the Oslo CTM2, it was decided to implement the new UCI structure in the Oslo model, earning
the name Oslo CTM3.
By the end of 2007, the Oslo CTM2 was very messy, so
the update of the core structure also initiated a clean-up
of the Oslo CTM2 code.

1.2

Version numbering

The Oslo CTM3 documented by Søvde et al. (2012) is to
be considered version v0.1, while the current version is
v1.0. Version numbering is not directly related to repository revision numbers, however, in the Oslo CTM3 repository, the version documented by Søvde et al. (2012) was
r143.
There are numerous small changes from version v0.1 to
v1.0, e.g. that the aerosol packages have undergone some
revisions, and the scavenging tables have been modified.

1.3

Oslo CTM3 vs the UCI CTM

During the first five years of Oslo CTM3 development,
the basic idea of the Oslo CTM3 was to keep the UCI
model core untouched, only adding modules we want and
thereby staying away from interfering too much with the
core.

The Oslo CTM3 is a three dimensional global chemical
transport model (CTM), and this manual explains how
to use it. This manual also describes the model, and is
meant as a thorough description of the model.

However, in 2015, the UCI CTM had already diverged
some bit from the starting point of Oslo CTM3, being partly rewritten to use modules instead of common
blocks. So I decided to rewrite the Oslo CTM3 into Fortran90. This was done for all files except the transport
routines, which are the basis for the transport model.
Keeping those intact may be wise in case of future UCI
updates. However, all the common blocks are now gone.

Generally, the use of the model is described in Section 2–
5, while the rest is describing the different processes and
the model code.

The model driver (pmain) is kept clean and short; the
Oslo CTM2 philosophy that all goes into pmain is left
for good!

The Oslo CTM3 is available through a repository, as will
be explained in the coming sections.

So far the Oslo CTM3 changes have been large enough
so it is not possible to use the UCI chemistry just by
operating a switch. The original UCI code files are available through the UCI group, and will not be available in

1

Oslo CTM3 manual

First, some starting info about the Oslo CTM3.

5

Oslo CTM3 user manual

November 6, 2018

Fetching the code
The code is located in a repository, and you get it by
typing (in shell scripts, ’\’ allows you to write a command
on several lines; you should skip character that and write
everything on one line):

CTM3. I do, however, have their older codes if update
history is needed.

1.4

Limitations to Oslo CTM3

svn checkout \
svn+ssh://svn.uio.no/svnroot/osloctm3/ctm3f90 \


Oslo CTM3 is a good tool to study the atmospheric processes. However, care should be taken when comparing
model results with observations. Even a high resolution
in the Oslo CTM3 is actually fairly coarse, so a perfect fit
with observations, especially close to the Earth surface,
should not be expected.

After doing this, you have a copy of the code in the directory you specified. In the .svn directory the original
revision files are also available, but you will not use those
directly; .svn is for SVN to use.

The Oslo CTM3 is primarily set up to study current meteorology, so when using it in pre-industrial conditions
you have to make assumptions.

2

If you don’t specify the name of directory where the
code will be copied to, it will get the repository name,
i.e. ctm3f90.

Get started

Update an existing code
If one of the experienced users tell you to update your
code, just go to your directory and execute the command:

The Oslo CTM3 is currently available through a SVN
repository (see Section 2.1), and to get access to the
model you have to have a user account at the Department of Geosciences or at CICERO, and you have to be
member of the unix group gf-ozone. This will change
eventually.

svn update
Note that if you have modified a file that needs update,
you may experience a conflict, i.e. SVN does not understand how to merge the changes. If you are unfamiliar
with this, ask the experienced users.

I have planned to eventually make the Oslo CTM3 open
source, but that is yet for the future.
When you are well into the model, you may need
some utilities or programs (for generating e.g. input
files). Such CTM-files may not be part of the SVN,
and may otherwise be located at /div/amoc/d4-4/osloctm/archive_ctm/.

2.2

The Oslo CTM3 user manual (this document) is available as a pdf file (manual_osloctm3.pdf) in the model
directory. The LATEX source code is located in a separate
repository.

Part of the SVN, though, are some tools for post processing. More of this later.
In this Section you will find a short description of how
to download the model from the SVN repository, a short
model overview and how to get it running.

2.1

User manual

2.3

Source code directory

When you have downloaded the source code, you find
that it contains several files and some directories. The
transport source codes, i.e. the UCI heritage of the model,
are located at the top level of the directory. Most of
the files have the extension .f90, except for a few of the
transport subroutines which have extension .f.

How to get the model – SVN

The Oslo CTM3 is available through the UiO central subversion system (SVN). To access the code you have to be
member of the group gf-ozone.
SVN is a version control system, and if you are unfamiliar
with it, the SVN book offers a fairly good introduction
to it: http://svnbook.red-bean.com/.

All the specific Oslo chemistry/physics files are put in the
directory OSLO. You can find more about the directory
structure in Appendix B.1, and in Appendix A you can
find more information on the files.

To use SVN you need to have SVN installed/loaded. Contact your IT services if you need help on this.

2.4

Important SVN commands are checkout, add, delete,
commit, status, diff, resolve (for versions prior to 1.5
it is called resolved), merge.

Model grid

As already noted, the Oslo CTM3 is a global model. It
is divided into grid boxes to cover the atmosphere and
hence has a certain resolution. When you specify a resolution, there are three numbers to keep in mind, at least
for ECMWF meteorology data. The truncation number
is given by ’T’ (e.g. T159), indicating the spectral resolution of the native model (e.g. ECMWF IFS). The vertical resolution is given by ’L’ (L60). A forecast model

You will find more about SVN in the SVN book, and
a short summary in Appendix B. The repository structure is described in Section B.1, where you will also see
that there also are some plotting utilities and other tools
available.

6

Oslo CTM3 user manual

November 6, 2018

can have both gridded data and spectral data, in different resolutions, so to define the gridded data there is the
’N’ number (N80). At ECMWF the T and N numbers
are closely connected. See Appendix H for more.

The height levels above the surface (i.e. for the vertical
range 2:LPAR+1 of ZOFLE) are calculated from the thickness of each layer, based on temperature (T ), specific
humidity (q) and pressure at grid box edges (pb ).

In the Oslo CTM3 the spatial resolution is controlled by
the following parameters:
• IPAR: Number of grid boxes in the zonal (east-west)
direction. IPARW is the zonal resolution of the meteorological input data and differs from IPAR if you
run with “degraded” horizontal resolution (see Section 2.4.1 for more on degradation of resolution).
• JPAR: Number of grid boxes in the meridional
(north-south) direction. JPARW is the meridional resolution of the meteorological input data and differs
from JPAR if you run with degraded horizontal resolution (see Section 2.4.1 for more on degradation of
resolution).
• LPAR: Number of grid boxes in the vertical. If you
collapse layers, the vertical resolution of the meteorological input data is LPARW (see Section 2.4.1 for
more on collapsing layers).

∆Z(L)

· log

2.4.1

box
box

Also described in Section 2.7.1.

2.5

box

The structure of the model has changed substantially
since Oslo CTM2. In the Oslo CTM2 all tracers were located in the tracer array STT, whereas in Oslo CTM3 only
the transported tracers are in STT. Therefore also MTC is
now only for the transported species. Other variables
have also been changed to separate the transported and
non-transported species. The non-transported species
are stored in XSTT, and will be further explained in Section 3.
The parallel structure has changed, and most processes
(chemistry, boundary layer mixing, emissions, etc.) are
now integrated columnwise instead of through a latitude
band. Horizontal transport, however, is calculated layer
by layer (see Section 6). Section 3 describes the source
code more closely.

(2)

Input files and diagnostics
The diagnostics have changed, as well as the names of the
input files. The input files are described in Section 2.7,
while diagnostics are described in Section 21.

The height of grid box bottoms are given by the array
ZOFLE(LPAR+1,IPAR,JPAR). Surface values of this variable act as topography, and are calculated from a 2D
annual mean surface pressure field pm :



1013.25hPa
pm

Oslo CTM3 vs Oslo CTM2

Skip this part if you are not familiar with Oslo CTM2.

The grid box center pressure of a level L is halfway between the edges of the box:

Zs = 16000 log 10

Degraded resolution

box

(1)

1
[ηa (L) + ηa (L + 1)
2
+ (ηb (L) + ηb (L + 1)) ∗ ps ]

(4)

A newer feature to Oslo CTM3 is that the horizontal resolution may be degraded, combining e.g. 4 boxes into one.
This means that the model can read e.g. 1.125◦ x 1.125◦
meteorological data, and convert them to 2.25◦ x 2.25◦
resolution, but still using the native resolution for calculating cloud properties. The Makefile settings are:
• HWINDOW=HORIGINAL: Use native resolution.
• HWINDOW=HTWO: Combine 2 x 2 native boxes.
• HWINDOW=HFOUR: Combine 4 x 4 native boxes.

where ps is surface pressure in hPa and ηa
(ETAA(LPAR+1), units of hPa) and ηb (ETAB(LPAR+1),
unitless) are hybrid sigma coordinates. If you collapse
layers, the original sigma coordinates are given by
ETAAW(LPARW+1)) and ETABW(LPARW+1).

=



The Oslo CTM3 can be run with lower resolution than
the meteorological input data. It is possible to collapse as
many layers as you like, however, Makefile allows for only
one automatic set-up, collapsing layer 1–3 and 4–5 into
two layers. See Section 2.7.1 for Makefile user settings.
While this is standard treatment by the UCI group, the
Oslo CTM3 has so far not been used in this fashion.

The vertical grid, however, is not fixed throughout
a model run. It depends on the meteorological input
data, more specifically the pressure. For a model layer L,
the pressure at the grid box bottom is given by

pc (L)

pb (L + 1)
pb (L)

Although Zs is the topography in meters, this quantity is
mainly used for diagnostics. Physical processes generally
use ZOFLE to find layer thickness, while it is the surface
pressure that defines the topography. See Appendix C.2
for some more info.

And grid center latitudes:
• YGRD(JPAR): Radians.
• YDGRD(JPAR): Degrees.

pb (L) = ηa (L) + ηb (L) ps

−29.27T (L) [1 − 0.6q(L)]



There are several variables describing the grid. The horizontal grid is set up at model start, with grid center
longitudes defined in:
• XGRD(IPAR): Radians.
• XDGRD(IPAR): Degrees.

The grid edges are defined similarly by:
• XEDG(IPAR+1): Eastern edge longitude of grid
(radians).
• XDEDG(IPAR+1): Eastern edge longitude of grid
(degrees).
• YEDG(JPAR+1): Southern edge latitude of grid
(radians).
• YDEDG(JPAR+1): Southern edge latitude of grid
(degrees).

=



C-code
The C-coding in the Oslo CTM2 has been removed, and

(3)

7

Oslo CTM3 user manual

November 6, 2018

replaced with dummy calls and logical switches. This will
be explained thoroughly in this manual.

from Oslo CTM2 to Oslo CTM3. The new variable names
are more self-explaining.

Changes in chemistry
There are some changes in the tracer list since
Oslo CTM2:
• Tracer number 2 (NOX), the sum of NOx components (NO, NO2 , NO3 , 2xN2 O5 +PAN) is only set
in the tropospheric chemistry for stability. There is
no need to transport NOX since all its components
are transported.
• Tracer number 3 (NOZ), the sum of NO3 and N2 O5 is
removed. It is now set in the tropospheric chemistry,
as was done already in the stratospheric chemistry.
NOZ is treated in chemistry to create stability, and
does not need to be transported as long as NO3 and
N2 O5 are transported.
• Tracer number 26 (CH2O2OH) was transported but
not used. It is removed.
• Tracer number 45 (O3NO) is set inside the tropospheric chemistry from O3 and NO, also for stability.
It was not transported, not used in the stratosphere,
and the diagnose was not useful, therefore it was removed.
• Tracer number 47 (DMS) is not in use in the tropospheric chemistry, and is removed. It is used in the
sulphur scheme where it has a new number (which
is 71).

A good example of a changed variable name is the
tropopause level, which is now called LMTROP, since it is
the “LM of the troposphere”. In the old model its name
was LMSTRT, which was somewhat misleading.
Another is the max number of component IDs, which has
been changed from IREPMX to TRACER_ID_MAX.
The tracer mapping from chemical id to transport number has changed name from MTC to trsp_idx. Similarly,
the mapping the other way is changed from IDMTC to
chem_idx.
TMMVV, the conversion factor from mass mixing ratio
to volume mixing ratio, is called TMASSMIX2MOLMIX.
There are also mappings the other way, namely
TMOLMIX2MASSMIX.
Old variable names are not listed in the index list, so
if you wonder where to find the old variable, ask the
experienced users.
Other differences
In the Oslo CTM2 the whole tracer array (STT) was often
converted from one unit to another unit, just to access
a few tracers in the correct units. This is no longer possible, and should be avoided.

NPAR
In contrast to the Oslo CTM2 the STT now only handles
the transported species, given by NPAR. Non-transported
species are treated as a separate array XSTT, of which
there are NOTRPAR. See Section 3.1 for more on this.

Other differences are noted when necessary in the other
sections.

2.6

Convective activity
The convectivity files used for lightning emission in
Oslo CTM2 are not needed in the Oslo CTM3. This
is because the lightning routine is now more consistent
with the meteorological data, not using the Price et al.
(1997) dataset.

Variable names

Most of the model variable names referred to in this manual are listed in the index list at the end of the manual,
under “variables”. If you cannot find the variable names
there, they are probably not mentioned here, and you
have to look in the model files. A good place to start
is the global variables in the files called cmn_* (cmn for
common files instead of common blocks).

In the Oslo CTM3 we calculate a somewhat similar convective activity at each time step and scale it against
a climatological mean. This mean is specific for a certain meteorological dataset, and is sensitive for resolution. An important difference to the Oslo CTM2 is that
the Oslo CTM2 divided the annual amount following the
monthly totals of Price et al. (1997), whereas Oslo CTM3
more physically follows only the meteorological conditions. It could be noted that Murray et al. (2012) argue that Northern Hemisphere summer lightning produce
more NOx than elsewhere and at other seasons, but this
is not included in Oslo CTM3. See Section 8.8 for more
on lightning emissions.

If you look for a variable and do not find it in the indexed
list, you may also do a text search in this document; the
variable may not have been included in the index list.

2.7

Setting up the model

This section will explain the steps to get the model running, and will describe some important files.
You
•
•
•

fast-JX
The Fast-J2 (Bian and Prather, 2002) applied in the
Oslo CTM2 has been replaced by fast-JX in the
Oslo CTM3. There are some differences in the photochemistry, e.g. slight differences in cross sections.

•
•

Source code documentation
In the process of cleaning up the Oslo code, also the
source code comments have been revised and improved.
See Section 5 for programming guidelines.

•

Variable names
There are several variable names that have been renamed

•

8

need to know the
Makefile
pmain.f90
input file (LxxCTM.inp), which lists some important
flags and input file names.
tracer list (tracer_list.d)
wet scavenging list (scavenging_wet.dat), which lists
how to treat wet scavenging of tracers.
dry scavenging list (scavenging_dry.dat), which lists
how UCI treats dry deposition of tracers. NOT used
for Oslo chemistry! Oslo chemistry uses the file drydep.ctm, located in the directory Input_CTM3.
meteorological data

Oslo CTM3 user manual

November 6, 2018

• other input data, e.g. how to treat CH4 at the surface (and possibly how to initialize the tracer array
STT).

If you want to run non-standard resolutions, you need to
check that the cmn_size.F90 has the necessary parameters.
See Appendix C.4 for more on Makefile.

2.7.1

Makefile
2.7.2

The first file you need to know, is the Makefile. In Makefile you can set user options, i.e. which modules or packages to apply, which resolution to use and some compiler
options. Your choices are:

Main program – pmain

The main program is located in pmain.f90. It is described
in Section 4. You should know the structure of pmain.f90,
and how it works. When you need to work on the tracer
arrays, you should also know how the parallel regions
work.

• OPTS: Optimize (O, A) or debug (D).
• HNATIVE: Horizontal resolution of meteorological
data, e.g. T42, T159.
• VNATIVE: Vertical resolution of meteorological data,
most likely L60, but old files exist in e.g. L40.
• HWINDOW: Model degradation of horizontal resolution. Setting it to HORIGINAL, the model uses native
resolution, and with HTWO it combines 2 x 2 native
grid boxes. A third option is HFOUR.
• COLLAPSE: Collapse layer 1-3 and 4-5 into two layers.
• OSLOCHEM: Turn on Oslo chemistry/physics. For
Oslo CTM3 you would most likely never turn this
off.
• TROPCHEM: Oslo tropospheric chemistry (Section 10).
• STRATCHEM: Oslo stratospheric chemistry (Section 11).
• SULPHUR: Sulphur chemistry and sulphate (Section 13).
• BCOC: Black and organic carbon package (Section 14).
• NITRATE: Nitrate package (Section 17).
• SEASALT: Sea salt package (Section 16).
• DUST: Mineral dust package (Section 15).
• SOA: Secondary organic aerosols package (Section 19).
• E90: Turn on to use e90 tracer for STE flux calculations (Section 21.1.4) and to produce the tropopause
LSTRATAIR_E90 (not yet used to distinguish tropospheric and stratospheric chemistry).
• LINOZ: Turn on to use Linoz O3 for STE calculations.
Oslo CTM3 has not yet been set up to use Linoz to
replace stratospheric chemistry.
• LIT: Can be used for generating lightning factors.
Explanation is given in Makefile.
• EMISDEP_TREATMENT: Defines whether to treat
emissions and deposition as separate processes (EMISDEP_TREATMENT :=U) or as respectively production and loss in chemistry
(EMISDEP_TREATMENT :=O).
• FC: Fortran compiler (ifort, pgf90, openf90 ...) See
Appendix E for more on the compiler options.

2.7.3

Input file – LxxCTM.inp

There is one input file for each resolution, and it is typically called LxxCTM.inp. The first part of the file is to set
up the run, with information about the date, time steps,
meteorological fields, and physical processes (boundary
layer mixing, dry and wet deposition schemes).
The second part lists some input file names, e.g. the
tracer list file (tracer_list.d), while the third part covers
information about the diagnostics (covered in Section 21).
The
•
•
•
•

•
•
•
•

•

•
•
•

Makefile does not use a dependency generator, so if you
add files to be compiled you have to add dependency rules
at the end of Makefile. How to do this is described closer
in Appendix C.4.

•

The Makefile tokens set up the compilation and is used
for setting model parameters. The file cmn_size.F90 is
the only file (except the mineral dust code) containing
C-style code, and thereby needs to be preprocessed by
the Fortran compiler.
See Section 2.8 if you don’t know how to compile.

9

important parameters to set are
IYEAR: Reference year.
NDAYI: Day of year to begin CTM run.
NDAYE: Day at end of CTM run (finishes at end of
day NDAYE-1).
LCLDQMD: Use mid-point of quadrature cloud cover
independent cloud atmospheres (ICA) (for fast-JX,
Section 12.2).
LCLDQMN: Mean quadrature cloud cover ICAs (for
fast-JX).
LCLDRANA: Random selected from all cloud cover
ICAs (for fast-JX; default treatment).
LCLDRANQ: Random selected from 4 mean quadrature
cloud cover ICAs (for fast-JX).
RANSEED: The seed number to create random numbers. Ensures that the random cloud properties are
the same in two runs).
NROPSM: Number of operator split steps per meteorological time step. Default is 1 hour, i.e. NROPSM=3.
Note that the meteorological steps per day (NRMETD)
is hard coded into the model because it is necessary
for e.g. the diagnostic tools.
NRCHEM: Number of chemical sub steps per operator
split step. Default is NRCHEM=1.
LJCCYC: Flag for calculating J-values every internal
chemical cycling step. See Section 12 for more.
LMTSOM: Second order moment limiter. Should be 2
(monotonic), but can also be set to 1 () and 3
(min/max). Do not change this unless you know
what you are doing.
CFLLIM: Global CFL limit for divergence, i.e. max
allowed amount taken from a grid box in advection.
This value should be set to 0.95, and you should not
need to change it. With the Oslo CTM2 there were
a few instances where certain meteorological data
would cause the model to crash because 0.95 was
too high, this behaviour has so far not been seen in
Oslo CTM3.

Oslo CTM3 user manual

November 6, 2018

Next, there is a section for meteorological data, specifying
which type of data and where to read them:
• metTYPE: Possible types are ECMWF_oIFS for
OpenIFS generated locally at CICERO/UIO,
and ECMWF_IFS for the IFS data generated at
ECMWF/UIO.
• metCYCLE: The cycle of the ECMWF IFS/OpenIFS
model.
• metREVNR: The revision number of the ECMWF
IFS/OpenIFS model.
• LLPYR: Allow for leap year.
• LFIXMET: Annually recycle met fields.
• JMPOLAR: Defines if polar grid box has same latitudinal size as other grid boxes (JMPOLAR=0) or half size
(JMPOLAR=1). Should be 0 for ECMWF data.
• GM0000: I-coord of Greenwich Meridian.
For
ECMWF GM0000=1.5, meaning that Greenwich
(0◦ E) is in the middle of grid box 1 (so that 1 is
left edge and 2 is right edge). Other meteorological
data may have different grids.
After this, the hybrid sigma coordinates are listed. Note
that if you collapse layers (COLLAPSE in Makefile), the
LMMAP must match this. So if you collapse layers 1–3, the
LMMAP of the first 3 entries must be 1. Native level 4 will
then have LMMAP=2. Traditionally, the Oslo CTM3 had
always been run in native vertical resolution, while UCICTM is often run with collapsed layers near the surface.
Next:
• PFZON: Allows polar latitudes to combine grid boxes
horizontally.
However, this is not applied in
Oslo CTM3. Entries should therefore be 1 (there
are 25 entries).
• NBLX: Boundary layer scheme (Section 6.4). Default
should be 5.
• NDPX: Dry deposition scheme (Section 7.2). Only
simple UCI scheme is available, but it is modified/overwritten for the Oslo CTM3.
• NSCX: Scavenging scheme for large scale scavenging
(Section 7.1.1). Should be set to 1.
Then input filenames for annual mean pressure and vegetation are listed, followed by more tracer specific parameters, e.g. how to start the model:
• LCONT: Start from restart file (T) or not (F).
• START_AVG: If LCONT = F, this index specifies how
else to initialize the tracer field. START_AVG=0:
STT=0, START_AVG=1: start from Oslo CTM3 average file.
A chemistry run initialised to zero (LCONT=F and
START_AVG=0) will crash, probably reporting negative
stratospheric NOx or NOy .
In this tracer specific section, the filenames of the tracer
list (Section 2.7.4), scavenging lists and emission list (Section 2.7.5) are given.

• JDO_T: When to do tendencies.
With the tendency tracer flags you specify which tracers
to diagnose. Note that these are transport numbers, not
component IDs.
Then we have:
• JDO_A: When to do averages.
• JDO_X: When to do STE calculations.
And finally the UCI time series output. This is not the
same as the Oslo CTM3 time series (Section 21.2.6), and
is not used.
Future update
Using transport numbers to define output is problematic,
because you need to keep track of the order of components. In the future this will be changed to component
names.

2.7.4

Tracer list – tracer_list.d

The tracer list (tracer_list.d) lists all tracers needed in
the simulation. Names and molecular weights are listed,
as well as some diagnostic flags that are not yet in use.
The list is divided into two parts: the first lists the
transported and the second lists the non-transported
species. The total listed numbers of transported and
non-transported species must match NPAR and NOTRPAR
in cmn_size.F90.
When read into the model, the tracer names are found in
the variables TNAME for transported species and XTNAME
for non-transported species.
There may be a tracer list available for your choices, and
they are located in the directory tables. You may have
to make your own tracer list, depending on which applications you include.
It can be mentioned that eventually, the non-transported
array should be removed, but this is left for future work.
Where is the tracer list specified?
The path and file name of the tracer list is specified in
the input file LxxCTM.inp.

2.7.5

Emissions list – Ltracer_emis_xxxx.inp

This file contains all emission information needed for the
Oslo CTM3 to run; information on forest fires, lightning,
2D and 3D monthly emissions. The files are located in
the directory tables. You may want to build your own
list; just save it under a different name. There are files
for different main inventories, such as CEDS, ECLIPSE,
RETRO and Lamarque, listed in the subdirectory EMISSION_LISTS.

Note that the tracer list is read immediately after it is
defined. This is to allow for checking against included
tracers, e.g. by different diagnostics.

The most recent dataset is CEDS (CMIP6) version from
May 2017.

Lastly, there are several settings and flag calendars for
diagnostics.
• JDO_C: When to save restart files.

Important 1:
You should keep good track of the emission inputs you use
in different model runs; they are important to be able to
reproduce the simulations. For simplicity, the whole list

10

Oslo CTM3 user manual

November 6, 2018

is printed to standard out, before reading the file again
and doing the actual read-in of emission datasets.

When you start using the Oslo CTM3, you should ask
current users where to find the data.

Important 2:
There is not really a default/preferred emission dataset
yet, so you have to ask the experienced users about which
you should use. It will probably be best to use the newest
emission estimates. There are several datasets for anthropogenic emissions, but fewer for natural emissions. Natural emissions will often have to be taken from several
datasets.

Important
The openIFS meteorological data was updated from binary files to netCDF4 files late 2015. You can find
more about the meteorological data and the data formats in Appendix H. If you need to run the old format, there is a separate read-in available, called metdata_ecmwf_uioformat.f90. The Oslo CTM3 should give
you a hint about this if you specify an old metTYPE.

Important 3:
If you want to include CH4 emissions instead of using
the standard fixed surface concentrations, you have to
do some changes to the code and input files. To do this
correctly, you must read Section 8.9.

Important for older meteorology data
The old format will eventually be phased out. The new
format has greater flexibility e.g. to read a field from the
next time step and interpolate temporally between them.
If that is included at some point, it will be difficult to use
the binary files.

Important 4:
If you want to build your own emission list, please read
Section 8.3.
File names of emission files are listed along with scaling
for each component which the file applies for. Also a few
short term variations can be specified.
Note that the whole path for the emission files should
be given in the emission list (Ltracer_emis_xxxx.inp), so
you don’t have to link to the emission directory.

2.7.7

Emission data can usually be found in a directory available for all users. However, when you start using the
Oslo CTM3, you should ask us where to find the data.
See Section 8 for further information on the emissions
and the scaling possibilities.

2.7.6

If you get very strange results in the first time steps, you
may have chosen the wrong resolution data. Reading 60layer data in a L40 model run, may not proceed past the
end of the file. But a L60 run will try to read past the
end of file of 40-layer data, and the model will crash.

Meteorological data

Traditionally, the Oslo CTM3 has been driven by meteorological data from the ECMWF Integrated Forecast
System (IFS) model, in both 40-layer and 60-layer versions. In 2015, the ECMWF openIFS model was applied
to generate new data locally at CICERO/UIO, covering
a larger time period. This model is in principle similar
to the IFS model.
You define which meteorological data to use in the file
LxxCTM.inp. First you need to specify the dataset:
• metTYPE: Which type of data. ECMWF_oIFSnc4 is
openIFS data in netCDF4 format. ECMWF_oIFS is
openIFS data in the UIO format. ECMWF_oIFS is the
older IFS data in the UIO format.
• metCYCLE: The cycle number of the model used to
generate meteorological data.
• metREVNR: The revision number of the cycle version.
Note that the Oslo CTM3 is only set up for these datasets
so far. When other data is used, a new read-in routine
must be made, and then the cycle and revision numbers
can still be used to define the model version.
Next you define the path where the meteorological data
is located, MET_ROOT. The Oslo CTM3 will use metTYPE,
metCYCLE, metREVNR and metTYPE to make the full path
of file names. This is carried out in the INPUT routine in
file initialize.f90.

11

Restart file

A restart file contains tracer distributions for all species
in a simulation, as well as the moments for all the transported species. It allows you to continue a run without
loss of tracer information, and while some aerosol packages can be started from zero, chemical components usually requires initial values.
There are several versions of read-in routines available.
The standard read-in reads netCDF4 files,
and is called load_restart_file, located in the
file stt_save_load.f90. It is called from subroutine
SETUP_SPECIES in the file initialize.f90, which is is called
from pmain.f90.
In the restart file, transported species have prefix STT_,
and for these species there are also moments available,
having prefixes SUT_, SVT_, SWT_, SUU_, SVV_, SWW_, SUV_,
SUW_, SVW_. Non-transported species have prefix XSTT_.
The read-in will interpolate horizontally if the model resolution differs from the file resolution, but note that in
such cases only two moments are used: SWT and SWW_.
A possibility for vertical interpolation should be included
eventually.
The read-in assumes the restart file is called restart.nc,
but note that it is possible to read several restart files.
As long as the read in flag MODE is set correctly, only the
uninitialised fields will then be set.
Complementary, there is a routine to save the restart files,
called save_restart_file,
As a new user, you should regularly check that you actually use the restart file you think you use.
Traditionally you can also restart from a monthly average, but this needs more spin-up. There is yet no routine
for reading average netCDF files.

Oslo CTM3 user manual

2.7.8

November 6, 2018

Other input data

There are some additional data you need for running
the Oslo CTM3. The model reads these data from
the directory Input_CTM3, so you need to link to
that directory. On the Abel cluster this is located
at /work/projects/cicero/ctm_input/Input_CTM3, and
the data consists of
• 2d-data for the stratospheric module (boundary condition data).
• Background aerosol surface area densities for the
stratospheric module.
• CH4 surface mixing ratios.
• Dry deposition values.
2d-data
Stratospheric chemistry includes a number of species
which have long tropospheric lifetimes, and thus is set
as fixed mixing ratios in the model levels closest to the
surface. At the top of the model, i.e. upper stratosphere,
the model lacks information on how much is transported
upwards (into the mesosphere) and also on mixing ratios
to be transported downwards (from the mesosphere).
Species having very long lifetimes and are destroyed in
the mesosphere, they may build up in the stratosphere if
the flux out is not considered. Likewise, if a component is
produced in the mesosphere and transported downwards,
it would not be included as a source for the stratosphere.
Traditionally, upper boundary conditions have been set
for many species, mimicking this, while doing chemistry
up to the next-to-uppermost layer (LPAR-1).

The 2d-data are read from original Oslo 2D files, so-called
sr-files, and interpolation to model resolution is carried
out on-line.
Stratospheric background aerosols
Background aerosol surface area density is important for the heterogeneous chemistry in the stratosphere. These data are also located in the directory Input_CTM3/backaer_monthly/.
These data were compiled by David Considine and Larry
Thomason at NASA LaRC, based on SAGE II, SAGE
I and SAM II satellites. Data was prepared by the approach of Thomason et al. (1997), and a description can
be found in the backaer_monthly/ directory.
The data are read from the original resolution and interpolated on-line to the model resolution.
Only year 1979 to 1999 are available, where 1979 is used
for all years prior to 1979 and 1999 for all years after
1999.
Dry deposition
Dry deposition velocities are read from the file drydep.ctm, which is found in the Input_CTM3 directory.
A new dry deposition scheme is under way, and will replace this method or most species. See Section 7.2 for
more.

2.7.9

These boundary conditions are taken from simulations
done with the Oslo 2D model, and are just called the 2ddata. The data are read from the directory Input_CTM3,
so you have to link this directory to where you run the
model.
While such a method may hinder build-up of some
species, it is for other species not an ideal solution.
• Firstly; the uppermost level of the 2D model is
about 55 km, well below the L60 top level. The
mixing ratios are therefore scaled to the L60 vertical grid using the uppermost mixing ratio gradient
of the 2d-data (see Section 11.6 for more). Using
2d-data may perhaps be OK for L40, but not for
L60.
• Secondly; depending on the tracer, it may effectively
act as either a sink or a source. This may not be
what was intended.
• A third obstacle is that upper boundary conditions
must match the simulated year. Removing it will
make modelling e.g. pre-industrial and future atmospheres easier.
• Finally, the Oslo 2D model can no longer be run
because its input files are nowhere to be found. The
2D data are therefore not available for years after
2011.
One solution is to use e.g. WACCM to produce boundary conditions. Another, perhaps better, solution is to do
chemistry all the way p to the model top, so that there
is a fixed lid on top of the model. If a flux out or in
is needed, it should be parameterised as a separate process. I am currently trying to revise this (started
January 2015).

12

Surface CH4

Due to its long lifetime, CH4 is usually fixed at the model
surface. This is the default treatment in Oslo CTM3.
The files containing this input data are located in the
Input_CTM3 directory. Surface volume mixing ratios
were calculated in the project HYMN, where CH4 emissions were included, and monthly averages for 2003, 2004
and 2005 are available for Oslo CTM3. Currently we
use 2003 monthly values, however, these values should
be scaled to match observed values for the year you are
simulating. This can be done by a separate routine, scaling the HYMN 2003 dataset to marine global annual CH4
observed by ESRL Global Monitoring Division (see Section A.2.5).
Important 1
For pre-industrial simulations, these will have to be scaled
or updated.
To match these surface values, it is possible to also set
the whole 3D tracer field from the HYMN results.
Important 2
As noted above, the fixed CH4 field from HYMN can be
scaled to observed values. If you use a CH4 field from
a different year, you can make a similar scaling routine
(see Appendix A.2.5).
Not so important
Also available are RETRO surface values, as zonal means
for different years.
CH4 emissions
The Oslo CTM3 can also be run with CH4 surface emissions. Currently the possible set-up is a combination
of anthropogenic emissions and natural emissions and
soil uptake provided by Bousquet (project GAME). If

Oslo CTM3 user manual

November 6, 2018

you want to include CH4 emissions, you must read Section 8.9.

2.7.10

(OMP_NUM_THREADS). This can be handled automatically
by a job script, or you may have to specify yourself. You
can e.g. use 16 CPUs by running:

Transport options

OMP_NUM_THREADS=16 ./osloctm3 < LxxCTM.inp

Transport is explained in Section 6, however, there are
two things worth mentioning before you start.

Note that this will print to screen. To print to a log file,
use

In the input file (LxxCTM.inp), you specify the duration
of the operator split time step, i.e. the duration of each
process. Default is NROPSM=3, which means 60 minutes
when there are 8 meteorological time steps during the day
(this is default in Oslo CTM3). This is not the time step
used in the transport routine; this is further explained in
Section 6. The operator split time step is the duration of
each process before the next is started.
It is possible to run the Oslo CTM3 with as short operator
split time step as wanted. Halving the value to NROPSM=6
will improve the polar vortex gradients, and should be
used when studying the polar stratosphere (Søvde et al.,
2012).

OMP_NUM_THREADS=16 ./osloctm3 < LxxCTM.inp > results.log
Add the standard & at the end to make the program run
in the background.

2.9.1

Model crashes

As a new user you will probably experience that the
model crashes when you try to run the model for the
first time.

In addition, it is possible to use a more accurate treatment of the polar cap transport. The improved transport
improves cross-polar gradients and should also be considered for polar stratosphere studies. How to implement
the more accurate transport is explained in the horizontal
transport section in pmain.

A couple of diagnostics require certain tracers to be included, and if they are not, the model will crash. These
are:
• satprofs_master
• vprofs_master
• caribic2_master
• trocciXXX_master

2.8

To solve this, you may either change the list of tracers
in their corresponding files, or you may comment out the
calls to the routines. The latter is done in the routine
nops_diag in diagnostics_general.f90.

Compiling

When the Makefile is set up, it can be compiled e.g. using
gmake. Just type gmake and hit enter. Note that parallel
compiling (e.g. gmake -j8) is faster.

Note that the calls are by default commented out, so you
have to put them back if you need them.

When you change global parameters you need to recompile the whole program, it is wise to first clean up
the object files:

You should also check out the Appendix I for trouble
shooting.

gmake clean

2.10
This cleans all the files generated by gmake during a compilation.
You can also check the contents of Makefile by
gmake check.

2.9

Running the model

Not only should we publish research in peer-reviewed
journals, we should also document changes in the
Oslo CTM3, at least if the changes are introduced to
the repository.

2.10.1

You start the model by typing

Publishing & documenting

Publishing in journals

When you publish results from the Oslo CTM3, please
let the Oslo CTM3 users know of it!

./osloctm3 < LxxCTM.inp
I have included a list of papers in Appendix K.
where Lxx is the vertical resolution you compiled with (including possible info on how layers are collapsed). Usually, Oslo CTM3 uses L60CTM.inp. You use the same
input file for all horizontal resolutions. Horizontal resolution is set in Makefile.

Contact info is found in Appendix L.

Oslo CTM3 is parallelized using OpenMP (see Section 4.3), and for most machines you need to specify the number of threads in an environment variable

If you upgrade the Oslo CTM3 (other than small bug
fixes) please write up a description document, including
the main effects.

2.10.2

13

Documenting changes

Oslo CTM3 user manual

3

November 6, 2018

Source code introduction

This section provides a short description of the model
source code, which is mainly written in Fortran90 with
file extension -.f90. However, there are a few files written
in fixed form with extension -.f. The latter comprise the
most important transport files inherited from UCI, and
were not converted to make possible future updates from
UCI easier.

Model source code files are generally divided into core
files and files needed for Oslo chemistry and aerosols modules. The Oslo files are located in the directory OSLO.
Model parameters and variables are found in the cmnfiles, see Section 3.1.2.
Note that several modules also contain their own global
variables.
See Section 4 for program structure and Section 5 for
programming guidelines.

The core source

The model core consists of the files (routines, variables,
parameters) necessary to run the model with transport
only, e.g. meteorological variables and tracer distribution
variables. The core source is located in the main directory, and are based on the files inherited from UCI.
The global variable cmn-files are placed in several files,
described in Section 3.1.2.

Inside the parallelisation loops, the tracer field (STT) is
moved into local arrays (BTT), which have a different
structure. We will call this a B-array (or private array),
and its structure will be explained in Section 4.3.
The second order moments scheme also transports the
first and second order moments, i.e. 9 moments for each
of the transported species. These moments are named
SUT, SVT, SWT, SUU, SVV, SWW, SUV, SUW, and SVW, and are
described in Section 6. Also the moments are transformed
into B-arrays in the parallel region.

Global variable files

The global variable files (common files) are:
• cmn_precision.f90: Defines precision parameters.
• cmn_size.F90: Parameters for grid sizes and also
logical parameters needed for the run.
• cmn_ctm.f90: Transport variables and more.
• cmn_chem.f90: Emission variables and other variables related to chemistry.
• cmn_fjx.f90: Variables for fast-JX (photochemistry).
• cmn_met.f90: Meteorological variables.
• cmn_sfc.f90: Surface (2-dimensional) variables.
• cmn_diag.f90: Diagnostic variables.
• cmn_parameters.f90: Parameters.
• OSLO/cmn_oslo.f90: Variables for Oslo chemistry
and aerosols.

3.1.3

Main program

The main program is located in pmain.f90. It is described
in Section 4.

3.1.4

Essential to the model is the tracer distribution of the
transported species, named STT, which is a 4D array of
model grid size (see Section 2.4 for grid description) times
the number of transported components (NPAR). See Section 3.2 for how to handle the non-transported species.

3.1.1

Makefile was described in Section 2.7.1.

3.1.2

Oslo CTM3 is free from common blocks. All variables
are defined in modules.

3.1

Among the parameters are also logical switches for each
of the chemistry or aerosol modules, such as
• LOSLOCTROP: Use Oslo tropospheric module.
• LOSLOCSTRAT: Use Oslo stratospheric module.
• LSULPHUR: Use Oslo sulphur module.
• LBCOC: Use BCOC module.

Core diagnostics

The main diagnostics are baked into the model core, and
also have a few B-arrays. Such B-arrays bring their diagnostics back to the upper level, where they usually are put
out every operator split time step, or e.g. accumulated for
averaged values. The diagnostics will be described further in Section 21.

3.2

The Oslo core source

The Oslo core comprises the files and variables necessary
to run the model with Oslo packages. The files are located
in the directory OSLO.
Variables are generally located inside modules or in
cmn_oslo.f90, whereas the subroutines are mostly located in modules.

The parameter files

Central to the model core is the parameter file
cmn_size.F90, which sets the model resolution (i.e. array sizes) through the parameters IPAR, JPAR, LPAR, NPAR,
etc.
This file uses the Makefile tokens to include chunks of
code defined by the C-code (such as #ifdef). All parameters are set automatically when compiling with well
known user choices in Makefile.

14

3.2.1

Important variables

In chemistry, each component has a chemical id, and
these ids must be mapped to transport number. This
is done in the variable trsp_idx maps the transported
species (chemical IDs) into their transport number –
i.e. into their place in the STT array. In the same way
Xtrsp_idx maps the non-transported species into their
place in the non-transported tracer array XSTT. The sizes

Oslo CTM3 user manual

November 6, 2018

of the mapping arrays are set by the maximum number
of chemical IDs (TRACER_ID_MAX in cmn_size.F90).
Similarly, two other index arrays map the other way;
chem_idx (size NPAR) and Xchem_idx (size NOTRPAR), respectively.

Table 1: The general structure of the main program.

!// MAIN LOOP
do NDAY = NDAYI,NDAYE-1

These can be found in the files cmn_ctm.f90 and
cmn_oslo.f90, respectively.



XSTT is located in cmn_oslo.f90.

!// METEOROLOGICAL LOOP
do NMET = 1,NRMETD

Note that if you have no non-transported species, the
array size will of e.g. Xchem_idx will be zero. This means
that before trying to access this array, you need to check
if NOTRPAR is greater than zero, otherwise the program
may stop.


!// OPERATOR SPLIT LOOP
do NOPS = 1,NROPSM

To diagnose the non-transported species, a 3D average field is also defined (XSTTAVG). This average
field follows the Oslo CTM3 core average treatment.
Note that these arrays are reverse-indexed
(LPAR, NOTRPAR, IPAR, JPAR) to reduce striding, since
they are only accessed in the IJ-blocks. They keep this
structure when written to the restart file and to average
files.
Important
The use of non-transported species should be out-phased
and replaced by some steady-state considerations, but
this will be left for later.

!// SUB LOOP
do NSUB = 1, LCM
!// do master calls



end do

end do

end do

3.2.2

Application variables

end do

Variables that are only used by a specific application are
in general defined in their respective modules or files.

3.2.3

therefore defined in pmain (not global). Things that need
to be done on daily basis will be placed in this loop. Daily
diagnostics, however, should be placed at the end of the
day.

Dummies

To be able to turn off an application, most applications have some dummy routines, located in
OSLO/DUMMIES. See Section 4.1.4 for more.

4

Program structure

To get an overview of how the Oslo CTM3 works and
how it is structured, it is best to look into the main driver
pmain (pmain.f90).

4.1

Main structure – pmain.f90

The main program (pmain.f90) controls the main loops
and calls to do the calculations. Its general structure
is outlined in Table 1, with the important loop variables NDAY, NMET, NOPS, and NSUB. They are all defined
in pmain, and are thus not global variables.

4.1.1

Main loops

NDAY is the day counter, looping through each day (from
NDAYI to NDAYE-1, see Section 2.7.3). These variables are

15

NMET is the meteorological time step. For ECMWF IFS
data, the meteorological data is stored 8 times per day
(00UTC, 03UTC, ...). The number of meteorological
time steps is set by the NRMETD parameter defined in
cmn_size.F90. It should be noted that some ERA-40
data are also available. These are also ECMWF data,
but given 4 times per day. The Oslo CTM3 is not set up
to use them, however, if you want to use ERA-40, you
should change the number of meteorological time steps
NRMETD. A less optimal method is to read the data every second NMET and not changing NRMETD. I would not
recommend this, but if you insist, remember in read-in
to change the time step used for scaling the accumulated
data.
NOPS is the operator splitting time step, with a duration
of DTOPS. Operator splitting means that the operations
are done in sequence, with a certain time step. There
number of such sequences per meteorological time step
is given by NROPSM. For a short enough time step the
operations should be close to reality, and the solution
should converge when further shortening the time step.
Keep in mind that the order of the processes may be
important. Note that the meteorology is kept constant
through the meteorological step, no matter how many

Oslo CTM3 user manual

November 6, 2018

Table 2: Examples of sub-stepping (NSUB) with un- ready been calculated (4–6) when advection is calculated
even time steps.
(5–9)
Both chemistry and advection is done in the first NSUB, so
that in Example 1, chemistry is done for 60 minutes consecutively (4 times of 15 min), starting at step 2, before
the next advection.

Example 1: NADV=1 and NRCHEM=4, with NLCM=4:
Step
1
2
3
4
1

What is done
CHEM ADV
CHEM
CHEM
CHEM
CHEM ADV

Time duration
15min / 60min
15min
15min
15min
etc...

4.1.3

Considerable CPU time is used to go in and out of the Barray parallel region. The reason for this is that advection
needs two types of parallel coding (IJ-block, Section 4.3.2
and layer parallelisation, Section 4.3.3). If the processes
that only need IJ-block parallelisation (e.g. chemistry) is
carried out more often, the time spent on moving in and
out of the B-arrays will increase.

Example 2: NADV=3 and NRCHEM=4, with NLCM=12:
Step
1
2
3
4
5
6
7
8
9
10
11
12
1

What is done
CHEM ADV

Time duration’s
15min / 20min

CHEM

15min
ADV

CHEM
ADV

CHEM

It is therefore preferable to set NRCHEM as low as possible. However, the number of operator splits is usually 3,
which for NRCHEM=1 will give a time step of one hour for
each of the processes (emissions, boundary layer mixing,
chemistry and deposition). This may be a little too long
in the boundary layer, where mixing is relatively fast.

20min
15min

CHEM

20min
15min

ADV

Traditionally, the Oslo CTM2 solved this by looping
boundary layer mixing and chemistry with a time step
of 15 min. We adopt this in Oslo CTM3, introducing
an internal loop over emissions, boundary layer mixing, chemistry and deposition in pmain. The looping
is carried out CHMCYCLES times per NOPS; for NRCHEM=1,
CHMCYCLES=4, for NRCHEM=2, CHMCYCLES=2 and otherwise
CHMCYCLES=1.

etc...

operator split time steps are used.
Within each NOPS, there is a sub-stepping loop where
chemistry and transport are done asynchronously if their
time steps differ. This will be explained next.

4.1.2

Internal chemistry loop

Note that the chemical section (emissions, boundary layer
mixing, chemistry and deposition) is still calculated for
one NRCHEM before advection is calculated.

Sub-stepping loop

During one operator split loop (for each NOPS) advection is done NADV times (calculated based on numerical
stability), while chemistry and boundary layer mixing
are done NRCHEM times. NRCHEM is set by the user in
LxxCTM.inp, with a default value of 1. See section 4.1.3
for more on this variable. The corresponding time steps
are DTADV=DTOPS/NADV and DTCHM=DTOPS/NRCHEM, respectively.
Operations are in general done in sequence (operator
splitting), but when time steps DTADV and DTCHM differ
the result is an asynchronous stepping. The sequence of
operations is solved by looping through the least common
multiple (NLCM) and do advection and chemistry accordingly. This is done by NSUB in Table 1. Figuratively, this
can be shown by some examples, given in Table 2.
It follows from these examples, that when NADV and
NRCHEM are larger than 1, the operations are done more
frequently than once per NOPS, and should therefore be
closer to reality.
Note that the processes in general do not start at the
same hours and minutes, but are asynchronous: Example 2 in Table 2 shows this. The processes are carried out using different time steps (DTADV=DTOPS/3 vs
DTCHM=DTOPS/4), so that at NSUB=5, chemistry has al-

16

Future update
I think it would be a good idea to let NRCHEM change according to NADV; in T42 resolution, we often have NADV=1,
but also encounter larger values, especially in higher resolutions. The code should be modified to be able to account for this.

4.1.4

Important notes

Do not mess with pmain.f90!
pmain.f90 is supposed to be very short and easy to grasp.
As few as possible calls should be made from pmain, and
the calls should preferably be to master routines (e.g. diagnostics or chemistry).
Keep the model clean of C-code!
If you do not know what C-code may do in the Fortran
code, all is well. Or you can check Section 4.2. C-code
should not be necessary to include or exclude parts of
code. It makes the code very difficult to read, at least for
large chunks of code. Even if one programmer introduces
a new small chunk of C-code, experience has shown that
this practice will grow. If you insist on using them in
your subroutines or modules, keep the existing code free
of C-code.
In the model core, there is only one file containing Ccode, and that is cmn_size.F90, which is the basis for

Oslo CTM3 user manual

November 6, 2018

Makefile to generate important parameters. (In the Oslo
core, the DUST code also contain some C-code.)
Instead of C-code, dummy routines should be used in the
model code. The time spent on calling a routine which in
worst case does nothing (see Section 4.2), is very minute
compared to spending time on a messy program code.
The compiler will in most cases remove the call to an
empty routine, removing calling overhead by inlining the
code (which is empty). See the files in OSLO/DUMMIES
for dummy examples.

4.2

Figure 1: Default IJ-block structure for T42 horizontal resolution, where one block covers half the zonal
direction and one latitude band.

The C-code preprocessing system

The C-code preprocessing system is a way to include or
exclude chunks of code from being compiled. The preprocessor will look for specified tokens, e.g. DO_THIS. In
the preprocessing the code located between the statement
#ifdef DO_THIS and #endif will then be compiled. The
C-compiler will make a temporary file which will be compiled by the Fortran compiler.

4.3.2

Files containing such C-code will typically only be located
in files with extensions -.F or -.F90.

In this way the model domain (IPARxJPARxLPAR) is split
into blocks (so-called IJ-blocks or MP-blocks) beneficial for parallel work: IPAR is divided into MPIPAR sections, and JPAR into MPJPAR sections, while LPAR is unchanged. This creates MPIPAR x MPJPAR blocks of size
(LPAR, IDBLK, JDBLK) which are fed into the parallelisation (IDBLK=IPAR/MPIPAR and JDBLK=JPAR/MPJPAR).

We will avoid C-code in the model, except in
cmn_size.F90, where the tokens are coupled to settings
in Makefile.

4.3

Parallelisation of the Oslo CTM3

The Oslo CTM3 is parallelized using OpenMP. The general parallelisation is done in pmain.f90 and is carried
out in two different ways, which will be described in Section 4.3.2 and 4.3.3:
1. Over IJ-blocks: Applies for chemistry, boundary
layer mixing, convection and vertical advection.
2. Over vertical layers: Horizontal advection only.
In addition some other routines outside parallel regions
are parallelized, e.g. emission interpolation.
Here I go through the basics of these parallel regions and
how they are set up to work most efficiently.

4.3.1

OpenMP

The OpenMP code can easily be located by the !$OMP at
the beginning of a line of code. It is followed by different specifications, e.g. !$OMP PARALLEL. One of the important issues is to understand the meaning of PRIVATE
variables; they are private to each thread/CPU. SHARED
variables are shared. By default, as a safety measure, you
have to define all variables inside a parallel region (not
necessary for parameters, which cannot be changed).
If you want to learn more about OpenMP, see
http://openmp.org/. Also, the Fortran company provides
a tutorial on their web page http://www.fortran.com/.

17

Parallel IJ-blocks (MP-blocks)

Most processes are either independent of neighboring grid
boxes, or they depend on the grid box above or below.
In the Oslo CTM3 these processes are treated columnwise, and the columns are grouped together in blocks of
a certain horizontal extent.

Useful related parameters are IDGRD=IPARW/IPAR and
JDGRD=JPARW/JPAR, giving the number of grid boxes combined in each direction. Total number of grid boxes combined is NDGRD.
For the IJ-blocks, the transported 4D arrays (STT, and
moments) are split into temporary private arrays (Barrays) available for each processor, where the spatial
size is (LPAR,IDBLK,JDBLK). The index order has been
“reversed” (i.e. the LPAR first instead of last) to minimize striding when working vertically. See Section 5.11
for more on striding.
Due to the IJ-block array structure, the loops will produce less striding for long zonal blocks. Depending on
the resolution, the choice of MPIPAR and MPJPAR must be
tested to find which is faster. For the older T42 and for
newer 2x2 combined T159 horizontal resolutions the default is MPIPAR=2 and MPJPAR=JPAR, so that the IJ-blocks
cover half of the zonal direction (1:IPAR/2), and one latitude band, as shown in Figure 1.
It may, however, be that other configurations are better when transporting few tracers. For other resolutions
there are other block sizes (defined in cmn_size.F90).
A more thorough discussion on the IJ-block sizes is included in Section 4.3.6.
In pmain.f90, the parallel index M loops through the number of IJ-blocks, and is passed on to subroutines where
it is usually named MP. The global indices are accessible by using the variables MPBLKIB, MPBLKIE, MPBLKJB
and MPBLKJE (all of size MPBLK). Their names MPBLKIB
and MPBLKIE are somewhat self-explaining; the first contains the zonal beginning point of all IJ-blocks (i.e. the
global zonal indices), while the latter contains the end

Oslo CTM3 user manual

November 6, 2018

Table 3: Looping through an IJ-block and accessing Table 4: Computational efficiency when increasing
global and private variables, for component N.
the number of CPUs for T42L60 resolution. Timings
are given in wall clock hours, for pure transport of
32 and 64 tracers, T42L60 resolution, meteorological
!// Loop over latitudes in IJ-block
data for January 2005
do J = MPBLKJB(MP),MPBLKJE(MP)
!// IJ-block index JJ
T42L60_32 T42L60_64
JJ
= J - MPBLKJB(MP) + 1
4 CPUs
1.72
–
8
CPUs
0.92
1.95
!// Loop over longitudes
16 CPUs
0.57
1.08
do I = MPBLKIB(MP),MPBLKIE(MP)
0.46
0.67
32 CPUs
!// IJ-block index II
8:4
0.53
–
II
= I - MPBLKIB(MP) + 1
0.62
0.55
16:8
32:16
0.81
0.62
!// Corresponding local/global
!// indices
BTT(L,N,II,JJ) = STT(I,J,L,N)

in IJ-block and layers and therefore need to go in and
out of IJ-blocks for each transported time step. It means
that increasing the number of operator split steps, also
increases the time spent shuffling data in and out of Barrays; transport may be better resolved, but it will be
slightly more time consuming.

enddo
enddo

points. Similarly, MPBLKJB and MPBLKJE are the starting
and end points in the meridional direction. For a given
IJ-block (which have parallel index MP), the first global
zonal index therefore is given by MPBLKIB(MP) and ends
at MPBLKIE(MP), while the first global meridional index
is given by MPBLKJB(MP) and ends at MPBLKJE(MP).

4.3.5

A typical IJ-block loop is outlined in Table 3, and
you should understand how it works and why the
reverse-ordered B-arrays provide less striding (see Section 5.11 for more on striding).
For global indices I,J the local/private indices for IJ-block number MP are given by II = I - MPBLKIB(MP) + 1 and
JJ = J - MPBLKJB(MP) + 1.
A mapping from global indices I,J to IJ-block number and local indices can be found in the variable
all_mp_indices:
(II,JJ,MP) = all_mp_indices(1:3,I,J)

4.3.3

Parallel layers

Horizontal advection, i.e. transport between neighboring
grid boxes, have no need for information about boxes
above or below. Hence, this process carried out layer by
layer, and a processor calculates transport of all tracers
for one layer, before being assigned (by OpenMP) a new
layer to transport.
It is also possible to do the transport component by component, so that each processor work on each species,
transporting them layer by layer. Although this was done
in Oslo CTM2, it is not done now. The experience of the
UCI group was that looping over layers is faster. Note
also that studies with few tracers would limit effective use
of the number of CPUs, if parallelisation is done over
components.

4.3.4

OpenMP and advection

The important consequences of the advection treatment
(Section 4.3.2 and 4.3.3) is that advection works both

18

Writing parallelized code

When you write a new module, be sure to parallelize it!
For most processes or applications, it would be wise to
use the IJ-block structure, and therefore assign global
arrays in reverse order (LPAR,IPAR,JPAR), or even better
by blocks (LPAR,IDBLK,JDBLK,MPBLK).
If your application works in the horizontal (this is less
likely), parallelisation should be layerwise, and global arrays should not be reverse order but have the usual structure (IPAR,JPAR,LPAR).
Example: If you use 4 processes and your unparallelized
application uses 5 seconds per time step (assuming one
hour), it will contribute with ∼ 12 hours of computing
time when simulating one year. Effectively parallelized,
you could possibly divide this by the numbers of processors, so that in using 4 CPUs you save 9 hours of real
computing time.

4.3.6

How many CPUs and IJ-blocks?

The more done in parallel, the more efficient and faster
will the program be. The Oslo CTM3 is better parallelized than the Oslo CTM2, however, there are a few
things you should be aware of when it comes to the choice
of CPU numbers and how it relates to the number of IJblocks.
The number of IJ-blocks (set up in cmn_size.F90 should
be close to a multiple of the number of CPUs, since the
amount of work done in a column should be approximately the same for all columns. However, this may not
be true; the vertical transport (such ad convection and
advection) may have a large impact on the time spent in
an IJ-block.
It is more difficult to do such a choice for the horizontal transport, since the amount of work done differ from
layer to layer (shorter time step for larger wind speeds).

Oslo CTM3 user manual

November 6, 2018

Table 5: Computational efficiency for different
choices of IJ-block sizes, for 64 tracers in T42N32L60
resolution. Timings are for one day of transport
(1 January 2005), given in wall clock seconds.

tively more work is done in the IJ-blocks. One-day tests
with full tropospheric and stratospheric chemistry show
that on 16 CPUs, MPIPAR=2 and MPJPAR=JPAR saves about
10 s per day, compared to MPIPAR=1 and MPJPAR=JPAR/2.
Note that 10 s per day amounts to ∼1 hour of computing time for one year. For T42N32L60, the configuration MPIPAR=2 and MPJPAR=JPAR/2 seems to be almost
as fast as MPIPAR=2 and MPJPAR=JPAR on 16 CPUs, and
slightly faster on 32 CPUs. As the default IJ-block size
for T42N32L60 we set MPIPAR=2 and MPJPAR=JPAR.

Pure transport (average for 4 tests per case).
MPIPAR/MPJPAR 16 CPU
32 CPU
1/16
120.8
112.0
1/32
122.0
71.4
2/16
119.6
72.5
116.7
69.6
1/64
2/32
115.0
69.3
110.8
68.0
2/64
Full chemistry (average for 3 tests per case).
32 CPU
MPIPAR/MPJPAR 16 CPU
1/32
256.3
151.7
245.9
144.8
2/32
2/64
245.0
145.0

Using a different date, where the meteorological conditions impose a shorter time step (10 Jan in this case),
indicates that IJ-blocks spanning more than 2 meridional
boxes, e.g. MPIPAR=2 and MPJPAR=JPAR/4, seem to make
transport slower.

However, the time spent in horizontal transport is relatively small, so a good choice for the number of CPUs
will be a multiple of the number of IJ-blocks. As will
be explained, the number of IJ-blocks should be at least
twice as large as the number of CPUs.
Since the time spent in each block may differ, it can be
assumed that OpenMP should use a dynamic schedule.
To make that efficient, the number of blocks must be
larger than the number of CPUs. But there is also the
possibility that too many CPUs may give larger overhead.
I will discuss this further below.
Timing tests of pure transport are included in Table 4,
showing that transporting 32 tracers on 8 CPUs and
switching to 16 CPUs saves ∼40 % time, while switching from 16 to 32 only saves 20 %. However, transporting
64 tracers and switching from 16 to 32 CPUs also saves
about 40 %. Hence, the number of IJ-blocks should be at
least twice as large as the number of CPUs.
The number of IJ-blocks and how they are defined also affect how efficient the parallel code will be. For the setting
MPIPAR=1 and MPJPAR=JPAR/2, each block will cover the
whole zonal direction (1:IPAR) and two latitude bands.
Table 5 shows a few tests carried out for meteorologic
data of 1 January 2005, in T42N32L60 horizontal resolution, comparing CPU timings for different IJ-block sizes.
Based on Table 4, the number of blocks should be at least
twice the number of CPUs.

Higher resolutions
For higher resolutions, the recommendation is a bit more
difficult. Based on the transport tests, using MPIPAR=1
and MPJPAR=JPAR, was the fastest choice. Adding chemistry and more species will increase the memory use and
potentially change this. In fact, tests done in 2018 suggested MPIPAR=8 and MPJPAR=JPAR as a better option.
Important
However, the OpenMP scheduling has until 2018 been
static (the default scheduling). This means that every
CPU know which IJ-block it will calculate, and is likely
not beneficial if the computing time differs for each block
(which it often does). Therefore, the use of dynamic
scheduling should be used. It adds some overhead, but
is generally faster unless the number of IJ-blocks is very
high compared to the number of CPUs used. The difference between static and dynamic scheduling for 1280 IJblocks in T159N80L60 resolution was about 12 %. Thus,
the default value for T159N80L60 is set to MPIPAR=8 and
MPJPAR=JPAR, i.e. 1280 IJ-blocks.
Also when combining 2x2 grid boxes, dynamic was
clearly beneficial, saving 10–20 % for MPIPAR=2 and
MPJPAR=JPAR. It is not clear whether MPIPAR=2 is faster
than MPIPAR=4 for dynamic scheduling, but with static
scheduling MPIPAR=4 is worse. As default, we keep the
MPIPAR=2 and MPJPAR=JPAR and use dynamic scheduling
for 2x2 combination of grid boxes.
The main lesson is: The number of IJ-blocks should be
close to a multiple (2/4/8) of CPUs. This should make
sure that CPUs are not partially idle during computation. E.g. when using 80 IJ-blocks for T159N80L60 on
32 CPUs, half of the CPUs will on average do 3 IJ-blocks,
while the rest does 2.
As noted, vertical transport may change this slightly if
time steps differ greatly in different IJ-blocks. However,
a multiple of the number of CPUs seems to be the best
choice.

It should be easily recognized that the number of IJblocks should be at least as large as the number of CPUs,
since most work is done in the IJ-blocks used in parallelization. 16 IJ-blocks on 32 CPUs was only slightly
faster than on 16 CPUs because horizontal transport is
parallelized over 60 model layers, where the main improvement was.
Due to e.g. read access limits, the timings varied slightly.
Therefore, each test was done 4 times, and the values presented in Table 5 are averages. It seems that MPIPAR=2
and MPJPAR=JPAR is fastest for T42N32L60 transport, followed closely by MPIPAR=2 and MPJPAR=JPAR/2.
Adding chemistry makes the array sizes larger, and rela-

19

Keep in mind that machines sometimes are set up with
hyperthreading, telling you it has more CPUs than it
actually has. The Oslo CTM3 has even shown slower
performance when the number of CPUs requested is
higher than the number of physical CPUs (but within
the threaded number).
In essence, when using other resolutions, you should
check different choices of IJ-blocks to find which is faster.

Oslo CTM3 user manual

November 6, 2018

If you plan to use only one processor (serial run), you
should still use several IJ-blocks. E.g. one global IJ-block
will be large and not very efficient, since the whole global
arrays will have to be re-arranged. Remember also that
the efficiency is greatly reduced in a serial run, since the
re-arranging of the structure is time consuming and carried out by one processor only.

4.4

Module based programming

You should at least describe the following:
• Each module at the top of the file; its purpose and
what it contains.
• Each subroutine, its purpose and variables, including the units of variables.
• All calculations. Include exact references if possible;
if no reference is available, write why you do what
you do. Write a description that can be included in
this manual at a later stage.

The model code has evolved from being partially Fortran90 to being fully Fortran90 in 2015. Common blocks
are no longer used, as they are marked obsolete by the
Fortran company.

5.2

When you add new packages, you should program them
as modules. It is more flexible, and allows combining
fixed format code with free format code. Another advantage is that you can define which parts of a module you
want to access. You access the whole module with

You should try to stay away from the existing core code
except for making master calls at the top level (pmain) or
in master routines themselves. If you think you need to
do changes (especially big changes) in the existing code,
check with the experienced programmers to find out if
there may be better ways.

Change existing code?

use 
where  is the name of the module. This statement must be placed before the implicit none statement.

5.3

Accessing variables in Fortran90
free format

The Fortran90 free format is much easier to read than the
fixed F77 style format, and is more elegant. E.g., there is
no limit on the number of characters used on each line.

However, you get a better code, which is easier to read
and search or debug, when you specify the variables and
subroutines to use:

You can access variables from other modules in this way:
use , only: 
use cmn_size, only: IPAR
where  is the list of needed
variables and/or subroutines, separated by commas.
If you include a module A, which again includes a module
B, you have indirectly access to all variables and routines
in B. By using the only statement, this can be restricted.

5.4

Adding a new subroutine

For programming guidelines on how to make your subroutines optimal for the Oslo CTM3, see Section 5.

When you add a new subroutine it should be included in
a module. Global variables or parameters should also be
specified in this module, or possibly in common modules.

5

Still, there may be some very very few occasions, where it
may be necessary to add arrays to the core or the existing
chemistry files, but it should generally be avoided.

Programming guidelines

Think structure! If you do not understand the structure
of the model (Section 4), you will probably end up with
a very messy and inefficient code.
A messy code may solve your problem, but should never
be added to the Oslo CTM3 repository!

5.1

When adding a new file, you need to include it in Makefile. How to do this is explained in Appendix C.4.

5.5

Adding new components

When you add components, you need to make sure to
change the number of tracers in cmn_size.F90, so that
Makefile selects the right numbers in compiling. Also
make sure the tracer list (tracer_list.d) has the correct
tracer numbers, names and molecular masses.

Comment your code!

Comment your code! Others should understand your
code (and yourself included after putting the code away
for a while). If you do simplifications or approximations,
include a comment about why.

The default length of tracer names (TMASS and (XTMASS)
is 10, set by TNAMELEN in cmn_size.F90. If you need
longer names, you have to modify TNAMELEN.

Comment so that a newbeginner should understand
quickly. Never include comments that are not understandable, such as “be careful”.

20

Scavenging parameters are located in the file scavenging_wet.dat and scavenging_dry.dat.

Oslo CTM3 user manual

5.6

November 6, 2018

Efficient code

5.7.2

Think parallel! Whether you add processes or diagnostics, the work should be done in parallel regions.
Diagnostics may be a little tricky, since they often require
access to the global arrays. In this case, try to keep the
arrays small, and do calculations in the parallel regions.
The goal is to do as little as possible outside of the parallel
regions (see Section 4.3.5).
If you need to convert a few tracers to another unit, you
should only convert the ones you need. See Section 5.7
for more information on this.

5.7

Unit conversion

Mass mixing ratio (mmr) unit is kg/kg, i.e. mass of tracer
(mt ) divided by the mass of air (ma ). On the other
hand, mole (or number) mixing ratio is the number of
tracer molecules (nt ) divided by molecules of air (na ).
For an ideal gas, concentration is ct = nt NA /V , and
ca = na NA /V , so the mixing ratio by volume is ct /ca .

Thus, the conversion from mmr to vmr only involves
the tracer mass (mt ), air mass (ma ) and the molecular
weights of the tracer (Mt ) and air (Ma ):

All tracers are, however, converted before chemistry, and
put into the local array ZC_LOCAL (also stratospheric components before doing tropospheric chemistry). There is
probably not much/anything to gain by only converting
the tropospheric components for tropospheric chemistry
and vice versa for stratospheric chemistry, but it may
be revised at a later stage. However, only the tropospheric column is converted before tropospheric chemistry (1:LMTROP(I,J)), and only the stratospheric column
before stratospheric chemistry (LMTROP(I,J)+1:LPAR).
The conversion routines are located in utilities_oslo.f90.
Next follows descriptions of the conversions, you will
probably need them.

Mass to concentration

The unit of concentration is molec/cm3 . Conversion from
mass (mt ) to concentration (ct ) involves the molecular
mass (unit g/mol) and volume (m3 ). The conversion is
done by
10−3 NA
ct = mt
Mt V

By the term mixing ratio, the atmospheric chemistry
community often mean mole/number mixing ratio, which
as I will show is the same as volume mixing ratio for an
ideal gas. In the aerosol field, however, mass mixing ratio
is more common.

For a specific tracer, the relationship between mole (nt )
and mass (mt ) is:
mt
nt =
(7)
Mt

The tracer arrays are given in mass (kg) per grid box, and
when you need another unit you should create a temporary array and convert it on the fly, avoiding routines
converting the whole tracer array.

5.7.1

(5)

where NA is the Avogadro’s number (6.022149 ×
1023 molec/mol), Mt is the molecular mass (or weight) of
the tracer (g/mol), and V is the grid box volume (m3 ).
The factor 10−3 is a combination of converting mt from
kg to g and volume from m3 to cm3 .

vmr =

mt
Mt
ma
Ma

=

mt Ma
ma Mt

(8)

Note also that mt /ma is the mass mixing ratio mmr.
Converting back to mass:
mt = vmr × ma

Mt
Ma

(9)

Mt /Ma is available as the variable TMOLMIX2MASSMIX
for transported species and XTMOLMIX2MASSMIX for
non-transported species, so to convert to mass mixing ratio you multiply with TMOLMIX2MASSMIX (or
XTMOLMIX2MASSMIX) and then multiply with the air mass.

5.7.3

vmr to mmr

The conversion from mass mixing ratio (mmr) to volume
mixing ratio (vmr) is very short and easy. Given tracer
mass (mt ), tracer moles (nt ), air mass (ma ), air moles
(na ) and the molecular weights of the tracer (Mt ) and
air (Ma ):
mmr

=
=

mt
nt Mt
=
ma
na Ma
Mt
vmr ×
Ma

(10)

In other words:
multiply volume mixing ratio
by TMOLMIX2MASSMIX (or XTMOLMIX2MASSMIX for nontransported tracers).

3

10 Mt V
NA

nt
=
na

The number Ma /Mt is available as TMASSMIX2MOLMIX
for transported species and XTMASSMIX2MOLMIX for nontransported species.

Converting the other way;

mt = ct

Mass to mixing ratio

(6)

Mt is given in TMASS for transported species and XTMASS
for non-transported species. Remember that they are
indexed after transported and non-transported numbers,
not tracer IDs, so to get the correct molecular masses you
need the index arrays trsp_idx and/or Xtrsp_idx.

21

5.7.4

Concentration to mixing ratio

You should not need this conversion, but I include it in
case you are interested. For an ideal gas the volume mixing ratio equals molecules of tracer divided by molecules

Oslo CTM3 user manual

November 6, 2018

of air, i.e. concentration of tracer divided by concentration of air:
ct
vmr =
(11)
ca
ca is the concentration of air – i.e. air density
(molec/cm3 ), while ct is the tracer concentration. The
air density is given as AIRMOLEC_IJ, a global field on IJblock structure (LPAR,IDBLK,JDBLK,MPBLK) which is updated in the B-region at each meteorological time step.
Equation (11) can also be derived from Equation (6) and
(8):
vmr

=
=

103 Ma V
ct
ma NA
ct
ca

=
=

5.8

10−3 ma NA
Ma V
vmr × ca

do I=1,IPAR
do J=1,JPAR
do L=1,LPAR
do N=1,NPAR
ARR(I,J,L,N) = ...
enddo
enddo
enddo
enddo

(12)

vmr

(13)

Keep pmain clean

As noted in Section 4.1.4, you should not make large
changes in pmain.f90. It is supposed to be very short and
easy to grasp. Only simple master calls should be made
from pmain (which is possible; write master routines!).

5.9

5.11

Looping in Fortran

Multidimensional arrays should be traversed in the natural ascending storage order, which is column-major order
for Fortran. This means that the leftmost index varies
most rapidly with a stride of one. For a loop through the
array ARR(IPAR,JPAR), the correct traversing is shown in
Table 6.

Precision of numbers

Variables should in general be defined as double precision, although there are some exceptions. The precision
parameters are set in cmn_precision.f90, and you should
follow the existing code. Do not use the old real*8
method.

If you want to set the whole array (e.g. initialize it), use

There are several definitions for precision:
• r8 is double precision.
• r4 is single precision.
• rMom is the precision of the second order moments
(standard is single precision).
• rAvg is the precision of average diagnostic arrays.
• rTnd is the precision of budget tendency arrays.

ARR(:,:) = 0.

Most computers work faster on double precision than on
single precision, so you should use double precision for
floating point numbers. Only for very large arrays a gain
can be achieved by using single precision, since it may
reduce the number of cache misses. See Section 6.1 for
an example of this.

5.10

do J=1,JPAR
do I=1,IPAR
ARR(I,J) = ...
enddo
enddo

Table 7: A very bad choice of C-looping in Fortran.
Do not do this in Fortran.

Back to concentration:
ct

Table 6: Correct traversing of an array in Fortran.

Stay away from C-code

From the start, the goal has been to keep the Oslo CTM3
free of C-code! Write dummy routines instead; if you
need an example, take a look in the directory OSLO vs
OSLO/DUMMIES while you study the Makefile.
The only C-code allowed should be in the file
cmn_size.F90 (and of course the DUST code which I
have not updated).

22

not just ARR = 0., which is possible: It makes the
code easier to read. If you want to initialize only
grid boxes I = 10 to 20 and J = 4 to 10, you can use
ARR(10:20,4:10) = 0.. The compiler will chose the
most efficient way to handle this.
If you are accustomed to C programming, you should
note that C uses row-major order, where the rightmost
index varies most rapidly. If you put your 3D or 4D
array from C coding into Fortran, it will be very ineffective, striding at every step: If the array is of dimension
(IPAR,JPAR,LPAR,NPAR), and you loop through it C-wise,
for every step of N (from 1 to NPAR) it must jump (stride)
over IPARxJPARxLPAR memory locations to get to the next
N (see Table 7). You must not do this in Fortran!
There are of course times when this needs to be violated,
for example when rearranging arrays into temporary arrays, with different structures (see e.g. Section 4.3). In
cases where the temporary array is smaller, the largest arrays should be traversed in column-major order, to keep
the memory jumps as small as possible. Sometimes it
may be difficult to decide which way to loop.

Oslo CTM3 user manual

5.12

November 6, 2018

Implicit none

(2008). The transport papers are available for free at his
web page1 .

Always use implicit programming, starting each subroutine with implicit none. Explicit programming is very
difficult to debug if necessary, and should be avoided.

6

Transport

Transport of atmospheric species is done by large scale
advection, convection and turbulent mixing. The latter is
most important in the boundary layer. The basis for the
Oslo CTM3 transport is the Secondary Order Moments
scheme introduced by Prather (1986), which was later
re-structured and documented in Prather et al. (2008).

6.1

Secondary Order Moments

In addition to transporting mean grid box values, the
first and second order moments are also transported. The
first order moments carry information about the slope between grid boxes, while the second order moments carry
information about the curvature (the slope of the slope).
The 3 first order moments are SUT, SVT and SWT, and the
6 second order moments are called SUU, SVV, SWW, SUV,
SUW and SVW). In result, there are 9 moments that need
to be transported.
The moment array sizes are (IPAR,JPAR,LPAR,NPAR), and
their units are the same as for the mean grid value
(i.e. kg/grid box). This may be somewhat counterintuitive, but is explained in Prather (1986).
The horizontal mass fluxes due to advection is stored in
two arrays, one for zonal divergence (ALFA) and one for
meridional (BETA).
ALFA(I,J,L) ==> [I,J,L] ==> ALFA(I+1,J,L)
BETA(I,J,L) ==> [I,J,L] ==> BETA(I,J+1,L)
Their units are kg/s. See p-dyn0.f for more.
It is easy to see that transporting 10 variables per component will require a lot of CPU power, and that the
memory requirements also are relatively large. The mass
amounts carried by the moments are small compared to
the gridbox tracer average (STT), and can therefore be
stored in single precision (defined by rMom). However,
in the 1D transport subroutine, everything is carried out
in double precision (r8). Overall, this makes the code
faster, due to reduced code size and hence reduced cache
misses. It could be mentioned that conversion from single to double precision takes some extra time, but the
gain in a reduced code size is much larger. Comparison
with double precision moments has been done, finding
that single precision do introduce some noise, but very
small.

The global time step is based upon a Lifshitz criterion,
which in our case is a divergence criterion (Prather et al.,
2008). The transporting routine – qvect3 – has an internal CFL criteria / time stepping. The latter allows
a shorter time step at high latitudes where the grid boxes
are smaller compared to low latitudes.
Note that the Lifshitz criterion and internal CFL criterion may not handle very rigorous deep convection
well. Testing meteorological data from an earth system
model indicates this, giving negative air mass after vertical transport if the number of advection steps is not
increased. I have included a crude fix for this in the routine CFLADV in p-dyn0.f – if you run into this problem,
you may try that solution.
One of the major improvements from Oslo CTM2 is that
polar grid boxes are no longer combined in transport (the
so-called extended polar zones).
There is, however, one important update from the 2008
description. In Søvde et al. (2012), the treatment of horizontal transport at the polar caps was updated (see Section 6.2.1).

6.2.1

The horizontal advection is carried out layer by layer, so
that each CPU works on a whole layer. The routines are
DYN2UL and DYN2VL, located in p-dyn2.f.
In Prather et al. (2008), the polar cap treatment of horizontal transport was to combine the polar boxes I and
I+IPAR/2, for meridional transport, while maintaining
the gradients. This did not work well, and was updated
in 2011 to allow for a more accurate treatment, which are
described in Søvde et al. (2012).
For meridional transport, the two pie-shaped boxes on
opposite sides of the poles are no longer combined, and
the V-flux across the pole is zeroed and instead added to
the U-flux (transport around the pole point). To avoid
short transport time steps due to small masses in the
polar-pie grid boxes, the default treatment in Oslo CTM3
is to combine boxes 1:2 and JPAR-1:JPAR, for a given I,
and maintain the moments. An optional, more accurate
treatment, is to skip the combining of boxes, but that is
more time consuming due to a shorter global time step required in transport. The latter treatment improves crosspolar gradients, and should be considered when studying
e.g. frozen-in anti-cyclones or O3 holes.
To use this optional treatment involves using the files
p-dyn0-v2.f and p-dyn2-v2.f instead of the standard pdyn0.f and p-dyn2.f, and is explained in detail in the horizontal transport section of pmain.f90.

6.2.2

6.2

Advection

Horizontal advection

Vertical advection

The vertical advection is carried out column by column.
Large scale advection is computed from the continuity

Advection is carried out through the use of Secondary
Order Moments scheme, as described by Prather et al.

1 http://www.ess.uci.edu/∼prather/

23

Oslo CTM3 user manual

November 6, 2018

equation, as the global field GAMA. In the IJ-blocks it is put
into the field GAMAB. Both advection and subsidence due
to convection (GAMACB) are transported together. I.e. vertical advection must be calculated after convection (Section 6.3).
As the advection routine qvect3 needs the transport pipe
to be of even number length, care must be taken when
using degraded vertical resolution (L37/ or L57) (to get
a transport pipe of even length).
There are two possible ways to create even length transport pipes, and for very short arrays (e.g. 19 layers) this
may also improve the speed of the vertical advection:
• For each component, stack some columns on top of
each other, to be transported as a longer pipe.
• Stack several components from the same column in
the longer pipe.

scheme is based on Tiedtke (1989), so we use the same
reference for the Oslo CTM3 convection.
Two important processes that occur in convection are entrainment and detrainment. They can be separated into
(1) turbulent exchange through cloud edges and (2) organized exchanges. For updrafts the entrainment can be
noted
(1)
(2)
Eup = Eup
+ Eup
(14)
and detrainment
(1)
(2)
Dup = Dup
+ Dup

(15)

If you look at the IFS documentations, you will see that
the parameterisations change from cycle to cycle. In general
(1)
(1)
Eup
= f Dup
(16)
(1)

The number of stacked columns or components is given
by IMDIV in cmn_size.F90, and is therefore chosen automatically by Makefile.
Due to the model structure, stacking two components
from the same column works better than stacking two
columns, since the minimum time step needed in the pipe
may differ in two columns: Combining different columns
means that the column with the shortest time step forces
the other columns to take a shorter time step. E.g. convection may cause this, since it can vary much from column to column.
Due to the structure of the B-arrays, this stacking of
columns also strides more than for tracer stacking, although that may not be a big problem for computers to
handle.
For L60/L40 resolution, the fastest vertical advection is
achieved by no stacking at all. For special meteorological
conditions using IMDIV=1 halved the operator splitting
time step compared to IMDIV=4.
Stacking components has, however, a small disadvantage;
If NPAR is not divisible with IMDIV, the remaining part
of the transport pipe will have to be filled with dummy
tracers. The cost of this is small. Choosing IMDIV=2
ensures the least number of dummies.
At some point the cost of creating a long pipe will be
larger than the gain of using fewer pipes, reducing the efficiency of this method. For L60 and L40 we use IMDIV=1,
while for L37 and L57 we use a pipe with 2 components,
for both T42 and 1x1 horizontal resolution.

6.3

where f may be unity or parameterized. Eup is proportional to the incoming mass flux and inverse proportional
to the cloud radii:
(1)
Eup
=f

0.2 Mup
Rup ρ

(17)

where ρ is the air density. In this equation we locate the
fractional entrainment (m−1 ) as:
ε(1)
up =

0.2
Rup

(18)

See the IFS documentation for more on this and on equa(2)
tions for Eup and for detrainment.
Important
While the detrainment rates are given as [s−1 ] in the
IFS documentation, the meteorological fields available
(archived data) are mass flux per height, i.e. accumulated
[kg/(m3 s)].
Available mass flux fields in the meteorological data are
• Updraft mass flux (CWETE)
• Downdraft mass flux (CWETD)
• Updraft detrainment rate
• Downdraft detrainment rate
The detrainment rates are converted to entrainment mass
fluxes CENTU for updrafts and CENTD for downdrafts. See
Appendix H.2.1 for some details on this.
For a given grid box, the Oslo CTM3 treatment of convection due to updrafts consists of three parts, considering
• Mass flux in at bottom and out on top.
• Entrainment into updrafts from ambient air.
• Entrainment or detrainment to balance the net updraft mass fluxes and entrainment.

Convection

Convective transport is calculated as a separate process,
and the subsidence due to convection is calculated as
a mass flux (GAMACB). GAMACB is treated together with the
large scale vertical advection GAMA in the same transport
routine (DYN2W_OC).
The wet removal of gases due to convective rain is described in Section 7.1.2, whereas the transport is described here.
Convective transport is calculated using mass fluxes of
updrafts and downdrafts. The ECMWF IFS convective

24

It can be noted that the organized entrainment in the
IFS model takes place in the lowest part of the cloud,
below the level of strongest vertical ascent (explained in
IFS documentation). This information is lost for our use,
but the balancing due to net flux will retrieve some of the
lost information.
In the convective routine the entrainment CENTU is retrieved as ENT_U and mass flux CWETE as FLUX_E. For
a given layer L, with short notation, they are related as
FE (L) + EU (L) − DU (L) = FE (L + 1)

(19)

Oslo CTM3 user manual

November 6, 2018

where FE is the mass flux from bottom of the given level,
EU is air entrained and DU is the detrained air at the
same level (positive if detrained). In this way we allow
detrainment to act as a vent as the air is rising, possibly increasing the mixing with the surrounding air in the
process (detrainment will leave polluted mass at lower
levels, transporting less to the plume top).

6.4.2

The detrainment DU (L) is positive when air leaves the
convective plume and is lost to the surroundings. From
Eq. (19) we have:
DU (L) = −FE (L + 1) + (FE (L) + EU (L))

The Oslo CTM3 dry deposition used diffusitivities
(PBL_KEDDY) for the lowermost model level, which were
only calculated in the Holtslag method. A separate calculation of PBL_KEDDY has been included in the Prather
scheme.

(20)

However, it may be that this results in a negative DU ,
which means that an additional amount of ambient air
needs to be entrained from the surroundings to balance
the mass fluxes.

NBLX=5: Holtslag

The Holtslag et al. (1990) k-profile scheme has been
retrieved from the previous version of the UCI model
(qcode 55). The boundary layer height needs to be doubled due to catch the whole boundary layer. In L40,
a maximum of 9000 m was used, but for L60 this had to
be lowered to 8000 m.
ZBL = min(BLH(i,J)*2.d0,8000.d0)

Downdrafts are explained in Appendix H.2.1.

6.4.3

6.4

Other schemes

Boundary layer mixing
No other schemes are available, but qcode 55 also had
code for H&R (NBLX=2), Louis (NBLX=3) and M-Y2.5
(NBLX=4).

The boundary layer mixing scheme is selected by the flag
NBLX in LxxCTM.inp. In the UCI code only the Prather
scheme is available, but in the Oslo CTM3 the Holtslag
scheme has been included from qcode 55.
The boundary layer is mixed each chemical time step,
before chemistry.

7

It is important to notice that boundary layer height (BLH)
is usually an instantaneous field, which may be problematic during morning hours when photochemistry becomes
effective – especially for thin boundary layer heights.

Dry deposition is the process where gases are deposited
on the ground, i.e. either through gravitational settling
of by uptake processes in the soil or in plants. Thus it
applies only to the lowermost model level.

A method for solving this is included, namely interpolating the BLH linearly in time between the current and the
next meteorological time step (BLH_CUR and BLH_NEXT,
respectively). The routine is called set_blh_ij, and is
called from pmain, in the CCYC-loop. To do this, each
IJ-block counts its elapsed seconds of the meteorological
time step, in the variable nmetTimeIntegrated defined in
pmain.

Wet deposition, or scavenging, is when gases or aerosols
are removed by precipitation.

7.1

Wet scavenging

Wet scavenging is usually divided into three types:

Important
This means that when using the time interpolation, BLH
should be used with care in other routines.
Except from the boundary layer mixing routine, BLH is
put out in several routines (vertical profiles and such),
outside the IJ-block. These routines put out values interpolated to each NOPS (if BLH_NEXT is available).

6.4.1

Wet and dry scavenging

NBLX=1: Prather scheme

The Prather bulk scheme uses e-folding time assuming
full mixing in 3 hours. The scheme is set up to be applied
to collapsed bottom layers (layer 1 consists of layer 1:3
and layer 2 of 4:5). The bulk scheme should in principle
be applicable to the full resolution, but it may be too fast
or slow.

• Rainout: Used for aerosols when they act as cloud
condensation nuclei (CCN) and fall out as rain.
• Washout: Gases/aerosols are deposited on rain
drops. This is the usual mechanism for scavenging
gases.
• Sweepout: When the rain droplets collect molecules
or aerosols. Sometimes called impact washout.
In Oslo CTM3 we treat washout for both gases and
aerosols, since the meteorology (rain) is prescribed: We
do not calculate the precipitation from CCN. But the
large scale scavenging scheme does also calculate sweepout of species with mass limited washout (i.e. species
which easily stick to water, such as HNO3 and some
aerosols), called impact washout in the code.
It should be noted that the washout process is treated
differently for large scale and convective precipitation.
The wet scavenging parameters are found in the file
scavenging_wet.dat, as listed in Tables 32–34. It differs from the original UCI file, which is also available
in scavng55.dat for the interested reader. In general, the
scavenging follows Henry’s law, so coefficients for this are

It has been tested in the UCI CTM to do well compared
with other boundary layer schemes, although much simpler. Some boundary layer parameters are still calculated.

25

Oslo CTM3 user manual

November 6, 2018

3 No removal for T <258 K, but set retention coefficient to 1 instead of 0.5.
4 Standard treatment (Henry’s law or kinetically
limited) below 258 K (as in option 2), but set
retention coefficient to 1 instead of 0.5.

listed. How to specify more sophisticated effective expressions is explained in Section 7.1.4. The settings apply in
general to the large scale wet scavenging, but there are
a few options that only apply for convective scavenging.
The wet scavenging list contains parameters for convective scavenging and large scale scavenging – where some
are specific for either convective or large scale, but most
apply for both. Here follows a list of the parameters,
which are also described at the end of the scavenging
list.
• SOLU: Fraction of grid box available for wet scavenging. Applies for both convective and large scale
scavenging. For convective scavenging, this must be
accompanied by setting the flag CHN
• CHN: Defines treatment of convective scavenging,
with the possibility to switch off liquid or ice large
scale scavenging. Options are listed at the bottom
of the scavenging file, and the most used flags are
0, 1 or 3. Large scale scavenging is treated unless
stated otherwise:
0 No convective scavenging.
1 Fraction dissolved is calculated from Henry coefficients, either using Henry’s law or masslimited. This fraction is multiplied with QFRAC
to get the fraction removed by scavenging (Section 7.1.2–7.1.3).
2 Not in use.
3 Assumes fully dissolved tracer, so that QFRAC
gives the fraction removed.
4 Removes fraction given by SOLU and not QFRAC.
In other words: Everything is removed for
SOLU=1. Should be used with care!
5 Same as (3), but large scale scavenging is
turned off.
6 Same as (3), but large scale scavenging on liquid is turned off. Large scale ice scavenging is
included (if defined by ISCVFR).
7 Convective removal only if minimum temperature in convective plume is lower than 258 K.
Large scale ice scavenging is included, but not
liquid scavenging.
8 Convective removal only if minimum temperature in convective plume is lower than 258 K
and maximum temperature in plume is lower
than 273 K. Large scale ice scavenging is included, but not liquid scavenging.
• TCHENA: First part of Henry expression, i.e. Henry
coefficient at 298 K.
• TCHENB: Exponential part of Henry expression, i.e.
the temperature coefficient.
• TCKAQA: Flag for denoting that Henry expression
should be modified by hard-coded settings. See 7.1.4
for more.
• TCKAQB: Zero is removal according to Henry expression, non-zero is mass (or kinetically) limited removal, which is used for highly soluble species.
• ISCVFR: Fraction of gridbox available for large-scale
ice scavenging.
• IT: Ice treatment when ISCVFR>0.

7.1.1

Large scale scavenging

The large scale scavenging master routine located in
WASHOUT0. While the model in principle can use a simplified scheme (WASHOUT1), it has been disabled for
Oslo CTM3; we only use the more sophisticated version
by Neu and Prather (2012) (WASHOUT2), which scavenge
separately by liquid and ice precipitation. It is still possible to choose the simple scheme by changing the parameter NSCX in the input file LxxCTM.inp, but the data
needed is not read into the model. If you need that data,
you can find it in scavng55.dat.
The WASHOUT2 is a simple cloud model, dividing each grid
box layer in four parts:
• Cloud core, with rain coming in from above. Depending on how much rains out, rain may evaporate
or be formed.
• Cloudy, with no rain coming in, but rain may form.
• Clear sky with rain from above.
• Clear sky with no rain.
Fractional areas are calculated and may change e.g. due
to evaporation. A constant evaporation rate is used.
More details are explained by Neu and Prather (2012).
For some species, such as HNO3 and some aerosols, uptake on ice may be important. Uptake on ice is controlled by a non-zero ice scavenging fraction ISCVFR in
the scavenging list, denoting how much of the grid box is
available for ice scavenging. For 258 K < T < 273 K, the
uptake is generally calculated using Henry’s law and the
table-specified Henry’s law coefficients, modified by a retention coefficient. This is because Henry expressions are
not given for temperatures below 0◦ C, and currently the
retention coefficient is set to 0.5 (Neu and Prather, 2012).
Mass limited ice removal of species is calculated assuming a Henry coefficient of typically 108 , which will yield
the species completely dissolved, even if the retention coefficient is 0.5.
Note that the retention coefficient can possibly be overwritten by the IT flags. In the future, it could be that the
retention coefficient could become part of the scavenging
table.
Uptake of HNO3 on ice can also occur below 258 K, and
follows Kärcher and Voigt (2006) when IT is set to 1.
Other options are also available.

7.1.2

0 No scavenging below 258 K.
1 For temperatures below 258 K use Kärcher and
Voigt (2006).
2 Use same treatment as for 258 K – 273 K, i.e.
with retention coefficient.

26

Convective scavenging

Convective scavenging is adopted from the Oslo CTM2,
and does not separate between ice and liquid water; all
is treated as rain. It differs from the UCI method, which
is rather crude. The routines are called from CONVW_OC
and are located in cnv_oslo.f90.
If you need to do changes in that file, be certain that you
understand the units used; rain, liquid water and mass

Oslo CTM3 user manual

November 6, 2018

fluxes are kg/s. Note that these values are accumulated
in the meteorological data files, and then converted. Entrainment into updrafts is originally not flux, and is described in Section 6.3.
Convection forms an elevator (or plume) transporting
mass upwards. To calculate the convective scavenging
we need to know how much of a tracer that is solved in
the liquid water of the elevator (elev_mass_lw), which is
described at the end of this section. The elev_mass_lw
also covers the rain in the elevator.
The fraction of rain to liquid water in the elevator is called
QFRAC. Given an amount of tracer solved in the elevator
liquid water, the fraction QFRAC is subject for removal.

h

∆Hsol
R

h 



1
1
−
T1
T2

i

(24)

(25)

1
1
−
T
298 K

i

(26)

This means that the A-coefficient used in the model (in
scavenging table), is in fact H(298 K).
The following explanation applies to the convective scavenging, where LWvolconc is calculated. In the routine
for large scale scavenging, LWvolconc is not explicitly calculated, which is why Eq. (21) differs slightly in that
routine. However, the basics behind it is the same.
Important notice
When Eq. (21) is used and LWvolconc is calculated, as
in the convective routine, H(T ) has to be modified to
get the correct units, i.e. we have to multiply it by R T ,
where R = 0.08206 atm L mol−1 K−1 .
Deriving Eq. (21)
Henry’s law coefficient for any gas is defined as
Pgas = kH X

(27)

where Pgas is the partial pressure of the gas above the
solution, and X is the molar fraction of the dissolved gas
in the solution;
naq
(28)
X=
naq + nsolvent

Theory on Henry’s law

where naq is the number of moles solved, and nsolvent
is the number of moles of the solvent (i.e. water in our
case).

Looking at the convective scavenging code, you find
a fraction of dissolved tracer on the form

Assuming ideal solution, we can change to concentration
by dividing by volume of the solution, and get:

(21)

X=

A similar expression can be found in the large scale scavenging routine (subroutine HENRYS, although it is different below 273 K). I will explain the background of this
equation here.
First of all, there are several data on Henry coefficients;
usually they are given at 298 K, together with a temperature coefficient. Another possibility, as in Sander et al.
(2011), coefficients are given for the expression:
B
+ C ln T
T

H(T2 ) = H(T1 ) exp

H(T ) = H(298 K) exp B

The use of Henry’s law to find the fraction of tracer dissolved in the elevator is described in the next Section.

ln H(T ) = A +

where ∆Hsol is the solution enthalpy. ∆Hsol is assumed
constant (a fairly good approximation), so that the expression can be re-arranged and integrated between temperatures T1 and T2 :

is the B coefficient given e.g. by Sander et al. (2011) and
also used in the Oslo CTM3. Hence, using T2 = 298 K,
the model finds the Henry expression at any temperature:

In the scavenging list, the parameters SOLU and CHN defines whether or not each tracer is washed out by convection. These data are stored in the model arrays
TCWETL(NPAR) and TCCNVHENRY(NPAR), respectively. CHN
controls how to calculate the fraction of tracer removed.
Options are listed at the bottom of the scavenging file,
and also in the previous Section.

fdissolved

(23)

∆Hsol
d ln H
=−
R
d( T1 )

Eventually we reach the elevator top (determined by the
mass fluxes) and we have the following data for each level
of the elevator: Amount of liquid water, volume of elevator and volume fraction of liquid water (droplets) in the
elevator, which is called LW_VOLCONC (e.g. volume concentration). LW_VOLCONC is used in calculating the amount
of tracer solved in the elevator. Some species are dissolved completely (e.g. HNO3 ) and others are dissolved
according to Henry’s law (Section 7.1.3).

HH LWvolconc
=
HH LWvolconc + 1

d ln H
∆Hsol
=
dT
RT 2

The temperature dependence

Calculation is done using the mass fluxes from the meteorological data. At the lowest level of entrainment, we
entrain air and humidity from the surroundings, to form
the base of the elevator. It is then lifted according to the
mass fluxes, and assuming adiabatic lifting, the elevator
temperature cools and eventually water will condense.
The condensed water goes into elev_mass_lw. Entrainment or detrainment is then calculated, before we remove
the net rain out of the box. We do not consider net rain
into the box to increase elev_mass_lw; with our simplified elevator, this unfortunately not possible.

7.1.3

Coefficient C is rarely used, and while B is used by the
Oslo CTM3, I stress that this A-coefficient differs from
the model definition: Oslo CTM3 applies the well used
van’t Hoff’s temperature extrapolation from 298 K. This
extrapolation assumes that Henry’s law varies as

(22)

27

Caq
Caq + Csolvent

(29)

As long as Henry’s law applies, i.e. the species is not
highly soluble, we always have Caq  Csolvent , and can
approximate to:
Caq
X=
(30)
Csolvent
Since the concentration of the solvent (water) is approximately constant, we arrive at the other common form of
Henry’s law:
Pgas = kCaq
(31)

Oslo CTM3 user manual

November 6, 2018

Units for k: [atm L(solvent)/mol], and for Pgas : [atm].
If k is high, it means the component prefers thermodynamically to be in gas phase.

The mass fraction dissolved in the droplets (mass fraction
equals mole fraction in this case), which is subject to
washout, is therefore
fdissolved

We are interested in calculating Caq from Pgas , so we
introduce
HST AR = 1/k
(32)

=

with units [mol/(atm L(solvent))], so that
Caq = HST AR Pgas

=

and by Equation (35) we get

If we want to apply the calculations to molar concentration (mol/L), we have to change some units:
(34)

We want the mass fraction of the dissolved gas, which
equals the molar fraction fdissolved .

7.2

=

Caq Velevator_solvent

VDEP is given in units [m/s], and is set in subroutine
setdrydep in the file drydeposition_oslo.f90, which is
called from pmain.

(37)

(38)

·103 L(solvent)/m3 (solvent)
As already explained, the solvent is liquid water. The
volume of the solvent is given by the liquid water content, and is calculated in elevator fractions as volume
concentration, i.e. volume of liquid water in elevator to
total elevator volume. As can be found in the source code
comments, the volume of liquid water is
Velevator_solvent =

mass of liquid water
ρ

Velevator_solvent
Velevator_air

=

Caq LWvolconc Velevator_air
3

3

·10 L(solvent)/m (solvent)

Important 2
Inspired by CTM2-tests done by others, I started in 2013–
2014 to make an update of the dry deposition scheme.
However, I never got to finish it. Early 2018, I got a
small opportunity to look at it again, and made some
small changes, so the new scheme may be tested properly.
The Oslo CTM2 parameterisation, which is the standard
scheme, is explained very briefly in Section 7.2.1, while
the new scheme is described in Section 7.2.2–7.2.3.

(40)

7.2.1

Using Equation (38) and (40), the moles of gas dissolved
in water is
naq

Important 1
When these deposition velocities are to be used in QSSA,
they have to be divided by the height of the lowermost layer, to get the unit [s−1 ]. This is carried out
e.g. before chemistry (MASTER_OSLO) and in subroutine
bcoc_master.

(39)

where ρ is the density of water (which is 103 kg/m3 ). The
liquid water volume concentration is then
LWvolconc =

Dry deposition

Deposition velocities are stored in VDEP of size
(NPAR,IPAR,JPAR), thus allowing for possible deposition
of any transported tracer.

Caq has units [mol/L(solvent)], and the number of moles
in the solution is
naq

The hard coding is done in the routine getHstar in scavenging_largescale_uci.f90, called by either the large scale
scavenging routine or the convective scavenging routine.

(36)

The volumes have units [m3 ], while the number concentration of tracer in air, Cg , has units [mol/L(air)]. Hence,
we get the moles of tracer in gas phase:
103 L(air)
m3 (air)

Hard-coded Henry coefficients

Some tracers have empirical Henry constants, which need
to be hard-coded. This is specified by a non-zero TCKAQA
in the scavenging list scavenging_wet.dat.

where HH has the units [mol/L(solvent) / (mol/L(air))].

ng = Cg Velevator_air

(44)

In the Oslo CTM3 code this fraction is called
DISSOLVEDFRAC.

7.1.4

Henry’s law therefore implies that the concentration in
the solution is proportional to the atmospheric concentration:
Caq = HST AR RT Cg = HH Cg
(35)

naq
naq + ng

HH LWvolconc
HH LWvolconc + 1

When the retention coefficient is used in large scale scavenging, it is multiplied by HH in Equation (44).

given correct units of R, i.e. [atm L /(mol K):
• J = kgm2 /s2 = Pa m3
• R = 8.31451J/(mol K) / 101325Pa/atm
x 1000 L/m3 = 0.0820578 atm L/(mol K)

fdissolved =

(43)

(33)
fdissolved =

Pgas = Cg RT

naq
naq + ng
Caq LWvolconc
Caq LWvolconc + Cg

(41)
(42)

28

Historical note

In the Oslo CTM3 (Søvde et al., 2012) and its predecessor
Oslo CTM2 dry deposition has been parameterised based
on Wesely (1989), not by calculating the deposition velocities from equations, but rather by using seasonal day
and night averaged deposition velocities for different land

Oslo CTM3 user manual

November 6, 2018

is

use types. However, some velocities seem to rather come
from Hough (1991).
Using 5 land-use types (water, forest, grass, tundra/desert and ice/snow) in each gridbox, a mean velocity was then defined. Day and night was defined by
using the solar zenith angle (subroutine SOLARZ), giving
day if less than 90◦ . Winter was defined as temperatures
below 273.15 K for grid boxes containing land masses.
Ocean gridboxes containing sea ice use ice/snow values,
but a distinction on season was not necessary because
the summer and winter values are equal. However, snow
cover was taken into account, reducing uptake when snow
thickness was about 1 m (10 cm water equivalents) in forest and 10 cm (1 cm water equivalents) on grass/tundra.
The old UCI read-in is disabled, but a short note about
it is given in Section 7.2.7.

7.2.2

1
(45)
Ra + Rbi + Rci
where Ra is the aerodynamical resistance between the
surface and the top of the vegetation canopy (i.e. the
altitude z0 , called roughness length), Rbi is the quasilaminar layer resistance to the gas and Rci is the canopy
resistance (often called surface resistance and sometimes
denoted rsi ).
vdi =

The new dry deposition scheme

Ra is the same for all gases, depending only on the surface/air properties. Rbi and Rci are different for all gases,
and the latter also vary from vegetation type to vegetation type.
The inverse of a resistance is called conductance, which
is denoted G:
1
G=
(46)
R
Conductance is in essence the same as velocity. This is
important to keep in mind when calculating an average
deposition value in a gridbox.

The dry deposition parameterisation is in the process of
being updated to follow the method of the EMEP model
(Simpson et al., 2012). It is a more physical approach
and is described in detail in Section 7.2.3.

If Eq. (45) is the gridbox average, then the Rs are grid
box effective averages. This must be kept in mind when
calculating grid box averages of Rci , which depend on
land-use types; then we need to calculate resistances for
all vegetation types and do a proper weighting to get the
gridbox average.

The EMEP method is used for the gaseous species O3 ,
H2 O2 , NO2 , PAN, SO2 , NH3 , HCHO, CH3 CHO. CO has
a very small uptake and is not included in the EMEP
treatment, so we keep the old Oslo CTM2 parameterisation.

To do this weighting we recognise that a molecule can
only choose one land type; it will not take the least resistance of several land-use types.

Some of the aerosol deposition rates follow the EMEP
aerosol parameterisation, namely BC/OC aerosols, sulphur aerosols (SO4 and MSA), and secondary organic
aerosols (SOA). Other aerosol modules have their own
parameterisations which are described in their own sections of this manual.

As an example, assume we have 2 land-use types with
gridbox fractions being 50 % each, with resistances R1 =
1 s/m and R2 = 10000 s/m. A molecule is located above
one of these surfaces and cannot choose where to go. This
means that several land-use types, e.g. forest and grass,
cannot occupy the same area when the area is infinitesimally small (approaches zero).

My first tests showed that the new parameterisation improved the ability to reproduce measured surface O3 .
Generally, the largest impacts can be found for O3 ,
HNO3 , SO2 and NH3 , but also for SO4 due to changes in
SO2 .

Each of these two areas would have their respective velocities vi = 1/Ri , i.e. v1 = 1 m/s and v2 = 10−4 m/s.
The small velocity will remove little, but if the big velocity would remove almost everything, it would in this case
remove half of the species in the whole gridbox.

However, the 2018 version of the new scheme uses a more
physically correct value of the stomatal conductance, calculated by the MEGANv2.10 module. It is also possible
to use a climatology of stomatal conductance, but I would
not recommend it.

Then it is easy to see that the gridbox effective average
R is found by
1
1
1
= f1 ·
+ f2 ·
R
R1
R2

(47)

which is actually the average conductance
Tropospheric burden of O3 and HNO3 increased by 5–8 %
and 5–10 %, respectively. A ∼20 % decrease was found
for tropospheric SO2 and SO4 , while NH3 tropospheric
burden decreased by 20–30 %. The other species do
not change much (0–3 %). Interestingly, NO2 decreases
slightly during winter but increases more during summer,
showing that secondary effects coming from chemistry are
also important.

giving v ≈ 0.5 m/s. If v = 1 m/s would remove all in the
gridbox, v = 0.5 m/s removes half, as expected.

7.2.3

Technical description: gaseous species

Hence, it is the velocities (or conductances) which have
to be weighted according to land-use fractions, to get
a gridbox mean velocity.

Typically, deposition uptake follows an electric circuit
analogy, where the deposition velocity vdi for species i

The new dry deposition scheme calculates Ra , Rbi and Rci
following Simpson et al. (2012), which will be referred to

29

G = f1 · G1 + f2 · G2

(48)

Had we used (f1 ∗ R1 + f2 ∗ R2 ) as the average resistance,
the velocity would be 0.0002 m/s, which is clearly not
what we want.

Oslo CTM3 user manual

November 6, 2018

transfer between surface and the reference height z. In
Oslo CTM3 it is assumed that Ra = Ra,H .

as EMEP2012. Main gases included are O3 , SO2 , NH3 ,
NO2 , H2 O2 and HNO3 , but in addition I have included
NO, HCHO and CH3 CHO which to some extent are also
subject to dry deposition.

Sensible heat flux can also be written

As already noted, dry deposition of CO is still treated
with the old scheme. This is because it is not available
through EMEP2012. In general, CO dry deposition is so
small that models tend to exclude it. It is set to 0.03 cm/s
over vegetated areas Conrad and Seiler (1985), and it is
reduced when there is snow.

SHF = −ρcp KH

∂T
∂z

(52)

and momentum flux using the wind u profile
M F = −ρu2∗ = ρKM

∂u
∂z

(53)

Aerosols are not part of the new update and follows the
old deposition treatment, using fixed deposition velocities
or calculated separately as in the sea salt or mineral dust
modules.

where KH and KM are the respective eddy diffusitivities.
When KM = KH , Eq. (52) and (53) gives

Important
To use this treatment, both the nitrate and sulphur modules should be included. They are needed for calculation
of SO2 deposition which is again needed to calculate dry
deposition velocities for other gases. Note that Søvde
et al. (2012) concluded that these modules should be included anyway; doing so does not increase computing
time by much. Still, if sulphur and nitrate are not included, a monthly model climatology of the parameters
asn and a24h
sn is needed.

which in finite differences between surface and reference
height z can be written

However, this climatology has not yet been produced, so
if you try to run the model without sulphur and nitrate
modules, the program will stop.
Aerodynamical resistance Ra
The aerodynamical resistance (Ra ) in EMEP2012 is not
well defined in Simpson et al. (2012). They first assess
friction velocity u∗ by using stability functions (Eq. (52)
in EMEP2012):
u∗ =

ln

z−d
z0



VH (z) k

− Ψm z−d
− Ψm
z0

z0
L

Ra =

1
z−d
ln
k u∗
z0

− Ψh



z−d
z0



− Ψh

(55)



z0
L

2
k u∗



Sci
Pr

2/3

(57)

where P r is the Prandtl number (0.72) and Sci is the
Schmidt number for gas i, defined as:

i
(50)

However, for certain values of z, z0 and L, Eq. (50) can
produce a negative Ra , which is wrong. This also applies
to the u∗ calculation of EMEP2012.

Sci =

ν
Di

(58)

Here ν is the kinetic viscosity of air and Di is the molecular diffusivity for gas i. If you look at the code, you will
see that the ScH2 O = 0.6 as well as DH2 O = 0.21 · 10−4
are defined, and that Sci is found from
Sci = ScH2 O

DH2 O
Di

(59)

where DH2 O /Di is listed in Table 8.

Therefore we use a different approach in Oslo CTM3,
namely the method of Monteith (1973). Sensible heat
flux (SHF ) between surface and air is given by
T0 − Tz
SHF = ρcp
Ra,H

u2∗
uz

where Tz and uz are temperature and wind speed at
height z. From Eq. (51) we get the Monteith (1973) equation for Ra,H :
uz
Ra,H = 2
(56)
u∗
This is what we use for Ra in Oslo CTM3, and as reference height we use the midpoint of the surface model
level. This level is about 16 m thick, so the reference
height is about 8 m. This is possible because both uz
and u∗ are available from the meteorological data.

Rbi =

A somewhat similar expression is found for Ra in the
earlier EMEP version (EMEP2003, Simpson et al., 2003),
namely



SHF = ρcp (T0 − Tz )

(54)

Over land we use

Here, VH (z) is the wind speed at their reference height z
and Ψm represents the integrated stability equations for
momentum, d is a constant (typically 0.7 m), and L is the
Obukhov length. However, they do not list the equation
for Ra .

h 

∂T 2
u∗
∂u

Quasi-laminar layer resistance Rb
Rbi is species specific, and is defined differently over land
and ocean. When a gridbox contain both land and ocean,
a weighted mean Rbi is calculated using the respective
land and ocean conductances.

(49)



SHF = −ρcp

Over sea we use
Rbi =

(51)

1
z0
ln
k u∗
k u∗
Di





(60)

with minimum limit of 10 s/m and maximum of 1000 s/m.

where ρ is air density, cp the specific heat at constant
pressure, T0 is the surface temperature, Tz is the temperature at reference height z, and the aerodynamic resistance Ra,H is the diffusion resistance to sensible heat

30

z0 is available from monthly mean ISLSCP2/FASIR but
have zero value over ocean. Hence, a different approach
is taken to find z0 over water; assuming different approaches over calm and rough ocean, separated by wind

Oslo CTM3 user manual

November 6, 2018

Table 8: Values of DH2 O /Di and f0i and H∗i .
Species i
O3
SO2
NO2
H2 O2
HCHO
NO
CH3 CHO

f0i
1.0
0.0
0.1
1.0
0.0
0.0
15.0

DH2 O /Di
1.6
1.9
1.6
1.4
1.3
1.3
1.6

taken into account. For monthly means, a light scaling is
necessary. Both requires a temperature scaling.

H∗i [M/atm]
10−2
105
10−2
105
6 · 103
2 · 10−3
0.0

The light scaling for monthly conductances can be
done using the photosynthetically active radiation (PAR)
available through the meteorological data, multiplying
Gsto at each time step (and grid box) with PAR and
dividing by some max or mean value. To avoid precalculation of mean PAR for each month, I have decided to
use 500 W/m2 :
Gsto (t) = Gsto

speed of 3 m/s. Calm sea follows e.g. Hinze (1975) or
Garratt (1992), but with a slightly higher coefficient:



z0,w,calm = min 2 · 10−3 , 0.135

ν
u∗



ν=

(61)

Rough sea follows the method of Wu (1980), which is the
Charnock (1955) method with slightly higher coefficient.



u2∗
g



Tmax − T2m
tmax − Topt

−Topt
 TTmax−T
opt

min

(66)

Non-stomatal conductance
In the new scheme, non-stomatal conductance is calculated specifically for O3 , SO2 , HNO3 and NH3 . For other
species, an interpolation between O3 and SO2 values are
carried out.


(63)

In addition, there is a maximum roughness length limit
of 2 mm imposed on both cases. However, the calculated
z0,w is usually so small that the limits on Eq. (60) kicks
in, so in practice z0,w could very often have been zero in
this parameterisation.

– O3 –
The non-stomatal conductance for O3 consists of two
terms, one depending on vegetation type and one depending on the soil/surface. For land-type N of Nmax
types, we can write:
3
GO
ns (N ) =

Surface resistance Rc
Surface resistance (Rci ) consists of both stomatal and
non-stomatal resistances. To find the gridbox average
we use conductances, as explained earlier:
Gic = LAI · Gsto + Gins

T2m − Tmin
=
Topt − Tmin

The values used are Tmin = 2◦ C, Topt = 22◦ C, Tmax =
37◦ C, and T2m is 2-meter temperature given by the meteorological data (of course also given in ◦ C).

Here the numerator is absolute viscosity and the denominator is air density.

z0,w,rough = min 2 · 10−3 , 0.018

Temperature scaling is done using minimum, optimal and
maximum temperatures, however, for simplicity, I have
not done this for each canopy type. I picked average values from Simpson et al. (2012). Not the best for tropical
forests, so feel free to revise it.
fT 2

(62)

Psf c
T2M Rair

(65)

I will let others decide whether 500 is a suitable value.

where ν is kinematic viscosity for air, calculated from
surface pressure (Psf c ), temperature (2-meter temperature T2M ) and gas constant for air (Rair ):
6.2 · 10−8 T2M

P AR(t)
500

SAI(N )
1
+
O3
rext
Rinc (N ) + Rgs
(N )

(67)

SAI(N ) is the surface area index for vegetation type N ,
which is LAI plus some value representing cuticles and
other surfaces, having external leaf resistance of rext =
2000FT s/m, where FT is a temperature correction factor
for temperatures below −1◦ C. Note that FT has an upper
limit of 2, hence has a range of 1–2:

(64)

where LAI is the leaf area index (zero for non-vegetated
surfaces), Gsto is the stomatal conductance and Gins is
the non-stomatal conductance.

FT = exp(−0.2(1 + Ts ))

This is the so-called big leaf assumption, where Gsto
is leaf stomatal conductance. It is fetched from the
MEGANv2.10 module (see Section 8.6), for each of the
vegetation types. An average is calculated to use in the
dry deposition scheme. The LAI used, is the Oslo CTM3
field taken from ISLSCP2/FASIR.
It is also possible to use a monthly mean Gsto , and
there are fields available from the LPJ group (provided
through HYMN project). These are, as far as I understand, canopy stomatal conductances, which should not
be multiplied by LAI.

;

1 ≤ FT ≤ 2

(68)

We assume that Ts in this equation is the surface temperature, i.e. 2-meter temperature T2M . Temperature unit
is ◦ C.
In general we have that SAI = LAI for all land types,
but there are three exceptions. The first two exceptions
are forest and wetlands, for which we set SAI = LAI +1.
The last exception is for cropland; during the first part
of the growth season SAI = LAI · 5/3.5 while for the
second part SAI = LAI + 1.5. In winter, cropland act
as a non-vegetated surface with SAI = 0.
The two parts of growth seasons are simply defined:
NH: day 90–140 and 141–270.
SH: day 272–322 and 323–452 (i.e. day 87).

Stomatal conductance
Note that EMEP2012 calculate Gsto from a maximum
stomatal conductance gsto multiplied by functions to take
temperature, light, etc. into account. However, when
using Gsto from MEGAN, the light dependency is already

In this way, vegetation affects the conductance also by
being there, not only by uptake through the stomata.

31

Oslo CTM3 user manual

November 6, 2018

Table 9: Land-use properties in the new dry deposition treatment.

1
2
3
4
5
6
7
8
9
10

Adding it up
3
For each land-use type N we now calculate GO
ns (N ) according to Eq. (67) using the land-type specific SAI,
O3
Rinc and R̂gs
corrected by FT and fsnow . Then we
make a gridbox average using the according land-type
fractions (fL ):

Vegetation R̂cO3 R̂cSO2
SAI
h [m]
Forest
200
– LAI+1
20∗
Crops
200
–

0.4
Moorland
400
–
LAI
0.7
Grassland
1000
–
LAI
0.4
Wetland
400
50 LAI+1
0.5
Tundra
400
500
LAI
0
Desert
2000
1000
0
0
Water
2000
1
0
0
Urban
400
400
0
0
Snow/ice
2000
1000
0
0
–: Calculated, see text.
∗
: 20 m up to 60 N/S, 6 m from 75 N/S.
Interpolated 60–75Ṅ/S.
: Season dependent, see text.

Nmax
3
GO
ns,tot =

h(N )
u∗

3
GO
ns (N ) · fL (N )

Finally, we have the gridbox average RcO3 :
RcO3 =

1
3
LAI · Gsto + GO
ns,tot

RcN H3 = β F1 (T2M , RH) F2 (asn )

where h(N ) is the canopy height and b = 14 s is an empirical constant. The in-canopy resistance is not affected
by temperature or snow in EMEP2012, and is of course
zero for non-vegetated surfaces.

where β = 1/22 is a normalising factor, and

−1

(70)

SD,max



(76)

(77)

If you run the Oslo CTM3 without the nitrate and sulphur modules, asn should be read from a monthly model
climatology.
– SO2 –
The EMEP2012 treatment is based on an empirical formula for vegetated surfaces, using the 24 hour mean molar ratio of SO2 /NH3 (a24h
sn ):
SO2
−1.67
Rns
= 11.84 exp(1.1 a24h
sn ) fRH

Snow cover
Snow cover does complicate the treatment slightly, because it depends on the land-type category: While
e.g. 10 cm of snow may be enough to cover grass, it is not
enough to cover forest. So we calculate a snow cover fraction using the snow depth SD available through the meteorological data (note that this is given in meter equivalent
water, so we multiply by 10 to get snow depth in meter):
10 SD
0.1 h(N )

100 − RH
7

See Simpson et al. (2012) for references.

Table 9 lists all land-use types and according values of
O3
SO2
h(N ), SAI(N ), R̂ns
(N ) and R̂ns
(N ). Forest vegetation
height is assumed to be 20 m up to 60 degrees latitude,
and 6 m poleward of 75 degrees. From latitudes 60–75
a linear interpolation is carried out.

=



F2 = 10−1.1099 asn +1.6769

Note that EMEP2012 uses 2fsnow with a range of [0,1].
This is explained weirdly in Zhang et al. (2003), but we
stick to using fsnow with range [0,1].

SD

F1 = 10 log10 (T2M + 2) exp

(75)

where RH is relative humidity in percent, and

O3
The term Rgs
(N ) is found from tabulated values of
O3
all land-types (R̂gs
), corrected by FT and snow cover
fsnow (N ):

fsnow (N ) =

(73)

– NH3 –
RcN H3 is treated separately using the molar ratio of
SO2 /NH3 :
[SO2 ]
asn =
(74)
[NH3 ]
An upper limit of 10 is assumed, and this limit is also
used for [NH3 ]=0. Using the 2 m temperature (T2M ) we
have that for T2M > 0◦ C:

(69)

1 − fsnow (N )
fsnow (N )
1
=
+
O3
O3
O3
Rns
(N )
Rsnow
R̂ns
(N )

(72)

N =0

Rinc is the in-canopy resistance, defined for each vegetated land-type N as
Rinc (N ) = b SAI(N )

X

(78)

Here a24h
sn is limited to 3, and fRH is fractional humidity (0–1). Minimum and maximum limits of 10 s/m and
1000 s/m, respectively, are imposed, and if fRH = 0 we
assume maximum value.
Additionally, there is a temperature dependent limit for
SO2 , using the 2 m temperature (T2M ):
SO2
Rns
= 500 s/m for T2M ≤ −5◦ C and
SO2
Rns
= 100 s/m for −5◦ C < T2M ≤ 0◦ C.
For non-vegetated land surfaces, tabulated values
SO2
R̂ns
(N ) are used (Table 9, modified with FT similarly
as explained for O3 :

(71)

This is carried out for each land-type, under the simple
assumption that SD,max = 0.1 h(N ), where h(N ) is the
canopy height for the given land-type N . For O3 we
O3
assuming Rsnow
= 2000 s/m as in EMEP2012, constant
for all temperatures.
From the equations above, we see that this means that
both the SAI-term and Rinc are unaffected by temperature and snow.

32

1 − fsnow (N )
fsnow (N )
1
=
+
SO2
SO2
SO2
Rns
(N )
Rsnow
R̂ns
(N )

(79)

Here we have
SO2
Rsnow

T2M ≤ +1◦ C

=

70

=

70 · (2 − T2M )

− 1◦ C ≤ T2M < +1◦ C

=

700

T2M ≤ −1◦ C

(80)

Oslo CTM3 user manual

November 6, 2018

The total conductance is then
Nmax
2
GSO
ns,tot =

X
N =0

1
fL (N )
SO2
(N )
Rns

sulphate and SOA, however, we use the EMEP treatment
(Simpson et al., 2012). They give the dry deposition velocity vd as

(81)

Vd
=
u∗

and because RcSO2 does not have a SAI term:
RcSO2 =

1
2
GSO
ns,tot

(82)

– Other gases –
Other gases (except CO; see below) are interpolated using
conductances from O3 and SO2 ;
(84)


a1

=

a2

=

=

Gins,tot

−a2
L

2/3 i

:L<0

(87)

0.002
max(0.002, 0.008 SAI
)
10

non-forest
(88)
forest

300 m

(89)

In principle, a1 could differ from dry to wet surfaces. This
is not yet taken into account for sulphate, MSA, nitrate
and SOA. For BC/OC, however, we have calculated our
own parameters based on mean values of Oslo CTM2 for
water, land and ice surfaces, as well as the annual mean
friction velocity (u∗ ):

where H∗i and f0i are taken from tables in Wesely (1989),
also listed in Table 8. From these we find the surface
resistance for gas i:
1

h

a1 FN 1 +

The parameters a1 and a2 are

– HNO3 –
The surface resistance of HNO3 is generally very small,
but is reduced at cold temperatures.
We follow
EMEP2012, but with a minimum value of 1 s/m instead
of 10:
HN O3
= max(1, −2 T2M )
(83)
Rns

Rci

:L≥0

a1

where FN = 3 for fine-nitrate and ammonium, and FN =
1 for all other aerosols. Simpson et al. (2012) limit this
to 1/L < −0.04 m−1 , which means that for −25 < L < 0
we use L = −25 in Eq. (87).

If you run the Oslo CTM3 without the nitrate and sulphur modules, a24h
sn should be read from a monthly model
climatology.

i
O3
2
Gins,tot = 10−5 H∗i GSO
ns,tot + f0 Gns,tot

(

(85)

a1,L

=

a1,W

=

a1,I

=

Vland
u∗
Vwater
u∗
Vice
u∗

(90)
(91)
(92)

There is no need of doing this calculation for each landuse type, as the interpolation itself introduces uncertainties, and because there are so little data available on nonstomatal resistances, this simpler scaling is acceptable
(EMEP Report 1/2003).

The V -values are defined in the BC/OC module (Section 14) as 0.025 cm/s, with the exception of hydrophilic
aerosols over wet surfaces which use 0.2 cm/s.

In Oslo CTM3, this method is applied for PAN, H2 O2 ,
NO2 , NO, HCHO and CH3 CHO.

7.2.5

– CO –
CO uptake is very small and the Oslo CTM2 parameterisation, namely a fixed deposition rate of 0.03 cm/s over
forest and grass lands.
Note on stability scaling
The old deposition scheme adjusted dry deposition velocities according to stability, following:
vd
vd,adj =
(86)
1 + vKdzz

If CH4 emissions are included (Section 8.9), a soil sink
also has to be included: CH4 is taken up in soils by
microbacteria, and this process can be modelled as dry
deposition. In Oslo CTM3, this requires a deposition velocity, which currently is calculated from two datasets;
soil uptake in kg/s from a dataset provided by Bousquet
(Section 8.9), and CH4 mass in the surface gridboxes of
T42L60 resolution, calculated during the HYMN project.
The routines taking care of this are located in the file
ch4routines.f90.

where z is the mid-point of the surface layer and Kz the
eddy coefficient calculated by the boundary layer mixing
routine. Physically, it is the mixing of the surface level
that is reduced, and it is carried out for species using the
old treatment at the end of setdrydep, and the unit is
still [m/s].
This scaling is not used for the EMEP parameterisation,
which already takes stability into account through u∗ and
other meteorological variables.

7.2.4

Soil uptake of CH4

7.2.6

Inside or outside chemistry?

There are two ways to treat deposition in the Oslo CTM3;
the Oslo way and the UCI core method.
In the UCI core method, tracers are removed by deposition as a separate process in the operator split loop. This
allows for better control over diagnostics.
The Oslo method is to treat dry deposition as a loss
term in chemistry, along with treating emissions as source
terms. You define the method you need in the user specified section of Makefile. This is described in Section 8;
remember that this also moves emissions into chemistry.

Technical description: aerosols

The sea salt (Section 16) and mineral dust (Section 15)
modules have their own deposition routines. For BC/OC,

33

Oslo CTM3 user manual

November 6, 2018

8.1.1

Note that e.g. mineral dust and sea salt modules have
their own deposition calculations.

In the traditional Oslo chemistry method, the emissions
are treated as chemical source terms (and deposition as
a sink). This method aims to combine several of the
operator split processes in one.

The two methods should be tested thoroughly against
each other.

7.2.7

UCI dry deposition

It is in principle possible to use the UCI CTM deposition
scheme, which is very simple, listing deposition velocities
for 3 different soil types (listed in the old scavenge list
scavng55.dat).

7.3

Emissions in chemistry

Uptake on aerosols

One advantage of this treatment is a quasi steady state
between sources and sinks, so that parts of what is emitted is also lost (when a sink is present). This method
will give smoother time series, since the sources and sinks
compete in the calculation.
At the moment this is the default treatment in
Oslo CTM3.

8.1.2

A third option for scavenging of gases is uptake on
aerosols. This may involve reactions which release products back to the atmosphere, and is thus sometimes referred to as heterogeneous reactions.
Currently, there is only tropospheric uptake of N2 O5 ,
producing HNO3 , and uptake of HO2 and RO2 . In the
stratosphere there are a few other aerosol uptake processes.

Emissions as a process

The
other
approach
is
the
UCI
method
(EMISDEP_TREATMENT :=U in Makefile), treating emissions as a separate process (routine SOURCE). Emissions
are put directly into the tracer array (as mass, kg),
before they are mixed in boundary layer mixing and
then the chemistry is calculated. For this method, the
emissions may impose a large change in the concentrations, causing a larger adjustment in the chemistry. It is
important to do boundary layer mixing after emissions
to reduce the artificial impact in the surface layer.

The tropospheric uptake is in the process of being revised.

8

With this method it is possible to better diagnose every
step of the operator split processes. This is useful for
evaluating the model and its resolution (e.g. time step vs
convergence).

Emissions

After extensive testing is carried out, this may eventually
become the default emission treatment in Oslo CTM3.

Emissions can largely be divided into surface, lightning
and aircraft emissions. Surface emissions can further be
divided into anthropogenic, biomass burning (often distributed vertically), natural biogenic, natural oceanic and
natural soil emissions.
How emissions are treated in Oslo CTM3 is explained in
Section 8.1, before a short note on NOx. How to set up
different emission sets and include new sets are described
in Section 8.3.

Important
Note that e.g. sea salt has separate production routines,
using QSSA. This will have to be revised if you want
sea salt production as a separate process (see also Section 16.2). Probably less straight-forward is to change
the mineral dust production from DEAD treatment to
a separate source.

Different types of emissions are explained in the following
sections.

8.2

Note that emissions are always stored with units of kg/s.
When used as chemical production terms, the units are
converted to molecules/cm3 /s.

NOx is treated as a family in the Oslo chemistry. Traditionally this NOx family was also transported, but since
all its components are transported there is no longer need
for the family to be transported, and hence not emitted.

8.1

8.3

Emissions treatment

Important about NOx

How to set up emissions

The
emissions
are
listed
in
the
file
Ltracer_emis_xxxx.inp, where xxxx is e.g. eclipse_V5.
You will find some information at the top of the file,
followed by a section with flags and data for special
emissions (e.g. aircraft emissions). After this the 2D and
3D monthly emissions are listed separately.

Emissions can be treated in two ways in the Oslo CTM3.
• Inside chemistry as a chemical source (Oslo method,
Section 8.1.1).
• As a separate process (UCI method, Section 8.1.2).

Next, there’s a section containing static fields used in
the model to generate other relevant emissions, e.g. emissions that are be updated more frequently. The section is

The choice of approach is set in Makefile, by the variable EMISDEP_TREATMENT. The default choice is the Oslo
treatment until extensive testing has been carried out.

34

Oslo CTM3 user manual

November 6, 2018

named STV for short term variation. Examples are DMS
emissions, volcanic emissions and dust emissions.
Finally, there is a section for biomass burning, denoted
’BBB’.

•

The emission datasets are described in next Sections,
however, here is a short how-to.
It is important to make sure you include all categories
you need; and that sources are not covered by different
datasets at the same time:
• aircraft emissions
• anthropogenic emissions
• biomass burning emissions
• lightning emissions
• natural biogenic emissions
• natural oceanic emissions
• natural soil emissions
• volcanic emissions
Some datasets are given for one year only, e.g. 2000, while
others are given for different years. If you want to interpolate between the datasets, the easiest way is to include
both datasets in the Ltracer_emis_xxxx.inp and apply
weightings for each dataset. E.g. for 2001 you can include 0.8 of the 2000 dataset and 0.2 of the 2005 dataset.

•
•

•

•

You should also be aware that some datasets, such as
ECLIPSE, include agricultural waste burning as anthropogenic emissions, while it is also present in the GFED
biomass burning datasets. You need to apply only one
of these. This will be explained in the subsections of
Section 8.11.
For each section in the emission list, the read-in structure
is shown first, with a more detailed explanation at the
bottom of the file. An example from the 2D section is
shown in Table 10.
The different variables to set are described at the bottom
of the file:
• ID: Tag referring to the format to read. When including a new set with a new structure, a new readin code has to be included.
• SCALE: Scaling factor which applies for the whole
dataset.
• RES: String describing the resolution; 1x1 for 1 degree, HLF for 0.5 degree, and ZP1 for 0.1 degree.
• MONTH: The month the dataset applies for. 99 is all
months.
• YEAR: The year the dataset applies for. 9999 is all
years.
• CAT: The category for the dataset. This is used for
diagnostics only, summing up emissions for each category.
• TYPE: Defines whether the field should be scaled with
area or not. 0 when field is not per area, 1 when field
is 1/cm2 and 2 when field is 1/m2 .
• UNIT: To define the unit of the dataset, so correct
scaling is applied in the emission routines. If per
area, it is combined with non-zero TYPE. 1 for kg/s,
2 for moelc/s, 3 for kg/y, and 4 for kg/month.
• DIURN: Flags a dataset for diurnal variation. See
Section 8.4.2 for more. 0 for no diurnal variation, 1
for RETRO local hour variations, 2 for +50 % from
8 am to 7 pm and -50 % from 8 pm to 7 am. DIURN=3:

35

8.4

Scaling with T and daylight, DIURN=4: Scaling with
daylight, DIURN=5: Heating degree day (HDD) scaling.
VERT: Flags whether 2D dataset should be distributed vertically on the lowermost model levels (altitudes about 0-16m/16-41m/41-77m/77128m). Several options are available, although
none are documented yet.
They should be
documented as soon as possible.
VERT=1:
0.25/0.125/0.125/0.5 (typical power/industrial combustion), VERT=2: 0.6/0.2/0.2/0.0 (typical residential heating), VERT=3: 0.3/0.4/0.3/0.0 (typical ship
emissions).
DATASET_NAME: The name of the dataset on file,
needed for e.g. netCDF files.
SCENYEAR: The year to extract data for – used for
read-ins where the file contains several years of data.
If the file only contain data for a specific year, this
is not used.
SPECIES: the component for which the dataset is to
be applied. If species differ from what the dataset
applies for, a scaling factor may be needed to account for differences in molecular masses (SCALING).
SCALING: Scaling factor for SPECIES, for the given
dataset. Use this for taking different molecular
weights into account, e.g. as shown for NO in Table 10.
Important: The scaling of components must take
into account differences in molecular weights. However, if the emission dataset is given in molecules,
such a scaling should not be included. See the two
NO/NO2 examples in Table 10.

Emission datasets

As already mentioned, there are several emission inventories available, and most are listed in the directory tables/EMISSION_LISTS. Usually, the natural and
anthropogenic emissions are separated into different
datasets. E.g. natural biogenic, oceanic and soil emissions may be taken from POET (Granier et al., 2005;
Olivier et al., 2003). Biogenic emissions may rather
be taken from more recent MEGAN datasets, but note
that MEAGAN does not comprise oceanic emissions,
nor soil emissions of NOx . Recently, a newer MEGAN
dataset has become available, the so-called MEGANMACC (Sindelarova1 et al., 2014). Anthropogenic emission datasets are e.g. CEDS, RETRO, Lamarque et al.
(2010), EDGARv4.2 or ECLIPSE.
You specify which emission datasets to include in the
emission list Ltracer_emis_xxxx.inp. See Section 8.3 for
a description on this.
All these emissions are read by the routine emis_input in
emissions_oslo.f90. Any dataset can in principle be used,
although you may have to include new read-in routines.
There are currently no studies on which dataset is the
best, and how they affect the model results. Generally,
the newer datasets should be better because they are
more up-to-date. However, some datasets lack seasonal
variation, which could be important for your study.
Note that some specific components need more
specific/hard-coded parameterisations, like forest fires

Oslo CTM3 user manual

November 6, 2018

Table 10: Structure of the emission file Ltracer_emis_xxxx.inp. Note how NO and NO2 are scaled when
data is given as kg or molecules.
-2D-- 2D emissions ------------------------------------------------------filename / description (See detailed description below)
ID
SCALE
RES MONTH YEAR CAT TYPE UNIT DIURN VERT DATASET_NAME SCENYEAR
SPECIES SCALING (’xxx’ to close dataset)
’/full_path/some_emission_file_of_anthropogenic_CO_2000_0.5x0.5.nc’
601
1.0000d+00 HLF
99 9999 AGR
2
0
1
0
’emiss_agr’ 0000
CO 1.d0
xxx 0 To close this data set
’/full_path/some_emission_file_of_anthropogenic_NO_2000_0.5x0.5.nc’
601
1.0000d+00 HLF
99 9999 AGR
2
0
1
0
’emiss_agr’ 0000
NO 0.96d0
NO2 0.0613333333d0
# NO on file: 0.04*46/30
xxx 0 To close this data set
’/work/projects/cicero/ctm_input/EMIS/RETROEMIS_NEW/soils.nox.nc’
0000
601
1.0000d+00 1x1
99 9999 BIO
1
1
0
0
’bio’
NO 0.96d0
# molecules on file, no need to scale NO2/NO
NO2 0.04d0
xxx 0 To close this data set

8.4.2

(Section 8.5) and aircraft emissions (Section 8.7).
Such emissions are updated by update_emis in emissions_oslo.f90.

8.4.1

Diurnal scaling

Diurnal variations can be imposed on the 2D
monthly/annual datasets. This is done by setting the
DIURN flag in Ltracer_emis_xxxx.inp. The DIURN flag
is described below, and Ltracer_emis_xxxx.inp in Section 8.3).

Monthly & annual emissions

The DIURN can either scale to local hour or by a 2D field.
Local hour scaling emits more during certain hours than
at other, presently with an hourly temporal resolution.
Scaling the dataset to a 2D field usually means that it is
scaled by meteorological properties such as temperature.
These scalings need reference fields, e.g. on monthly basis.

The monthly and annual emissions can be
2D or 3D. 2D fields are stored in the array
E2DS(IPAR,JPAR,NE2DS,ETPAR), where NE2DS is usually 1, but can be 6 if you want moments included
(described below). ETPAR is the max number of tables,
and there is a counter for the actual number of tables
used, NE2TBL.
If you have emissions as a separate process (UCI method),
and if the emissions are on a higher resolution than the
model resolution and you want higher accuracy for where
emissions are put out, it is possible to include moments
in the 2D emissions. To do this you have to hard-code
NE2DS=6 in cmn_size.F90). This is only for experienced
users. It is probably wise to leave out moments for horizontal resolutions higher than T159.
When treating emissions inside chemistry, the moments
cannot be included (NE2DS=1).

Available diurnal variations
When the flag DIURN is set for a dataset listed in
Ltracer_emis_xxxx.inp, a diurnal variation is applied to
the dataset. Currently the possibilities are
• DIURN=0: No diurnal variation.
• DIURN=1: RETRO variations (TNO2 ).
• DIURN=2: +50 % from 8 am to 7 pm and -50 % from
8 pm to 7 am.
• DIURN=3: Scaling with T and daylight.
• DIURN=4: Scaling with daylight.
• DIURN=5: Heating degree day (HDD) scaling.
If you need other scalings, inclusion of new ones should
be rather straightforward once you know the system.
DIURN=1 and DIURN=2 can in principle be set up to work
on 3D fields, but is currently not used.

There can be max E3PAR 3D fields, and they are given
in E3DSNEW(LPAR,IPAR,JPAR,E3PAR), which is changed
from the UCI core due to striding in the original
E3DS(IPAR,JPAR,LPAR,E3PAR). The counter for used
fields is NE3TBL.
Forest fires are treated separately (Section 8.5) and
there are also some other short term variations based on
monthly or annual data (Section 8.4.4).
The Oslo CTM3 should in general be modified to read
monthly emissions each month, to save memory requirements.

36

Local hour scalings
These are found in the variable E2LocHourSCALE and
of size 24,NECAT,NE2LocHourVARS and are defined in
cmn_oslo.f90 and set in emisutils_oslo.f90, routine
set_diurnal_scalings
RETRO variations
2 Nederlandse Organisatie voor Toegepast Natuurwetenschappelijk Onderzoek

Oslo CTM3 user manual

November 6, 2018

DIURN=1 sets the RETRO variations (TNO3 ). There is
one scaling per category.

temperature scaling is carried out using temperatures for
the whole day/night. You set this option by DIURN=3 in
the emission list.

Note that these work for pre-defined categories.
Heating degree day (HDD) scaling
HDD is defined as a difference temperature in Kelvin:

+50 % −50 %
DIURN=2 sets +50 % from 8 am to 7 pm and -50 % from
8 pm to 7 am.

HDD = max(0, 288.15 − Tsf c )

Variations with T and daylight
Some species, typically naturally emitted isoprene and
monoterpenes, are emitted only during daytime, whereas
the emission files are usually monthly or annual means.
In Oslo CTM3 we have the possibility to scale surface
emissions so that they are emitted only during daytime.
In addition, it is possible to scale according to temperature, i.e. daytime temperature. In other words, these
are more complex diurnal scalings than the local hour
predefined scaling.

Weighting the surface temperature Tsf c by the time steps
of the meteorological data (3 hr), HDD has been summed
up on monthly and annual basis, giving the fraction of
monthly to annual HDD. This is done for specific years.
To be applied monthly on annual data of units kg/s, this
fraction has to be converted to a scaling by multiplying
with 12; the sum of the 12 scalings for a grid box should
not be 1, but 12, because we are scaling up or down
annual mean kg/s and applying it for different months.
This is so far only set up on a monthly basis, but could
in principle be updated every meteorological time step.
Stohl et al. (2013), however, found that using a monthly
variation was a good approximation.

Monthly-based daylight scaling
The daylight scaling is a 2D field of the fraction of daylight hours during the month, which we denote fday . It is
possible to modify this to a daily basis, but the monthly
basis was chosen to match monthly emissions.

8.4.3
For each hour we check if there is daylight, and scale up
the emissions E:
Eday = E/fday

(93)

During night there is consequently no emissions, except
that when there is polar night, i.e. no daylight during
a day, we set fday = 1. This is of minor importance for
species such as isoprene and monoterpenes, which should
have very small emissions during the polar night. You
set this option by DIURN=4 in the emission list.
Monthly-based day-temperature scaling
Another surface scaling field is based on temperature and
daylight for the years 1997–2010 using our T42L60 meteorological data (ECMWF IFS cycle 36r1).
This method is based upon Guenther et al. (1995), who
described the effect of temperature on emissions of VOCs.
They found that the emissions E could be described by
variation around a standard emission Es at a standard
temperature Ts :
E

=

Es fT

=
1

Vertical distribution of 2D emissions

For 2D emission datasets, it is possible to distribute
the emissions into four of the lowermost model layers.
These layers roughly cover surface–16 m, 16–41 m, 41–
77 m and 77–128 m (the actual thickness depends on surface pressure, temperature and specific humidity, see Appendix C.2).
The distributions are not documented yet, but were used
in Oslo CTM2:
• VERB=0: All in surface layer.
• VERB=1: 0.25/0.125/0.125/0.5, typical for power and
industrial combustion.
• VERB=2: 0.6/0.2/0.2/0.0, typical for residential heating.
• VERB=3: 0.3/0.4/0.3/0.0, typical for ships.
Defined in cmn_oslo.f90, there are NE2vertVARS distributions, and the distributions are stored in the variable
E2vertSCALE.

(94)

(T −Ts )
exp C1RT
sT
(T −Tm )
+ exp C2 RT
sT

8.4.4



fT

(96)



Short term variations

(95)

Three empirical constants are used here: Tm = 314 K,
C1 = 95000 and C2 = 230000.
Using fT in Eq. (95), a standard temperature Ts = 303 K,
and 3-hourly surface temperatures from our 1997–2010
meteorology, we have computed climatological monthly
means of fT , namely fT clim . When applied to a monthly
emission inventory, we calculate Es from Eq. (94), using
fT clim . Since Es is the climatological emissions at the
standard temperature, we can each hour in the model
scale with fT using T at that time step.
Note that this method is also taking only daylight into
account, as described above, except in polar night, where
3 Nederlandse

Organisatie voor Toegepast Natuurwetenschappelijk Onderzoek

37

Some emissions are not given on monthly or annual basis,
but depend strongly on e.g. wind or temperature. Examples are DMS from ocean and sea spray. Organic matter
from sea spray is also difficult to retrieve from a separate
monthly dataset.
The STV section of the emission list allows inclusion of
some of these datasets.
DMS from ocean
DMS is emitted continuously from ocean water, and those
emissions are parameterized using climatological concentrations of DMS for each month, combined with winds
from the meteorological data. See Section 13.1 for more.
The concentration is read into DMSseaconc, and has units
of nM (nanoMolar), i.e. nmole/L. The units are then converted to kg/m and multiplied with a velocity based on

Oslo CTM3 user manual

November 6, 2018

Table 11: Biomass burning variables used by the Oslo CTM3. Default FF_TYPE is 9 (or 8 if daily fractions
are not available).
Variable
FF_TYPE

Option
4
5
51
6
7
8
9

FF_YEAR
FF_PATH

9999

Description
GFEDv4 monthly (code 567)
CEDS monthly (code 568)
CEDS monthly (code 574), distributed according to
model level thickness in the boundary layer.
GFEDv4 monthly (code 569), distributed according to air mass in the
boundary layer.
GFEDv4 daily (code 570), distributed according to air mass in the
boundary layer.
GFEDv4 monthly (code 571), distributed according to
model level thickness in the boundary layer.
GFEDv4 daily (code 572), distributed according to
model level thickness in the boundary layer. DEFAULT.
Use current meteorological year (MYEAR), or specify which year to use.
Path to where emissions are.

the wind speed. This is carried out in the SOURCE routine
or in emis4chem_oslo when using emissions as production terms in chemistry.

to this, the forest fires need to be coded separately.
It is recommended to use daily GFEDv4 emissions, distributed in the boundary layer, using the format code 572
in the emission list, i.e. daily emissions. If daily emissions are not available (years prior to 2003), you should
use monthly emissions (code 571). Some other options
for GFEDv4 are described below.

Organic matter from ocean
The emission of organic matter from ocean follows Gantt
et al. (2015), based on chlorophyll A and sea spray.
Sea spray is taken from the sea salt module if it is included. Several schemes are available, as described in
Section 16.1, using the flag SeaSaltScheme. If the sea
salt module is not included, this sea spray is calculated
by the organic matter emission routine, using its own flag
SeaSaltScheme.
Oslo CTM3 use Chlorophyll A from MODIS, where
monthly data for the years 2003–2014 are available. A climatology for the same years have been generated, and the
user specifies whether to use the climatology or not in the
emission list.
The MODIS monthly mean data are fetched from
https://oceancolor.gsfc.nasa.gov/cgi/l3 where you download the files V*.L3b_MO_CHL.nc by clicking on the
lower right corner of each thumbnail. The files are hdf5,
even if the extension is .nc. Before 2015, the files were
hdf4, with different names.
I have stored the original files at /div/amoc/d4-4/osloctm//modis_chlorophyllA/.
Files (both hdf5 and hdf4) are converted to netcdf using IDL program read_chla.pro (located in the utilities
directory) which applies the program readl3bin_nc.pro.
The climatology is generated from netCDF files using the
IDL program chla_avg.pro.
DUST emissions
Emissions of mineral dust should be defined in the STV
section, as explained in Section 15.3.1.

8.5

Forest fires emissions

Several species are affected by forest fires, and emissions
may be updated more frequently than each month. Due

38

The code defines FF_TYPE, while the year defines FF_YEAR
and the path defines FF_PATH. See Table 11.
A diurnal cycle is further added, according to Roberts
et al. (2009), putting increasing daytime emissions by
90 % (7–19 local hours) and reducing nighttime emissions
to 10 %.
An alternative dataset to GFEDv4 is monthly CEDS
biomass burning, which you set up with the old vertical
profile (code 568) and the altitude weighted boundary
layer profile (code 574).
You find the inputs to the emission list in
Ltracer_emis_biomassburning.dat
in
EMISSION_LISTS. The list includes scaling factors for
different species.
Historically, the biomass burning emissions have been distributed in the vertical by a distribution from RETRO.
This should be left behind, as it is not very physical.
We rather distribute the emissions within the boundary
layer. The old profile probably put too much above the
boundary layer, so with the new method, over-shooting
is reduced.
If over-shooting is needed, you should make a distribution
on the emission strength in the emission dataset, and for
the strongest sources (e.g. defined by 90-percentile) select
the grid boxes where over-shooting may occur.
Two test options are included, distributing emissions according to air mass in the boundary layer (air mass
weighted), namely code 570 (FF_TYPE=6, monthly emissions) and 571 (FF_TYPE=7, daily emissions). These put
emissions a bit closer to the surface than the altitudeweighted profile.
The read-in is called from update_emis (in emis-

Oslo CTM3 user manual

November 6, 2018

sions_oslo.f90, and there you can see which routines are
called for the different choices.
Note that the daily fractions require the monthly field
to be read every day (for the future, consider storing it).
The daily fractions have to be applied prior to regridding.
The species emitted are listed in the BBB section of the
emission list, and are typically CO, NOx, hydrocarbons,
NH3 , SO2 and black and organic carbon. The emissions
are distributed vertically based on RETRO vertical distribution.
The number of components treated is given as NEFIR,
with an upper limit of EPAR_FIR. Their transport
numbers are given in ECOMP_FIR(EPAR_FIR) and emissions are stored in the array EMIS_FIR with dimension
(EPAR_FIR_LM,EPAR_FIR,IDBLK,JDBLK,MPBLK). The array structure makes it easy to use with very little striding.
Note that the read-in from file is placed outside the parallel region of the model, because the interpolation is parallelized.

Modifications to MEGAN code

The MEGANv2.10 code has been adopted to Oslo CTM3,
in other words stripped and cleaned up to fit the
Oslo CTM3 structure. Input to MEGAN is through
megan_tables.dat, found in the tables/ directory.
Here is a list of the tables (in appearing order):
1. Megan original species (20 of them). Note that soil
NOx is included, even if it is not described by (Guenther et al., 2012).
2. Canopy types, or plant function types (PFTs).
There are 16 of these, listed in Table 13, and
stored in the variable landSurfTypeFrac. See also
Section 20.5.
3. Canopy Characteristics, listed in Table 13.
4. Emission factors for the 20 MEGAN species for
each canopy type. This is Table 2 in Guenther
et al. (2012).

Other variables used for determining species and file
names, which are read from emission list, are:
• FF_CNAMES: Emitted component.
• FF_BNAMES: Component name used in file name.
• FF_SCALE: Scaling factor.
• FF_PARTITIONS: Partition factors (GFED only).
Forest fire partitions
It is possible to turn off specific partitions of the GFEDv4
data. There are six partitions:
• agriculture
• deforestation
• forest
• peat
• savanna
• woodland
The turning off is done by hard-coding the flags
partitions in the routine gfed4_rd_*, the read-in located in emisutils_oslo.f90.
One example where you have to do this, is for ECLIPSE
emissions of black carbon, where you have to turn off
agricultural waste burning (AWB), because it is included
in the ECLIPSE dataset. See Section 14 for more.

8.6

8.6.1

Biogenic emissions: MEGAN

The emission model MEGAN, version 2.10 (Guenther
et al., 2012), is included in the Oslo CTM3. You turn
it on by including it in the emission list (STV section),
as in Table 12.
Turn off other biogenic emissions! Make sure that
other biogenic emission datasets are not included in the
2D section of the emission list. Also NOx from soil emissions should be turned off.
The MEGAN model uses leaf area index (LAI) and roughness length (ZOI). See Section 20.6 and Section 20.7, respectively.
Here will follow a description of MEGAN and the changes
done for Oslo CTM3.

5. Emission factors for each specified species (151 of
those). In the MEGAN original, these should sum
up to 1 for each of the 20 species. Note that while
MEGAN originally does not take molecular masses
into account, we have to do this at least for NO and
NO2 . This is explained in the text.
Molecular weight: MEGAN does take into account
possible differences in molecular weights of the 20 species
when speciation to 150 species is done. This means that
it calculates a total mass for each of the 20 species, and
then distributes the masses on each component.
This may be problematic when species of very different
molecular weights are lumped together. E.g. if we want
to emit NO as 4 % NO2 or some other fraction as NH3 ,
it would distribute the total mass of NO, not considering
that NH3 is lighter or NO2 heavier.
Taking the molecular weight of the 20-species into account would solve this, but is clearly not what was intended in MEGAN.
NO, NO2 and NH3 : I have therefore kept the MEGAN
method, but for NO the speciation factors have to take
into account the difference in molecular weights. These
are thus scaled so that 4 % of NO is emitted as NO2 .
The total atmospheric source of NOx is 6 Tg(N) from
soil, based on towards a mechanistic model of global soil
nitric oxide emissions: implementation and space based
constraints (2012), assuming a total source of 7.5 Tg(N)
combined with canopy uptake of 20 %. Inclusion of NO2
makes it 151 speciated species in total.
Emission factors for the 20-species NO have been increased to match WRF factors. This increase is more
than conversion from N to NO. This gave an annual total
of 4.93 Tg(NO) for year 2000. We use the speciated factors to scale up to 12.85 Tg(NO)/year (i.e. 6 Tg(N)/year).
Putting 4 % on NO2 , we get speciated factors for NO =
2.50 and NO2 = 0.16 (taking conversion of NO to NO2
into account).
NH3 is also emitted from soils, and is scaled to match

39

Oslo CTM3 user manual

November 6, 2018

Table 12: Turn on the online MEGAN biogenic emissions by including this in the STV section of the
emission list.
-STV- Used for short time variations; only one species per field -----------’Indata_CTM3/MEGAN/’
557
1.00000d+00 HLF
99 9999 BIO
0
-1
0
’---’ 9999
--#This section defines the use of MEGAN and sets path to MEGAN datasets

GEIA totals of 7.32 Tg(NH3 ) (4.36 from crops and 2.96
as natural vegetation). Our value of 4.93 Tg(NO)/year
is used to estimate the NH3 speciation factor, i.e. 2.620.
Since MEGAN operates on mass, this scale will get us
the mass we need for NH3 (unlike NO2 where molecular
masses are taken into account, converting NO to NO2 on
the way into the atmosphere.
The sum of speciation factors for nitrogen components is
thus larger than one.
Global scaling factor: The global scaling factor Cce
is set to 0.466, to match the total isoprene emissions in
MEGAN-MACC (Sindelarova1 et al., 2014) for year 2000
(i.e. 572 Tg/yr), using 1982–1998 climatology of LAI and
z0. The scaling factor was originally 0.56 in the MEGAN
code, whereas e.g. CLM uses 0.4 (Guenther et al., 2012).

Aircraft emissions of H2 O are treated as a separate tracer,
since H2 O is not transported in the troposphere, and depending on your setup, maybe not in the stratosphere.
This separate aircraft H2 O tracer is given the tracer number 148, and must be transported. It is removed below
400 hPa according to Danilin et al. (1998), by assuming
a lifetime of 1 hour.

8.8

DI initialised: The Palmer severity drought index (DI)
was never initialised, and is set to zero. In the original
MEGAN code it was allocated and that supposedly set
it to zero also.
STRESS components: Some of the 150 species (e.g.
ethane) were assigned to 20-component number 19, but
named ’STRESS’, which is component 20. This was corrected, giving about 50% lower emissions due to the different emission factors.

8.6.2

There is no plume chemistry yet, as we have left the NILU
plume parameterisation behind, but this can eventually
be included.

MEGAN total emissions

The emissions of Oslo CTM3 species coming
from
MEGAN
are
diagnosed
following
the BUDGETS calendar,
and put in files
emis_accumulated_3d_megan_*.nc, similar to regular emission tendencies.
Table 14 lists the Oslo CTM3 MEGAN emissions for year
2000, matching the values in Guenther et al. (2012) fairly
well. While our isoprene is somewhat higher, other components are lower than in Guenther et al. (2012), mainly
due to different input datasets (LAI, roughness length,
temperature, photosynthetic active radiation). Note that
CH3 OH was included in this process – it was not accounted for in earlier versions of Oslo CTM3.

Lightning is a major contributor to NOx in the atmosphere, assumed to amount to 5 ± 3 Tg(N)/year (Shumann and Huntrieser, 2007). As will be described below,
we use a climatological value of ∼5 Tg(N)/year, i.e. the
emissions will vary somewhat from year to year due to
different meteorology.
To properly parameterise lightning emissions, a horizontal (geographical) distribution of lightning strikes must
be used, and then a vertical distribution must be applied.
In general, lightning flash rates in Oslo CTM3 are connected to the horizontal distribution of convection, thus
depending on the meteorological dataset you use. To convert to observed flash rates we need scaling factors, and
these will differ for different meteorological data (also for
different cycles or resolutions). A step-by-step recipe on
how to calculate these scaling factors is explained in Section 8.8.7, but first you should understand the horizontal
and vertical distributions.
The horizontal distribution of lightning NOx (L-NOx)
was updated in 2011 by Chris D. Holmes at UCI, and
was documented in Søvde et al. (2012). However, it was
locked to the T42 resolution, and had to be updated in
order to properly use higher resolutions. The current
version is documented below as OAS2015 (Section 8.8.1),
while the GMD version is documented as GMD2012 (Section 8.8.2). In addition, I have listed here also the 2015
version of UCI (UCI2015) and another method (AP2002).

8.8.1

8.7

Lightning emissions

Horizontal distribution – OAS2015

Aircraft emissions

Aircraft emission routines are located in emissions_aircraft.f90. You define which scenario (AirScen)
to use in Ltracer_emis_xxxx.inp, along with the path
to aircraft emissions (AirEmisPath). If you add new
emissions, the read-in will have to be updated. As for
other gaseous species, the emissions are added to the
global emission arrays.

40

The Price et al. (1997) equations for flash rates over land
and ocean are the basis for Oslo CTM3 L-NOx:


f (~
x, t) =

fL (~
x, t) = sL PL (~
x, t)
fO (~
x, t) = sO PO (~
x, t)

over land
over ocean

(97)

where PL and PO are the Price et al. (1997) equations
for a given location ~
x and time t, but without scaling
factors. sL and sO are scaling factors, however, the Price

Oslo CTM3 user manual

November 6, 2018

Table 13: Canopy types (PFTs) and canopy charac- Table 14: MEGAN annual emissions in Oslo CTM3,
teristics used in MEGAN.
for year 2000.
#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Canopy type
Needleleaf evergreen temperate tree
Needleleaf evergreen boreal tree
Needleleaf deciduous boreal tree
Broadleaf evergreen tropical tree
Broadleaf evergreen temperate tree
Broadleaf deciduous tropical tree
Broadleaf deciduous temperate tree
Broadleaf deciduous boreal tree
Broadleaf evergreen temperate shrub
Broadleaf deciduous temperate shrub
Broadleaf deciduous boreal shrub
Cool/Arctic C3 grass
C3 grass (cool)
C4 grass (warm)
Crop 1 (Corn)
Crop 2 (Other crops)

#
1

Canopy characteristics
canopy depth (height above ground is
canopy height minus canopy depth)
leaf width
leaf length
canopy height
scattering coefficient for PPFD
scattering coefficient for near IR
reflection coefficient for diffuse PPFD
reflection coefficient for diffuse near IR
clustering coefficient (accounts for leaf
clumping influence on mean projected leaf
area in the direction of the suns beam) use
0.85 for default, corn=0.4-0.9; Pine=0.61.0; oak=0.53-0.67; tropical rainforest=1.1
leaf IR emissivity
leaf stomata and cuticle factor: 1=hypostomatous, 2=amphistomatous, 1.25=hypostomatous but with some transpiration
through cuticle
daytime temperature lapse rate (K m-1)
nighttime temperature lapse rate (K m-1)
warm (>283K) canopy total humidity
change (Pa)
cool (>= 283K) canopy total humidity
change (Pa)
normalized canopy depth where wind is
negligible
canopy
transparency
(included
in
MEGAN3)

2
3
4
5
6
7
8
9

10
11

12
13
14
15
16
17

Species
Isoprene
CO
Formaldehyde (CH2 O)
Methanol (CH3 OH)
Ethane (C2 H4 )
Propane (C3 H6 )
Acetone
α-pinene
β-pinene
Limonene
Ocimene
D3carene
Myrcene
Sabinene
Terpinolene
Terpinene
Terpene Alcohol
Sesquiterpenes
Terpinene-ketone
Toluene++ (Tolmatic)
Acetaldehyde (CH3CHO)
Dimethylbenzene++ (C6HXR)
Dimethylsulfide (DMS)
NO
NO2
NH3
Total VOC+CO

H is the cloud top height (km), which we represent by
the height of the uppermost grid box having convective
updraft mass flux coming into it.
Scaling factors
After PL and PO are calculated, they need to be scaled
to match observations. I.e. we need to find sL and sO .
In this process, we also use the scaling factors to change
units from flashes per minute (as in Price et al., 1997)
to annual fraction of flashes per second (the reason will
become evident in the next paragraphs).
Modelled total annual unscaled flashes for land and
ocean, respectively, are then

P

ftot,L = ~x,t PL ∆t
P
ftot,O = ~x,t PO ∆t

over land
over ocean

(99)

where ∆t is the model time step, which for Oslo CTM3
means the meteorological time step.

et al. (1997) scaling factors will most likely not be suitable
when using the global meteorological fields in the model.
Therefore, we generate our own scaling factors, so that
the flash rates calculated from meteorological data match
what is observed. These will be described below. PL and
PO are:
PL (~x, t) = H(~
x, t)4.92
PO (~x, t) = H(~
x, t)1.73

Tg/yr
572.27
92.74
4.94
127.95
29.52
13.90
36.09
58.87
18.57
10.67
15.22
7.37
7.68
8.22
1.11
2.10
4.14
21.36
2.87
1.53
24.43
1.48
1.45
12.62
0.81
7.30
1064.45

(98)

41

In other words, PL · ftot,L · ∆t through the year sums up
to 1 and PO · ftot,O · ∆t through the year sums up to 1.
Taking the observed fraction of ocean/land flashes into
account, we get total scaling factors:

sL

=

sO

=

fL,obs
fO,obs +fL,obs

ftot,L
fO,obs
fO,obs +fL,obs

ftot,O

(100)

(101)

Oslo CTM3 user manual

November 6, 2018

For each time step, we can now calculate PO and PL ,
and multiply them with sO and sL , respectively, to
get the annual fraction of flashes per second. Multiply by the time step and climatological annual emission
(e.g. 5 Tg(N)/year) and we have the amount emitted during the time step, over land and ocean separately.
Because a climatological value is assumed for the emission (e.g. 5 Tg(N)/year), the scaling factors should also be
generated for several years, to make climatological scaling
factors.
Scaling factors for IFS cy36r1
For IFS cy36r1, the scaling factors are calculated using
T42L60 meteorology, years 1997–2010, to get a climatological mean. For T159L60 resolution, only one year
(2007) is calculated and used together with the same year
from T42L60, to scale the T42L60 climatological factors.
Scaling factors for OpenIFS cy38r1
OpenIFS cy38r1 is only generated in T159L60, and the
scaling factors are calculated as a mean of 1995–2005.
When combining grid boxes 2 x 2, only the year 2005 has
been used.
Observed flash rates are taken from Cecil et al. (2014),
where the average flash rate over land is 36.9 fl s−1 and
9.1 fl s−1 over ocean, using the HRAC dataset (LISOTDHRAC, 2014). A climatological flash rate of 46 s−1 implies an average production rate of 3.45 kg(N) per flash,
or 246 mol/flash. An IDL program calculating these values is given by lightning_lisotd.pro in the IDL utilities.
Flash filter criteria
The challenge is to sort out which convective plumes that
produce lightning. If no filtering is carried out, small flash
rates can be found even in shallow convection. Based on
some of the UCI2015 method and also my own testing,
these are the best criteria I have found:
• Convective mass flux is filtered before use: If several intervals of fluxes are found, only the thickest
interval is used. Intervals of one or two layers are
disregarded.
• Convective mass flux below about 1200 m is disregarded to filter away some shallow convection. This
is calculated for each time step, but it can be noted
that prior to 2018, the layer was hard coded to layer
12 – based on average ECMWF 60-layer data. To
be more flexible with other meteorology, this was
changed to be calculated on the fly.
• Convective mass flux must reach at least 500 hPa.
• Entrainment into updrafts must be non-zero above
500 hPa.
• Maximum temperature in the cloud must be higher
than 270.5 K.
• Minimum temperature in the cloud must be lower
than 243 K.
Typically, a cloud needs both liquid and ice phase particles to produce lightning, so it is usually assumed that
minimum cloud/updraft temperature must be lower than
233 K and maximum temperature must be higher than
273 K. To allow for some uncertainty around this, we
include two scaling factors taking the temperature into
account.
• The first considers minimum temperature, linearly
increasing from 0 at 243 K to 1 at 233 K.

• The second considers maximum temperature, linearly increasing from 0 at 270.5 K to 1 at 280.5 K.
Note
As will be described next, GMD2012 use cloud fraction
to make grid averages. However, cloud fraction is an
instant meteorological field, while convective mass flux
is accumulated. To combine them is inconsistent, since
cloud fraction may be zero even if there were convective
flux during the accumulated period. Hence this approach
cannot be used.

8.8.2

Horizontal distribution – GMD2012

The GMD2012 L-NOx method documented by Søvde
et al. (2012) uses the Price and Rind (1992) equations
and measurements by Optical Transient Detector (OTD,
Christian et al. (1999a)) and Lightning Imaging Sensor
(LIS, Christian et al. (1999b)). The difference to the
OAS2015 scheme is the filtering of convective instances
producing lightning.
• There must be convective flux in the grid box column.
• The grid box average updraft velocity at ∼ 850 hPa
must be larger than 0.01 m s−1 .
• The surface temperature must be higher than 273 K
while cloud top temperature must be lower than
233 K.
In addition, the cloud fraction was used. Convective
vertical fluxes and the clouds that contain them occupy
a small fraction of the horizontal area of a model grid
square. Therefore, lightning also occupies a small fraction, a, of the model grid area. The grid-averaged lightning flash rate (f¯) is then
f¯(~
x, t) = a(~
x, t) f (~
x, t).

(102)

where a, the area fraction experiencing lightning, is estimated as a weighted average of the cloud fractions in the
column:
Plt
f w
l=1 c,l l
a(~
x, t) = P
(103)
lt
w
l=1 l
Here, fc,l is the cloudy fraction at level l, wl is the wet
convective mass flux at level l, and lt is the model level
at the cloud top.
The observed flash rate values used here was 35 s−1 for
land and 11 s−1 for ocean, as given by OTD-LIS observations during 1998–2005.
The grid box average flash rates are next constrained
to match the climatological averages of 35 s−1 for land
and 11 s−1 for ocean, as given by OTD-LIS observations
during 1998–2005. This is done by scaling factors βl and
βo for land and ocean, respectively, which in Oslo CTM3
also converts units from 1/min to 1/s. The final scaled
box average flash rate is:
f¯scaled (~
x, t) =



βl f¯(~
x, t)
βo f¯(~
x, t)

over land
over ocean

(104)

The average flash frequencies for our meteorological data
1999–2009 (ECMWF cycle 36r1, resolution T42L60), imply that βl = 6 and βo = 210. Søvde et al. (2012) presented the factors βl = 0.10 and βo = 3.50, but these

42

Oslo CTM3 user manual

November 6, 2018

were calculated using the original units of the Price and
Rind (1992) equations (flashes/minute) and were therefore a factor 1/60 smaller.
Compared to the Price and Rind (1992) coefficients, the
gridbox average flash rates are thus scaled up by about
6 over land and 200 over ocean to match observed flash
rates.

8.8.5

The parameterisation described by Grewe et al. (2001)
could be an option for Oslo CTM3, but this method is
rather similar to the current approach.

8.8.6
As for the OAS2015 method, scaling factors need to
be generated, thereby converting to fraction of annual
flashes.

8.8.3

There are other possible parameterisation, e.g. Allen and
Pickering (2002), where the cloud-to-ground (CG) flash
frequency (LFcg ) is calculated from the mass flux (M )
at 440 hPa. Hence, the convective plumes must reach
440 hPa, and the equation is
A
(a + bM + cM 2 + dM 3 + eM 4 )
A30

The vertical distribution (Ott et al., 2010) needs different
geographic regions to be defined, and these are taken from
Allen et al. (2010). The vertical profiles are scaled to
match the height of the convective plumes, as found in
the meteorological data.

(105)

where the coefficients a-e are different for land and water,
and:
0 < M < 9.6kg/(m2 min)
(106)
A is the grid box area, while A30 is grid box area at
30 degrees latitude (actually it was the area of a specific
size, but this will be of no consequence since we scale the
flash rates to match observations).
To account for intra-cloud lightning, CG fraction can be
found from the cold-cloud thickness (∆Z, Price and Rind,
1993), i.e. the depth (km) of the cloud above the freezing
level. In the model, it is calculated between cloud top and
the midpoint of the highest layer where the temperature
exceeds 273 K.
fCG

1
=
A∆z 4 B∆z 3 + C∆z 2 + D∆z + E + 1

(107)

In Eq. (107) it is assumed that ∆z is never smaller than
5.5 km. In addition, if ∆z > 14 km, fCG is set to 0.02,
acting as an asymptotic value. A = 0.021, B = −0.648,
C = 7.493, D = −36.54, E = 63.09.
The total flash rate for this scheme is then:
f=

LFCG
fCG

When the Oslo CTM3 was in its early start, UCI CTM
used a different vertical distribution, namely by Stockwell
et al. (1999). This treatment placed lightning emissions
too low in the atmosphere, and should not be used.

8.8.7

Lightning scaling factors

To match the lightning frequency in Eq. (97) to observed
values, we need to find sO and sL (Eq. (101–100). To
find proper values, at least a whole year of meteorological
data should be applied. Preferably, several years should
be used, to create a climatological mean.
This calculation is already done in the lightning subroutine lightning.f90. Accumulated flash rates for land and
ocean are calculated using the original Price and Rind
(1992) equations scaled to grid box averages, i.e. Eq. (97),
and from these the scaling factors are calculated. Running average values are printed to screen at the last meteorological time step of each day, average scaling factors
are printed to screen. When you start a simulation at
day 1, the annual average scaling factor is thus found at
day 365.

(108)

This method has been briefly tested in Oslo CTM3, but
I found the seasonal variation of globally averaged flash
rate to misplace when minimum and maximum occur,
ans also it was very noisy. While the annual horizontal
flash rate distribution was not too bad, the variation was
also very large. This method would therefore probably
not be used, but it is included in the source code anyway.

8.8.4

Vertical distribution

Many CTMs distribute L-NOx vertically by using the
vertical profiles of Pickering et al. (1998). Those profiles
have recently been revised by Ott et al. (2010), where the
“C-shaped” emission profile is replaced by a “backwardC” shaped profile, and is now the default distribution in
the Oslo CTM3.

Horizontal distribution – AP2002

LFcg =

Horizontal distribution – other

Horizontal distribution – UCI2015

The 2015 method of UCI is explained in the lightning
source code and will not be mentioned here. I have decided not to use it, because it has a very weak flash rate
seasonal cycle, and the distribution is not documented
anywhere. It is also not very physical when it comes to
filtering the convective lightning events.

43

The quickest way to generate scaling factors is to set
LIT=:Y in Makefile, and use a stripped pmain.f90 which
only reads meteorological data and calculates lightning.
When you have a new meteorological dataset, you should
let the model run through these calculations, and use the
new factors to replace scaleLand and scaleOcean.
If you have one year of e.g. T159L60 and T42L60, and
know the scaling factors for one of them, you may probably obtain suitable scaling factors without using the climatological values mentioned above, but instead calculate for one year of both datasets.
Alternative method
To make more specific calculations on the rates,
e.g. standard deviations, you can also specify
getFlashFiles=.true. in lightning.f90, to produce
files containing the 3-hourly flash rates for both land
and ocean. These files can be read using the IDL

Oslo CTM3 user manual

November 6, 2018

program lightning_flashrate.pro or the Fortran program
lightning_flashrate.f90, found in the repository utilities.
These files get rather big, and the IDL program may be
very slow for high resolutions.

8.9

CH4 emissions

Traditionally, CTMs have used fixed surface fields
of CH4 , because of its relatively long lifetime in the
atmosphere.
It is now possible to rather run the
Oslo CTM3 with emissions of CH4 . Whereas several
emission datasets include anthropogenic CH4 emissions
(e.g. EDGARv4.2 and ECLIPSE), natural emissions are
often not available. There is also soil uptake to be accounted for, a process that is not well quantified. Our
current natural CH4 source is generated by Bousquet
for the GAME project, providing emissions from biomass
burning, wetlands and oceans, and uptake by soil. This
dataset also contain anthropogenic sources, which is not
used in the Oslo CTM3.
What to remember when using CH4 emissions (also
described in the README file in model directory):
• LOLD_TREATMENT=.false. in strat_h2o.f90.
• Transport stratospheric H2 O, H2 and H2 Os;
this requires NPAR_STRAT to be increased by 3
and NOTRPAR_STRAT to be decreased by 2 in
cmn_size.F90. This means that in the tracer_list.d
file you have to to move H2 and H2 Os to the transported section. And you have to add tracer number
114 H2 O.
• Increase JPPJ in cmn_size.F90, and add H2O in
ratj_oc.d. The entry is listed at the bottom of the
file.
• Add H2O in FJX_spec.dat; entry at the bottom of
the file. You must also increase the first number on
the second line of the file by 1; if this is 62, you
change it to 63.
• Scale the CH4 emissions up or down to match steady
state. Or run the model until steady state is reached.
• Include appropriate CH4 emissions in the emission
file.
• If CH4 dataset includes agricultural emissions, you
need to turn off GFED emissions from that sector.
This is done by the partitions variable in emisutils_oslo.f90.
Stratospheric H2 O
When calculating CH4 emissions, stratospheric H2 O
must also be calculated. The old treatment, using the
sum of H2 , 2 x CH4 and a fixed sum of these two and
H2 O, will not hold when CH4 is allowed to increase or
decrease. That would require the sum of the three species
is allowed to vary (on short time scales, at least).
So when CH4 emissions are included, we also calculate
gaseous H2 O in the stratosphere. It has a tropospheric
source, due to upward transport, which is parameterized
assuming tropopause H2 O to be 3.7 ppm, but limited to
the saturation value (which is controlled by temperature).

Natural CH4 emissions are taken from Bousquet data,
given in a file called fch4.ref.mask11.nc. Its natural
sources are the fields biomass burning (bbur), wetlands
(wetlands) and other sources (other). The Oslo CTM3
also reads the field soils in the deposition routine, to
calculate surface dry deposition (see Section 7.2.5). Note
that when biomass burning is included from the Bousquet
data, the GFED data should not be used.
Important note
The CH4 emissions must probably be scaled up or down
to match the total loss in the model. If you are not
familiar with this approach, ask the experienced users.
Total CH4 loss is written to standard out every month,
and the emitted CH4 should match this when in steady
state.

8.10

The emissions of each species are accumulated in the array DIAGEMIS_IJ. From this array, the daily accumulated
global totals are found in the subroutine tnd_emis_daily
in diagnostics_general.f90. At the dates specified by the
diagnostics/budget calendar in LxxCTM.inp file, the following are done (subroutine tnd_emis2file):
• Globally accumulated emissions of each species since
last printout are written to standard output (i.e. result file).
• The
horizontal
distribution
of
the
accumulated emissions are written to files
emis_maps_YYYYMMDD.dta.
If emissions
are located at several model levels, they are all
written to file.
• Daily accumulated emission totals are written to
file emis_daily_totals_YYYY.dta. These are only
written at the days specified by the budget calendar.
If emissions are treated as a separate process, most of
this diagnostic is unnecessary. However, since we treat
emissions as production terms in chemistry, this diagnose
must be included to assess what is actually emitted.

8.11

Pre-defined datasets

Here you can find some info on the different predefined collections of emission files. Generally, these
can be found through the ECCAD (Emissions of atmospheric Compounds & Compilation of Ancillary Data)
web page http://eccad.sedoo.fr/. Emission lists can be
found in the directory tables and the subdirectory EMISSION_LISTS. These latter lists have to be combined into
a total emission list in tables. Some lists of both anthropogenic and natural emissions are already generated; see
the tables/Ltracer_emis.inp-files.
Keep in mind which year the files are defined for! This is
usually given by their file names.

8.11.1

Emission files
Anthropogenic emissions of CH4 are available from several datasets, e.g. EDGAR v4.2 and CEDS. See tables/EMISSION_LISTS for options.

Emission diagnoses

CEDS

Lists for CEDS anthropogenic emissions can be found at
Ltracer_emis_ceds.dat.

44

Oslo CTM3 user manual

November 6, 2018

These are the CMIP6 emission datasets, but note that
I have generated new files for the anthropogenic emissions. This is because the CEDS format is ill suited for
extracting separate sectors.
CEDS has monthly variation.

8.11.2

CH4 emissions Bousquet

Through the project GAME, a dataset of CH4 emissions, based on Bousquet et al. (2011) was generated:
Ltracer_emis_ch4_bousquet.dat.
Keep in mind that this dataset also includes biomass
burning, so you must make sure CH4 is not included in
GFED.

ECLIPSE

The dataset contains several sources of CH4 , however, we
have never used the anthropogenic part. Also soil sink is
given.

Lists
for
ECLIPSE
anthropogenic
emissions
can be found at Ltracer_emis_eclipse5.dat and
Ltracer_emis_eclipse4.dat.
ECLIPSE includes the agricultural waste burning, which
is usually a part of biomass burning. This means that
when including GFED biomass burning, you have to skip
that partition. This is hard-coded in the GFED routine,
through the variable partitions,
ECLIPSE has no monthly variation; it is annual mean
only.

8.11.3

8.11.8

Dataset has monthly variation for year 1984 – 2009.

8.11.9

Volcanic emissions

Volcanic emissions of SO2 was provided by both AEROCOM and later HTAP: Ltracer_emis_volcanoes.dat.
Note that HTAP emissions are based on volcanic events,
so make sure the emissions actually cover your simulation
period.

EDGAR v4.2

EDGAR v4.2 anthropogenic emissions are available, and
can be found in Ltracer_emis_edgar42.dat. This file contains CH4 emissions, so if you use fixed surface CH4 , you
cannot include those entries.

8.11.10

EDGARv4.2 has no monthly variation; it is annual mean.

8.11.11

8.11.4

Lists for biomass burning (CEDS and GFEDv4) emissions can be found at Ltracer_emis_biomassburning.dat.

Soil emissions for some species: Ltracer_emis_soils.dat.

Lamarque/IPCC

Lamarque et al. (2010) anthropogenic
Ltracer_emis_lamarque.dat.

Soil emissions

Biomass burning

emissions

9

QSSA chemical integrator

The Lamarque dataset has a monthly variation.

8.11.5

The numerical integration of chemical kinetics is done applying the Quasi Steady State Approximation (QSSA) introduced by Hesstvedt et al. (1978), using three different
integration methods depending on the chemical lifetime
of the species, to save computing time.

HTAP

More information can be found at the HTAP web
page http://htap.org/. HTAP emissions are given on
a monthly time scale, and are based on EDGAR data.
Ltracer_emis_htap.dat.

8.11.6

For a given integration time step ∆t, the definition of the
three methods are
• Long-lived: Loss < 0.1/∆t
• Short-lived: Loss > 10/∆t
• Intermediate: 0.1/∆t ≤ Loss ≤ 10/∆t

RETRO

RETRO anthropogenic emissions, combined with POET
natural emissions (Granier et al., 2005; Olivier et al.,
2003), can be found in Ltracer_emis_retro.dat in tables/EMISSION_LISTS/.
This dataset has a monthly variation.

The change of a tracer concentration depends on the production and loss terms
dC
= P − LC
(109)
dt
where C is tracer concentration [molec/cm3 ], P is production [molec/(cm3 s)] and L is loss rate [1/s].
Re-arranging, we get

8.11.7

dC
= dt
P − LC

POET

(110)

which can be integrated using the kernel rule:
POET provided datasets of natural emissions from ocean.
tables/EMISSION_LISTS/Ltracer_emis_ocean.dat.

45

1
− d ln(P − LC) = dt
L

(111)

Oslo CTM3 user manual

November 6, 2018

Integrating from (C1 , t1 ) to (C2 , t2 ), we have
P − LC2
= e−(t2 −t1 )L
P − LC1

Oslo CTM3, listed with a No in the Table 15. See Section 10.1 for more on this.
(112)

Some species in Table 15 are labeled Maybe, indicating
that they may be left out of transport. I advise against
this. Species should either be transported or set from
some steady state initial value in the chemistry routines.

Setting ∆t = t2 − t1 and solving for C2 we get
C2 =

9.1

P
P
+ (C1 − )e−L∆t
L
L

(113)

Tropospheric water vapor is set from meteorological data
and is kept fixed for the whole meteorological time step.

Long-lived species
10.1

Non-transported species

Long-lived species have small L and we can approximate
exp (−L∆t) ≈ 1 − L∆t

One issue that has to be resolved in the Oslo CTM3 is
that non-transported species should not be used as historic values: After other species have been transported,
the non-transported species should not be used in chemistry for the same grid box. Instead some initial steady
state value should be calculated before chemistry. Then
the array of non-transported species could be removed or
kept as a diagnostic tool.

(114)

and using this, Equation (113) becomes
C2 = C1 + (

9.2

P
− C1 )L∆t
L

(115)

Short-lived species

Short-lived species have larger L and we can approximate
exp (−L∆t) ≈ 0

(116)

Be sure that if the species labeled Maybe in Table 15
are removed from transport, you should set initial values
in the chemistry. These will have to be hard coded to
some steady state expression/value, and should never be
from a non-transported array.

and get
C2 =

P
L

(117)

However, for P = 0, short-lived species are treated like
intermediate species.

9.3

Species of intermediate lifetime

Species of intermediate lifetime and short-lived species
without production terms are integrated using the full
Equation (113).

10

It can be argued that transporting very short-lived
species (labeled No in Table 15) makes little sense, since
the tracer concentration will have changed before getting
to a new location. However, we still keep some tracers
in the non-transported array. I mention again that historical values of the non-transported tracers are of little
value, and in worst case erratic. For OH this may not be
a big problem, due to the iteration to get a stable value,
although the old value is used for some calculations before
the new value is calculated.

10.2

Tropospheric domain

When running tropospheric chemistry, you may or may
not include stratospheric chemistry (see Section 11 for
stratospheric chemistry).

Tropospheric chemistry

The tropospheric chemistry routine is in principle a 1D
model, looping through a column. It is turned on by setting TROPCHEM :=Y in the user specified section of Makefile.
The tropospheric chemistry was first introduced in the
CTM-1 (Berntsen and Isaksen, 1997), and in its general
form it contains 46 components given in Table 15. Originally there were 51 species, but 2 were not used (nr 26:
CH2 O2 OH and nr 47: DMS, which has a new number
in sulphur scheme) and are removed in the Oslo CTM3.
Also the NOX and NOZ families used to be unnecessarily
transported, so they have been put solely into the chemistry. O3NO (O3 –NO) is also treated in chemistry only
(commented in Section 2.5).
Transporting a species with lifetime much shorter the
transport time step (usually 15 minutes for boundary
layer mixing/chemistry) may seem inconsistent, because
the species may have changed a lot during transport.
Therefore, some tracers have not been transported in

46

If you run without stratospheric chemistry, tropospheric
chemistry is calculated up to a certain altitude, but when
running full chemistry (stratospheric chemistry included)
it stops at the actual tropopause level for each column.
The tropopause level for a grid box is defined by the
global array LMTROP (see Section 20.1).
It is also possible to use the e90-tracer to define stratospheric air (Section 21.1.3), either as a 3D field or
by selecting the uppermost tropospheric grid box as
tropopause. The program code is not set up for a 3D
definition.

10.3

Without stratospheric chemistry; O3 , NOx and HNO3

O3 , NOx and HNO3 are very important in the stratosphere, and are transported down into the troposphere.

Oslo CTM3 user manual

November 6, 2018

Table 15: The components of the tropospheric chemistry application. The table gives order of magnitude
estimates of the lifetime of the components. If the lifetime is short, there is no need for transport.
Nr

Component name

Remarks

1
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

O3
HNO3
PANX
CO
C2 H 4
C2 H 6
C3 H 6
C4 H10
C6 H14
C6 HXR
CH2 O
CH3 CHO
H 2 O2
CH3 O2 H
HO2 NO2
CH3 COY
C3 COX

Ozone
Nitric acid
PAN + CH3 COO2

20
21
22
23
24
25
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
46
48
49
50
51

ISORPRENE
HO2
CH3 O2
C2 H 5 O 2
C4 H 9 O 2
C6 H13 O2
CH3 COB
CH3 CXX
AR1
AR2
AR3
ISOR1
ISOK
ISOR3
HCOHCO
RCOHCO
CH3 X
O(3 P)
O(1 D)
OH
NO3
N 2 O5
NO
NO2
CH4
C3 H 8
C3 H 7 O 2
Acetone
C3 COD

52

CH3 OH

Approximate
lifetime
∼ months
∼ weeks

Ethane [CH2CH2]
Ethane [CH3CH3]
Propane [CH3 CHCH2 ]
Butane [CH3 CH2 CH2 CH3 ]
Dimethylbutane
m-Xylene/1,3-Dimethylbenzene [C8H10]
Formaldehyde
acetaldehyde
hydrogenperoxide
methyl hydroperoxide
Peroxynitric acid
Bi-acetyl [CH3 COCOCH3 ]
Methylethyl ketone (2-butanone),
CH3 COC2 H5
Isoprene/2-methylbuta-1,3-diene [C5H8]
short
short
short
short
short

methyldioxy radical
ethyldioxy radical
butyldioxy radical
RO2 from C4 H10 +OH, CH3 COCH(O2 )CH3
CH3 CH(O2 )CH2 OH
RO2 from C6 HXR + OH
Ketone from AR1
RO2 from AR3
RO2 from ISOPRENE + OH
methylvinylketone + methacrolein (ketones)
RO2 from ISOK
Glyoxal
Methyl glyoxal, CH3 COCHO
Peroxyacetyl radical, CH3 COO2

short
short
short
short

short
short
short

Methane
Propane
Propyl peroxide; from (propane+OH)+O2
CH3 COCH3
Propyldioxy, 2-oxo-propyldioxy,
CH3 COCH2 (O2 )
Methanol

∼ years

Included 2018

Transport

Wet dep.

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes

Yes
Yes
No
No
No
No
No
No
No
No
Yes
Yes
Yes
Yes
Yes
No
No

Yes
Maybe
No
No
No
No
Yes
Yes
Maybe
Yes
Maybe
Maybe
Yes
Maybe
Yes
Yes
Yes
No
No
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes

No
No
No
No
No
No
No
No
No
No
No
No
Yes
No
No
No
No
No
No
No
No
No
No
No
No
No
No
No
No

Yes

Yes

In Oslo CTM2 a flux of O3 was set in the uppermost model layer (the SynOz approach, McLinden et al.
(2000)), but this is only possible for L40 vertical resolution. We have left this behind, and now use a climatology calculated from a full-chemistry T42L60 simulation
for the years 2000–2008.

max(LMTROP(:,J)). The number of levels added are controlled by the parameter LVS2ADD2TC in cmn_oslo.f90.
Above this, O3 is set from the model climatology.

For each model latitude band (for each J), tropospheric chemistry is calculated up to a few levels above

Above max(LMTROP(:,J))+LVS2ADD2TC we also set HNO3
and NOx species based on climatologies. For consistency,

47

The climatology of O3 also affects DO3 used in calculation
of photochemical reaction rates (Section 12).

Oslo CTM3 user manual

November 6, 2018

not used, this approach is faster than allocating the arrays on the fly. In addition, the arrays are small and
minimal in numbers. Also heterogeneous reaction rates
are calculated in this way.

these are from the same T42L60 simulation as the O3
climatology. This is carried out to improve important
UTLS NOx chemistry.
The old Oslo CTM2 method is still available, but should
not be used. It was based on observed mixing ratio
(µ) correlations of NOy with O3 , assuming 40% to be
NOx=NO and 60% to be HNO3 :
µHN O3

=

0.0024µO3

µN O

=

0.0016µO3

11.2

Stratospheric H2 O

In general H2 O is not transported in the Oslo CTM3;
tropospheric H2 O is set from the meteorological data,
while stratospheric H2 O is calculated from the sum of

The routines are shortly described in Appendix A.2.41.

Table 16: The components of the stratospheric application. Trsp. denotes transport or not.

10.4

Box version of
chemistry code

tropospheric

A box version of the tropospheric chemistry code
was produced by Alf Grini and it is available in
the Oslo CTM3 tool box at /div/amoc/d4-4/osloctm/archive_ctm/box_models/.
This directory includes some matlab scripts which will
plot the concentration daily cycles. The box can be
a good educational tool, and has been used in a bachelor level atmospheric chemistry course.
A user manual for the box application is available as texfile in the photochem_box/manual-directory.

11

Stratospheric chemistry

The stratospheric application is turned on by setting
STRATCHEM :=Y in the user specified section of Makefile.
Species treated in the stratospheric chemistry are listed
in Table 16. As for tropospheric chemistry there are some
non-transported species, which should either be changed
into transported species or set inside chemistry. E.g. H2
must be transported when stratospheric H2 O is calculated (Section 11.2), but should otherwise be a static
field.
The stratospheric chemistry was originally based on the
Oslo 2D model (Stordal et al., 1985), later included in the
stratospheric 3D model Oslo SCTM-1 (Rummukainen,
1996; Rummukainen et al., 1999) before included in the
Oslo CTM2 (Gauss, 2003; Søvde et al., 2008).

11.1

Technical information

The stratospheric master routine is called from the chemistry master routine in main_oslo.f90. Working on an
IJ-block (Section 4.3.2), it loops first through the latitudes and longitudes of the IJ-block, calling the chemistry (OSLO_CHEM_STR_IJ) column-wise.
Reaction rates dependent on temperature and pressure
are defined as arrays of length LPAR, but only the stratospheric values are calculated, i.e. from LMTROP+1 to LPAR
(even though chemistry is not currently calculated in
LPAR). Although the tropospheric part of the arrays are

48

Nr

Component

Remarks

Trsp.

101
102
103
104
105
106
107
108
109
110

MCF
HCFC22
CFC11
CFC12
CCl4
CH3 Cl
N2 O
Clx
NOx_str
SO

CH3 CCl3
CHF2 Cl
CCl3 F
CCl2 F2

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147

HCl
Cly
H2
H2 O
SH
CH3 Br
H1211
H1301
Bry
H2402
F113
F114
F115
HNO3 s
H2 Os
HCls
HCFC123
HCFC141
HCFC142
H
HNO2
Cl
ClO
OHCl
ClONO2
Cl2
OClO
HBr
Br
BrO
BrONO2
OHBr
Br2
ClOO
Cl2 O2
BrCl
NOy_str

O3 + O(3 P) + O(1 D)
- NO - Cl - Br

Yes
Yes
No/Yes
May be used
H + OH + H2 O2
CF2 ClBr
CF3 Br
CF2 BrCF2 Br
CF2 ClCFCl2
CF2 ClCF2 Cl
CF3 CF2 Cl
Solid HNO3
Solid H2 O
Not in use
CF3 CHCl2
CF3 FCl2
CF3 CF2 Cl

Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No

Not in use
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes

Oslo CTM3 user manual

November 6, 2018

You can turn off PSC heterogeneous chemistry by the
logical LPSC in psc_microphysics.f90, where you also can
turn off heterogeneous chemistry on stratospheric background aerosols (LAEROSOL).

potential hydrogen, denoted sumH2, as:
H2 O = sumH2 − 2CH4 − H2

(118)

where sumH2 = 7.72 ppmv (Zöger et al., 1999). The old
sum was 6.97 ppmv, which was slightly low, although the
difference did not change the chemistry much.

Particles are calculated for NB size bins, originally set
to 40, but since early 2018 the default is 15 bins to save
computing time (sedimentation is done for each bin). Using 15 bins covering the same radius range only changes
total O3 column by up to 0.2 %, also in O3 hole conditions (year 2016 have been tested). If you experience
larger errors in the O3 hole conditions, you may consider
increasing NB .

Note that this value has to be lowered if you simulate
pre-industrial times..
It is also possible to transport H2 O and calculate H2 O in the stratospheric chemistry, by setting
LOLD_H2OTREATMENT=.false. in strat_h2o.f90. If you
want to do this, you need to
• Set LOLD_H2OTREATMENT=.false..
• Transport H2 O (component 114), H2 (113) and solid
H2 O (125), i.e. in cmn_size.F90 you must add 3
(113, 114 and 125) to NPAR_STRAT and remove 2 from
NOTRPAR_STRAT (113 and 125).
• Include cross section information for fast-JX in
FJX_spec.dat, put them after Acet-b (H2 O values
can be found in FJX_spec_h2o.dat).
• Add 1 to the first two numbers in the header of
FJX_spec.dat, i.e. change 62 to 63.
• Also add H2O in ratj_oc.d.
• In cmn_size.F90 you must add 1 to JPPJ.
Tropospheric source of stratospheric H2 O
H2 O is transported throughout the model domain. However, we only calculate H2 O chemistry in the stratosphere. In the troposphere, H2 O is set from the meteorological data. Consequently, our H2 O tracer is a purely
stratospheric tracer, with a tropospheric source. The tropospheric source is set before transport, and is calculated
assuming a mixing ratio of 3.7 ppm at the tropopause, but
limited to saturation mixing ratios.
To avoid large values coming up, the tropospheric values
are set in the tropopause level and 4 levels below it. From
there and down to the surface, a very small value is set.
In this treatment, H2 O mixing ratio in the uppermost
model layer is assumed to be the same as in the layer
below (routine strat_h2o_ubc2 in strat_h2o.f90).
Important
This new H2 O treatment is better than the old version,
which should eventually be abandoned. It should be applicable also for pre-industrial simulations, assuming the
tropopause mixing ratio has not changed much. However,
tropopause temperatures may indeed have changed, but
the largest contribution to changes in stratospheric H2 O
from pre-industrial times is due to increased CH4 .
Further testing is needed before using the new treatment
widely.

11.3

Microphysics

The calculated surface area densities PSC1 and PSC2 are
given in global fields of size (LPAR,IPAR,JPAR). These
are used to calculate reaction rates in the stratospheric
chemistry master routine.
An important aspect of this microphysics is that sulfuric
acid (H2 SO4 ) is needed in the calculations. As long as
H2 SO4 is not calculated as a species in the stratosphere,
it is computed from an existing background aerosol distribution (see Section 11.4), assuming some content of
H2 SO4 (see Søvde et al. (2008) for more). As explained
in the following text, the background aerosol surface area
may be modified by the microphysics scheme, and to keep
the consistency, the amount of sulfuric acid is always computed from the original satellite data.
Important
The PSC microphysics module limits calculations to
an altitude of 30 km. This is to reduce the number of unnecessary calculations. However, it means that for other
aerosols, the satellite based surface aerosol density will
be used. It could be that using the PSC microphysics
above 30 km could alter possible aerosols there.
Formation
Given an amount of HNO3 , H2 SO4 and H2 O, the composition of a ternary solution is calculated according to
Carslaw et al. (1995). This includes HNO3 freezing on ice
assuming 3 K supercooling below TICE from Marti and
Mauersberger (1993):
TICE =

2663.5
12.537 − log10 pH2 O

(119)

with pH2 O in Pa.
The formed particle is treated as background aerosols
(temporarily overwriting the background aerosol satellite
data) unless the temperature is below TN AT given by
Hanson and Mauersberger (1988) for pressures in Torr:
log pHN O3

=

m(T ) log pH2 O + b(T )

(120)

−2.7836 − 0.00088T
11397
b(T ) = 38.9855 −
+ 0.009179T
T
At equilibrium we have T = TN AT . Below this temperature the particle is treated as supercooled ternary
solution (STS, also known as PSC1b).
m(T )

=

Further, this ternary solution is assumed to be liquid until
freezing at a temperature

The microphysics scheme calculates the formation and
evolution of polar stratospheric clouds (PSCs). It is a column model, which fits very well into the IJ-block structure. The microphysics are explained in detail by Søvde
et al. (2008), but will be included here as well.

49

TF RZ =

−9384
log10 (pHN O3 pH2 O ) − 39

(121)

where the pressures are in Torr. This expression is close
to the freezing temperature SAT:MixH reported by Fox

Oslo CTM3 user manual

November 6, 2018

et al. (1995), of a mixture of SAT (H2 SO4 ·4H2 O) and
HNO3 · H2 SO4 · 5H2 O. TF RZ is in general 3-6K lower than
TN AT , in agreement with several studies (e.g. Voigt et al.,
2005).
The particle is then assumed to be nitric acid trihydrate
(NAT, or PSC1a). Once formed, the NAT will stay NAT
until it melts at the temperature reported by Zhang et al.
(1993):
3236
TM ELT =
(122)
11.502 − log10 pH2 O
where pH2 O is in Torr.
Søvde et al. (2011b) let the NAT particles grow, also letting the volume of PSCs grow without a limit, whereas
the original treatment in Søvde et al. (2008) used a volume limit as in the routine it was based on. We keep this
limit in Oslo CTM3 because otherwise the particle area
density will grow too large. This was never an issue in
the Antarctic, but made too large PSCs when modelling
the 2011 Arctic spring.
Sedimentation
Sedimentation is done according to Kasten (1968) for
each size bin in the log-normal size distributions.

11.4

Heterogeneous chemistry

In Oslo CTM3 stratosphere, heterogeneous chemistry
comprises reactions on PSCs and background aerosols.
The reaction rates depend on the surface area density
of the particles, which are either given by monthly averaged satellite data or calculated by the microphysics
scheme (see Section 11.3).

be revised in the future.
The use of Oslo 2D data as upper boundary conditions
must be revised! The uppermost level of the 2D model is
about 55km, well below the L60 top level. Using 2d-data
is OK for L40, but not ideal for L60. However, in lack of
other boundary conditions we scale the 2D data to L60
using the uppermost mixing ratio gradient.
The best solution is to do chemistry for all species in
LPAR. However, it can be tricky for some tracers if a flux
in or out is needed, such as species with long stratospheric lifetimes where the mesosphere provides an important sink. Although a bit tricky, that should rather
be parameterised.
Using another model (e.g. WACCM) or observations as
upper boundary condition is better than using Oslo 2D
results. However, any fixed upper boundary will possibly act as a sink or source, and the upper boundary will
depend on whether pre-industrial, current or future atmosphere is modelled.
If chemistry is to be calculated in LPAR, this must be
done:
• Reaction rates dependent on temperature and pressure must be calculated in LPAR (in subroutine
TCRATE_TP_IJ_STR and TCRATE_HET_IJ).
• The routine updating the upper boundary
must be removed (update_strat_boundaries in
stratchem_oslo.f90).
• Climatological O3 , temperature and mass for layer
LPAR, used in photoj must be removed. Can also be
removed from set_atm in fastjx.f90.

11.7
11.5

The stratospheric module needs information about
stratospheric background aerosols and also boundary
conditions for the species treated only in the stratosphere (surface conditions to simulate emissions, and upper boundary conditions to simulate interaction with the
atmosphere above).
The data are located in the directory Input_CTM3:
• Climatological background aerosol data are given
in the directory backaer_monthly (described in Section 2.7.8).
• Boundary conditions generated from the Oslo 2D
model are located in the directory 2d_data. Note
that the last year of data is for 2011 due to the
Oslo 2D model being discontinued. See also next
Section for upper boundary alternatives.
You also need to have the correct tracer list tracer_list.d,
with the correct number of species, which you can find in
the directory tables/.

11.6

Linoz

Input files needed

Upper boundary / Chemistry in
LPAR?

So far, the Oslo CTM3 and Oslo CTM2 have not calculated chemistry at the top model layer (LPAR). This may

50

Linoz v2 (McLinden et al., 2000) is included in the file
p-linoz.f. However, the Oslo CTM3 is not set up to use
this instead of stratospheric chemistry, only as part of the
STE diagnostic tool (Section 21.1.4).
However, all UCI Linoz codes are present, so setting it up
as an alternative stratosphere should be rather straightforward.

12

Photochemistry

The photodissociation rates (J-values) are calculated online using the fast-JX method, version 6.7c (Prather,
2012). fast-JX calculates dissociation rates in the troposphere and stratosphere. When treating only the troposphere, there are 20 values calculated, and for the stratospheric application there are 49. The parameter name
for this is JPPJ and is automatically set in cmn_size.F90.
The reactions are listed in ratj_oc.d.
You can set up the model to calculate J-values every
chemical time step (NRCHEM), or to calculate only once
every step of the operator split (NOPS). This is controlled
in the input file (see Section 2.7.3) using the parameter
LJCCYC (J-values constant in the chemistry cycle). Each
parallel block (IJ-block) calculates its J-values, and stores
them in the array JVAL_IJ, which is a global B-like array

Oslo CTM3 user manual

November 6, 2018

of size (JPPJ,LPAR,IDBLK,JDBLK,MPBLK). This minimises
the striding necessary for each parallel block.

12.2

The master routine is jvalues_oslo, where J-values
for each column is calculated by the driver jv_column,
and stored in the global JVAL_IJ. These subroutines
are located in main_oslo.f90 (see Appendix A.1.37
and A.2.26).

If no clouds are found in a model column, the J-values
in a model column are calculated straight-forward; only
one calculation is necessary. Clouds, however, makes the
calculations more complicated.

The driver calls the fast-JX routine PHOTOJ located in the
file p-phot_oc.f.
The fast-JX uses the ozone column to calculate radiative properties. To account for the atmosphere above the
model, a climatology is applied. This is carried out in
the subroutine SET_ATM in fastjx.f90.

Cloud cover

In a given model column, there may be different types
of clouds with different cloud fractions, which may overlap or not. Using the cloud cover in the meteorological
data, there are several ways to calculate the cloud optical
properties used for J-values in fast-JX.
How to treat the clouds in fast-JX is defined in the
LxxCTM.inp-files, where you can set a random cloud
cover treatment; so if you set all to false, the result will
be the classic average cloud cover as in Oslo CTM2. The
default treatment is LCLDRANA.

SET_ATM provides information about what is above the
model top (above ETAA(LPAR+1)) as

The treatment of overlapping clouds is described by Neu
et al. (2007), and is also described shortly below.

• TOPT: Temperature
• TOPM: Mass
• TOP3: O3 concentration

12.2.1
In addition we have computed the values for layer LPAR
(between ETAA(LPAR) and ETAA(LPAR+1)), since a climatology is thought to be more reliable than the 2D upper
boundary conditions. These arrays are LPART, LPARM and
LPAR3.
Important input to the J-values are cloud cover and
aerosol distribution, since they have important scattering properties, and these will be addressed next. First
a short note about solar flux.

Average cloud cover means that clouds covering a fraction of a gridbox is averaged to a cloud covering the whole
grid box. E.g. a convective cloud with optical depth of 20
covering 20 % of the grid box, will be treated as a cloud
covering the whole grid box by an optical depth of 4. Neu
et al. (2007) showed that this is not a good approximation.

12.2.2

12.1

Solar flux

The solar flux is listed at the top of the table
FJX_spec.dat, named SOL#/cm2/s. It is the average of
solar low (11 Nov 1994) and 80 % of solar high (29 Mar
1992). The values apply for the wave lengths given in the
same file. The values are from the Solar-Spectral Irradiance Monitor (SUSIM).
The solar low and solar max values are found in the file
FJX_solminmax.dat. It is possible to include an interpolation between these based on observed solar cycle. See
fastjx.f90 and search for FLmin or FLmax to find out more.
I am not completely sure that a linear interpolation between min and max is correct for all wave length bins,
but it is the easiest way to do this at the moment.
Solar flux can be found at Natural Resources
Canada, http://www.spaceweather.gc.ca/solarflux/sx-5en.php, and when I tested this I made 7-month running
mean of the fraction of maximum flux (i.e. 1 is max and
0 is solar min). A file can be found in the tables directory: solflux_7month_running_mean_1990_2016.dat.
You have to specify FLscale (see fastjx.f90) fits the number of years in this file.
Note that including the solar cycle will only affect photochemistry. This effect is not so large as the effect of
changed atmospheric temperatures, which is already included in the meteorological data.

51

Average cloud cover

Random cloud cover

Clouds with cloud fraction (CF) less than 1 does not cover
the whole grid box. They may be located at different
places and they may overlap. There are two main types
of treating this overlap; random and maximum-random
overlap (Neu et al., 2007).
In the Oslo CTM3 the calculations are carried out
over NDGRD=IDGRDxJDGRD columns of cloud properties.
IDGRD=IPARW/IPAR, and similarly for JDGRD; in other
words they will be 1 for non-degraded horizontal resolution. NDGRD is therefore the number of native columns
covered by a column in a degraded run. For nondegraded, NDGRD=1. For a degraded-grid simulation
where each column covers several native columns, the
native information from the meteorological data is used.
For each column the clouds are grouped into maximumoverlapping clouds: Clouds from neighboring levels are
expected to be closely connected and assumed to form
a maximum-overlap group.
For each maximum-overlap group, the number of possible
combinations of columns are calculated. These are the
independent cloud atmospheres, ICAs). In this process,
as described by Neu et al. (2007), the total number of
ICAs has been reduced by grouping cloud fractions into
bins (there are CBIN_ of them (set in cmn_fjx.f90).
For each ICA the total column optical depth (TOD) is
calculated. How the TOD values are treated depends on
your random scheme choice. The TOD values are the

Oslo CTM3 user manual

November 6, 2018

Using this module requires initialisation (separate routine
in the module) and then to set the aerosol path arrays
before fast-JX. This is done in main_oslo.f90.

basis for creating 4 quadrature atmospheres (QA), which
are defined by optical depths:
• QA(1): 0-0.5 (clear sky)
• QA(2): 0.5-4 (cirrus hazy)
• QA(3): 4-30 (stratus)
• QA(4): >30 (cumulus)
For further reading see Neu et al. (2007). As a general
user, your choices are to set the LxxCTM.inp switches,
which are:

If climatologies are used, they are given as monthly means
of aerosol paths and are interpolated linearly in time,
between two monthly means, at 00UTC every day.

LCLDQMD
Use mid-point of quadrature cloud cover ICAs. This is
the original method published by the UCI group (Neu
et al., 2007). It generates all the possible max-ran overlap cloud profiles, then sorts them in order of increasing
optical depth (OD), and breaks those into 4 groups based
on the standard breakpoints defined above.

If you change or add aerosol types, you may need to do
changes in this module.

Next, each group (may be less than 4) has a fractional
area, from which the mid-point of that area is picked to
find the ICA that is used.
This is the most expensive because it sorts a large number
of ICAs and then results on average in 2.5 to 2.8 calls to
fast-JX per time step.
LCLDQMN
Mean quadrature cloud cover ICAs. Generates all maxran ICAs and then averages them into the four quadrature bins. No sorting by OD, but still used up to 4 ICAs
per step.
LCLDRANA
Random selected from all cloud cover ICAs. This is the
cheapest and fastest - it picks a random number (fractional area = 0–1) and then generates the ICAs until
it reaches that fractional area and selects that ICA. No
sorting and only 1 call to fast-JX per time step. This is
the default.
LCLDRANQ
Random selected from 4 mean quadrature cloud cover
ICAs. Generates the ICAs and up to 4 quad atmospheres
(as for LCLDQMN), but then picks one of the 4 based on
a random number.

12.3

Each aerosol type to include must be given a matching entry in the files listing optical properties (tables/FJX_scat.dat or tables/FJX_UMaer.dat).
The
scattering properties themselves are described in the respective aerosol sections.

12.4

Generating cross sections

A program is available on Prather’s web page, that allows
you to generate cross sections. You only need to write
your own small subroutine, which should be fairly easy
after looking at the existing ones. You will need to look
up JPL (Sander et al., 2006, 2011) or IUPAC (Atkinson
et al., 2010) to get the data needed. You can also find
a version of this program in the utilities repository (see
Appendix B.1).

12.5

Generating scattering properties

When an aerosol is taken into account by fast-JX, its
scattering and extinction properties are needed. You
find pre-calculated values for aerosols independent on humidity in the file FJX_scat.dat, while scattering properties for aerosols depending on humidity can be found in
FJX_UMaer.dat.
There are several ways to generate these numbers. The
original one is by the program FJ_phase.
The better option is, however, a method by Mishchenko.
It is better documented and also works better for producing humidity dependent parameters for FJX_UMaer.dat.
See Section 12.5.2 for more.

Aerosols in fast-JX

fast-JX can handle different aerosol types, usually fetched
from the tracer array (STT), but can also be set from climatologies. The arrays and routines used for this is found
in aerosols2fastjx.f90, where climatologies from previous
simulations also can be read in.

Both methods can be found in the utilities repository (see
Section B.1 to find where).
An entry in the FJX_scat.dat is shown in Table 17.
An aerosol entry in FJX_UMaer.dat consists of 21 lines
covering optical parameters for relative humidity 0% to
95 % with increments of 5, and finally adding 99%. For
6 wavelengths, 200 nm, 300 nm, 400 nm, 550 nm, 600 nm
and 1000 nm, 3 optical variables are stored: single scattering albedo, asymmetry parameter (g) and the extinction coefficient (Qext ).

You can turn off the effect of aerosols on fast-JX with
the switch LJV_AEROSOL in aerosols2fastjx.f90. Here you
also define which aerosols that can affect fast-JX. If you
do a simulation without these aerosols, fast-JX will skip
them also, unless a climatology is read in.
Aerosols may grow in size due to relative humidity (RH),
and the optical properties for such aerosols are treated
slightly different than for dry aerosols. The properties
are listed in the files tables/FJX_scat.dat for aerosols independent of RH and tables/FJX_UMaer.dat for RHdependent. These files will be further described in Section 12.5.

52

Size bins / Monodisperse particles
Some aerosols are assumed to have fixed size, as for dust
and sea salt, so that several tracers make up the size
distribution. Separate properties may then be calculated assuming monodisperse aerosols, as explained in
the Mishchenko code.

Oslo CTM3 user manual

November 6, 2018

Table 17: A typical entry of FJX_scat.dat, where w0 is the single scattering albedo, and w1 – w7 are the
terms 1–7 in the Legendre expansion of the phase function (the first term w0 is always 1 and is omitted in
the list).
15 S-Vol LOGN:r=.080
200 2.5935 1.0000
300 2.6669 1.0000
400 2.5588 1.0000
600 2.1893 1.0000
999 1.4540 1.0000

s=.800
2.092
2.121
2.144
2.149
2.118

λ

ω1

12.5.1

Qext

w0

n=1.514/.../1.435 reff=0.386___G=.0721_rho=1.630
2.914 2.880 3.295 3.185 3.430 3.379
2.861 2.792 2.936 2.733 2.703 2.568
2.813 2.711 2.695 2.425 2.257 2.069
2.713 2.547 2.362 2.018 1.740 1.499
2.537 2.277 1.951 1.555 1.229 0.972
ω2

ω3

ω4

ω5

FJ_phase

ω6

ω7

NSD=1; Gamma function

This is the generator I got from UCI, originating from
Hansen and Travis (1974). The process is as follows:
• Compile mie.for.
• mie < mie.in > mie.out
• Compile leg_mieout.for.
• leg_mieout < mie.out > leg.out; leg.out contains the Legendre expansion, plus phase function
vs. angle. The FJX_scat.dat values are found in
the file fort.7.
You may also do the following:
• Compile rd_mieout.for.
• rd_mieout < mie.out; Look at stdout and check
summary of aerosol distributions.

n(r) = constant r(1/B−3) exp(−r/(AB))

(123)

where the constant is given in the fortran program and
A

=

effective radius

B

=

effective variance

This probably comes from Deirmendjian’s modified
GAMMA (pure GAMMA when γ = 1)
n(r) = arα exp(−brγ )

(124)

N = a/γb[−(α+1)/γ] Γ[(α + 1)/γ]

(125)

The mode radius is rc :
rcγ = α/(γ ∗ b)

mie.in
The mie.in file consists of these parameters:

(126)

where

NSTEPS
The NSTEPS are set up to feed into the Legendre fitter
that is the second part of the code, do not change these
unless you want more forward peak resolution. It breaks
the solution at the scattering phase angle into sections of
different resolution (more at the forward and backward
peak as noted).
NSD
Size distribution type. All are described in Hansen and
Travis (1974).
1 Two-parameter Gamma function.

α

=

dimensionless integer

b

=

has units of 1/radius

Lacis’s GAMMA: (NSD=1)
A

=

(α + 3)/b = ref f

B

=

1/(α + 3)

rc

=

A ∗ B ∗ (1/B − 3) = A ∗ (1 − 3 ∗ B) (129)

rc

=

rmode = ref f ∗ α/(α + 3)

(127)

⇒ 1/b = ref f /(α + 3)
(128)
(130)

NSD=2; bi-modal Gamma distribution

2 Bi-modal Gamma function.
3 Log-normal.
n(r)

4 Power law.
IPART and NG
IPART and NG are for the integration over the size distribution (R). This is obscure, but historical in a way I
haven’t fully figured out. The size distribution is broken
into IPART segments and each segment is then integrated
over R in the range from RBOT to RBOT + RDIV using NG (96 in this case) Gauss-point quadrature. Thus
the NG*IPART is the effective number of R’s used to
integrate the scattering.

=

r
r1/B−3 exp[− AB
]
1
(1/B−2)
2 (AB)
Γ[1/B − 2]

+

r
r1/B−3 exp[− CB
]
1
2 (CB)(1/B−2) Γ[1/B − 2]

(131)

Here we have
A

=

effective radius of mode 1

B

=

effective variance

C

=

effective radius of mode 2

NSD=3; Log-normal distribution
A, B, C
The parameters A, B and C depends on the size distribution.



(ln r − ln rg )2
1
1
n(r) = √
exp −
2σg2
2πσg r

53


(132)

Oslo CTM3 user manual

November 6, 2018

Table 18: A typical entry of mie.in.
NSTEPS=04 NUMSD=01 NG=192IPART=10 NSIZEP=0 MIESPR=0 MIEOUT=3 SIZLIM=1.0D-09
STEP= 0.05 FROM=00.00 TO= 2.00
STEP= 0.10 FROM= 2.00 TO= 8.00
STEP= 0.25 FROM= 8.00 TO=10.00
STEP= 0.25 FROM=10.00 TO=90.00
NSD=3 A= 0.080 B= 0.800 C= 0.000 RR1= 0.00 RR2= 2.50
WAVL= 0.200 NR=1.460 NI=0.000
WAVL= 0.300 NR=1.460 NI=0.000
WAVL= 0.400 NR=1.460 NI=0.000
WAVL= 0.600 NR=1.460 NI=0.000
WAVL= 0.999 NR=1.460 NI=0.000

Table 19: The components of the sulphate application.

where
A

=

rg

B

=

ln(σg )

Nr
71
72
73
74
75

NSD=4; Power-law
For a 6= 1 we have
n(r)

=
=
=

(a−1) (a−1)
r2
r−a
(a−1)
(a−1)
− r1
r2

(a − 1)r1

1−a
(1−a)
r1

(1−a)
r2

−
otherwise

0

r−a

Component name
DMS (dimethyl-sulfidea )
SO2
SO4
H2 S
MSA (methanesulfonic acidb )

Wet dep
Yes
Yes
Yes
No
Yes

a (CH ) S
3 2
b CH SO H
3
3

for r1 ≤ r ≤ r2(133)
(134)

and for a = 1
n(r)

=
=

r
for r1 ≤ r ≤ r2
ln r2 /r1
0 otherwise

.true., the program will loop through RH from 0% with
increments of 5.

(135)
(136)

If RH-dependent, look for results in umdata.dat, and for
RH-independent in scatdata.dat.

where

12.5.2

A

=

a

C

=

r2

B

=

r1

What to change
Refractive indices are listed in ASMRR and ASMRI, and apply for wave lengths given in ASLAM. You have to define
size distributions and how the radius grow due to RH.
See the file to find out more.

Mishchenko spher.f

There are several codes for scattering available online at
Mike Mishchenko’s web page at GISS. His code for spherical aerosols is given in the spher.f, and is clearly based
on the same source as FJ_phase, the work of Hansen and
Travis (1974). This program is very well documented in
the program file.

13

The tropospheric sulphur chemistry is turned on by setting SULPHUR :=Y in the user specified section of Makefile.
It is documented by Berglen et al. (2004).

As already noted, you can find this code in the utilities of
the SVN repository (Section B.1), and a modified version
for the Oslo CTM3 can be found in the file spher_ctm3.f.
If you use the original program, you will have to hardcode the parameters and run the program for each wavelength you need.
The modified spher_ctm3.f loops over the wave lengths
used in the Oslo CTM3, and may also loop over relative
humidity.
RH-dependent or -independent
For
RH-dependent
aerosols,
we
LRHDEPENDENT=.true., otherwise to false.

Sulphur module

set
When

54

To run this application you need to include at least the
tropospheric chemistry module. The scheme needs 5 additional tracers, which are listed in Table 19. They need
to be transported, and 4 of them are subject to wet deposition.
Originally two additional species included in the tracer
array; CS2 and OCS (carbonyl sulfide). However, they
were calculated (no chemistry, no transport), so they are
left out. They are not included because they are not
important in the troposphere, but they do play a role in
the stratosphere. When including sulphur chemistry in
the stratosphere, these should be included.

Oslo CTM3 user manual

November 6, 2018

Table 20: The components of the black carbon
(BC) and organic matter (OM) application. All
For SO2 emissions it is usually assumed that 2.5% is emit- are transported. Wet scavenging is done for hyted as sulphate, to account for oxidation. There are drophilic BC/OM, but also for 20 % of hydrophobic
several datasets available for anthropogenic emissions. BC aerosols on large scale ice precipitation. Most are
Biomass burning is usually from the Global Forest fires numbered ’1’ to allow for more size bins or particle
Emissions Database, with a vertical distribution from types.

13.1

Sulphur emissions

RETRO. Volcanic emissions are usually taken from AEROCOM or HTAP. Note that HTAP emissions are based
on volcanic events, so make sure the emissions actually
cover your simulation period.
No information is available on H2 S emissions from vegetation and soil, but they could be as described by Berglen
et al. (2004).
DMS from ocean is parameterized as in Nightingale et al.
(2000), where the DMS ocean concentration for each
month is taken from Kettle and Andreae (2000), a climatology based on observations. The Kettle climatology
for DMS was updated in 2010 by Lana et al. (2011), and
this field is now also available. The updated climatology
should be tested before it is used extensively. Also see
Section 8.4.4.
In the Oslo CTM3 this climatology is given in the variable DMSseaconc, and is converted from units of nM
(i.e. nmole/L) to kg/m. This is further converted to a flux
using the parameterisation of Nightingale et al. (2000),
based on wind speed from the meteorological data. The
flux calculation is carried out in the SOURCE or emis4chem
routine.

13.2

SO4 scattering and absorption

Component
omBB1fob
omBB1fil
omFF1fob
omFF1fil
omBF1fob
omBF1fil
omOCNfob
omOCNfil
bcBB1fob
bcBB1fil
bcFF1fob
bcFF1fil
bcBF1fob
bcBF1fil

Remarks
Insoluble OM biomass burn 1.
Soluble OM biomass burn 1.
Insoluble OM fossil fuel 1.
Soluble OM fossil fuel 1.
Insoluble OM biofuel 1.
Soluble OM biofuel 1.
Insoluble OM from ocean.
Soluble OM from ocean.
Insoluble BC biomass burn 1.
Soluble BC biomass burn 1.
Insoluble BC fossil fuel 1.
Soluble BC fossil fuel 1.
Insoluble BC biofuel 1.
Soluble BC biofuel 1.

Further, the insoluble species are transformed to soluble
species after given aging times. The aging times are dependent on latitude and season, based on a simulation
with the M7 application in the Oslo CTM2 (Skeie et al.,
2011a; Lund and Berntsen, 2012). These are read from
file in bcoc_chetinit in bcoc_oslo.f90 , and stored in the
array CHET. Input data is T42, which is interpolated to
the model resolution.
BC can be deposited on snow, thereby changing the
albedo of snow. A module for calculating BC on snow
(Rypdal et al., 2009; Skeie et al., 2011a) is included in
Oslo CTM3 (BCsnow, Section 14.5).

Sulphate aerosols have optical properties that can be
taken into account when calculating photochemical reaction rates.
Particles are assumed to be of log-normal size distribution, with dry radius of 0.05 µm and σ = 2, and will grow
due to relative humidity according to Fitzgerald (1975).
Optical properties are found in FJX_UMaer.dat, in the
entry GM_SO4. Refractive indices used for calculating
these data are for ammonium sulphate according to Toon
et al. (1976), and the value at 200 nm is set to be equal
to 300 nm, in lack of measurements below 300 nm.

14

Nr
230
231
232
233
234
235
236
237
240
241
242
243
244
245

14.1

BC/OM emissions

The main sources of black carbon and organic matter
comes from:
• Fossil fuel emissions
• Biofuel emissions
• Biomass burning
In addition, organic matter is emitted from the ocean,
which is explained below.

Black carbon and organic
matter

The black carbon and organic matter (BC/OM) application (Berntsen et al., 2006) is turned on by setting
BCOC :=Y in the user specified section of Makefile.
This application is a stand-alone part of the Oslo CTM3
and needs the 14 tracers listed in Table 20.
Both water-soluble and insoluble species are emitted from
different sources into the atmosphere (Section 14.1). The
species are subject for deposition on the Earth surface
(dry deposition, Section 14.2), and water soluble particles
are also subject to wash-out.

55

Several datasets are available for the non-oceanic anthropogenic emissions, such as Bond et al. (2007). However, other inventories have recently become available,
e.g. from the project ECLIPSE. Traditionally, fossil fuel
and biofuel have been combined to one dataset, although
recently it has become necessary to separate them.
Biomass burning is taken from Global Fire Emissions
Database, which are distributed vertically according to
the RETRO vertical distribution.
Organic matter released from the ocean follows Gantt
et al. (2015), and is calculated in the file emissions_ocean.f90.

Oslo CTM3 user manual

November 6, 2018

Important 1
The is method is based on sea spray production, but the
Oslo CTM3 sea spray function is not necessarily the same
as in Gantt et al. (2015). You should make sure the
Oslo CTM3 does what you want it to.

Most models seem to overestimate the stratospheric
amount of BC, suggesting that tropospheric loss mechanisms are missing. Stratospheric loss processes are not
very effective, covering gravitational settling and coagulation to mixed aerosols (e.g. together with sulphate).

If the SALT module (Section 16) is included, sea spray is
retrieved from that module. If SALT is not included, sea
salt production is calculated separately.

As a possible tropospheric loss mechanism it has been
suggested that hydrophobic BC is probably activated
more quickly in convective rain, because of the large mixing going on within convective plumes. In principle there
are two ways of parameterising this; either by calculating
the aging time on-line, or to scavenge hydrophobic BC
directly in convective rain.

In the emissions_ocean.f90 file, you can specify which
sea spray scheme to use (parameter SeaSaltScheme; it
may not be the same as used by the SALT module (it
has a parameter with the same name).

We have chosen the second option, and we assume the
wet scavenging to be similar to hydrophilic BC (but not
for OM). The first option would require a microphysical
parameterisation, and could in principle be taken from
the M7 application not yet included in Oslo CTM3. Another possibility is to build a simpler scheme based on
available model variables and tracers, such as sulphate
and temperature. We have not yet looked into this.

However, the actual schemes are listed in Section 16.1,
and can be found in the file seasaltprod.f90.
Important 2
Note that when using ECLIPSE emissions, you have to
turn off agricultural waste burning (AWB) in GFED.
This is done by hard-coding the flags partitions in the
GFED read-in routine emisutils_oslo.f90.

14.2

14.4

BC/OM deposition

All BC/OM tracers are dry deposited at the surface. The
dry deposition velocities are simple; they consist of three
constant values for each component, and applies for sea,
land and ice. The land fraction controls when to use land
or sea, while snow cover and ice cover (also sea ice) controls when to use deposition on ice. Generally the deposition rate is 0.025 cm/s, except for hydrophilic BC/OM
over water, which is assumed to be 0.2 cm/s.
As for all Oslo CTM3 dry deposition velocities, these
are modified due to the stability of the meteorological
conditions. When deposited on the ground, the particles
are lost to the model. However, the BCsnow module (if
included) will keep track of the amount of BC deposited
on snow (Section 14.5).
The hydrophilic aerosols are also washed out by rain, as
will be described next.

14.3

BC/OM wet scavenging

BC and OM aerosols are scavenged by rain (Section 7.1),
and as most aerosols they are assumed to be dissolved
completely – i.e. mass limited removal. However, the removal on large scale ice precipitation is reduced, assuming that 20 % of the grid box is available for scavenging.
The 20 % is somewhat arbitrary, but stems from the fact
that these aerosols are scavenged by collision processes in
rain, but in ice they are removed mainly by acting as ice
nuclei (Browse et al., 2012). As will be explained below,
we also apply the 20 % on large scale ice for hydrophobic BC/OC, and hydrophobic BC is also fully subject to
convective wet scavenging.
Although Browse et al. (2012) suggested there should
be no large scale wet scavenging for temperatures below
258 K, we also assume that 20 % of the grid box aerosols
can be subject for large scale ice scavenging. Convective
scavenging is assumed to be rain, having no such limit.

56

BC/OM scattering and absorption

Black carbon (soot) and organic matter have some optical
properties that can be taken into account. Properties
depend on whether the aerosols are of fossil fuel origin
(FF), biofuel (BF), or comes from biomass burning (BB).
BCFF
Dry aerosols, log-normal size distribution with radius
0.012 µm, standard deviation σ = 2. Refractive indices are from soot (World Climate Research Programme,
1986). Hydrophilic BCFF is assumed to have 50 % larger
extinction coefficient, giving two entries in FJX_scat.dat:
31 GM_BCFF_PHOB and 32 GM_BCFF_PHIL.
BCBB and OCBB
Dry aerosols, bi-log-normal size distribution, with radii
r1 = 0.08 and r2 = 0.16 µm, standard deviations σ1 = 1.5
and σ1 = 1.25, and Γ = 0.25/0.75. Refractive indices are from the SAFARI campaign (Haywood et al.,
2003b; Myhre et al., 2003a). Entry in FJX_scat.dat is
33 GM_BCOCBB
OCFF
Dependent on relative humidity. Log-normal size distribution with radius 0.5 µm, and σ = 2. Refractive indices
are from ammonium sulphate (Toon et al., 1976), and
the value at 200 nm is set to be equal to 300 nm, in lack
of measurements below 300 nm. Growth due to humidity
follows Peng et al. (2001). Entry in FJX_UMaer.dat is
labeled GM_OCFF.

14.5

BC on snow – BCsnow

The BCsnow module was first introduced by Rypdal et al.
(2009) and later used by Skeie et al. (2011a). It diagnoses
the amount of BC deposited on snow; it does not allow
the deposited BC to get back into the atmosphere. When
snow evaporates or melts, the BC is assumed to deposit
on the ground and is thereby lost. Technically, it is a simple parameterisation for generating snow layers based on

Oslo CTM3 user manual

November 6, 2018

meteorological data, using snowfall and dry deposition
values to account for the BC.
You turn this on by setting the logical parameter
LBCsnow=.true. in bcoc_oslo.f90.
How it works
There are two processes depositing BC on snow: dry deposition and wet scavenging. During each operator split
time step, dry deposition is diagnosed by the BCOM master routine (variables bcsnow_dd_ffc, bcsnow_dd_bfc
and bcsnow_dd_bio), while a separate routine in
pmain diagnoses wet scavenging based on the private
arrays BTT and BTTBCK (variables bcsnow_prec_ffc,
bcsnow_prec_bfc and bcsnow_prec_bio).
The parameter ILMM defines the maximum number of
snow layers allowed. Snow is built in BSNOWL, while BC
layers are built in BBCFFC, BBCBFC and BBCBIO. These four
variables are of size (ILMM,IDBLK,JDBLK,MPBLK).
When initializing from zero, the first snow layer is fetched
from the meteorological data snow depth, but with maximum of 0.2 m water equivalents (≈2 m snow). Next, snow
layers are produced by the amount of snowfall. This process is carried out after wet scavenging, by the BCsnow
master routine bcsnow_master, before a few other processes/adjustments are taken into account:
• bcsnow_collect_ij: Collects BC deposited on snow.
• bcsnow_evapmelt_ij: Calculates evaporation and
melting of snow.
• bcsnow_seaice_ij: Adjustment for sea ice.
• bcsnow_adjustment_ij: Other adjustments.
Collection
When BC is collected, it is always assumed that the uppermost layer is very thin (1 cm of snow, or 0.1 cm of
water equivalents). This is to account for dry deposition
being deposited only on the snow layer surface. If there
is snowfall, both dry deposited and wet scavenged BC is
first added to the uppermost thin layer. If there has been
snowfall during the last 24 hours, the uppermost layer is
merged with the layer below, i.e. building a thicker layer.
Finally, a new thin layer, with the same BC concentration, is made for the next round. Note, however, that the
new thin layer is formed only if the current top layer is
thicker than a threshold value, set to be 1.1 cm of snow.
This is to avoid generating extremely thin layers.

It may be that the snow layers generated from snowfall
does not correspond fully with the snow depth given in
the meteorological data. This is adjusted for here, but
only for land surface, not for sea.

14.6

Secondary organic aerosols

Secondary organic aerosols (SOA) are part of the organic matter, and when running the stand-alone BCOM
code, organic carbon may comprise both primary organic
aerosols (POA or POM), and SOA. If, however, a more
sophisticated SOA scheme is applied (see Section 19), the
organic carbon species of the BCOM module act as POA
only.

15

Mineral dust

The Dust Entrainment and Deposition (DEAD) Model
(Zender et al., 2003) has been coupled to the Oslo CTM3.
You include it by setting DUST =:Y in Makefile.
Based on wind and surface properties, it calculates the
vertical (upward) flux of mineral dust (i.e. production),
and based on observed size distributions (source modes)
of mineral dust, the flux is distributed onto the model
size bins. The DEAD module also calculates gravitational settling and deposition at the surface, although
this can be implemented with other settling parameterisations. Washout is carried out in the Oslo CTM3
washout (see Section 15.4.2). It is, however, possible to
let DEAD take care of washout, but this option is disabled in Oslo CTM3.
The DEAD code for the Oslo CTM3 is located in the directory OSLO/DEAD_COLUMN, and the DUST master routines connecting it to the Oslo CTM3 can be
found in the master module dust_oslo.f90 in OSLO. The
original Oslo CTM2 files are located in the directory
OSLO/DEAD_COLUMN/dead_ctm2.

Evaporation and melting
Evaporation and melting is treated as one process (sum of
the meteorological fields). The levels below the topmost
layer will be processed first, and when a layer is evaporated (fully or partially), its corresponding fraction of
BC is merged with the topmost layer. The topmost layer
is not affected until all layers below have disappeared.

15.1

Note that evaporation can be negative, and this is treated
as extra snowfall, adding to the topmost snow layer.

DUST tracer names must be DUST01, DUST02, etc,
and can be placed anywhere in the tracer list; they do
not need to be listed after each other. But it is wise
to declare them in increasing order, representing increasing size bins: The routines will not consider the numbering, but assign the first dust tracer to the smallest
bin and the last to the largest bin. A separate array
(dust_trsp_idx) keeps track of the transport numbers
of the DUST species.

Sea-ice treatment
The ECMWF meteorological data does not include snow
depth, snow melt and evaporation on sea ice. We parameterise this as a linear reduction of the snow layer (on sea
ice coverage larger than 30 %) between spring and summer. Snow layers are not allowed if sea ice coverage is
less than 30 %.

Get DUST running

The dust application can be run alone with two or more
dust tracers. The number of tracers must be set in
cmn_size.F90 (NPAR_DUST). Default is 8 tracers, as explained in Section 15.2.

If you need to change the size distribution, see Section 15.2.

Further adjustments

57

Oslo CTM3 user manual

15.2

November 6, 2018

Dust size bins

In the standard set-up of Oslo CTM3, mineral dust is
calculated using 8 size bins with diameters ranging lognormally from 0.06 µm to 50 µm. The diameter size parameters are set in dstpsd.F90: dmt_min and dmt_max.
The dust source is controlled by the observed source
modes described next. In principle, it should not be necessary to change the size range, and probably not the
number of bins. If you want to do changes to the model
size bins, this is done in cmn_size.F90 (NPAR_DUST). You
also have to change the properties used in fast-JX.

15.3

Dust sources

Mineral dust is produced by wind blowing across surfaces
where mineral dust occur. Information on earth surface
is read from the DUST input file dst_Txxx.nc, and the
user can select a mobilisation map and a matching scaling
factor. This is described in Section 15.3.1 for more.

The fudge factor is used to scale dust production up or
down, to get a certain annual total of emissions. The
fudge factor is somewhat resolution dependent, so you
need to make sure you use the correct value (check annual total production). What you specify for EFAC in
the STV section of Ltracer_emis_xxxx.inp, is stored
in flx_mss_fdg_fct0 in dstcst.F90, and used later in
dstmbl.F90.
Note that the fudge factors are not well tested in
Oslo CTM3, and if ’N/A’ is listed in Table 22, you should
use it with care.

15.3.2

How the production is technically done, is described in
Section 15.3.2.
DEAD can use mean winds or it can use a probability
density function for wind speed. This treatment is discussed in Section 15.3.3.

15.3.1

dataset. You specify this with the EFAC number in the
STV section of Ltracer_emis_xxxx.inp, as shown in Table 21.

Input files needed

DEAD reads time invariant (static) and time variant surface fields from the file dst_Txxx.nc, where xxx should
match the native metdata resolution (only either T159
or T42 are available). The files are located in the directory OSLO/DEAD_COLUMN/dustinput, and you need
to copy the correct file to the directory where you run
the model.
Such input files can be generated with the map module
written by Charlie, see Appendix C.5 for more on map.
Note that this program has not been compiled and used
since around 2005.
Mobilisation/erodibility dataset
Several fields are read from dst_Txxx.nc, but there is
only one field where the user can make a choice, namely
which mobilisation dataset/map to read. This field is
also referred as the erodibility or erodibility factor.
There are several erodibility maps available, as listed
in the left column of Table 22, but not all should be
used. The standard field for Oslo CTM3 should be
bsn_mds_sqr, as found by Grini et al. (2005), but it seems
Oslo CTM2 has used mbl_bsn_fct ever since, which is
what Oslo CTM3 has inherited.

Technical

DEAD calculates first the horizontal flux of mineral dust,
which is not what is transported horizontally in the
model, but the basis for calculating the vertical flux,
i.e. the mobilisation of dust. From observed source
size modes of dust, the vertical flux is next partitioned
into the model size bins, using the overlap fraction
ovr_src_snk_frc, i.e. the fraction of each source mode
going into each model size bin.
There are currently 3 source modes (dst_src_nbr
in dstgrd.F90), given by parameters in the routine
dst_psd_src_ini in dstpsd.F90:
• mss_frc_srcx: Mass fraction.
• dmt_vma_srcx: Mass median diameter [m].
• gsd_anl_srcx: Geometric standard deviation.
These are the parameters you need to change if you want
a different size distribution of the emissions.
The overlap fraction is thus a matrix of size
(dst_src_nbr,DST_NBR), giving the fraction of size distribution i in source modes that overlap with model bin j.
There are two methods available for calculating the
fluxes:
1 Horizontal flux from White (1979) in subroutine
flx_mss_hrz_slt_ttl_Whi79_get in dstmblutl.F90.
Vertical flux from Marticorena and Bergametti
(1995) in routine flx_mss_vrt_dst_ttl_MaB95_get
(same file).
2 Follows Alfaro and Gomes (2001). Should be
checked against a more recent version of
DEAD before use.
Option 1 is default, and to use Option 2 you have to
include the appropriate DUST token (AlG01) in Makefile.
Depending on your bins and distributions, the model bins
may or may not cover all sizes given by the defined source
bins. If the i-th source is completely bracketed by model
bins, then

It should be noted that in the DEAD code, the erodibility map is called mbl_bsn_fct (file dsttidbs.F90), even
though another map is used. This is somewhat unfortunate, but I didn’t want to change the variable names in
dst_Txxx.nc.

j=dst_nbr

X

Fudge factor
In addition, the user much define a global scaling factor (fudge factor) that should match the mobilisation

58

ovr_src_snk_frc(i, j) = 1

(137)

j=1

and similarly, if the j-th model bin completely brackets

Oslo CTM3 user manual

November 6, 2018

Table 21: Defining fudge factor and mobilisation dataset in the STV section of Ltracer_emis_xxxx.inp.
’DEAD_Mineral_Dust_FudgeFactor_and_Mobilisation_Dataset_Name’
556
1.4686d-04 HLF
99 9999 NAT
0
-1
0
’bsn_mds_sqr’
--#This section sets mobilisation map name and fudge factor for DUST

Table 22: Mobilisation dataset and fudge factors:
Your choices must be set in Ltracer_emis_xxxx.inp,
and it is important that the fudge factor matches
the mobilisation dataset. The factors were made for
Oslo CTM2, and are to some extent resolution dependent, so you have to check the annual total production to find the correct factor for your runs.
Mobilisation dataset
bsn_mds_sqr (pdf winds)
bsn_mds_lnr (pdf winds)
bsn_mds_lnr (mean winds)
mbl_bsn_fct (pdf winds)
area_acm_fct (pdf winds)

fudge factor
1.4686×10−4
1.0780×10−4
2.5046×10−4
2.1994×10−4
N/A

higher wind speeds, before being weighted properly to
form the total dust flux.
For a grid value of 10 m/s and wnd_mdp_nbr=5, the dust
flux will be calculated for winds of approximately 6, 8,
10, 12 and 14 m/s, and then weighted to one flux.
You can turn this off by setting the variable
wnd_mdp_nbr=1 in dstmbl.F90. It is also possible to increase this number.

15.4

Dust sinks

Mineral dust can be removed by precipitation and by
gravitational settling.

the sources, then:

15.4.1

Gravitational settling

i=dst_src_nbr

X

ovr_src_snk_frc(i, j) = 1

(138)

i=1

The part of the sources bins being smaller or larger than
the model size bin range will not be accounted for.
Note that inputs for calculating the overlap fraction are
generic median diameters of log-normal distributions.
Thus, if the routine is called with number median diameters it will compute the overlap factors for number
concentration, and if it is called with mass median diameters then it will compute the overlap factors for mass.
For the default Option 1, this is done in
ovr_src_snk_frc_get in psdlgn.F90, called from
dst_psd_ini in dstpsd.F90. This fraction is converted
to mass (ovr_src_snk_mss). If you use Option 2, the
overlap (ovr_src_snk_mss) is updated each time step in
dst_mbl in dstmbl.F90.

15.4.2

Wet scavenging

Dust tracers are washed out as regular tracers, following
the parameters listed in the file scavenging_wet.dat. All
dust tracers are assumed to be soluble, as they generally are good cloud condensation nuclei. They are also
removed by ice.
If you include more DUST tracers, make sure they are defined to be wet scavenged in the file scavenging_wet.dat.

Scaling the fluxes
After horizontal fluxes are calculated, they are scaled linearly with:
• Bare ground fraction.
• Erodibility map/mobilisation factor.
• Fudge factor.

15.3.3

Currently, DEAD handles the gravitational settling, but
this should probably be revised when a second order moment routine is available. The fall velocity is calculated
from Stokes theory, and at the surface the velocity is adjusted due to turbulent mixing.

15.5

DUST scattering and absorption

Mineral dust have optical properties that can be taken
into account when calculating photochemical reaction
rates.

Wind speed variability

Dust is formed due to wind at the surface, and although
the grid box wind is given from the meteorological data,
the actual wind will vary around the mean wind. Because the dust production is sensitive to the wind speed,
the inclusion of wind speed variability may be important.
By default we apply a variability of 5 steps (parameter
wnd_mdp_nbr in dstmbl.F90), so that the calculation of
dust production (i.e. the flux from the surface) is done
for 5 wind speeds; the mean wind, two lower and two

59

The dust bins (8 by default) are assumed to logarithmically span the diameter range of 0.06 µm to 50 µm, so
that the size of aerosols in each bin are monodisperse
(no variation of diameter in each bin). However, within
each bin, the mass weighted diameter is calculated, based
on the bin sizes and mass median diameter (dmt_vma in
routine dst_psd_ini in dstpsd.F90) and standard deviation of the distribution (gsd_anl, same location). Default
value for dmt_vma is 2.524 µm, with a standard deviation
gsd_anl of 2. These numbers are supposedly taken from
Shettle (1984), but I could not manage to find it. Zender
has probably a copy if you need it.

Oslo CTM3 user manual

November 6, 2018

Particle density is assumed to be 2.6 g/cm3 , and refractive indices are taken from the SHADE campaign (Haywood et al., 2003a; Myhre et al., 2003b).
Mineral dust does not swell with increased humidity, so
the scattering and absorbing properties are listed in the
file FJX_scat.dat, having entries GM_DUST1 to GM_DUST8.
Important
If you change either the size of the bins, or the
mass median diameter (dmt_vma) or standard deviation
(gsd_anl_dfl), you have to re-compute the table values
for GM_DUST in FJX_scat.dat.

15.6

run the original DEAD model as a column model (with
parameters PLON=PLAT=1) does not fit the treatment of input data for a global model. So the code was re-organized
to yield a purely column treatment.
Important
If you include more DUST tracers, make sure they are defined to be wet scavenged in the file scavenging_wet.dat.
The DEAD version implemented is 1.3.2. There are,
however, newer versions available; check the web site4
for information. If an update is needed, check the new
version against the code we use. Be certain that you
keep the column treatment of the Oslo CTM3; if necessary, you can compare the new version to the old code in
OSLO/DEAD_COLUMN/dead_ctm2.

Things to watch out for

Oslo CTM3 and DEAD are since 2015 fully consistent in
resolution parameters.

15.9

Note that DEAD has level 1 on the top (i.e. the top of
the atmosphere has index 1). The transformation is taken
care of in the subroutines in dust_oslo.f90.

The DEAD model included should be updated to a more
recent version.

In the DEAD file blmutl.F90 two fixes have been added.
The first is to make sure the displacement height is never
higher than 70 % of the midpoint height. The second
is to make sure that roughness height is never higher
than 70 cm, which seemed to give problems in iterations
for some grid points at some specific times (that is: the
energy budget for the first layer did not converge).

15.7

Sea salt

The sea salt application was introduced by Grini et al.
(2002). It is an independent application which can be
included in any transport model.
In the Oslo CTM3, the salt code is located in the file
seasalt.f90. It is primarily based on Fitzgerald (1975).

Dust budgets

Sea salt production, however, is located in a separate
module seasaltprod.f90, because it is used to calculate
emissions of organic matter from ocean.

The dust module outputs a file called ctm3dstbudget.nc
which is the budget for dust. The file contains 5 temporally averaged fields, which are average fluxes (kg/m2 /s)
of dust for different processes, and one average for the
burden (kg/m2 ):
• Convective wet deposition [kg/m2 /s]
• Large scale wet deposition [kg/m2 /s]
• Dry deposition [kg/m2 /s]
• Production [kg/m2 /s]
• Total burden [kg/m2 ]

16.1

Sea salt production

The sea salt production, or flux, is found
in the array seasalt_flux,
and is of size
(NPAR_SALT, IDBLK, JDBLK, MPBLK) and has units
kg/s.

The time span for the average is defined as for the
SALT module; using the core budget tendencies calendar
(“BUDGET tendencies calendar” flags in LxxCTM.inp).
Also grid area is put out.
By default, the budget terms are summed up over all
dust tracers, but you can also put out budget terms
for each of the tracers. The latter is done by setting
LDUSTDIAG3D=.true in dust_oslo.f90.
3D averages of dust mass is put out as usual by the core
diagnostics. For dust, it makes more sense to talk about
mass mixing ratio (kg/kg) since the dust is not molecules
as such.

15.8

16

Into the future

Additional notes

The flux is calculated from the winds, and hence carried out every meteorological time step, by the subroutine seasalt_emis. Several methods are available, set by
SeaSaltScheme in seasalt.f90:
1 Monahan et al. (1986) for small particles, as suggested by Gong et al. (1997), and Smith et al. (1993)
for large particles. This is the default heritage from
Oslo CTM2.
2 Mårtensson et al. (2003).
3 Gantt et al. (2015), i.e. Gong (2003) with sea surface
temperature adjustment as in Jaeglé et al. (2011).
4 Witek et al. (2016), i.e. Sofiev et al. (2011) without salinity effects, using sea surface temperature
adjustment as in Jaeglé et al. (2011).
Seasalt flux is used to calculate emissions of organic matter from ocean, in emissions_ocean.f90. Also see Section 14.1 for some more info.

The original DEAD model available from Zender was
coded to be parallelized over latitudes, and had to be restructured for the column treatment in Oslo CTM3; to

4 http://dust.ess.uci.edu/dead/

60

Oslo CTM3 user manual

16.2

November 6, 2018

Technical information

The salt aerosols are divided into bins, and there is one
tracer field for each bin. The tracer names are SALT01,
SALT02, etc. They do not need to be listed after each
other, but should be (it is wise to keep the tracers close
to each other in the transport array). The tracers should
be listed in increasing order (01, 02, 03, ...) since the size
bins will be assigned from small to large, using the names
encountered in the tracer list.
The QSSA solver is used to integrate sea salt (for each
bin). The production terms are surface emissions (only
in the lowermost layer) and gravitational settling from
the layer above (except for the top layer). The loss term
includes gravitational settling to layers below (all layers
except lowest layer) and dry deposition (lowest layer).
Hence surface layer dry deposition differs from gravitational settling.

does; it uses the “BUDGET tendencies calendar” flags
in LxxCTM.inp. The routine is called from pmain after
core tendencies have been processed, and the netCDF
output file is called ctm3sltbudget.nc.
Several processes are diagnosed:
• Production [kg/m2 /s]
• Dry deposition [kg/m2 /s]
• Large scale wet deposition [kg/m2 /s]
• Total burden [kg/m2 ]
• Convective wet deposition [kg/m2 /s]
By default, the budget terms are summed up over all
sea salt tracers, but you can also put out budget terms
for each of the tracers. The latter is done by setting
LSALTDIAG3D=.true in seasalt.f90.
In the netCDF file you find all the information you need,
including grid area, the time span of accumulation, etc.

So far the emissions and dry deposition are treated as
production and loss terms in the QSSA solver. This may
be non-compatible with the UCI emission treatment, and
may need to be revised.

17

Water makes the sea salt particles grow to larger sizes.
However, this water is not transported. The growth is
calculated locally each time step, depending on the local
relative humidity, and the information on how large the
aerosols are are used to adjust their falling velocity and
their dry deposition velocity.

Aerosol nitrate can be simulated with the equilibrium
module developed by Metzger et al. (2002). In the
Oslo CTM3 it needs to be run together with tropospheric
chemistry (Section 10), sulphate module (Section 13) and
the SALT module (Section 16). These must be turned on
in the user section in Makefile.

16.2.1

The nitrate master routine is located in the file nitrate_oslo.f90, and it works on IJ-blocks, calling the Metzger program as a column model.

Wet scavenging

Sea salt aerosols are assumed to be absolutely soluble
and are removed in the convective and stratiform precipitation processes in the Oslo CTM3. Wet scavenging
parameters are set in the file scavenging_wet.dat.
Important
If you include more SALT tracers, make sure they are defined to be wet scavenged in the file scavenging_wet.dat.

16.3

Note that the nitrate module is not used in the
stratosphere.
When stratospheric chemistry is included, the nitrate module is applied up to the
tropopause height (maxval(LMTROP(I,J))). When stratospheric chemistry is turned off, nitrate is calculated up
to the maximum tropopause height of the latitude band
(maxval(LMTROP(:,J))) plus a few layers (LVS2ADD2TC).
In the stratosphere nitrate species are converted to
HNO3 , and therefore also added to NOy. This stratospheric loss was not included in CTM2.

SALT scattering and absorption

Sea salt have optical properties that can be taken into
account when calculating photochemical reaction rates.
For dry aerosols, the 8 size bins are assumed to logarithmically span the diameter range of 0.03 µm to 25 µm, so
that the size of aerosols in each bin are monodisperse (no
variation of diameter in each bin).
Salt particles will grow due to relative humidity, and optical properties are found in FJX_UMaer.dat, where the
entries are GM_SALT1 to GM_SALT8. The growth follows
Fitzgerald (1975), and refractive indices used for calculating these data are taken from Shettle and Fenn (1979)
and Rothman et al. (2003).

The Metzger program takes into account sulphate, total HNO3 (i.e. HNO3 (gas) + NO3 (aerosol)), total NH3
(i.e. NH3 (gas) + NH4 (aerosol)). The basic principles for
gas/aerosol partitioning in Metzger’s program are:
• All sulphate exists as aerosols.
• The most stable form of sulphate is Na2 SO4 .
• The next most stable form of sulphate is
(NH4 )2 SO4 .
• The most stable for of aerosol ammonium is
(NH4 )2 )SO4 .
• Nitrate can exist in aerosols if neutralized by NH3 .
• Nitrate only exists in aerosols if it is cold (due to
the Clausius Clapeyron equation).

17.1
16.4

Nitrate

Nitrate physics – modes

Salt budgets

The SALT module produces averages of the salt budget, on the same days as the core budget tendencies

61

In nature, condensation/evaporation drives the partitioning of HNO3 . In the equilibrium-module, however, there
is no way to follow the path from gas to aerosol. What

Oslo CTM3 user manual

November 6, 2018

than NaCl and if we have NO−
3 available it will replace
the Cl− in the next time step also. The reaction happening is:

is found is the partitioning with lowest Gibbs energy of
the mixture we put in.
The equilibrium routine will predict Na2 SO4 aerosols if
both Na+ and SO2−
are in the mixture. However, since
4
both SO2−
and Na+ are non-volatile, given a mixture
4
of NaCl, H2 SO4 , HNO3 and NH3 the equilibrium model
could predict aerosol Na2 SO4 and otherwise gaseous components.
However, if sulphates are small aerosols (accumulation
mode) and NaCl are large aerosols (coarse mode), the
only way Na can mix with SO4 is through coagulation
and not through condensation.
To treat this right, we make the (simple) assumption that
sulphate exists as a “fine” mode, and sea salt as a “coarse”
mode. We calculate chemical equilibrium for both modes.
For the first mode, we calculate chemical equilibrium for
the mixture of NH3 , HNO3 and H2 SO4 , which will normally predict aerosol (NH4 )2 SO4 . If any excess NH3 is
present and if it is cold enough, aerosol NH4 NO3 will be
predicted.
For the coarse mode, equilibrium between the leftover
from the first equilibrium (HNO3 and NH3 ) and NaCl
is calculated. Normally this will transfer a large part of
HNO3 to the aerosol phase, creating NaNO3 . The “small”
mode should have the chance to reach equilibrium first;
because of their higher surface to mass ratio, they reach
equilibrium much quicker than the larger ones.

However, the fact that we set [Cl− ] = [Na+ ] as input to
the equilibrium calculations does not really change the
output since HCl is the first gas to evaporate anyway.
If HNO3 is available, it will replace Cl− until [NO−
3 ] =
[Na+ ]. Thus the important thing is to keep track of Na+ ,
which we do in the sea salt tracers.

17.4

Nitrate tracers

As noted, the nitrate application depends on tropospheric
chemistry, sulphate and sea salt applications. The new
tracers needed for this simulation are given in Table 23.
Wet scavenging of NH3 is based on Henry’s law, assumed
not to be taken up in ice, while the aerosols are assumed
to be mass limited uptake (see Section 7.1.1).
H2Ofine and H2Ocoarse are not used in the Oslo CTM3,
since H2 O is not transported. They are only used as diagnostics, and are therefore left out until transport is necessary; they are calculated privately in the nitrate module
nitrate_oslo.f90.

The nitrate application needs emissions of NH3 . Different datasets are available, e.g. GEIA (Bouwman et al.,
1997) which has traditionally been used in Oslo CTM2.
However, newer sets are also available, e.g. from Lamarque et al. (2010). While the latter covers only anthropogenic emissions, the GEIA data covers both anthropogenic and natural emissions, given on 1x1 resolution
on an annual basis. Following Adams et al. (1999), we
impose a monthly variation on three datasets by weighting emissions by the number of daylight hours during the
year: Domestic animals, fertilizers, and crops sources.
The GEIA dataset is rather old, so it should probably be
updated.

All original files are available in /div/amoc/d4-4/osloctm/archive_ctm/input_files/, in the subdirectory emissions/NH3_GEIA. Here you also find the program sumdata_as.f, which does the scalings (the original file scaled
all datasets with sunlit hours). While producing monthly
totals in separate files, it also produces a file that the
IDL program make_geia_netcdf.pro uses to make the
netCDF file.
Emissions files can be found in the emission directories, and must be included in the emission list
Ltracer_emis_xxxx.inp.

17.5
17.3

Nitrate emissions

The Oslo CTM2 emissions were summed up in one file,
which made them less flexible. Therefore, the format
is updated, and the GEIA datasets are available on
a netCDF file, scaled to kg(NH3 )/s for 12 months. Three
of them are scaled with sunlit hours as described above.

To make things simple, aerosols are assumed meta-stable
in the Oslo CTM3, so that we don’t need to take into
account particle history.

17.2

NaCl(aq) + HNO3 (g) → NaNO3 (aq) + HCl(g)

Sea salt in the nitrate model

Sea salt is crucial to the nitrate application. The standalone sea salt application is treated in mass space and
does not need a specific molar mass. However, when nitrate is included it is important that you put the correct
molecular mass to the sea salt tracers (which is 58 g/mol),
because the equilibrium model evaluates how much of the
Cl in NaCl which can be replaced with NO3 .
Note that after this has been evaluated, sea salt is transported as NaCl again. This might seem inconsistent since
strictly speaking, they may contain some NaNO3 . However, this is not important since NaNO3 is more stable

62

Remaining problems

The dry deposition of NH3 is set to some numbers found
in an old paper by Sorteberg and Hov (1996). There
seems to be agreement that drydep velocities of NH3
should exceed velocities of NH+
4 , but it is unclear by how
much. The new dry deposition scheme (Section 7.2) may
improve this.
Based on the first nitrate studies with Oslo CTM2, it
seems that the amount of NO3 fine aerosol is heavily dependent on how efficiently NH3 is mixed up to altitudes
where it is cold enough to form NH4 NO3 . At ground it
is usually quite warm, while at higher altitudes aqueous
production of H2 SO4 makes aerosols too acidic to form
NH4 NO3 .

Oslo CTM3 user manual

November 6, 2018

Table 23: Tracers included in the nitrate model. H2Ofine and H2Ocoarse are only used in diagnostics, and
are therefore left out until transport is necessary; they are calculated privately in the nitrate module.
Nr

Component name

Remarks

61
62
63
64
65
–

NH3
NH4fine
NH4coarse
NO3fine
NO3coarse
H2Ofine

Gas, emitted

–

H2Ocoarse

Aerosol water adjusts rapidly
to ambient RH

Approximate
lifetime
weeks
weeks
days
weeks
days
short

Transport

Wet dep.

Yes
Yes
Yes
Yes
Yes
—

Yes
Yes
Yes
Yes
Yes
—

short

—

—

A scientific analysis of the Oslo CTM3 should perhaps include sensitivity to vertical mixing, since the first CTM2
results seem to indicate that NH3 /NH+
4 is not mixed to
cold enough layers, and the cold layers thus stay acidic
due to high sulphate production there.

19.1

17.6

Table 24: The secondary organic aerosol precursor components. Bottom three replaces the usual
C6HXR in Oslo CTM3.

Box version

A box version of the nitrate code exists in the
Oslo CTM3 tool box at /div/amoc/d4-4/osloctm/archive_ctm/box_models/.

18

M7

M7 is not yet implemented, and there is no plan yet to
do so.

19

Secondary organic aerosols
(SOA)

Secondary organic aerosols (SOA) was implemented in
Oslo CTM2 by Hoyle et al. (2007), and utilised later in
e.g. Hoyle et al. (2009a).
Several precursor hydrocarbons are included (Section 19.1). The precursors also react within the tropospheric gas phase chemistry, oxidised by OH, O3 and
NO3 , forming SOA gas phase components (Section 19.2).
A separate module calculates SOA from an equilibrium
approach, as explained in Hoyle et al. (2007).

The SOA precursor VOCs are listed in Table 24. In
addition, the Oslo CTM3 component C6HXR has been
split in three, namely C6HXR_SOA for trimethyl-benzenes,
Benzene for benzene and Tolmatic for toluene and other
aromatics.

Nr

Component

Remarks

280
281
282
283
284
285
286
287
288
289
290
291
192
193

Apine
Bpine
Limon
Myrcene
Sabine
D3carene
Ocimene
Trpolene
Trpinene
TrpAlc
Sestrp
Trp_Ket
Benzene
Tolmatic

12

C6HXR_SOA

α-Pinene
β-Pinene
Limonene
Myrcene
Sabinene
∆3 -Carene
Ocimene
Terpinolene
α- and γ-Terpinene
Terpinoid alcohols
Sesquiterpenes
Terpenoid ketones
Benzene
Toluene and
other aromatics
Trimethyl-benzenes and
xylene (replaces C6HXR)

19.2

Stochiometric coefficients are used for the chemical products, based on a two-product model (Hoffmann et al.,
1997), and the partitioning (or separation) between the
gas and aerosol phases is calculated assuming equilibrium
and using partitioning coefficients (Hoyle et al., 2007).
Importantly, in Oslo CTM3 we do the separation in both
the troposphere and the stratosphere, but the chemical
conversion from precursors is only carried out in the troposphere. Stratospheric separation was not treated in
Oslo CTM2.

63

SOA precursor tracers

SOA tracers

The SOA tracers are several gas components SOAGASxy,
where x is the class number (1–8), and y is the oxidising component (1–3, O3 , OH, NO3 ). Similarly, there are
aerosol components SOAAERxy. These components have
component IDs between 150 and 191. See Hoyle et al.
(2007) for more information.

19.3

SOA sources and sinks

The SOA precursors are emitted from the earth surface,
using a rather old dataset, which should be updated.

Oslo CTM3 user manual

November 6, 2018

These precursors, and also isoprene, are emitted assuming emissions only at daytime and scaled to sunlight, as
described in Section 8.4.4.
SOA are produced or lost according to the separation
method, which is based on temperature; i.e. the separation can be either production or loss.
SOA gases and the precursor gases are assumed to have
a stratospheric lifetime of 1 month, assuming the SOA
are converted into species not treated in the model.
Oslo CTM2 used a lifetime of 1 week, which was considered too short and hence upped in Oslo CTM3. See
strat_loss.f90 for more. SOA aerosols are subject to gravitational settling (also treated in stratloss_loss.f90), and
if you run the Oslo CTM3 without stratospheric chemistry, the 1 month lifetime also applies for the aerosols.

often encountered). If the maximum PVU is lower than
this limit (typical for low latitudes) the tropopause is
defined at L380K; the upper-most level where potential
temperature is lower than 380 K.
Sometimes the minimum (absolute value) PVU in a column can be greater than 2.5 (e.g. in the polar vortex). In
that case, two options remains; if there exists an altitude
of minimum absolute PVU, it is chosen as tropopause.
If PVU decrease monotonically with depth (i.e. downwards), the tropopause is set to a default minimum height
of 5 km.
The routine is called tp_pvu_ij and you set this option
using TP_TYPE=1 in cmn_oslo.f90.

20.1.2

20

Lapse rate based tropopause

The tropopause can also be found traversing upwards until the level where the lapse rate (calculated between the
current level and the next)

Physics

Based on the meteorological data, some physical properties may be calculated. These include tropopause height,
equivalent latitude, potential vorticity, etc. The physics
routines are located in the physics module, which can be
found in the file physics_oslo.f90 in the OSLO directory.
Also see Appendix C, where e.g. airmass, layer thickness
and relative humidity is calculated.

goes below 2 K/km.

20.1

The routine is called tp_dtdz_ij, and you set this option
using TP_TYPE=2 in cmn_oslo.f90.

Tropopause height

In Oslo CTM3, several routines need to distinguish
between tropospheric and stratospheric air. This is
typically done by finding the tropopause, which is 2dimensional, or it can be done in 3D.
The chemistry is so far set up to use a 2D tropopause
to select when to use the tropospheric module and when
to use the stratospheric module. Some diagnostics such
as STE flux uses 3D fields to separate tropospheric from
stratospheric air.
In any case there are several ways to calculate the
tropopause. The 3D representation is explained in Section 21.1.4, while the 2D representation is described here.
As noted above, the routine can be found in the file
physics_oslo.f90.
What we call the tropopause (2D) is defined as the uppermost layer of the troposphere, and is therefore named
LMTROP (historically, LM was often used as parameter instead of LPAR).

−dT /dz = −

(139)

It assumes a minimum tropopause height of 5 km, and
a maximum height given by 50 hpa (top of grid box must
have larger pressure than this).

20.1.3

Lapse rate based on E90 tracer

The tropopause defined by the E90 tracer (Prather et al.,
2011) can be used if the E90 tracer is included. It is the
uppermost level where the 3D LSTRATAIR_E90 is .false.
(i.e. tropospheric air), as given by the variable LPAUZTOP.
The routine is called tp_e90_ij, and you set this option
using TP_TYPE=3 in cmn_oslo.f90.

20.2

Potential vorticity

Potential vorticity (PV) is available in the L60 meteorological data, but only in a few L40 data sets. If not
available, PV will be calculated from the meteorological
data (temperature, wind and pressure). A routine for
this is available in physics_oslo.f90.

20.3
20.1.1

TL+1 − TL
zL+1 − zL

Equivalent latitude

PVU based tropopause

First, the tropopause level is not allowed to have potential temperature higher than 380 K (Holton et al., 1995).
The uppermost layer having potential temperature below
380 K is called L380K.
Traversing downwards from L380K, the tropopause (top
layer of troposphere) is defined at the level where the
PVU (106 PV) is lower than 2.5 PVU (Holton et al., 1995),
but not lower than 5 km (a somewhat arbitrary value, not

In the physics module (in the file physics_oslo.f90) we
also calculate equivalent latitude. Equivalent latitude is
calculated from PVU according to Nash et al. (1996),
based upon the fact that PV is assumed to be conserved
on potential temperature (θ) surfaces. All necessary parameters and variables are defined in the physics module.
How it is done
We define NTHE θ levels in the parameter pvthe(NTHE),
and we interpolate PV onto each of those levels. Then

64

Oslo CTM3 user manual

November 6, 2018

we find equivalent latitudes for all horizontal grid boxes
for those θ surfaces.
The calculation of equivalent latitude is carried out for
each hemisphere separately. Max absolute PV is in the
polar vortex, and is therefore assumed to be the pole
in equivalent latitudes. Minimum is at Equator. The
PV span is divided into bins, and the area covering each
binned value of PV is calculated. Depending on the area
containing each PV, each grid box is assigned an equivalent latitude. See the routine for equations and description.
Remember that equivalent latitude is only useful in the
uppermost troposphere and in the stratosphere, which
should be reflected in the pvthe values.
How to use the data
For a given grid box, find the potential temperature and
interpolate equivalent latitude from the closest θ levels in
pvthe.

20.4

Boundary layer height

The routine set_blh_ij sets BLH from the boundary layer
height at the current and next meteorological time step
(BLH_CUR and BLH_NEXT, respectively). This is interpolated linearly in time, and we interpolate halfway into
the time step ∆tchem2 of the CCYC-loop. The weighting fraction of current and next fields are then
fnext

=

fcur

=

nmetTimeIntegrated +
∆tmet
1 − fnext

chem2
(140)
(141)

where nmetTimeIntegrated is the elapsed time of the meteorological time step, and ∆tmet is the meteorological
time step.
For diagnostic output which are done every NOPS, the
weighting is done to get BLH at each NOPS:
fnext

=

fcur

=

NOPS − 1
NROPSM
1 − fnext

(142)
(143)

Both BLH_CUR and BLH_NEXT needs to be set when reading meteorological data. If BLH_NEXT cannot be found, it
should be set to the same as BLH_CUR.

20.5

Table 25: CLM-PFTs.
#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Name
Needleleaf evergreen temperate tree
Needleleaf evergreen boreal tree
Needleleaf deciduous boreal tree
Broadleaf evergreen tropical tree
Broadleaf evergreen temperate tree
Broadleaf deciduous tropical tree
Broadleaf deciduous temperate tree
Broadleaf deciduous boreal tree
Broadleaf evergreen temperate shrub
Broadleaf deciduous temperate shrub
Broadleaf deciduous boreal shrub
Cool/Arctic C3 grass
C3 grass (cool)
C4 grass (warm)
Crop 1 (Corn)
Crop 2 (Other crops)
Barren land

Table 26: MODIS-PFTs.

∆t

2

year to apply in the input file, stored in LANDUSE_YEAR.
If you set 9999, the meteorological year will be used.
The variable LANDUSE_IDX sets the dataset you want, 2 is
MODIS and 3 is CLM.

#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Name
Evergreen Needleleaf Forests
Evergreen Broadleaf Forests
Deciduous Needleleaf Forests
Deciduous Broadleaf Forests
Mixed Forests
Closed Shrublands
Open Shrublands
Woody Savannas
Savannas
Grasslands
Permanent Wetlands
Croplands
Urban and Built-Up
Cropland/Natural Vegetation Mosaic
Permanent Snow and Ice
Barren or Sparsely Vegetated
Unclassified

Land surface types

The Oslo CTM3 needs information about land surface
types, also called land use types or plant functional types
(PFT). These are used e.g. for dry deposition scheme or
in the biogenic emission routines.
Prior to the inclusion of online biogenic emissions (see
Section 8.6), a MODIS dataset was used. Now we use
the PFT field from the Community Land Model (CLM),
giving vegetation information for 16 types for all years
since 1860. Specifics of the PFTs are listed in Table 25
and Table 26.
The land surface type fractions for a grid point I,J are
stored in landSurfTypeFrac(:,I,J). You define which

65

20.6

Leaf area index

The leaf area index (LAI) in Oslo CTM3 is actually green
leaf area index, but we still call it LAI. It is taken from
ISLSCP2, FASIR adjusted, in 0.25 degree resolution, (Sietse et al., 2010). The field is interpolated to Oslo CTM3
resolution.
The path to the file is set in the input file, along with
the year to apply, LAI_YEAR. Only year 1982 to 1998 are
available, so for general model studies we use the climatological mean of these, set by LAI_YEAR=0000 If you set
9999, the meteorological year will be used (if available).

Oslo CTM3 user manual

20.7

November 6, 2018

Roughness length

The roughness length (ZOI) is taken from ISLSCP2,
FASIR adjusted, in 0.25 degree resolution, (Sietse et al.,
2010). The field is interpolated to Oslo CTM3 resolution.
The path to the file is set in the input file, along with
the year to apply, ZOI_YEAR. Only year 1982 to 1998 are
available, so for general model studies we use the climatological mean of these, set by LAI_YEAR=0000 If you set
9999, the meteorological year will be used (if available).

21

Diagnostics

In the Oslo CTM3 we try to do all processes in parallel
regions (private arrays), and this also applies for the diagnostics. This is done either by creating private arrays
for diagnostics, which are then put back to global arrays
at the end of the parallel region, or by letting the parallel region work directly on its part of a global array – in
that case the global array should be set up for IJ-block
structure (see Section 4.3.2 for more on that).

21.1

Core diagnostics

The simplest diagnostics is the 3D averages, but the core
can also diagnose each process.
The process diagnostics can be calculated in 2D (zonal
means or layers), for pre-defined boxes, and in addition
time series can be produced. The core diagnostics are
controlled by flags in the input file LxxCTM.inp.

21.1.1

3D averages

Averages of all species are calculated. The 3D average in the Oslo CTM2 was monthly averages. In the
Oslo CTM3, however, you are more free to set the temporal span of the average.
In the file LxxCTM.inp you can set flags for when to
calculate averages (AVERAGES calendar JDO_A). The
shortest time span is one day, and the time span is the
period since the last average calculation. Setting the flags
to 1 generates the files, while setting it higher than 1 also
prints some data to screen.
Since mid-2017, The file format for averages is netCDF4,
and the file name is avgsavFROMDATE_TODATE.nc,
where FROMDATE and TODATE are on the form YYYYMMDD.
Hourwise, the accumulation starts at 00UTC on
FROMDATE, and runs until 00UTC on TODATE (00UTC on
TODATE is thus taken into account in the next average).

•
•
•
•
•
•
•
•

The fixed (not average) variables are:
• lon: Longitudes at grid box center. Unit is degrees
East.
• lat: Latitudes at grid box center. Unit is degrees
North.
• lev: Pressure at mass-weighted grid box center
(mean of pressures at upper and lower edges), assuming surface at 1000hPa. Unit is hPa.
• ilon: Longitude at at eastern edges of grid boxes.
Unit is degrees East.
• ilat: Latitudes at southern edges of grid boxes. Unit
is degrees North.
• ilev: Pressure at lower edge of grid box, assuming
surface at 1000hPa. Unit is hPa.
• ihya: Sigma hybrid coordinate A, called ETAA in
Oslo CTM3. Unit is hPa.
• ihyb: Sigma hybrid coordinate B, called ETAB in
Oslo CTM3. Unitless.
• IPARW: Meteorological data native longitudinal
resolution.
• JPARW: Meteorological data native latitudinal resolution.
• LPARW: Meteorological data vertical resolution.
• NRAVG: Number of time steps accumulated.
• START_TIME:
Start
time
[YYYY,MM,DD,hh,mm,ss]
for
accumulating
data.
• END_TIME: End time [YYYY,MM,DD,hh,mm,ss]
for accumulating data.
• START_DAY: Start day for accumulating data
(model counter NDAY).
• END_DAY: End day for accumulating data (model
counter NDAY).
• VERSION: Output file version number.
• NPAR: Number of transported species in simulation.
• NOTRPAR: Number of non-transported species in
simulation.
• tracer_idx:
ID numbers for species used in
Oslo CTM3(chem_idx and Xchem_idx).
• tracer_molweight: Molecular weight for transported species. Unit is g/mol.
• tracer_name: Tracer/species names.
• tracer_transported: Flag if tracer was transported
(1) or not (0).
• gridarea: Grid box area. Unit is m2 .
The
•
•
•
•
•
•

Note that the program will stop if the avgsav-file already
exist. This is to prevent results from being overwritten.
The plan is that only selected species (listed in input file)
will be written to 3D averages, to save space.
All variables put to file are described in the file, and they
are:
The variable dimensions on file:

66

lat: Latitudinal dimension
lon: Longitudinal dimension
lev: Vertical dimension
ilat: lat+1
ilon: lon+1
ilev: lev+1
tname_len: Length of character strings in TNAME
date_size: 6 (year, month, date, hour, minutes, seconds)

•
•
•
•

averaged variables are:
Psfc: Surface pressure. Unit is hPa.
AIR: Grid box air masses. Unit is kg.
volume: Grid box air volumes. Unit is m3 .
air_density: Grid box air density.
Unit is
molec/cm3 .
temperature: Grid box temperature: Unit is K.
height: Height of grid box bottom, so it is of size
LPAR+1, and it has reverse order (ilev,lon,lat).
LMTROP: Uppermost model level in troposphere.
H2O_all: H2 O from metdata Q, but overwritten in
the stratosphere by calculated H2 O when available.
Q: Specific humidity retrieved from meteorological
data. Unit is kg(H2 O)/kg(air).
Tracers: All included tracers. Units are kg of
species.

Oslo CTM3 user manual

21.1.2

November 6, 2018

Process diagnostics / budget diagnostics

All processes are diagnosed. However, when the Oslo
treatment of emissions and deposition is used, those processes will not be diagnosed well, as they are part of the
chemistry. However, they are diagnosed separately.
Budget diagnostics of different processes are controlled by
the BUDGET tendencies calendar (JDO_T) in the input
file.

21.1.3

e90 tracer

Prather et al. (2011) presented a tracer that with given
surface emissions and an e-folding atmospheric lifetime
of 90 days, will follow the observed tropopause closely at
about 90 ppbv.
This is used to set the 3D logical variable LSTRATAIR_E90,
where .true. is stratospheric air. It uses a specific volume mixing ratio for the E90 tracer, given by E90VMR_TP
(Prather et al., 2011).
You can turn this tracer on in Makefile.
The e90 tracer is so far used for flux calculations (Section 21.1.4), but could in the future also be used for selecting tropospheric or stratospheric chemistry scheme,
either as a 3D field or by selecting the uppermost tropospheric grid box as tropopause, similar to the PVU-based
tropopause. Note that the program code is not set up for
a 3D definition.

21.1.4

Stratosphere-Troposphere-Exchange

In Oslo CTM3 the stratosphere-troposphere-exchange
(STE) calculation follows Hsu et al. (2005), and requires
that the e90 tracer is included (Section 21.1.3). STE is
calculated based on the calculated O3 , with the possibility to also calculate STE for a Linoz O3 tracer.
During a certain time period in Oslo CTM3
(e.g. a month), STE of O3 is calculated as a residual of column mass budgets between the model surface
and a certain O3 isopleth (Hsu et al., 2005). Below the
given isopleth and for the given time period, this can be
written




dM
dM
=
− S + Fs→t − Fh,t→t (144)
dt tot
dt chem





t
t
where dM
is the total change in O3 , dM
is
dt
dt
tot
chem
the corresponding chemical tendency of O3 and S is sink
processes such as dry deposition at the surface and wet
scavenging. Fs→t is the STE to be inferred (both horizontal and vertical), and Fh,t→t is the horizontal flux of
O3 from tropospheric air to tropospheric air (positive out
of the column). The latter is found by comparing the volume mixing ratio of the flux to the isopleth values, and
account for values lower than the isopleth (i.e. the partly
tropospheric air in a gridbox). The calculation of Fh,t→t
is explained at the end of this Section.

For post-processing,
it is also worth noting that Fh,t→t

t
and dM
may
need
to be filtered to reduce noisy plots
dt
tot
– see the end of this Section for more on that.

Back to Eq (144), the left-hand side is thus diagnosed
as the change from the beginning to the end of the time
period, while the right-hand side terms (except Fs→t ) are
summed up for all time steps during the time period.
Note that this is the same treatment as used by Stevenson
et al. (2006); but instead of separating the P and L terms
for tropospheric O3 (which is somewhat arbitrary and
often based on a concept of odd-oxygen) we diagnose the
sum P −L as (dM/dt)chem in Eq (144) and the deposition
D as S. Assuming no tropospheric trend, as in Stevenson
et al. (2006), means that (dM/dt)tot + Ft→t = 0 in our
equation.
The use of the 120 ppb O3 surface for calculating STE
may be problematic in very polluted regions, e.g. in
biomass burning areas. This has been solved by forcing the diagnose to assume all air below 4 km altitude
to be tropospheric, and between 30 S and 30 N air is assumed to be tropospheric all the way to the tropopause.
Similarly, the use of 150 ppb may confuse stratospheric
O3 -hole air with tropospheric air if O3 is below 150 ppb.
A better diagnose is probably to use a surface independent of O3 , such as the e90-stratosphere definition, as
basis for Eq (144). This is included in the CTM3, found
to produce approximately similar STE as the 120 ppb O3
surface (Søvde et al., 2012). Also for this diagnose air
below 4 km is assumed tropospheric.
An additional possibility is to use Linoz O3 tracer for
STE calculations. The Linoz tracer is turned on with
a separate option in Makefile, and this tracer needs to
be called O3LINOZ. It should be noted that CTM3 is not
set up to use Linoz instead of the stratospheric chemistry
module, only as an STE diagnostic. See Section 11.7 for
more.
How often STE is to be diagnosed, is set in the input file,
by the flags in JDO_X calendar. The whole STE budget
is written to file ste_YYYYMMDD_YYYYMMDD.nc,
where the first date is the start time (00UTC) of STE
calculation and the latter date is the end of the calculation (also at 00UTC).
To summarize, STE can be calculated when stratospheric O3 is present, either through CTM3 stratospheric
chemistry or by Linoz. Also, you have to include the
e90 tracer in the Makefile settings.
Calculation of Fh,t→t using e90-tracer
This is also explained in detail in the source code (steflux.f90). This flux is called QFU and QFV in Oslo CTM3,
and in the source code you find them in steflux.f90
and also in p-vect3.f. These variables give the tracer
mass transported from one grid box to the next, and
also the first moments For U these are QFU(:,:,1) and
QFU(:,:,2), respectively. Similarly, QFV(:,:,1) and
QFV(:,:,2), are for V ).
In the STE diagnose, we need to keep track of the flux
from tropospheric to tropospheric grid boxes, i.e. Fh,t→t .
To decide whether the air is tropospheric, stratospheric
or both, we apply the mean flux of the e90 tracer out of
the grid box (Q0F_E90) and the first moment (Q1F_E90).
Figuratively, Q0F_E90 and Q1F_E90 set up a trapezoid,
with left top point at
hL = |Q0F,E90 | + |Q1F,E90 |

67

(145)

Oslo CTM3 user manual

November 6, 2018

and right top point at
hR = |Q0F,E90 | − |Q1F,E90 |

(146)

The signs in front of the moments are opposite of the
original CHEMFLUX routine, where the O3 gradient is
used: e90 and O3 has opposite gradients.
Stratospheric air is found when the mass mixing ratio
of the e90-tracer is smaller than the tropopause value,
called F0 in the routine, and we do this comparison for
the mass mixing ratio in the flux:

Filters
The calculation of STE may result in a noisy figure when
plotted as a map. To reduce the noise, UCI uses a 1–2–1

t
filter (0.25:0.5:0.25 weights) for Fh,t→t and for dM
,
dt
tot
given in Table 27.
I am not totally confident in this method, but in any
case, it should be done in post-processing data, not for
calculating the global STE in Oslo CTM3. Hence, this is
not included in the netCDF output file.

Tropospheric air
Mass in left corner of trapezoid is higher than the stratospheric limit F0 ∗ abs(QU), where QU is air flux:
F0 |QU | < |Q0F,E90 | − |Q1F,E90 |

Why integrate? While Q0F,O3 is the mean flux out of the
box, we use the moments and find the flux (i.e the grid
box mass transported to the neighbor box) at both ends
of the trapezoid. The total mass transported equals the
area of the trapezoid.

(147)

Stratospheric air
Mass in right corner of trapezoid is lower than the stratospheric limit:

Table 27: UCI filter method for Fh,t→t and
when calculating STE.

F0 |QU | ≥ |Q0F,E90 | + |Q1F,E90 |

!// For hflx, do 1-2-1 filtering twice:
do k = 1, 2
do j = 1, jpar
do i = 1, ipar
ib = mod(i, ipar) + 1
ia = mod(i-2+ipar, ipar) + 1
hflx(i,j) = 0.25 * hflx(ib,j)
+ 0.50 * hflx(i,j)
+ 0.25 * hflx(ia,j)
end do
end do
!// Skip polar-most boxes:
do j = 6, jpar - 5
do i = 1, ipar
hflx(i,j) = 0.25 * hflx(i,j-1)
+ 0.50 * hflx(i,j)
+ 0.25 * hflx(i,j+1)
end do
end do
end do

(148)

Partly tropospheric and partly stratospheric air
We need to locate the tropopause first. Having the range
of the trapezoid x-axis [0,1], the tropopause lies within,
at a point X. X is therefore the fraction of tropospheric
air, and lies between hL in Eq. (145) and hR in Eq. (146):
|Q0F,E90 | + |Q1F,E90 | − 2X|Q1F,E90 | = F0 |QU |

(149)

Rearranging:
X=−

F0 |QU | − |Q0F,E90 | − |Q1F,E90 |
2|Q1F,E90 |

(150)

The stratospheric fraction is therefore (perhaps more easily) derived by looking from right to left on the trapezoid:
Xf = (1 − X) =

F0 |QU | − |Q0F,E90 | + |Q1F,E90 |
(151)
2|Q1F,E90 |

To avoid dividing by zero, we limit the divisor (|Q1F,E90 |)
by 10−10 |Q0F,E90 |.
Again: Note that when using |Q0F | and |Q1F | for O3
to calculate the tropospheric fraction, Xf is effectively
the tropospheric fraction because its gradient is opposite
of E90.
Having the stratospheric fraction Xf , and the tropospheric fraction X = (1 − Xf ), we calculate the O3 flux
at X, which we call Y .
Y = |Q0F,O3 | − |Q1F,O3 | + (1 − Xf ) 2 |Q1F,O3 |

(152)

The basis for this equation is that the O3 gradient and
E90 gradient have opposite signs, so we interpolate the
O3 flux linearly from the left corner of the O3 trapezoid
(tropospheric part), to the tropopause value at X.
Having the flux (|Q0F,O3 | − |Q1F,O3 |) at the left corner
of the O3 trapezoid and Y at the point (1 − Xf ), we
integrate over the trapezoid, i.e. finding the area bound
by x = [0, 1 − Xf ] and y = [|Q0F,O3 | − |Q1F,O3 |, Y ] to find
the tropospheric part of the flux:
Fh,t→t = (|Q0F,O3 | − |Q1F,O3 | + Y )(1 − Xf )/2

(153)

68

!// For dm, do 1-2-1 filtering once:
do j = 1, jpar
do i = 1, ipar
ib = mod(i, ipar) + 1
ia = mod(i-2+ipar, ipar) + 1
dm(i,j) = 0.25 * dm(ia,j)
+ 0.50 * dm(i,j)
+ 0.25 * dm(ib,j)
end do
end do
!// Do all but polar boxes first:
do j = 2, jpar-1
do i = 1, ipar
dm(i,j) = 0.25 * dm(i,j-1)
+ 0.50 * dm(i,j)
+ 0.25 * dm(i,j+1)
end do
end do
!// Override polar boxes:
do i = 1, ipar
dm(i,jpar) = dm(i,jpar-1)
dm(i,1) = dm(i,2)
end do

dMt
dt tot



Oslo CTM3 user manual

21.2

November 6, 2018

Oslo CTM3 diagnostics

There are several diagnostics developed for the
Oslo CTM2 that are inherited by the Oslo CTM3.
The diagnoses are generally located in the files diagnostics_general.f90. However, there are also some scavenging diagnostics given in diagnostics_scavenging.f90.

21.2.1

Chemical production and loss

Production and loss terms for selected species are accumulated during chemistry routines. Only some species
are included in this diagnose so far, namely CH4 , N2 O
and a few others. The routine doing the summing is
save_PL.
If you need to include more diagnostics, look for CHEMLOSS
and CHEMPROD in the chemistry routines.
These budget terms, along with the tracer burdens, can
be put out in the routine chembud_output.

• OH-average CH4 -kernel, Eq. (154), from surface to
model top.
• OH-average CH4 -kernel from surface to LMTROP (not
printed by default).
• OH-average CH4 -kernel from surface to 200 hPa (not
printed by default).
• OH-average CO-kernel, Eq. (155), from surface to
model top.
• Spivakovsky et al. (2000)
• Lawrence et al. (2001)
Summing up throughout the domains listed above.
CH4 kernel:

P
ma k
[OH]
P OH+CH4
OHCH4 =
ma k

(154)

OH+CH4

where ma is air mass (kg), and [OH] is concentration
(molecules/cm3 ) and kOH+CH4 is the reaction rate for
OH + CH4 .
CO kernel:

Note that some species are difficult to diagnose, such as
O3 , which is calculated by the use of the Ox family concept.

OHCO =

P
ma k
[OH]
P OH+CO
ma kOH+CO

(155)

The diagnosed losses are used to calculate lifetimes, as
will be described in Section 21.2.2.

Instantaneous and running averages are reported by
report_burden_and_lifetime, which is called from
REPORTS_CHEMISTRY.

21.2.2

Lifetimes using the CH4 kernel and the Lawrence method
are printed to standard out.

CH4 and N2 O burdens and lifetimes

When running the Oslo CTM3 with full chemistry, the
burdens and lifetimes of N2 O and CH4 are calculated out.
The diagnoses can be found in diagnostics_general.f90.

Atmospheric burdens

The routine diag_burden_snapshot, called from
REPORTS_CHEMISTRY, puts out instantaneous tropospheric and stratospheric burdens of selected species.
This is done for each meteorological time step, and
currently only O3 . Other species can be included easily.

Average burden of N2 O and CH4 are diagnosed in
ch4n2o_burden, while chemical loss is summed up in
ch4_loss3 and n2o_loss3.
Calculations are done between the surface and
• the model tropopause level.
• 200 hPa.
• the 150 ppbv O3 surface.
• the model top.

Generally it is not very useful to print instantaneous burden that often, so I have restricted it to O3 so far.

Instant, monthly means and running monthly means are
printed to standard out. This is done in the routine
report_ch4n2o, called from REPORTS_CHEMISTRY.
Note that while CH4 is lost only to OH in the troposphere, it is also lost to O(1 D) and Cl in the stratosphere,
reducing the lifetime compared to a pure OH diagnostic.
See also Section 21.2.3 for atmospheric OH and additional
CH4 lifetime calculations.
Also note that even though all the loss terms may be diagnosed from chemistry, the lifetime concept may not hold
if there are large sources. If you include CH4 emissions,
the method may not give the correct lifetime. However,
we assume minimal impact on the loss and hence report
the calculated lifetime anyway.

21.2.3

21.2.4

OH and CH4 lifetimes

21.2.5

Atmospheric lifetimes

It is possible to add calculation of other chemical lifetimes; if you want to do that, you should follow the
method for CH4 and N2 O.
Note also that aerosol packages generally have their own
calculations of lifetimes.

21.2.6

Time series of vertical profiles

Time series of vertical profiles, for given stations, are included. The code can be found in the file verticalprofiles_stations2.f90 in the OSLO directory. Species are
diagnosed at the beginning of each NOPS (i.e. for every
hour in standard settings), for each station grid box.
Using the station location (latitude and longitude), this
routine linearly interpolates horizontally from the 4 closest grid boxes.

The routine sumup_burden_and_lifetimes calculates atmospheric OH in different ways:

69

Oslo CTM3 user manual

November 6, 2018

21.2.7

An IDL program for reading this output is available in
the SVN repository (see Section B).
You specify species to diagnose in the file verticalprofiles_stations2.f90. Some meteorological components are
also diagnosed, e.g. temperature, pressure, model grid
height, air mass, equivalent latitude, etc.
As input the program reads a file stationlist_verticalprofiles.dat at model start, while output is
done at the beginning of each day (i.e. after start day),
in the file hourly_station_vprof_YYYYMMDD.dta.
The stations used in the standard output are shown in
Figure 2.

List
•
•
•
•
•
•
•
•
•
•
•
•

Figure 2: Map of stations included in the standard
output for vertical profiles.

•
•
•
•
•

A routine for putting out vertical profiles at given locations and times, e.g. satellite positions, are included in the
file satelliteprofiles_mls.f90. In this file you define which
tracers to put out. Some meteorological components are
also diagnosed, e.g. temperature, pressure, model grid
height, air mass, equivalent latitude, etc. Using the satellite profile location (latitude and longitude), this routine
linearly interpolates horizontally from the 4 closest grid
boxes. In the future, it may be better to save data for all
columns and do interpolation in post-processing. Due to
the large amount of data per file, this is not done now.
Since each profile is taken between some start time of
NOPS and start time of NOPS+1, output is given for both
NOPS and NOPS+1, allowing temporal interpolation as well.

Oslo CTM3 standard stations for hourly output

List
•
•
•
•
•
•
•
•

Satellite vertical profiles

of output data for each daily file:
year: Year.
month: Month of year.
date: Date of month.
LPAR: Number of vertical layers.
ntracer: Number of tracers diagnosed.
nrofstations: Number of stations.
NTHE: Number of θ-levels for equivalent latitude.
actual_diag: Number of NOPS steps diagnosed, i.e.
NROPSM * NRMETD.
etaa: Sigma coordinate A (ηa ) for all levels.
etab: Sigma coordinate B (ηb ) for all levels.
stt_components: Tracer ID numbers diagnosed.
mole_mass: Molecular mass of tracers.
pvthe: Theta levels for equivalent latitude.

of output data for each daily file:
year: Year.
month: Month of year.
date: Date of month.
LPAR: Number of vertical layers.
ntracer: Number of tracers diagnosed.
nsatprofs: Number of profiles.
NTHE: Number of θ-levels for equivalent latitude.
etaa: Sigma coordinate A (ηa ).
etab: Sigma coordinate B (ηb ).
stt_components: Tracer ID numbers diagnosed.
mole_mass: Molecular mass of tracers.
pvthe: Theta levels for equivalent latitude.

List
•
•
•
•
•
•
•
•
•
•

of output data for each profile:
time: Time of observation.
time_sec: CTM NOPS times before and after.
lat: Latitude.
lon: Longitude.
ii: CTM zonal grid box index.
jj: CTM meridional grid box index.
nb_ii: Zonal neighbor grid box index.
nb_jj: Meridional neighbor grid box index.
nb_xfrac: Fractional distance to zonal neighbor.
nb_yfrac: Fractional distance to meridional neighbor.
• areaxy: Grid box area [m2 ] (interpolated).

List
•
•
•
•
•
•
•
•
•
•
•

of output data for each station:
locname: Station name.
loccode: Station 3-char code.
lat: Latitude.
lon: Longitude.
alt: Altitude.
ii: CTM zonal grid box index.
jj: CTM meridional grid box index.
nb_ii: Zonal neighbor grid box index.
nb_jj: Meridional neighbor grid box index.
nb_xfrac: Fractional distance to zonal neighbor.
nb_yfrac: Fractional distance to meridional neighbor.
• areaxy: Grid box area [m2 ] (interpolated).

For the two closest NOPS steps, the following data are
stored:
• psfc: Surface pressure [hPa].
• BLH: Boundary layer height [m].
• mass: Tracer masses [kg/grid box].
• H2O: H2 O mass [kg/grid box].
• temperature: Temperature [K].
• airmass: Air mass [kg/grid box].
• zoflev: Height of grid box bottoms [m].
• eqlat: Equivalent latitude on theta levels.
• PVU: Potential vorticity units.
• tph_pres: Tropopause pressure.

21.2.8

For all diagnostic steps, the following data are stored:
• psfc: Surface pressure [hPa].
• BLH: Boundary layer height [m].
• mass: Tracer masses [kg/grid box].
• h2o: H2 O mass [kg/grid box].
• temperature: Temperature [K].
• airmass: Air mass [kg/grid box].
• zoflev: Height of grid box bottoms [m].
• eqlat: Equivalent latitude on theta levels.
• PVU: Potential vorticity units.
• tph_pres: Tropopause pressure [hPa].

O3 column

Tropospheric and total columns of O3 are diagnosed
in the subroutine du_columns in the file diagnostics_general.f90. It is called from mp_diag, which does
diagnoses in each IJ-block.
The columns are diagnosed every meteorological time
step (NMET) and are stored once every day. This is carried
out in the routine write_ducolumns.

70

Oslo CTM3 user manual

21.2.9

November 6, 2018

3-hourly output

codes, you should contact UCI.
First the global variable files (common files) are listed,
then the core files are listed alphabetically.

Oslo CTM3 has the possibility of putting out 3-hourly
instantaneous fields, mostly O3 and aerosols. These are
e.g. used for RF calculations.
You turn this diagnose on by setting LDUMP3HRS=.true.
at the top of the file gmdump3hrs.f90, and the main routine is dump3hrs.
If you want to add other components than O3 , this is
of course possible. When you understand the code, it
should be easy to implement.

A.1.1

cmn_precision.f90

This file defines the precision of the Oslo CTM3 floating
point variables. Several are used:

r8 Double precision. Most variables use this.
r4 Single precision.
rMom Precision of the second order moments. By default
this is single precision.
21.2.10 Snapshots on θ-levels
rAvg Precision of the global average arrays. By default
this is single precision.
In the routine write_snapshot_the, located in diagnos- rTnd Precision of the global tendency arrays. By default
tics_general.f90, you can put out instantaneous mixing
this is single precision.
ratios of selected species, interpolated to the potential
temperature (θ) levels defined in the physics routine, see
Section 20.3. The number of θ-levels (pvthe) are given A.1.2 cmn_size.F90
by NTHE.
Routine puts out data every hour, and the default species
put out are O3 and N2 O, along with PVU and equivalent
latitude.

Contains the array size parameters and flags. Examples are IPAR, IPARW, JPAR, JPARW, LPAR, LPARW, MPIPAR,
MPJPAR, NRMETD, NPAR, etc.

Routine can put out data for only one hemisphere or
both. See the source code for how to change it.

A.1.3

The routine is called from nops_diag, but is commented
out by default. A second routine, write_snapshot, is also
available, putting out gridbox mass of selected species on
model levels.

21.2.11

Contains chemical and physical parameters, such as the
Earth radius (A0), Avogadro’s number (AVOGNR), Apparent molecular weight of dry air (M_AIR), gas constants
(R_AIR, R_UNIV, R_ATM), and many more. These are all
listed in Table 28.

Emission tendencies

When emissions are treated as production terms in chemistry, i.e. in standard Oslo chemistry, the total emitted
per day is calculated for all species, in tnd_emis_daily.
This is explained in Section 8.10.

A

Description of model files

Here the source files are described. Generally, files inherited from UCI are placed in the main directory, while the
OSLO chemistry and physics are placed in the directory
OSLO. The files in the main directory is often referred to
as the core files, and will be described next.

A.1

cmn_parameters.f90

A.1.4

cmn_ctm.f90

Defines the main arrays for the transport model, such as
STT and the moments (SUT, SVT, SWT, SUU, SVV, SWW, SUV,
SUW, SVW).
Also grid info such as longitude (XGRD, XDGRD, XEDG,
XDEDG), latitude (YGRD, YDGRD, YEDG, YDEDG), and sigma
hybrid coordinates (ETAA, ETAAW ETAB, ETABW) are defined
here.

A.1.5

cmn_chem.f90

Defines the main arrays for emissions and chemistry, such
as E3DSNEW(LPAR,IPAR,JPAR,E3PAR) and the tables mapping species to emission datasets:

UCI core source files

The Oslo CTM3 started out based on the UCI CTM version 5.6d, but was later updated to 6.1b, before most of
the UCI code was restructured into Fortran90 free format, and all common blocks were abandoned. In this
process I renamed most of the files. Future core update
should be fairly straight-forward for a somewhat experienced user.
This Section describes the core files necessary to run the
Oslo CTM3. If you want to go back and see the UCI

•
•
•
•
•

NE2TBL: Total number of 2D emission datasets.
NM2TBL: Table of months the emissions apply for.
NY2TBL: Table of months the emissions apply for.
E2DS: All 2D emission datasets.
E2LTBL: Table mapping species to 2D emission
datasets.
• E2STBL: Table of scaling factors for the mapping of
each species and 2D emission datasets.
Similar arrays exist for 3D emissions.

71

Oslo CTM3 user manual

November 6, 2018

Table 28: Parameters defined in cmn_parameters.f90.
Name
A0
G0
CPI
C2PI
CPI180
ZPI180
atm2Pa
Pa2atm
J2kcal
M_AIR
R_UNIV
R_ATM
R_AIR
R_H2O
AVOGNR
BOLTZMANN
KBOLTZ
cp_air
Lv_0C
dLv_dT

Value
6371000
9.80665
3.141592653589793
2*CPI
CPI/180
1/CPI180
101325
1/atm2Pa
4186.8
28.97
8.31446
R_UNIV * Pa2atm
R_UNIV / M_AIR * 1000
R_UNIV / 18.01528 * 1000
6.022149e23
1.38063e-23
1.e4 * BOLTZMANN
1004
2.501e6
-0.00237e6

TK_0C
es_0C
secDay
secYear
MINTEMP
MAXTEMP
TEMPRANGE
LDEBUG

273.15
611.2
86400
31536000
150
350
MAXTEMP - MINTEMP
.true.

Description
Earth radius [m]
Gravitational constant [m/s2 ]
π
2π
Conversions to radians
Conversions from radians
Conversion from atmospheres to Pa
Conversion from Pa to atm
Numbers of kcal in a J
Molecular mass for air [g/mol]
Universal gas constant [J/(K mol)] = [m3 *Pa/(K mol)]
Gas constant in [m3 *atm/(K mol)] (∼8.205e-5)
Specific gas constant for air [J/(K kg)] (∼287)
Specific gas constant for water vapor [J/(K kg)] (∼461)
Avogadro’s number [molecules/mol]
Boltzmann’s const [J/(K molecules)]
Boltzmann’s const [mb cm3/(K molecules)]
Specific heat of dry air at constant pressure [J/(K kg)
Latent heat of vaporization at 0◦ C [J/kg]
Gradient of Lv between 0C and 100C [(J/kg)/K]
(Table C-5 in Stull, 1988)
Temperature [K] at 0◦ C
Saturation vapor pressure of H2 O at 0◦ C [Pa]
Seconds in a day
Seconds in a year
Minimum temperature allowed in chemistry
Maximum temperature allowed in chemistry
Temperature range.
Global flag for including more extensive debugging.

Here you also find the tracer name TNAME, tracer molecular weight TMASS, and other variables such as conversion
factors TMASSMIX2MOLMIX and TMOLMIX2MASSMIX.

A.1.10

averages.f90

Contains routines for summing up 3D averages.

The variables are generally well described in the source
code.

• AVG_WRT_NC4: Write core 3D averages (the avgsavfiles), including XSTT averages, surface pressure averages (which is 2D), and some meteorological averages.

A.1.6

• AVG_ADD2: Add to 3D averages.

cmn_diag.f90

• AVG_CLR2: Clear 3D averages.
Defines arrays for diagnostics, such as STTAVG, AIRAVG,
JDO_A.

A.1.7

• AVG_P1: Write 1D averages to screen.
• AVG_WRT2:
Only included for history.
See
AVG_WRT_NC4. Write core 3D averages (the avgsavfiles), including XSTT averages, surface pressure averages (which is 2D), and several meteorological averages.

cmn_fjx.f90

Defines fast-JX parameters and arrays.

A.1.8

A.1.11

cmn_met.f90

budgets.f90

Contains routines for summing up tendency budgets.

Defines meteorological arrays.

• TBGT_G: Clear budget arrays.
• TBGT_L: Accumulate budgets layerwise.

A.1.9

cmn_sfc.f90

• TBGT_IJ: Accumulate budgets in IJ-block.

Defines surface variables such as land surface type
(landSurfTypeFrac), land-sea mask (LSMASK), and dry
deposition velocity (VDEP).

72

• TBGT_P0: 0D print to screen.
• TBGT_P1: 1D print to screen.
• TBGT_P2: 2D print to screen.

Oslo CTM3 user manual

A.1.12

November 6, 2018

A.1.15

cloudjx.f90

Routines for setting up model grid.
• SET_GRID: Sets up global grid, such as latitude, longitude, area of grid boxes, etc.
• LABELG: For printing grid info to screen.
• DIAGBLK: Finds grid box start/end indices for box
diagnose.
• DIAG_LTSTN: Finds grid box indices for station diagnose.
• DIAG_LTGL: Finds grid box indices for local time station diagnose.
• GAUSST2: Calculate Gaussian quadrature points and
weights.
• DBLDBL: Define longitude and latitude of horizontally
degraded grid.
• AIRSET: Sets up 3D air mass.
• SURF_IN: Reads land fraction datasets.
• gridICAO: Not used. I think this finds grid for some
ICAO emission data.

Routines for treating cloud-J. Currently set up for cloud2
as used by fast-JX 6.7c, but will be updated when fast-JX
7.3c is included.
• cloud_init: Initialise cloud-J.
• RANSET: Set random number. Random seed is
RANSEED, which is set in LxxCTM.inp.
Some important variables for cloud2:
• LCLDAVG:
• LCLDQMD:
• LCLDQMN:
• LCLDRANA:
• LCLDRANA:

A.1.13

convection.f90
A.1.16

This is the f90 version of the UCI p-cnvw.f. It has
been modified to Oslo CTM3, calculating elevator fractions, and also the Henry coefficients used in convective
washout. A new convective wet loss variable is included;
CNV_WETL(LPAR,NPAR).
• CONVW_OSLO: The main routine.
• ADJFLX2: Adjust convective fluxes so that no more
than a fraction of the grid box mass is moved each
time step.
• ADJFLX Old version of ADJFLX2.

• QCNVW2: UCI routine kept for history.
• SCAV_UPD: UCI routine kept for history.

fastjx.f90

Contains routines for fastJX, except the main driver
which is so far located in p-phot_oc.f. That will change
when fast-JX is updated to 7.3.
• RD_XXX: Reads FJX_spec.dat.
• RD_MIE: Reads FJX_scat.dat.
• RD_JS: Reads ratj_oc.d file.
• RD_O1D: Reads O1D entry of ratj_oc.d file.
• SET_ATM: Reads O3 and temperature climatologies
to use above the model domain. It can possibly be
used in the stratosphere when stratospheric chemistry in not included, but Oslo CTM3 uses its own
climatology for that. Sets e.g. TOPT, TOPM, TOP3.
Changes compared to UCI p-phot.f file
In the subroutine PHOT_IN a small piece of ASAD code
was removed. Some other ASAD variables has been removed.
Also, the subroutine SET_ATM had to be modified to include climatology data for the uppermost layer (LPAR3,
LPART and LPARM).

73

initialize.f90

Routines for initializing the Oslo CTM3.
• INPUT: Reads LxxCTM.inp.
• SETUP_SPECIES: Reads restart file.
• SETUP_UNF_OUTPUT: Opens unformatted output files
(UCI heritage).
• report_zeroinit: Reports which tracers are initialized to zero (i.e. not read from file).

A.1.17

• QCNVW2_OSLO: Column model calculating convective
transport, and also convective scavenging by updrafts.

A.1.14

grid.f90

lightning.f90

Contains routines for calculating lightning NOx (L-NOx)
emissions. There are several methods for doing this, as
described in Section 8.8.
• getScaleFactors: Sets scaling factors based on
which meteorological dataset is used.
• LIGHTNING_OAS2015: Default method for calculating
L-NOx.
• LIGHTNING_GMD2012: L-NOx as described by Søvde
et al. (2012).
• LIGHTNING_UCI2015: L-NOx as used by UCI-CTM
in 2015. I do not recommend using this.
• LIGHTDIST: Sets up vertical distribution of L-NOx.
• filterLNC: Filter convective mass fluxes to reduce
noise in L-NOx horizontal distribution.
• distland: Finds grid boxes that are land or have
land in 300 km proximity. Test routine to make land
near-land lightning behaving like land. Not used.
• LIGHTNING_ALLEN2002: L-NOx as described by
Allen and Pickering (2002). Not evaluated.

A.1.18

metdata_ecmwf.f90

Read-in for ECMWF IFS meteorological data on
netCDF4 format.
• update_metdata: Updates meteorological data.
• fluxfilter2: Filter convective mass fluxes; removes
noise.
• data2mpblocks: Puts globally gridded (IPAR,JPAR)
data into IJ-block (IDBLK,JDBLK,MPBLK).
• gotData: Prints info to standard out.
• skipData: Prints info to standard out.

Oslo CTM3 user manual

A.1.19

November 6, 2018

A.1.23

metdata_ecmwf_uioformat.f90

Traditional read-in for ECMWF IFS meteorological data
on UIO binary format.

A.1.20

omp.f90

Routines for switching between global and IJ-block structures. Slightly modified compared to UCI routines,
e.g. looping is changed to reduce striding.
• MPSPLIT: Split global arrays into IJ-block arrays.
• MPBIND: Convert back to global arrays.
• get_iijjmp: From global indices I,J, find IJ-block
indices II,JJ,MP. Not really necessary because of
the array all_mp_indices and the next routine:
• get_all_mpind: Sets up array all_mp_indices to
map global indices to IJ-block indices.
all_mp_indices(1,I,J)=II
all_mp_indices(2,I,J)=JJ
all_mp_indices(3,I,J)=MP

A.1.21

pbl_mixing.f90

Routines for calculating planetary boundary layer (PBL)
mixing. This is the f90 version of the UCI file p-pbl.f, but
modified to use the scheme by Holtslag et al. (1990).
• CNVBDL: Main routine for calculating PBL mixing.
• BULK: Prather bulk scheme.
• get_keddy_L1: Calculates diffusivity in the lowermost model layer, as done in the routine KPROF.
• KPROF2: Calculates diffusivity of heat used in PBL
closure, as used by the Holtslag et al. (1990) scheme.
Should be used instead of KPROF, since unnecessary
calculations have been removed.
• KPROF: Calculates diffusitivities used in PBL closure,
as used by the Holtslag et al. (1990) scheme.
• PHIM: Calculates similarity theory stability correction for momentum.
• PHIH: Calculates similarity theory stability correction for heat.
• TRIDIAG: Solves tri-diagonal system.
• INTERP: Mass weighted interpolation routine to determine PBL profiles from similarity. Ekman solution.
• QXZON: Combines mass boxes into extended zones.
• QZONX: Divides one extended zone into equal-mass
boxes.

A.1.22

pmain.f90

The main program pmain.f90 has been modified for
the Oslo CTM3. Input routines are changed and also
some calls to master routines. There is also an internal
chemistry loop of max 15 minutes for the processes mixing/emissions/chemistry/deposition. This is to reduce
the large changes imposed by emissions and deposition.
For large deposition values, all of a tracer can be removed
at the surface if the time step is too long. For a 16 m layer,
a deposition velocity of 1.77 cm/s will remove everything
in 15 minutes. Linoz calls has been removed.

regridding.f90

Routines for regridding data.
• E_GRID: Regridding of 2D horizontal field. Field
must not be per area, i.e. concentrations and mixing ratios must be multiplied by area before interpolation, and divided by new area afterwards. Handles emission dataset which include moments (usually not used in Oslo CTM3). XBEDG and XDEDG may
have shift at dateline. YBEDG and YDEDG must start
at 90S.
• E_GRID_Y: Regridding of array in meridional direction.
• TRUNG8: Convert double precision (r8) field from native resolution to degraded horizontal resolution.
• TRUNG4: Convert single precision (r4) field from native resolution to degraded horizontal resolution.

A.1.24

source_uci.f90

• SOURCE: Routine for adding emissions to emission
array each time step, when treated as a separate
process (i.e. not as production term in chemistry).
Not tested with Oslo chemistry.
When treated as chemistry production term, the
routine emis4chem in emisdep4chem_oslo.f90 is
used (see Appendix A.2.14).

A.1.25

scavenging_largescale_uci.f90

Large scale scavenging as described in Section 7.1.1.
Some modifications from Oslo CTM3 are implemented.
• WASHO: Master routine calling WASH1 or WASH2.
• WASH1: Simple UCI wet scavenging routine. Kept
for history; should not be used.
• WASH2: Routine by Neu and Prather (2012), partly
modified for Oslo CTM3.
• DISGAS: Calculates the mass of tracer dissolved in
aqueous phase. Uses the flag IT258K to define how
to use Henry’s law.
• HENRYS: Use Henry’s law to calculate mass dissolved
in aqueous phase. No dissolved tracer below 258 K,
and uses retention coefficient between 258 K and
273 K.
• HENRYSallT: Same as HENRYS, but uses retention coefficient also below 258 K.
• RAINGAS: Calculates tracer (kg) picked up by new
rain.
• WASHGAS: Calculates tracer picked up by falling precipitation (kg) and also evaporated from precipitation (kg).
• DIAMEMP: Empirical fit of precipitation diameter to
cloud water density and rain rate, following Field
and Heymsfield (2003).
• GAMMAX: Calculates gamma using ln gamma algorithm.
• WETSET_CTM3: Initialises and sets wet scavenging parameters for Oslo CTM3.

A.1.26

spectral_routines.f

Spectral routines, not collected as module. These are
purely inherited from UCI/Oslo CTM2.

See Section 4.1.3 for more.

74

Oslo CTM3 user manual

November 6, 2018

• SPE2GP: Converts spectral field to gridded field.
• ZD2UV: Converts spectral fields of vorticity and divergence to gridded field of zonal wind (U) and meridional wind (V).
• UVCOEF: Used by ZD2UV to calculate spectral coefficients.
• FFT_99: Multiple fast real periodic transform of
length N performed by removing redundant operations from complex transform length N.
• FFT_RPASS: Performs one pass-thru data as part of
multiple FFT (FFT_99).
• FFT_DDSS: Calculate constant arrays needed for evaluating spectral coefficients for U and V from vorticity
and divergence.
• FFT_SET: Computes factors of N and trigonometric
functions needed by FFT_99
• LEGGEN: Calculate Legendre functions.
• GAUSST: Old routine for calculating Gaussian
quadrature points and weights.
Use GAUSST2
(grid.f90) instead.

A.1.27

steflux.f90

Routines for calculating stratosphere-troposphere exchange (STE) as explained in Section 21.1.4. This is the
f90 version of UCI code p-chemflux.f.
• CHEMFLUX: Saves the horizontal flux of specified
tracer (usually O3 ) in the troposphere, but only for
tropospheric to tropospheric boxes.
• CHEMFLUX_E90: Finds horizontal fluxes within the
troposphere based on e90-tracer.
• dumpuvflux: Accumulates horizontal fluxes into 3D
arrays. Accumulates over time period defined by
flux calendar (JDO_X).
• DUMPTRMASS: Accumulates tropospheric mass of
tracer (O3 ).
• DUMPTRMASS_E90: Accumulates tropospheric mass of
tracer (O3 ) based on e90 tracer.
• SAVETRMASS: Saves daily average mass of tracer (O3 ).
• STEBGT_CLR: Clears STE diagnostics.
• STEBGT_WRITE: Writes STE budget to netCDF4 file.
• ctm3_pml: Calculates tendency (production minus
loss; PML) below predefined O3 surfaces.
• ctm3_o3scav: Calculates net scavenged O3 below
predefined O3 surfaces.
• chemflux_setup: Set up STE diagnostics.

A.1.28

stt_save_load.f90

Contains routines to save and load STT from restart files.
• load_restart_file: Restart from netCDF4 files
saved by save_restart_file. Setting argument
MODE to zero will read the main restart file (also setting AIR), while non-zero will read additional fields
from specified files. This has to be hard-coded in the
subroutine SETUP_SPECIES in the file initialize.f90.
• getField_and_interpolate: This routine is bound
to load_restart_file, and reads a 3D field from
a netCDF4 file, with ncid as file id and var_id as
variable id. If resolution on file differs from model
resolution, the field is interpolated to model resolution. Vertical interpolation is not possible yet.

75

• save_restart_file: Saves netCDF4 restart file.
Contains variables necessary for restarting a run, as
well as useful variables for other purposes. Transported species have prefix STT_, and for these species
there are also moments available, having prefixes
SUT_, SVT_, SWT_, SUU_, SVV_, SWW_, SUV_, SUW_,
SVW_. Non-transported species have prefix XSTT_.
• OSLO_CON_RUN: Restart from files saved by
OC_CON_SAV. Setting argument MODE to zero will
read the main restart file, while non-zero will read
additional fields from any specified file. Must match
model resolution.
• OSLO_CON_SAV: Old routine for saving restart file; instant fields, component by component. Called based
on input file flag JDO_C. The restart file also contains
grid info to use when e.g. interpolating to other resolutions. Should not be used.
• restart_from_CTM3avg: Starts from Oslo CTM3
avgsavDDDDD.dta files, version 7. Reads the file
avgsav_input (no extension), so you must rename
the input file accordingly. Must match model resolution.
• restart_from_CTM3avg_T42:
Same
as
restart_from_CTM3avg, but reads T42 resolution avgsavDDDDD files and interpolates to current
resolution.
It reads the file avgsav_input (no
extension).
• OSLO_CON_RUN42: Reads Oslo CTM3 T42 resolution
restart file, and interpolates to current resolution.
Works on sav-files version 1 and 2.
• OSLO_CON_RUNxx: Reads any Oslo CTM3 resolution
restart file, and interpolates to current resolution.
Requires that the sav-file is version 2 or higher. Will
stop if model resolution is the same as on file, because not all moments are used.
• OSLO_RESTARTFILE_INFO: Retrieves resolution info
from the old binary restart files.

A.1.29

utilities.f90

Various utilities for Oslo CTM3. More utilities are given
in utilities_oslo.f90.
• write_log: Writes start and end of model to screen.
• model_info: Prints info about run to screen.
• calendar: Calculates day counters, but also some
info about next time step, such as JYEAR_NEXT,
JMON_NEXT, JDAY_NEXT, JDATE_NEXT.
• is_leap: Calculates whether a year is leap year or
not.
• get_soldecdis: Calculates solar declination and
distance to Sun. Same as originally found in
CALENDR.
• CALENDR_OLD: Old routine to calculate day counters
and also solar declination and distance to Sun. Not
used.
• CALENDL: Looks up calendar and checks for flags.
• LOCSZA: Calculates cosine of local solar zenith angle,
and the solar flux factor.
• LCM: Calculates the least common multiple of two
numbers.
• ctmExitC: Exit routine printing message.
• ctmExitL: Exit routine printing message and label.
• ctmExitIJL: Exit routine printing message and
I,J,L.
• get_free_fileid: Finds a free file id number.

Oslo CTM3 user manual

November 6, 2018

A.1.34

• get_dinm: Returns the number of days in months,
depending on whether year is leap year or not.
• CFRMIN: Set minimum limit on cloud fraction.
• CIWMIN: Set minimum limit on in-cloud water and
ice ratios (kg/kg).
• check_btt: Checks BTT array for negatives and
NaNs. Allows tracer id 110 (sum of oxygen, SO)
to be negative.
• adjust_moments: Scales down moments if BTT has
been reduced during a process (if it is smaller than
BTTBCK).

A.1.30

Same as p-dyn2.f, but for more accurate polar cap treatment. Does not use POLES1 and POLES2. Calls from
pmain.f90 needs to be modified (described in pmain.f90).

A.1.35

p-cloud2.f

Routines for calculating cloud2. Will be updated when
cloud-J is included.
• CLOUD: Calculates cloud properties.
• QUADCA: Generates 4 quadrature independent column atmospheres (ICAs).
• OD_LIQ: Sets effective radius and extinction for liquid clouds.
• CLDQUAD: Generates independent ICAs from maxrandom overlap criteria.
• QUADMD: Sort ICAs in order of increasing optical
depth. Calculates weights.
• ICANR: Evaluate number of ICAs.
• HEAPSRT: Heap sort.

A.1.31

p-dyn0.f

Sets up atmospheric variables after they have been read
from file.
• DYN0: Sets up advective fields.
• EPZ_UV: Redistributes U and V fluxes to smooth over
extended polar zones.
• EPZ_TQ: Average temperature (T) and specific humidity (Q) over extended polar zones.
• EPZ_P: Average surface pressure (P) over extended
polar zones.
• PFILTER: Global filter to smooth pressure errors.
Also adjusts the horizontal fluxes accordingly.
• CFLADV: Calculates global Lifshitz (not CFL) time
step limiter for advection step. NADV is the number
of global advection steps.

A.1.32

p-dyn0-v2.f

Same as p-dyn0.f, but for more accurate polar cap treatment.

A.1.33

p-dyn2-v2.f

p-dyn2.f

Contains advection subroutines.
• DYN2UL: Zonal advection.
• DYN2VL: Meridional advection.
• DYN2W_OC: Vertical advection.
• QLIMIT2: Quick SOM limiter only for LIM=2
(pos+mono) in the X direction.
• POLES1: Combine polar-pie box with next lower latitude (J=1,2 and J=JM-1,JM) using SOM.
• POLES2: Split extended polar-pie box back into two
(J=1,2 and J=JM-1,JM). Use SOM to split, need to
know final air mass in J=1 and J=JM.

76

p-linoz.f

Linoz is available in Oslo CTM3, but only for STE calculation (Section 21.1.4). Here are the available routines,
but note that some are not used because Linoz is only
used for STE.
• LNZ_INIT: Read/init Linoz data and other strat
chem tables from pratmo box model.
• LNZ_SET: Set up Linoz (and other stratosphere) table
data for each day/month/year.
• LNZ_SETO3: Initialize Linoz O3 (N=N_LZ) based on
supplied climatology.
• LNZ_PML: Linoz = linearize P-L for stratospheric
ozone based on tables from the PRATMO model
using climatological T, O3 , Month.
• INT_LAT: Interpolate from pratmo standard tables
(85S to 85N) to CTM J-grid.
• INT_MID: Interpolation routine, using grid box midpoint.
• INT_SOM: Interpolation routine using moments.
• DECAY: Simple e-fold decay of species throughout the
model domain. Not used; Oslo CTM3 uses its
own routine.
• TPAUSEB: Defines the tropopause level based on
Linoz O3 . Not used; rather use TPAUSEB_E90.
• TPAUSEG: Not used; rather use TPAUSE_E90.

A.1.36

p-vect3.f

The second order moment 1D transport routine QVECT3.

A.1.37

p-phot_oc.f

Contains the column model for fast-JX, used by the main
driver jv_column in main_oslo.f90.
• PHOTOJ: Column model for J-values. T, O3 and mass
is also set from climatology in the uppermost layer
(TTJ, DDJ and ZZJ for L1_-1).
• OPTICL: Sets cloud fast-JX properties at the std 5
wavelengths (200, 300, 400, 600, 999nm).
• OPTICA: Sets aerosol fast-JX properties at the std 5
wavelengths (200, 300, 400, 600, 999nm).
• OPTICM: Sets fast-JX properties for Mie scattering.
• SOLARZ: Solar zenith angle.
• SPHERE2: Calculation of spherical geometry.
• EXTRAL: Adds sub-layers (JXTRA) to thick
cloud/aerosol layers.
• FLINT: Three point linear interpolation function.
• JRATET: Interpolates J-values.
• JP_ATM: Print out atmosphere used in J-value calc
• OPMIE: Mie scattering code.
• MIESCT: Mie scattering, used by OPMIE.
• LEGND0: Calculates ordinary Legendre functions.
• BLKSLV: Sets up and solves the block tri-diagonal
system.
• GEN_ID: Generates coefficient matrices for the block
tri-diagonal system.
• :

Oslo CTM3 user manual

A.2

November 6, 2018

Oslo source files

The Oslo source files are located in the directory OSLO.

A.2.1

cmn_oslo.f90

Defines variables needed for Oslo chemistry, which are
not part of the transport code. It may be that some of
these variables should have been in the other cmn-files.
Physical variables:
• LMTROP(IPAR,JPAR): The uppermost level of troposphere. Stratosphere starts at LMTROP+1.
• NEW_TP: Switch used to diagnose the calculated
tropopause.
• PARTAREA(LPAR,IPAR,JPAR): Background aerosol
surface area density. Be aware that the indexing
has changed since Oslo CTM2.
Convective washout variables:
• TCCNVHENRY(NPAR): Flag to decide which Henry constant to use for convective wash out.
• LELEVTEMP(2,IDBLK,JDBLK,MPBLK): Flag for convective plume/elevator temperatures. If minimum
plume temperature is below 258 K the first entry
is 1, and if maximum temperature is below 273.15 K
the second entry is 1. Otherwise these flags are 0.
• QFRAC Fraction of elevator convective precipitation
/ elevator liquid water volume.
• LW_VOLCONC Convective elevator liquid water volume
concentration.
Air values:
• AIRMOLEC_IJ(LPAR,IDBLK,JDBLK,MPBLK): Air density.
• DV_IJ(LPAR,IDBLK,JDBLK,MPBLK): Gridbox volume.
Tracer related variables:
• trsp_idx(TRACER_ID_MAX): Mapping from chemical
ID to transport number.
• chem_idx(NPAR) Inverse mapping for trsp_idx
(from transport number to chemical ID).
• Xtrsp_idx(TRACER_ID_MAX) Mapping from chemical ID to non-transported number (place in XSST).
• Xchem_idx(NOTRPAR)
Reverse
mapping
for
Xtrsp_idx.
• XTNAME(NOTRPAR) Name array for non-transported
tracers.
• XTMASS(NOTRPAR) Tracer mass for non-transported
tracers.
• XTMASSMIX2MOLMIX(NOTRPAR) Conversion from
kg/kg to mole/mole (i.e. M_AIR/XTMASS).
• XTMOLMIX2MASSMIX(NOTRPAR) Conversion from
mole/mole to kg/kg (i.e. XTMASS/M_AIR).
• XSTT(LPAR,NOTRPAR,IPAR,JPAR):
The
nontransported tracer distribution.
• XSTTAVG(LPAR,NOTRPAR,IPAR,JPAR): The diagnostic (avgsav) array of the non-transported tracers.
Chemical variables:
• JVAL_IJ(JPPJ,LPAR,IDBLK,JDBLK,MPBLK):
Jvalues.
• STT_2D_LB: Lower boundary conditions for tracers.

• STT_2D_LT: Upper boundary conditions for tracers.
• TROPCHEMnegO3(LPAR,MPBLK): Counting number of
negative O3 occurring in the troposphere (I have
only found this in the surface layer).
• PR42HET(IPAR,JPAR): Aerosol surface conversion of
N2 O5 to HNO3 .
• CH4FIELD(IPAR,JPAR): Surface field for CH4 set
each month. Not used when CH4 emissions are
turned on.
Emission variables:
• EMIS_IJ(LPAR,NPAR,IDBLK,JDBLK,MPBLK): Emissions for Oslo chemistry treatment as production in
chemistry, i.e. units [molec/(cm3 s)].
• DIAGEMIS_IJ: Diagnose emissions accumulated (kg)
over time span defined by budget calendar (JDO_T).
• emisTotalsDaily(NPAR,366): Diagnose daily accumulated emissions (kg).
• emisTotalsOld(NPAR): Used for the daily accumulated emissions diagnose.
• METHANEMIS: Logical specifying whether CH4 emissions are to be used or not.
• NECAT: Number of emission categories to diagnose
(only used for diagnostics).
• ECATNAMES(NECAT): 3-character names for each
emission category. So far the RETRO categories
are used.
• E2CTBL(ETPAR): Mapping category number to emission table.
• E2LocHourTBL(ETPAR): Table mapping 2D emission
table to diurnal variation index. See Section 8.4.2.
• NE2LocHourVARS: Number of local hour scalings.
• E2LocHourSCALE(24,NECAT,NE2LocHourVARS): Local hour scalings.
• E22dTBL(ETPAR): Table mapping 2D emission table
to horizontal 2D variation index. See Section 8.4.2.
• NE22dVARS: Number of horizontal 2D types.
• E22dSCALE(IDBLK,JDBLK,MPBLK,NE22dVARS):
2D
scalings.
• E2L2dTBL(NE22dVARS): Keep track of 2D scalings
used.
• E2vertTBL(ETPAR): Table mapping 2D emissions to
vertical distributions.
• NE2vertVARS: Number of vertical distributions.
• NE2vertLVS: Number of vertical levels for the distributions.
• E2vertSCALE(NE2vertLVS,NE2vertVARS): The vertical scalings.
Forest fires variables:
• FF_TYPE: Type of forest fires emissions.
• FF_YEAR: Year of forest fires dataset.
• FF_PATH:
Path
of
forest
fires,
set
in
Ltracer_emis_xxxx.inp.
• NEFIR: Number of components with forest fires emissions. Must not be larger than EPAR_FIR.
• EPAR_FIR: Max number of components with forest
fires emissions.
• EPAR_FIR_LM: Vertical CTM layers covered.
• ECOMP_FIR(EPAR_FIR): Components emitted.
• EMIS_FIR: The forest fires emission array of size
(EPAR_FIR_LM,EPAR_FIR,IDBLK,JDBLK,MPBLK).
Global diagnose variables:
• DIAGEMIS_IJ: Diagnose emissions accumulated (kg)
over time span defined by budget calendar (JDO_T).

77

Oslo CTM3 user manual

November 6, 2018

• emisTotalsDaily(NPAR,366): Diagnose daily accumulated emissions (kg).
• emisTotalsOld(NPAR): Used for the daily accumulated emissions diagnose.
• CONVWASHOUT(LPAR,NPAR,IDBLK,JDBLK,MPBLK): Diagnose tracer removed by convective scavenging
(kg), accumulated over time span defined by budget calendar (JDO_T).
• dobson_snapshot(IPAR,JPAR,24): Snapshots of total O3 column each hour (DU).
• dobson_snapshot_ts(IPAR,JPAR,24): Snapshots of
tropospheric O3 column each hour (DU).
• TEMPAVG: Temperature average, accumulated over
time span defined by budget calendar (JDO_T).
• H2OAVG: H2 O average, accumulated over time span
defined by budget calendar (JDO_T).
• QAVG: Specific humidity average, accumulated over
time span defined by budget calendar (JDO_T).
• AMAVG: Air density average, accumulated over time
span defined by budget calendar (JDO_T).
• LMTROPAVG: Average level of tropopause height
(LMTROP), accumulated over time span defined by
budget calendar (JDO_T).
• SCAV_LS: Accumulated amount (kg) removed by
large scale scavenging.
• SCAV_CN: Accumulated amount (kg) removed by
convective scavenging.
• SCAV_DD: Accumulated amount (kg) removed by dry
deposition.
• SCAV_BRD: Accumulated burden to be used for calculating average burden.
• SCAV_DIAG(NPAR,4,366): Daily accumulated values. Last entry is average burden.
• SCAV_MAP_WLS: Total (kg) scavenged by large scale
scavenging at the surface.
• SCAV_MAP_WCN: Total (kg) scavenged by convective
scavenging at the surface.
• SCAV_MAP_DRY: Total (kg) scavenged by dry deposition at the surface.
Help variables:
• DINM: Number of days in month, changes depending
on leap year or not.
• ZEROINIT: Flag to keep track of initialised components.
• XZEROINIT: Flag to keep track of initialised nontransported components.
• RESULTDIR: Can be used to put results in a specified
directory.
• dustbinsradii: Radius of dust bins. Only set if
mineral dust module is included.

A.2.2

aerosols2fastjx.f90

Routine for handling tropospheric aerosols in fast-JX.
• initialize_tropaerosols: Initialize arrays.
• set_aer4fjx: Calculate the path of each aerosols,
to be used in fast-JX calculations.
• get_tropaerosols: Reads monthly model climatology for specified aerosols. Not fully implemented.
• update_tropaerosols: Sets the climatological values of aerosols, interpolates temporally between two
monthly climatologies.
• set_aer4fjx_ctm2: Sets simple BC profile as in
CTM2.

78

A.2.3

bcoc_oslo.f90

Routines for treating the BCOM module (Section 14).
• bcoc_init: Initializes the BCOM; indices are set
and dry deposition is set.
• bcoc_master: Master routine for calculating BCOC.
Loops through IJ-blocks and their columns and integrates aerosol masses using QSSA.
• bcoc_setdrydep: Puts deposition rates into VDEP.
It is called from the routine setdrydep. Stability is
treated in the latter after VDEP has been set.
• bcoc_chetinit: Initialize latitude dependent aging
times.
• bcsnow_init: Initialize BCsnow.
• bcsnow_diagwetrm: Diagnose BC removed by wet
scavenging and deposited on snow.
• bcsnow_save_restart: Save restart file for BCsnow
diagnostics.
• bcsnow_status: Print status of BCsnow.
• bcsnow_check_snow (private): Debug routine for
BCsnow.
• bcsnow_getspringsummer (private): Get dates for
spring and summer to be used in melting calculations.
• bcsnow_nmet_output: Puts BCsnow data to file every NMET.
• bcsnow_nmet_output_nc: Puts BCsnow data to
netCDF file every NMET.
• bcsnow_collect_ij (private): Collects diagnosed
amount of BC deposited on snow, from wet scavenging and dry deposition, thus building snow layers.
• bcsnow_meltevap_ij (private): Calculates evaporation.
• bcsnow_seaice_ij (private): Corrects calculations
over sea ice.
• bcsnow_adjustment_ij (private): Adjusts calculated snow depth to snow depth from meteorological
data.
• bcsnow_master: BCsnow master routine.

A.2.4

caribic2.f90

Routines for producing vertical profiles at CARIBIC
measurement locations and times. CARIBIC input is
available from 2005. Called from nops_diag in diagnostics_general.f90.
• get_new_events (private): Find observations for
this day.
• caribic_output (private): Produces output for the
given NOPS and the previous NOPS.
• caribic_data_to_file (private): Write collected
flight path data to file.
• caribic2_master: Process profiles. Called outside
parallel region.

A.2.5

ch4routines.f90

Routines for treating CH4 as fixed at surface or as emissions. To choose type of constant surface data, use
CH4TYPE at the top of this file. To use emissions, set
flag METHANEMIS in cmn_oslo.f90.
• update_ch4surface: Updates surface mixing ratios.
This is mainly done from pmain.

Oslo CTM3 user manual

November 6, 2018

• ch4surface_hymn (private): Reads surface data
from HYMN, given for years 2003-2005. This is
standard.
• ch4surface_scale_hymn (private): Scales HYMN
2003 dataset to marine global annual CH4 observed by ESRL Global Monitoring Division
http://www.esrl.noaa.gov/gmd/ccgg/trends_ch4/
• ch4surface_poet (private): Reads surface data
from POET.
• ch4surface_retro (private): Reads surface data
from RETRO.
• READCH4 (private): Carries out the actual read-in for
POET data.
• set_ch4_stt: Sets 3D CH4 , i.e. in the STT array, to
values found in HYMN.
• updateSOILUPTAKEbousquet: Updates soil uptake
each month, according to the Bousquet data.
• read_ch4sfc4soiluptake (private): Reads HYMN
surface data [kg], to convert Bousquet data from
[kg/s] to [1/s].
• read_ch4bousquet (private): Reads the Bousquet
data. Can read any year in dataset, but standard is
to read 2003, matching the HYMN surface data for
2003.
• ch4drydep_bousquet: Calculates the dry deposition
velocity of CH4 to be used in Oslo CTM3.
• reportsfcch4: Reports global average surface mixing ratio of CH4 .
• setch4sfc: Set CH4 at surface to keep it constant.

A.2.8

Oslo wet removal due to convective rain is treated in two
steps:
1. Calculating the fraction of convective rain to cloud
water in the elevator (QFRAC).
2. Calculating the fraction of tracer in cloud water
(DISSOLVEDFRAC).
See Section 6.3 for details. The subroutines in this file
are:
• elevator_fractions:
Calculates QFRAC and
LW_VOLCONC. Called from CONVW_OC.
• liquid_fractions: Calculates DISSOLVEDFRAC and
returns CNV_WETL. Called from CONVW_OC.
• wf_henry (private): Calculates Henry coefficients,
possibly modified by hard coding.

A.2.9

drydeposition_oslo.f90

chem_oslo.f90

This is where Oslo chemistry master routine will be located in the future. For now tropospheric chemistry is
in tropchem_oslo.f90 and stratospheric chemistry is in
stratchem_oslo.f90.

A.2.7

dateconv.f90

Routines for date conversion, used e.g. by caribic2.f90.
• itau2idate: Calculate date from given time in seconds relative to reference year.
• idate2itau: Calculate time in seconds since 1 Jan
1995.
• julianday: Calculate julian day from given date.
• calendardate: Calculate date from given julian day.

A.2.10
A.2.6

cnv_oslo.f90

chem_oslo_rates.f90

Routines for setting up chemistry reaction rates.
• TCRATE_CONST2: Constant rates and rates depending only on temperature. The latter are stored in
intervals of 1 K. Rates used in the troposphere are
listed first, then the rates only used in the stratosphere are listed.
• set_pr42het: Sets aerosol surface uptake reaction for hydrolysis of N2 O5 in the troposphere.
This aerosol climatology is an annual mean heightlatitude distribution from (Dentener and Crutzen,
1993), and should be revised.
• getRQAER (private): Find removal rate by aerosol
(RQAER), only dependent upon land/sea and vertical
variation. Crude approximation, should be revised.
• TCRATE_TP_IJ_TRP: Rates dependent on temperature and pressure in troposphere.
• TCRATE_TP_IJ_STR: Stratospheric rates dependent
on temperature and pressure.
• TCRATE_onAER: Gaseous uptake and heterogeneous
chemistry on aerosols. Includes new and old parameterisations. Tropospheric chemistry.
• TCRATE_HET_IJ: Heterogeneous chemistry reactions
in the stratosphere.

79

Sets up dry deposition velocities.
• drydepinit: Reads drydep.ctm from directory Input_CTM3.
• update_drydepvariables: Sets up special drydep
treatments, e.g. soil uptake of CH4 and variables
for the new dry deposition treatment. Called from
subroutine oc_update_chemistry.
• setdrydep: Sets drydeposition velocities each time
step, in subroutine oc_main.
• get_ctm2dep (private): Calculate old (CTM2)
treatment dry deposition rates.
• get_vdep2 (private): Calculate new dry deposition
velocities.
• get_STC (private): Get monthly mean stomatal conductances.
• get_PARMEAN (private): Get monthly mean photosynthetically active radiation (PAR).
• get_asm24h (private): Get 24-hour mean of asn variable for new dry deposition treatment. I.e. daily
mean of the molar ratio of SO2 and NH3 . Uses all
NOPS steps to calculate daily mean.

A.2.11

diagnostics_general.f90

Oslo chemistry diagnostics.
Scavenging diagnostics are located in diagnostics_scavenging.f90 (Appendix A.2.12).
Variables (private):
• o3lim: O3 mixing ratio used to find tropopause level
tp_o3, based on where O3 > o3lim.
• tp_o3: From surface upwards, this is the uppermost
level where O3 < o3lim.

Oslo CTM3 user manual

November 6, 2018

• preslim: Pressure limit for hPa-based tropopause
tp_hpa.
• tp_hpa: From surface upwards, this is the uppermost level where p < 100hPa.
• Plus several variables to get running averages of tropospheric OH concentration and CH4 lifetime.
Subroutines:

A.2.12

diagnostics_scavenging.f90

Routines for diagnosing dry and wet scavenging.
• scav_diag_init: Initialises separate diagnostics for
wet scavenging and dry deposition.
• scav_diag_put_ddep: Accumulates kg of tracer deposited by dry deposition.
• scav_diag_brd: Accumulates burden of tracers each
meteorological time step to generate averages.
• scav_diag_ls: Diagnose large scale scavenging.
• scav_diag_cn: Diagnose convective scavenging.
• scav_diag_collect_daily: Collect daily scavenged
tracer masses and also the average tracer burden.
• scav_diag_2fileA: Write daily totals of scavenged tracer, plus their burdens, to file scavenging_daily_totals_YYYY.nc. Scavenging includes
wet removal (large scale and convective) and dry
deposition.
• scav_diag_2fileB: Write 2D daily totals of
scavenged tracer (i.e. maps) to file scavenging_daily_2d_YYYYMMDD.nc. Scavenging includes wet removal (large scale and convective) and
dry deposition.

• diag_ohch4n2o_init: Initializes the lifetime diagnostics.
• init_lifetime (private): Initialize CH4 and N2 O
accumulated losses and burdens.
• du_columns: Calculate tropospheric and total O3
columns each meteorological time step.
• write_ducolumns: Write the columns to file dobson_nmet.nc.
• init_daily_diag: Daily initialisations in the beginning of the day.
• daily_diag_output: Daily output carried out at the
end of the day.
• nops_diag: Diagnoses for each NOPS, before parallel
loop.
• mp_diag: Diagnoses for each IJ-block.
• TBGT_2FILE: Processes 2D tendency budgets and
A.2.13 dust_oslo.f90
dumps to file.
• REPORTS_CHEMISTRY: Print out different kinds of reRoutines for treating the DUST module (Section 15).
ports.
• dust_init: Initializes the DUST.
• sumup_burden_and_lifetimes: Sum up OH bur• dustinput_met: Special input for dust calculations.
den and CH4 lifetime for different tropopause defi• SWradbdg_get (private): calculate approximate sonitions, for a given IJ-block.
lar radiation in and out at the surface. Not used
• report_burden_and_lifetime (private): Print out
when available from meteorological data.
the burdens and lifetimes.
•
psadjust (private): Adjust Ps, account for advec• diag_burden_snapshot (private): Print out burden
tion.
at specific times.
• dust_globalupdate: Update global DUST parame• write_snapshot: Writes out snapshots of selected
ters.
species/metdata for hemisphere or global. Mass
• oro_set (private): Set orography.
space is put out.
• plevs0 (private): Get pressure, temperature and
• write_snapshot_the: Writes out snapshots of seheight properties for DUST.
lected species on potential temperature surfaces.
•
dust_master: Master routine for calculating DUST.
Put out as mixing ratio. See Section 21.2.10.
Calls column solver for DUST.
• ch4n2o_burden2: Sums up burden of CH4 and N2 O.
• dust_column (private):
Column treatment of
• ch4_loss3: Sums up monthly chemical loss of CH4 .
DUST; calls DEAD routines to solve DUST in the
• n2o_loss3: Sums up monthly chemical loss of N2 O.
column.
• ocdiags_tpset: Sets tropopause for burden and
• dustbdg2d: Writes dust budget to file.
lifetime diagnostics.
• dist_set_ssrd: Sets meteorological variable SSRD
in dust code.
• report_negO3: Print out the number of negative O3
reported by tropospheric chemistry routine.
• dist_set_strd: Sets meteorological variable STRD
in dust code.
• tnd_emis_daily (private):
Saves accumulated
• dist_set_SWVL1:
Sets meteorological variable
emissions for each species per day, in array
SWVL1 in dust code.
emisTotalsDaily.
• dustbdg2file: Puts out dust budget to netCDF file.
• tnd_emis2file: Writes the daily emission totals
to file emis_daily_totals_YYYY.nc.
Writing follows the budget calendar, and is called
from pmain.
Also writes accumulated emis- A.2.14 emisdep4chem_oslo.f90
sions in 3D following the tendency calendar, to file
emis_accumulated_3d_YYYYMMDD_YYYYMMDD.nc.
Routines to treat get emissions and deposition values and
• save_chemPL: Accumulate chemistry losses, convert convert them for use in chemistry as production and loss
terms, respectively.
to units [kg].
• emis4chem:
Routine similar to the core
• chembud_output: Write chemistry budgets to file.
SOURCE, fetching all emissions from the emisBurden, CHEMLOSS and CHEMPROD, all in units
sions array (as kg/s).
The output array is
kg/gridbox. Only for selected species. Also see SecEMIS_IJ(LPAR,NPAR,IDBLK,JDBLK,MPBLK).
tion 21.2.1.

80

Oslo CTM3 user manual

November 6, 2018

• getEMISX: Fetches the column emissions for all
chemical IDs, converts from kg/s to molec/(cm3 s)
and puts them into EMISX(TRACER_ID_MAX,LPAR).
Called from chemistry master routine where column
values are retrieved.
• getVDEP_oslo: Converts VDEP(NPAR,IPAR,JPAR)
[m/s] to VDEP_OSLO(TRACER_ID_MAX) [1/s] to use as
loss term in chemistry. See Section 7.2 for more.

A.2.15

emissions_aircraft.f90

Routines for reading and updating aircraft emissions.
Possible datasets cover TradeOff, React4C and Quantify.
In the Ltracer_emis_xxxx.inp, you specify AirScen to
define the dataset, and AirEmisPath to define the path
to where aircraft emissions are in general.
Emissions are interpolated to the model resolution. Old
routines are also available for having the possibility to
read old resolution specific emission data. Emissions are
read into a separate array, which is used either in SOURCE
or in emis4chem.
• aircraft_emis_master: Master routine for treating
aircraft emissions.
• aircraft_set_species: Defines which species to
emit.
• aircraft_emis_update (private): Read data from
file.
• aircraft_emis_vinterp (private): Vertical interpolation.
• ac_interp (private): Interpolation routine used
byaircraft_emis_vinterp.
• read_original_res (private): Read original (e.g.
1x1 degree) data.
• read_tradeoff_original (private): Read original
TradeOff data.
• read_react4c_original (private): Read original
React4C data.
• read_quantify_original (private): Read Quantify
data.
• readmass_qfyAIR_month (private): Routine to do
the netCDF reading of Quantify data, called by
read_quantify_original.
• read_ceds_original: (private): Read CEDS data.
• get_xyedges (private): Get grid box info for interpolation.
• aircraft_zero_400hpa (private): Below 400 hPa,
zero out the aircraft tracers (H2 O). This is done by
assuming 1 hour lifetime. Setting to zero may cause
negative tracers due to moments not being zeroed.
It should be possible to include a diurnal variation for
aircraft emissions, but it has not been implemented yet.

A.2.16

emissions_megan.f90

Contains routines for calculating MEGANv2.10 emissions
(Guenther et al., 2012). Oslo CTM3 routines are:
• megan_report: reports daily totals of MEGAN.
Should not be included as default.
• add_meganBiogenic: Adds MEGAN emissions to
species in Oslo CTM3.
• megan_get_co2: Reads file to get monthly CO2 for
isoprene activity factor.

81

• megan_input:
Reads
input
table
tables/megan_tables.dat.
• megan_update_metdata: Updates meteorological
data needed in MEGAN (e.g. accumulated rain).
Also sets monthly CO2.
• megan_emis: Main routine for calculating emissions.
• getWP: Get wilting point for soil.
• megan_emis2file: Puts emitted amounts to file following the BUDGETS calendar. See Section 8.6.2.
MEGAN routines adjusted to Oslo CTM3:
• GAMMA_AGE: Calculate leaf age activity.
• GAMMA_CANOPY: Calculate activity from canopy.
• DIstomata: Calculate drought-induced effect on
stomata (range 0–1) based on the Palmer Severity
Drought Index. Note that MEGAN sets the drought
index to zero as default.
• Ea1t99: Temperature dependence activity factor for
emission type 1 (e.g. isoprene, MBO).
• Ealti99: Calculate light independent algorithms.
• Ea1p99: Not sure what this does.
• WaterVapPres: Convert water mixing ratio (kg/kg)
to water vapor pressure.
• Stability: Temperature lapse rate in canopy, using
canopy characteristics and solar input.
• GaussianIntegration: Gaussian distribution.
• SolarFractions: Calculate transmission, the fraction of photosynthetic photon flux density (PPFD)
that is diffuse, and fraction of solar rad that is
PPFD.
• WeightSLW: Calculates a Gaussian weighting function for LAI in the canopy layers.
• CanopyRad: Canopy light environment model.
• CalcExtCoeff: Calculates extinction coefficient.
• CalcRadComponents: Radiative calculations.
• CanopyEB: Canopy energy balance model for estimating leaf temperature.
• LeafEB: Leaf energy balance.
• ConvertHumidityPa2kgm3: Convert Pa to kg/m3 .
• ResSC: Leaf stomatal resistance. Not well referenced.
• LeafIROut: IR thermal radiation energy output by
leaf.
• LHV: Calculate latent heat of vaporisation from Stull
(1988), p.641.
• LeafLE: Latent energy term in energy balance.
• LeafBLC: Boundary layer conductance.
• LeafH: Convective energy term in energy balance
(W/m2 heat flux from both sides of leaf).
• SvdTk: Calculate saturation vapor density.
• CalcEccentricity: Calculate eccentricity.
• UnexposedLeafIRin: Calculate IR into leaf that is
not exposed to the sky.
• ExposedLeafIRin: Calculate IR into leaf that is exposed to the sky.
• SOILNOX: Calculation of soil NOx based on Yienger
and II (1995).
• FERTLZ_ADJ: Computes fertilizer adjustment factor
for soil NOx.
• GROWSEASON: Computes day of growing season for
soil NOx.
• prec_adj: Calculates precipitation pulse adjustment factor for soil NOx.
• getPulseType: Computes the pulse type from a
rainfall rate (Yienger and II, 1995).
• precipfact: Computes a precipitation adjustment
factor.

Oslo CTM3 user manual

A.2.17

November 6, 2018

emissions_ocean.f90

Routines for treating emissions from ocean. Also sea
spray routines will be placed here eventually.
• emissions_ocean_organiccarbon_init: Initialise
variables for using oceanic emissions.
• emissions_ocean_getChlA: Fetches chlorophyll A
for specified month. Uses MODIS chlorophyll A,
which has been binned into 0.5x0.5 degree grid. Uses
meteorological year for years 2003–2012, and otherwise a climatology of those years.
• emissions_ocean_organiccarbon: Calculate emissions of oceanic organic carbon aerosols (POA), following Gantt et al. (2015). If sea salt module is
included, use sea salt production rate, otherwise calculate it separately (slightly different method for
now). This routine only depend on meteorological
variables, and is called from update_emis_ii (emissions_oslo.f90).
• emissions_ocean_total: Print out current total
POA flux as [Tg/yr].
• add_oceanOCemis: Routine to add oceanic carbon
emissions. Called from either emis4chem_oslo or
SOURCE.

A.2.18

emissions_oslo.f90

Routine for reading in emissions, and master routine for
short term variations.
• emis_input: Reads in emission data based on
Ltracer_emis_xxxx.inp.
• update_emis:
Updates short term variations/emissions globally.
• update_emis_ij: Update short term emissions in an
IJ-block.
• emis_prop (private): Set properties for input data.
• emis_unit (private): Unit conversions for datasets.
• emis_check2dscal (private): Check 2D scaling flag
and keep track of which ones are used.

A.2.19

emissions_volcanoes.f90

Variables and routines for volcanic emissions.
Variables:
• volc_emis_so2: Emissions of SO2 for each event.
• volc_elev: Elevation of the volcano.
• volc_cch: Cloud column height, i.e. the height of
the cloud rising from the volcano. When equal to the
elevation, the volcano is non-eruptive, i.e. gassing
from the surface.
• volc_ii: IJ-array zonal index of event.
• volc_jj: IJ-array meridional index of event.
• volc_mp: IJ-array number.
• volc_event_start(31,12): Keeps track of first
event for each day, through the year.
• volc_event_end(31,12): Keeps track of last event
for each day, through the year.
Subroutines:
• init_volcPATH: Initialize file path and year for volcanic emissions.

82

• read_volcEMIS: Master routine for reading volcanic
emissions.
• read_volcEMIS_HTAP: Reads HTAP volcanic emissions (1979–2010).
• read_volcEMIS_ACOM: Reads AEROCOM volcanic
emissions.
• add_volcEMIS: Adds volcanic SO2 emissions to emission array.

A.2.20

emisutils_oslo.f90

Routines used by emissions_oslo.f90. When including
new types of emissions/datasets, new read-in routines
should be placed here.
• reademis_2d: Controls the read-in of 2D emission
data and its interpolations. This is where you will
find info on the 2D format codes used in the emission
file Ltracer_emis_xxxx.inp.
• reademis_3d: Controls the read-in of 3D emission
data and its interpolations. This is where you will
find info on the 3D format codes used in the emission
file Ltracer_emis_xxxx.inp.
• reademis_stv: Controls the read-in and interpolation of 2D fields used for short term variations
(see Section 8.4.4). This is where you will find info
on the STV format codes used in the emission file
Ltracer_emis_xxxx.inp.
• emisinterp2d (private): Interpolates 2D field and
designates dataset numbers.
• emis_setscalings: Set scaling for tracers using different datasets.
• scale_area (private): Scales with dataset by grid
box area.
• get_xyedges: Calculate grid box properties.
• set_diurnal_scalings: Sets simple diurnal scalings. These are e.g. from TNO/RETRO or such
as 50 % up in daytime and 50 % down during night.
• emis_setscaling_2dfields: Reads scaling data to
use for 2D scaling, e.g. daylight temperatures or
heating-degree-days.
• emis_diag: Accumulates the emissions of each
species into DIAGEMIS_IJ.
• ctm2_rdmolec2 (private): Reads CTM2 POET format.
• iiasa_read2d (private): Reads IIASA 2D data as
in CTM2.
• gfed_read3d: Reads GFED 3D data. Not used in
the GFED emissions now; this routine was used to
read monthly emissions into the core emission array.
• volc_read1 (private): Reads volcanic emissions.
• read_retrobbh (private): Reads the vertical distribution of forest fires.
• read_bcoc_bond_2d: Reads Tami Bond data version
4 and 5.
• read_aerocom_2d: Reads ascii data from AEROCOM.
• gfed4_rd: Reads monthly GFEDv4 data along with
partitioning.
• gfed4_init: Reads emission factors from GFEDv4.
• gfed4_rd_novert: Reads monthly GFEDv4 emissions for distributing according to boundary layer
height.
• gfed4_rd_novert_daily: Reads monthly GFEDv4
emissions along with daily fraction of emissions per
month.

Oslo CTM3 user manual

A.2.21

November 6, 2018

eqsam_v03d.f90

Subroutine eqsam_v03d_sub is the main nitrate (eqsam)
driver, based on Metzger et al. (2002).

A.2.22

fallingaerosols.f90

Contains routines for calculating gravitational settling of
aerosol using second order moments transport. Not used
yet.
• aerosolsettling: Master routine.
• readkasten1968: Reads aerosol fall speeds of Kasten (1968).
• getGAMAAER: The vertical velocity of particles are
found based on their radius. Assumes fixed radius
for the whole IJ-block.
• GRAV_SETN: Routine for SOM transport of a tracer
downwards.
• fallspeed: Purpose: Given size and density of particle, and column thermodynamic profile, compute
terminal fall speed. Based on DEAD/DUST code.
• turbfallspeed: Purpose: Given size and density of
particle, and column thermodynamic profile, compute Based on DEAD/DUST code.
• getGAMAAER_NS: Same as getGAMAAER but handles
different radii and vertical properties.

A.2.23

gmdump3hrs.f90

Routine for dumping selected components to netCDF file
every 3 hours. Turn on this diagnose by setting its flag
LDUMP3HRS=.true..
• dump3hrs: Dumps the components.
• gm_dump_nc (private): Does the writing to netCDF
files. Converts from kg/gridbox to kg/m3 .

A.2.24

hippo.f90

Routines for producing vertical profiles at HIPPO measurement locations and times. Called from nops_diag in
diagnostics_general.f90.
• get_new_events (private): Find observations for
this day.
• hippo_output (private): Produces output for the
given NOPS and the previous NOPS.
• hippo_data_to_file private): Write collected flight
path data to file.
• hippo_master: Process profiles. Called outside parallel region.

A.2.25

input_oslo.f90

Subroutines to initialize the Oslo CTM3.
• clear_oslo_variables: Clear arrays used by chemistry (e.g. trsp_idx). Called by routine INPUT.
• init_oslo: Initialize Oslo chemistry. Tracer related
data is read, and constant chemical reaction rates
are set. Dry deposition parameters are read and
some diagnostics are also initialized.
• info_oslo (private): Print out info about Oslo
chemistry.

83

• info_qssa (private): Print out info about QSSA
solver.
• read_tracer_list (private): Read tracer list, initialize Oslo chemistry.
• tracer_specific_input (private): Read in the
tracer-specific run instructions and data sets. Based
on UCI CHEM_IN, but set up for Oslo chemistry.
• set_resultdir (private): Sets a result directory if
defined.
• read_lsmask: Reads the land-sea mask LSMASK.

A.2.26

main_oslo.f90

The module main_oslo comprises the master subroutine
for chemistry and aerosol packages.
• master_oslo: Master routine to control Oslo chemistry. Processes for each IJ-block is called separately.
• jvalues_oslo (private): Collects J-values in the IJblock.
• jv_column (private): Sets photolysis rates in the column. Based on UCI subroutine PHOTOL.
• update_chemistry: Update chemistry, e.g. boundary conditions.

A.2.27

ncutils.f90

Contains netCDF utilities.
• readnc_3d_from4d: Read netCDF file containing
4D fields (DIM1,DIM2,DIM3,DIM4), and returns
3D-field for a DIM4 entry.
• readnc_2d_from3d: Read netCDF file containing
3D fields (DIM1,DIM2,DIM3), and returns 2D-field
for a DIM3 entry.
• readnc_1d: Opens a netCDF file and returns a 1D
field of specified size from the file.
• readnc_1d_from2d: Opens a netCDF file and extracts a 1D from a 2D field on file. Specifying an
entry of DIM2, a 1D array is returned from the 2D
array (DIM1,DIM2).
• get_netcdf_var_1d:
Reads 1D variable from
netCDF file. Array is allocated in this routine, and
must be deallocated after use.
• get_netcdf_var_2d:
Reads 2D variable from
netCDF file. Array is allocated in this routine, and
must be deallocated after use.
• get_netcdf_var_3d:
Reads 3D variable from
netCDF file. Array is allocated in this routine, and
must be deallocated after use.
• get_netcdf_var_4d:
Reads 4D variable from
netCDF file. Array is allocated in this routine, and
must be deallocated after use.
• get_netcdf_att_char: Reads attribute data for
variable from netCDF file.
• get_netcdf_var_dims: Reads dimensions of variable from netCDF file.
• get_netcdf_r4var_1d_from_2d:
Returns single
precision (r4) 1D array from a 2D netCDF field.
Used for reading meteorological data on netCDF format.
• get_netcdf_r4var_2d_from_3d:
Returns single
precision (r4) 2D array from a 3D netCDF field.
Used for reading meteorological data on netCDF format.

Oslo CTM3 user manual

November 6, 2018

• get_netcdf_r4var_3d_from_4d:
Returns single
precision (r4) 3D array from a 4D netCDF field.
Used for reading meteorological data on netCDF format.
• handle_err: Handle netCDF errors. This routine
does not print out much helpful information.
• handle_error: Handle netCDF errors slightly better than handle_err.

A.2.28

nitrate.f90

Nitrate routines. Note that the nitrate equilibrium model
is located in its own file eqsam_v03d.f90.
• nitrate_init: Initialise nitrate module.
• nitrate_master: Nitrate master routine.

A.2.29

pchemc_ij.f90

The tropospheric 1D chemical integrator, integrating the
chemistry in the tropospheric column.
The Oslo chemistry was originally set up to use emissions as production terms and deposition as loss terms.
This is still default, and is controlled by the user settings
in Makefile (Section 2.7.1). Note that treating them in
chemistry, the lightning and aircraft emissions are also
included in the emission array. See Section A.2.14 for
more.

A.2.30

pchemc_str_ij.f90

The stratospheric 1D chemical integrator, integrating the
chemistry in the stratospheric column.

A.2.31

physics_oslo.f90

The module physics_oslo contains subroutines for doing physical calculations in the Oslo CTM3. Parameters
and variables are
• NTHE: number of theta levels to calculate equivalent
latitudes.
• pvthe: Potential vorticity on the theta levels.
• theqlat: Equivalent latitude on the theta levels.
The subroutines are
• update_physics: Updates physical variables such as
tropopause level.
• defineTP: Defines the tropopause level, based on the
parameter TP_TYPE=1 in cmn_oslo.f90. Default for
the Oslo CTM3 is a PVU-based tropopause:
• tp_pvu_ij (private): Calculates the tropopause
level from PVU and potential temperature
(TP_TYPE=1).
• tp_dtdz_ij (private): Not tested. Calculate the
tropopause level using lapse rate (TP_TYPE=2).
• tp_e90_ij (private): Not tested. Uses tropopause
level from E90 tracer, i.e. as given in LPAUZTOP
(TP_TYPE=3).
• tp_03_150 (private): Not in use. Tropopause based
on where O3 < 150ppbv.

84

• get_pvu: If the meteorological data do not provide
PV, it may be calculated from the winds in this
routine.
• ijlw2lij:
Converts
a
field
of
size
(IPARW,JPARW,LPARW) to the possibly degraded
and vertically collapsed (LPAR,IPAR,JPAR).
• theta_pv: Interpolate PV to pre-defined theta levels.
• theta_eqlat: Calculates equivalent latitudes for
pre-defined theta levels.
• IJLfield2ThetaLvs: Interpolates standard IJLfield to θ-levels.
• metdata_ij: Sets arrays of air molecular density
AIRMOLEC_IJ and box volume DV_IJ. They are used
in converting to concentration.
• check_lmtrop (private): If E90 tracer needs to be
initialised, LMTROP must be defined. If LMTROP is
calculated from E90-tropopause, it must be set in
another fashion, and for this the PVU tropopause is
used. Only carried out at the first time step.

A.2.32

psc_microphysics.f90

Variables and routines to calculate formation and evolution of PSCs. Some important variables:
• N_B: The number of PSC particle bins. Originally set
to 40, but since early 2018 the default is 15 bins to
save computing time (sedimentation is done for each
bin). Using 15 bins covering the same radius range
only changes total O3 column by up to 0.2 %, also
in O3 hole conditions (year 2016 have been tested).
If you model O3 loss specifically, you might want to
consider increasing NB .
• LAEROSOL: Flag to include aerosol heterogeneous
chemistry (in stratosphere).
• LPSC: Flag to include PSC1 heterogeneous chemistry.
• LPSC2: Flag to include PSC2 heterogeneous chemistry. Requires LPSC=.true..
• PSC1: PSC1 surface area density.
• PSC2: PSC2 surface area density.
• VOLA: Volume of frozen aerosols.
• SAT: Flags when STS have frozen to NAT.
• SPS_PARTAREA: Surface area density of aerosols after
PSC modification
And subroutines:
• oslochem_psc: Master routine.
• get_psc12_sad: Get column values of PSC1, PSC2
and SAD.
• get_mw: Fetches coefficients for mass to concentration conversion.
• PSC_1d_07: Column model for PSC surface area calculation.
• CARS: Carslaw routine.
• H2O_SAT: Calculate saturation concentration of
H2 O.
• WSED: Get falling speed of aerosols.
• sedimentation: Sedimentation routine.
• SED: Old sedimentation routine
• AM_BIN: Calculate H2 O in binary solution.
• X_CARS: Used by AM_BIN.
• HENRIC: Calculate Henry’s law constants.
• RHO_S_CAR: Calculate density of H2 SO4 in binary
solution.

Oslo CTM3 user manual

November 6, 2018

• RHO_N_CAR: Calculate density of HNO3 in binary solution.
• LOGN: Get log-normal distribution.
• MOM: Calculate moments of distribution.
• DIS_LN: Routine for calling LOGN and MOM.
• sps_SURF: Calculate H2 SO4 mixing ratio from
aerosol surface area density.
• sps_WSASAS: Get H2 SO4 mass fraction in a solution
with plane surface, and in equilibrium with ambient
water vapor pressure.
• sps_ROSAS: Get density of the sulphuric acid solution.
• PSC_diagnose: Simple diagnostic of PSCs.
• set_psc_constants: Initializes the PSC constants.
• getTnat: Calculate TNAT , the freezing temperature of NAT.

A.2.33

qssa_integrator.f90

Routine for integrating chemistry.
• qssa: Integrates chemistry.
• qssastr: Same as qssa, but allows negative production due to the treatment of the sum of oxygen
(SO).

A.2.37

Routines for calculating secondary organic aerosols
(SOA).
• soa_init: Initialise SOA.
• soa_setdrydep: Set dry deposition for SOA.
• SOA_v9_separate: Master routine for calculating
SOA separation, i.e. the amount in gas phase and
in aerosol phase.
• FINDM0 (private): Find concentration of total organic aerosol.
• FM0: Used by FINDM0.
• soa_diag_drydep: Diagnose SOA drydep.
• soa_diag_separate: Diagnose changes in SOA due
to separation routine.
• soa_diag2file_nc4: Writes SOA diagnostics to
netCDF4 files, one for 3D for all SOA species
(soa_budgets_*), and one for daily global totals
(soa_dailybudgets_YYYY).
• soa_nopsdiag: SOA diagnoses each NOPS.
• soa_diag_lsscav: Diagnose SOA large scale scavenging.

A.2.38
A.2.34

Routines for setting stratospheric aerosols, i.e. the variable PARTAREA. Aerosol dataset was made by Considine
at NASA.
• update_strat_backaer:
Update background
aerosols by adjusting to meteorology.
• update_ba: Update background aerosols. Done every month.
• ctm2_set_partarea: Adjust satellite data to meteorology, mainly pressure. Assumes that SAD data are
means on geographical latitude (i.e. not equivalent
latitude).
• ctm2_set_partarea5: If a zonal mean dataset uses
equivalent latitudes, it is possible to interpolate
those to the model by using the model equivalent
latitude. This routine tries to do that, but is not in
use.
• meri_interpol: Interpolate linearly in latitude.

seasalt.f90

Routines for treating the SALT module (Section 16).
• seasalt_init: Initializes the SALT.
• seasalt_master: Master routine for calculating
SALT.
• dry2wet (private): Calculate the density and diameter of wet sea salt particles.
• growth_factor (private): Calculate growth factor.
• falling (private): Gravitational settling.
• drydeppart (private): Dry deposition.
• addtogether (private): Add the parts together.
• saltbdg2file: Puts out salt budget to netCDF file.

A.2.36

strat_aerosols.f90

satelliteprofiles_mls.f90

Routines for diagnosing satellite profile measurements.
Called from nops_diag in diagnostics_general.f90.
• get_satprofiles_mls (private): Get profiles for
specified time step.
• initialize_satprofiles_mls (private): Initialize.
• satprofs_mls_to_file (private): Write to file.
• satprofs_mls_master: Control the other routines.

A.2.35

soa_oslo.f90

A.2.39

strat_h2o.f90

Module for H2 O treatment in the stratosphere. Also sets
H2 O in the troposphere.

seasaltprod.f90

Contains different sea salt production routines. They are
used by both the SALT application and the BCOC application.
• seasalt_production: The standard Oslo CTM3 sea
salt production, using small particles as in Monahan
et al. (1986) as suggested by Gong et al. (1997), and
large particles as in Smith et al. (1993).
• seasalt_production_maartenson03: Sea salt production following Mårtensson et al. (2003).
• seasalt_production_gantt15: Sea salt production
following Gantt et al. (2015), i.e. parameterisation
of Gong (2003) with sea surface temperature adjustment as in Jaeglé et al. (2011).

85

Variables and parameters:
• sumH2: Sum of H2 +2CH4 +H2 O in the stratosphere,
as volume mixing ratio.
• LOLD_H2OTREATMENT: .true. means H2 O is calculated
from the sumH2 (old treatment). .false. means H2 O
is calculated in the chemistry, and requires H2 , H2 O
and H2 Os to be transported.
• str_h2o: Array containing stratospheric H2 O when
calculating from the sum.
• d_h2o: Sedimented ice from PSC microphysics.
Subroutines:
• set_trop_h2o_b4trsp_clim:
Sets tropospheric
H2 O values before transport based on model climatology.

Oslo CTM3 user manual

November 6, 2018

• reset_trop_h2o: Resets tropospheric H2 O to values
from specific humidity.
• set_strat_h2o_b4chem: For old treatment, this calculates H2 O from sumH2.
• set_d_h2o: Sets d_h2o, called from PSC microphysics.
• strat_h2o_init: Initialize arrays for H2 O treatment. Will overwrite a possible stored field if H2 O
is transported.
• strat_h2o_ubc: Set upper boundary conditions for
H2 O.
• strat_h2o_ubc2: Set upper boundary conditions for
H2 O and H2 using same mixing ratio as layer below.
• strat_h2o_max: Report max H2 O in the stratosphere.
• zc_strh2o: Put H2 O into ZC_LOCAL before chemistry if H2 O is not transported.
• set_h2_eurohydros: Sets H2 based on monthly
means from the EUROHYDROS project.
• strat_h2o_init_clim: Initialise tropopause mixing
ratio of H2 used as climatology.

A.2.40

strat_loss.f90

Subroutines:
• stratloss_oslo: Stratospheric loss of tracers not
handled by stratospheric chemistry routine.

A.2.41

A.2.42

The module stratchem_oslo sets up the stratospheric chemistry and calls OSLO_CHEM_STR located in
pchemc_str_ij.f90.
• oslochem_strat: Master routine for stratospheric
chemistry.
• read_oslo2d2: Reads original output from Oslo
2D model and interpolates on the fly. Data are
read in STT_2D_LT for upper layer (T for top) and
STT_2D_LB for bottom (B).
• update_strat_boundaries:
Updates BTT from
STT_2D_LT at surface and STT_2D_LB at model top.
• set_fam_in_trop: Sums up stratospheric families in
the troposphere.

A.2.43

When calculating only tropospheric chemistry, the
module strat_o3noy_clim sets up stratospheric O3 ,
NOx and HNO3 .
• read_o3clim: Reads netCDF file with climatologies
of O3 , HNO3 , PANX, HO2 NO2 , NO3 , N2 O5 , NO
and NO2 , based on a Oslo CTM2 T42L60 simulation. Reads monthly mean for current and next
month.
• get_strato3noy_clim:
Main routine for nonparallel region. Called 00UTC each day.
• stratO3_interp (private): Interpolates linearly in
time between two monthly means of climatology,
called from get_strato3noy_clim once each day.
• update_stratO3: Sets O3 from time interpolated
monthly mean climatology. Routine works in parallel over IJ-blocks!
• stratNOY_interp (private): Interpolates NOy components linearly in time between two monthly means
of climatology, called from get_strato3noy_clim
once each day.
• update_stratNOX (private): Sets NOx and HNO3
similar to Oslo CTM2. Should not be used.
• update_stratNOX2 (private): Inert stratospheric
NOx and HNO3 are scaled to the NOx and HNO3
values used in Oslo CTM2. Should not be used.
• update_stratNOY (private): Updates stratospheric
NOx and HNO3 based on the climatology.
• update_strato3ctm2 (private): Old CTM2 routine
for L40. Updates stratospheric O3 in the uppermost layer assuming an influx of O3 . HNO3 and
NO are set in the stratospheric domain, based on
O3 . Should be replaced with an interpolation to
L60 climatology.

86

sulphur_oslo.f90

Contains a few variables, and also the ocean concentration of DMS, in the variable DMSseaconc.
• TCRATE_CONST_S: Sets constant reaction rates for
sulphur chemistry.
• TCRATE_TP_S_IJ: Calculates heterogeneous reaction
rates for sulphur chemistry.

A.2.44

strat_o3noy_clim.f90

stratchem_oslo.f90

troccinox_xxx.f90

Routines for producing vertical profiles at TROCCINOX2 measurement locations and times, from January
2005 to early March 2005. ’xxx’ is ’fal’ for Falcon, ’geo’
for Geophysica and ’ban’ for Bandeirante. These files
are practically identical, and routines are: Called from
nops_diag in diagnostics_general.f90.
• get_new_events:
• flight_output:
• flight_data_to_file:
• troccixxx_master:

A.2.45

tropchem_oslo.f90

The module tropchem_oslo takes care of the tropospheric chemistry calls in the IJ-block. It calls OSLO_CHEM
located in pchemc_ij.f90.
• oslochem_trop: Master routine for tropospheric
chemistry.

A.2.46

utilities_oslo.f90

Contains utilities for the Oslo CTM3, mainly related to
Oslo chemistry.
• gotoZC_IJ: Put BTT into a local column array for all
tracers, indexed by tracer IDs.
• backfromZC_IJ: Convert local tracer array back to
BTT.
• ZC_MASS2CONC: Convert local tracer array from mass
to concentration.
• ZC_CONC2MASS: Convert local tracer array back to
mass.
• troe: Old routine to calculate reaction rates for
three body reactions.

Oslo CTM3 user manual

November 6, 2018

• rate3b: Calculate reaction rates for three-body reactions. Used in both troposphere and stratosphere.
• get_chmcycles: Find number of internal loops
(CHMCYCLES) for chemistry/boundary layer mixing.
• US76_Atmosphere: Compute properties of the 1976
standard atmosphere.
• h2o_sat: Calculate saturation concentration of H2 O
at a given temperature.
• source_e90: Calculate source for e90 tracer.
• decay_e90: Calculate decay for e90 tracer.
• init_e90: Initialise e90 tracer.
• tpause_e90: Find tropopause based on e90 tracer.
• tpauseb_e90: Find tropopause in IJ-block based on
e90 tracer.
• tpauseb_o3: Find tropopause in IJ-block based on
Linoz O3 isopleths.
• SZA_PN: Calculates solar zenith angle and also
whether it is polar night (PN), i.e. when sun does
not go above the horizon.
• stringUpCase: Changes a string to upper case letters (English alphabet only).

A.2.47

verticalprofiles_stations2.f90

Routines for diagnosing vertical profiles at stations.
Called from nops_diag in diagnostics_general.f90.
• vprof_stations (private): Get profiles for specified
time step.
• initialize_stations (private): Initialize.
• vprofs_to_file (private): Write to file.
• vprofs_master: Control the other routines.

A.3

DUST source code

The mineral DUST code is located in the directory
OSLO/DEAD_COLUMN.

A.4

Oslo dummy files

When the Oslo CTM3 is compiled without Oslo chemistry, i.e. run in transport mode only, the Oslo modules
used by the core source are replaced with dummy modules in Makefile. The code is designed so that there are
very few such files, and further development should also
keep such files at a minimum. The files are located in the
directory OSLO/DUMMIES.

B

SVN – Subversion

The Oslo CTM3 is available through the UiO central subversion system (SVN). To access the code you have to be
member of the group gf-ozone.

module load svn
Important SVN commands are checkout,
delete/remove, commit, status, diff.

add,

For version 1.5 you also have resolve, which differs from
previous versions using resolved. You can find documentation of earlier versions on the SVN book home page.

B.1

Repository structure

Only the Oslo CTM3 code, i.e. the ctm3f90 of SVN, is
described in this manual. But there are other tools available through SVN, given in different directories of the
repository. One of the most important ones is utilities.
When you are experienced enough to use branches and
tags, you have separate directories for them.
ctm3f90/
(Oslo CTM3 code)
MANUAL/
(this manual)
LATEX/
(latex code manual)
OSLO/
(Oslo chemistry code)
DEAD_COLUMN/ (Dust code)
DUMMIES/
(Dummy routines)
tables/
(tables)
PMEAN/
(to generate annual mean sfcP)
tmp/
(where .o-files end up)
mod/
(where .mod-files end up)
branches/
tags/
utilities/
generateOpenIFS/
fast_jx/
scattering/
fj_phase/
mishchenko/
xsection/
fortran/
ec2netcdf4/
generate_ctm3_restart/
idl/
matlab/
ctm2/
(old CTM2 code)
trunk/
("old" Oslo CTM3 code)
MANUAL/
(this manual)
OSLO/
(Oslo chemistry code)
DEAD_COLUMN/ (Dust code)
DUMMIES/
(Dummy routines)
ROUTINES_NOT_USED/
(Old routines)
UCI_Q56D/
(original UCI code)
UCI_Q60A/
(original UCI code)
tables/
(tables)
PMEAN/
(to generate annual mean sfcP)
tmp/
(for compilation)

B.2

Checkout

SVN is a version control system, and a good introduction is the SVN book, available at http://svnbook.redbean.com/.

The Oslo CTM3 code is located in a repository, and you
get it by typing:

To use SVN you need to have SVN installed/loaded. If
it is not installed on the computer, it could be available
as a module which you can usually load it with

svn checkout \
svn+ssh://svn.uio.no/svnroot/osloctm3/ctm3f90 \


87

Oslo CTM3 user manual

November 6, 2018

You can write this on one line in the command window;
the backslash allows you to write a command on several
lines. The code is now available in your working directory.
In the .svn directory the original revision files are also
available.

• .mine Your working copy based on revision XX.

If you don’t specify the name of directory where the code
will be copied to, it will be named ctm3f90.

For version 1.5 and newer, the command is resolve, and it
takes several options. You can decide to use your version

Similarly you can fetch the utilities or any other directory from the repository, just swap “ctm3f90” with the
directory you want. For example, if you only want this
manual, use ctm3f90/MANUAL.

svn resolve --accept mine-full \


B.3

• .rXX Revision which your working copy was based
on.
• .rYY The new file in the repository.

This can also be done by manually correcting the conflicts
in the file, followed by

Status

svn resolve --accept working \


SVN can check your working directory files against the
original revision of the repository. It does not check the
repository itself ! The status tells you whether the file has
changed or not.

Other possibilities are to accept the repository version
(no changes will be committed)

svn status 
If a file is specified, only that file is checked. If a directory is specified (no specified path or file means current
directory) all files in the directory are checked.

svn resolve --accept theirs-full \

For resolving conflicts, see Chapter 2 in the SVN book.

The
•
•
•
•
•

status returns a letter for each file specified:
? File does not exist in repository.
A File is scheduled for addition.
D File is scheduled for removal.
C File is in conflict with repository.
M File is locally modified.

B.5

Adding a file

When adding a new file or directory you must first update
to the most recent repository version, and then you write

Important
The current version (i.e. the latest repository version)
may have changed even though the file status reports the
file to be unchanged. Adding an option to the command
allows you to see which files that have newer versions in
the repository (marked by *):
svn status -u 

svn add 
which schedules the file for the repository. Then you can
commit the file:
svn commit 

You can also add a verbose option -v.

B.6
B.4

Conflicts & resolve

Deleting a file

If you want to delete a file, simply use the delete or
remove commands, e.g.

Conflicts occur when you try to update your files, and
SVN does not know how to implement your changes into
the repository. This must then be resolved before you
can commit the changes. Resolving can be carried out
immediately or be postponed, which is usually the best
way.

svn delete 
which schedules the file for removal, and also removes
your local copy. It will be deleted in the repository when
you do the commit:

SVN version 1.4 and older
If you use svn older than version 1.5, you solve a conflict
by doing changes to the file and then type:

svn commit 

svn resolved 

Remember to have the last repository version before
deleting files.

SVN version 1.5 and newer
When getting a conflict for a file, several files are generated, their file names being the original file name + an
extension:

You can also delete directories in the same way. In that
case, however, the local directory is probably not removed
until you commit the changes.

88

Oslo CTM3 user manual

B.7

November 6, 2018

B.10

Committing changes

Not everybody should be allowed to commit changes.
A moderator should approve your work before it is committed.

Log

The changes you specify with -m when you commit will
be stored in a log. You access the log by

When it has been agreed that your modified files are to
be included to the repository, you first need to make sure
the file is otherwise updated:

svn log
to get all changes reported, or by

svn update
svn log 
Then you can commit the changes, unless there are conflicts;
svn commit -m ‘‘msg’’

to get changes for a specific file.

B.11

where “msg” is a message to tag the changes. Instead
of a message you can send in a file where you describe
the changes. This is done by -F  instead of
-m ‘‘msg’’.

Help

You find out more about the SVN commands by typing

svn help 

If you only want to commit some of the changed files, use

B.12

svn commit  -m ‘‘msg’’

B.8

Go back to previous version

If you commit and want to go back to another version,
here is what you have to do. Say you want to go back to
revision r203, then you write:

Branching

When you start working on a large modification to the
Oslo CTM3, it is wise to create a branch containing your
code. SVN will keep track of your files as before, but it
will not affect the trunk – only the branch. Later, when
the branch is working well, the branch may be merged
into the trunk.
Read the SVN book to find out more on this.

svn merge -r HEAD:r203 .

C

You may have to give password several times. Probably,
also svn merge -c r203 works. Then, your working copy
is updated to r203 and you have to commit it:

Technical notes

In this Appendix some technicalities are described,
e.g. how the atmosphere is set up.

svn commit -m ‘‘msg’’

C.1
B.9

AIR mass

Diff
The air mass (AIR) is calculated from the pressure, in the
routine AIRSET.

Diff will give you the differences between your working
copy and the revision of the repository it is updated to,
i.e. what is located in the .svn directory. It does not check
the repository!

Since pressure is force (mg0 ) per area, we find the mass
of each grid box from the pressure difference ∆p between
grid box top and bottom, and the grid box area A:

If you want to compare with other revisions, use the option -r revision_number; this will check the repository.
The revision number can take several forms, which you
should find in the SVN book. The useful revision is usually the latest, and the best solution for this is probably:
svn diff -r revision 
where revision may be the wanted revision number, or it
may be some date format e.g. {YYYY-MM-DD} or {HH:MM}
(must include parentheses). See the SVN book for more.

89

m=

∆pA
g0

(156)

This air mass is then the wet air (AIRWET), and dry air
is calculated by using the specific humidity (model field
Q):
md = m(1 − Q)
(157)
When initializing from a restart file, AIR is also initialized
from that file.

Oslo CTM3 user manual

C.2

November 6, 2018

Calculation of layer heights

For temperature in Kelvin, saturation water vapor pressure (ew (T )) is given by

The height of a layer L is calculated by the hypsometric
equation
∆z(L) =

Rd Tv (L)
ln
g0



p(L)
p(L + 1)

ew (T ) = 611.2 exp(



RH =

By using specific humidity, the virtual temperature can
be calculated:
Tv = T (1 − Q)
(159)

(160)

and use temperature directly. You find this value where
they multiply with 29.36 ≈ 288/g0 . This is not done in
the Oslo CTM3; we use Q from the meteorological data.

Calculation of relative humidity

How Makefile works

The code is compiled with GNU make; just write gmake
(or make) in the code directory). It reads the Makefile
and sets up the list of source files and compiles them. All
object files are put into the temporary directory tmp/.
The compilation will be faster by using the option -j,
e.g. gmake -j8.
When you add a file to the code, you need to include some
information about it in Makefile. This may be a little
tricky, so I will go through the steps here.

Step 1
Add the file to the source list in Makefile: Locate the
OSLO_SRC variable and add the file name there.

However, the openIFS meteorological data is produced
in T159N80L60 resolution, so no conversion to coarser
resolution is done.

Step 2
Add dependencies; which objects does your file depend
on, and which of the existing files depend on your file.
These are listed at the bottom of Makefile. If your file
depend on cmn_size.f90, you add
$(filter %myfile.o, $(ALL_OBJ)): \
$(filter %cmn_size.o, $(ALL_OBJ))
In the same way you must add %myfile.o to the file using
your file.

(161)

where %v is density of water vapor and %a is density of
dry air.
From the equation of state, we have densities expressed
by pressure p and temperature T :
pa
%a =
(162)
Ra T
pv
%v =
(163)
Rv T
From Eq. (161) we see that
%v (1 − Q) = %a Q

(168)

Adding a new file
Say you add a file to the OSLO directory, called myfile.f90. Then follow these two steps:

Relative humidity is not available as meteorological field.
But it can be calculated from specific humidity (Q). Note
that when ECMWF reduced Gaussian fields are interpolated, e.g. from T319 to T42, temperature and specific
humidity are treated differently. Temperature interpolation takes altitude into account. Thus, in regions of steep
mountains, the calculated relative humidity may become
unrealistically high. It may also be that the conversion
from reduced Gaussian grid to regular grid may produce
some of the same inconsistencies.

Specific humidity is defined as
%v
%v
Q=
=
%
%a + %v

pv
ew

Relative humidity with respect to ice is another matter,
and requires that you calculate ei (T ) instead of ew (T ).

C.4

UCI assumes 0.5% mixing ratio, giving q = 0.005, and instead of calculating Tv , they calculate the corresponding
average gas constant

C.3

(167)

giving relative humidity

(158)

where p is the pressure array for the grid box bottom
edges, starting at the surface. The model variable is
called ZOFLE.

R = Rd (1 − q) + Rv q ≈ 288

17.67 (T − 273.15)
)
T − 29.65

Try to keep the files in alphabetic order in the dependency
listing. You only need to list module files and common
files, not regular subroutine files since those are checked
only at the last program linking (but you may still include
dependencies if you like).
Adding a new directory
Follow the structure of OSLO_PATH and OSLO_SRC and create your similar directory MY_PATH and list MY_SRC.
The path must be added to ALL_DIRS and perhaps
INCLUDES. At the end of the source listing, add MY_SRC
to ALL_SRC (as is done for OSLO_PATH).

(164)

and from Eq. (162-162) we get
Ra
pv (1 − Q) = pa Q
Rd

C.5

(165)

With the usual approximation that pa  pv , so that
p ' pa , denoting Ra /Rv = ε:
pv = p

Q
ε(1 − Q)

(166)

90

DUST map

Input files for the DUST application (Section 15) can be
generated with the map module written by Charlie Zender. It is located in the directory /div/amoc/d4-4/osloctm/archive_ctm/ctm_tools/map. If you want a newer

Oslo CTM3 user manual

November 6, 2018

version of map you have to contact Zender who develops
map.
The map-module takes several 1x1 or 0.25 x 0.25 degree
files and interpolates them to the desired resolution.
Commands to generate datasets are given in the bds.sh
file in the map-directory.
Having the correct input file, it is important to decide
what kind of erodibility factor you want to use. The program bds.F90 contains commands to set the right erodibility factor using the ncap command. See Section 15 for
more on erodibility factor.
All
input
data
needed
for
running
map
are
available
on
/div/amoc/d4-4/osloctm/archive_ctm/input_files/data.

C.5.1

D.2

New chemistry solver

Libraries needed to run the map mod- Ideally, the chemistry routine should cover both troposphere and stratosphere, but this may be a lot of work
ule

If you want to compile the libraries from scratch (for example on Linux, SGI or HP-UX), you have to compile
Charlies f-module (available on /div/amoc/d4-4/osloctm/archive_ctm/ctm_tools/libraries/zender_f), Charlie’s c-module (similarly on zender_c). In theory: get
the files and write gmake, in practice, this might cause
some pain...
You should have all the compiled library files in one directory, with write access to the directory (you need to
write to this directory when running the map module).
After you have the libraries, you need to set the environment variable MY_LIB_DIR to be this directory.
All Charlie’s programs use the environment variable
NETCDF_INC and NETCDF_LIB, so you might want to set
those before you start doing anything else. See Appendix G.1 for paths to netCDF libraries.

with current schemes. The best solution, which makes
the Oslo CTM3 more flexible (e.g. diagnosing production
and loss terms), is to use the kinetic preprosessor (KPP).

Using KPP would make it easier to diagnose chemical
production and loss terms.
Tropospheric heterogeneous reactions should be revised,
as well as uptake and conversion on tropospheric aerosols.
Sulfur chemistry should be included in the stratosphere.
Probably a microphysics scheme for sulfur aerosols should
be included.

D.4

Uptake
aerosols

and

conversion

on

Uptake of species and conversion on tropospheric aerosols
should be revised. I have started this work, it can be
found in aerosols2fastjx.f90, see Section 12.3.

D.5

J-values

FastJX 7.3 should be implemented. Not very important,
though. If not updating to 7.3, OpenMP should be considered included in CLOUD and then tested saved time
in T159. Will not save a lot, since it is called only every
NMET.

Future work/revisions

During my (Amund) 15-ish years of working with this
model, here are some of the changes I think are needed
for the Oslo CTM3.

D.6
D.1

Dry deposition update

The dry deposition is very crude and should be updated.
I have included a first try of the EMEP dry deposition
scheme (Section 7.2) and would suggest a proper testing
of that.

D.3

The map module needs several libraries, also written
by Charlie Zender. These libraries are in general nonstandard Fortran codes, and are not compiled.

D

• It should be considered to convert all transport arrays also, and do layerwise conversion for horizontal
transport. This is a large job and will make the
Oslo CTM3 quite different to work with (if you are
used to how it is today).

Aerosol sedimentation

Optimisation

The parallel region for chemistry spends a lot of
time moving data from regular arrays (e.g.
size
IPAR,JPAR,LPAR,NPAR) to private arrays (e.g.
size
LPAR,NPAR,IDBLK,JDBLK).

Sedimentation of aerosols should probably be done
as separate process, probably using the moments.
A first try is given in subroutine aerosolsettling in
fallingaerosols.f90. This will require that gravitational
settling in the DUST module will have to be turned off.

I think the following should be changed:
• T should be converted to T_LIJ.
• GAMA should be converted to LIJ, which could make
GAMAB unnecessary.
• Diagnostic array STTTND should be converted.

91

D.7

PSC microphysics

I think it should be considered to replace PSC microphysics (Section 11.3) with an even more detailed scheme,

Oslo CTM3 user manual

November 6, 2018

without the current assumptions which are somewhat unexplained (nonphysical?).
At least, the current 40 size bins makes the code rather
slow. Using kess bins may be an option; tests have shown
that 15 bins may be enough and would save some computational time.

D.8

Upper and lower boundary conditions

The upper and lower boundary conditions must be revised: They are taken from the Oslo 2D model, which is
outdated and not possible to run. The last year available
is 2011. For upper boundary, a zero flux or other treatment may be considered, otherwise such fields could be
generated using e.g.WACCM.
It should be noted that the Oslo 2D model actually uses
zero flux conditions, i.e. it could be possible also in
Oslo CTM3. But it could lead to a larger drift – may
want to have UBC unchanged from year to year. Zero
flux is that no tracer leaves UB; we could do chemistry
in LPAR or set mixrat(LPAR) = mixrat(LPAR-1). For
long-lived species we could use mixing ratio gradient, but
I’m not sure why this would be better than doing chemistry.

D.9

Lightning factors

Note that scaling factors for lightning may not have been
produced for all different resolutions and meteorological
data.

• -auto: Cause all local variables to be allocated on
the run time stack. Default if OpenMP.
• -fpp: Enable use of C preprocessor really only
needed for .F90 files and not .f90 files, but doesn’t
harm compilation of .f files.
• -ftz: Set abnormally low values to zero; i.e. values
below 10−34 will be zero if real*4 is used.
• -mcmodel=large: Allow for large executable file as
we will get with many components and high resolution (medium can be set to large).
• -shared-intel: Libraries provided by intel are
linked dynamically (old intel versions: i-dynamic).
Debug options
• -mp: Maintain floating point precision. This will
reduce optimisations!
• -check bounds: Check array bounds.
• -check uninit: Check whether variables are used
without being initialised first.
• -traceback: Should trace back the error to a specific line in the code.
• -openmp: Enable OpenMP.
Optimizing options
• -inline-forceinline: Inline code (see O2 option).
• -O2: Including global code scheduling5 , software
pipelining6 , predication, and speculation7 . It also
enables inlining8 and removes unreferenced variables.
• -openmp: Enable OpenMP.
• -mp1: As -mp, it tries to maintain floating point
precision, but disables fewer optimisations than -mp
(see below).
Aggressive optimizing options
As for Optimizing options, but instead of -O2, use

E

Compiler options and optimisation

In Makefile, there are three main choices when it comes
to optimisation: OPTS=D for debug options, OPTS=O for
O2 optimisation, and OPTS=A (denoting more aggressive
optimisation) for O3 and a few more additions. O2 is
typically judged to be “safe”, whereas O3 may cause small
inaccuracies to speed up the code. I have never found O3
to fail, and recommend using OPTS=A.
Depending on the machine structure, there are different
compilers available, and they have different options.

• -O3: Enables -O2 optimisations plus more aggressive
optimisations, such as prefetching9 , scalar replacement10 , and loop transformations. Enables optimisations for maximum speed, but does not guarantee
higher performance unless loop and memory access
transformations take place.
In addition use
• -fno-alias: Specifies that aliasing should not be
assumed in the program.
• -fomit-frame-pointer: Disables use of EBP as
a general purpose register so it can be used as a stack
frame pointer.

E.1.2

E.1

portland – pgf90

Linux
For more information, see manual pages for pgf90 (man
pgf90 or pgf90 -help).

On Linux machines the usual compilers are intel and
portland.

Standard options
5 Schedule

instruction so that hardware is effectively used
the processor work all the time, avoids waiting
7 E.g. guesses results of if-tests and starts calculations in
advance
8 Include subroutines directly into code
9 Grabs code and starts calculating instead of waiting for
the calculation to arrive
10 Checks if any calculation can be replaced by constants
6 Makes

E.1.1

intel – ifort

For more information, see manual pages for ifort (man
ifort).
Standard options

92

Oslo CTM3 user manual

November 6, 2018

Table 29: Job script for USIT HPC, part 1.

• -mcmodel=medium: Allow for large executable file.
Necessary to run the Oslo CTM3.

#!/bin/bash
# Job name:
#SBATCH --job-name=testscript
# Project:
#SBATCH --account=account_name
Optimizing options
# Wall clock limit:
#SBATCH --time=1:0:0
• -O2: Including global code scheduling.
# Max memory usage:
• -mp: Enable OpenMP.
#SBATCH --mem-per-cpu=2000M
• -Minline: Pass options to the function inliner.
# Possibly use hugemem nodes
• -Mprefetch: Pass options to the function inliner.
####SBATCH --partition=hugemem
# Number of cores:
Aggressive optimizing options
As for Optimizing options, but instead of -O2, use
#SBATCH --ntasks-per-node=8
• -O3: Enables -O2 optimisations plus more aggressive # Number of nodes:
optimisations.
#SBATCH --nodes=1
• -mp: Enable OpenMP.
# Work disk space
• -Minline=reshape: Pass options to the function in- #SBATCH --tmp=60G
liner. Also reshape arrays that would hinder normal # Set up job environment
inlining.
source /site/bin/jobsetup
• -Mprefetch: Add (don’t add) prefetch instructions # -----------------------------for those processors that support them.
# No need to change this section
Debug options
• -Mbounds: Check array bounds.
• -g: Generate symbolic debug information.

• -Munroll: Unroll loops.

# Must set large stack size (unlimited)
ulimit -s unlimited
# Set ulimit also to unlimited
F HPC
ulimit unlimited
# Print out information about ulimit
You will probably use a high performance computing
ulimit -a
(HPC) facility to run the model. These usually require
that you submit a simulation to a queue system, using
a job script.
Some smaller systems may not have queues, but use the
traditional nohup command. Queue systems usually also
have a possibility to run jobs interactively, meaning that
you can log on to a computer and run the model in your
terminal window. This is the typical choice for testing
your program.

# allocate specified memory to each thread
export THREAD_STACKSIZE=100m
#
ifort: KMP_STACKSIZE
export KMP_STACKSIZE=$THREAD_STACKSIZE
# number of OpenMP threads (number of CPUs)
export OMP_NUM_THREADS= \
$SLURM_NTASKS_PER_NODE

You will have to find a suitable computer or cluster to
run the model.
Some computing clusters use the slurm queue system. An
example can be found in the job file example c3run.job in
your working directory, or the example given in Table 29
and 30.
Basically, the script consists of four steps: First is the setting of number of CPUs and memory usage, second copying and linking to work (scratch) directory, then running
the model and copying the results to somewhere else.
Directory names can be modified, as well as the copying
and linking statements.

It may be that the cluster also have some nodes with
more memory than this, possibly defined by an option
such as hugemem (see top of Table 29).
To have an idea on the total memory required to run the
model, use the UNIX command size:
size osloctm3

It is vital to set the stack size properties, also when you
do not use a queue system.

F.1

You need to be a bit careful when setting the memory
per CPU; the total (number of CPUs times memory per
CPU) should not exceed what is available on a node.

and look at the number bss, which for T42L60 with
tropospheric and stratospheric chemistry is typically between 5 GB and 9 GB depending on which modules you
include.

slurm interactively

While running your program interactively, you can also
use the command top to see the virtual memory used by
your program.

To run the model interactively, use qlogin. You will
also need to specify the account, CPUs etc (see top of
Table 29).

Interactively 8 CPUs

93

Oslo CTM3 user manual

November 6, 2018

Table 30: Job script for USIT HPC, part 2.

F.2

# the PID number (if you want it)
export PID=‘date +"%d%m%y".$$‘

You can check your run using the command squeue.
If you want more info than standard output, you can
e.g. use (put everything on one line):

# --------------------------# Do changes here

Checking your run

squeue -o ’%.8i %16j %8u %.1t %.10M %.4C %.5D
%R’ -S ’-t’ -u USER

# Model dir
export MODELDIR=$HOME/WHERE_THE_MODEL_IS

where USER is your user name.
To check end time (put everything on one line):

# Scenario name (use e.g. job name)
export SCEN=$SLURM_JOB_NAME

squeue -o ’%.8i %16j %8u %9a %.1t %.19e %.10M %.4C %.5D
%.7m %R’ -S ’-t’ -u USER

# Result directory at $HOME
export RESULTDIR=$HOME/DONE.$SCEN

To check time and time left (put everything on one line):

# Copy or link files to work directory:
cp $MODELDIR/myprogram $SCRATCH/

squeue -o ’%.8i %12j %8u %7a %.1t %.10M %.10L %.3C %.3D
%R’ -S ’-e’ -u USER

# Go to work directory
cd $SCRATCH

G

# Run command (using $SCEN)
./myprogram > results.$SCEN

External libraries

So far the only external libraries needed to run the
Oslo CTM3 is netCDF.

# Make the result directory
mkdir $RESULTDIR
# Copy files to result directory
cp results* $RESULTDIR/

G.1

netCDF

To run the model, you need the netCDF libraries, and
their path should be exported as environment variables
NETCDF_INC and NETCDF_LIB. This is done in Makefile,
and the paths are given here for different machines.

# Done

qlogin --account=ACCOUNT_NAME \
--ntasks-per-node=8 \
--mem-per-cpu=2000M
--nodes=1

Abel
Use module load netcdf.intel or similar for other compilers. This sets environment variables used by Makefile.

If your specified amount of memory is too low, or the defined stack size is too low, the program may stop. The latter will usually only produce a segmentation fault, while
the first may produce better info.

G.2

HDF

No need for HDF, but if you are considering it, here is
a note: Using both HDF and netCDF may not work unless they are compiled with the same of compiler version.

Given that the program stops with a segmentation fault,
try setting:

H

Meteorological data

ulimit -s unlimited
So far the Oslo CTM3 only reads ECMWF data produced
at UiO, but can be set up to use data from any GCM, as
long as the required meteorological fields are available.

If that does not help, try to increase the thread stack
size:

Until 2015, the meteorological data were produced with
the Integrated Forecast System (IFS) model at the
ECMWF computing facilities. During 2015, the openIFS
model was installed at the UiO computing facility Abel.
This allowed production of more years of data.

export THREAD_STACKSIZE=300m
export KMP_STACKSIZE=$THREAD_STACKSIZE
These should be set in job scripts, but may be too low
for some applications.
Remember the UNIX command size to get an idea on
the total memory required.

94

The openIFS data are available in netCDF4 format, and
also as old UiO binary format for some years. Standard
read-in is netcdf4.

Oslo CTM3 user manual

November 6, 2018

Table 31: Resolutions available from the ECMWF, UiO binary format
taken from http://www.ecmwf.int/
The UiO binary format provides data in 3 files per day:
Spectral
T42
T63
T106
T159
T319
T511
T799
T1023

Grid
N32
N48
N80
N80
N160
N256
N400
N512

Degrees
2.8125
1.875
1.125
1.125
0.5625
0.351
0.225
0.176

IPAR
128
192
320
320
640
1024
1600
2048

• Files EC*.b01: Spectral data.
• Files EC*.b02: 3D data on Gaussian grid.
• Files EC*.b03: Surface (2D) data.

JPAR
64
96
160
160
320
512
800
1024

All data for one meteorological time step is written before
the next time step is written, allowing a sequential read.
This is rather quick, since when continuing read-in for
a time step always continues where you left off in the
previous time step. Spectral data are converted using
a fast Fourier transform.

At CICERO, the data are stored at /div/pdo/metdata/,
and as the catalog names indicate, there are data from
different cycles of IFS, and also data from the openIFS
model.
Note that the data must be copied to the computer system where the Oslo CTM3 is to be run. At CICERO we
have put most of what is needed at /div/amoc/d4-4/osloctm/ and /work/projects/cicero/ctm_input.

H.1

ECMWF meteorological data

The IFS/openIFS data are 36-hour forecasts, with
12 hours spin-up, starting from reanalyses fields at
12 UTC the day before. Since cycle 36r1, the reanalyses
have been from ERA-Interim, but before that the IFS
model was started from operational analyses.
Typical ECMWF horizontal resolutions are listed in Table 31. We use T159/N80 in openIFS, while the older
IFS cycle 36r1 used T319/N160. The IFS and openIFS
models are usually run in Gaussian reduced grids, but at
least the IFS model has previously been used to put out
data on regular grids.
Conversion from reduced Gaussian grid to regular Gaussian grid is done with the GRIB API, either at the
ECMWF or locally.

netCDF4 format
In the netCDF4 format, all meteorological fields are given
on one file per meteorological time step. This means that
there are 8 files per day; 2790 files per year. They have
therefore been grouped in directories for each month.
This is the quickest way to access all data for a time step,
so the netCDF will not have to locate a part of a 3D or
4D array, but can access the fields almost sequential.

H.1.2

The meteorological fields, including their names, details
and ID numbers (the UiO format IDs) are given in Table 35–37 (tables located after references). The netCDF4
files also contain info about the grid, which are also listed
in the tables.
IFS and openIFS generally use the local table 2 version 128 for naming and numbering of output variables.
The UiO format IDs generally follow this table, with the
exception of the extra fields put out.
ECMWF uses GRIB output format, so their result files
have to be converted to our format. This is done locally
at CICERO/UiO, and currently involves creating UiO binary format files, which are then converted to netCDF4.
A short description on how to do this is described in Appendix H.1.3.

H.1.3
H.1.1

File format

Available fields

Producing openIFS data

At Abel, the openIFS model was set up in 2015. As
the IFS model before it, it includes a special branch that
diagnoses the convective mass fluxes and 3D precipitation
fluxes (convective and large scale).

Until 2015, the meteorological data were provided in a binary little-endian format, the UiO binary format.
Since late 2015, the meteorological data are available in
netCDF4 format, which is now the standard read-in for
Oslo CTM3.

To run the openIFS model, it must be compiled, and at
Abel it can be loaded using module:

You define which format to use by the metTYPE in
LxxCTM.inp:
• ECMWF_oIFSnc4: OpenIFS generated in netCDF4
format.
• ECMWF_oIFS: OpenIFS generated in UiO binary format.
• ECMWF_IFS: IFS data generated in UiO binary format.

module load openifs

However, to use the UiO binary format you need to
use a different read-in, which can be found in metdata_ecmwf_uioformat.f90. The Oslo CTM3 should tell
you if that is the case.

In the openifs/38r1v04/ directory (or openifs/40r1v1/ for
cycle 40r1), located in /cluster/software/VERSIONS/,
you find the subdirectory osloctm. In principle this
should be copied to your own suitable directory, but in
my opinion the files should be slightly modified. Such
modified files can be found in the repository directory
utilities/generateOpenIFS.
There are four job scripts that you will use, and one input
file:
• getEIdata.job

95

Oslo CTM3 user manual

•
•
•
•

November 6, 2018

node, since I found it most effective (less queue, still fairly
fast).

runInterpolation.job
runOpenIFS.job
runECgrib2CTM.job
initrun

Interpolated fields will be located in the directory
$WORKDIR/$RESOL/.

The scripts should be run separately, although it is possible to let one start the next. That has been tested and
may cause problems.

Interpolating one month of data usually takes less than
15 minutes. I suggest running at least 3 months at a time.
Run the openIFS
I have set up runOpenIFS.job to use 16 CPUs on one
node, since I found it most effective. Running one month
usually takes about 2 hours. 32 CPUs on several nodes is
usually not much faster; it is very often slower.

In initrun, you define the resolution and date to retrieve.
It should look like this for T159L60N80 resolution:
# Experiment id (has to stay the same from
# interpolation to running openIFS.
EXPVER=b0z5
# Resolution
RESOL=159
# Number of vertical levels
LEVELS=60
# reduced GG to regular GG
NGG=80
# for openIFS l_2 if higher resolution is used
GRID_TYPE="l_2"

Output
will
be
located
$WORKDIR/$RESOL/.

in

the

directory

Convert to UiO binary format
runECgrib2CTM.job runs on 1 CPU, and takes a bit of
time. It reads GRIB files and converts to UiO binary
format.
Output
will
be
located
in
$WORKDIR/OSLOCTM/$RESOL.

# start date YYYYMMDD
SDATE=20150801
# end date YYYYMMDD
EDATE=20150831
# TIME is given as a list of times separated
# by / i.e. 00/12
TIME=12
# TIMESTEP timestep to run openIFS
TIMESTEP=1200.0
# FCLENGTH is the FORECAST LENGTH (hours) to
# run openIFS
FCLENGTH=36

the

directory

Processing one month usually takes about 2–3 hours.
Note that the file day number changes from openIFS to
CTM fields, which is because the openIFS was started at
noon and we only use data for the next day.
Convert to netCDF4
In the repository utilities, there is a fortran program
available which converts UiO binary format to netCDF4.
The program is available at utilities/fortran/ec2netcdf4/,
and at the top of the source code you find info on how to
compile it.

EXPVER is experiment version you may alter, however, it
has to stay the same from interpolation to running the
OpenIFS.

You must specify where the UiO binary files are. After
compiling the program, you run it using

TIME is the start hour of the run, which is noon. If you
specify other values also, you will get more data. This is
not necessary.

ec2ncdf4 YYYY

where YYYY is the year to process. Output data will be
placed in the directory where you run the program.

To use coarser resolution such as RESOL=42, you need to
set GRID_TYPE=_2.
The job scripts needs an environment variable WORKDIR,
which on Abel is your work directory. These are set up
when you load openIFS using module.

H.1.4

Retrieve analyses from ECMWF
To retrieve restart fields for openIFS, you must
have a registered account at ECMWF, see software.ecmwf.int/wiki/display/OIFS/ for more on this.

Producing IFS data

Since 2015 we started using the openIFS model for producing meteorological data, but here is a very short description of how IFS retrieval worked.

The getEIdata.job will put retrieved reanalysis fields in
the directory $WORKDIR/EI/. Retrieving one month
of data usually takes less than one hour. It is wise to
download several months of data before doing the next
steps.
Important
ECMWF wants you to download no more than one month
of data in each job.

The IFS model is run through web interface at the
ECMWF, where you select the wanted resolution.
After that the archived data are retrieved in the same
or lower resolution (it is interpolated at ECMWF). Note
that the native resolution usually is reduced Gaussian,
and we need to specify we need regular Gaussian data.
This is a user choice in the retrieval of data from the
MARS archive at ECMWF.
The files retrieved from ECMWF are on GRIB format,
from which the UiO binary format files are retrieved locally at UiO.

Interpolate to specified resolution
I have set up runInterpolation.job to use 12 CPUs on one

96

Oslo CTM3 user manual

H.2

Meteorological
Oslo CTM3

November 6, 2018

fields

in

the H.3.1 Read-in routine

The Oslo CTM3 puts the meteorological data into arrays,
where some are used directly, and others are converted
to the suitable units. As already explained, the variable
names are listed and described in Table 35–37 (tables
located after references).
Some meteorological fields are described more closely
here.

H.2.1

Convective mass flux

The updraft mass flux (CWETE) and downdraft mass flux
(CWETD, which is negative downwards) is given on halflevels, meaning they are values valid at the bottom of
each grid box.
Their original units are accumulated kg/(m2 s), and since
the flux up or down at the surface it is always zero, the
first level stored is for layer 2.

More special is the entrainment into updrafts CENTU and
into downdrafts CENTD. These are built from detrainment
rates, which are given as accumulated kg/(m2 s) per grid
height, so the units are accumulated [kg/(m3 s)]. Detrainment rates are given for full-levels, i.e. grid center values.
To convert to detrainment fluxes, these rates are multiplied with grid height and area and divided by the time
span. Entrainment (E) is build from the mass flux (F )
in at bottom and out of top and detrainment (D) by
considering incoming versus outgoing air:
(169)

Another way to look at this is similarly to the IFS documentation
dF
dz = E(L) − D(L)
(170)
dz
which gives the same result
F (L + 1) − F (L) = E(L) − D(L)

Trouble shooting

When you log on to the computers, you may experience
a few problems. Do not hesitate to ask the experienced
Oslo CTM3 users about this, they have probably been
there!
One of the first problem you will run into is the compiling.
You choose the compiler in Makefile, and it is typically
intel.
The compilers may not be loaded by default, you may
need to load them manually. Ask the experienced users
or see the user manual for the computing facility.

ulimit -s unlimited
If the program says “OpenMP cannot create thread”, it
is often a stack size problem, but it can also be problems with arrays not declared correctly (e.g. in arguments
etc.). Look in parallel regions first.
Also, the program may just say “Segmentation fault” if
you have set the KMP_STACKSIZE too low.
-O3 floating point exception
If you compile a loop where one index of the loop is zero
(set by parameter), the compiling may fail in the Optimizer loop nesting. Can usually be solved by better
programming on the loop.
To stop when array is out of bounds

(171)

You force the program to stop at array out of bounds by
setting the environment variable

Equation (169) applies for downdrafts as well, since
the downdraft mass fluxes are negative (total mass in:
−F (L + 1) + E, total mass out: −F (L) − D).

H.3

I

The next problem is probably that the model crashes, so
you should look up Appendix F for environment variables
you need to set; OMP_NUM_THREADS and KMP_STACKSIZE
(for intel). And you also need to set

Conversion to kg/s is done by dividing by the time span
(3 hours for ECMWF IFS and openIFS) and multiplying
with grid box area.

F (L) + E(L) = F (L + 1) + D(L)

There is no read-in available for other meteorological
data, so you have to make your own. Use the ECMWF
read-in as starting point.

export F90_BOUNDS_CHECK_ABORT=YES
Strange things happen
If suddenly very strange messages occur when compiling,
there may have been e.g. updates to compilers. Clear the
compilation (gmake clean) and compile all from start.

GCM meteorological data

If you want to set up the model to use meteorological
data from a GCM, you need the correct hybrid coordinates, and you need to make a new routine reading the
data. Note that if the GCM puts out spectral data, the
Oslo CTM3 routines for converting to grided data may
not be suitable, so it may be best to use gridded data
directly.
Also note that for the boundary layer heightBLH, the retrieval of the next time step value (BLH_NEXT) may be
difficult if the data are structured in a bad way (but not
impossible, of course).

97

Negative mass after mp-splitting
This is not trivial. Locate the call to check_btt in pmain
and insert similar calls after each process.
If you are using non-ECMWF meteorological data, it may
be that convection creates a very large GAMACB (vertical
subsidence due to convective updrafts), so that vertical
advection (DYN2W_OC) transports too much out of a grid
box (Lifshitz-criterion may not be well defined). This
may mean that the convective mass flux is not good. To
continue using the meteorological data as is, a solution

Oslo CTM3 user manual

November 6, 2018

J

is to increase the number of advection steps NADV. See
Section 6.2 for a possible work-around.

Chemical reactions

Reactions taken into account in the Oslo CTM3 are listed
here, separated into photolytic reactions, bi-molecular reactions, tri-molecular reactions, and heterogeneous reactions.
Listed are the JPL (Sander et al., 2006) reaction numbers,
that consist of a letter followed by number (e.g. A1),
and the IUPAC (Atkinson et al., 2010) numbers which
use more letters to describe the reaction. The numbering
should be evident once you look at JPL/IUPAC.
If reaction data are provided by both JPL and IUPAC ,
the number in italics is not used. In the tables below, the
JPL/IUPAC values are listed as ’Reference’ or ’Ref.’.
Sometime during 2015-2016, I changed the reaction
names in Oslo CTM3 so that reaction of A + B is called
r_a_b. They are listed in the file chem_oslo_rates.f90.

J.1

Photolytic reactions

Tropospheric chemistry module
Reaction
Ox
O3 + hν −→ O2 + O(3 P)
O3 + hν −→ O2 + O(1 D)
HOx
H2 O2 + hν −→ 2OH
NOx
NO2 + hν −→ NO + O(3 P)
NO3 + hν −→ NO2 + O(3 P)
N2 O5 + hν −→ NO2 + NO3
HNO3 + hν −→ NO2 + OH
HO2 NO2 + hν −→ NO2 + HO2
Organic
CH2 O + hν −→ H + HCO
CH2 O + hν −→ H2 + CO
CH3 CHO + hν −→ CHO + CH3
CH3 O2 H + hν −→ OH + CH3 O
CH3 COCH2 CH3 + hν −→
CH3 CO + C2 H5 O2
CH3 COCOCH3 + hν −→ 2 CH3 CO
HCOHCO + hν −→ CO + CH2 O
CH3 COHCO + hν −→
CO + CH3 CHO
CH3 COCH3 + hν −→
CH3 CO + CH3

Reference
A1/
A2/
B3/
C1/PNOx4
C2a/PNOx5
C5/PNOx7
C7/PNOx2
C8a+b/PNOx3
D1/P1
D1/P1
D2/P3
D7/P12
/P8
use D18/P6
D17/P4
D18/P6
/0.7P8

Stratospheric chemistry module
98

Oslo CTM3 user manual

November 6, 2018

Reaction
Reference
Ox
O3 + hν −→ O2 + O(3 P)
A2/POx1
O3 + hν −→ O2 + O(1 D)
A2/POx1
O2 + hν −→ 2 O(3 P)
A1/POx2
HOx
H2 O + hν −→ OH + H
B2/PHOx1
H2 O2 + hν −→ 2OH
B3/PHOx2
NOx
NO + hν −→ N + O
N/A
NO2 + hν −→ NO + O(3 P)
C1/PNOx4
NO3 + hν −→ NO2 + O(3 P)
C2a/PNOx5
NO3 + hν −→ NO + O2
C2b/PNOx5
N2 O + hν −→ N2 + O(1 D)
C3/PNOx6
C5/PNOx7
N2 O5 + hν −→ NO2 + NO3
C7/PNOx2
HNO3 + hν −→ NO2 + OH
HO2 NO2 + hν −→ NO2 + HO2
C8a/PNOx3
HO2 NO2 + hν −→ NO3 + OH
C8b/PNOx3
Organic
CH2 O + hν −→ H + HCO
D1/P1
D1/P1
CH2 O + hν −→ H2 + CO
CH3 O2 H + hν −→ CH3 O + OH
N/A
ClOx
Cl2 + hν −→ Cl + Cl
F1/PCl11
ClO + hν −→ Cl + O(3 P )
F2/
OClO + hν −→ O(3 P ) + ClO
F4/PCl3
Cl2 O2 + hν −→ ClOO + Cl
F7/PCl5
OHCl + hν −→ OH + Cl
F14a/PCl2
F18/PCl10
ClONO2 + hν −→ Cl + NO3
CF2 Cl2 (CFC12) + hν −→ Clx
/PCl15
CFCl3 (CFC11) + hν −→ Clx
PCl16
CHF2 Cl (HCFC22)+ hν −→ Clx
/ PCl14
CH3 Cl + hν −→ Clx
/PCl12
CH3 CCl3 + hν −→ Clx
/PCl20
CF3 CHCl2 (HCFC123) + hν −→ Clx
F42/PCl22
CF2 ClCFCl2 (CFC113) + hν −→ Clx
/PCl23
CF2 ClCF2 Cl (CFC114)+ hν −→ Clx
/PCl24
CF3 CF2 Cl (CFC115) + hν −→ Clx
/PCl25
CH3 CFCl2 (HCFC141b) + hν −→ Clx
F45/PCl19
CH3 CF2 Cl (HCFC142b) + hν −→ Clx F46/PCl18
BrOx
Br2 + hν −→ Br + Br
G1/PBr9
HBr + hν −→ H + Br
G2/PBr1
BrO + hν −→ Br + O
G3/PBr3
G6/PBr2
OHBr + hν −→ OH + Br
BrONO2 + hν −→ BrO + NO2
G9/PBr7
BrCl + hν −→ Br + Cl
G10/PBr8
CH3 Br + hν −→ Bry
G12/PBr10
CF2 ClBr (Halon-1211) + hν −→ Bry
G25/PBr12
CF3 Br (Halon-1301) + hν −→ Bry
G26/PBr11

J.2

Reaction
O(1 D)
O(1 D) + O2 −→ O(3 P) + O2
O(1 D) + H2 O −→ 2OH
O(1 D) + N2 −→ O(3 P) + N2
HOx
O3 + OH −→ O2 + HO2
OH + H2 −→ H2 O + H
OH + HO2 −→ H2 O + O2
OH + H2 O2 −→ H2 O + HO2
O3 + HO2 −→ OH + 2O2
HO2 + HO2 −→ H2 O2 + O2
HO2 + HO2 + M −→
H2 O2 + O2 + M
NOx
O(3 P) + NO2 −→ NO + O2
OH + HNO3 −→ NO3 + H2 O
NO + HO2 −→ NO2 + OH
OH + HO2 NO2 −→
NO2 + O2 + HO2
O3 + NO −→ NO2 + O2
NO + NO3 −→ 2NO2
O3 + NO2 −→ NO3 + O2
NO2 + NO3 −→
NO + NO2 + O2
Organic
O3 + C2 H4 −→ HCHO
+ 0.12HO2 + 0.44CO
O3 + C3 H6 −→ 0.25HO2
+ 0.5(HCHO + CH3 CHO)
+ 0.15OH + 0.03CH3 O
+ 0.31CH3 + 0.07CH4
+ 0.4CO
OH + CH4 −→ CH3 + H2 O
OH + C2 H6 −→
C2 H5 O2 + H2 O
OH + CH3 OH −→
CH3 O/CH2 OH + H2 O
−→ 0.15 (CH3 + HO2 + H2 O)
−→ 0.85 (CH2 O + HO2 + H2 O)

Bi-molecular reactions

Tropospheric chemistry module
99

Ref.
A3
A6
A7
B6
B7
B10
B11
B12
B13
B13
C1
C9
C12
C10/R4017
C20
C21
C22
C23
D8
Ox_VOC6/

D11
D21
JPL17

Oslo CTM3 user manual

OH + C3 H8 −→
C3 H7 O2 + H2 O
OH + C4 H10 −→
C4 H9 O2 + H2 O
OH + C6 H14 −→
C6 H13 O2 + H2 O
OH + m-Xylene −→ 0.6AR1
OH + Isoprene −→ ISOR1
OH + HCHO −→ CHO + H2 O
CH3 O2 + HO2 −→
CH3 O2 H + O2
CHO + O2 −→ HO2 + CO
CH3 O + O2 −→ HO2 + HCHO
CH3 O2 + CH3 O2 −→
0.4(2CH3 O + O2 )
+ 0.6HCHO
OH + CH3 O2 H −→
CH3 O2 + H2 O
OH + CH3 O2 H −→
HCHO + OH + H2 O
OH + AR2 −→ AR3
OH + CH3 COCH2 CH3 −→
CH3 COCH(O2 )CH3
OH + ISOK −→
ISOR2
OH + HCOHCO −→
fa45 (CHO + CO)
+ fb45 (CH3 CO)
+ fc45 (2CO + HO2 )
OH + RCOHCO −→
CH3 CO + CO
OH + CH3 COCH3 −→
H2 O + CH3 COCH2
O3
−→CH3 COCH2 (O2 )
OH + CH3 CHO −→
CH3 CO + H2 O
OH + PAN −→ HCHO + NO2
+ CO2 + H2 O
NO + CH3 O2 −→
fa48 (NO2 + CH3 O)
NO + C2 H5 O2 −→ fa49 (NO2
+ (1−fb49 )(HCHO + CH3 )
+ fb49 (HO2 + CH3 CHO))
NO + C3 H7 O2 −→ fa50 (NO2
+ (1-fb50 (CH3 CHO + CH3 O2 )
+ fb50 (HO2 + CH3 COCH3 ))
NO + C4 H9 O2 −→ fa51 (NO2
+ (1−fb51 (CH3 CHO
+ C2 H5 O2 )
+ fb51 (HO2
+ CH3 COCH2 CH3 ))
NO + C6 H13 O2 −→ fa52 (NO2
+ C4 H9 O2 + CH3 CHO)
NO + AR1 −→ NO2 + HO2
+ AR2 + RCOHCO
NO + AR3 −→ NO2 + HO2
+ HCOHCO + RCOHCO
NO + ISOR1 −→ fa55 (NO2 + HO2
+ ISOK + HCHO)
1.5NO + ISOR2 −→
1.5NO2 + 0.67HO2
+ 0.43HCHO + 0.67RCOHCO
+ 0.33CH3 CO + 0.33CH3 CHO
NO + CH3 COCH(O2 )CH3 −→
fa57 (NO2 + HO2
+ CH3 COCOCH3 )
NO + CH3 COCH2 (O2 ) −→
NO2 + HO2 + CH3 COCHO
NO + CH3 CH(O2 )CH2 OH −→
NO2 + HCHO
+ CH3 CHO + HO2
NO3 + CH3 CHO −→
HNO3 + CH3 CO
CH3 CO + O2 −→
CH3 COO2
CH3 COO2 + NO −→ CH3
+ NO2 + CO2

November 6, 2018

CH3 COO2 + CH3 O2 −→
CH3 O + CH3 + CO2 + O2
CH3 COO2 + CH3 O2 −→
HCHO + CH3 COOH + O2
CH3 O2 + C2 H5 O2 −→
0.5(CH3 O
+ (1-fb68 )(HCHO + CH3 )
+ fb68 (HO2 + CH3 CHO))
+ 0.25(HCHO + CH3 CHO)
CH3 O2 + C3 H7 O2 −→ 0.5(CH3 O
+ (1−fb69 )(CH3 CHO
+ CH3 O2 )
+ fb69 (HO2 + CH3 COCH3 ))
+ 0.25(HCHO + CH3 COCH3 )
CH3 O2 + C4 H9 O2 −→ 0.5(CH3 O
+ (1−fb70 )(CH3 CHO
+ C2 H 5 O 2 )
+ fb70 (HO2 +
CH3 COCH2 CH3 ))
+ 0.25(HCHO
+ CH3 COCH2 CH3 )
CH3 O2 + C6 H13 O2 −→
CH3 O + CH3 CHO + C4 H9 O2
CH3 O2 + CH3 COCH2 (O2 ) −→
CH3 O + CH3 COCHO
+ HCHO + HO2
CH3 O2 + CH3 CH(O2 )CH2 OH −→
CH3 O + CH3 CHO
+ HCHO + HO2
CH3 O2 + CH3 COCH(O2 )CH3 −→
CH3 O + HO2 + CH3 COCOCH3
CH3 O2 + ISOR1 −→
HCHO + CH3 O + HO2 + ISOK
CH3 O2 + ISOR2 −→
RCOHCO + CH3 O + HO2
HO2 + CH3 O(O2 ) −→
CH3 O2 H + O2
HO2 + C2 H5 O2 −→ CH3 O2 H
HO2 + C3 H7 O2 −→ CH3 O2 H
HO2 + C4 H9 O2 −→ CH3 O2 H
HO2 + C6 H13 O2 −→ CH3 O2 H
HO2 + CH3 COCH2 (O2 ) −→
CH3 O2 H
HO2 + CH3 CH(O2 )CH2 OH −→
CH3 O2 H
HO2 + CH3 COCH(O2 )CH3 −→
CH3 O2 H
HO2 + ISOR1 −→ CH3 O2 H
HO2 + ISOR2 −→ CH3 O2 H

D22/HOx_VOC6
/HOx_VOC7

NA
NA
HOx_VOC8
D14
D35
D44
D46
D50

D16
D16
NA
HOx_VOC20
HOx_VOC2/
HOx_VOC16

HOx_VOC18
HOx_VOC19

HOx_VOC12
HOx_VOC44
D51

D57/ROO_2

ROO_4
use ROO_4

use ROO_4
use D51
use D51
use D51
use D51

use D51

use D51
use D51

D41
R_Oxygen11
D59

100

D52/ROO_23
D52/ROO_23
ROO_41

use ROO_41

use ROO_41

use ROO_41
ROO_24

use ROO_41

?
use ROO_41
use ROO_41
HOx_VOC54
D36
D36
D36
D36
D36/HOx_VOC57
use D36
use D36
use D36
use D36

Oslo CTM3 user manual

November 6, 2018

Reaction
Ox
O(3 P) + O3 −→ O2 + O2
O(1 D)
O(1 D) + N2 O −→ N2 + O2
O(1 D) + N2 O −→ NO + NO
O(1 D) + H2 O −→ OH + OH
O(1 D) + CH4 −→ OH + CH3
O(1 D) + CH4 −→ HCHO + H2
O(1 D) + H2 −→ OH + H
O(1 D) + N2 −→ O(3 P) + N2
O(1 D) + O2 −→ O(3 P) + O2
O(1 D) + HCl −→ Cl + OH
O(1 D) + CFCl3 −→ Clx
O(1 D) + CF2 Cl2 −→ Clx
O(1 D) + CHCl2 CF3 −→ Clx
O(1 D) + CH3 CCl2 F −→ Clx
O(1 D) + CH3 CClF2 −→ Clx
HOx
O(3 P) + OH −→ O2 + H
O(3 P) + HO2 −→ OH + O2
H + O3 −→ OH + O2
H + HO2 −→ 2OH
H + HO2 −→ O + H2 O
H + HO2 −→ H2 + O2
OH + O3 −→ HO2 + O2
OH + H2 −→ H2 O + H
OH + OH −→ H2 O + O(3 P)
OH + HO2 −→ H2 O + O2
OH + H2 O2 −→ H2 O + HO2
HO2 + O3 −→ OH + 2O2
HO2 + HO2 −→ H2 O2 + O2
HO2 + HO2 + M −→
H2 O2 + O2 + M
NOx
O(3 P) + NO2 −→ NO + O2
OH + HNO3 −→ H2 O + NO3
OH + HO2 NO2 −→
O2 + H2 O + NO2
NO + HO2 −→ NO2 + OH
N + O2 −→ NO + O(3 P)
N + NO −→ N2 + O(3 P)
O3 + NO −→ NO2 + O2
NO + NO3 −→ 2NO2
O3 + NO2 −→ NO3 + O2
NO2 + NO3 −→
NO + NO2 + O2
Organic
O(3 P) + HCHO −→ HCO + OH
OH + CH4 −→ CH3 + H2 O
OH + HCHO −→ H2 O + HCO
OH + CH3 OH −→
CH3 O/CH2 OH + H2 O
−→ CH2 O + HO2 + H2 O
OH + CH3 O2 H −→
0.7 (CH3 O2 + H2 O)
OH + CH3 O2 H −→
0.3 (CH2 O + OH + H2 O)
HO2 + CH3 O2 −→ CH3 OOH + O2
CH3 O2 + NO −→ CH3 O + NO2
ClOx
O(3 P) + ClO −→ Cl + O2
O(3 P) + OClO −→ ClO + O2
O(3 P) + HCl −→ OH + Cl
O(3 P) + ClONO2 −→ NO3 + ClO
OH + ClO −→ HO2 + Cl
OH + ClO −→ HCl + O2
OH + HCl −→ H2 O + Cl
OH + OHCl −→ H2 O + ClO
OH + ClONO2 −→ OHCl + NO3
OH + CH3 Cl −→ Clx
OH + CHF2 Cl −→ Clx
OH + CH3 CCl3 −→ Clx
OH + CH3 CCl2 F −→ Clx
OH + CH3 CClF2 −→ Clx
OH + CHCl2 CF3 −→ Clx
HO2 + Cl −→ HCl + O2
HO2 + Cl −→ OH + ClO
HO2 + ClO −→ OHCl + O2

Stratospheric chemistry module

101

Ref.
A1
A8
A7
A6
A11,B
A11
A5
A7
A3
A12
A19
A20
A42
A36
A37
B1
B2
B4
B5
B5
B5
B6
B7
B9
B10
B11
B12
B13
B13

C1
C9
C10
C12
C16
C18
C20
C21
C22
C23

D4
D11
D14
JPL17

D16
D16
D35
D51
F1
F2
F4
F6
F10
F10
F12
F13
F15
F16
F22
F26
F27
F28
F33
F45
F45
F46

Oslo CTM3 user manual

NO + OClO −→ NO2 + ClO
Cl + O3 −→ ClO + O2
Cl + H2 −→ HCl + H
Cl + H2 O2 −→ HCl + HO2
Cl + CH4 −→ HCl + CH3
Cl + HCHO −→ HCl + HCO
Cl + CH3 OH −→
CH2 OH + HCl
−→ CH2 O + HO2 + HCl
Cl + ClONO2 −→ 2Cl + NO3
ClO + NO −→ NO2 + Cl
ClO + CO −→ Cl + CO2
BrOx
O(3 P) + BrO −→ Br + O2
O(3 P) + HBr −→ OH + Br
OH + Br2 −→ OHBr + Br
OH + BrO −→ HBr + O2
OH + BrO −→ Br + HO2
OH + HBr −→ H2 O + Br
OH + CH3 Br −→ Bry
HO2 + Br −→ HBr + O2
HO2 + BrO −→ OHBr +O2
Br + O3 −→ BrO + O2
Br + H2 O2 −→ HBr + HO2
Br + HCHO −→ HBr + CHO
BrO + O3 −→ Br + 2O2
BrO + NO −→ NO2 + Br
BrO + ClO −→ Br + OClO
BrO + ClO −→ Br + ClOO
BrO + ClO −→ BrCl + O2
BrO + BrO −→ 2Br + O2
BrO + BrO −→ Br2 + O2

J.3

November 6, 2018

F48
F52
F53
F54
F59
JPL17
JPL17

Reaction
Ox
O(3 P) + O2 + M −→ O3 + M
HOx
H + O2 + M −→ HO2 + M
OH + OH + M −→
H2 O + O(3 P) + M
NOx
O(3 P) + NO2 + M −→ NO3 + M
OH + NO2 + M −→ HNO3 + M
NO2 + HO2 + M −→ HO2 NO2 + M
NO2 + NO3 + M −→ N2 O5 + M
Organic
OH + CO + O2 −→
HO + CO2
ClOx
Cl + O2 + M −→ ClOO + M
ClO + NO2 + M −→ ClONO2 + M
ClO + ClO + M −→ Cl2 O2 + M
BrOx
BrO + NO2 + M −→ BrONO2 + M

F85
F111
F114
G1
G2
G5
G6
G6
G7
G8
G24
G25
G31
G32
G34
G38
G39
G41
G41
G41
G42
G42

Tri-molecular reactions

Tropospheric chemistry module
Reaction
Ox
O(3 P) + O2 + M −→ O3 + M
HOx
OH + OH + M −→
H2 O2
HO2 + HO2 + M −→
H2 O2 + O2 + M
NOx
OH + NO2 + M −→ HNO3 + M
NO2 + HO2 + M −→
HO2 NO2 + M
NO2 + NO3 + M −→
N2 O5 + M
HO2 NO2 + M −→
HO2 + NO2 + M
N2 O5 + M −→
NO2 + NO3 + M
Organic
OH + CO + O2 −→
HO2 + CO2
OH + C2 H4 + M −→
CH3 + HCHO + M
OH + C3 H6 + M −→
CH3 CH(O2 )CH2 OH + M
CH3 + O2 + M −→
CH3 O2 + M
CH3 COO2 + NO2 + M −→
PAN + M
PAN + M −→
CH3 COO2 + NO2 + M

Stratospheric chemistry module

Ref.

J.4

Ref.
A1
B1
B2

C2
C4
C5
C6
HOx_VOC10

F1
F8
F10
G2

Instantaneous reactions

Stratospheric chemistry module
Reaction
CH3 + O2 −→ CH3 O2
HCO + O2 −→ CO + HO2
CH3 O + O2 −→ CH2 O + HO2

J.5

Ref.
D42/R_Oxygen1
D44/R_Oxygen10
D46/R_O1

Thermal decomposition reactions

Stratospheric chemistry module
Reaction
HO2 NO2 −→ HO2 + NO2
N2 O5 −→ NO2 + NO3
ClOO −→ Cl + O2
Cl2 O2 −→ ClO + ClO

B2

JPL Ref.
T3-1.2
T3-1.4
T3-1.11
T3-1.14

See bi-molecular
C4
C5

J.6

Heterogeneous reactions

C6

Tropospheric chemistry module
Reaction
N2 O5 + aq(aerosol) −→ 2HNO3 (aq)

NOx17
NOx32

HOx_VOC10
D5
/HOx_VOC5
D3/R_Oxygen1
D12
ROO_15

102

Ref./CTM
NA/PR42HET

Oslo CTM3 user manual

November 6, 2018

Stratospheric chemistry module
See the code in chem_oslo_rates.f90 for full references.
Reaction
CTM
On PSCs
N2 O5 + HCl (s) −→ ClNO2 + HNO3 (s)
ACPAR
ADPAR
N2 O5 + H2 O (s) −→ 2HNO3 (s)
ClONO2 + HCl (s) −→ Cl2 + HNO3 (s)
BCPAR
BDPAR
ClONO2 + H2 O (s) −→ HOCl + HNO3 (s)
HOCl + HCl (s) −→ Cl2 + H2 O (s)
ECPAR
BrONO2 + H2 O (s) −→ OHBr + HNO3 (s) FDPAR
FCPAR
BrONO2 + HCl (s) −→ BrCl + HNO3 (s)
OHBr + HCl (s) −→ BrCl + H2 O (s)
GCPAR
ClONO2 + HBr (s) −→ BrCl + H2 O (s)
BHPAR
On sulfuric aerosols
N2 O5 + HCl −→ ClNO2 + HNO3
ACPARBK
N2 O5 + H2 O −→ 2HNO3
ADPARBK
BCPARBK
ClONO2 + HCl −→ Cl2 + HNO3
ClONO2 + H2 O −→ HOCl + HNO3
BDPARBK
HOCl + HCl −→ Cl2 + H2 O
ECPARBK
FDPARBK
BrONO2 + H2 O −→ OHBr + HNO3
BrONO2 + HCl −→ BrCl + HNO3
FCPARBK
GCPARBK
OHBr + HCl −→ BrCl + H2 O
For reactions on PSCs, the species marked (s) stay on the
particle.

K

Relationships between process sensitivity in
HadGEM3-UKCA and inter-model variation
from AeroCom Phase II (Kipling et al., 2016).
Evaluation of the aerosol vertical distribution in
global aerosol models through comparison against
CALIOP measurements: AeroCom phase II results
(Koffi et al., 2016).
Evaluation of observed and modelled aerosol lifetimes
using radioactive tracers of opportunity and an ensemble of 19 global models (Kristiansen et al., 2016).
Extensive release of methane from Arctic seabed west
of Svalbard during summer 2014 does not influence
the atmosphere (Myhre et al., 2016).
Comparison of aerosol optical properties above
clouds between POLDER and AeroCom models over
the South East Atlantic Ocean during the fire season
(Peers et al., 2016).
Radiative forcing from aircraft emissions of NOx:
model calculations with CH4 surface flux boundary
condition (Pitari et al., 2016).

Peer-reviewed papers

Here you find the peer-reviewed papers of
Oslo CTM3 and Oslo CTM2. and a few older
Oslo CTM1 papers at the end.

Multi-model evaluation of short-lived pollutant distributions over East Asia during summer 2008
(Quennehen et al., 2016).

K.1

The effect of future ambient air pollution on human
premature mortality to 2100 using output from the
ACCMIP model ensemble (Silva et al., 2016).

2017 – 6 papers

Regional temperature change potentials for short- Global and regional radiative forcing from 20 % relived climate forcing based on radiative forcing from ductions in BC, OC and SO4 - an HTAP2 multimultiple models (Aamaas et al., 2017).
model study (Stjern et al., 2016).
Investigation of global particulate nitrate from the
AeroCom phase III experiment (Bian et al., 2017).
Emission metrics for quantifying regional climate impacts of aviation (Lund et al., 2017a).
Sensitivity of black carbon concentrations and climate impact to aging and scavenging in OsloCTM2M7 (Lund et al., 2017b).

K.3

2015 – 5 papers

Multi-model simulations of aerosol and ozone radiaAMAP Assessment 2015: Methane as an Arctic
tive forcing due to anthropogenic emission changes
climate forcing (Arctic Monitoring and Assessment
during the period 1990-2015 (Myhre et al., 2017).
Programme (AMAP), 2015).
Aerosols at the poles: an AeroCom Phase II multiCurrent model capabilities for simulating black carmodel evaluation (Sand et al., doi:10.5194/acp-17bon and sulfate concentrations in the Arctic atmo12197-2017).
sphere: a multi-model evaluation using a comprehensive measurement data set (Eckhardt et al., 2015).

K.2

2016 – 11 papers

Regional emission metrics for short-lived climate
forcing from multiple models (Aamaas et al., 2016).
Atmospheric methane evolution the last 40 years
(Dalsøren et al., 2016).
What controls the vertical distribution of aerosol?

Impact of coupled NOx-aerosol aircraft emissions on
ozone photochemistry and radiative forcing (Pitari
et al., 2015).
Measuring and Modeling the Lifetime of Nitrous Oxide including its Variability (Prather et al., 2015).
Evaluating the climate and air quality impacts of
short-lived pollutants (Stohl et al., 2015).

103

Oslo CTM3 user manual

K.4

November 6, 2018

2014 – 11 papers

from satellite stratospheric correction using SCIAMACHY limb/nadir matching and comparison to
Forty-seven years of weekly atmospheric black car- Oslo CTM2 simulations (Hilboll et al., 2013).
bon measurements in the Finnish Arctic: Decrease Global Warming Potentials and Radiative Efficienin black carbon with declining emissions (Dutkiewicz cies of Halocarbons and Related Compounds: A
et al., 2014).
Comprehensive Review (Hodnebrog et al., 2013).
Climate penalty for shifting shipping to the Arctic
(Fuglestvedt et al., 2014).
How shorter black carbon lifetime alters its climate
effect (Hodnebrog et al., 2014).

Future methane, hydroxyl, and their uncertainties:
key climate and emission parameters for future predictions (Holmes et al., 2013).

Multi-model mean nitrogen and sulfur deposition
Atmospheric Ozone and Methane in a Changing Cli- from the Atmospheric Chemistry and Climate Model
Intercomparison Project (ACCMIP): evaluation of
mate (Isaksen et al., 2014).
historical and projected future changes (Lamarque
An AeroCom assessment of black carbon in Arctic et al., 2013a).
snow and sea ice (Jiao et al., 2014).
The Atmospheric Chemistry and Climate Model InClimate impacts of short-lived climate forcers versus tercomparison Project (ACCMIP): overview and deCO2 from biodiesel: A case of the EU on-road sector scription of models, simulations and climate diagnostics (Lamarque et al., 2013b).
(Lund et al., 2014a).
Global and regional climate impacts of black carbon
and co-emitted species from the on-road diesel sector
(Lund et al., 2014b).

Evaluation of preindustrial to present-day black carbon and its albedo forcing from Atmospheric Chemistry and Climate Model Intercomparison Project
(ACCMIP) (Lee et al., 2013).

Modelled black carbon radiative forcing and atmospheric lifetime in AeroCom Phase II constrained by Radiative forcing of the direct aerosol effect from AeroCom Phase II simulations (Myhre et al., 2013).
aircraft observations (Samset et al., 2014).
Aircraft emission mitigation by changing route altitude: A multi-model estimate of aircraft NOx emission impact on O3 photochemistry (Søvde et al.,
2014).

Preindustrial to present-day changes in tropospheric
hydroxyl radical and methane lifetime from the Atmospheric Chemistry and Climate Model Intercomparison Project (ACCMIP) (Naik et al., 2013).

The AeroCom evaluation and intercomparison of or- Comparison of spheroidal carbonaceous particle
ganic aerosol in global models (Tsigaridis et al., (SCP) data with modelled atmospheric black carbon
concentration and deposition, and airmass sources in
2014).
northern Europe, 1850-2010 (Ruppel et al., 2013).
The influence of future non-mitigated road transport
emissions on regional ozone exceedences at global Black carbon vertical profiles strongly affect its radiative forcing uncertainty (Samset et al., 2013).
scale (Williams et al., 2014).

K.5

Radiative forcing in the ACCMIP historical and future climate simulations (Shindell et al., 2013).

2013 – 20 papers

Global premature mortality due to anthropogenic
outdoor air pollution and the contribution of past
Evaluation of ACCMIP outgoing longwave radiation
climate change (Silva et al., 2013).
from tropospheric ozone using TES satellite observations (Bowman et al., 2013).
Tropospheric ozone changes, radiative forcing and attribution to emissions in the Atmospheric Chemistry
Environmental impacts of shipping in 2030 with a
and Climate Model Inter-comparison Project (ACparticular focus on the Arctic region (Dalsøren et al.,
CMIP) (Stevenson et al., 2013).
2013).
Analysis of present day and future OH and methane
Reducing CO2 from shipping - do non-CO2 effects
lifetime in the ACCMIP simulations (Voulgarakis
matter? (Eide et al., 2013).
et al., 2013).
Ozone Variations Derived by a Chemical Transport
Pre-industrial to end 21st century projections of troModel (Eleftheratos et al., 2013).
pospheric ozone from the Atmospheric Chemistry
Elemental carbon measurements in European Arctic and Climate Model Intercomparison Project (ACCMIP) (Young et al., 2013).
snow packs (Forsström et al., 2013).
Improvements to the retrieval of tropospheric NO2
104

Oslo CTM3 user manual

K.6

November 6, 2018

2012 – 8 papers

Radiative forcing due to changes in ozone and
methane caused by the transport sector (Myhre
et al., 2011).

Future air quality in Europe: a multi-model assessment of projected exposure to ozone (Colette et al., Representation of tropical deep convection in atmo2012).
spheric models - Part 1: Meteorology and comparison with satellite observations (Russo et al., 2011).
Global air quality and climate (Fiore et al., 2012).
Future impact of traffic emissions on atmospheric
ozone and OH based on two scenarios (Hodnebrog
et al., 2012).

Vertical dependence of black carbon, sulphate and
biomass burning aerosol radiative forcing (Samset
and Myhre, 2011).

Attribution of the Arctic ozone column deficit in
March 2011 (Isaksen et al., 2012).

Black carbon in the atmosphere and snow, from preindustrial times until present (Skeie et al., 2011a).

Application of the CALIOP Layer Product to evaluate the vertical distribution of aerosols estimated
by global models: Part 1. AeroCom phase I results
(Koffi et al., 2012).

Anthropogenic radiative forcing time series from preindustrial times until 2010 (Skeie et al., 2011b).
The HNO3 forming branch of the HO2 + NO reaction: pre-industrial-to-present trends in atmospheric
species and radiative forcings (Søvde et al., 2011a).

Parameterization of black carbon aging in the
OsloCTM2 and implications for regional transport Estimation of Arctic Ozone Loss in the Winter
to the Arctic (Lund and Berntsen, 2012).
2006/07 using a Chemical Transport Model and Data
The chemical transport model Oslo CTM3 (Søvde Assimilation (Søvde et al., 2011b).
et al., 2012).
Short-lived climate forcers from current shipping and K.8 2010 – 4 papers
petroleum activities in the Arctic (Ødemark et al.,
2012).
Direct radiative effect of aerosols emitted by transport: from road, shipping and aviation (Balkanski
et al., 2010).

K.7

2011 – 16 papers

Inferring absorbing organic carbon content from
AERONET data (Arola et al., 2011).
Observed and Modelled record ozone decline over the
Arctic during winter/spring 2011 (Balis et al., 2011).

Impacts of the Large Increase in International
Ship Traffic 2000-2007 on Tropospheric Ozone and
Methane (Dalsøren et al., 2010).
Transport impacts on atmosphere and climate: Aviation (Lee et al., 2010).

Transport impacts on atmosphere and climate: Land
Air quality trends in Europe over the past decade: a transport (Uherek et al., 2010).
first multi-model assessment (Colette et al., 2011).
A note on the comparison between total ozone from
Oslo CTM2 and SBUV satellite data (Eleftheratos
et al., 2011).
Future impact of non-land based traffic emissions on
atmospheric ozone and OH - an optimistic scenario
and a possible mitigation strategy (Hodnebrog et al.,
2011).
A review of the anthropogenic influence on biogenic
secondary organic aerosol (Hoyle et al., 2011a).

K.9

2009 – 13 papers

Effect of emission changes in southeast Asia on global
hydroxyl and methane levels (Dalsøren et al., 2009b).
Update on emissions and environmental impacts
from the international fleet of ships: the contribution from major ship types and ports (Dalsøren et al.,
2009a).

Transport impacts on atmosphere and climate: ShipRepresentation of tropical deep convection in atmo- ping (Eyring et al., 2009).
spheric models - Part 2: Tracer transport (Hoyle
et al., 2011b).
The impact of traffic emissions on atmospheric ozone
and OH: results from QUANTIFY (Hoor et al.,
Global dust model intercomparison in AeroCom 2009).
phase I (Huneeus et al., 2011).
Anthropogenic influence on SOA and the resulting
Strong atmospheric chemistry feedback to climate radiative forcing (Hoyle et al., 2009a).
warming from Arctic methane emissions (Isaksen
et al., 2011).
Present-day contribution of anthropogenic emissions
105

Oslo CTM3 user manual

November 6, 2018

from China to the global burden and radiative forcing chemical transport model Oslo CTM2 (Hoyle et al.,
of aerosol and ozone (Hoyle et al., 2009b).
2007).
Atmospheric composition change:
Climate- A Study of Tropospheric Ozone over China with a
Chemistry interactions (Isaksen et al., 2009).
3-D Global CTM Model (Liu et al., 2007).
Evaluation of black carbon estimations in global Comparison of the radiative properties and direct raaerosol models (Koch et al., 2009).
diative effect of aerosols from a global aerosol model
and remote sensing data over ocean (Myhre et al.,
Modelled radiative forcing of the direct aerosol ef- 2007a).
fect with multi-observation evaluation (Myhre et al.,
2009b).
Aerosol-cloud interaction inferred from MODIS satellite data and global aerosol models (Myhre et al.,
Consistency Between Satellite-Derived and Modeled 2007b).
Estimates of the Direct Aerosol Effect (Myhre, 2009).
Aircraft pollution: A futuristic view (Søvde et al.,
Modelling of chemical and physical aerosol properties 2007).
during the ADRIEX aerosol campaign (Myhre et al.,
2009a).
The effect of harmonized emissions on aerosol properties in global models - an AeroCom experiment (TexThe influence of foreign vs. North American emis- tor et al., 2007).
sions on surface ozone in the US (Reidmiller et al.,
2009).
Costs and global impacts of black carbon abatement
strategies (Rypdal et al., 2009).

K.12

2006 – 13 papers

Abatement of Greenhouse Gases: Does Location
Matter? (Berntsen et al., 2006).

K.10

2008 – 4 papers

K.11

2007 – 10 papers

CTM study of changes in tropospheric hydroxyl distribution 1990-2001 and its impact on methane (DalClimate forcing from the transport sectors (Fu- søren and Isaksen, 2006).
glestvedt et al., 2009).
Nitrogen and sulfur deposition on regional and global
Modeling of the solar radiative impact of biomass scales: A multimodel evaluation (Dentener et al.,
burning aerosols during the Dust and Biomass burn- 2006a).
ing Experiment (DABEX) (Myhre et al., 2008).
The Global Atmospheric Environment for the Next
European surface ozone in the extreme summer 2003 Generation (Dentener et al., 2006b).
(Solberg et al., 2008).
Impact of aircraft NOx emissions on the atmosphere
Evaluation of the chemical transport model Oslo - tradeoffs to reduce the impact (Gauss et al., 2006a).
CTM2 with focus on Arctic winter ozone depletion
(Søvde et al., 2008).
Radiative forcing since preindustrial times due to
ozone change in the troposphere and the lower stratosphere (Gauss et al., 2006b).

Sulphate trends in Europe: are we able to model the
recent observed decrease? (Berglen et al., 2007).
Environmental impacts of the expected increase in
sea transportation, with a particular focus on oil and
gas scenarios for Norway and Northwest Russia (Dalsøren et al., 2007).
Changes in Nitrogen Dioxide and Ozone over Southeast and East Asia between Year 2000 and 2030 with
Fixed Meteorology (Gauss et al., 2007).

An AeroCom initial assessment - optical properties in
aerosol component modules of global models (Kinne
et al., 2006).
Modelling of nitrate and ammonium-containing
aerosols in presence of sea salt (Myhre et al., 2006).
Multi-model ensemble simulations of tropospheric
NO2 compared with GOME retrievals for the year
2000 (van Noije et al., 2006).
Radiative forcing by aerosols as derived from the
AeroCom present-day and pre-industrial simulations
(Schulz et al., 2006).

Climate impact of supersonic air traffic: An approach
to optimize a potential future supersonic fleet - Re- Multimodel simulations of carbon monoxide: Comsults from the EU-project SCENIC (Grewe et al., parison with observations and projected near-future
2007).
changes (Shindell et al., 2006).
Secondary organic aerosol in the global aerosol -

Multimodel ensemble simulations of present-day and

106

Oslo CTM3 user manual

November 6, 2018

near-future tropospheric ozone (Stevenson et al.,
2006).

changes in the troposphere and the lower stratosphere (Gauss et al., 2003b).

Analysis and quantification of the diversities of Impact of aircraft NOx emission on NOx and ozone
aerosol life cycles within AeroCom (Textor et al., over China (Liu et al., 2003a).
2006).
The possible influences of the increasing anthropogenic emissions in India on tropospheric ozone and
OH (Liu et al., 2003b).

K.13

2005 – 5 papers

Response of climate to regional emissions of ozone
precursors: sensitivities and warming potentials
(Berntsen et al., 2005).

Modeling the radiative impact of mineral dust during
the Saharan Dust Experiment (SHADE) campaign
(Myhre et al., 2003b).

Modeling the solar radiative impact of aerosols from
An evaluation of the performance of chemistry trans- biomass burning during the Southern African Report models - Part 2: Detailed comparison with two gional Science Initiative (SAFARI-2000) experiment
(Myhre et al., 2003a).
selected campaigns (Brunner et al., 2005).
Model simulations of dust sources and transport in Fresh air in the 21st century? (Prather et al., 2003).
the global atmosphere: Effects of soil erodibility and
Chemical transport model ozone simulations for
wind speed variability (Grini et al., 2005).
spring 2001 over the western Pacific: Comparisons
Tropospheric ozone changes at unpolluted and with TRACE-P lidar, ozonesondes, and Total Ozone
semipolluted regions induced by stratospheric ozone Mapping Spectrometer columns (Wild et al., 2003).
changes (Isaksen et al., 2005).
Radiative effect of surface albedo change from
biomass burning (Myhre et al., 2005).

K.14

K.16

2002 – 4 papers

Modeling the Annual Cycle of Sea Salt in the Global
3D Model Oslo CTM2: Concentrations, Fluxes, and
Radiative Impact (Grini et al., 2002).

2004 – 4 papers

A global model of the coupled sulfur/oxidant chemistry in the troposphere: The sulfur cycle (Berglen
et al., 2004).

Impacts of NOx emissions from subsonic aircraft in a
global three-dimensional chemistry transport model
including plume processes (Kraabøl et al., 2002).

Roles of saltation, sandblasting, and wind speed variability on mineral dust aerosol size distribution dur- Model intercomparison of the transport of aircrafting the Puerto Rican Dust Experiment (PRIDE) like emissions from sub- and supersonic aircraft
(Rogers et al., 2002).
(Grini and Zender, 2004).
NOx change over China and its influences (Liu et al.,
2004).

Photochemical Activity and Solar Ultraviolet Radiation (PAUR) Modulation Factors: An overview of
the project (Zerefos et al., 2002).

Uncertainties in the Radiative Forcing Due to Sulfate
Aerosols (Myhre et al., 2004).

K.17
K.15

2001 – 4 papers

2003 – 10 papers

Atmospheric degradation and global warming potenAn evaluation of the performance of chemistry trans- tials of three perfluoroalkenes (Acerboni et al., 2001).
port models by comparison with research aircraft observations. Part 1: Concepts and overall model per- Chemistry-transport model comparison with ozone
observations in the midlatitude lowermost stratoformance (Brunner et al., 2003).
sphere (Bregman et al., 2001).
Emission from international sea transportation and
Model calculations of present and future levels of
environmental impact (Endresen et al., 2003).
ozone and ozone precursors with a global and a reImpact of H2O emissions from cryoplanes and gional model (Jonson et al., 2001).
kerosene aircraft on the atmosphere (Gauss et al.,
Sulphate particles from subsonic aviation: impact
2003a).
on upper tropospheric and lower stratospheric ozone
Radiative forcing in the 21st century due to ozone (Pitari et al., 2001).
107

Oslo CTM3 user manual

K.18

Oslo CTM1 – 12 papers

November 6, 2018

Acknowledgements

NOx Emissions from Aircraft: Its Impact on the Parts of this manual was written during my time at
Global Distribution of CH4 and O3 and on Radia- the Department of Geosciences at the University of
Oslo, although considerable amount of it, including
tive Forcing (Isaksen et al., 2001).
revisions, have been written on my spare time or durTime evolution of tropospheric ozone and its radia- ing model development in projects at CICERO.
tive forcing (Berntsen et al., 2000).
Thanks to Alf Grini for starting the Oslo CTM2 manTrend analysis of O3 and CO in the period 1980- ual; some sections in this manual are based on his
1996: A three-dimensional model study (Karlsdóttir work. Also thanks to EGU for LATEX bibliography
et al., 2000).
style.
Radiative forcing due to changes in tropospheric I (Amund) left CICERO and Oslo CTM3 in February
ozone in the period 1980 to 1996 (Myhre et al., 2000). 2018, and hope this manual will be a good tool for
future users of Oslo CTM3.
Effects of lightning and convection on changes in tropospheric ozone due to NOx emissions from aircraft
(Berntsen et al., 1999).

References

Influence of Asian emissions on the composition of air
reaching the north western United States (Berntsen Aamaas, B., Berntsen, T. K., Fuglestvedt, J. S.,
et al., 1999).
Shine, K. P., and Bellouin, N.: Regional emission
metrics for short-lived climate forcers from multi3-D global simulations of tropospheric CO distribuple models, Atmos. Chem. Phys., 16, 7451–7468,
tions: Results of the GIM/IGAC intercomparison
doi:10.5194/acp-16-7451-2016, 2016.
1997 exercise (Kanakidou et al., 1999).
Aamaas, B., Berntsen, T. K., Fuglestvedt, J. S.,
Estimation of the direct radiative forcing due to sulShine, K. P., and Collins, W. J.: Regional temfate and soot aerosols (Myhre et al., 1998).
perature change potentials for short-lived climate
forcers based on radiative forcing from multiple
Global distribution of sulphate in the troposphere: A
models, Atmos. Chem. Phys., 17, 10 795–10 809,
three-dimensional model study (Restad et al., 1998).
doi:10.5194/acp-17-10795-2017, 2017.
Effects of anthropogenic emissions on tropospheric
ozone and its radiative forcing (Berntsen et al., 1997). Acerboni, G., Beukes, J., Jensen, N., Hjorth, J.,
Myhre, G., Nielsen, C., and Sundet, J.: AtA global three-dimensional chemical transport
mospheric degradation and global warming pomodel: 2. Nitrogen oxides and nonmethane hydrotentials of three perfluoroalkenes, Atmospheric
carbon results (Jaffe et al., 1997).
Environment, 35, 4113–4123, doi:10.1016/S13522310(01)00209-6, 2001.
A global three-dimensional chemical transport model
for the troposphere: 1. Model description and CO Adams, P. J., Seinfeld, J. H., and Koch, D. M.:
and Ozone results (Berntsen and Isaksen, 1997).
Global concentrations of tropospheric sulfate, nitrate, and ammonium aerosol simulated in a general circulation model, J. Geophys. Res., 104,
13 791–13 823, doi:10.1029/1999JD900083, 1999.

L

Contact information

CICERO
P.O. Box 1129 Blindern
N-0318 Oslo
Norway
e-mail: post@cicero.oslo.no
web: http://www.cicero.oslo.no/

Alfaro, S. C. and Gomes, L.: Modeling mineral aerosol production by wind erosion: Emission intensities and aerosol size distributions in
source areas, J. Geophys. Res., 106, 18 075–18 084,
doi:10.1029/2000JD900339, 2001.
Allen, D., Pickering, K., Duncan, B., and Damon, M.: Impact of lightning NO emissions
on North American photochemistry as determined using the Global Modeling Initiative
(GMI) model, J. Geophys. Res., 115, D22 301,
doi:10.1029/2010JD014062, 2010.

The easiest way of getting in touch with us is to
send an e-mail to CICERO or to the Oslo CTM3
Allen, D. J. and Pickering, K. E.: Evaluation of lightuser mailing list.
ning flash rate parameterizations for use in a global
Oslo CTM3 mail list: oslo-ctm@geo.uio.no
chemical transport model, J. Geophys. Res., 107,
4711, doi:10.1029/2002JD002066, 2002.
108

Oslo CTM3 user manual

November 6, 2018

Arctic Monitoring and Assessment Programme
Gases: Does Location Matter?, Climatic Change,
(AMAP): AMAP Assessment 2015: Methane as
74, 377–411, doi:10.1007/s10584-006-0433-4, 2006.
an Arctic climate forcer, Oslo, Norway, vii+139 pp,
Berntsen, T. K., Karlsdóttir, S., and Jaffe, D. A.:
available online, iSBN 978-82-7971-091-2, 2015.
Influence of Asian emissions on the composiArola, A., Schuster, G., Myhre, G., Kazadzis,
tion of air reaching the north western United
S., Dey, S., and Tripathi, S. N.:
InferStates, Geophys. Res. Lett., 26, 2171–2174,
ring absorbing organic carbon content from
doi:10.1029/1999GL900477, 1999.
AERONET data, Atmos. Chem. Phys., 11, 215–
Berntsen, T. K., Fuglestvedt, J. S., Joshi, M. M.,
225, doi:10.1080/01431161003698401, 2011.
Shine, K. P., Stuber, N., Ponater, M., Sausen,
Atkinson, R., Baulch, D. L., Cox, R. A., CrowR., Hauglustaine, D. A., and Li, L.: Reley, J. N., Hampson, R. F., Hynes, R. G.,
sponse of climate to regional emissions of ozone
Jenkin, M. E., Rossi, M. J., and Troe,
precursors: sensitivities and warming potenJ.: Evaluated kinetic and photochemical data
tials, Tellus B, 57, 283–304, doi:10.1111/j.1600for atmospheric chemistry, http://www.iupac0889.2005.00152.x, 2005.
kinetic.ch.cam.ac.uk/, see also http://www.atmosBian, H., Chin, M., Hauglustaine, D. A., Schulz, M.,
chem-phys.net/special_issue8.html, 2010.
Myhre, G., Bauer, S. E., Lund, M. T., Karydis,
Balis, D., Isaksen, I. S. A., Zerefos, C., ZyrichiV. A., Kucsera, T. L., Pan, X., Pozzer, A., Skeie,
dou, I., Eleftheratos, K., Tourpali, K., BoR. B., Steenrod, S. D., Sudo, K., Tsigaridis, K.,
jkov, R., Rognerud, B., Stordal, F., Søvde,
Tsimpidi, A. P., and Tsyro, S. G.: Investigation of
O. A., and Orsolini, Y.: Observed and modelled
global particulate nitrate from the AeroCom phase
record ozone decline over the Arctic during winIII experiment, Atmos. Chem. Phys., 17, 12 911–
ter/spring 2011, Geophys. Res. Lett., 38, L23 801,
12 940, doi:10.5194/acp-17-12911-2017, 2017.
doi:10.1029/2011GL049259, 2011.
Bian, H. S. and Prather, M. J.: Fast-J2: Accurate
Balkanski, Y., Myhre, G., Gauss, M., Rädel, G.,
simulation of stratospheric photolysis in global
Highwood, E. J., and Shine, K. P.: Direct radiative
chemical models, J. of Atmos. Chem., 41, 281–296,
effect of aerosols emitted by transport: from road,
doi:10.1023/A:1014980619462, 2002.
shipping and aviation, Atmos. Chem. Phys., 10,
Bond, T. C., Bhardwaj, E., Dong, R., Jogani, R.,
4477–4489, doi:10.5194/acp-10-4477-2010, 2010.
Jung, S., Roden, C., Streets, D. G., Fernandes, S.,
Berglen, T. F., Berntsen, T. K., Isaksen, I. S. A.,
and Trautmann, N.: Historical emissions of black
and Sundet, J. K.: A global model of the couand organic carbon aerosol from energy-related
pled sulfur/oxidant chemistry in the troposphere:
combustion, 1850-2000, Global Biogeochemical
The sulfur cycle, J. Geophys. Res., 109, D19 310,
Cycles, 12, GB2018, doi:10.1029/2006GB002840,
doi:10.1029/2003JD003948, 2004.
2007.
Berglen, T. F., Myhre, G., Isaksen, I. S. A., Vestreng, Bousquet, P., Ringeval, B., Pison, I., Dlugokencky,
V., and Smith, S. J.: Sulphate trends in EuE. J., Brunke, E.-G., Carouge, C., Chevallier, F.,
rope: are we able to model the recent observed deFortems-Cheiney, A., Frankenberg, C., Haugluscrease?, Tellus B, 59, 773–786, doi:10.1111/j.1600taine, D. A., Krummel, P. B., Langenfelds, R. L.,
0889.2007.00289.x, 2007.
Ramonet, M., Schmidt, M., Steele, L. P., Szopa,
S., Yver, C., Viovy, N., and Ciais, P.: Source attriBerntsen, T. and Isaksen, I. S. A.: A global
bution of the changes in atmospheric methane for
3-D chemical transport model for the tropo2006-2008, Atmos. Chem. Phys., 11, 3689–3700,
sphere, 1, Model description and CO and Ozone
doi:10.5194/acp-11-3689-2011, 2011.
results, J. Geophys. Res., 102, 21 239–21 280,
doi:10.1029/97JD01140, 1997.

Bouwman, A. F., Lee, D. S., Asman, W. A. H., Dentener, F. J., Hoek, K. W. V. D., and Olivier, J.
G. J.: A global high-resolution emission inventory
for ammonia, Global Biogeochem. Cycles, 11, 561–
587, doi:10.1029/97GB02266, 1997.

Berntsen, T., Isaksen, I., Myhre, G., Fuglestvedt, J.,
Stordal, F., Larsen, T., Freckleton, R., and Shine,
K.: Effects of anthropogenic emissions on tropospheric ozone and its radiative forcing, J. Geophys.
Res., 102, 28 101–28 126, doi:10.1029/97JD02226, Bowman, K., Shindell, D., Worden, H., Lamarque,
1997.
J. F., Young, P. J., Stevenson, D., Qu, Z., de la
Torre, M., Bergmann, D., Cameron-Smith, P.,
Berntsen, T., Myhre, G., Stordal, F., and Isaksen, I.:
Collins, W. J., Doherty, R., Dalsøren, S., FaluTime evolution of tropospheric ozone and its ravegi, G., Folberth, G., Horowitz, L., Josse, B., Lee,
diative forcing, J. Geophys. Res., 105, 8915–8930,
Y. H., MacKenzie, I., Myhre, G., Nagashima, T.,
doi:10.1029/1999JD901139, 2000.
Naik, V., Plummer, D., Rumbold, S. T., Skeie,
Berntsen, T., Fuglestvedt, J., Myhre, G., Stordal,
R. B., Strode, S. A., Sudo, K., Szopa, S., VoulgarF., and Berglen, T. F.: Abatement of Greenhouse
akis, A., Zeng, G., Kulawik, S. S., Aghedo, A. M.,
109

Oslo CTM3 user manual

November 6, 2018

and Worden, J. R.: Evaluation of ACCMIP outInternational Conference on Atmospheric Electricgoing longwave radiation from tropospheric ozone
ity, Guntersville, Alabama, pp. 726–729, 1999a.
using TES satellite observations, Atmos. Chem.
Phys., 13, 4057–4072, doi:10.5194/acp-13-4057- Christian, H. J., Blakeslee, R. J., Goodman, S. J.,
Mach, D. A., Stewart, M. F., Buechler, D. E.,
2013, 2013.
Koshak, W. J., Hall, J. M., Boeck, W. L., Driscoll,
Bregman, A., Krol, M. C., Teyssedre, H., NorK. T., and Bocippio, D. J.: The Lightning Imagton, W. A., Iwi, A., Chipperfield, M., Pitari,
ing Sensor, in: Proceedings of the 11th InterG., Sundet, J. K., and Lelieveld, J.: Chemistrynational Conference on Atmospheric Electricity,
transport model comparion with ozone obserGuntersville, Alabama, pp. 746–749, 1999b.
vation in the midlatitude lowermost stratosphere, J. Geophys. Res., 106, 17 479–17 489, Colette, A., Granier, C., Hodnebrog, Ø., Jakobs, H.,
Maurizi, A., Nyiri, A., Bessagnet, B., D’Angiola,
doi:10.1029/2000JD900752, 2001.
A., D’Isidoro, M., Gauss, M., Meleux, F.,
Browse, J., Carslaw, K. S., Arnold, S. R., Pringle,
Memmesheimer, M., Mieville, A., Rouïl, L., Russo,
K., and Boucher, O.: The scavenging processes
F., Solberg, S., Stordal, F., and Tampieri, F.: Air
controlling the seasonal cycle in Arctic sulphate
quality trends in Europe over the past decade: a
and black carbon aerosol, Atmos. Chem. Phys., 12,
first multi-model assessment, Atmos. Chem. Phys.,
6775–6798, doi:10.5194/acp-12-6775-2012, 2012.
11, 11 657–11 678, doi:10.5194/acp-11-11657-2011,
2011.
Brunner, D., Staehelin, J., Rogers, H. L., Köhler, M. O., Pyle, J. A., Hauglustaine, D., Jour- Colette, A., Granier, C., Hodnebrog, Ø., Jakobs,
dain, L., Berntsen, T. K., Gauss, M., Isaksen, I.
H., Maurizi, A., Nyiri, A., Rao, S., Amann, M.,
S. A., Meijer, E., van Velthoven, P., Pitari, G.,
Bessagnet, B., D’Angiola, A., Gauss, M., Heyes,
Mancini, E., Grewe, V., and Sausen, R.: An evalC., Klimont, Z., Meleux, F., Memmesheimer, M.,
uation of the performance of chemistry transport
Mieville, A., Rouïl, L., Russo, F., Schucht, S.,
models by comparison with research aircraft obSimpson, D., Stordal, F., Tampieri, F., and Vrac,
servations. Part 1: Concepts and overall model
M.: Future air quality in Europe: a multi-model
performance, Atmos. Chem. Phys., 3, 1609–1631,
assessment of projected exposure to ozone, Atmos.
doi:10.5194/acp-3-1609-2003, 2003.
Chem. Phys., 12, 10 613–10 630, doi:10.5194/acp12-10613-2012, 2012.
Brunner, D., Staehelin, J., Rogers, H. L., Köhler,
M. O., Pyle, J. A., Hauglustaine, D. A., Jour- Conrad, R. and Seiler, W.: Influence of Temperature,
dain, L., Berntsen, T. K., Gauss, M., Isaksen, I.
Moisture, and Organic Carbon on the Flux of H2
S. A., Meijer, E., van Velthoven, P., Pitari, G.,
and CO Between Soil and Atmosphere: Field StudMancini, E., Grewe, V., and Sausen, R.: An evalies in Subtropical Regions, J. Geophys. Res., 90,
uation of the performance of chemistry transport
5699–5709, doi:10.1029/JD090iD03p05699, 1985.
models - Part 2: Detailed comparison with two
selected campaigns, Atmos. Chem. Phys., 5, 107– Dalsøren, S. B. and Isaksen, I. S. A.: CTM
study of changes in tropospheric hydroxyl
129, doi:10.5194/acp-5-107-2005, 2005.
distribution 1990-2001 and its impact on
Carslaw, K., Luo, B., and Peter, T.: An anmethane, Geophys. Res. Lett., 33, L23 811,
alytic expression for the composition of aquedoi:10.1029/2006GL027295, 2006.
ous HNO3+H2SO4 stratospheric aerosols including gas phase removal of HNO3, Geophys. Res. Dalsøren, S. B., Endresen, Ø., Isaksen, I. S. A.,
Gravir, G., and Sørgård, E.: Environmental imLetters, 22, 1877–1880, doi:10.1029/95GL01668,
pacts of the expected increase in sea transporta1995.
tion, with a particular focus on oil and gas scenarCecil, D. J., Buechler, D. E., and Blakeslee,
ios for Norway and Northwest Russia, J. Geophys.
R. J.:
Gridded lightning climatology from
Res., 112, D02 310, doi:10.1029/2005JD006927,
TRMM-LIS and OTD: Dataset description,
2007.
Atmospheric Research,
135-136,
404–414,
Dalsøren, S. B., Eide, M. S., Endresen, Ø., Mjelde,
doi:10.1016/j.atmosres.2012.06.028, 2014.
A., Gravir, G., and Isaksen, I. S. A.: Update on
Charnock, H.: Wind stress on a water suremissions and environmental impacts from the inface, Q.J.R. Meteorol. Soc., 81, 639–640,
ternational fleet of ships: the contribution from
doi:10.1002/qj.49708135027, 1955.
major ship types and ports, Atmos. Chem. Phys.,
9, 2171–2194, doi:10.5194/acp-9-2171-2009, 2009a.
Christian, H. J., Blakeslee, R. J., Boccippio, D. J.,
Boeck, W. L., Buechler, D. E., Driscoll, K. T., Dalsøren, S. B., Isaksen, I. S. A., Li, L., and
Goodman, S. J., Hall, J. M., Mach, D. A., and
Richter, A.: Effect of emission changes in southStewart, M. F.: Global Frequency and Distribueast Asia on global hydroxyl and methane levtion of Lightning as Observed by the Optical Tranels, Tellus B, 61, 588–601, doi:10.1111/j.1600sient Dector (OTD), in: Proceedings of the 11th
0889.2009.00429.x, 2009b.
110

Oslo CTM3 user manual

November 6, 2018

Dalsøren, S. B., Eide, M. S., Myhre, G., Endresen,
Global Atmospheric Environment for the Next
Ø., Isaksen, I. S. A., and Fuglestvedt, J. S.:
Generation, Environ. Sci. Technol., 40, 3586–3594,
Impacts of the Large Increase in International
doi:10.1021/es0523845, 2006b.
Ship Traffic 2000-2007 on Tropospheric Ozone and
Methane, Environ. Sci. Technol., 44, 2482–2489, Dutkiewicz, V. A., DeJulio, A. M., Ahmed, T.,
Laing, J., Hopke, P. K., Skeie, R. B., Viisanen,
doi: 10.1021/es902628e, 2010.
Y., Paatero, J., and Husain, L.: Forty-seven years
Dalsøren, S. B., Samset, B. H., Myhre, G., Corof weekly atmospheric black carbon measurements
bett, J. J., Minjares, R., Lack, D., and Fuin the Finnish Arctic: Decrease in black carbon
glestvedt, J. S.: Environmental impacts of shipwith declining emissions, J. Geophys. Res., 119,
ping in 2030 with a particular focus on the Arc7667–7683, doi:10.1002/2014JD021790, 2014.
tic region, Atmos. Chem. Phys., 13, 1941–1955,
Eckhardt, S., Quennehen, B., Olivié, D. J. L.,
doi:10.5194/acp-13-1941-2013, 2013.
Berntsen, T. K., Cherian, R., Christensen, J. H.,
Dalsøren, S. B., Myhre, C. L., Myhre, G., GomezCollins, W., Crepinsek, S., Daskalakis, N., FlanPelaez, A. J., Søvde, O. A., Isaksen, I. S. A.,
ner, M., Herber, A., Heyes, C., Hodnebrog, Ø.,
Weiss, R. F., and Harth, C. M.: Atmospheric
Huang, L., Kanakidou, M., Klimont, Z., Langner,
methane evolution the last 40 years„ Atmos.
J., Law, K. S., Lund, M. T., Mahmood, R.,
Chem. Phys., 16, 3099–3126, doi:10.5194/acp-16Massling, A., Myriokefalitakis, S., Nielsen, I. E.,
3099-2016, 2016.
Nøjgaard, J. K., Quaas, J., Quinn, P. K., Raut, J.C., Rumbold, S. T., Schulz, M., Sharma, S., Skeie,
Danilin, M. Y., Fahey, D. W., Schumann, U.,
R. B., Skov, H., Uttal, T., von Salzen, K., and
Prather, M. J., Penner, J. E., Ko, M. K. W.,
Stohl, A.: Current model capabilities for simulatWeisenstein, D. K., Jackman, C. H., Pitari, G.,
ing black carbon and sulfate concentrations in the
Köhler, I., Sausen, R., Weaver, C. J., Douglass,
Arctic atmosphere: a multi-model evaluation using
A. R., Connell, P. S., Kinnison, D. E., Dentener,
a comprehensive measurement data set, Atmos.
F. J., Fleming, E. L., Berntsen, T. K., Isaksen,
Chem. Phys., 15, 9413–9433, doi:10.5194/acp-15I. S. A., Haywood, J. M., and Kärcher, B.: Avia9413-2015, 2015.
tion fuel tracer simulation: Model intercomparison
and implications, Geophys. Res. Lett., 25, 3947, Eide, M. S., Dalsøren, S. B., Endresen, Ø., Samdoi:10.1029/1998GL900058, 1998.
set, B., Myhre, G., Fuglestvedt, J., and Berntsen,
T.: Reducing CO2 from shipping - do non-CO2 efDentener, F. and Crutzen, P.: Reaction of NO on
fects matter?, Atmos. Chem. Phys., 13, 4183–4201,
Tropospheric Aerosols: Impact on the Global Disdoi:10.5194/acp-13-4183-2013, 2013.
tributions of NO, O, and OH, J. Geophys. Res.,
98, 7149–7163, doi:10.1029/92JD02979, 1993.
Eleftheratos, K., Zerefos, C., Gerasopoulos, E., Isaksen, I., Rognerud, B., Dalsøren, S., and VarotDentener, F., Drevet, J., Lamarque, J. F., Bey,
sos, C.: A note on the comparison between total
I., Eickhout, B., Fiore, A. M., Hauglustaine, D.,
ozone from Oslo CTM2 model and SBUV satellite
Horowitz, L. W., Krol, M., Kulshrestha, U. C.,
data, International Journal of Remote Sensing, 32,
Lawrence, M., Galy-Lacaux, C., Rast, S., Shin2535–2545, doi:10.1080/01431161003698401, 2011.
dell, D., Stevenson, D., Noije, T. V., Atherton,
C., Bell, N., Bergman, D., Butler, T., Cofala,
Eleftheratos, K., Isaksen, I., Zerefos, C., NasJ., Collins, B., Doherty, R., Ellingsen, K., Galtos, P., Tourpali, K., and Rognerud, B.: Ozone
loway, J., Gauss, M., Montanaro, V., Müller, J. F.,
Variations Derived by a Chemical Transport
Pitari, G., Rodriguez, J., Sanderson, M., Solmon,
Model, Water, Air, & Soil Pollution, 224, 1585,
F., Strahan, S., Schultz, M., Sudo, K., Szopa, S.,
doi:10.1007/s11270-013-1585-2, 2013.
and Wild, O.: Nitrogen and sulfur deposition on
regional and global scales: A multimodel evalu- Endresen, Ø., Sørgård, E., Sundet, J. K., Dalsøren,
ation, Global Biogeochem. Cycles, 20, GB4003,
S. B., Isaksen, I. S. A., Berglen, T. F., and Gravir,
doi:10.1029/2005GB002672, 2006a.
G.: Emission from international sea transportation
and environmental impact, J. Geophys. Res., 108,
Dentener, F., Stevenson, D., Ellingsen, K., van Noije,
4560„ doi:10.1029/2002JD002898, 2003.
T., Schultz, M., Amann, M., Atherton, C., Bell,
N., Bergmann, D., Bey, I., Bouwman, L., But- Eyring, V., Isaksen, I. S., Berntsen, T., Collins,
ler, T., Cofala, J., Collins, B., Drevet, J., DoW. J., Corbett, J. J., Endresen, O., Grainger,
herty, R., Eickhout, B., Eskes, H., Fiore, A.,
R. G., Moldanova, J., Schlager, H., and StevenGauss, M., Hauglustaine, D., Horowitz, L., Isakson, D. S.: Transport impacts on atmosphere and
sen, I. S. A., Josse, B., Lawrence, M., Krol, M.,
climate: Shipping, Atmospheric Environment, 44,
Lamarque, J. F., Montanaro, V., Müller, J. F.,
4735–4771, doi:10.1016/j.atmosenv.2009.04.059,
Peuch, V. H., Pitari, G., Pyle, J., Rast, S., Ro2009.
driguez, J., Sanderson, M., Savage, N. H., Shindell, D., Strahan, S., Szopa, S., Sudo, K., Din- Field, P. R. and Heymsfield, A. J.: Aggregation
genen, R. V., Wild, O., and Zeng, G.: The
and Scaling of Ice Crystal Size Distributions,
111

Oslo CTM3 user manual

November 6, 2018

J. Atmos. Sci., 60, 544–560, doi:10.1175/15200469(2003)060%3C0544:AASOIC%3E2.0.CO;2,
2003.

and kerosene aircraft on the atmosphere, J. Geophys. Res., 108, 4304, doi:10.1029/2002JD002623,
2003a.

Fiore, A. M., Naik, V., Spracklen, D. V., Steiner, A., Gauss, M., Myhre, G., Pitari, G., Prather, M. J.,
Isaksen, I. S. A., Berntsen, T. K., Brasseur, G. P.,
Unger, N., Prather, M., Bergmann, D., CameronDentener, F. J., Derwent, R. G., Hauglustaine,
Smith, P. J., Cionni, I., Collins, W. J., DalD. A., Horowitz, L. W., Jacob, D. J., Johnsøren, S., Eyring, V., Folberth, G. A., Ginoux,
son, M., Law, K. S., Mickley, L. J., Müller, J.P., Horowitz, L. W., Josse, B., Lamarque, J.F., Plantevin, P.-H., Pyle, J. A., Rogers, H. L.,
F., MacKenzie, I. A., Nagashima, T., O’Connor,
Stevenson, D. S., Sundet, J. K., van Weele, M.,
F. M., Righi, M., Rumbold, S. T., Shindell,
and Wild, O.: Radiative forcing in the 21st century
D. T., Skeie, R. B., Sudo, K., Szopa, S., Takedue to ozone changes in the troposphere and the
mura, T., and Zeng, G.: Global air quality
lower stratosphere, J. Geophys. Res., 108, 4292,
and climate, Chem. Soc. Rev., 41, 6663–6683,
doi:10.1029/2002JD002624, 2003b.
doi:10.1039/C2CS35095E, 2012.
Fitzgerald, J. W.: Approximation formula for Gauss, M., Isaksen, I. S. A., Lee, D. S., and Søvde,
O. A.: Impact of aircraft NOx emissions on the
the equilibrium size of an aerosol particle
atmosphere - tradeoffs to reduce the impact, Atas a function of its dry size and compomos. Chem. Phys., 6, 1529–1548, doi:10.5194/acpsition and the ambient relative humidity, J.
6-1529-2006, 2006a.
Appl. Meteor., 14, 1044–1049, doi:10.1175/15200450(1975)014<1044:AFFTES>2.0.CO;2, 1975.
Gauss, M., Myhre, G., Isaksen, I. S. A., Grewe, V.,
Pitari, G., Wild, O., Collins, W. J., Dentener,
Forsström, S., Isaksson, E., Skeie, R. B., Ström, J.,
F. J., Ellingsen, K., Gohar, L. K., Hauglustaine,
Pedersen, C. A., Hudson, S. R., Berntsen, T. K.,
D. A., Iachetti, D., Lamarque, J.-F., Mancini, E.,
Lihavainen, H., Godtliebsen, F., and Gerland, S.:
Mickley, L. J., Prather, M. J., Pyle, J. A., SanderElemental carbon measurements in European Arcson, M. G., Shine, K. P., Stevenson, D. S., Sudo,
tic snow packs, J. Geophys. Res., 118, 13 614–
K., Szopa, S., and Zeng, G.: Radiative forcing
13 627, doi:10.1002/2013JD019886, 2013.
since preindustrial times due to ozone change in
Fox, L. E., Worsnop, D. R., Zahniser, M. S.,
the troposphere and the lower stratosphere, Atand Wofsy, S. C.: Metastable Phases in Pomos. Chem. Phys., 6, 575–599, doi:10.5194/acp-6lar Stratospheric Aerosols, Science, 267, 351,
575-2006, 2006b.
doi:10.1126/science.267.5196.351, 1995.
Gauss, M., Ellingsen, K., Isaksen, I. S. A., DenFuglestvedt, J., Berntsen, T., Myhre, G., Rypdal,
tener, F. J., Stevenson, D. S., Amann, M.,
K., and Skeie, R. B.: Climate forcing from the
and Cofala, J.: Changes in Nitrogen Dioxide
transport sectors, Proc. Natl. Acad. Sci., 105, 454–
and Ozone over Southeast and East Asia be458, doi:10.1073/pnas.0702958104, 2009.
tween Year 2000 and 2030 with Fixed Meteorology, Terr. Atmos. Ocean. Sci., 18, 475–492,
Fuglestvedt, J. S., Dalsøren, S. B., Samset, B. H.,
doi:10.3319/TAO.2007.18.3.475(EA), 2007.
Berntsen, T., Myhre, G., Hodnebrog, Ø., Eide,
M. S., and Bergh, T. F.: Climate penalty for shift- Gong, S. L.: A parameterization of sea-salt aerosol
source function for sub- and super-micron partiing shipping to the Arctic, Environ. Sci. Technol.,
cles, Global Biogeochem. Cycles, 17, 1097–1103,
48, 13 273–13 279, doi:10.1021/es502379d, 2014.
doi:10.1029/2003GB002079, 2003.
Gantt, B., Johnson, M. S., Crippa, M., Prévôt,
A. S. H., and Meskhidze, N.: Implementing ma- Gong, S. L., Barrie, L. A., and Blanchet, J.-P.: Modeling sea-salt aerosols in the atmosphere: 1. Model
rine organic aerosols into the GEOS-Chem model,
development, J. Geophys. Res., 102, 3805–3818,
Geosci. Model Dev., 8, 619–629, doi:10.5194/gmddoi:10.1029/96JD02953, 1997.
8-619-2015, 2015.
Granier, C., Lamarque, J. F., Mieville, A.,
Muller, J. F., Olivier, J., Orlando, J., Peters, J., Petron, G., Tyndall, G., and WalGauss, M.: Impact of aircraft emissions and ozone
lens, S.: POET, a database of surface emischanges in the 21st century: 3-D model studies,
sions of ozone precursors, available on internet
Ph.D. thesis, University of Oslo, Department of
at http://www.aero.jussieu.fr/projet/ACCENT/
Geophysics, Section of Meteorology and OceanogPOET.php, 2005.
raphy, PB. 1022 Blindern, 0315 Oslo, Norway,
Grewe, V., Brunner, D., Dameris, M., Grenfell, J. L.,
ISSN 1501-7710, No. 304, 2003.
Hein, R., Shindell, D., and Staehelin, J.: OriGauss, M., Isaksen, I. S. A., Wong, S., and Wang,
gin and variability of upper tropospheric nitroW. C.: Impact of H2O emissions from cryoplanes
gen oxides and ozone at northern mid-latitudes,
Garratt, J. R.: The Atmospheric Boundary Layer,
Cambridge University Press, 1992.

112

Oslo CTM3 user manual

November 6, 2018

Atmos. Env., 35, 3421–3433, doi:10.1016/S1352- Haywood, J. M., Osborne, S. R., Francis, P. N.,
2310(01)00134-0, 2001.
Keil, A., Formenti, P., Andreae, M. O., and Kaye,
P. H.: The mean physical and optical properGrewe, V., Stenke, A., Ponater, M., Sausen, R.,
ties of regional haze dominated by biomass burnPitari, G., Iachetti, D., Rogers, H., Dessens, O.,
ing aerosol measured from the C-130 aircraft durPyle, J., Isaksen, I. S. A., Gulstad, L., Søvde,
ing SAFARI 2000, J. Geophys. Res., 108, 8473,
O. A., Marizy, C., and Pascuillo, E.: Climate
doi:10.1029/2002JD002226, 2003b.
impact of supersonic air traffic: An approach to
optimize a potential future supersonic fleet - Re- Hesstvedt, E., Hov, Ö., and Isaksen, I. S. A.: Quasi
sults from the EU-project SCENIC, Atmos. Chem.
steady-state approximation in air pollution modPhys., 7, 5129–5145, doi:10.5194/acp-7-5129-2007,
elling: Comparison of two numerical schemes for
2007.
oxidant prediction, Int. Journal of Chem. Kinetics,
X, 971–994, doi:10.1002/kin.550100907, 1978.
Grini, A. and Zender, C. S.: Roles of saltation, sandblasting, and wind speed variability on mineral Hilboll, A., Richter, A., Rozanov, A., Hodnebrog,
dust aerosol size distribution during the Puerto RiØ., Heckel, A., Solberg, S., Stordal, F., and Burcan Dust Experiment (PRIDE), J. Geophys. Res.,
rows, J. P.: Improvements to the retrieval of tro109, D07 202, doi:10.1029/2003JD004233, 2004.
pospheric NO2 from satellite stratospheric correction using SCIAMACHY limb/nadir matching and
Grini, A., Myhre, G., Sundet, J. K., and Isakcomparison to Oslo CTM2 simulations, Atmos.
sen, I. S. A.: Modeling the annual cycle of sea
Meas. Tech., 6, 565–584, doi:10.5194/amt-6-565salt in the global 3-D model Oslo CTM-2, Jour2013, 2013.
nal of Climate, 15, 1717–1730, doi:10.1175/15200442(2002)015<1717:MTACOS>2.0.CO;2, 2002.
Hinze, J. O.: Turbulence, McGraw-Hill, New York,
1975.
Grini, A., Myhre, G., Zender, C., and Isaksen, I.
S. A.: Model simulation of dust sources and trans- Hodnebrog, Ø., Berntsen, T. K., Dessens, O., Gauss,
port in the global atmosphere. Effects of soil erodiM., Grewe, V., Isaksen, I. S. A., Koffi, B., Myhre,
bility and wind speed variability, J. Geophys. Res.,
G., Olivié, D., Prather, M. J., Pyle, J. A.,
110, D02 205, doi:10.1029/2004JD005037, 2005.
Stordal, F., Szopa, S., Tang, Q., van Velthoven, P.,
Williams, J. E., and Ødemark, K.: Future impact
Guenther, A., Hewitt, C. N., Erickson, D., Fall, R.,
of non-land based traffic emissions on atmospheric
Geron, C., Graedel, T., Harley, P., Klinger, L.,
ozone and OH – an optimistic scenario and a posLerdau, M., Mckay, W. A., Pierce, T., Scholes, B.,
sible mitigation strategy, Atmos. Chem. Phys.,
Steinbrecher, R., Tallamraju, R., Taylor, J., and
11, 11 293–11 317, doi:10.5194/acp-11-11293-2011,
Zimmerman, P.: A global model of natural volatile
2011.
organic compound emissions, J. Geophys. Res.,
100, 8873–8892, doi:10.1029/94JD02950, 1995.

Hodnebrog, Ø., Berntsen, T. K., Dessens, O., Gauss,
M., Grewe, V., Isaksen, I. S. A., Koffi, B., Myhre,
Guenther, A. B., Jiang, X., Heald, C. L.,
G., Olivié, D., Prather, M. J., Stordal, F., Szopa,
Sakulyanontvittaya, T., Duhl, T., Emmons,
S., Tang, Q., van Velthoven, P., and Williams,
L. K., and Wang, X.: The Model of EmisJ. E.: Future impact of traffic emissions on atsions of Gases and Aerosols from Nature vermospheric ozone and OH based on two scenarios,
sion 2.1 (MEGAN2.1): an extended and upAtmospheric Chemistry and Physics, 12, 12 211–
dated framework for modeling biogenic emissions,
12 225, doi:10.5194/acp-12-12211-2012, 2012.
Geoscientific Model Development, 5, 1471–1492,
doi:10.5194/gmd-5-1471-2012, 2012.
Hodnebrog, Ø., Etminan, M., Fuglestvedt, J. S.,
Marston, G., Myhre, G., Nielsen, C. J., Shine,
Hansen, J. E. and Travis, L. D.: Light scattering in
K. P., and Wallington, T. J.: Global Warming
planetary atmospheres, Space Science Reviews, 16,
Potentials and Radiative Efficiencies of Halocar527–610, doi:10.1007/BF00168069, 1974.
bons and Related Compounds: A ComprehenHanson, D. R. and Mauersberger, K.: Laboratory
sive Review, Reviews of Geophysics, 51, 300–378,
studies of the nitric acid trihydrate: Implications
doi:10.1002/rog.20013, 2013.
for the south polar stratosphere, Geophys. Res.
Lett., 15, 855–858, doi:10.1029/GL015i008p00855, Hodnebrog, Ø., Myhre, G., and Samset, B. H.:
How shorter black carbon lifetime alters its cli1988.
mate effect, Nature Communications, 5, 5065,
Haywood, J., Francis, P., Osborne, S., Glew, M.,
doi:10.1038/ncomms6065, 2014.
Loeb, N., Highwood, E., Tanré, D., Myhre, G.,
Formenti, P., and Hirst, E.: Radiative proper- Hoffmann, T., Odum, J. R., Bowman, F., Collins,
ties and direct radiative effect of Saharan dust
D., Klockow, D., Flagan, R. C., and Seinfeld, J. H.:
measured by the C-130 aircraft during SHADE:
Formation of Organic Aerosols from the Oxidation
1. Solar spectrum, J. Geophys. Res., 108, 8577,
of Biogenic Hydrocarbons, J. Atmos. Chem., 26,
doi:10.1029/2002JD002687, 2003a.
189–222, doi:10.1023/A:1005734301837, 1997.
113

Oslo CTM3 user manual

November 6, 2018

Holmes, C. D., Prather, M. J., Søvde, O. A., and
Myhre, G.: Future methane, hydroxyl, and their
uncertainties: key climate and emission parameters for future predictions, Atmos. Chem. Phys.,
13, 285–302, doi:10.5194/acp-13-285-2013, 2013.

Tian, W., Viciani, S., Volz-Thomas, A., Wild, O.,
Yang, X., and Zeng, G.: Representation of tropical deep convection in atmospheric models - Part 2:
Tracer transport, Atmos. Chem. Phys., 11, 8103–
8131, doi:10.5194/acpd-10-8103-2011, 2011b.

Holton, J. R., Haynes, P. H., McIntyre, M. E., Hsu, J., Prather, M. J., and Wild, O.: Diagnosing
the stratosphere-to-troposphere flux of ozone in a
Douglass, A. R., Rood, R. B., and Pfister, L.:
chemistry transport model, J. Geophys. Res., 110,
Stratosphere-Troposphere Exchange, Rev. GeoD19 305, doi:10.1029/2005JD006045, 2005.
phys., 33, 403–439, doi:10.1029/95RG02097, 1995.
Holtslag, A. A. M., DeBruijn, E. I. F., and Pan, Huneeus, N., Schulz, M., Balkanski, Y., Griesfeller,
J., Prospero, J., Kinne, S., Bauer, S., Boucher,
H.-L.: A High resolution air mass transformation
O., Chin, M., Dentener, F., Diehl, T., Easter,
model for short-range weather forecasting, Mon.
R., Fillmore, D., Ghan, S., Ginoux, P., Grini, A.,
Wea. Rev., 118, 1561–1575, doi:10.1175/1520Horowitz, L., Koch, D., Krol, M. C., Landing, W.,
0493(1990)118<1561:AHRAMT>2.0.CO;2, 1990.
Liu, X., Mahowald, N., Miller, R., Morcrette, J.-J.,
Hoor, P., Borken-Kleefeld, J., Caro, D., Dessens, O.,
Myhre, G., Penner, J., Perlwitz, J., Stier, P., TakeEndresen, O., Gauss, M., Grewe, V., Hauglusmura, T., and Zender, C. S.: Global dust model intaine, D., Isaksen, I. S. A., Jöckel, P., Lelieveld,
tercomparison in AeroCom phase I, Atmos. Chem.
J., Myhre, G., Meijer, E., Olivie, D., Prather,
Phys., 11, 7781–7816, doi:10.5194/acp-11-7781M., Poberaj, C. S., Shine, K. P., Staehelin, J.,
2011, 2011.
Tang, Q., van Aardenne, J., van Velthoven, P.,
and Sausen, R.: The impact of traffic emis- Isaksen, I., Granier, C., Myhre, G., Berntsen, T.,
Dalsøren, S., Gauss, M., Klimont, Z., Benessions on atmospheric ozone and OH: results from
tad, R., Bousquet, P., Collins, W., Cox, T.,
QUANTIFY, Atmos. Chem. Phys., 9, 3113–3136,
Eyring, V., Fowler, D., Fuzzi, S., Jöckel, P.,
doi:10.5194/acp-9-3113-2009, 2009.
Laj, P., Lohmann, U., Maione, M., Monks, P.,
Hough, A. M.: Development of a two-dimensional
Prevot, A., Raes, F., Richter, A., Rognerud,
global tropospheric model:
Model chemB., Schulz, M., Shindell, D., Stevenson, D.,
istry, J. Geophys. Res., 96, 7325–7362,
Storelvmo, T., Wang, W.-C., van Weele, M.,
doi:10.1029/90JD01327, 1991.
Wild, M., and Wuebbles, D.: Atmospheric
composition change: Climate-Chemistry interacHoyle, C. R., Berntsen, T. K., Myhre, G., and
tions, Atmospheric Environment, 43, 5138–5192,
Isaksen, I. S. A.: Secondary organic aerosol
doi:10.1016/j.atmosenv.2009.08.003, 2009.
in the global aerosols-chemical transport model
Oslo CTM2, Atmos. Chem. Phys., 7, 5675–5694, Isaksen, I. S. A., Berntsen, T. K., and Wang,
W.-C.:
NOx Emissions from Aircraft:
Its
doi:10.5194/acp-7-5675-2007, 2007.
Impact on the Global Distribution of CH4
Hoyle, C. R., Myhre, G., Berntsen, T. K., and Isakand O3 and on Radiative Forcing, Terr.
sen, I. S. A.: Anthropogenic influence on SOA
Atmos. Ocean. Sci., 12, 63–78, pdf onand the resulting radiative forcing, Atmos. Chem.
line:http://tao.cgu.org.tw/pdf/v121p063.pdf,
Phys., 9, 2715–2728, doi:10.5194/acp-9-2715-2009,
2001.
2009a.
Isaksen, I. S. A., Zerefos, C., Kourtidis, K., Meleti,
Hoyle, C. R., Myhre, G., and Isaksen, I. S. A.:
C., Dalsøren, S. B., Sundet, J. K., Grini, A., Zanis,
Present-day contribution of anthropogenic emisP., and Balis, D.: Tropospheric ozone changes at
sions from China to the global burden and radiaunpolluted and semipolluted regions induced by
tive forcing of aerosol and ozone, Tellus B, 61, 618–
stratospheric ozone changes, J. Geophys. Res., 110,
624, doi:10.1111/j.1600-0889.2009.00424.x, 2009b.
D02 302, doi:10.1029/2004JD004618, 2005.
Hoyle, C. R., Boy, M., Donahue, N. M., Fry, J. L., Isaksen, I. S. A., Gauss, M., Myhre, G., Anthony,
Glasius, M., Guenther, A., Hallar, A. G., Hartz,
K. M. W., and Ruppel, C.: Strong atmospheric
K. H., Petters, M. D., Petäjä, T., Rosenoern,
chemistry feedback to climate warming from ArcT., and Sullivan, A. P.: A review of the antic methane emissions, Global Biogeochem. Cycles,
thropogenic influence on biogenic secondary or25, GB2002, doi:10.1029/2010GB003845, 2011.
ganic aerosol, Atmos. Chem. Phys., 11, 321–343,
Isaksen, I. S. A., Zerefos, C., Wang, W.-C., Balis,
doi:10.5194/acp-11-321-2011, 2011a.
D., Eleftheratos, K., Rognerud, B., Stordal,
Hoyle, C. R., Marécal, V., Russo, M. R., Allen,
F., Berntsen, T. K., LaCasce, J. H., Søvde,
G., Arteta, J., Chemel, C., Chipperfield, M. P.,
O. A., Olivié, D., Orsolini, Y. J., Zyrichidou,
D’Amato, F., Dessens, O., Feng, W., Hamilton,
I., Prather, M., and Tuinder, O. N. E.: AtJ. F., Harris, N. R. P., Hosking, J. S., Lewis,
tribution of the Arctic ozone column deficit in
A. C., Morgenstern, O., Peter, T., Pyle, J. A.,
March 2011, Geophys. Res. Lett., 39, L24 810,
Reddmann, T., Richards, N. A. D., Telford, P. J.,
doi:10.1029/2012GL053876, 2012.
114

Oslo CTM3 user manual

November 6, 2018

Isaksen, I. S. A., Berntsen, T. K., Dalsøren, S. B., Kinne, S., Schulz, M., Textor, C., Guibert, S., BalkaEleftheratos, K., Orsolini, Y., Rognerud, B.,
nski, Y., Bauer, S. E., Berntsen, T., Berglen, T. F.,
Stordal, F., Søvde, O. A., Zerefos, C., and
Boucher, O., Chin, M., Collins, W., Dentener, F.,
Holmes, C. D.: Atmospheric Ozone and Methane
Diehl, T., Easter, R., Feichter, J., Fillmore, D.,
in a Changing Climate, Atmosphere, 5, 518–535,
Ghan, S., Ginoux, P., Gong, S., Grini, A., Hendoi:10.3390/atmos5030518, 2014.
dricks, J., Herzog, M., Horowitz, L., Isaksen, I.,
Iversen, T., Kirkevåg, A., Kloster, S., Koch, D.,
Jaeglé, L., Quinn, P. K., Bates, T. S., Alexander,
Kristjansson, J. E., Krol, M., Lauer, A., LamarB., and Lin, J.-T.: Global distribution of sea salt
que, J. F., Lesins, G., Liu, X., Lohmann, U.,
aerosols: new constraints from in situ and remote
Montanaro, V., Myhre, G., Penner, J., Pitari, G.,
sensing observations, Atmos. Chem. Phys., 2011.
Reddy, S., Seland, O., Stier, P., Takemura, T.,
and Tie, X.: An AeroCom initial assessment - opJaffe, D., Berntsen, T., and Isaksen, I. S. A.:
tical properties in aerosol component modules of
A global three-dimensional chemical transport
global models, Atmos. Chem. Phys., 6, 1815–1834,
model: 2. Nitrogen oxides and nonmethane hydoi:10.5194/acp-6-1815-2006, 2006.
drocarbon results, J. Geophys. Res., 102, 21 281–
21 296, doi:10.1029/96JD03400, 1997.

Kipling, Z., Stier, P., Johnson, C. E., Mann, G. W.,
Bellouin, N., Bauer, S. E., Bergman, T., Chin,
Jiao, J., Flanner, M. G., Balkanski, Y., Bauer, S. E.,
M., Diehl, T., Ghan, S. J., Iversen, T., Kirkevåg,
Bellouin, N., Berntsen, T. K., Bian, H., Carslaw,
A., Kokkola, H., Liu, X., Luo, G., van Noije, T.,
K. S., Chin, M., Luca, N. D., Diehl, T., Ghan,
Pringle, K. J., von Salzen, K., Schulz, M., Seland,
S. J., Iversen, T., Kirkevåg, A., Koch, D., Liu, X.,
Ø., Skeie, R. B., Takemura, T., Tsigaridis, K., and
Mann, G. W., Penner, J. E., Pitari, G., Schulz, M.,
Zhang, K.: What controls the vertical distribution
Seland, Ø., Skeie, R. B., Steenrod, S. D., Stier, P.,
of aerosol? Relationships between process sensitivTakemura, T., Tsigaridis, K., van Noije, T., Yun,
ity in HadGEM3-UKCA and inter-model variation
Y., and Zhang, K.: An AeroCom assessment of
from AeroCom Phase II, Atmos. Chem. Phys., 16,
black carbon in Arctic snow and sea ice, Atmos.
2221–2241, doi:10.5194/acp-16-2221-2016, 2016.
Chem. Phys., 14, 2399–2417, doi:10.5194/acp-142399-2014, 2014.
Koch, D., Schulz, M., Kinne, S., McNaughton,
C., Spackman, J. R., Balkanski, Y., Bauer, S.,
Jonson, J. E., Sundet, J. K., and Tarrason, L.: Model
Berntsen, T., Bond, T. C., Boucher, O., Chin, M.,
calculations of present and future levels of ozone
Clarke, A., De Luca, N., Dentener, F., Diehl, T.,
and ozone precursors with a global and a regional
Dubovik, O., Easter, R., Fahey, D. W., Feichter,
model, Atmospheric Environment, 35, 525–537,
J., Fillmore, D., Freitag, S., Ghan, S., Ginoux,
doi:10.1016/S1352-2310(00)00314-9, 2001.
P., Gong, S., Horowitz, L., Iversen, T., Kirkevåg,
Kanakidou, M., Dentener, F., Brasseur, G.,
A., Klimont, Z., Kondo, Y., Krol, M., Liu, X.,
Berntsen, T., Collins, W., Hauglustaine, D. A.,
Miller, R., Montanaro, V., Moteki, N., Myhre, G.,
Howling, S., Isaksen, I. S. A., Krol, M., Lawrence,
Penner, J. E., Perlwitz, J., Pitari, G., Reddy, S.,
M., Muller, J., Poisson, N., Roelofs, G., Wang,
Sahu, L., Sakamoto, H., Schuster, G., Schwarz,
Y., and Wauben, W.: 3-D global simulations
J. P., Seland, Ø., Stier, P., Takegawa, N., Takeof tropospheric CO distributions: Results of
mura, T., Textor, C., van Aardenne, J. A., and
the GIM/IGAC intercomparison 1997 exercise,
Zhao, Y.: Evaluation of black carbon estimations
Chemosphere: Global Change Science, 1, 263–282,
in global aerosol models, Atmos. Chem. Phys., 9,
doi:10.1016/S1465-9972(99)00029-X, 1999.
9001–9026, doi:10.5194/acp-9-9001-2009, 2009.
Kärcher, B. and Voigt, C.:
Formation of Koffi, B., Schulz, M., Bréon, F.-M., Griesfeller, J.,
nitric acid/water ice particles in cirrus
Winker, D., Balkanski, Y., Bauer, S., Berntsen,
clouds, Geophys. Res. Lett., 33, L08 806,
T., Chin, M., Collins, W. D., Dentener, F., Diehl,
doi:10.1029/2006GL025927, 2006.
T., Easter, R., Ghan, S., Ginoux, P., Gong, S.,
Horowitz, L. W., Iversen, T., Kirkevåg, A., Koch,
Karlsdóttir, S., Isaksen, I. S. A., Myhre, G., and
D., Krol, M., Myhre, G., Stier, P., and TakeBerntsen, T. K.: Trend analysis of O3 and CO
mura, T.: Application of the CALIOP Layer Prodin the period 1980-1996: A three-dimensional
uct to evaluate the vertical distribution of aerosols
model study, J. Geophys. Res., 105, 28 907–28 933,
estimated by global models: Part 1. AeroCom
doi:10.1029/2000JD900374, 2000.
phase I results, J. Geophys. Res., 117, D10 201,
doi:10.1029/2011JD016858, 2012.
Kasten, F.: Falling speed of aerosol particles, J.
Appl. Meteorol., 7, 944–947, doi:10.1175/1520Koffi, B., Schulz, M., Bréon, F.-M., Dentener, F.,
0450(1968)007<0944:FSOAP>2.0.CO;2, 1968.
Steensen, B. M., Griesfeller, J., Winker, D., BalkaKettle, A. J. and Andreae, M. O.: Flux of dimethylnski, Y., Bauer, S. E., Bellouin, N., Berntsen, T.,
sulfide from the oceans: A comparison of updated
Bian, H., Chin, M., Diehl, T., Easter, R., Ghan,
data sets and flux models, J. Geophys. Res., 105,
S., Hauglustaine, D. A., Iversen, T., Kirkevåg,
26 793–26 808, doi:10.1029/2000JD900252, 2000.
A., Liu, X., Lohmann, U., Myhre, G., Rasch,
115

Oslo CTM3 user manual

November 6, 2018

P., Seland, Ø., Skeie, R. B., Steenrod, S. D.,
Stier, P., Tackett, J., Takemura, T., Tsigaridis,
K., Vuolo, M. R., Yoon, J., and Zhang, K.:
Evaluation of the aerosol vertical distribution in
global aerosol models through comparison against
CALIOP measurements: AeroCom phase II results, J. Geophys. Res. Atmos., 121, 7254–7283,
doi:10.1002/2015JD024639, 2016.

Righi, M., Rumbold, S. T., Schulz, M., Skeie,
R. B., Stevenson, D. S., Strode, S., Sudo, K.,
Szopa, S., Voulgarakis, A., and Zeng, G.: The
Atmospheric Chemistry and Climate Model Intercomparison Project (ACCMIP): overview and
description of models, simulations and climate
diagnostics, Geosci. Model Dev., 6, 179–206,
doi:10.5194/gmd-6-179-2013, 2013b.

Kraabøl, A. G., Berntsen, T. K., Sundet, J. K., Lana, A., Bell, T. G., Simó, R., Vallina, S. M.,
Ballabrera-Poy, J., Kettle, A. J., Dachs, J., Bopp,
and Stordal, F.:
Impacts of NOx emisL., Saltzman, E. S., Stefels, J., Johnson, J. E.,
sions from subsonic aircraft in a global threeand Liss, P. S.: An updated climatology of surface
dimensional chemistry transport model including
dimethlysulfide concentrations and emission fluxes
plume processes, J. Geophys. Res., 107, 4655,
in the global ocean, Global Biogeochem. Cycles,
doi:10.1029/2001JD001019, 2002.
25, GB1004, doi:10.1029/2010GB003850, 2011.
Kristiansen, N. I., Stohl, A., Olivié, D. J. L.,
Croft, B., Søvde, O. A., Klein, H., Christoudias, Lawrence, M. G., Jöckel, P., and von Kuhlmann,
R.: What does the global mean OH concenT., Kunkel, D., Leadbetter, S. J., Lee, Y. H.,
tration tell us?, Atmos. Chem. Phys., 1, 37–49,
Zhang, K., Tsigaridis, K., Bergman, T., Evandoi:10.5194/acp-1-37-2001, 2001.
geliou, N., Wang, H., Ma, P.-L., Easter, R. C.,
Rasch, P. J., Liu, X., Pitari, G., Genova, G. D., Lee, D. S., Pitari, G., Grewe, V., Gierens, K.,
Zhao, S. Y., Balkanski, Y., Bauer, S. E., Faluvegi,
Penner, J. E., Petzold, A., Prather, M. J.,
G. S., Kokkola, H., Martin, R. V., Pierce, J. R.,
Schumann, U., Bais, A., Berntsen, T., IaSchulz, M., Shindell, D., Tost, H., and Zhang,
chetti, D., Lim, L. L., and Sausen, R.: TransH.: Evaluation of observed and modelled aerosol
port impacts on atmosphere and climate: Avialifetimes using radioactive tracers of opportunity
tion, Atmospheric Environment, 44, 4678–4734,
and an ensemble of 19 global models, Atmos.
doi:10.1016/j.atmosenv.2009.06.005, 2010.
Chem. Phys., 16, 3525–3561, doi:10.5194/acp-16Lee, Y. H., Lamarque, J.-F., Flanner, M. G., Jiao, C.,
3525-2016, 2016.
Shindell, D. T., Berntsen, T., Bisiaux, M. M., Cao,
Lamarque, J.-F., Bond, T. C., Eyring, V., Granier,
J., Collins, W. J., Curran, M., Edwards, R., FaluC., Heil, A., Klimont, Z., Lee, D., Liousse, C.,
vegi, G., Ghan, S., Horowitz, L. W., McConnell,
Mieville, A., Owen, B., Schultz, M. G., Shindell,
J. R., Ming, J., Myhre, G., Nagashima, T., Naik,
D., Smith, S. J., Stehfest, E., Van Aardenne, J.,
V., Rumbold, S. T., Skeie, R. B., Sudo, K., TakeCooper, O. R., Kainuma, M., Mahowald, N., Mcmura, T., Thevenon, F., Xu, B., and Yoon, J.-H.:
Connell, J. R., Naik, V., Riahi, K., and van VuEvaluation of preindustrial to present-day black
uren, D. P.: Historical (1850-2000) gridded anthrocarbon and its albedo forcing from Atmospheric
pogenic and biomass burning emissions of reacChemistry and Climate Model Intercomparison
tive gases and aerosols: methodology and appliProject (ACCMIP), Atmos. Chem. Phys., 13,
cation, Atmospheric Chemistry and Physics, 10,
2607–2634, doi:10.5194/acp-13-2607-2013, 2013.
7017–7039, doi:10.5194/acp-10-7017-2010, 2010.
LISOTDHRAC: LIS/OTD 0.5 Degree High
Resolution
Annual
Climatology
(HRAC),
Lamarque, J.-F., Dentener, F., McConnell, J.,
doi:10.5067/LIS/LIS-OTD/DATA301, 2014.
Ro, C.-U., Shaw, M., Vet, R., Bergmann, D.,
Cameron-Smith, P., Dalsoren, S., Doherty, R.,
Liu, L., Sundet, J. K., Liu, Y., Berntsen, T. K.,
Faluvegi, G., Ghan, S. J., Josse, B., Lee, Y. H.,
and Isaksen, I. S. A.: A Study of Tropospheric
MacKenzie, I. A., Plummer, D., Shindell, D. T.,
Ozone over China with a 3-D Global CTM
Skeie, R. B., Stevenson, D. S., Strode, S., Zeng, G.,
Model, Terr. Atmos. Ocean. Sci., 18, 515–545,
Curran, M., Dahl-Jensen, D., Das, S., Fritzsche,
doi:10.3319/TAO.2007.18.3.515(EA), 2007.
D., and Nolan, M.: Multi-model mean nitrogen
and sulfur deposition from the Atmospheric Chem- Liu, Y., Isaksen, I. S. A., Sundet, J. K., Xiistry and Climate Model Intercomparison Project
uji, Z., and Jianzhong, M.: Impact of aircraft
(ACCMIP): evaluation of historical and projected
NOx emission on NOx and ozone over China,
future changes, Atmos. Chem. Phys., 13, 7997–
Advances in Atmospheric Sciences, 20, 565–574,
8018, doi:10.5194/acp-13-7997-2013, 2013a.
doi:10.1007/BF02915499, 2003a.
Lamarque, J.-F., Shindell, D. T., Josse, B., Young, Liu, Y., Weiliang, L., Xiuji, Z., Isaksen, I. S. A.,
P. J., Cionni, I., Eyring, V., Bergmann, D.,
Sundet, J. K., and Jinhai, H.: The possible
Cameron-Smith, P., Collins, W. J., Doherty, R.,
influences of the increasing anthropogenic emisDalsoren, S., Faluvegi, G., Folberth, G., Ghan,
sions in India on tropospheric ozone and OH,
S. J., Horowitz, L. W., Lee, Y. H., MacKenzie,
Advances in Atmospheric Sciences, 20, 968–977,
I. A., Nagashima, T., Naik, V., Plummer, D.,
doi:10.1007/BF02915520, 2003b.
116

Oslo CTM3 user manual

November 6, 2018

Liu, Y., Isaksen, I. S. A., Sundet, J. K., He, J., and Monteith, J. L.: Principles of Enviromental Physics,
Yan, P.: NOx change over China and its influences,
Edward Arnold, London, 1973.
Advances in Atmospheric Sciences, 21, 132–140,
Mårtensson, E. M., Nilsson, E. D., de Leeuw, G.,
doi:10.1007/BF02915687, 2004.
Cohen, L. H., and Hansson, H.-C.: Laboratory
simulations and parameterization of the primary
Lund, M. T. and Berntsen, T.: Parameterization of
marine aerosol production, J. Geophys. Res., 108,
black carbon aging in the OsloCTM2 and implica4297, doi:10.1029/2002JD002263, 2003.
tions for regional transport to the Arctic, Atmos.
Chem. Phys., 12, 6999–7014, doi:10.5194/acp-12- Murray, L. T., Jacob, D. J., Logan, J. A., Hud6999-2012, 2012.
man, R. C., and Koshak, W. J.: Optimized regional and interannual variability of lightning in
Lund, M. T., Berntsen, T., and Fuglestvedt, J. S.:
a global chemical transport model constrained by
Climate impacts of short-lived climate forcers verLIS/OTD satellite data, J. Geophys. Res., 117,
sus CO2 from biodiesel: A case of the EU on-road
D20 307, doi:10.1029/2012JD017934, 2012.
sector, Environ. Sci. Technol., 48, 14 445–14 454,
doi:10.1021/es505308g, 2014a.
Myhre, C. L., Ferré, B., Platt, S. M., Silyakova, A.,
Hermansen, O., Allen, G., Pisso, I., Schmidbauer,
Lund, M. T., Berntsen, T. K., Heyes, C.,
N., Stohl, A., Pitt, J., Jansson, P., Greinert, J.,
Klimont, Z., and Samset, B. H.:
Global
Percival, C., Fjaeraa, A. M., O’Shea, S. J., Galand regional climate impacts of black carbon
lagher, M., Breton, M. L., Bower, K. N., Bauguiand co-emitted species from the on-road diesel
tte, S. J. B., Dalsøren, S., Vadakkepuliyambatta,
sector, Atmospheric Environment, 98, 50–58,
S., Fisher, R. E., Nisbet, E. G., Lowry, D., Myhre,
doi:10.1016/j.atmosenv.2014.08.033, 2014b.
G., Pyle, J. A., Cain, M., and Mienert, J.: Extensive release of methane from Arctic seabed west of
Lund, M. T., Aamaas, B., Berntsen, T., Bock, L.,
Svalbard during summer 2014 does not influence
Burkhardt, U., Fuglestvedt, J. S., and Shine, K. P.:
the atmosphere, Geophys. Res. Lett., 43, 4624–
Emission metrics for quantifying regional climate
4631, doi:10.1002/2016GL068999, 2016.
impacts of aviation, Earth Syst. Dynam., 8, 547–
563, doi:10.5194/esd-8-547-2017, 2017a.
Myhre, G.:
Consistency Between SatelliteDerived and Modeled Estimates of the DiLund, M. T., Berntsen, T. K., and Samset,
rect Aerosol Effect, Science, 325, 153–154,
B. H.: Sensitivity of black carbon concentrations
doi:10.1126/science.1176991, 2009.
and climate impact to aging and scavenging in
OsloCTM2-M7, Atmos. Chem. Phys., 17, 6003– Myhre, G., Stordal, F., Restad, K., and Isaksen,
I. S. A.: Estimation of the direct radiative forc6022, doi:10.5194/acp-17-6003-2017, 2017b.
ing due to sulfate and soot aerosols, Tellus B,
50, 463–477, doi:10.1034/j.1600-0889.1998.t01-4Marti, J. and Mauersberger, K.: A survey and new
00005.x, 1998.
measurements of ice vaopr pressure at temperatures between 170 and 250K, Geophys. Res. Lett.,
Myhre, G., Karlsdóttir, S., Isaksen, I., and
20, 363–366, doi:10.1029/93GL00105, 1993.
Stordal, F.: Radiative forcing due to changes
in tropospheric ozone in the period 1980 to
Marticorena, B. and Bergametti, G.: Modeling the
1996, J. Geophys. Res., 105, 28 935–28 942,
atmospheric dust cycle: 1. Design of a soil-derived
doi:10.1029/2000JD900187, 2000.
dust emission scheme, J. Geophys. Res., 100,
16 415–16 430, doi:10.1029/95JD00690, 1995.
McLinden, C. A., Olsen, S. C., Hannegan, B. J.,
Wild, O., Prather, M. J., and Sundet, J.: Stratosphere ozone in 3-D models: A simple chemistry
and the cross-tropopause flux, J. Geophys. Res.,
105, 14 653–14 666, doi:10.1029/2000JD900124,
2000.
Metzger, S., Dentener, F., Pandis, S., and Lelieveld,
J.: Gas/aerosol partitioning: 1. A computationally efficient model, J. Geophys. Res., 107, 4312,
doi:10.1029/2001JD001102, 2002.

Myhre, G., Berntsen, T. K., Haywood, J. M., Sundet, J. K., Holben, B. N., Johnsrud, M., and
Stordal, F.: Modeling the solar radiative impact of
aerosols from biomass burning during the Southern African Regional Science Initiative (SAFARI2000) experiment, J. Geophys. Res., 108, 8501,
doi:10.1029/2002JD002313, 2003a.
Myhre, G., Grini, A., Haywood, J. M., Stordal, F.,
Chatenet, B., Tanré, D., Sundet, J. K., and Isaksen, I. S.: Modeling the radiative impact of mineral dust during the Saharan Dust Experiment
(SHADE) campaign, J. Geophys. Res., 108, 8579,
doi:10.1029/2002JD002566, 2003b.

Monahan, E. G., Spiel, D. E., and Davidson, K. L.:
A Model of Marine Aerosol Generation Via White- Myhre, G., Stordal, F., Berglen, T. F., Sundet,
caps and Wave Disruption, in Oceanic Whitecaps
J. K., and Isaksen, I. S. A.: Uncertainties in
and Their Role in Air-Sea Exchange Processes,
the Radiative Forcing Due to Sulfate Aerosols,
Springer Netherlands, 167-174, doi:10.1007/978J. Atmos. Sci., 61, 485–498, doi:10.1175/152094-009-4668-2_16, 1986.
0469(2004)061<0485:UITRFD>2.0.CO;2, 2004.
117

Oslo CTM3 user manual

November 6, 2018

Myhre, G., Govaerts, Y., Haywood, J. M.,
Berntsen, T. K., and Lattanzio, A.:
Radiative effect of surface albedo change from
biomass burning, Geophys. Res. Lett., 32, L20 812,
doi:10.1029/2005GL022897, 2005.
Myhre, G., Grini, A., and Metzger, S.: Modelling
of nitrate and ammonium-containing aerosols in
presence of sea salt, Atmos. Chem. Phys., 6, 4809–
4821, doi:10.5194/acp-6-4809-2006, 2006.

N., Chin, M., Diehl, T., Easter, C., Feichter, J.,
Ghan, S. J., Hauglustaine, D., Iversen, T., Kinne,
S., Kirkevåg, A., Lamarque, J. F., Lin, G., Liu,
X., Lund, M. T., Luo, G., Ma, X., van Noije, T.,
Penner, J., Rasch, R. P. J., Ruiz, A., Seland, Ø.,
Skeie, R. B., Stier, P., Takemura, T., Tsigaridis,
K., Wang, Z., Xu, L., Yu, H., Yu, F., Yoon, J.-H.,
Zhang, K., Zhang, H., and Zhou, C.: Radiative
forcing of the direct aerosol effect from AeroCom
Phase II simulations, Atmos. Chem. Phys., 13,
1853–1877, doi:10.5194/acp-13-1853-2013, 2013.

Myhre, G., Bellouin, N., Berglen, T. F., Berntsen,
T. K., Boucher, O., Grini, A., Isaksen, I. S. A., Myhre, G., Aas, W., Cherian, R., Collins, W., FaluJohnsrud, M., Mishchenko, M. I., Stordal, F., and
vegi, G., Flanner, M., Forster, P., Hodnebrog,
Tanré, D.: Comparison of the radiative properØ., Klimont, Z., Lund, M. T., Mülmenstädt, J.,
ties and direct radiative effect of aerosols from a
Myhre, C. L., Olivié, D., Prather, M., Quaas,
global aerosol model and remote sensing data over
J., Samset, B. H., Schnell, J. L., Schulz, M.,
ocean, Tellus B, 597, 115–129, doi:10.1111/j.1600Shindell, D., Skeie, R. B., Takemura, T., and
0889.2006.00226.x, 2007a.
Tsyro, S.: Multi-model simulations of aerosol and
ozone radiative forcing due to anthropogenic emisMyhre, G., Stordal, F., Johnsrud, M., Kaufman,
sion changes during the period 1990-2015, Atmos.
Y. J., Rosenfeld, D., Storelvmo, T., KristjansChem. Phys., 17, 2709–2720, doi:10.5194/acp-17son, J. E., Berntsen, T. K., Myhre, A., and
2709-2017, 2017.
Isaksen, I. S. A.: Aerosol-cloud interaction inferred from MODIS satellite data and global Naik, V., Voulgarakis, A., Fiore, A. M., Horowitz,
aerosol models, Atmos. Chem. Phys., 7, 3081–
L. W., Lamarque, J.-F., Lin, M., Prather, M. J.,
3101, doi:10.5194/acp-7-3081-2007, 2007b.
Young, P. J., Bergmann, D., Cameron-Smith,
P. J., Cionni, I., Collins, W. J., Dalsøren, S. B.,
Myhre, G., Hoyle, C. R., Berglen, T. F., Johnson,
Doherty, R., Eyring, V., Faluvegi, G., Folberth,
B. T., and Haywood, J. M.: Modeling of the soG. A., Josse, B., Lee, Y. H., MacKenzie, I. A.,
lar radiative impact of biomass burning aerosols
Nagashima, T., van Noije, T. P. C., Plummer,
during the Dust and Biomass burning ExperiD. A., Righi, M., Rumbold, S. T., Skeie, R., Shinment (DABEX), J. Geophys. Res., 113, D00C16,
dell, D. T., Stevenson, D. S., Strode, S., Sudo, K.,
doi:10.1029/2008JD009857, 2008.
Szopa, S., and Zeng, G.: Preindustrial to presentday changes in tropospheric hydroxyl radical and
Myhre, G., Berglen, T. F., Hoyle, C., Christopher,
methane lifetime from the Atmospheric ChemS., Coe, H., Crosier, J., Formenti, P., Haywood,
istry and Climate Model Intercomparison Project
J., Johnsrud, M., Jones, T., Loeb, N., Osborne,
(ACCMIP), Atmos. Chem. Phys., 13, 5277–5298,
S., and Remer, L.: Modelling of chemical and
doi:10.5194/acp-13-5277-2013, 2013.
physical aerosol properties during the ADRIEX
aerosol campaign, Q.J.R. Meteorol. Soc., 135, 53– Nash, E., P Newman, J. R., and Schoeberl, M.: An
66, doi:10.1002/qj.350, 2009a.
objective determination of the polar vortex using
Ertel’s potential vorticity, J. Geophys. Res., 101,
Myhre, G., Berglen, T. F., Johnsrud, M., Hoyle,
9471–9478, doi:10.1029/96JD00066, 1996.
C. R., Berntsen, T. K., Christopher, S. A., Fahey, D. W., Isaksen, I. S. A., Jones, T. A., Kahn, Neu, J. L. and Prather, M. J.: Toward a more physR. A., Loeb, N., Quinn, P., Remer, L., Schwarz,
ical representation of precipitation scavenging in
J. P., and Yttri, K. E.: Modelled radiative forcing
global chemistry models: cloud overlap and ice
of the direct aerosol effect with multi-observation
physics and their impact on tropospheric ozone,
evaluation, Atmos. Chem. Phys., 9, 1365–1392,
Atmospheric Chemistry and Physics, 12, 3289–
doi:10.5194/acp-9-1365-2009, 2009b.
3310, doi:10.5194/acp-12-3289-2012, 2012.

Myhre, G., Shine, K., Rädel, G., Gauss, M., Isak- Neu, J. L., Prather, M. J., and Penner, J. E.:
sen, I., Tang, Q., Prather, M., Williams, J.,
Global Atmospheric Chemistry: Integrating over
van Velthoven, P., Dessens, O., Koffi, B., Szopa,
Fractional Cloud Cover, J. Geophys. Res., 112,
S., Hoor, P., Grewe, V., Borken-Kleefeld, J.,
D11 306, doi:10.1029/2006JD008007, 2007.
Berntsen, T., and Fuglestvedt, J.: Radiative forcing due to changes in ozone and methane caused by Nightingale, P. D., Malin, G., Law, C. S., Watson, A. J., Liss, P. S., Liddicoat, M. I., Boutin,
the transport sector, Atmospheric Environment,
J., and Upstill-Goddard, R. C.: In Situ Eval45, 387–394, doi:10.1016/j.atmosenv.2010.10.001,
uation of Air-Sea Gas Exchange Parameteriza2011.
tions Using Novel Conservative and Volatile TracMyhre, G., Samset, B. H., Schulz, M., Balkanski,
ers, Global Biogeochem. Cycles, 14, 373–387,
Y., Bauer, S., Berntsen, T. K., Bian, H., Bellouin,
doi:10.1029/1999GB900091, 2000.
118

Oslo CTM3 user manual

November 6, 2018

Ødemark, K., Dalsøren, S. B., Samset, B. H., Prather, M., Gauss, M., Berntsen, T., Isaksen, I.,
Berntsen, T. K., Fuglestvedt, J. S., and Myhre,
Sundet, J., Bey, I., Brasseur, G., Dentener, F.,
G.: Short-lived climate forcers from current shipDerwent, R., Stevenson, D., Grenfell, L., Hauglusping and petroleum activities in the Arctic, Atmos.
taine, D., Horowitz, L., Jacob, D., Mickley, L.,
Chem. Phys., 12, 1979–1993, doi:10.5194/acp-12Lawrence, M., von Kuhlmann, R., Muller, J.-F.,
1979-2012, 2012.
Pitari, G., Rogers, H., Johnson, M., Pyle, J., Law,
K., van Weele, M., and Wild, O.: Fresh air in
Olivier, J., Peters, J., Granier, C., Petron, G.,
the 21st century?, Geophys. Res. Lett., 30, 1100,
Müller, J. F., and Wallens, S.: Present and fudoi:10.1029/2002GL016285, 2003.
ture emissions of atmospheric compounds, POET
Prather, M. J.: Numerical advection by conservation
report #2, EU report EV K2-1999-00011, 2003.
of second-order moments, J. Geophys. Res., 91,
Ott, L. E., Pickering, K. E., Stenchikov, G. L.,
6671–6681, doi:10.1029/JD091iD06p06671, 1986.
Allen, D. J., DeCaria, A. J., Ridley, B., Lin, R.-F.,
Lang, S., and Tao, W.-K.: Production of lightning Prather, M. J., Zhu, X., Strahan, S. E., Steenrod, S. D., and Rodriguez, J. M.: QuantifyNOx and its vertical distribution calculated from
ing errors in trace species transport modeling,
three-dimensional cloud-scale chemical transport
Proc. Natl. Acad. Sci. USA, 105, 19 617–19 621,
model simulations, J. Geophys. Res., 115, D04 301,
doi:10.1073/pnas.0806541106, 2008.
doi:10.1029/2009JD011880, 2010.
Peers, P., Bellouin, N., Waquet, F., Ducos, F., Prather, M. J., Zhu, X., Tang, Q., Hsu, J., and
Neu, J. L.: An atmospheric chemist in search of
Goloub, P., Mollard, J., Myhre, G., Skeie, R. B.,
the tropopause, J. Geophys. Res., 116, D04 304,
Takemura, T., Tanré, D., Thieuleux, F., and
doi:10.1029/2010JD014939, 2011.
Zhang, K.: Comparison of aerosol optical properties above clouds between POLDER and AeroCom Prather, M. J., Hsu, J., DeLuca, N. M., Jackman,
models over the South East Atlantic Ocean during
C. H., Oman, L. D., Douglass, A. R., Fleming,
the fire season, Geophys. Res. Lett., 43, 3991–4000,
E. L., Strahan, S. E., Steenrod, S. D., Søvde, O. A.,
doi:10.1002/2016GL068222, 2016.
Isaksen, I. S. A., Froidevaux, L., and Funke, B.:
Measuring and Modeling the Lifetime of Nitrous
Peng, C., Chan, M. N., and Chan, C. K.: The HygroOxide including its Variability, J. Geophys. Res.,
scopic Properties of Dicarboxylic and Multifunc120, 5693–5705, doi:10.1002/2015JD023267, 2015.
tional Acids: Measurements and UNIFAC Predictions, Environ. Sci. Technol., 35, 4495–4501, Price, C. and Rind, D.: A Simple Lightning Padoi:10.1021/es0107531, 2001.
rameterization for Calculating Global Lightning
Distributions, J. Geophys. Res., 97, 9919–9933,
Pickering, K. E., Wang, Y. S., Tao, W. K., Price, C.,
doi:10.1029/92JD00719, 1992.
and Muller, J. F.: Vertical distributions of lightning NOx for use in regional and global chemical Price, C. and Rind, D.: What determines the
transport models, J. Geophys. Res., 103, 31 203–
cloud-to-ground lightning fraction in thunder31 216, doi:10.1029/98JD02651, 1998.
storms, Geophys. Res. Lett., 20, 463–466, doi:
10.1029/93GL00226, 1993.
Pitari, G., Mancini, E., Bregman, A., Rogers, H.,
Sundet, J., Grewe, V., and Dessens, O.: Sulphate Price, C., Penner, J., and Prather, M.: NOx from
lightning 1. Global distribution based on lightparticles from subsonic aviation: impact on upper
ning physics, J. Geophys. Res., 102, 5929–5941,
tropospheric and lower stratospheric ozone, Phys.
doi:10.1029/96JD03504, 1997.
Chem. Earth, 26, 563–569, doi:10.1016/S14641917(01)00048-4, 2001.
Quennehen, B., Raut, J.-C., Law, K. S., Daskalakis,
N., Ancellet, G., Clerbaux, C., Kim, S.-W., Lund,
Pitari, G., Iachetti, D., Genova, G. D., Luca,
M. T., Myhre, G., Olivié, D. J. L., Safieddine, S.,
N. D., Søvde, O. A., Hodnebrog, Ø., Lee,
Skeie, R. B., Thomas, J. L., Tsyro, S., Bazureau,
D. S., and Lim, L. L.: Impact of coupled NOxA., Bellouin, N., Hu, M., Kanakidou, M., Klimont,
aerosol aircraft emissions on ozone photochemistry
Z., Kupiainen, K., Myriokefalitakis, S., Quaas, J.,
and radiative forcing, Atmosphere, 6, 751–782,
Rumbold, S. T., Schulz, M., Cherian, R., Shimizu,
doi:10.3390/atmos6060751, 2015.
A., Wang, J., Yoon, S.-C., and Zhu, T.: MultiPitari, G., Cionni, I., Genova, G. D., Søvde, O. A.,
model evaluation of short-lived pollutant distribuand Lim, L.: Radiative forcing from aircraft
tions over East Asia during summer 2008, Atmos.
emissions of NOx: model calculations with CH4
Chem. Phys., 16, 10 765–10 792, doi:10.5194/acpsurface flux boundary condition, Meteorologische
16-10765-2016, 2016.
Zeitschrift, doi:10.1127/metz/2016/0776, 2016.
Reidmiller, D. R., Fiore, A. M., Jaffe, D. A.,
Prather, M.:
Fast-JX version 6.7c, available
Bergmann, D., Cuvelier, C., Dentener, F. J., Dunat: ftp://halo.ess.uci.edu/public/prather/Fast-J/,
can, B. N., Folberth, G., Gauss, M., Gong, S.,
2012.
Hess, P., Jonson, J. E., Keating, T., Lupu, A.,
119

Oslo CTM3 user manual

November 6, 2018

Marmer, E., Park, R., Schultz, M. G., Shindell,
1: Meteorology and comparison with satellite obD. T., Szopa, S., Vivanco, M. G., Wild, O., and Zuservations, Atmos. Chem. Phys., 11, 2765–2786,
ber, A.: The influence of foreign vs. North Amerdoi:10.5194/acp-11-2765-2011, 2011.
ican emissions on surface ozone in the US, Atmos. Chem. Phys., 9, 5027–5042, doi:10.5194/acp- Rypdal, K., Rive, N., Berntsen, T. K., Klimont,
Z., Mideksa, T. K., Myhre, G., and Skeie,
9-5027-2009, 2009.
R. B.: Costs and global impacts of black carRestad, K., Isaksen, I. S. A., and Berntsen, T. K.:
bon abatement strategies, Tellus B, 61, 625–641,
Global distribution of sulphate in the troposphere:
doi:10.1111/j.1600-0889.2009.00430.x, 2009.
A three-dimensional model study, Atmospheric
Environment, 32, 3593–3609, doi:10.1016/S1352- Samset, B. H. and Myhre, G.: Vertical dependence
of black carbon, sulphate and biomass burning
2310(98)00081-8, 1998.
aerosol radiative forcing, Geophys. Res. Lett., 38,
Roberts, G., Wooster, M. J., and Lagoudakis,
L24 802, doi:10.1029/2011GL049697, 2011.
E.: Annual and diurnal african biomass burning
temporal dynamics, Biogeosciences, 6, 849–866, Samset, B. H., Myhre, G., Schulz, M., Balkanski,
Y., Bauer, S., Berntsen, T. K., Bian, H., Beldoi:10.5194/bg-6-849-2009, 2009.
louin, N., Diehl, T., Easter, R. C., Ghan, S. J.,
Rogers, H., Teyssedre, H., Pitari, G., Grewe, V., van
Iversen, T., Kinne, S., Kirkevåg, A., Lamarque, J.Veltoven, P., and Sundet, J. K.: Model intercomF., Lin, G., Liu, X., Penner, J., Seland, Ø., Skeie,
parison of the transport of aircraft-like emissions
R. B., Stier, P., Takemura, T., Tsigaridis, K., and
from sub- and supersonic aircraft, Meteorol. Z., 11,
Zhang, K.: Black carbon vertical profiles strongly
151–159, doi:10.1127/0941-2948/2002/0011-0151,
affect its radiative forcing uncertainty, Atmos.
2002.
Chem. Phys., 13, 2423–2434, doi:10.5194/acp-132423-2013, 2013.
Rothman, L. S., Barbe, A., Benner, D. C., Brown,
L. R., Camy-Peyrete, C., Carleer, M. R., Chance, Samset, B. H., Myhre, G., Herber, A., Kondo, Y.,
K., Clerbaux, C., Dana, V., Devi, V. M., Fayt,
Li, S.-M., Moteki, N., Koike, M., Oshima, N.,
A., Flaud, J.-M., Gamache, R. R., Goldman, A.,
Schwarz, J. P., Balkanski, Y., Bauer, S. E., BelJacquemart, D., Jucks, K. W., Lafferty, W. J.,
louin, N., Berntsen, T. K., Bian, H., Chin, M.,
Mandin, J.-Y., Massie, S. T., Nemtchinov, V.,
Diehl, T., Easter, R. C., Ghan, S. J., Iversen,
Newnham, D. A., Perrin, A., Rinsland, C. P.,
T., Kirkevåg, A., Lamarque, J.-F., Lin, G., Liu,
Schroeder, J., Smith, K. M., Smith, M. A. H.,
X., Penner, J. E., Schulz, M., Seland, Ø., Skeie,
Tang, K., Toth, R. A., Auwera, J. V., Varanasi,
R. B., Stier, P., Takemura, T., Tsigaridis, K., and
P., and Yoshino, K.: The HITRAN molecular
Zhang, K.: Modelled black carbon radiative forcspectroscopic database: edition of 2000 including and atmospheric lifetime in AeroCom Phase
ing updates through 2001, Journal of QuantitaII constrained by aircraft observations, Atmos.
tive Spectroscopy & Radiative Transfer, 82, 5–44,
Chem. Phys., 14, 12 465–12 477, doi:10.5194/acpdoi:10.1016/S0022-4073(03)00146-8, 2003.
14-12465-2014, 2014.
Rummukainen, M.: Modeling stratospheric chemSand, M., Samset, B. H., Balkanski, Y., Bauer, S.,
istry in a global three-dimensional chemical transBellouin, N., Berntsen, T. K., Bian, H., Chin,
port model, SCTM-1. Model development, Finnish
M., Diehl, T., Easter, R., Ghan, S. J., Iversen,
Meteorological Institute Contributions, 19, 1996.
T., Kirkevåg, A., Lamarque, J.-F., Lin, G., Liu,
X., Luo, G., Myhre, G., van Noije, T., Penner,
Rummukainen, M., Isaksen, I. S. A., Rognerud,
J. E., Schulz, M., Seland, Ø., Skeie, R. B., Stier,
B., and Stordal, F.: A global model tool for
P., Takemura, T., Tsigaridis, K., Yu, F., Zhang,
three-dimensional multiyear stratospheric chemK., and Zhang, H.: Aerosols at the Poles: An Aeistry simulations: Model description and first
roCom Phase II multi-model evaluation, Atmos.
results, J. Geophys. Res., 104, 26 437–26 456,
Chem. Phys., 17, 12 197–12 218, doi:10.5194/acpdoi:10.1029/1999JD900407, 1999.
17-12197-2017.
Ruppel, M., Lund, M. T., Grythe, H., Rose, N. L.,
Weckström, J., and Korhola, A.: Comparison of Sander, S. P., Finlayson-Pitts, B. J., Friedl, R. R.,
Golden, D. M., Huie, R. E., Keller-Rudek, H.,
spheroidal carbonaceous particle (SCP) data with
Kolb, C. E., Kurylo, M. J., Molina, M. J., Moortmodelled atmospheric black carbon concentration
gat, G. K., Orkin, V. L., Ravishankara, A. R., and
and deposition, and airmass sources in northWine, P. H.: Chemical Kinetics and Photochemiern Europe, 1850-2010, Advances in Meteorology,
cal Data for Use in Atmospheric Studies, Evalua2013, 393 926, doi:10.1155/2013/393926, 2013.
tion No. 15, Tech. Rep. 06-2, Jet Propulsion LabRusso, M. R., Marécal, V., Hoyle, C. R., Arteta,
oratory, Pasadena, California Institute of TechnolJ., Chemel, C., Chipperfield, M. P., Dessens, O.,
ogy, http://jpldataeval.jpl.nasa.gov/, 2006.
Feng, W., Hosking, J. S., Telford, P. J., Wild, O.,
Yang, X., and Pyle, J. A.: Representation of trop- Sander, S. P., Abbatt, J., Barker, J. R., Burkholder,
ical deep convection in atmospheric models - Part
J. B., Friedl, R. R., Golden, D. M., Huie,
120

Oslo CTM3 user manual

November 6, 2018

R. E., Kolb, C. E., Kurylo, M. J., Moort- Shumann, U. and Huntrieser, H.: The global
gat, G. K., Orkin, V. L., and Wine, P. H.:
lightning-induced nitrogen oxides source, Atmos.
Chemical Kinetics and Photochemical Data for
Chem. Phys., 7, 3823–3907, doi:10.5194/acp-7Use in Atmospheric Studies, Evaluation No.
3823-2007, 2007.
17, Tech. Rep. 10-06, Jet Propulsion Laboratory, Pasadena, California Institute of Technology, Sietse, O. L., Hall, F. G., Collatz, G. J., Meeson, B. W., Los, S. O., Colstoun, E. B. D.,
http://jpldataeval.jpl.nasa.gov/, 2011.
and Landis, D. R.: ISLSCP II FASIR-adjusted
Schulz, M., Textor, C., Kinne, S., Balkanski, Y.,
NDVI Biophysical Parameter Fields, 1982-1998,
Bauer, S., Berntsen, T., Berglen, T., Boucher, O.,
ORNL DAAC, Oak Ridge, Tennessee, USA.,
Dentener, F., Guibert, S., Isaksen, I. S. A., Iversen,
doi:10.3334/ORNLDAAC/970, 2010.
T., Koch, D., Kirkevåg, A., Liu, X., Montanaro,
V., Myhre, G., Penner, J. E., Pitari, G., Reddy, S., Silva, R. A., West, J. J., Lamarque, J.-F., Shindell,
Seland, Ø., Stier, P., and Takemura, T.: Radiative
D. T., Collins, W. J., Dalsøren, S., Faluvegi, G.,
forcing by aerosols as derived from the AeroCom
Folberth, G., Horowitz, L. W., Nagashima, T.,
present-day and pre-industrial simulations, Atmos.
Naik, V., Rumbold, S. T., Sudo, K., Takemura,
Chem. Phys., 6, 5225–5246, doi:10.5194/acp-6T., Bergmann, D., Cameron-Smith, P., Cionni, I.,
5225-2006, 2006.
Doherty, R. M., Eyring, V., Josse, B., MacKenzie,
I. A., Plummer, D. S., Righi, M., Stevenson, D. S.,
Shettle, E. P.: Optical and radiative properties of a
Strode, S., Szopa, S., and Zeng, G.: The effect of
desert aerosol model, in: IRS ’84: Current Probfuture ambient air pollution on human premature
lems in Atmospheric Radiation: Proceedings of
mortality to 2100 using output from the ACCMIP
the International Radiation Symposium, Perugia,
model ensemble, Atmos. Chem. Phys., 2016, 9847–
Italy, 21-28 August 1984, edited by Fiocco, G.,
9862, doi:10.5194/acp-16-9847-2016, 2016.
Studies in geophysical optics and remote sensing,
pp. 74–77, A. Deepak Pub., Hampton, Va., USA,
Silva, R. A. S., West, J. J., Zhang, Y., Anen1984.
berg, S. C., Lamarque, J.-F., Shindell, D. T.,
Shettle, E. P. and Fenn, R. W.: Models for the
Collins, W. J., Dalsoren, S., Faluvegi, G., Folaerosols of the lower atmosphere and the effects of
berth, G., Horowitz, L. W., Nagashima, T., Naik,
humidity variations on their optical properties, EnV., Rumbold, S., Skeie, R., Sudo, K., Takemura,
vironmental Research Papers, p. 676, aFGL-TRT., Bergmann, D., Cameron-Smith, P., Cionni, I.,
79-0214, 1979.
Doherty, R. M., Eyring, V., Josse, B., MacKenzie, I. A., Plummer, D., Righi, M., Stevenson,
Shindell, D. T., Faluvegi, G., Stevenson, D. S.,
D. S., Strode, S., Szopa, S., and Zeng, G.: Global
Krol, M. C., Emmons, L. K., Lamarque, J.-F.,
premature mortality due to anthropogenic outPétron, G., Dentener, F. J., Ellingsen, K., Schultz,
door air pollution and the contribution of past
M. G., Wild, O., Amann, M., Atherton, C. S.,
climate change, Environ. Res. Lett., 8, 034 005,
Bergmann, D. J., Bey, I., Butler, T., Cofala, J.,
doi:10.1088/1748-9326/8/3/034005, 2013.
Collins, W. J., Derwent, R. G., Doherty, R. M.,
Drevet, J., Eskes, H. J., Fiore, A. M., Gauss, M.,
Hauglustaine, D. A., Horowitz, L. W., Isaksen, I. Simpson, D., Tuovinen, J.-P., Emberson, L., and
Ashmore, M. R.: Characteristics of an ozone
S. A., Lawrence, M. G., Montanaro, V., Müller,
deposition module II: Sensitivity analysis, WaJ.-F., Pitari, G., Prather, M. J., Pyle, J. A.,
ter, Air, and Soil Pollution, 143, 123–137,
Rast, S., Rodriguez, J. M., Sanderson, M. G.,
doi:10.1023/A:1022890603066, 2003.
Savage, N. H., Strahan, S. E., Sudo, K., Szopa,
S., Unger, N., van Noije, T. P. C., and Zeng,
G.: Multimodel simulations of carbon monoxide: Simpson, D., Benedictow, A., Berge, H., Bergström,
R., Emberson, L. D., Fagerli, H., Flechard, C. R.,
Comparison with observations and projected nearHayman, G. D., Gauss, M., Jonson, J. E., Jenkin,
future changes, J. Geophys. Res., 111, D19 306,
M. E., Nyíri, A., Richter, C., Semeena, V. S.,
doi:10.1029/2006JD007100, 2006.
Tsyro, S., Tuovinen, J.-P., Valdebenito, Á., and
Shindell, D. T., Lamarque, J.-F., Schulz, M., FlanWind, P.: The EMEP MSC-W chemical transport
ner, M., Jiao, C., Chin, M., Young, P., Lee, Y. H.,
model - technical description, Atmospheric ChemRotstayn, L., Mahowald, N., Milly, G., Faluvegi,
istry and Physics, 12, 7825–7865, doi:10.5194/acpG., Balkanski, Y., Collins, W. J., Conley, A. J.,
12-7825-2012, 2012.
Dalsøren, S. B., Easter, R., Ghan, S., Horowitz,
L., Liu, X., Myhre, G., Nagashima, T., Naik, Sindelarova1, K., Granier, C., Bouarar, I., GuenV., Rumbold, S., Skeie, R., Sudo, K., Szopa,
ther, A., Tilmes, S., Stavrakou, T., Müller, J.S., Takemura, T., Voulgarakis, A., Yoon, J.-H.,
F., Kuhn, U., Stefani, P., and Knorr, W.: Global
and Lo, F.: Radiative forcing in the ACCMIP
data set of biogenic VOC emissions calculated by
historical and future climate simulations, Atmos.
the MEGAN model over the last 30 years, Atmos.
Chem. Phys., 13, 2939–2974, doi:10.5194/acp-13Chem. Phys., 14, 9317–9341, doi:10.5194/acp-142939-2013, 2013.
9317-2014, 2014.
121

Oslo CTM3 user manual

November 6, 2018

Skeie, R. B., Berntsen, T., Myhre, G., Pedersen, Søvde, O. A., Matthes, S., Skowron, A., Iachetti,
C. A., Ström, J., Gerland, S., and Ogren, J. A.:
D., Lim, L., Owen, B., Hodnebrog, Ø., Di GenBlack carbon in the atmosphere and snow, from
ova, G., Pitari, G., Lee, D. S., Myhre, G., and
pre-industrial times until present, Atmos. Chem.
Isaksen, I. S. A.: Aircraft emission mitigation
Phys., 11, 6809–6836, doi:10.5194/acp-11-6809by changing route altitude: A multi-model esti2011, 2011a.
mate of aircraft NOx emission impact on O3 photochemistry, Atmospheric Environment, 95, 468–
Skeie, R. B., Berntsen, T. K., Myhre, G., Tanaka, K.,
479, doi:10.1016/j.atmosenv.2014.06.049„ 2014.
Kvalevåg, M. M., and Hoyle, C. R.: Anthropogenic
radiative forcing time series from pre-industrial Spivakovsky, C. M., Logan, J. A., Montzka, S. A.,
Balkanski, Y. J., Foreman-Fowler, M., Jones, D.
times until 2010, Atmos. Chem. Phys., 11, 11 827–
B. A., Horowitz, L. W., Fusco, A. C., Bren11 857, doi:10.5194/acp-11-11827-2011, 2011b.
ninkmeijer, C. A. M., Prather, M. J., Wofsy, S. C.,
Smith, M. H., Park, P. M., and Consterdine, I. E.:
and McElroy, M. B.: Three-dimensional climatoMarine aerosol concentration and estimated fluxes
logical distribution of tropospheric OH: Update
over sea, Q.J.R. Meteorol. Soc., 119, 809–824,
and evaluation, J. Geophys. Res., 105, 8931–8980,
doi:10.1002/qj.49711951211, 1993.
doi:10.1029/1999JD901006, 2000.
Sofiev, M., Soares, J., Prank, M., de Leeuw, G.,
and Kukkonen, J.: A regional-to-global model
of emission and transport of sea salt particles in
the atmosphere, J. Geophys. Res., 116, D21 302,
doi:10.1029/2010JD014713, 2011.
Solberg, S., Coddeville, P., De Backer, H., C. Forster,
Ø. H., Orsolini, Y., Uhse, K., Isaksen, I. S. A., and
Søvde, A.: European surface ozone in the extreme
summer 2003, J. Geophys. Res., 113, D07 307,
doi:10.1029/2007JD009098, 2008.
Sorteberg, A. and Hov, Ö.: Two parametrizations
of the dry deposition exchange for SO2 and NH3
in a numerical model, Atm. Env., 30, 1823–1840,
doi:10.1016/1352-2310(95)00381-9, 1996.

Stevenson, D. S., Dentener, F. J., Schultz, M. G.,
Ellingsen, K., van Noije, T. P. C., Wild, O.,
Zeng, G., Amann, M., Atherton, C. S., Bell, N.,
Bergmann, D. J., Bey, I., Butler, T., Cofala, J.,
Collins, W. J., Derwent, R. G., Doherty, R. M.,
Drevet, J., Eskes, H. J., Fiore, A. M., Gauss, M.,
Hauglustaine, D. A., Horowitz, L. W., Isaksen, I.
S. A., Krol, M. C., Lamarque, J.-F., Lawrence,
M. G., Montanaro, V., Muller, J.-F., Pitari, G.,
Prather, M. J., Pyle, J. A., Rast, S., Rodriguez,
J. M., Sanderson, M. G., Savage, N. H., Shindell,
D. T., Strahan, S. E., Sudo, K., and Szopa, S.:
Multimodel ensemble simulations of present-day
and near-future tropospheric ozone, J. Geophys.
Res., 111, D08 301, doi:10.1029/2005JD006338,
2006.

Søvde, O. A., Gauss, M., Isaksen, I. S. A., Pitari,
G., and Marizy, C.: Aircraft pollution - A fu- Stevenson, D. S., Young, P. J., Naik, V., Lamarque, J.-F., Shindell, D. T., Voulgarakis, A., Skeie,
turistic view, Atmos. Chem. Phys., 7, 3621–3632,
R. B., Dalsøren, S. B., Myhre, G., Berntsen,
doi:10.5194/acp-7-3621-2007, 2007.
T. K., Folberth, G. A., Rumbold, S. T., Collins,
W. J., MacKenzie, I. A., Doherty, R. M., Zeng,
Søvde, O. A., Gauss, M., Smyshlyaev, S. P., and IsakG., van Noije, T. P. C., Strunk, A., Bergmann,
sen, I. S. A.: Evaluation of the chemical transport
D., Cameron-Smith, P., Plummer, D. A., Strode,
model Oslo CTM2 with focus on Arctic winter
S. A., Horowitz, L., Lee, Y., Szopa, S., Sudo,
ozone depletion, J. Geophys. Res., 113, D09 304,
K., Nagashima, T., Josse, B., Cionni, I., Righi,
doi:10.1029/2007jd009240, 2008.
M., Eyring, V., Conley, A., Bowman, K. W.,
Søvde, O. A., Hoyle, C. R., Myhre, G., and Isaksen,
Wild, O., and Archibald, A.: Tropospheric
I. S. A.: The HNO3 forming branch of the HO2
ozone changes, radiative forcing and attribution
+ NO reaction: pre-industrial-to-present trends
to emissions in the Atmospheric Chemistry and
in atmospheric species and radiative forcings, AtClimate Model Inter-comparison Project (ACmospheric Chemistry and Physics, 11, 8929–8943,
CMIP), Atmos. Chem. Phys., 13, 3063–3085,
doi:10.5194/acp-11-8929-2011, 2011a.
doi:10.5194/acp-13-3063-2013, 2013.
Søvde, O. A., Orsolini, Y. J., Jackson, D. R., Stordal, Stjern, C. W. S., Samset, B. H., Myhre, G., Bian,
F., Isaksen, I. S. A., and Rognerud, B.: Estimation
H., Chin, M., Davila, Y., Dentener, F., Emmons,
of Arctic O3 loss during winter 2006/2007 using
L., Flemming, J., Haslerud, A. S., Henze, D., Jondata assimilation and comparison with a chemical
son, J. E., Kucsera, T., Lund, M. T., Schulz, M.,
transport model, Q.J.R. Meteorol. Soc., 137, 118–
Sudo, K., Takemura, T., , and Tilmes, S.: Global
128, doi:10.1002/qj.740, 2011b.
and regional radiative forcing from 20 % reductions in BC, OC and SO4 - an HTAP2 multiSøvde, O. A., Prather, M. J., Isaksen, I. S. A.,
model study, Atmos. Chem. Phys., 16, 13 579–
Berntsen, T. K., Stordal, F., Zhu, X., Holmes,
13 599, doi:10.5194/acp-16-13579-2016, 2016.
C. D., and Hsu, J.: The chemical transport model
Oslo CTM3, Geosci. Model Dev., 5, 1441–1469, Stockwell, D. Z., Giannakopoulos, C., Plantevin, P.doi:10.5194/gmd-5-1441-2012, 2012.
H., Carver, G. D., Chipperfield, M. P., Law, K. S.,
122

Oslo CTM3 user manual

November 6, 2018

Pyle, J. A., Shallcross, D. E., and Wang, K.-Y.:
Modelling NOx from lightning and its impact on
global chemical fields, Atmospheric Environment,
33, 4477–4493, doi:10.1016/S1352-2310(99)001909, 1999.

M. S., Seland, Ø., Stier, P., Takemura, T., and
Tie, X.: The effect of harmonized emissions on
aerosol properties in global models - an AeroCom
experiment, Atmos. Chem. Phys., 7, 4489–4501,
doi:10.5194/acp-7-4489-2007, 2007.

Stohl, A., Klimont, Z., Eckhardt, S., Kupiainen, K., Thomason, L. W., Poole, L. R., and Deshler,
Shevchenko, V. P., Kopeikin, V. M., and NoviT.: A global climatology of stratospheric aerosol
gatsky, A. N.: Black carbon in the Arctic: the
surface area density deduced from Stratospheric
underestimated role of gas flaring and residenAerosol and Gas Experiment II measurements:
tial combustion emissions, Atmospheric Chemistry
1984-1994, J. Geophys. Res., 102, 8967–8976,
and Physics, 13, 8833–8855, doi:10.5194/acp-13doi:10.1029/96JD02962, 1997.
8833-2013, 2013.
Tiedtke, M.:
A Comprehensive Mass Flux
Stohl, A., Aamaas, B., Amann, M., Baker, L. H., BelScheme
for
Cumulus
Parameterisation
louin, N., Berntsen, T. K., Boucher, O., Cherian,
on Large Scale Models,
Mon. Weather
R., Collins, W., Daskalakis, N., Dusinska, M., EckRev.,
117,
1779–1800,
doi:10.1175/1520hardt, S., Fuglestvedt, J. S., Harju, M., Heyes,
0493(1989)117<1779:ACMFSF>2.0.CO;2, 1989.
C., Hodnebrog, Ø., Hao, J., Im, U., Kanakidou,
M., Klimont, Z., Kupiainen, K., Law, K. S., Lund, Toon, O. B., Pollack, J. B., and Khare, B. N.: The
optical constants of several atmospheric aerosol
M. T., Maas, R., MacIntosh, C. R., Myhre, G.,
species, ammonium sulphate, aluminium oxide,
Myriokefalitakis, S., Olivié, D. J., Quaas, J., Quenand sodium chloride, J. Geophys. Res., 81, 5733–
nehen, B., Raut, J.-C., Rumbold, S., Samset,
5748, doi:10.1029/JC081i033p05733, 1976.
B. H., Schulz, M., Seland, Ø., Shine, K. P., Skeie,
R. B., Wang, S., Yttri, K. E., and Zhu, T.: Evalu- towards a mechanistic model of global soil nitric oxating the climate and air quality impacts of shortide emissions: implementation, S. and space based
lived pollutants, Atmos. Chem. Phys., 15, 10 529–
constraints: Hudman, R. C. and N. E. Moore and
10 566, doi:10.5194/acp-15-10529-2015, 2015.
A. K. Mebust and R. V. Martin and A. R. Russell and L. C. Valin and R. C. Cohen, Atmos.
Stordal, F., Isaksen, I. S. A., and Horntvedt,
Chem. Phys., 12, 7779–7795, doi:10.5194/acp-12K.:
A diabatic circulation two-dimensional
7779-2012, 2012.
model with photochemistry:
Simulations of
ozone and long-lived tracers with surface Tsigaridis, K., Daskalakis, N., Kanakidou, M.,
sources, J. Geophys. Res., 90, 5757–5776,
Adams, P. J., Artaxo, P., Bahadur, R., Balkadoi:10.1029/JD090iD03p05757, 1985.
nski, Y., Bauer, S. E., Bellouin, N., Benedetti,
A., Bergman, T., Berntsen, T. K., Beukes, J. P.,
Stull, R. B.:
An Introduction to Boundary
Bian, H., Carslaw, K. S., Chin, M., Curci, G.,
Layer Meteorology, Kluwer Academic Publishers,
Diehl, T., Easter, R. C., Ghan, S. J., Gong, S. L.,
doi:10.1007/978-94-009-3027-8, 1988.
Hodzic, A., Hoyle, C. R., Iversen, T., Jathar,
Textor, C., Schulz, M., Guibert, S., Kinne, S., BalkaS., Jimenez, J. L., Kaiser, J. W., Kirkevåg, A.,
nski, Y., Bauer, S., Berntsen, T., Berglen, T.,
Koch, D., Kokkola, H., Lee, Y. H., Lin, G., Liu,
Boucher, O., Chin, M., Dentener, F., Diehl, T.,
X., Luo, G., Ma, X., Mann, G. W., MihalopouEaster, R., Feichter, H., Fillmore, D., Ghan, S.,
los, N., Morcrette, J.-J., Müller, J.-F., Myhre,
Ginoux, P., Gong, S., Grini, A., Hendricks, J.,
G., Myriokefalitakis, S., Ng, N. L., O’Donnell, D.,
Horowitz, L., Huang, P., Isaksen, I., Iversen, I.,
Penner, J. E., Pozzoli, L., Pringle, K. J., Russell,
Kloster, S., Koch, D., Kirkevåg, A., Kristjansson,
L. M., Schulz, M., Sciare, J., Seland, Ø., Shindell,
J. E., Krol, M., Lauer, A., Lamarque, J. F., Liu,
D. T., Sillman, S., Skeie, R. B., Spracklen, D.,
X., Montanaro, V., Myhre, G., Penner, J., Pitari,
Stavrakou, T., Steenrod, S. D., Takemura, T., TiG., Reddy, S., Seland, Ø., Stier, P., Takemura, T.,
itta, P., Tilmes, S., Tost, H., van Noije, T., van
and Tie, X.: Analysis and quantification of the diZyl, P. G., von Salzen, K., Yu, F., Wang, Z.,
versities of aerosol life cycles within AeroCom, AtWang, Z., Zaveri, R. A., Zhang, H., Zhang, K.,
mos. Chem. Phys., 6, 1777–1813, doi:10.5194/acpZhang, Q., and Zhang, X.: The AeroCom eval6-1777-2006, 2006.
uation and intercomparison of organic aerosol in
global models, Atmos. Chem. Phys., 14, 10 845–
Textor, C., Schulz, M., Guibert, S., Kinne, S., Balka10 895, doi:10.5194/acp-14-10845-2014, 2014.
nski, Y., Bauer, S., Berntsen, T., Berglen, T.,
Boucher, O., Chin, M., Dentener, F., Diehl, T., Uherek, E., Halenka, T., Borken-Kleefeld, J., BalkaFeichter, J., Fillmore, D., Ginoux, P., Gong, S.,
nski, Y., Berntsen, T., Borrego, C., Gauss, M.,
Grini, A., Hendricks, J., Horowitz, L., Huang, P.,
Hoor, P., Juda-Rezler, K., Lelieveld, J., Melas,
Isaksen, I. S. A., Iversen, T., Kloster, S., Koch,
D., Rypdal, K., and Schmid, S.: Transport imD., Kirkevåg, A., Kristjansson, J. E., Krol, M.,
pacts on atmosphere and climate: Land transLauer, A., Lamarque, J. F., Liu, X., Montanaro,
port, Atmospheric Environment, 44, 4772–4816,
V., Myhre, G., Penner, J. E., Pitari, G., Reddy,
doi:10.1016/j.atmosenv.2010.01.002, 2010.
123

Oslo CTM3 user manual

November 6, 2018

van Noije, T. P. C., Eskes, H. J., Dentener, F. J., Witek, M. L., Diner, D. J., and Garay, M. J.: SatelStevenson, D. S., Ellingsen, K., Schultz, M. G.,
lite assessment of sea spray aerosol productivity:
Wild, O., Amann, M., Atherton, C. S., Bergmann,
Southern Ocean case study, J. Geophys. Res. AtD. J., Bey, I., Boersma, K. F., Butler, T., Comos., 121, 872/894, doi:10.1002/2015JD023726,
fala, J., Drevet, J., Fiore, A. M., Gauss, M.,
2016.
Hauglustaine, D. A., Horowitz, L. W., Isaksen, I.
S. A., Krol, M. C., Lamarque, J.-F., Lawrence, World Climate Research Programme: A preliminary
cloudless standard atmosphere for radiation comM. G., Martin, R. V., Montanaro, V., Müller, J.putation, Tech. Rep. WCP-112, WMO/TD No. 24,
F., Pitari, G., Prather, M. J., Pyle, J. A., Richter,
World Climate Research Programme, 1986.
A., Rodriguez, J. M., Savage, N. H., Strahan,
S. E., Sudo, K., Szopa, S., and van Roozendael,
Wu, J.: Wind-Stress coefficients over Sea surM.: Multi-model ensemble simulations of tropoface near Neutral Conditions - A Revisit, J.
spheric NO2 compared with GOME retrievals for
Phys. Oceanogr., 10, 727–740, doi:10.1175/1520the year 2000, Atmos. Chem. Phys., 6, 2943–2979,
0485(1980)010<0727:WSCOSS>2.0.CO;2, 1980.
doi:10.5194/acp-6-2943-2006, 2006.
Yienger, J. J. and II, H. L.: Empirical model
Voigt, C., Schlager, H., Luo, B. P., Dörnbrack, A.,
of global soil-biogenic NOx emissions, JourRoiger, A., Stock, P., Curtius, J., Vössing, H., Bornal of Geophysical Research, 100, 11 447–11 464,
rmann, ., Davies, S., Konopka, P., Schiller, C.,
doi:10.1029/95JD00370, 1995.
Shur, G., and Peter, T.: Nitric Acid Trihydrate
(NAT) formation at low NAT supersaturation in Young, P. J., Archibald, A. T., Bowman, K. W.,
Polar Stratospheric Clouds (PSCs), Atmos. Chem.
Lamarque, J.-F., Naik, V., Stevenson, D. S.,
Phys., 5, 1371–1380, doi:10.5194/acp-5-1371-2005,
Tilmes, S., Vougarakis, A., Wild, O., Bergmann,
2005.
D., Cameron-Smith, P., Cionni, I., Collins, W. J.,
Dalsøren, S. B., Doherty, R. M., Eyring, V., FaluVoulgarakis, A., Naik, V., Lamarque, J.-F., Shinvegi, G., Horowitz, L. W., Josse, B., Lee, Y. H.,
dell, D. T., Young, P. J., Prather, M. J., Wild,
MacKenzie, I. A., Nagashima, T., Plummer, D. A.,
O., Field, R. D., Bergmann, D., Cameron-Smith,
Righi, M., Rumbold, S. T., Skeie, R. B., ShinP., Cionni, I., Collins, W. J., Dalsøren, S. B., Dodell, D. T., Strode, S. A., Sudo, K., Szopa, S.,
herty, R. M., Eyring, V., Faluvegi, G., Folberth,
and Zeng, G.: Pre-industrial to end 21st cenG. A., Horowitz, L. W., Josse, B., McKenzie, I. A.,
tury projections of tropospheric ozone from the
Nagashima, T., Plummer, D. A., Righi, M., RumAtmospheric Chemistry and Climate Model Inbold, S. T., Stevenson, D. S., Strode, S. A., Sudo,
tercomparison Project (ACCMIP), Atmos. Chem.
K., Szopa, S., and Zeng, G.: Analysis of present
Phys., 13, 2063–2090, doi:10.5194/acp-13-2063day and future OH and methane lifetime in the
2013, 2013.
ACCMIP simulations, Atmos. Chem. Phys., 13,
2563–2587, doi:10.5194/acp-13-2563-2013, 2013.
Zender, C. S., Bian, H., and Newman, D.:
Mineral Dust Entrainment And Deposition
Wesely, M. L.: Parameterization of surface resis(DEAD) model: Description and 1990s dust
tances to gaseous dry deposition in regional-scale
climatology, J. Geophys. Res., 108, 4416,
numerical models, Atmospheric Environment, 23,
doi:10.1029/2002JD002775. Errata: Equation 1b
1293–1304, 1989.
parenthetical expression (1-0.858...) should be
White, B. R.: Soil transport by winds on Mars,
squared. Equation 10 final factor (1+u*t/u*)
J. Geophys. Res.: Solid Earth, 84, 4643–4651,
should be squared., 2003.
doi:10.1029/JB084iB09p04643, 1979.
Zerefos, C. S., Kourtidis, K. A., Melas, D., Balis, D.,
Wild, O., Sundet, J. K., Prather, M. J., Isaksen, I.
Zanis, P., Katsaros, L., Mantis, H. T., Repapis, C.,
S. A., Akimoto, H., Browell, E. V., and Oltmans,
Isaksen, I., Sundet, J., Herman, J., Bhartia, P. K.,
S. J.: Chemical transport model ozone simulations
and Calpini, B.: Photochemical Activity and Sofor spring 2001 over the western Pacific: Comparlar Ultraviolet Radiation (PAUR) Modulation Facisons with TRACE-P lidar, ozonesondes, and Totors: An overview of the project, J. Geophys. Res.,
tal Ozone Mapping Spectrometer columns, J. Geo107, 8134, doi:10.1029/2000JD000134, 2002.
phys. Res., 108, 8826, doi:10.1029/2002JD003283,
Zhang, L., Brook, J. R., and Vet, R.: A revised pa2003.
rameterization for gaseous dry deposition in airWilliams, J. E., Hodnebrog, Ø., van Velthoven,
quality models, Atmos. Chem. Phys., 3, 2067–
P. F. J., Berntsen, T. K., Dessens, O., Gauss,
2082, doi:10.1054/acp-3-2067-2003, 2003.
M., Grewe, V., Isaksen, I. S. A., Olivié, D.,
Prather, M. J., and Tang, Q.: The influence Zhang, R., Wooldridge, P. J., Abbatt, J. P. D., and
of future non-mitigated road transport emisMolina, M. J.: Physical chemistry of the sulfusions on regional ozone exceedences at global
ric acid/water binary system at low temperatures:
scale, Atmospheric Environment, 89, 633–641,
stratospheric implications, J. Phys. Chem., 97,
doi:10.1016/j.atmosenv.2014.02.041, 2014.
7351 – 7358, doi:10.1021/j100130a038, 1993.
124

Oslo CTM3 user manual

November 6, 2018

Zöger, M., Engel, A., McKenna, D. S., Schiller, C.,
Schmidt, U., and Woyke, T.: Balloon-borne in situ
measurements of stratospheric H2O, CH4 and H2
at midlatitudes, J. Geophys. Res., 104, 1817–1825,
doi:10.1029/1998JD100024, 1999.

125

Oslo CTM3 user manual

November 6, 2018

Table 32: Oslo CTM3 v1.0 wet deposition parameters (Haslerud August 2017).
Tracer
O3
OH
HO2
NO
NO3
NO2
N2O5
HONO
HNO3
HO2NO2
H2O2
CH4
CH3O2
CH3O2H
CH2O
CO
O2
N2
C2H6
C2H5O2
EtOOH
CH3CHO
MeCO3
PANX
Alkane
ROHOO
Alkene
Aromatic
ISOPRENE
MVKMACR
ISOK
H2S
DMS
Me2SO
Me2SO2
MeSO3H
MSA
SO2
SO3
SO4
SF6
Rn
omBB1fil
omFF1fil
omBF1fil
omOCNfil
omBB1fob
omFF1fob
omBF1fob
omOCNfob
bcBB1fil
bcFF1fil
bcBF1fil
bcBB1fob
bcFF1fob
bcBF1fob

SOLU CHN TCHENA TCHENB
1.00 1 1.1d-02
2400
1.00 0 2.5d+01
5300
1.00 1 4.0d+03
5900
1.00 0 1.9d-03
1400
1.00 1 2.0d+00
2000
1.00 0 1.2d-02
2500
1.00 1 2.1d+00
3400
1.00 0 4.9d+01
4800
1.00 3 2.1d+05
8700
1.00 1 1.2d+04
6900
1.00 1 7.1d+04
6800
1.00 0 1.4d-03
1600
1.00 1 2.0d+03
6600
1.00 1 3.1d+02
5200
1.00 1 3.2d+03
6800
1.00 0 9.5d-04
1300
1.00 0 1.3d-03
1500
1.00 0 6.1d-04
1300
1.00 0 1.9d-03
2300
1.00 1 2.2d+03
7200
1.00 0 3.4d+02
6000
1.00 1 1.4d+01
5600
1.00 0 1.0d-01
0
1.00 1 2.9d+00
5900
1.00 0 1.2d-03
3100
1.00 0 0.0d+00
0
1.00 0 7.4d-03
3400
1.00 0 1.5d-01
4000
1.00 0 1.3d-02
0
1.00 0 2.1d+01
7800
1.00 1 1.3d+01
7800
1.00 0 8.7d-02
2100
1.00 0 4.8d-01
3100
1.00 0 5.0d+04
0
1.00 0 5.0d+04
0
1.00 0 1.0d+08
0
1.00 3 5.0d+04
0
1.00 1 1.2d+00
3020
1.00 0 1.0d+08
0
1.00 3 1.0d+08
0
1.00 0 2.4d-04
2400
1.00 0 9.3d-03
2600
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 6 1.0d+08
0
1.00 6 1.0d+08
0
1.00 6 1.0d+08
0
1.00 6 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 6 1.0d+08
0
1.00 6 1.0d+08
0
1.00 6 1.0d+08
0

TCKAQA TCKAQB
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
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
1
0
1

126

ISCVFR IT
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
1.0d-00 1
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.0d-00 0
0.1d-00 0
0.0d-00 0
0.0d-00 0
0.1d-00 4
0.1d-00 4
0.1d-00 4
0.1d-00 4
0.2d-00 4
0.2d-00 4
0.2d-00 4
0.2d-00 4
0.1d-00 4
0.1d-00 4
0.1d-00 4
0.2d-00 4
0.2d-00 4
0.2d-00 4

Oslo CTM3 user manual

November 6, 2018

Table 33: Oslo CTM3 v1.0 wet deposition parameters continued for sea salt, mineral dust and nitrate.
Tracer
SALT01
SALT02
SALT03
SALT04
SALT05
SALT06
SALT07
SALT08
DUST01
DUST02
DUST03
DUST04
DUST05
DUST06
DUST07
DUST08
HNO3s
NH3
NH4fine
NH4coarse
NO3fine
NO3coarse

SOLU CHN TCHENA TCHENB
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 2.1d+05
8700
1.00 1 3.3d+06
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0
1.00 3 1.0d+08
0

TCKAQA TCKAQB
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
1
0
1
0
1
0
1
1
1
0
0
0
1
0
1
0
1
0
1

127

ISCVFR IT
0.1d-00 0
0.1d-00 0
0.1d-00 0
0.1d-00 0
0.1d-00 0
0.1d-00 0
0.1d-00 0
0.1d-00 0
0.5d-00 4
0.5d-00 4
0.5d-00 4
0.5d-00 4
0.5d-00 4
0.5d-00 4
0.5d-00 4
0.5d-00 4
1.0d-00 1
0.0d-00 0
0.1d-00 0
0.1d-00 0
0.1d-00 0
0.1d-00 0

Oslo CTM3 user manual

November 6, 2018

Table 34: Oslo CTM3 v1.0 wet deposition parameters continued for SOA species.
Tracer
SOAGAS11
SOAGAS21
SOAGAS31
SOAGAS41
SOAGAS51
SOAGAS12
SOAGAS22
SOAGAS32
SOAGAS42
SOAGAS52
SOAGAS13
SOAGAS23
SOAGAS33
SOAGAS43
SOAGAS53
SOAGAS61
SOAGAS62
SOAGAS71
SOAGAS72
SOAGAS81
SOAGAS82
Apine
Bpine
Sabine
D3carene
Trp_Ket
Limon
Trpolene
Trpinene
Myrcene
Ocimene
TrpAlc
Sestrp
SOAAER11
SOAAER21
SOAAER31
SOAAER41
SOAAER51
SOAAER12
SOAAER22
SOAAER32
SOAAER42
SOAAER52
SOAAER13
SOAAER23
SOAAER33
SOAAER43
SOAAER53
SOAAER61
SOAAER62
SOAAER71
SOAAER72
SOAAER81
SOAAER82

SOLU CHN TCHENA TCHENB
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+05
12
1.00 1 1.0d+04
12
1.00 1 1.0d+03
12
1.00 1 1.0d+03
12
1.00 1 1.0d+03
12
1.00 1 2.3d-02
0
1.00 1 2.3d-02
0
1.00 1 2.3d-02
0
1.00 1 2.3d-02
0
1.00 1 2.3d-02
0
1.00 1 7.0d-02
0
1.00 1 6.7d-02
0
1.00 1 6.7d-02
0
1.00 1 5.4d+01
0
1.00 1 5.4d+01
0
1.00 1 5.4d+01
0
1.00 1 4.9d-02
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0
0.80 3 1.0d+08
0

TCKAQA TCKAQB
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
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
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

128

ISCVFR IT
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
1.0d-00 0
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4
2.0d-01 4

Oslo CTM3 user manual

November 6, 2018

Table 35: ECMWF meteorological fields in netCDF4 files and in UiO binary files. Units, whether field is
instantaneous or accumulated (I/A). If field is used in Oslo CTM3, it has a CTM name. Also lists the UiO
index and file where data is found: spectral (SP), gridded 3D (GG) or gridded 2D (surface, SFC).
Field
name

CTM
name

lon
lat
ilon
ilat
hyai
hybi
data_date

XDGRD†
YDGRD†
XDEDG†
YDEDG†
ETAA†
ETAB†
—

Description

I/A

UiO
ID

UiO
file

—
—
—
—
—
—
—

—
—
—
—
—
—
—

—
—
—
—
—
—
—

—

—

—

K
m/s*cos(lat)
kg/s
m/s*cos(lat)
kg/s

I
I

130
—

SPE
—

I

—

—

s−1
s−1
kg/kg
kg/kg
kg/kg
(0–1)
kg m−2 s−1

I
I
I
I
I
I
A

138
155
133
246
247
248
212

SPE
SPE
GG
GG
GG
GG
GG

kg s−1
kg m−2 s−1

A

213

GG

A

214

GG

A

215

GG

A

217

GG

A

218

GG

I

60

GG

Unit

Longitude at grid center
Latitude at grid center
Longitude at interstices
Latitude at interstices
Hybrid sigma coordinate A at interstices
Hybrid sigma coordinate B at interstices
Date and UTC hour for data
given as YYYYMMDDHH
time_span
—
Time span of accumulated period
i.e. meteorological time step
†
Field is not read, but is calculated or read from other input.
temperature T
Temperature
U
U
Horizontal wind at grid center∗
Unit is converted in CTM:
V
V
Meridional wind at interstices∗
Unit is converted in CTM:
∗
In UiO format, U and V are calculated from vorticity and divergence:
Vorticity, relative∗
Divergence∗
qhum
Q
Specific humidity
lwc
CLDLWC
Cloud liquid water content
iwc
CLDIWC
Cloud ice water content
cfr
CLDFR
Cloud cover
cflxu
—
Mass flux into updrafts
(1/2-levels starting first level above sfc)
CWETE
Unit is converted in CTM:
cflxd
—
Mass flux into downdrafts
(1/2-levels starting first level above sfc)
CWETD
Unit is converted in CTM:
cdetu
Mass flux detrainment into updrafts
CDETU
Unit is converted in CTM:
cdetd
Mass flux detrainment into downdrafts
CDETD
Unit is converted in CTM:
convrain
—
Convective precipitation
(half-levels starting at surface)
PRECCNV Unit is converted in CTM:
lsrain
—
Large scale precipitation
(half-levels starting at surface)
PRECLS
Unit is converted in CTM:
PV
—
Potential Vorticity
PVU
Unit is converted to PVU in CTM:
Some derived 3D fields in Oslo CTM3
—
CENTU
Mass flux entrainment into updrafts
Calculated from CWETE and CDETU.
—
CENTD
Mass flux entrainment into downdrafts
Calculated from CWETD and CDETD.
—
ZOFLE
Height of grid box interstices (bottom)

129

degree
degree
degree
degree
hPa
0–1
—

East
North
East
North

s

kg s−1
kg m−3 s−1
kg s−1
kg m−3 s−1
kg s−1
kg m−2 s−1
kg s−1
kg m−2 s−1
kg s−1
K m2 kg−1 s−1
106 PV
kg s−1
kg s−1
m

Oslo CTM3 user manual

November 6, 2018

Table 36: Meteorological fields (continued).
Field
name
U10M
V10M
U10G
TDEW2M

CTM
name
SFU
SFV
—
—

T2M
BLD
BLH

SFT
—
BLH_CUR

BLH

BLH_NEXT

CHNK
CAPE
CONVPREC
DUVRS
EWSS
E
SA
FLZOH
FSR
ZSFC
GWD
HCC
ISTL1
ISTL2
ISTL3
ISTL4
LSM
LSPF
LSPREC
LGWS
LZOH
LCC
MX2T
MSLP
MCC
MGWS
MN2T
NSSS
PAR

—
—
—
—
EWSS
—
SA
—
—
—
—
—
—
—
—
—
—
—
LSPREC
—
—
—
—
—
—
—
—
NSSS
PAR

RO
SSTK
CI
SRC
SKT
ASN
RSN
SD

—
—
CI
—
—
—
—
SD

Description
10 metre U wind component
10 metre V wind component
10 metre wind gust
2 metre dewpoint temperature
to calculate specific humidity SFQ
2 metre temperature
Boundary layer dissipation
Boundary layer height
for current time step
Boundary layer height
for next time step
Boundary layer height
Set from BLH_CUR and BLH_NEXT
Charnock parameter
Convective available potential energy
Convective precipitation
Downward UV radiation at the surface
East-West surface stress
Evaporation
Forecast surface albedo
Forecast ln(surface roughness for heat)
Forecast surface roughness
Surface Geopotential
Gravity wave dissipation
High cloud cover
Ice surface temperature layer 1
Ice surface temperature layer 2
Ice surface temperature layer 3
Ice surface temperature layer 4
Land-sea mask
Large-scale precipitation fraction
Large-scale precipitation
Latitudinal component of gravity wave stress
ln(surface roughness length for heat)
Low cloud cover
Maximum temperature at 2 m
Mean sea level pressure
Medium cloud cover
Meridional component of gravity wave stress
Minimum temperature at 2m
North-South surface stress
Photosynthetically active radiation
at the surface
Runoff
Sea surface temperature-Kelvin
Sea-ice cover
Skin reservoir content
Skin temperature
Snow albedo
Snow density
Snow depth

ES
SF

ES
SF

Snow evaporation
Snowfall (conv. + strat.)

SMLT
STL1∗

SMLT
—

STL2
STL3
STL4
SUND

—
—
—
—

Snowmelt
Soil temperature level 1
∗
Erroneously called SLT1 on netCDF files
Soil temperature level 2
Soil temperature level 3
Soil temperature level 4
Sunshine duration

BLH

130

I/A
I
I
I
I

UiO
ID
165
166
49
168

UiO
file
SFC
SFC
SFC
SFC

K
W m−2
m

I
A
I

167
145
159

SFC
SFC
SFC

m

I

159

SFC

m

I

159

SFC

—
J kg−1
m
W m−2
N m−2
m of water
0–1
ln(m)
m
m2 s−2
W m−2 s
0–1
K
K
K
K
0–1
0–1
m
N m−2
ln(m)
0–1
K
Pa
0–1
N m−2
K
N m−2
W m−2

I
I
A
A
A
A
I
I
I
I
A
I
I
I
I
I
I
A
A
A
I
I
I
I
I
A
I
A
A

148
59
143
57
180
182
243
245
244
129
197
188
35
36
37
38
172
50
142
195
234
186
201
151
187
196
202
181
58

SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC

m
K
0–1
m of water
K
0–1
kg m−3
m of water
equivalent
m of water
m of water
equivalent
m of water
K

A
I
I
I
I
I
I
I

205
34
31
198
235
32
33
141

SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC

A
A

44
144

SFC
SFC

A
I

45
139

SFC
SFC

K
K
K
1

I
I
I
A

170
183
236
189

SFC
SFC
SFC
SFC

Unit
m s−1
m s−1
m s−1
K

Oslo CTM3 user manual

November 6, 2018

Table 37: Meteorological fields (continued).
Field
name
SLHF
SNSRCS
SNTRCS
pres_sfc

CTM
name
SLH
—
—
P

Description
Surface latent heat flux
Surface net solar radiation, clear sky
Surface net thermal radiation, clear sky
Surface pressure
UiO format: ln(Pa)
SSHF
SHF
Surface sensible heat flux
SSR
—
Surface solar radiation
SSRD
SSRD∗∗
Surface solar radiation downwards
STR
—
Surface thermal radiation
STRD
STRD∗∗
Surface thermal radiation downwards
TSN
—
Temperature of snow layer
TSRC
—
Top net solar radiation, clear sky
TTRC
—
Top net thermal radiation, clear sky
TSR
—
Top solar radiation
TTR
—
Top thermal radiation
TCC
—
Total cloud cover
TCIW
—
Total column ice water
TCLW
—
Total column liquid water
TCW
—
Total column water
TCWV
—
Total column water vapor
SWVL1
SWVL1∗∗ Volumetric soil water layer 1
SWVL2
—
Volumetric soil water layer 2
SWVL3
—
Volumetric soil water layer 3
SWVL4
—
Volumetric soil water layer 4
∗∗
These are available only in DUST code.
Some derived 2D fields in Oslo CTM3
—
SFQ
Specific humidity at surface
—
USTR
Friction velocity

131

Unit
W m−2
W m−2
W m−2
hPa

I/A
A
A
A
I

UiO
ID
147
210
211
152

UiO
file
SFC
SFC
SFC
SPE

W m−2
W m−2
W m−2
W m−2
W m−2
K
W m−2
W m−2
W m−2
W m−2
0–1
kg m−2
kg m−2
kg m−2
kg m−2
m m−3
m m−3
m m−3
m m−3

A
A
A
A
A
I
A
A
A
A
I
I
I
I
I
I
I
I
I

146
176
169
177
177
238
208
209
178
179
164
79
78
136
137
39
40
41
42

SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC
SFC

kg/kg
m/s

I
I

—
—

—
—

Index
2d-data, 12, 50
about the manual, 5
acknowledgements, 108
adding a subroutine, 20
advection, 23
horizontal, 23
vertical, 23
aerosol uptake, 34
aerosols
BCOC, see BCOM
DUST, see DUST
M7, see M7
nitrate, see nitrate
SALT, see SALT
SOA, see SOA
sulphate, see sulphur module
aging times, 55
air density, 22
arrays out of bounds, 97
author, 108
average cloud cover, 51
avgsav-files, 72
B-array, 14
background aerosols
stratosphere, 12
BCOM, 55
absorption, 56
aging times, 55
BC on snow, 55, 56
BCsnow, 55, 56
deposition, 56
emissions, 55
scattering, 56
secondary organic aerosols, 57
SOA, 57
wet deposition, 56
wet scavenging, 56
black carbon module, see BCOM
boundary layer mixing, 25, 65
Holtslag scheme, 25
important, 25
Prather scheme, 25
C-code, 16
C-code preprocessing system, 17
CFL criteria, 23
CH4
3D initialisation, 12
CH4 fixed at surface, 12
checking simulation, 94
chemistry, 46, 48
integrator, 45
qssa, 45
stratospheric, 48
tropospheric, 46
cloud cover, 51
average, 51

random overlap, 51
cloud2, 76
cmn_size.F90, see source code
code
big changes in existing code?, 20
where is it?, 6, 87
common blocks, 14
compiler options, 92
compilers
ifort, see intel
intel, 92
-O2, 92
-O3, 92
-auto, 92
-check bounds, 92
-check uninit, 92
-fno-alias, 92
-fomit-frame-pointer, 92
-fpp, 92
-ftz, 92
-inline-forceinline, 92
-mcmodel=medium, 92
-mp, 92
-mp1, 92
-openmp, 92
-shared-intel, 92
-traceback, 92
pfg90, see portland
portland, 92
-Mbounds, 93
-Minline, 93
-Mprefetch, 93
-Munroll, 93
-O2, 93
-O3, 93
-g, 93
-mcmodel=medium, 93
-mp, 93
compiling, 13
gmake, 13
gmake check, 13
problems, 13
contact information, 108
convection, 24
detrainment rate, 24
units, 24
downdraft mass flux, 24
fractional entrainment, 24
updraft mass flux, 24
convective activity files, 8
CPUs: how many to use?, 18
crashing, 13
CTM2 vs CTM3, 7
degraded resolution, 7
dependency generator, 9
detrainment
flux, 97
into updrafts, 97
132

Oslo CTM3 user manual

into downdrafts, 97
rate, 24, 97
detrainment rate
units, 24
diagnostics, 66
3-hourly output, 71
3D averages, 66
core, 66
3D averages, 66
e90 tracer, 67
process diagnostics, 67
STE, 67
stratosphere-troposphere-exchange, 67
e90 tracer, 67
general, 79
Oslo CTM3, 69
3-hourly output, 71
burden, 69
burden CH4 , 69
burden N2 O, 69
CH4 lifetime, 69
chemical loss, 69
chemical production, 69
emission tendencies, 71
lifetimes, 69
OH, 69
ozone column, 70
satellite profiles, 70
snapshots on θ-levels, 71
time series, 69
vertical profiles, 69, 70
processes, 67
scavenging, 80
STE, 67
stratosphere-troposphere-exchange, 67
documenting changes, 13
downdraft mass flux, 24
downloading the Oslo CTM3, 6
dry deposition, 28
aerodynamical resistance (Ra), 30
input data, 12
inside chemistry, 33
non-stomatal conductance, 31
outside chemistry, 33
quasi-laminar layer resistance (Rb), 30
stability scaling, 33
stomatal conductance, 31
surface resistance (Rc), 31
technical description: aerosols, 33
technical description: gaseous species, 29
technical description: historical note, 28
UCI, 34
VDEP, 28, 81
VDEP_OSLO, 81
DUST, 57
absorption, 59
changing size bins, 58
changing size distribution, 58
DEAD, 57
version, 60
dmt_max, 58

November 6, 2018

dmt_min, 58
erodibility, 58
erodibility factor, 58
fudge factor, 58
input files, 58
map, 90
libraries needed, 91
mobilisation dataset, 58
mobilisation map, 58
NPAR_DUST, 58
production, technical, 58
running the application, 57
scattering, 59
sinks, 59
size bins, 58
source modes, 58
sources, 58
things to watch out for, 60
wind speed variability, 59
dust module, see DUST
ec2nc4.f90, 96
emission lists, 44
emissions, 34
aircraft emissions, 40
annual, 36
biogenic, 34
biogenic emissions, 39
biomass burning, 45
CEDS, 44
CH4 emissions, 44
Bousquet, 45
chemical production, 34
datasets, 44
daylight variations, 37
diagnose, 77
DIURN, 35, 36
diurnal scaling, 36
diurnal variations, 36
DMS, 55
DMS from ocean, 37
dust, 38
ECLIPSE, 45, 56
EDGAR v4.2, 45
emission datasets, 35
forest fires, 38, see forest fires
partitions, 39
HDD, 37
heating degree day, 37
HTAP, 45
in chemistry, 34
interpolate between datasets, 35
Lamarque, 45
lightning, 40
local hour variations, 36
MEGAN, 39
input tables, 39
monthly, 36
NOx, 34
oceanic, 34
organic matter from ocean, 38
POET, 45
133

Oslo CTM3 user manual

RETRO, 45
SCALING, 35
SCENYEAR, 35
separate process, 34
setting up, 34
short term variations, 36, 37
soil, 34, 45
SPECIES, 35
sulphur module, 55
temperature variations, 37
tendency, 44
treatment, 34
UNIT, 35
variables, 77
VERT, 35
vertical distribution of 2D, 37
volcanic, 45
emissions list, Ltracer_emis.inp, 10
entrainment
into downdrafts, 24
into updrafts, 24
mass flux, 24
equivalent latitude, 64
ERA-40, 15
F90_BOUNDS_CHECK_ABORT, 97
Fast-J2, 50
fast-JX, 50, 76
cloud cover, 51
average, 51
random overlap, 51
driver, 51
PHOTOJ, 51
quadrature atmospheres, 52
solar flux, 51
files, see source code
forest fires, 38, 77
variables, 77
free format, 20
including cmn-files, 20
fudge factor, 58
full chemistry, 46
full-levels, 97
functions
AM_BIN, 84
CalcEccentricity, 81
ConvertHumidityPa2kgm3, 81
DIstomata, 81
Ea1p99, 81
Ealt99, 81
Ealti99, 81
ExposedLeafIRin, 81
FERTLZ_ADJ, 81
get_free_fileid, 75
getPulseType, 81
getTnat, 85
H2O_SAT, 84
HENRIC, 84
julianday, 79
LeafBLC, 81
LeafH, 81
LeafIROut, 81

November 6, 2018

LeafLE, 81
LHV, 81
PHIH, 74
PHIM, 74
prec_adj, 81
precipfact, 81
rate3b, 87
ResSC, 81
RHO_N_CAR, 85
RHO_S_CAR, 84
sps_ROSAS, 85
Stability, 81
SvdTk, 81
troe, 86
UnexposedLeafIRin, 81
WaterVapPres, 81
WSED, 84
X_CARS, 84
get started, 6
get the model, 6
get the user manual, 6
repository structure, 87
SVN, 6
global variables, 14
cmn_chem.f90, 14
cmn_ctm.f90, 14
cmn_diag.f90, 14
cmn_fjx.f90, 14
cmn_met.f90, 14
cmn_oslo.f90, 14
cmn_parameters.f90, 14
cmn_precision.f90, 14
cmn_sfc.f90, 14
cmn_size.F90, 14
gmake, 13
clean, 13
grid, 6
half-levels, 97
heating degree day, 37
height of layer, 90
heterogeneous chemistry, 12, 34, 49, 50
history, 5
hybrid coordinates, 7, 10
hybrid sigma coordinates, 7, 10
ICA, 76
ICA, independent column atmosphere, 9
ICA, independent column atmosphere, 51
ice scavenging, 26
ifort, see compilers
IFS, 15
IJ-blocks, 17, 48
(I,J) to (II,JJ,MP), 18
indices, 18
implicit none, 23
independent column atmosphere (ICA), 9, 51
independent column atmospheres, 76
indexing
reverse order, 18
input data, 12
134

Oslo CTM3 user manual

intel compiler, see compilers
interactive run, 93
interactive run:on 8 CPUs, 93
interactive run:program size, 93
internal chemistry loop, 16
LAI, 39, 65
land surface types, 65
leaf area index, LAI, 39, 65
libraries, 94
hdf, 94
netCDF, 94
netCDF on Abel, 94
lightning emissions, 40
horizontal distribution, 40, 42
horizontal distribution AP2002, 43
horizontal distribution other, 43
horizontal distribution UCI2015, 43
scaling factors, 43
vertical distribution, 43
linking to input data?, 12
Linoz
O3LINOZ, 67
longitude, 71
loops in Fortran, 22
Ltracer_emis.inp, 10
M7, 63
main loop, 15
Makefile, 9
BCOC, 9
COLLAPSE, 9
compiler options and optimisation, 92
DUST, 9
E90, 9
EMISDEP_TREATMENT, 9, 34
FC, 9
HNATIVE, 9
HWINDOW, 9
LINOZ, 9
LIT, 9
NITRATE, 9
OPTS, 9
OSLOCHEM, 9
SEASALT, 9
SOA, 9
STRATCHEM, 9
SULPHUR, 9
TROPCHEM, 9
VNATIVE, 9
meteorological data, 11, 15, 94
available fields, 95
convective mass flux, 97
Convert to netCDF4, 96
ec2nc4.f90, 96
ECMWF, 95
ECMWF IFS, 15
ERA-40, 15
file format, 95
GCM, 97
metTYPE, 11
netCDF4 format, 95

November 6, 2018

Oslo CTM3, 97
producing IFS data, 96
producing openIFS data, 95
Convert to netCDF4, 96
Convert to UiO binary, 96
Interpolate, 96
Retrieve reanalyses, 96
Run openIFS, 96
Read-in routine, 97
UiO binary format, 95
meteorological fields, 94
meteorological loop, 15
metTYPE, 11
mineral dust
budgets, 60
diagnostics, 60
future work, 60
mineral dust module, see DUST
model crashes, 13
model grid, 6
model setup, 8
modules, 20
common block, 20
use, 20
moments, see second order moments
negative mass, 97
after mp-splitting, 97
nitrate, 61
emissions, 62
modes, 61
physics, 61
remaining problems, 62
seasalt, 62
tracers, 62
nitrate application
box version, 63
nitrate module, see nitrate
OMP, 17
OpenMP, 17
operator split loop, 15
operator splitting, 15
organic matter module, see BCOM
Oslo 2D, 12
OsloCTM2 vs OsloCTM3, 7
out of bounds: stop, 97
parallelisation, 17
access to global indices, 18
access to IJ-block indices, 18
advection, 18
CPUs: how many to use?, 18
IDBLK, 17
IJ-blocks, 17
JDBLK, 17
layers, 18
MPBLKIB/MPBLKIE, 18
MPBLKJB/MPBLKJE, 18
MPIPAR, 17, 19
MPJPAR, 17, 19
serial run, 20
135

Oslo CTM3 user manual

writing parallelized code, 18
parameters, see variables, see variables
file cmn_size.F90, 14
PBL_KEDDY, 25
pfg90, see compilers
PFTs, 65
photochemistry, 50
JVAL_IJ, 50
photosynthetic photon flux density, PPFD, 81
physics, 64
BLH temporal interpolation, 65
equivalent latitude, 64
land surface types, 65
leaf area index, 65
potential vorticity, 64
roughness length, 66
tropopause height, 64
e90 tracer, 64
lapse rate, 64
PVU, 64
plant functional types, PFTs, 65
pmain.f90, 15
C-code, 16, 22
important notes, 16
internal chemistry loop, 16
main loop, 15
messing with pmain.f90, 16, 22
meteorological loop, 15
operator split loop, 15
sub-stepping loop, 16
polar stratospheric clouds, 49
NAT, 50
PSC1a, 50
PSC1b, 49
STS, 49
TF RZ , 49
TICE , 49
TN AT , 49
portland compiler, see compilers
potential vorticity, 64
PPFD, 81
pre-industrial emissions, 12
pre-industrial simulation, 49
pre-industrial surface, 12
precision
r4, 22
r8, 22
rAvg, 22
rMom, 22, 23
rTnd, 22
preprocessing system, 17
PRIVATE, 17
programming guidelines, 20
accessing variables, 20
adding a subroutine, 20
adding components, 20
change existing code, 20
column major order, 22
comments, 20
concentration to volume mixing ratio, 21
double precision, 22

November 6, 2018

efficient code, 21
implicit none, 23
initializing arrays, 22
looping in Fortran, 22
mass to concentration, 21
mass to volume mixing ratio, 21
row major order, 22
striding, 22
unit conversion, 21
use r8, 22
vmr to mmr, 21
publishing, 13
qssa, 45
quadrature atmospheres, 52
r4, 22
r8, 22
random cloud cover, 51
rAvg, 22
relative humidity, 90
resolution
degraded, 7
restart file, 11
retention coefficient, 26, 28, 74
reverse order, 18
revise this, 91
rMom, 22, 23
roughness length, z0, 66
roughness length, ZOI, 39
rTnd, 22
running the model, 13
crash, 13
SALT, 60
absorption, 61
budgets, 61
diagnostics, 61
flux, 60
production, 60
scattering, 61
technical information, 61
tracer names, 61
salt module, see SALT
scavenging, 25
CHN, 27
convective, 26
ice scavenging, 26
large scale, 26
LW_VOLCONC, 27
QFRAC, 27
retention coefficient, 26, 28
SOLU, 27
uptake on aerosols, 34
wet scavenging, 25
scavenging parameters, 20
sea salt module, see SALT
second order moments, 14
secondary order moments, 23
units, 23
secondary organic aerosols, 57
segmentation fault, 94
136

Oslo CTM3 user manual

serial run, 20
setup, 8
emissions list, 10
input data, 12
linking to input data?, 12
Ltracer_emis.inp, emissions list, 10
main input file, 9
Makefile, 9
meteorological data, 11
pmain, 9, 14
pre-industrial CH4 , 12
resolution, 7
restart file, 11
surface CH4 , 12
surface CH4 emissions, 12
tracer list, 10
tracer_list.d, tracer list, 10
transport options, 13
SHARED, 17
sigma coordinates, 7, 10
SOA, 57, 63
solar flux, 51
source code, 14
chem_oslo_rates.f90, 98
cmn_ctm.f90, 15
core, 14, 71
averages.f90, 72
budgets.f90, 72
cloudjx.f90, 73
cmn_chem.f90, 71
cmn_ctm.f90, 71
cmn_diag.f90, 72
cmn_fjx.f90, 72
cmn_met.f90, 72
cmn_oslo.f90, 14
cmn_parameters.f90, 71
cmn_precision.f90, 71
cmn_sfc.f90, 72
cmn_size.F90, 14–16, 20, 71
convection.f90, 73
fastjx.f90, 50, 73
grid.f90, 73
initialize.f90, 11, 73, 75
lightning.f90, 43, 73
metdata_ecmwf.f90, 73
metdata_ecmwf_uioformat.f90, 74
omp.f90, 74
p-cloud2.f, 76
p-dyn0-v2.f, 23, 76
p-dyn0.f, 23, 76
p-dyn2-v2.f, 23
p-dyn2.f, 23, 76
p-linoz.f, 76
p-phot_oc.f, 76
p-vect3.f, 76
pbl_mixing.f90, 74
pmain.f90, 74
regridding.f90, 74
scavenging_largescale_uci.f90, 74
source_uci.f90, 74
spectral_routines.f, 74

November 6, 2018

steflux.f90, 75
stt_save_load.f90, 11, 75
utilities.f90, 75
core diagnostics, 14
directory, 6
oslo, 14, 77
aerosols2fastjx.f90, 52, 78, 91
bcoc_oslo.f90, 55, 78
caribic2.f90, 78
ch4routines.f90, 33, 78
chem_oslo.f90, 79
chem_oslo_rates.f90, 79
cmn_oslo.f90, 15, 77
cnv_oslo.f90, 26, 79
dateconv.f90, 79
diagnostics_general.f90, 13, 69, 70, 79
diagnostics_scavenging.f90, 69, 80
drydeposition_oslo.f90, 28, 79
dstpsd.F90, 58
dust_oslo.f90, 57, 80
emisdep4chem_oslo.f90, 80
emissions_aircraft.f90, 40, 81
emissions_megan.f90, 81
emissions_ocean.f90, 55, 60, 82
emissions_oslo.f90, 82
emissions_volcanoes.f90, 82
emisutils_oslo.f90, 39, 82
eqsam_v03d.f90, 83
fallingaerosols.f90, 83
gmdump3hrs.f90, 71, 83
hippo.f90, 83
input_oslo.f90, 83
main_oslo.f90, 83
ncutils.f90, 83
nitrate.f90, 84
nitrate_oslo.f90, 61, 62
pchemc_ij.f90, 84
pchemc_str_ij.f90, 84
physics_oslo.f90, 64, 84
psc_microphysics.f90, 84
qssa_integrator.f90, 85
satelliteprofiles_mls.f90, 70, 85
scavenging_largescale_uci.f90, 28
seasalt.f90, 60, 85
seasaltprod.f90, 56, 60, 85
soa_oslo.f90, 85
strat_aerosols.f90, 85
strat_h2o.f90, 44, 85
strat_loss.f90, 86
strat_o3noy_clim.f90, 86
stratchem_oslo.f90, 50, 86
sulphur_oslo.f90, 86
troccinox_xxx.f90, 86
tropchem_oslo.f90, 86
utilities_oslo.f90, 21, 86
verticalprofiles_stations2.f90, 69, 87
repository, 5, 6
repository (SVN), 87
where is it?, 6, 87
STE, 67
filters, 68
137

Oslo CTM3 user manual

November 6, 2018

CALENDL, 75
CALENDR_OLD, 75
CanopyEB, 81
CanopyRad, 81
caribic2_master, 13, 78
caribic_data_to_file, 78
caribic_output, 78
CARS, 84
CFLADV, 23, 76
CFRMIN, 76
ch4_loss3, 69, 80
ch4n2o_burden, 69
ch4n2o_burden2, 80
ch4surface_hymn, 79
ch4surface_poet, 79
ch4surface_retro, 79
ch4surface_scale_hymn, 79
check_btt, 76
check_lmtrop, 84
chembud_output, 69, 80
CHEMFLUX, 75
CHEMFLUX_E90, 75
chemflux_setup, 75
CIWMIN, 76
CLDQUAD, 76
clear_oslo_variables, 83
CLOUD, 76
cloud_init, 73
CNVBDL, 74
CONVW_OC, 26
CONVW_OSLO, 73
ctm2_rdmolec2, 82
ctm2_set_partarea, 85
ctm2_set_partarea5, 85
ctm3_o3scav, 75
ctm3_pml, 75
ctmExitC, 75
ctmExitIJL, 75
ctmExitL, 75
daily_diag_output, 80
data2mpblocks, 73
DBLDBL, 73
DECAY, 76
decay_e90, 87
defineTP, 84
diag_burden_snapshot, 69, 80
DIAG_LTGL, 73
DIAG_LTSTN, 73
diag_ohch4n2o_init, 80
DIAGBLK, 73
DIAMEMP, 74
DIS_LN, 85
DISGAS, 74
distland, 73
dry2wet, 85
drydep_bousquet, 79
drydepinit, 79
drydeppart, 85
dst_psd_ini, 59
dst_psd_src_ini, 58
du_columns, 70, 80

output file, 67
stop when out of bounds, 97
stratosphere-troposphere-exchange, see STE
stratospheric chemistry, 48
2d-data, 12, 50
chemistry in LPAR?, 50
H2 O treatment, 48
heterogeneous chemistry, 50
input files, 50
Linoz, 50
microphysics, 49
sum of H2 , 49
technical information, 48
striding, 18, 22
sub-stepping loop, 16
subroutine
emis4chem, 55
subroutines, 76
ac_interp, 81
add_meganBiogenic, 81
add_oceanOCemis, 82
add_volcEMIS, 82
addtogether, 85
ADJFLX2, 73
adjust_moments, 76
aerosolsettling, 83, 91
aircraft_emis_master, 81
aircraft_emis_update, 81
aircraft_emis_vinterp, 81
aircraft_set_species, 81
aircraft_zero_400hpa, 81
AIRSET, 73, 89
AVG_ADD2, 72
AVG_CLR2, 72
AVG_P1, 72
AVG_WRT2, 72
AVG_WRT_NC4, 72
backfromZC_IJ, 86
bcoc_chetinit, 55, 78
bcoc_init, 78
bcoc_master, 78
bcoc_setdrydep, 78
bcsnow_adjustment_ij, 78
bcsnow_check_snow, 78
bcsnow_collect_ij, 78
bcsnow_diagwetrm, 78
bcsnow_getspringsummer, 78
bcsnow_init, 78
bcsnow_master, 57, 78
bcsnow_meltevap_ij, 78
bcsnow_nmet_output, 78
bcsnow_nmet_output_nc, 78
bcsnow_save_restart, 78
bcsnow_seaice_ij, 78
bcsnow_status, 78
BLKSLV, 76
BULK, 74
CaøcRadComponents, 81
CalcExtCoeff, 81
calendar, 75
calendardate, 79
138

Oslo CTM3 user manual

November 6, 2018

get_all_mpind, 74
get_asn24h, 79
get_chmcycles, 87
get_ctm2dep, 79
get_dinm, 76
get_iijjmp, 74
get_keddy_L1, 74
get_mw, 84
get_netcdf_att_char, 83
get_netcdf_r4var_1d_from_2d, 83
get_netcdf_r4var_2d_from_3d, 83
get_netcdf_r4var_3d_from_4d, 84
get_netcdf_var_1d, 83
get_netcdf_var_2d, 83
get_netcdf_var_3d, 83
get_netcdf_var_4d, 83
get_netcdf_var_dims, 83
get_new_events, 78, 83, 86
get_PARMEAN, 79
get_psc12_sad, 84
get_pvu, 84
get_satprofiles_mls, 85
get_soldecdis, 75
get_STC, 79
get_strato3noy_clim, 86
get_tropaerosols, 78
get_vdep2, 79
get_xyedges, 81, 82
getEMISX, 81
getField_and_interpolate, 75
getGAMAAER, 83
getGAMAAER_NS, 83
getHstar, 28
getRQAER, 79
getScaleFactors, 73
getVDEP_oslo, 81
getWP, 81
gfed4_init, 82
gfed4_rd, 82
gfed4_rd_novert, 82
gfed4_rd_novert_daily, 82
gfed_read3d, 82
gm_dump_nc, 83
gotData, 73
gotoZC_IJ, 86
GRAV_SETN, 83
gridICAO, 73
GROWSEASON, 81
growth_factor, 85
h2o_sat, 87
handle_err, 84
handle_error, 84
HEAPSRT, 76
HENRYS, 27, 74
HENRYSallT, 74
hippo_data_to_file, 83
hippo_master, 83
hippo_output, 83
ICANR, 76
idate2itau, 79
iiasa_read2d, 82

dump3hrs, 71, 83
DUMPTRMASS, 75
DUMPTRMASS_E90, 75
dumpuvflux, 75
dust_column, 80
dust_globalupdate, 80
dust_init, 80
dust_master, 80
dust_set_ssrd, 80
dust_set_strd, 80
dust_set_SWVL1, 80
dustbdg2d, 80
dustbdg2file, 80
dustinput_met, 80
DYN0, 76
DYN2UL, 23, 76
DYN2VL, 23, 76
DYN2W_OC, 24, 76
E2DS, 71
E2LTBL, 71
E2STBL, 71
E_GRID, 74
E_GRID_Y, 74
elevator_fractions, 79
emis4chem, 80
emis_check2dscal, 82
emis_diag, 82
emis_input, 35, 82
emis_prop, 82
emis_setscaling_2dfields, 82
emis_setscalings, 82
emis_unit, 82
emisinterp2d, 82
emissions_ocean_getChlA, 82
emissions_ocean_organiccarbon, 82
emissions_ocean_organiccarbon_init, 82
emissions_ocean_total, 82
EPZ_P, 76
EPZ_TQ, 76
EPZ_UV, 76
eqsam_v03d_sub, 83
EXTRAL, 76
falling, 85
fallspeed, 83
FFT_99, 75
FFT_DDSS, 75
FFT_RPASS, 75
FFT_SET, 75
filterLNC, 73
FINDM0, 85
flight_data_to_file, 86
flight_output, 86
FLINT, 76
fluxfilter2, 73
FM0, 85
GAMMA_AGE, 81
GAMMA_CANOPY, 81
GAMMAX, 74
GAUSST, 75
GAUSST2, 73
GEN_ID, 76
139

Oslo CTM3 user manual

November 6, 2018

nitrate_master, 84
NM2TBL, 71
nops_diag, 13, 80
ocdiags_tpset, 80
OD_LIQ, 76
OPMIE, 76
OPTICA, 76
OPTICL, 76
OPTICM, 76
oro_set, 80
OSLO_CHEM_STR_IJ, 48
OSLO_CON_RUN, 75
OSLO_CON_RUN42, 75
OSLO_CON_RUNxx, 75
OSLO_CON_SAV, 75
OSLO_RESTARTFILE_INFO, 75
oslochem_psc, 84
oslochem_strat, 86
oslochem_trop, 86
PFILTER, 76
PHOTOJ, 51, 76
photoj, 50
plevs0, 80
POLES1, 76
POLES2, 76
psadjust, 80
PSC_1d_07, 84
PSC_diagnose, 85
QCNVW2_OSLO, 73
QLIMIT2, 76
qssa, 85
qssastr, 85
QUADCA, 76
QUADMD, 76
QVECT3, 76
qvect3, 23
QXZON, 74
QZONX, 74
RAINGAS, 74
RANSET, 73
RD_JS, 73
RD_MIE, 73
RD_O1D, 73
RD_XXX, 73
read_aerocom_2d, 82
read_bcoc_bond_2d, 82
read_ceds_original, 81
read_ch4bousquet, 79
read_ch4sfc4soiluptake, 79
read_lsmask, 83
read_mass_qfyAIR_month, 81
read_o3clim, 86
read_original_res, 81
read_oslo2d2, 86
read_quantify_original, 81
read_react4c_original, 81
read_retrobbh, 82
read_tracer_list, 83
read_tradeoff_original, 81
read_volcEMIS, 82
read_volcEMIS_ACOM, 82

IJLfield2ThetaLvs, 84
ijlw2lij, 84
info_oslo, 83
info_qssa, 83
init_daily_diag, 80
init_e90, 87
init_lifetime, 80
init_oslo, 83
init_volcPATH, 82
initialize_satprofiles_mls, 85
initialize_stations, 87
initialize_tropaerosols, 78
INPUT, 73
INT_LAT, 76
INT_MID, 76
INT_SOM, 76
INTERP, 74
is_leap, 75
itau2idate, 79
JP_ATM, 76
JRATET, 76
jv_column, 51, 83
jvalues_oslo, 51, 83
KPROF, 74
KPROF2, 74
LABELG, 73
LCM, 75
LeafEB, 81
LEGGEN, 75
LEGND0, 76
LIGHTDIST, 73
LIGHTNING_ALLEN2002, 73
LIGHTNING_GMD2012, 73
LIGHTNING_OAS2015, 73
LIGHTNING_UCI2015, 73
liquid_fractions, 79
LNZ_INIT, 76
LNZ_PML, 76
LNZ_SET, 76
LNZ_SETO3, 76
load_restart_file, 11, 75
LOCSZA, 75
LOGN, 85
master_oslo, 83
megan_emis, 81
megan_emis2file, 81
megan_get_co2, 81
megan_input, 81
megan_report, 81
megan_update_metdata, 81
meri_interpol, 85
metdata_ij, 84
MIESCT, 76
model_info, 75
MOM, 85
mp_diag, 70, 80
MPBIND, 74
MPSPLIT, 74
n2o_loss3, 69, 80
NE2TBL, 71
nitrate_init, 84
140

Oslo CTM3 user manual

November 6, 2018

SETUP_SPECIES, 11, 73, 75
SETUP_UNF_OUTPUT, 73
skipData, 73
soa_diag2file_nc4, 85
soa_diag_drydep, 85
soa_diag_lsscav, 85
soa_diag_separate, 85
soa_init, 85
soa_nopsdiag, 85
soa_setdrydep, 85
SOA_v9_separate, 85
SOILNOX, 81
SolarFractions, 81
SOLARZ, 76
SOURCE, 34, 74
source_e90, 87
SPE2GP, 75
SPHERE2, 76
sps_SURF, 85
sps_WSASAS, 85
Stability, 81
STEBGT_CLR, 75
STEBGT_WRITE, 75
strat_h2o_init, 86
strat_h2o_init_clim, 86
strat_h2o_max, 86
strat_h2o_ubc, 86
strat_h2o_ubc2, 49
stratloss_oslo, 86
stratNOY_interp, 86
stratO3_interp, 86
stringUpCase, 87
sumup_burden_and_lifetimes, 69, 80
SURF_IN, 73
SWradbdg_get, 80
SZA_PN, 87
TBGT_2FILE, 80
TBGT_G, 72
TBGT_IJ, 72
TBGT_L, 72
TBGT_P0, 72
TBGT_P1, 72
TBGT_P2, 72
TCRATE_CONST_S, 86
TCRATE_HET_IJ, 50
TCRATE_TP_IJ_STR, 50
TCRATE_TP_S_IJ, 86
theta_eqlat, 84
theta_pv, 84
tnd_emis2file, 44, 80
tnd_emis_daily, 44, 80
tp_clim, 84
tp_dtdz_ij, 64, 84
tp_e90_ij, 64, 84
tp_pvu_ij, 64, 84
tpause_e90, 87
TPAUSEB, 76
tpauseb_e90, 87
tpauseb_o3, 87
TPAUSEG, 76
tracer_specific_input, 83

read_volcEMIS_HTAP, 82
READCH4, 79
reademis_2d, 82
reademis_3d, 82
reademis_stv, 82
readkasten1968, 83
readnc_1d, 83
readnc_1d_from2d, 83
readnc_2d_from3d, 83
readnc_3d_from4d, 83
report_burden_and_lifetime, 69, 80
report_ch4n2o, 69
report_negO3, 80
report_zeroinit, 73
REPORTS_CHEMISTRY, 80
reports_chemistry, 69
reportsfcch4, 79
reset_trop_h2o, 86
restart_from_CTM3avg, 75
restart_from_CTM3avg_T42, 75
saltbdg2file, 85
satprofs_master, 13
satprofs_mls_master, 85
satprofs_mls_to_file, 85
save_chemPL, 80
save_PL, 69
save_restart_file, 11, 75
SAVETRMASS, 75
scale_area, 82
scav_diag_2fileA, 80
scav_diag_2fileB, 80
scav_diag_brd, 80
scav_diag_cn, 80
scav_diag_collect_daily, 80
scav_diag_init, 80
scav_diag_ls, 80
scav_diag_put_ddep, 80
seasalt_init, 85
seasalt_master, 85
seasalt_production, 85
seasalt_production_gantt15, 85
seasalt_production_maartenson03, 85
SED, 84
sedimentation, 84
set_aer4fjx, 78
set_aer4fjx_ctm2, 78
SET_ATM, 51, 73
set_atm, 50
set_blh_ij, 25, 65
set_ch4_stt, 79
set_d_h2o, 86
set_diurnal_scalings, 36, 82
set_fam_in_trop, 86
SET_GRID, 73
set_h2_eurohydros, 86
set_psc_constants, 85
set_resultdir, 83
set_strat_h2o_b4chem, 86
set_trop_h2o_b4trsp_clim, 85
setch4sfc, 79
setdrydep, 28, 78, 79
141

Oslo CTM3 user manual

TRIDIAG, 74
troccixxx_master, 86
TRUNG4, 74
TRUNG8, 74
turbfallspeed, 83
update_ba, 85
update_ch4surface, 78
update_chemistry, 83
update_drydepvariables, 79
update_emis, 36, 38, 82
update_emis_ij, 82
update_metdata, 73
update_physics, 84
update_strat_backaer, 85
update_strat_boundaries, 50, 86
update_stratNOX, 86
update_stratNOX2, 86
update_stratNOY, 86
update_stratO3, 86
update_strato3ctm2, 86
update_tropaerosols, 78
updateSOILUPTAKEbousquet, 79
US76_Atmosphere, 87
UVCOEF, 75
volc_read1, 82
vprof_stations, 87
vprofs_master, 13, 87
vprofs_to_file, 87
WASH1, 74
WASH2, 74
WASHGAS, 74
WASHO, 74
WASHOUT0, 26
WeightSLW, 81
WETSET_CTM3, 74
wf_henry, 79
write_ducolumns, 70, 80
write_log, 75
write_snapshot, 80
write_snapshot_the, 71, 80
ZC_CONC2MASS, 86
ZC_MASS2CONC, 86
zc_strh2o, 86
ZD2UV, 75
sulphate application, 54
sulphur module, 54
absorption, 55
chemistry, 54
DMS, 55
emissions, 55
scattering, 55
sulphate, 54
surface CH4 , 12
SVN, 6, 87
add file, 88
branching, 89
checkout, 87
commit changes, 89
conflicts, 6, 88
resolving, 88
delete file, 88

November 6, 2018

diff, 89
fetching the code, 6
help, 89
log, 89
manual, 6, 87
resolve, 88
revert changes, 89
status, 88
update existing code, 6
technical notes, 89
AIR mass, 89
AIRSET, 89
layer heights, 90
relative humidity, 90
thread
cannot create, 97
tracer list, 20
tracer list, tracer_list.d, 10
tracer mapping, 14
tracer_list.d, tracer list, 10
transport, 23
transport schemes
advection, 23
boundary layer mixing, 25
convection, 24
CPU requirements, 23
secondary order moments, 23
transport options, 13
tropopause, 46
tropopause height, 64
tropospheric chemistry, 46
domain, 46
non-transported species, 46
stratospheric O3 , 46
trouble shooting, 97
unit conversion, 21
concentration to volume mixing ratio, 21
mass to concentration, 21
mass to volume mixing ratio, 21
vmr to mmr, 21
updraft mass flux, 24
variable
nmetTimeIntegrated, 65
variable names, 8
variables, 8
A0, 72
AIR, 89
AIRAVG, 72
AirEmisPath, 81
AIRMOLEC_IJ, 22, 77
AirScen, 81
AIRWET, 89
ALFA, 23
all_mp_indices, 18, 74
AMAVG, 78
atm2Pa, 72
AVOGNR, 71, 72
BBCBFC, 57
BBCBIO, 57
142

Oslo CTM3 user manual

November 6, 2018

E3DSNEW, 36, 71
E3PAR, 36
E90VMR_TP, 67
Earth radius (A0), 72
Earth radius, A0, 71
ECATNAMES, 77
ECOMP_FIR, 39, 77
elev_mass_lw, 27
EMIS_FIR, 39, 77
EMIS_IJ, 77, 80
EMISDEP_TREATMENT, 34
emisTotalsDaily, 77, 78, 80
EMISX, 81
ENT_U, 24
EPAR_FIR, 39, 77
EPAR_FIR_LM, 77
es_0C, 72
ETAA, 7, 66, 71
ETAAW, 7
ETAB, 7, 66, 71
ETABW, 7
ETPAR, 36
FF_BNAMES, 39
FF_CNAMES, 39
FF_PARTITIONS, 39
FF_PATH, 77
FF_SCALE, 39
FF_TYPE, 77
FF_YEAR, 77
FLUX_E, 24
G0, 72
GAMA, 24
GAMAB, 24
GAMACB, 24
getFlashFiles, 43
GM0000, 10
gravitational constant (G0), 72
gsd_anl, 59
H2OAVG, 78
IDBLK, 17
IDGRD, 17, 51
ILMM, 57
IMDIV, 24
IPAR, 7, 71
IPARW, 7, 71
ISCVFR, 26
IT, 26
IT258K, 74
J2kcal, 72
JDBLK, 17
JDGRD, 17, 51
JDO_A, 10, 66, 72
JDO_C, 10, 75
JDO_T, 10, 67
JDO_X, 10, 67, 75
JMPOLAR, 10
JPAR, 7, 71
JPARW, 7, 71
JPPJ, 50
JVAL_IJ, 50, 77
KBOLTZ, 72

BBCFFC, 57
bcsnow_dd_bfc, 57
bcsnow_dd_bio, 57
bcsnow_dd_ffc, 57
bcsnow_prec_bfc, 57
bcsnow_prec_bio, 57
bcsnow_prec_ffc, 57
BETA, 23
BLH, 25
BLH_CUR, 25, 65
BLH_NEXT, 25, 65
BOLTZMANN, 72
BSNOWL, 57
BTT, 14
C2PI, 72
CBIN_, 51
CENTD, 24, 97
CENTU, 24, 97
CFLLIM, 9
CH4FIELD, 77
chem_idx, 8, 15, 77
CHEMLOSS, 69
CHEMPROD, 69
CHET, 55
CHMCYCLES, 16
CHN, 26
CNV_WETL, 73
CONVWASHOUT, 78
cp_air, 72
CPI180, 72
CWETD, 24, 97
CWETE, 24, 97
d_h2o, 85
DIAGEMIS_IJ, 44, 77, 82
DINM, 78
DISSOLVEDFRAC, 28, 79
DIURN, 36
dLv_dT, 72
DMSseaconc, 37, 55, 86
dmt_max, 58
dmt_min, 58
dmt_vma, 59
DO3, 47
dobson_snapshot, 78
dobson_snapshot_ts, 78
DTADV, 16
DTCHM, 16
DTOPS, 15
dust_trsp_idx, 57
dustbinsradii, 78
DV_IJ, 77
E22dSCALE, 77
E22dTBL, 77
E2CTBL, 77
E2DS, 36
E2L2dTBL, 77
E2LocHourSCALE, 77
E2LocHourTBL, 77
E2vertSCALE, 37, 77
E2vertTBL, 77
E2vertVARS, 37
143

Oslo CTM3 user manual

November 6, 2018

N_B, 49, 84
NADV, 16, 76
NBLX, 10, 25
NDAY, 15
NDAYE, 15
NDAYI, 15
NDGRD, 17, 51
NDPX, 10
NE22dVARS, 77
NE2DS, 36
NE2LocHourVARS, 36, 77
NE2TBL, 36
NE2vertLVS, 77
NE2vertVARS, 77
NE3TBL, 36
NECAT, 36, 77
NEFIR, 39, 77
NEW_TP, 77
NLCM, 16
NMET, 15
nmetTimeIntegrated, 25
NNET, 15
NOPS, 15
NOTRPAR, 8
NPAR, 8, 14, 71
NPAR_DUST, 57
NRCHEM, 9, 16
NRMETD, 9, 15, 71
NROPSM, 9, 15
NSCX, 10, 26
NSUB, 15, 16
NTHE, 64, 84
o3lim, 79
ovr_src_snk_frc, 58
Pa2atm, 72
PARTAREA, 77, 85
partitions, 39, 44, 45, 56
PFZON, 10
Pi, 72
PR42HET, 77
preslim, 80
PSC1, 84
PSC2, 84
pvthe, 64, 71, 84
QAVG, 78
QFRAC, 26, 27, 77, 79
QFU, 67
QFV, 67
R_AIR, 71, 72
R_ATM, 71, 72
R_H2O, 72
R_UNIV, 71, 72
RANSEED, 9, 73
RESULTDIR, 78
SAT, 84
SCAV_BRD, 78
SCAV_CN, 78
SCAV_DD, 78
SCAV_DIAG, 78
SCAV_LS, 78
SCAV_MAP_DRY, 78

L380K, 64
LAER, 49
LAEROSOL, 84
LAI, 39, 65
LAI_YEAR, 65
landSurfFracType, 72
landSurfTypeFrac, 39, 65
LANDUSE_IDX, 65
LANDUSE_YEAR, 65
LBCOC, 14
LBCsnow, 57
LCLDAVG, 73
LCLDQMD, 9, 52, 73
LCLDQMN, 9, 52, 73
LCLDRANA, 9, 51, 52, 73
LCLDRANQ, 9, 52
LCONT, 10
LDEBUG, 72
LDUMP3HRS, 71, 83
LDUSTDIAG3D, 60
LELEVTEMP, 77
LEMISDEP_INCHEM, 34
LFIXMET, 10
LJCCYC, 9
LJV_AEROSOL, 52
LLPYR, 10
LMMAP, 10
LMTROP, 8, 64, 77
LMTROPAVG, 78
LMTSOM, 9
LOLD_H2OTREATMENT, 49, 85
LOSLOCSTRAT, 14
LOSLOCTROP, 14
LPAR, 7, 71
LPARW, 7, 71
LPAUZ, see LSTRATAIR_E90
LPAUZTOP, 64, 84
LPSC, 49, 84
LPSC2, 84
LSALTDIAG3D, 61
LSMASK, 72
LSTRATAIR_E90, 9, 67
LSULPHUR, 14
Lv_0C, 72
LVS2ADD2TC, 47
LW_VOLCONC, 27, 77
M_AIR, 71, 72
MAXTEMP, 72
mbl_bsn_fct, 58
MET_ROOT, 11
metCYCLE, 10
METHANEMIS, 77
metREVNR, 10
metTYPE, 10
MINTEMP, 72
MODE, 11
MPBLKIB/MPBLKIE, 18
MPBLKJB/MPBLKJE, 18
MPIPAR, 17, 19, 71
MPJPAR, 17, 19, 71
MTC, 7
144

Oslo CTM3 user manual

SCAV_MAP_WCN, 78
SCAV_MAP_WLS, 78
seasalt_flux, 60
SeaSaltScheme, 38, 56, 60
secDay, 72
secYear, 72
set_pr42het, 79
SOLU, 26
SPS_PARTAREA, 84
START_AVG, 10
str_h2o, 85
STT, 7–9, 14, 71
STT_2D_LB, 77
STT_2D_LT, 77, 86
STTAVG, 72
sumH2, 85
SUT, 14, 23, 71
SUU, 14, 23, 71
SUV, 14, 23, 71
SUW, 14, 23, 71
SVT, 14, 23, 71
SVV, 14, 23, 71
SVW, 14, 23, 71
SWT, 14, 23, 71
SWW, 14, 23, 71
TCCNVHENRY, 27, 77
TCHENA, 26
TCHENB, 26
TCKAQA, 26, 28
TCKAQB, 26
TCRATE_CONST2, 79
TCRATE_HET_IJ, 79
TCRATE_onAER, 79
TCRATE_TP_IJ_STR, 79
TCRATE_TP_IJ_TRP, 79
TCWETL, 27
TEMPAVG, 78
TEMPRANGE, 72
theqlat, 84
TK_0C, 72
TMASS, 21, 72
TMASSMIX2MOLMIX, 8, 21, 72
TMOLMIX2MASSMIX, 8, 21, 72
TNAME, 10, 20, 72
TNAMELEN, 20
TOP3, 51, 73
TOPM, 51, 73
TOPT, 51, 73
tp_hpa, 80
tp_o3, 79
TP_TYPE, 64, 84
TRACER_ID_MAX, 8, 15
TROPCHEMnegO3, 77
trsp_idx, 8, 14, 77
VDEP, 28, 72, 78
VDEP_OSLO, 81
VOLA, 84
volc_cch, 82
volc_elev, 82
volc_emis_so2, 82
volc_event_end, 82

November 6, 2018

volc_event_start, 82
volc_ii, 82
volc_jj, 82
volc_mp, 82
wnd_mdp_nbr, 59
Xchem_idx, 15, 77
XDEDG, 71
XDGRD, 7, 71
XEDG, 7, 71
XGRD, 7, 71
XSTT, 8, 77
XSTTAVG, 15, 77
XTMASS, 21, 77
XTMASSMIX2MOLMIX, 21, 77
XTMOLMIX2MASSMIX, 21, 77
XTNAME, 10, 20, 77
Xtrsp_idx, 14, 77
XZEROINIT, 78
YDEDG, 7, 71
YDGRD, 7, 71
YEDG, 7, 71
YGRD, 7, 71
ZC_LOCAL, 21
ZEROINIT, 78
ZOFLE, 7, 90
ZOI, 39
ZOI_YEAR, 66
ZPI180, 72
wet scavenging, 25
z0, 66
ZOI, 39, 66

145



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 145
Producer                        : pdfTeX-1.40.18
Creator                         : TeX
Create Date                     : 2018:11:06 11:36:54+01:00
Modify Date                     : 2018:11:06 11:36:54+01:00
Trapped                         : False
PTEX Fullbanner                 : This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) kpathsea version 6.2.3
EXIF Metadata provided by EXIF.tools

Navigation menu