Compositions¶
Base class¶
- class burnman.Composition(composition_dictionary, unit_type='mass', normalize=False)[source]¶
Bases:
object
Class for a composition object, which can be used to store, modify and renormalize compositions, and also convert between mass, molar and atomic amounts. Weight is provided as an alias for mass, as we assume that only Earthlings will use this software.
This class is available as
burnman.Composition
.- renormalize(unit_type, normalization_component, normalization_amount)[source]¶
Change the total amount of material in the composition to satisfy a given normalization condition (mass, weight, molar, or atomic)
- Parameters
- unit_type‘mass’, ‘weight’, ‘molar’ or ‘atomic’
Unit type with which to normalize the composition
- normalization_component: string
Component/element on which to renormalize. String must either be one of the components/elements already in the composition, or have the value ‘total’
- normalization_amount: float
Amount of component in the renormalised composition
- add_components(composition_dictionary, unit_type)[source]¶
Add (or remove) components from the composition. The components are added to the current state of the (mass, weight or molar) composition; if the composition has been renormalised, then this should be taken into account.
- Parameters
- composition_dictionarydictionary
Components to add, and their amounts, in dictionary form
- unit_type‘mass’, ‘weight’ or ‘molar’
Unit type of the components to be added
- change_component_set(new_component_list)[source]¶
Change the set of basis components without changing the bulk composition.
Will raise an exception if the new component set is invalid for the given composition.
- Parameters
- new_component_listlist of strings
New set of basis components.
- property weight_composition¶
An alias for mass composition [kg].
- property molar_composition¶
Returns the molar composition as a counter [moles]
- property atomic_composition¶
Returns the atomic composition as a counter [moles]
- composition(unit_type)[source]¶
Helper function to return the composition in the desired type.
- Parameters
- unit_typestring
One of ‘mass’, ‘weight’, ‘molar’ and ‘atomic’.
- print(unit_type, significant_figures=1, normalization_component='total', normalization_amount=None)[source]¶
Pretty-print function for the composition This does not renormalize the Composition object itself, only the printed values.
- Parameters
- unit_type‘mass’, ‘weight’, ‘molar’ or ‘atomic’
Unit type in which to print the composition
- significant_figuresinteger
Number of significant figures for each amount
- normalization_component: string
Component/element on which to renormalize. String must either be one of the components/elements already in composite, or have the value ‘total’. (default = ‘total’)
- normalization_amount: float
Amount of component in the renormalised composition. If not explicitly set, no renormalization will be applied. (default = None)
Utility functions¶
- burnman.classes.composition.file_to_composition_list(fname, unit_type, normalize)[source]¶
Takes an input file with a specific format and returns a list of compositions (and associated comments) contained in that file.
- Parameters
- fnamestring
Path to ascii file containing composition data. Lines beginning with a hash are not read. The first read-line of the datafile contains a list of tab or space-separated components (e.g. FeO or SiO2), followed by the word Comment. Following lines are lists of floats with the amounts of each component. After the component amounts, the user can write anything they like in the Comment section.
- unit_type‘mass’, ‘weight’ or ‘molar’
Specify whether the compositions in the file are given as mass (weight) or molar amounts.
- normalizeboolean
If False, absolute numbers of moles/grams of component are stored, otherwise the component amounts of returned compositions will sum to one (until Composition.renormalize() is used).
Fitting functions¶
- burnman.optimize.composition_fitting.fit_composition_to_solution(solution, fitted_variables, variable_values, variable_covariances, variable_conversions=None, normalize=True)[source]¶
Takes a Solution object and a set of variable names and associates values and covariances and finds the molar fractions of the solution which provide the best fit (in a least-squares sense) to the variable values.
The fitting applies appropriate non-negativity constraints (i.e. no species can have a negative occupancy on a site).
- Parameters
- solutionburnman.Solution object
The solution to use in the fitting procedure.
- fitted_variableslist of strings
A list of the variables used to find the best-fit molar fractions of the solution. These should either be elements such as “Fe”, site_species such as “Fef_B” which would correspond to a species labelled Fef on the second site, or user-defined variables which are arithmetic sums of elements and/or site_species defined in “variable_conversions”.
- variable_valuesnumpy array
Numerical values of the fitted variables. These should be given as amounts; they do not need to be normalized.
- variable_covariances2D numpy array
Covariance matrix of the variables.
- variable_conversionsdictionary of dictionaries or None
A dictionary converting any user-defined variables into an arithmetic sum of element and site-species amounts. For example, {‘Mg_equal’: {‘Mg_A’: 1., ‘Mg_B’: -1.}}, coupled with Mg_equal = 0 would impose a constraint that the amount of Mg would be equal on the first and second site in the solution.
- normalizeboolean (default: True)
If True, normalizes the optimized molar fractions to sum to unity.
- Returns
- poptnumpy array
Optimized molar fractions.
- pcov2D numpy array
Covariance matrix corresponding to the optimized molar fractions.
- resfloat
The weighted residual of the fitting procedure.
- burnman.optimize.composition_fitting.fit_phase_proportions_to_bulk_composition(phase_compositions, bulk_composition)[source]¶
Performs weighted constrained least squares on a set of phase compositions to find the amount of those phases that best-fits a given bulk composition.
The fitting applies appropriate non-negativity constraints (i.e. no phase can have a negative abundance in the bulk).
- Parameters
- phase_compositions2D numpy array
The composition of each phase. Can be in weight or mole amounts.
- bulk_compositionnumpy array
The bulk composition of the composite. Must be in the same units as the phase compositions.
- Returns
- poptnumpy array
Optimized phase amounts.
- pcov2D numpy array
Covariance matrix corresponding to the optimized phase amounts.
- resfloat
The weighted residual of the fitting procedure.