VESIcal: An open-source thermodynamic model engine for mixed volatile (H₂O-CO₂) solubility in silicate melts

Inter-model Isobar Comparision

This notebook provides code to visualize differences in isobars plotted for an alkali basalt and a rhyolite sample using each of VESIcal’s H2O-CO2 models.

import VESIcal as v
import pandas as pd
%matplotlib inline
alkbasalt = v.Sample({'SiO2': 49.0,
                'TiO2': 1.27,
                'Al2O3': 19.7,
                'Fe2O3': 3.74,
                'FeO': 5.33,
                'MnO': 0.17,
                'MgO': 4.82,
                'CaO': 8.85,
                'Na2O': 4.23,
                'K2O': 1.00,
                'P2O5': 0.37,
                'H2O': 4.51,
                'CO2': 0.25})

rhyolite = v.Sample({'SiO2':77.19,
                 'TiO2':0.06,
                 'Al2O3':12.80,
                 'FeO':0.94,
                 'MgO':0.03,
                 'CaO':0.53,
                 'Na2O':3.98,
                 'K2O':4.65,
                 'CO2':0.05,
                 'H2O':0.26})

sample_table = pd.DataFrame([alkbasalt.get_composition(), rhyolite.get_composition()], index=["Alkali Basalt", "Rhyolite"])
sample_table
#check calibration
v.calib_plot(user_data=alkbasalt.get_composition(), model='mixed', zoom='user_data')
v.calib_plot(user_data=rhyolite.get_composition(), model='mixed', zoom='user_data')
<Figure size 1224x576 with 1 Axes><Figure size 1224x576 with 1 Axes>
alkbasalt_isobars, alkbasalt_isopleths = v.calculate_isobars_and_isopleths(sample=alkbasalt, temperature=1200, pressure_list=[500, 1000, 2000], isopleth_list=[0.5], print_status=True).result

rhyolite_isobars, rhyolite_isopleths = v.calculate_isobars_and_isopleths(sample=rhyolite, temperature=800, pressure_list=[500, 1000, 2000], isopleth_list=[0.5]).result
Iac_alkbasalt_isobars, Iac_alkbasalt_isopleths = v.calculate_isobars_and_isopleths(sample=alkbasalt, temperature=1200, pressure_list=[500, 1000, 2000], isopleth_list=[0.5], model="IaconoMarziano").result
Dixon_alkbasalt_isobars, Dixon_alkbasalt_isopleths = v.calculate_isobars_and_isopleths(sample=alkbasalt, temperature=1200, pressure_list=[500, 1000, 2000], isopleth_list=[0.5], model="Dixon").result
Shish_alkbasalt_isobars, Shish_alkbasalt_isopleths = v.calculate_isobars_and_isopleths(sample=alkbasalt, temperature=1200, pressure_list=[500, 1000, 2000], isopleth_list=[0.5], model="ShishkinaIdealMixing").result

Liu_rhyolite_isobars, Liu_rhyolite_isopleths = v.calculate_isobars_and_isopleths(sample=rhyolite, temperature=800, pressure_list=[500, 1000, 2000], isopleth_list=[0.5], model="Liu").result
fig, ax = v.plot(isobars=[alkbasalt_isobars, Iac_alkbasalt_isobars, Dixon_alkbasalt_isobars, Shish_alkbasalt_isobars], isobar_labels=["MagmaSat", "Iacono-Marziano", "Dixon", "Shishkina"])
v.show()

fig, ax = v.plot(isobars=[rhyolite_isobars, Liu_rhyolite_isobars], isobar_labels=["MagmaSat", "Liu"])
v.show()
<Figure size 864x576 with 1 Axes><Figure size 864x576 with 1 Axes>
fig, ax = v.plot(isobars=Shish_alkbasalt_isobars)
v.show()
<Figure size 864x576 with 1 Axes>