Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ChemEquilibrium Class Reference

#include <G4ChemEquilibrium.hh>

Public Types

using MolType = const G4MolecularConfiguration*
using Reaction = const G4DNAMolecularReactionData*

Public Member Functions

 G4ChemEquilibrium (const G4int &type, const G4double &time)
 ~G4ChemEquilibrium ()=default
void Initialize ()
G4bool IsStatusChanged ()
void Reset ()
void SetVerbose (const G4int &verbose)
void SetGlobalTime (const G4double &time)
void SetEquilibrium (Reaction pReaction)
G4bool GetEquilibriumStatus () const
void PrintInfo () const

Detailed Description

Definition at line 38 of file G4ChemEquilibrium.hh.

Member Typedef Documentation

◆ MolType

Definition at line 41 of file G4ChemEquilibrium.hh.

◆ Reaction

Constructor & Destructor Documentation

◆ G4ChemEquilibrium()

G4ChemEquilibrium::G4ChemEquilibrium ( const G4int & type,
const G4double & time )
explicit

Definition at line 33 of file G4ChemEquilibrium.cc.

34 : fEquilibriumDuration(time), fRectionType(type)
35{}

◆ ~G4ChemEquilibrium()

G4ChemEquilibrium::~G4ChemEquilibrium ( )
default

Member Function Documentation

◆ GetEquilibriumStatus()

G4bool G4ChemEquilibrium::GetEquilibriumStatus ( ) const
inline

Definition at line 91 of file G4ChemEquilibrium.hh.

92 {
93 return fAddEquilibrium;
94 }

◆ Initialize()

void G4ChemEquilibrium::Initialize ( )

Definition at line 37 of file G4ChemEquilibrium.cc.

38{
39 Reset();
40 MolType H2O =
42 MolType H3OpB =
44 MolType OHmB =
46 const auto& reactionList = G4DNAMolecularReactionTable::Instance()->
48 for(const auto& it : reactionList)
49 {
50 if(it->GetReactionType()==fRectionType)
51 {
52 if(it->GetReactant1() != H2O
53 && it->GetReactant1() != H3OpB
54 && it->GetReactant1() != OHmB)
55 {
56 fReactant1 = it->GetReactant1();
57 fReactantB1 = it->GetReactant2();
58 }else
59 {
60 fReactant1 = it->GetReactant2();
61 fReactantB1 = it->GetReactant1();
62 }
63 for(const auto& itt : *(it->GetProducts()))
64 {
65 if(itt != H3OpB
66 && itt != OHmB)
67 {
68 fReactant2 = itt;
69 }else
70 {
71 fReactantB2 = itt;
72 }
73 }
74 if(fVerbose > 1) {
75 G4cout << "Equilibrium processes(ID) " << fRectionType << " : " << fReactant1->GetName()
76 << " <=> " << fReactant2->GetName()
77 << " Time to Equilibrium : " << fEquilibriumDuration / CLHEP::us
78 << " Initial status : " << fAddEquilibrium << G4endl;
79 }
80 break ;
81 }
82 }
83}
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
const G4MolecularConfiguration * MolType
static G4DNAMolecularReactionTable * Instance()
G4MolecularConfiguration * GetConfiguration(const G4String &, bool mustExist=true)
static G4MoleculeTable * Instance()

◆ IsStatusChanged()

G4bool G4ChemEquilibrium::IsStatusChanged ( )
inline

Definition at line 46 of file G4ChemEquilibrium.hh.

47 {
48 if(fStatus == fAddEquilibrium){
49 return false;
50 }else
51 {
52 fStatus = fAddEquilibrium;
53 if(fVerbose > 0)
54 {
55 PrintInfo();
56 }
57 return true;
58 }
59 }

◆ PrintInfo()

void G4ChemEquilibrium::PrintInfo ( ) const

Definition at line 85 of file G4ChemEquilibrium.cc.

86{
87 G4cout<<"Equilibrium reactions : "<<fReactant1->GetName()
88 <<" + "<<fReactantB1->GetName()
89 <<" <=> "<<fReactant2->GetName()
90 <<" + "<<fReactantB2->GetName()
91 <<" Status : "<<fAddEquilibrium
92 <<" from "<<G4BestUnit(fEquilibriumTime,"Time")<<" to "
93 <<G4BestUnit(fEquilibriumTime + fEquilibriumDuration,"Time")<<G4endl;
94}
#define G4BestUnit(a, b)

Referenced by IsStatusChanged().

◆ Reset()

void G4ChemEquilibrium::Reset ( )
inline

Definition at line 61 of file G4ChemEquilibrium.hh.

62 {
63 fStatus = false;
64 fAddEquilibrium = false;
65 fEquilibriumTime = 0;
66 fGlobalTime = 0;
67 }

Referenced by Initialize().

◆ SetEquilibrium()

void G4ChemEquilibrium::SetEquilibrium ( Reaction pReaction)

Definition at line 97 of file G4ChemEquilibrium.cc.

98{
99 if(pReaction == nullptr){
100 return;
101 }
102 if(pReaction->GetReactionType() != fRectionType)
103 {
104 std::vector<MolType> molVector;
105 molVector.push_back(pReaction->GetReactant1());
106 molVector.push_back(pReaction->GetReactant2());
107 const G4int nbProducts = pReaction->GetNbProducts();
108 if (nbProducts) {
109 for (G4int j = 0; j < nbProducts; ++j) {
110 auto product = pReaction->GetProduct(j);
111 molVector.push_back(product);
112 }
113 }
114 for(const auto& it : molVector)
115 {
116 if(it == fReactant1 || it == fReactant2 )
117 {
118 fAddEquilibrium = true;
119 fEquilibriumTime = fGlobalTime;
120 if(fVerbose >1)
121 {
122 G4cout << "Reaction type : " << pReaction->GetReactionType() << " : "
123 << pReaction->GetReactant1()->GetName() << " + "
124 << pReaction->GetReactant2()->GetName() << G4endl;
125 G4cout << "SetEquilibrium : on " << fRectionType << " fEquilibriumTime : "
126 << G4BestUnit(fEquilibriumTime, "Time")<<G4endl;
127 }
128 break;
129 }
130 }
131 }
132}
int G4int
Definition G4Types.hh:85

◆ SetGlobalTime()

void G4ChemEquilibrium::SetGlobalTime ( const G4double & time)
inline

Definition at line 74 of file G4ChemEquilibrium.hh.

75 {
76 fGlobalTime = time;
77
78 if(fGlobalTime - fEquilibriumTime > fEquilibriumDuration && fAddEquilibrium)
79 {
80 fAddEquilibrium = false;
81 if(fVerbose) {
82 G4cout << "SetEquilibrium : off " << fRectionType
83 << " fGlobalTime : " << G4BestUnit(fGlobalTime, "Time")
84 << " fEquilibriumTime8 : " << G4BestUnit(fEquilibriumTime, "Time")
85 << " fAddEquilibrium : " << fAddEquilibrium << G4endl;
86 }
87 }
88 }

◆ SetVerbose()

void G4ChemEquilibrium::SetVerbose ( const G4int & verbose)
inline

Definition at line 69 of file G4ChemEquilibrium.hh.

70 {
71 fVerbose = verbose;
72 }

The documentation for this class was generated from the following files: