[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