UKCA Chemistry and Aerosol vn11.8 Tutorial 7: Difference between revisions
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[UKCA Chemistry and Aerosol Tutorials at vn11.8]] |
[[UKCA Chemistry and Aerosol Tutorials at vn11.8]] |
||
{| class="wikitable" border = "1px" |
|||
|- |
|||
| Difficulty || '''<span style="color:orange">MEDIUM</span>''' |
|||
|- |
|||
| Time to Complete || '''1-2 hours''' |
|||
|- |
|||
| Video instructions || '''https://youtu.be/6XqYfW2qHKY?t=541''' |
|||
|} |
|||
'''Remember to run <tt>mosrs-cache-password</tt> in your Rose suite and UM branch terminals.''' |
|||
==What you will learn in this Tutorial== |
==What you will learn in this Tutorial== |
||
Line 235: | Line 246: | ||
|} |
|} |
||
The examples below are given for 9 surface types, but you will need to make changes for |
The examples below are given for 9 surface types, but you will need to make changes for all options. |
||
'''ukca_surfddr.F90''' sets the surface resistance (in <math>sm^{-1}</math>) for each of the species dry-deposited ('''rsurf''')). If a species is not deposited onto a particular type of surface (but is deposited onto other types) then its resistance on this type can be set to a very large value ('''r_null'''). Often many species are assigned the same values. You will need to add in appropriate values for your species into the '''CASE''' statement within this routine. |
'''ukca_surfddr.F90''' sets the surface resistance (in <math>sm^{-1}</math>) for each of the species dry-deposited ('''rsurf''')). If a species is not deposited onto a particular type of surface (but is deposited onto other types) then its resistance on this type can be set to a very large value ('''r_null'''). Often many species are assigned the same values. You will need to add in appropriate values for your species into the '''CASE''' statement within this routine. |
||
Line 249: | Line 260: | ||
'''Remember''' to make the changes for '''''ALL''''' the case statements associated with the different numbers of surface types. |
'''Remember''' to make the changes for '''''ALL''''' the case statements associated with the different numbers of surface types. |
||
Notice above that NO2 and NO3 are treated the same way with the same <code>rsurf</code> values, whereas CO is treated separately. When species deposit in the same way it is possible to simplify the routine and group them together in this way. Whether this is done or not will be down to your judgement when setting the values - if species deposit in a similar way then it's possible to group them like this. If they deposit differently then you will need a new block of code. |
|||
Towards the end of the <code>ukca_surfddr.F90</code> routine there is a large <tt>IF</tt> block where modifications are made to certain species. You may also need to make modifications here or add-in new code depending on how the resistance needs to be calculated. |
Towards the end of the <code>ukca_surfddr.F90</code> routine there is a large <tt>IF</tt> block where modifications are made to certain species. You may also need to make modifications here or add-in new code depending on how the resistance needs to be calculated. |
||
Line 284: | Line 297: | ||
You were given the hint: |
You were given the hint: |
||
* ''You will need to make changes for both dry deposition schemes. The changes to '''ukca_surfddr.F90''' can be made very easily by adding '''ALICE''' |
* ''You will need to make changes for both dry deposition schemes. The changes to '''ukca_surfddr.F90''' can be made very easily by adding equivalent options for '''ALICE''' where '''CO''' is found.'' |
||
For a working Rose suite that has completed this task, please see |
For a working Rose suite that has completed this task, please see |
||
* ''' |
* '''vm:''' <code>u-ca024@182833</code> |
||
* '''vm:''' <code>u-as297@60160</code> |
|||
The specific Rose changes made are: |
The specific Rose changes made are: |
||
⚫ | |||
⚫ | |||
* '''ARCHER:''' https://code.metoffice.gov.uk/trac/roses-u/changeset/60203/a/s/2/9/2/trunk |
|||
⚫ | |||
⚫ | |||
'''ARCHER:''' |
|||
Index: app/fcm_make/rose-app.conf |
Index: app/fcm_make/rose-app.conf |
||
=================================================================== |
=================================================================== |
||
--- app/fcm_make/rose-app.conf (revision |
--- app/fcm_make/rose-app.conf (revision 182668) |
||
+++ app/fcm_make/rose-app.conf (revision |
+++ app/fcm_make/rose-app.conf (revision 182833) |
||
@@ - |
@@ -43,4 +43,4 @@ |
||
thread_utils=false |
|||
stash_version=1A |
|||
timer_version=3A |
timer_version=3A |
||
um_rev= |
um_rev=$BASE_UM_REV |
||
-um_sources=branches/dev/lukeabraham/ |
-um_sources=branches/dev/lukeabraham/vn11.8_UKCA_Tutorial_Solns@94024 |
||
+um_sources=branches/dev/lukeabraham/ |
+um_sources=branches/dev/lukeabraham/vn11.8_UKCA_Tutorial_Solns@94072 |
||
These differences can be found in the file '''<code>/ |
These differences can be found in the file '''<code>Tutorials/vn11.8/worked_solutions/Task07.1/Task07.1_rose.patch</code>'''. |
||
⚫ | |||
⚫ | |||
⚫ | |||
Index: app/fcm_make/rose-app.conf |
|||
=================================================================== |
|||
--- app/fcm_make/rose-app.conf (revision 59986) |
|||
+++ app/fcm_make/rose-app.conf (revision 60160) |
|||
⚫ | |||
stash_version=1A |
|||
timer_version=3A |
|||
um_rev=vn10.9 |
|||
-um_sources=branches/dev/lukeabraham/vn10.9_UKCA_Tutorial_Solns@46619 |
|||
+um_sources=branches/dev/lukeabraham/vn10.9_UKCA_Tutorial_Solns@46683 |
|||
The specific UM changes made are: |
|||
Index: src/atmosphere/UKCA/ukca_chem_master.F90 |
Index: src/atmosphere/UKCA/ukca_chem_master.F90 |
||
=================================================================== |
=================================================================== |
||
--- src/atmosphere/UKCA/ukca_chem_master.F90 (revision |
--- src/atmosphere/UKCA/ukca_chem_master.F90 (revision 94024) |
||
+++ src/atmosphere/UKCA/ukca_chem_master.F90 (revision |
+++ src/atmosphere/UKCA/ukca_chem_master.F90 (revision 94072) |
||
@@ - |
@@ -96,7 +96,7 @@ |
||
! |
! Define size of master chemistry |
||
INTEGER, PARAMETER :: n_chch_master = |
INTEGER, PARAMETER :: n_chch_master = 329 ! number of known species |
||
INTEGER, PARAMETER :: n_het_master = |
INTEGER, PARAMETER :: n_het_master = 18 ! number of heterogeneous reactions |
||
-INTEGER, PARAMETER :: n_dry_master = |
-INTEGER, PARAMETER :: n_dry_master = 149 ! number of dry deposition reactions |
||
+INTEGER, PARAMETER :: n_dry_master = |
+INTEGER, PARAMETER :: n_dry_master = 150 ! number of dry deposition reactions |
||
INTEGER, PARAMETER :: n_wet_master = |
INTEGER, PARAMETER :: n_wet_master = 106 ! number of wet deposition reactions |
||
INTEGER, PARAMETER :: n_bimol_master= |
INTEGER, PARAMETER :: n_bimol_master= 855 ! number of bimolecular reactions |
||
INTEGER, PARAMETER :: n_ratj_master = |
INTEGER, PARAMETER :: n_ratj_master = 158 ! number of photolysis reactions |
||
@@ - |
@@ -845,7 +845,7 @@ |
||
! 271 DD:141, ANHY ~ MALANHY (327) |
|||
⚫ | |||
chch_t1( |
chch_t1(271,'ANHY ',1,'TR ',' ',1,0,cs,0,0,107), & |
||
! 272 |
|||
chch_t1(115,'oXYLENE ',1,'TR ',' ',0,0,1,R,0,0,107),& |
|||
-chch_t1( |
-chch_t1(272,'ALICE ',1,'TR ',' ',0,0,st,0,0,111), & |
||
+chch_t1( |
+chch_t1(272,'ALICE ',1,'TR ',' ',1,0,st,0,0,111), & |
||
! 273 |
|||
chch_t1(117,'BOB ',1,'TR ',' ',0,0,0,ST,0,0,107)/) |
|||
⚫ | |||
⚫ | |||
/) |
|||
! Heterogeneous chemistry |
|||
@@ - |
@@ -6708,7 +6708,15 @@ |
||
0. |
0.26, 0.00, 0.13, 0.00, 0.00, 0.00,& ! DD:141.3 |
||
0. |
0.00, 0.00, 0.00, 0.00, 0.00, 0.00,& ! DD:141.4 |
||
0. |
0.00, 0.00, 0.00, 0.00, 0.00, 0.00/),& ! DD:141.5 |
||
- cs,0,0,107) & |
|||
- TI,A,0,107) /) |
|||
+ cs,0,0,107), & |
|||
+ TI,A,0,107),& |
|||
+! UKCA Tutorial Task7.1 |
+! UKCA Tutorial Task7.1 |
||
+depvel_t( |
+depvel_t(150,'ALICE ',& |
||
+(/0.00, 0.00, 0.00, 0.00, 0.00, 0.00,& |
+(/0.00, 0.00, 0.00, 0.00, 0.00, 0.00,& |
||
+ 0.03, 0.03, 0.03, 0.03, 0.03, 0.03,& |
+ 0.03, 0.03, 0.03, 0.03, 0.03, 0.03,& |
||
Line 359: | Line 357: | ||
+ 0.03, 0.03, 0.03, 0.03, 0.03, 0.03,& |
+ 0.03, 0.03, 0.03, 0.03, 0.03, 0.03,& |
||
+ 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/),& |
+ 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/),& |
||
+ st,0,0,111) & |
|||
+ ST,0,0,107) /) |
|||
/) |
|||
! ---------------------------------------------------------------------- |
|||
! determine which chemistry is to be used. Test here that only one scheme is |
|||
! selected. |
|||
Index: src/atmosphere/UKCA/ukca_surfddr.F90 |
Index: src/atmosphere/UKCA/ukca_surfddr.F90 |
||
=================================================================== |
=================================================================== |
||
--- src/atmosphere/UKCA/ukca_surfddr.F90 (revision |
--- src/atmosphere/UKCA/ukca_surfddr.F90 (revision 94024) |
||
+++ src/atmosphere/UKCA/ukca_surfddr.F90 (revision |
+++ src/atmosphere/UKCA/ukca_surfddr.F90 (revision 94072) |
||
@@ - |
@@ -729,7 +729,7 @@ |
||
ELSE |
|||
r_null,12500.0, 500.0,12500.0 /) |
|||
rsurf(:,n)=tenpointzero |
|||
END IF |
|||
- CASE ('CO ') |
- CASE ('CO ') |
||
+ CASE ('CO ','ALICE ') |
+ CASE ('CO ','ALICE ') |
||
IF (l_fix_improve_drydep) THEN |
|||
rsurf(:,n)=(/ 3700.0, 7300.0, 4550.0, 1960.0, 4550.0, & |
|||
rsurf(:,n)=(/ 3700.0, 7300.0, 4550.0, 1960.0, 4550.0, & |
|||
r_null, r_null, 4550.0, r_null /) |
|||
@@ - |
@@ -910,7 +910,7 @@ |
||
rsurf(:,n)=rooh |
rsurf(:,n)=rooh |
||
CASE ('NH3 ') |
CASE ('NH3 ') |
||
Line 382: | Line 380: | ||
- CASE ('CO ') |
- CASE ('CO ') |
||
+ CASE ('CO ','ALICE ') |
+ CASE ('CO ','ALICE ') |
||
rsurf(1:6,n)=(/ 3700.0,3700.0,3700.0,7300.0,7300.0,4550.0 /) |
rsurf(1:6,n)=(/ 3700.0,3700.0,3700.0,7300.0,7300.0,4550.0 /) |
||
! Shrub+bare soil set to C3 grass (guess) |
! Shrub+bare soil set to C3 grass (guess) |
||
CASE ('CH4 ') |
CASE ('CH4 ') |
||
@@ - |
@@ -1043,7 +1043,7 @@ |
||
rsurf(7:13,n)=(/ 618.6,648.6,784.3,888.9,4000.0,1290.3,4000.0 /) |
rsurf(7:13,n)=(/ 618.6,648.6,784.3,888.9,4000.0,1290.3,4000.0 /) |
||
CASE ('NH3 ') |
CASE ('NH3 ') |
||
Line 391: | Line 389: | ||
- CASE ('CO ') |
- CASE ('CO ') |
||
+ CASE ('CO ','ALICE ') |
+ CASE ('CO ','ALICE ') |
||
rsurf(7:13,n)=(/ 1960.0,4550.0,4550.0,r_null,r_null,4550.0,r_null /) |
rsurf(7:13,n)=(/ 1960.0,4550.0,4550.0,r_null,r_null,4550.0,r_null /) |
||
! Shrub+bare soil set to C3 grass (guess) |
! Shrub+bare soil set to C3 grass (guess) |
||
CASE ('HCHO ') |
CASE ('HCHO ') |
||
@@ - |
@@ -1154,7 +1154,7 @@ |
||
CASE ('NH3 ') |
CASE ('NH3 ') |
||
rsurf(7:17,n)=(/ 209.8,209.8,196.1,196.1,196.1, & |
rsurf(7:17,n)=(/ 209.8,209.8,196.1,196.1,196.1, & |
||
185.8,196.1,180.7,148.9,213.5,215.1 /) |
185.8,196.1,180.7,148.9,213.5,215.1 /) |
||
- CASE ('CO ') |
- CASE ('CO ') |
||
+ CASE ('CO ','ALICE ') |
+ CASE ('CO ','ALICE ') |
||
rsurf(7:17,n)=(/ 4550.0,4550.0,1960.0,1960.0,1960.0, & |
rsurf(7:17,n)=(/ 4550.0,4550.0,1960.0,1960.0,1960.0, & |
||
4550.0,4550.0,r_null,r_null,4550.0,r_null /) |
4550.0,4550.0,r_null,r_null,4550.0,r_null /) |
||
! Shrub+bare soil set to C3 grass (guess) |
! Shrub+bare soil set to C3 grass (guess) |
||
@@ - |
@@ -1252,7 +1252,7 @@ |
||
CASE ('NH3 ') |
CASE ('NH3 ') |
||
rsurf(18:27,n)=(/ 215.1,215.1,215.1,215.1,215.1, & |
rsurf(18:27,n)=(/ 215.1,215.1,215.1,215.1,215.1, & |
||
215.1,215.1,215.1,215.1,215.1 /) |
215.1,215.1,215.1,215.1,215.1 /) |
||
- CASE ('CO ') |
- CASE ('CO ') |
||
+ CASE ('CO ','ALICE ') |
+ CASE ('CO ','ALICE ') |
||
rsurf(18:27,n)=(/ r_null,r_null,r_null,r_null,r_null, & |
rsurf(18:27,n)=(/ r_null,r_null,r_null,r_null,r_null, & |
||
r_null,r_null,r_null,r_null,r_null /) |
r_null,r_null,r_null,r_null,r_null /) |
||
! Shrub+bare soil set to C3 grass (guess) |
! Shrub+bare soil set to C3 grass (guess) |
||
@@ -2393,7 +2393,8 @@ |
|||
END DO |
|||
END DO |
|||
⚫ | |||
- ELSE IF (speci(nldepd(j)) == 'CO ') THEN |
|||
+ ELSE IF ( (speci(nldepd(j)) == 'CO ') & |
|||
+ .OR. (speci(nldepd(j)) == 'ALICE ')) THEN |
|||
! Only assign values for CO if microbes are active. |
|||
! Shrub and bare soil are assumed to be tundra if latitude > 60N; |
|||
Index: src/atmosphere/UKCA/ukca_aerod.F90 |
Index: src/atmosphere/UKCA/ukca_aerod.F90 |
||
=================================================================== |
=================================================================== |
||
--- src/atmosphere/UKCA/ukca_aerod.F90 (revision |
--- src/atmosphere/UKCA/ukca_aerod.F90 (revision 94024) |
||
+++ src/atmosphere/UKCA/ukca_aerod.F90 (revision |
+++ src/atmosphere/UKCA/ukca_aerod.F90 (revision 94072) |
||
@@ - |
@@ -162,6 +162,7 @@ |
||
m_arnoh17, & |
|||
⚫ | |||
m_anhy, & |
|||
⚫ | |||
m_cri, & |
|||
d0(j) = d_h2o * SQRT(m_h2o / m_monoterp) |
|||
+ m_ALICE, & |
|||
m_air |
|||
USE c_rmol, ONLY: rmol |
|||
⚫ | |||
⚫ | |||
! m_cri = 150 (same as sec_org) => d0(j) = 0.72e-5 |
|||
⚫ | |||
- END SELECT |
|||
+ CASE ('ALICE ') |
+ CASE ('ALICE ') |
||
+ d0(j) = d_h2o * SQRT(m_h2o / m_ALICE) |
+ d0(j) = d_h2o * SQRT(m_h2o / m_ALICE) |
||
+ END SELECT |
|||
END DO |
END DO |
||
! |
! |
||
DO j = 1, ndepd |
|||
These differences can be found in the file '''<code>/ |
These differences can be found in the file '''<code>Tutorials/vn11.8/worked_solutions/Task07.1/Task07.1_code.patch</code>'''. |
||
Sample output from this task can be found at '''<code>/ |
Sample output from this task can be found at '''<code>Tutorials/vn11.8/sample_output/Task07.1/atmosa.pa19810901_00</code>'''. |
||
==Checklist== |
==Checklist== |
Latest revision as of 17:09, 28 February 2022
UKCA Chemistry and Aerosol Tutorials at vn11.8
Difficulty | MEDIUM |
Time to Complete | 1-2 hours |
Video instructions | https://youtu.be/6XqYfW2qHKY?t=541 |
Remember to run mosrs-cache-password in your Rose suite and UM branch terminals.
What you will learn in this Tutorial
In this tutorial you will learn how the two UKCA dry deposition schemes are implemented. You will then make changes to allow one of your new tracers to be dry-deposited.
Task 7.1: adding new dry deposition values
TASK 7.1: You should now add in the dry deposition of ALICE. This species deposits in a similar way to CO. The values for depvel_defs_strattrop are:
Surface Type | Summer (day) | Summer (night) | Summer (24h ave) | Winter (day) | Winter (night) | Winter (24h ave) |
---|---|---|---|---|---|---|
Water | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Forest | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 |
Grass | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 |
Desert | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 |
Ice | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
i.e. the same as for CO.
Hint |
---|
You will need to make changes for both dry deposition schemes. The changes to ukca_surfddr.F90 can be made very easily by adding equivalent options for ALICE where CO is found. |
Adding Dry Deposition
UKCA uses two different dry-deposition schemes:
- A simple 2D parameterisation described by Giannakopoulos (1999)[1], Ganzeveld and Lelieveld (1995)[2], and Sander and Crutzen (1996)[3].
- A more detailed interactive parameterisation, based on the Wesely scheme (Wesely, 1989; Sanderson 2007)[4,5]
The default scheme is the interactive scheme, which is chosen by setting l_ukca_intdd
to true in the UKCA panel.
Note: If you are using the interactive scheme and wish to add new values to it, you will also need to add values to the 2D scheme as well, otherwise you will get an error.
During this tutorial you will be tasked with adding the dry deposition of one of your new tracers.
References
- Giannakopoulos, C., M. P. Chipperfield, K. S. Law, and J. A. Pyle (1999), Validation and intercomparison of wet and dry deposition schemes using 210Pb in a global three-dimensional off-line chemical transport model, J. Geophys. Res., 104(D19), 23761–23784, doi:10.1029/1999JD900392.
- Ganzeveld, L., and J. Lelieveld (1995), Dry deposition parameterization in a chemistry general circulation model and its influence on the distribution of reactive trace gases, J. Geophys. Res., 100(D10), 20999–21012, doi:10.1029/95JD02266.
- Sander, R., and P. J. Crutzen (1996), Model study indicating halogen activation and ozone destruction in polluted air masses transported to the sea, J. Geophys. Res., 101(D4), 9121–9138, doi:10.1029/95JD03793.
- M.L. Wesely, Parameterization of surface resistances to gaseous dry deposition in regional-scale numerical models, Atmospheric Environment (1967), Volume 23, Issue 6, 1989, Pages 1293-1304, ISSN 0004-6981, http://dx.doi.org/10.1016/0004-6981(89)90153-4.
- Sanderson, M. G., Collins, W. J., Hemming, D. L. and Betts, R. A. (2007), Stomatal conductance changes due to increasing carbon dioxide levels: Projected impact on surface ozone levels. Tellus B, 59: 404–411. doi: 10.1111/j.1600-0889.2007.00277.x
Chemistry Scheme Specification
The default is to use the 2D scheme, although it is advisable to use the interactive scheme. Within the UKCA code, whether a species is dry deposited or not is controlled in the ukca_chem_master.F90
file. In the chch_defs_master
array there are lines like
! 6 DD: 3,WD: 2,
! No dry deposition for NO3 in RAQ/S/T schemes.
chch_t1( 6,'NO3 ',1,'TR ','NOx ',0,1,r+s+t,0,0,107), &
chch_t1( 6,'NO3 ',1,'TR ','NOx ',1,1,ti+st+cs,0,0,107), &
chch_t1( 6,'NO3 ',1,'CF ','NOx ',0,0,ol,0,0,107), &
Where the 1 in the 6th column turns on dry deposition of that species (being 0 otherwise). You will need to change the 0 to a 1 for the species that you wish to now dry deposit.
2D Dry Deposition Scheme
The deposition velocities for the 2D scheme are defined in the depvel_defs_master
array, which is held in the ukca_chem_master.F90
module. This is a large derived type containing a length 30 array, usually formatted to be made up of size (6,5) blocks (for ease of reading), of the format
N |
'SPECIES '
| ||||
Summer (day) velocity over water | Summer (night) velocity over water | Summer (24h ave.) velocity over water | Winter (day) velocity over water | Winter (night) velocity over water | Winter (24h ave.) velocity over water |
Summer (day) velocity over forest | Summer (night) velocity over forest | Summer (24h ave.) velocity over forest | Winter (day) velocity over forest | Winter (night) velocity over forest | Winter (24h ave.) velocity over forest |
Summer (day) velocity over grass | Summer (night) velocity over grass | Summer (24h ave.) velocity over grass | Winter (day) velocity over grass | Winter (night) velocity over grass | Winter (24h ave.) velocity over grass |
Summer (day) velocity over desert | Summer (night) velocity over desert | Summer (24h ave.) velocity over desert | Winter (day) velocity over desert | Winter (night) velocity over desert | Winter (24h ave.) velocity over desert |
Summer (day) velocity over ice | Summer (night) velocity over ice | Summer (24h ave.) velocity over ice | Winter (day) velocity over ice | Winter (night) velocity over ice | Winter (24h ave.) velocity over ice |
SCHEME |
QUALIFIER |
DISQUALIFIER |
VN
|
and are in cm/s. The desert category is not used, and only the day and night values are considered in the calculation of the dry-deposition velocities. Examples of these values are
depvel_t(1,'O3 ',& ! (Ganzeveld & Lelieveld (1995) note 1) ! (modified to be the same as Guang version) (/0.05, 0.05, 0.05, 0.05, 0.05, 0.05,& ! DD: 1.1 0.85, 0.30, 0.65, 0.65, 0.25, 0.45,& ! DD: 1.2 0.65, 0.25, 0.45, 0.65, 0.25, 0.45,& ! DD: 1.3 0.18, 0.18, 0.18, 0.18, 0.18, 0.18,& ! DD: 1.4 0.05, 0.05, 0.05, 0.05, 0.05, 0.05/),& ! DD: 1.5 ti+st+cs,0,0,107), & ! 2* depvel_t(1,'O3 ', & (/0.05, 0.05, 0.05, 0.05, 0.05, 0.05, & 1.00, 0.11, 0.56, 0.26, 0.11, 0.19, & 1.00, 0.37, 0.69, 0.59, 0.46, 0.53, & 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, & 0.05, 0.05, 0.05, 0.05, 0.05, 0.05/), & t+r,0,0,107), & ! 3** ! O3 (Ganzeveld& Lelieveld (1995) - note 1) depvel_t(1,'O3 ', & (/0.07, 0.07, 0.07, 0.07, 0.07, 0.07, & 1.00, 0.11, 0.56, 0.26, 0.11, 0.19, & 1.00, 0.37, 0.69, 0.59, 0.46, 0.53, & 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, & 0.07, 0.07, 0.07, 0.07, 0.07, 0.07/), & s,0,0,107), &
Note: as you can see above, this definition makes use of the N
, SCHEME
, QUALIFIER
, DISQUALIFIER
, and VN
format, and the settings for these are the same as in the adding new tracers tutorial, although here N
should be incremented for each new deposition, where there might be the same species specified several times with changes to deposition velocities.
This scheme is controlled in ukca_ddeprt.F90
. The deposition only occurs in the bottom (i.e. 'surface') layer.
Interactive Dry Deposition Scheme
Adding in new species to the interactive scheme is slightly more involved than for the 2D scheme. This scheme is controlled from the ukca_ddepctl.F90 routine which is called from ukca_chemistry_ctl.F90. The two routines ukca_aerod.F90 and ukca_surfddr.F90 contain species specific information, and it is these routines that need to be altered to add in values for a new species. Further details on this scheme can be found in the The UKCA UM documentation paper.
When using this scheme, dry deposition can either occur throughout the boundary layer or from just the lowest model (i.e. surface) layer. This is controlled by the namelist variable l_ukca_ddep_lev1
in the UKCA panel.
Changes to ukca_aerod.F90
This routine calculates the aerodynamic and quasi-laminar surface resistances. The species dependant information that is needed is the diffusion coefficient, d0 (in units of ). By default this is set to -1 if the species is not deposited. If it is deposited, and there are no values for this coefficient in the literature, it is suggested that is calculated as
Where is the relative molecular mass of H2O, and is the relative molecular mass of the species being deposited, and is the diffusion coefficient for H2O (2.08E-5 ).
You should add in an appropriate value for the new species that you are depositing in the CASE statement in this routine. Examples of how this is already done are
CASE ('O3 ','NO2 ','O3S ','NO3 ') d0(j) = 1.4e-5 CASE ('HONO ') d0(j) = d_h2o * SQRT(m_h2o / m_hono)
Note: If you have not yet defined a M_species value for your new species, you will need to do this in ukca_constants.F90
.
Changes to ukca_surfddr.F90
The Wesely scheme considers 9, 13, 17, or 27 different surface types:
9 Surface Types | 13 Surface Types | 17 Surface Types | 27 Surface Types |
---|---|---|---|
5 Plant Functional Types | 9 Plant Functional Types | 13 Plant Functional Types | 13 Plant Functional Types |
|
|
|
|
The examples below are given for 9 surface types, but you will need to make changes for all options.
ukca_surfddr.F90 sets the surface resistance (in ) for each of the species dry-deposited (rsurf)). If a species is not deposited onto a particular type of surface (but is deposited onto other types) then its resistance on this type can be set to a very large value (r_null). Often many species are assigned the same values. You will need to add in appropriate values for your species into the CASE statement within this routine.
Examples of how this is already done are
CASE ('NO2 ','NO3 ') rsurf(:,n)=(/225.,225.,400.,400.,600.,1200.,2600.,1200., & 3500. /) CASE ('CO ') rsurf(:,n)=(/3700.,7300.,4550.,1960.,4550.0,r_null,r_null, & 4550.0,r_null /) ! Shrub+bare soil set to C3 grass (guess)
Remember to make the changes for ALL the case statements associated with the different numbers of surface types.
Notice above that NO2 and NO3 are treated the same way with the same rsurf
values, whereas CO is treated separately. When species deposit in the same way it is possible to simplify the routine and group them together in this way. Whether this is done or not will be down to your judgement when setting the values - if species deposit in a similar way then it's possible to group them like this. If they deposit differently then you will need a new block of code.
Towards the end of the ukca_surfddr.F90
routine there is a large IF block where modifications are made to certain species. You may also need to make modifications here or add-in new code depending on how the resistance needs to be calculated.
Note that ukca_surfddr.F90 is a complex routine that has many different options for the different surface types that could be available. Care should be taken when editing this routine to ensure that changes are made correctly.
Solution to Task 7.1: adding new dry deposition values
You were given the task
- You should now add in the dry deposition of ALICE. This species deposits in a similar way to CO. The values for depvel_defs_strattrop are:
Surface Type | Summer (day) | Summer (night) | Summer (24h ave) | Winter (day) | Winter (night) | Winter (24h ave) |
---|---|---|---|---|---|---|
Water | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Forest | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 |
Grass | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 |
Desert | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 |
Ice | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
- i.e. the same as for CO.
You were given the hint:
- You will need to make changes for both dry deposition schemes. The changes to ukca_surfddr.F90 can be made very easily by adding equivalent options for ALICE where CO is found.
For a working Rose suite that has completed this task, please see
- vm:
u-ca024@182833
The specific Rose changes made are:
vm:
Index: app/fcm_make/rose-app.conf =================================================================== --- app/fcm_make/rose-app.conf (revision 182668) +++ app/fcm_make/rose-app.conf (revision 182833) @@ -43,4 +43,4 @@ thread_utils=false timer_version=3A um_rev=$BASE_UM_REV -um_sources=branches/dev/lukeabraham/vn11.8_UKCA_Tutorial_Solns@94024 +um_sources=branches/dev/lukeabraham/vn11.8_UKCA_Tutorial_Solns@94072
These differences can be found in the file Tutorials/vn11.8/worked_solutions/Task07.1/Task07.1_rose.patch
.
The specific UM changes made are:
Index: src/atmosphere/UKCA/ukca_chem_master.F90 =================================================================== --- src/atmosphere/UKCA/ukca_chem_master.F90 (revision 94024) +++ src/atmosphere/UKCA/ukca_chem_master.F90 (revision 94072) @@ -96,7 +96,7 @@ ! Define size of master chemistry INTEGER, PARAMETER :: n_chch_master = 329 ! number of known species INTEGER, PARAMETER :: n_het_master = 18 ! number of heterogeneous reactions -INTEGER, PARAMETER :: n_dry_master = 149 ! number of dry deposition reactions +INTEGER, PARAMETER :: n_dry_master = 150 ! number of dry deposition reactions INTEGER, PARAMETER :: n_wet_master = 106 ! number of wet deposition reactions INTEGER, PARAMETER :: n_bimol_master= 855 ! number of bimolecular reactions INTEGER, PARAMETER :: n_ratj_master = 158 ! number of photolysis reactions @@ -845,7 +845,7 @@ ! 271 DD:141, ANHY ~ MALANHY (327) chch_t1(271,'ANHY ',1,'TR ',' ',1,0,cs,0,0,107), & ! 272 -chch_t1(272,'ALICE ',1,'TR ',' ',0,0,st,0,0,111), & +chch_t1(272,'ALICE ',1,'TR ',' ',1,0,st,0,0,111), & ! 273 chch_t1(273,'BOB ',1,'TR ',' ',0,0,st,0,0,111) & /) @@ -6708,7 +6708,15 @@ 0.26, 0.00, 0.13, 0.00, 0.00, 0.00,& ! DD:141.3 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,& ! DD:141.4 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/),& ! DD:141.5 - cs,0,0,107) & + cs,0,0,107), & +! UKCA Tutorial Task7.1 +depvel_t(150,'ALICE ',& +(/0.00, 0.00, 0.00, 0.00, 0.00, 0.00,& + 0.03, 0.03, 0.03, 0.03, 0.03, 0.03,& + 0.03, 0.03, 0.03, 0.03, 0.03, 0.03,& + 0.03, 0.03, 0.03, 0.03, 0.03, 0.03,& + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/),& + st,0,0,111) & /) ! ---------------------------------------------------------------------- Index: src/atmosphere/UKCA/ukca_surfddr.F90 =================================================================== --- src/atmosphere/UKCA/ukca_surfddr.F90 (revision 94024) +++ src/atmosphere/UKCA/ukca_surfddr.F90 (revision 94072) @@ -729,7 +729,7 @@ ELSE rsurf(:,n)=tenpointzero END IF - CASE ('CO ') + CASE ('CO ','ALICE ') IF (l_fix_improve_drydep) THEN rsurf(:,n)=(/ 3700.0, 7300.0, 4550.0, 1960.0, 4550.0, & r_null, r_null, 4550.0, r_null /) @@ -910,7 +910,7 @@ rsurf(:,n)=rooh CASE ('NH3 ') rsurf(1:6,n)=(/ 137.0,111.1,111.9,131.3,130.4,209.8 /) - CASE ('CO ') + CASE ('CO ','ALICE ') rsurf(1:6,n)=(/ 3700.0,3700.0,3700.0,7300.0,7300.0,4550.0 /) ! Shrub+bare soil set to C3 grass (guess) CASE ('CH4 ') @@ -1043,7 +1043,7 @@ rsurf(7:13,n)=(/ 618.6,648.6,784.3,888.9,4000.0,1290.3,4000.0 /) CASE ('NH3 ') rsurf(7:13,n)=(/ 196.1,185.8,196.1,180.7,148.9,213.5,215.1 /) - CASE ('CO ') + CASE ('CO ','ALICE ') rsurf(7:13,n)=(/ 1960.0,4550.0,4550.0,r_null,r_null,4550.0,r_null /) ! Shrub+bare soil set to C3 grass (guess) CASE ('HCHO ') @@ -1154,7 +1154,7 @@ CASE ('NH3 ') rsurf(7:17,n)=(/ 209.8,209.8,196.1,196.1,196.1, & 185.8,196.1,180.7,148.9,213.5,215.1 /) - CASE ('CO ') + CASE ('CO ','ALICE ') rsurf(7:17,n)=(/ 4550.0,4550.0,1960.0,1960.0,1960.0, & 4550.0,4550.0,r_null,r_null,4550.0,r_null /) ! Shrub+bare soil set to C3 grass (guess) @@ -1252,7 +1252,7 @@ CASE ('NH3 ') rsurf(18:27,n)=(/ 215.1,215.1,215.1,215.1,215.1, & 215.1,215.1,215.1,215.1,215.1 /) - CASE ('CO ') + CASE ('CO ','ALICE ') rsurf(18:27,n)=(/ r_null,r_null,r_null,r_null,r_null, & r_null,r_null,r_null,r_null,r_null /) ! Shrub+bare soil set to C3 grass (guess) @@ -2393,7 +2393,8 @@ END DO END DO - ELSE IF (speci(nldepd(j)) == 'CO ') THEN + ELSE IF ( (speci(nldepd(j)) == 'CO ') & + .OR. (speci(nldepd(j)) == 'ALICE ')) THEN ! Only assign values for CO if microbes are active. ! Shrub and bare soil are assumed to be tundra if latitude > 60N; Index: src/atmosphere/UKCA/ukca_aerod.F90 =================================================================== --- src/atmosphere/UKCA/ukca_aerod.F90 (revision 94024) +++ src/atmosphere/UKCA/ukca_aerod.F90 (revision 94072) @@ -162,6 +162,7 @@ m_arnoh17, & m_anhy, & m_cri, & + m_ALICE, & m_air USE c_rmol, ONLY: rmol @@ -544,7 +545,9 @@ CASE ('RU12OOH ') ! m_cri = 150 (same as sec_org) => d0(j) = 0.72e-5 d0(j) = d_h2o * SQRT(m_h2o / m_cri) - END SELECT + CASE ('ALICE ') + d0(j) = d_h2o * SQRT(m_h2o / m_ALICE) + END SELECT END DO ! DO j = 1, ndepd
These differences can be found in the file Tutorials/vn11.8/worked_solutions/Task07.1/Task07.1_code.patch
.
Sample output from this task can be found at Tutorials/vn11.8/sample_output/Task07.1/atmosa.pa19810901_00
.
Checklist
- ☐ Put a 1 in the D column of the
chch_defs_master
inukca_chem_master.F90
. - ☐ Append deposition velocity values to the
depvel_defs_master
array, and incrementn_dry_master
. - ☐ Put the correct M_species value in
ukca_constants.F90
. - ☐ In
ukca_aerod.F90
, append the CASE statement with your new species to set a value ford0
. - ☐ In
ukca_surfddr.F90
, append all the CASE statements (for the various different numbers of surface types) with the values for your new species.
Written by Luke Abraham 2021