CONSTANT: Difference between revisions
Created page with "The '''CONSTANT''' statement is used to declare constant-value 'variable' types that may be used as parameters for reusable parametric MODEL types. Real constants which d..." |
No edit summary |
||
| Line 17: | Line 17: | ||
Similarly, area <math>{}= \pi*r^2</math> should be written | Similarly, area <math>{}= \pi*r^2</math> should be written | ||
<source> | <source lang=a4c> | ||
area = 1{PI} * r^2; | area = 1{PI} * r^2; | ||
</source> | </source> | ||
Latest revision as of 20:05, 14 February 2012
The CONSTANT statement is used to declare constant-value 'variable' types that may be used as parameters for reusable parametric MODEL types.
Real constants which do not have a default value are usually needed only in libraries of reusable models, such as components.a4l, where the values depend on the end-user’s selection from alternatives in a database. The standard incantation to define a new real constant type is:
CONSTANT critical_pressure_constant REFINES real_constant DIMENSION M/L/T^2;
It is wasteful to define a CONSTANT type and a compiled object to represent a universal constant. For example, the thermodynamic gas constant, R = 8.314... {J/mole/K}, is frequently needed in modeling chemical systems. The SI value of R does not vary with its application. Neither does the value of <math>\pi</math>. Numeric constants of this sort are better represented as a numeric coefficient and an appropriately defined unit conversion, using the UNITS statement.
Consider the ideal gas law, PV = NRT and the ASCEND unit conversion {GAS_C} which appears in the library ascend4/models/measures.a4l. This equation should be written:
P * V = n * 1.0{GAS_C} * T;
Similarly, area <math>{}= \pi*r^2</math> should be written
area = 1{PI} * r^2;
The coefficient 1 of {GAS_C} and {PI} in these equations takes of the dimensionality of and is multiplied by the conversion factor implied by the UNITS definition for the part within the braces {}. If we check models/measures.a4l, we find the definition of PI is simply {3.14159...} and the definition of GAS_C is {8.314... J/mole/K} as we ought to expect.
For historical reasons there are a few universal constant definitions in models/atoms.a4l. New modelers should not use them; they are only provided to support outdated models that no one has yet taken the time to update.