@Override public UnitDefinition clone() { return new UnitDefinition(this); }
@Override public ASTNodeValue frac(int numerator, int denominator) { ASTNodeValue value = new ASTNodeValue( new UnitDefinition(level, version), this); value.setValue(((double) numerator) / ((double) denominator)); return value; }
@Override public <T> ASTNode2Value<Double> frac(int numerator, int denominator) { ASTNode2Value<Double> value = new ASTNode2Value<Double>( new UnitDefinition(level, version), this); value.setValue(((double) numerator) / ((double) denominator)); return value; }
/** * Creates a dimensionless unit definition object encapsulated in an * {@link ASTNode2Value}. * @param type The type of the dimensionless value, e.g., Boolean.class etc. * * @return */ private <T> ASTNode2Value<T> dimensionless(Class<T> type) { UnitDefinition ud = new UnitDefinition(level, version); ud.addUnit(Unit.Kind.DIMENSIONLESS); return new ASTNode2Value<T>(ud, this); }
/** * Creates a dimensionless unit definition object encapsulated in an * ASTNodeValue. * * @return */ protected ASTNodeValue dimensionless() { UnitDefinition ud = new UnitDefinition(level, version); ud.addUnit(Unit.Kind.DIMENSIONLESS); return new ASTNodeValue(ud, this); }
/** * * @return */ public UnitDefinition getUnits() { if (!isSetUnit()) { unitDef = new UnitDefinition(level, version); unitDef.createUnit(); } return unitDef; }
/** * * @return */ public UnitDefinition getUnits() { if (!isSetUnit()) { unitDef = new UnitDefinition(level, version); unitDef.createUnit(); } return unitDef; }
/** * Creates an invalid unit definition encapsulated in an ASTNode2Value. * * @return */ private <T> ASTNode2Value<?> invalid() { UnitDefinition ud = new UnitDefinition(level, version); ud.addUnit(new Unit(level, version)); return new ASTNode2Value(ud, this); }
/** * Creates an invalid unit definition encapsulated in an ASTNodeValue. * * @return an invalid unit definition encapsulated in an ASTNodeValue. */ protected ASTNodeValue invalid() { UnitDefinition ud = new UnitDefinition(level, version); ud.addUnit(new Unit(level, version)); return new ASTNodeValue(ud, this); }
/** * Compile boolean values * * @param b * @return */ public ASTNodeValue compile(boolean b) { UnitDefinition ud = new UnitDefinition(level, version); ud.addUnit(Kind.DIMENSIONLESS); ASTNodeValue value = new ASTNodeValue(b, this); value.setUnits(ud); return value; }
/** * Compile boolean values * * @param b * @return */ public <T> ASTNode2Value<Boolean> compile(boolean b) { UnitDefinition ud = new UnitDefinition(level, version); ud.addUnit(Kind.DIMENSIONLESS); ASTNode2Value<Boolean> value = new ASTNode2Value<Boolean>(b, this); value.setUnits(ud); return value; }
/** * Creates a new {@link UnitDefinition} inside this {@link Model} and returns * it. * * @param id * the id of the new element to create * @return the {@link UnitDefinition} object created */ public UnitDefinition createUnitDefinition(String id) { UnitDefinition unitDefinition = new UnitDefinition(id, getLevel(), getVersion()); addUnitDefinition(unitDefinition); return unitDefinition; }
@Override public UnitDefinition getDerivedUnitDefinition() { if (isSetStoichiometryMath()) { return stoichiometryMath.getDerivedUnitDefinition(); } UnitDefinition ud = new UnitDefinition(getLevel(), getVersion()); ud.addUnit(Unit.Kind.DIMENSIONLESS); return ud; }
@Override public <T> ASTNode2Value<Double> getConstantAvogadro(String name) { // TODO: If there is a different value in a later SBML specification, this must be checked here. ASTNode2Value<Double> value = new ASTNode2Value<Double>(Maths.AVOGADRO_L3V1, this); UnitDefinition perMole = new UnitDefinition(level, version); perMole.setLevel(level); perMole.setId("per_mole"); perMole.addUnit(new Unit(1d, 0, Kind.MOLE, -1d, level, version)); value.setUnits(perMole); return value; }
@Override public ASTNodeValue compile(double real, String units) { ASTNodeValue v = new ASTNodeValue(real, this); UnitDefinition ud; if (Unit.Kind.isValidUnitKindString(units, level, version)) { ud = new UnitDefinition(level, version); ud.addUnit(Unit.Kind.valueOf(units.toUpperCase())); v.setUnits(ud); } else if (model != null) { ud = model.getUnitDefinition(units); if (ud != null) { v.setUnits(ud); } } return v; }
@Override public <T> ASTNode2Value<Double> times(List<ASTNode2> values) throws SBMLException { UnitDefinition ud = new UnitDefinition(level, version); UnitDefinition v; double d = 1d; for (ASTNode2 value : values) { ASTNode2Value<?> av = value.compile(this); v = av.getUnits().clone(); setLevelAndVersion(v); ud.multiplyWith(v); d *= av.toDouble(); } ASTNode2Value<Double> value = new ASTNode2Value(ud, this); value.setValue(Double.valueOf(d)); return value; }
@Override public <T> ASTNode2Value<String> compile(double real, String units) { ASTNode2Value<String> v = new ASTNode2Value<String>(StringTools.toString(Locale.ENGLISH, real), this); UnitDefinition ud; if (Unit.Kind.isValidUnitKindString(units, level, version)) { ud = new UnitDefinition(level, version); ud.addUnit(Unit.Kind.valueOf(units.toUpperCase())); v.setUnits(ud); } else if (model != null) { ud = model.getUnitDefinition(units); if (ud != null) { v.setUnits(ud); } } return v; }
@Override public ASTNodeValue times(List<ASTNode> values) throws SBMLException { UnitDefinition ud = new UnitDefinition(level, version); UnitDefinition v; double d = 1d; for (ASTNode value : values) { ASTNodeValue av = value.compile(this); v = av.getUnits().clone(); // System.out.println("UnitsCompiler - times - " + value.getVariable().getElementName() + " " + value.getVariable().getId() + " unit = " + UnitDefinition.printUnits(v)); setLevelAndVersion(v); ud.multiplyWith(v); d *= av.toDouble(); } ASTNodeValue value = new ASTNodeValue(ud, this); value.setValue(Double.valueOf(d)); return value; }
@Override public ASTNodeValue getConstantAvogadro(String name) { ASTNodeValue value = new ASTNodeValue(Maths.getAvogadro(level, version), this); UnitDefinition perMole = new UnitDefinition(level, version); perMole.setLevel(level); perMole.setId("per_mole"); perMole.addUnit(new Unit(1d, 0, Kind.MOLE, -1d, level, version)); value.setUnits(perMole); return value; }
@Override public UnitDefinition getUnitsInstance() { String unitsId = unitsID; if (isSetUnits()) { int level = getLevel(), version = getVersion(); if (Unit.isUnitKind(unitsId, level, version)) { UnitDefinition ud = new UnitDefinition(unitsId + UnitDefinition.BASE_UNIT_SUFFIX, level, version); ud.addUnit(Unit.Kind.valueOf(unitsId.toUpperCase())); return ud; } } else { unitsId = getPredefinedUnitID(); } Model model = getModel(); return model == null ? null : model.getUnitDefinition(unitsId); }