Class Model_ODE¶
Defined in File model_ode.h
Inheritance Relationships¶
Base Type¶
public amici::Model
(Class Model)
Class Documentation¶
-
class
amici
::
Model_ODE
: public amici::Model¶ The Model class represents an AMICI ODE model.
The model does not contain any data, but represents the state of the model at a specific time t. The states must not always be in sync, but may be updated asynchronously.
Public Functions
-
Model_ODE
() = default¶ default constructor
-
Model_ODE
(ModelDimensions const &model_dimensions, SimulationParameters simulation_parameters, const SecondOrderMode o2mode, std::vector<realtype> const &idlist, std::vector<int> const &z2event, const bool pythonGenerated = false, const int ndxdotdp_explicit = 0, const int ndxdotdx_explicit = 0, const int w_recursion_depth = 0)¶ Constructor with model dimensions.
- Parameters
model_dimensions
: Model dimensionssimulation_parameters
: Simulation parameterso2mode
: second order sensitivity modeidlist
: indexes indicating algebraic components (DAE only)z2event
: mapping of event outputs to eventspythonGenerated
: flag indicating matlab or python wrappingndxdotdp_explicit
: number of nonzero elements dxdotdp_explicitndxdotdx_explicit
: number of nonzero elements dxdotdx_explicitw_recursion_depth
: Recursion depth of fw
-
void
fJ
(realtype t, realtype cj, const AmiVector &x, const AmiVector &dx, const AmiVector &xdot, SUNMatrix J) override¶ Dense Jacobian function.
- Parameters
t
: timecj
: scaling factor (inverse of timestep, DAE only)x
: statedx
: time derivative of state (DAE only)xdot
: values of residual function (unused)J
: dense matrix to which values of the jacobian will be written
-
void
fJ
(realtype t, const_N_Vector x, const_N_Vector xdot, SUNMatrix J)¶ Implementation of fJ at the N_Vector level.
This function provides an interface to the model specific routines for the solver implementation as well as the AmiVector level implementation
- Parameters
t
: timepointx
: Vector with the statesxdot
: Vector with the right hand sideJ
: Matrix to which the Jacobian will be written
-
void
fJB
(const realtype t, realtype cj, const AmiVector &x, const AmiVector &dx, const AmiVector &xB, const AmiVector &dxB, const AmiVector &xBdot, SUNMatrix JB) override¶ Dense Jacobian function.
- Parameters
t
: timecj
: scaling factor (inverse of timestep, DAE only)x
: statedx
: time derivative of state (DAE only)xB
: Vector with the adjoint statesdxB
: Vector with the adjoint derivative statesxBdot
: Vector with the adjoint right hand side (unused)JB
: dense matrix to which values of the jacobian will be written
-
void
fJB
(realtype t, const_N_Vector x, const_N_Vector xB, const_N_Vector xBdot, SUNMatrix JB)¶ Implementation of fJB at the N_Vector level, this function provides an interface to the model specific routines for the solver implementation.
- Parameters
t
: timepointx
: Vector with the statesxB
: Vector with the adjoint statesxBdot
: Vector with the adjoint right hand sideJB
: Matrix to which the Jacobian will be written
-
void
fJSparse
(realtype t, realtype cj, const AmiVector &x, const AmiVector &dx, const AmiVector &xdot, SUNMatrix J) override¶ Sparse Jacobian function.
- Parameters
t
: timecj
: scaling factor (inverse of timestep, DAE only)x
: statedx
: time derivative of state (DAE only)xdot
: values of residual function (unused)J
: sparse matrix to which values of the Jacobian will be written
-
void
fJSparse
(realtype t, const_N_Vector x, SUNMatrix J)¶ Implementation of fJSparse at the N_Vector level, this function provides an interface to the model specific routines for the solver implementation as well as the AmiVector level implementation.
- Parameters
t
: timepointx
: Vector with the statesJ
: Matrix to which the Jacobian will be written
-
void
fJSparseB
(const realtype t, realtype cj, const AmiVector &x, const AmiVector &dx, const AmiVector &xB, const AmiVector &dxB, const AmiVector &xBdot, SUNMatrix JB) override¶ Sparse Jacobian function.
- Parameters
t
: timecj
: scaling factor (inverse of timestep, DAE only)x
: statedx
: time derivative of state (DAE only)xB
: Vector with the adjoint statesdxB
: Vector with the adjoint derivative statesxBdot
: Vector with the adjoint right hand side (unused)JB
: dense matrix to which values of the jacobian will be written
-
void
fJSparseB
(realtype t, const_N_Vector x, const_N_Vector xB, const_N_Vector xBdot, SUNMatrix JB)¶ Implementation of fJSparseB at the N_Vector level, this function provides an interface to the model specific routines for the solver implementation.
- Parameters
t
: timepointx
: Vector with the statesxB
: Vector with the adjoint statesxBdot
: Vector with the adjoint right hand sideJB
: Matrix to which the Jacobian will be written
-
void
fJDiag
(realtype t, N_Vector JDiag, const_N_Vector x)¶ Implementation of fJDiag at the N_Vector level, this function provides an interface to the model specific routines for the solver implementation.
- Parameters
t
: timepointJDiag
: Vector to which the Jacobian diagonal will be writtenx
: Vector with the states
-
void
fJDiag
(realtype t, AmiVector &JDiag, realtype cj, const AmiVector &x, const AmiVector &dx) override¶ Diagonal of the Jacobian (for preconditioning)
- Parameters
t
: timepointJDiag
: Vector to which the Jacobian diagonal will be writtencj
: scaling factor, inverse of the step sizex
: Vector with the statesdx
: Vector with the derivative states
-
void
fJv
(realtype t, const AmiVector &x, const AmiVector &dx, const AmiVector &xdot, const AmiVector &v, AmiVector &nJv, realtype cj) override¶ Jacobian multiply function.
- Parameters
t
: timex
: statedx
: time derivative of state (DAE only)xdot
: values of residual function (unused)v
: multiplication vector (unused)nJv
: array to which result of multiplication will be writtencj
: scaling factor (inverse of timestep, DAE only)
-
void
fJv
(const_N_Vector v, N_Vector Jv, realtype t, const_N_Vector x)¶ Implementation of fJv at the N_Vector level.
- Parameters
t
: timepointx
: Vector with the statesv
: Vector with which the Jacobian is multipliedJv
: Vector to which the Jacobian vector product will be written
-
void
fJvB
(const_N_Vector vB, N_Vector JvB, realtype t, const_N_Vector x, const_N_Vector xB)¶ Implementation of fJvB at the N_Vector level.
- Parameters
t
: timepointx
: Vector with the statesxB
: Vector with the adjoint statesvB
: Vector with which the Jacobian is multipliedJvB
: Vector to which the Jacobian vector product will be written
-
void
froot
(realtype t, const AmiVector &x, const AmiVector &dx, gsl::span<realtype> root) override¶ Root function.
- Parameters
t
: timex
: statedx
: time derivative of state (DAE only)root
: array to which values of the root function will be written
-
void
froot
(realtype t, const_N_Vector x, gsl::span<realtype> root)¶ Implementation of froot at the N_Vector level This function provides an interface to the model specific routines for the solver implementation as well as the AmiVector level implementation.
- Parameters
t
: timepointx
: Vector with the statesroot
: array with root function values
-
void
fxdot
(realtype t, const AmiVector &x, const AmiVector &dx, AmiVector &xdot) override¶ Residual function.
- Parameters
t
: timex
: statedx
: time derivative of state (DAE only)xdot
: array to which values of the residual function will be written
-
void
fxdot
(realtype t, const_N_Vector x, N_Vector xdot)¶ Implementation of fxdot at the N_Vector level, this function provides an interface to the model specific routines for the solver implementation as well as the AmiVector level implementation.
- Parameters
t
: timepointx
: Vector with the statesxdot
: Vector with the right hand side
-
void
fxBdot
(realtype t, N_Vector x, N_Vector xB, N_Vector xBdot)¶ Implementation of fxBdot at the N_Vector level.
- Parameters
t
: timepointx
: Vector with the statesxB
: Vector with the adjoint statesxBdot
: Vector with the adjoint right hand side
-
void
fqBdot
(realtype t, const_N_Vector x, const_N_Vector xB, N_Vector qBdot)¶ Implementation of fqBdot at the N_Vector level.
- Parameters
t
: timepointx
: Vector with the statesxB
: Vector with the adjoint statesqBdot
: Vector with the adjoint quadrature right hand side
-
void
fxBdot_ss
(const realtype t, const AmiVector &xB, const AmiVector&, AmiVector &xBdot) override¶ Residual function backward when running in steady state mode.
- Parameters
t
: timexB
: adjoint statedxB
: time derivative of state (DAE only)xBdot
: array to which values of the residual function will be written
-
void
fxBdot_ss
(realtype t, const_N_Vector xB, N_Vector xBdot) const¶ Implementation of fxBdot for steady state at the N_Vector level.
- Parameters
t
: timepointxB
: Vector with the statesxBdot
: Vector with the adjoint right hand side
-
void
fqBdot_ss
(realtype t, N_Vector xB, N_Vector qBdot) const¶ Implementation of fqBdot for steady state case at the N_Vector level.
- Parameters
t
: timepointxB
: Vector with the adjoint statesqBdot
: Vector with the adjoint quadrature right hand side
-
void
fJSparseB_ss
(SUNMatrix JB) override¶ Sparse Jacobian function backward, steady state case.
- Parameters
JB
: sparse matrix to which values of the Jacobian will be written
-
void
writeSteadystateJB
(const realtype t, realtype cj, const AmiVector &x, const AmiVector &dx, const AmiVector &xB, const AmiVector &dxB, const AmiVector &xBdot) override¶ Computes the sparse backward Jacobian for steadystate integration and writes it to the model member.
- Parameters
t
: timepointcj
: scalar in Jacobianx
: Vector with the statesdx
: Vector with the derivative statesxB
: Vector with the adjoint statesdxB
: Vector with the adjoint derivative statesxBdot
: Vector with the adjoint state right hand side
-
void
fsxdot
(realtype t, const AmiVector &x, const AmiVector &dx, int ip, const AmiVector &sx, const AmiVector &sdx, AmiVector &sxdot) override¶ Sensitivity Residual function.
- Parameters
t
: timex
: statedx
: time derivative of state (DAE only)ip
: parameter indexsx
: sensitivity statesdx
: time derivative of sensitivity state (DAE only)sxdot
: array to which values of the sensitivity residual function will be written
-
void
fsxdot
(realtype t, const_N_Vector x, int ip, const_N_Vector sx, N_Vector sxdot)¶ Implementation of fsxdot at the N_Vector level.
- Parameters
t
: timepointx
: Vector with the statesip
: parameter indexsx
: Vector with the state sensitivitiessxdot
: Vector with the sensitivity right hand side
Protected Functions
-
void
fJSparse
(SUNMatrixContent_Sparse JSparse, realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx)¶ Model specific implementation for fJSparse (Matlab)
- Parameters
JSparse
: Matrix to which the Jacobian will be writtent
: timepointx
: Vector with the statesp
: parameter vectork
: constants vectorh
: Heaviside vectorw
: vector with helper variablesdwdx
: derivative of w wrt x
-
void
fJSparse
(realtype *JSparse, realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx)¶ Model specific implementation for fJSparse, data only (Py)
- Parameters
JSparse
: Matrix to which the Jacobian will be writtent
: timepointx
: Vector with the statesp
: parameter vectork
: constants vectorh
: Heaviside vectorw
: vector with helper variablesdwdx
: derivative of w wrt x
-
void
fJSparse_colptrs
(SUNMatrixWrapper &JSparse)¶ Model specific implementation for fJSparse, column pointers.
- Parameters
JSparse
: sparse matrix to which colptrs will be written
-
void
fJSparse_rowvals
(SUNMatrixWrapper &JSparse)¶ Model specific implementation for fJSparse, row values.
- Parameters
JSparse
: sparse matrix to which rowvals will be written
-
void
froot
(realtype *root, realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h)¶ Model specific implementation for froot.
- Parameters
root
: values of the trigger functiont
: timepointx
: Vector with the statesp
: parameter vectork
: constants vectorh
: Heaviside vector
-
void
fxdot
(realtype *xdot, realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) = 0¶ Model specific implementation for fxdot.
- Parameters
xdot
: residual functiont
: timepointx
: Vector with the statesp
: parameter vectork
: constants vectorh
: Heaviside vectorw
: vector with helper variables
-
void
fdxdotdp
(realtype *dxdotdp, realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, int ip, const realtype *w, const realtype *dwdp)¶ Model specific implementation of fdxdotdp, with w chainrule (Matlab)
- Parameters
dxdotdp
: partial derivative xdot wrt pt
: timepointx
: Vector with the statesp
: parameter vectork
: constants vectorh
: Heaviside vectorip
: parameter indexw
: vector with helper variablesdwdp
: derivative of w wrt p
-
void
fdxdotdp_explicit
(realtype *dxdotdp_explicit, realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w)¶ Model specific implementation of fdxdotdp_explicit, no w chainrule (Py)
- Parameters
dxdotdp_explicit
: partial derivative xdot wrt pt
: timepointx
: Vector with the statesp
: parameter vectork
: constants vectorh
: Heaviside vectorw
: vector with helper variables
-
void
fdxdotdp_explicit_colptrs
(SUNMatrixWrapper &dxdotdp)¶ Model specific implementation of fdxdotdp_explicit, colptrs part.
- Parameters
dxdotdp
: sparse matrix to which colptrs will be written
-
void
fdxdotdp_explicit_rowvals
(SUNMatrixWrapper &dxdotdp)¶ Model specific implementation of fdxdotdp_explicit, rowvals part.
- Parameters
dxdotdp
: sparse matrix to which rowvals will be written
-
void
fdxdotdx_explicit
(realtype *dxdotdx_explicit, realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w)¶ Model specific implementation of fdxdotdx_explicit, no w chainrule (Py)
- Parameters
dxdotdx_explicit
: partial derivative xdot wrt xt
: timepointx
: Vector with the statesp
: parameter vectork
: constants vectorh
: heavyside vectorw
: vector with helper variables
-
void
fdxdotdx_explicit_colptrs
(SUNMatrixWrapper &dxdotdx)¶ Model specific implementation of fdxdotdx_explicit, colptrs part.
- Parameters
dxdotdx
: sparse matrix to which colptrs will be written
-
void
fdxdotdx_explicit_rowvals
(SUNMatrixWrapper &dxdotdx)¶ Model specific implementation of fdxdotdx_explicit, rowvals part.
- Parameters
dxdotdx
: sparse matrix to which rowvals will be written
-
void
fdxdotdw
(realtype *dxdotdw, realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w)¶ Model specific implementation of fdxdotdw, data part.
- Parameters
dxdotdw
: partial derivative xdot wrt wt
: timepointx
: Vector with the statesp
: parameter vectork
: constants vectorh
: Heaviside vectorw
: vector with helper variables
-
void
fdxdotdw_colptrs
(SUNMatrixWrapper &dxdotdw)¶ Model specific implementation of fdxdotdw, colptrs part.
- Parameters
dxdotdw
: sparse matrix to which colptrs will be written
-
void
fdxdotdw_rowvals
(SUNMatrixWrapper &dxdotdw)¶ Model specific implementation of fdxdotdw, rowvals part.
- Parameters
dxdotdw
: sparse matrix to which rowvals will be written
-
void
fdxdotdw
(realtype t, const_N_Vector x)¶ Sensitivity of dx/dt wrt model parameters w.
- Parameters
t
: timepointx
: Vector with the states
-
void
fdxdotdp
(realtype t, const_N_Vector x)¶ Explicit sensitivity of dx/dt wrt model parameters p
- Parameters
t
: timepointx
: Vector with the states
-