espei package

Submodules

espei.analysis module

Tools for analyzing ESPEI runs

espei.analysis.truncate_arrays(trace_array, prob_array=None)

Return slides of ESPEI output arrays with any empty remaining iterations (zeros) removed.

Parameters
  • trace_array (np.ndarray) – Array of the trace from an ESPEI run. Should have shape (chains, iterations, parameters)

  • prob_array (np.ndarray) – Array of the lnprob output from an ESPEI run. Should have shape (chains, iterations)

Returns

A slide of the zeros-removed trace array is returned if only the trace is passed. Otherwise a tuple of both the trace and lnprob are returned.

Return type

np.ndarry or (np.ndarray, np.ndarray)

Examples

>>> from espei.analysis import truncate_arrays
>>> trace = np.array([[[1, 0], [2, 0], [3, 0], [0, 0]], [[0, 2], [0, 4], [0, 6], [0, 0]]])  # 3 iterations of 4 allocated
>>> truncate_arrays(trace).shape
(2, 3, 2)

espei.citing module

Define citations for ESPEI

espei.core_utils module

Internal utilities for developer use. May not be useful to users.

espei.core_utils.get_data(comps, phase_name, configuration, symmetry, datasets, prop)

Return list of cleaned single phase datasets matching the passed arguments.

Parameters
  • comps (list) – List of string component names

  • phase_name (str) – Name of phase

  • configuration (tuple) – Sublattice configuration as a tuple, e.g. (“CU”, (“CU”, “MG”))

  • symmetry (list of lists) – List of sublattice indices with symmetry

  • datasets (espei.utils.PickleableTinyDB) – Database of datasets to search for data

  • prop (list) – String name of the property of interest.

Returns

List of datasets matching the arguments.

Return type

list

espei.core_utils.get_prop_data(comps, phase_name, prop, datasets, additional_query=None)

Return datasets that match the components, phase and property

Parameters
  • comps (list) – List of components to get data for

  • phase_name (str) – Name of the phase to get data for

  • prop (str) – Property to get data for

  • datasets (espei.utils.PickleableTinyDB) – Datasets to search for data

  • additional_query (tinydb.Query) – A TinyDB Query object to search for. If None, a Query() will be created that does nothing.

Returns

List of dictionary datasets that match the criteria

Return type

list

espei.core_utils.get_samples(desired_data)

Return the data values from desired_data, transformed to interaction products.

Parameters

desired_data (list) – List of matched desired data, e.g. for a single property

Returns

Tuples of (temperature, (site fraction product, interaction product))

Return type

List[Tuple[float, Tuple[float, float]]]

Notes

Transforms data to interaction products, e.g. YS*{}^{xs}G=YS*XS*DXS^{n} {}^{n}L

espei.core_utils.get_weights(desired_data)
espei.core_utils.ravel_conditions(values, *conditions, **kwargs)

Broadcast and flatten conditions to the shape dictated by the values.

Special handling for ZPF data that does not have nice array values.

Parameters
  • values (list) – Multidimensional lists of values

  • conditions (list) – List of conditions to broadcast. Must be the same length as the number of dimensions of the values array. In code, the following must be True: all([s == len(cond) for s, cond in zip(values.shape, conditions)])

  • zpf (bool, optional) – Whether to consider values as a special case of ZPF data (not an even grid of conditions) Default is False

Returns

Tuple of ravelled conditions

Return type

tuple

Notes

The current implementation of ZPF data only has the shape for one condition and this assumption is hardcoded in various places.

Here we try to be as general as possible by explicitly calculating the shape of the ZPF values.

A complication of this is that the user of this function must pass the correct conditions because usually T and P are specified in ZPF (but, again, only one can actually be a condition given the current shape).

espei.core_utils.ravel_zpf_values(desired_data, independent_comps, conditions=None)

Unpack the phases and compositions from ZPF data. Dependent components are converted to independent components.

Parameters
  • desired_data (espei.utils.PickleableTinyDB) – The selected data

  • independent_comps (list) – List of indepdendent components. Used for mass balance component conversion

  • conditions (dict) – Conditions to filter for. Right now only considers fixed temperatures

Returns

A dictonary of list of lists of tuples. Each dictionary key is the number of phases in equilibrium, e.g. a key “2” might have values [[(PHASE_NAME_1, {‘C1’: X1, ‘C2’: X2}, refkey), (PHASE_NAME_2, {‘C1’: X1, ‘C2’: X2}, refkey)], …] Three would have three inner tuples and so on.

Return type

dict

espei.core_utils.recursive_map(f, x)

map, but over nested lists

Parameters
  • f (callable) – Function to apply to x

  • x (list or value) – Value passed to v

Returns

Return type

list or value

espei.core_utils.symmetry_filter(x, config, symmetry)

Return True if the candidate sublattice configuration has any symmetry which matches the phase model symmetry.

Parameters
  • x (dict) – the candidate dataset ‘solver’ dict. Must contain the “sublattice_configurations” key

  • config (list) – the configuration of interest: e.g. [‘AL’, [‘AL’, ‘NI’], ‘VA’]

  • symmetry (list) – tuple of tuples where each inner tuple is a group of equivalent sublattices. A value of ((0, 1), (2, 3, 4)) means that sublattices at indices 0 and 1 are symmetrically equivalent to each other and sublattices at indices 2, 3, and 4 are symetrically equivalent to each other.

Returns

Return type

bool

espei.datasets module

exception espei.datasets.DatasetError

Bases: Exception

Exception raised when datasets are invalid.

espei.datasets.add_ideal_exclusions(datasets)

If there are single phase datasets present and none of them have an excluded_model_contributions key, add ideal exclusions automatically and emit a DeprecationWarning that this feature will be going away.

Parameters

datasets (PickleableTinyDB) –

Returns

Return type

PickleableTinyDB

espei.datasets.apply_tags(datasets, tags)

Modify datasets using the tags system

Parameters
  • datasets (PickleableTinyDB) – Datasets to modify

  • tags (dict) – Dictionary of {tag: update_dict}

Returns

Return type

PickleableTinyDB

Notes

In general, everything replaces or is additive. We use the following update rules: 1. If the update value is a list, extend the existing list (empty list if key does not exist) 2. If the update value is scalar, override the previous (deleting any old value, if present) 3. If the update value is a dict, update the exist dict (empty dict if dict does not exist) 4. Otherwise, the value is updated, overriding the previous

Examples

>>> from espei.utils import PickleableTinyDB
>>> from tinydb.storages import MemoryStorage
>>> ds = PickleableTinyDB(storage=MemoryStorage)
>>> doc_id = ds.insert({'tags': ['dft'], 'excluded_model_contributions': ['contrib']})
>>> my_tags = {'dft': {'excluded_model_contributions': ['idmix', 'mag'], 'weight': 5.0}}
>>> from espei.datasets import apply_tags
>>> apply_tags(ds, my_tags)
>>> all_data = ds.all()
>>> all(d['excluded_model_contributions'] == ['contrib', 'idmix', 'mag'] for d in all_data)
True
>>> all(d['weight'] == 5.0 for d in all_data)
True
espei.datasets.check_dataset(dataset)

Ensure that the dataset is valid and consistent.

Currently supports the following validation checks: * data shape is valid * phases and components used match phases and components entered * individual shapes of keys, such as ZPF, sublattice configs and site ratios

Planned validation checks: * all required keys are present

Note that this follows some of the implicit assumptions in ESPEI at the time of writing, such that conditions are only P, T, configs for single phase and essentially only T for ZPF data.

Parameters

dataset (dict) – Dictionary of the standard ESPEI dataset.

Returns

Return type

None

Raises

DatasetError – If an error is found in the dataset

espei.datasets.clean_dataset(dataset)

Clean an ESPEI dataset dictionary.

Parameters

dataset (dict) – Dictionary of the standard ESPEI dataset. dataset : dic

Returns

Modified dataset that has been cleaned

Return type

dict

Notes

Assumes a valid, checked dataset. Currently handles * Converting expected numeric values to floats

espei.datasets.load_datasets(dataset_filenames)

Create a PickelableTinyDB with the data from a list of filenames.

Parameters

dataset_filenames ([str]) – List of filenames to load as datasets

Returns

Return type

PickleableTinyDB

espei.datasets.recursive_glob(start, pattern='*.json')

Recursively glob for the given pattern from the start directory.

Parameters
  • start (str) – Path of the directory to walk while for file globbing

  • pattern (str) – Filename pattern to match in the glob.

Returns

List of matched filenames

Return type

[str]

espei.espei_script module

Automated fitting script.

A minimal run must specify an input.json and a datasets folder containing input files.

espei.espei_script.get_run_settings(input_dict)

Validate settings from a dict of possible input.

Performs the following actions: 1. Normalize (apply defaults) 2. Validate against the schema

Parameters

input_dict (dict) – Dictionary of input settings

Returns

Validated run settings

Return type

dict

Raises

ValueError

espei.espei_script.log_version_info()

Print version info to the log

espei.espei_script.main()

Handle starting ESPEI from the command line. Parse command line arguments and input file.

espei.espei_script.run_espei(run_settings)

Wrapper around the ESPEI fitting procedure, taking only a settings dictionary.

Parameters

run_settings (dict) – Dictionary of input settings

Returns

Return type

Either a Database (for generate parameters only) or a tuple of (Database, sampler)

espei.mcmc module

Legacy module for running MCMC in ESPEI

espei.mcmc.mcmc_fit(dbf, datasets, iterations=1000, save_interval=1, chains_per_parameter=2, chain_std_deviation=0.1, scheduler=None, tracefile=None, probfile=None, restart_trace=None, deterministic=True, prior=None, mcmc_data_weights=None)

Run MCMC via the EmceeOptimizer class

Parameters
  • dbf (Database) – A pycalphad Database to fit with symbols to fit prefixed with VV followed by a number, e.g. VV0001

  • datasets (PickleableTinyDB) – A database of single- and multi-phase data to fit

  • iterations (int) – Number of trace iterations to calculate in MCMC. Default is 1000 iterations.

  • save_interval (int) – interval of iterations to save the tracefile and probfile

  • chains_per_parameter (int) – number of chains for each parameter. Must be an even integer greater or equal to 2. Defaults to 2.

  • chain_std_deviation (float) – standard deviation of normal for parameter initialization as a fraction of each parameter. Must be greater than 0. Default is 0.1, which is 10%.

  • scheduler (callable) – Scheduler to use with emcee. Must implement a map method.

  • tracefile (str) – filename to store the trace with NumPy.save. Array has shape (chains, iterations, parameters)

  • probfile (str) – filename to store the log probability with NumPy.save. Has shape (chains, iterations)

  • restart_trace (np.ndarray) – ndarray of the previous trace. Should have shape (chains, iterations, parameters)

  • deterministic (bool) – If True, the emcee sampler will be seeded to give deterministic sampling draws. This will ensure that the runs with the exact same database, chains_per_parameter, and chain_std_deviation (or restart_trace) will produce exactly the same results.

  • prior (str) – Prior to use to generate priors. Defaults to ‘zero’, which keeps backwards compatibility. Can currently choose ‘normal’, ‘uniform’, ‘triangular’, or ‘zero’.

  • mcmc_data_weights (dict) – Dictionary of weights for each data type, e.g. {‘ZPF’: 20, ‘HM’: 2}

espei.paramselect module

The paramselect module handles automated parameter selection for linear models.

Automated Parameter Selection End-members

Note: All magnetic parameters from literature for now. Note: No fitting below 298 K (so neglect third law issues for now).

For each step, add one parameter at a time and compute AICc with max likelihood.

Cp - TlnT, T**2, T**-1, T**3 - 4 candidate models (S and H only have one required parameter each. Will fit in full MCMC procedure)

Choose parameter set with best AICc score.

espei.paramselect.fit_formation_energy(dbf, comps, phase_name, configuration, symmetry, datasets, ridge_alpha=None, aicc_phase_penalty=None, features=None)

Find suitable linear model parameters for the given phase. We do this by successively fitting heat capacities, entropies and enthalpies of formation, and selecting against criteria to prevent overfitting. The “best” set of parameters minimizes the error without overfitting.

Parameters
  • dbf (Database) – pycalphad Database. Partially complete, so we know what degrees of freedom to fix.

  • comps ([str]) – Names of the relevant components.

  • phase_name (str) – Name of the desired phase for which the parameters will be found.

  • configuration (ndarray) – Configuration of the sublattices for the fitting procedure.

  • symmetry ([[int]]) – Symmetry of the sublattice configuration.

  • datasets (PickleableTinyDB) – All the datasets desired to fit to.

  • ridge_alpha (float) – Value of the $alpha$ hyperparameter used in ridge regression. Defaults to 1.0e-100, which should be degenerate with ordinary least squares regression. For now, the parameter is applied to all features.

  • aicc_feature_factors (dict) – Map of phase name to feature to a multiplication factor for the AICc’s parameter penalty.

  • features (dict) – Maps “property” to a list of features for the linear model. These will be transformed from “GM” coefficients e.g., {“CPM_FORM”: (v.T*sympy.log(v.T), v.T**2, v.T**-1, v.T**3)} (Default value = None)

Returns

{feature: estimated_value}

Return type

dict

espei.paramselect.fit_ternary_interactions(dbf, phase_name, symmetry, endmembers, datasets, ridge_alpha=None, aicc_phase_penalty=None)

Fit ternary interactions for a database in place

Parameters
  • dbf (Database) – pycalphad Database to add parameters to

  • phase_name (str) – Name of the phase to fit

  • symmetry (list) – List of symmetric sublattices, e.g. [[0, 1, 2], [3, 4]]

  • endmembers (list) – List of endmember tuples, e.g. [(‘CU’, ‘MG’)]

  • datasets (PickleableTinyDB) – TinyDB database of datasets

  • ridge_alpha (float) – Value of the $alpha$ hyperparameter used in ridge regression. Defaults to 1.0e-100, which should be degenerate with ordinary least squares regression. For now, the parameter is applied to all features.

Returns

Modified the Database in place

Return type

None

espei.paramselect.generate_parameters(phase_models, datasets, ref_state, excess_model, ridge_alpha=None, aicc_penalty_factor=None, dbf=None)

Generate parameters from given phase models and datasets

Parameters
  • phase_models (dict) – Dictionary of components and phases to fit.

  • datasets (PickleableTinyDB) – database of single- and multi-phase to fit.

  • ref_state (str) – String of the reference data to use, e.g. ‘SGTE91’ or ‘SR2016’

  • excess_model (str) – String of the type of excess model to fit to, e.g. ‘linear’

  • ridge_alpha (float) – Value of the $alpha$ hyperparameter used in ridge regression. Defaults to None, which falls back to ordinary least squares regression. For now, the parameter is applied to all features.

  • aicc_penalty_factor (dict) – Map of phase name to feature to a multiplication factor for the AICc’s parameter penalty.

  • dbf (Database) – Initial pycalphad Database that can have parameters that would not be fit by ESPEI

Returns

Return type

pycalphad.Database

espei.paramselect.get_next_symbol(dbf)

Return a string name of the next free symbol to set

Parameters

dbf (Database) – pycalphad Database. Must have the varcounter attribute set to an integer.

Returns

Return type

str

espei.paramselect.phase_fit(dbf, phase_name, symmetry, subl_model, site_ratios, datasets, refdata, ridge_alpha, aicc_penalty=None, aliases=None)

Generate an initial CALPHAD model for a given phase and sublattice model.

Parameters
  • dbf (Database) – pycalphad Database to add parameters to.

  • phase_name (str) – Name of the phase.

  • symmetry ([[int]]) – Sublattice model symmetry.

  • subl_model ([[str]]) – Sublattice model for the phase of interest.

  • site_ratios ([float]) – Number of sites in each sublattice, normalized to one atom.

  • datasets (PickleableTinyDB) – All datasets to consider for the calculation.

  • refdata (dict) – Maps tuple(element, phase_name) -> SymPy object defining energy relative to SER

  • ridge_alpha (float) – Value of the $alpha$ hyperparameter used in ridge regression. Defaults to 1.0e-100, which should be degenerate with ordinary least squares regression. For now, the parameter is applied to all features.

  • aicc_penalty (dict) – Map of phase name to feature to a multiplication factor for the AICc’s parameter penalty.

  • aliases ([str]) – Alternative phase names. Useful for matching against reference data or other datasets. (Default value = None)

Returns

Modifies the dbf.

Return type

None

espei.plot module

Plotting of input data and calculated database quantities

espei.plot.dataplot(comps, phases, conds, datasets, ax=None, plot_kwargs=None, tieline_plot_kwargs=None)

Plot datapoints corresponding to the components, phases, and conditions.

Parameters
  • comps (list) – Names of components to consider in the calculation.

  • phases ([]) – Names of phases to consider in the calculation.

  • conds (dict) – Maps StateVariables to values and/or iterables of values.

  • datasets (PickleableTinyDB) –

  • ax (matplotlib.Axes) – Default axes used if not specified.

  • plot_kwargs (dict) – Additional keyword arguments to pass to the matplotlib plot function for points

  • tieline_plot_kwargs (dict) – Additional keyword arguments to pass to the matplotlib plot function for tielines

Returns

A plot of phase equilibria points as a figure

Return type

matplotlib.Axes

Examples

>>> from espei.datasets import load_datasets, recursive_glob  
>>> from espei.plot import dataplot  
>>> datasets = load_datasets(recursive_glob('.', '*.json'))  
>>> my_phases = ['BCC_A2', 'CUMG2', 'FCC_A1', 'LAVES_C15', 'LIQUID']  
>>> my_components = ['CU', 'MG' 'VA']  
>>> conditions = {v.P: 101325, v.T: (500, 1000, 10), v.X('MG'): (0, 1, 0.01)}  
>>> dataplot(my_components, my_phases, conditions, datasets)  
espei.plot.eqdataplot(eq, datasets, ax=None, plot_kwargs=None)

Plot datapoints corresponding to the components and phases in the eq Dataset. A convenience function for dataplot.

Parameters
  • eq (xarray.Dataset) – Result of equilibrium calculation.

  • datasets (PickleableTinyDB) – Database of phase equilibria datasets

  • ax (matplotlib.Axes) – Default axes used if not specified.

  • plot_kwargs (dict) – Keyword arguments to pass to dataplot

Returns

Return type

A plot of phase equilibria points as a figure

Examples

>>> from pycalphad import equilibrium, Database, variables as v  
>>> from pycalphad.plot.eqplot import eqplot  
>>> from espei.datasets import load_datasets, recursive_glob  
>>> datasets = load_datasets(recursive_glob('.', '*.json'))  
>>> dbf = Database('my_databases.tdb')  
>>> my_phases = list(dbf.phases.keys())  
>>> eq = equilibrium(dbf, ['CU', 'MG', 'VA'], my_phases, {v.P: 101325, v.T: (500, 1000, 10), v.X('MG'): (0, 1, 0.01)})  
>>> ax = eqplot(eq)  
>>> ax = eqdataplot(eq, datasets, ax=ax)  
espei.plot.multiplot(dbf, comps, phases, conds, datasets, eq_kwargs=None, plot_kwargs=None, data_kwargs=None)

Plot a phase diagram with datapoints described by datasets. This is a wrapper around pycalphad.equilibrium, pycalphad’s eqplot, and dataplot.

Parameters
  • dbf (Database) – pycalphad thermodynamic database containing the relevant parameters.

  • comps (list) – Names of components to consider in the calculation.

  • phases (list) – Names of phases to consider in the calculation.

  • conds (dict) – Maps StateVariables to values and/or iterables of values.

  • datasets (PickleableTinyDB) – Database of phase equilibria datasets

  • eq_kwargs (dict) – Keyword arguments passed to pycalphad equilibrium()

  • plot_kwargs (dict) – Keyword arguments passed to pycalphad eqplot()

  • data_kwargs (dict) – Keyword arguments passed to dataplot()

Returns

Return type

A phase diagram with phase equilibria data as a figure

Examples

>>> from pycalphad import Database, variables as v  
>>> from pycalphad.plot.eqplot import eqplot  
>>> from espei.datasets import load_datasets, recursive_glob  
>>> datasets = load_datasets(recursive_glob('.', '*.json'))  
>>> dbf = Database('my_databases.tdb')  
>>> my_phases = list(dbf.phases.keys())  
>>> multiplot(dbf, ['CU', 'MG', 'VA'], my_phases, {v.P: 101325, v.T: 1000, v.X('MG'): (0, 1, 0.01)}, datasets)  
espei.plot.plot_parameters(dbf, comps, phase_name, configuration, symmetry, datasets=None, fig=None, require_data=True)

Plot parameters of interest compared with data in subplots of a single figure

Parameters
  • dbf (Database) – pycalphad thermodynamic database containing the relevant parameters.

  • comps (list) – Names of components to consider in the calculation.

  • phase_name (str) – Name of the considered phase phase

  • configuration (tuple) – Sublattice configuration to plot, such as (‘CU’, ‘CU’) or ((‘CU’, ‘MG’), ‘CU’)

  • symmetry (list) – List of lists containing indices of symmetric sublattices e.g. [[0, 1], [2, 3]]

  • datasets (PickleableTinyDB) – ESPEI datasets to compare against. If None, nothing is plotted.

  • fig (matplotlib.Figure) – Figure to create with axes as subplots.

  • require_data (bool) – If True, plot parameters that have data corresponding data. Defaults to True. Will raise an error for non-interaction configurations.

Returns

Return type

None

Examples

>>> # plot the LAVES_C15 (Cu)(Mg) endmember
>>> plot_parameters(dbf, ['CU', 'MG'], 'LAVES_C15', ('CU', 'MG'), symmetry=None, datasets=datasets)  
>>> # plot the mixing interaction in the first sublattice
>>> plot_parameters(dbf, ['CU', 'MG'], 'LAVES_C15', (('CU', 'MG'), 'MG'), symmetry=None, datasets=datasets)  

espei.priors module

Classes and functions for retrieving statistical priors for given parameters.

class espei.priors.DistributionParameter(parameter, param_type='absolute')

Bases: object

Handle generating absolute, scaling, shifting parameters.

Examples

>>> dp = DistributionParameter(5.0, 'absolute')  # always get back 5
>>> dp.value(1.0) == 5.0
True
>>> dp = DistributionParameter(-2.0, 'relative')  # multiply by -2
>>> dp.value(2.0) == -4.0
True
>>> dp = DistributionParameter(-1.0, 'shift_absolute')  # subtract 1
>>> dp.value(2.0) == 1.0
True
>>> dp = DistributionParameter(-0.5, 'shift_relative')  # subtract 1/2 value
>>> dp.value(2.0) == 1.0
True
SUPPORTED_TYPES = ('absolute', 'relative', 'shift_absolute', 'shift_relative', 'identity')
value(p)

Return the distribution parameter value modified by the parameter and type.

Parameters

p (float) – Input parameter to modify.

Returns

Return type

float

class espei.priors.PriorSpec(name, **parameters)

Bases: object

Specification template for instantiating priors.

SUPPORTED_PRIORS = ('normal', 'uniform', 'triangular', 'zero')
get_prior(value)

Instantiate a prior as described in the spec

Examples

>>> import numpy as np
>>> from espei.priors import PriorSpec
>>> tri_spec = {'name': 'triangular', 'loc_shift_relative': -0.5, 'scale_shift_relative': 0.5, 'c': 0.5}
>>> np.isneginf(PriorSpec(**tri_spec).get_prior(10).logpdf(5.1))
False
>>> np.isneginf(PriorSpec(**tri_spec).get_prior(10).logpdf(4.9))
True
espei.priors.build_prior_specs(prior_spec, parameters)

Get priors from given parameters

Parameters
  • prior_spec (PriorSpec or dict) – Either a prior spec dict (to instantiate), a PriorSpec, or a list of either. If a list is passed, it must correspond to the parameters.

  • parameters (list) – List of parameters that the priors will be instantiated by

Returns

Return type

[PriorSpec]

Examples

>>> s_norm = {'name': 'normal', 'scale_relative': 0.1, 'loc_identity': 1.0}
>>> len(build_prior_specs(s_norm, [10, 100])) == 2
True
>>> s_tri = {'name': 'triangular', 'loc_shift_relative': -0.5, 'scale_shift_relative': 0.5, 'c': 0.5}
>>> from espei.priors import PriorSpec
>>> len(build_prior_specs([s_norm, PriorSpec(**s_tri)], [10, 100])) == 2
True
class espei.priors.rv_zero(*args, **kwargs)

Bases: object

A simple class that mimics the scipy.stats.rv_continuous object’s logpdf method, always returning zero.

This class mainly exists for backwards compatibility where no prior is specified.

Examples

>>> import numpy as np
>>> rv = rv_zero()
>>> np.isclose(rv.logpdf(-np.inf), 0.0)
True
>>> np.isclose(rv.logpdf(1.0), 0.0)
True
>>> np.isclose(rv.logpdf(0.0), 0.0)
True
logpdf(*args, **kwargs)

espei.refdata module

The refdata module contains pure-element reference state data.

espei.refdata.find_and_insert_user_refstate(entry_point_plugin_name='espei.reference_states', namespace={'And': And, 'INSERTED_USER_REFERENCE_STATES': [], 'OrderedDict': <class 'collections.OrderedDict'>, 'Piecewise': Piecewise, 'SGTE91': {('AG', 'BCC_A2'): Piecewise((-1.05*T + GHSERAG + 3400, (T >= 298.15) & (T < 3000.0))), ('AG', 'CUB_A13'): Piecewise((-1.8826*T + GHSERAG + 3765.6, (T >= 298.15) & (T < 3000.0))), ('AG', 'FCC_A1'): Piecewise((GHSERAG, (T >= 298.15) & (T < 3000.0))), ('AG', 'HCP_A3'): Piecewise((0.3*T + GHSERAG + 300, (T >= 298.15) & (T < 3000.0))), ('AG', 'LIQUID'): Piecewise((-1.033905e-20*T**7 - 8.89102*T + GHSERAG + 11025.076, (T >= 298.15) & (T < 1234.93)), (-33.472*T*log(T) + 180.964656*T - 3587.111, (T >= 1234.93) & (T < 3000.0))), ('AL', 'BCC_A2'): Piecewise((-4.813*T + GHSERAL + 10083, (T >= 298.15) & (T < 2900.0))), ('AL', 'BCT_A5'): Piecewise((-4.813*T + GHSERAL + 10083, (T >= 298.15) & (T < 2900.0))), ('AL', 'CBCC_A12'): Piecewise((-4.813*T + GHSERAL + 10083.4, (T >= 298.15) & (T < 2900.0))), ('AL', 'CUB_A13'): Piecewise((-4.8116*T + GHSERAL + 10920.44, (T >= 298.15) & (T < 2900.0))), ('AL', 'DIAMOND_A4'): Piecewise((30*T + GHSERAL, (T >= 298.15) & (T < 2900.0))), ('AL', 'FCC_A1'): Piecewise((GHSERAL, (T >= 298.15) & (T < 2900.0))), ('AL', 'HCP_A3'): Piecewise((-1.8*T + GHSERAL + 5481, (T >= 298.15) & (T < 2900.0))), ('AL', 'LIQUID'): Piecewise((7.9337e-20*T**7 - 11.841867*T + GHSERAL + 11005.029, (T >= 298.15) & (T < 700.0)), (7.9337e-20*T**7 - 11.841867*T + GHSERAL + 11005.03, (T >= 700.0) & (T < 933.47)), (-31.748192*T*log(T) + 177.430178*T - 795.996, (T >= 933.47) & (T < 2900.0))), ('AM', 'BCC_A2'): Piecewise((5.0e-12*T**3 + 5.0e-8*T**2 - 4.531331*T + GHSERAM + 5973.805, (T >= 298.15) & (T < 999.0)), (2.291117e-6*T**3 - 0.0190671*T**2 - 15.8832*T*log(T) + 63.93115*T - 7800.332 + 2287195/T, (T >= 999.0) & (T < 1339.0)), (-39.748*T*log(T) + 219.600832*T - 13153.887, (T >= 1339.0) & (T < 1449.0)), (1.801717e-6*T**3 - 0.02736485*T**2 + 33.413*T*log(T) - 326.394464*T + 70352.138 - 17379450/T, (T >= 1449.0) & (T < 2183.6)), (-3.740241*T + GHSERAM + 4777.694, (T >= 2183.6) & (T < 3000.0))), ('AM', 'DHCP'): Piecewise((GHSERAM, (T >= 298.15) & (T < 3000.0))), ('AM', 'FCC_A1'): Piecewise((-6.64773e-7*T**3 - 0.00294694*T**2 - 23.1377*T*log(T) + 99.204329*T - 5224.899 - 18507/T, (T >= 298.15) & (T < 1018.0)), (-3.75233e-7*T**3 - 0.005418*T**2 - 19.4406*T*log(T) + 73.800069*T - 2935.853 - 260435/T, (T >= 1018.0) & (T < 1548.7)), (0.246538*T + GHSERAM - 476.655, (T >= 1548.7) & (T < 3000.0))), ('AM', 'LIQUID'): Piecewise((-14.1205*T + GHSERAM + 19910.7, (T >= 298.15) & (T < 3000.0))), ('AS', 'BCC_A2'): Piecewise((-16.1*T + GHSERAS + 24874, (T >= 298.15) & (T < 1200.0))), ('AS', 'FCC_A1'): Piecewise((-14.74*T + GHSERAS + 24874, (T >= 298.15) & (T < 1200.0))), ('AS', 'HCP_A3'): Piecewise((-14*T + GHSERAS + 24874, (T >= 298.15) & (T < 1200.0))), ('AS', 'LIQUID'): Piecewise((-22.424679*T + GHSERAS + 24442.9, (T >= 298.15) & (T < 1200.0))), ('AS', 'RHOMBOHEDRAL_A7'): Piecewise((GHSERAS, (T >= 298.15) & (T < 1200.0))), ('AU', 'BCC_A2'): Piecewise((-1.1*T + GHSERAU + 4250, (T >= 298.15) & (T < 3200))), ('AU', 'FCC_A1'): Piecewise((GHSERAU, (T >= 298.15) & (T < 3200.0))), ('AU', 'HCP_A3'): Piecewise((1.6*T + GHSERAU + 240.75, (T >= 298.15) & (T < 3200.0))), ('AU', 'LIQUID'): Piecewise((-9.385866*T + GHSERAU + 12552, (T >= 298.15) & (T < 3200.0))), ('B', 'BETA_RHOMBO_B'): Piecewise((GHSERBB, (T >= 298.15) & (T < 6000.0))), ('B', 'DIAMOND_A4'): Piecewise((GHSERBB, (T >= 298.15) & (T < 6000.0))), ('B', 'FCC_A1'): Piecewise((-12.217*T + GHSERBB + 43514, (T >= 298.15) & (T < 6000.0))), ('B', 'GRAPHITE'): Piecewise((GHSERBB + 5000, (T >= 298.15) & (T < 6000.0))), ('B', 'HCP_A3'): Piecewise((-9.706*T + GHSERBB + 50208, (T >= 298.15) & (T < 6000.0))), ('B', 'LIQUID'): Piecewise((-20.268025*T + GHSERBB + 48458.559, (T >= 298.15) & (T < 500.0)), (5.07347e-7*T**3 - 0.007095669*T**2 - 14.9827763*T*log(T) + 82.101722*T + 41119.703 + 335484/T, (T >= 500.0) & (T < 2348.0)), (-31.4*T*log(T) + 200.94731*T + 28842.012, (T >= 2348.0) & (T < 3000.0)), (-21.448954*T + GHSERBB + 50372.665, (T >= 3000.0) & (T < 6000.0))), ('BA', 'BCC_A2'): Piecewise((GHSERBA, (T >= 298.15) & (T < 4000.0))), ('BA', 'FCC_A1'): Piecewise((0.6*T + GHSERBA + 1800, (T >= 298.15) & (T < 4000.0))), ('BA', 'HCP_A3'): Piecewise((1.3*T + GHSERBA + 2000, (T >= 298.15) & (T < 4000.0))), ('BA', 'LIQUID'): Piecewise((9.91223e-7*T**3 - 0.002346416*T**2 - 43.4961089*T*log(T) + 229.540143*T - 9738.988 + 723016/T, (T >= 298.15) & (T < 1000.0)), (2.7e-11*T**3 + 0.002154*T**2 - 45.103*T*log(T) + 235.49642*T - 7381.093 - 365/T, (T >= 1000.0) & (T < 2995.0)), (-4.568042*T + GHSERBA + 3856.393, (T >= 2995.0) & (T < 4000.0))), ('BE', 'BCC_A2'): Piecewise((9.61427e-7*T**3 - 0.008672487*T**2 - 17.1727841*T*log(T) + 109.411712*T - 1076.057 + 242309/T, (T >= 298.15) & (T < 1527.0)), (-30*T*log(T) + 196.411689*T - 6970.378, (T >= 1527.0) & (T < 1560.0)), (-5.9331e-8*T**3 - 0.000103629*T**2 - 27.7823769*T*log(T) + 178.131722*T - 2609.973 - 1250847/T, (T >= 1560.0) & (T < 3000.0))), ('BE', 'FCC_A1'): Piecewise((-1.085*T + GHSERBE + 6349, (T >= 298.15) & (T < 3000.0))), ('BE', 'HCP_A3'): Piecewise((GHSERBE, (T >= 298.15) & (T < 3000.0))), ('BE', 'LIQUID'): Piecewise((4.15958e-7*T**3 - 0.004821347*T**2 - 20.0497038*T*log(T) + 120.362788*T + 7511.838 + 281044/T, (T >= 298.15) & (T < 1560.0)), (-1.117e-9*T**3 - 0.0010572*T**2 - 25.486*T*log(T) + 156.961141*T + 5364.713 + 15920/T, (T >= 1560.0) & (T < 3000.0))), ('BI', 'BCC_A2'): Piecewise((-13.9*T + GHSERBI + 11297, (T >= 298.15) & (T < 3000.0))), ('BI', 'BCT_A5'): Piecewise((GHSERBI + 4184.07, (T >= 298.15) & (T < 3000.0))), ('BI', 'FCC_A1'): Piecewise((-12.5*T + GHSERBI + 9900, (T >= 298.15) & (T < 3000.0))), ('BI', 'HCP_A3'): Piecewise((-11.8*T + GHSERBI + 9900, (T >= 298.15) & (T < 3000.0))), ('BI', 'LIQUID'): Piecewise((-5.9549e-19*T**7 - 20.636509*T + GHSERBI + 11246.066, (T >= 298.15) & (T < 544.55)), (-20.810418*T + GHSERBI + 11336.26 - 1.66145e+25/T**9, (T >= 544.55) & (T < 800.0)), (-20.810418*T + GHSERBI + 11336.259 - 1.66145e+25/T**9, (T >= 800.0) & (T < 1200.0)), (-27.196*T*log(T) + 103.961021*T + 3754.947, (T >= 1200.0) & (T < 3000.0))), ('BI', 'RHOMBOHEDRAL_A7'): Piecewise((GHSERBI, (T >= 298.15) & (T < 3000.0))), ('BI', 'TETRAGONAL_A6'): Piecewise((GHSERBI + 4184.07, (T >= 298.15) & (T < 3000.0))), ('BI', 'TET_ALPHA1'): Piecewise((GHSERBI + 4234, (T >= 298.15) & (T < 3000.0))), ('C', 'DIAMOND_A4'): Piecewise((-0.0004723*T**2 - 24.31*T*log(T) + 175.61*T - 16359.441 + 2698000/T - 261000000.0/T**2 + 11100000000.0/T**3, (T >= 298.15) & (T < 6000.0))), ('C', 'GRAPHITE'): Piecewise((GHSERCC, (T >= 298.15) & (T < 6000.0))), ('C', 'LIQUID'): Piecewise((-24.63*T + GHSERCC + 117369, (T >= 298.15) & (T < 6000.0))), ('CA', 'BCC_A2'): Piecewise((-4.500217e-6*T**3 + 0.0072326*T**2 - 28.2541*T*log(T) + 142.970155*T - 7020.852 + 60578/T, (T >= 298.15) & (T < 716.0)), (-0.0161921*T**2 - 6.276*T*log(T) + 1.999694*T + 1640.475 - 523000/T, (T >= 716.0) & (T < 1115.0)), (-1.704079e-6*T**3 + 0.032543127*T**2 - 143.872698*T*log(T) + 1023.54905*T - 142331.096 + 25353771/T, (T >= 1115.0) & (T < 3000.0))), ('CA', 'FCC_A1'): Piecewise((GHSERCA, (T >= 298.15) & (T < 3000.0))), ('CA', 'HCP_A3'): Piecewise((0.7*T + GHSERCA + 500, (T >= 298.15) & (T < 3000.0))), ('CA', 'LIQUID'): Piecewise((-10.310466*T + GHSERCA + 10799.908, (T >= 298.15) & (T < 500.0)), (3.338303e-6*T**3 - 0.02266537*T**2 - 8.9874787*T*log(T) + 18.2979*T + 7838.856 - 230193/T, (T >= 500.0) & (T < 1115.0)), (-35*T*log(T) + 188.9223*T - 2654.938, (T >= 1115.0) & (T < 3000.0))), ('CD', 'FCC_A1'): Piecewise((-0.92*T + GHSERCD + 892.3, (T >= 298.15) & (T < 1600.0))), ('CD', 'HCP_A3'): Piecewise((GHSERCD, (T >= 298.15) & (T < 1600.0))), ('CD', 'LIQUID'): Piecewise((-10.296916*T + GHSERCD + 6128.444, (T >= 298.15) & (T < 400.0)), (2.8899781e-5*T**3 - 0.115159917*T**2 + 53.1313898*T*log(T) - 371.046869*T + 21716.884 - 1271815/T, (T >= 400.0) & (T < 594.22)), (-29.7064*T*log(T) + 138.251107*T - 3252.303, (T >= 594.22) & (T < 1500.0)), (-9.954373*T + GHSERCD + 5775.186, (T >= 1500.0) & (T < 1600.0))), ('CD', 'TETRAGONAL_A6'): Piecewise((-0.92*T + GHSERCD + 892.3, (T >= 298.15) & (T < 1600.0))), ('CE', 'BCC_A2'): Piecewise((4.784299e-6*T**3 - 0.029098402*T**2 - 7.7305867*T*log(T) - 5.21501*T - 1354.69 - 196303/T, (T >= 298.15) & (T < 1000.0)), (-37.6142*T*log(T) + 187.449688*T - 12101.106, (T >= 1000.0) & (T < 1072.0)), (2.348e-9*T**3 - 5.7145e-5*T**2 - 37.4627992*T*log(T) + 186.333811*T - 11950.375 - 25897/T, (T >= 1072.0) & (T < 4000.0))), ('CE', 'DHCP'): Piecewise((0.56886*T + GHSERCE - 190, (T >= 298.15) & (T < 4000.0))), ('CE', 'FCC_A1'): Piecewise((GHSERCE, (T >= 298.15) & (T < 4000.0))), ('CE', 'HCP_A3'): Piecewise((GHSERCE + 50000, (T >= 298.15) & (T < 4000.0))), ('CE', 'LIQUID'): Piecewise((4.827734e-6*T**3 - 0.02936407*T**2 - 7.5383948*T*log(T) - 11.423898*T + 4117.865 - 198834/T, (T >= 298.15) & (T < 1000.0)), (-37.6978*T*log(T) + 183.023193*T - 6730.605, (T >= 1000.0) & (T < 2000.0)), (-7.346999*T + GHSERCE + 7468.034, (T >= 2000.0) & (T < 4000.0))), ('CO', 'BCC_A2'): Piecewise((-0.7138*T + GHSERCO + 2938, (T >= 298.15) & (T < 6000.0))), ('CO', 'CBCC_A12'): Piecewise((GHSERCO + 4155, (T >= 298.15) & (T < 6000.0))), ('CO', 'CUB_A13'): Piecewise((GHSERCO + 3155, (T >= 298.15) & (T < 6000.0))), ('CO', 'FCC_A1'): Piecewise((-0.615248*T + GHSERCO + 427.591, (T >= 298.15) & (T < 1768.0)), (-0.615253*T + GHSERCO + 427.591, (T >= 1768.0) & (T < 6000.0))), ('CO', 'HCP_A3'): Piecewise((GHSERCO, (T >= 298.15) & (T < 6000.0))), ('CO', 'LIQUID'): Piecewise((-2.19801e-21*T**7 - 8.931932*T + GHSERCO + 15085.037, (T >= 298.15) & (T < 1768.0)), (-40.5*T*log(T) + 243.599944*T - 846.61, (T >= 1768.0) & (T < 6000.0))), ('CR', 'BCC_A2'): Piecewise((GHSERCR, (T >= 298.15) & (T < 6000.0))), ('CR', 'CBCC_A12'): Piecewise((2.7196*T + GHSERCR + 11087, (T >= 298.15) & (T < 6000.0))), ('CR', 'CUB_A13'): Piecewise((0.6276*T + GHSERCR + 15899, (T >= 298.15) & (T < 6000.0))), ('CR', 'FCC_A1'): Piecewise((0.163*T + GHSERCR + 7284, (T >= 298.15) & (T < 6000.0))), ('CR', 'HCP_A3'): Piecewise((GHSERCR + 4438, (T >= 298.15) & (T < 6000.0))), ('CR', 'LIQUID'): Piecewise((2.37615e-21*T**7 - 11.420225*T + GHSERCR + 24339.955, (T >= 298.15) & (T < 2180.0)), (-50*T*log(T) + 335.616316*T - 16459.984, (T >= 2180.0) & (T < 6000.0))), ('CS', 'BCC_A2'): Piecewise((GHSERCS, (T >= 200.0) & (T < 2000.0))), ('CS', 'FCC_A1'): Piecewise((1.3*T + GHSERCS + 500, (T >= 200.0) & (T < 2000.0))), ('CS', 'HCP_A3'): Piecewise((2*T + GHSERCS + 500, (T >= 200.0) & (T < 2000.0))), ('CS', 'LIQUID'): Piecewise((-3.56867e-18*T**7 - 6.931035*T + GHSERCS + 2091.141, (T >= 200.0) & (T < 301.59)), (-6.961111*T + GHSERCS + 2099.779 - 7.8016e+21/T**9, (T >= 301.59) & (T < 2000.0))), ('CU', 'BCC_A2'): Piecewise((-1.255*T + GHSERCU + 4017, (T >= 298.15) & (T < 3200.0))), ('CU', 'FCC_A1'): Piecewise((GHSERCU, (T >= 298.15) & (T < 3200.0))), ('CU', 'HCP_A3'): Piecewise((0.2*T + GHSERCU + 600, (T >= 298.15) & (T < 3200.0))), ('CU', 'LIQUID'): Piecewise((-5.8489e-21*T**7 - 9.511904*T + GHSERCU + 12964.735, (T >= 298.15) & (T < 1357.77)), (-31.38*T*log(T) + 173.881484*T - 46.545, (T >= 1357.77) & (T < 3200.0))), ('DY', 'BCC_A2'): Piecewise((-0.566616181*T + GHSERDY + 1508.1802, (T >= 100.0) & (T < 1000.0)), (2.04076075e-5*T**3 - 0.224042148*T**2 + 391.515418*T*log(T) - 2868.04585*T + 327500.062 - 48652656.5/T, (T >= 1000.0) & (T < 1654.15)), (-50.208*T*log(T) + 291.409631*T - 33708.7949, (T >= 1654.15) & (T < 1685.15)), (-7.7437116e-8*T**3 + 0.0015254673*T**2 - 55.2811171*T*log(T) + 330.318068*T - 40775.4966 + 1776589.32/T, (T >= 1685.15) & (T < 3000.0))), ('DY', 'HCP_A3'): Piecewise((GHSERDY, (T >= 100.0) & (T < 3000.0))), ('DY', 'LIQUID'): Piecewise((-7.5443643*T + GHSERDY + 13196.6185, (T >= 100.0) & (T < 1000.0)), (1.76197799e-5*T**3 - 0.196153225*T**2 + 341.302578*T*log(T) - 2519.78614*T + 300126.971 - 43071677.5/T, (T >= 1000.0) & (T < 1685.15)), (-49.9151*T*log(T) + 282.205014*T - 21864.7344, (T >= 1685.15) & (T < 3000.0))), ('ER', 'HCP_A3'): Piecewise((GHSERER, (T >= 298.15) & (T < 3200.0))), ('ER', 'LIQUID'): Piecewise((-10.241846*T + GHSERER + 19382.102, (T >= 298.15) & (T < 500.0)), (1.316517e-6*T**3 - 0.014414687*T**2 - 12.0761776*T*log(T) + 0.355564*T + 17912.678 - 528122/T, (T >= 500.0) & (T < 1802.0)), (-38.702*T*log(T) + 187.623024*T + 747.131, (T >= 1802.0) & (T < 3200.0))), ('EU', 'BCC_A2'): Piecewise((GHSEREU, (T >= 298.15) & (T < 1900.0))), ('EU', 'LIQUID'): Piecewise((-7.175215*T + GHSEREU + 8382.505, (T >= 298.15) & (T < 400.0)), (5.452934e-6*T**3 - 0.036811218*T**2 + 4.3501554*T*log(T) - 103.688201*T + 10972.726 - 646908/T, (T >= 299.15) & (T < 1095.0)), (-38.11624*T*log(T) + 175.517247*T - 6890.641, (T >= 300.15) & (T < 1900.0))), ('FE', 'BCC_A2'): Piecewise((GHSERFE, (T >= 298.15) & (T < 6000.0))), ('FE', 'CBCC_A12'): Piecewise((GHSERFE + 4745, (T >= 298.15) & (T < 6000.0))), ('FE', 'CUB_A13'): Piecewise((GHSERFE + 3745, (T >= 298.15) & (T < 6000.0))), ('FE', 'FCC_A1'): Piecewise((0.00064*T**2 - 1.15*T*log(T) + 8.282*T + GHSERFE - 1462.4, (T >= 298.15) & (T < 1811.0)), (0.94001*T + GHSERFE - 1713.815 + 4.9251e+30/T**9, (T >= 1811.0) & (T < 6000.0))), ('FE', 'HCP_A3'): Piecewise((0.00064*T**2 - 1.15*T*log(T) + 12.591*T + GHSERFE - 3705.78, (T >= 298.15) & (T < 1811.0)), (5.24951*T + GHSERFE - 3957.199 + 4.9251e+30/T**9, (T >= 1811.0) & (T < 6000.0))), ('FE', 'LIQUID'): Piecewise((-3.67516e-21*T**7 - 6.55843*T + GHSERFE + 12040.17, (T >= 298.15) & (T < 1811.0)), (-46*T*log(T) + 291.302*T - 10838.83, (T >= 1811.0) & (T < 6000.0))), ('GA', 'BCC_A2'): Piecewise((-11.7*T + GHSERGA + 4500, (T >= 200.0) & (T < 4000.0))), ('GA', 'BCT_A5'): Piecewise((-9.8*T + GHSERGA + 3846, (T >= 200.0) & (T < 4000.0))), ('GA', 'FCC_A1'): Piecewise((-10.2*T + GHSERGA + 3800, (T >= 200.0) & (T < 4000.0))), ('GA', 'HCP_A3'): Piecewise((-9.5*T + GHSERGA + 4500, (T >= 200.0) & (T < 4000.0))), ('GA', 'LIQUID'): Piecewise((-7.0171e-17*T**7 - 18.073995*T + GHSERGA + 5491.298, (T >= 200.0) & (T < 302.91)), (-18.681147*T + GHSERGA + 5666.455 - 1.64547e+23/T**9, (T >= 302.91) & (T < 4000.0))), ('GA', 'ORTHORHOMBIC_GA'): Piecewise((GHSERGA, (T >= 200.0) & (T < 4000.0))), ('GA', 'TETRAGONAL_A6'): Piecewise((-10*T + GHSERGA + 3500, (T >= 200.0) & (T < 4000.0))), ('GD', 'BCC_A2'): Piecewise((1.00000001e-7*T*log(T) - 2.11184585*T + GHSERGD + 3233.80866, (T >= 200.0) & (T < 1000.0)), (1.17915728e-5*T**3 - 0.119550229*T**2 + 180.097094*T*log(T) - 1349.58873*T + 152792.743 - 22038836/T, (T >= 1000.0) & (T < 1508.15)), (-38.960425*T*log(T) + 202.222057*T - 15783.7618, (T >= 1508.15) & (T < 1586.15)), (-3.77570269e-8*T**3 + 0.000858222759*T**2 - 41.904333*T*log(T) + 224.817909*T - 19850.5562 + 995428.573/T, (T >= 1586.15) & (T < 3600.0))), ('GD', 'HCP_A3'): Piecewise((GHSERGD, (T >= 200.0) & (T < 3600.0))), ('GD', 'LIQUID'): Piecewise((-8.32179974*T + GHSERGD + 13060.0262, (T >= 200.0) & (T < 1000.0)), (1.06945505e-5*T**3 - 0.108247135*T**2 + 159.352082*T*log(T) - 1208.70685*T + 146262.037 - 19678357/T, (T >= 1000.0) & (T < 1508.15)), (-38.5075*T*log(T) + 192.336215*T - 5397.314, (T >= 1508.15) & (T < 3600.0))), ('GE', 'BCC_A2'): Piecewise((-23.5*T + GHSERGE + 34100, (T >= 298.15) & (T < 3200.0))), ('GE', 'DIAMOND_A4'): Piecewise((GHSERGE, (T >= 298.15) & (T < 3200.0))), ('GE', 'FCC_A1'): Piecewise((-22.3*T + GHSERGE + 36000, (T >= 298.15) & (T < 3200.0))), ('GE', 'HCP_A3'): Piecewise((-21.5*T + GHSERGE + 35000, (T >= 298.15) & (T < 3200.0))), ('GE', 'LIQUID'): Piecewise((8.56632e-21*T**7 - 30.687043*T + GHSERGE + 37141.49, (T >= 298.15) & (T < 900.0)), (8.56632e-21*T**7 - 30.687044*T + GHSERGE + 37141.489, (T >= 900.0) & (T < 1211.4)), (-27.6144*T*log(T) + 126.324186*T + 27243.473, (T >= 1211.4) & (T < 3200.0))), ('HF', 'BCC_A2'): Piecewise((-1.446e-10*T**4 + 8.71923e-7*T**3 - 0.004206605*T**2 - 22.8995*T*log(T) + 103.836026*T + 5370.703 - 22590/T, (T >= 298.15) & (T < 2506.0)), (1.3427829e-5*T**3 - 0.286857065*T**2 + 1087.61412*T*log(T) - 8624.20573*T + 1912456.77 - 610085091.0/T, (T >= 2506.0) & (T < 3000.0))), ('HF', 'FCC_A1'): Piecewise((-2.2*T + GHSERHF + 10000, (T >= 298.15) & (T < 3000.0))), ('HF', 'HCP_A3'): Piecewise((GHSERHF, (T >= 298.15) & (T < 3000.0))), ('HF', 'LIQUID'): Piecewise((-10.953093*T + GHSERHF + 27402.256, (T >= 298.15) & (T < 1000.0)), (1.376466e-6*T**3 - 0.021262021*T**2 + 12.116812*T*log(T) - 149.91739*T + 49731.499 - 4449699/T, (T >= 1000.0) & (T < 2506.0)), (-44*T*log(T) + 265.470523*T - 4247.217, (T >= 2506.0) & (T < 3000.0))), ('HG', 'LIQUID'): Piecewise((GHSERHG, (T >= 200.0) & (T < 2000.0))), ('HG', 'RHOMBO_A10'): Piecewise((-2.4555667e-5*T**3 + 0.01699705*T**2 - 28.847*T*log(T) + 123.274598*T - 10668.401 + 13330/T, (T >= 200.0) & (T < 234.32)), (-2.28298e-7*T**3 + 0.00107555*T**2 - 30.2091*T*log(T) + 135.928158*T - 11425.394 + 35545/T, (T >= 234.32) & (T < 2000.0))), ('HO', 'BCC_A2'): Piecewise((-2.060316*T + GHSERHO + 3731.229, (T >= 298.15) & (T < 600.0)), (-2.060316*T + GHSERHO + 3731.23, (T >= 600.0) & (T < 900.0)), (-2.060317*T + GHSERHO + 3731.229, (T >= 900.0) & (T < 1000.0)), (1.2168911e-5*T**3 - 0.13516576*T**2 + 218.937249*T*log(T) - 1635.74067*T + 185512.056 - 26729747/T, (T >= 1000.0) & (T < 1703.0)), (-48.116*T*log(T) + 272.946988*T - 28867.901, (T >= 1703.0) & (T < 1745.0)), (-1.287517e-6*T**3 + 0.025544089*T**2 - 134.793064*T*log(T) + 939.764197*T - 152754.148 + 32050889/T, (T >= 1745.0) & (T < 3000.0))), ('HO', 'HCP_A3'): Piecewise((GHSERHO, (T >= 298.15) & (T < 3000.0))), ('HO', 'LIQUID'): Piecewise((-9.992194*T + GHSERHO + 17262.172, (T >= 298.15) & (T < 1000.0)), (8.008222e-6*T**3 - 0.088196514*T**2 + 127.957778*T*log(T) - 994.683024*T + 124706.283 - 15727191/T, (T >= 1000.0) & (T < 1703.0)), (-43.932*T*log(T) + 230.793918*T - 9809.781, (T >= 1703.0) & (T < 3000.0))), ('IN', 'BCC_A2'): Piecewise((-0.8*T + GHSERIN + 800, (T >= 298.15) & (T < 3800.0))), ('IN', 'FCC_A1'): Piecewise((-0.1988*T + GHSERIN + 123, (T >= 298.15) & (T < 3800.0))), ('IN', 'HCP_A3'): Piecewise((-0.6868*T + GHSERIN + 533, (T >= 298.15) & (T < 3800.0))), ('IN', 'LIQUID'): Piecewise((-5.59058e-20*T**7 - 7.63686*T + GHSERIN + 3282.092, (T >= 298.15) & (T < 429.75)), (-7.640804*T + GHSERIN + 3283.706 - 3.53116e+22/T**9, (T >= 429.75) & (T < 3800.0))), ('IN', 'TETRAGONAL_A6'): Piecewise((GHSERIN, (T >= 298.15) & (T < 3800.0))), ('IN', 'TET_ALPHA1'): Piecewise((-0.16479*T + GHSERIN + 193, (T >= 298.15) & (T < 3800.0))), ('IR', 'BCC_A2'): Piecewise((-6.9*T + GHSERIR + 32000, (T >= 298.15) & (T < 4000.0))), ('IR', 'FCC_A1'): Piecewise((GHSERIR, (T >= 298.15) & (T < 4000.0))), ('IR', 'HCP_A3'): Piecewise((-0.6*T + GHSERIR + 4000, (T >= 298.15) & (T < 4000.0))), ('IR', 'LIQUID'): Piecewise((-6.312059*T + GHSERIR + 23455.244, (T >= 298.15) & (T < 1000.0)), (2.761831e-6*T**3 - 0.04638802*T**2 + 73.9517579*T*log(T) - 587.632815*T + 102217.789 - 13382612/T, (T >= 1000.0) & (T < 2719.0)), (-59.418*T*log(T) + 411.234043*T - 38347.217, (T >= 2719.0) & (T < 4000.0))), ('K', 'BCC_A2'): Piecewise((GHSERKK, (T >= 200.0) & (T < 2200.0))), ('K', 'FCC_A1'): Piecewise((1.3*T + GHSERKK + 50, (T >= 200.0) & (T < 2200.0))), ('K', 'HCP_A3'): Piecewise((2*T + GHSERKK + 50, (T >= 200.0) & (T < 2200.0))), ('K', 'LIQUID'): Piecewise((-9.44e-19*T**7 - 6.886859*T + GHSERKK + 2318.096, (T >= 200.0) & (T < 336.53)), (-6.902217*T + GHSERKK + 2323.019 - 1.19223e+22/T**9, (T >= 336.53) & (T < 2200.0))), ('LA', 'BCC_A2'): Piecewise((-5.25865e-7*T**3 - 0.004045175*T**2 - 21.7919*T*log(T) + 88.072353*T - 3952.161, (T >= 298.15) & (T < 800.0)), (4.9547989e-5*T**3 - 0.387295093*T**2 + 513.440708*T*log(T) - 3565.08252*T + 321682.673 - 36581228/T, (T >= 800.0) & (T < 1134.0)), (-39.5388*T*log(T) + 218.492988*T - 16377.894, (T >= 1134.0) & (T < 1193.0)), (-4.056395e-6*T**3 + 0.053968535*T**2 - 163.413074*T*log(T) + 1123.34397*T - 136609.91 + 21167204/T, (T >= 1193.0) & (T < 2000.0)), (-6.553756*T + GHSERLA + 7402.894, (T >= 2000.0) & (T < 4000.0))), ('LA', 'DHCP'): Piecewise((GHSERLA, (T >= 298.15) & (T < 4000.0))), ('LA', 'FCC_A1'): Piecewise((-5.25865e-7*T**3 - 0.004045175*T**2 - 21.7919*T*log(T) + 89.878761*T - 6109.797, (T >= 298.15) & (T < 1134.0)), (-3.066199e-6*T**3 + 0.042032405*T**2 - 139.346741*T*log(T) + 955.878375*T - 124598.976 + 20994153/T, (T >= 1134.0) & (T < 2000.0)), (-2.846081*T + GHSERLA + 3009.496, (T >= 2000.0) & (T < 4000.0))), ('LA', 'LIQUID'): Piecewise((2.93775e-6*T**3 - 0.020171603*T**2 - 11.0188191*T*log(T) + 18.23012*T + 5332.653 - 133541/T, (T >= 298.15) & (T < 1134.0)), (-34.3088*T*log(T) + 171.018431*T - 3942.004, (T >= 1134.0) & (T < 2000.0)), (-10.37164*T + GHSERLA + 11666.878, (T >= 2000.0) & (T < 4000.0))), ('LI', 'BCC_A2'): Piecewise((GHSERLI, (T >= 200.0) & (T < 3000.0))), ('LI', 'FCC_A1'): Piecewise((1.3*T + GHSERLI - 108, (T >= 200.0) & (T < 3000))), ('LI', 'HCP_A3'): Piecewise((2*T + GHSERLI - 154, (T >= 200.0) & (T < 3000.0))), ('LI', 'LIQUID'): Piecewise((-5.795621*T + GHSERLI + 2700.205, (T >= 200.0) & (T < 250.0)), (6.3955671e-5*T**3 - 0.182426463*T**2 + 61.6104424*T*log(T) - 362.187078*T + 12015.027 - 559968/T, (T >= 250.0) & (T < 453.6)), (-4.38058e-7*T**3 + 0.002633221*T**2 - 31.2283718*T*log(T) + 172.652183*T - 6057.31 - 102387/T, (T >= 453.6) & (T < 500.0)), (-6.626102*T + GHSERLI + 3005.684, (T >= 500.0) & (T < 3000.0))), ('LU', 'HCP_A3'): Piecewise((GHSERLU, (T >= 298.15) & (T < 3700.0))), ('LU', 'LIQUID'): Piecewise((-4.998883*T + GHSERLU + 12772.12, (T >= 298.15) & (T < 600.0)), (2.890636e-6*T**3 - 0.034238743*T**2 + 20.9392663*T*log(T) - 198.378793*T + 30389.863 - 2398650/T, (T >= 600.0) & (T < 1936.0)), (-47.9068*T*log(T) + 292.091104*T - 18994.687, (T >= 1936.0) & (T < 3700.0))), ('MG', 'BCC_A2'): Piecewise((-2.1*T + GHSERMG + 3100, (T >= 298.15) & (T < 3000.0))), ('MG', 'CBCC_A12'): Piecewise((-3.011*T + GHSERMG + 4602.4, (T >= 298.15) & (T < 3000.0))), ('MG', 'CUB_A13'): Piecewise((-3*T + GHSERMG + 5000, (T >= 298.15) & (T < 3000.0))), ('MG', 'FCC_A1'): Piecewise((-0.9*T + GHSERMG + 2600, (T >= 298.15) & (T < 3000.0))), ('MG', 'HCP_A3'): Piecewise((GHSERMG, (T >= 298.15) & (T < 3000.0))), ('MG', 'LIQUID'): Piecewise((-8.0176e-20*T**7 - 8.83693*T + GHSERMG + 8202.243, (T >= 298.15) & (T < 923.0)), (-34.3088*T*log(T) + 195.324057*T - 5439.869, (T >= 923.0) & (T < 3000.0))), ('MN', 'BCC_A2'): Piecewise((-0.00744271*T**2 - 23.7*T*log(T) + 127.85*T - 3235.3 + 60000/T, (T >= 298.15) & (T < 1519.0)), (-4.5605*T + GHSERMN + 5544.58 - 3.91695e+29/T**9, (T >= 1519.0) & (T < 2000.0))), ('MN', 'CBCC_A12'): Piecewise((GHSERMN, (T >= 298.15) & (T < 2000.0))), ('MN', 'CUB_A13'): Piecewise((-0.00583359*T**2 - 24.8785*T*log(T) + 135.995*T - 5800.4 + 70269/T, (T >= 298.15) & (T < 1519.0)), (-0.9715*T + GHSERMN + 442.65 + 2.310723e+30/T**9, (T >= 1519.0) & (T < 2000.0))), ('MN', 'FCC_A1'): Piecewise((-0.006*T**2 - 24.5177*T*log(T) + 131.884*T - 3439.3 + 69600/T, (T >= 298.15) & (T < 1519.0)), (-2.5984*T + GHSERMN + 2663.31 + 2.205113e+30/T**9, (T >= 1519.0) & (T < 2000.0))), ('MN', 'HCP_A3'): Piecewise((-0.006*T**2 - 24.5177*T*log(T) + 133.007*T - 4439.3 + 69600/T, (T >= 298.15) & (T < 1519.0)), (-1.4754*T + GHSERMN + 1663.31 + 2.205113e+30/T**9, (T >= 1519.0) & (T < 2000.0))), ('MN', 'LIQUID'): Piecewise((-4.41929e-21*T**7 - 12.6208*T + GHSERMN + 17859.91, (T >= 298.15) & (T < 1519.0)), (-48*T*log(T) + 299.036*T - 9993.9, (T >= 1519.0) & (T < 2000.0))), ('MO', 'BCC_A2'): Piecewise((GHSERMO, (T >= 298.15) & (T < 5000.0))), ('MO', 'FCC_A1'): Piecewise((0.63*T + GHSERMO + 15200, (T >= 298.15) & (T < 5000.0))), ('MO', 'HCP_A3'): Piecewise((GHSERMO + 11550, (T >= 298.15) & (T < 5000.0))), ('MO', 'LIQUID'): Piecewise((4.24519e-22*T**7 - 14.694912*T + GHSERMO + 41831.347, (T >= 298.15) & (T < 2896.0)), (-42.63829*T*log(T) + 271.6697*T + 3538.963, (T >= 2896.0) & (T < 5000.0))), ('N', 'LIQUID'): Piecewise((59.02*T + GHSERNN + 29950, (T >= 298.15) & (T < 6000.0))), ('N2', 'GAS'): Piecewise((2*GHSERNN, (T >= 298.15) & (T < 6000.0))), ('NA', 'BCC_A2'): Piecewise((GHSERNA, (T >= 200.0) & (T < 2300.0))), ('NA', 'FCC_A1'): Piecewise((1.3*T + GHSERNA - 50, (T >= 200.0) & (T < 2300.0))), ('NA', 'HCP_A3'): Piecewise((2*T + GHSERNA - 104, (T >= 200.0) & (T < 2300.0))), ('NA', 'LIQUID'): Piecewise((-2.76132e-18*T**7 - 6.95218*T + GHSERNA + 2581.02, (T >= 200.0) & (T < 370.87)), (-7.032656*T + GHSERNA + 2609.444 - 1.65071e+23/T**9, (T >= 370.87) & (T < 2300.0))), ('NB', 'BCC_A2'): Piecewise((GHSERNB, (T >= 298.15) & (T < 6000.0))), ('NB', 'FCC_A1'): Piecewise((1.7*T + GHSERNB + 13500, (T >= 298.15) & (T < 6000.0))), ('NB', 'HCP_A3'): Piecewise((2.4*T + GHSERNB + 10000, (T >= 298.15) & (T < 6000.0))), ('NB', 'LIQUID'): Piecewise((-3.06098e-23*T**7 - 10.816418*T + GHSERNB + 29781.555, (T >= 298.15) & (T < 2750.0)), (-41.77*T*log(T) + 260.756148*T - 7499.398, (T >= 2750.0) & (T < 6000.0))), ('ND', 'BCC_A2'): Piecewise((-0.546281*T + GHSERND + 1437.295, (T >= 298.15) & (T < 400.0)), (7.287217e-6*T**3 - 0.050479*T**2 + 14.9956777*T*log(T) - 153.033976*T + 7312.2 - 831810/T, (T >= 400.0) & (T < 1128.0)), (-44.5596*T*log(T) + 239.677322*T - 18030.266, (T >= 1128.0) & (T < 1289.0)), (1.2408421e-5*T**3 - 0.156030778*T**2 + 311.409193*T*log(T) - 2363.9199*T + 334513.017 - 64319604/T, (T >= 1289.0) & (T < 1800.0))), ('ND', 'DHCP'): Piecewise((GHSERND, (T >= 298.15) & (T < 1800.0))), ('ND', 'FCC_A1'): Piecewise((GHSERND + 500, (T >= 298.15) & (T < 1128.0)), (3.00000011e-7*T*log(T) + 9.99999884e-7*T + GHSERND + 500, (T >= 1128.0) & (T < 1799.0)), (GHSERND + 500, (T >= 1799.0) & (T < 1800.0))), ('ND', 'LIQUID'): Piecewise((-1.585076*T + GHSERND + 5051.743, (T >= 298.15) & (T < 300.0)), (6.860782e-6*T**3 - 0.046955463*T**2 + 5.357301*T*log(T) - 86.593963*T + 5350.01 - 374380/T, (T >= 300.0) & (T < 1128.0)), (-48.7854*T*log(T) + 268.625903*T - 16335.232, (T >= 1128.0) & (T < 1799.0)), (-7.631185*T + GHSERND + 9407.099, (T >= 1799.0) & (T < 1800.0))), ('NI', 'BCC_A2'): Piecewise((-3.556*T + GHSERNI + 8715.084, (T >= 298.15) & (T < 3000.0))), ('NI', 'CBCC_A12'): Piecewise((GHSERNI + 3556, (T >= 298.15) & (T < 3000.0))), ('NI', 'CUB_A13'): Piecewise((GHSERNI + 2092, (T >= 298.15) & (T < 3000.0))), ('NI', 'FCC_A1'): Piecewise((GHSERNI, (T >= 298.15) & (T < 3000.0))), ('NI', 'HCP_A3'): Piecewise((1.255*T + GHSERNI + 1046, (T >= 298.15) & (T < 3000.0))), ('NI', 'LIQUID'): Piecewise((-3.82318e-21*T**7 - 9.397*T + GHSERNI + 16414.686, (T >= 298.15) & (T < 1728.0)), (-43.1*T*log(T) + 268.598*T - 9549.775, (T >= 1728.0) & (T < 3000.0))), ('NP', 'BCC_A2'): Piecewise((5.14743e-7*T**3 - 0.00251865*T**2 - 35.177*T*log(T) + 174.911817*T - 3224.664 + 302225/T, (T >= 298.15) & (T < 856.0)), (-36.401*T*log(T) + 180.807719*T - 2366.486, (T >= 856.0) & (T < 917.0)), (2.707217e-6*T**3 - 0.0343483*T**2 + 30.7734*T*log(T) - 297.324358*T + 50882.281 - 7500100/T, (T >= 917.0) & (T < 1999.0)), (-1.007779*T + GHSERNP - 2786.95, (T >= 1999.0) & (T < 4000.0))), ('NP', 'LIQUID'): Piecewise((2.941883e-6*T**3 - 0.0163885*T**2 - 31.229*T*log(T) + 160.024959*T - 4627.18 + 439915/T, (T >= 298.15) & (T < 917.0)), (-45.3964*T*log(T) + 247.671446*T - 7415.255, (T >= 917.0) & (T < 1799.0)), (-8.10942*T + GHSERNP + 4677.481, (T >= 1799.0) & (T < 4000.0))), ('NP', 'ORTHO_AC'): Piecewise((GHSERNP, (T >= 298.15) & (T < 4000.0))), ('NP', 'TETRAG_AD'): Piecewise((4.98465e-6*T**3 - 0.0161186*T**2 - 34.11*T*log(T) + 183.829213*T - 10157.32 + 532825/T, (T >= 298.15) & (T < 555.0)), (-39.33*T*log(T) + 207.01896*T - 7873.688, (T >= 555.0) & (T < 856.0)), (1.52726e-6*T**3 - 0.01921045*T**2 - 3.4265*T*log(T) - 46.64846*T + 19027.98 - 3564640/T, (T >= 856.0) & (T < 1999.0)), (0.926171*T + GHSERNP - 3978.084, (T >= 1999.0) & (T < 4000.0))), ('O', 'BCC_A2'): Piecewise((GHSEROO + 30000, (T >= 298.15) & (T < 6000.0))), ('O', 'FCC_A1'): Piecewise((GHSEROO + 30000, (T >= 298.15) & (T < 6000.0))), ('O', 'LIQUID'): Piecewise((31.44*T + GHSEROO - 2648.9, (T >= 298.15) & (T < 6000.0))), ('O2', 'GAS'): Piecewise((2*GHSEROO, (T >= 298.15) & (T < 6000.0))), ('OS', 'BCC_A2'): Piecewise((-9*T + GHSEROS + 43500, (T >= 298.15) & (T < 5500.0))), ('OS', 'FCC_A1'): Piecewise((-2.5*T + GHSEROS + 13000, (T >= 298.15) & (T < 5500.0))), ('OS', 'HCP_A3'): Piecewise((GHSEROS, (T >= 298.15) & (T < 5500.0))), ('OS', 'LIQUID'): Piecewise((-8.473743*T + GHSEROS + 36460.17, (T >= 298.15) & (T < 1000.0)), (1.014279e-6*T**3 - 0.020464464*T**2 + 19.9382156*T*log(T) - 198.324341*T + 68715.318 - 6237261/T, (T >= 1000.0) & (T < 3306.0)), (-50*T*log(T) + 336.874526*T - 15903.192, (T >= 3306.0) & (T < 5500.0))), ('P', 'BCC_A2'): Piecewise((-2.418867e-6*T**3 + 0.0034121*T**2 - 25.55*T*log(T) + 135.412002*T + 18792.241 + 160095/T, (T >= 250.0) & (T < 500.0)), (3.93917e-7*T**3 - 0.00957685*T**2 - 14.368*T*log(T) + 64.411737*T + 23045.079 - 141375/T, (T >= 500.0) & (T < 852.35)), (-6.651929e-6*T**3 + 0.067272364*T**2 - 149.449556*T*log(T) + 1012.76962*T - 74639.613 + 12495943/T, (T >= 852.35) & (T < 1500.0)), (4.70235*T + GHSERPP + 28337.756, (T >= 1500.0) & (T < 3000.0))), ('P', 'FCC_A1'): Piecewise((-2.418867e-6*T**3 + 0.0034121*T**2 - 25.55*T*log(T) + 135.534002*T + 10842.441 + 160095/T, (T >= 250.0) & (T < 500.0)), (3.93917e-7*T**3 - 0.00957685*T**2 - 14.368*T*log(T) + 64.533737*T + 15095.279 - 141375/T, (T >= 500.0) & (T < 852.35)), (-6.651929e-6*T**3 + 0.067272364*T**2 - 149.449556*T*log(T) + 1012.89162*T - 82589.413 + 12495943/T, (T >= 852.35) & (T < 1500.0)), (4.82435*T + GHSERPP + 20387.956, (T >= 1500.0) & (T < 3000.0))), ('P', 'LIQUID'): Piecewise((3.9049371e-5*T**3 - 0.002898936*T**2 - 70.7440584*T*log(T) + 434.930931*T - 26316.111 + 1141147/T, (T >= 250.0) & (T < 317.3)), (-26.326*T*log(T) + 133.291873*T - 7232.449, (T >= 317.3) & (T < 1000.0)), (-2.584958*T + GHSERPP + 860.626, (T >= 1000.0) & (T < 3000.0))), ('P', 'RED_P'): Piecewise((-2.418867e-6*T**3 + 0.0034121*T**2 - 25.55*T*log(T) + 148.672002*T - 25976.559 + 160095/T, (T >= 250.0) & (T < 500.0)), (3.93917e-7*T**3 - 0.00957685*T**2 - 14.368*T*log(T) + 77.671737*T - 21723.721 - 141375/T, (T >= 500.0) & (T < 852.35)), (-6.651929e-6*T**3 + 0.067272364*T**2 - 149.449556*T*log(T) + 1026.02962*T - 119408.413 + 12495943/T, (T >= 852.35) & (T < 1500.0)), (17.96235*T + GHSERPP - 16431.044, (T >= 1500.0) & (T < 3000.0))), ('P', 'WHITE_P'): Piecewise((GHSERPP, (T >= 250.0) & (T < 3000.0))), ('PA', 'BCC_A2'): Piecewise((1.337387e-6*T**3 - 0.01322095*T**2 - 18.203*T*log(T) + 71.957409*T + 781.847 - 101600/T, (T >= 298.15) & (T < 1443.0)), (-39.748*T*log(T) + 220.478519*T - 10955.948, (T >= 1443.0) & (T < 1845.0)), (3.343867e-6*T**3 - 0.0637105*T**2 + 171.108*T*log(T) - 1397.15052*T + 284495.194 - 74992000/T, (T >= 1845.0) & (T < 2710.0)), (-2.212452*T + GHSERPA + 2064.512, (T >= 2710.0) & (T < 4000.0))), ('PA', 'BCT_AA'): Piecewise((GHSERPA, (T >= 298.15) & (T < 4000.0))), ('PA', 'LIQUID'): Piecewise((-9.544*T + GHSERPA + 16181.1, (T >= 298.15) & (T < 1088.0)), (3.075017e-6*T**3 - 0.0372478*T**2 + 30.336*T*log(T) - 278.789916*T + 48013.96 - 5064250/T, (T >= 1088.0) & (T < 1845.0)), (-47.2792*T*log(T) + 277.955437*T - 12508.174, (T >= 1845.0) & (T < 2176.0)), (-10.353202*T + GHSERPA + 17441.509, (T >= 2176.0) & (T < 4000.0))), ('PB', 'BCC_A2'): Piecewise((-1.1*T + GHSERPB + 2400, (T >= 298.15) & (T < 2100.0))), ('PB', 'BCT_A5'): Piecewise((3.52*T + GHSERPB + 489, (T >= 298.15) & (T < 2100.0))), ('PB', 'FCC_A1'): Piecewise((GHSERPB, (T >= 298.15) & (T < 2100.0))), ('PB', 'HCP_A3'): Piecewise((T + GHSERPB + 300, (T >= 298.15) & (T < 2100.0))), ('PB', 'LIQUID'): Piecewise((-6.019e-19*T**7 - 7.750683*T + GHSERPB + 4672.124, (T >= 298.15) & (T < 600.61)), (-8.067136*T + GHSERPB + 4853.137 - 8.05448e+25/T**9, (T >= 600.61) & (T < 1200.0)), (-8.067135*T + GHSERPB + 4853.137 - 8.05448e+25/T**9, (T >= 1200.0) & (T < 2100.0))), ('PB', 'RHOMBOHEDRAL_A7'): Piecewise((3.52*T + GHSERPB + 4900, (T >= 298.15) & (T < 2100.0))), ('PB', 'TETRAGONAL_A6'): Piecewise((-2.4395e-7*T**3 - 0.003637462*T**2 - 24.5639065*T*log(T) + 105.253344*T - 7176.855, (T >= 298.15) & (T < 600.61)), (0.001567619*T**2 - 32.5310793*T*log(T) + 157.796282*T - 10057.865 + 8.05448e+25/T**9, (T >= 600.61) & (T < 1200.0)), (2.1489e-5*T**2 - 0.0396834*T*log(T) + 3.5531*T + GHSERPB + 473.23, (T >= 1200.0) & (T < 2100.0))), ('PB', 'TET_ALPHA1'): Piecewise((-2.4395e-7*T**3 - 0.003656801*T**2 - 24.5639065*T*log(T) + 102.153384*T - 7466.885, (T >= 298.15) & (T < 600.61)), (0.001548279*T**2 - 32.5310793*T*log(T) + 154.696322*T - 10347.895 + 8.05448e+25/T**9, (T >= 600.61) & (T < 1200.0)), (2.148e-6*T**2 - 0.0396834*T*log(T) + 0.45314*T + GHSERPB + 183.2, (T >= 1200.0) & (T < 2100.0))), ('PD', 'BCC_A2'): Piecewise((-1.8*T + GHSERPD + 10500, (T >= 298.15) & (T < 4000.0))), ('PD', 'FCC_A1'): Piecewise((GHSERPD, (T >= 298.15) & (T < 4000.0))), ('PD', 'HCP_A3'): Piecewise((0.1*T + GHSERPD + 2000, (T >= 298.15) & (T < 4000.0))), ('PD', 'LIQUID'): Piecewise((-5.112162*T + GHSERPD + 11506.758, (T >= 298.15) & (T < 600.0)), (2.430675e-6*T**3 - 0.027266568*T**2 + 10.8922031*T*log(T) - 116.918419*T + 23405.778 - 1853674/T, (T >= 600.0) & (T < 1828.0)), (-41.17*T*log(T) + 251.416903*T - 12373.637, (T >= 1828.0) & (T < 4000.0))), ('PR', 'BCC_A2'): Piecewise((3.542468e-6*T**3 - 0.02284377*T**2 - 13.7470527*T*log(T) + 28.274853*T - 2863.651 - 87486/T, (T >= 298.15) & (T < 1068.0)), (-38.451*T*log(T) + 188.657121*T - 11985.919, (T >= 1068.0) & (T < 1204.0)), (1.76214e-7*T**3 - 0.004106833*T**2 - 26.6824313*T*log(T) + 100.826281*T + 953.224 - 2473024/T, (T >= 1204.0) & (T < 3800.0))), ('PR', 'DHCP'): Piecewise((GHSERPR, (T >= 298.15) & (T < 3800.0))), ('PR', 'LIQUID'): Piecewise((5.427467e-6*T**3 - 0.035119723*T**2 - 4.7344931*T*log(T) - 29.099465*T + 3848.961 - 207406/T, (T >= 298.15) & (T < 1068.0)), (-42.9697*T*log(T) + 219.508805*T - 10539.574, (T >= 1068.0) & (T < 1204.0)), (-8.17635*T + GHSERPR + 9475.104, (T >= 1204.0) & (T < 3800.0))), ('PT', 'BCC_A2'): Piecewise((-2.4*T + GHSERPT + 15000, (T >= 298.15) & (T < 4000.0))), ('PT', 'FCC_A1'): Piecewise((GHSERPT, (T >= 298.15) & (T < 4000.0))), ('PT', 'HCP_A3'): Piecewise((0.1*T + GHSERPT + 2500, (T >= 298.15) & (T < 4000.0))), ('PT', 'LIQUID'): Piecewise((-9.275183*T + GHSERPT + 20114.016, (T >= 298.15) & (T < 600.0)), (9.31516e-7*T**3 - 0.011551507*T**2 - 12.3403769*T*log(T) + 32.94182*T + 19023.491 - 601426/T, (T >= 600.0) & (T < 2041.5)), (-36.5*T*log(T) + 205.858962*T + 1404.468, (T >= 2041.5) & (T < 4000.0))), ('PU', 'ALPHA_PU'): Piecewise((GHSERPU, (T >= 298.15) & (T < 3000.0))), ('PU', 'BCC_A2'): Piecewise((2.061667e-6*T**3 - 0.009105*T**2 - 27.094*T*log(T) + 116.603882*T - 1358.984 + 20863/T, (T >= 298.15) & (T < 745.0)), (-33.72*T*log(T) + 156.878957*T - 2890.817, (T >= 745.0) & (T < 956.0)), (1.426922e-6*T**3 - 0.02023305*T**2 + 6.921*T*log(T) - 132.788248*T + 29313.619 - 4469245/T, (T >= 956.0) & (T < 2071.0)), (-5.539698*T + GHSERPU - 938.429, (T >= 2071.0) & (T < 3000.0))), ('PU', 'BETA_PU'): Piecewise((-0.00653*T**2 - 27.416*T*log(T) + 123.249151*T - 4873.654, (T >= 298.15) & (T < 679.5)), (1.524942e-6*T**3 - 0.0154772*T**2 - 15.7351*T*log(T) + 43.566585*T + 2435.094 - 864940/T, (T >= 679.5) & (T < 1464.0)), (-4.739938*T + GHSERPU + 503.094, (T >= 1464.0) & (T < 3000.0))), ('PU', 'FCC_A1'): Piecewise((-0.0054035*T**2 - 28.4781*T*log(T) + 127.586536*T - 3920.781, (T >= 298.15) & (T < 990.0)), (1.524942e-6*T**3 - 0.0154772*T**2 - 15.7351*T*log(T) + 41.52572*T + 3528.208 - 864940/T, (T >= 990.0) & (T < 1464.0)), (-6.780803*T + GHSERPU + 1596.208, (T >= 1464.0) & (T < 3000.0))), ('PU', 'GAMMA_PU'): Piecewise((-2.8103833e-5*T**3 + 0.0816415*T**2 - 77.5802*T*log(T) + 419.402655*T - 16766.303 + 574825/T, (T >= 298.15) & (T < 487.9)), (-0.0114795*T**2 - 22.0233*T*log(T) + 88.325069*T - 2942.77, (T >= 487.9) & (T < 593.9)), (6.92887e-7*T**3 - 0.0070383*T**2 - 32.3405*T*log(T) + 160.314641*T - 9336.967 + 630600/T, (T >= 593.9) & (T < 1179.0)), (-6.829936*T + GHSERPU + 2026.406, (T >= 1179.0) & (T < 3000.0))), ('PU', 'LIQUID'): Piecewise((-12.5133*T + GHSERPU + 6608.1, (T >= 298.15) & (T < 3000.0))), ('PU', 'TETRAGONAL_A6'): Piecewise((5.166667e-6*T**3 - 0.024006*T**2 - 16.43*T*log(T) + 54.586547*T - 496.178 - 158470/T, (T >= 298.15) & (T < 736.0)), (-35.56*T*log(T) + 173.35008*T - 6122.307, (T >= 736.0) & (T < 757.0)), (6.59882e-7*T**3 - 0.00937295*T**2 - 19.756*T*log(T) + 63.890352*T + 3982.078 - 1112565/T, (T >= 757.0) & (T < 2157.0)), (-4.905143*T + GHSERPU - 738.383, (T >= 2157.0) & (T < 3000.0))), ('RB', 'BCC_A2'): Piecewise((GHSERRB, (T >= 200.0) & (T < 2100.0))), ('RB', 'FCC_A1'): Piecewise((1.3*T + GHSERRB + 200, (T >= 200.0) & (T < 2100.0))), ('RB', 'HCP_A3'): Piecewise((2*T + GHSERRB + 200, (T >= 200.0) & (T < 2100.0))), ('RB', 'LIQUID'): Piecewise((1.44078e-17*T**7 - 7.110486*T + GHSERRB + 2217.552, (T >= 200.0) & (T < 312.46)), (-6.960316*T + GHSERRB + 2172.865 + 5.55029e+22/T**9, (T >= 312.46) & (T < 900.0)), (-6.960316*T + GHSERRB + 2172.866 + 5.55029e+22/T**9, (T >= 900.0) & (T < 1600.0)), (-6.960315*T + GHSERRB + 2172.865 + 5.55029e+22/T**9, (T >= 1600.0) & (T < 2100.0))), ('RE', 'BCC_A2'): Piecewise((-6*T + GHSERRE + 29200, (T >= 298.15) & (T < 6000.0))), ('RE', 'FCC_A1'): Piecewise((-1.5*T + GHSERRE + 11000, (T >= 298.15) & (T < 6000.0))), ('RE', 'HCP_A3'): Piecewise((GHSERRE, (T >= 298.15) & (T < 6000.0))), ('RE', 'LIQUID'): Piecewise((-6.34538*T + GHSERRE + 23820.883, (T >= 298.15) & (T < 1200.0)), (-6.345379*T + GHSERRE + 23820.883, (T >= 1200.0) & (T < 2000.0)), (3.92854e-6*T**3 - 0.08939817*T**2 + 314.178898*T*log(T) - 2527.83846*T + 568842.665 - 163100987.0/T, (T >= 2000.0) & (T < 3458.0)), (-49.519*T*log(T) + 335.723691*T - 39044.888, (T >= 3458.0) & (T < 5000.0)), (-11.274151*T + GHSERRE + 39519.408, (T >= 5000.0) & (T < 6000.0))), ('RH', 'BCC_A2'): Piecewise((-4.7*T + GHSERRH + 19000, (T >= 298.15) & (T < 2500.0))), ('RH', 'FCC_A1'): Piecewise((GHSERRH, (T >= 298.15) & (T < 2500.0))), ('RH', 'HCP_A3'): Piecewise((-0.5*T + GHSERRH + 3000, (T >= 298.15) & (T < 2500.0))), ('RH', 'LIQUID'): Piecewise((-6.92133*T + GHSERRH + 19092.91, (T >= 298.15) & (T < 700.0)), (2.100572e-6*T**3 - 0.028665357*T**2 + 15.6492377*T*log(T) - 147.926418*T + 35898.508 - 2638940/T, (T >= 700.0) & (T < 2237.0)), (-50.58456*T*log(T) + 332.974832*T - 18208.54, (T >= 2237.0) & (T < 2450.0)), (-11.915063*T + GHSERRH + 26654.949, (T >= 2450.0) & (T < 2500.0))), ('RU', 'BCC_A2'): Piecewise((-6.2*T + GHSERRU + 26500, (T >= 298.15) & (T < 4500.0))), ('RU', 'FCC_A1'): Piecewise((-2.4*T + GHSERRU + 12500, (T >= 298.15) & (T < 4500.0))), ('RU', 'HCP_A3'): Piecewise((GHSERRU, (T >= 298.15) & (T < 4500.0))), ('RU', 'LIQUID'): Piecewise((-8.398748*T + GHSERRU + 27480.616, (T >= 298.15) & (T < 800.0)), (1.667839e-6*T**3 - 0.026524167*T**2 + 19.539341*T*log(T) - 179.818561*T + 50827.232 - 3861125/T, (T >= 800.0) & (T < 2607.0)), (-51.8816*T*log(T) + 349.673561*T - 17161.807, (T >= 2607.0) & (T < 2740.0)), (-14.808753*T + GHSERRU + 38606.497, (T >= 2740.0) & (T < 4500.0))), ('S', 'BCC_A2'): Piecewise((GHSERSS + 105000, (T >= 298.15) & (T < 1300.0))), ('S', 'FCC_A1'): Piecewise((GHSERSS + 105000, (T >= 298.15) & (T < 1300.0))), ('S', 'LIQUID'): Piecewise((-2.4942e-7*T**3 - 0.018629*T**2 - 15.504*T*log(T) + 77.905686*T - 4001.549 - 113945/T, (T >= 298.15) & (T < 388.36)), (-0.0102214167*T**3 + 32.79275*T**2 - 19762.4*T*log(T) + 118449.601*T - 5285183.35 + 264673500.0/T, (T >= 388.36) & (T < 428.15)), (-0.0529973333*T**3 + 135.3045*T**2 - 57607.3*T*log(T) + 319914.094*T - 8174995.23, (T >= 428.15) & (T < 432.25)), (-0.00101380333*T**3 + 2.845035*T**2 - 1371.85*T*log(T) + 7758.85593*T - 219408.801, (T >= 432.25) & (T < 453.15)), (5.18835e-5*T**3 - 0.2531915*T**2 + 202.958*T*log(T) - 1336.35027*T + 92539.872 - 8202200/T, (T >= 453.15) & (T < 717.0)), (-32*T*log(T) + 176.37082*T - 6889.972, (T >= 717.0) & (T < 1300.0))), ('S', 'MONOCLINIC'): Piecewise((-0.0101215*T**2 - 17.318*T*log(T) + 89.000772*T - 5701.485, (T >= 298.15) & (T < 388.36)), (1.118079e-6*T**3 - 0.008604142*T**2 - 21.1094347*T*log(T) + 114.512564*T - 7435.888 + 120740/T, (T >= 388.36) & (T < 1300.0))), ('S', 'ORTHORHOMBIC_S'): Piecewise((GHSERSS, (T >= 298.15) & (T < 1300.0))), ('SB', 'BCC_A2'): Piecewise((-15.1*T + GHSERSB + 19874, (T >= 298.15) & (T < 2000.0))), ('SB', 'BCT_A5'): Piecewise((-8*T + GHSERSB + 13000, (T >= 298.15) & (T < 2000.0))), ('SB', 'FCC_A1'): Piecewise((-13.7*T + GHSERSB + 19874, (T >= 298.15) & (T < 2000.0))), ('SB', 'HCP_A3'): Piecewise((-13*T + GHSERSB + 19874, (T >= 298.15) & (T < 2000.0))), ('SB', 'LIQUID'): Piecewise((-1.74847e-20*T**7 - 21.923164*T + GHSERSB + 19822.328, (T >= 298.15) & (T < 903.78)), (-31.38*T*log(T) + 147.455986*T + 8175.359, (T >= 903.78) & (T < 2000.0))), ('SB', 'RHOMBOHEDRAL_A7'): Piecewise((GHSERSB, (T >= 298.15) & (T < 2000.0))), ('SC', 'BCC_A2'): Piecewise((-1.024135*T + GHSERSC + 1979.728, (T >= 298.15) & (T < 1000.0)), (1.5637371e-5*T**3 - 0.167120107*T**2 + 276.76664*T*log(T) - 2004.05469*T + 230161.408 - 33783257/T, (T >= 1000.0) & (T < 1608.0)), (-44.2249*T*log(T) + 283.642312*T - 25928.011, (T >= 1608.0) & (T < 2000.0)), (-2.832026*T + GHSERSC + 4587.235, (T >= 2000.0) & (T < 3200.0))), ('SC', 'HCP_A3'): Piecewise((GHSERSC, (T >= 298.15) & (T < 3200.0))), ('SC', 'LIQUID'): Piecewise((2.13106e-6*T**3 - 0.020636524*T**2 - 10.7967803*T*log(T) + 45.427539*T + 6478.66 - 158106/T, (T >= 298.15) & (T < 1608.0)), (-44.2249*T*log(T) + 275.871695*T - 11832.111, (T >= 1608.0) & (T < 2000.0)), (-10.602643*T + GHSERSC + 18683.135, (T >= 2000.0) & (T < 3200.0))), ('SE', 'HEXAGONAL_A8'): Piecewise((GHSERSE, (T >= 298.15) & (T < 1000.0))), ('SE', 'LIQUID'): Piecewise((0.000119219297*T**3 - 0.390268991*T**2 + 194.107439*T*log(T) - 1178.28824*T + 50533.347 - 2224398/T, (T >= 298.15) & (T < 494.0)), (-35.1456*T*log(T) + 183.72559*T - 5228.304, (T >= 494.0) & (T < 800.0)), (-14.044576*T + GHSERSE + 6965.166, (T >= 800.0) & (T < 1000.0))), ('SI', 'BCC_A2'): Piecewise((-22.5*T + GHSERSI + 47000, (T >= 298.15) & (T < 3600.0))), ('SI', 'CBCC_A12'): Piecewise((-20.377*T + GHSERSI + 50208, (T >= 298.15) & (T < 3600.0))), ('SI', 'CUB_A13'): Piecewise((-20.377*T + GHSERSI + 47279, (T >= 298.15) & (T < 3600.0))), ('SI', 'DIAMOND_A4'): Piecewise((GHSERSI, (T >= 298.15) & (T < 3600.0))), ('SI', 'FCC_A1'): Piecewise((-21.8*T + GHSERSI + 51000, (T >= 298.15) & (T < 3600.0))), ('SI', 'HCP_A3'): Piecewise((-20.8*T + GHSERSI + 49200, (T >= 298.15) & (T < 3600.0))), ('SI', 'LIQUID'): Piecewise((2.09307e-21*T**7 - 30.099439*T + GHSERSI + 50696.36, (T >= 298.15) & (T < 1687.0)), (-27.196*T*log(T) + 137.722298*T + 40370.523, (T >= 1687.0) & (T < 3600.0))), ('SM', 'BCC_A2'): Piecewise((3.579527e-6*T**3 - 0.025446016*T**2 - 16.9298494*T*log(T) + 55.972523*T - 4368.72 + 94209/T, (T >= 298.15) & (T < 1190.0)), (-46.9445*T*log(T) + 253.121044*T - 15957.862, (T >= 1190.0) & (T < 1345.0)), (3.329865e-6*T**3 - 0.047314968*T**2 + 71.6856914*T*log(T) - 624.680805*T + 111191.653 - 24870276/T, (T >= 1345.0) & (T < 2100.0))), ('SM', 'LIQUID'): Piecewise((4.544272e-6*T**3 - 0.032418177*T**2 - 11.6968284*T*log(T) + 20.117456*T + 3468.783 + 23528/T, (T >= 298.15) & (T < 1190.0)), (-50.208*T*log(T) + 273.487076*T - 11728.229, (T >= 1190.0) & (T < 1345.0)), (-8.707299*T + GHSERSM + 11327.85, (T >= 1345.0) & (T < 2100.0))), ('SM', 'RHOMB'): Piecewise((GHSERSM, (T >= 298.15) & (T < 2100.0))), ('SN', 'BCC_A2'): Piecewise((-6*T + GHSERSN + 4400, (T >= 100.0) & (T < 3000.0))), ('SN', 'BCT_A5'): Piecewise((GHSERSN, (T >= 100.0) & (T < 3000.0))), ('SN', 'DIAMOND_A4'): Piecewise((2.7288e-6*T**3 - 0.00813975*T**2 - 22.972*T*log(T) + 114.007785*T - 9579.608 + 25615/T, (T >= 100.0) & (T < 298.15)), (1.784447e-6*T**3 - 0.008575282*T**2 - 21.5750771*T*log(T) + 104.84654*T - 9063.001 - 2544/T, (T >= 298.15) & (T < 800.0)), (-28.4512*T*log(T) + 147.396535*T - 10909.351, (T >= 800.0) & (T < 3000.0))), ('SN', 'FCC_A1'): Piecewise((3.121167e-6*T**3 - 0.0188702*T**2 - 15.961*T*log(T) + 56.983315*T - 345.135 - 61960/T, (T >= 100.0) & (T < 250.0)), (-8.46*T + GHSERSN + 5510, (T >= 250.0) & (T < 3000.0))), ('SN', 'HCP_A3'): Piecewise((-4.4*T + GHSERSN + 3900, (T >= 100.0) & (T < 3000.0))), ('SN', 'LIQUID'): Piecewise((1.47031e-18*T**7 - 14.087767*T + GHSERSN + 7103.092, (T >= 100.0) & (T < 505.08)), (-13.814383*T + GHSERSN + 6971.586 + 1.2307e+25/T**9, (T >= 505.08) & (T < 800.0)), (-28.4512*T*log(T) + 125.182498*T - 1285.372, (T >= 800.0) & (T < 3000.0))), ('SN', 'RHOMBOHEDRAL_A7'): Piecewise((GHSERSN + 2035, (T >= 100.0) & (T < 3000.0))), ('SR', 'BCC_A2'): Piecewise((2.2965e-7*T**3 - 0.003126762*T**2 - 25.6708365*T*log(T) + 116.583654*T - 6779.234 + 27649/T, (T >= 298.15) & (T < 820.0)), (-1.7895e-8*T**3 - 0.0019493*T**2 - 26.57*T*log(T) + 122.067301*T - 6970.594 + 16495/T, (T >= 820.0) & (T < 1050.0)), (5.20221e-7*T**3 - 0.009539908*T**2 - 9.7788593*T*log(T) + 0.423037*T + 8168.357 - 2414794/T, (T >= 1050.0) & (T < 3000.0))), ('SR', 'FCC_A1'): Piecewise((GHSERSR, (T >= 298.15) & (T < 3000.0))), ('SR', 'HCP_A3'): Piecewise((0.7*T + GHSERSR + 250, (T >= 298.15) & (T < 3000.0))), ('SR', 'LIQUID'): Piecewise((4.981237e-6*T**3 - 0.031840595*T**2 - 5.0668978*T*log(T) - 10.118994*T + 2194.997 - 265559/T, (T >= 298.15) & (T < 1050.0)), (-39.463*T*log(T) + 213.406219*T - 10855.29, (T >= 1050.0) & (T < 3000.0))), ('TA', 'BCC_A2'): Piecewise((GHSERTA, (T >= 298.15) & (T < 6000.0))), ('TA', 'FCC_A1'): Piecewise((1.7*T + GHSERTA + 16000, (T >= 298.15) & (T < 6000.0))), ('TA', 'HCP_A3'): Piecewise((2.4*T + GHSERTA + 12000, (T >= 298.15) & (T < 6000.0))), ('TA', 'LIQUID'): Piecewise((-7.578729*T + GHSERTA + 29160.975, (T >= 298.15) & (T < 1000.0)), (6.14599e-7*T**3 - 0.012330066*T**2 + 0.0279523*T*log(T) - 61.981795*T + 43884.339 - 3523338/T, (T >= 1000.0) & (T < 3290.0)), (-41.84*T*log(T) + 258.110873*T - 6314.543, (T >= 3290.0) & (T < 6000.0))), ('TB', 'BCC_A2'): Piecewise((-2.652707*T + GHSERTB + 4167.835, (T >= 298.15) & (T < 1200.0)), (3.4100235e-5*T**3 - 0.373763517*T**2 + 706.580596*T*log(T) - 5157.77779*T + 633060.245 - 103233571.0/T, (T >= 1200.0) & (T < 1562.0)), (-46.4842*T*log(T) + 257.388486*T - 23398.029, (T >= 1562.0) & (T < 3000.0))), ('TB', 'HCP_A3'): Piecewise((GHSERTB, (T >= 298.15) & (T < 3000.0))), ('TB', 'LIQUID'): Piecewise((2.17475e-6*T**3 - 0.020466105*T**2 - 14.252646*T*log(T) + 29.867521*T + 3945.831 - 160724/T, (T >= 298.15) & (T < 1562.0)), (-46.4842*T*log(T) + 251.16889*T - 13247.649, (T >= 1562.0) & (T < 3000.0))), ('TC', 'BCC_A2'): Piecewise((-4.5*T + GHSERTC + 18000, (T >= 298.15) & (T < 4000.0))), ('TC', 'FCC_A1'): Piecewise((-1.5*T + GHSERTC + 10000, (T >= 298.15) & (T < 4000.0))), ('TC', 'HCP_A3'): Piecewise((GHSERTC, (T >= 298.15) & (T < 4000.0))), ('TC', 'LIQUID'): Piecewise((-9.62385e-22*T**7 - 12.313*T + GHSERTC + 30402.134, (T >= 298.15) & (T < 2430.0)), (-47*T*log(T) + 303.7538*T - 12221.9, (T >= 2430.0) & (T < 4000.0))), ('TE', 'HEXAGONAL_A8'): Piecewise((GHSERTE, (T >= 298.15) & (T < 1600.0))), ('TE', 'LIQUID'): Piecewise((-9.42075e-5*T**3 + 0.2219435*T**2 - 126.318*T*log(T) + 685.877639*T - 17554.731 + 827930/T, (T >= 298.15) & (T < 626.49)), (-0.00130692833*T**3 + 7.09775*T**2 - 7196.41*T*log(T) + 46756.357*T - 3165763.48 + 258051000.0/T, (T >= 626.49) & (T < 722.66)), (1.6129733e-5*T**3 - 0.142016*T**2 + 202.743*T*log(T) - 1500.57909*T + 180326.959 - 24238450/T, (T >= 722.66) & (T < 1150.0)), (-26.1929273*T + GHSERTE + 19110.036, (T >= 1150.0) & (T < 1600.0))), ('TH', 'BCC_A2'): Piecewise((-5.3048e-7*T**3 + 0.00043775*T**2 - 28.244*T*log(T) + 134.279995*T - 2321.06 + 91190/T, (T >= 298.15) & (T < 1633.0)), (-2.536883e-6*T**3 + 0.03098*T**2 - 116.453*T*log(T) + 801.657849*T - 115978.348 + 27512600/T, (T >= 1633.0) & (T < 2023.0)), (1.66067e-7*T**3 - 0.00346655*T**2 - 35.813*T*log(T) + 209.523509*T - 33602.796 + 11876950/T, (T >= 2023.0) & (T < 3600.0)), (-0.049551*T + GHSERTH - 980.302, (T >= 3600.0) & (T < 4000.0))), ('TH', 'FCC_A1'): Piecewise((GHSERTH, (T >= 298.15) & (T < 4000.0))), ('TH', 'LIQUID'): Piecewise((-9.09067e-7*T**3 - 0.00168345*T**2 - 24.987*T*log(T) + 111.635146*T + 5031.109 + 10865/T, (T >= 298.15) & (T < 1499.8)), (1.210117e-6*T**3 - 0.0136421*T**2 - 24.03*T*log(T) + 128.406516*T - 15602.847 + 7111100/T, (T >= 1499.8) & (T < 2014.5)), (-46.024*T*log(T) + 275.750074*T - 17273.382, (T >= 2014.5) & (T < 2900.0)), (-8.229771*T + GHSERTH + 16079.931, (T >= 2900.0) & (T < 4000.0))), ('TI', 'BCC_A2'): Piecewise((-2.78803e-7*T**3 - 0.000663845*T**2 - 25.5768*T*log(T) + 134.71418*T - 1272.064 + 7208/T, (T >= 298.15) & (T < 1155.0)), (-8.4534e-7*T**3 + 0.00121707*T**2 - 22.3771*T*log(T) + 105.366379*T + 6667.385 - 2002750/T, (T >= 1155.0) & (T < 1941.0)), (1.228863e-6*T**3 - 0.02200832*T**2 + 19.0900905*T*log(T) - 182.426471*T + 26483.26 + 1400501/T, (T >= 1941.0) & (T < 4000.0))), ('TI', 'BCT_A5'): Piecewise((GHSERTI + 4602.2, (T >= 298.15) & (T < 3000.0))), ('TI', 'CBCC_A12'): Piecewise((GHSERTI + 4602.2, (T >= 298.15) & (T < 4000.0))), ('TI', 'CUB_A13'): Piecewise((GHSERTI + 7531.2, (T >= 298.15) & (T < 4000.0))), ('TI', 'DIAMOND_A4'): Piecewise((GHSERTI + 25000, (T >= 298.15) & (T < 4000.0))), ('TI', 'FCC_A1'): Piecewise((-0.1*T + GHSERTI + 6000, (T >= 298.15) & (T < 4000.0))), ('TI', 'HCP_A3'): Piecewise((GHSERTI, (T >= 298.15) & (T < 4000.0))), ('TI', 'LIQUID'): Piecewise((-6.980938*T + GHSERTI + 12194.415, (T >= 298.15) & (T < 900.0)), (-6.980938*T + GHSERTI + 12194.416, (T >= 900.0) & (T < 1300.0)), (1.2457117e-5*T**3 - 0.163409355*T**2 + 342.059267*T*log(T) - 2554.0225*T + 369519.198 - 67034516/T, (T >= 1300.0) & (T < 1941.0)), (-46.29*T*log(T) + 298.7367*T - 19887.066, (T >= 1941.0) & (T < 4000.0))), ('TL', 'BCC_A2'): Piecewise((-1.0115933e-5*T**3 + 0.0172318*T**2 - 33.0508*T*log(T) + 150.019517*T - 9194.493 + 82153/T, (T >= 200.0) & (T < 577.0)), (-2.359101e-6*T**3 + 0.026042993*T**2 - 79.2926704*T*log(T) + 482.633817*T - 41836.403 + 3507810/T, (T >= 577.0) & (T < 1800.0))), ('TL', 'FCC_A1'): Piecewise((GHSERTL + 310, (T >= 200.0) & (T < 1800.0))), ('TL', 'HCP_A3'): Piecewise((GHSERTL, (T >= 200.0) & (T < 1800.0))), ('TL', 'LIQUID'): Piecewise((1.4248046e-5*T**3 - 0.044350292*T**2 - 7.44455*T*log(T) + 0.755649*T - 946.623 - 54228/T, (T >= 200.0) & (T < 577.0)), (9.0e-12*T**3 - 0.00083662*T**2 - 25.8437*T*log(T) + 98.472609*T - 614.74 - 612570/T, (T >= 577.0) & (T < 1800.0))), ('TM', 'HCP_A3'): Piecewise((GHSERTM, (T >= 298.15) & (T < 2300.0))), ('TM', 'LIQUID'): Piecewise((-6.557671*T + GHSERTM + 13199.249, (T >= 298.15) & (T < 600.0)), (2.288172e-6*T**3 - 0.025487085*T**2 + 6.8744933*T*log(T) - 126.738485*T + 22640.028 - 1585412/T, (T >= 600.0) & (T < 1818.0)), (-41.37976*T*log(T) + 214.184413*T - 10090.305, (T >= 1818.0) & (T < 2300.0))), ('U', 'BCC_A2'): Piecewise((9.67907e-7*T**3 - 0.00835595*T**2 - 27.5152*T*log(T) + 131.5381*T - 752.767 + 204611/T, (T >= 298.15) & (T < 1049.0)), (-38.2836*T*log(T) + 202.685635*T - 4698.365, (T >= 1049.0) & (T < 3000.0))), ('U', 'LIQUID'): Piecewise((-10.3239*T + GHSERUU + 12355.5, (T >= 298.15) & (T < 3000.0))), ('U', 'ORTHORHOMBIC_A20'): Piecewise((GHSERUU, (T >= 298.15) & (T < 3000.0))), ('U', 'TETRAGONAL_U'): Piecewise((2.7889e-8*T**3 - 0.01084475*T**2 - 22.841*T*log(T) + 106.976316*T - 5156.136 + 81944/T, (T >= 298.15) & (T < 941.5)), (-42.9278*T*log(T) + 244.16802*T - 14327.309, (T >= 941.5) & (T < 3000.0))), ('V', 'BCC_A2'): Piecewise((GHSERVV, (T >= 298.15) & (T < 4000.0))), ('V', 'CBCC_A12'): Piecewise((GHSERVV + 9000, (T >= 298.15) & (T < 4000.0))), ('V', 'CUB_A13'): Piecewise((GHSERVV + 10000, (T >= 298.15) & (T < 4000.0))), ('V', 'FCC_A1'): Piecewise((1.7*T + GHSERVV + 7500, (T >= 298.15) & (T < 4000.0))), ('V', 'HCP_A3'): Piecewise((2.4*T + GHSERVV + 4000, (T >= 298.15) & (T < 4000.0))), ('V', 'LIQUID'): Piecewise((-5.19136e-22*T**7 - 9.455552*T + GHSERVV + 20764.117, (T >= 298.15) & (T < 2183.0)), (-47.43*T*log(T) + 311.055983*T - 19617.51, (T >= 2183.0) & (T < 4000.0))), ('W', 'BCC_A2'): Piecewise((GHSERWW, (T >= 298.15) & (T < 6000.0))), ('W', 'FCC_A1'): Piecewise((0.63*T + GHSERWW + 19300, (T >= 298.15) & (T < 6000.0))), ('W', 'HCP_A3'): Piecewise((GHSERWW + 14750, (T >= 298.15) & (T < 6000.0))), ('W', 'LIQUID'): Piecewise((-2.713468e-24*T**7 - 14.10999*T + GHSERWW + 52160.584, (T >= 298.15) & (T < 3695.0)), (-54*T*log(T) + 375.175*T - 30436.051, (T >= 3695.0) & (T < 6000.0))), ('Y', 'BCC_A2'): Piecewise((9.10372497e-9*T**3 - 0.00237175965*T**2 - 25.5832578*T*log(T) + 123.667346*T - 833.658863 + 27340.0687/T, (T >= 100.0) & (T < 1000.0)), (-3.05012175e-7*T**3 - 0.000541757644*T**2 - 27.3038477*T*log(T) + 134.528352*T - 1297.79829, (T >= 1000.0) & (T < 1795.15)), (4.02944768e-7*T**3 - 0.00904576576*T**2 - 8.88296647*T*log(T) + 0.981325399*T + 15389.4975 - 2542575.96/T, (T >= 1795.15) & (T < 3700.0))), ('Y', 'HCP_A3'): Piecewise((GHSERYY, (T >= 100.0) & (T < 3700.0))), ('Y', 'LIQUID'): Piecewise((-8.12981167e-7*T**3 - 0.00347023463*T**2 - 24.6467508*T*log(T) + 119.41873*T + 2098.50738 + 23713.7332/T, (T >= 100.0) & (T < 1000.0)), (1.7595327e-6*T**3 - 0.0189533369*T**2 - 9.0681627*T*log(T) + 19.4520171*T + 7386.44846, (T >= 1000.0) & (T < 1795.15)), (-43.0952*T*log(T) + 257.400783*T - 12976.5957, (T >= 1795.15) & (T < 3700.0))), ('YB', 'BCC_A2'): Piecewise((4.743871e-6*T**3 - 0.030009694*T**2 - 3.8534432*T*log(T) - 21.293677*T - 965.99 - 334650/T, (T >= 298.15) & (T < 1033.0)), (-36.1079*T*log(T) + 188.313864*T - 13368.113, (T >= 1033.0) & (T < 1097.0)), (3.63044e-7*T**3 - 0.004743348*T**2 - 25.7402233*T*log(T) + 113.174165*T - 3911.847 - 1553668/T, (T >= 1097.0) & (T < 2000.0))), ('YB', 'FCC_A1'): Piecewise((GHSERYB, (T >= 298.15) & (T < 2000.0))), ('YB', 'LIQUID'): Piecewise((5.136665e-6*T**3 - 0.03250938*T**2 - 1.8061816*T*log(T) - 40.615571*T + 7030.788 - 370554/T, (T >= 298.15) & (T < 1033.0)), (-36.7774*T*log(T) + 186.690398*T - 6445.835, (T >= 1033.0) & (T < 2000.0))), ('ZN', 'BCC_A2'): Piecewise((-2.5104*T + GHSERZN + 2886.96, (T >= 298.15) & (T < 1700.0))), ('ZN', 'BCT_A5'): Piecewise((-2.5104*T + GHSERZN + 2886.96, (T >= 298.15) & (T < 1700.0))), ('ZN', 'DIAMOND_A4'): Piecewise((30*T + GHSERZN, (T >= 298.15) & (T < 1700.0))), ('ZN', 'FCC_A1'): Piecewise((-1.56968*T + GHSERZN + 2969.82, (T >= 298.15) & (T < 1700.0))), ('ZN', 'HCP_A3'): Piecewise((GHSERZN, (T >= 298.15) & (T < 1700.0))), ('ZN', 'LIQUID'): Piecewise((-3.58958e-19*T**7 - 10.29299*T + GHSERZN + 7157.213, (T >= 298.15) & (T < 692.68)), (-31.38*T*log(T) + 161.608594*T - 3620.391, (T >= 692.68) & (T < 1700.0))), ('ZR', 'BCC_A2'): Piecewise((-7.6143e-11*T**4 - 9.729e-9*T**3 - 0.000340084*T**2 - 25.607406*T*log(T) + 124.9457*T - 525.539 + 25233/T, (T >= 130.0) & (T < 2128.0)), (1.55998*T + GHSERZR - 4620.034 + 1.4103476e+32/T**9, (T >= 2128.0) & (T < 6000.0))), ('ZR', 'FCC_A1'): Piecewise((-0.9*T + GHSERZR + 7600, (T >= 130.0) & (T < 6000.0))), ('ZR', 'HCP_A3'): Piecewise((GHSERZR, (T >= 130.0) & (T < 6000.0))), ('ZR', 'LIQUID'): Piecewise((1.6275e-22*T**7 - 9.080812*T + GHSERZR + 18147.69, (T >= 130.0) & (T < 2128.0)), (-42.144*T*log(T) + 253.812609*T - 8281.26, (T >= 2128.0) & (T < 6000.0))), ('ZR', 'OMEGA'): Piecewise((-0.002799446*T**2 - 26.8556*T*log(T) + 144.432234*T - 8878.082 + 38376/T, (T >= 130.0) & (T < 2128.0)), (2.566675*T + GHSERZR - 3414.603 + 8.517346e+31/T**9, (T >= 2128.0) & (T < 6000.0)))}, 'SGTE91Stable': {'AG': Piecewise((-3.98587e-7*T**3 - 0.001790585*T**2 - 23.8463314*T*log(T) + 118.202013*T - 7209.512 - 12011/T, (T >= 298.15) & (T < 1234.93)), (-33.472*T*log(T) + 190.266404*T - 15095.252 + 1.411773e+29/T**9, (T >= 1234.93) & (T < 3000.0))), 'AL': Piecewise((-8.77664e-7*T**3 - 0.001884662*T**2 - 24.3671976*T*log(T) + 137.093038*T - 7976.15 + 74092/T, (T >= 298.15) & (T < 700.0)), (-5.764227e-6*T**3 + 0.018531982*T**2 - 38.5844296*T*log(T) + 223.048446*T - 11276.24 + 74092/T, (T >= 700.0) & (T < 933.47)), (-31.748192*T*log(T) + 188.684153*T - 11278.378 - 1.230524e+28/T**9, (T >= 933.47) & (T < 2900.0))), 'AM': Piecewise((-5.41038e-7*T**3 - 0.00559955*T**2 - 21.1868*T*log(T) + 89.645685*T - 6639.201 - 30424/T, (T >= 298.15) & (T < 1329.0)), (-41.84*T*log(T) + 241.107269*T - 21702.938, (T >= 1329.0) & (T < 3000.0))), 'AS': Piecewise((-0.00271613*T**2 - 23.3144*T*log(T) + 122.211069*T - 7270.447 + 11600/T, (T >= 298.15) & (T < 1090.0)), (-29.216037*T*log(T) + 163.457433*T - 10454.913, (T >= 1090.0) & (T < 1200.0))), 'AU': Piecewise((3.79625e-7*T**3 - 0.00385924*T**2 - 22.75455*T*log(T) + 106.830098*T - 6938.856 - 25097/T, (T >= 298.15) & (T < 929.4)), (-1.1518713e-5*T**3 + 0.08756015*T**2 - 155.706745*T*log(T) + 1021.69543*T - 93586.481 + 10637210/T, (T >= 929.4) & (T < 1337.33)), (8.923844e-6*T**3 - 0.118216828*T**2 + 263.252259*T*log(T) - 2016.37825*T + 314067.829 - 67999832/T, (T >= 1337.33) & (T < 1735.8)), (-30.9616*T*log(T) + 165.272524*T - 12133.783, (T >= 1735.8) & (T < 3200.0))), 'B': Piecewise((6.18878e-7*T**3 - 0.006864515*T**2 - 15.6641*T*log(T) + 107.111864*T - 7735.284 + 370843/T, (T >= 298.15) & (T < 1100.0)), (-2.556e-8*T**3 - 0.00079809*T**2 - 26.6047*T*log(T) + 184.801744*T - 16649.474 + 1748270/T, (T >= 1100.0) & (T < 2348.0)), (1.34719e-7*T**3 - 0.00159488*T**2 - 31.5957527*T*log(T) + 231.336244*T - 36667.582 + 11205883/T, (T >= 2348.0) & (T < 3000.0)), (-31.4*T*log(T) + 222.396264*T - 21530.653, (T >= 3000.0) & (T < 6000.0))), 'BA': Piecewise((-9.5e-11*T**3 - 0.0018314*T**2 - 42.889*T*log(T) + 233.78606*T - 17685.226 + 705880/T, (T >= 298.15) & (T < 1000.0)), (-1.051353e-6*T**3 + 0.019504772*T**2 - 94.2824199*T*log(T) + 608.188389*T - 64873.614 + 8220192/T, (T >= 1000.0) & (T < 2995.0)), (-32.2*T*log(T) + 136.780042*T + 8083.889, (T >= 2995.0) & (T < 4000.0))), 'BE': Piecewise((-1.60413e-7*T**3 - 0.00284715*T**2 - 21.204*T*log(T) + 137.560219*T - 8553.651 + 293690/T, (T >= 298.15) & (T < 1527.0)), (-1.119065e-6*T**3 + 0.021078651*T**2 - 103.9843*T*log(T) + 772.405844*T - 121305.858 + 27251743/T, (T >= 1527.0) & (T < 3000.0))), 'BI': Piecewise((-8.381598e-6*T**3 + 0.012338888*T**2 - 28.4096529*T*log(T) + 128.418925*T - 7817.776, (T >= 298.15) & (T < 544.55)), (1.3499885e-5*T**3 - 0.075311163*T**2 + 51.8556592*T*log(T) - 393.650351*T + 30208.022 - 3616168/T + 1.66145e+25/T**9, (T >= 544.55) & (T < 800.0)), (-1.046e-6*T**3 + 0.0074266*T**2 - 35.9824*T*log(T) + 182.548971*T - 11045.664 + 1.66145e+25/T**9, (T >= 800.0) & (T < 1200.0)), (-27.196*T*log(T) + 124.77144*T - 7581.312 + 1.66145e+25/T**9, (T >= 1200.0) & (T < 3000.0))), 'CA': Piecewise((-0.01110455*T**2 - 16.3138*T*log(T) + 72.794266*T - 4955.062 - 133574/T, (T >= 298.15) & (T < 1115.0)), (-1.2438e-6*T**3 + 0.023733814*T**2 - 114.292247*T*log(T) + 799.982066*T - 107304.428 + 18245540/T, (T >= 1115.0) & (T < 3000.0))), 'CC': Piecewise((-0.0004723*T**2 - 24.3*T*log(T) + 170.73*T - 17368.441 + 2562600/T - 264300000.0/T**2 + 12000000000.0/T**3, (T >= 298.15) & (T < 6000.0))), 'CD': Piecewise((-0.006273908*T**2 - 22.0442408*T*log(T) + 99.506198*T - 7083.469 - 6966/T, (T >= 298.15) & (T < 594.22)), (-8.99604e-7*T**3 + 0.008832011*T**2 - 45.1611543*T*log(T) + 256.812233*T - 20064.971 + 1241290/T, (T >= 594.22) & (T < 1500.0)), (-29.7064*T*log(T) + 148.20548*T - 9027.489, (T >= 1500.0) & (T < 1600.0))), 'CE': Piecewise((-3.20773e-7*T**3 - 0.0067103*T**2 - 22.3664*T*log(T) + 84.23022*T - 7160.519 - 18117/T, (T >= 298.15) & (T < 1000.0)), (-1.930297e-6*T**3 + 0.026046487*T**2 - 101.32248*T*log(T) + 659.4604*T - 79678.506 + 11531707/T, (T >= 1000.0) & (T < 2000.0)), (-37.6978*T*log(T) + 190.370192*T - 14198.639, (T >= 2000.0) & (T < 4000.0))), 'CO': Piecewise((-1.7348e-7*T**3 - 0.002654739*T**2 - 25.0861*T*log(T) + 133.36601*T + 310.241 + 72527/T, (T >= 298.15) & (T < 1768.0)), (-40.5*T*log(T) + 253.28374*T - 17197.666 + 9.3488e+30/T**9, (T >= 1768.0) & (T < 6000.0))), 'CR': Piecewise((-1.47721e-6*T**3 + 0.00189435*T**2 - 26.908*T*log(T) + 157.48*T - 8856.94 + 139250/T, (T >= 298.15) & (T < 2180.0)), (-50*T*log(T) + 344.18*T - 34869.344 - 2.88526e+32/T**9, (T >= 2180.0) & (T < 6000.0))), 'CS': Piecewise((-0.000127907669*T**3 + 0.2029422*T**2 - 90.5212584*T*log(T) + 436.899787*T - 17373.82 + 245245/T, (T >= 200.0) & (T < 301.59)), (-4.074846e-6*T**3 + 0.02043269*T**2 - 46.7273304*T*log(T) + 218.689955*T - 13553.817 + 181528/T + 7.8016e+21/T**9, (T >= 301.59) & (T < 2000.0))), 'CU': Piecewise((1.29223e-7*T**3 - 0.00265684*T**2 - 24.112392*T*log(T) + 130.485235*T - 7770.458 + 52478/T, (T >= 298.15) & (T < 1357.77)), (-31.38*T*log(T) + 183.803828*T - 13542.026 + 3.64167e+29/T**9, (T >= 1357.77) & (T < 3200.0))), 'DY': Piecewise((-5.86914125e-7*T**3 - 0.000761683657*T**2 - 26.3917167*T*log(T) + 102.307412*T - 7937.16586 + 4010.90565/T, (T >= 100.0) & (T < 1000.0)), (-3.49702836e-6*T**3 + 0.0166909801*T**2 - 43.8283359*T*log(T) + 214.012934*T - 13733.328 + 0.0173619874/T, (T >= 1000.0) & (T < 1654.15)), (-2.76169148e-6*T**3 + 0.0578301681*T**2 - 272.123952*T*log(T) + 2032.1415*T - 404681.371 + 109616238.0/T, (T >= 1654.15) & (T < 3000.0))), 'ER': Piecewise((-9.52557e-7*T**3 + 0.000995792*T**2 - 28.3846744*T*log(T) + 116.698964*T - 8489.136 + 9581/T, (T >= 298.15) & (T < 1802.0)), (-3.041405e-6*T**3 + 0.065950553*T**2 - 298.135131*T*log(T) + 2233.10212*T - 445688.206 + 123973199.0/T, (T >= 1802.0) & (T < 3200.0))), 'EU': Piecewise((-4.006564e-6*T**3 + 0.00931735*T**2 - 32.8418896*T*log(T) + 135.836737*T - 9864.965 + 102717/T, (T >= 298.15) & (T < 1095.0)), (-8.809866e-6*T**3 + 0.114530917*T**2 - 309.357101*T*log(T) + 2174.73304*T - 287423.476 + 48455305/T, (T >= 1095.0) & (T < 1900.0))), 'FE': Piecewise((-5.8927e-8*T**3 - 0.00439752*T**2 - 23.5143*T*log(T) + 124.134*T + 1225.7 + 77359/T, (T >= 298.15) & (T < 1811.0)), (-46*T*log(T) + 299.31255*T - 25383.581 + 2.29603e+31/T**9, (T >= 1811.0) & (T < 6000.0))), 'GA': Piecewise((-0.000118575257*T**3 + 0.227155636*T**2 - 108.228783*T*log(T) + 585.263691*T - 21312.331 + 439954/T, (T >= 200.0) & (T < 302.91)), (-4.0173e-8*T**3 + 0.0001506*T**2 - 26.0692906*T*log(T) + 132.73019*T - 7055.643 - 118332/T + 1.64547e+23/T**9, (T >= 302.91) & (T < 4000.0))), 'GD': Piecewise((-3.14674076e-7*T**3 - 0.00285240521*T**2 - 24.7214131*T*log(T) + 97.13101*T - 6834.5855 - 8665.73348/T, (T >= 200.0) & (T < 1000.0)), (-6.61211607e-7*T**3 - 0.00185225011*T**2 - 24.6598297*T*log(T) + 95.6919924*T - 6483.25362, (T >= 1000.0) & (T < 1508.15)), (-6.39165948e-7*T**3 + 0.0150644246*T**2 - 101.800197*T*log(T) + 699.125537*T - 123124.992 + 29356890.3/T, (T >= 1508.15) & (T < 3600.0))), 'GE': Piecewise((-1.513694e-6*T**3 + 0.005568297*T**2 - 29.5337682*T*log(T) + 165.635573*T - 9486.153 + 163298/T, (T >= 298.15) & (T < 900.0)), (-0.003672527*T**2 - 19.8536239*T*log(T) + 102.86087*T - 5689.239, (T >= 900.0) & (T < 1211.4)), (-27.6144*T*log(T) + 156.708024*T - 9548.204 - 8.59809e+28/T**9, (T >= 1211.4) & (T < 3200.0))), 'HF': Piecewise((-4.77e-10*T**3 - 0.004146145*T**2 - 22.7075*T*log(T) + 110.744026*T - 6987.297 - 22590/T, (T >= 298.15) & (T < 2506.0)), (-7.575759e-6*T**3 + 0.1735215*T**2 - 787.536383*T*log(T) + 6193.60999*T - 1446776.33 + 501742495.0/T, (T >= 2506.0) & (T < 3000.0))), 'HG': Piecewise((0.00118398213*T**3 - 2.0282337*T**2 + 618.193308*T*log(T) - 3348.19466*T + 82356.855 - 2366612/T, (T >= 200.0) & (T < 234.32)), (-3.20695e-6*T**3 + 0.0097977*T**2 - 32.257*T*log(T) + 135.232291*T - 8961.207 + 6670/T, (T >= 234.32) & (T < 400.0)), (-1.077802e-6*T**3 + 0.00318535*T**2 - 28.414*T*log(T) + 112.33345*T - 7970.627 - 41095/T, (T >= 400.0) & (T < 700.0)), (8.737e-9*T**3 - 0.00166775*T**2 - 24.87*T*log(T) + 90.797305*T - 7161.338 - 27495/T, (T >= 700.0) & (T < 2000.0))), 'HO': Piecewise((2.375467e-6*T**3 - 0.00827315*T**2 - 23.4879*T*log(T) + 86.593171*T - 7612.429, (T >= 298.15) & (T < 600.0)), (-4.829733e-6*T**3 + 0.01820065*T**2 - 39.6932*T*log(T) + 182.475691*T - 10917.688, (T >= 600.0) & (T < 900.0)), (3.233133e-6*T**3 - 0.0424634*T**2 + 48.0595*T*log(T) - 421.474473*T + 46646.188 - 7185900/T, (T >= 900.0) & (T < 1200.0)), (-1.112352e-6*T**3 - 0.01082725*T**2 + 8.28608*T*log(T) - 156.162846*T + 27786.061 - 6183850/T, (T >= 1200.0) & (T < 1703.0)), (-6.824652e-6*T**3 + 0.139111904*T**2 - 558.950682*T*log(T) + 4248.37906*T - 825364.662 + 219952973.0/T, (T >= 1703.0) & (T < 3000.0))), 'IN': Piecewise((-2.120321e-6*T**3 - 0.00572566*T**2 - 21.8386*T*log(T) + 92.338115*T - 6978.89 - 22906/T, (T >= 298.15) & (T < 429.75)), (-8.367e-8*T**3 + 0.00054607*T**2 - 27.4562*T*log(T) + 124.476588*T - 7033.516 - 211708/T + 3.53116e+22/T**9, (T >= 429.75) & (T < 3800.0))), 'IR': Piecewise((-0.003091976*T**2 - 22.7944*T*log(T) + 118.780119*T - 6936.288 - 20083/T, (T >= 298.15) & (T < 1215.0)), (-4.7969e-7*T**3 - 26.085*T*log(T) + 140.066697*T - 8123.73, (T >= 1215.0) & (T < 2719.0)), (1.844977e-6*T**3 - 0.047176402*T**2 + 152.498874*T*log(T) - 1258.35297*T + 290529.037 - 92987250/T, (T >= 2719.0) & (T < 4000.0))), 'K': Piecewise((-8.4949147e-5*T**3 + 0.146211135*T**2 - 77.0571464*T*log(T) + 389.624197*T - 16112.929 + 243385/T, (T >= 200.0) & (T < 336.53)), (-2.64387e-6*T**3 + 0.012167386*T**2 - 39.2885968*T*log(T) + 192.586544*T - 11122.441 + 43251/T + 1.19223e+22/T**9, (T >= 336.53) & (T < 2200.0))), 'LA': Piecewise((-0.001295165*T**2 - 26.34*T*log(T) + 120.284604*T - 7968.403, (T >= 298.15) & (T < 550.0)), (6.8932e-7*T**3 - 0.008371705*T**2 - 17.1659411*T*log(T) + 59.06113*T - 3381.413 - 399448/T, (T >= 550.0) & (T < 2000.0)), (-34.3088*T*log(T) + 181.390071*T - 15608.882, (T >= 2000.0) & (T < 4000.0))), 'LI': Piecewise((-1.9869816e-5*T**3 + 0.035466931*T**2 - 38.940488*T*log(T) + 217.637482*T - 10583.817 + 159994/T, (T >= 200.0) & (T < 453.6)), (-0.000571066077*T**3 + 2.25832944*T**2 - 1702.88865*T*log(T) + 10547.8799*T - 559579.123 + 33885874/T, (T >= 453.6) & (T < 500.0)), (-4.38058e-7*T**3 + 0.002633221*T**2 - 31.2283718*T*log(T) + 179.278285*T - 9062.994 - 102387/T, (T >= 500.0) & (T < 3000.0))), 'LU': Piecewise((-1.790717e-6*T**3 + 0.00519165*T**2 - 29.812*T*log(T) + 146.536283*T - 8788.329 + 39723/T, (T >= 298.15) & (T < 700.0)), (-1.50147e-6*T**3 + 0.00371416*T**2 - 29.0095*T*log(T) + 142.327643*T - 9043.057 + 141549/T, (T >= 700.0) & (T < 1700.0)), (-0.0119001*T**2 - 1.83986*T*log(T) - 46.91844*T + 6940.092, (T >= 1700.0) & (T < 1936.0)), (-1.661174e-6*T**3 + 0.041800748*T**2 - 239.019502*T*log(T) + 1829.37943*T - 404023.691 + 124825465.0/T, (T >= 1936.0) & (T < 3700.0))), 'MG': Piecewise((-1.393669e-6*T**3 + 0.0004858*T**2 - 26.1849782*T*log(T) + 143.675547*T - 8367.34 + 78950/T, (T >= 298.15) & (T < 923.0)), (-34.3088*T*log(T) + 204.716215*T - 14130.185 + 1.038192e+28/T**9, (T >= 923.0) & (T < 3000.0))), 'MN': Piecewise((-0.00734768*T**2 - 23.4582*T*log(T) + 130.059*T - 8115.28 + 69827/T, (T >= 298.15) & (T < 1519.0)), (-48*T*log(T) + 312.2648*T - 28733.41 + 1.656847e+30/T**9, (T >= 1519.0) & (T < 2000.0))), 'MO': Piecewise((-1.30927e-10*T**4 + 5.66283e-7*T**3 - 0.003443396*T**2 - 23.56414*T*log(T) + 131.9197*T - 7746.302 + 65812/T, (T >= 298.15) & (T < 2896.0)), (-42.63829*T*log(T) + 283.559746*T - 30556.41 - 4.849315e+33/T**9, (T >= 2896.0) & (T < 5000.0))), 'N': Piecewise((2.681e-9*T**3 - 0.00176686*T**2 - 12.7819*T*log(T) - 9.45425*T - 3750.675 - 32374/T, (T >= 298.15) & (T < 950.0)), (3.0097e-8*T**3 - 0.00065107*T**2 - 16.3699*T*log(T) + 17.2003*T - 7358.85 + 563070/T, (T >= 950.0) & (T < 3350.0)), (-8.333e-9*T**3 + 0.000239754*T**2 - 20.4695*T*log(T) + 50.26*T - 16392.8 + 4596375/T, (T >= 3350.0) & (T < 6000.0))), 'NA': Piecewise((-4.3638283e-5*T**3 + 0.072306633*T**2 - 51.0393608*T*log(T) + 260.548732*T - 11989.434 + 132154/T, (T >= 200.0) & (T < 370.87)), (-1.70664e-6*T**3 + 0.009745854*T**2 - 38.1198801*T*log(T) + 199.619999*T - 11009.884 + 34342/T + 1.65071e+23/T**9, (T >= 370.87) & (T < 2300.0))), 'NB': Piecewise((-3.5012e-7*T**3 + 0.000203475*T**2 - 26.4711*T*log(T) + 142.045475*T - 8519.353 + 93399/T, (T >= 298.15) & (T < 2750.0)), (-41.77*T*log(T) + 271.720843*T - 37669.3 + 1.528238e+32/T**9, (T >= 2750.0) & (T < 6000.0))), 'ND': Piecewise((-2.6923e-6*T**3 + 0.000556125*T**2 - 27.0858*T*log(T) + 111.10239*T - 8402.93 + 34887/T, (T >= 298.15) & (T < 900.0)), (-1.802e-6*T**3 - 0.00420402*T**2 - 22.7536*T*log(T) + 83.662617*T - 6984.083, (T >= 900.0) & (T < 1128.0)), (-6.048207e-6*T**3 + 0.078615997*T**2 - 238.182873*T*log(T) + 1673.04075*T - 225610.846 + 38810350/T, (T >= 1128.0) & (T < 1799.0)), (-48.7854*T*log(T) + 276.257088*T - 25742.331, (T >= 1799.0) & (T < 1800.0))), 'NI': Piecewise((-0.0048407*T**2 - 22.096*T*log(T) + 117.854*T - 5179.159, (T >= 298.15) & (T < 1728.0)), (-43.1*T*log(T) + 279.135*T - 27840.655 + 1.12754e+31/T**9, (T >= 1728.0) & (T < 3000.0))), 'NP': Piecewise((-0.04127725*T**2 + 4.0543*T*log(T) - 57.531347*T + 241.888 - 402857/T, (T >= 298.15) & (T < 553.0)), (-2.483917e-6*T**3 + 0.0284592*T**2 - 102.523*T*log(T) + 664.27337*T - 57015.112 + 4796910/T, (T >= 553.0) & (T < 1799.0)), (-45.3964*T*log(T) + 255.780866*T - 12092.736, (T >= 1799.0) & (T < 4000.0))), 'O': Piecewise((6.61845833e-7*T**3 - 0.005098875*T**2 - 11.1355*T*log(T) - 25.503038*T - 3480.87 - 38365/T, (T >= 298.15) & (T < 1000.0)), (6.781e-9*T**3 - 0.0005957975*T**2 - 16.8138*T*log(T) + 12.659879*T - 6568.763 + 262905/T, (T >= 1000.0) & (T < 3300.0)), (1.0721e-8*T**3 - 0.000425243*T**2 - 18.9536*T*log(T) + 31.259624*T - 13986.728 + 4383200/T, (T >= 3300.0) & (T < 6000.0))), 'OS': Piecewise((-0.00190427*T**2 - 23.5710242*T*log(T) + 126.369531*T - 7196.978, (T >= 298.15) & (T < 3306.0)), (1.173861e-6*T**3 - 0.042489827*T**2 + 224.998034*T*log(T) - 1935.2137*T + 644910.07 - 312569031.0/T, (T >= 3306.0) & (T < 5500.0))), 'P': Piecewise((-0.000104022667*T**3 + 0.290708*T**2 - 178.426*T*log(T) + 1026.69389*T - 43821.799 + 1632695/T, (T >= 250.0) & (T < 317.3)), (-2.2829e-7*T**3 + 0.001715669*T**2 - 28.7335301*T*log(T) + 152.341487*T - 9587.448 + 172966/T, (T >= 317.3) & (T < 1000.0)), (-26.326*T*log(T) + 135.876831*T - 8093.075, (T >= 1000.0) & (T < 3000.0))), 'PA': Piecewise((-0.00621325*T**2 - 23.9116*T*log(T) + 111.973215*T - 7681.561, (T >= 298.15) & (T < 1443.0)), (1.884933e-6*T**3 - 0.0263416*T**2 + 16.305*T*log(T) - 177.320253*T + 27955.763 - 5908900/T, (T >= 1443.0) & (T < 2176.0)), (-47.2792*T*log(T) + 288.308639*T - 29949.683, (T >= 2176.0) & (T < 4000.0))), 'PB': Piecewise((-2.4395e-7*T**3 - 0.00365895*T**2 - 24.5242231*T*log(T) + 101.700244*T - 7650.085, (T >= 298.15) & (T < 600.61)), (0.00154613*T**2 - 32.4913959*T*log(T) + 154.243182*T - 10531.095 + 8.05448e+25/T**9, (T >= 600.61) & (T < 1200.0)), (9.8144e-8*T**3 - 0.002882943*T**2 - 18.9640637*T*log(T) + 53.139072*T + 4157.616 - 2696755/T + 8.05448e+25/T**9, (T >= 1200.0) & (T < 2100.0))), 'PD': Piecewise((-1.919875e-6*T**3 + 0.007120975*T**2 - 32.211*T*log(T) + 176.076315*T - 10204.027 + 168687/T, (T >= 298.15) & (T < 900.0)), (1.91115e-7*T**3 - 0.00717522*T**2 - 13.5708*T*log(T) + 49.659892*T + 917.062 - 1112465/T, (T >= 900.0) & (T < 1828.0)), (-6.2811e-8*T**3 + 0.002091396*T**2 - 54.2067086*T*log(T) + 370.102147*T - 67161.018 + 18683526/T, (T >= 1828.0) & (T < 4000.0))), 'PR': Piecewise((-2.5184333e-5*T**3 + 0.072929*T**2 - 68.9176*T*log(T) + 356.587384*T - 18803.379 + 507385/T, (T >= 298.15) & (T < 500.0)), (-1.22951e-6*T**3 - 0.00497126*T**2 - 22.8909*T*log(T) + 82.427384*T - 7246.848, (T >= 500.0) & (T < 800.0)), (1.5592233e-5*T**3 - 0.1288205*T**2 + 146.764*T*log(T) - 1073.55111*T + 95411.023 - 11588800/T, (T >= 800.0) & (T < 1068.0)), (-3.0994702e-5*T**3 + 0.305181506*T**2 - 606.120311*T*log(T) + 4234.33311*T - 481663.131 + 70926840/T, (T >= 1068.0) & (T < 1204.0)), (-42.9697*T*log(T) + 227.685155*T - 20014.678, (T >= 1204.0) & (T < 3800.0))), 'PT': Piecewise((-2.0138e-8*T**3 - 0.00248297*T**2 - 24.5526*T*log(T) + 124.388275*T - 7595.631 + 7974/T, (T >= 298.15) & (T < 1300.0)), (-6.56946e-7*T**3 + 0.002321665*T**2 - 30.2527*T*log(T) + 161.529615*T - 9253.174 - 272106/T, (T >= 1300.0) & (T < 2041.5)), (-7.59259e-7*T**3 + 0.020454938*T**2 - 136.192996*T*log(T) + 1019.35892*T - 222048.216 + 71539020/T, (T >= 2041.5) & (T < 4000.0))), 'PU': Piecewise((-0.02241*T**2 - 18.1258*T*log(T) + 80.301382*T - 7396.309, (T >= 298.15) & (T < 400.0)), (2.63443e-7*T**3 - 0.00134493*T**2 - 42.4187*T*log(T) + 236.786603*T - 16605.962 + 579325/T, (T >= 400.0) & (T < 944.0)), (-42.248*T*log(T) + 232.961553*T - 14462.156, (T >= 944.0) & (T < 3000.0))), 'RB': Piecewise((-0.000152236932*T**3 + 0.26277612*T**2 - 115.282589*T*log(T) + 583.580988*T - 21669.733 + 385754/T, (T >= 200.0) & (T < 312.46)), (-4.6822e-7*T**3 + 0.000412369*T**2 - 29.1775424*T*log(T) + 117.050578*T - 7823.397 - 126310/T - 5.55029e+22/T**9, (T >= 312.46) & (T < 900.0)), (-4.829082e-6*T**3 + 0.033795632*T**2 - 77.7006456*T*log(T) + 450.974149*T - 39488.142 + 3778006/T - 5.55029e+22/T**9, (T >= 900.0) & (T < 1600.0)), (-8.61653e-6*T**3 + 0.08161687*T**2 - 191.262774*T*log(T) + 1287.78947*T - 159742.511 + 27738456/T - 5.55029e+22/T**9, (T >= 1600.0) & (T < 2100.0))), 'RE': Piecewise((1.92818e-7*T**3 - 0.00253505*T**2 - 24.348*T*log(T) + 128.421589*T - 7695.279 + 32915/T, (T >= 298.15) & (T < 1200.0)), (-2.81835e-7*T**3 + 0.00224565*T**2 - 33.586*T*log(T) + 194.667426*T - 15775.998 + 1376270/T, (T >= 1200.0) & (T < 2400.0)), (-7.88955e-7*T**3 + 0.01184945*T**2 - 67.956*T*log(T) + 462.110749*T - 70882.739 + 18075200/T, (T >= 2400.0) & (T < 3458.0)), (1.053726e-6*T**3 - 0.033764567*T**2 + 140.831655*T*log(T) - 1211.37186*T + 346325.888 - 134548866.0/T, (T >= 3458.0) & (T < 5000.0)), (-49.519*T*log(T) + 346.997842*T - 78564.296, (T >= 5000.0) & (T < 6000.0))), 'RH': Piecewise((-1.68032e-7*T**3 - 0.003424186*T**2 - 24.0178336*T*log(T) + 132.020923*T - 7848.828 + 55846/T, (T >= 298.15) & (T < 1200.0)), (-1.512774e-6*T**3 + 0.00966345*T**2 - 48.3766632*T*log(T) + 305.771019*T - 28367.852 + 3348162/T, (T >= 1200.0) & (T < 2237.0)), (-5.3978814e-5*T**3 + 1.04921361*T**2 - 3874.21058*T*log(T) + 30151.6342*T - 6237470.48 + 1880362180.0/T, (T >= 2237.0) & (T < 2450.0)), (-50.58456*T*log(T) + 344.889895*T - 44863.489, (T >= 2450.0) & (T < 2500.0))), 'RU': Piecewise((1.7641e-7*T**3 - 0.004062566*T**2 - 22.9143287*T*log(T) + 127.866233*T - 7561.873 + 56377/T, (T >= 298.15) & (T < 1500.0)), (-1.952433e-6*T**3 + 0.018726245*T**2 - 72.3241219*T*log(T) + 489.516214*T - 59448.103 + 11063885/T, (T >= 1500.0) & (T < 2607.0)), (-0.000240245985*T**3 + 5.221639*T**2 - 21329.705*T*log(T) + 168610.517*T - 38588773 + 13082992600.0/T, (T >= 2607.0) & (T < 2740.0)), (-51.8816*T*log(T) + 364.482314*T - 55768.304, (T >= 2740.0) & (T < 4500.0))), 'S': Piecewise((7.754333e-6*T**3 - 0.026529*T**2 - 11.007*T*log(T) + 55.417762*T - 5228.956, (T >= 298.15) & (T < 368.3)), (1.402558e-6*T**3 - 0.010895125*T**2 - 17.941839*T*log(T) + 94.692922*T - 6513.769 + 39910/T, (T >= 368.3) & (T < 1300.0))), 'SB': Piecewise((-3.003415e-6*T**3 + 0.007748768*T**2 - 30.5130752*T*log(T) + 156.154689*T - 9242.858 + 100625/T, (T >= 298.15) & (T < 903.78)), (-31.38*T*log(T) + 169.485872*T - 11738.83 + 1.616849e+27/T**9, (T >= 903.78) & (T < 2000.0))), 'SC': Piecewise((-1.64531e-6*T**3 + 0.00321892*T**2 - 28.1882*T*log(T) + 153.48097*T - 8689.547 + 72177/T, (T >= 298.15) & (T < 800.0)), (-8.59345e-7*T**3 - 0.000573295*T**2 - 24.9132*T*log(T) + 132.759582*T - 7511.295, (T >= 800.0) & (T < 1608.0)), (8.7398e-6*T**3 - 0.117529396*T**2 + 241.441051*T*log(T) - 1817.92245*T + 261143.04 - 50607159/T, (T >= 1608.0) & (T < 2000.0)), (-44.2249*T*log(T) + 286.474338*T - 30515.246, (T >= 2000.0) & (T < 3200.0))), 'SE': Piecewise((-1.5318461e-5*T**3 + 0.02424314*T**2 - 33.6527*T*log(T) + 174.205877*T - 9376.371 + 102249/T, (T >= 298.15) & (T < 494.0)), (-5.611026e-6*T**3 + 0.037144892*T**2 - 81.2006585*T*log(T) + 507.111538*T - 37546.134 + 2614263/T, (T >= 494.0) & (T < 800.0)), (-35.1456*T*log(T) + 197.770166*T - 12193.47, (T >= 800.0) & (T < 1000.0))), 'SI': Piecewise((-3.552e-9*T**3 - 0.001912904*T**2 - 22.8317533*T*log(T) + 137.236859*T - 8162.609 + 176667/T, (T >= 298.15) & (T < 1687.0)), (-27.196*T*log(T) + 167.281367*T - 9457.642 - 4.20369e+30/T**9, (T >= 1687.0) & (T < 3600.0))), 'SM': Piecewise((1.010345e-5*T**3 - 0.050254*T**2 - 1.6485*T*log(T) - 32.10748*T - 3872.013 - 82168/T, (T >= 298.15) & (T < 700.0)), (-7.538383e-6*T**3 + 0.0474522*T**2 - 102.665*T*log(T) + 627.869894*T - 50078.215 + 3861770/T, (T >= 700.0) & (T < 1190.0)), (2.7512152e-5*T**3 - 0.254986338*T**2 + 381.41982*T*log(T) - 2744.50976*T + 289719.819 - 40102102/T, (T >= 1190.0) & (T < 1345.0)), (-50.208*T*log(T) + 282.194375*T - 23056.079, (T >= 1345.0) & (T < 2100.0))), 'SN': Piecewise((-3.192767e-6*T**3 + 0.00051185*T**2 - 25.858*T*log(T) + 122.765451*T - 7958.517 + 18440/T, (T >= 100.0) & (T < 250.0)), (3.121167e-6*T**3 - 0.0188702*T**2 - 15.961*T*log(T) + 65.443315*T - 5855.135 - 61960/T, (T >= 250.0) & (T < 505.08)), (2.623131e-6*T**3 - 0.016814429*T**2 - 8.2590486*T*log(T) + 4.005269*T + 2524.724 - 1081244/T - 1.2307e+25/T**9, (T >= 505.08) & (T < 800.0)), (-28.4512*T*log(T) + 138.99688*T - 8256.959 - 1.2307e+25/T**9, (T >= 800.0) & (T < 3000.0))), 'SR': Piecewise((-1.67477e-7*T**3 - 0.00461225*T**2 - 23.905*T*log(T) + 107.183879*T - 7532.367 - 2055/T, (T >= 298.15) & (T < 820.0)), (1.84189e-7*T**3 - 0.003251266*T**2 - 30.0905432*T*log(T) + 153.196104*T - 13380.102 + 850134/T, (T >= 820.0) & (T < 3000.0))), 'TA': Piecewise((1.70109e-7*T**3 - 0.002623033*T**2 - 23.7592624*T*log(T) + 119.139857*T - 7285.889 - 3293/T, (T >= 298.15) & (T < 1300.0)), (-6.55136e-7*T**3 + 0.006167572*T**2 - 41.137088*T*log(T) + 243.88676*T - 22389.955 + 2429586/T, (T >= 1300.0) & (T < 2500.0)), (1.95033e-7*T**3 - 0.017983376*T**2 + 78.5244752*T*log(T) - 722.59722*T + 229382.886 - 93813648/T, (T >= 2500.0) & (T < 3290.0)), (-1.055148e-6*T**3 + 0.043117795*T**2 - 362.159132*T*log(T) + 2985.49125*T - 1042384.01 + 554714342.0/T, (T >= 3290.0) & (T < 6000.0))), 'TB': Piecewise((-2.5672833e-5*T**3 + 0.0832265*T**2 - 77.5006*T*log(T) + 409.309555*T - 20842.158 + 562430/T, (T >= 298.15) & (T < 600.0)), (-8.05838e-7*T**3 - 0.002757005*T**2 - 25.8659*T*log(T) + 102.61162*T - 8772.606 + 172355/T, (T >= 600.0) & (T < 1200.0)), (-1.067632e-6*T**3 - 0.001676335*T**2 - 25.9584*T*log(T) + 101.7776*T - 7944.942, (T >= 1200.0) & (T < 1562.0)), (-2.044697e-6*T**3 + 0.041615159*T**2 - 200.215695*T*log(T) + 1456.04268*T - 265240.309 + 65043790/T, (T >= 1562.0) & (T < 3000.0))), 'TC': Piecewise((-0.002954747*T**2 - 24.3394*T*log(T) + 132.5101*T - 7947.794 + 63855/T, (T >= 298.15) & (T < 2430.0)), (-47*T*log(T) + 318.286*T - 47759.99 + 6.63829e+32/T**9, (T >= 2430.0) & (T < 4000.0))), 'TE': Piecewise((-5.240417e-6*T**3 + 0.01583435*T**2 - 35.6687*T*log(T) + 183.372894*T - 10544.679 + 155015/T, (T >= 298.15) & (T < 722.66)), (5.006367e-6*T**3 - 0.0362361*T**2 + 13.004*T*log(T) - 129.265373*T + 9160.595 - 1286810/T, (T >= 722.66) & (T < 1150.0)), (-32.5596*T*log(T) + 174.901226*T - 12781.349, (T >= 1150.0) & (T < 1600.0))), 'TH': Piecewise((-5.2883e-7*T**3 - 0.00236725*T**2 - 24.841*T*log(T) + 117.022775*T - 7732.08 + 13010/T, (T >= 298.15) & (T < 1633.0)), (2.36893e-7*T**3 - 0.00358025*T**2 - 39.107*T*log(T) + 237.654918*T - 37352.871 + 7981000/T, (T >= 1633.0) & (T < 2900.0)), (-46.024*T*log(T) + 283.979845*T - 33353.313, (T >= 2900.0) & (T < 4000.0))), 'TI': Piecewise((1.06716e-7*T**3 - 0.004777975*T**2 - 23.9933*T*log(T) + 133.615208*T - 8059.921 + 72636/T, (T >= 298.15) & (T < 900.0)), (-9.0876e-8*T**3 - 0.0042033*T**2 - 23.9887*T*log(T) + 132.988068*T - 7811.815 + 42680/T, (T >= 900.0) & (T < 1155.0)), (2.02715e-7*T**3 - 0.0081465*T**2 - 14.9466*T*log(T) + 66.976538*T + 908.837 - 1477660/T, (T >= 1155.0) & (T < 1941.0)), (-3.04747e-7*T**3 + 0.008204849*T**2 - 87.2182461*T*log(T) + 638.806871*T - 124526.786 + 36699805/T, (T >= 1941.0) & (T < 4000.0))), 'TL': Piecewise((-1.21807e-7*T**3 - 0.0033063*T**2 - 25.2274*T*log(T) + 107.140405*T - 8104.038 + 42058/T, (T >= 200.0) & (T < 577.0)), (-5.19136e-7*T**3 + 0.005228106*T**2 - 38.4130658*T*log(T) + 196.771926*T - 15406.859 + 729665/T, (T >= 577.0) & (T < 1800.0))), 'TM': Piecewise((-3.831156e-6*T**3 + 0.012110965*T**2 - 34.3664974*T*log(T) + 151.037648*T - 10016.715 + 95982/T, (T >= 298.15) & (T < 700.0)), (-3.96694e-7*T**3 + 0.000444753*T**2 - 32.1951269*T*log(T) + 147.957496*T - 14701.965 + 1091664/T, (T >= 700.0) & (T < 1600.0)), (-0.003384563*T**2 - 25.1816969*T*log(T) + 97.98144*T - 8669.227, (T >= 1600.0) & (T < 1818.0)), (1.1689185e-5*T**3 - 0.19093039*T**2 + 534.082763*T*log(T) - 4147.40063*T + 727125.608 - 180382220.0/T, (T >= 1818.0) & (T < 2300.0))), 'U': Piecewise((-4.42605e-6*T**3 + 0.00125156*T**2 - 26.9182*T*log(T) + 130.955151*T - 8407.734 + 38568/T, (T >= 298.15) & (T < 955.0)), (-48.66*T*log(T) + 292.121093*T - 22521.8, (T >= 955.0) & (T < 3000.0))), 'V': Piecewise((1.2175e-7*T**3 - 0.003098*T**2 - 24.134*T*log(T) + 133.346053*T - 7930.43 + 69460/T, (T >= 298.15) & (T < 790.0)), (-6.8e-7*T**3 + 6.25e-5*T**2 - 25.9*T*log(T) + 143.291093*T - 7967.842, (T >= 790.0) & (T < 2183.0)), (-47.43*T*log(T) + 321.140783*T - 41689.864 + 6.44389e+31/T**9, (T >= 2183.0) & (T < 4000.0))), 'W': Piecewise((-5.33e-11*T**4 + 2.07e-7*T**3 - 0.001936*T**2 - 24.1*T*log(T) + 130.4*T - 7646.311 + 44500/T, (T >= 298.15) & (T < 3695.0)), (-54*T*log(T) + 389.362335*T - 82868.801 + 1.528621e+33/T**9, (T >= 3695.0) & (T < 6000.0))), 'Y': Piecewise((-4.17561786e-7*T**3 - 0.00175716414*T**2 - 25.6656992*T*log(T) + 128.572856*T - 8011.09379 + 26911.509/T, (T >= 100.0) & (T < 1000.0)), (-8.2534534e-8*T**3 - 0.0038211802*T**2 - 23.4941827*T*log(T) + 114.497104*T - 7179.74574, (T >= 1000.0) & (T < 1795.15)), (-7.22513088e-8*T**3 + 0.00231774379*T**2 - 56.9527111*T*log(T) + 382.124727*T - 67480.7761 + 18077162.6/T, (T >= 1795.15) & (T < 3700.0))), 'YB': Piecewise((-2.2242e-5*T**3 + 0.04227115*T**2 - 40.0791*T*log(T) + 189.327664*T - 9370.941, (T >= 298.15) & (T < 553.0)), (-0.00256065*T**2 - 26.7591*T*log(T) + 121.065655*T - 8192.154, (T >= 553.0) & (T < 1033.0)), (1.421719e-6*T**3 - 0.017961331*T**2 + 2.7623966*T*log(T) - 89.478241*T + 16034.89 - 3631462/T, (T >= 1033.0) & (T < 2000.0))), 'ZN': Piecewise((-1.264963e-6*T**3 - 0.001712034*T**2 - 23.701314*T*log(T) + 118.470069*T - 7285.787, (T >= 298.15) & (T < 692.68)), (-31.38*T*log(T) + 172.34566*T - 11070.559 + 4.70514e+26/T**9, (T >= 692.68) & (T < 1700.0))), 'ZR': Piecewise((-0.00437791*T**2 - 24.1618*T*log(T) + 125.64905*T - 7827.595 + 34971/T, (T >= 130.0) & (T < 2128.0)), (-42.144*T*log(T) + 262.724183*T - 26085.921 - 1.342896e+31/T**9, (T >= 2128.0) & (T < 6000.0)))}, 'SR2016': {('CU', 'FCC_A1'): Piecewise((GHSERCU, (T >= 1.0) & (T < 10000.0))), ('CU', 'HCP_A3'): Piecewise((-3.38438862938597e-7*T**3 - 0.00121182291077191*T**2 + 8.7685671186*T*log(exp(155.1404/T) - 1.0) + 16.1968683846*T*log(exp(290.9421/T) - 1.0) - 0.321147237334052*T - 10441.4393392344, (T >= 0.01) & (T < 298.15)), (1.29223e-7*T**3 - 0.00265684*T**2 - 24.112392*T*log(T) + 130.685235*T - 7170.458 + 52478/T, (T >= 298.15) & (T < 1357.77)), (-31.38*T*log(T) + 184.003828*T - 12942.0252504739 + 3.64167e+29/T**9, (T >= 1357.77) & (T < 3200.0)), (0, True)), ('CU', 'LIQUID'): Piecewise((-3.40056501515466e-7*T**3 - 0.00121066539331185*T**2 + 8.7685671186*T*log(exp(155.1404/T) - 1.0) + 16.1968683846*T*log(exp(290.9421/T) - 1.0) - 10.033338832193*T + 2379.36422209194, (T >= 0.01) & (T < 298.15)), (-5.8489e-21*T**7 + 1.29223e-7*T**3 - 0.00265684*T**2 - 24.112392*T*log(T) + 120.973331*T + 5650.32106235287 + 52478/T, (T >= 298.15) & (T < 1357.77)), (-31.38*T*log(T) + 173.881484*T + 409.498458129716, (T >= 1357.77) & (T < 3200.0)), (0, True)), ('MG', 'FCC_A1'): Piecewise((-2.18283562784578e-6*T**3 - 6.21802726222479e-5*T**2 + 3.2404446864*T*log(exp(95.82831/T) - 1.0) + 21.6535319868*T*log(exp(247.8675/T) - 1.0) + 0.246565697987779*T - 8158.16393259455, (T >= 0.01) & (T < 298.15)), (-1.393669e-6*T**3 + 0.0004858*T**2 - 26.1849782*T*log(T) + 142.775547*T - 5767.34 + 78950/T, (T >= 298.15) & (T < 922.205302616508)), (-34.3088*T*log(T) + 203.816215*T - 11530.1836392866 + 1.038192e+28/T**9, (T >= 922.205302616508) & (T < 3000.0)), (0, True)), ('MG', 'HCP_A3'): Piecewise((GHSERMG, (T >= 1.0) & (T < 10000.0))), ('MG', 'LIQUID'): Piecewise((-2.2050100179942e-6*T**3 - 4.63131660076452e-5*T**2 + 3.2404446864*T*log(exp(95.82831/T) - 1.0) + 21.6535319868*T*log(exp(247.8675/T) - 1.0) - 7.6943066168765*T - 2555.58510336379, (T >= 0.01) & (T < 298.15)), (-8.0176e-20*T**7 - 1.393669e-6*T**3 + 0.0004858*T**2 - 26.1849782*T*log(T) + 134.838617*T - 165.096999676889 + 78950/T, (T >= 298.15) & (T < 922.205302616508)), (-34.3088*T*log(T) + 195.324057*T - 5439.86911093575, (T >= 922.205302616508) & (T < 10000.0)), (0, True))}, 'SR2016Stable': {'CU': Piecewise((-0.0010514335*T**2 + 8.7685671186*T*log(exp(155.1404/T) - 1.0) + 16.1968683846*T*log(exp(290.9421/T) - 1.0) - 11038.0904080745, (T >= 0.01) & (T < 103.57591)), (-2.15621953171362e-6*T**3 + 0.000288560900942072*T**2 - 0.13879113947248*T*log(T) + 8.7685671186*T*log(exp(155.1404/T) - 1.0) + 16.1968683846*T*log(exp(290.9421/T) - 1.0) + 0.574637617323048*T - 11042.8822142647, (T >= 103.57591) & (T < 210.33309)), (-0.002432585*T**2 + 0.4335558862135*T*log(T) + 8.7685671186*T*log(exp(155.1404/T) - 1.0) + 16.1968683846*T*log(exp(290.9421/T) - 1.0) - 2.20049706600083*T - 11002.7543747764, (T >= 210.33309) & (T < 1357.77)), (-31.38*T*log(T) + 183.555483717662*T - 12730.2995781851 + 7.42232714807953e+28/T**9, (T >= 1357.77) & (T < 3200.0)), (0, True)), 'MG': Piecewise((0.0047195465*T**2 + 3.2404446864*T*log(exp(95.82831/T) - 1.0) + 21.6535319868*T*log(exp(247.8675/T) - 1.0) - 10652.1012810789, (T >= 0.01) & (T < 36.71926)), (-1.53643054262276e-5*T**3 + 0.00810454205399037*T**2 - 0.124294531845816*T*log(T) + 3.2404446864*T*log(exp(95.82831/T) - 1.0) + 21.6535319868*T*log(exp(247.8675/T) - 1.0) + 0.385723396310737*T - 10653.6226154894, (T >= 36.71926) & (T < 143.18844)), (-0.0050954035*T**2 + 1.765785080115*T*log(T) + 3.2404446864*T*log(exp(95.82831/T) - 1.0) + 21.6535319868*T*log(exp(247.8675/T) - 1.0) - 8.0518972866125*T - 10563.4100984519, (T >= 143.18844) & (T < 922.205302616508)), (-34.3088*T*log(T) + 204.341485347575*T - 13775.4156328263 + 9.4687256586798e+27/T**9, (T >= 922.205302616508) & (T < 10000.0)), (0, True))}, 'Symbol': <class 'sympy.core.symbol.Symbol'>, 'T': T, '__builtins__': {'ArithmeticError': <class 'ArithmeticError'>, 'AssertionError': <class 'AssertionError'>, 'AttributeError': <class 'AttributeError'>, 'BaseException': <class 'BaseException'>, 'BlockingIOError': <class 'BlockingIOError'>, 'BrokenPipeError': <class 'BrokenPipeError'>, 'BufferError': <class 'BufferError'>, 'BytesWarning': <class 'BytesWarning'>, 'ChildProcessError': <class 'ChildProcessError'>, 'ConnectionAbortedError': <class 'ConnectionAbortedError'>, 'ConnectionError': <class 'ConnectionError'>, 'ConnectionRefusedError': <class 'ConnectionRefusedError'>, 'ConnectionResetError': <class 'ConnectionResetError'>, 'DeprecationWarning': <class 'DeprecationWarning'>, 'EOFError': <class 'EOFError'>, 'Ellipsis': Ellipsis, 'EnvironmentError': <class 'OSError'>, 'Exception': <class 'Exception'>, 'False': False, 'FileExistsError': <class 'FileExistsError'>, 'FileNotFoundError': <class 'FileNotFoundError'>, 'FloatingPointError': <class 'FloatingPointError'>, 'FutureWarning': <class 'FutureWarning'>, 'GeneratorExit': <class 'GeneratorExit'>, 'IOError': <class 'OSError'>, 'ImportError': <class 'ImportError'>, 'ImportWarning': <class 'ImportWarning'>, 'IndentationError': <class 'IndentationError'>, 'IndexError': <class 'IndexError'>, 'InterruptedError': <class 'InterruptedError'>, 'IsADirectoryError': <class 'IsADirectoryError'>, 'KeyError': <class 'KeyError'>, 'KeyboardInterrupt': <class 'KeyboardInterrupt'>, 'LookupError': <class 'LookupError'>, 'MemoryError': <class 'MemoryError'>, 'ModuleNotFoundError': <class 'ModuleNotFoundError'>, 'NameError': <class 'NameError'>, 'None': None, 'NotADirectoryError': <class 'NotADirectoryError'>, 'NotImplemented': NotImplemented, 'NotImplementedError': <class 'NotImplementedError'>, 'OSError': <class 'OSError'>, 'OverflowError': <class 'OverflowError'>, 'PendingDeprecationWarning': <class 'PendingDeprecationWarning'>, 'PermissionError': <class 'PermissionError'>, 'ProcessLookupError': <class 'ProcessLookupError'>, 'RecursionError': <class 'RecursionError'>, 'ReferenceError': <class 'ReferenceError'>, 'ResourceWarning': <class 'ResourceWarning'>, 'RuntimeError': <class 'RuntimeError'>, 'RuntimeWarning': <class 'RuntimeWarning'>, 'StopAsyncIteration': <class 'StopAsyncIteration'>, 'StopIteration': <class 'StopIteration'>, 'SyntaxError': <class 'SyntaxError'>, 'SyntaxWarning': <class 'SyntaxWarning'>, 'SystemError': <class 'SystemError'>, 'SystemExit': <class 'SystemExit'>, 'TabError': <class 'TabError'>, 'TimeoutError': <class 'TimeoutError'>, 'True': True, 'TypeError': <class 'TypeError'>, 'UnboundLocalError': <class 'UnboundLocalError'>, 'UnicodeDecodeError': <class 'UnicodeDecodeError'>, 'UnicodeEncodeError': <class 'UnicodeEncodeError'>, 'UnicodeError': <class 'UnicodeError'>, 'UnicodeTranslateError': <class 'UnicodeTranslateError'>, 'UnicodeWarning': <class 'UnicodeWarning'>, 'UserWarning': <class 'UserWarning'>, 'ValueError': <class 'ValueError'>, 'Warning': <class 'Warning'>, 'ZeroDivisionError': <class 'ZeroDivisionError'>, '__build_class__': <built-in function __build_class__>, '__debug__': True, '__doc__': "Built-in functions, exceptions, and other objects.\n\nNoteworthy: None is the `nil' object; Ellipsis represents `...' in slices.", '__import__': <built-in function __import__>, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__name__': 'builtins', '__package__': '', '__pybind11_internals_v4_gcc_libstdcpp_cxxabi1013__': <capsule object NULL>, '__spec__': ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>), 'abs': <built-in function abs>, 'all': <built-in function all>, 'any': <built-in function any>, 'ascii': <built-in function ascii>, 'bin': <built-in function bin>, 'bool': <class 'bool'>, 'breakpoint': <built-in function breakpoint>, 'bytearray': <class 'bytearray'>, 'bytes': <class 'bytes'>, 'callable': <built-in function callable>, 'chr': <built-in function chr>, 'classmethod': <class 'classmethod'>, 'compile': <built-in function compile>, 'complex': <class 'complex'>, 'copyright': Copyright (c) 2001-2020 Python Software Foundation. All Rights Reserved. Copyright (c) 2000 BeOpen.com. All Rights Reserved. Copyright (c) 1995-2001 Corporation for National Research Initiatives. All Rights Reserved. Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. All Rights Reserved., 'credits': Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands for supporting Python development. See www.python.org for more information., 'delattr': <built-in function delattr>, 'dict': <class 'dict'>, 'dir': <built-in function dir>, 'divmod': <built-in function divmod>, 'enumerate': <class 'enumerate'>, 'eval': <built-in function eval>, 'exec': <built-in function exec>, 'exit': Use exit() or Ctrl-D (i.e. EOF) to exit, 'filter': <class 'filter'>, 'float': <class 'float'>, 'format': <built-in function format>, 'frozenset': <class 'frozenset'>, 'getattr': <built-in function getattr>, 'globals': <built-in function globals>, 'hasattr': <built-in function hasattr>, 'hash': <built-in function hash>, 'help': Type help() for interactive help, or help(object) for help about object., 'hex': <built-in function hex>, 'id': <built-in function id>, 'input': <built-in function input>, 'int': <class 'int'>, 'isinstance': <built-in function isinstance>, 'issubclass': <built-in function issubclass>, 'iter': <built-in function iter>, 'len': <built-in function len>, 'license': Type license() to see the full license text, 'list': <class 'list'>, 'locals': <built-in function locals>, 'map': <class 'map'>, 'max': <built-in function max>, 'memoryview': <class 'memoryview'>, 'min': <built-in function min>, 'next': <built-in function next>, 'object': <class 'object'>, 'oct': <built-in function oct>, 'open': <built-in function open>, 'ord': <built-in function ord>, 'pow': <built-in function pow>, 'print': <built-in function print>, 'property': <class 'property'>, 'quit': Use quit() or Ctrl-D (i.e. EOF) to exit, 'range': <class 'range'>, 'repr': <built-in function repr>, 'reversed': <class 'reversed'>, 'round': <built-in function round>, 'set': <class 'set'>, 'setattr': <built-in function setattr>, 'slice': <class 'slice'>, 'sorted': <built-in function sorted>, 'staticmethod': <class 'staticmethod'>, 'str': <class 'str'>, 'sum': <built-in function sum>, 'super': <class 'super'>, 'tuple': <class 'tuple'>, 'type': <class 'type'>, 'vars': <built-in function vars>, 'zip': <class 'zip'>}, '__cached__': '/home/docs/checkouts/readthedocs.org/user_builds/espei/checkouts/latest/espei/__pycache__/refdata.cpython-38.pyc', '__doc__': '\nThe refdata module contains pure-element reference state data.\n', '__file__': '/home/docs/checkouts/readthedocs.org/user_builds/espei/checkouts/latest/espei/refdata.py', '__loader__': <_frozen_importlib_external.SourceFileLoader object>, '__name__': 'espei.refdata', '__package__': 'espei', '__spec__': ModuleSpec(name='espei.refdata', loader=<_frozen_importlib_external.SourceFileLoader object>, origin='/home/docs/checkouts/readthedocs.org/user_builds/espei/checkouts/latest/espei/refdata.py'), 'exp': exp, 'find_and_insert_user_refstate': <function find_and_insert_user_refstate>, 'is_pure_element_expr': <function is_pure_element_expr>, 'log': log, 'pure_element_phases': {'AG': 'FCC_A1', 'AL': 'FCC_A1', 'AM': 'DHCP', 'AS': 'RHOMBOHEDRAL_A7', 'AU': 'FCC_A1', 'B': 'DIAMOND_A4', 'BA': 'BCC_A2', 'BE': 'HCP_A3', 'BI': 'RHOMBOHEDRAL_A7', 'C': 'GRAPHITE', 'CA': 'FCC_A1', 'CD': 'HCP_A3', 'CE': 'FCC_A1', 'CO': 'HCP_A3', 'CR': 'BCC_A2', 'CS': 'BCC_A2', 'CU': 'FCC_A1', 'DY': 'HCP_A3', 'ER': 'HCP_A3', 'EU': 'BCC_A2', 'FE': 'BCC_A2', 'GA': 'ORTHORHOMBIC_GA', 'GD': 'HCP_A3', 'GE': 'DIAMOND_A4', 'HF': 'HCP_A3', 'HG': 'LIQUID', 'HO': 'HCP_A3', 'IN': 'TETRAGONAL_A6', 'IR': 'FCC_A1', 'K': 'BCC_A2', 'LA': 'DHCP', 'LI': 'BCC_A2', 'LU': 'HCP_A3', 'MG': 'HCP_A3', 'MN': 'CBCC_A12', 'MO': 'BCC_A2', 'NA': 'BCC_A2', 'NB': 'BCC_A2', 'ND': 'DHCP', 'NI': 'FCC_A1', 'NP': 'ORTHO_AC', 'OS': 'HCP_A3', 'P': 'WHITE_P', 'PA': 'BCT_AA', 'PB': 'FCC_A1', 'PD': 'FCC_A1', 'PR': 'DHCP', 'PT': 'FCC_A1', 'PU': 'ALPHA_PU', 'RB': 'BCC_A2', 'RE': 'HCP_A3', 'RH': 'FCC_A1', 'RU': 'HCP_A3', 'S': 'ORTHORHOMBIC_S', 'SB': 'RHOMBOHEDRAL_A7', 'SC': 'HCP_A3', 'SE': 'HEXAGONAL_A8', 'SI': 'DIAMOND_A4', 'SM': 'RHOMB', 'SN': 'BCT_A5', 'SR': 'FCC_A1', 'TA': 'BCC_A2', 'TB': 'HCP_A3', 'TC': 'HCP_A3', 'TE': 'HEXAGONAL_A8', 'TH': 'FCC_A1', 'TI': 'HCP_A3', 'TL': 'HCP_A3', 'TM': 'HCP_A3', 'U': 'ORTHORHOMBIC_A20', 'V': 'BCC_A2', 'W': 'BCC_A2', 'Y': 'HCP_A3', 'YB': 'FCC_A1', 'ZN': 'HCP_A3', 'ZR': 'HCP_A3'}, 'ser_dict': {'/-': {'H298': 0.0, 'S298': 0.0, 'mass': 0.0, 'phase': 'ELECTRON_GAS'}, 'AG': {'H298': 5744.6, 'S298': 42.551, 'mass': 107.87, 'phase': 'FCC_A1'}, 'AL': {'H298': 4577.3, 'S298': 28.322, 'mass': 26.982, 'phase': 'FCC_A1'}, 'AM': {'H298': 0.0, 'S298': 0.0, 'mass': 243.06, 'phase': 'DHCP'}, 'AS': {'H298': 0.0, 'S298': 0.0, 'mass': 74.922, 'phase': 'RHOMBOHEDRAL_A7'}, 'AU': {'H298': 6016.6, 'S298': 47.488, 'mass': 196.97, 'phase': 'FCC_A1'}, 'B': {'H298': 1222.0, 'S298': 5.9, 'mass': 10.811, 'phase': 'BETA_RHOMBO_B'}, 'BA': {'H298': 0.0, 'S298': 0.0, 'mass': 137.33, 'phase': 'BCC_A2'}, 'BE': {'H298': 0.0, 'S298': 0.0, 'mass': 9.0122, 'phase': 'HCP_A3'}, 'BI': {'H298': 6426.6, 'S298': 56.735, 'mass': 208.98, 'phase': 'RHOMBOHEDRAL_A7'}, 'C': {'H298': 1054.0, 'S298': 5.74, 'mass': 12.011, 'phase': 'GRAPHITE'}, 'CA': {'H298': 6196.5, 'S298': 41.589, 'mass': 40.078, 'phase': 'FCC_A1'}, 'CD': {'H298': 6250.9, 'S298': 51.798, 'mass': 112.41, 'phase': 'HCP_A3'}, 'CE': {'H298': 0.0, 'S298': 0.0, 'mass': 140.11, 'phase': 'FCC_A1'}, 'CO': {'H298': 0.0, 'S298': 0.0, 'mass': 58.933, 'phase': 'HCP_A3'}, 'CR': {'H298': 4050.0, 'S298': 23.56, 'mass': 51.996, 'phase': 'BCC_A2'}, 'CS': {'H298': 7715.3, 'S298': 85.149, 'mass': 132.91, 'phase': 'BCC_A2'}, 'CU': {'H298': 5004.1, 'S298': 33.15, 'mass': 63.546, 'phase': 'FCC_A1'}, 'DY': {'H298': 0.0, 'S298': 0.0, 'mass': 162.5, 'phase': 'HCP_A3'}, 'ER': {'H298': 7392.3, 'S298': 73.178, 'mass': 167.26, 'phase': 'HCP_A3'}, 'EU': {'H298': 0.0, 'S298': 80.793, 'mass': 151.97, 'phase': 'BCC_A2'}, 'FE': {'H298': 4489.0, 'S298': 27.28, 'mass': 55.847, 'phase': 'BCC_A2'}, 'GA': {'H298': 5573.1, 'S298': 40.828, 'mass': 69.723, 'phase': 'ORTHORHOMBIC_GA'}, 'GD': {'H298': 0.0, 'S298': 0.0, 'mass': 157.25, 'phase': 'HCP_A3'}, 'GE': {'H298': 4627.5, 'S298': 31.087, 'mass': 72.61, 'phase': 'DIAMOND_A4'}, 'HF': {'H298': 0.0, 'S298': 0.0, 'mass': 178.49, 'phase': 'HCP_A3'}, 'HG': {'H298': 0.0, 'S298': 0.0, 'mass': 200.59, 'phase': 'LIQUID'}, 'HO': {'H298': 0.0, 'S298': 0.0, 'mass': 164.93, 'phase': 'HCP_A3'}, 'IN': {'H298': 6610.0, 'S298': 57.65, 'mass': 114.82, 'phase': 'TETRAGONAL_A6'}, 'IR': {'H298': 5267.7, 'S298': 35.505, 'mass': 192.22, 'phase': 'FCC_A1'}, 'K': {'H298': 7083.5, 'S298': 64.672, 'mass': 39.098, 'phase': 'BCC_A2'}, 'LA': {'H298': 0.0, 'S298': 0.0, 'mass': 138.91, 'phase': 'DHCP'}, 'LI': {'H298': 4623.3, 'S298': 29.095, 'mass': 6.941, 'phase': 'BCC_A2'}, 'LU': {'H298': 0.0, 'S298': 0.0, 'mass': 174.97, 'phase': 'HCP_A3'}, 'MG': {'H298': 4998.0, 'S298': 32.671, 'mass': 24.305, 'phase': 'HCP_A3'}, 'MN': {'H298': 4996.0, 'S298': 32.008, 'mass': 54.938, 'phase': 'CBCC_A12'}, 'MO': {'H298': 4589.0, 'S298': 28.56, 'mass': 95.94, 'phase': 'BCC_A2'}, 'N': {'H298': 4335.0, 'S298': 95.751, 'mass': 14.007, 'phase': '1/2_MOLE_N2(G)'}, 'NA': {'H298': 6447.5, 'S298': 51.447, 'mass': 22.99, 'phase': 'BCC_A2'}, 'NB': {'H298': 5220.0, 'S298': 36.27, 'mass': 92.906, 'phase': 'BCC_A2'}, 'ND': {'H298': 0.0, 'S298': 0.0, 'mass': 144.24, 'phase': 'DHCP'}, 'NI': {'H298': 4787.0, 'S298': 29.796, 'mass': 58.69, 'phase': 'FCC_A1'}, 'NP': {'H298': 0.0, 'S298': 0.0, 'mass': 237.05, 'phase': 'ORTHORHOMBIC_AC'}, 'O': {'H298': 4341.0, 'S298': 102.52, 'mass': 15.999, 'phase': '1/2_MOLE_O2(G)'}, 'OS': {'H298': 0.0, 'S298': 32.635, 'mass': 190.2, 'phase': 'HCP_A3'}, 'P': {'H298': 0.0, 'S298': 0.0, 'mass': 30.974, 'phase': 'WHITE_P'}, 'PA': {'H298': 0.0, 'S298': 0.0, 'mass': 231.04, 'phase': 'BCT_AA'}, 'PB': {'H298': 6878.5, 'S298': 64.785, 'mass': 207.2, 'phase': 'FCC_A1'}, 'PD': {'H298': 5468.5, 'S298': 37.823, 'mass': 106.42, 'phase': 'FCC_A1'}, 'PR': {'H298': 0.0, 'S298': 0.0, 'mass': 140.91, 'phase': 'DHCP'}, 'PT': {'H298': 5723.7, 'S298': 41.631, 'mass': 195.08, 'phase': 'FCC_A1'}, 'PU': {'H298': 0.0, 'S298': 0.0, 'mass': 244.06, 'phase': 'ALPHA_PU'}, 'RB': {'H298': 7489.4, 'S298': 76.776, 'mass': 85.468, 'phase': 'BCC_A2'}, 'RE': {'H298': 5355.5, 'S298': 36.526, 'mass': 186.21, 'phase': 'HCP_A3'}, 'RH': {'H298': 4920.4, 'S298': 31.505, 'mass': 102.91, 'phase': 'FCC_A1'}, 'RU': {'H298': 4602.4, 'S298': 28.535, 'mass': 101.07, 'phase': 'HCP_A3'}, 'S': {'H298': 0.0, 'S298': 0.0, 'mass': 32.066, 'phase': 'ORTHORHOMBIC_S'}, 'SB': {'H298': 5870.2, 'S298': 45.522, 'mass': 121.75, 'phase': 'RHOMBOHEDRAL_A7'}, 'SC': {'H298': 0.0, 'S298': 0.0, 'mass': 44.956, 'phase': 'HCP_A3'}, 'SE': {'H298': 5514.5, 'S298': 41.966, 'mass': 78.96, 'phase': 'HEXAGONAL_A8'}, 'SI': {'H298': 3217.5, 'S298': 18.82, 'mass': 28.085, 'phase': 'DIAMOND_A4'}, 'SM': {'H298': 0.0, 'S298': 0.0, 'mass': 150.36, 'phase': 'RHOMBOHEDRAL_SM'}, 'SN': {'H298': 6322.0, 'S298': 51.195, 'mass': 118.71, 'phase': 'BCT_A5'}, 'SR': {'H298': 0.0, 'S298': 0.0, 'mass': 87.62, 'phase': 'FCC_A1'}, 'TA': {'H298': 5681.9, 'S298': 41.472, 'mass': 180.95, 'phase': 'BCC_A2'}, 'TB': {'H298': 0.0, 'S298': 0.0, 'mass': 158.93, 'phase': 'HCP_A3'}, 'TC': {'H298': 0.0, 'S298': 0.0, 'mass': 97.907, 'phase': 'HCP_A3'}, 'TE': {'H298': 6121.2, 'S298': 49.497, 'mass': 127.6, 'phase': 'HEXAGONAL_A8'}, 'TH': {'H298': 0.0, 'S298': 0.0, 'mass': 232.04, 'phase': 'FCC_A1'}, 'TI': {'H298': 4810.0, 'S298': 30.648, 'mass': 47.88, 'phase': 'HCP_A3'}, 'TL': {'H298': 6828.3, 'S298': 64.183, 'mass': 204.38, 'phase': 'HCP_A3'}, 'TM': {'H298': 7397.3, 'S298': 74.015, 'mass': 168.93, 'phase': 'HCP_A3'}, 'U': {'H298': 0.0, 'S298': 0.0, 'mass': 238.03, 'phase': 'ORTHORHOMBIC_A20'}, 'V': {'H298': 4507.0, 'S298': 30.89, 'mass': 50.941, 'phase': 'BCC_A2'}, 'VA': {'H298': 0.0, 'S298': 0.0, 'mass': 0.0, 'phase': 'VACUUM'}, 'W': {'H298': 4970.0, 'S298': 32.62, 'mass': 183.85, 'phase': 'BCC_A2'}, 'Y': {'H298': 0.0, 'S298': 0.0, 'mass': 88.906, 'phase': 'HCP_A3'}, 'YB': {'H298': 0.0, 'S298': 0.0, 'mass': 173.04, 'phase': 'FCC_A1'}, 'ZN': {'H298': 5656.8, 'S298': 41.631, 'mass': 65.39, 'phase': 'HCP_A3'}, 'ZR': {'H298': 5566.3, 'S298': 39.181, 'mass': 91.224, 'phase': 'HCP_A3'}}})

Discover user reference states entered as a setuptools entry_point

Parameters
  • entry_point_plugin_name (str) – Name of the key in the setuptools.setup entry_points dictionary.

  • namespace (dict) – A dictionary that the stable reference state and lattice stabilities will be added to. Defaults to globals(), which is this module’s namespace.

Notes

By default, it will enter the data into the globals() namespace, meaning this module’s namespace. Since ESPEI looks up reference states by something like getattr(espei.refdata, 'SGTE91Stable'), this is usually the desired behavior.

Some helpful links on how this works:

Packages wanting to hook into this should add the following keyword argument to their setuptools.setup function call in their setup.py file: entry_points={'espei.reference_states': 'BOCK2015 = refstate'}, where BOCK2015 is the name of the reference state and refstate is the name of the module containing the dictionaries for BOCK2015 and BOCK2015, which define the reference states.

espei.refdata.is_pure_element_expr(piecewise_expr)

espei.rstate module

espei.shadow_functions module

Fast versions of equilibrium and calculate that “override” the equivalent pycalphad functions for very fast performance.

espei.shadow_functions.calculate_(dbf: pycalphad.io.database.Database, species: Sequence[pycalphad.variables.Species], phases: Sequence[str], str_statevar_dict: Dict[str, numpy.ndarray], models: Dict[str, pycalphad.model.Model], phase_records: Dict[str, pycalphad.core.phase_rec.PhaseRecord], output: Optional[str] = 'GM', points: Optional[Dict[str, numpy.ndarray]] = None, pdens: Optional[int] = 2000, broadcast: Optional[bool] = True, fake_points: Optional[bool] = False) → pycalphad.core.light_dataset.LightDataset

Quickly sample phase internal degree of freedom with virtually no overhead.

espei.shadow_functions.equilibrium_(species: Sequence[pycalphad.variables.Species], phase_records: Dict[str, pycalphad.core.phase_rec.PhaseRecord], conditions: Dict[pycalphad.variables.StateVariable, numpy.ndarray], grid: pycalphad.core.light_dataset.LightDataset) → pycalphad.core.light_dataset.LightDataset

Perform a fast equilibrium calculation with virtually no overhead.

espei.shadow_functions.no_op_equilibrium_(_, phase_records: Dict[str, pycalphad.core.phase_rec.PhaseRecord], conditions: Dict[pycalphad.variables.StateVariable, numpy.ndarray], grid: pycalphad.core.light_dataset.LightDataset) → pycalphad.core.light_dataset.LightDataset

Perform a fast “equilibrium” calculation with virtually no overhead that doesn’t refine the solution or do global minimization, but just returns the starting point.

Notes

Uses a placeholder first argument for the same signature as _equilibrium, but species are not needed.

espei.shadow_functions.update_phase_record_parameters(phase_records: Dict[str, pycalphad.core.phase_rec.PhaseRecord], parameters: numpy.ndarray) → None

espei.sublattice_tools module

Utilities for manipulating sublattice models.

espei.sublattice_tools.canonical_sort_key(x)

Wrap strings in tuples so they’ll sort.

Parameters

x (list) – List of strings to sort

Returns

tuple of strings that can be sorted

Return type

tuple

espei.sublattice_tools.canonicalize(configuration, equivalent_sublattices)

Sort a sequence with symmetry. This routine gives the sequence a deterministic ordering while respecting symmetry.

Parameters
  • configuration ([str]) – Sublattice configuration to sort.

  • equivalent_sublattices ({{int}}) – Indices of ‘configuration’ which should be equivalent by symmetry, i.e., [[0, 4], [1, 2, 3]] means permuting elements 0 and 4, or 1, 2 and 3, respectively, has no effect on the equivalence of the sequence.

Returns

sorted tuple that has been canonicalized.

Return type

str

espei.sublattice_tools.endmembers_from_interaction(configuration)

For a given configuration with possible interactions, return all the endmembers

espei.sublattice_tools.generate_endmembers(sublattice_model, symmetry=None)

Return all the unique endmembers by symmetry for a given sublattice model.

Parameters
  • sublattice_model (list of lists) – General sublattice model, with each sublattice as a sublist.

  • symmetry (list of lists, optional) – List of lists containing symmetrically equivalent sublattice indices. If None (default), all endmembers will be returned.

Returns

List of endmember tuples

Return type

list

Examples

>>> subl_model = [['A', 'B'], ['A','B']]
>>> generate_endmembers(subl_model)  # four endmembers
[('A', 'A'), ('A', 'B'), ('B', 'A'), ('B', 'B')]
>>> # three endmembers, ('A', 'B') is equivalent to ('B', 'A') by symmetry.
>>> generate_endmembers(subl_model, [[0, 1]])  # the first and second sublattices are symmetrically equivalent.
[('A', 'A'), ('A', 'B'), ('B', 'B')]
espei.sublattice_tools.generate_interactions(endmembers, order, symmetry)

Returns a list of sorted interactions of a certain order

Parameters
  • endmembers (list) – List of tuples/strings of all endmembers (including symmetrically equivalent)

  • order (int) – Highest expected interaction order, e.g. ternary interactions should be 3

  • symmetry (list of lists) – List of lists containing symmetrically equivalent sublattice indices, e.g. [[0, 1], [2, 3]] means that sublattices 0 and 1 are equivalent and sublattices 2 and 3 are also equivalent.

Returns

List of interaction tuples, e.g. [(‘A’, (‘A’, ‘B’))]

Return type

list

espei.sublattice_tools.generate_symmetric_group(configuration, symmetry)

For a particular configuration and list of sublattices with symmetry, generate all the symmetrically equivalent configurations.

Parameters
  • configuration (tuple) – Tuple of a sublattice configuration.

  • symmetry (list of lists) – List of lists containing symmetrically equivalent sublattice indices, e.g. [[0, 1], [2, 3]] means that sublattices 0 and 1 are equivalent and sublattices 2 and 3 are also equivalent.

Returns

Tuple of configuration tuples that are all symmetrically equivalent.

Return type

tuple

espei.sublattice_tools.interaction_test(configuration, order=None)

Returns True if the configuration has an interaction

Parameters

order (int, optional) – Specific order to check for. E.g. a value of 3 checks for ternary interactions

Returns

True if there is an interaction.

Return type

bool

Examples

>>> configuration = [['A'], ['A','B']]
>>> interaction_test(configuration)
True
>>> interaction_test(configuration, order=2)
True
>>> interaction_test(configuration, order=3)
False
espei.sublattice_tools.recursive_tuplify(x)

Recursively convert a nested list to a tuple

espei.sublattice_tools.sorted_interactions(interactions, max_interaction_order, symmetry)

Return interactions sorted by interaction order

Parameters
  • interactions (list) – List of tuples/strings of potential interactions

  • max_interaction_order (int) – Highest expected interaction order, e.g. ternary interactions should be 3

  • symmetry (list of lists) – List of lists containing symmetrically equivalent sublattice indices, e.g. [[0, 1], [2, 3]] means that sublattices 0 and 1 are equivalent and sublattices 2 and 3 are also equivalent.

Returns

Sorted list of interactions

Return type

list

Notes

Sort by number of full interactions, e.g. (A:A,B) is before (A,B:A,B) The goal is to return a sort key that can sort through multiple interaction orders, e.g. (A:A,B,C), which should be before (A,B:A,B,C), which should be before (A,B,C:A,B,C).

espei.sublattice_tools.tuplify(x)

Convert a list to a tuple, or wrap an object in a tuple if it’s not a list or tuple.

espei.utils module

Utilities for ESPEI

Classes and functions defined here should have some reuse potential.

class espei.utils.ImmediateClient(address=None, loop=None, timeout='__no_default__', set_as_default=True, scheduler_file=None, security=None, asynchronous=False, name=None, heartbeat_interval=None, serializers=None, deserializers=None, extensions=[<class 'distributed.pubsub.PubSubClientExtension'>], direct_to_workers=None, connection_limit=512, **kwargs)

Bases: distributed.client.Client

A subclass of distributed.Client that automatically unwraps the Futures returned by map.

map(f, *iterators, **kwargs)

Map a function on a sequence of arguments.

Any keyword arguments are passed to distributed.Client.map

class espei.utils.PickleableTinyDB(*args, **kwargs)

Bases: tinydb.database.TinyDB

A pickleable version of TinyDB that uses MemoryStorage as a default.

espei.utils.add_bibtex_to_bib_database(bibtex, bib_db=None)

Add entries from a BibTeX file to the bibliography database

Parameters
  • bibtex (str) – Either a multiline string, a path, or a file-like object of a BibTeX file

  • bib_db (PickleableTinyDB) – Database to put the BibTeX entries. Defaults to a module-level default database

Returns

Return type

The modified bibliographic database

espei.utils.bib_marker_map(bib_keys, markers=None)

Return a dict with reference keys and marker dicts

Parameters
  • bib_keys

  • markers (list) – List of 2-tuples of (‘fillstyle’, ‘marker’) e.g. [(‘top’, ‘o’), (‘full’, ‘s’)]. Defaults to cycling through the filled markers, the different fill styles.

Returns

Dictionary with bib_keys as keys, dict values of formatted strings and marker dicts

Return type

dict

Examples

>>> mm = bib_marker_map(['otis2016', 'bocklund2018'])
>>> mm == {'bocklund2018': {'formatted': 'bocklund2018', 'markers': {'fillstyle': 'none', 'marker': 'o'}}, 'otis2016': {'formatted': 'otis2016', 'markers': {'fillstyle': 'none', 'marker': 'v'}}}
True
espei.utils.build_sitefractions(phase_name, sublattice_configurations, sublattice_occupancies)

Convert nested lists of sublattice configurations and occupancies to a list of dictionaries. The dictionaries map SiteFraction symbols to occupancy values. Note that zero occupancy site fractions will need to be added separately since the total degrees of freedom aren’t known in this function.

Parameters
  • phase_name (str) – Name of the phase

  • sublattice_configurations ([[str]]) – sublattice configuration

  • sublattice_occupancies ([[float]]) – occupancy of each sublattice

Returns

a list of site fractions over sublattices

Return type

[[float]]

espei.utils.database_symbols_to_fit(dbf, symbol_regex='^V[V]?([0-9]+)$')

Return names of the symbols to fit that match the regular expression

Parameters
  • dbf (Database) – pycalphad Database

  • symbol_regex (str) – Regular expression of the fitting symbols. Defaults to V or VV followed by one or more numbers.

Returns

Context dictionary for different methods of calculation the error.

Return type

dict

espei.utils.flexible_open_string(obj)

Return the string of a an object that is either file-like, a file path, or the raw string.

Parameters

obj (string-like or file-like) – Either a multiline string, a path, or a file-like object

Returns

Return type

str

espei.utils.formatted_constituent_array(constituent_array)

Given a constituent array of Species, return the classic CALPHAD-style interaction.

Parameters

constituent_array (list) – List of sublattices, which are lists of Species in that sublattice

Returns

String of the constituent array formatted in the classic CALPHAD style

Return type

str

Examples

>>> from pycalphad import variables as v
>>> const_array = [[v.Species('CU'), v.Species('MG')], [v.Species('MG')]]
>>> formatted_constituent_array(const_array)
'CU,MG:MG'
espei.utils.formatted_parameter(dbf, symbol, unique=True)

Get the deconstructed pretty parts of the parameter/term a symbol belongs to in a Database.

Parameters
  • dbf (pycalphad.Database) –

  • symbol (string or sympy.Symbol) – Symbol in the Database to get the parameter for.

  • unique (bool) – If True, will raise if more than one parameter containing the symbol is found.

Returns

A named tuple with the following attributes: phase_name, interaction, symbol, term, parameter_type or term_symbol (which is just the Symbol * temperature term)

Return type

FormattedParameter

espei.utils.optimal_parameters(trace_array, lnprob_array, kth=0)

Return the optimal parameters in the trace based on the highest likelihood. If kth is specified, return the kth set of unique optimal parameters.

Parameters
  • trace_array (ndarray) – Array of shape (number of chains, iterations, number of parameters)

  • lnprob_array (ndarray) – Array of shape (number of chains, iterations)

  • kth (int) – Zero-indexed optimum. 0 (the default) is the most optimal solution. 1 is the second most optimal, etc.. Only unique solutions will be returned.

Returns

Return type

Array of optimal parameters

Notes

It is ok if the calculation did not finish and the arrays are padded with zeros. The number of chains and iterations in the trace and lnprob arrays must match.

Examples

>>> from espei.utils import optimal_parameters
>>> trace = np.array([[[1, 0], [2, 0], [3, 0], [0, 0]], [[0, 2], [0, 4], [0, 6], [0, 0]]])  # 3 iterations of 4 allocated
>>> lnprob = np.array([[-6, -4, -2, 0], [-3, -1, -2, 0]])
>>> np.all(np.isclose(optimal_parameters(trace, lnprob), np.array([0, 4])))
True
espei.utils.parameter_term(expression, symbol)

Determine the term, e.g. T*log(T) that belongs to the symbol in expression

Parameters
  • expression

  • symbol

espei.utils.popget(d, key, default=None)

Get the key from the dict, returning the default if not found.

Parameters
  • d (dict) – Dictionary to get key from.

  • key (object) – Key to get from the dictionary.

  • default (object) – Default to return if key is not found in dictionary.

Returns

Return type

object

Examples

>>> d = {'ABC': 5.0}
>>> popget(d, 'ZPF', 1.0) == 1.0
True
>>> popget(d, 'ABC', 1.0) == 5.0
True
espei.utils.sigfigs(x, n)

Round x to n significant digits

espei.utils.unpack_piecewise(x)

espei.validation module

Module contents

ESPEI