tmmc-lnpy
#
Overview#
A package to analyze \(\ln \Pi(N)\) data from Transition Matrix Monte Carlo simulation. The main output from TMMC simulations, \(\ln \Pi(N)\), provides a means to calculate a host of thermodynamic properties. Moreover, if \(\ln \Pi(N)\) is calculated at a specific chemical potential, it can be reweighted to provide thermodynamic information at a different chemical potential
Features#
tmmc-lnpy
provides a wide array of routines to analyze \(\ln \Pi(N)\). These
include:
Reweighting to arbitrary chemical potential
Segmenting \(\ln \Pi(N)\) (to identify unique phases)
Containers for interacting with several values of \(\ln \Pi(N)\) in a vectorized way.
Calculating thermodynamic properties from these containers
Calculating limits of stability, and phase equilibrium
Status#
This package is actively used by the author. Please feel free to create a pull request for wanted features and suggestions!
Quick start#
Use one of the following
pip install tmmc-lnpy
or
conda install -c conda-forge tmmc-lnpy
Example usage#
Note that the distribution name tmmc-lnpy
is different than the import name
lnpy
due to name clashing on pypi.
>>> import numpy as np
>>> import lnpy
>>> import lnpy.examples
>>> ref = lnpy.examples.load_example_lnpimasked("lj_sub")
>>> phase_creator = lnpy.PhaseCreator(nmax=1, ref=ref)
>>> build_phases = phase_creator.build_phases_mu([None])
>>> collection = lnpy.lnPiCollection.from_builder(
... lnzs=np.linspace(-10, 3, 5), build_phases=build_phases
... )
# Collections are like pandas.Series
>>> collection
<class lnPiCollection>
lnz_0 phase
-10.00 0 [-10.0]
-6.75 0 [-6.75]
-3.50 0 [-3.5]
-0.25 0 [-0.25]
3.00 0 [3.0]
dtype: object
# Access xarray backend for Grand Canonical properties with `xge` accessor
>>> collection.xge.betaOmega()
<xarray.DataArray 'betaOmega' (lnz_0: 5, phase: 1)> Size: 40B
array([[-2.3245e-02],
[-6.0370e-01],
[-1.8552e+02],
[-1.5447e+03],
[-2.9580e+03]])
Coordinates:
* lnz_0 (lnz_0) float64 40B -10.0 -6.75 -3.5 -0.25 3.0
* phase (phase) int64 8B 0
beta float64 8B 1.372
volume float64 8B 512.0
Attributes:
dims_n: ['n_0']
dims_lnz: ['lnz_0']
dims_comp: ['component']
dims_state: ['lnz_0', 'beta', 'volume']
dims_rec: ['sample']
standard_name: grand_potential
long_name: $\beta \Omega(\mu,V,T)$