Parallel Finite Element - General geometry Ewald-like Method
Part of Continuum-particle Simulation Suite under MICCOM
Public Member Functions | Protected Member Functions | List of all members
libMesh::PointMesh< KDDim > Class Template Reference

#include <particle_mesh.h>

Inheritance diagram for libMesh::PointMesh< KDDim >:
Inheritance graph
[legend]
Collaboration diagram for libMesh::PointMesh< KDDim >:
Collaboration graph
[legend]

Public Member Functions

 PointMesh (libMesh::ParticleMesh< KDDim > &particle_mesh, const Real &search_radius_p, const Real &search_radius_e)
 
 PointMesh (MeshBase &mesh, std::vector< PolymerChain > &polymer_chains, const Real &search_radius_p, const Real &search_radius_e)
 
 PointMesh (MeshBase &mesh, PolymerChain &polymer_chain, const Real &search_radius_p, const Real &search_radius_e)
 
 ~PointMesh ()
 
std::vector< PointParticle * > particles () const
 
PolymerChainpolymer_chain () const
 
std::size_t num_particles () const
 
std::size_t num_chains () const
 
std::size_t num_bonds () const
 
bool is_sorted () const
 
const std::map< const std::size_t, std::vector< std::size_t > > & elem_neighbor_list () const
 
const std::vector< std::size_t > elem_neighbor_list (const Elem *elem)
 
const std::vector< std::size_t > local_elem_neighbor_list (const Elem *elem)
 
virtual void clear_kd_tree ()
 
virtual void build_particle_neighbor_list (const Point &query_pt, const bool is_sorted, std::vector< std::pair< std::size_t, Real > > &IndicesDists)
 
virtual void build_particle_neighbor_list ()
 
virtual void build_particle_neighbor_list_naively ()
 
virtual void reinit_neighbor_vector ()
 
virtual void build_elem_neighbor_list (const Elem *elem, const bool is_sorted, std::vector< std::size_t > &n_list)
 
virtual void build_elem_neighbor_list ()
 
void reinit (const bool &with_hi, bool &neighbor_list_update_flag)
 
void update_particle_mesh (ParticleMesh< KDDim > *particle_mesh) const
 
void print_point_info () const
 
void print_elem_neighbor_list (std::ostream &out=libMesh::out) const
 
void set_search_radius (const Real rp, const Real re)
 
Real search_radius (const std::string &p_e) const
 
void add_periodic_boundary (PMPeriodicBoundary &_periodic_bdry)
 
PMPeriodicBoundarypm_periodic_boundary ()
 
void set_bead_velocity (const std::vector< Real > &vel)
 
const Real & maximum_bead_velocity () const
 
const Real & minimum_bead_velocity () const
 
const void write_initial_surface_node_pos () const
 

Protected Member Functions

virtual void construct_kd_tree ()
 

Constructor & Destructor Documentation

template<unsigned int KDDim>
libMesh::PointMesh< KDDim >::PointMesh ( libMesh::ParticleMesh< KDDim > &  particle_mesh,
const Real &  search_radius_p,
const Real &  search_radius_e 
)

Here is the call graph for this function:

template<unsigned int KDDim>
libMesh::PointMesh< KDDim >::PointMesh ( MeshBase &  mesh,
std::vector< PolymerChain > &  polymer_chains,
const Real &  search_radius_p,
const Real &  search_radius_e 
)
template<unsigned int KDDim>
libMesh::PointMesh< KDDim >::PointMesh ( MeshBase &  mesh,
PolymerChain polymer_chain,
const Real &  search_radius_p,
const Real &  search_radius_e 
)

Here is the call graph for this function:

template<unsigned int KDDim>
libMesh::PointMesh< KDDim >::~PointMesh ( )

Member Function Documentation

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::add_periodic_boundary ( PMPeriodicBoundary _periodic_bdry)
inline

Add periodic boundary condition

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::build_elem_neighbor_list ( const Elem *  elem,
const bool  is_sorted,
std::vector< std::size_t > &  n_list 
)
virtual

Build the neighbor list of partilces for a given elem Output the n_list, which gives the particle ids around elem's centroid within search_radius_e.

Note we don't need the distance between particles and elem centroid here, because this list is only used to evaluate element-wise load vector due to the neighboring particles.

Here is the call graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::build_elem_neighbor_list ( )
virtual

FIXME: Should we build this locally and globally(by allgather)???

Build the particle neighbor list for each element within the search radius this will generate the _elem_neighbor_list and _elem_neighbor_list_vector NOTE this takes advantage of KD Tree

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::build_particle_neighbor_list ( const Point &  query_pt,
const bool  is_sorted,
std::vector< std::pair< std::size_t, Real > > &  IndicesDists 
)
virtual

Build the neighbor list of a particle within the search_radius_p using KD-tree. This includes the query particle itself, if the query_pt is also in the particle list. For example, the coords of the query_pt is the same as that of a particle in the list.

IndicesDists output pair<particle_id, distance> Note we need the particle distance to compute their interaction forces.

Here is the call graph for this function:

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::build_particle_neighbor_list ( )
virtual

Build the particle-particle neighbor list for all the particles with the search_radius_p using KD tree(logN complexity).

This directly call the function above! In fact, the particle neighbor list has been built in "reinit()", so this is NOT USED!

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::build_particle_neighbor_list_naively ( )
virtual

Here is the call graph for this function:

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::clear_kd_tree ( )
virtual

Clear the KD-Tree if need Note, different from the construct_kd_tree, this is a public function.

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::construct_kd_tree ( )
protectedvirtual

Build & initialize the KD tree through nanoFlann, if needed.

Here is the caller graph for this function:

template<unsigned int KDDim>
const std::map<const std::size_t, std::vector<std::size_t> >& libMesh::PointMesh< KDDim >::elem_neighbor_list ( ) const
inline

Return the information of element neighbor list around the search radius _search_radius_e Mapping between elem id and element neighbor list of particles

Here is the caller graph for this function:

template<unsigned int KDDim>
const std::vector<std::size_t> libMesh::PointMesh< KDDim >::elem_neighbor_list ( const Elem *  elem)
inline

Return the particle neighbor list around a given element around the search radius _search_radius_e

template<unsigned int KDDim>
bool libMesh::PointMesh< KDDim >::is_sorted ( ) const
inline

Check if the neighbor list is constructed sortedly

Here is the caller graph for this function:

template<unsigned int KDDim>
const std::vector<std::size_t> libMesh::PointMesh< KDDim >::local_elem_neighbor_list ( const Elem *  elem)
inline

Return the particle neighbor list around a given LOCAL element around the search radius _search_radius_e

template<unsigned int KDDim>
const Real& libMesh::PointMesh< KDDim >::maximum_bead_velocity ( ) const
inline

Set rigid particle velocity vel.size() = nui Calculate maximum point particle (or rigid particle surface nodes) velocity

Here is the caller graph for this function:

template<unsigned int KDDim>
const Real& libMesh::PointMesh< KDDim >::minimum_bead_velocity ( ) const
inline

Calculate minimum point particle (or rigid particle surface nodes) velocity

Here is the caller graph for this function:

template<unsigned int KDDim>
std::size_t libMesh::PointMesh< KDDim >::num_bonds ( ) const
inline

Return the total number of bonds

template<unsigned int KDDim>
std::size_t libMesh::PointMesh< KDDim >::num_chains ( ) const
inline
template<unsigned int KDDim>
std::size_t libMesh::PointMesh< KDDim >::num_particles ( ) const
inline

Return the total number of particles

Here is the caller graph for this function:

template<unsigned int KDDim>
std::vector<PointParticle*> libMesh::PointMesh< KDDim >::particles ( ) const
inline

Generate random point data within the bounding box and write the data to a local file "random_points_data.txt" Return the information of particles

Here is the caller graph for this function:

template<unsigned int KDDim>
PMPeriodicBoundary* libMesh::PointMesh< KDDim >::pm_periodic_boundary ( )
inline

Retrun the pointer to the periodic boundary for use

Here is the caller graph for this function:

template<unsigned int KDDim>
PolymerChain* libMesh::PointMesh< KDDim >::polymer_chain ( ) const
inline

Return the information of polymer chain

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::print_elem_neighbor_list ( std::ostream &  out = libMesh::out) const

print out the element neighbor list information

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::print_point_info ( ) const

print out the particle information

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::reinit ( const bool &  with_hi,
bool &  neighbor_list_update_flag 
)

Here is the call graph for this function:

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::reinit_neighbor_vector ( )
virtual

reinit neighbor distance for all particles

Here is the call graph for this function:

Here is the caller graph for this function:

template<unsigned int KDDim>
Real libMesh::PointMesh< KDDim >::search_radius ( const std::string &  p_e) const

Return the search radius

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::set_bead_velocity ( const std::vector< Real > &  vel)

Set particle (bead or surface node) velocity vel.size() = nui

Here is the caller graph for this function:

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::set_search_radius ( const Real  rp,
const Real  re 
)
inline

Set the values of search radii

template<unsigned int KDDim>
void libMesh::PointMesh< KDDim >::update_particle_mesh ( ParticleMesh< KDDim > *  particle_mesh) const

Here is the call graph for this function:

Here is the caller graph for this function:

template<unsigned int KDDim>
const void libMesh::PointMesh< KDDim >::write_initial_surface_node_pos ( ) const

Write bead positions to csv file

Here is the call graph for this function:

Here is the caller graph for this function:


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