Geant4-11
Public Member Functions | Private Member Functions | Private Attributes
G4StatMFMacroChemicalPotential Class Reference

#include <G4StatMFMacroChemicalPotential.hh>

Public Member Functions

G4double CalcChemicalPotentialNu (void)
 
 G4StatMFMacroChemicalPotential (const G4double anA, const G4double aZ, const G4double kappa, const G4double temp, std::vector< G4VStatMFMacroCluster * > *ClusterVector)
 
G4double GetChemicalPotentialMu (void) const
 
G4double GetChemicalPotentialNu (void) const
 
G4double GetMeanMultiplicity (void) const
 
G4double operator() (const G4double nu)
 
 ~G4StatMFMacroChemicalPotential ()
 

Private Member Functions

void CalcChemicalPotentialMu (const G4double nu)
 
G4double CalcMeanZ (const G4double nu)
 
 G4StatMFMacroChemicalPotential ()
 
 G4StatMFMacroChemicalPotential (const G4StatMFMacroChemicalPotential &)
 
G4bool operator!= (const G4StatMFMacroChemicalPotential &right) const
 
G4StatMFMacroChemicalPotentialoperator= (const G4StatMFMacroChemicalPotential &right)
 
G4bool operator== (const G4StatMFMacroChemicalPotential &right) const
 

Private Attributes

G4double _ChemPotentialMu
 
G4double _ChemPotentialNu
 
G4double _Kappa
 
G4double _MeanMultiplicity
 
G4double _MeanTemperature
 
std::vector< G4VStatMFMacroCluster * > * _theClusters
 
G4double theA
 
G4double theZ
 

Detailed Description

Definition at line 43 of file G4StatMFMacroChemicalPotential.hh.

Constructor & Destructor Documentation

◆ G4StatMFMacroChemicalPotential() [1/3]

G4StatMFMacroChemicalPotential::G4StatMFMacroChemicalPotential ( const G4double  anA,
const G4double  aZ,
const G4double  kappa,
const G4double  temp,
std::vector< G4VStatMFMacroCluster * > *  ClusterVector 
)
inline

◆ ~G4StatMFMacroChemicalPotential()

G4StatMFMacroChemicalPotential::~G4StatMFMacroChemicalPotential ( )
inline

Definition at line 61 of file G4StatMFMacroChemicalPotential.hh.

61{};

◆ G4StatMFMacroChemicalPotential() [2/3]

G4StatMFMacroChemicalPotential::G4StatMFMacroChemicalPotential ( )
inlineprivate

Definition at line 68 of file G4StatMFMacroChemicalPotential.hh.

68{};

◆ G4StatMFMacroChemicalPotential() [3/3]

G4StatMFMacroChemicalPotential::G4StatMFMacroChemicalPotential ( const G4StatMFMacroChemicalPotential )
inlineprivate

Definition at line 71 of file G4StatMFMacroChemicalPotential.hh.

71{};

Member Function Documentation

◆ CalcChemicalPotentialMu()

void G4StatMFMacroChemicalPotential::CalcChemicalPotentialMu ( const G4double  nu)
private

◆ CalcChemicalPotentialNu()

G4double G4StatMFMacroChemicalPotential::CalcChemicalPotentialNu ( void  )

Definition at line 56 of file G4StatMFMacroChemicalPotential.cc.

58{
59 G4Pow* g4calc = G4Pow::GetInstance();
61
62 // Initial value for _ChemPotentialNu
64 +2.0*CP*g4calc->Z23(theA))
66
68 G4double ChemPb = 0.5*_ChemPotentialNu;
69
70 G4double fChemPa = this->operator()(ChemPa);
71 G4double fChemPb = this->operator()(ChemPb);
72
73 if (fChemPa*fChemPb > 0.0) {
74 // bracketing the solution
75 if (fChemPa < 0.0) {
76 do {
77 ChemPb -= 1.5*std::abs(ChemPb-ChemPa);
78 fChemPb = this->operator()(ChemPb);
79 // Loop checking, 05-Aug-2015, Vladimir Ivanchenko
80 } while (fChemPb < 0.0);
81 } else {
82 do {
83 ChemPb += 1.5*std::abs(ChemPb-ChemPa);
84 fChemPb = this->operator()(ChemPb);
85 // Loop checking, 05-Aug-2015, Vladimir Ivanchenko
86 } while (fChemPb > 0.0);
87 }
88 }
89
92 theSolver->SetIntervalLimits(ChemPa,ChemPb);
93 // if (!theSolver->Crenshaw(*this))
94 if (!theSolver->Brent(*this)){
95 G4cout <<"G4StatMFMacroChemicalPotential:"<<" ChemPa="<<ChemPa
96 <<" ChemPb="<<ChemPb<< G4endl;
97 G4cout <<"G4StatMFMacroChemicalPotential:"<<" fChemPa="<<fChemPa
98 <<" fChemPb="<<fChemPb<< G4endl;
99 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroChemicalPotential::CalcChemicalPotentialNu: I couldn't find the root.");
100 }
101 _ChemPotentialNu = theSolver->GetRoot();
102 delete theSolver;
103 return _ChemPotentialNu;
104}
double G4double
Definition: G4Types.hh:83
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
Definition: G4Pow.hh:49
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double Z23(G4int Z) const
Definition: G4Pow.hh:125
G4bool Brent(Function &theFunction)
void SetIntervalLimits(const G4double Limit1, const G4double Limit2)
G4double GetRoot(void) const
Definition: G4Solver.hh:76
static G4double GetGamma0()
static G4double GetCoulomb()
static const G4double CP[5]
Definition: paraMaker.cc:43

References _ChemPotentialNu, G4Solver< Function >::Brent(), anonymous_namespace{paraMaker.cc}::CP, G4cout, G4endl, G4StatMFParameters::GetCoulomb(), G4StatMFParameters::GetGamma0(), G4Pow::GetInstance(), G4Solver< Function >::GetRoot(), operator()(), G4Solver< Function >::SetIntervalLimits(), theA, theZ, and G4Pow::Z23().

Referenced by G4StatMFMacroTemperature::CalcChemicalPotentialNu().

◆ CalcMeanZ()

G4double G4StatMFMacroChemicalPotential::CalcMeanZ ( const G4double  nu)
private

Definition at line 108 of file G4StatMFMacroChemicalPotential.cc.

109{
110 std::vector<G4VStatMFMacroCluster*>::iterator i;
111 for (i= _theClusters->begin()+1; i != _theClusters->end(); ++i)
112 {
113 (*i)->CalcZARatio(nu);
114 }
116 // This is important, the Z over A ratio for proton and neutron depends on the
117 // chemical potential Mu, while for the first guess for Chemical potential mu
118 // some values of Z over A ratio. This is the reason for that.
119 (*_theClusters->begin())->CalcZARatio(nu);
120
121 G4double MeanZ = 0.0;
122 G4int n = 1;
123 for (i = _theClusters->begin(); i != _theClusters->end(); ++i)
124 {
125 MeanZ += (n++) * (*i)->GetZARatio() * (*i)->GetMeanMultiplicity();
126 }
127 return MeanZ;
128}
int G4int
Definition: G4Types.hh:85

References _theClusters, CalcChemicalPotentialMu(), and CLHEP::detail::n.

Referenced by operator()().

◆ GetChemicalPotentialMu()

G4double G4StatMFMacroChemicalPotential::GetChemicalPotentialMu ( void  ) const
inline

◆ GetChemicalPotentialNu()

G4double G4StatMFMacroChemicalPotential::GetChemicalPotentialNu ( void  ) const
inline

Definition at line 85 of file G4StatMFMacroChemicalPotential.hh.

85{return _ChemPotentialNu;}

References _ChemPotentialNu.

◆ GetMeanMultiplicity()

G4double G4StatMFMacroChemicalPotential::GetMeanMultiplicity ( void  ) const
inline

◆ operator!=()

G4bool G4StatMFMacroChemicalPotential::operator!= ( const G4StatMFMacroChemicalPotential right) const
private

Definition at line 50 of file G4StatMFMacroChemicalPotential.cc.

51{
52 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroChemicalPotential::operator!= meant to not be accessible");
53 return true;
54}

◆ operator()()

G4double G4StatMFMacroChemicalPotential::operator() ( const G4double  nu)
inline

Definition at line 63 of file G4StatMFMacroChemicalPotential.hh.

64 { return (theZ - this->CalcMeanZ(nu))/theZ; }

References CalcMeanZ(), and theZ.

Referenced by CalcChemicalPotentialNu().

◆ operator=()

G4StatMFMacroChemicalPotential & G4StatMFMacroChemicalPotential::operator= ( const G4StatMFMacroChemicalPotential right)
private

Definition at line 37 of file G4StatMFMacroChemicalPotential.cc.

38{
39 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroChemicalPotential::operator= meant to not be accessible");
40 return *this;
41}

◆ operator==()

G4bool G4StatMFMacroChemicalPotential::operator== ( const G4StatMFMacroChemicalPotential right) const
private

Definition at line 43 of file G4StatMFMacroChemicalPotential.cc.

44{
45 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroChemicalPotential::operator== meant to not be accessible");
46 return false;
47}

Field Documentation

◆ _ChemPotentialMu

G4double G4StatMFMacroChemicalPotential::_ChemPotentialMu
private

◆ _ChemPotentialNu

G4double G4StatMFMacroChemicalPotential::_ChemPotentialNu
private

◆ _Kappa

G4double G4StatMFMacroChemicalPotential::_Kappa
private

Definition at line 101 of file G4StatMFMacroChemicalPotential.hh.

Referenced by CalcChemicalPotentialMu().

◆ _MeanMultiplicity

G4double G4StatMFMacroChemicalPotential::_MeanMultiplicity
private

◆ _MeanTemperature

G4double G4StatMFMacroChemicalPotential::_MeanTemperature
private

Definition at line 105 of file G4StatMFMacroChemicalPotential.hh.

Referenced by CalcChemicalPotentialMu().

◆ _theClusters

std::vector<G4VStatMFMacroCluster*>* G4StatMFMacroChemicalPotential::_theClusters
private

Definition at line 111 of file G4StatMFMacroChemicalPotential.hh.

Referenced by CalcChemicalPotentialMu(), and CalcMeanZ().

◆ theA

G4double G4StatMFMacroChemicalPotential::theA
private

◆ theZ

G4double G4StatMFMacroChemicalPotential::theZ
private

Definition at line 99 of file G4StatMFMacroChemicalPotential.hh.

Referenced by CalcChemicalPotentialNu(), and operator()().


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