Class amimodel¶
Defined in File amimodel.m
Class Documentation¶
-
amimodel : public handle
AMIMODEL carries all model definitions including functions and events.
Public Functions
-
amimodel::amimodel(::string symfun, ::string modelname)
amimodel initializes the model object based on the provided symfun and modelname
- Parameters
symfun
: this is the string to the function which generates the modelstruct. You can also directly pass the struct heremodelname
: name of the model
-
noret::substitute amimodel::updateRHS(matlabtypesubstitute xdot)
updateRHS updates the private fun property .fun.xdot.sym (right hand side of the differential equation)
- Parameters
xdot
: new right hand side of the differential equation
- Return Value
xdot
: void
-
noret::substitute amimodel::updateModelName(matlabtypesubstitute modelname)
updateModelName updates the modelname
- Parameters
modelname
: new modelname
- Return Value
modelname
: void
-
noret::substitute amimodel::updateWrapPath(matlabtypesubstitute wrap_path)
updateModelName updates the modelname
- Parameters
wrap_path
: new wrap_path
- Return Value
wrap_path
: void
-
noret::substitute amimodel::parseModel()
parseModel parses the model definition and computes all necessary symbolic expressions.
- Return Value
void
:
-
noret::substitute amimodel::generateC()
generateC generates the c files which will be used in the compilation.
- Return Value
void
:
-
noret::substitute amimodel::compileC()
compileC compiles the mex simulation file
- Return Value
void
:
-
noret::substitute amimodel::generateM(:: amimodel amimodelo2)
generateM generates the matlab wrapper for the compiled C files.
- Parameters
amimodelo2
: this struct must contain all necessary symbolic definitions for second order sensivities
- Return Value
amimodelo2
: void
-
noret::substitute amimodel::getFun(::struct HTable, ::string funstr)
getFun generates symbolic expressions for the requested function.
- Parameters
HTable
: struct with hashes of symbolic definition from the previous compilationfunstr
: function for which symbolic expressions should be computed
- Return Value
funstr
: void
-
noret::substitute amimodel::makeEvents()
makeEvents extracts discontiniuties from the model right hand side and converts them into events
- Return Value
void
:
-
noret::substitute amimodel::makeSyms()
makeSyms extracts symbolic definition from the user provided model and checks them for consistency
- Return Value
void
:
-
mlhsInnerSubst<::bool > amimodel::checkDeps(::struct HTable, ::cell deps)
checkDeps checks the dependencies of functions and populates sym fields if necessary
- Parameters
HTable
: struct with reference hashes of functions in its fieldsdeps
: cell array with containing a list of dependencies
- Return Value
cflag
: boolean indicating whether any of the dependencies have changed with respect to the hashes stored in HTable
-
mlhsInnerSubst<::struct > amimodel::loadOldHashes()
loadOldHashes loads information from a previous compilation of the model.
- Return Value
HTable
: struct with hashes of symbolic definition from the previous compilation
-
mlhsInnerSubst< matlabtypesubstitute > amimodel::augmento2()
augmento2 augments the system equation to also include equations for sensitivity equation. This will enable us to compute second order sensitivities in a forward-adjoint or forward-forward apporach later on.
- Return Value
this
: augmented system which contains symbolic definition of the original system and its sensitivities
-
mlhsInnerSubst<::amimodel > amimodel::augmento2vec()
augmento2 augments the system equation to also include equations for sensitivity equation. This will enable us to compute second order sensitivities in a forward-adjoint or forward-forward apporach later on.
- Return Value
modelo2vec
: augmented system which contains symbolic definition of the original system and its sensitivities
Public Members
-
::struct sym = struct.empty("")
symbolic definition struct
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: struct.empty(“”)
-
::struct fun = struct.empty("")
struct which stores information for which functions c code needs to be generated
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: struct.empty(“”)
-
::amievent event = amievent.empty("")
struct which stores information for which functions c code needs to be generated
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: amievent.empty(“”)
-
::string modelname = char.empty("")
name of the model
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: char.empty(“”)
-
::struct HTable = struct.empty("")
struct that contains hash values for the symbolic model definitions
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: struct.empty(“”)
-
::bool debug = false
flag indicating whether debugging symbols should be compiled
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: false
-
::bool adjoint = true
flag indicating whether adjoint sensitivities should be enabled
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: true
-
::bool forward = true
flag indicating whether forward sensitivities should be enabled
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: true
-
::double t0 = 0
default initial time
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: 0
-
::string wtype = char.empty("")
type of wrapper (cvodes/idas)
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: char.empty(“”)
-
::int nx = double.empty("")
number of states
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int nxtrue = double.empty("")
number of original states for second order sensitivities
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int ny = double.empty("")
number of observables
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int nytrue = double.empty("")
number of original observables for second order sensitivities
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int np = double.empty("")
number of parameters
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int nk = double.empty("")
number of constants
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int ng = double.empty("")
number of objective functions
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int nevent = double.empty("")
number of events
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int nz = double.empty("")
number of event outputs
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int nztrue = double.empty("")
number of original event outputs for second order sensitivities
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::*int id = double.empty("")
flag for DAEs
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int ubw = double.empty("")
upper Jacobian bandwidth
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int lbw = double.empty("")
lower Jacobian bandwidth
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::int nnz = double.empty("")
number of nonzero entries in Jacobian
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::*int sparseidx = double.empty("")
dataindexes of sparse Jacobian
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::*int rowvals = double.empty("")
rowindexes of sparse Jacobian
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::*int colptrs = double.empty("")
columnindexes of sparse Jacobian
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::*int sparseidxB = double.empty("")
dataindexes of sparse Jacobian
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::*int rowvalsB = double.empty("")
rowindexes of sparse Jacobian
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::*int colptrsB = double.empty("")
columnindexes of sparse Jacobian
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: double.empty(“”)
-
::*cell funs = cell.empty("")
cell array of functions to be compiled
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: cell.empty(“”)
-
::*cell mfuns = cell.empty("")
cell array of matlab functions to be compiled
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: cell.empty(“”)
-
::string coptim = "-O3"
optimisation flag for compilation
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: “-O3”
-
::string param = "lin"
default parametrisation
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: “lin”
-
matlabtypesubstitute wrap_path = char.empty("")
path to wrapper
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: char.empty(“”)
-
matlabtypesubstitute recompile = false
flag to enforce recompilation of the model
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: false
-
matlabtypesubstitute cfun = struct.empty("")
storage for flags determining recompilation of individual functions
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: struct.empty(“”)
-
matlabtypesubstitute o2flag = 0
flag which identifies augmented models 0 indicates no augmentation 1 indicates augmentation by first order sensitivities (yields second order sensitivities) 2 indicates augmentation by one linear combination of first order sensitivities (yields hessian-vector product)
- Note
This property has non-standard access specifiers:
SetAccess = Private, GetAccess = Public
- Note
Matlab documentation of property attributes. Default: 0
-
matlabtypesubstitute z2event = double.empty("")
vector that maps outputs to events
Default: double.empty(“”)
-
matlabtypesubstitute splineflag = false
flag indicating whether the model contains spline functions
Default: false
-
matlabtypesubstitute minflag = false
flag indicating whether the model contains min functions
Default: false
-
matlabtypesubstitute maxflag = false
flag indicating whether the model contains max functions
Default: false
-
::int nw = 0
number of derived variables w, w is used for code optimization to reduce the number of frequently occuring expressions
Default: 0
-
::int ndwdx = 0
number of derivatives of derived variables w, dwdx
Default: 0
-
::int ndwdp = 0
number of derivatives of derived variables w, dwdp
Default: 0
Public Static Functions
-
noret::substitute amimodel::compileAndLinkModel(matlabtypesubstitute modelname, matlabtypesubstitute modelSourceFolder, matlabtypesubstitute coptim, matlabtypesubstitute debug, matlabtypesubstitute funs, matlabtypesubstitute cfun)
compileAndLinkModel compiles the mex simulation file. It does not check if the model files have changed since generating C++ code or whether all files are still present. Use only if you know what you are doing. The safer alternative is rerunning amiwrap().
- Parameters
modelname
: name of the model as specified for amiwrap()modelSourceFolder
: path to model source directorycoptim
: optimization flagsdebug
: enable debuggingfuns
: array with names of the model functions, will be guessed from source files if left emptycfun
: struct indicating which files should be recompiled
- Return Value
cfun
: void
-
noret::substitute amimodel::generateMatlabWrapper(matlabtypesubstitute nx, matlabtypesubstitute ny, matlabtypesubstitute np, matlabtypesubstitute nk, matlabtypesubstitute nz, matlabtypesubstitute o2flag, :: amimodel amimodelo2, matlabtypesubstitute wrapperFilename, matlabtypesubstitute modelname, matlabtypesubstitute pscale, matlabtypesubstitute forward, matlabtypesubstitute adjoint)
generateMatlabWrapper generates the matlab wrapper for the compiled C files.
- Parameters
nx
: number of statesny
: number of observablesnp
: number of parametersnk
: number of fixed parametersnz
: number of eventso2flag
: o2flagamimodelo2
: this struct must contain all necessary symbolic definitions for second order sensivitieswrapperFilename
: output filenamemodelname
: name of the modelpscale
: default parameter scalingforward
: has forward sensitivity equationsadjoint
: has adjoint sensitivity equations
- Return Value
adjoint
: void
-