@Override public <T> ASTNode2Value<Double> frac(ASTNode2 numerator, ASTNode2 denominator) throws SBMLException { UnitDefinition ud = numerator.compile(this).getUnits().clone(); UnitDefinition denom = denominator.compile(this).getUnits().clone(); setLevelAndVersion(ud); setLevelAndVersion(denom); ud.divideBy(denom); ASTNode2Value<Double> value = new ASTNode2Value<Double>(ud, this); value.setValue(numerator.compile(this).toDouble() / denominator.compile(this).toDouble()); return value; }
@Override public ASTNodeValue frac(ASTNode numerator, ASTNode denominator) throws SBMLException { UnitDefinition ud = numerator.compile(this).getUnits().clone(); UnitDefinition denom = denominator.compile(this).getUnits().clone(); // System.out.println("UnitsCompiler - divide/frac - numerator unit = " + UnitDefinition.printUnits(ud)); // System.out.println("UnitsCompiler - divide/frac - denominator unit = " + UnitDefinition.printUnits(denom)); setLevelAndVersion(ud); setLevelAndVersion(denom); ud.divideBy(denom); // System.out.println("UnitsCompiler - divide/frac - result unit = " + UnitDefinition.printUnits(ud) + "\n"); ASTNodeValue value = new ASTNodeValue(ud, this); value.setValue(numerator.compile(this).toDouble() / denominator.compile(this).toDouble()); return value; }
@Override @Deprecated public UnitDefinition getUnitsInstance() { if (unitsID != null) { if (Unit.isUnitKind(unitsID, getLevel(), getVersion())) { UnitDefinition ud = new UnitDefinition(unitsID, getLevel(), getVersion()); ud.addUnit(Unit.Kind.valueOf(unitsID.toUpperCase())); return ud; } Model model = getModel(); return model == null ? null : model.getUnitDefinition(unitsID); } UnitDefinition substancePerTimeUnits = getSubstanceUnitsInstance(); UnitDefinition timeUnits = getTimeUnitsInstance(); substancePerTimeUnits = (substancePerTimeUnits == null) ? new UnitDefinition( getLevel(), getVersion()) : substancePerTimeUnits.clone(); if (timeUnits != null) { substancePerTimeUnits.divideBy(timeUnits); substancePerTimeUnits.setId(getSubstanceUnits() + "_per_" + getTimeUnits()); } else if (!substancePerTimeUnits.isSetId()) { substancePerTimeUnits.setId(getSubstanceUnits()); } return substancePerTimeUnits; }
Model m = variable.getModel(); variableUnits = variableUnits.clone().divideBy(m.getTimeUnitsInstance());
value.setUnits(value.getUnits().divideBy(timeUnits));
UnitDefinition derivedUD = specUnit.clone().divideBy(sizeUnit); derivedUD.setId(derivedUD.getId() + "_per_" + sizeUnit.getId()); if (derivedUD.isSetName()) {