BMWlibs, calculation of superconducting gap functions: allow to choose between to different parameterization of the temperature dependence of the gap. For details see the memo in the source code.

This commit is contained in:
suter_a 2014-10-28 10:43:43 +01:00
parent a4c948db7f
commit 78fa497de6
5 changed files with 112 additions and 83 deletions

View File

@ -60,6 +60,10 @@ FIXED 2012-09-23 fixed wrong chisq output in musrview if expected chisq is
present. present.
FIXED 2012-05-30 fixed RRF bug in single histo plotting. FIXED 2012-05-30 fixed RRF bug in single histo plotting.
FIXED 2012-05-18 fixed wrong forward/backward tag for ROOT-PPC (MUSR-215) FIXED 2012-05-18 fixed wrong forward/backward tag for ROOT-PPC (MUSR-215)
CHANGED 2014-10-28 BMWlibs, calculation of superconducting gap functions:
allow to choose between to different parameterization of the
temperature dependence of the gap. For details see the memo
in the source code.
CHANGED 2014-10-25 updated docu, since git is now available for ALL users CHANGED 2014-10-25 updated docu, since git is now available for ALL users
CHANGED 2014-02-12 since we moved to git, I cleaned up the svn prop's from CHANGED 2014-02-12 since we moved to git, I cleaned up the svn prop's from
the sources. the sources.

View File

@ -1,15 +1,16 @@
Test libGapIntegrals (arbitrary data), ASCII data file Test superconductor data
############################################################### ###############################################################
FITPARAMETER FITPARAMETER
# Nr. Name Value Step Pos_Error Boundaries # Nr. Name Value Step Pos_Error Boundaries
1 lambdaInvSq0 12.7664 0.40786 none 1 lambdaInvSq0 11.69 0.39 none
2 Tc 15 0.0203235 none 0 2 2 Tc 0.558 0.018 none 0 2
3 Delta0 26 0.00576485 none 3 Delta0 0.0673 0.0035 none
4 aG 1 0 none
############################################################### ###############################################################
THEORY THEORY
asymmetry 1 asymmetry 1
userFcn libGapIntegrals TGapDWave 2 3 userFcn libGapIntegrals TGapSWave 2 3 4
############################################################### ###############################################################
#FUNCTIONS #FUNCTIONS
@ -19,7 +20,7 @@ RUN data/libGapIntegrals-test PIM3 PSI ASCII (name beamline institute data-fil
fittype 8 (non muSR fit) fittype 8 (non muSR fit)
map 0 0 0 0 0 0 0 0 0 0 map 0 0 0 0 0 0 0 0 0 0
xy-data 1 2 xy-data 1 2
fit 0.00 10.00 fit 0 10
packing 1 packing 1
############################################################### ###############################################################
@ -32,8 +33,8 @@ SAVE
############################################################### ###############################################################
PLOT 8 (non muSR plot) PLOT 8 (non muSR plot)
runs 1 runs 1
range 0.00 20 range 0 1.5
############################################################### ###############################################################
STATISTIC --- 2010-01-08 13:54:19 STATISTIC --- 2014-10-28 10:40:31
chisq = 15.4862481, NDF = 8, chisq/NDF = 1.93578101 chisq = 14.3, NDF = 8, chisq/NDF = 1.790471

Binary file not shown.

View File

@ -61,9 +61,9 @@
\vskip 1cm \vskip 1cm
% %
\begin{tabular}{@{\hspace{-0.5cm}}ll@{\hspace{4cm}}ll} \begin{tabular}{@{\hspace{-0.5cm}}ll@{\hspace{4cm}}ll}
Date: & September 19, 2009 / August 19, 2014 & & \\[3ex] Date: & \today & & \\[3ex]
From: & B.M.~Wojek / Modified by A. Suter & \\ From: & B.M.~Wojek / Modified by A. Suter & \\
E-Mail: & \verb?bastian.wojek@psi.ch? / \verb?andreas.suter@psi.ch? && E-Mail: & \verb?andreas.suter@psi.ch? &&
\end{tabular} \end{tabular}
% %
\vskip 0.3cm \vskip 0.3cm
@ -102,8 +102,9 @@ For the numerical integration we use algorithms of the \textsc{Cuba} library \ci
\end{equation} \end{equation}
\subsection*{Implemented gap functions and function calls from MUSRFIT} \subsection*{Implemented gap functions and function calls from MUSRFIT}
At the moment the calculation of $\tilde{I}(T)$ is implemented for various gap functions all using the approximate \textsc{BCS} temperature dependence~\cite{Prozorov} Currently the calculation of $\tilde{I}(T)$ is implemented for various gap functions.
\begin{equation}\label{eq:gapT} The temperature dependence of the gap functions is either given by Eq.(\ref{eq:gapT_Prozorov}) \cite{Prozorov}, or by Eq.(\ref{eq:gapT_Manzano}) \cite{Manzano}.
\begin{equation}\label{eq:gapT_Prozorov}
\Delta(\varphi,T) \simeq \Delta(\varphi,0)\,\tanh\left[\frac{\pi k_{\rm B} T_{\rm c}}{\Delta_0}\sqrt{a_{\rm G} \left(\frac{T_{\rm c}}{T}-1\right)}\right] \Delta(\varphi,T) \simeq \Delta(\varphi,0)\,\tanh\left[\frac{\pi k_{\rm B} T_{\rm c}}{\Delta_0}\sqrt{a_{\rm G} \left(\frac{T_{\rm c}}{T}-1\right)}\right]
\end{equation} \end{equation}
\noindent with $\Delta_0$ as given below, and $a_{\rm G}$ depends on the pairing state: \noindent with $\Delta_0$ as given below, and $a_{\rm G}$ depends on the pairing state:
@ -113,8 +114,7 @@ At the moment the calculation of $\tilde{I}(T)$ is implemented for various gap f
\item [\textit{d}-wave:] $a_{\rm G}=4/3$ \quad with $\Delta_0 = 2.14\, k_{\rm B} T_c$ \item [\textit{d}-wave:] $a_{\rm G}=4/3$ \quad with $\Delta_0 = 2.14\, k_{\rm B} T_c$
\end{description} \end{description}
\noindent Eq.(\ref{eq:gapT}) replaces the \emph{previously} used approximation~\cite{Manzano}: \begin{equation}\label{eq:gapT_Manzano}
\begin{equation}
\Delta(\varphi,T) \simeq \Delta(\varphi)\tanh\left(1.82\left(1.018\left(\frac{T_{\mathrm c}}{T}-1\right)\right)^{0.51}\right)\,. \Delta(\varphi,T) \simeq \Delta(\varphi)\tanh\left(1.82\left(1.018\left(\frac{T_{\mathrm c}}{T}-1\right)\right)^{0.51}\right)\,.
\end{equation} \end{equation}
The \gapint plug-in calculates $\tilde{I}(T)$ for the following $\Delta(\varphi)$: The \gapint plug-in calculates $\tilde{I}(T)$ for the following $\Delta(\varphi)$:
@ -125,31 +125,36 @@ The \gapint plug-in calculates $\tilde{I}(T)$ for the following $\Delta(\varphi)
\Delta(\varphi) = \Delta_0 \Delta(\varphi) = \Delta_0
\end{equation} \end{equation}
\musrfit theory line: \verb?userFcn libGapIntegrals TGapSWave 1 2 [3]?\\ \musrfit theory line: \verb?userFcn libGapIntegrals TGapSWave 1 2 [3]?\\
(Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[a_{\rm G}~(1)]$, if $a_{\rm G}$ is not given, $a_{\rm G} = 1$) (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence
according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.)
\item[\textit{d}-wave gap \cite{Deutscher}:] \item[\textit{d}-wave gap \cite{Deutscher}:]
\begin{equation} \begin{equation}
\Delta(\varphi) = \Delta_0\cos\left(2\varphi\right) \Delta(\varphi) = \Delta_0\cos\left(2\varphi\right)
\end{equation} \end{equation}
\musrfit theory line: \verb?userFcn libGapIntegrals TGapDWave 1 2 [3]?\\ \musrfit theory line: \verb?userFcn libGapIntegrals TGapDWave 1 2 [3]?\\
(Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[a_{\rm G}~(1)]$, if $a_{\rm G}$ is not given, $a_{\rm G} = 4/3$) (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence
according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.)
\item[non-monotonic \textit{d}-wave gap \cite{Matsui}:] \item[non-monotonic \textit{d}-wave gap \cite{Matsui}:]
\begin{equation} \begin{equation}
\Delta(\varphi) = \Delta_0\left[a \cos\left(2\varphi\right) + (1-a)\cos\left(6\varphi\right)\right] \Delta(\varphi) = \Delta_0\left[a \cos\left(2\varphi\right) + (1-a)\cos\left(6\varphi\right)\right]
\end{equation} \end{equation}
\musrfit theory line: \verb?userFcn libGapIntegrals TGapNonMonDWave1 1 2 3 [4]?\\ \musrfit theory line: \verb?userFcn libGapIntegrals TGapNonMonDWave1 1 2 3 [4]?\\
(Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $[a_{\rm G}~(1)]$, if $a_{\rm G}$ is not given, $a_{\rm G} = 4/3$) (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence
according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.)
\item[non-monotonic \textit{d}-wave gap \cite{Eremin}:] \item[non-monotonic \textit{d}-wave gap \cite{Eremin}:]
\begin{equation} \begin{equation}
\Delta(\varphi) = \Delta_0\left[\frac{2}{3} \sqrt{\frac{a}{3}}\cos\left(2\varphi\right) / \left( 1 + a\cos^2\left(2\varphi\right)\right)^{\frac{3}{2}}\right],\,a>1/2 \Delta(\varphi) = \Delta_0\left[\frac{2}{3} \sqrt{\frac{a}{3}}\cos\left(2\varphi\right) / \left( 1 + a\cos^2\left(2\varphi\right)\right)^{\frac{3}{2}}\right],\,a>1/2
\end{equation} \end{equation}
\musrfit theory line: \verb?userFcn libGapIntegrals TGapNonMonDWave2 1 2 3 [4]?\\ \musrfit theory line: \verb?userFcn libGapIntegrals TGapNonMonDWave2 1 2 3 [4]?\\
(Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $a~(1)$, $[a_{\rm G}~(1)]$, if $a_{\rm G}$ is not given, $a_{\rm G} = 4/3$) (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $a~(1)$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence
according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.)
\item[anisotropic \textit{s}-wave gap \cite{AnisotropicSWave}:] \item[anisotropic \textit{s}-wave gap \cite{AnisotropicSWave}:]
\begin{equation} \begin{equation}
\Delta(\varphi) = \Delta_0\left[1+a\cos\left(4\varphi\right)\right]\,,\,0\leqslant a\leqslant1 \Delta(\varphi) = \Delta_0\left[1+a\cos\left(4\varphi\right)\right]\,,\,0\leqslant a\leqslant1
\end{equation} \end{equation}
\musrfit theory line: \verb?userFcn libGapIntegrals TGapAnSWave 1 2 3 [4]?\\ \musrfit theory line: \verb?userFcn libGapIntegrals TGapAnSWave 1 2 3 [4]?\\
(Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $[a_{\rm G}~(1)]$, if $a_{\rm G}$ is not given, $a_{\rm G} = 1$) (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence
according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.)
\end{description} \end{description}
\noindent It is also possible to calculate a power law temperature dependence (in the two fluid approximation $n=4$) and the dirty \textit{s}-wave expression. \noindent It is also possible to calculate a power law temperature dependence (in the two fluid approximation $n=4$) and the dirty \textit{s}-wave expression.
@ -167,7 +172,8 @@ Obviously for this no integration is needed.
\end{equation} \end{equation}
with $\Delta(T)$ given by Eq.(\ref{eq:gapT}).\\ with $\Delta(T)$ given by Eq.(\ref{eq:gapT}).\\
\musrfit theory line: \verb?userFcn libGapIntegrals TGapDirtySWave 1 2 [3]?\\ \musrfit theory line: \verb?userFcn libGapIntegrals TGapDirtySWave 1 2 [3]?\\
(Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[a_{\rm G}~(1)]$, if $a_{\rm G}$ is not given, $a_{\rm G} = 1$) (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence
according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.)
\end{description} \end{description}
\noindent Currently there are two gap functions to be found in the code which are \emph{not} documented here: \noindent Currently there are two gap functions to be found in the code which are \emph{not} documented here:

View File

@ -460,12 +460,9 @@ TLambdaInvNonMonDWave2::~TLambdaInvNonMonDWave2() {
double TGapSWave::operator()(double t, const vector<double> &par) const { double TGapSWave::operator()(double t, const vector<double> &par) const {
assert((par.size() == 2) || (par.size() == 3)); // two or three parameters: Tc (K), Delta(0) (meV), [a (1)] assert((par.size() == 2) || (par.size() == 3)); // two or three parameters: Tc (K), Delta(0) (meV), [a (1)]
// see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 // 2 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205
// 3 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67
// and Erratum Supercond. Sci. Technol. 21 (2008) 082003 // and Erratum Supercond. Sci. Technol. 21 (2008) 082003
double aa = 1.0;
if (par.size() == 3)
aa = par[2];
if (t<=0.0) if (t<=0.0)
return 1.0; return 1.0;
else if (t >= par[0]) else if (t >= par[0])
@ -509,7 +506,11 @@ double TGapSWave::operator()(double t, const vector<double> &par) const {
vector<double> intPar; // parameters for the integral, T & Delta(T) vector<double> intPar; // parameters for the integral, T & Delta(T)
intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(aa*(par[0]/t-1.0)))); // tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K if (par.size() == 2) { // Carrington/Manzano
intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51)));
} else { // Prozorov/Giannetta
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[2]*(par[0]/t-1.0)))); // tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K
}
fGapIntegral->SetParameters(intPar); fGapIntegral->SetParameters(intPar);
ds = 1.0-1.0/intPar[0]*fGapIntegral->IntegrateFunc(0.0, 2.0*(t+intPar[1])); ds = 1.0-1.0/intPar[0]*fGapIntegral->IntegrateFunc(0.0, 2.0*(t+intPar[1]));
@ -536,12 +537,9 @@ double TGapSWave::operator()(double t, const vector<double> &par) const {
double TGapDWave::operator()(double t, const vector<double> &par) const { double TGapDWave::operator()(double t, const vector<double> &par) const {
assert((par.size() == 2) || (par.size() == 3)); // two or three parameters: Tc (K), Delta(0) (meV), [a (1)] assert((par.size() == 2) || (par.size() == 3)); // two or three parameters: Tc (K), Delta(0) (meV), [a (1)]
// see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 // 2 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205
// 3 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67
// and Erratum Supercond. Sci. Technol. 21 (2008) 082003 // and Erratum Supercond. Sci. Technol. 21 (2008) 082003
double aa = 4.0/3.0;
if (par.size() == 3)
aa = par[2];
if (t<=0.0) if (t<=0.0)
return 1.0; return 1.0;
else if (t >= par[0]) else if (t >= par[0])
@ -584,7 +582,11 @@ double TGapDWave::operator()(double t, const vector<double> &par) const {
double ds; double ds;
vector<double> intPar; // parameters for the integral, T & Delta(T) vector<double> intPar; // parameters for the integral, T & Delta(T)
intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(aa*(par[0]/t-1.0)))); // tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K if (par.size() == 2) { // Carrington/Manzano
intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51)));
} else { // Prozorov/Giannetta
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[2]*(par[0]/t-1.0)))); // tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K
}
intPar.push_back(4.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy intPar.push_back(4.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy
intPar.push_back(TMath::PiOver2()); // upper limit of phi-integration intPar.push_back(TMath::PiOver2()); // upper limit of phi-integration
@ -617,14 +619,9 @@ double TGapDWave::operator()(double t, const vector<double> &par) const {
double TGapCosSqDWave::operator()(double t, const vector<double> &par) const { double TGapCosSqDWave::operator()(double t, const vector<double> &par) const {
assert((par.size() == 3) || (par.size() == 5)); // three or five parameters: Tc (K), DeltaD(0) (meV), DeltaS(0) (meV), [aD (1), aS (1)] assert((par.size() == 3) || (par.size() == 5)); // three or five parameters: Tc (K), DeltaD(0) (meV), DeltaS(0) (meV), [aD (1), aS (1)]
// 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205
double aD = 4.0/3.0; // 5 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67
double aS = 1.0; // and Erratum Supercond. Sci. Technol. 21 (2008) 082003
if (par.size() == 5) {
aD = par[3];
aS = par[4];
}
if (t<=0.0) if (t<=0.0)
return 1.0; return 1.0;
else if (t >= par[0]) else if (t >= par[0])
@ -667,10 +664,18 @@ double TGapCosSqDWave::operator()(double t, const vector<double> &par) const {
double ds; double ds;
vector<double> intPar; // parameters for the integral, T & Delta(T) vector<double> intPar; // parameters for the integral, T & Delta(T)
intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(aD*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K if (par.size() == 3) { // Carrington/Manzano
intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51)));
} else { // Prozorov/Giannetta
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[3]*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K
}
intPar.push_back(1.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy intPar.push_back(1.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy
intPar.push_back(TMath::Pi()); // upper limit of phi-integration intPar.push_back(TMath::Pi()); // upper limit of phi-integration
intPar.push_back(par[2]*tanh(0.2707214816*par[0]/par[2]*sqrt(aS*(par[0]/t-1.0)))); // DeltaS(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K if (par.size() == 3) { // Carrington/Manzano
intPar.push_back(par[2]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51)));
} else { // Prozorov/Giannetta
intPar.push_back(par[2]*tanh(0.2707214816*par[0]/par[2]*sqrt(par[4]*(par[0]/t-1.0)))); // DeltaS(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K
}
// double xl[] = {0.0, 0.0}; // lower bound E, phi // double xl[] = {0.0, 0.0}; // lower bound E, phi
// double xu[] = {4.0*(t+intPar[1]), 0.5*PI}; // upper bound E, phi // double xu[] = {4.0*(t+intPar[1]), 0.5*PI}; // upper bound E, phi
@ -701,14 +706,9 @@ double TGapCosSqDWave::operator()(double t, const vector<double> &par) const {
double TGapSinSqDWave::operator()(double t, const vector<double> &par) const { double TGapSinSqDWave::operator()(double t, const vector<double> &par) const {
assert((par.size() == 3) || (par.size() == 5)); // three or five parameters: Tc (K), DeltaD(0) (meV), DeltaS(0) (meV), [aD (1), aS (1)] assert((par.size() == 3) || (par.size() == 5)); // three or five parameters: Tc (K), DeltaD(0) (meV), DeltaS(0) (meV), [aD (1), aS (1)]
// 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205
double aD = 4.0/3.0; // 5 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67
double aS = 1.0; // and Erratum Supercond. Sci. Technol. 21 (2008) 082003
if (par.size() == 5) {
aD = par[3];
aS = par[4];
}
if (t<=0.0) if (t<=0.0)
return 1.0; return 1.0;
else if (t >= par[0]) else if (t >= par[0])
@ -751,10 +751,18 @@ double TGapSinSqDWave::operator()(double t, const vector<double> &par) const {
double ds; double ds;
vector<double> intPar; // parameters for the integral, T & Delta(T) vector<double> intPar; // parameters for the integral, T & Delta(T)
intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(aD*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K if (par.size() == 3) { // Carrington/Manzano
intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51)));
} else { // Prozorov/Giannetta
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[3]*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K
}
intPar.push_back(1.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy intPar.push_back(1.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy
intPar.push_back(TMath::Pi()); // upper limit of phi-integration intPar.push_back(TMath::Pi()); // upper limit of phi-integration
intPar.push_back(par[2]*tanh(0.2707214816*par[0]/par[2]*sqrt(aS*(par[0]/t-1.0)))); // DeltaS(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K if (par.size() == 3) { // Carrington/Manzano
intPar.push_back(par[2]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51)));
} else { // Prozorov/Giannetta
intPar.push_back(par[2]*tanh(0.2707214816*par[0]/par[2]*sqrt(par[4]*(par[0]/t-1.0)))); // DeltaS(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K
}
// double xl[] = {0.0, 0.0}; // lower bound E, phi // double xl[] = {0.0, 0.0}; // lower bound E, phi
// double xu[] = {4.0*(t+intPar[1]), 0.5*PI}; // upper bound E, phi // double xu[] = {4.0*(t+intPar[1]), 0.5*PI}; // upper bound E, phi
@ -785,12 +793,9 @@ double TGapSinSqDWave::operator()(double t, const vector<double> &par) const {
double TGapAnSWave::operator()(double t, const vector<double> &par) const { double TGapAnSWave::operator()(double t, const vector<double> &par) const {
assert((par.size() == 3) || (par.size() == 4)); // three or four parameters: Tc (K), Delta(0) (meV), a (1), [aS_Gap (1)] assert((par.size() == 3) || (par.size() == 4)); // three or four parameters: Tc (K), Delta(0) (meV), a (1), [aS_Gap (1)]
// 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205
double aS = 1.0; // 4 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67
if (par.size() == 4) { // and Erratum Supercond. Sci. Technol. 21 (2008) 082003
aS = par[3];
}
if (t<=0.0) if (t<=0.0)
return 1.0; return 1.0;
else if (t >= par[0]) else if (t >= par[0])
@ -833,7 +838,11 @@ double TGapAnSWave::operator()(double t, const vector<double> &par) const {
double ds; double ds;
vector<double> intPar; // parameters for the integral, T & Delta(T) vector<double> intPar; // parameters for the integral, T & Delta(T)
intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(aS*(par[0]/t-1.0)))); // DeltaS(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K if (par.size() == 3) { // Carrington/Manzano
intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51)));
} else { // Prozorov/Giannetta
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[3]*(par[0]/t-1.0)))); // DeltaS(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K
}
intPar.push_back(par[2]); intPar.push_back(par[2]);
intPar.push_back(4.0*(t+(1.0+par[2])*intPar[1])); // upper limit of energy-integration: cutoff energy intPar.push_back(4.0*(t+(1.0+par[2])*intPar[1])); // upper limit of energy-integration: cutoff energy
intPar.push_back(TMath::PiOver2()); // upper limit of phi-integration intPar.push_back(TMath::PiOver2()); // upper limit of phi-integration
@ -867,12 +876,9 @@ double TGapAnSWave::operator()(double t, const vector<double> &par) const {
double TGapNonMonDWave1::operator()(double t, const vector<double> &par) const { double TGapNonMonDWave1::operator()(double t, const vector<double> &par) const {
assert((par.size() == 3) || (par.size() == 4)); // three or four parameters: Tc (K), Delta(0) (meV), a (1), [aD_Gap (1)] assert((par.size() == 3) || (par.size() == 4)); // three or four parameters: Tc (K), Delta(0) (meV), a (1), [aD_Gap (1)]
// 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205
double aD = 4.0/3.0; // 4 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67
if (par.size() == 4) { // and Erratum Supercond. Sci. Technol. 21 (2008) 082003
aD = par[3];
}
if (t<=0.0) if (t<=0.0)
return 1.0; return 1.0;
else if (t >= par[0]) else if (t >= par[0])
@ -915,7 +921,11 @@ double TGapNonMonDWave1::operator()(double t, const vector<double> &par) const {
double ds; double ds;
vector<double> intPar; // parameters for the integral: 2 k_B T, Delta(T), a, E_c, phi_c vector<double> intPar; // parameters for the integral: 2 k_B T, Delta(T), a, E_c, phi_c
intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(aD*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K if (par.size() == 3) { // Carrington/Manzano
intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51)));
} else { // Prozorov/Giannetta
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[3]*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K
}
intPar.push_back(par[2]); intPar.push_back(par[2]);
intPar.push_back(4.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy intPar.push_back(4.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy
intPar.push_back(TMath::PiOver2()); // upper limit of phi-integration intPar.push_back(TMath::PiOver2()); // upper limit of phi-integration
@ -946,12 +956,9 @@ double TGapNonMonDWave1::operator()(double t, const vector<double> &par) const {
double TGapNonMonDWave2::operator()(double t, const vector<double> &par) const { double TGapNonMonDWave2::operator()(double t, const vector<double> &par) const {
assert((par.size() == 3) || (par.size() == 4)); // three parameters: Tc (K), Delta(0) (meV), a (1), [aD_Gap (1)] assert((par.size() == 3) || (par.size() == 4)); // three parameters: Tc (K), Delta(0) (meV), a (1), [aD_Gap (1)]
// 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205
double aD = 4.0/3.0; // 4 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67
if (par.size() == 4) { // and Erratum Supercond. Sci. Technol. 21 (2008) 082003
aD = par[3];
}
if (t<=0.0) if (t<=0.0)
return 1.0; return 1.0;
else if (t >= par[0]) else if (t >= par[0])
@ -994,7 +1001,11 @@ double TGapNonMonDWave2::operator()(double t, const vector<double> &par) const {
double ds; double ds;
vector<double> intPar; // parameters for the integral: 2 k_B T, Delta(T), a, E_c, phi_c vector<double> intPar; // parameters for the integral: 2 k_B T, Delta(T), a, E_c, phi_c
intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K intPar.push_back(0.172346648*t); // 2 kB T, kB in meV/K = 0.086173324 meV/K
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(aD*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K if (par.size() == 3) { // Carrington/Manzano
intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51)));
} else { // Prozorov/Giannetta
intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[3]*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K
}
intPar.push_back(par[2]); intPar.push_back(par[2]);
intPar.push_back(4.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy intPar.push_back(4.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy
intPar.push_back(TMath::PiOver2()); // upper limit of phi-integration intPar.push_back(TMath::PiOver2()); // upper limit of phi-integration
@ -1045,14 +1056,21 @@ double TGapPowerLaw::operator()(double t, const vector<double> &par) const {
*/ */
double TGapDirtySWave::operator()(double t, const vector<double> &par) const { double TGapDirtySWave::operator()(double t, const vector<double> &par) const {
assert(par.size() == 2); // two parameters: Tc (K), Delta(0) (meV) assert((par.size() == 2) || (par.size() == 3)); // two or three parameters: Tc (K), Delta(0) (meV) [a (1)]
// 2 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205
// 3 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67
// and Erratum Supercond. Sci. Technol. 21 (2008) 082003
if (t<=0.0) if (t<=0.0)
return 1.0; return 1.0;
else if (t >= par[0]) else if (t >= par[0])
return 0.0; return 0.0;
double deltaT(tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51))); double deltaT = 0.0;
if (par.size() == 2) { // Carrington/Manzano
deltaT = tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51));
} else { // Prozorov/Giannetta
deltaT = tanh(0.2707214816*par[0]/par[1]*sqrt(par[2]*(par[0]/t-1.0))); // tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K
}
return deltaT*tanh(par[1]*deltaT/(0.172346648*t)); // Delta(T)/Delta(0)*tanh(Delta(T)/2 kB T), kB in meV/K return deltaT*tanh(par[1]*deltaT/(0.172346648*t)); // Delta(T)/Delta(0)*tanh(Delta(T)/2 kB T), kB in meV/K
} }