> > I was looking into units and was wondering something about 
> base units, 
> > which are not part of the SI base units...
> >
> > For instance, volt, which is part of the set of CellML base units
> Volt is not a base unit, it is a standard derived unit. From Section
> 5.2.1 of the CellML specification...
> *"Table 2* The dictionary of units keywords that CellML 
> processing applications are expected to recognise. Base SI 
> units are printed in bold text, derived SI units are printed 
> in plain text, and additions to the standard units defined 
> purely for the convenience of model authors are italicised."

Sorry, my bad for using the wrong terminology when referring to units such
as volt.

> Volt is printed in plain text, which makes it a derived unit, 
> not a base unit.
> > , is
> > defined as kg.m^2.s^-3.A^-1 in SI base units. Now, say that 
> I want to 
> > create a new unit called "volt per metre". I could 
> potentially define 
> > in one of two
> > ways: V.m^-1 or kg.m.s^-3.A^-1. Now, say again that I have 
> an equation 
> > that goes something like: A = B/C, with A in volt per 
> metre, B in volt 
> > and C in metre, with the unit describing "volt per metre" 
> was defined 
> > using SI base units (i.e. kg.m.s^-3.A^-1). Now, here is my 
> question: 
> > how do I go about showing that the equation is valid? Shouldn't the 
> > CellMl specifications force one all non-SI base units to be 
> expanded 
> > to SI base units when checking unit consistency?
> CellML processing software is not required to check for 
> dimensional consistency at the equation level (but validating 
> software would probably want to). Software is also not 
> strictly required to convert at the connection level, 
> although appendix C defines how to do this if software 
> implements the functionality (CCGS and mozCellML do have this 
> functionality). Derived units are converted into the set of 
> base units, and base units are compared (and constant factors 
> multiplied and raised to the appropriate powers, to get the 
> conversion factor).

Exactly and I guess this is the point I was trying to make: maybe CellML
processing softwares should be forced to do those checks?

> If you would like to see a working implementation of this, 
> refer to 
> https://svn.physiomeproject.org/svn/physiome/CellML_DOM_API/tr
> unk/CCGS/sources/Units.cxx. 
> The derived units can be seen in 
> CodeGenerationState::SetupBuiltinUnits
> (for example, the line in the source for volts looks like:
> 
>   DERIVED_UNIT4(volt, ibu_metre, 2.0, ibu_kilogram, 1.0, 
> ibu_second, -3.0,
>                 ibu_ampere, -1.0, 1.0);
> 
> ).
> 
> The code works by assigning base units a strict ordering, 
> converting sub-units into base units, and recursively merging 
> the ordered lists into a final ordered list of base units 
> with exponents, as well as a single multiplication factor 
> and/or offet. This canonical form of base units is compared, 
> and if it matches (except for the factor/offset), the factors 
> are multiplied to get the final conversion factor.

Yes, that's what I had in mind indeed.

        Alan.

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

Reply via email to