[cig-commits] [commit] master: Added PerpleX comparison benchmarks for SLB and MT (27c7a98)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Fri Dec 12 23:19:39 PST 2014


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

On branch  : master
Link       : https://github.com/geodynamics/burnman/compare/7c010ac6610ee014aabcb76a2a4f667a06a8e7f7...fb1efda477c84dda519a26fcd6480eef1f23c1cf

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

commit 27c7a98095a9cd8250dda07b8960859718f9847d
Author: Bob Myhill <myhill.bob at gmail.com>
Date:   Fri Dec 12 22:56:01 2014 -0800

    Added PerpleX comparison benchmarks for SLB and MT


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

27c7a98095a9cd8250dda07b8960859718f9847d
 .../perplex_output/fo50_HP2011_params.dat          |  5 +++
 .../perplex_output/fo_HP2011_params.dat            |  7 ++++
 .../perplex_output/fo_SLB2011_params.dat           |  7 ++++
 misc/benchmarks/endmember_benchmarks.py            | 46 ++++++++++++++++++++++
 4 files changed, 65 insertions(+)

diff --git a/burnman/data/input_minphys/perplex_output/fo50_HP2011_params.dat b/burnman/data/input_minphys/perplex_output/fo50_HP2011_params.dat
new file mode 100644
index 0000000..f2fff50
--- /dev/null
+++ b/burnman/data/input_minphys/perplex_output/fo50_HP2011_params.dat
@@ -0,0 +1,5 @@
+P(bar)		T(K)		H(J)      S(J/K)      V(J/bar)      Cp(J/K)      Alpha(1/K)  Beta(1/bar)  Density(kg/m3)
+50000  	        1000 	        -0.14912E+07   316.84       4.4272       179.83      0.31665E-04  0.73543E-06   3890.3 
+100000		1000		-0.12800E+07   310.43       4.2783       178.64      0.27520E-04  0.63858E-06   4025.7
+50000 		1500		-0.13979E+07   392.32       4.5008       192.23      0.34279E-04  0.78824E-06   3826.7
+100000  	1500  		-0.11875E+07   385.30       4.3396       190.39      0.29453E-04  0.67656E-06   3968.8
diff --git a/burnman/data/input_minphys/perplex_output/fo_HP2011_params.dat b/burnman/data/input_minphys/perplex_output/fo_HP2011_params.dat
new file mode 100644
index 0000000..0ceca39
--- /dev/null
+++ b/burnman/data/input_minphys/perplex_output/fo_HP2011_params.dat
@@ -0,0 +1,7 @@
+P(bar)		T(K)		H(J)      S(J/K)      V(J/bar)      Cp(J/K)      Alpha(1/K)  Beta(1/bar)  Density(kg/m3)
+1		1000		-0.20632E+07   277.07       4.4773       175.07      0.39730E-04  0.85822E-06   3142.4
+50000  		1000 		-0.18519E+07   269.01       4.3031       173.24      0.34086E-04  0.73631E-06   3269.6
+100000		1000		-0.16473E+07   262.25       4.1572       171.91      0.29983E-04  0.64767E-06   3384.3
+1		1500		-0.19724E+07   350.55       4.5717       187.00      0.43733E-04  0.93249E-06   3077.5		
+50000		1500		-0.17623E+07   341.57       4.3802       184.13      0.36956E-04  0.78799E-06   3212.0
+100000		1500		-0.15584E+07   334.16       4.2223       182.14      0.32165E-04  0.68583E-06   3332.1
diff --git a/burnman/data/input_minphys/perplex_output/fo_SLB2011_params.dat b/burnman/data/input_minphys/perplex_output/fo_SLB2011_params.dat
new file mode 100644
index 0000000..7af32da
--- /dev/null
+++ b/burnman/data/input_minphys/perplex_output/fo_SLB2011_params.dat
@@ -0,0 +1,7 @@
+P(bar)		T(K)		H(J)      S(J/K)      V(J/bar)      Cp(J/K)      Alpha(1/K)  Beta(1/bar)  Density(kg/m3)
+1 		1000		-0.19163E+07   276.22       4.4533       175.37      0.34807E-04  0.88173E-06   3159.3
+50000  		1000 		-0.17050E+07   269.45       4.2777       173.28      0.27775E-04  0.73768E-06   3289.0
+100000		1000		-0.15001E+07   264.13       4.1336       171.92      0.23165E-04  0.63826E-06   3403.6
+1		1500		-0.18265E+07   348.96       4.5378       183.64      0.40571E-04  0.98695E-06   3100.5
+50000		1500		-0.16165E+07   341.09       4.3412       179.99      0.31208E-04  0.80042E-06   3240.9
+100000		1500		-0.14125E+07   335.09       4.1842       177.88      0.25499E-04  0.68032E-06   3362.4
diff --git a/misc/benchmarks/endmember_benchmarks.py b/misc/benchmarks/endmember_benchmarks.py
new file mode 100644
index 0000000..1dbe402
--- /dev/null
+++ b/misc/benchmarks/endmember_benchmarks.py
@@ -0,0 +1,46 @@
+# Benchmarks for the solid solution class
+import os.path, sys
+sys.path.insert(1,os.path.abspath('../..'))
+
+import burnman
+from burnman.minerals import SLB_2011
+from burnman.minerals import HP_2011_ds62
+import numpy as np
+
+
+def p(v1, v2):
+    return (v2-v1)/v1
+
+###
+filemin=[['SLB2011', '../../burnman/data/input_minphys/perplex_output/fo_SLB2011_params.dat', SLB_2011.fo()],['HP2011', '../../burnman/data/input_minphys/perplex_output/fo_HP2011_params.dat', HP_2011_ds62.fo()]]
+
+for database, f, mineral in filemin:
+    f = open(f, 'r')
+    datalines = [ line.strip() for idx, line in enumerate(f.read().split('\n')) if line.strip() and idx>0 ]
+    data = [ map(float,"%".join(line.split("%")[:1]).split()) for line in datalines ]
+    P, T, H, S, V, C_p, alpha, beta, rho = zip(*data)
+
+    variables=['H','S','V','C_p','alpha','beta','rho']
+    
+    fo = mineral
+    percentage_diff=[]
+    PT=[]
+
+    print database
+    print variables
+
+    for line in data:
+        P, T, H, S, V, C_p, alpha, beta, rho = line
+        fo.set_state(P*1.e5,T)
+        gibbs=H-T*S
+        PT.append([P/1.e4,T])
+        diff=[p(fo.gibbs, gibbs), p(fo.H, H), p(fo.S, S), p(fo.V, V/1.e5), p(fo.C_p, C_p), p(fo.alpha, alpha), p(fo.K_T, 1.e5/beta), p(fo.density(), rho)]
+        print ["{0:0.4f}".format(i) for i in diff]
+        percentage_diff.append(diff)
+
+    percentage_diff=np.array(percentage_diff)
+    i,j = np.unravel_index(percentage_diff.argmax(), percentage_diff.shape)
+
+    print 'Maximum error in', database, 'database:'
+    print variables[j], ':', percentage_diff[i,j], '% at', PT[i][0], 'GPa and', PT[i][1], 'K'
+    print ''



More information about the CIG-COMMITS mailing list