Equilibrium equations
Functions to calculate the equilibrium concentration and speciation of volatiles in melt ± vapor and the proportions of melt and vapor given P, T, and the bulk composition of the system. These are iterative calculations, which are solved using Jacobian matrix/Newton-Raphson approach (solvers and initial guesses are also in this file).
- VolFe.equilibrium_equations.eq_CH(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses)[source]
Equilibrium speciation between melt and gas for CHOFe system with only H2O and CO2 in the system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
- Returns:
Mole fraction CO2 in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_CHOFe(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for CHOFe system with no H2, CO, or CH4 dissolved in the melt.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Mole fraction O2 in vapor; Mole fraction CO in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_CHOFe_2(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for CHOFe system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Mole fraction O2 in vapor; Mole fraction CO in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_CHOXFe(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for CHOXFe system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Solution for guessed species; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_CHS_melt(PT, melt_wf, models, nr_step, nr_tol, guesses)[source]
Equilibrium partitioning of C, H, and S in the melt in SCHO system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
- Returns:
Mole fraction CO2, mole fraction H2O, weight fraction S2-, Melt composition, Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_CH_melt(PT, melt_wf, models, nr_step, nr_tol, guesses)[source]
Equilibrium partitioning of C and H in the melt in CHO system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
- Returns:
Mole fraction CO2 in melt; Mole fraction H2O in melt; Melt composition; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_COFe(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses)[source]
Equilibrium speciation between melt and gas for COFe system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
- Returns:
Mole fraction O2 in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_COXFe(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for COXFe system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Mole fraction O2 in vapor; Mole fraction CO in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_C_melt(PT, melt_wf, models)[source]
Equilibrium partitioning of C in the melt in CO system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
- Returns:
Melt composition
- Return type:
- VolFe.equilibrium_equations.eq_HOFe(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses)[source]
Equilibrium speciation between melt and gas for HOFe system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
- Returns:
Mole fraction O2 in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_HOXFe(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for HOXFe system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Mole fraction O2 in vapor; Mole fraction H2 in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_HS_melt(PT, melt_wf, models, nr_step, nr_tol)[source]
Equilibrium partitioning of H and S in the melt in SHO system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
- Returns:
In the melt: Mole fraction H2O, weight fraction H2O, weight fraction H2, weight fraction S2-, weight fraction S6+, weight fraction H2S
- Return type:
- VolFe.equilibrium_equations.eq_H_melt(PT, melt_wf, models, nr_step, nr_tol)[source]
Equilibrium partitioning of H in the melt in HO system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
- Returns:
Melt composition
- Return type:
- VolFe.equilibrium_equations.eq_SCHOFe(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for SCHOFe system with no dissolved H2, CO, CH4, or H2S in the melt.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Solution for guessed species; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_SCHOFe_2(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for SCHOFe system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Solution for guessed species; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_SCHOFe_3(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for SCHOFe system with linear relationship for H2O.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Solution for guessed species; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_SCOFe(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for SCOFe system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Mole fraction O2 in vapor; Mole fraction S2 in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_SHOFe(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for SHOFe system with no H2S or H2.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Mole fraction O2 in vapor; Mole fraction S2 in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_SHOFe_2(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses, solve_species)[source]
Equilibrium speciation between melt and gas for SHOFe system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
solve_species (str) – Identity of guessed species
- Returns:
Mole fraction O2 and S2 in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_SOFe(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses)[source]
Equilibrium speciation between melt and gas for SOFe system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
- Returns:
Mole fraction O2 in vapor; Melt and gas composition; Weight fraction gas; Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_SOFe_melt(PT, bulk_wf, melt_wf, models, nr_step, nr_tol, guesses)[source]
Equilibrium speciation between S and Fe in the melt.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
bulk_wf (dict) – Bulk composition in weight fraction
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
guesses (dict) – Initial guesses for solver
- Returns:
fO2, Melt composition, Mass balance, Mass balance
- Return type:
- VolFe.equilibrium_equations.eq_S_melt(PT, melt_wf, models)[source]
Equilibrium partitioning of S in the melt in SO system.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
- Returns:
Melt composition
- Return type:
- VolFe.equilibrium_equations.initial_guesses(run, PT, melt_wf, setup, models, system)[source]
Calculate initial guesses for the degassing calculation.
- Parameters:
run (float) – index of row that is being used in calculation.
PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.
melt_wf (dict) – Melt composition in weight fraction.
setup (pandas.DataFrame) – Input of melt composition(s).
models (pandas.DataFrame) – Model options.
system (str) – String indicating volatiles in the system
- Returns:
initial guesses
- Return type:
- VolFe.equilibrium_equations.jac_newton(x0, y0, constants, eqs, deriv, step, tol, maxiter=50)[source]
Jacobian matrix/Newton-Raphson approach in 2D.
- Parameters:
x0 (float) – Initial guess for parameter x
y0 (float) – Initial guess for parameter y
constants (list) – Constants required to evaluate equations
eqs (func) – Equations to solve
deriv (func) – Differentials of equations to solve
step (float) – Step-size for solver
tol (float) – Tolerance for solver
maxiter (int, optional) – Maximum number of iterations to try. Defaults to 1000.
- Returns:
Solution for x, solution for y
- Return type:
- VolFe.equilibrium_equations.jac_newton3(x0, y0, z0, constants, eqs, deriv, step, tol, maxiter=50)[source]
Jacobian matrix/Newton-Raphson approach in 3D.
- Parameters:
x0 (float) – Initial guess for parameter x
y0 (float) – Initial guess for parameter y
z0 (float) – Initial guess for parameter z
constants (list) – Constants required to evaluate equations
eqs (func) – Equations to solve
deriv (func) – Differentials of equations to solve
step (float) – Step-size for solver
tol (float) – Tolerance for solver
maxiter (int, optional) – Maximum number of iterations to try. Defaults to 50.
- Returns:
Solution for x, solution for y, solution for z
- Return type:
- VolFe.equilibrium_equations.melt_speciation(PT, melt_wf, models, nr_step, nr_tol)[source]
Calculate equilibrium speciation in the melt for a given bulk composition and P and T.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for solver
nr_tol (float) – Tolerance for solver
- Returns:
Melt composition for different volatile species
- Return type:
- VolFe.equilibrium_equations.mg_equilibrium(PT, melt_wf, bulk_wf, models, nr_step, nr_tol, guesses)[source]
Calculates the equilibrium concentration and speciation of the melt and vapor.
- Parameters:
PT (dict) – Pressure in bars as “P” and temperature in ‘C as “T”
melt_wf (dict) – Melt composition (SiO2, TiO2, etc. including volatiles)
bulk_wf (dict) – Bulk composition in weight fraction
models (pandas.DataFrame) – Model options
nr_step (float) – Step-size for Newton-Raphson solver
nr_tol (float) – Tolerance for Newton-Raphson solver
guesses (dict) – Initial guesses for solver
- Returns:
Gas composition in mole fraction; Melt composition in weight fraction, Bulk composition in weight fraction, Updated guesses for solver; Updated model options; Updated solve species option; Mass balance check
- Return type:
- VolFe.equilibrium_equations.newton_raphson(x0, constants, e1, step, eqs, deriv, maxiter=50)[source]
Newton-Raphson solver.
- VolFe.equilibrium_equations.newton_raphson_old(x0, constants, e1, step, eqs, deriv)[source]
Newton-Raphson solver.
- VolFe.equilibrium_equations.set_system(melt_wf, models)[source]
Identify which volatiles are present in the system.
- Parameters:
melt_wf (dictionary) – Melt composition in weight fraction.
models (pandas.DataFrame) – Model options.
- Returns:
string indicating which volatiles are present in the system
- Return type: