Source code for pyretis.analysis.energy_analysis

# -*- coding: utf-8 -*-
# Copyright (c) 2019, PyRETIS Development Team.
# Distributed under the LGPLv2.1+ License. See LICENSE for more info.
"""Methods for analysing energy data from simulations.

Important methods defined here
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

analyse_energies (py:func:`.analyse_energies`)
    Run the analysis for energies (kinetic, potential etc.).
"""
import numpy as np
from scipy.stats import gamma
from pyretis.analysis.analysis import analyse_data


__all__ = ['analyse_energies']


[docs]def analyse_energies(energies, settings): """Run the energy analysis on several energy types. The function will run the energy analysis on several energy types and collect the energies into a structure which is convenient for plotting the results. Parameters ---------- energies : dict This dict contains the energies to analyse. settings : dict This dictionary contains settings for the analysis. Returns ------- results : dict For each energy key `results[key]` contains the result from the energy analysis. See Also -------- :py:func:`.analyse_data` in :py:mod:`pyretis.analysis.analysis.py`. """ results = {} for key in energies: results[key] = analyse_data(energies[key], settings) # For the energy analysis it is also useful to add some # theoretical distributions: alp = (0.5 * settings['particles']['npart'] * settings['system']['dimensions']) scale = {'ekin': 1.0 / settings['system']['beta'], 'temp': settings['system']['temperature'] / alp} for key in scale: if key in results: dist = results[key]['distribution'] pos = np.linspace(min(0.0, dist[1].min()), dist[1].max(), 1000) tdist = gamma.pdf(pos, alp, loc=0, scale=scale[key]) results[key]['boltzmann-dist'] = [tdist, pos, (0.0, scale[key])] return results