[cig-commits] [commit] add_thermodynamic_potentials: Added P, T attributes and calcgibbs to solid solution class (cadd5b5)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Tue Dec 9 09:56:55 PST 2014


Repository : https://github.com/geodynamics/burnman

On branch  : add_thermodynamic_potentials
Link       : https://github.com/geodynamics/burnman/compare/2e5646d93cedbbf8eae54cc37cffc14e0aa85180...d5ddad03ff9f30f5a4efaddb4e3ec585ea1a7c51

>---------------------------------------------------------------

commit cadd5b5c674a9791f5546ab04233bdb0f4870131
Author: Bob Myhill <myhill.bob at gmail.com>
Date:   Mon Sep 8 00:12:43 2014 +0100

    Added P,T attributes and calcgibbs to solid solution class


>---------------------------------------------------------------

cadd5b5c674a9791f5546ab04233bdb0f4870131
 burnman/mineral.py       | 4 ++++
 burnman/solidsolution.py | 8 ++++++--
 test_solidsolution.py    | 7 ++++---
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/burnman/mineral.py b/burnman/mineral.py
index a52187a..0d1bb36 100644
--- a/burnman/mineral.py
+++ b/burnman/mineral.py
@@ -83,8 +83,12 @@ class Mineral(Material):
                 self.method = cork.CORK()
             else:
                 raise Exception("unsupported material method " + method)
+            if hasattr(self, 'base_material'):
+                for member in self.base_material:
+                    member[0].set_method(method)
         elif ( issubclass(method, eos.EquationOfState) ):
             self.method = method()
+
         else:
             raise Exception("unsupported material method " + method.__class__.__name__ )
 
diff --git a/burnman/solidsolution.py b/burnman/solidsolution.py
index f24757d..0c0f19c 100644
--- a/burnman/solidsolution.py
+++ b/burnman/solidsolution.py
@@ -43,10 +43,10 @@ class SolidSolution(Mineral):
         self.molar_fraction = molar_fraction 
 
     def set_state(self, pressure, temperature):
-
+        self.pressure=pressure
+        self.temperature=temperature
         # Set the state of all the endmembers
         for i in range(self.n_endmembers):
-            self.base_material[i][0].method = self.method
             self.base_material[i][0].set_state(pressure, temperature)
 
         self.excess_gibbs = self.solution_model.excess_gibbs_free_energy( pressure, temperature, self.molar_fraction)
@@ -65,3 +65,7 @@ class SolidSolution(Mineral):
                self.params[prop] = self.base_materials[0].params[prop]
         Mineral.set_state(self, pressure, temperature)
         '''
+
+
+    def calcgibbs(self, pressure, temperature, molar_fractions): 
+        return sum([ self.base_material[i][0].calcgibbs(pressure, temperature) * molar_fractions[i] for i in range(self.n_endmembers) ]) + self.solution_model.excess_gibbs_free_energy( pressure, temperature, molar_fractions)
diff --git a/test_solidsolution.py b/test_solidsolution.py
index 45aa289..ac875c9 100644
--- a/test_solidsolution.py
+++ b/test_solidsolution.py
@@ -15,7 +15,6 @@ garnet=minerals.HP_2011_ds62.garnet()
 composition=np.array([ 0.5, 0.2, 0.1, 0.2 ])
 garnet.set_method('mtait')
 garnet.set_composition(composition)
-garnet.set_state(0.0, 300.0)
 
 print 'Molar fraction'
 print garnet.molar_fraction
@@ -23,6 +22,8 @@ print ''
 print 'Site occupancies'
 print garnet.solution_model.sites
 #print garnet.solution_model.site_occupancies
+
+garnet.set_state(1.e9, 2000.)
 print ''
 print 'Volume excess'
 print garnet.excess_volume, 'm^3/mol'
@@ -36,12 +37,13 @@ for i in range(n+1):
     pyrope_proportion[i]=float(i)/n
     composition=([ pyrope_proportion[i], 0.0, 1.-pyrope_proportion[i], 0.0 ])
     garnet.set_composition(composition)
-    garnet.set_state(0.0, 300.)
+    garnet.set_state(1.e5, 300.)
     garnet_excess_volume[i]=garnet.excess_volume
 
 pressure=1.e9 # Pa
 temperature=573.15 # K
 composition=[0.9, 0.0, 0.1, 0.0]
+
 garnet.set_composition(composition)
 garnet.set_state(pressure, temperature)
 
@@ -56,7 +58,6 @@ for i in range(n+1):
     garnet.set_state(pressure, temperature)
     garnet_excess_gibbs[i]=garnet.excess_gibbs
 
-
 import matplotlib.pyplot as plt
 plt.subplot(1,2,1)
 plt.plot(pyrope_proportion,garnet_excess_volume,color='r',linestyle='-',marker='o',markerfacecolor='r',markersize=0)



More information about the CIG-COMMITS mailing list