David Nickerson wrote:
> Hi Andrew,
>
> Saw this in today's meeting minutes and I just wanted to check how it 
> might affect how I'm using the CCGS?
>   
Hi Andre,

There are two main changes:
1) The separation of code generation into two steps:
     a) generating a DAG of objects representing steps in a procedural 
process.
     b) DFS visit of the DAG, generating C code as a side effect.
2) Support for optimising numerical Jacobian calculations. This works by 
splitting the DAG visit into two steps: firstly visit starting from all 
equations used to compute variables directly used by the rate equations 
(so the DFS will catch all procedural steps needed to compute variables 
needed to compute the rates), and secondly (wrapped in #ifndef 
VARIABLES_FOR_RATES_ONLY) visits all remaining equations.

Change 1 should not affect the output of the functions that get 
generated (it may change the ordering of assignments, but only to the 
extent that ordering does not matter, so you will still get the exact 
same results).

Change 2 only makes any difference at all if you define 
VARIABLES_FOR_RATES_ONLY in your variableCodeFragment. Since this will 
not normally be defined, you don't have to do anything as a result of my 
changes.

However, if you wanted, you could use my changes to get a more efficient 
Jacobian function, or to avoid computing variables that you don't need 
(if you define VARIABLES_FOR_RATES_ONLY, the code will not evaluate 
variables which do not directly affect the time evolution of your model. 
When computing the Jacobian, this is obviously a good idea, as it saves 
computing variables which will just be thrown away unused anyway. You 
might also want to do this for intermediate steps of the evaluation if 
you are going to look at the final result). The CIS utilises this by 
using variableCodeFragment twice, once with VARIABLES_FOR_RATES_ONLY 
defined, and once with it not defined.

Best regards,
Andrew

_______________________________________________
cellml-discussion mailing list
[email protected]
http://www.cellml.org/mailman/listinfo/cellml-discussion

Reply via email to