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 "ChemPureWaterBuilder.hh" 28 29 #include "G4DNAMolecularReactionTable.hh" 30 #include "G4MoleculeTable.hh" 31 #include "G4SystemOfUnits.hh" 32 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 33 34 void ChemPureWaterBuilder::WaterScavengerReaction(G4DNAMolecularReactionTable* pReactionTable) 35 { 36 // Get the molecular configuration 37 auto table = G4MoleculeTable::Instance(); 38 39 G4MolecularConfiguration* OH = table->GetConfiguration("°OH"); 40 G4MolecularConfiguration* OHm = table->GetConfiguration("OHm"); 41 G4MolecularConfiguration* H3Op = table->GetConfiguration("H3Op"); 42 G4MolecularConfiguration* e_aq = table->GetConfiguration("e_aq"); 43 G4MolecularConfiguration* H = table->GetConfiguration("H"); 44 G4MolecularConfiguration* H2O2 = table->GetConfiguration("H2O2"); 45 G4MolecularConfiguration* HO2 = table->GetConfiguration("HO2°"); 46 G4MolecularConfiguration* HO2m = table->GetConfiguration("HO2m"); 47 G4MolecularConfiguration* Om = table->GetConfiguration("Om"); 48 G4MolecularConfiguration* O2 = table->GetConfiguration("O2"); 49 G4MolecularConfiguration* O2m = table->GetConfiguration("O2m"); 50 G4MolecularConfiguration* O3m = table->GetConfiguration("O3m"); 51 G4MolecularConfiguration* H2O = table->GetConfiguration("H2O"); 52 G4MolecularConfiguration* H3OpB = table->GetConfiguration("H3Op(B)"); 53 G4MolecularConfiguration* OHmB = table->GetConfiguration("OHm(B)"); 54 //---------------1------------------------------------------------- 55 //------------------------------------------------------------------ 56 // HO2 + H2O -> H3O+ + O2- 57 // 4.78e10*std::pow(10, -pka (4.8257) = 757578.95 1 first order 58 auto reactionData = new G4DNAMolecularReactionData(7.58e5 / s, HO2, H2O); 59 reactionData->AddProduct(H3OpB); 60 reactionData->AddProduct(O2m); 61 reactionData->SetReactionType(6); // Equilibrium 6 62 pReactionTable->SetReaction(reactionData); 63 64 //------------------------------------------------------------------ 65 // O2- + H3O+(B) -> HO2 + H2O 4.73e3 / s 66 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), O2m, 67 H3OpB); // 4.78e10(O2- + H3O+) * 1e-7(pH7) = 4.73e3 68 reactionData->AddProduct(HO2); 69 reactionData->SetReactionType(6); // Equilibrium 6 70 pReactionTable->SetReaction(reactionData); 71 72 //------------------------------------------------------------------ 73 //--------------2--------------------------------------------------- 74 // H + H2O -> eaq- + H3O+ 5.94 / s pkA = 9.5515 75 reactionData = new G4DNAMolecularReactionData(6.32 / s, H, H2O); // 6.32e0 * 76 reactionData->AddProduct(e_aq); 77 reactionData->AddProduct(H3OpB); 78 pReactionTable->SetReaction(reactionData); 79 //------------------------------------------------------------------ 80 // eaq- + H3O+(B) -> H + H2O 2.09e3 / s 81 reactionData = new G4DNAMolecularReactionData(2.25e10 * (1e-3 * m3 / (mole * s)), e_aq, H3OpB); 82 reactionData->AddProduct(H); 83 pReactionTable->SetReaction(reactionData); 84 85 //------------------------------------------------------------------ 86 //--------------3---------------------------------------------------- 87 // eaq- + H2O -> H + OH- 15.7 / M * s pKa = ??? 88 reactionData = new G4DNAMolecularReactionData(1.57e1 * 55.3 / s, e_aq, H2O); 89 reactionData->AddProduct(H); 90 reactionData->AddProduct(OHmB); 91 pReactionTable->SetReaction(reactionData); 92 //------------------------------------------------------------------ 93 // H + OH-(B) -> H2O + eaq- 2.49e3 / s 94 reactionData = new G4DNAMolecularReactionData(2.49e7 * (1e-3 * m3 / (mole * s)), H, 95 OHmB); // 2.51e7 (H + OH-)* 1e-7 (pH) = 2.48e0 96 reactionData->AddProduct(e_aq); 97 pReactionTable->SetReaction(reactionData); 98 99 //------------4-------------------------------------------------- 100 //------------------------------------------------------------------ 101 // O2- + H2O -> HO2 + OH- 0.15 / s 102 reactionData = new G4DNAMolecularReactionData(0.15 * 55.3 / s, O2m, H2O); 103 reactionData->AddProduct(HO2); 104 reactionData->AddProduct(OHmB); 105 pReactionTable->SetReaction(reactionData); 106 //------------------------------------------------------------------ 107 // HO2 + OH-(B) -> O2- + H2O 108 reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), HO2, OHmB); 109 reactionData->AddProduct(O2m); 110 pReactionTable->SetReaction(reactionData); 111 //-----------5------------------------------------------------------ 112 //------------------------------------------------------------------ 113 // HO2- + H2O -> H2O2 + OH- 1.36e6 / M * s pka = 11.784 114 reactionData = new G4DNAMolecularReactionData(1.36e6 * 55.3 / s, HO2m, H2O); // 115 reactionData->AddProduct(H2O2); 116 reactionData->AddProduct(OHmB); 117 reactionData->SetReactionType(7); // Equilibrium 7 118 pReactionTable->SetReaction(reactionData); 119 //------------------------------------------------------------------ 120 // H2O2 + OH-(B) -> HO2- + H2O 4.66e2 / s 121 reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), H2O2, OHmB); 122 reactionData->AddProduct(HO2m); 123 reactionData->SetReactionType(7); // Equilibrium 7 124 pReactionTable->SetReaction(reactionData); 125 //-------------6---------------------------------------------------- 126 //------------------------------------------------------------------ 127 // O- + H2O -> OH + OH- 1.8e6 / s pka = 11.9 128 reactionData = new G4DNAMolecularReactionData(1.8e6 * 55.3 / s, Om, H2O); 129 reactionData->AddProduct(OH); 130 reactionData->AddProduct(OHmB); 131 reactionData->SetReactionType(8); // Equilibrium 8 132 pReactionTable->SetReaction(reactionData); 133 //------------------------------------------------------------------ 134 // OH + OH-(B) -> O- + H2O 6.24e2 / s 135 reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), OH, OHmB); 136 reactionData->AddProduct(Om); 137 reactionData->SetReactionType(8); // Equilibrium 8 138 pReactionTable->SetReaction(reactionData); 139 //------------------------------------------------------------------ 140 //-------------7---------------------------------------------------- 141 // H2O2 + H2O -> H+ + HO2- First order pka = 11.784 142 reactionData = new G4DNAMolecularReactionData(7.86e-2 / s, H2O2, H2O); 143 reactionData->AddProduct(HO2m); 144 reactionData->AddProduct(H3OpB); 145 pReactionTable->SetReaction(reactionData); 146 147 //------------------------------------------------------------------ 148 // HO2- + H3O+(B) -> H2O2 + H2O 4.98e3 / s 149 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), HO2m, 150 H3OpB); // 151 reactionData->AddProduct(H2O2); 152 pReactionTable->SetReaction(reactionData); 153 154 //-------------8---------------------------------------------------- 155 //------------------------------------------------------------------ 156 // O- + H3O+(B) -> OH + H2O 4.73e3 / s * 157 reactionData = new G4DNAMolecularReactionData(9.56e10 * (1e-3 * m3 / (mole * s)), Om, 158 H3OpB); // 159 reactionData->AddProduct(OH); 160 pReactionTable->SetReaction(reactionData); 161 162 //------------------------------------------------------------------ 163 // OH -> O- + H3O+(B) 164 reactionData = new G4DNAMolecularReactionData(0.060176635 / s, OH, 165 H2O); // 166 reactionData->AddProduct(Om); 167 reactionData->AddProduct(H3OpB); 168 pReactionTable->SetReaction(reactionData); 169 170 // end Acid - Base Reactions 171 //------------------------------------------------------------------ 172 // OH- + H3O+(B) -> 2H2O 1.11e4 / s 173 reactionData = new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), OHm, 174 H3OpB); // 175 pReactionTable->SetReaction(reactionData); 176 177 //------------------------------------------------------------------ 178 // O3- + H3O+(B) -> OH + O2 + H2O 8.91e3 / s 179 reactionData = new G4DNAMolecularReactionData(9.0e10 * (1e-3 * m3 / (mole * s)), O3m, 180 H3OpB); // 181 reactionData->AddProduct(OH); 182 reactionData->AddProduct(O2); 183 pReactionTable->SetReaction(reactionData); 184 //------------------------------------------------------------------ 185 // H3O+ + OH-(B) -> 2H2O 1.11e4 / s 186 // opposite description of OH- + H3O+(B) -> 2H2O 187 reactionData = new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, 188 OHmB); // 189 pReactionTable->SetReaction(reactionData); 190 191 //------------------------------------------------------------------ 192 // O3- + H2OB -> O- + O2 193 reactionData = new G4DNAMolecularReactionData(2.66e3 / s, O3m, H2O); 194 reactionData->AddProduct(Om); 195 reactionData->AddProduct(O2); 196 pReactionTable->SetReaction(reactionData); 197 198 //------------------------------------------------------------------ 199 // O(3p) + OH-(B) -> HO2- 4.16e1 / s 200 // reactionData = new G4DNAMolecularReactionData( 201 // 4.16e1 / s, O,OHmB);// 202 // reactionData->AddProduct(HO2m); 203 // pReactionTable->SetReaction(reactionData); 204 //------------------------------------------------------------------ 205 } 206 207 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 208