[cig-commits] [commit] inversion, master, validate_MT_params: Finished ideal activity formulation (7929428)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Fri Dec 12 18:26:01 PST 2014
Repository : https://github.com/geodynamics/burnman
On branches: inversion,master,validate_MT_params
Link : https://github.com/geodynamics/burnman/compare/80c2a295c42dfdb38f83f6c1334bf7d8f97a8463...409647ff05dfad6a686198cac1481bd46b5e2e62
>---------------------------------------------------------------
commit 7929428af3021bf6318fa451f8eec4d272161dec
Author: Bob Myhill <myhill.bob at gmail.com>
Date: Wed Sep 3 23:50:00 2014 +0200
Finished ideal activity formulation
>---------------------------------------------------------------
7929428af3021bf6318fa451f8eec4d272161dec
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