33 #ifndef MESH_CELL_LINKED_LIST_H 34 #define MESH_CELL_LINKED_LIST_H 131 void clearCellLists();
132 void UpdateCellListData();
144 template <
typename GetParticleIndex,
typename GetSearchDepth,
typename GetNeighborRelation>
147 GetSearchDepth &get_search_depth, GetNeighborRelation &get_neighbor_relation);
150 template <
typename GetParticleIndex,
typename GetSearchDepth,
typename GetNeighborRelation,
typename PartParticleCheck>
153 GetSearchDepth &get_search_depth, GetNeighborRelation &get_neighbor_relation,
154 PartParticleCheck &part_check);
170 inline size_t getMeshLevel(Real particle_cutoff_radius);
188 #endif // MESH_CELL_LINKED_LIST_H StdVec< ConcurrentCellLists > SplitCellLists
Definition: sph_data_containers.h:54
Base class for all adaptations. The base class defines essential global parameters. It is also used for single-resolution method. In the constructor parameter, system_refinement_ratio defines the relation between present resolution to the system reference resolution. The derived classes are defined for more complex adaptations.
Definition: adaptation.h:55
This is the base classes of mesh, which is used to describe ordered and indexed data sets...
Particles with essential (geometric and kinematic) data. There are three types of particles, all par...
Definition: base_particles.h:81
virtual void clearSplitCellLists(SplitCellLists &split_cell_lists)
Definition: cell_linked_list.cpp:22
virtual void tagMirrorBoundingCells(CellLists &cell_lists, BoundingBox &body_domain_bounds, int axis, bool positive)=0
Defining a mesh cell linked list for a body. The meshes for all bodies share the same global coordina...
Definition: cell_linked_list.h:113
virtual void tagMirrorBoundingCells(CellLists &cell_lists, BoundingBox &body_domain_bounds, int axis, bool positive) override
Definition: cell_linked_list.h:185
StdVec< size_t > IndexVector
Definition: sph_data_containers.h:37
virtual void tagBodyDomainBoundingCells(StdVec< CellLists > &cell_lists, BoundingBox &body_domain_bounds, int axis) override
Definition: cell_linked_list_supplementary.cpp:154
virtual void tagBodyPartByCell(CellLists &cell_lists, std::function< bool(Vecd, Real)> &check_included) override
Definition: cell_linked_list_supplementary.cpp:134
ConcurrentIndexVector concurrent_particle_indexes_
Definition: cell_linked_list.h:55
virtual void UpdateCellLists() override
Definition: cell_linked_list.cpp:35
StdLargeVec< CellList * > CellLists
Definition: sph_data_containers.h:46
virtual void assignBaseParticles(BaseParticles *base_particles)=0
Abstract base class for cell-based mesh by introducing number of cells, buffer width and mesh-based d...
Definition: base_mesh.h:106
There are the classes for neighboring particles. It saves the information for carring out pair intera...
virtual void computingSequence(StdLargeVec< size_t > &sequence) override
Definition: cell_linked_list.cpp:64
The linked list for one cell.
Definition: cell_linked_list.h:51
virtual ListData findNearestListDataEntry(const Vecd &position) override
Definition: cell_linked_list.h:181
virtual void UpdateCellLists()=0
virtual void tagMirrorBoundingCells(CellLists &cell_lists, BoundingBox &body_domain_bounds, int axis, bool positive) override
Definition: cell_linked_list_supplementary.cpp:186
LargeVec< size_t > ConcurrentIndexVector
Definition: sph_data_containers.h:39
virtual void insertACellLinkedParticleIndex(size_t particle_index, const Vecd &particle_position)=0
virtual void updateSplitCellLists(SplitCellLists &split_cell_lists) override
Definition: cell_linked_list.h:168
MeshDataMatrix< CellList > cell_linked_lists_
Definition: cell_linked_list.h:118
StdLargeVec< ListData > ListDataVector
Definition: sph_data_containers.h:44
Abstract class for mesh cell linked list.
Definition: cell_linked_list.h:69
Abstract base class of a general SPH kernel function which is a smoothed Dirac delta function...
Definition: base_kernel.h:63
virtual void tagBodyDomainBoundingCells(StdVec< CellLists > &cell_lists, BoundingBox &body_domain_bounds, int axis)=0
Abstract base class for the field data saved on a mesh.
Definition: base_mesh.h:128
StdLargeVec< Neighborhood > ParticleConfiguration
Definition: neighbor_relation.h:66
std::pair< size_t, Vecd > ListData
Definition: sph_data_containers.h:42
BaseCellLinkedList(RealBody &real_body, SPHAdaptation &sph_adaptation)
Definition: cell_linked_list.cpp:17
Multi-level Meshes with successively double the resolution.
Definition: base_mesh.h:166
void insertACellLinkedParticleIndex(size_t particle_index, const Vecd &particle_position) override
Definition: cell_linked_list.cpp:100
virtual void assignBaseParticles(BaseParticles *base_particles) override
Definition: cell_linked_list.cpp:113
virtual void updateSplitCellLists(SplitCellLists &split_cell_lists)=0
ListDataVector cell_list_data_
Definition: cell_linked_list.h:57
virtual void updateSplitCellLists(SplitCellLists &split_cell_lists) override
Definition: cell_linked_list_supplementary.cpp:70
Defining a multilevel level set for a complex region.
Definition: cell_linked_list.h:164
size_t getMeshLevel(Real particle_cutoff_radius)
Definition: cell_linked_list.cpp:87
void InsertACellLinkedListDataEntry(size_t particle_index, const Vecd &particle_position) override
Definition: cell_linked_list_supplementary.cpp:99
void deleteMeshDataMatrix()
Definition: cell_linked_list_supplementary.cpp:26
IndexVector real_particle_indexes_
Definition: cell_linked_list.h:59
virtual void InsertACellLinkedListDataEntry(size_t particle_index, const Vecd &particle_position)=0
virtual void writeMeshFieldToPlt(std::ofstream &output_file) override
Definition: cell_linked_list_supplementary.cpp:222
virtual void assignBaseParticles(BaseParticles *base_particles) override
Definition: cell_linked_list.cpp:59
void searchNeighborPartsByParticles(size_t total_real_particles, BaseParticles &source_particles, ParticleConfiguration &particle_configuration, GetParticleIndex &get_particle_index, GetSearchDepth &get_search_depth, GetNeighborRelation &get_neighbor_relation, PartParticleCheck &part_check)
virtual ListData findNearestListDataEntry(const Vecd &position) override
Definition: cell_linked_list_supplementary.cpp:105
void InsertACellLinkedListDataEntry(size_t particle_index, const Vecd &particle_position) override
Definition: cell_linked_list.cpp:107
virtual void computingSequence(StdLargeVec< size_t > &sequence)=0
virtual ListData findNearestListDataEntry(const Vecd &position)=0
virtual void UpdateCellLists() override
Definition: cell_linked_list.cpp:122
void insertACellLinkedParticleIndex(size_t particle_index, const Vecd &particle_position) override
Definition: cell_linked_list_supplementary.cpp:93
Derived body with inner particle configuration or inner interactions. After construction, the particle and material must be specified.
Definition: base_body.h:182
virtual void tagBodyPartByCell(CellLists &cell_lists, std::function< bool(Vecd, Real)> &check_included) override
Definition: cell_linked_list.cpp:153
virtual void tagBodyPartByCell(CellLists &cell_lists, std::function< bool(Vecd, Real)> &check_included)=0
void allocateMeshDataMatrix()
Definition: cell_linked_list_supplementary.cpp:21
virtual void tagBodyDomainBoundingCells(StdVec< CellLists > &cell_lists, BoundingBox &body_domain_bounds, int axis) override
Definition: cell_linked_list.h:184
void searchNeighborsByParticles(size_t total_real_particles, BaseParticles &source_particles, ParticleConfiguration &particle_configuration, GetParticleIndex &get_particle_index, GetSearchDepth &get_search_depth, GetNeighborRelation &get_neighbor_relation)
Definition: cell_linked_list.hpp:16
Definition: solid_body_supplementary.cpp:9
virtual void computingSequence(StdLargeVec< size_t > &sequence) override
Definition: cell_linked_list.h:182