OpenAtom  Version1.5a
RealSpaceState

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 ()
 

Detailed Description

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.

Function Documentation

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.