chombo-discharge
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
GenericParticle< M, N > Class Template Reference

A generic particle class, holding the position and a specified number of real and vector values. More...

#include <CD_GenericParticle.H>

Inheritance diagram for GenericParticle< M, N >:
Inheritance graph
[legend]

Public Member Functions

 GenericParticle ()
 Default constructor – initializes everything to zero.
 
 GenericParticle (const GenericParticle< M, N > &a_other)
 Copy constructor. Copies all fields.
 
virtual ~GenericParticle ()
 Destructor (deallocates runtime memory storage)
 
const int32_tparticleID () const noexcept
 Get the particle ID.
 
int32_tparticleID () noexcept
 Get the particle ID.
 
const int32_trankID () const noexcept
 Get the MPI rank ID.
 
int32_trankID () noexcept
 Get the MPI rank ID.
 
RealVectposition ()
 Get the particle position.
 
const RealVectposition () const
 Get the particle position.
 
const std::array< Real, M > & getReals () const noexcept
 Get the M scalars.
 
std::array< Real, M > & getReals () noexcept
 Get the M scalars.
 
const std::array< RealVect, N > & getVects () const noexcept
 Get the N vectors.
 
std::array< RealVect, N > & getVects () noexcept
 Get the N vectors.
 
template<size_t K>
Realreal ()
 Get one of the scalars.
 
template<size_t K>
const Realreal () const
 Get one of the scalars.
 
template<size_t K>
RealVectvect ()
 Get one of the RealVects.
 
template<size_t K>
const RealVectvect () const
 Get one of the RealVects.
 
bool operator== (const GenericParticle< M, N > &a_other) const
 Comparison operator with other particle.
 
bool operator!= (const GenericParticle< M, N > &a_other) const
 Comparison operator with other particle.
 
bool operator< (const GenericParticle< M, N > &a_other) const noexcept
 Particle comparison operator. Returns lexicographical ordering.
 
virtual int size () const
 Returns the size, in number of bytes, of a flat representation of the data in this object.
 
virtual void linearOut (void *const a_buffer) const
 Write a linear binary representation of the internal data. Assumes that sufficient memory for the buffer has already been allocated by the caller.
 
virtual void linearIn (const void *const a_buffer)
 Read a linear binary representation of the internal data. Assumes that the buffer has the correct data.
 
virtual int H5size () const
 Function that is used when writing particles to HDF5.
 
virtual void H5linearOut (void *const a_buffer) const
 Linearize the Real components onto a buffer workable by HDF5.
 
virtual void H5linearIn (const void *const a_buffer)
 Delinearize the buffer onto the real components in the particle class.
 

Protected Attributes

int32_t m_particleID
 Particle ID.
 
int32_t m_rankID
 MPI rank owning this particle.
 
RealVect m_position
 Particle position.
 
std::array< Real, Mm_scalars
 Scalar storage array.
 
std::array< RealVect, Nm_vectors
 vector storage array
 

Detailed Description

template<size_t M, size_t N>
class GenericParticle< M, N >

A generic particle class, holding the position and a specified number of real and vector values.

For the sake of simplicity, I have added separate linearization functions H5size, H5linearOut, H5linearIn that only linearizes the Real components of the particle. This is done for convenience only, so I don't have to rewrite all of Chombo's particle HDF5 checkpointing routines. Instead, we simply run a bootleg version of those codes that call the H5 linearization versions instead of the regular linearization functions. Users can use this functionality for trimming other types of unnecessary properties that don't need to go into the HDF5 files.

Constructor & Destructor Documentation

◆ GenericParticle()

template<size_t M, size_t N>
GenericParticle< M, N >::GenericParticle ( const GenericParticle< M, N > &  a_other)
inline

Copy constructor. Copies all fields.

Parameters
[in]a_otherOther particle.

Member Function Documentation

◆ getReals() [1/2]

template<size_t M, size_t N>
const std::array< Real, M > & GenericParticle< M, N >::getReals ( ) const
inlinenoexcept

Get the M scalars.

Returns
m_scalars

◆ getReals() [2/2]

template<size_t M, size_t N>
std::array< Real, M > & GenericParticle< M, N >::getReals ( )
inlinenoexcept

Get the M scalars.

Returns
m_scalars

◆ getVects() [1/2]

template<size_t M, size_t N>
const std::array< RealVect, N > & GenericParticle< M, N >::getVects ( ) const
inlinenoexcept

Get the N vectors.

Returns
m_vects

◆ getVects() [2/2]

template<size_t M, size_t N>
std::array< RealVect, N > & GenericParticle< M, N >::getVects ( )
inlinenoexcept

Get the N vectors.

Returns
m_vects

◆ H5linearIn()

template<size_t M, size_t N>
void GenericParticle< M, N >::H5linearIn ( const void *const  a_buffer)
inlinevirtual

Delinearize the buffer onto the real components in the particle class.

Ignores the particleID and rankID, so we can directly plug into Chombo's HDF5 API.

Parameters
[in]a_bufferPointer to memory block.
Note
Please do not try to output anything other than Real components. Chombo will expect only Reals.

Reimplemented in ItoParticle, and TracerParticle< M, N >.

◆ H5linearOut()

template<size_t M, size_t N>
void GenericParticle< M, N >::H5linearOut ( void *const  a_buffer) const
inlinevirtual

Linearize the Real components onto a buffer workable by HDF5.

Ignores the particleID and rankID, so we can directly plug into Chombo's HDF5 API.

Parameters
[in]a_bufferPointer to memory block.
Note
Please do not try to output anything other than Real components. Chombo will expect only Reals.

Reimplemented in ItoParticle, and TracerParticle< M, N >.

◆ H5size()

template<size_t M, size_t N>
int GenericParticle< M, N >::H5size ( ) const
inlinevirtual

Function that is used when writing particles to HDF5.

This ignores the particleID and rankID, so we can directory plug into Chombo's HDF5 APIs.

Note
Please do not try to output anything other than Real components. Chombo will expect only Reals.

Reimplemented in ItoParticle, and TracerParticle< M, N >.

◆ linearIn()

template<size_t M, size_t N>
void GenericParticle< M, N >::linearIn ( const void *const  a_buffer)
inlinevirtual

Read a linear binary representation of the internal data. Assumes that the buffer has the correct data.

Parameters
[in]a_bufferPointer to memory block.

Reimplemented in TracerParticle< M, N >.

◆ linearOut()

template<size_t M, size_t N>
void GenericParticle< M, N >::linearOut ( void *const  a_buffer) const
inlinevirtual

Write a linear binary representation of the internal data. Assumes that sufficient memory for the buffer has already been allocated by the caller.

Parameters
[in]a_bufferPointer to memory block

Reimplemented in TracerParticle< M, N >.

◆ operator!=()

template<size_t M, size_t N>
bool GenericParticle< M, N >::operator!= ( const GenericParticle< M, N > &  a_other) const
inline

Comparison operator with other particle.

Parameters
[in]a_otherOther particle
Note
Does not compare the M and N Reals and RealVects.

◆ operator==()

template<size_t M, size_t N>
bool GenericParticle< M, N >::operator== ( const GenericParticle< M, N > &  a_other) const
inline

Comparison operator with other particle.

Parameters
[in]a_otherOther particle
Note
Does not compare the M and N Reals and RealVects.

◆ position() [1/2]

template<size_t M, size_t N>
RealVect & GenericParticle< M, N >::position ( )
inline

Get the particle position.

Returns
m_position

◆ position() [2/2]

template<size_t M, size_t N>
const RealVect & GenericParticle< M, N >::position ( ) const
inline

Get the particle position.

Returns
m_position

◆ real() [1/2]

template<size_t M, size_t N>
template<size_t K>
Real & GenericParticle< M, N >::real ( )
inline

Get one of the scalars.

Template parameter is the position in the m_scalars array. This is templated so that compilers may throw compile-time errors if trying to fetch elements out of range.

Returns
m_scalars[K]

◆ real() [2/2]

template<size_t M, size_t N>
template<size_t K>
const Real & GenericParticle< M, N >::real ( ) const
inline

Get one of the scalars.

Template parameter is the position in the m_scalars array. This is templated so that compilers may throw compile-time errors if trying to fetch elements out of range.

Returns
m_scalars[K]

◆ size()

template<size_t M, size_t N>
int GenericParticle< M, N >::size ( ) const
inlinevirtual

Returns the size, in number of bytes, of a flat representation of the data in this object.

Reimplemented in TracerParticle< M, N >.

◆ vect() [1/2]

template<size_t M, size_t N>
template<size_t K>
RealVect & GenericParticle< M, N >::vect ( )
inline

Get one of the RealVects.

Template parameter is the position in the m_vectors array. This is templated so that compilers may throw compile-time errors if trying to fetch elements out of range.

Returns
m_vectors[K]

◆ vect() [2/2]

template<size_t M, size_t N>
template<size_t K>
const RealVect & GenericParticle< M, N >::vect ( ) const
inline

Get one of the RealVects.

Template parameter is the position in the m_vectors array. This is templated so that compilers may throw compile-time errors if trying to fetch elements out of range.

Returns
m_vectors[K]

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