Lesson 3: Mathematical Expressions

One of the definite advantages of a modeling language like AnyScript is that mathematical expressions become a natural element in model construction. By means of mathematical expressions in models you can make the model parametric, enable scaling in various ways, and create dependencies between elements.

In AnyScript you can in principle write a mathematical expression involving variables and references to other objects and to time anywhere in an object definition where you would otherwise use a number. Furthermore, AnyScript handles scalar numbers, vectors, matrices, and in fact tensors of arbitrary dimensions.

Unlike most programming languages, definition sequence does not have any significance in an AnyScript model. This means that variables can refer to other variables that are created further down in the model like this:

AnyVar b = a;
AnyVar a = 10;

Instead of the sequence of definition, AnyScript variables depend on the sequence of evaluation. Some expressions are can be evaluated when the model is loaded, while others have to wait for certain operations to complete. For instance, a muscle force is not known until an InverseDynamicAnalysis operation is performed. The systems keeps track of when everything is evaluated and will complain if you try to use a variable prematurely.

For instance, kinematic analysis is the first step of an inverse dynamic analysis, so you can make an external force or a muscle strength depend on a position. This is because forces and muscles strengths are not used until after the kinematic analysis when the positions have been evaluated. However, you cannot make a position depend on a muscle force because muscle forces are always computed after positions.

Much of the capability of the mathematical expressions is demonstrated in the example Demo.MathExpressions.any.