Class amimodel
Defined in File amimodel.m
Inheritance Relationships
Base Type
public handle
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
- param symfun
this is the string to the function which generates the modelstruct. You can also directly pass the struct here
- param modelname
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)
- param xdot
new right hand side of the differential equation
- retval xdot
void
- noret::substitute amimodel::updateModelName(matlabtypesubstitute modelname)
updateModelName updates the modelname
- param modelname
new modelname
- retval modelname
void
- noret::substitute amimodel::updateWrapPath(matlabtypesubstitute wrap_path)
updateModelName updates the modelname
- param wrap_path
new wrap_path
- retval wrap_path
void
- noret::substitute amimodel::parseModel()
parseModel parses the model definition and computes all necessary symbolic expressions.
- retval void
- noret::substitute amimodel::generateC()
generateC generates the c files which will be used in the compilation.
- retval void
- noret::substitute amimodel::generateRebuildM()
generateRebuildM generates a Matlab script for recompilation of this model
- retval void
- noret::substitute amimodel::compileC()
compileC compiles the mex simulation file
- retval void
- noret::substitute amimodel::generateM(::amimodel amimodelo2)
generateM generates the matlab wrapper for the compiled C files.
- param amimodelo2
this struct must contain all necessary symbolic definitions for second order sensivities
- retval amimodelo2
void
- noret::substitute amimodel::getFun(::struct HTable, ::string funstr)
getFun generates symbolic expressions for the requested function.
- param HTable
struct with hashes of symbolic definition from the previous compilation
- param funstr
function for which symbolic expressions should be computed
- retval funstr
void
- noret::substitute amimodel::makeEvents()
makeEvents extracts discontiniuties from the model right hand side and converts them into events
- retval void
- noret::substitute amimodel::makeSyms()
makeSyms extracts symbolic definition from the user provided model and checks them for consistency
- retval void
- mlhsInnerSubst<::bool > amimodel::checkDeps(::struct HTable, ::cell deps)
checkDeps checks the dependencies of functions and populates sym fields if necessary
- param HTable
struct with reference hashes of functions in its fields
- param deps
cell array with containing a list of dependencies
- retval 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.
- retval 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.
- retval 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.
- retval 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().
- param modelname
name of the model as specified for amiwrap()
- param modelSourceFolder
path to model source directory
- param coptim
optimization flags
- param debug
enable debugging
- param funs
array with names of the model functions, will be guessed from source files if left empty
- param cfun
struct indicating which files should be recompiled
- retval 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.
- param nx
number of states
- param ny
number of observables
- param np
number of parameters
- param nk
number of fixed parameters
- param nz
number of events
- param o2flag
o2flag
- param amimodelo2
this struct must contain all necessary symbolic definitions for second order sensivities
- param wrapperFilename
output filename
- param modelname
name of the model
- param pscale
default parameter scaling
- param forward
has forward sensitivity equations
- param adjoint
has adjoint sensitivity equations
- retval adjoint
void