Freeman-Carroll Method¶
- freeman_carroll_method(temperature: np.ndarray, alpha: np.ndarray, time: np.ndarray) Tuple[float, float, float, np.ndarray, np.ndarray, np.ndarray, np.ndarray]¶
Perform Freeman-Carroll analysis to determine kinetic parameters for non-isothermal decomposition reactions.
- Parameters:
temperature (np.ndarray) – Temperature data in Kelvin.
alpha (np.ndarray) – Conversion data.
time (np.ndarray) – Time data in minutes.
- Returns:
Tuple containing activation energy (E_a in J/mol), reaction order (n), R-squared value, and arrays for plotting (x, y, x_filtered, y_filtered).
- Return type:
Tuple[float, float, float, np.ndarray, np.ndarray, np.ndarray, np.ndarray]
Theory¶
The Freeman-Carroll method is used for determining the activation energy and reaction order from thermogravimetric data. It is based on the following equation:
- where:
dα/dt is the rate of conversion
α is the conversion
T is the temperature
E_a is the activation energy
n is the reaction order
R is the gas constant
Usage Example¶
import numpy as np
from pkynetics.model_fitting_methods import freeman_carroll_method
from pkynetics.result_visualization import plot_freeman_carroll
# Generate sample data
time = np.linspace(0, 100, 1000)
temperature = 300 + 5 * time
alpha = 1 - np.exp(-0.01 * time)
# Perform Freeman-Carroll analysis
e_a, n, r_squared, x, y, x_filtered, y_filtered = freeman_carroll_method(temperature, alpha, time)
print(f"Activation energy (E_a): {e_a/1000:.2f} kJ/mol")
print(f"Reaction order (n): {n:.2f}")
print(f"R-squared: {r_squared:.4f}")
# Visualize results
plot_freeman_carroll(x, y, x_filtered, y_filtered, e_a, n, r_squared)
Parameters¶
temperature (np.ndarray): Temperature data in Kelvin. Must be in ascending order.
alpha (np.ndarray): Conversion data. Must be between 0 and 1.
time (np.ndarray): Time data in minutes. Must be in ascending order.
Returns¶
- A tuple containing:
e_a (float): Activation energy in J/mol.
n (float): Reaction order.
r_squared (float): Coefficient of determination (R^2) of the fit.
x (np.ndarray): x-values for plotting (Δ(1/T) / Δln(1-α)).
y (np.ndarray): y-values for plotting (Δln(dα/dt) / Δln(1-α)).
x_filtered (np.ndarray): Filtered x-values used for linear regression.
y_filtered (np.ndarray): Filtered y-values used for linear regression.
Raises¶
ValueError: If input arrays have different lengths or contain invalid values.
Notes¶
The method uses smoothed and differentiated data to improve accuracy.
The analysis focuses on the most relevant part of the reaction, typically between 20% to 80% conversion.
Outliers are removed using the Interquartile Range (IQR) method to improve the fit.
Use the returned x, y, x_filtered, and y_filtered arrays with the plot_freeman_carroll function for visualization.
See Also¶
coats_redfern_method(): For solid-state reaction kineticsplot_freeman_carroll(): For visualizing Freeman-Carroll analysis results