Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 27 #include "ChemOxygenWaterBuilder.hh" 28 29 #include "G4DNAMolecularReactionTable.hh" 30 #include "G4MoleculeTable.hh" 31 #include "G4SystemOfUnits.hh" 32 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 33 34 void ChemOxygenWaterBuilder::OxygenScavengerReaction(G4DNAMolecularReactionTable* pReactionTable) 35 { 36 auto table = G4MoleculeTable::Instance(); 37 //----------------------------------- 38 // Get the molecular configuration 39 auto* e_aq = table->GetConfiguration("e_aq"); 40 auto* H = table->GetConfiguration("H"); 41 auto* HO2 = table->GetConfiguration("HO2°"); 42 auto* Om = table->GetConfiguration("Om"); 43 auto* O2 = table->GetConfiguration("O2"); 44 auto* O2m = table->GetConfiguration("O2m"); 45 auto* O3m = table->GetConfiguration("O3m"); 46 47 G4DNAMolecularReactionData* reactionData = nullptr; 48 // Oxygen concentration 49 // e_aq + O2(B) -> O2- 50 reactionData = new G4DNAMolecularReactionData(2.3e10 * (1e-3 * m3 / (mole * s)), e_aq, O2); 51 reactionData->AddProduct(O2m); 52 pReactionTable->SetReaction(reactionData); 53 //------------------------------------------------------------------ 54 // H + O2(B) -> HO2 55 reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), H, O2); 56 reactionData->AddProduct(HO2); 57 pReactionTable->SetReaction(reactionData); 58 //------------------------------------------------------------------ 59 // O- + O2(B) -> O3- 60 reactionData = new G4DNAMolecularReactionData(3.7e9 * (1e-3 * m3 / (mole * s)), Om, O2); 61 reactionData->AddProduct(O3m); 62 pReactionTable->SetReaction(reactionData); 63 //------------------------------------------------------------------ 64 } 65 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 66 67 void ChemOxygenWaterBuilder::SecondOrderReactionExtended( 68 G4DNAMolecularReactionTable* pReactionTable) 69 { 70 //----------------------------------- 71 // Get the molecular configuration 72 auto table = G4MoleculeTable::Instance(); 73 auto* OH = table->GetConfiguration("°OH"); 74 auto* OHm = table->GetConfiguration("OHm"); 75 auto* e_aq = table->GetConfiguration("e_aq"); 76 auto* H2 = table->GetConfiguration("H2"); 77 auto* H3Op = table->GetConfiguration("H3Op"); 78 auto* H = table->GetConfiguration("H"); 79 auto* H2O2 = table->GetConfiguration("H2O2"); 80 81 auto* HO2 = table->GetConfiguration("HO2°"); 82 auto* HO2m = table->GetConfiguration("HO2m"); 83 auto* Om = table->GetConfiguration("Om"); 84 auto* O2 = table->GetConfiguration("O2"); 85 auto* O2m = table->GetConfiguration("O2m"); 86 auto* O3m = table->GetConfiguration("O3m"); 87 88 // second order 89 G4DNAMolecularReactionData* reactionData = nullptr; 90 // Type I 91 //------------------------------------------------------------------ 92 // *H + *H -> H2 93 reactionData = new G4DNAMolecularReactionData(0.503e10 * (1e-3 * m3 / (mole * s)), H, H); 94 reactionData->AddProduct(H2); 95 pReactionTable->SetReaction(reactionData); 96 //------------------------------------------------------------------ 97 // e_aq + H* + H2O -> H2 + OH- 98 reactionData = new G4DNAMolecularReactionData(2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H); 99 reactionData->AddProduct(OHm); 100 reactionData->AddProduct(H2); 101 pReactionTable->SetReaction(reactionData); 102 //------------------------------------------------------------------ 103 // e_aq + e_aq + 2H2O -> H2 + 2OH- 104 reactionData = new G4DNAMolecularReactionData(0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq); 105 reactionData->AddProduct(OHm); 106 reactionData->AddProduct(OHm); 107 reactionData->AddProduct(H2); 108 pReactionTable->SetReaction(reactionData); 109 //------------------------------------------------------------------ 110 // H3O+ + OH- -> 2H2O 111 reactionData = new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm); 112 pReactionTable->SetReaction(reactionData); 113 //------------------------------------------------------------------ 114 // *OH + *H -> H2O 115 reactionData = new G4DNAMolecularReactionData(1.55e10 * (1e-3 * m3 / (mole * s)), OH, H); 116 pReactionTable->SetReaction(reactionData); 117 //------------------------------------------------------------------ 118 // *OH + *OH -> H2O2 119 reactionData = new G4DNAMolecularReactionData(0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH); 120 reactionData->AddProduct(H2O2); 121 pReactionTable->SetReaction(reactionData); 122 //------------------------------------------------------------------ 123 // e_aq + *OH -> OH- 124 reactionData = new G4DNAMolecularReactionData(2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH); 125 reactionData->AddProduct(OHm); 126 pReactionTable->SetReaction(reactionData); 127 //------------------------------------------------------------------ 128 // e_aq + H2O2 -> OH- + *OH 129 reactionData = new G4DNAMolecularReactionData(1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2); 130 reactionData->AddProduct(OHm); 131 reactionData->AddProduct(OH); 132 pReactionTable->SetReaction(reactionData); 133 //------------------------------------------------------------------ 134 // e_aq + H3O+ -> H* + H2O 135 reactionData = new G4DNAMolecularReactionData(2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op); 136 reactionData->AddProduct(H); 137 pReactionTable->SetReaction(reactionData); 138 139 // extended 140 //------------------------------------------------------------------ 141 // H + O- -> OH- 142 reactionData = new G4DNAMolecularReactionData(2.00e10 * (1e-3 * m3 / (mole * s)), H, Om); 143 reactionData->AddProduct(OHm); 144 pReactionTable->SetReaction(reactionData); 145 //------------------------------------------------------------------ 146 // H3O+ + O3- -> OH + O2 147 reactionData = new G4DNAMolecularReactionData(9.0e10 * (1e-3 * m3 / (mole * s)), H3Op, O3m); 148 reactionData->AddProduct(OH); 149 reactionData->AddProduct(O2); // add to Scavenger 150 pReactionTable->SetReaction(reactionData); 151 //------------------------------------------------------------------ 152 // H + HO2 -> H2O2 153 reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, HO2); 154 reactionData->AddProduct(H2O2); 155 pReactionTable->SetReaction(reactionData); 156 //------------------------------------------------------------------ 157 // H + O2- -> HO2- 158 reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, O2m); 159 reactionData->AddProduct(HO2m); 160 pReactionTable->SetReaction(reactionData); 161 //------------------------------------------------------------------ 162 // OH + O2- -> O2 + OH- 163 reactionData = new G4DNAMolecularReactionData(1.07e10 * (1e-3 * m3 / (mole * s)), OH, O2m); 164 reactionData->AddProduct(O2); // added to Scavenger 165 reactionData->AddProduct(OHm); 166 pReactionTable->SetReaction(reactionData); 167 //------------------------------------------------------------------ 168 // e_aq + O2- -> H2O2 + OH- + OH- 169 reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), e_aq, O2m); 170 reactionData->AddProduct(H2O2); 171 reactionData->AddProduct(OHm); 172 reactionData->AddProduct(OHm); 173 pReactionTable->SetReaction(reactionData); 174 //------------------------------------------------------------------ 175 // e_aq + HO2- -> O- + OH- 176 reactionData = new G4DNAMolecularReactionData(3.51e9 * (1e-3 * m3 / (mole * s)), e_aq, HO2m); 177 reactionData->AddProduct(Om); 178 reactionData->AddProduct(OHm); 179 pReactionTable->SetReaction(reactionData); 180 //------------------------------------------------------------------ 181 // e_aq + O- -> OH- + OH- 182 reactionData = new G4DNAMolecularReactionData(2.31e10 * (1e-3 * m3 / (mole * s)), e_aq, Om); 183 reactionData->AddProduct(OHm); 184 reactionData->AddProduct(OHm); 185 pReactionTable->SetReaction(reactionData); 186 //------------------------------------------------------------------ 187 // H3O+ + O2- -> HO2 188 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, O2m); 189 reactionData->AddProduct(HO2); 190 pReactionTable->SetReaction(reactionData); 191 //------------------------------------------------------------------ 192 // H3O+ + HO2- -> H2O2 193 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, HO2m); 194 reactionData->AddProduct(H2O2); 195 pReactionTable->SetReaction(reactionData); 196 //------------------------------------------------------------------ 197 // H3O+ + O- -> OH 198 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, Om); 199 reactionData->AddProduct(OH); 200 pReactionTable->SetReaction(reactionData); 201 //------------------------------------------------------------------ 202 // eaq + HO2 -> HO2- 203 reactionData = new G4DNAMolecularReactionData(1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, HO2); 204 reactionData->AddProduct(HO2m); 205 pReactionTable->SetReaction(reactionData); 206 //------------------------------------------------------------------ 207 // OH + OH- -> O- 208 reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), OH, OHm); 209 reactionData->AddProduct(Om); 210 pReactionTable->SetReaction(reactionData); 211 //------------------------------------------------------------------ 212 // OH + HO2 -> O2 213 reactionData = new G4DNAMolecularReactionData(7.90e9 * (1e-3 * m3 / (mole * s)), OH, HO2); 214 reactionData->AddProduct(O2); // added to Scavenger 215 pReactionTable->SetReaction(reactionData); 216 //------------------------------------------------------------------ 217 // OH + HO2- -> HO2 + OH- 218 reactionData = new G4DNAMolecularReactionData(8.32e9 * (1e-3 * m3 / (mole * s)), OH, HO2m); 219 reactionData->AddProduct(HO2); 220 reactionData->AddProduct(OHm); 221 pReactionTable->SetReaction(reactionData); 222 //------------------------------------------------------------------ 223 // OH + O- -> HO2- 224 reactionData = new G4DNAMolecularReactionData(1.00e9 * (1e-3 * m3 / (mole * s)), OH, Om); 225 reactionData->AddProduct(HO2m); 226 pReactionTable->SetReaction(reactionData); 227 //------------------------------------------------------------------ 228 // OH + O3- -> O2- + HO2 229 reactionData = new G4DNAMolecularReactionData(8.50e9 * (1e-3 * m3 / (mole * s)), OH, O3m); 230 reactionData->AddProduct(O2m); 231 reactionData->AddProduct(HO2); 232 pReactionTable->SetReaction(reactionData); 233 //------------------------------------------------------------------ 234 // OH- + HO2 -> O2- 235 reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), OHm, 236 HO2); // Frongillo 1.27e10 237 reactionData->AddProduct(O2m); 238 pReactionTable->SetReaction(reactionData); 239 //------------------------------------------------------------------ 240 // H2O2 + OH- -> HO2- 241 reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), H2O2, 242 OHm); // Elliot 1.3e10, Plante 4.71e8 243 reactionData->AddProduct(HO2m); 244 pReactionTable->SetReaction(reactionData); 245 //------------------------------------------------------------------ 246 // H2O2 + O- -> HO2 + OH- 247 reactionData = new G4DNAMolecularReactionData(5.55e8 * (1e-3 * m3 / (mole * s)), H2O2, Om); 248 reactionData->AddProduct(HO2); 249 reactionData->AddProduct(OHm); 250 pReactionTable->SetReaction(reactionData); 251 //------------------------------------------------------------------ 252 // H2 + O- -> H + OH- 253 reactionData = new G4DNAMolecularReactionData(1.21e8 * (1e-3 * m3 / (mole * s)), H2, Om); 254 reactionData->AddProduct(H); 255 reactionData->AddProduct(OHm); 256 pReactionTable->SetReaction(reactionData); 257 //------------------------------------------------------------------ 258 // O2- + O- -> O2 + OH- + OH- 259 reactionData = new G4DNAMolecularReactionData(6.00e8 * (1e-3 * m3 / (mole * s)), O2m, Om); 260 reactionData->AddProduct(O2); 261 reactionData->AddProduct(OHm); 262 reactionData->AddProduct(OHm); 263 pReactionTable->SetReaction(reactionData); 264 //------------------------------------------------------------------ 265 // HO2- + O- -> O2- + OH- 266 reactionData = new G4DNAMolecularReactionData(3.50e8 * (1e-3 * m3 / (mole * s)), HO2m, Om); 267 reactionData->AddProduct(O2m); 268 reactionData->AddProduct(OHm); 269 pReactionTable->SetReaction(reactionData); 270 //------------------------------------------------------------------ 271 // O- + O- -> H2O2 + OH- + OH- 272 reactionData = new G4DNAMolecularReactionData(1.00e8 * (1e-3 * m3 / (mole * s)), Om, Om); 273 reactionData->AddProduct(H2O2); 274 reactionData->AddProduct(OHm); 275 reactionData->AddProduct(OHm); 276 pReactionTable->SetReaction(reactionData); 277 //------------------------------------------------------------------ 278 // O- + O3- -> O2- + O2- 279 reactionData = new G4DNAMolecularReactionData(7.00e8 * (1e-3 * m3 / (mole * s)), Om, O3m); 280 reactionData->AddProduct(O2m); 281 reactionData->AddProduct(O2m); 282 pReactionTable->SetReaction(reactionData); 283 //------------------------------------------------------------------ 284 // H + OH- -> eaq- 285 reactionData = new G4DNAMolecularReactionData(2.51e7 * (1e-3 * m3 / (mole * s)), H, OHm); 286 reactionData->AddProduct(e_aq); 287 pReactionTable->SetReaction(reactionData); 288 //------------------------------------------------------------------ 289 // H + H2O2 -> OH 290 reactionData = new G4DNAMolecularReactionData(3.50e7 * (1e-3 * m3 / (mole * s)), H, H2O2); 291 reactionData->AddProduct(OH); 292 pReactionTable->SetReaction(reactionData); 293 //------------------------------------------------------------------ 294 // OH + H2O2 -> HO2 295 reactionData = new G4DNAMolecularReactionData(2.88e7 * (1e-3 * m3 / (mole * s)), OH, H2O2); 296 reactionData->AddProduct(HO2); 297 pReactionTable->SetReaction(reactionData); 298 //------------------------------------------------------------------ 299 // OH + H2 -> H 300 reactionData = new G4DNAMolecularReactionData(3.28e7 * (1e-3 * m3 / (mole * s)), OH, H2); 301 reactionData->AddProduct(H); 302 pReactionTable->SetReaction(reactionData); 303 //------------------------------------------------------------------ 304 // HO2 + HO2 -> H2O2 + O2 305 reactionData = new G4DNAMolecularReactionData(9.80e5 * (1e-3 * m3 / (mole * s)), HO2, HO2); 306 reactionData->AddProduct(H2O2); 307 reactionData->AddProduct(O2); 308 pReactionTable->SetReaction(reactionData); 309 //------------------------------------------------------------------ 310 // HO2 + O2- -> HO2- + O2 + 311 reactionData = new G4DNAMolecularReactionData(9.70e7 * (1e-3 * m3 / (mole * s)), HO2, O2m); 312 reactionData->AddProduct(HO2m); 313 reactionData->AddProduct(O2); 314 pReactionTable->SetReaction(reactionData); 315 //------------------------------------------------------------------ 316 // hoang added. this must be rare 317 // O2- + O2- -> H2O2 + O2 + 2 OH- 318 reactionData = new G4DNAMolecularReactionData(1.0e2 * (1e-3 * m3 / (mole * s)), O2m, O2m); 319 reactionData->AddProduct(H2O2); 320 reactionData->AddProduct(O2); 321 reactionData->AddProduct(OHm); 322 reactionData->AddProduct(OHm); 323 pReactionTable->SetReaction(reactionData); 324 } 325 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 326