Some types of reduced-order models define operators with fixed base names, but using the reduced-order model feature namespace. For example, reduced-order models that are capable of reconstructing the complete solution vector define <rom>.eval(<expr>) which evaluates the expression
<expr> using the reconstructed solution. Note that the expression
<expr> is interpreted in the context of the unreduced model. When used in a domain evaluation, expression values are computed at corresponding locations in the unreduced model (whose mesh is stored with the reduced-order model). In these respects,
<rom>.eval(<expr>) operates in the same way as the
withsol operator used for retrieving expression values from a specified solution.
The eval operator defined by a reduced-order model using a stateful interface supports a complete Jacobian with respect to the reduced-order model states. This means, in practice, that it can be used for creating bi-directional couplings between a reduced-order model and the main calling model (or another reduced-order model). Not only can the
eval operator be used in other equations. It is also possible to use
test(<rom>.eval(<expr>)) to effectively modify the reduced-order equations defined by the reduced-order model.
Reduced-order models using a stateful interface define the operator <rom>.state(<index>) which provide direct access to the states declared by the reduced-order model and solved by the main solver. In situations when the states have well-defined physical meaning this can be used for example for adding constraints or loads directly to the states.