microsimulation.h File Reference
`#include <RcppCommon.h>`
`#include <unordered_map>`
`#include <tuple>`
`#include <vector>`
`#include <utility>`
`#include <map>`
`#include <string>`
`#include <Rcpp.h>`
`#include <R.h>`
`#include <Rmath.h>`
`#include <Rdefines.h>`
`#include <R_ext/Random.h>`
`#include <siena/ssim.h>`
`#include <RngStream.h>`
`#include <rcpp_table.h>`
`#include <algorithm>`
`#include <functional>`
`#include <set>`
Include dependency graph for microsimulation.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Classes

struct | std::hash< std::tuple< TT... > >
struct | std::hash< std::pair< T1, T2 > >
class | ssim::cMessage

cMessage class for OMNET++ API compatibility. This provides a heavier message class than Sim::Event, with short 'kind' and std::string 'name' attributes. The events by default are scheduled using cProcess::scheduleAt(), and handled using cProcess::handleMessage() (as per OMNET++). NB: cProcess::scheduleAt() uses simulation time rather than time in state (which is used by Sim::self_signal_event()). More...

class | ssim::cProcess
| cProcess class for OMNET++ API compatibility. More...
class | ssim::Means
| Utility class to incrementally add values to calculate the mean, sum, variance and standard deviation. This could be replaced by boost::accumulator. More...
class | ssim::Rpexp
| Rpexp is a random number generator class for piecewise constant hazards. Given time lower bounds t and piecewise constant hazards h, rand() returns a random time. The random number is calculated using the inversion formula. Constructors provided for arrays. More...
class | ssim::Rng
class | ssim::EventReport< State, Event, Time, Utility >
| EventReport class for collecting statistics on person-time, prevalence and numbers of events. More...
class | ssim::SummaryReport< State, Event, Time, Utility, Cost >
| SummaryReport class for collecting statistics on person-time, prevalence, events and costs. More...
class | ssim::CostReport< State, Time, Cost >
| CostReport class for collecting statistics on costs. More...
class | ssim::SimpleReport< T >
| SimpleReport class for collecting data for homogeneous fields of type T with string names. More...

## Namespaces

| Rcpp
| ssim
| name space for the Siena simulator.
| R

## Macros

#define | WithRNG(rng, expr) (rng->set(), expr)
| WithRNG is a macro for using the random number generator rng and then evaluating the expression expr. More...

## Typedefs

typedef Time | ssim::simtime_t
| simtime_t typedef for OMNET++ API compatibility More...

## Functions

template<class T1 , class T2 >
SEXP | Rcpp::wrap (const std::vector< std::pair< T1, T2 > > v)
template<class T1 , class T2 >
SEXP | Rcpp::wrap (const std::vector< std::tuple< T1, T2 > > v)
template<class T1 , class T2 , class T3 >
SEXP | Rcpp::wrap (const std::vector< std::tuple< T1, T2, T3 > > v)
template<class T1 , class T2 , class T3 , class T4 >
SEXP | Rcpp::wrap (const std::vector< std::tuple< T1, T2, T3, T4 > > v)
template<class T1 , class T2 , class T3 , class T4 , class T5 >
SEXP | Rcpp::wrap (const std::vector< std::tuple< T1, T2, T3, T4, T5 > > v)
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
SEXP | Rcpp::wrap (const std::vector< std::tuple< T1, T2, T3, T4, T5, T6 > > v)
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
SEXP | Rcpp::wrap (const std::vector< std::tuple< T1, T2, T3, T4, T5, T6, T7 > > v)
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
SEXP | Rcpp::wrap (const std::vector< std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > > v)
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
SEXP | Rcpp::wrap (const std::vector< std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > > v)
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
SEXP | Rcpp::wrap (const std::vector< std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > > v)
template<class T1 , class T2 >
SEXP | Rcpp::wrap_map (const std::map< T1, T2 > v)
template<class T1a , class T1b , class T2 >
SEXP | Rcpp::wrap_map (const std::map< std::pair< T1a, T1b >, T2 > v, std::string key, std::string name1, std::string name2)
template<class T1a , class T1b , class T1c , class T2 >
SEXP | Rcpp::wrap_map (const std::map< std::tuple< T1a, T1b, T1c >, T2 > v, std::string key, std::string name1, std::string name2, std::string name3)
template<class T1 , class T2 , class T3 , class T4 , class T5 >
SEXP | Rcpp::wrap_map (const std::map< std::pair< std::tuple< T1, T2, T3 >, T4 >, T5 > v, std::string key, std::string name1, std::string name2)
template<class T1 , class T2 >
SEXP | Rcpp::wrap_map (const std::unordered_map< T1, T2 > v)
template<class T1a , class T1b , class T2 >
SEXP | Rcpp::wrap_map (const std::unordered_map< std::pair< T1a, T1b >, T2 > v, std::string key, std::string name1, std::string name2)
template<class T1a , class T1b , class T1c , class T2 >
SEXP | Rcpp::wrap_map (const std::unordered_map< std::tuple< T1a, T1b, T1c >, T2 > v, std::string key, std::string name1, std::string name2, std::string name3)
template<class T1 , class T2 , class T3 , class T4 , class T5 >
SEXP | Rcpp::wrap_map (const std::unordered_map< std::pair< std::tuple< T1, T2, T3 >, T4 >, T5 > v, std::string key, std::string name1, std::string name2)
void | ssim::Cancel (std::function< bool(const cMessage *msg)> pred)
| Cancel is a function to cancel messages who satisfy a predicate. More...
void | ssim::RemoveKind (short kind)
| RemoveKind is a function to remove messages with the given kind from the queue. More...
void | ssim::CancelKind (short kind)
| CancelKind is a function to remove messages with the given kind from the queue. More...
void | ssim::RemoveName (string name)
| RemoveName is a function to remove messages with the given name from the queue. More...
void | ssim::CancelName (string name)
| CancelName is a function to remove messages with the given name from the queue. More...
void | ssim::CancelEvents ()
| CancelEvents is a function to remove messages from the queue. More...
Time | ssim::simTime ()
| simTime() function for OMNET++ API compatibility More...
Time | ssim::now ()
| now() function for compatibility with C++SIM More...
double | ssim::rweibullHR (double shape, double scale, double hr)
| Random Weibull distribution for a given shape, scale and hazard ratio. More...
void | ssim::r_create_current_stream ()
| A utility function to create the current_stream. Used when initialising the microsimulation package in R. More...
void | ssim::r_remove_current_stream ()
| A utility function to remove the current_stream. Used when finalising the microsimulation package in R. More...
void | ssim::r_set_user_random_seed (double *seed)
| A utility function to set the user random seed for the simulation. More...
void | ssim::r_get_user_random_seed (double *seed)
| A utility function to set the user random seed for the simulation. More...
void | ssim::r_next_rng_substream ()
| A utility function to move to the next user random stream for the simulation. More...
void | ssim::r_rng_advance_substream (double *seed, int *n)
| A utility function to advance the random sub-stream n steps for a specified seed. More...
void | ssim::test_rstream2 (double *x)
| Simple test of the random streams (with a stupid name) More...
double | ssim::discountedInterval (double start, double end, double discountRate)
| Simple function to calculate the integral between the start and end times for (1+kappa)^(-u), where kappa is the discountRate (e.g. 0.03) More...
double | ssim::discountedInterval (double y, double start, double end, double discountRate)
| Simple function to calculate the integral between the start and end times for y*(1+kappa)^(-u), where kappa is the discountRate (e.g. 0.03) More...
double | ssim::discountedPoint (double time, double discountRate)
| Simple function to calculate 1/(1+discountRate)^(time) More...
double | ssim::discountedPoint (double y, double time, double discountRate)
| Simple function to calculate y/(1+discountRate)^(time) More...
template<class T >
std::vector< std::vector< T > > | ssim::transpose (const std::vector< std::vector< T > > data)
| Function to transpose a vector of vectors. This assumes that all inner vectors have the same size and allocates space for the complete result in advance. From http://stackoverflow.com/questions/6009782/how-to-pivot-a-vector-of-vectors. More...
template<class T1 , class T2 >
SEXP | Rcpp::wrap (const vector< pair< T1, T2 > > v)
template<class T1 , class T2 , class T3 , class T4 , class T5 >
SEXP | Rcpp::wrap_map (const std::map< std::pair< std::tuple< T1, T2, T3 >, T4 >, T5 > v, std::string name1, std::string name2)
template<class T1 , class T2 , class T3 , class T4 , class T5 >
SEXP | Rcpp::wrap_map (const std::unordered_map< std::pair< std::tuple< T1, T2, T3 >, T4 >, T5 > ov, std::string name1, std::string name2)
double | R::rnormPos (double mean, double sd)
| rnorm function constrained to be positive. This uses brute-force re-sampling rather than conditioning on the distribution function. More...
double | R::rllogis (double shape, double scale)
| rllogis function for a random covariate from a log-logistic distribution with shape and scale. S(t) = 1/(1+(t/scale)^shape). More...
double | R::rllogis_trunc (double shape, double scale, double left)
| rllogis_trunc function for a random covariate from a log-logistic distribution with shape and scale with minimum time left. S(t|t>x)=S(t)/S(x) where S(t)=1/(1+(t/scale)^shape). More...
double | R::rgompertz (double shape=1.0, double rate=1.0)
| Random draw from a Gompertz distribution. More...

## Variables

static int | ssim::counter_id = 0
| C++ wrapper class for the RngStream library. set() sets the current R random number stream to this stream. This is compliant with being a Boost random number generator. More...

## Detailed Description

Author
  Mark Clements mark..nosp@m.clem.nosp@m.ents@.nosp@m.ki.s.nosp@m.e

Version
  1.0

# LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details at http://www.gnu.org/copyleft/gpl.html

# DESCRIPTION

cMessage and cProcess classes, providing some compatability between SSIM and the OMNET++ API. This is specialised for use as an R package.

It also provides several utility classes: Means for statistical collection and Rpexp for piecewise constant exponential random number generation. It also provides a utility function rweibullHR().

Definition in file microsimulation.h.

## Macro Definition Documentation

## WithRNG

#define WithRNG | ( |  | rng,
|  |  | expr
| ) |  | (rng->set(), expr)

WithRNG is a macro for using the random number generator rng and then evaluating the expression expr.

Definition at line 200 of file microsimulation.h.