rampedpyrox.Daem

class rampedpyrox.Daem(E, log10omega, t, T)[source]

Class to calculate the DAEM model transform. Used for ramped-temperature kinetic problems such as Ramped PyrOx, pyGC, TGA, etc.

Parameters:
  • E (array-like) – Array of E values, in kJ/mol. Length nE.
  • log10omega (scalar, array-like, or lambda function) – Arrhenius pre-exponential factor, either a constant value, array-like with length nE, or a lambda function of E (in kJ).
  • t (array-like) – Array of time, in seconds. Length nt.
  • T (array-like) – Array of temperature, in Kelvin. Length nt.

Warning

UserWarning
If attempting to use isothermal data to create a Daem model instance.

See also

RpoThermogram
rp.TimeData subclass for storing and analyzing RPO time/temperature data.
EnergyComplex
rp.RateData subclass for storing and analyzing RPO rate data.

Examples

Creating a DAEM using manually-inputted E, omega, t, and T:

#import modules
import numpy as np
import rampedpyrox as rp

#generate arbitrary data
t = np.arange(1,100) #100 second experiment
beta = 0.5 #K/second
T = beta*t + 273.15 #K

E = np.arange(50, 350) #kJ/mol
log10omega = 10 #s-1

#create instance
daem = rp.Daem(E, log10omega, t, T)

Creating a DAEM from real thermogram data using the rp.Daem.from_timedata class method:

#import modules
import rampedpyrox as rp

#create thermogram instance
tg = rp.RpoThermogram.from_csv('some_data_file.csv')

#create Daem instance
daem = rp.Daem.from_timedata(
        tg,
        E_max = 350,
        E_min = 50,
        nE = 250,
        log10omega = 10)

Creating a DAEM from an energy complex using the rp.Daem.from_ratedata class method:

#import modules
import rampedpyrox as rp

#create energycomplex instance
ec = rp.EnergyComplex(E, p0E)

#create Daem instance
daem = rp.Daem.from_ratedata(
        ec,
        beta = 0.08,
        log10omega = 10,
        nt = 250,
        t0 = 0,
        T0 = 373,
        tf = 1e4)

Plotting the L-curve of a Daem to find the best-fit lambda value:

#import modules
import matplotlib.pyplot as plt

#create figure
fig, ax = plt.subplots(1,1)

#plot L curve
lam_best, ax = daem.calc_L_curve(
        tg,
        ax = None,
        plot = True,
        lam_min = 1e-3,
        lam_max = 1e2,
        nLam = 150)

Attributes

A : np.ndarray

E : np.ndarray
Array of E values, in kJ/mol. Length nE.
nE : int
Number of activation energy points.
nt : int
Number of timepoints.
t : np.ndarray
Array of timepoints, in seconds. Length nt.
T : np.ndarray
Array of temperature, in Kelvin. Length nt.

References

[1] R.L Braun and A.K. Burnham (1987) Analysis of chemical reaction
kinetics using a distribution of activation energies and simpler models. Energy & Fuels, 1, 153-161.
[2] B. Cramer (2004) Methane generation from coal during open system
pyrolysis investigated by isotope specific, Gaussian distributed reaction kinetics. Organic Geochemistry, 35, 279-392.
[3] V. Dieckmann (2005) Modeling petroleum formation from heterogeneous
source rocks: The influence of frequency factors on activation energy distribution and geological prediction. Marine and Petroleum Geology, 22, 375-390.
[4] D.C. Forney and D.H. Rothman (2012) Common structure in the
heterogeneity of plant-matter decay. Journal of the Royal Society Interface, rsif.2012.0122.
[5] D.C. Forney and D.H. Rothman (2012) Inverse method for calculating
respiration rates from decay time series. Biogeosciences, 9, 3601-3612.
[6] P.C. Hansen (1994) Regularization tools: A Matlab package for analysis
and solution of discrete ill-posed problems. Numerical Algorithms, 6, 1-35.
[7] C.C. Lakshmananan et al. (1991) Implications of multiplicity in
kinetic parameters to petroleum exploration: Distributed activation energy models. Energy & Fuels, 5, 110-117.
[8] J.E. White et al. (2011) Biomass pyrolysis kinetics: A comparative
critical review with relevant agricultural residue case studies. Journal of Analytical and Applied Pyrolysis, 91, 1-33.

Methods

calc_L_curve(timedata[, ax, nLam, lam_max, …]) Function to calculate the L-curve for a given model and timedata instance in order to choose the best-fit smoothing parameter, lambda.
from_ratedata(ratedata[, beta, log10omega, …]) Class method to directly generate an rp.Daem instance using data stored in an rp.RateData instance.
from_timedata(timedata[, E_max, E_min, …]) Class method to directly generate an rp.Daem instance using data stored in an rp.TimeData instance.