Lattice Microbes 2.5
This is for whole cell modeling
Loading...
Searching...
No Matches
ByteLatticeExtended.h
Go to the documentation of this file.
1/*
2 * University of Illinois Open Source License
3 * Copyright 2024 Luthey-Schulten Group,
4 * All rights reserved.
5 *
6 * Extended ByteLattice with particle size support
7 */
8
9#ifndef LM_RDME_BYTELATTICEEXTENDED_H_
10#define LM_RDME_BYTELATTICEEXTENDED_H_
11
12#include "rdme/ByteLattice.h"
14#include <memory>
15#include <map>
16
17// Ensure required types are defined
18#ifndef particle_t
19typedef uint32_t particle_t;
20#endif
21
22#ifndef site_size_t
23typedef uint32_t site_size_t;
24#endif
25
26namespace lm {
27namespace rdme {
28
36public:
45 bool enableSizeChecking = true);
46
57 si_dist_t spacing, uint particlesPerSite, bool enableSizeChecking = true);
58
62 virtual ~ByteLatticeExtended() = default;
63
64 // Particle size management methods
65
71 void setParticleSize(particle_t particleType, uint32_t size);
72
78 uint32_t getParticleSize(particle_t particleType) const;
79
88
94 uint32_t getSizeBasedOccupancy(lattice_size_t subvolume) const;
95
105 particle_t particle) const;
106
113 bool canAddParticle(lattice_size_t subvolume, particle_t particle) const;
114
124 particle_t particle);
125
132 virtual void addParticleWithSizeCheck(lattice_size_t subvolume, particle_t particle);
133
143 particle_t particleType) const;
144
151 uint32_t getMaxParticleCount(lattice_size_t subvolume, particle_t particleType) const;
152
157 void setSizeCheckingEnabled(bool enable);
158
163 bool isSizeCheckingEnabled() const;
164
170
175 void validateSizeConstraints() const;
176
181 std::map<uint32_t, uint32_t> getSizeBasedOccupancyStats() const;
182
183protected:
184 std::unique_ptr<ParticleSizeManager> sizeManager_;
187
196 site_size_t maxCount) const;
197};
198
199} // namespace rdme
200} // namespace lm
201
202#endif // LM_RDME_BYTELATTICEEXTENDED_H_
uint32_t site_size_t
Definition ByteLatticeExtended.h:23
uint32_t particle_t
Definition ByteLatticeExtended.h:19
uint32_t lattice_size_t
Definition Lattice.h:55
double si_dist_t
Definition Types.h:63
unsigned int uint
Definition Types.h:52
uint32_t maxSiteCapacity_
Maximum site capacity.
Definition ByteLatticeExtended.h:186
void setSizeCheckingEnabled(bool enable)
Enable or disable size checking.
Definition ByteLatticeExtended.cpp:125
std::unique_ptr< ParticleSizeManager > sizeManager_
Particle size manager.
Definition ByteLatticeExtended.h:184
const ParticleSizeManager & getParticleSizeManager() const
Get the particle size manager.
Definition ByteLatticeExtended.cpp:134
site_size_t getParticlesAtSite(lattice_size_t subvolume, particle_t *particles, site_size_t maxCount) const
Get particles at a site for size calculation.
Definition ByteLatticeExtended.cpp:176
void validateSizeConstraints() const
Validate entire lattice for size constraints.
Definition ByteLatticeExtended.cpp:138
uint32_t getMaxParticleCount(lattice_size_t x, lattice_size_t y, lattice_size_t z, particle_t particleType) const
Get maximum number of particles of a type that can fit.
Definition ByteLatticeExtended.cpp:109
virtual ~ByteLatticeExtended()=default
Destructor.
uint32_t getSizeBasedOccupancy(lattice_size_t x, lattice_size_t y, lattice_size_t z) const
Get current occupancy considering particle sizes.
Definition ByteLatticeExtended.cpp:46
virtual void addParticleWithSizeCheck(lattice_size_t x, lattice_size_t y, lattice_size_t z, particle_t particle)
Add particle with size validation.
Definition ByteLatticeExtended.cpp:84
ByteLatticeExtended(lattice_coord_t size, si_dist_t spacing, uint particlesPerSite, bool enableSizeChecking=true)
Constructor with particle size support.
Definition ByteLatticeExtended.cpp:15
uint32_t getParticleSize(particle_t particleType) const
Get the size for a particle type.
Definition ByteLatticeExtended.cpp:42
bool isSizeCheckingEnabled() const
Check if size checking is enabled.
Definition ByteLatticeExtended.cpp:130
bool canAddParticle(lattice_size_t x, lattice_size_t y, lattice_size_t z, particle_t particle) const
Check if particle can be added without exceeding capacity.
Definition ByteLatticeExtended.cpp:65
bool sizeCheckingEnabled_
Enable size validation.
Definition ByteLatticeExtended.h:185
std::map< uint32_t, uint32_t > getSizeBasedOccupancyStats() const
Get occupancy statistics considering particle sizes.
Definition ByteLatticeExtended.cpp:164
void setParticleSize(particle_t particleType, uint32_t size)
Set the size for a particle type.
Definition ByteLatticeExtended.cpp:38
ByteLattice(lattice_coord_t size, si_dist_t spacing, uint particlesPerSite)
Definition ByteLattice.cpp:57
uint32_t * particles
Definition ByteLattice.h:126
lattice_coord_t size
Definition Lattice.h:256
si_dist_t spacing
Definition Lattice.h:258
Manages particle sizes and validates site occupancy constraints.
Definition ParticleSizeManager.h:48
Definition Capsule.cpp:46
Type to store a lattice coordinate.
Definition Lattice.h:59