LongHCPulse: Long Pulse Heat Capacity on a Quantum Design PPMS
Allen Scheie

TL;DR
LongHCPulse is software that enables efficient long-pulse heat capacity measurements on Quantum Design PPMS systems, allowing detailed study of first order transitions with reduced measurement time and integrated plotting tools.
Contribution
The paper introduces LongHCPulse, a novel software tool that implements a long-pulse method for heat capacity measurement, improving speed and capability over existing techniques.
Findings
Enables heat capacity measurement over 30-minute long pulses.
Reduces measurement time by a factor of five.
Successfully applied to ${ m Yb_{2}Ti_{2}O_{7}}$ data, matching standard methods.
Abstract
This paper presents LongHCPulse: software which enables heat capacity to be collected on a Quantum Design PPMS using a long-pulse method. This method, wherein heat capacity is computed from the time derivative of sample temperature over long (30 min) measurement times, is necessary for probing first order transitions and shortens the measurement time by a factor of five. LongHCPulse also includes plotting utilities based on the Matplotlib library. I illustrate the use of LongHCPulse with the example of data taken on , and compare the results to the standard semi-adiabatic method.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
LongHCPulse: Long Pulse Heat Capacity on a Quantum Design PPMS
Allen Scheie
Institute for Quantum Matter and Department of Physics and Astronomy Johns Hopkins University Baltimore MD 21218
(March 3, 2024)
Abstract
This paper presents LongHCPulse: software which enables heat capacity to be collected on a Quantum Design PPMS using a long-pulse method. This method, wherein heat capacity is computed from the time derivative of sample temperature over long (30 min) measurement times, is necessary for probing first order transitions and shortens the measurement time by a factor of five. LongHCPulse also includes plotting utilities based on the Matplotlib library. I illustrate the use of LongHCPulse with the example of data taken on , and compare the results to the standard semi-adiabatic method.
Heat capacity, phase transitions, PPMS
I Introduction
Low temperature heat capacity is an important measurement in materials characterization. It is used to study phase transitions Tari , nuclear magnetism Mirebeau_Tb2Sn2O7_schottky , superconductivity Kemper2016 , and magnetic properties Applegate2012 ; LiCuSbO_2012 ; Yamashita2011 ; Pomaranski2013 . A common tool for measuring low temperature heat capacity is a Quantum Design Physical Properties Measurement System (PPMS) PPMS_Manual , which can measure heat capacity from 400 K down to 50 mK with a dilution refrigerator insert. Unfortunately, low-temperature measurements are time-consuming, and the standard PPMS measurement technique is not sensitive to the latent heat of first order phase transitions. We present here a program for accurately measuring heat capacity using a PPMS with a long-pulse method that is sensitive to first-order transitions and decreases measurement time by more than a factor of five. This software enables a new measurement technique on a common piece of lab equipment.
By default, the PPMS measures heat capacity with a semi-adiabatic thermal relaxation technique Shi20101107 ; PPMS_Manual , wherein a short heat pulse is applied to the sample, and heat capacity is extracted from exponential curve fits to the heating and cooling data. (I refer to this as the “semi-adiabatic method” in this paper.) Useful as it is, this approach has two limitations. First, the semi-adiabatic method assumes constant heat capacity over the entire pulse range, rendering this method unsuitable for probing first-order phase transitions Lashley2003369 . Secondly, the semi-adiabatic method can be very time-consuming when measuring multiple magnetic fields. A typical constant-field PPMS heat capacity measurement between 2 K and 0.1 K can take 30 hours, meaning that mapping the plane with 20 magnetic fields can take as long as a month.
An alternative to the semi-adiabatic method is a “long-pulse method”, wherein one applies a long (~30 min) heat pulse to the sample (causing a temperature rise of up to 200%) and computes heat capacity from the time derivative of sample temperature. This technique is accurately sensitive to first-order transitions because data is collected as the sample continuously passes through the full temperature range (unlike the method used in Ref. Lashley2003369 ) and saves a significant amount of time. The PPMS MultiVu software has a dual-slope analys feature which is meant to do this, but the MultiVu software loses accuracy and consistency when the heat pulses cover a significant temperature range. To properly handle long-pulse heat capacity data, I present LongHCPulse, a Python software package which enables efficient processing of long-pulse data collected with a Quantum Design PPMS from 40 K down to dilution refrigerator (DR) temperatures.
This software was developed in order to process and plot heat capacity data for Scheie_2017 . The data shown in this paper is from this compound.
II Background
II.1 Theoretical Background: Heat Capacity from Slope Analysis
Heat capacity can be computed from the time derivative of sample temperature if the heat flow into and out of the sample is known. The PPMS sample stage is a good setup for this method.
A schematic diagram of a PPMS dilution refrigerator measurement stage (also called a heat capacity puck) is shown in Fig. 1. The sample is thermally connected to a platform with Apiezon N grease, and the platform is thermally coupled to a temperature bath at temperature with a wire of known thermal conductivity . Embedded within the sample platform lies a small resistive heater which applies a well-controlled power . For measurements above 80 mK, the grease has a negligibly small thermal resistivity such that both the sample and the platform are at the same temperature . Using these variables, we can derive an expression for sample heat capacity.
We begin with the equations for heat capacity and heat flow through the wire . is net heat flow into the sample, is sample heat capacity, is the sample temperature, is power applied to the sample platform, and is the wire conductivity (measured during puck calibration). Using the second equation, we can integrate over to obtain the heat flow through the wire:
[TABLE]
In general, depends on temperature, so this numerical integral needs to be carried out explicitly. Combining the above equations, we arrive at an expression for heat capacity:
[TABLE]
In practice, there are other sources of heat loss such as thermal radiation which are not included in this equation. To account for this, the PPMS software manual recommends adding an ad-hoc correction factor to PPMS_Manual making the final equation
[TABLE]
where is , where is a phenomenologically determined static offset parameter. Some radiative heat loss is always present, and a small offset of was necessary to make our measurements self-consistent.
The measurement .raw file and the calibration .cal files contain all the information necessary to compute heat capacity using Eq. 3.
II.2 PPMS Software
In principle, the PPMS MultiVu software can carry out the calculations in Eq. 3 using its “Slope Analysis” feature. However, our version of the PPMS software (MultiVu 1.5.11) generates inconsistent and incorrect heat capacity values when the heat pulses cover a significant temperature range. Large temperature ranges are necessary for probing first order transitions, because the hysteresis between heating and cooling can only be accurately recorded if a pulse traverses the entire transition. As Fig. 2(a) shows, the long-pulse data processed with the PPMS software is neither self-consistent nor physically sensible (negative heat capacity values are impossible). Clearly, a different approach is needed.
III Results: LongHCPulse Code
LongHCPulse is a python class which computes and plots heat capacity from PPMS long-pulse data. As Fig. 2(b) shows, heat capacity computed with LongHCPulse is both self-consistent and in agreement with semi-adiabatic short-pulse data.
The implementation as a Python class allows for easy implementation in Python scripts; heat capacity can be computed in as few as five lines of code. In addition, all data is stored in instance variables, giving the user freedom to access or modify the data as desired. Finally, the LongHCPulse package uses the popular Matplotlib library to provide post-processing and plotting utilities.
III.1 Inputs
LongHCPulse requires the following information: the .raw data file from the PPMS measurement, the calibration file for the sample puck used in the measurement, and the sample mass and molar mass.
III.2 Automatic Corrections
To properly compute heat capacity, LongHCPulse makes three automatic corrections to the raw data, two of which are made in the MultiVu software, and one of which is not.
First, LongHCPulse smooths the temperature data before taking the derivative , as in the PPMS MultiVu software. A derivative of noisy data is almost unintelligible, so a simple moving average (default ) is applied to the data.
Second, LongHCPulse eliminates the data from the beginnings and ends of the pulses (default within 15% of maximum or minimum temperature). The data at the very beginning of a pulse is unreliable because the thermal equilibration between the sample and sample platform is not instantaneous due to finite (see Fig. 1). Consequently, the initial temperature readings do not reflect actual the sample temperature. LongHCPulse corrects for this by ignoring the first few data points after the heater turns on or off. Data at the end of the pulse are eliminated because there becomes very small, rendering the uncertainty very large (see Appendix A) and the data unreliable. By default, LongHCPulse eliminates data within 15% of the maximum or minimum temperatures. (The user may choose to modify this.) This step is also possible with the PPMS MultiVu software’s slope analysis feature PPMS_Manual .
Third, LongHCPulse recomputes every temperature value from the thermometer resistance. When becomes significant, heat capacity from different heat pulses are inconsistent if one uses values recorded in the raw data file (see Fig. 3). However, if one re-computes from thermometer resistance (using the vs curves in the DR puck calibration file), the resulting heat capacity data are self-consistent. This inaccuracy is possibly due to the PPMS software using only a small interpolation range, leading to errors as becomes large. In any case, all temperature values need to be re-computed from thermometer resistance.
All these steps are automatically taken in ’LongHCPulse’.
III.3 Manual Correction: Wire Conductivity
For quantitatively accurate results, it is necessary to measure some short-pulse semi-adiabatic data at at least one magnetic field (which is a good practice anyway) to obtain thermal conductivity values for the specific measurement.
Although the wire conductivity is measured in the puck calibration, it varies slightly from measurement to measurement kennedy2007recommendations . This is because the sample shape, position on the platform, and internal conductivity all influence the effective value of . (For instance, a thick sample with a low internal conductivity will have a much higher effective than a thin sample with high internal conductivity.) Therefore, it is necessary to correct for every measurement. Fortunately, this is easy to do by taking some semi-adiabatic data.
When the PPMS measures heat capacity with the semi-adiabatic method, the wire conductivity is among the parameters extracted from the fit. This provides an appropriate reference with which one can correct . Thus, the user must scale self.Kw manually before computing heat capacity; LongHCPulse does not make this correction automatically. (Directly using the thermal conductivity values from the short-pulse measurements can yield very noisy results.) Typically, a linear plus a quadratic correction term suffices. As Fig. 4 shows, this correction makes the long-pulse data match the semi-adiabatic data—though the general shape of the heat capacity peaks are still accurate without this correction.
III.4 Features
In addition to computing heat capacity from raw data files, LongHCPulse contains many features which streamline data processing:
- •
If semi-adiabatic short pulse data has been taken in as a part of the same measurement, LongHCPulse will recognize short pulses and treat them and plot them separately.
- •
The heat capacity data can be scaled by an arbitrary factor with LongHCPulse.scale(). The data output by LongHCPulse is, by default, in units of . A separate scaling factor, applied during initialization, is required for the semi-adiabatic short-pulse data, which is typically recorded in .
- •
All magnetic fields can be scaled by a demagnetization factor with LongHCPulse.scaleDemagFactor(). (This correction is often necessary when examining low-field behavior.) To do this, the user must provide LongHCPulse with a 2D numpy array with vs in units of and , respectively.
- •
All processed data can be saved to a .pickle file. This can then be imported in a separate Python script by instantiating the class with the saved file. This is useful because (i) the same data can be plotted and manipulated in multiple scripts without duplicating code, and (ii) the data processing itself can take 1-2 minutes. Processing the data in one script and plotting the data in another script saves time when making small adjustments to plots.
Plotting Utilities
LongHCPulse has many utilities for plotting heat capacity data using the Matplotlib library MatPlotLib :
- •
Individual heating and cooling pulses can be plotted using LongHCPulse.plotHC(). can be plotted with LongHCPulse.plotHCT(). The user has the option of displaying any combination of heating pulses, cooling pulses, and semi-adiabatic data.
- •
LongHCPulse.lineplot() plots all data taken within 10 Oe of a specified magnetic field. If multiple fields are specified, then the data from each field is plotted with a different color from a rainbow colormap.
- •
LongHCPulse.lineplotCombine() combines all data within 10 Oe of a specified magnetic field into a single trace. In the regions where two or more traces overlap in temperature, the average heat capacity value is computed. If multiple fields are specified, each field is plotted with a different color from a rainbow colormap, just like lineplot(). Bin size may be increased by modifying the FieldBinSize function variable.
- •
LongHCPulse.plotEntropy() computes the entropy change for every magnetic field. It first combines the data in the same manner as lineplotCombine(), and plots them with the same rainbow colormap scheme.
- •
LongHCPulse.meshgrid() creates a 3D array of the data ( vs and ) that can be plotted with matplotlib.axes.Axes.pcolormesh().
For all plotting options, the user may selectively plot heating and cooling pulses.
III.5 Guidelines for Collecting Data
The following are some guidelines for collecting long-pulse data:
MultiVu Commands:
When collecting long-pulse data on a Quantum Design PPMS, one must use a special sequence of software commands. A sample set of commands for one pulse is:
Set Temperature 0.22K at 1K/min, Fast Settle
Set Magnetic Field 800.0Oe at 100.0Oe/sec, Linear, Persistent
Wait For Temperature, Field, Delay 60 secs, No Action
Sample HC at current temperature, 0.300 K rise, 1 times, 3000 sec meas time, simple fit, no settling
This will be repeated for each base temperature and each magnetic field.
Pulse Length:
The length of the pulse (“meas time”) depends upon the sample being measured, and must be optimized by the user. Pulses that are too short will not reach the full temperature range, but pulses that are too long will waste time by allowing the sample to sit at the maximum temperature. The first few measurements should be used to optimize the “meas time” parameter. For a 1.04 mg sample, long measuring times (3000 s) were required for low-fields to overcome the latent heat of the transition, but only 800 s were required to cover the same temperature range at higher fields (where the peak in heat capacity was diminished).
Pulse Size:
This program was designed to process data taken below 1 K for pulses covering 200-300 mK. However, preliminary tests show that LongHCPulse works at temperatures up to 120 K for pulses up to 30 K, but is not reliably accurate for pulses above 40K (see Appendix B). Typically, it is better to measure heat capacity at different temperatures with overlapping temperature ranges than repeat long-pulses at the same base temperature. Also, it saves time to to loop through magnetic fields at a constant base temperature: repeatedly changing the base temperature is far slower than changing the magnetic field.
IV Discussion: Software Performance
IV.1 Accuracy
Two measures of accuracy for LongHCPulse are (i) self-consistency between pulses taken at different base temperatures and (ii) agreement with the semi-adiabatic method. As Fig. 2 shows, LongHCPulse scores well on both of these measures.
IV.2 Data Acquisition Speed
It took a total of 105 hours to collect the long-pulse heat capacity data in Ref. Scheie_2017 covering 21 magnetic fields (not including initial cool-down, but including optimization of meas time). In the same experiment, it took 42 hours to measure 1.5 temperature sweeps using the semi-adiabatic method. This is a speed-up of at least a factor of five. Subsequent tests showed that 40% more time may be saved if the user is judicious with taking data.
IV.3 Uncertainty
One can estimate uncertainty in long-pulse heat capacity using the general formula for statistical uncertainty (see Appendix A). This approach has the weakness of ignoring correlated uncertainties, and therfore is meant to give an approximate understanding.
According to Eq. 5 in Appendix A, is inversely proportional to . This means that the uncertainty becomes very large when is nearly constant, like when the system goes through a first-order phase transition or reaches the end of a pulse. To visualize uncertainty, I computed uncertainty assuming , , , , and computing from the standard deviation of values extracted from semi-adiabatic measurements. Fig. 5 shows the calculated uncertainty. Note how the uncertainty is larger at the top of the heat capacity peak and at the end of pulses. Away from the heat capacity peak, the variation in between pulses falls within the error bars. On top of the peak, the computed heat capacity does not agree to within uncertainty. I attribute this to slight thermal hysteresis coming from some of the pulses not making it all the way over the first order transition peak—an effect which Eq. 5 does not account for.
If the user desires to see the error bars computed with the above parameters, add the command “PlotUncertainty=True” to any of the LongHCPulse plot commands, and error bars will be plotted like in Fig. 5. This feature is not available for combined traces.
V Example:
The code for LongHCPulse is available at https://github.com/asche1/LongHCPulse, which also contains the notebook used to process the data in Ref. Scheie_2017 . This repository will be continually updated with the most recent version of LongHCPulse. Please report bugs to [email protected].
VI Conclusion
LongHCPulse is a software package which allows a PPMS to measure heat capacity with a long-pulse method, and yields results that are both self-consistent and in agreement with the semi-adiabatic method. This method is sensitive to first-order transitions, and it saves a significant amount of time in collecting data. The implementation in Python allows for flexibility to process data and easy assimilation into Matplotlib scripts. Once incorporated into a researcher’s workflow, LongHCPulse can save time and eliminate human error by automating routine analysis. With this software, the capabilities of the Quantum Design PPMS are expanded, and heat capacity can be accurately measured with a new technique.
Acknowledgments
Thanks to Kate Arpino, James R. Neilson, and Zachary Kelley for allowing me to test LongHCPulse with their data. Thanks also to Tyrel M. McQueen for additional helpful suggestions. The author was supported through the Gordon and Betty Moore foundation under the EPIQS program GBMF4532.
Appendix A Uncertainty
We begin with Eq. 3 written out explicitly for a single data point
[TABLE]
where the denominator is the second-order finite central difference derivative. The general formula for uncertainty is
[TABLE]
The variables in our equation for heat capacity point are , , , , , , , , , the last four being for the numerical derivative of . We write out the derivatives with respect to all of these:
[TABLE]
similarly,
[TABLE]
[TABLE]
[TABLE]
[TABLE]
[TABLE]
similarly,
[TABLE]
Assuming , our general formula for uncertainty is:
[TABLE]
As noted in the text, this equation ignores correlated uncrtainties. For example, is correlated with , and because they are calculated from the same vs curve, causing any propogated errors to shift all readings the same direction. Similarly, is correlated to because they both come from the same thermometer. Because of this, the uncertainties shown here ought to be taken with a grain of salt; they are meant merely to give an overiew.
Appendix B Temperature Range
The temperature range of LongHCPulse was tested with old data taken on (see Fig. 6). Unfortunately, the semi-adiabatic data were acquired on a different sample, so the values (and thus the heat capacity values) are probably a little off. Nonetheless, it is possible to get a rough picture of the temperature range of LongHCPulse. As currently implemented, LongHCPulse matches semi-adiabatic data below 40K, and retains qualitative accuracy up to 120 K. Above 120 K, additional temperature gradients are probably present throughout the sample chamber, causing variation in both and and wild inconsistency in heat capacity values.
Appendix C Pseudocode
The Pseudocode for the main functions in LongHCPulse is as follows:
init(data_file, calibration_file, sample_mass, sample_molar_mass, short-pulse_scale_factor):
-
Import calibration file:
-
Import vs.
-
Import thermometer resistance vs. and
-
Import raw data:
-
FOR pulses:
-
Collect time, heater power, and resistance
- -
Re-compute temperature from thermometer resistance using calibration data
- -
Collect info about pulse (field, , addenda, etc.)
- -
IF :
-
Flag pulse as short pulse
-
FOR ShortPulses:
-
Average all short pulses within 1% of
-
Take moving average of temperature data (n=5)
Compute Heat Capacity()
-
FOR Pulses:
-
FOR DataPoints:
-
Compute using 2nd order central finite difference method
- -
Compute heat flow through wires with
- -
Compute heat capacity () from above values
- -
Subtract addenda heat capacity
- -
Compute uncertainty
- -
Eliminate values too close to or
- Convert to J/K/mol from J/K
Scale for Demagnetization Factor()
-
FOR all magnetic fields:
-
Solve for using the bisection method
Line Plot Combine(B fields)
-
FOR specified B fields:
-
Identify traces which overlap in temperature and compute average of data points for the overlap region
- -
Concatenate cooling pulse data into single array
- -
Sort array from low to high
- Plot data from specified fields with line plots
Meshgrid(Tarray, Barray):
- Bin long-pulse data into 2D histogram
- return 3D numpy array suitable for plt.pcolormesh()
The reference list from the paper itself. Each links out to its DOI / PubMed record.
- 1(1) A. Tari, The Specific Heat of Matter at Low Temperatures , (Imperial College Press, London, 2003).
- 2(2) I. Mirebeau, A. Apetrei, J. Rodriguez-Carvajal, P. Bonville, A. Forget, D. Colson, V. Glazkov, J. P. Sanchez, O. Isnard, and E. Suard, Phys. Rev. Lett. 94 , 246402 (2005).
- 3(3) J. B. Kemper, O. Vafek, J. B. Betts, F. F. Balakirev, W. N. Hardy, R. Liang, D. A. Bonn, and G. S. Boebinger, Nat Phys 12 , 47 (2016).
- 4(4) R. Applegate, N. R. Hayre, R. R. P. Singh, T. Lin, A. G. R. Day, and M. J. P. Gingras, Phys. Rev. Lett. 109 , 097205 (2012).
- 5(5) S. E. Dutton, M. Kumar, M. Mourigal, Z. G. Soos, J.- J. Wen, C. L. Broholm, N. H. Andersen, Q. Huang, M. Zbiri, R. Toft-Petersen, and R. J. Cava, Phys. Rev. Lett. 108 , 187206 (2012).
- 6(6) S. Yamashita, T. Yamamoto, Y. Nakazawa, M. Tamura, and R. Kato, Nature Communications 2 , 275 (2011).
- 7(7) D. Pomaranski, L. R. Yaraskavitch, S. Meng, K. A. Ross, H. M. L. Noad, H. A. Dabkowska, B. D. Gaulin, and J. B. Kycia, Nat Phys 9 , 353 (2013).
- 8(8) Physical Property Measurement System Heat Capacity Option User’s Manual , 26th ed. (Quantum Design, San Diego, CA, 2015).
