File indexing completed on 2025-12-16 09:31:31
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 #include "ChemOxygenWaterBuilder.hh"
0028
0029 #include "G4DNAMolecularReactionTable.hh"
0030 #include "G4MoleculeTable.hh"
0031 #include "G4SystemOfUnits.hh"
0032 #include "G4EmParameters.hh"
0033
0034
0035 void ChemOxygenWaterBuilder::OxygenScavengerReaction(G4DNAMolecularReactionTable* pReactionTable)
0036 {
0037 auto table = G4MoleculeTable::Instance();
0038
0039
0040 auto* e_aq = table->GetConfiguration("e_aq");
0041 auto* H = table->GetConfiguration("H");
0042 auto* HO2 = table->GetConfiguration("HO2°");
0043 auto* Om = table->GetConfiguration("Om");
0044 auto* O2 = table->GetConfiguration("O2");
0045 auto* O2m = table->GetConfiguration("O2m");
0046 auto* O3m = table->GetConfiguration("O3m");
0047 G4DNAMolecularReactionData* reactionData = nullptr;
0048
0049
0050 reactionData = new G4DNAMolecularReactionData(1.74e10 * (1e-3 * m3 / (mole * s)), e_aq, O2);
0051 reactionData->AddProduct(O2m);
0052 pReactionTable->SetReaction(reactionData);
0053
0054
0055 reactionData = new G4DNAMolecularReactionData(2.1e10 * (1e-3 * m3 / (mole * s)), H, O2);
0056 reactionData->AddProduct(HO2);
0057 pReactionTable->SetReaction(reactionData);
0058
0059
0060 reactionData = new G4DNAMolecularReactionData(3.7e9 * (1e-3 * m3 / (mole * s)), Om, O2);
0061 reactionData->AddProduct(O3m);
0062 pReactionTable->SetReaction(reactionData);
0063
0064 }
0065
0066 void ChemOxygenWaterBuilder::CO2ScavengerReaction(G4DNAMolecularReactionTable* pReactionTable)
0067 {
0068 auto table = G4MoleculeTable::Instance();
0069
0070
0071 auto* e_aq = table->GetConfiguration("e_aq");
0072 auto* OH = table->GetConfiguration("°OH");
0073 auto* CO2 = table->GetConfiguration("CO2");
0074 auto* CO2m = table->GetConfiguration("CO2m");
0075 auto* HCO3 = table->GetConfiguration("HCO3");
0076
0077
0078 G4DNAMolecularReactionData* reactionData = nullptr;
0079
0080
0081 reactionData = new G4DNAMolecularReactionData(0.77e10 * (1e-3 * m3 / (mole * s)), e_aq, CO2);
0082 reactionData->AddProduct(CO2m);
0083 pReactionTable->SetReaction(reactionData);
0084
0085
0086 reactionData = new G4DNAMolecularReactionData(1.e6 * (1e-3 * m3 / (mole * s)), OH, CO2);
0087 reactionData->AddProduct(HCO3);
0088 pReactionTable->SetReaction(reactionData);
0089
0090 }
0091
0092
0093 void ChemOxygenWaterBuilder::SecondOrderReactionExtended(
0094 G4DNAMolecularReactionTable *pReactionTable) {
0095 G4EmParameters* param = G4EmParameters::Instance();
0096 auto model = param->GetTimeStepModel();
0097
0098
0099 auto table = G4MoleculeTable::Instance();
0100 auto* OH = table->GetConfiguration("°OH");
0101 auto* OHm = table->GetConfiguration("OHm");
0102 auto* e_aq = table->GetConfiguration("e_aq");
0103 auto* H2 = table->GetConfiguration("H2");
0104 auto* H3Op = table->GetConfiguration("H3Op");
0105 auto* H = table->GetConfiguration("H");
0106 auto* H2O2 = table->GetConfiguration("H2O2");
0107
0108 auto* HO2 = table->GetConfiguration("HO2°");
0109 auto* HO2m = table->GetConfiguration("HO2m");
0110 auto* Om = table->GetConfiguration("Om");
0111 auto* O2 = table->GetConfiguration("O2");
0112 auto* O2m = table->GetConfiguration("O2m");
0113 auto* O3m = table->GetConfiguration("O3m");
0114 auto* HCO3m = table->GetConfiguration("HCO3m");
0115 auto* O = table->GetConfiguration("Oxy");
0116 auto* CO3m = table->GetConfiguration("CO3m");
0117
0118 auto* N2O = table->GetConfiguration("N2O");
0119 auto* MeOH = table->GetConfiguration("CH3OH");
0120 auto* CH2OH = table->GetConfiguration("CH2OH");
0121
0122
0123 G4DNAMolecularReactionData* reactionData = nullptr;
0124
0125
0126
0127 reactionData = new G4DNAMolecularReactionData(0.503e10 * (1e-3 * m3 / (mole * s)), H, H);
0128 reactionData->AddProduct(H2);
0129 pReactionTable->SetReaction(reactionData);
0130
0131
0132 reactionData = new G4DNAMolecularReactionData(2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
0133 reactionData->AddProduct(OHm);
0134 reactionData->AddProduct(H2);
0135 pReactionTable->SetReaction(reactionData);
0136
0137
0138 reactionData = new G4DNAMolecularReactionData(0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
0139 reactionData->AddProduct(OHm);
0140 reactionData->AddProduct(OHm);
0141 reactionData->AddProduct(H2);
0142 pReactionTable->SetReaction(reactionData);
0143
0144
0145 reactionData = new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
0146 pReactionTable->SetReaction(reactionData);
0147
0148
0149 reactionData = new G4DNAMolecularReactionData(1.55e10 * (1e-3 * m3 / (mole * s)), OH, H);
0150 SetReactionType(reactionData, model);
0151 pReactionTable->SetReaction(reactionData);
0152
0153
0154 reactionData = new G4DNAMolecularReactionData(0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH);
0155 reactionData->AddProduct(H2O2);
0156 SetReactionType(reactionData, model);
0157 pReactionTable->SetReaction(reactionData);
0158
0159
0160 reactionData = new G4DNAMolecularReactionData(2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
0161 reactionData->AddProduct(OHm);
0162 SetReactionType(reactionData, model);
0163 pReactionTable->SetReaction(reactionData);
0164
0165
0166 reactionData = new G4DNAMolecularReactionData(1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
0167 reactionData->AddProduct(OHm);
0168 reactionData->AddProduct(OH);
0169 SetReactionType(reactionData, model);
0170 pReactionTable->SetReaction(reactionData);
0171
0172
0173 reactionData = new G4DNAMolecularReactionData(2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
0174 reactionData->AddProduct(H);
0175 SetReactionType(reactionData, model);
0176 pReactionTable->SetReaction(reactionData);
0177
0178
0179
0180
0181 reactionData = new G4DNAMolecularReactionData(2.00e10 * (1e-3 * m3 / (mole * s)), H, Om);
0182 reactionData->AddProduct(OHm);
0183 pReactionTable->SetReaction(reactionData);
0184
0185
0186 reactionData = new G4DNAMolecularReactionData(9.0e10 * (1e-3 * m3 / (mole * s)), H3Op, O3m);
0187 reactionData->AddProduct(OH);
0188 reactionData->AddProduct(O2);
0189 pReactionTable->SetReaction(reactionData);
0190
0191
0192 reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, HO2);
0193 reactionData->AddProduct(H2O2);
0194 SetReactionType(reactionData, model);
0195 pReactionTable->SetReaction(reactionData);
0196
0197
0198 reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, O2m);
0199 reactionData->AddProduct(HO2m);
0200 SetReactionType(reactionData, model);
0201 pReactionTable->SetReaction(reactionData);
0202
0203
0204 reactionData = new G4DNAMolecularReactionData(1.07e10 * (1e-3 * m3 / (mole * s)), OH, O2m);
0205 reactionData->AddProduct(O2);
0206 reactionData->AddProduct(OHm);
0207 SetReactionType(reactionData, model);
0208 pReactionTable->SetReaction(reactionData);
0209
0210
0211 reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), e_aq, O2m);
0212 reactionData->AddProduct(H2O2);
0213 reactionData->AddProduct(OHm);
0214 reactionData->AddProduct(OHm);
0215 SetReactionType(reactionData, model);
0216 pReactionTable->SetReaction(reactionData);
0217
0218
0219 reactionData = new G4DNAMolecularReactionData(3.51e9 * (1e-3 * m3 / (mole * s)), e_aq, HO2m);
0220 reactionData->AddProduct(Om);
0221 reactionData->AddProduct(OHm);
0222 SetReactionType(reactionData, model);
0223 pReactionTable->SetReaction(reactionData);
0224
0225
0226 reactionData = new G4DNAMolecularReactionData(2.31e10 * (1e-3 * m3 / (mole * s)), e_aq, Om);
0227 reactionData->AddProduct(OHm);
0228 reactionData->AddProduct(OHm);
0229 SetReactionType(reactionData, model);
0230 pReactionTable->SetReaction(reactionData);
0231
0232
0233 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, O2m);
0234 reactionData->AddProduct(HO2);
0235 SetReactionType(reactionData, model);
0236 pReactionTable->SetReaction(reactionData);
0237
0238
0239 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, HO2m);
0240 reactionData->AddProduct(H2O2);
0241 SetReactionType(reactionData, model);
0242 pReactionTable->SetReaction(reactionData);
0243
0244
0245 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, Om);
0246 reactionData->AddProduct(OH);
0247 SetReactionType(reactionData, model);
0248 pReactionTable->SetReaction(reactionData);
0249
0250
0251 reactionData = new G4DNAMolecularReactionData(1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, HO2);
0252 reactionData->AddProduct(HO2m);
0253 SetReactionType(reactionData, model);
0254 pReactionTable->SetReaction(reactionData);
0255
0256
0257 reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), OH, OHm);
0258 reactionData->AddProduct(Om);
0259 SetReactionType(reactionData, model);
0260 pReactionTable->SetReaction(reactionData);
0261
0262
0263 reactionData = new G4DNAMolecularReactionData(7.90e9 * (1e-3 * m3 / (mole * s)), OH, HO2);
0264 reactionData->AddProduct(O2);
0265 SetReactionType(reactionData, model);
0266 pReactionTable->SetReaction(reactionData);
0267
0268
0269 reactionData = new G4DNAMolecularReactionData(8.32e9 * (1e-3 * m3 / (mole * s)), OH, HO2m);
0270 reactionData->AddProduct(HO2);
0271 reactionData->AddProduct(OHm);
0272 SetReactionType(reactionData, model);
0273 pReactionTable->SetReaction(reactionData);
0274
0275
0276 reactionData = new G4DNAMolecularReactionData(1.00e9 * (1e-3 * m3 / (mole * s)), OH, Om);
0277 reactionData->AddProduct(HO2m);
0278 SetReactionType(reactionData, model);
0279 pReactionTable->SetReaction(reactionData);
0280
0281
0282 reactionData = new G4DNAMolecularReactionData(8.50e9 * (1e-3 * m3 / (mole * s)), OH, O3m);
0283 reactionData->AddProduct(O2m);
0284 reactionData->AddProduct(HO2);
0285 SetReactionType(reactionData, model);
0286 pReactionTable->SetReaction(reactionData);
0287
0288
0289 reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), OHm,
0290 HO2);
0291 reactionData->AddProduct(O2m);
0292 SetReactionType(reactionData, model);
0293 pReactionTable->SetReaction(reactionData);
0294
0295
0296 reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), H2O2,
0297 OHm);
0298 reactionData->AddProduct(HO2m);
0299 SetReactionType(reactionData, model);
0300 pReactionTable->SetReaction(reactionData);
0301
0302
0303 reactionData = new G4DNAMolecularReactionData(5.55e8 * (1e-3 * m3 / (mole * s)), H2O2, Om);
0304 reactionData->AddProduct(HO2);
0305 reactionData->AddProduct(OHm);
0306 SetReactionType(reactionData, model);
0307 pReactionTable->SetReaction(reactionData);
0308
0309
0310 reactionData = new G4DNAMolecularReactionData(1.21e8 * (1e-3 * m3 / (mole * s)), H2, Om);
0311 reactionData->AddProduct(H);
0312 reactionData->AddProduct(OHm);
0313 SetReactionType(reactionData, model);
0314 pReactionTable->SetReaction(reactionData);
0315
0316
0317 reactionData = new G4DNAMolecularReactionData(6.00e8 * (1e-3 * m3 / (mole * s)), O2m, Om);
0318 reactionData->AddProduct(O2);
0319 reactionData->AddProduct(OHm);
0320 reactionData->AddProduct(OHm);
0321 SetReactionType(reactionData, model);
0322 pReactionTable->SetReaction(reactionData);
0323
0324
0325 reactionData = new G4DNAMolecularReactionData(3.50e8 * (1e-3 * m3 / (mole * s)), HO2m, Om);
0326 reactionData->AddProduct(O2m);
0327 reactionData->AddProduct(OHm);
0328 SetReactionType(reactionData, model);
0329 pReactionTable->SetReaction(reactionData);
0330
0331
0332 reactionData = new G4DNAMolecularReactionData(1.00e8 * (1e-3 * m3 / (mole * s)), Om, Om);
0333 reactionData->AddProduct(H2O2);
0334 reactionData->AddProduct(OHm);
0335 reactionData->AddProduct(OHm);
0336 SetReactionType(reactionData, model);
0337 pReactionTable->SetReaction(reactionData);
0338
0339
0340 reactionData = new G4DNAMolecularReactionData(7.00e8 * (1e-3 * m3 / (mole * s)), Om, O3m);
0341 reactionData->AddProduct(O2m);
0342 reactionData->AddProduct(O2m);
0343 SetReactionType(reactionData, model);
0344 pReactionTable->SetReaction(reactionData);
0345
0346
0347 reactionData = new G4DNAMolecularReactionData(2.51e7 * (1e-3 * m3 / (mole * s)), H, OHm);
0348 reactionData->AddProduct(e_aq);
0349 SetReactionType(reactionData, model);
0350 pReactionTable->SetReaction(reactionData);
0351
0352
0353 reactionData = new G4DNAMolecularReactionData(3.50e7 * (1e-3 * m3 / (mole * s)), H, H2O2);
0354 reactionData->AddProduct(OH);
0355 SetReactionType(reactionData, model);
0356 pReactionTable->SetReaction(reactionData);
0357
0358
0359 reactionData = new G4DNAMolecularReactionData(2.88e7 * (1e-3 * m3 / (mole * s)), OH, H2O2);
0360 reactionData->AddProduct(HO2);
0361 SetReactionType(reactionData, model);
0362 pReactionTable->SetReaction(reactionData);
0363
0364
0365 reactionData = new G4DNAMolecularReactionData(3.28e7 * (1e-3 * m3 / (mole * s)), OH, H2);
0366 reactionData->AddProduct(H);
0367 SetReactionType(reactionData, model);
0368 pReactionTable->SetReaction(reactionData);
0369
0370
0371 reactionData = new G4DNAMolecularReactionData(9.80e5 * (1e-3 * m3 / (mole * s)), HO2, HO2);
0372 reactionData->AddProduct(H2O2);
0373 reactionData->AddProduct(O2);
0374 SetReactionType(reactionData, model);
0375 pReactionTable->SetReaction(reactionData);
0376
0377
0378 reactionData = new G4DNAMolecularReactionData(9.70e7 * (1e-3 * m3 / (mole * s)), HO2, O2m);
0379 reactionData->AddProduct(HO2m);
0380 reactionData->AddProduct(O2);
0381 SetReactionType(reactionData, model);
0382 pReactionTable->SetReaction(reactionData);
0383
0384
0385
0386 reactionData = new G4DNAMolecularReactionData(1.0e2 * (1e-3 * m3 / (mole * s)), O2m, O2m);
0387 reactionData->AddProduct(H2O2);
0388 reactionData->AddProduct(O2);
0389 reactionData->AddProduct(OHm);
0390 reactionData->AddProduct(OHm);
0391 pReactionTable->SetReaction(reactionData);
0392
0393
0394
0395
0396
0397 reactionData = new G4DNAMolecularReactionData(8.5e6 * (1e-3 * m3 / (mole * s)), OH, HCO3m);
0398 reactionData->AddProduct(CO3m);
0399 pReactionTable->SetReaction(reactionData);
0400
0401
0402
0403
0404
0405 reactionData = new G4DNAMolecularReactionData(2.0e10 * (1e-3 * m3 / (mole * s)), O, OH);
0406 reactionData->AddProduct(HO2);
0407 pReactionTable->SetReaction(reactionData);
0408
0409 reactionData = new G4DNAMolecularReactionData(0.9e10 * (1e-3 * m3 / (mole * s)), e_aq, N2O);
0410 reactionData->AddProduct(Om);
0411 pReactionTable->SetReaction(reactionData);
0412
0413
0414 reactionData = new G4DNAMolecularReactionData(9.7e8 * (1e-3 * m3 / (mole * s)), OH, MeOH);
0415 reactionData->AddProduct(CH2OH);
0416 pReactionTable->SetReaction(reactionData);
0417 }
0418
0419
0420 void ChemOxygenWaterBuilder::SetReactionType(G4DNAMolecularReactionData* pData, G4ChemTimeStepModel model)
0421 {
0422 if(model != G4ChemTimeStepModel::SBS) { pData->SetReactionType(1); }
0423 }
0424
0425