> > The CellML specification distinguishes expansion and simplification. The > expansion algorithm given maintains a scale factor in the expanded unit, > and hence the *expansion* of m/km is *not* the same as dimensionless. It > is only when you then simplify that the scale factor is lost. For > checking dimensional consistency, this is fine. For performing units > conversions, it is not, and so the units conversion algorithm in the spec > does *not* drop the scale factor, even though it claims in the text that > the units involved are "fully expanded and simplified", this is according > to C.3.4 (expansion) not C.3.1 (simplification). > > So there are two separate questions here: > 1) checking the dimensional consistency of mathematics
Which we can already do given our variables and constants need to all have dimensions and it is easy to discover if they do not. > 2) ensuring a sensible semantics for simulating a model > What are sensible semantics in the case of 'units'? How do you ensure something like units consistency has been applied correctly by an author? You are never going to be able to ensure any unit multiplication factors are correct, even if they are given units of their own. going back to the following equation Andrew supplied: amount_Na [nmol] = 10^-6 [dimensionless] * conc_Na [nmol / L] * vol[microL] How do you make this more 'valid'? (it is already valid dimensionally and numerically). Also, I'm not sure what 'converting units at connections' has to do with this discussion - that only ensures value consistency in the assigning of values to inputs and outputs of components and has nothing to do with ensuring units consistency inside the math. cheers Matt _______________________________________________ cellml-discussion mailing list cellml-discussion@cellml.org http://www.cellml.org/mailman/listinfo/cellml-discussion