#include "config.h"
#include <string>
#include <map>
#include <vector>
#include <algorithm>
#include "pup_stl.h"
#include "ckio.h"
#include "Vector3D.h"
#include "tree_xdr.h"
#include "TipsyFile.h"
#include "SFC.h"
#include "TreeNode.h"
#include "GenericTreeNode.h"
#include "Interval.h"
#include "parameters.h"
#include "param.h"
#include "dumpframe.h"
#include <liveViz.h>
#include "TaggedVector3D.h"
#include "codes.h"
#include "CacheInterface.h"
#include "keytype.h"
#include "GravityParticle.h"
#include "InOutput.h"
#include "ParallelGravity.decl.h"
#include "Compute.h"
Go to the source code of this file.
Classes | |
class | NewMaxOrder |
Class for new maxOrder broadcast. More... | |
class | dummyMsg |
Message to efficiently start entry methods with no arguments. More... | |
class | ComputeChunkMsg |
Message to start a remote gravity walk. More... | |
class | ORBSplittersMsg |
Message for evaluating splits for the ORB domain decomposition. More... | |
class | ParticleShuffleMsg |
Message for shuffling particles during domain decomposition. More... | |
class | CountSetPart |
Class to count added and deleted particles. More... | |
class | Main |
Overall flow control of the simulation. More... | |
struct | ewaldTable |
Coefficients for the Fourier space part of the Ewald sum. More... | |
struct | OffsetNodeStruct |
Remote Cell interaction lists for all tree levels. More... | |
struct | particlesInfoR |
Remote particles in an interaction list. More... | |
struct | particlesInfoL |
Local particles in an interaction list. More... | |
struct | LoopParDataStruct |
Data needed for the CkLoop intranode parallelization. More... | |
struct | NonLocalMomentsClient |
client that has requested a moment. More... | |
struct | NonLocalMomentsClientList |
List of clients needing a particular moment. More... | |
class | TreePiece |
Fundamental structure that holds particle and tree data. More... | |
class | LvArray |
Class for shadow arrays to avoid reduction conflicts in overlapping liveViz, SPH and gravity. More... | |
class | NonEmptyTreePieceCounter |
Used to count non-empty treepieces on the local processor. More... | |
Macros | |
#define | MERGE_REMOTE_REQUESTS_VERBOSE(X) /*CkPrintf x*/ |
Typedefs | |
typedef struct ewaldTable | EWT |
Coefficients for the Fourier space part of the Ewald sum. | |
typedef struct OffsetNodeStruct | OffsetNode |
Remote Cell interaction lists for all tree levels. | |
typedef CkQ< OffsetNode > | CheckList |
Queue of nodes to check for interactions. | |
typedef CkVec< OffsetNode > | UndecidedList |
Vector of nodes that are undecided at this level. | |
typedef CkVec< UndecidedList > | UndecidedLists |
Vector of undecided lists, one for each level. | |
typedef struct particlesInfoR | RemotePartInfo |
Remote particles in an interaction list. | |
typedef struct particlesInfoL | LocalPartInfo |
Local particles in an interaction list. | |
typedef struct LoopParDataStruct | LoopParData |
Data needed for the CkLoop intranode parallelization. More... | |
Enumerations | |
enum | LBStrategy { Null =0, Multistep, Orb3d, Multistep_notopo, MultistepNode_notopo, Orb3d_notopo, MultistepOrb, HierarchOrb } |
Load balancers that need the spatial information. | |
enum | DomainsDec { SFC_dec =0, Oct_dec =1, ORB_dec =2, SFC_peano_dec =3, SFC_peano_dec_3D =4, SFC_peano_dec_2D =5, ORB_space_dec =6 } |
Possible domain decomposition methods. | |
enum | NborDir { LEFT = 0, RIGHT } |
Directions for sending boundaries. | |
Functions | |
PUPbytes (InDumpFrame) | |
PUPbytes (COOL) | |
PUPbytes (COOLPARAM) | |
void | CkMustAssert (bool cond, const char *err) |
CkAssert() replacement works even in production mode. | |
PUPbytes (LBStrategy) | |
PUPbytes (NborDir) | |
void | operator| (PUP::er &p, DomainsDec &d) |
int | RungToSubsteps (int iRung) |
Given a rung, return the number of substeps in one big step. | |
int | DtToRung (double dDelta, double dTideal) |
Given the size of the big step, and a desired timestep, return the rung of the largest timestep less than dTideal. | |
double | RungToDt (double dDelta, int iRung) |
Given the size of the big step, and a rung, return the corresponding timestep size. | |
double | PoverRhoFloorJeans (double dResolveJeans, GravityParticle *p) |
Pressure floor to force Jeans length to be larger than the spatial resolution. | |
int | decodeReqID (int) |
Given a requestID, return the bucket number. | |
int | encodeOffset (int reqID, int x, int y, int z) |
Given a bucket number and a periodic offset, encode these into one number. | |
bool | bIsReplica (int reqID) |
is this a periodic replica? | |
void | printGenericTree (GenericTreeNode *node, std::ostream &os) |
Print a text version of a tree. | |
Variables | |
const double | ddTolerance = 0.1 |
tolerance for unequal pieces in SFC based decompositions. | |
CProxy_Main | mainChare |
Proxy for Charm Main Chare. | |
int | verbosity |
verbosity level. Higher is more verbose. | |
bool | _cache |
Use the cache (always on) | |
int | _nocache |
Disable the cache (always off) | |
int | _cacheLineDepth |
Size of a Node Cache line, specified by how deep in the tree it goes. | |
unsigned int | _yieldPeriod |
The number of buckets to process in the local gravity walk before yielding the processor. | |
DomainsDec | domainDecomposition |
The type of domain decomposition to use. | |
double | dExtraStore |
fraction of extra particle storage | |
double | dMaxBalance |
Max piece imbalance for load balancing. | |
double | dFracLoadBalance |
double | dGlassDamper |
for doing load balancing. | |
int | bUseCkLoopPar |
Use Ckloop for node parallelization. | |
GenericTrees | useTree |
type of tree to use. | |
CProxy_TreePiece | treeProxy |
Proxy for the TreePiece chare array. | |
CProxy_LvArray | lvProxy |
Proxy for the liveViz array. | |
CProxy_LvArray | smoothProxy |
Proxy for smooth reductions. | |
CProxy_LvArray | gravityProxy |
CProxy_TreePiece | streamingProxy |
A potentially optimized proxy for the tree pieces. Its use is deprecated. | |
CProxy_DataManager | dMProxy |
Proxy for the DataManager. | |
CProxy_IntraNodeLBManager | nodeLBMgrProxy |
Proxy for Managing IntraNode load balancing with ckloop. | |
unsigned int | numTreePieces |
Number of pieces into which to divide the tree. | |
unsigned int | particlesPerChare |
Number of particles per TreePiece. Used to determine the number of TreePieces. | |
int | nIOProcessor |
Number of pieces to be doing I/O at once. | |
CProxy_DumpFrameData | dfDataProxy |
Proxy for the dumpframe image data (DumpFrameData). | |
CProxy_PETreeMerger | peTreeMergerProxy |
Proxy for the PETreeMerger group. | |
CProxy_CkCacheManager< KeyType > | cacheGravPart |
Proxy for the gravity particle cache group. | |
CProxy_CkCacheManager< KeyType > | cacheSmoothPart |
Proxy for the smooth particle cache group. | |
CProxy_CkCacheManager< KeyType > | cacheNode |
Proxy for the tree node cache group. | |
CkGroupID | dataManagerID |
The group ID of your DataManager. You must set this! | |
int | boundaryEvaluationUE |
only cells. More... | |
int | weightBalanceUE |
Weight balancing during Oct decomposition user event (for Projections tracing). | |
int | networkProgressUE |
int | nodeForceUE |
int | partForceUE |
int | tbFlushRequestsUE |
int | prefetchDoneUE |
int | _prefetch |
Prefetch nodes for the remote walk. | |
int | _randChunks |
int | _numChunks |
unsigned int | bucketSize |
int | localNodesPerReq |
GPU related settings. | |
int | remoteNodesPerReq |
int | remoteResumeNodesPerReq |
int | localPartsPerReq |
int | remotePartsPerReq |
int | remoteResumePartsPerReq |
double | largePhaseThreshold |
cosmoType | theta |
BH-like opening criterion. | |
cosmoType | thetaMono |
int | numInitDecompBins |
int | octRefineLevel |
const int | MAXRUNG = 30 |
const int | MAXSUBSTEPS = 1 << MAXRUNG |
const double | MAXSUBSTEPS_INV = 1 / (double)MAXSUBSTEPS |
const int | PHASE_FEEDBACK = MAXRUNG + 1 |
slot in MultistepLB to hold feedback phase load information | |
const double | GAMMA_JEANS = 2.0 |
Adiabatic index to use with the Jeans pressure floor. | |
const double | GAMMA_NONCOOL = 5.0/3.0 |
typedef struct LoopParDataStruct LoopParData |
Data needed for the CkLoop intranode parallelization.
This structure holds the data that needs to be passed to a free processor so that it can calculate the gravity interactions. Each attribute is a list so that multiple buckets can be operated on.
int _numChunks |
number of chunks into which to split the remote walk.
int _randChunks |
Randomize the chunks for the remote walk.
int boundaryEvaluationUE |
only cells.
Boundary evaluation user event (for Projections tracing).
unsigned int bucketSize |
Maximum number of particles in a bucket.
double dFracLoadBalance |
Min fraction of particles active
CProxy_LvArray gravityProxy |
Proxy for gravity reductions
int numInitDecompBins |
Number of bins to use for the first iteration of every Oct decomposition step
int octRefineLevel |
Specifies the number of sub-bins a bin is split into for Oct decomposition
cosmoType thetaMono |
Criterion of excepting monopole