OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
BoxLibParticle< PLayout > Class Template Referenceabstract

#include <BoxLibParticle.h>

Inheritance diagram for BoxLibParticle< PLayout >:
Collaboration diagram for BoxLibParticle< PLayout >:

Public Types

typedef AmrParticleBase< PLayout >::ParticlePos_t ParticlePos_t
typedef AmrParticleBase< PLayout >::ParticleIndex_t ParticleIndex_t
typedef AmrParticleBase< PLayout >::SingleParticlePos_t SingleParticlePos_t
typedef AmrParticleBase< PLayout >::AmrField_t AmrField_t
typedef AmrParticleBase< PLayout >::AmrScalarFieldContainer_t AmrScalarFieldContainer_t
typedef AmrParticleBase< PLayout >::AmrVectorFieldContainer_t AmrVectorFieldContainer_t
typedef AmrParticleBase< PLayout >::AmrVectorField_t AmrVectorField_t
typedef AmrParticleBase< PLayout >::ParticleLevelCounter_t ParticleLevelCounter_t
typedef PLayout::AmrProcMap_t AmrProcMap_t
typedef PLayout::AmrGrid_t AmrGrid_t
typedef PLayout::AmrGeometry_t AmrGeometry_t
typedef PLayout::AmrIntVect_t AmrIntVect_t
typedef PLayout::AmrBox_t AmrBox_t
typedef PLayout::AmrReal_t AmrReal_t
typedef amrex::FArrayBox FArrayBox_t
typedef long SortListIndex_t
typedef std::vector< SortListIndex_tSortList_t
typedef std::vector< ParticleAttribBase * > attrib_container_t
enum  { Dim = PLayout::Dimension }
typedef PLayout Layout_t
typedef PLayout::Position_t Position_t
typedef PLayout::Index_t Index_t
typedef PLayout::pair_iterator pair_iterator
typedef PLayout::pair_t pair_t
typedef PLayout::UpdateFlags UpdateFlags
typedef attrib_container_t::iterator attrib_iterator
enum  DsMode { INPUT , OUTPUT , BOTH , DEFAULT }
typedef std::vector< DataSourceObject * > container_t

Public Member Functions

 BoxLibParticle ()
 BoxLibParticle (PLayout *layout)
template<class FT, unsigned Dim, class PT>
void scatter (ParticleAttrib< FT > &attrib, AmrScalarFieldContainer_t &f, ParticleAttrib< Vektor< PT, Dim > > &pp, int lbase, int lfine, const ParticleAttrib< int > &pbin, int bin=-1)
template<class FT, unsigned Dim, class PT>
void scatter (ParticleAttrib< FT > &attrib, AmrField_t &f, ParticleAttrib< Vektor< PT, Dim > > &pp, const ParticleAttrib< int > &pbin, int bin=-1, int level=0)
template<class FT, unsigned Dim, class PT>
void gather (ParticleAttrib< FT > &attrib, AmrVectorFieldContainer_t &f, ParticleAttrib< Vektor< PT, Dim > > &pp, int lbase, int lfine)
void initializeAmr ()
const ParticleLevelCounter_tgetLocalNumPerLevel () const
ParticleLevelCounter_tgetLocalNumPerLevel ()
void setLocalNumPerLevel (const ParticleLevelCounter_t &LocalNumPerLevel)
void createWithID (unsigned id)
void create (size_t M)
void destroy (size_t M, size_t I, bool doNow=false)
void performDestroy (bool updateLocalNum=false)
void update ()
void update (int lev_min, int lev_max, bool isRegrid=false)
void update (const ParticleAttrib< char > &canSwap)
void sort ()
void sort (SortList_t &sortlist)
PLayoutgetAmrLayout ()
const PLayoutgetAmrLayout () const
void setForbidTransform (bool forbidTransform)
bool isForbidTransform () const
const double & domainMapping (bool inverse=false)
const double & getScalingFactor () const
void setLorentzFactor (const Vector_t &lorentzFactor)
void initialize (PLayout *)
size_t getTotalNum () const
size_t getLocalNum () const
size_t getDestroyNum () const
size_t getGhostNum () const
void setTotalNum (size_t n)
void setLocalNum (size_t n)
PLayoutgetLayout ()
const PLayoutgetLayout () const
ParticleBConds< Position_t, PLayout::Dimension > & getBConds ()
void setBConds (const ParticleBConds< Position_t, PLayout::Dimension > &bc)
virtual void setBConds (const ParticleBConds< Position_t, Dim > &bc)=0
bool singleInitNode () const
bool getUpdateFlag (UpdateFlags f) const
void setUpdateFlag (UpdateFlags f, bool val)
void addAttribute (ParticleAttribBase &pa)
ParticleAttribBasegetAttribute (attrib_container_t::size_type N)
attrib_container_t::size_type numAttributes () const
attrib_iterator begin ()
attrib_iterator end ()
void resetID ()
void globalCreate (size_t np)
size_t putMessage (Message &, size_t, size_t)
size_t putMessage (Message &, const std::vector< size_t > &)
size_t putMessage (Message &, size_t)
FormatgetFormat ()
size_t writeMsgBuffer (MsgBuffer *&, const std::vector< size_t > &)
template<class O>
size_t writeMsgBufferWithOffsets (MsgBuffer *&, const std::vector< size_t > &, const std::vector< O > &)
size_t readMsgBuffer (MsgBuffer *)
size_t readGhostMsgBuffer (MsgBuffer *, int)
size_t getMessage (Message &)
size_t getSingleMessage (Message &)
size_t getMessageAndCreate (Message &)
size_t ghostPutMessage (Message &, size_t, size_t)
size_t ghostPutMessage (Message &, const std::vector< size_t > &)
size_t ghostGetMessage (Message &, int)
size_t ghostGetSingleMessage (Message &, int)
void ghostDestroy (size_t, size_t)
void printDebug (Inform &)
bool connected (DataConnect *=0) const
DataSourceObjectfindDataSourceObject (DataConnect *) const
DataConnectconnect (const char *, DataConnect *=0, int=DataSource::DEFAULT)
bool connect (DataSourceObject *)
bool disconnect (DataConnect *=0)
bool updateConnection (DataConnect *=0)
void interact (DataConnect *=0)
void interact (const char *, DataConnect *=0)

Public Attributes

ParticleIndex_t Level
ParticleIndex_t Grid
ParticlePos_t R
ParticleIndex_t ID
ParticlePos_tR_p
ParticleIndex_tID_p

Protected Member Functions

virtual DataSourceObjectcreateDataSourceObject (const char *nm, DataConnect *dc, int tm)

Protected Attributes

IpplTimings::TimerRef updateParticlesTimer_m
IpplTimings::TimerRef sortParticlesTimer_m
IpplTimings::TimerRef domainMappingTimer_m
bool forbidTransform_m
 To avoid multiple transformations during regrid.
double scale_m
Vector_t lorentzFactor_m
std::vector< std::pair< size_t, size_t > > DestroyList

Private Member Functions

template<class AType>
void AssignDensityFort (ParticleAttrib< AType > &pa, AmrScalarFieldContainer_t &mf_to_be_filled, int lev_min, int ncomp, int finest_level, const ParticleAttrib< int > &pbin, int bin=-1) const
template<class AType>
void InterpolateFort (ParticleAttrib< AType > &pa, AmrVectorFieldContainer_t &mesh_data, int lev_min, int lev_max)
template<class AType>
void InterpolateSingleLevelFort (ParticleAttrib< AType > &pa, AmrVectorField_t &mesh_data, int lev)
template<class AType>
void InterpolateMultiLevelFort (ParticleAttrib< AType > &pa, AmrVectorFieldContainer_t &mesh_data, int lev)
template<class AType>
void AssignCellDensitySingleLevelFort (ParticleAttrib< AType > &pa, AmrField_t &mf, int level, const ParticleAttrib< int > &pbin, int bin=-1, int ncomp=1, int particle_lvl_offset=0) const
void getLocalBounds_m (Vector_t &rmin, Vector_t &rmax)
void getGlobalBounds_m (Vector_t &rmin, Vector_t &rmax)
void setup ()
unsigned getNextID ()

Private Attributes

IpplTimings::TimerRef AssignDensityTimer_m
ParticleLevelCounter_t LocalNumPerLevel_m
PLayoutLayout
attrib_container_t AttribList
size_t TotalNum
size_t LocalNum
size_t DestroyNum
size_t GhostNum
unsigned NextID
container_t ConnectionList

Detailed Description

template<class PLayout>
class BoxLibParticle< PLayout >

Definition at line 38 of file BoxLibParticle.h.

Member Typedef Documentation

◆ AmrBox_t

template<class PLayout>
typedef PLayout::AmrBox_t BoxLibParticle< PLayout >::AmrBox_t

Definition at line 55 of file BoxLibParticle.h.

◆ AmrField_t

template<class PLayout>
typedef AmrParticleBase<PLayout>::AmrField_t BoxLibParticle< PLayout >::AmrField_t

Definition at line 44 of file BoxLibParticle.h.

◆ AmrGeometry_t

template<class PLayout>
typedef PLayout::AmrGeometry_t BoxLibParticle< PLayout >::AmrGeometry_t

Definition at line 53 of file BoxLibParticle.h.

◆ AmrGrid_t

template<class PLayout>
typedef PLayout::AmrGrid_t BoxLibParticle< PLayout >::AmrGrid_t

Definition at line 52 of file BoxLibParticle.h.

◆ AmrIntVect_t

template<class PLayout>
typedef PLayout::AmrIntVect_t BoxLibParticle< PLayout >::AmrIntVect_t

Definition at line 54 of file BoxLibParticle.h.

◆ AmrProcMap_t

template<class PLayout>
typedef PLayout::AmrProcMap_t BoxLibParticle< PLayout >::AmrProcMap_t

Definition at line 51 of file BoxLibParticle.h.

◆ AmrReal_t

template<class PLayout>
typedef PLayout::AmrReal_t BoxLibParticle< PLayout >::AmrReal_t

Definition at line 56 of file BoxLibParticle.h.

◆ AmrScalarFieldContainer_t

template<class PLayout>
typedef AmrParticleBase<PLayout>::AmrScalarFieldContainer_t BoxLibParticle< PLayout >::AmrScalarFieldContainer_t

Definition at line 46 of file BoxLibParticle.h.

◆ AmrVectorField_t

template<class PLayout>
typedef AmrParticleBase<PLayout>::AmrVectorField_t BoxLibParticle< PLayout >::AmrVectorField_t

Definition at line 48 of file BoxLibParticle.h.

◆ AmrVectorFieldContainer_t

template<class PLayout>
typedef AmrParticleBase<PLayout>::AmrVectorFieldContainer_t BoxLibParticle< PLayout >::AmrVectorFieldContainer_t

Definition at line 47 of file BoxLibParticle.h.

◆ attrib_container_t

template<class PLayout>
typedef std::vector<ParticleAttribBase *> AmrParticleBase< PLayout >::attrib_container_t
inherited

Definition at line 59 of file AmrParticleBase.h.

◆ attrib_iterator

template<class PLayout>
typedef attrib_container_t::iterator IpplParticleBase< PLayout >::attrib_iterator
inherited

Definition at line 143 of file IpplParticleBase.h.

◆ container_t

typedef std::vector<DataSourceObject *> DataSource::container_t
inherited

Definition at line 67 of file DataSource.h.

◆ FArrayBox_t

template<class PLayout>
typedef amrex::FArrayBox BoxLibParticle< PLayout >::FArrayBox_t

Definition at line 58 of file BoxLibParticle.h.

◆ Index_t

template<class PLayout>
typedef PLayout::Index_t IpplParticleBase< PLayout >::Index_t
inherited

Definition at line 134 of file IpplParticleBase.h.

◆ Layout_t

template<class PLayout>
typedef PLayout IpplParticleBase< PLayout >::Layout_t
inherited

Definition at line 132 of file IpplParticleBase.h.

◆ pair_iterator

template<class PLayout>
typedef PLayout::pair_iterator IpplParticleBase< PLayout >::pair_iterator
inherited

Definition at line 139 of file IpplParticleBase.h.

◆ pair_t

template<class PLayout>
typedef PLayout::pair_t IpplParticleBase< PLayout >::pair_t
inherited

Definition at line 140 of file IpplParticleBase.h.

◆ ParticleIndex_t

template<class PLayout>
typedef AmrParticleBase<PLayout>::ParticleIndex_t BoxLibParticle< PLayout >::ParticleIndex_t

Definition at line 42 of file BoxLibParticle.h.

◆ ParticleLevelCounter_t

template<class PLayout>
typedef AmrParticleBase<PLayout>::ParticleLevelCounter_t BoxLibParticle< PLayout >::ParticleLevelCounter_t

Definition at line 49 of file BoxLibParticle.h.

◆ ParticlePos_t

template<class PLayout>
typedef AmrParticleBase<PLayout>::ParticlePos_t BoxLibParticle< PLayout >::ParticlePos_t

Definition at line 41 of file BoxLibParticle.h.

◆ Position_t

template<class PLayout>
typedef PLayout::Position_t IpplParticleBase< PLayout >::Position_t
inherited

Definition at line 133 of file IpplParticleBase.h.

◆ SingleParticlePos_t

template<class PLayout>
typedef AmrParticleBase<PLayout>::SingleParticlePos_t BoxLibParticle< PLayout >::SingleParticlePos_t

Definition at line 43 of file BoxLibParticle.h.

◆ SortList_t

template<class PLayout>
typedef std::vector<SortListIndex_t> AmrParticleBase< PLayout >::SortList_t
inherited

Definition at line 58 of file AmrParticleBase.h.

◆ SortListIndex_t

template<class PLayout>
typedef long AmrParticleBase< PLayout >::SortListIndex_t
inherited

Definition at line 57 of file AmrParticleBase.h.

◆ UpdateFlags

template<class PLayout>
typedef PLayout::UpdateFlags IpplParticleBase< PLayout >::UpdateFlags
inherited

Definition at line 141 of file IpplParticleBase.h.

Member Enumeration Documentation

◆ anonymous enum

template<class PLayout>
anonymous enum
inherited
Enumerator
Dim 

Definition at line 129 of file IpplParticleBase.h.

◆ DsMode

enum DataSource::DsMode
inherited
Enumerator
INPUT 
OUTPUT 
BOTH 
DEFAULT 

Definition at line 64 of file DataSource.h.

Constructor & Destructor Documentation

◆ BoxLibParticle() [1/2]

template<class PLayout>
BoxLibParticle< PLayout >::BoxLibParticle ( )

Definition at line 37 of file BoxLibParticle.hpp.

References AmrParticleBase< PLayout >::AmrParticleBase(), AssignDensityTimer_m, and IpplTimings::getTimer().

Here is the call graph for this function:

◆ BoxLibParticle() [2/2]

template<class PLayout>
BoxLibParticle< PLayout >::BoxLibParticle ( PLayout * layout)
Parameters
layoutthat does the particle-to-core management

Definition at line 44 of file BoxLibParticle.hpp.

References AmrParticleBase< PLayout >::AmrParticleBase(), AssignDensityTimer_m, and IpplTimings::getTimer().

Here is the call graph for this function:

Member Function Documentation

◆ addAttribute()

◆ AssignCellDensitySingleLevelFort()

template<class PLayout>
template<class AType>
void BoxLibParticle< PLayout >::AssignCellDensitySingleLevelFort ( ParticleAttrib< AType > & pa,
AmrField_t & mf,
int level,
const ParticleAttrib< int > & pbin,
int bin = -1,
int ncomp = 1,
int particle_lvl_offset = 0 ) const
private

Single-level scatter (adjusted from AMReX).

Parameters
pais the attribute to scatter onto the grid
mfwhere attribute is scatterd to
levelwhere we want to scatter
ncompis the number of the component in the MultiFab (ncomp = 1)
particle_lvl_offsetis zero

Definition at line 180 of file BoxLibParticle.hpp.

References AmrParticleLevelCounter< Key, T, Compare, Allocator >::begin(), AmrParticleLevelCounter< Key, T, Compare, Allocator >::end(), IpplParticleBase< PLayout >::getLayout(), AmrParticleBase< PLayout >::getLocalNumPerLevel(), AmrParticleBase< PLayout >::Grid, and IpplParticleBase< PLayout >::R.

Referenced by AssignDensityFort(), and scatter().

Here is the call graph for this function:

◆ AssignDensityFort()

template<class PLayout>
template<class AType>
void BoxLibParticle< PLayout >::AssignDensityFort ( ParticleAttrib< AType > & pa,
AmrScalarFieldContainer_t & mf_to_be_filled,
int lev_min,
int ncomp,
int finest_level,
const ParticleAttrib< int > & pbin,
int bin = -1 ) const
private

Multi-level scatter (adjusted from AMReX).

Parameters
pais the attribute to scatter onto the grid
mf_to_be_filledis the MultiFab container to be filled (i.e. grid data)
lev_minlevel we want to start
ncompis the number of components of MultiFab (equal to 1)
finest_levellevel we want to end

Definition at line 118 of file BoxLibParticle.hpp.

References AssignCellDensitySingleLevelFort(), AssignDensityTimer_m, IpplParticleBase< PLayout >::getLayout(), IpplTimings::startTimer(), and IpplTimings::stopTimer().

Referenced by scatter().

Here is the call graph for this function:

◆ begin()

template<class PLayout>
attrib_iterator IpplParticleBase< PLayout >::begin ( )
inlineinherited

Definition at line 242 of file IpplParticleBase.h.

◆ connect() [1/2]

DataConnect * DataSource::connect ( const char * nm,
DataConnect * dataconn = 0,
int tm = DataSource::DEFAULT )
inherited

Definition at line 83 of file DataSource.cpp.

Referenced by DataConnect::connect(), and DataConnect::connect().

◆ connect() [2/2]

bool DataSource::connect ( DataSourceObject * dso)
inherited

Definition at line 127 of file DataSource.cpp.

References DataConnect::checkin(), DataSourceObject::connected(), ConnectionList, DataSourceObject::getConnection(), and DataSourceObject::getSource().

Here is the call graph for this function:

◆ connected()

bool DataSource::connected ( DataConnect * dataconn = 0) const
inherited

Definition at line 69 of file DataSource.cpp.

References ConnectionList, and findDataSourceObject().

Here is the call graph for this function:

◆ create()

template<class PLayout>
void AmrParticleBase< PLayout >::create ( size_t M)
virtualinherited

◆ createDataSourceObject()

template<class PLayout>
virtual DataSourceObject * IpplParticleBase< PLayout >::createDataSourceObject ( const char * nm,
DataConnect * dc,
int tm )
inlineprotectedvirtualinherited

Implements DataSource.

Definition at line 346 of file IpplParticleBase.h.

◆ createWithID()

template<class PLayout>
void AmrParticleBase< PLayout >::createWithID ( unsigned id)
virtualinherited

◆ destroy()

template<class PLayout>
void AmrParticleBase< PLayout >::destroy ( size_t M,
size_t I,
bool doNow = false )
virtualinherited

◆ disconnect()

bool DataSource::disconnect ( DataConnect * dataconn = 0)
inherited

Definition at line 143 of file DataSource.cpp.

References a, DataConnect::checkout(), and ConnectionList.

Referenced by DataConnect::checkout(), and ~DataSource().

Here is the call graph for this function:

◆ domainMapping()

template<class PLayout>
const double & AmrParticleBase< PLayout >::domainMapping ( bool inverse = false)
inherited

Linear mapping to AMReX computation domain [-1, 1]^3 including the Lorentz transform. All dimensions are mapped by the same scaling factor. The potential and electric field need to be scaled afterwards appropriately.

Parameters
PDatais the particle data
inverseis true if we want to do the inverse operation
Returns
scaling factor

Definition at line 265 of file AmrParticleBase.hpp.

References domainMappingTimer_m, getGlobalBounds_m(), IpplParticleBase< PLayout >::getLayout(), IpplParticleBase< PLayout >::getLocalNum(), IpplParticleBase< PLayout >::getTotalNum(), lorentzFactor_m, IpplInfo::myNode(), IpplParticleBase< PLayout >::R, scale_m, IpplTimings::startTimer(), and IpplTimings::stopTimer().

Referenced by AmrBoxLib::computeSelfFields_cycl(), AmrBoxLib::computeSelfFields_cycl(), and AmrBoxLib::initFineLevels().

Here is the call graph for this function:

◆ end()

template<class PLayout>
attrib_iterator IpplParticleBase< PLayout >::end ( )
inlineinherited

Definition at line 243 of file IpplParticleBase.h.

◆ findDataSourceObject()

DataSourceObject * DataSource::findDataSourceObject ( DataConnect * dc) const
inherited

Definition at line 55 of file DataSource.cpp.

References a, and ConnectionList.

Referenced by connected().

◆ gather()

template<class PLayout>
template<class FT, unsigned Dim, class PT>
void BoxLibParticle< PLayout >::gather ( ParticleAttrib< FT > & attrib,
AmrVectorFieldContainer_t & f,
ParticleAttrib< Vektor< PT, Dim > > & pp,
int lbase,
int lfine )

Multi-level gather. Gather the data from the given Field into the given attribute, using the given Position attribute.

Parameters
attribto gather from grid
fvector field on grid
ppparticle position (not used for AMReX call)
lbasebase level to gather from
lfinefinest level to gather from

Definition at line 106 of file BoxLibParticle.hpp.

References InterpolateFort().

Referenced by AmrBoxLib::computeSelfFields_cycl(), and AmrBoxLib::computeSelfFields_cycl().

Here is the call graph for this function:

◆ getAmrLayout() [1/2]

template<class PLayout>
PLayout & AmrParticleBase< PLayout >::getAmrLayout ( )
inlineinherited

Definition at line 125 of file AmrParticleBase.h.

Referenced by AmrYtWriter::writeBunch().

◆ getAmrLayout() [2/2]

template<class PLayout>
const PLayout & AmrParticleBase< PLayout >::getAmrLayout ( ) const
inlineinherited

Definition at line 126 of file AmrParticleBase.h.

◆ getAttribute()

template<class PLayout>
ParticleAttribBase & IpplParticleBase< PLayout >::getAttribute ( attrib_container_t::size_type N)
inlineinherited

Definition at line 235 of file IpplParticleBase.h.

Referenced by DiscParticle::read(), and DiscParticle::write().

◆ getBConds()

template<class PLayout>
ParticleBConds< Position_t, PLayout::Dimension > & IpplParticleBase< PLayout >::getBConds ( )
inlinevirtualinherited

◆ getDestroyNum()

template<class PLayout>
size_t IpplParticleBase< PLayout >::getDestroyNum ( ) const
inlinevirtualinherited

◆ getFormat()

template<class PLayout>
Format * IpplParticleBase< PLayout >::getFormat ( )
inherited

Definition at line 250 of file IpplParticleBase.hpp.

◆ getGhostNum()

template<class PLayout>
size_t IpplParticleBase< PLayout >::getGhostNum ( ) const
inlinevirtualinherited

◆ getGlobalBounds_m()

template<class PLayout>
void AmrParticleBase< PLayout >::getGlobalBounds_m ( Vector_t & rmin,
Vector_t & rmax )
privateinherited

Definition at line 370 of file AmrParticleBase.hpp.

References allreduce(), getLocalBounds_m(), and min().

Referenced by domainMapping().

Here is the call graph for this function:

◆ getLayout() [1/2]

◆ getLayout() [2/2]

template<class PLayout>
const PLayout & IpplParticleBase< PLayout >::getLayout ( ) const
inlineinherited

Definition at line 204 of file IpplParticleBase.h.

◆ getLocalBounds_m()

template<class PLayout>
void AmrParticleBase< PLayout >::getLocalBounds_m ( Vector_t & rmin,
Vector_t & rmax )
privateinherited

Definition at line 349 of file AmrParticleBase.hpp.

References IpplParticleBase< PLayout >::getLocalNum(), max(), and IpplParticleBase< PLayout >::R.

Referenced by getGlobalBounds_m().

Here is the call graph for this function:

◆ getLocalNum()

◆ getLocalNumPerLevel() [1/2]

template<class PLayout>
AmrParticleBase< PLayout >::ParticleLevelCounter_t & AmrParticleBase< PLayout >::getLocalNumPerLevel ( )
inherited

Definition at line 80 of file AmrParticleBase.hpp.

◆ getLocalNumPerLevel() [2/2]

◆ getMessage()

template<class PLayout>
size_t IpplParticleBase< PLayout >::getMessage ( Message & msg)
inherited

Definition at line 346 of file IpplParticleBase.hpp.

References AttribList, Message::get(), Layout, and PAssert.

Here is the call graph for this function:

◆ getMessageAndCreate()

template<class PLayout>
size_t IpplParticleBase< PLayout >::getMessageAndCreate ( Message & msg)
inherited

Definition at line 394 of file IpplParticleBase.hpp.

References ADDIPPLSTAT, getMessage(), Layout, LocalNum, and PAssert.

Referenced by DiscParticle::read().

Here is the call graph for this function:

◆ getNextID()

template<class PLayout>
unsigned IpplParticleBase< PLayout >::getNextID ( )
privateinherited

Definition at line 86 of file IpplParticleBase.hpp.

References IpplInfo::Comm, and NextID.

Referenced by create().

◆ getScalingFactor()

template<class PLayout>
const double & AmrParticleBase< PLayout >::getScalingFactor ( ) const
inlineinherited

This function is used during the cell tagging routines.

Returns
the scaling factor of the particle domain mapping.

Definition at line 338 of file AmrParticleBase.hpp.

References scale_m.

Referenced by AmrBoxLib::tagForChargeDensity_m().

◆ getSingleMessage()

template<class PLayout>
size_t IpplParticleBase< PLayout >::getSingleMessage ( Message & msg)
inherited

Definition at line 369 of file IpplParticleBase.hpp.

References AttribList, Layout, and PAssert.

◆ getTotalNum()

template<class PLayout>
size_t IpplParticleBase< PLayout >::getTotalNum ( ) const
inlinevirtualinherited

◆ getUpdateFlag()

template<class PLayout>
bool IpplParticleBase< PLayout >::getUpdateFlag ( UpdateFlags f) const
inlinevirtualinherited

◆ ghostDestroy()

template<class PLayout>
void IpplParticleBase< PLayout >::ghostDestroy ( size_t M,
size_t I )
virtualinherited

◆ ghostGetMessage()

template<class PLayout>
size_t IpplParticleBase< PLayout >::ghostGetMessage ( Message & msg,
int  )
inherited

Definition at line 688 of file IpplParticleBase.hpp.

References AttribList, Message::get(), GhostNum, Layout, and PAssert.

Here is the call graph for this function:

◆ ghostGetSingleMessage()

template<class PLayout>
size_t IpplParticleBase< PLayout >::ghostGetSingleMessage ( Message & msg,
int  )
inherited

Definition at line 713 of file IpplParticleBase.hpp.

References AttribList, GhostNum, Layout, and PAssert.

◆ ghostPutMessage() [1/2]

template<class PLayout>
size_t IpplParticleBase< PLayout >::ghostPutMessage ( Message & msg,
const std::vector< size_t > & pl )
inherited

Definition at line 663 of file IpplParticleBase.hpp.

References AttribList, Layout, PAssert, and Message::put().

Here is the call graph for this function:

◆ ghostPutMessage() [2/2]

template<class PLayout>
size_t IpplParticleBase< PLayout >::ghostPutMessage ( Message & msg,
size_t M,
size_t I )
inherited

Definition at line 628 of file IpplParticleBase.hpp.

References AttribList, GhostNum, Layout, PAssert, Message::put(), and R.

Here is the call graph for this function:

◆ globalCreate()

template<class PLayout>
void IpplParticleBase< PLayout >::globalCreate ( size_t np)
virtualinherited

Implements AbstractParticle< PLayout::Position_t, PLayout::Dimension >.

Definition at line 465 of file IpplParticleBase.hpp.

References create(), IpplInfo::getNodes(), Layout, IpplInfo::myNode(), and PAssert.

Here is the call graph for this function:

◆ initialize()

template<class PLayout>
void IpplParticleBase< PLayout >::initialize ( PLayout * layout)
inherited

Definition at line 33 of file IpplParticleBase.hpp.

References Layout, PAssert, and setup().

Here is the call graph for this function:

◆ initializeAmr()

template<class PLayout>
void AmrParticleBase< PLayout >::initializeAmr ( )
inlineinherited

Definition at line 75 of file AmrParticleBase.h.

◆ interact() [1/2]

void DataSource::interact ( const char * str,
DataConnect * dataconn = 0 )
inherited

Definition at line 208 of file DataSource.cpp.

References a, and ConnectionList.

◆ interact() [2/2]

void DataSource::interact ( DataConnect * dataconn = 0)
inherited

Definition at line 195 of file DataSource.cpp.

References a, and ConnectionList.

◆ InterpolateFort()

template<class PLayout>
template<class AType>
void BoxLibParticle< PLayout >::InterpolateFort ( ParticleAttrib< AType > & pa,
AmrVectorFieldContainer_t & mesh_data,
int lev_min,
int lev_max )
private

Multi-level gather (adjusted from AMReX).

Parameters
pais the attribute to gather to.
mesh_datawhere the information is
lev_minlevel to start
lev_maxlevel to end

Definition at line 302 of file BoxLibParticle.hpp.

References InterpolateMultiLevelFort(), and InterpolateSingleLevelFort().

Referenced by gather().

Here is the call graph for this function:

◆ InterpolateMultiLevelFort()

template<class PLayout>
template<class AType>
void BoxLibParticle< PLayout >::InterpolateMultiLevelFort ( ParticleAttrib< AType > & pa,
AmrVectorFieldContainer_t & mesh_data,
int lev )
private

Multi-level gather.

Parameters
pais the attribute to be updated
mesh_datawhere the information is taken from
levfor which we get the mesh data

Definition at line 409 of file BoxLibParticle.hpp.

References AmrParticleLevelCounter< Key, T, Compare, Allocator >::begin(), AmrParticleLevelCounter< Key, T, Compare, Allocator >::end(), IpplParticleBase< PLayout >::getLayout(), AmrParticleBase< PLayout >::getLocalNumPerLevel(), AmrParticleBase< PLayout >::Grid, and IpplParticleBase< PLayout >::R.

Referenced by InterpolateFort().

Here is the call graph for this function:

◆ InterpolateSingleLevelFort()

template<class PLayout>
template<class AType>
void BoxLibParticle< PLayout >::InterpolateSingleLevelFort ( ParticleAttrib< AType > & pa,
AmrVectorField_t & mesh_data,
int lev )
private

Single-level gather (adjusted from AMReX).

Parameters
pais the attribute to be updated
mesh_datawhere the information is taken from
levfor which we get the mesh data

Definition at line 317 of file BoxLibParticle.hpp.

References AmrParticleLevelCounter< Key, T, Compare, Allocator >::begin(), AmrParticleLevelCounter< Key, T, Compare, Allocator >::end(), IpplParticleBase< PLayout >::getLayout(), AmrParticleBase< PLayout >::getLocalNumPerLevel(), AmrParticleBase< PLayout >::Grid, and IpplParticleBase< PLayout >::R.

Referenced by InterpolateFort().

Here is the call graph for this function:

◆ isForbidTransform()

template<class PLayout>
bool AmrParticleBase< PLayout >::isForbidTransform ( ) const
inlineinherited
Returns
true if we are not mapping the particles onto \([-1, 1]^3\) during an update call.

Definition at line 259 of file AmrParticleBase.hpp.

References forbidTransform_m.

Referenced by AmrBoxLib::initFineLevels().

◆ numAttributes()

template<class PLayout>
attrib_container_t::size_type IpplParticleBase< PLayout >::numAttributes ( ) const
inlineinherited

Definition at line 239 of file IpplParticleBase.h.

Referenced by operator<<(), DiscParticle::read(), and DiscParticle::write().

◆ performDestroy()

template<class PLayout>
void AmrParticleBase< PLayout >::performDestroy ( bool updateLocalNum = false)
virtualinherited

◆ printDebug()

template<class PLayout>
void IpplParticleBase< PLayout >::printDebug ( Inform & o)
inherited

Definition at line 763 of file IpplParticleBase.hpp.

References AttribList, endl(), getLocalNum(), getTotalNum(), and Layout.

Here is the call graph for this function:

◆ putMessage() [1/3]

template<class PLayout>
size_t IpplParticleBase< PLayout >::putMessage ( Message & msg,
const std::vector< size_t > & putList )
inherited

Definition at line 209 of file IpplParticleBase.hpp.

References Layout, and PAssert.

◆ putMessage() [2/3]

template<class PLayout>
size_t IpplParticleBase< PLayout >::putMessage ( Message & msg,
size_t I )
inherited

Definition at line 232 of file IpplParticleBase.hpp.

References AttribList, Layout, and PAssert.

◆ putMessage() [3/3]

template<class PLayout>
size_t IpplParticleBase< PLayout >::putMessage ( Message & msg,
size_t M,
size_t I )
inherited

Definition at line 180 of file IpplParticleBase.hpp.

References Layout, PAssert, and Message::put().

Referenced by DiscParticle::write().

Here is the call graph for this function:

◆ readGhostMsgBuffer()

template<class PLayout>
size_t IpplParticleBase< PLayout >::readGhostMsgBuffer ( MsgBuffer * msgbuf,
int node )
inherited

Definition at line 330 of file IpplParticleBase.hpp.

◆ readMsgBuffer()

template<class PLayout>
size_t IpplParticleBase< PLayout >::readMsgBuffer ( MsgBuffer * msgbuf)
inherited

Definition at line 314 of file IpplParticleBase.hpp.

References MsgBuffer::get().

Here is the call graph for this function:

◆ resetID()

template<class PLayout>
void IpplParticleBase< PLayout >::resetID ( void )
virtualinherited

Implements AbstractParticle< PLayout::Position_t, PLayout::Dimension >.

Definition at line 96 of file IpplParticleBase.hpp.

References IpplInfo::Comm, COMM_ANY_NODE, Message::get(), getLocalNum(), IpplInfo::getNodes(), ID, IpplInfo::myNode(), P_LAYOUT_CYCLE, P_RESET_ID_TAG, PAssert, Message::put(), and sum().

Here is the call graph for this function:

◆ scatter() [1/2]

template<class PLayout>
template<class FT, unsigned Dim, class PT>
void BoxLibParticle< PLayout >::scatter ( ParticleAttrib< FT > & attrib,
AmrField_t & f,
ParticleAttrib< Vektor< PT, Dim > > & pp,
const ParticleAttrib< int > & pbin,
int bin = -1,
int level = 0 )

Single-level scatter. Scatter the data from the given attribute onto the given field, using the given position attribute. It calls the AMReX methods.

Parameters
attribto scatter onto grid
ffield on grid
ppparticle position (not used for AMReX call)
pbinthe particle bin attribute
binto scatter (default: -1 --> scatter all particles)
levelfor which we put particles onto the grid

Definition at line 85 of file BoxLibParticle.hpp.

References AssignCellDensitySingleLevelFort().

Here is the call graph for this function:

◆ scatter() [2/2]

template<class PLayout>
template<class FT, unsigned Dim, class PT>
void BoxLibParticle< PLayout >::scatter ( ParticleAttrib< FT > & attrib,
AmrScalarFieldContainer_t & f,
ParticleAttrib< Vektor< PT, Dim > > & pp,
int lbase,
int lfine,
const ParticleAttrib< int > & pbin,
int bin = -1 )

Multi-level scatter. Scatter the data from the given attribute onto the given field, using the given position attribute. It calls the AMReX method.

Parameters
attribto scatter onto grid
ffield on grid
ppparticle position (not used for AMReX call)
lbasebase level we want to start
lfinefinest level we want to stop
pbinthe particle bin attribute
binto scatter (default: -1 --> scatter all particles)

Definition at line 52 of file BoxLibParticle.hpp.

References AssignDensityFort(), IpplParticleBase< PLayout >::getLayout(), and scatter().

Referenced by AmrBoxLib::computeSelfFields_cycl(), AmrBoxLib::solvePoisson_m(), and AmrBoxLib::tagForChargeDensity_m().

Here is the call graph for this function:

◆ setBConds() [1/2]

virtual void AbstractParticle< PLayout::Position_t, Dim >::setBConds ( const ParticleBConds< Position_t, Dim > & bc)
pure virtualinherited

◆ setBConds() [2/2]

template<class PLayout>
void IpplParticleBase< PLayout >::setBConds ( const ParticleBConds< Position_t, PLayout::Dimension > & bc)
inlineinherited

Definition at line 210 of file IpplParticleBase.h.

◆ setForbidTransform()

template<class PLayout>
void AmrParticleBase< PLayout >::setForbidTransform ( bool forbidTransform)
inlineinherited

This method is used in the AmrPartBunch::boundp() function in order to avoid multpile particle mappings during the mesh regridding process.

Parameters
forbidTransformtrue if we don't want to map particles onto \([-1, 1]^3\)

Definition at line 253 of file AmrParticleBase.hpp.

References forbidTransform_m.

Referenced by AmrBoxLib::computeSelfFields_cycl(), AmrBoxLib::computeSelfFields_cycl(), and AmrBoxLib::initFineLevels().

◆ setLocalNum()

template<class PLayout>
void IpplParticleBase< PLayout >::setLocalNum ( size_t n)
inlinevirtualinherited

◆ setLocalNumPerLevel()

template<class PLayout>
void AmrParticleBase< PLayout >::setLocalNumPerLevel ( const ParticleLevelCounter_t & LocalNumPerLevel)
inherited

Definition at line 87 of file AmrParticleBase.hpp.

References LocalNumPerLevel_m.

◆ setLorentzFactor()

template<class PLayout>
void AmrParticleBase< PLayout >::setLorentzFactor ( const Vector_t & lorentzFactor)
inherited

Definition at line 343 of file AmrParticleBase.hpp.

References lorentzFactor_m.

◆ setTotalNum()

template<class PLayout>
void IpplParticleBase< PLayout >::setTotalNum ( size_t n)
inlinevirtualinherited

◆ setup()

template<class PLayout>
void IpplParticleBase< PLayout >::setup ( )
privateinherited

Definition at line 49 of file IpplParticleBase.hpp.

References addAttribute(), IpplInfo::Comm, DestroyNum, GhostNum, ID, AbstractParticle< PLayout::Position_t, PLayout::Dimension >::ID_p, INCIPPLSTAT, LocalNum, NextID, R, AbstractParticle< PLayout::Position_t, PLayout::Dimension >::R_p, and TotalNum.

Referenced by initialize(), and IpplParticleBase< Layout_t >::IpplParticleBase().

Here is the call graph for this function:

◆ setUpdateFlag()

template<class PLayout>
void IpplParticleBase< PLayout >::setUpdateFlag ( UpdateFlags f,
bool val )
inlinevirtualinherited

◆ singleInitNode()

template<class PLayout>
bool IpplParticleBase< PLayout >::singleInitNode ( ) const
virtualinherited

◆ sort() [1/2]

template<class PLayout>
void AmrParticleBase< PLayout >::sort ( )
inherited

Definition at line 215 of file AmrParticleBase.hpp.

References IpplParticleBase< PLayout >::getLocalNum(), IpplParticleBase< PLayout >::LocalNum, sort(), sortParticlesTimer_m, IpplTimings::startTimer(), and IpplTimings::stopTimer().

Referenced by sort(), update(), and update().

Here is the call graph for this function:

◆ sort() [2/2]

template<class PLayout>
void AmrParticleBase< PLayout >::sort ( SortList_t & sortlist)
inherited

Definition at line 244 of file AmrParticleBase.hpp.

References begin(), and end().

Here is the call graph for this function:

◆ update() [1/3]

◆ update() [2/3]

template<class PLayout>
void AmrParticleBase< PLayout >::update ( const ParticleAttrib< char > & canSwap)
virtualinherited

Reimplemented from IpplParticleBase< PLayout >.

Definition at line 194 of file AmrParticleBase.hpp.

References IpplParticleBase< PLayout >::getLayout(), INCIPPLSTAT, IpplParticleBase< PLayout >::Layout, PAssert, sort(), IpplTimings::startTimer(), IpplTimings::stopTimer(), and updateParticlesTimer_m.

Here is the call graph for this function:

◆ update() [3/3]

template<class PLayout>
void AmrParticleBase< PLayout >::update ( int lev_min,
int lev_max,
bool isRegrid = false )
inherited

There's is NO check performed if lev_min <= lev_max and lev_min >= 0.

Parameters
lev_minis the start level to update
lev_maxis the last level to update
isRegridis true if we are updating the grids (default: false)

Definition at line 173 of file AmrParticleBase.hpp.

References IpplParticleBase< PLayout >::getLayout(), INCIPPLSTAT, IpplParticleBase< PLayout >::Layout, PAssert, sort(), IpplTimings::startTimer(), IpplTimings::stopTimer(), and updateParticlesTimer_m.

Here is the call graph for this function:

◆ updateConnection()

bool DataSource::updateConnection ( DataConnect * dataconn = 0)
inherited

Definition at line 176 of file DataSource.cpp.

References a, and ConnectionList.

◆ writeMsgBuffer()

template<class PLayout>
size_t IpplParticleBase< PLayout >::writeMsgBuffer ( MsgBuffer *& msgbuf,
const std::vector< size_t > & list )
inherited

Definition at line 275 of file IpplParticleBase.hpp.

◆ writeMsgBufferWithOffsets()

template<class PLayout>
template<class O>
size_t IpplParticleBase< PLayout >::writeMsgBufferWithOffsets ( MsgBuffer *& msgbuf,
const std::vector< size_t > & list,
const std::vector< O > & offset )
inherited

Definition at line 291 of file IpplParticleBase.hpp.

Member Data Documentation

◆ AssignDensityTimer_m

template<class PLayout>
IpplTimings::TimerRef BoxLibParticle< PLayout >::AssignDensityTimer_m
private

Definition at line 192 of file BoxLibParticle.h.

Referenced by AssignDensityFort(), BoxLibParticle(), and BoxLibParticle().

◆ AttribList

◆ ConnectionList

container_t DataSource::ConnectionList
privateinherited

◆ DestroyList

template<class PLayout>
std::vector< std::pair<size_t,size_t> > IpplParticleBase< PLayout >::DestroyList
protectedinherited

◆ DestroyNum

template<class PLayout>
size_t IpplParticleBase< PLayout >::DestroyNum
privateinherited

Definition at line 369 of file IpplParticleBase.h.

Referenced by destroy(), performDestroy(), and setup().

◆ domainMappingTimer_m

template<class PLayout>
IpplTimings::TimerRef AmrParticleBase< PLayout >::domainMappingTimer_m
protectedinherited

Definition at line 173 of file AmrParticleBase.h.

Referenced by AmrParticleBase(), AmrParticleBase(), and domainMapping().

◆ forbidTransform_m

template<class PLayout>
bool AmrParticleBase< PLayout >::forbidTransform_m
protectedinherited

To avoid multiple transformations during regrid.

Definition at line 175 of file AmrParticleBase.h.

Referenced by AmrParticleBase(), AmrParticleBase(), isForbidTransform(), and setForbidTransform().

◆ GhostNum

template<class PLayout>
size_t IpplParticleBase< PLayout >::GhostNum
privateinherited

◆ Grid

◆ ID

template<class PLayout>
ParticleIndex_t IpplParticleBase< PLayout >::ID
inherited

Definition at line 148 of file IpplParticleBase.h.

Referenced by create(), createWithID(), resetID(), and setup().

◆ ID_p

◆ Layout

◆ Level

template<class PLayout>
ParticleIndex_t AmrParticleBase< PLayout >::Level
inherited

Definition at line 61 of file AmrParticleBase.h.

◆ LocalNum

template<class PLayout>
size_t IpplParticleBase< PLayout >::LocalNum
privateinherited

◆ LocalNumPerLevel_m

template<class PLayout>
ParticleLevelCounter_t AmrParticleBase< PLayout >::LocalNumPerLevel_m
privateinherited

◆ lorentzFactor_m

template<class PLayout>
Vector_t AmrParticleBase< PLayout >::lorentzFactor_m
protectedinherited

Lorentz factor used for the domain mapping. Is updated in AmrBoxLib

Definition at line 188 of file AmrParticleBase.h.

Referenced by AmrParticleBase(), AmrParticleBase(), domainMapping(), and setLorentzFactor().

◆ NextID

template<class PLayout>
unsigned IpplParticleBase< PLayout >::NextID
privateinherited

Definition at line 373 of file IpplParticleBase.h.

Referenced by getNextID(), and setup().

◆ R

◆ R_p

◆ scale_m

template<class PLayout>
double AmrParticleBase< PLayout >::scale_m
protectedinherited

Scaling factor for particle coordinate transform (used for Poisson solve and particle-to-core distribution)

Definition at line 181 of file AmrParticleBase.h.

Referenced by AmrParticleBase(), AmrParticleBase(), domainMapping(), and getScalingFactor().

◆ sortParticlesTimer_m

template<class PLayout>
IpplTimings::TimerRef AmrParticleBase< PLayout >::sortParticlesTimer_m
protectedinherited

Definition at line 172 of file AmrParticleBase.h.

Referenced by AmrParticleBase(), AmrParticleBase(), and sort().

◆ TotalNum

template<class PLayout>
size_t IpplParticleBase< PLayout >::TotalNum
privateinherited

Definition at line 367 of file IpplParticleBase.h.

Referenced by setup().

◆ updateParticlesTimer_m

template<class PLayout>
IpplTimings::TimerRef AmrParticleBase< PLayout >::updateParticlesTimer_m
protectedinherited

Definition at line 171 of file AmrParticleBase.h.

Referenced by AmrParticleBase(), AmrParticleBase(), update(), and update().


The documentation for this class was generated from the following files: