[cig-commits] [commit] add_gibbs_energy: Added set_method to solid solution initialisation, added partial gibbs function (00b57f4)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Thu Dec 11 17:12:47 PST 2014


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

On branch  : add_gibbs_energy
Link       : https://github.com/geodynamics/burnman/compare/0000000000000000000000000000000000000000...2148b324d3e8aa7b527f831eb397590942563008

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

commit 00b57f47fc5a9bb30c783843c0a6ebab33d05e7e
Author: Bob Myhill <myhill.bob at gmail.com>
Date:   Sun Oct 5 23:13:11 2014 +0200

    Added set_method to solid solution initialisation, added partial gibbs function


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

00b57f47fc5a9bb30c783843c0a6ebab33d05e7e
 burnman/solidsolution.py | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/burnman/solidsolution.py b/burnman/solidsolution.py
index 0c0f19c..5508b06 100644
--- a/burnman/solidsolution.py
+++ b/burnman/solidsolution.py
@@ -36,6 +36,9 @@ class SolidSolution(Mineral):
         # Number of endmembers in the solid solution
         self.n_endmembers=len(base_material)
 
+        for i in range(self.n_endmembers):
+            self.base_material[i][0].set_method(self.base_material[i][0].params['equation_of_state'])
+
     def set_composition( self, molar_fraction ):
         assert(len(self.base_material) == len(molar_fraction))
         assert(sum(molar_fraction) > 0.9999)
@@ -69,3 +72,9 @@ class SolidSolution(Mineral):
 
     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)
+
+    def calcpartialgibbsexcesses(self, pressure, temperature, molar_fractions):
+        Hint, Sint, Vint = self.solution_model.non_ideal_interactions(molar_fractions)
+        partialgibbsexcesses=np.empty(len(molar_fractions))
+        partialgibbsexcesses = np.array([0.+R*temperature*self.solution_model.ln_ideal_activities(molar_fractions)[i] + Hint[i] - temperature*Sint[i] + pressure*Vint[i] for i in range(self.n_endmembers)])
+        return partialgibbsexcesses



More information about the CIG-COMMITS mailing list