OpenAtom
Version1.5a
|
Handles electronic structure in real space, creates input for Density computation in CP_RhoRealSpacePlane. More...
Classes | |
class | CP_State_RealSpacePlane |
Functions | |
CP_State_RealSpacePlane_SDAG_CODE | CP_State_RealSpacePlane::CP_State_RealSpacePlane (int, int, int, int, int, int, int, UberCollection) |
void | CP_State_RealSpacePlane::pup (PUP::er &) |
void | CP_State_RealSpacePlane::setNumPlanesToExpect (int num) |
void | CP_State_RealSpacePlane::unpackFFT (RSFFTMsg *) |
void | CP_State_RealSpacePlane::doFFT () |
After receiving from G-space, FFT to real space /////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////. More... | |
void | CP_State_RealSpacePlane::doReduction () |
No one else can use tmpdataR until I perform doReduction because I will not be rolled out until I finish my scalar work. More... | |
void | CP_State_RealSpacePlane::unpackProduct (ProductMsg *) |
In this method, we receive vks from the density. More... | |
void | CP_State_RealSpacePlane::doVksFFT () |
void | CP_State_RealSpacePlane::sendFPsiToGSP () |
void | CP_State_RealSpacePlane::init (ProductMsg *) |
Setting up the multicast trees for Gengbin's library. More... | |
void | CP_State_RealSpacePlane::ResumeFromSync () |
void | CP_State_RealSpacePlane::printData () |
Handles electronic structure in real space, creates input for Density computation in CP_RhoRealSpacePlane.
Chare Array 2D chare array nplanex X nstates.
The points of plane-wave pseudo-potential are cut along the x-dimension for finer parallelization.
Chare Array 2D chare array nplanex X nstates.
This is a description of the "life" of a CP_State_RealSpacePlane object.
At the start of the program, the constructor CP_State_RealSpacePlane() is called. The CP_State_GSpacePlane objects send data to CP_State_RealSpacePlane after doing FFT in the y direction. The data is sent through the doFFT() method. In this method FFTs in the z and x directions are performed. After this the squared magnitudes of the psi_r values are sent to RealSpaceDensity. The CP_State_RealSpacePlane object is idle until further messages are sent to it.
The idle period of the CP_State_RealSpacePlane is ended by a message from RealSpaceDensity objects - doProduct(). In this method the Slab of data in CP_State_RealSpacePlane, psi_r, is multiplied with the data sent from RealSpaceDensity. Then, inverse ffts in z and x directions are performed. Then the slab of data is send to CP_State_GSpacePlanes so that the inverse fft in the x direction can be performed.
Handles electronic structure in real space. The points of plane-wave pseudo-potential are cut along the x-dimension for finer parallelization.
CP_State_RealSpacePlane::CP_State_RealSpacePlane | ( | int | gSpaceUnits, |
int | realSpaceUnits, | ||
int | _ngrida, | ||
int | _ngridb, | ||
int | _ngridc, | ||
int | _rfortime, | ||
int | _rbacktime, | ||
UberCollection | _instance | ||
) |
ckout << "State R Space Constructor : " << thisIndex.x << " " << thisIndex.y << " " <<CkMyPe() << endl;
Definition at line 85 of file CP_State_RealSpacePlane.C.
References initRealStateSlab().
void CP_State_RealSpacePlane::doFFT | ( | ) |
After receiving from G-space, FFT to real space /////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////.
Perform the FFT and get psi^2 which we can store in cache tmpData because we will blast it right off before losing control
If non-local itself is on and the ees method is to be used, launch
Send off the reduction unless you are skipping rho, whence you call doproduct
Definition at line 264 of file CP_State_RealSpacePlane.C.
References CP_State_RealSpacePlane::doReduction(), and FFTcache::doStpFFTGtoR_Rchare().
void CP_State_RealSpacePlane::doReduction | ( | ) |
No one else can use tmpdataR until I perform doReduction because I will not be rolled out until I finish my scalar work.
Grab some local pointer and do some checking.
Perform the Reduction to get the density : vks holds psi^2 for us Return values for vks cannot hit this chare until the reduciton is complete.
Definition at line 417 of file CP_State_RealSpacePlane.C.
References mCastGrpId.
Referenced by CP_State_RealSpacePlane::doFFT().
void CP_State_RealSpacePlane::doVksFFT | ( | ) |
A little output under some circumstances
Do the FFT of psi*vks
Definition at line 583 of file CP_State_RealSpacePlane.C.
References FFTcache::doStpFFTRtoG_Rchare().
void CP_State_RealSpacePlane::init | ( | ProductMsg * | msg | ) |
Setting up the multicast trees for Gengbin's library.
Do not delete msg. Its a nokeep.
Definition at line 729 of file CP_State_RealSpacePlane.C.
References instControllerProxy.
void CP_State_RealSpacePlane::sendFPsiToGSP | ( | ) |
== Perform the transpose and then the blast off the final 1D-FFT
clean up the states
Definition at line 639 of file CP_State_RealSpacePlane.C.
void CP_State_RealSpacePlane::unpackFFT | ( | RSFFTMsg * | msg | ) |
Unpack the message You have received packed data (x,y) from processor sendIndex Every real space chare receives the same x,y indicies. For double pack, x=0,1,2,3,4 ... y= {-K ... K} The x increase with processor number. The y are split. The rundescriptor contains all we need to unpack the data. For doublepack : nffty*run[i][j].x + run[i][j].y we store this stuff in the convenient package Pictorially a half cylinder is sent which is unpacked into a half cube for easy FFTing. Y is the inner index.
Definition at line 170 of file CP_State_RealSpacePlane.C.
void CP_State_RealSpacePlane::unpackProduct | ( | ProductMsg * | msg | ) |
In this method, we receive vks from the density.
We apply this to psi to create psiVks, when all are here we call the working doProduct for FFTing. This is a stream processing scheme.
Do not delete msg. Its a nokeep.
Unpack and check size, use message data for multiply, then resume which calls doProduct
Definition at line 496 of file CP_State_RealSpacePlane.C.