From 8494ca71db1da3c957940f24988a970b8bfc2457 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Wed, 11 Jul 2018 13:39:58 +0200 Subject: [PATCH] allow the exponent for the temperature evolution for lambda to be set. If not given, the two fluid exponent 4 will be chosen. --- src/external/Nonlocal/PNL_PippardFitter.cpp | 10 ++++++++-- src/external/Nonlocal/PNL_PippardFitter.h | 4 +++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/external/Nonlocal/PNL_PippardFitter.cpp b/src/external/Nonlocal/PNL_PippardFitter.cpp index 0d08fdfc..f1652216 100644 --- a/src/external/Nonlocal/PNL_PippardFitter.cpp +++ b/src/external/Nonlocal/PNL_PippardFitter.cpp @@ -102,6 +102,8 @@ PNL_PippardFitterGlobal::PNL_PippardFitterGlobal() fFieldB = 0; fShift = 0; + f_nn = 4.0; + f_dx = 0.02; } @@ -323,7 +325,7 @@ Double_t PNL_PippardFitterGlobal::DeltaBCS(const Double_t t) const */ Double_t PNL_PippardFitterGlobal::LambdaL_T(const Double_t lambdaL, const Double_t t) const { - return lambdaL/sqrt(1.0-pow(t,4.0)); + return lambdaL/sqrt(1.0-pow(t, f_nn)); } //-------------------------------------------------------------------------- @@ -431,7 +433,11 @@ Bool_t PNL_PippardFitter::GlobalPartIsValid() const Double_t PNL_PippardFitter::operator()(Double_t t, const std::vector ¶m) const { // param: [0] energy, [1] temp, [2] thickness, [3] meanFreePath, [4] xi0, [5] lambdaL, [6] Bext, [7] phase, [8] dead-layer - assert(param.size() == 9); + // optionally [9] nn, where nn is the exponent in lambda = lambda_L / sqrt(1-t^nn). Default is nn=4. + assert((param.size() == 9) || (param.size() == 10)); + + if (param.size() == 10) // nn given, hence set it + fPippardFitterGlobal->SetTempExponent(param[9]); // for negative time return polarization == 1 if (t <= 0.0) diff --git a/src/external/Nonlocal/PNL_PippardFitter.h b/src/external/Nonlocal/PNL_PippardFitter.h index afb5f696..3e0a899e 100644 --- a/src/external/Nonlocal/PNL_PippardFitter.h +++ b/src/external/Nonlocal/PNL_PippardFitter.h @@ -47,10 +47,11 @@ class PNL_PippardFitterGlobal virtual ~PNL_PippardFitterGlobal(); Bool_t IsValid() { return fValid; } + virtual void SetTempExponent(const Double_t nn) { f_nn = nn; } virtual void CalculateField(const std::vector ¶m) const; virtual Int_t GetEnergyIndex(const Double_t energy) { return fRgeHandler->GetRgeEnergyIndex(energy); } virtual Double_t GetMuonStoppingDensity(const Int_t energyIndex, const Double_t z) const { return fRgeHandler->GetRgeValue(energyIndex, z); } - virtual Double_t GetMagneticField(const Double_t z) const; + virtual Double_t GetMagneticField(const Double_t z) const; private: Bool_t fValid; @@ -60,6 +61,7 @@ class PNL_PippardFitterGlobal mutable std::vector fPreviousParam; + Double_t f_nn; Double_t f_dx; // dx = xiPT dq mutable Double_t f_dz; // spatial step size