Skip to content

Instantly share code, notes, and snippets.

@ultimatile
Created December 27, 2016 22:23
Show Gist options
  • Save ultimatile/806fd3443b8b56e99bc1c92c5e3cb048 to your computer and use it in GitHub Desktop.
Save ultimatile/806fd3443b8b56e99bc1c92c5e3cb048 to your computer and use it in GitHub Desktop.
for文は殺せたが...
import numpy as np
from scipy.fftpack import fft,ifft
def CalCorFFT(sitesize,elecsize,basisseq,basissize,gsvec):
numupseq=(np.tile(np.identity(basissize),(sitesize,1))*basisseq.reshape(basissize,2*sitesize)[:,:sitesize].T.reshape(sitesize*basissize,1)).reshape(sitesize,basissize,basissize)
numdownseq=(np.tile(np.identity(basissize),(sitesize,1))*basisseq.reshape(basissize,2*sitesize)[:,sitesize:].T.reshape(sitesize*basissize,1)).reshape(sitesize,basissize,basissize)
sumspin=numupseq+numdownseq
densitycor=sumspin-(elecsize/sitesize)*np.tile(np.identity(basissize),(sitesize,1,1))
spincor=(numupseq-numdownseq)/2
nmq=fft(densitycor@gsvec,sitesize,axis=0)
smq=fft(spincor@gsvec,sitesize,axis=0)
nq=ifft(densitycor@gsvec,sitesize,axis=0)
sq=ifft( spincor@gsvec,sitesize,axis=0)
ftd=np.sum(nmq*nq,axis=1)
fts=np.sum(smq*sq,axis=1)
return ftd,fts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment