if (!isDimensionless()) { switch (getScale()) { case 24:
if (!isDimensionless()) { switch (getScale()) { case 24:
/** * * @param rootExponent * @param radiant * @return * @throws SBMLException */ private <T> ASTNode2Value<Double> root(double rootExponent, ASTNode2Value radiant) throws SBMLException { UnitDefinition ud = radiant.getUnits().clone(); for (Unit u : ud.getListOfUnits()) { if ((((u.getExponent() / rootExponent) % 1d) != 0d) && !u.isDimensionless() && !u.isInvalid()) { new UnitException(MessageFormat.format( "Cannot perform power or root operation due to incompatibility with a unit exponent. Given are {0,number} as the exponent of the unit and {1,number} as the root exponent for the current computation.", u.getExponent(), rootExponent)); } if (!(u.isDimensionless() || u.isInvalid())) { u.setExponent(u.getExponent() / rootExponent); } } ASTNode2Value<Double> value = new ASTNode2Value<Double>(ud, this); value.setValue(Double.valueOf(Math.pow(radiant.toDouble(), 1d / rootExponent))); return value; }
/** * * @param rootExponent * @param radiant * @return * @throws SBMLException */ protected ASTNodeValue root(double rootExponent, ASTNodeValue radiant) throws SBMLException { UnitDefinition ud = radiant.getUnits().clone(); for (Unit u : ud.getListOfUnits()) { if ((((u.getExponent() / rootExponent) % 1d) != 0d) && !u.isDimensionless() && !u.isInvalid()) { new UnitException(MessageFormat.format( "Cannot perform power or root operation due to incompatibility with a unit exponent. Given are {0,number} as the exponent of the unit and {1,number} as the root exponent for the current computation.", u.getExponent(), rootExponent)); // TODO - this exception is never thrown } if (!(u.isDimensionless() || u.isInvalid())) { u.setExponent(u.getExponent() / rootExponent); } } ASTNodeValue value = new ASTNodeValue(ud, this); value.setValue(Double.valueOf(Math.pow(radiant.toDouble(), 1d / rootExponent))); return value; }
/** * * @param rootExponent * @param radiant * @return * @throws SBMLException */ protected ASTNodeValue root(double rootExponent, ASTNodeValue radiant) throws SBMLException { UnitDefinition ud = radiant.getUnits().clone(); for (Unit u : ud.getListOfUnits()) { if ((((u.getExponent() / rootExponent) % 1d) != 0d) && !u.isDimensionless() && !u.isInvalid()) { // TODO - report an error ? new UnitException(MessageFormat.format( "Cannot perform power or root operation due to incompatibility with a unit exponent. Given are {0,number} as the exponent of the unit and {1,number} as the root exponent for the current computation.", u.getExponent(), rootExponent)); } if (!(u.isDimensionless() || u.isInvalid())) { u.setExponent(u.getExponent() / rootExponent); } } ASTNodeValue value = new ASTNodeValue(ud, this); value.setValue(Double.valueOf(Math.pow(radiant.toDouble(), 1d / rootExponent))); return value; }
Unit u = getUnit(i); if (Unit.Kind.areEquivalent(u.getKind(), unit.getKind()) || u.isDimensionless() || unit.isDimensionless() || u.isInvalid() || unit.isInvalid()) { if (u.isDimensionless()) { unit = unit.clone(); Unit.merge(unit, removeUnit(i));
for (Unit unit1 : definition.getListOfUnits()) { Unit unit = unit1.clone(); if (!(unit.isDimensionless() || unit.isInvalid())) { unit.setExponent(-unit1.getExponent()); Unit u = getUnit(i); if (Unit.Kind.areEquivalent(u.getKind(), unit.getKind()) || u.isDimensionless() || unit.isDimensionless() || u.isInvalid() || unit.isInvalid()) { if (u.isDimensionless()) { Unit.merge(unit, removeUnit(i)); break;
/** * Tests if a given unit definition is a variant * of the predefined unit identifier 'dimensionless'. * * @return {@code true} if this UnitDefinition is a variant of the predefined * unit * dimensionless; false otherwise. */ public boolean isVariantOfDimensionless() { if (isSetListOfUnits()) { UnitDefinition ud = clone(); if (isInvalidSBMLAllowed()) { ud.putUserObject(JSBML.ALLOW_INVALID_SBML, Boolean.TRUE); } ud.convertToSIAndSubstanceUnits(); // if after the simplify() call no more units exists, it's dimensionless if (ud.getUnitCount() == 0) { return true; } else if (ud.getUnitCount() == 1) { return ud.getUnit(0).isDimensionless(); } return false; } // If no listOfUnits is set, it's technically dimensionless return true; }
|| u.isDimensionless() || s.isDimensionless() || u.isInvalid() || s.isInvalid()) { if (s.isDimensionless()) { Unit.merge(u, removeUnit(i + 1)); } else { && !u.isDimensionless() && !s.isDimensionless() && !u.isInvalid() && !s.isInvalid()) {
Kind k2 = unit2.getKind(); boolean equivalent = Kind.areEquivalent(k1, k2); if (equivalent || unit1.isDimensionless() || unit2.isDimensionless()) { int s1 = unit1.getScale(), s2 = unit2.getScale();
@Override public boolean check(ValidationContext ctx, UnitDefinition ud) { if (ud.getId().equals("volume")) { if (ctx.isLevelAndVersionLessThan(2, 4)) { if (ud.getUnitCount() == 1) { Unit u = ud.getUnit(0); if (ctx.getLevel() == 1) { return u.isLitre(); } else if (ctx.isLevelAndVersionEqualTo(2, 1)) { return u.getKind() == Kind.LITRE || (u.getKind() == Kind.METRE && u.getExponent() == 3); } else { return u.getKind() == Kind.LITRE || (u.getKind() == Kind.METRE && u.getExponent() == 3) || ud.isVariantOfDimensionless(); } } else { return ud.isVariantOfVolume(); } } else { return ud.isVariantOfVolume() || (ud.getNumUnits() == 1 && ud.getUnit(0).isDimensionless()); } } return true; } };