Lattice Microbes 2.5
This is for whole cell modeling
Loading...
Searching...
No Matches
RDMESolver.h
Go to the documentation of this file.
1/*
2 * University of Illinois Open Source License
3 * Copyright 2011-2018 Luthey-Schulten Group,
4 * All rights reserved.
5 *
6 * Developed by: Luthey-Schulten Group
7 * University of Illinois at Urbana-Champaign
8 * http://www.scs.uiuc.edu/~schulten
9 *
10 * Permission is hereby granted, free of charge, to any person obtaining a copy of
11 * this software and associated documentation files (the Software), to deal with
12 * the Software without restriction, including without limitation the rights to
13 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
14 * of the Software, and to permit persons to whom the Software is furnished to
15 * do so, subject to the following conditions:
16 *
17 * - Redistributions of source code must retain the above copyright notice,
18 * this list of conditions and the following disclaimers.
19 *
20 * - Redistributions in binary form must reproduce the above copyright notice,
21 * this list of conditions and the following disclaimers in the documentation
22 * and/or other materials provided with the distribution.
23 *
24 * - Neither the names of the Luthey-Schulten Group, University of Illinois at
25 * Urbana-Champaign, nor the names of its contributors may be used to endorse or
26 * promote products derived from this Software without specific prior written
27 * permission.
28 *
29 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
32 * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
33 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
34 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
35 * OTHER DEALINGS WITH THE SOFTWARE.
36 *
37 * Author(s): Elijah Roberts
38 */
39
40#ifndef LM_RDME_RDMESOLVER_H_
41#define LM_RDME_RDMESOLVER_H_
42
43#include "cme/CMESolver.h"
44#include "DiffusionModel.pb.h"
45#include "rdme/Lattice.h"
46
48using lm::io::DiffusionModel;
50
51namespace lm {
52namespace rdme {
53
54class RDMESolver : public CMESolver
55{
56public:
58 virtual ~RDMESolver();
59 virtual void setDiffusionModel(DiffusionModel * dm, const uint8_t * lattice, size_t latticeSize, const uint8_t * latticeSites, size_t latticeSitesSize);
60 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);
61
62protected:
63 virtual void allocateDiffusionModel(uint numberSiteTypesA, lattice_size_t latticeXSize, lattice_size_t latticeYSize, lattice_size_t latticeZSize, site_size_t particlesPerSite, unsigned int bytes_per_particle, si_dist_t latticeSpacing);
64 virtual void allocateLattice(lattice_size_t latticeXSize, lattice_size_t latticeYSize, lattice_size_t latticeZSize, site_size_t particlesPerSite, unsigned int bytes_per_particle, si_dist_t latticeSpacing);
65 virtual void setLatticeData(const uint8_t* latticeData);
66 virtual void setLatticeSitesData(const uint8_t* latticeSitesData);
67 virtual void destroyDiffusionModel();
68
69protected:
71 double * DF; // diffusion matrix: numberSpecies x numberSiteTypes x numberSiteTypes
72 uint * RL; // reaction location matrix: numberReactions x numberSiteTypes
74};
75
76}
77}
78
79#endif
uint32_t site_size_t
Definition ByteLatticeExtended.h:23
uint32_t lattice_size_t
Definition Lattice.h:55
double si_dist_t
Definition Types.h:63
unsigned int uint
Definition Types.h:52
Distributions
Types of random number generators that are allowed.
Definition RandomGenerator.h:56
Definition CMESolver.h:71
RandomGenerator::Distributions neededDists
Definition CMESolver.h:264
CMESolver(RandomGenerator::Distributions neededDists)
Definition CMESolver.cpp:74
Base class for lattice type objects.
Definition Lattice.h:132
virtual void setLatticeSitesData(const uint8_t *latticeSitesData)
Definition RDMESolver.cpp:169
virtual void destroyDiffusionModel()
Definition RDMESolver.cpp:86
Lattice * lattice
Definition RDMESolver.h:73
virtual void allocateDiffusionModel(uint numberSiteTypesA, lattice_size_t latticeXSize, lattice_size_t latticeYSize, lattice_size_t latticeZSize, site_size_t particlesPerSite, unsigned int bytes_per_particle, si_dist_t latticeSpacing)
Definition RDMESolver.cpp:69
virtual ~RDMESolver()
Definition RDMESolver.cpp:63
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)
Definition RDMESolver.cpp:110
virtual void allocateLattice(lattice_size_t latticeXSize, lattice_size_t latticeYSize, lattice_size_t latticeZSize, site_size_t particlesPerSite, unsigned int bytes_per_particle, si_dist_t latticeSpacing)
Definition RDMESolver.cpp:80
virtual void setLatticeData(const uint8_t *latticeData)
Definition RDMESolver.cpp:144
uint * RL
Definition RDMESolver.h:72
virtual void setDiffusionModel(DiffusionModel *dm, const uint8_t *lattice, size_t latticeSize, const uint8_t *latticeSites, size_t latticeSitesSize)
Definition RDMESolver.cpp:97
RDMESolver(RandomGenerator::Distributions neededDists)
Definition RDMESolver.cpp:58
double * DF
Definition RDMESolver.h:71
uint numberSiteTypes
Definition RDMESolver.h:70
Definition LatticeBuilder.h:60
Definition Capsule.cpp:46