[cig-commits] [commit] excess_properties: Update (03bb4d5)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Fri Jan 23 07:54:34 PST 2015


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

On branch  : excess_properties
Link       : https://github.com/geodynamics/burnman/compare/0000000000000000000000000000000000000000...da0ca3bef24640ecbb367ebfa27d23cb91dcb954

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

commit 03bb4d5e45a1fe99be5038ab4d3fc74d1dc13857
Author: Bob Myhill <myhill.bob at gmail.com>
Date:   Wed Jan 21 00:34:06 2015 +0100

    Update


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

03bb4d5e45a1fe99be5038ab4d3fc74d1dc13857
 examples/example_excess_properties.py | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/examples/example_excess_properties.py b/examples/example_excess_properties.py
index da256a3..1a2a544 100644
--- a/examples/example_excess_properties.py
+++ b/examples/example_excess_properties.py
@@ -187,26 +187,45 @@ if __name__ == "__main__":
     g_V=np.linspace(1.e5, 6.e10,101)
     grand_V=np.linspace(1.e5, 6.e10,101)
     diff_V=np.linspace(1.e5, 6.e10,101)
+    diff_orig_V=np.linspace(1.e5, 6.e10,101)
     diff_K=np.linspace(1.e5, 6.e10,101)
 
     P=1.e5
     grand.set_state(P, T)
     g.set_state(P,T)
 
-    dVdP=grand.V/grand.K_T - 0.5*(g.endmembers[0][0].V/g.endmembers[0][0].K_T + g.endmembers[1][0].V/g.endmembers[1][0].K_T)
-    d2VdP2=grand.V*(1.+grand.params['Kprime_0'])/(grand.K_T*grand.K_T*grand.params['Kprime_0']) - 0.5*(g.endmembers[0][0].V*(1.+g.endmembers[0][0].params['Kprime_0'])/(g.endmembers[0][0].K_T*g.endmembers[0][0].K_T*g.endmembers[0][0].params['Kprime_0']) + g.endmembers[1][0].V*(1.+g.endmembers[1][0].params['Kprime_0'])/(g.endmembers[1][0].K_T*g.endmembers[1][0].K_T*g.endmembers[1][0].params['Kprime_0']))
+    import burnman.eos.modified_tait as mt
+    a, b, c = mt.tait_constants(grand.params)
+    a0, b0, c0 = mt.tait_constants(g.endmembers[0][0].params)
+    a1, b1, c1 = mt.tait_constants(g.endmembers[1][0].params)
+
+    VoK =grand.V/grand.K_T
+    VoK0=g.endmembers[0][0].params['V_0']/g.endmembers[0][0].params['K_0']
+    VoK1=g.endmembers[1][0].params['V_0']/g.endmembers[1][0].params['K_0']
+
+    #b*(c+1)
+    dVdP=VoK - 0.5*(VoK0 + VoK1)
+    d2VdP2=VoK*b*(c+1.)/grand.params['Kprime_0'] - 0.5*(VoK0*b0*(c0+1.)/g.endmembers[0][0].params['Kprime_0'] + VoK1*b1*(c1+1.)/g.endmembers[1][0].params['Kprime_0'])
+    d3VdP3=(1./2./2./2.)*VoK*b*b*(c+1.)*(c+2.)/grand.params['Kprime_0']/grand.params['Kprime_0'] - (0.5/2./2./2.)*(VoK0*b0*b0*(c0+1.)*(c0+2.)/g.endmembers[0][0].params['Kprime_0']/g.endmembers[0][0].params['Kprime_0'] + VoK1*b1*b1*(c1+1.)*(c1+2.)/g.endmembers[1][0].params['Kprime_0']/g.endmembers[1][0].params['Kprime_0']) # need to check this equation
+
+    d4VdP4=(1./2./2./2./3.)*VoK*b*b*b*(c+1.)*(c+2.)*(c+3.)/grand.params['Kprime_0']/grand.params['Kprime_0']/grand.params['Kprime_0'] - (0.5/2./2./2./3.)*(VoK0*b0*b0*b0*(c0+1.)*(c0+2.)*(c0+3.)/g.endmembers[0][0].params['Kprime_0']/g.endmembers[0][0].params['Kprime_0']/g.endmembers[0][0].params['Kprime_0'] + VoK1*b1*b1*b1*(c1+1.)*(c1+2.)*(c1+3.)/g.endmembers[1][0].params['Kprime_0']/g.endmembers[1][0].params['Kprime_0']/g.endmembers[1][0].params['Kprime_0']) # need to check this equation
+
+    #d2VdP2=VoK*(1.+grand.params['Kprime_0'])/(grand.K_T*grand.params['Kprime_0']) - 0.5*(g.endmembers[0][0].V*(1.+g.endmembers[0][0].params['Kprime_0'])/(g.endmembers[0][0].K_T*g.endmembers[0][0].K_T*g.endmembers[0][0].params['Kprime_0']) + g.endmembers[1][0].V*(1.+g.endmembers[1][0].params['Kprime_0'])/(g.endmembers[1][0].K_T*g.endmembers[1][0].K_T*g.endmembers[1][0].params['Kprime_0']))
 
     for i,P in enumerate(pressures):
         grand.set_state(P, T)
         g.set_state(P,T)
         g_V[i] = g.V
-        diff_V[i] = (grand.V-g.V+dVdP*P-d2VdP2*P*P)/g.V*100.
+        diff_V[i] = (grand.V-g.V + dVdP*P - d2VdP2*P*P + d3VdP3*P*P*P - d4VdP4*P*P*P*P)/g.V*100.
+        diff_orig_V[i] = (grand.V-g.V)/g.V*100.
         diff_K[i] = (grand.K_T-g.K_T)/g.K_T*100.
 
     plt.plot( pressures/1.e9, diff_V, marker='.', linewidth=1., label='V, Grandite endmember - 50% solid solution')
+    plt.plot( pressures/1.e9, diff_orig_V, marker='.', linewidth=1., label='V, Grandite endmember - 50% solid solution')
     plt.plot( pressures/1.e9, diff_K, marker='.', linewidth=1., label='K, Grandite endmember - 50% solid solution')
     plt.title("Grossular-andradite join (asymmetric model)")
     plt.ylabel("% difference")
     plt.xlabel("pressure (GPa)")
+    plt.ylim(-0.2, 0.2)
     plt.legend(loc='upper left')
     plt.show()



More information about the CIG-COMMITS mailing list