Changed some things in the implementation of EHB: PRB 71 014521 (2005)

- 3D iterations now keep the hexagonal symmetry (the irritating compiler warning was right after all...)

However:

- Iterations do not converge at all...
- The maximum of the field is slightly off the vortex core ;-(
- This problem is cursed!
This commit is contained in:
Bastian M. Wojek 2010-02-14 20:10:43 +00:00
parent c663446dae
commit 2aaa56959c
4 changed files with 2137 additions and 296 deletions

File diff suppressed because it is too large Load Diff

View File

@ -87,7 +87,9 @@ public:
fftwf_complex* GetAkMatrix() const {return fFFTin;}
fftwf_complex* GetBkMatrix() const {return fBkMatrix;}
fftwf_complex* GetRealSpaceMatrix() const {return fRealSpaceMatrix;}
float* GetOmegaMatrix() const {return fOmegaMatrix;}
float* GetBkSMatrix() const {return fBkS;}
vector<float*> GetOmegaDiffMatrix() const {return fOmegaDiffMatrix;}
fftwf_complex* GetQMatrix() const {return fQMatrix;}
fftwf_complex* GetPMatrix() const {return fPkMatrix;}
@ -103,16 +105,19 @@ private:
void ManipulateFourierCoefficientsForQy() const;
void ManipulateFourierCoefficientsForBperpX() const;
void ManipulateFourierCoefficientsForBperpY() const;
void CalculateGatVortexCore() const;
mutable float *fOmegaMatrix;
mutable vector<float*> fOmegaDiffMatrix;
mutable fftwf_complex *fRealSpaceMatrix;
mutable fftwf_complex *fBkMatrix;
mutable fftwf_complex *fPkMatrix;
mutable fftwf_complex *fQMatrix;
mutable fftwf_complex *fQMatrixA;
mutable fftwf_complex *fSumAkFFTin;
mutable float *fSumAk;
mutable fftwf_complex *fSumAk;
mutable float *fBkS;
mutable float *fGstorage;
mutable float *fCheckAkConvergence;
mutable float *fCheckBkConvergence;

View File

@ -0,0 +1,49 @@
#---------------------------------------------------
# get compilation and library flags from root-config
ROOTCFLAGS = $(shell $(ROOTSYS)/bin/root-config --cflags)
ROOTLIBS = $(shell $(ROOTSYS)/bin/root-config --libs)
#---------------------------------------------------
CXX = g++-4.4.2
CXXFLAGS = -g -O3 -Wall
LOCALINCLUDE = ../include
ROOTINCLUDE = $(ROOTSYS)/include
INCLUDES = -I$(LOCALINCLUDE) -I$(ROOTINCLUDE)
LD = g++-4.4.2
LDFLAGS = -g -O3 -L../classes -lTFitPofB -lfftw3_threads -lfftw3 -lfftw3f -lm -lpthread -fopenmp -lPMusr
# the output from the root-config script:
CXXFLAGS += $(ROOTCFLAGS)
LDFLAGS +=
# the ROOT libraries
LIBS = $(ROOTLIBS) -lXMLParser -lMathMore
EXEC = testVortexFilm
# some definitions: headers, sources, objects,...
OBJS =
OBJS += $(EXEC).o
# make the executable:
#
all: $(EXEC)
$(EXEC): $(OBJS)
@echo "---> Building $(EXEC) ..."
$(LD) $(LDFLAGS) $(OBJS) -o $(EXEC) $(LIBS)
@echo "done"
# clean up: remove all object file (and core files)
# semicolon needed to tell make there is no source
# for this target!
#
clean:; @rm -f $(OBJS)
@echo "---> removing $(OBJS)"
#
$(OBJS): %.o: %.cpp
$(CXX) $(INCLUDES) $(CXXFLAGS) -c $<

File diff suppressed because it is too large Load Diff