OOF2: The Manual


CompoundField — A Field with both in- and out-of-plane parts.


Only those methods useful for extending OOF2 are listed here. Base class functions are described in the Field documentation.

C++ Synopsis

#include "engine/field.h"
class CompoundField: , public Field {
  Field* out_of_plane() const;
  bool in_plane(const FEMesh* mesh) const;
  bool in_plane(const CSubProblem* mesh) const;

Python Synopsis

from oof2.SWIG.engine.field import CompoundField
class CompoundField(Field):
  def out_of_plane(self)
  def in_plane(self, mesh)


Most Fields that the user encounters in OOF2 are instances of CompoundField subclasses. A CompoundField is a Field that has been augmented with its out-of-plane parts, which form a Field (but not a CompoundField) themselves. See Section 2.5.5 for the details. When a CompoundField is created, its out-of-plane part is created automatically. The name of the out-of-plane part is the same as the name of the CompoundField, but with _z appended.

The C++ class hierarchies for CompoundField subclasses are actually moderately complicated, and are simplified somewhat in the documentation. An alert reader will notice that the out-of-plane part of a ScalarField can't be another ScalarField, because ScalarField is derived from CompoundField, but the out-of-plane part isn't compounded. However, for purposes of writing OOF2 extensions, such complications are just distracting. Readers who are interested in the details can consult SRC/engine/field.h.


Field *out_of_plane() const

out_of_plane returns the Field that contains the out-of-plane part of a CompoundField.

bool in_plane(...) const

in_plane indicates whether or not the CompoundField is constrained to be in-plane. In C++, the argument can be a pointer to either an FEMesh or a CSubProblem. In Python, the argument must be an FEMesh.

[Note] Note

The out-of-plane Field object belonging to a CompoundField is always created when the CompoundField is created. Whether or not the CompoundField is in-plane is determined by whether or not values for its out-of-plane field are stored in a mesh and allowed to be non-zero.