69#define MRGSOLVE_GET_PRED_CL (pred[0])
70#define MRGSOLVE_GET_PRED_VC (pred[1])
71#define MRGSOLVE_GET_PRED_KA (pred[2])
72#define MRGSOLVE_GET_PRED_Q (pred[3])
73#define MRGSOLVE_GET_PRED_VP (pred[4])
74#define MRGSOLVE_GET_PRED_Q2 (pred[5])
75#define MRGSOLVE_GET_PRED_VP2 (pred[6])
76#define MRGSOLVE_GET_PRED_K10 (pred[0]/pred[1])
77#define MRGSOLVE_GET_PRED_K12 (pred[3]/pred[1])
78#define MRGSOLVE_GET_PRED_K21 (pred[3]/pred[4])
79#define MRGSOLVE_GET_PRED_K13 (pred[5]/pred[1])
80#define MRGSOLVE_GET_PRED_K31 (pred[5]/pred[6])
87template<
typename T,
typename type2>
void tofunptr(T b, type2
a) {
88 b =
reinterpret_cast<T
>(R_ExternalPtrAddr(
a));
119 void y_init(
int pos,
double value);
121 void y_add(
const unsigned int pos,
const double& value);
130 void omega(
const Rcpp::S4& mod);
131 void sigma(
const Rcpp::S4& mod);
137 void pass_envir(Rcpp::Environment* x){
d.envir=
reinterpret_cast<void*
>(x);};
148 void rate(
unsigned int pos,
double value) {
R[pos] = value;}
149 double rate(
unsigned int pos);
150 void rate0(
unsigned int pos,
double value) {
R0[pos] = value;}
151 double rate0(
unsigned int pos);
154 void rate_add(
unsigned int pos,
const double& value);
155 void rate_rm(
unsigned int pos,
const double& value);
156 void rate_bump(
const unsigned int pos,
const double& value);
160 void dur(
unsigned int pos,
double value) {
D[pos] = value;}
161 double dur(
unsigned int pos);
165 void eta(
int pos,
double value) {
d.ETA[pos] = value;}
166 void eps(
int pos,
double value) {
d.EPS[pos] = value;}
169 void on(
unsigned short int cmt);
170 void off(
unsigned short int cmt);
172 int is_on(
unsigned int eq_n){
return On[eq_n];}
174 void fbio(
unsigned int pos,
double value) {
F.at(pos) = value;}
175 double fbio(
unsigned int pos);
176 double alag(
int cmt);
178 void time(
double time_){
d.time = time_;}
179 void newind(
unsigned int newind_){
d.newind = newind_;}
184 void advan2(
const double& tfrom,
const double& tto);
185 void advan4(
const double& tfrom,
const double& tto);
186 void advan11(
const double& tfrom,
const double& tto);
206 void copy_parin(
const Rcpp::List& parin,
const Rcpp::S4& mod);
210 std::vector<mrgsolve::evdata>
mtimes(){
return d.mevector;}
212 void y(
const int pos,
const double value){
Y[pos] = value;}
213 double y(
const int pos){
return Y[pos];}
222 void tol(
double atol,
double rtol);
225 std::vector<double>
Y;
244 std::vector<double>
R0;
246 std::vector<double>
R;
247 std::vector<double>
D;
250 std::vector<double>
F;
257 std::vector<double>
a;
285 const std::vector<double>& a,
286 const std::vector<double>& alpha,
void(* MRGSOLVE_ODE_FUNC)(int neq, double *t, double *y, double *ydot, std::vector< double > ¶m)
Definition LSODA.h:40
void(* LSODA_ODE_SYSTEM_TYPE)(double t, double *y, double *dydt, dtype _data)
Definition LSODA.h:36
void main_deriv_func(int *neq, double *t, double *y, double *ydot)
Definition LSODA.h:38
member functions mevent and tad come in via housemodel; see inst/base/databox.cpp
Definition mrgsolv.h:96
Definition odeproblem.h:100
~odeproblem()
Definition odeproblem.h:107
void check_modeled_rate(rec_ptr rec)
Definition odeproblem.cpp:299
void rate0(unsigned int pos, double value)
Definition odeproblem.h:150
void inrow(int n)
sets number of output rows for current ID
Definition odeproblem.h:199
int Advan
simulation mode: 1/2/3/4 (PK models) or 13 (odes)
Definition odeproblem.h:256
double Rtol
relative tolerance used by ODE solver
Definition odeproblem.h:231
int advan()
Definition odeproblem.h:183
int Neq
number of equations
Definition odeproblem.h:235
int npar()
returns the number of parameters
Definition odeproblem.h:218
void off(unsigned short int cmt)
Definition odeproblem.cpp:373
std::vector< double > Alag
dosing lag time
Definition odeproblem.h:251
bool check_modeled_infusions
Definition odeproblem.h:243
void advan2(const double &tfrom, const double &tto)
Definition odeproblem.cpp:415
double init(int pos)
Definition odeproblem.h:113
std::vector< double > R0
acutal current infusion rate
Definition odeproblem.h:244
dvec & get_capture()
Definition odeproblem.h:202
std::vector< int > On
compartment on/off indicator
Definition odeproblem.h:253
void eps(int pos, double value)
Definition odeproblem.h:166
void config_call()
Call $PREAMBLE function.
Definition odeproblem.cpp:256
void y_init(int pos, double value)
Definition odeproblem.cpp:162
arma::mat mv_omega(int n)
Definition odeproblem.cpp:1048
void on(unsigned short int cmt)
Definition odeproblem.cpp:369
void init(int pos, double value)
Definition odeproblem.h:112
mrgsolve::resim simeps
functor for resimulating epsilons
Definition odeproblem.h:261
void rate_main(rec_ptr rec, int cmtn)
Definition odeproblem.cpp:268
void irown(int n)
sets the output row number for current ID
Definition odeproblem.h:200
unsigned int newind()
Definition odeproblem.h:180
void newind(unsigned int newind_)
Definition odeproblem.h:179
bool ss_fixed
If true, then no warning is issued if SS not reached in ss_n doses.
Definition odeproblem.h:237
arma::mat Omega
variance/covariance matrix for between-subject variability
Definition odeproblem.h:263
std::vector< double > Yout
used to hold Y values during solving
Definition odeproblem.h:227
void set_eps()
set number of EPSs in the model
Definition odeproblem.cpp:145
void set_d(rec_ptr this_rec)
Definition odeproblem.cpp:204
void init_call(const double &time)
Definition odeproblem.cpp:216
std::vector< double > Y
compartment amounts
Definition odeproblem.h:225
void copy_funs(const Rcpp::List &funs)
Definition odeproblem.cpp:941
void do_init_calc(bool answer)
Definition odeproblem.h:109
double alag(int cmt)
Get the lag time from $MAIN.
Definition odeproblem.cpp:120
void set_eta()
set number of ETAs in the model
Definition odeproblem.cpp:140
int ss_n
Max number of doses during SS advance before warning is issued.
Definition odeproblem.h:238
std::vector< double > Ydot
dxdt values
Definition odeproblem.h:226
std::vector< unsigned int > infusion_count
number of active infusions
Definition odeproblem.h:245
int Istate
istate value
Definition odeproblem.h:236
void eta(int pos, double value)
Definition odeproblem.h:165
double ssRtol
Definition odeproblem.h:233
void lsoda_init()
Definition odeproblem.h:216
void time(double time_)
Definition odeproblem.h:178
deriv_func Derivs
$ODE function
Definition odeproblem.h:268
mrgsolve::resim simeta
functor for resimulating etas
Definition odeproblem.h:260
void table_call()
Call $TABLE function.
Definition odeproblem.cpp:246
int neps()
Definition odeproblem.h:191
const std::vector< double > & param()
Definition odeproblem.h:141
void advan11(const double &tfrom, const double &tto)
Definition odeproblem.cpp:603
void pass_envir(Rcpp::Environment *x)
Definition odeproblem.h:137
void dur(unsigned int pos, double value)
Definition odeproblem.h:160
event_func Event
$EVENT function
Definition odeproblem.h:271
void rate_rm(unsigned int pos, const double &value)
Definition odeproblem.cpp:357
void call_derivs(double *t, double *y, double *ydot)
Definition odeproblem.cpp:193
void rate_add(unsigned int pos, const double &value)
Definition odeproblem.cpp:348
int rate_count(unsigned int pos)
Definition odeproblem.h:153
std::vector< mrgsolve::evdata > mtimes()
Definition odeproblem.h:210
std::vector< double > pred
brings clearances, volumes, and & for advan 1/2/3/4
Definition odeproblem.h:266
void y(const int pos, const double value)
Definition odeproblem.h:212
bool Do_Init_Calc
Flag regulating whether or not initials are taken from $MAIN.
Definition odeproblem.h:274
bool system_at_ss
flag indicating the system was advanced to SS
Definition odeproblem.h:240
int Npar
number of parameters
Definition odeproblem.h:234
double Atol
absolute tolerance used by ODE solver
Definition odeproblem.h:230
void rate_reset()
Reset all infusion rates.
Definition odeproblem.cpp:261
unsigned short int systemoff()
Definition odeproblem.h:167
void check_modeled_dur(rec_ptr rec)
Definition odeproblem.cpp:313
std::vector< double > a
used for advan 1/2/3/4 calculations
Definition odeproblem.h:257
databox d
various data passed to model functions
Definition odeproblem.h:254
bool CFONSTOP()
Definition odeproblem.h:139
void param(int pos, double value)
Definition odeproblem.h:142
void clear_mtime()
Definition odeproblem.h:211
std::vector< double > Init_dummy
initial conditions for user input
Definition odeproblem.h:249
std::vector< double > Capture
captured data items
Definition odeproblem.h:229
double capture(int i)
Definition odeproblem.h:203
int neq()
returns the number of state variables
Definition odeproblem.h:220
void advan4(const double &tfrom, const double &tto)
Definition odeproblem.cpp:494
double y(const int pos)
Definition odeproblem.h:213
std::vector< double > D
receive user input for infusion duration
Definition odeproblem.h:247
bool any_mtime()
Definition odeproblem.h:209
double ssAtol
absolute tolerance when finding steady state
Definition odeproblem.h:232
arma::mat mv_sigma(int n)
Definition odeproblem.cpp:1052
void check_data_rate(rec_ptr rec, int cmtn)
Definition odeproblem.cpp:278
std::vector< double > F
bioavability
Definition odeproblem.h:250
void event_call()
Call $EVENT function.
Definition odeproblem.cpp:251
std::vector< double > R
receive user input for infusion rate
Definition odeproblem.h:246
int neta()
Definition odeproblem.h:190
table_func Table
$TABLE function
Definition odeproblem.h:270
void sigma(const Rcpp::S4 &mod)
Definition odeproblem.cpp:1034
int interrupt
Check User Interrupt interval (number of simulation records).
Definition odeproblem.h:275
void tol(double atol, double rtol)
sets the absolute and relative tolerances
Definition odeproblem.cpp:149
void rown(int n)
sets the current data set row number
Definition odeproblem.h:197
void nid(int n)
sets the number of IDs
Definition odeproblem.h:193
int istate()
Definition odeproblem.h:214
arma::mat Sigma
variance/covariance matrix for within-subject variability
Definition odeproblem.h:264
void idn(int n)
sets the current ID number
Definition odeproblem.h:194
void copy_sigma_diagonals()
Definition odeproblem.cpp:1039
void init_call_record(const double &time)
Definition odeproblem.cpp:240
void copy_parin(const Rcpp::List &parin, const Rcpp::S4 &mod)
copies items passed in through parin into the odeproblem object
Definition odeproblem.cpp:924
void istate(int value)
Definition odeproblem.h:215
void nrow(int n)
sets the number of data set rows
Definition odeproblem.h:196
void reset_newid(const double id_)
Reset odeproblem object for new individual.
Definition odeproblem.cpp:328
odeproblem(Rcpp::List param, Rcpp::NumericVector init, Rcpp::List funs, int n_capture_)
Definition odeproblem.cpp:49
void fbio(unsigned int pos, double value)
Definition odeproblem.h:174
bool ss_flag
flag indicating when the system is advancing to SS
Definition odeproblem.h:239
std::vector< double > Init_value
initial conditions
Definition odeproblem.h:248
void y_add(const unsigned int pos, const double &value)
add value to compartment pos
Definition odeproblem.cpp:177
void rate_bump(const unsigned int pos, const double &value)
Definition odeproblem.cpp:353
void init_derivs(double time)
Definition odeproblem.cpp:200
void advance(double tfrom, double tto, LSODA &solver)
Definition odeproblem.cpp:378
init_func Inits
$MAIN function
Definition odeproblem.h:269
std::vector< double > Param
parameter vector
Definition odeproblem.h:228
void rate(unsigned int pos, double value)
Definition odeproblem.h:148
int is_on(unsigned int eq_n)
Definition odeproblem.h:172
std::vector< double > alpha
used for advan 1/2/3/4 calculation
Definition odeproblem.h:258
void omega(const Rcpp::S4 &mod)
Definition odeproblem.cpp:1029
std::vector< int > Ss_cmt
vector of compartments to consider for SS
Definition odeproblem.h:241
config_func Config
$PREAMBLE function
Definition odeproblem.h:272
std::shared_ptr< datarecord > rec_ptr
Definition datarecord.h:31
std::deque< rec_ptr > reclist
Definition datarecord.h:32
#define MRGSOLVE_TABLE_SIGNATURE
signature for $TABLE
Definition mrgsolv.h:144
#define MRGSOLVE_ODE_SIGNATURE
signature for $ODE
Definition mrgsolv.h:164
#define MRGSOLVE_EVENT_SIGNATURE
signature for $EVENT same as what we use for $TABLE
Definition mrgsolv.h:160
#define MRGSOLVE_INIT_SIGNATURE
signature for $MAIN
Definition mrgsolv.h:130
std::vector< double > dvec
vector of doubles
Definition mrgsolv.h:127
#define MRGSOLVE_CONFIG_SIGNATURE
signature for $PREAMBLE
Definition mrgsolv.h:174
std::vector< reclist > recstack
vector of reclist vectors comprising a data set
Definition odeproblem.h:43
void dosimeta(void *)
Definition odeproblem.cpp:33
void(* config_func)(MRGSOLVE_CONFIG_SIGNATURE)
$PREAMBLE function
Definition odeproblem.h:58
main_deriv_func main_derivs
Definition odeproblem.h:84
void dosimeps(void *)
Definition odeproblem.cpp:41
void neg_istate(int istate)
double PolyExp(const double &x, const double &dose, const double &rate, const double &xinf, const double &tau, const bool ss, const std::vector< double > &a, const std::vector< double > &alpha, const int n)
Definition odeproblem.cpp:818
void(* table_func)(MRGSOLVE_TABLE_SIGNATURE)
$TABLE function
Definition odeproblem.h:49
void(* event_func)(MRGSOLVE_EVENT_SIGNATURE)
$EVENT function
Definition odeproblem.h:52
void(* init_func)(MRGSOLVE_INIT_SIGNATURE)
$MAIN function
Definition odeproblem.h:46
void(* deriv_func)(MRGSOLVE_ODE_SIGNATURE)
$ODE function
Definition odeproblem.h:55
Resim functor.
Definition mrgsolv.h:38