OpenAtom  Version1.5a
cpaimd.h File Reference

Some basic data structures and the array map classes are defined here. More...

#include "debug_flags.h"
#include "CPcharmParaInfoGrp.h"
#include "load_balance/PeList.h"
#include "uber/Uber.h"
#include "EachToManyMulticastStrategy.h"
#include "RingMulticastStrategy.h"
#include "StreamingStrategy.h"
#include "ckhashtable.h"
#include "load_balance/IntMap.h"
#include "load_balance/MapTable.h"
#include "Atoms.h"
#include "energy.h"
#include "paircalc/ckPairCalculator.h"
#include "cpaimd.decl.h"

Go to the source code of this file.

Classes

class  main
 The class which creates the main chare. More...
 
class  CkArrayMapTable1
 Helper class for map hashtables copied from femrefine.C. More...
 
class  CkArrayMapTable2
 
class  CkArrayMapTable3
 
class  CkArrayMapTable4
 
class  AtomComputeMap
 Class used for instantiation of G-space group objects. More...
 
class  GSMap
 
class  RSMap
 Class used for instantiation of real-space group objects. More...
 
class  RPPMap
 
class  RhoRSMap
 provide procnum mapping for RhoR More...
 
class  RhoGSMap
 provide procnum mapping for RhoG More...
 
class  RhoGHartMap
 
class  RhoRHartMap
 

Namespaces

 cp
 Class for paircalc config data.
 

Macros

#define USE_INT_MAP
 
#define LOAD_BALANCE_STEP   100000000
 
#define PRE_BALANCE_STEP   2
 
#define FIRST_BALANCE_STEP   100000000
 
#define CmiMemcpy(dest, src, size)   CmiMemcpy((dest), (src), (size))
 
#define DoFFTContribute_   1100
 
#define doRealFwFFT_   1110
 
#define doRealBwFFT_   1120
 
#define GspaceFwFFT_   1130
 
#define GspaceBwFFT_   1140
 
#define RhoRtoGFFT_   1150
 
#define PostByrdfwFFTGtoR_   1152
 
#define BwFFTRtoG_   1153
 
#define ByrdanddoFwFFTGtoR_   1154
 
#define HartExcVksG_   1160
 
#define divRhoVksGspace_   1161
 
#define AcceptStructFact_   1162
 
#define eesHartExcG_   1163
 
#define eesEwaldG_   1164
 
#define eesAtmForcR_   1165
 
#define eesAtmBspline_   1166
 
#define eesZmatR_   1167
 
#define eesEnergyAtmForcR_   1168
 
#define eesProjG_   1169
 
#define fwFFTGtoR0_   1170
 
#define fwFFTGtoRnot0_   1171
 
#define doNlFFTGtoR_   1172
 
#define doNlFFTRtoG_   1173
 
#define eesPsiForcGspace_   1174
 
#define GradCorrGGA_   1180
 
#define WhiteByrdFFTX_   1181
 
#define WhiteByrdFFTY_   1182
 
#define WhiteByrdFFTZ_   1183
 
#define enlMatrixCalc_   1300
 
#define enlAtmForcCalc_   1301
 
#define enlForcCalc_   1302
 
#define doEextFFTRtoG_   1303
 
#define doEextFFTGtoR_   1304
 
#define doEextFFTGxtoRx_   1305
 
#define doEextFFTRytoGy_   1306
 
#define doRhoFFTRytoGy_   1307
 
#define doRhoFFTGxtoRx_   1308
 
#define OrthoDGEMM1_   1401
 
#define OrthoDGEMM2_   1402
 
#define IntegrateModForces_   1000
 200-300 reserved for paircalculator
 
#define Scalcmap_   2000
 
#define GHartAtmForcCopy_   3000
 
#define GHartAtmForcSend_   4000
 

Functions

CkReductionMsg * sumFastDouble (int nMsg, CkReductionMsg **msgs)
 sum together matrices of doubles possibly faster than sum_double due to minimizing copies and using sameer's fastadd
 
void fastAdd (double *a, double *b, int nelem)
 
void init_commlib_strategies (int, int, int, UberCollection thisInstance)
 Initialize Commlib communication strategies.
 
void lst_sort_clean (int, int *, int *)
 
void init_PIBeads (CPcharmParaInfo *sim, UberCollection thisInstance)
 Create the PIBeadAtoms array. More...
 
void init_state_chares (int natm_nl, int natm_nl_grp_max, int numSfGrps, int doublePack, CPcharmParaInfo *sim, UberCollection thisInstance)
 Create the array elements for the GSpace, Particle and Real Space planes /////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////. More...
 
void init_eesNL_chares (int natm_nl, int natm_nl_grp_max, int doublePack, PeList *exclusion, CPcharmParaInfo *sim, UberCollection thisInstance)
 /addtogroup Particle More...
 
int init_rho_chares (CPcharmParaInfo *, UberCollection thisInstance)
 Creating arrays CP_Rho_GSpacePlane, CP_Rho_GSpacePlaneHelper and CP_Rho_RealSpacePlane. More...
 
void control_physics_to_driver (UberCollection thisInstance)
 Get the atoms and the parainfo /////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////. More...
 
void get_grp_params (int natm_nl, int numSfGrps, int indexSfGrp, int planeIndex, int *n_ret, int *istrt_ret, int *iend_ret)
 
int atmGrpMap (int istart, int nsend, int listsize, int *listpe, int AtmGrp, int dup, int planeIndex)
 
int gsprocNum (CPcharmParaInfo *sim, int state, int plane, int numInst)
 
bool findCuboid (int &x, int &y, int &z, int &order, int maxX, int maxY, int maxZ, int maxT, int volume, int vn)
 return the cuboid x,y,z of a subpartition exactly matching that volume
 
void create_Rho_fft_numbers (int, int, int, int, int, int, int *, int *, int *, int *, int *)
 
void setTraceUserEvents ()
 
void computeMapOffsets ()
 
void paircalcstartup (pc::pcConfig *cfgSymmPC, pc::pcConfig *cfgAsymmPC, CPcharmParaInfo *sim, int doublePack)
 stuff to be include before the decl or else
 
void orthostartup (cp::ortho::orthoConfig *orthoCfg, pc::pcConfig *cfgSymmPC, pc::pcConfig *cfgAsymmPC, CPcharmParaInfo *sim, PeListFactory *peList4PCmapping)
 

Variables

bool fakeTorus
 
CkVec< int > PIBImaptable
 INT_MAPs are the ones actually used so these are being changed to CkVec's for beads.
 
CkVec< MapType1AtomImaptable
 
CkVec< MapType2GSImaptable
 
CkVec< MapType2RSImaptable
 
CkVec< MapType2RPPImaptable
 
CkVec< MapType2RhoGSImaptable
 
CkVec< MapType2RhoRSImaptable
 
CkVec< MapType2RhoGHartImaptable
 
CkVec< MapType3RhoRHartImaptable
 
CkHashtableT< intdual, int > GSmaptable
 
CkHashtableT< intdual, int > RSmaptable
 
CkHashtableT< intdual, int > RPPmaptable
 
CkHashtableT< intdual, int > RhoGSmaptable
 
CkHashtableT< intdual, int > RhoRSmaptable
 
CkHashtableT< intdual, int > RhoGHartmaptable
 
CkHashtableT< inttriple, int > RhoRHartmaptable
 
CkHashtableT< intdual, int > AsymScalcmaptable
 
CkHashtableT< intdual, int > SymScalcmaptable
 

Detailed Description

Some basic data structures and the array map classes are defined here.

These maps are used to map the array elements to the correct processors. Please read ../doc/README for a detailed documentation on the structure of the program.

Definition in file cpaimd.h.

Function Documentation

void control_physics_to_driver ( UberCollection  thisInstance)

Get the atoms and the parainfo /////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////.

make a group : create a proxy for the atom class and also a reduction client

Definition at line 2373 of file cpaimd.C.

void create_Rho_fft_numbers ( int  ,
int  ,
int  ,
int  ,
int  ,
int  ,
int *  ,
int *  ,
int *  ,
int *  ,
int *   
)

Simple case : everyone is the same size

Subplane case : different sizes with subplanes label

Definition at line 2948 of file cpaimd.C.

Referenced by init_state_chares().

void init_eesNL_chares ( int  natm_nl,
int  natm_nl_grp_max,
int  doublePack,
PeList exclusion,
CPcharmParaInfo sim,
UberCollection  thisInstance 
)

/addtogroup Particle

Creating arrays CP_StateRealParticlePlane /////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////

Useful Local variables

Definition at line 1753 of file cpaimd.C.

void init_PIBeads ( CPcharmParaInfo sim,
UberCollection  thisInstance 
)

Create the PIBeadAtoms array.

Definition at line 1203 of file cpaimd.C.

void init_state_chares ( int  natm_nl,
int  natm_nl_grp_max,
int  numSfGrps,
int  doublePack,
CPcharmParaInfo sim,
UberCollection  thisInstance 
)

Create the array elements for the GSpace, Particle and Real Space planes /////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////.

Useful Local variables

addtogroup mapping

Definition at line 1235 of file cpaimd.C.

References create_Rho_fft_numbers().

void setTraceUserEvents ( )

Set user trace events for projections optimizations

Definition at line 3028 of file cpaimd.C.

References IntegrateModForces_.