Fortran interface for Debye integrals and Callaway thermal conductivity. More...
Go to the source code of this file.
Functions | |
| void | debye_table (const double *n, const int *m, const int *p, const int *q, double *z, double *y) |
| Compute Debye integral lookup table. | |
| void | callaway_conductivity (const double *params, double *result, int *status) |
| Evaluate phonon thermal conductivity using Callaway model. | |
Fortran interface for Debye integrals and Callaway thermal conductivity.
This header provides C++ access to high-precision Fortran implementations of computationally intensive functions used in material property calculations.
Functions:
Implementation language: Fortran (for numerical stability and performance)
| void callaway_conductivity | ( | const double * | params, |
| double * | result, | ||
| int * | status ) |
Evaluate phonon thermal conductivity using Callaway model.
Computes λ_ph(T) using the Callaway model with multiple scattering mechanisms combined via Matthiessen's rule: 1/τ_total = 1/τ_U + 1/τ_M + 1/τ_B + 1/τ_ph-e
Scattering mechanisms:
The integral computed is: λ_ph = (kB/(2π²v)) · (kB·T/ℏ)³ · ∫₀^(θ/T) τ(z)·z^n·exp(z)/[exp(z)-1]² dz
Reference: J. Callaway, Phys. Rev. 113, 1046 (1959) Scattering: Zou & Balandin, J. Appl. Phys. 89, 2932 (2001)
| [in] | params | Array of 20 parameters (see below) |
| [out] | result | Phonon thermal conductivity λ_ph [W/(m·K)] |
| [out] | status | Error status (0 = success, 1 = error) |
Parameter array layout (C++ zero-based / Fortran one-based):
Temperature-dependent material properties:
Fixed material properties (composition-based):
Model parameters:
IMPORTANT NOTES:
Used by: YBCO::lambda_custom() (override of Material_Metal::lambda_custom); also YBCO::test_callaway()
| void debye_table | ( | const double * | n, |
| const int * | m, | ||
| const int * | p, | ||
| const int * | q, | ||
| double * | z, | ||
| double * | y ) |
Compute Debye integral lookup table.
Computes J_n(Z) = ∫₀^Z x^n · exp(x) / (exp(x) - 1)² dx
Used for Bloch-Grüneisen electrical resistivity model: ρᵢ(T) = C · J_n(θ/T) / (θ/T)^n
The integral is computed using adaptive Gauss-Legendre quadrature with variable step sizes to capture both the sharp peak and the exponential tail. The peak location is determined analytically via Newton-Raphson (z_peak ≈ n for large n).
| [in] | n | Exponent of the integrand ( any real ≥ 3; the metals use 3, 4, 5, Iron uses 4.5 ) Peak locations: J₃ at 2.576, J₄ at 3.830, J₅ at 4.928 |
| [in] | m | Number of integration points per interval Recommended: 8-16 for good accuracy |
| [in] | p | Number of points to peak value (set to ~20) Controls fine mesh density near peak |
| [in] | q | Total number of points in lookup table Recommended: n=3: 330, n=4: 237, n=5: 196 |
| [out] | z | Z-values (abscissas) for lookup table [dimensionless] |
| [out] | y | J_n(z) integrated values (ordinates) [dimensionless] |
Grid construction:
The integration uses quadruple precision internally for numerical stability, then converts to double precision for output.
Used by: Metal::rho_i_custom() ( Bloch–Grüneisen intrinsic resistivity ) via the J₃/J₄/J₅/Jₙ splines built in Metal::create_J_spline()