# OOF2: The Manual

## Name

Equation — Base class for Equations

## Synopses

(Only those methods useful when extending **OOF2** are
listed here.)

### C++ Synopsis

#include "engine/equation.h"class Equation {`const std::string& name() const;`

`int dim() const;`

`int ndof() const;`

`IteratorP iterator() const;`

`bool is_active(const FEMesh* mesh) const;`

}

## Description

`Equation`

is the abstract base class for
all `Equation`

objects. Like `Fields`

and
`Fluxes`

,
`Equation`

instances are global objects
— there is one instance of each particular
`Equation`

that is shared among all
meshes. For example, there is only one
`Force_Balance`

`Equation`

, although many different
meshes may be solving it.

Creating an `Equation`

object does
*not* mean that it will be solved on a
mesh. Equations are only solved if they have been explicitly
activated
and their `Fluxes`

depend upon active `Fields`

on
the mesh. Whether or not a `Flux`

depends on a `Field`

is a
function of the meshes material `Properties`

.

The entire API for `Equations`

is defined
in the base class. The derived classes redefine base class
methods but do not add any new ones of their own, except for
their constructors.

Most **OOF2** extensions will probably never need to use an
`Equation`

object explicitly, aside from
possibly creating a new `Equation`

or
checking to see if an `Equation`

is active.

## Methods

`const std::string& name() const`

`name`

returns the name assigned to
the `Equation`

when it was created.
See Section 8.1.

###
`int dim() const`

, `int ndof() const`

`dim`

and
`ndof`

are equivalent. They return
the number of components of in the
`Equation`

. For example, the heat
equation has one component, while the in-plane force balance
equation has two.

`IteratorP iterator() const`

`iterator`

returns an `IteratorP`

object which can be used to loop over the components of the
`Equation`

.

`bool is_active(const FEMesh *mesh) const`

`is_active`

indicates whether or not
the `Equation`

is being
solved on the given `FEMesh`

.