[cig-commits] [commit] add_thermodynamic_potentials: Finished ideal activity formulation (ea6d8de)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Tue Dec 9 09:55:40 PST 2014
Repository : https://github.com/geodynamics/burnman
On branch : add_thermodynamic_potentials
Link : https://github.com/geodynamics/burnman/compare/2e5646d93cedbbf8eae54cc37cffc14e0aa85180...d5ddad03ff9f30f5a4efaddb4e3ec585ea1a7c51
>---------------------------------------------------------------
commit ea6d8de9ada42b566fead8c886b01ee837918f1d
Author: Bob Myhill <myhill.bob at gmail.com>
Date: Wed Sep 3 23:50:00 2014 +0200
Finished ideal activity formulation
>---------------------------------------------------------------
ea6d8de9ada42b566fead8c886b01ee837918f1d
burnman/solutionmodel.py | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/burnman/solutionmodel.py b/burnman/solutionmodel.py
index 3544a36..93022b5 100644
--- a/burnman/solutionmodel.py
+++ b/burnman/solutionmodel.py
@@ -89,9 +89,8 @@ class IdealSolution ( SolutionModel ):
self.endmember_configurational_entropies=np.zeros(shape=(self.n_endmembers))
for idx, endmember_occupancy in enumerate(self.endmember_occupancies):
- S_conf=0.
for occ in range(self.n_occupancies):
- if endmember_occupancy[occ] != 0: #integer?
+ if endmember_occupancy[occ] != 0.:
self.endmember_configurational_entropies[idx] = \
self.endmember_configurational_entropies[idx] - \
R*self.site_multiplicities[occ]*endmember_occupancy[occ]*np.log(endmember_occupancy[occ])
@@ -108,13 +107,19 @@ class IdealSolution ( SolutionModel ):
if occupancy > 1e-10:
conf_entropy=conf_entropy-R*occupancy*self.site_multiplicities[idx]*np.log(occupancy)
+ # Alternative entropy construction
+ #activities=self.ideal_activities(molar_fractions)
+ #conf_entropy=0.
+ #for i, activity in enumerate(activities):
+ # if activity > 1e-10:
+ # conf_entropy=conf_entropy - R*molar_fractions[i]*np.log(activity) + molar_fractions[i]*self.endmember_configurational_entropies[i]
+
return conf_entropy
def ideal_gibbs_excess( self, temperature, molar_fractions ):
return 0.0-temperature*self.configurational_entropy(molar_fractions)
def ideal_activities ( self, molar_fractions ):
- # XXX Need to check this against configurational entropy!!!
site_occupancies=np.dot(molar_fractions, self.endmember_occupancies)
activities=np.empty(shape=(self.n_endmembers))
@@ -122,11 +127,10 @@ class IdealSolution ( SolutionModel ):
activities[e]=1.0
normalisation_constant=1.0
for occ in range(self.n_occupancies):
- if self.endmember_occupancies[e][occ] != 0.: #integer?
- activities[e]=activities[e]*np.power(site_occupancies[occ],site_occupancies[occ]*self.site_multiplicities[occ])
+ if self.endmember_occupancies[e][occ] > 1e-10:
+ activities[e]=activities[e]*np.power(site_occupancies[occ],self.endmember_occupancies[e][occ]*self.site_multiplicities[occ])
normalisation_constant=normalisation_constant/np.power(self.endmember_occupancies[e][occ],self.endmember_occupancies[e][occ]*self.site_multiplicities[occ])
activities[e]=normalisation_constant*activities[e]
-
return activities
More information about the CIG-COMMITS
mailing list