Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-23 09:22:11

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 
0027 #include "ChemOxygenWaterBuilder.hh"
0028 
0029 #include "G4DNAMolecularReactionTable.hh"
0030 #include "G4MoleculeTable.hh"
0031 #include "G4SystemOfUnits.hh"
0032 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0033 
0034 void ChemOxygenWaterBuilder::OxygenScavengerReaction(G4DNAMolecularReactionTable* pReactionTable)
0035 {
0036   auto table = G4MoleculeTable::Instance();
0037   //-----------------------------------
0038   // Get the molecular configuration
0039   auto* e_aq = table->GetConfiguration("e_aq");
0040   auto* H = table->GetConfiguration("H");
0041   auto* HO2 = table->GetConfiguration("HO2");
0042   auto* Om = table->GetConfiguration("Om");
0043   auto* O2 = table->GetConfiguration("O2");
0044   auto* O2m = table->GetConfiguration("O2m");
0045   auto* O3m = table->GetConfiguration("O3m");
0046 
0047   G4DNAMolecularReactionData* reactionData = nullptr;
0048   // Oxygen concentration
0049   // e_aq + O2(B) -> O2-
0050   reactionData = new G4DNAMolecularReactionData(2.3e10 * (1e-3 * m3 / (mole * s)), e_aq, O2);
0051   reactionData->AddProduct(O2m);
0052   pReactionTable->SetReaction(reactionData);
0053   //------------------------------------------------------------------
0054   // H + O2(B) -> HO2
0055   reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), H, O2);
0056   reactionData->AddProduct(HO2);
0057   pReactionTable->SetReaction(reactionData);
0058   //------------------------------------------------------------------
0059   // O- + O2(B) -> O3-
0060   reactionData = new G4DNAMolecularReactionData(3.7e9 * (1e-3 * m3 / (mole * s)), Om, O2);
0061   reactionData->AddProduct(O3m);
0062   pReactionTable->SetReaction(reactionData);
0063   //------------------------------------------------------------------
0064 }
0065 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0066 
0067 void ChemOxygenWaterBuilder::SecondOrderReactionExtended(
0068   G4DNAMolecularReactionTable* pReactionTable)
0069 {
0070   //-----------------------------------
0071   // Get the molecular configuration
0072   auto table = G4MoleculeTable::Instance();
0073   auto* OH = table->GetConfiguration("OH");
0074   auto* OHm = table->GetConfiguration("OHm");
0075   auto* e_aq = table->GetConfiguration("e_aq");
0076   auto* H2 = table->GetConfiguration("H2");
0077   auto* H3Op = table->GetConfiguration("H3Op");
0078   auto* H = table->GetConfiguration("H");
0079   auto* H2O2 = table->GetConfiguration("H2O2");
0080 
0081   auto* HO2 = table->GetConfiguration("HO2");
0082   auto* HO2m = table->GetConfiguration("HO2m");
0083   auto* Om = table->GetConfiguration("Om");
0084   auto* O2 = table->GetConfiguration("O2");
0085   auto* O2m = table->GetConfiguration("O2m");
0086   auto* O3m = table->GetConfiguration("O3m");
0087 
0088   // second order
0089   G4DNAMolecularReactionData* reactionData = nullptr;
0090   // Type I
0091   //------------------------------------------------------------------
0092   // *H + *H -> H2
0093   reactionData = new G4DNAMolecularReactionData(0.503e10 * (1e-3 * m3 / (mole * s)), H, H);
0094   reactionData->AddProduct(H2);
0095   pReactionTable->SetReaction(reactionData);
0096   //------------------------------------------------------------------
0097   // e_aq + H* + H2O -> H2 + OH-
0098   reactionData = new G4DNAMolecularReactionData(2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
0099   reactionData->AddProduct(OHm);
0100   reactionData->AddProduct(H2);
0101   pReactionTable->SetReaction(reactionData);
0102   //------------------------------------------------------------------
0103   // e_aq + e_aq + 2H2O -> H2 + 2OH-
0104   reactionData = new G4DNAMolecularReactionData(0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
0105   reactionData->AddProduct(OHm);
0106   reactionData->AddProduct(OHm);
0107   reactionData->AddProduct(H2);
0108   pReactionTable->SetReaction(reactionData);
0109   //------------------------------------------------------------------
0110   // H3O+ + OH- -> 2H2O
0111   reactionData = new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
0112   pReactionTable->SetReaction(reactionData);
0113   //------------------------------------------------------------------
0114   // *OH + *H -> H2O
0115   reactionData = new G4DNAMolecularReactionData(1.55e10 * (1e-3 * m3 / (mole * s)), OH, H);
0116   pReactionTable->SetReaction(reactionData);
0117   //------------------------------------------------------------------
0118   // *OH + *OH -> H2O2
0119   reactionData = new G4DNAMolecularReactionData(0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH);
0120   reactionData->AddProduct(H2O2);
0121   pReactionTable->SetReaction(reactionData);
0122   //------------------------------------------------------------------
0123   // e_aq + *OH -> OH-
0124   reactionData = new G4DNAMolecularReactionData(2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
0125   reactionData->AddProduct(OHm);
0126   pReactionTable->SetReaction(reactionData);
0127   //------------------------------------------------------------------
0128   // e_aq + H2O2 -> OH- + *OH
0129   reactionData = new G4DNAMolecularReactionData(1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
0130   reactionData->AddProduct(OHm);
0131   reactionData->AddProduct(OH);
0132   pReactionTable->SetReaction(reactionData);
0133   //------------------------------------------------------------------
0134   // e_aq + H3O+ -> H* + H2O
0135   reactionData = new G4DNAMolecularReactionData(2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
0136   reactionData->AddProduct(H);
0137   pReactionTable->SetReaction(reactionData);
0138 
0139   // extended
0140   //------------------------------------------------------------------
0141   //  H + O- -> OH-
0142   reactionData = new G4DNAMolecularReactionData(2.00e10 * (1e-3 * m3 / (mole * s)), H, Om);
0143   reactionData->AddProduct(OHm);
0144   pReactionTable->SetReaction(reactionData);
0145   //------------------------------------------------------------------
0146   // H3O+ + O3- -> OH + O2
0147   reactionData = new G4DNAMolecularReactionData(9.0e10 * (1e-3 * m3 / (mole * s)), H3Op, O3m);
0148   reactionData->AddProduct(OH);
0149   reactionData->AddProduct(O2);  // add to Scavenger
0150   pReactionTable->SetReaction(reactionData);
0151   //------------------------------------------------------------------
0152   // H + HO2 -> H2O2
0153   reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, HO2);
0154   reactionData->AddProduct(H2O2);
0155   pReactionTable->SetReaction(reactionData);
0156   //------------------------------------------------------------------
0157   // H + O2- -> HO2-
0158   reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, O2m);
0159   reactionData->AddProduct(HO2m);
0160   pReactionTable->SetReaction(reactionData);
0161   //------------------------------------------------------------------
0162   // OH + O2- -> O2 + OH-
0163   reactionData = new G4DNAMolecularReactionData(1.07e10 * (1e-3 * m3 / (mole * s)), OH, O2m);
0164   reactionData->AddProduct(O2);  // added to Scavenger
0165   reactionData->AddProduct(OHm);
0166   pReactionTable->SetReaction(reactionData);
0167   //------------------------------------------------------------------
0168   // e_aq + O2- -> H2O2 + OH- + OH-
0169   reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), e_aq, O2m);
0170   reactionData->AddProduct(H2O2);
0171   reactionData->AddProduct(OHm);
0172   reactionData->AddProduct(OHm);
0173   pReactionTable->SetReaction(reactionData);
0174   //------------------------------------------------------------------
0175   // e_aq + HO2- -> O- + OH-
0176   reactionData = new G4DNAMolecularReactionData(3.51e9 * (1e-3 * m3 / (mole * s)), e_aq, HO2m);
0177   reactionData->AddProduct(Om);
0178   reactionData->AddProduct(OHm);
0179   pReactionTable->SetReaction(reactionData);
0180   //------------------------------------------------------------------
0181   // e_aq + O- -> OH- + OH-
0182   reactionData = new G4DNAMolecularReactionData(2.31e10 * (1e-3 * m3 / (mole * s)), e_aq, Om);
0183   reactionData->AddProduct(OHm);
0184   reactionData->AddProduct(OHm);
0185   pReactionTable->SetReaction(reactionData);
0186   //------------------------------------------------------------------
0187   // H3O+ + O2- -> HO2
0188   reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, O2m);
0189   reactionData->AddProduct(HO2);
0190   pReactionTable->SetReaction(reactionData);
0191   //------------------------------------------------------------------
0192   // H3O+ + HO2- -> H2O2
0193   reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, HO2m);
0194   reactionData->AddProduct(H2O2);
0195   pReactionTable->SetReaction(reactionData);
0196   //------------------------------------------------------------------
0197   // H3O+ + O- -> OH
0198   reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, Om);
0199   reactionData->AddProduct(OH);
0200   pReactionTable->SetReaction(reactionData);
0201   //------------------------------------------------------------------
0202   // eaq + HO2 -> HO2-
0203   reactionData = new G4DNAMolecularReactionData(1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, HO2);
0204   reactionData->AddProduct(HO2m);
0205   pReactionTable->SetReaction(reactionData);
0206   //------------------------------------------------------------------
0207   // OH + OH- -> O-
0208   reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), OH, OHm);
0209   reactionData->AddProduct(Om);
0210   pReactionTable->SetReaction(reactionData);
0211   //------------------------------------------------------------------
0212   // OH + HO2 -> O2
0213   reactionData = new G4DNAMolecularReactionData(7.90e9 * (1e-3 * m3 / (mole * s)), OH, HO2);
0214   reactionData->AddProduct(O2);  // added to Scavenger
0215   pReactionTable->SetReaction(reactionData);
0216   //------------------------------------------------------------------
0217   // OH + HO2- -> HO2 + OH-
0218   reactionData = new G4DNAMolecularReactionData(8.32e9 * (1e-3 * m3 / (mole * s)), OH, HO2m);
0219   reactionData->AddProduct(HO2);
0220   reactionData->AddProduct(OHm);
0221   pReactionTable->SetReaction(reactionData);
0222   //------------------------------------------------------------------
0223   // OH + O- -> HO2-
0224   reactionData = new G4DNAMolecularReactionData(1.00e9 * (1e-3 * m3 / (mole * s)), OH, Om);
0225   reactionData->AddProduct(HO2m);
0226   pReactionTable->SetReaction(reactionData);
0227   //------------------------------------------------------------------
0228   // OH + O3- -> O2- + HO2
0229   reactionData = new G4DNAMolecularReactionData(8.50e9 * (1e-3 * m3 / (mole * s)), OH, O3m);
0230   reactionData->AddProduct(O2m);
0231   reactionData->AddProduct(HO2);
0232   pReactionTable->SetReaction(reactionData);
0233   //------------------------------------------------------------------
0234   // OH- + HO2 -> O2-
0235   reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), OHm,
0236                                                 HO2);  // Frongillo 1.27e10
0237   reactionData->AddProduct(O2m);
0238   pReactionTable->SetReaction(reactionData);
0239   //------------------------------------------------------------------
0240   // H2O2 + OH- -> HO2-
0241   reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), H2O2,
0242                                                 OHm);  // Elliot 1.3e10, Plante 4.71e8
0243   reactionData->AddProduct(HO2m);
0244   pReactionTable->SetReaction(reactionData);
0245   //------------------------------------------------------------------
0246   // H2O2 + O- -> HO2 + OH-
0247   reactionData = new G4DNAMolecularReactionData(5.55e8 * (1e-3 * m3 / (mole * s)), H2O2, Om);
0248   reactionData->AddProduct(HO2);
0249   reactionData->AddProduct(OHm);
0250   pReactionTable->SetReaction(reactionData);
0251   //------------------------------------------------------------------
0252   // H2 + O- -> H + OH-
0253   reactionData = new G4DNAMolecularReactionData(1.21e8 * (1e-3 * m3 / (mole * s)), H2, Om);
0254   reactionData->AddProduct(H);
0255   reactionData->AddProduct(OHm);
0256   pReactionTable->SetReaction(reactionData);
0257   //------------------------------------------------------------------
0258   // O2- + O- -> O2 + OH- + OH-
0259   reactionData = new G4DNAMolecularReactionData(6.00e8 * (1e-3 * m3 / (mole * s)), O2m, Om);
0260   reactionData->AddProduct(O2);
0261   reactionData->AddProduct(OHm);
0262   reactionData->AddProduct(OHm);
0263   pReactionTable->SetReaction(reactionData);
0264   //------------------------------------------------------------------
0265   // HO2- + O- -> O2- + OH-
0266   reactionData = new G4DNAMolecularReactionData(3.50e8 * (1e-3 * m3 / (mole * s)), HO2m, Om);
0267   reactionData->AddProduct(O2m);
0268   reactionData->AddProduct(OHm);
0269   pReactionTable->SetReaction(reactionData);
0270   //------------------------------------------------------------------
0271   // O- + O- -> H2O2 + OH- + OH-
0272   reactionData = new G4DNAMolecularReactionData(1.00e8 * (1e-3 * m3 / (mole * s)), Om, Om);
0273   reactionData->AddProduct(H2O2);
0274   reactionData->AddProduct(OHm);
0275   reactionData->AddProduct(OHm);
0276   pReactionTable->SetReaction(reactionData);
0277   //------------------------------------------------------------------
0278   // O- + O3- -> O2- + O2-
0279   reactionData = new G4DNAMolecularReactionData(7.00e8 * (1e-3 * m3 / (mole * s)), Om, O3m);
0280   reactionData->AddProduct(O2m);
0281   reactionData->AddProduct(O2m);
0282   pReactionTable->SetReaction(reactionData);
0283   //------------------------------------------------------------------
0284   // H + OH- -> eaq-
0285   reactionData = new G4DNAMolecularReactionData(2.51e7 * (1e-3 * m3 / (mole * s)), H, OHm);
0286   reactionData->AddProduct(e_aq);
0287   pReactionTable->SetReaction(reactionData);
0288   //------------------------------------------------------------------
0289   // H + H2O2 -> OH
0290   reactionData = new G4DNAMolecularReactionData(3.50e7 * (1e-3 * m3 / (mole * s)), H, H2O2);
0291   reactionData->AddProduct(OH);
0292   pReactionTable->SetReaction(reactionData);
0293   //------------------------------------------------------------------
0294   // OH + H2O2 -> HO2
0295   reactionData = new G4DNAMolecularReactionData(2.88e7 * (1e-3 * m3 / (mole * s)), OH, H2O2);
0296   reactionData->AddProduct(HO2);
0297   pReactionTable->SetReaction(reactionData);
0298   //------------------------------------------------------------------
0299   // OH + H2 -> H
0300   reactionData = new G4DNAMolecularReactionData(3.28e7 * (1e-3 * m3 / (mole * s)), OH, H2);
0301   reactionData->AddProduct(H);
0302   pReactionTable->SetReaction(reactionData);
0303   //------------------------------------------------------------------
0304   // HO2 + HO2 -> H2O2 + O2
0305   reactionData = new G4DNAMolecularReactionData(9.80e5 * (1e-3 * m3 / (mole * s)), HO2, HO2);
0306   reactionData->AddProduct(H2O2);
0307   reactionData->AddProduct(O2);
0308   pReactionTable->SetReaction(reactionData);
0309   //------------------------------------------------------------------
0310   // HO2 + O2- -> HO2- + O2 +
0311   reactionData = new G4DNAMolecularReactionData(9.70e7 * (1e-3 * m3 / (mole * s)), HO2, O2m);
0312   reactionData->AddProduct(HO2m);
0313   reactionData->AddProduct(O2);
0314   pReactionTable->SetReaction(reactionData);
0315   //------------------------------------------------------------------
0316   // hoang added. this must be rare
0317   // O2- + O2- -> H2O2 + O2 + 2 OH-
0318   reactionData = new G4DNAMolecularReactionData(1.0e2 * (1e-3 * m3 / (mole * s)), O2m, O2m);
0319   reactionData->AddProduct(H2O2);
0320   reactionData->AddProduct(O2);
0321   reactionData->AddProduct(OHm);
0322   reactionData->AddProduct(OHm);
0323   pReactionTable->SetReaction(reactionData);
0324 }
0325 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......