Hi all,

This may be of interest to some people on this list.

Best wishes,
Andrew

-------- Original Message --------
Subject: Multiple independent parameter support in the CellML API
Date: Thu, 15 Jul 2010 12:05:40 +1200
From: Andrew Miller <ak.mil...@auckland.ac.nz>
To: Chris Bradley <c.brad...@auckland.ac.nz>, Randall Britten <r.brit...@auckland.ac.nz>, David Nickerson <d.nicker...@auckland.ac.nz>

Hi Chris, Randall, and Andre (please forward on to any other developers
who may also be useful if I missed anyone).

The CellML API that OpenCMISS has been waiting for a long time for,
namely the ability to choose which variables are independent parameters,
has now been implemented:
  Tracker item: https://tracker.physiomeproject.org/show_bug.cgi?id=1952

I have added a new feature to the CellML Code Generation Service, called
Custom Code Generation. With custom code generation, the user gets to
specify groups of computation targets (computation targets are a
particular derivative - including the '0th' derivative - i.e. the
undifferentiated value of a particular group of one or more connected
variables).

The groups are:
  known - that is, controlled externally from the code to be generated.
     Examples: independent variables like time.
               constants set from within the calling code.
               etc...
  wanted - these are what the code to be generated should compute.
     Example: the output wanted from a constitutive law.

  unwanted - these are variables that the code should not compute under
any circumstances, not even to use as intermediates.
     Example: known state variables when you are trying to work out
constants only.

Note that custom code generation does not take into account initial
value attributes at all, because it doesn't know if you will only run
the generated code at the intended point or not. It is the
responsibility of the programmer using the custom code generation to
handle initial values if required.

By default, storage for all computation target is allocated in one
array, but you can manually name computation target storage whatever you
like, and therefore control storage to your liking - look at the example
code in CellML2C for how to do this.

I would be grateful if you could have a look at the interface
(interfaces/CCGS.idl in the source tree, look at createCustomGenerator
on the CodeGenerator interface, and the CustomCodeGenerator and
CustomCodeInformation interfaces), and the test / example program in
CCGS/tests/CustomGen.cpp, and add comments to the tracker item if I have
missed anything you need for this.

Best wishes,
Andrew
_______________________________________________
cellml-discussion mailing list
cellml-discussion@cellml.org
http://www.cellml.org/mailman/listinfo/cellml-discussion

Reply via email to