Isoconversional methods module#

This module defines functions for performing isoconversional analysis.

The isoconversional methods function all starts with ‘isoconversional_analysis’

isoconversional_methods.check_boundaries(minimum, maximum, list_of_real_convs)[source]#

Check if the specified conversion boundaries are within the valid range of the input data.

Parameters:
  • minimum (float) – Minimum conversion level to check.

  • maximum (float) – Maximum conversion level to check.

  • list_of_real_convs (list of numpy.ndarray) – List of NumPy arrays containing conversion data for multiple experiments.

Return type:

None

Raises:

ValueError – If the specified boundaries are outside the valid range of the input data.

isoconversional_methods.compute_function_to_minimize(Ea, time_arrays, temperature_arrays)[source]#

Compute the function to minimize described in Vyazovkin’s paper.

Parameters:
  • Ea (float) – Activation energy for which the function will be computed.

  • time_arrays (list of numpy.ndarray) – List of NumPy arrays containing time data for multiple experiments.

  • temperature_arrays (list of numpy.ndarray) – List of NumPy arrays containing temperature data for multiple experiments.

Returns:

Value of the function for the given activation energy.

Return type:

float

Notes

The function to minimize is computed using the following formula:

\[F(E_a) = \sum_{i=1}^{N} \sum_{k=1, k \neq i}^{N} \frac{J_i}{J_k}\]
where:
  • \(F(E_a)\) is the computed function to minimize.

  • N is the number of experiments.

  • \(J_i\) and \(J_k\) are the integrals computed using the Vyazovkin formula for experiments i and k.

isoconversional_methods.compute_integral_J(Ea, time_array, temperature_array)[source]#

Compute the integral described in Vyazovkin’s paper.

Parameters:
  • Ea (float) – Activation energy for the reaction.

  • time_array (numpy.ndarray) – NumPy array of time intervals for the DSC scan.

  • temperature_array (numpy.ndarray) – NumPy array of temperatures during the DSC scan.

Returns:

The computed integral value.

Return type:

float

Notes

The integral is computed using the following formula:

\[J = \int_{t_0}^{t_f} e^{-\frac{E_a}{R\cdot T(t)}} \cdot dt\]
where:
  • J is the computed integral value.

  • Ea is the activation energy for the reaction.

  • R is the universal gas constant (8.314 J/(mol·K)).

  • T(t) is the temperature at time t during the DSC scan.

  • \(t_0\) and \(t_f\) are the initial and final times in the time_array.

isoconversional_methods.find_closest_value(target_value, sorted_array)[source]#

Find the closest value to the target_value in a sorted NumPy array.

Parameters:
  • target_value (float) – The value to find the closest value to.

  • sorted_array (numpy.ndarray) – A sorted NumPy array of numbers.

Returns:

  • tuple (A tuple containing two elements:) –

    • closest_index (int): The index of the closest value in the array.

    • closest_value (float): The closest value in the array.

  • If two numbers are equally close, the smallest number is returned.

isoconversional_methods.get_data_at_conversion(target_conversion, conversions, times, temperatures)[source]#

Extract data before the target conversion for each dataset.

Parameters:
  • target_conversion (float) – The target conversion value.

  • conversions (list of numpy.ndarray) – List of NumPy arrays containing conversion data.

  • times (list of numpy.ndarray) – List of NumPy arrays containing time data.

  • temperatures (list of numpy.ndarray) – List of NumPy arrays containing temperature data.

Returns:

A tuple containing three lists: - new_conversions (list of numpy.ndarray): List of NumPy arrays with data up to target_conversion. - new_times (list of numpy.ndarray): List of NumPy arrays with corresponding time data. - new_temperatures (list of numpy.ndarray): List of NumPy arrays with corresponding temperature data.

Return type:

tuple

isoconversional_methods.get_data_in_interval(conversion_lists, time_lists, temperature_lists, list_of_points_for_analysis)[source]#

Return the conversion, time and temperature lists for each heating and for each interval of calculation.

1st level of the list corresponds to heating rate 2nd level of the list corresponds to interval of calculation

Parameters:
  • conversion_lists (List) – List with conversions at different heating rates (one list element for one heating rate).

  • time_lists (List) – List with times at different heating rates (one list element for one heating rate)

  • temperature_lists (List) – List with temperatures at different heating rates (one list element for one heating rate)

  • list_of_points_for_analysis (List) – List containing all the point of conversion at which the activation energy will be calculated

Returns:

  • new_list_of_conversions (List) – List with conversions at different heating rates for different intervals

  • new_list_of_times (List) – List with times at different heating rates for different intervals

  • new_list_of_temperatures (List) – List with temperatures at different heating rates for different intervals

isoconversional_methods.get_index_area_of_calculation(conversion_lists, list_of_points_for_analysis)[source]#

Return the indexes of the interval of calculation for the modified integral J.

Parameters:
  • conversion_lists (List) – List with conversions at different heating rates (one list element for one heating rate)

  • list_of_points_for_analysis (List) – List containing all the point of conversion at which the activation energy will be calculated

Raises:

ValueError – return an error if starting point is smaller than step

Returns:

index_list – Return the indexes of the interval of calculation for the modified integral J

Return type:

List

References

[1] S. Vyazovkin, « Modification of the integral isoconversional method to account for variation in the activation energy », Journal of Computational Chemistry, vol. 22, nᵒ 2, p. 178‑183, 2001, doi: 10.1002/1096-987X(20010130)22:2<178::AID-JCC5>3.0.CO;2-#.

isoconversional_methods.isoconversional_analysis_advanced_vyazovkin_method(conv_lists, time_lists, temperature_lists, initial_guess, min_conv, max_conv, number_of_points)[source]#

Find the energy of activation for multiple conversions using the advanced Vyazovkin method with a Broyden-Fletcher-Goldfarb-Shanno algorithm to find the optimal Ea.

Parameters:
  • conv_lists (list of numpy.ndarray) – List containing a list of evolution of conversion for various heating rates (n, m) with n the number of heating rates and m the number of conversion points.

  • time_lists (list of numpy.ndarray) – List containing a list of evolution of time for various heating rates (n, m) with n the number of heating rates and m the number of time points.

  • temperature_lists (list of numpy.ndarray) – List containing a list of evolution of temperature for various heating rates (n, m) with n the number of heating rates and m the number of temperature points.

  • initial_guess (float) – Initial guess of the activation energy for the first desired conversion.

  • min_conv (float) – Minimum conversion at which the activation energy will be computed.

  • max_conv (float) – Maximum conversion at which the activation energy will be computed.

  • number_of_points (int) – Number of conversion points at which the activation energy will be computed.

Returns:

  • conv_values (numpy.ndarray) – Array containing conversion points at which activation energy was assessed.

  • Ea_calculated (list) – List containing assessed activation energy.

  • average_time_at_calculation_point (list) – List containing the average time of all heating programs at the conversion points at which activation energy was assessed.

  • average_temperature_at_calculation_point (list) – List containing the average temperature of all heating programs at the conversion points at which activation energy was assessed.

Notes

It is crucial to provide interpolated data based on the conversion for stability. Without interpolation, this method may produce unreliable results.

References

[1] S. Vyazovkin, « Modification of the integral isoconversional method to account for variation in the activation energy », Journal of Computational Chemistry, vol. 22, nᵒ 2, p. 178‑183, 2001, doi: 10.1002/1096-987X(20010130)22:2<178::AID-JCC5>3.0.CO;2-#.

isoconversional_methods.isoconversional_analysis_friedman_method(conv_lists, rate_lists, temperature_lists, min_conv, max_conv, number_of_points)[source]#
Parameters:
  • conv_lists (list of numpy.ndarray) – List containing a list of evolution of conversion for various heating rates (n, m) with n the number of heating rates and m the number of conversion points.

  • rate_lists (list of numpy.ndarray) – List containing a list of evolution of temperature for various heating rates (n, m) with n the number of heating rates and m the number of temperature points.

  • temperature_lists (list of numpy.ndarray) – List containing a list of evolution of temperature for various heating rates (n, m) with n the number of heating rates and m the number of temperature points.

  • min_conv (Float) – Minimum conversion at which the activation energy will be computed.

  • max_conv (Float) – Maximum conversion at which the activation energy will be computed.

  • number_of_points (Float) – Number of conversion points at which the activation energy will be computed.

Returns:

  • conv_list (List) – List containing conversion points at which activation energy was assessed.

  • Ea_calculated (List) – List containing assessed activation energy.

  • Intercept (List) – List containing the intercept from the linear regressions of ln(dx/dt) as function of 1/T.

References

[1] N. Sbirrazzuoli, « Is the Friedman Method Applicable to Transformations with Temperature Dependent Reaction Heat? », Macromolecular Chemistry and Physics, vol. 208, nᵒ 14, p. 1592‑1597, 2007, doi: 10.1002/macp.200700100.

isoconversional_methods.isoconversional_analysis_vyazovkin_method(conv_lists, time_lists, temperature_lists, initial_guess, min_conv, max_conv, number_of_points)[source]#

Find the energy of activation for multiple conversions using the Vyazovkin method with a BFGS optimization algorithm.

Parameters:
  • conv_lists (list of numpy.ndarray) – List containing a list of evolution of conversion for various heating rates (n, m) with n the number of heating rates and m the number of conversion points.

  • time_lists (list of numpy.ndarray) – List containing a list of evolution of time for various heating rates (n, m) with n the number of heating rates and m the number of time points.

  • temperature_lists (list of numpy.ndarray) – List containing a list of evolution of temperature for various heating rates (n, m) with n the number of heating rates and m the number of temperature points.

  • initial_guess (float) – Initial guess of the activation energy for the first desired conversion.

  • min_conv (float) – Minimum conversion at which the activation energy will be computed.

  • max_conv (float) – Maximum conversion at which the activation energy will be computed.

  • number_of_points (int) – Number of conversion points at which the activation energy will be computed.

Returns:

  • conv_values (numpy.ndarray) – Array containing conversion points at which activation energy was assessed.

  • Ea_calculated (numpy.ndarray) – Array containing assessed activation energy.

Notes

It is crucial to provide interpolated data based on the conversion for stability. Without interpolation, this method may produce unreliable results.

References

[1] S. Vyazovkin, « Evaluation of activation energy of thermally stimulated solid-state reactions under arbitrary variation of temperature », Journal of Computational Chemistry, vol. 18, nᵒ 3, p. 393‑402, 1997, doi: 10.1002/(SICI)1096-987X(199702)18:3<393::AID-JCC9>3.0.CO;2-P.