Fixed the implementation of EHB: PRB 71 014521 (2005)

* The iterations converge now!

* B_z at the vortex-core has the correct values - as far as I can judge on it using EHB's work

* However, B in general might still be wrong by some factor, esp. B_x and B_y at the surface.

* There are many things left for optimization - e.g. there are (dependent on the grid size) thousands
  to hundreds of thousands zero-assignments which could be removed after some careful checks

* Any review is welcome
This commit is contained in:
Bastian M. Wojek 2010-02-20 15:56:01 +00:00
parent 620465fadc
commit 7357caa8b8
2 changed files with 1195 additions and 927 deletions

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@
Author: Bastian M. Wojek
e-mail: bastian.wojek@psi.ch
2010/10/17
2010/02/19
***************************************************************************/
@ -89,7 +89,7 @@ public:
fftwf_complex* GetBkMatrix() const {return fBkMatrix;}
fftwf_complex* GetRealSpaceMatrix() const {return fRealSpaceMatrix;}
float* GetOmegaMatrix() const {return fOmegaMatrix;}
float* GetBkSMatrix() const {return fBkS;}
fftwf_complex* GetBkSMatrix() const {return fBkS;}
vector<float*> GetOmegaDiffMatrix() const {return fOmegaDiffMatrix;}
fftwf_complex* GetQMatrix() const {return fQMatrix;}
fftwf_complex* GetPMatrix() const {return fPkMatrix;}
@ -103,8 +103,12 @@ private:
void ManipulateFourierCoefficientsB() const;
void ManipulateFourierCoefficientsForQx() const;
void ManipulateFourierCoefficientsForQy() const;
void ManipulateFourierCoefficientsForBperpX() const;
void ManipulateFourierCoefficientsForBperpY() const;
void ManipulateFourierCoefficientsForBperpXFirst() const;
void ManipulateFourierCoefficientsForBperpXSecond() const;
void ManipulateFourierCoefficientsForBperpYFirst() const;
void ManipulateFourierCoefficientsForBperpYSecond() const;
void ManipulateFourierCoefficientsForBperpXatSurface() const;
void ManipulateFourierCoefficientsForBperpYatSurface() const;
void CalculateGatVortexCore() const;
mutable float *fOmegaMatrix;
@ -116,7 +120,7 @@ private:
mutable fftwf_complex *fQMatrixA;
mutable fftwf_complex *fSumAkFFTin;
mutable fftwf_complex *fSumAk;
mutable float *fBkS;
mutable fftwf_complex *fBkS;
mutable float *fGstorage;
mutable float *fCheckAkConvergence;
@ -137,7 +141,7 @@ private:
fftwf_plan fFFTplanForSumAk;
fftwf_plan fFFTplanForPk1;
fftwf_plan fFFTplanForPk2;
fftwf_plan fFFTplanForBatSurf;
};