System#
- class thermoengine.magmaforge.system.StateHistory(Liq: SolutionPhase)#
Class for storing all states that a system has experienced during a calculation or series of calculations
- Parameters:
- LiqSolnPhase
A SolutionPhase object representing the liquid model.
Methods
Returns the phase fractions for all phases in each state in the system history, as a list of dictionaries.
Returns the phase masses for all phases in each state in the system history, as a list of dictionaries.
get_bulk_comps([unit])Returns the bulk composition for each state in the system history.
get_fractionated_comps([unit, method, norm])Returns the composition of fractionated material for each state in the system history.
get_fractionated_masses([method])Returns the aggregated mass of fractionated material for each state in the system history.
get_full_state_history_table([P_unit, ...])Returns a formatted DataFrame with key properties.
Returns the chemical potentials for each endmember in the liquid, for each state in the system history, as a list of Series.
get_logfO2s([buffer])Returns an array of logfO2 values for each state in the system history.
get_melt_fractions([method])Returns the melt fraction for each state in the system history.
get_phase_comp_table(phase_name[, index, unit])Returns a formatted DataFrame with the composition of a given phase for each state in the system history.
get_phase_comps(phase_name[, unit])Returns the composition of a given phase for each state in the system history.
get_phase_densities(phase_name)Returns the density of a given phase for each state in the system history.
get_phase_entropies(phase_name)Returns the entropy of a given phase for each state in the system history.
get_phase_frac_table([phases, index])Returns a formatted DataFrame with the mass fraction of each phase, for each state in the system history
get_phase_mass_table([phases, index])Returns a formatted DataFrame with the mass of each phase, for each state in the system history
get_phase_masses(phase_name)Returns the mass of a given phase for each state in the system history.
get_phase_names([subset])Returns a list of phase names in the system.
get_phase_volumes(phase_name)Returns the volume of a given phase for each state in the system history.
get_pressures([unit])Returns an array of pressures for each state in the system history.
get_temperatures([unit])Returns an array of temperatures for each state in the system history.
Returns an array of entropy values for each state in the system history, in J/K.
Returns the total mass for each state in the system history
save_full_state_history_table(filename[, ...])Saves a formatted DataFrame with key properties to a csv file.
- get_all_phase_fractions() list[dict]#
Returns the phase fractions for all phases in each state in the system history, as a list of dictionaries. For a formatted table, use .get_phase_frac_table().
See also
- get_all_phase_masses() list[dict]#
Returns the phase masses for all phases in each state in the system history, as a list of dictionaries. For a formatted table, use .get_phase_mass_table().
See also
- get_bulk_comps(unit: str = 'wt_oxides') DataFrame#
Returns the bulk composition for each state in the system history. Does not include fractionated material.
- Parameters:
- unitstr, optional
The unit for reporting composition, by default ‘wt_oxides’
Options are ‘wt_oxides’, ‘mol_oxides’, ‘wt_elems’, ‘mol_elems’
- Returns:
- pd.DataFrame
A DataFrame of compositions
- get_fractionated_comps(unit: str = 'wt_oxides', method: str = 'aggregated', norm: bool = False) DataFrame#
Returns the composition of fractionated material for each state in the system history.
- Parameters:
- unitstr, optional
The unit for reporting composition, by default ‘wt_oxides’
Options are ‘wt_oxides’, ‘mol_oxides’, ‘wt_elems’, ‘mol_elems’
- methodstr, optional
Whether to return incremental or aggregated compositions, by default ‘aggregated’
‘aggregated’ returns the total mass of material removed via fractionation up to and including the present step.
‘incremental’ returns the mass of material removed via fractionation in the current step.
- normbool, optional
Whether to normalize compositions to 100%, by default False
- Returns:
- pd.DataFrame
A DataFrame of compositions.
- Raises:
- ValueError
Raised if method is not ‘incremental’ or ‘aggregated’.
- get_fractionated_masses(method: str = 'aggregated') ndarray#
Returns the aggregated mass of fractionated material for each state in the system history.
- Parameters:
- methodstr, optional
Whether to return incremental or aggregated compositions, by default ‘aggregated’
‘aggregated’ returns the total mass of material removed via fractionation up to and including the present step.
‘instantaneous’ returns the mass of material removed via fractionation in the current step.
- Returns:
- np.ndarray
An array of masses
- Raises:
- ValueError
Raised if method is not ‘incremental’ or ‘aggregated’.
- get_full_state_history_table(P_unit: str = 'bar', T_unit: str = 'K', fO2_buffer: str | None = None) DataFrame#
Returns a formatted DataFrame with key properties.
- Parameters:
- P_unitstr, optional
Pressure unit (‘bar’, ‘kbar’, or ‘GPa’), by default ‘bar’
- T_unitstr, optional
Temperature unit (‘K’ or ‘C’), by default ‘K’
- fO2_bufferstr | None, optional
The buffer to report logfO2 relative to, by default None
- Returns:
- pd.DataFrame
A DataFrame with mass, composition, and other key parameters.
- get_liquid_chemical_potentials() list[Series]#
Returns the chemical potentials for each endmember in the liquid, for each state in the system history, as a list of Series.
- get_logfO2s(buffer: str | None = None) ndarray#
Returns an array of logfO2 values for each state in the system history.
- Parameters:
- bufferstr | None, optional
A string representing the buffer to which to normalize logfO2 values. Options are None, ‘NNO’, ‘QFM’, etc…; by default None
- Returns:
- np.ndarray
An array of log10(fO2) values relative to the indicated buffer.
- get_melt_fractions(method: str = 'instantaneous') ndarray#
Returns the melt fraction for each state in the system history. Excludes volatile phases.
- Parameters:
- methodstr, optional
Whether to return instantaneous or aggregated melt fractions, by default ‘instantaneous’
‘instantaneous’ (default) returns mass_liquid/(mass_solid + mass_liquid) for the equilibrium system (ignores fractionated material).
‘aggregated’ returns mass of fractionated liquid/initial mass (ignores the instantaneous liquid in equilibrium with the solid).
- Returns:
- np.ndarray
An array of melt fractions.
- Raises:
- ValueError
Raised if ‘aggregated’ method is called when liquids were not fractionated.
- ValueError
Raised if method is not ‘instantaneous’ or ‘aggregated’
- get_phase_comp_table(phase_name: str, index: str = 'T_K', unit: str = 'wt_oxides') DataFrame#
Returns a formatted DataFrame with the composition of a given phase for each state in the system history.
- Parameters:
- phase_namestr
The full phase name, e.g. ‘Olivine’ or ‘Liquid’
- indexstr, optional
The index for the DataFrame (i.e., row labels), by default ‘T_K’
Valid options are ‘T_K’, ‘T_C’, ‘P_bar’, ‘P_kbar’, or ‘P_GPa’
- unitstr, optional
The unit for reporting composition, by default ‘wt_oxides’
Options are ‘wt_oxides’, ‘mol_oxides’, ‘wt_elems’, ‘mol_elems’
- Returns:
- pd.DataFrame
A DataFrame of phase compositions
- get_phase_comps(phase_name: str, unit: str = 'wt_oxides') DataFrame#
Returns the composition of a given phase for each state in the system history.
- Parameters:
- phase_namestr
The full phase name, e.g. ‘Olivine’ or ‘Liquid’
- unitstr, optional
The unit for reporting composition, by default ‘wt_oxides’
Options are ‘wt_oxides’, ‘mol_oxides’, ‘wt_elems’, ‘mol_elems’
- Returns:
- pd.DataFrame
A DataFrame of phase compositions, with no index. If you would like a temperature or pressure index, use .get_phase_comp_table()
- Raises:
- ValueError
Raised if phase name is not valid.
See also
- get_phase_densities(phase_name: str) Series#
Returns the density of a given phase for each state in the system history.
- Parameters:
- phase_namestr
The full phase name, e.g. ‘Olivine’ or ‘Liquid’
- Returns:
- pd.Series
A Series of phase densities for an individual phase.
- Raises:
- ValueError
Raised if phase name is not valid.
- get_phase_entropies(phase_name: str) Series#
Returns the entropy of a given phase for each state in the system history.
- Parameters:
- phase_namestr
The full phase name, e.g. ‘Olivine’ or ‘Liquid’
- Returns:
- pd.Series
A Series of phase entropies for an individual phase.
- Raises:
- ValueError
Raised if phase name is not valid.
- get_phase_frac_table(phases: str | list[str] = 'all', index: str = 'T_K') DataFrame#
Returns a formatted DataFrame with the mass fraction of each phase, for each state in the system history
- Parameters:
- phasesstr | list[str], optional
The phases to include in the table, by default ‘all’
‘all’ returns all phases present or possible in the database
‘present’ returns only the phases present at some point during the calculation
A list of phase strings may also be provided, e.g. [‘Olivine’, ‘Liquid’]
- indexstr, optional
The index for the DataFrame (i.e., row labels), by default ‘T_K’
Valid options are ‘T_K’, ‘T_C’, ‘P_bar’, ‘P_kbar’, or ‘P_GPa’
- Returns:
- pd.DataFrame
A DataFrame of phase mass fractions
- Raises:
- KeyError
Raised if a phase is not in the list of phases.
- ValueError
Raised if phases is not set to ‘all’, ‘present’, or a list of phase names
- get_phase_mass_table(phases: str | list[str] = 'all', index: str = 'T_K') DataFrame#
Returns a formatted DataFrame with the mass of each phase, for each state in the system history
- Parameters:
- phasesstr | list[str], optional
The phases to include in the table, by default ‘all’
‘all’ returns all phases present or possible in the database
‘present’ returns only the phases present at some point during the calculation
A list of phase strings may also be provided, e.g. [‘Olivine’, ‘Liquid’]
- indexstr, optional
The index for the DataFrame (i.e., row labels), by default ‘T_K’
Valid options are ‘T_K’, ‘T_C’, ‘P_bar’, ‘P_kbar’, or ‘P_GPa’
- Returns:
- pd.DataFrame
A DataFrame of phase masses
- Raises:
- KeyError
Raised if a phase is not in the list of phases.
- ValueError
Raised if phases is not set to ‘all’, ‘present’, or a list of phase names
- get_phase_masses(phase_name: str) Series#
Returns the mass of a given phase for each state in the system history.
- Parameters:
- phase_namestr
The full phase name, e.g. ‘Olivine’ or ‘Liquid’
- Returns:
- pd.Series
A Series of phase masses for an individual phase.
- Raises:
- ValueError
Raised if phase name is not valid.
- get_phase_names(subset: str = 'all') list[str]#
Returns a list of phase names in the system.
- Parameters:
- subsetstr, optional
‘all’ or ‘present, by default ‘all’
‘all’ returns all present phases as well as database phases that could have formed.
‘present’ returns only phases that are present (nonzero) at some point during the calculation.
- Returns:
- list[str]
A list of phase strings
- get_phase_volumes(phase_name: str) Series#
Returns the volume of a given phase for each state in the system history.
- Parameters:
- phase_namestr
The full phase name, e.g. ‘Olivine’ or ‘Liquid’
- Returns:
- pd.Series
A Series of phase volumes for an individual phase.
- Raises:
- ValueError
Raised if phase name is not valid.
- get_pressures(unit: str = 'bar') ndarray#
Returns an array of pressures for each state in the system history.
- Parameters:
- unitstr, optional
The pressure unit, by default ‘bar’
- Returns:
- np.ndarray
An array of pressure values
- Raises:
- ValueError
Raised if pressure unit is not ‘bar’, ‘kbar’, or ‘GPa’
- get_temperatures(unit: str = 'K') ndarray#
Returns an array of temperatures for each state in the system history.
- Parameters:
- unitstr, optional
The temperature unit, by default ‘K’
- Returns:
- np.ndarray
An array of temperature values
- Raises:
- ValueError
Raised if temperature unit is not ‘K’ or ‘C’
- get_total_entropies() ndarray#
Returns an array of entropy values for each state in the system history, in J/K.
- get_total_masses() ndarray#
Returns the total mass for each state in the system history
- save_full_state_history_table(filename: str, P_unit: str = 'bar', T_unit: str = 'K', fO2_buffer: str | None = None)#
Saves a formatted DataFrame with key properties to a csv file.
- Parameters:
- filenamestr
The filename to use when saving the file
- P_unitstr, optional
Pressure unit (‘bar’, ‘kbar’, or ‘GPa’), by default ‘bar’
- T_unitstr, optional
Temperature unit (‘K’ or ‘C’), by default ‘K’
- fO2_bufferstr | None, optional
The buffer to report logfO2 relative to, by default None
- class thermoengine.magmaforge.system.System(comp: dict[str, float] | Series, T_C: float | None = None, T_K: float | None = None, T_liquidus: bool | None = None, P_GPa: float | None = None, P_kbar: float | None = None, P_bar: float | None = None, logfO2: tuple[str, float] | None = None, Fe3_tFe: float | None = None, bulk_Fe2O3: float | None = None, database: Database | str = 'MELTS_v1_0', equil_metric_level: int = 0, chemical_potential_constraints: list | None = None, calc_args={})#
Class for creating and storing an equilibrated chemical system.
- Parameters:
- compdict[str,float] | pd.Series
Initial composition, which must be given as a dictionary or Pandas Series of oxide masses– e.g. {‘SiO2’: 45.0, …}. Oxide masses do not need to sum to 100.
- T_Cfloat | None, optional
The temperature at which to equilibrate the system, in Celsius. By default None. (At most one temperature input option may be set)
- T_Kfloat | None, optional
The temperature at which to equilibrate the system, in Kelvin. By default None. (At most one temperature input option may be set)
- T_liquidusbool | None, optional
If T_liquidus is set to True, or if no temperature input is given, the system will equilibrate just above the liquidus (to the nearest 1 K). By default None. (At most one temperature input option may be set)
- P_GPafloat | None, optional
The pressure at which to equilibrate the system, in Gigapascals. By default None. (Exactly one pressure input option may be set)
- P_kbarfloat | None, optional
The pressure at which to equilibrate the system, in kilobars. By default None. (Exactly one pressure input option may be set)
- P_barfloat | None, optional
The pressure at which to equilibrate the system, in bars. By default None. (Exactly one pressure input option may be set)
- logfO2tuple[str,float] | None, optional
The logfO2 at which to equilibrate the system, by default None. The first tuple element is a string representing the reference buffer (e.g., ‘NNO’). The second tuple element is a float representing the offset relative to the buffer. (At most one redox option may be set)
- Fe3_tFefloat | None, optional
The molar Fe3+/(Fe3+ + Fe2+) ratio at which to equilibrate the system. If set, the system will redistribute Fe between FeO and Fe2O3 to reach the desired ratio. By default None. (At most one redox option may be set)
- bulk_Fe2O3float | None, optional
The bulk system Fe2O3 (in wt%) at which to equilibrate the system. If set, the system will redistribute Fe between FeO and Fe2O3 to reach the desired bulk Fe2O3 (per 100 wt% oxides). If the initial composition already contains Fe2O3, this Fe2O3 content will be re-assigned as FeO and then redistributed to the bulk Fe2O3 value provided. By default None. (At most one redox option may be set)
- databasethermo.model.Database | str, optional
The thermodynamic database to use, by default ‘MELTS_v1_0’. Databases may be provided as either a string or a Database object.
‘MELTS_v1_0’ (rhyoliteMELTS)
‘MELTS_v1_2’ (rhyoliteMELTS + H2O-CO2 fluid)
‘MELTS_pMELTS’ (pMELTS)
More info: https://melts.ofm-research.org/Support/Understanding-rhyolite-MELTS-versions.html
- equil_metric_levelint, optional
Level of equilibrium check, by default 0. (Other values not yet implemented)
- calc_argsdict, optional
A dictionary of other calculation arguments, by default {}.
- Attributes:
P_GPaReturns the pressure of the current state in Gigapascal
P_barReturns the pressure of the current state in bars
P_kbarReturns the pressure of the current state in kilobars
S_JKReturns the total entropy of the current state, in J/K
T_CReturns the temperature of the current state in degrees Celsius
T_KReturns the temperature of the current state in Kelvin
default_calc_argsReturns the default calculation arguments
historyReturns a StateHistory object that stores the history of all states experienced by the system
initial_massReturns the initial mass of the system
input_argumentsReturns a dictionary of all input arguments to System, to increase reusability/reproducibility.
mass_fractionReturns the mass fraction, relative to initial system mass, of the current state
mass_of_nonvolatilesReturns the mass of all nonvolatile phases in the current state
melt_fractionReturns the instantaneous melt fraction of the current state;
nonvolatile_phase_namesReturns non-volatile phase names
phase_fractionsReturns the phase fractions for the current state
phase_massesReturns the phase masses for the current state
phase_namesReturns all phase names
solid_phase_namesReturns solid mineral phase names
stateReturns the current state object, which stores composition and properties such as temperature and pressure for the current system state.
total_entropyReturns the total entropy of the current state
total_massReturns the total mass of the current state
Methods
InvalidInputError(message)Exception raised if input value is not valid.
O2BufferNotDefined(message)Exception raised if fix_fO2 is set during melting/crystallization, but an fO2 buffer was not defined on initialization of the system.
comp([unit])Returns the composition of the current state
crystallize([method, fix_fO2, T_step, ...])Crystallizes the system by decreasing temperature at constant pressure.
crystallize_by_entropy_reduction([S_step, ...])Prototype method for crystallizing by extracting heat, rather than by fixing the temperature.
evolve_system_by_a_single_step([dT, dP, dS, ...])Evolves the system by a single step in P-T-S space.
fractionated_comp([unit, method, norm])Returns the composition of fractionated material removed from the System.
fractionated_mass([method])Returns the mass of fractionated material removed from the System.
initial_comp([unit])Returns the initial composition of the system
logfO2([buffer])Returns the logfO2 of the current state.
melt_by_decompression([method, fix_fO2, ...])Melts the system by decreasing pressure at constant entropy.
- exception InvalidInputError(message)#
Exception raised if input value is not valid.
- Attributes:
message – explanation of the error
- exception O2BufferNotDefined(message)#
Exception raised if fix_fO2 is set during melting/crystallization, but an fO2 buffer was not defined on initialization of the system.
- Attributes:
message – explanation of the error
- property P_GPa#
Returns the pressure of the current state in Gigapascal
- property P_bar#
Returns the pressure of the current state in bars
- property P_kbar#
Returns the pressure of the current state in kilobars
- property S_JK#
Returns the total entropy of the current state, in J/K
- property T_C#
Returns the temperature of the current state in degrees Celsius
- property T_K#
Returns the temperature of the current state in Kelvin
- comp(unit='wt_oxides')#
Returns the composition of the current state
- crystallize(method: str = 'equil', fix_fO2: bool = False, T_step: float = 10, melt_frac_cutoff: float = 0.01, T_final_K: float | None = None, T_final_C: float | None = None, frac_remains: float = 0.01, calc_args: dict = {}, profile_run: bool = False) System#
Crystallizes the system by decreasing temperature at constant pressure.
- Parameters:
- methodstr, optional
The crystallization method. Either ‘frac’ (fractional crystallization) or ‘equil’ (equilibrium/batch crystallization). By default ‘equil’.
- fix_fO2bool, optional
Whether to run buffered or unbuffered. ‘True’ to run buffered at current fO2 (currently relative to NNO– more options coming soon), ‘False’ to run unbuffered, by default False.
- T_stepfloat, optional
The temperature interval to adjust T at each step. Both positive and negative values will move system to lower temperature. By default 10.
- melt_frac_cutofffloat, optional
The melt fraction cutoff for declaring crystallization complete, by default 0.01 (1% melt remaining).
- T_final_Kfloat | None, optional
The final temperature for the system (in K), if full crystallization is not reached first. By default None.
- T_final_Cfloat | None, optional
The final temperature for the system (in C), if full crystallization is not reached first. By default None.
- frac_remainsfloat, optional
The amount of melt remaining at each step during fractional melting, by default 1e-2.
- calc_argsdict, optional
A dictionary of additional calculation arguments, by default {}.
- profile_runbool, optional
If True, checks run performance, by default False.
- Returns:
- selfSystem
Returns the updated System instance (updated with SystemState objects for each temperature state during crystallization).
- crystallize_by_entropy_reduction(S_step: float = 5.0, T_final_K: float | None = None, T_final_C: float | None = None, melt_frac_cutoff: float = 0.01, calc_args: dict = {})#
Prototype method for crystallizing by extracting heat, rather than by fixing the temperature.
- Parameters:
- S_stepfloat, default: 5.0
The entropy reduction in each step, in J. Positive or negative values will be treated identically.
- T_final_Kfloat | None, optional
The final temperature for the system (in K), if full crystallization is not reached first. By default None.
- T_final_Cfloat | None, optional
The final temperature for the system (in C), if full crystallization is not reached first. By default None.
- melt_frac_cutofffloat, default: 0.01
The melt fraction at which to stop the calculation
- calc_argsdict, optional
A dictionary of additional calculation arguments, by default {}.
- property default_calc_args: dict#
Returns the default calculation arguments
- evolve_system_by_a_single_step(dT: float | None = None, dP: float = 0, dS: float | None = None, fix_fO2=False, store_state=True, calc_args: dict | None = {}) bool#
Evolves the system by a single step in P-T-S space. fO2 may be fixed at current system fO2 or allowed to vary.
- Parameters:
- dTfloat, optional
Change in temperature (in K), by default 0.
- dPfloat, optional
Change in pressure (in bar), by default 0.
- dSfloat, optional
Change in entropy (in J/K), by default 0.
- fix_fO2bool, optional
Whether to fix fO2 at the current value (relative to NNO) or remain unbuffered, by default False.
- calc_argsOptional[dict], optional
A dictionary of additional calculation arguments, by default None
- Returns:
- bool
Returns True if successful, and updates the System.
- Raises:
- ValueError
Error is raised if both dS and dT are given as inputs.
- fractionated_comp(unit: str = 'wt_oxides', method: str = 'incremental', norm: bool = False) Series#
Returns the composition of fractionated material removed from the System.
- Parameters:
- unitstr, optional
The unit for reporting composition, by default ‘wt_oxides’
Options are ‘wt_oxides’, ‘mol_oxides’, ‘wt_elems’, ‘mol_elems’
- methodstr, optional
Whether to return incremental or aggregated compositions, by default ‘aggregated’
‘aggregated’ returns the total mass of material removed via fractionation up to and including the present step.
‘incremental’ returns the mass of material removed via fractionation in the current step.
- normbool, optional
Whether to normalize compositions to 100%, by default False
- Returns:
- pd.Series
A Series representing the fractionated composition.
- Raises:
- ValueError
Raised if method is not ‘incremental’ or ‘aggregated’.
- fractionated_mass(method: str = 'incremental') float#
Returns the mass of fractionated material removed from the System.
- Parameters:
- methodstr, optional
Whether to return incremental or aggregated compositions, by default ‘aggregated’
‘aggregated’ returns the total mass of material removed via fractionation up to and including the present step.
‘incremental’ returns the mass of material removed via fractionation in the current step.
- Returns:
- float
The mass of fractionated material.
- Raises:
- ValueError
Raised if method is not ‘incremental’ or ‘aggregated’.
- property history: StateHistory#
Returns a StateHistory object that stores the history of all states experienced by the system
- initial_comp(unit: str = 'wt_oxides') Series#
Returns the initial composition of the system
- Parameters:
- unitstr, optional
The unit for reporting composition, by default ‘wt_oxides’
Options are ‘wt_oxides’, ‘mol_oxides’, ‘wt_elems’, ‘mol_elems’
- Returns:
- pd.Series
A Series representing the initial composition.
- property initial_mass: float#
Returns the initial mass of the system
- property input_arguments: dict#
Returns a dictionary of all input arguments to System, to increase reusability/reproducibility.
- logfO2(buffer: str | None = None) float#
Returns the logfO2 of the current state.
- Parameters:
- bufferstr | None, optional
The buffer to report logfO2 relative to (e.g., ‘QFM’), by default None
- Returns:
- float
logfO2 (base 10) of the current state
- property mass_fraction#
Returns the mass fraction, relative to initial system mass, of the current state
- property mass_of_nonvolatiles#
Returns the mass of all nonvolatile phases in the current state
- melt_by_decompression(method: str = 'equil', fix_fO2: bool = False, P_final_GPa: float = 0.5, P_step_GPa: float = 0.1, frac_remains: float = 0.005, calc_args: dict = {}, profile_run: bool = False) System#
Melts the system by decreasing pressure at constant entropy.
- Parameters:
- methodstr, optional
The melting method. Either ‘frac’ (fractional melting) or ‘equil’ (equilibrium/batch melting). By default ‘equil’.
- fix_fO2bool, optional
Whether to run buffered or unbuffered. ‘True’ to run buffered at current fO2 (currently relative to NNO– more options coming soon), ‘False’ to run unbuffered, by default False.
- P_GPa_stepfloat, optional
The pressure interval to adjust P at each step, in GPa. Both positive and negative values will move system to lower pressure. By default 0.1.
- P_GPa_finalfloat | None, optional
The final pressure for the system (in GPa). By default 0.5.
- frac_remainsfloat, optional
The amount of melt remaining at each step during fractional melting, by default 1e-2.
- calc_argsdict, optional
A dictionary of additional calculation arguments, by default {}.
- profile_runbool, optional
If True, checks run performance, by default False.
- Returns:
- selfSystem
Returns the updated System instance (updated with SystemState objects for each pressure state during decompression).
- property melt_fraction: float#
Returns the instantaneous melt fraction of the current state; i.e., mass_of_liquid/mass_of_non_volatiles
- property nonvolatile_phase_names#
Returns non-volatile phase names
- property phase_fractions#
Returns the phase fractions for the current state
- property phase_masses#
Returns the phase masses for the current state
- property phase_names#
Returns all phase names
- property solid_phase_names#
Returns solid mineral phase names
- property state: StateData#
Returns the current state object, which stores composition and properties such as temperature and pressure for the current system state.
- property total_entropy#
Returns the total entropy of the current state
- property total_mass#
Returns the total mass of the current state