SysML 2.1b1 RTF Avatar
  1. OMG Issue

SYSML21 — ISQ/SI libraries: unit expressions contradict declared quantity dimensions (Hartree energy is energy cubed, dose rates typed as dose, alternative units multiplied together)

  • Key: SYSML21-685
  • Status: open  
  • Source: Mongoose Enterprises ( Christopher Toth)
  • Summary:

    Found by reducing every unit expression in SI.sysml to its dimension and comparing with the quantityPowerFactors of the declared ...Unit type (SysML-v2-Release commit fb97b754). Line numbers are in SI.sysml unless stated.

    1. Alternative units from one ISO table cell multiplied into a single product

    Line Declaration Expression gives Type declares
    136 HartreeEnergyUnit = eV*J*kg*m^2*s^-2 L^6 M^3 T^-6 (energy cubed) also L^6 M^3 T^-6
    149 TotalAngularMomentumUnit = J*s*eV*s L^4 M^2 T^-2 L^2 M T^-1
    163 EnergyDensityOfStatesUnit = J^-1*m^-3*eV^-1*m^-3 L^-10 M^-2 T^4 L^-5 M^-1 T^2
    247 HallCoefficientUnit = m^3/C*m^3*s^-1*A^-1 I^-2 L^6 T^-2 I^-1 L^3 T^-1

    Line 136 is the most serious because the error is also in the generated ISQ model: ISQAtomicNuclear.sysml lines 259-263 declare HartreeEnergyUnit with exponents L 6, M 3, T -6, and the documentation (line 247) says "quantity dimension: L^6*M^3*T^-6, measurement unit(s): eV*J*kg*m^2*s^-2" for a quantity defined as an energy, E_H = e^2/(4 pi eps_0 a_0). The three alternative units eV, J, kg*m^2*s^-2 were joined into a product and the dimension was derived from that product. It should be L^2 M T^-2. For line 163 the documentation at ISQCondensedMatter.sysml line 554 repeats the product; for line 247 the documentation at ISQCondensedMatter.sysml line 626 lists the alternatives correctly as "m^3/C, m^3*s^-1*A^-1". Each alternative should become its own unit declaration. Since the ISQ files are generated, the generator's handling of multi-unit cells probably needs the fix, and other quantities may be affected in ways an expression-versus-type comparison cannot see.

    2. Exponent sign

    Line 137: TotalMassStoppingPowerUnit = eV*m^-2/kg gives T^-2; the type declares L^4 T^-2. Should be eV*m^2/kg (compare line 147, J*m^2/kg).

    3. Dose equivalent rate typed as dose equivalent

    Lines 286, 299, 239: 'sievert per second' : DoseEquivalentUnit = Sv/s, 'watt per kilogram' : DoseEquivalentUnit = W/kg, 'metre squared second to the power minus 3' : DoseEquivalentUnit = m^2*s^-3. Each expression is L^2 T^-3; DoseEquivalentUnit (ISQAtomicNuclear.sysml line 2520) declares L^2 T^-2. The origin is ISQAtomicNuclear.sysml line 2527, attribute doseEquivalentRate: DoseEquivalentValue, whose own documentation says "quantity dimension: L^2*T^-3". The rate needs its own value and unit types; the "sievert per second" present since the 2020-09 release shows this is long-standing.

    4. Why this is not detected

    MeasurementReferences.sysml line 276 asserts hasValidUnitPowerFactors : VerifyUnitPowerFactors, but the constraint definition (lines 517-525) has only inputs and documentation, no Boolean expression, and MeasurementRefCalculations.sysml declares unit '*', '/', '^' as signatures without dimension arithmetic. Suggest giving the constraint a body, or adding a library regression check: expression-versus-type dimension comparison, plus anchor values for a few conversion factors (which would also have caught SYSML21-405).

  • Reported: SysML 2.0 — Mon, 21 Sep 2026 22:29 GMT
  • Updated: Mon, 28 Sep 2026 19:01 GMT