src

BaseSim

class BaseSim

Abstract interface implemented by simulation backends.

Subclassed by sme::simulate::DuneSim, sme::simulate::PixelSimBase

Public Functions

virtual ~BaseSim() = default

Virtual destructor.

virtual std::size_t run(double time, double timeout_ms, const std::function<bool()> &stopRunningCallback) = 0

Run simulation for time with optional timeout/stop callback.

virtual const std::vector<double> &getConcentrations(std::size_t compartmentIndex) const = 0

Flattened concentrations for compartment.

virtual std::size_t getConcentrationPadding() const = 0

Concentration array padding.

virtual const std::string &errorMessage() const = 0

Current backend error message.

virtual const common::ImageStack &errorImages() const = 0

Current backend error images.

virtual void setCurrentErrormessage(const std::string &msg) = 0

Set current error message.

virtual bool getStopRequested() const = 0

Returns whether stop has been requested.

virtual void setStopRequested(bool stoprequested) = 0

Request/clear stop flag.

SmeGridFunction

template<typename Domain>
class SmeGridFunction

Analytic grid function sampling concentration from voxel arrays.

Public Functions

inline SmeGridFunction(const common::VoxelF &physicalOrigin, const common::VolumeF &voxelVolume, const common::Volume &imageVolume, const std::vector<double> &concentration)

Construct sampling function from geometry and concentration array.

inline double operator()(Domain globalPos) const

Evaluate concentration at global coordinate.

IniFile

class IniFile

Simple helper for building INI text.

Public Functions

const QString &getText() const

Get generated INI text.

void addSection(const QString &str)

Add one-level section.

void addSection(const QString &str1, const QString &str2)

Add two-level section.

void addSection(const QString &str1, const QString &str2, const QString &str3)

Add three-level section.

void addSection(const QString &str1, const QString &str2, const QString &str3, const QString &str4)

Add four-level section.

void addSection(const QString &str1, const QString &str2, const QString &str3, const QString &str4, const QString &str5)

Add five-level section.

void addSection(const QString &str1, const QString &str2, const QString &str3, const QString &str4, const QString &str5, const QString &str6)

Add six-level section.

void addValue(const QString &var, const QString &value)

Add key/value pair (string value).

void addValue(const QString &var, int value)

Add key/value pair (integer value).

void addValue(const QString &var, double value, int precision)

Add key/value pair (floating value).

void clear()

Clear generated text.

DuneSim

class DuneSim : public sme::simulate::BaseSim

DUNE-backed simulation backend.

Public Functions

explicit DuneSim(const model::Model &sbmlDoc, const std::vector<std::string> &compartmentIds, const std::map<std::string, double, std::less<>> &substitutions = {})

Construct DUNE simulator for selected compartments.

~DuneSim() override

Destructor.

virtual std::size_t run(double time, double timeout_ms, const std::function<bool()> &stopRunningCallback) override

Run simulation segment.

virtual const std::vector<double> &getConcentrations(std::size_t compartmentIndex) const override

Concentration array for compartment.

virtual std::size_t getConcentrationPadding() const override

Concentration array padding.

virtual const std::string &errorMessage() const override

Current error message.

virtual const common::ImageStack &errorImages() const override

Current error images.

virtual bool getStopRequested() const override

Stop-request flag.

virtual void setStopRequested(bool stop) override

Request/clear stop flag.

virtual void setCurrentErrormessage(const std::string &msg) override

Set current error message.

DuneImpl

template<int DuneDimensions>
class DuneImpl

DUNE solver implementation specialized by spatial dimension.

Public Functions

inline explicit DuneImpl(const DuneConverter &dc, const DuneOptions &options, const model::Model &sbmlDoc, const std::vector<std::string> &compartmentIds)

Construct DUNE solver state from converted model.

~DuneImpl() = default

Destructor.

inline void run(double time)

Run simulation to time ahead and refresh concentrations.

inline const std::vector<double> &getConcentrations(std::size_t compartmentIndex) const

Concentrations for a compartment.

PixelSim

class PixelSim : public sme::simulate::PixelSimBase

Finite-difference pixel simulation backend.

Public Functions

explicit PixelSim(const model::Model &sbmlDoc, const std::vector<std::string> &compartmentIds, const std::vector<std::vector<std::string>> &compartmentSpeciesIds, const std::map<std::string, double, std::less<>> &substitutions = {})

Construct pixel simulator for selected compartments/species.

~PixelSim() override

Destructor.

virtual std::size_t run(double time, double timeout_ms, const std::function<bool()> &stopRunningCallback) override

Run simulation segment.

virtual const std::vector<double> &getConcentrations(std::size_t compartmentIndex) const override

Concentration array for compartment.

virtual std::size_t getConcentrationPadding() const override

Concentration array padding.

const std::vector<double> &getDcdt(std::size_t compartmentIndex) const

Time derivative array for compartment.

double getLowerOrderConcentration(std::size_t compartmentIndex, std::size_t speciesIndex, std::size_t pixelIndex) const

Lower-order concentration value for adaptive RK.

PagmoUDP

class PagmoUDP

Implements a Pagmo User Defined Problem to evolve.

Note

Needs to be (cheaply) copy-constructible, implement fitness() and get_bounds() functions, and be thread-safe, see https://esa.github.io/pagmo2/docs/cpp/problem.html

Public Functions

PagmoUDP() = default
explicit PagmoUDP(const OptConstData *optConstData, ThreadsafeModelQueue *modelQueue, Optimization *optimization)
pagmo::vector_double fitness(const pagmo::vector_double &dv) const
std::pair<pagmo::vector_double, pagmo::vector_double> get_bounds() const