[cig-commits] [commit] add_thermodynamic_potentials: Added more attributes to the solidsolution class (a8e6042)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Tue Dec 9 09:54:56 PST 2014
Repository : https://github.com/geodynamics/burnman
On branch : add_thermodynamic_potentials
Link : https://github.com/geodynamics/burnman/compare/2e5646d93cedbbf8eae54cc37cffc14e0aa85180...d5ddad03ff9f30f5a4efaddb4e3ec585ea1a7c51
>---------------------------------------------------------------
commit a8e604260b1a96fc9d8e33a7916dc0df05327c83
Author: Bob Myhill <myhill.bob at gmail.com>
Date: Sun Aug 31 03:13:33 2014 +0200
Added more attributes to the solidsolution class
>---------------------------------------------------------------
a8e604260b1a96fc9d8e33a7916dc0df05327c83
burnman/solidsolution.py | 16 ++++++++--------
burnman/test_solidsolution.py | 10 +++++++++-
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/burnman/solidsolution.py b/burnman/solidsolution.py
index 0001d1c..375057d 100644
--- a/burnman/solidsolution.py
+++ b/burnman/solidsolution.py
@@ -68,12 +68,12 @@ class SolidSolution(Mineral):
# NOT IMPLEMENTED YET
# Number of unique site occupancies (e.g.. Mg on X etc.)
- sites=[[] for i in range(self.n_sites)]
+ self.sites=[[] for i in range(self.n_sites)]
list_occupancies=[]
list_multiplicity=np.empty(shape=(self.n_sites))
self.n_occupancies=0
for endmember in range(self.n_endmembers):
- list_occupancies.append([[0]*len(sites[site]) for site in range(self.n_sites)])
+ list_occupancies.append([[0]*len(self.sites[site]) for site in range(self.n_sites)])
s=re.split(r'\[', base_material[endmember][1])[1:]
for site in range(self.n_sites):
site_occupancy=re.split(r'\]', s[site])[0]
@@ -91,14 +91,14 @@ class SolidSolution(Mineral):
else:
proportion_element_on_site=Fraction(proportion_element_on_site[0])
- if element_on_site not in sites[site]:
+ if element_on_site not in self.sites[site]:
self.n_occupancies=self.n_occupancies+1
- sites[site].append(element_on_site)
- element_index=sites[site].index(element_on_site)
+ self.sites[site].append(element_on_site)
+ element_index=self.sites[site].index(element_on_site)
for parsed_mbr in range(len(list_occupancies)):
list_occupancies[parsed_mbr][site].append(0)
else:
- element_index=sites[site].index(element_on_site)
+ element_index=self.sites[site].index(element_on_site)
list_occupancies[endmember][site][element_index]=proportion_element_on_site
# Site occupancies and multiplicities
@@ -134,14 +134,14 @@ class SolidSolution(Mineral):
self.molar_fraction=molar_fraction
# Ideal activities
- occupancies=np.dot(self.molar_fraction, self.site_occupancies)
+ self.occupancies=np.dot(self.molar_fraction, self.site_occupancies)
self.ideal_activity=np.empty(shape=(self.n_endmembers))
for endmember in range(self.n_endmembers):
self.ideal_activity[endmember]=1.0
normalisation_constant=1.0
for element in range(self.n_occupancies):
if self.site_occupancies[endmember][element] != 0:
- self.ideal_activity[endmember]=self.ideal_activity[endmember]*pow(occupancies[element],self.site_multiplicities[element])
+ self.ideal_activity[endmember]=self.ideal_activity[endmember]*pow(self.occupancies[element],self.site_multiplicities[element])
normalisation_constant=normalisation_constant/pow(self.site_occupancies[endmember][element],self.site_multiplicities[element])
self.ideal_activity[endmember]=normalisation_constant*self.ideal_activity[endmember]
diff --git a/burnman/test_solidsolution.py b/burnman/test_solidsolution.py
index 4f3e63a..09e9056 100644
--- a/burnman/test_solidsolution.py
+++ b/burnman/test_solidsolution.py
@@ -15,11 +15,19 @@ garnet=minerals.HP_2011_ds62.garnet()
composition=np.array([ 0.5, 0.2, 0.1, 0.2 ])
garnet.set_composition(composition)
+print 'Molar fraction'
print garnet.molar_fraction
-print garnet.alpha
+print ''
+print 'Site occupancies'
+print garnet.sites
+print garnet.occupancies
+print ''
print 'Ideal activities'
print garnet.ideal_activity
print ''
+print 'Volume excess'
+print garnet.V_excess
+print ''
# Excess volumes for the pyrope-grossular join
n=100
More information about the CIG-COMMITS
mailing list