Skip to content

Commit

Permalink
Update TUV photolysis data of o2,o3,h2o2
Browse files Browse the repository at this point in the history
  • Loading branch information
laomangio committed Jan 18, 2024
1 parent a50a058 commit c52de9f
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 17 deletions.
Binary file modified data/photolysis_rate.nc
Binary file not shown.
7 changes: 3 additions & 4 deletions projects/kpp/chem/chem.eqn
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,11 @@ ho2 + o3 = oh + o2 + o2 : kho2_o3;
ho2 + ho2 = h2o2 + o2 : kho2_ho2;

o2 + hv = o3p + o3p : ko2_hv;
o3 + hv = o1d : ko3_hv1;
o3 + hv = o1d + o2 : ko3_hv1;
o3 + hv = o3p + o2 : ko3_hv2;
ho2 + hv = o3p + oh : kho2_hv;
h2o + hv = h + oh : kh2o_hv;
h2o2 + hv = oh + o3p : kh2o2_hv;
n2o + hv = o1d : kn2o_hv;
h2o2 + hv = 2oh : kh2o2_hv;
n2o + hv = o1d + n2 : kn2o_hv;
ccl3f + hv = PROD : kccl3f_hv;
ccl2f2 + hv = PROD : kcl2f2_hv;

Expand Down
31 changes: 19 additions & 12 deletions projects/kpp/chem/chem.kpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ extern double ko3p_o2_M, ko3p_o3, ko1d_o2, ko1d_o3, ko1d_h2, ko1d_h2o, \
ko1d_ccl2f2, ko3p_oh, ko3p_ho2, ko3p_h2o2, kh_o2_M, \
kh_o3, kh_ho2, kh_ho2_2, kh_ho2_3, koh_o3, koh_oh, koh_oh_M, \
koh_ho2, koh_h2o2, koh_co, kho2_o3, kho2_ho2, kso2_h2o2, kso2_oh, \
ko2_hv, ko3_hv1, ko3_hv2, kho2_hv, kh2o_hv, kh2o2_hv, kn2o_hv, \
ko2_hv, ko3_hv1, ko3_hv2, kh2o_hv, kh2o2_hv, kn2o_hv, \
kccl3f_hv, kcl2f2_hv;

#pragma omp threadprivate(ko3p_o2_M, ko3p_o3, ko1d_o2, ko1d_o3, ko1d_h2, ko1d_h2o, \
ko1d_n2, ko1d_n2_2, ko1d_n2o, ko1d_ch4, ko1d_co2, ko1d_ccl3f, \
ko1d_ccl2f2, ko3p_oh, ko3p_ho2, ko3p_h2o2, kh_o2_M, \
kh_o3, kh_ho2, kh_ho2_2, kh_ho2_3, koh_o3, koh_oh, koh_oh_M, \
koh_ho2, koh_h2o2, kho2_o3, kho2_ho2, kso2_h2o2, kso2_oh, \
ko2_hv, ko3_hv1, ko3_hv2, kho2_hv, kh2o_hv, kh2o2_hv, kn2o_hv, \
ko2_hv, ko3_hv1, ko3_hv2, kh2o_hv, kh2o2_hv, kn2o_hv, \
kccl3f_hv, kcl2f2_hv, \
RCONST,RTOL,ATOL,STEPMIN,STEPMAX,VAR,FIX,TEMP)

Expand Down Expand Up @@ -69,7 +69,7 @@ double ko3p_o2_M, ko3p_o3, ko1d_o2, ko1d_o3, ko1d_h2, ko1d_h2o,
ko1d_ccl2f2, ko3p_oh, ko3p_ho2, ko3p_h2o2, kh_o2_M,
kh_o3, kh_ho2, kh_ho2_2, kh_ho2_3, koh_o3, koh_oh, koh_oh_M,
koh_ho2, koh_h2o2, koh_co, kho2_o3, kho2_ho2, kso2_h2o2, kso2_oh,
ko2_hv, ko3_hv1, ko3_hv2, kho2_hv, kh2o_hv, kh2o2_hv, kn2o_hv,
ko2_hv, ko3_hv1, ko3_hv2, kh2o_hv, kh2o2_hv, kn2o_hv,
kccl3f_hv, kcl2f2_hv;

void kpp_chem_initialize(
Expand All @@ -81,10 +81,11 @@ void kpp_chem_initialize(
int ip
){
/* Get Meteological variables... */
double t, lwc;
double t, lwc, o3c;
INTPOL_INIT;
INTPOL_3D(t, 1);
INTPOL_3D(lwc, 0);
INTPOL_2D(o3c, 1);
TEMP = t;

/* Calculate air molecular density (IUPAC Data Sheet I.A4.86 SOx15)... */
Expand Down Expand Up @@ -147,15 +148,21 @@ void kpp_chem_initialize(
kho2_ho2 = ARR_ab(3e-13, -460) + ARR_ab(2.1e-33 * M, -920) ;

/* Photolysis reaction rate ... */
ko2_hv = ROETH_PHOTOL(1.15e-11, 6.51657, 0.75717, sza);
ko3_hv1 = ROETH_PHOTOL(1.37e-4, 1.38520, 0.90333, sza);
ko3_hv2 = ROETH_PHOTOL(1.12e-03, 0.49409, 0.87117, sza);
kho2_hv = ROETH_PHOTOL(6.83e-06, 6.43722, 0.75746, sza);
ko2_hv = clim_photo(clim->photo.o2, &(clim->photo),
atm->p[ip], sza, o3c);
ko3_hv1 = clim_photo(clim->photo.o3_1, &(clim->photo),
atm->p[ip], sza, o3c);
ko3_hv2 = clim_photo(clim->photo.o3_2, &(clim->photo),
atm->p[ip], sza, o3c);
kh2o_hv = ROETH_PHOTOL(1.79e-10, 7.70686, 0.75420, sza);
kh2o2_hv = ROETH_PHOTOL(2.60e-05, 0.53675, 0.89531, sza);
kn2o_hv = ROETH_PHOTOL(1.61e-08, 6.21077, 0.76015, sza);
kccl3f_hv = ROETH_PHOTOL(6.79e-07, 6.25031, 0.75941, sza);
kcl2f2_hv = ROETH_PHOTOL(2.81e-08, 6.47452, 0.75909, sza);
kh2o2_hv = clim_photo(clim->photo.h2o2, &(clim->photo),
atm->p[ip], sza, o3c);
kn2o_hv = clim_photo(clim->photo.n2o, &(clim->photo),
atm->p[ip], sza, o3c);
kccl3f_hv = clim_photo(clim->photo.ccl3f, &(clim->photo),
atm->p[ip], sza, o3c);
kcl2f2_hv = clim_photo(clim->photo.ccl3f, &(clim->photo),
atm->p[ip], sza, o3c);

/*Gas phase chemistry of so2... */
kso2_oh = k3rd_jpl(M, 2.9e-31, 4.1, 1.7e-12, -0.2);
Expand Down
19 changes: 18 additions & 1 deletion src/libtrac.c
Original file line number Diff line number Diff line change
Expand Up @@ -2148,7 +2148,7 @@ void read_clim_photo(
ALLOC(help3, double,
photo->np * photo->nsza * photo->no3c);
ALLOC(help4, double,
photo->np * photo->nsza * photo->no3c);
photo->np * photo->nsza * photo->no3c);
NC_GET_DOUBLE("n2o", help1, 1);
NC_GET_DOUBLE("ccl4", help2, 1);
NC_GET_DOUBLE("cfc11", help3, 1);
Expand All @@ -2165,6 +2165,23 @@ void read_clim_photo(
photo->ccl2f2[ip][is][io] =
help4[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
}

NC_GET_DOUBLE("o2", help1, 1);
NC_GET_DOUBLE("o3_1", help2, 1);
NC_GET_DOUBLE("o3_2", help3, 1);
NC_GET_DOUBLE("h2o2", help4, 1);
for (ip = 0; ip < photo->np; ip++)
for (is = 0; is < photo->nsza; is++)
for (io = 0; io < photo->no3c; io++) {
photo->o2[ip][is][io] =
help1[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
photo->o3_1[ip][is][io] =
help2[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
photo->o3_2[ip][is][io] =
help3[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
photo->h2o2[ip][is][io] =
help4[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
}
free(help1);
free(help2);
free(help3);
Expand Down
12 changes: 12 additions & 0 deletions src/libtrac.h
Original file line number Diff line number Diff line change
Expand Up @@ -1718,6 +1718,18 @@ typedef struct {
/*! CCl2F2 photolysis rate [1/s]. */
double ccl2f2[CP][CSZA][CO3];

/*! O2 photolysis rate [1/s]. */
double o2[CP][CSZA][CO3];

/*! O3 photolysis rate [1/s]. o3 + hv = o1d + o2 */
double o3_1[CP][CSZA][CO3];

/*! O3 photolysis rate [1/s]. o3 + hv = o3p + o2 */
double o3_2[CP][CSZA][CO3];

/*! H2O2 photolysis rate [1/s]. */
double h2o2[CP][CSZA][CO3];

} clim_photo_t;

/*! Climatological data in form of time series. */
Expand Down

0 comments on commit c52de9f

Please sign in to comment.