Attempt to fix An. London model in BMWlibs - theory has to be checked again.
This commit is contained in:
parent
cb1e5ca292
commit
31335c4bd1
@ -1985,11 +1985,17 @@ void TBulkAnisotropicTriVortexLondonFieldCalc::CalculateGrid() const {
|
|||||||
double field(fabs(fParam[0])), lambdaX(fabs(fParam[1])), lambdaY(fabs(fParam[2])), xiX(fabs(fParam[3])), xiY(fabs(fParam[4]));
|
double field(fabs(fParam[0])), lambdaX(fabs(fParam[1])), lambdaY(fabs(fParam[2])), xiX(fabs(fParam[3])), xiY(fabs(fParam[4]));
|
||||||
double Hc2(fluxQuantum/(TWOPI*xiX*xiY));
|
double Hc2(fluxQuantum/(TWOPI*xiX*xiY));
|
||||||
|
|
||||||
double latConstTr(sqrt(2.0*fluxQuantum/(field*sqrt3)));
|
// double latConstTr(sqrt(2.0*fluxQuantum/(field*sqrt3)));
|
||||||
double xiXsq_2_scaled(field/fluxQuantum*pow(xiX*PI,2.0)*sqrt3*lambdaY/lambdaX);
|
double xiXsq_2_scaled(field/fluxQuantum*pow(xiX*PI,2.0)/(sqrt3*lambdaY)*lambdaX);
|
||||||
double xiYsq_2_scaled(field/fluxQuantum*pow(xiY*PI,2.0)*lambdaX/(lambdaY*sqrt3));
|
double xiYsq_2_scaled(field/fluxQuantum*pow(xiY*PI,2.0)*lambdaY/lambdaX*sqrt3);
|
||||||
double lambdaXsq_scaled(2.0*field/fluxQuantum*PI*PI/(sqrt3*lambdaY)*pow(lambdaX,3.0));
|
double lambdaXsq_scaled(2.0*field/fluxQuantum*PI*PI*sqrt3*lambdaY*lambdaX);
|
||||||
double lambdaYsq_scaled(2.0*field/fluxQuantum*PI*PI*sqrt3/lambdaX*pow(lambdaY,3.0));
|
double lambdaYsq_scaled(2.0*field/fluxQuantum*PI*PI/sqrt3*lambdaX*lambdaY);
|
||||||
|
/*
|
||||||
|
double xiXsq_2_scaled(field/fluxQuantum*pow(xiX*PI,2.0)*sqrt3*sqrt(lambdaY/lambdaX));
|
||||||
|
double xiYsq_2_scaled(field/fluxQuantum*pow(xiY*PI,2.0)*sqrt(lambdaX/(lambdaY*3.0)));
|
||||||
|
double lambdaXsq_scaled(2.0*field/fluxQuantum*PI*PI/sqrt3*pow(lambdaX,2.5)/sqrt(lambdaY));
|
||||||
|
double lambdaYsq_scaled(2.0*field/fluxQuantum*PI*PI*sqrt3/sqrt(lambdaX)*pow(lambdaY,2.5));
|
||||||
|
*/
|
||||||
|
|
||||||
const int NFFT(fSteps);
|
const int NFFT(fSteps);
|
||||||
const int NFFT_2(fSteps/2);
|
const int NFFT_2(fSteps/2);
|
||||||
@ -2020,14 +2026,14 @@ void TBulkAnisotropicTriVortexLondonFieldCalc::CalculateGrid() const {
|
|||||||
ll = static_cast<double>(l*l);
|
ll = static_cast<double>(l*l);
|
||||||
for (k = 0; k < NFFT_2; k += 2) {
|
for (k = 0; k < NFFT_2; k += 2) {
|
||||||
kk = static_cast<double>(k*k);
|
kk = static_cast<double>(k*k);
|
||||||
fFFTin[lNFFT_2 + k][0] = exp(-(xiXsq_2_scaled*kk + xiYsq_2_scaled*ll))/(1.0+lambdaXsq_scaled*ll+lambdaYsq_scaled*kk);
|
fFFTin[lNFFT_2 + k][0] = exp(-(xiXsq_2_scaled*ll + xiYsq_2_scaled*kk))/(1.0+lambdaXsq_scaled*kk+lambdaYsq_scaled*ll);
|
||||||
fFFTin[lNFFT_2 + k][1] = 0.0;
|
fFFTin[lNFFT_2 + k][1] = 0.0;
|
||||||
fFFTin[lNFFT_2 + k + 1][0] = 0.0;
|
fFFTin[lNFFT_2 + k + 1][0] = 0.0;
|
||||||
fFFTin[lNFFT_2 + k + 1][1] = 0.0;
|
fFFTin[lNFFT_2 + k + 1][1] = 0.0;
|
||||||
}
|
}
|
||||||
k = NFFT_2;
|
k = NFFT_2;
|
||||||
kk = static_cast<double>(k*k);
|
kk = static_cast<double>(k*k);
|
||||||
fFFTin[lNFFT_2 + k][0] = exp(-(xiXsq_2_scaled*kk + xiYsq_2_scaled*ll))/(1.0+lambdaXsq_scaled*ll+lambdaYsq_scaled*kk);
|
fFFTin[lNFFT_2 + k][0] = exp(-(xiXsq_2_scaled*ll + xiYsq_2_scaled*kk))/(1.0+lambdaXsq_scaled*kk+lambdaYsq_scaled*ll);
|
||||||
fFFTin[lNFFT_2 + k][1] = 0.0;
|
fFFTin[lNFFT_2 + k][1] = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2037,14 +2043,14 @@ void TBulkAnisotropicTriVortexLondonFieldCalc::CalculateGrid() const {
|
|||||||
ll = static_cast<double>((NFFT-l)*(NFFT-l));
|
ll = static_cast<double>((NFFT-l)*(NFFT-l));
|
||||||
for (k = 0; k < NFFT_2; k += 2) {
|
for (k = 0; k < NFFT_2; k += 2) {
|
||||||
kk = static_cast<double>(k*k);
|
kk = static_cast<double>(k*k);
|
||||||
fFFTin[lNFFT_2 + k][0] = exp(-(xiXsq_2_scaled*kk + xiYsq_2_scaled*ll))/(1.0+lambdaXsq_scaled*ll+lambdaYsq_scaled*kk);
|
fFFTin[lNFFT_2 + k][0] = exp(-(xiXsq_2_scaled*ll + xiYsq_2_scaled*kk))/(1.0+lambdaXsq_scaled*kk+lambdaYsq_scaled*ll);
|
||||||
fFFTin[lNFFT_2 + k][1] = 0.0;
|
fFFTin[lNFFT_2 + k][1] = 0.0;
|
||||||
fFFTin[lNFFT_2 + k + 1][0] = 0.0;
|
fFFTin[lNFFT_2 + k + 1][0] = 0.0;
|
||||||
fFFTin[lNFFT_2 + k + 1][1] = 0.0;
|
fFFTin[lNFFT_2 + k + 1][1] = 0.0;
|
||||||
}
|
}
|
||||||
k = NFFT_2;
|
k = NFFT_2;
|
||||||
kk = static_cast<double>(k*k);
|
kk = static_cast<double>(k*k);
|
||||||
fFFTin[lNFFT_2 + k][0] = exp(-(xiXsq_2_scaled*kk + xiYsq_2_scaled*ll))/(1.0+lambdaXsq_scaled*ll+lambdaYsq_scaled*kk);
|
fFFTin[lNFFT_2 + k][0] = exp(-(xiXsq_2_scaled*ll + xiYsq_2_scaled*kk))/(1.0+lambdaXsq_scaled*kk+lambdaYsq_scaled*ll);
|
||||||
fFFTin[lNFFT_2 + k][1] = 0.0;
|
fFFTin[lNFFT_2 + k][1] = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2057,7 +2063,7 @@ void TBulkAnisotropicTriVortexLondonFieldCalc::CalculateGrid() const {
|
|||||||
kk = static_cast<double>((k + 1)*(k + 1));
|
kk = static_cast<double>((k + 1)*(k + 1));
|
||||||
fFFTin[lNFFT_2 + k][0] = 0.0;
|
fFFTin[lNFFT_2 + k][0] = 0.0;
|
||||||
fFFTin[lNFFT_2 + k][1] = 0.0;
|
fFFTin[lNFFT_2 + k][1] = 0.0;
|
||||||
fFFTin[lNFFT_2 + k + 1][0] = exp(-(xiXsq_2_scaled*kk + xiYsq_2_scaled*ll))/(1.0+lambdaXsq_scaled*ll+lambdaYsq_scaled*kk);
|
fFFTin[lNFFT_2 + k + 1][0] = exp(-(xiXsq_2_scaled*ll + xiYsq_2_scaled*kk))/(1.0+lambdaXsq_scaled*kk+lambdaYsq_scaled*ll);
|
||||||
fFFTin[lNFFT_2 + k + 1][1] = 0.0;
|
fFFTin[lNFFT_2 + k + 1][1] = 0.0;
|
||||||
}
|
}
|
||||||
k = NFFT_2;
|
k = NFFT_2;
|
||||||
@ -2072,7 +2078,7 @@ void TBulkAnisotropicTriVortexLondonFieldCalc::CalculateGrid() const {
|
|||||||
kk = static_cast<double>((k+1)*(k+1));
|
kk = static_cast<double>((k+1)*(k+1));
|
||||||
fFFTin[lNFFT_2 + k][0] = 0.0;
|
fFFTin[lNFFT_2 + k][0] = 0.0;
|
||||||
fFFTin[lNFFT_2 + k][1] = 0.0;
|
fFFTin[lNFFT_2 + k][1] = 0.0;
|
||||||
fFFTin[lNFFT_2 + k + 1][0] = exp(-(xiXsq_2_scaled*kk + xiYsq_2_scaled*ll))/(1.0+lambdaXsq_scaled*ll+lambdaYsq_scaled*kk);
|
fFFTin[lNFFT_2 + k + 1][0] = exp(-(xiXsq_2_scaled*ll + xiYsq_2_scaled*kk))/(1.0+lambdaXsq_scaled*kk+lambdaYsq_scaled*ll);
|
||||||
fFFTin[lNFFT_2 + k + 1][1] = 0.0;
|
fFFTin[lNFFT_2 + k + 1][1] = 0.0;
|
||||||
}
|
}
|
||||||
k = NFFT_2;
|
k = NFFT_2;
|
||||||
|
@ -894,7 +894,7 @@ TBulkAnisotropicTriVortexLondonGlobal::TBulkAnisotropicTriVortexLondonGlobal() :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TBulkAnisotropicTriVortexLondonGlobal::CalcPofB(const vector<double> &par) const {
|
void TBulkAnisotropicTriVortexLondonGlobal::Calc(const vector<double> &par) const {
|
||||||
|
|
||||||
assert(par.size() == 6);
|
assert(par.size() == 6);
|
||||||
/*
|
/*
|
||||||
@ -1053,7 +1053,7 @@ double TBulkAnisotropicTriVortexLondon::operator()(double t, const std::vector<d
|
|||||||
return cos(param[0]*0.017453293);
|
return cos(param[0]*0.017453293);
|
||||||
|
|
||||||
// call the global user function object
|
// call the global user function object
|
||||||
fGlobalUserFcn->CalcPofB(param);
|
fGlobalUserFcn->Calc(param);
|
||||||
|
|
||||||
return fGlobalUserFcn->GetPolarizationPointer()->Eval(t);
|
return fGlobalUserFcn->GetPolarizationPointer()->Eval(t);
|
||||||
}
|
}
|
||||||
|
2
src/external/TFitPofB-lib/include/TVortex.h
vendored
2
src/external/TFitPofB-lib/include/TVortex.h
vendored
@ -217,7 +217,7 @@ public:
|
|||||||
|
|
||||||
// the following function will check if something needs to be calculated, which
|
// the following function will check if something needs to be calculated, which
|
||||||
// is the case if param != fPrevParam
|
// is the case if param != fPrevParam
|
||||||
void CalcPofB(const vector<double>&) const;
|
void Calc(const vector<double>&) const;
|
||||||
|
|
||||||
// this routine will return the calculated values, e.g. B(z,E) for TMyFunction::operator()()
|
// this routine will return the calculated values, e.g. B(z,E) for TMyFunction::operator()()
|
||||||
// (...) here sketches only that some parameters are likley to be fed
|
// (...) here sketches only that some parameters are likley to be fed
|
||||||
|
Loading…
x
Reference in New Issue
Block a user