[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