org.sbml.jsbml.util.compilers
public class UnitsCompiler extends java.lang.Object implements ASTNodeCompiler
Modifier and Type | Field and Description |
---|---|
private int |
level
SBML level field
|
private Model |
model
The model associated to this compiler.
|
private java.util.HashMap<java.lang.String,ASTNodeValue> |
namesToUnits
Necessary for function definitions to remember the units of the argument
list.
|
private int |
version
SBML version field
|
Constructor and Description |
---|
UnitsCompiler() |
UnitsCompiler(int level,
int version) |
UnitsCompiler(Model model) |
Modifier and Type | Method and Description |
---|---|
ASTNodeValue |
abs(ASTNode value)
The absolute value represented by the given
ASTNode . |
ASTNodeValue |
and(java.util.List<ASTNode> values) |
ASTNodeValue |
arccos(ASTNode value) |
ASTNodeValue |
arccosh(ASTNode value) |
ASTNodeValue |
arccot(ASTNode value) |
ASTNodeValue |
arccoth(ASTNode value) |
ASTNodeValue |
arccsc(ASTNode value) |
ASTNodeValue |
arccsch(ASTNode value) |
ASTNodeValue |
arcsec(ASTNode value) |
ASTNodeValue |
arcsech(ASTNode value) |
ASTNodeValue |
arcsin(ASTNode value) |
ASTNodeValue |
arcsinh(ASTNode value) |
ASTNodeValue |
arctan(ASTNode value) |
ASTNodeValue |
arctanh(ASTNode value) |
ASTNodeValue |
ceiling(ASTNode value) |
private void |
checkForDimensionlessOrInvalidUnits(UnitDefinition units)
Throws an
IllegalArgumentException if the given units do not
represent a dimensionless or invalid unit. |
ASTNodeValue |
compile(boolean b)
Compile boolean values
|
ASTNodeValue |
compile(CallableSBase variable) |
ASTNodeValue |
compile(Compartment c) |
ASTNodeValue |
compile(double mantissa,
int exponent,
java.lang.String units)
Creates an
ASTNodeValue that represents a real number in
scientific notation, i.e., mantissa * 10^exponent, and the given units. |
ASTNodeValue |
compile(double real,
java.lang.String units) |
ASTNodeValue |
compile(int integer,
java.lang.String units) |
ASTNodeValue |
compile(java.lang.String name)
A compiler will also have to deal with a name.
|
ASTNodeValue |
cos(ASTNode value) |
ASTNodeValue |
cosh(ASTNode value) |
ASTNodeValue |
cot(ASTNode value) |
ASTNodeValue |
coth(ASTNode value) |
ASTNodeValue |
csc(ASTNode value) |
ASTNodeValue |
csch(ASTNode value) |
ASTNodeValue |
delay(java.lang.String delayName,
ASTNode x,
ASTNode delay,
java.lang.String units)
Evaluates delay functions.
|
private ASTNodeValue |
dimensionless()
Creates a dimensionless unit definition object encapsulated in an
ASTNodeValue.
|
ASTNodeValue |
eq(ASTNode left,
ASTNode right)
Equal.
|
ASTNodeValue |
exp(ASTNode value) |
ASTNodeValue |
factorial(ASTNode value) |
ASTNodeValue |
floor(ASTNode value) |
ASTNodeValue |
frac(ASTNode numerator,
ASTNode denominator)
Fraction of two
ASTNode s |
ASTNodeValue |
frac(int numerator,
int denominator)
A fraction of two int values.
|
ASTNodeValue |
function(FunctionDefinition function,
java.util.List<ASTNode> args) |
ASTNodeValue |
function(java.lang.String functionDefinitionName,
java.util.List<ASTNode> args) |
ASTNodeValue |
geq(ASTNode left,
ASTNode right)
Greater equal.
|
ASTNodeValue |
getConstantAvogadro(java.lang.String name)
Creates an
ASTNodeValue that represent's Avogadro's number. |
ASTNodeValue |
getConstantE() |
ASTNodeValue |
getConstantFalse() |
ASTNodeValue |
getConstantPi() |
ASTNodeValue |
getConstantTrue() |
ASTNodeValue |
getNegativeInfinity() |
ASTNodeValue |
getPositiveInfinity() |
ASTNodeValue |
gt(ASTNode left,
ASTNode right)
Greater than.
|
private ASTNodeValue |
invalid()
Creates an invalid unit definition encapsulated in an ASTNodeValue.
|
ASTNodeValue |
lambda(java.util.List<ASTNode> values)
The body of a
FunctionDefinition . |
ASTNodeValue |
leq(ASTNode left,
ASTNode right)
Less equal.
|
ASTNodeValue |
ln(ASTNode value)
Natural logarithm.
|
ASTNodeValue |
log(ASTNode value)
Logarithm of the given value to base 10.
|
ASTNodeValue |
log(ASTNode number,
ASTNode base)
Logarithm of the given value to the given base.
|
ASTNodeValue |
lt(ASTNode left,
ASTNode right)
Less than.
|
ASTNodeValue |
minus(java.util.List<ASTNode> values)
Subtraction.
|
ASTNodeValue |
neq(ASTNode left,
ASTNode right)
Not equal.
|
ASTNodeValue |
not(ASTNode value) |
ASTNodeValue |
or(java.util.List<ASTNode> values) |
ASTNodeValue |
piecewise(java.util.List<ASTNode> values) |
ASTNodeValue |
plus(java.util.List<ASTNode> values) |
ASTNodeValue |
pow(ASTNode base,
ASTNode exponent) |
private ASTNodeValue |
pow(ASTNodeValue base,
ASTNodeValue exponent) |
ASTNodeValue |
root(ASTNode rootExponent,
ASTNode radiant) |
ASTNodeValue |
root(double rootExponent,
ASTNode radiant) |
private ASTNodeValue |
root(double rootExponent,
ASTNodeValue radiant) |
ASTNodeValue |
sec(ASTNode value) |
ASTNodeValue |
sech(ASTNode value) |
ASTNodeValue |
selector(java.util.List<ASTNode> nodes) |
private void |
setLevelAndVersion(UnitDefinition unit)
Ensures that level and version combination of a unit are the same then
these that are defined here.
|
ASTNodeValue |
sin(ASTNode value) |
ASTNodeValue |
sinh(ASTNode value) |
ASTNodeValue |
sqrt(ASTNode value)
Square root.
|
ASTNodeValue |
symbolTime(java.lang.String time)
The simulation time.
|
ASTNodeValue |
tan(ASTNode value) |
ASTNodeValue |
tanh(ASTNode value) |
ASTNodeValue |
times(java.util.List<ASTNode> values)
Product of all given
ASTNode s. |
ASTNodeValue |
uMinus(ASTNode value)
Unary minus, i.e., negation of the given
ASTNode . |
private void |
unifyUnits(ASTNodeValue left,
ASTNodeValue right)
This method tries to unify the units of two ASTNodeValues so that they
have the same units and their value thus is also adjusted.
|
ASTNodeValue |
unknownValue()
Dealing with a malformed
ASTNode . |
ASTNodeValue |
vector(java.util.List<ASTNode> nodes)
Dealing with a vector.
|
ASTNodeValue |
xor(java.util.List<ASTNode> values)
Exclusive or.
|
private final int level
private final int version
private Model model
private java.util.HashMap<java.lang.String,ASTNodeValue> namesToUnits
public UnitsCompiler()
public UnitsCompiler(int level, int version)
level
- version
- public UnitsCompiler(Model model)
model
- public ASTNodeValue abs(ASTNode value) throws SBMLException
ASTNodeCompiler
ASTNode
.abs
in interface ASTNodeCompiler
value
- Must be interpretable as a Number
.SBMLException
public ASTNodeValue and(java.util.List<ASTNode> values) throws SBMLException
and
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arccos(ASTNode value) throws SBMLException
arccos
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arccosh(ASTNode value) throws SBMLException
arccosh
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arccot(ASTNode value) throws SBMLException
arccot
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arccoth(ASTNode value) throws SBMLException
arccoth
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arccsc(ASTNode value) throws SBMLException
arccsc
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arccsch(ASTNode value) throws SBMLException
arccsch
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arcsec(ASTNode value) throws SBMLException
arcsec
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arcsech(ASTNode value) throws SBMLException
arcsech
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arcsin(ASTNode value) throws SBMLException
arcsin
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arcsinh(ASTNode value) throws SBMLException
arcsinh
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arctan(ASTNode value) throws SBMLException
arctan
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue arctanh(ASTNode value) throws SBMLException
arctanh
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue ceiling(ASTNode value) throws SBMLException
ceiling
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue compile(boolean b)
b
- public ASTNodeValue compile(Compartment c)
compile
in interface ASTNodeCompiler
public ASTNodeValue compile(double mantissa, int exponent, java.lang.String units)
ASTNodeCompiler
ASTNodeValue
that represents a real number in
scientific notation, i.e., mantissa * 10^exponent, and the given units.compile
in interface ASTNodeCompiler
mantissa
- The number to be multiplied with ten to the power of the given
exponent.exponent
- The exponent for the multiplier ten.units
- The identifier of the units object associated with the number
represented by this element. Can be null if no units have been
defined.public ASTNodeValue compile(double real, java.lang.String units)
compile
in interface ASTNodeCompiler
units
- A String representing the Unit
of the given number.
This can be the identifier of a UnitDefinition
in the
model or a literal in Unit.Kind
. Can be null if no units
have been defined.public ASTNodeValue compile(int integer, java.lang.String units)
compile
in interface ASTNodeCompiler
units
- A String representing the Unit
of the given number.
This can be the identifier of a UnitDefinition
in the
model or a literal in Unit.Kind
. Can be null if no units
have been defined.public ASTNodeValue compile(CallableSBase variable)
compile
in interface ASTNodeCompiler
public ASTNodeValue compile(java.lang.String name)
ASTNodeCompiler
Species
in the
system. In case of numerical computation, the ASTNodeCompiler
must create an ASTNodeValue
representing the current value of
this Species
.compile
in interface ASTNodeCompiler
public ASTNodeValue cos(ASTNode value) throws SBMLException
cos
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue cosh(ASTNode value) throws SBMLException
cosh
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue cot(ASTNode value) throws SBMLException
cot
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue coth(ASTNode value) throws SBMLException
coth
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue csc(ASTNode value) throws SBMLException
csc
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue csch(ASTNode value) throws SBMLException
csch
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue delay(java.lang.String delayName, ASTNode x, ASTNode delay, java.lang.String units) throws SBMLException
ASTNodeCompiler
delay
in interface ASTNodeCompiler
delayName
- the name of this delay function.delay
- an expression of a positive duration time (the amoutn of
delay)units
- the units for the delay.SBMLException
private ASTNodeValue dimensionless()
public ASTNodeValue eq(ASTNode left, ASTNode right) throws SBMLException
ASTNodeCompiler
eq
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue exp(ASTNode value) throws SBMLException
exp
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue factorial(ASTNode value) throws SBMLException
factorial
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue floor(ASTNode value) throws SBMLException
floor
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue frac(ASTNode numerator, ASTNode denominator) throws SBMLException
ASTNodeCompiler
ASTNode
sfrac
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue frac(int numerator, int denominator)
ASTNodeCompiler
frac
in interface ASTNodeCompiler
public ASTNodeValue function(FunctionDefinition function, java.util.List<ASTNode> args) throws SBMLException
function
in interface ASTNodeCompiler
args
- Values to be inserted into the parameter list of the
function.SBMLException
public ASTNodeValue function(java.lang.String functionDefinitionName, java.util.List<ASTNode> args) throws SBMLException
function
in interface ASTNodeCompiler
args
- Values to be inserted into the parameter list of the
function.SBMLException
public ASTNodeValue geq(ASTNode left, ASTNode right) throws SBMLException
ASTNodeCompiler
geq
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue getConstantAvogadro(java.lang.String name)
ASTNodeCompiler
ASTNodeValue
that represent's Avogadro's number.
Optionally, the compiler may associate the given name with this number.getConstantAvogadro
in interface ASTNodeCompiler
name
- An optional name for Avogadro's number.public ASTNodeValue getConstantE()
getConstantE
in interface ASTNodeCompiler
public ASTNodeValue getConstantFalse()
getConstantFalse
in interface ASTNodeCompiler
public ASTNodeValue getConstantPi()
getConstantPi
in interface ASTNodeCompiler
public ASTNodeValue getConstantTrue()
getConstantTrue
in interface ASTNodeCompiler
public ASTNodeValue getNegativeInfinity()
getNegativeInfinity
in interface ASTNodeCompiler
public ASTNodeValue getPositiveInfinity()
getPositiveInfinity
in interface ASTNodeCompiler
public ASTNodeValue gt(ASTNode left, ASTNode right) throws SBMLException
ASTNodeCompiler
gt
in interface ASTNodeCompiler
SBMLException
private ASTNodeValue invalid()
public ASTNodeValue lambda(java.util.List<ASTNode> values) throws SBMLException
ASTNodeCompiler
FunctionDefinition
.lambda
in interface ASTNodeCompiler
values
- Place holders for arguments.SBMLException
public ASTNodeValue leq(ASTNode left, ASTNode right) throws SBMLException
ASTNodeCompiler
leq
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue ln(ASTNode value) throws SBMLException
ASTNodeCompiler
ln
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue log(ASTNode value) throws SBMLException
ASTNodeCompiler
log
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue log(ASTNode number, ASTNode base) throws SBMLException
ASTNodeCompiler
log
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue lt(ASTNode left, ASTNode right) throws SBMLException
ASTNodeCompiler
lt
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue minus(java.util.List<ASTNode> values) throws SBMLException
ASTNodeCompiler
minus
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue neq(ASTNode left, ASTNode right) throws SBMLException
ASTNodeCompiler
neq
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue not(ASTNode value) throws SBMLException
not
in interface ASTNodeCompiler
value
- This value must be interpretable as a Boolean
.SBMLException
public ASTNodeValue or(java.util.List<ASTNode> values) throws SBMLException
or
in interface ASTNodeCompiler
values
- These values must be interpretable as a Boolean
.SBMLException
public ASTNodeValue piecewise(java.util.List<ASTNode> values) throws SBMLException
piecewise
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue plus(java.util.List<ASTNode> values) throws SBMLException
plus
in interface ASTNodeCompiler
SBMLException
private void unifyUnits(ASTNodeValue left, ASTNodeValue right) throws SBMLException
left
- right
- SBMLException
public ASTNodeValue pow(ASTNode base, ASTNode exponent) throws SBMLException
pow
in interface ASTNodeCompiler
SBMLException
private ASTNodeValue pow(ASTNodeValue base, ASTNodeValue exponent) throws SBMLException
base
- exponent
- SBMLException
private void checkForDimensionlessOrInvalidUnits(UnitDefinition units)
IllegalArgumentException
if the given units do not
represent a dimensionless or invalid unit.units
- public ASTNodeValue root(ASTNode rootExponent, ASTNode radiant) throws SBMLException
root
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue root(double rootExponent, ASTNode radiant) throws SBMLException
root
in interface ASTNodeCompiler
SBMLException
private ASTNodeValue root(double rootExponent, ASTNodeValue radiant) throws SBMLException
rootExponent
- radiant
- SBMLException
public ASTNodeValue sec(ASTNode value) throws SBMLException
sec
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue sech(ASTNode value) throws SBMLException
sech
in interface ASTNodeCompiler
SBMLException
private void setLevelAndVersion(UnitDefinition unit)
unit
- public ASTNodeValue sin(ASTNode value) throws SBMLException
sin
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue sinh(ASTNode value) throws SBMLException
sinh
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue sqrt(ASTNode value) throws SBMLException
ASTNodeCompiler
sqrt
in interface ASTNodeCompiler
value
- This value must be interpretable as a Number
.SBMLException
public ASTNodeValue symbolTime(java.lang.String time)
ASTNodeCompiler
symbolTime
in interface ASTNodeCompiler
time
- The name of the time symbol.ASTNodeValue
that represents the current time.public ASTNodeValue tan(ASTNode value) throws SBMLException
tan
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue tanh(ASTNode value) throws SBMLException
tanh
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue times(java.util.List<ASTNode> values) throws SBMLException
ASTNodeCompiler
ASTNode
s.times
in interface ASTNodeCompiler
values
- These values must be interpretable to Number
.SBMLException
public ASTNodeValue uMinus(ASTNode value) throws SBMLException
ASTNodeCompiler
ASTNode
.uMinus
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue unknownValue()
ASTNodeCompiler
ASTNode
.unknownValue
in interface ASTNodeCompiler
public ASTNodeValue xor(java.util.List<ASTNode> values) throws SBMLException
ASTNodeCompiler
xor
in interface ASTNodeCompiler
values
- It must be possible to evaluate the given values to
Boolean
.SBMLException
public ASTNodeValue selector(java.util.List<ASTNode> nodes) throws SBMLException
selector
in interface ASTNodeCompiler
SBMLException
public ASTNodeValue vector(java.util.List<ASTNode> nodes) throws SBMLException
ASTNodeCompiler
vector
in interface ASTNodeCompiler
SBMLException