Lattice Microbes 2.5
This is for whole cell modeling
Loading...
Searching...
No Matches
MpdRdmeSolverExtended.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 RDME solver with particle size support (ByteLattice compatible)
7 */
8
9#ifndef LM_MPDRDMESOLVEREXTENDED_H_
10#define LM_MPDRDMESOLVEREXTENDED_H_
11
12#include "MpdRdmeSolver.h"
13#include "CudaByteLattice.h"
16
21
22
23namespace lm {
24
33{
34public:
37
38 // Particle size management
39 void setParticleSizes(const uint32_t* sizes, uint32_t numTypes);
40 void enableParticleSizeChecking(bool enable);
41 uint32_t getParticleSize(particle_t particleType) const;
42
43 // Validation methods
44 uint32_t validateConstraints() const;
46
47 // Efficient size checking methods
49 void useFastSizeAwareDiffusion(bool enable);
51
52 // Override solver methods
53 virtual void buildModel(const uint numberSpeciesA,
54 const uint numberReactionsA,
55 const uint* initialSpeciesCountsA,
56 const uint* reactionTypesA,
57 const double* KA,
58 const int* SA,
59 const uint* DA,
60 const uint kCols);
61
62 virtual void allocateLattice(lattice_size_t latticeXSize,
63 lattice_size_t latticeYSize,
64 lattice_size_t latticeZSize,
65 site_size_t particlesPerSite,
66 const unsigned int bytes_per_particle,
67 si_dist_t latticeSpacing);
68
69 virtual void buildDiffusionModel(const uint numberSiteTypesA,
70 const double* DFA,
71 const uint* RLA,
72 lattice_size_t latticeXSize,
73 lattice_size_t latticeYSize,
74 lattice_size_t latticeZSize,
75 site_size_t particlesPerSite,
76 const unsigned int bytes_per_particle,
77 si_dist_t latticeSpacing,
78 const uint8_t* latticeData,
79 const uint8_t* latticeSitesData,
80 bool rowMajorData = true);
81
82 virtual void generateTrajectory();
83 virtual void runTimestep(CudaByteLattice* lattice, uint32_t timestep);
84
85protected:
86 // Particle size state
91 bool useFastSizeKernels_; // Flag to use new efficient kernels
92
93 // Reaction data for GPU kernels
96
97 // Helper methods
104};
105
106} // namespace lm
107
108#endif // LM_MPDRDMESOLVEREXTENDED_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
void useFastSizeAwareDiffusion(bool enable)
bool useFastSizeKernels_
Definition MpdRdmeSolverExtended.h:91
void runSizeAwareTimestep(lm::rdme::CudaByteLatticeExtended *lattice, uint32_t timestep)
int8_t * deviceReactionMatrix
Definition MpdRdmeSolverExtended.h:94
virtual void generateTrajectory()
Actually run the simulation.
void enableParticleSizeChecking(bool enable)
uint8_t * deviceReactionLocationMatrix
Definition MpdRdmeSolverExtended.h:95
virtual void buildModel(const uint numberSpeciesA, const uint numberReactionsA, const uint *initialSpeciesCountsA, const uint *reactionTypesA, const double *KA, const int *SA, const uint *DA, const uint kCols)
virtual void runTimestep(CudaByteLattice *lattice, uint32_t timestep)
void setParticleSizes(const uint32_t *sizes, uint32_t numTypes)
void printConstraintViolations() const
bool particleSizeEnabled
Definition MpdRdmeSolverExtended.h:87
bool isFastSizeCheckingEnabled() const
Definition MpdRdmeSolverExtended.h:50
virtual void allocateLattice(lattice_size_t latticeXSize, lattice_size_t latticeYSize, lattice_size_t latticeZSize, site_size_t particlesPerSite, const unsigned int bytes_per_particle, si_dist_t latticeSpacing)
virtual void buildDiffusionModel(const uint numberSiteTypesA, const double *DFA, const uint *RLA, lattice_size_t latticeXSize, lattice_size_t latticeYSize, lattice_size_t latticeZSize, site_size_t particlesPerSite, const unsigned int bytes_per_particle, si_dist_t latticeSpacing, const uint8_t *latticeData, const uint8_t *latticeSitesData, bool rowMajorData=true)
uint32_t numParticleTypes
Definition MpdRdmeSolverExtended.h:89
uint32_t validateConstraints() const
uint32_t getParticleSize(particle_t particleType) const
void runStandardTimestep(lm::rdme::CudaByteLatticeExtended *lattice, uint32_t timestep)
bool particleSizesInitialized
Definition MpdRdmeSolverExtended.h:88
uint32_t * hostParticleSizes
Definition MpdRdmeSolverExtended.h:90
CUDA-accelerated extended ByteLattice with particle size awareness.
Definition CudaByteLatticeExtended.h:35
Definition CudaByteLattice.h:54
Base class for lattice type objects.
Definition Lattice.h:132
Definition MpdRdmeSolver.h:68
Lattice * lattice
Definition RDMESolver.h:73
Definition Capsule.cpp:46