Valid versions:
The repo is currently down. See my user page for details and access to the code.
Subpage contents (alphabetical)
> Efficiency
> Functions
> Installation
> Programming
> Uninstallation

1 What is it?

equationReader is an extension to OpenFOAM that allows you to work with user-entered equations. For example:

```U.x        "sin(pi_ * t / 4)";
U.y        "rho * nut / L";
U.z        0;
nu         nu [0 2 -1 0 0 0 0] "1.2 + 3 * alpha^sin(pi_/6)";
aScalar    "nu / max(5, alpha)";
alpha      1.3;

```

2 Features

• Works with most fields - Now works with single elements, fields, DimensionedFields and GeometricFields;
• Works with most Types - Now works with scalars, vectors, and all kinds of tensors;
• Flexible data sources - In addition to these types, equations can also lookup values from dictionaries, and you can create an activeVariable that derives its value on-the-fly.
• Order of operations - it is fully compliant with the conventional order of operations to an arbitrary parenthesis depth;
• Equation dependency tracking - equations can depend on one another to an arbitrary hierarchy depth;
• Circular-reference detection - it will halt computations when a circular reference is detected;
• On-the-fly equation mapping - it will automatically perform substitution on other equations when they are needed, even if they aren't specifically called for in the solver; and
• Dimension-checking - fully utilizes OpenFOAM's built-in dimension-checking, or you can force the outcome to a specific dimension-set to quickly disable it (if you are lazy).

Limitations: Although equationReader works with all Types, at its core, it is just a scalar calculator with dimensions. Therefore, you can't use vector operators, let alone tensor operators. Each equation must be expressed in scalar components.

3 Why would you need this?

Let the user define their own equations - this makes your application more user-friendly, and more flexible. But don't reinvent the wheel - if you are only working with boundary conditions or initial conditions, Bernhard's swak4Foam would probably be more suitable.

5 Update info

• 2010-07-21: Initial release
• 2010-08-05: Bug-fix - differentiated versions for OpenFOAM-1.5.x/1.5-dev and OpenFOAM-1.6.x+
• Introducing IOEquationReader - EquationReader is now an IOobject<tt>. This enables automatic output
• Added support for <tt>scalarList data sources - including scalarField<tt>, <tt>volScalarField, etc.
• Removed the need for pointers for data sources
• Cleaned up available functions
• 2010-10-16: Bug fixes and added full support for fields
• Efficiency improvement - pointer functions have been implemented to increase computation speed by an order of magnitude (at least).
• Improved dimension-checking on all functions.
• Added a fieldEvaluate function for active equations whose output is to a scalar field.
• Bug fix to get it working with 1.6-ext and higher.
• Now a stand-alone library.
• Now works with vectors and tensors:
• scalar;
• vector;
• tensor;
• diagTensor;
• symmTensor; and
• sphericalTensor.
• Now works with GeometricFields
• Dimension checking is now performed separately, improving efficiency of field and GeometricField calculations.
• Interface changes:
• Add data functions reorganized / changed.
• Evaluate functions reorganized / changed.
• Update functions removed.
• 2011-09-25: Version 0.5.0
• Improved treatment of fields - now approximately 10x faster.
• Introduced version numbers to keep track of changes.

--Marupio 22:15, 14 September 2011 (CEST)