OOF2: The Manual
Name
SmallSystem —
A small part of the system of matrices constructed by Properties
Synopses
C++ Synopsis
#include "engine/smallsystem.h"
class SmallSystem {double& stiffness_matrix_element(const FieldIndex& i,
const Field* field,
const FieldIndex& j,
const ElementFuncNodeIterator& node);double stiffness_matrix_element(const FieldIndex& i,
const Field* field,
const FieldIndex& j,
const ElementFuncNodeIterator& node) const;double& stiffness_matrix_element(const FieldIndex& i,
const Field* field,
const ElementFuncNodeIterator& node);double stiffness_matrix_element(const FieldIndex& i,
const Field* field,
const ElementFuncNodeIterator& node) const;double& force_deriv_matrix_element(const FieldIndex& i,
const Field* field,
const FieldIndex& j,
const ElementFuncNodeIterator& node);double force_deriv_matrix_element(const FieldIndex& i,
const Field* field,
const FieldIndex& j,
const ElementFuncNodeIterator& node) const;double& force_deriv_matrix_element(const FieldIndex& i,
const Field* field,
const ElementFuncNodeIterator& node);double force_deriv_matrix_element(const FieldIndex& i,
const Field* field,
const ElementFuncNodeIterator& node) const;double& damping_matrix_element(const FieldIndex& i,
const Field* field,
const FieldIndex& j,
const ElementFuncNodeIterator& node);double damping_matrix_element(const FieldIndex& i,
const Field* field,
const FieldIndex& j,
const ElementFuncNodeIterator& node) const;double& damping_matrix_element(const FieldIndex& i,
const Field* field,
const ElementFuncNodeIterator& node);double damping_matrix_element(const FieldIndex& i,
const Field* field,
const ElementFuncNodeIterator& node) const;double& flux_vector_element(int index);double flux_vector_element(int index) const;double& force_vector_element(int index);double force_vector_element(int index) const;double& offset_vector_element(int index);double offset_vector_element(int index) const;
}
Description
A SmallSystem object represents a small
part of the linearized system that is constructed by the
material Properties when the finite element matrices are
built. The job of the SmallSystem is
to convert the local Field, Flux, and Equation indices
into global indices, which are positions in the matrices and
vectors containing all of the degrees of freedom of the full
mesh. Generally, SmallSystems appear
in expressions like
smallsystem(i, field, j, node) += value;
where the function call on the left hand side of the assignment statement returns a reference to the location where the right hand side should be stored.
After the SmallSystem's values are set
by the Properties, the
Methods
stiffness_matrix_element
stiffness_matrix_element is used to
make a FluxProperty's
contribution to a finite element stiffness matrix. It is
called by the flux_matrix
method of the Property. See flux_matrix
for the full explanation and an example.
There are four variations of
stiffness_matrix_element, for const
and non-const stiffness matrices, and scalar and non-scalar
Fields:
double& stiffness_matrix_element( const FieldIndex& fluxcomp, const Field* field, const FieldIndex& fieldcomp, const ElementFuncNodeIterator& node); double stiffness_matrix_element( const FieldIndex& fluxcomp, const Field* field, const FieldIndex& fieldcomp, const ElementFuncNodeIterator& node) const; double& stiffness_matrix_element( const FieldIndex& fluxcomp, const Field* field, const ElementFuncNodeIterator& node); double stiffness_matrix_element( const FieldIndex& fluxcomp, const Field* field, const ElementFuncNodeIterator& node) const;
The arguments are:
const FieldIndex& fluxcomp-
The component of the
Fluxbeing computed, obtained by iterating over the components influx_matrix. constField* fieldconst FieldIndex& fieldcomp-
The component of the
Field. This argument should be omitted if theFieldis aScalarField. - const ElementFuncNodeIterator& node
-
A pointer to the current
Nodeof theElementbeing examined.
force_deriv_matrix_element
force_deriv_matrix_element is used
to make an nonlinear EqnProperty's
contribution to force derivatives. It is called by force_deriv_matrix
of the Property. See force_deriv_matrix
for the details and an example.
There are four variations of
force_deriv_matrix_element>, for const
and non-const stiffness matrices, and scalar and non-scalar
Fields:
double& force_deriv_matrix_element( const FieldIndex& eqncomp, const Field* field, const FieldIndex& fieldcomp, const ElementFuncNodeIterator& node); double force_deriv_matrix_element( const FieldIndex& eqncomp, const Field* field, const FieldIndex& fieldcomp, const ElementFuncNodeIterator& node) const; double& force_deriv_matrix_element( const FieldIndex& eqncomp, const Field* field, const ElementFuncNodeIterator& node); double force_deriv_matrix_element( const FieldIndex& eqncomp, const Field* field, const ElementFuncNodeIterator& node) const;
The arguments are:
const FieldIndex& eqncomp-
The component of the
Equationbeing computed, obtained by iterating over the components inforce_deriv_matrix. constField* fieldconst FieldIndex& fieldcomp-
The component of the
Field. This argument should be omitted if theFieldis aScalarField. - const ElementFuncNodeIterator& node
-
A pointer to the current
Nodeof theElementbeing examined.
damping_matrix_element
damping_matrix_element is called by
both EqnPropertys
and FluxPropertys.
It's used by an EqnProperty's
time_deriv_matrices
method to make contributions to a the matrix that multiplies
the time derivatives of the Fields (Eqn. (205)) in a force balance equation.
See time_deriv_matrices
for more details and an example.
damping_matrix_element is also used
by a FluxProperty's
flux_matrix method
to make contributions to the matrix
that multiplies time derivatives of the
fields in Eqn. (196). See flux_matrix
for more details and an example.
There are four variations of
damping_matrix_element, for const
and non-const matrices, and scalar and non-scalar Fields:
double& damping_matrix_element( const FieldIndex& eqncomp, const Field* field, const FieldIndex& fieldcomp, const ElementFuncNodeIterator& node); double damping_matrix_element( const FieldIndex& eqncomp, const Field* field, const FieldIndex& fieldcomp, const ElementFuncNodeIterator& node) const; double& damping_matrix_element( const FieldIndex& eqncomp, const Field* field, const ElementFuncNodeIterator& node); double damping_matrix_element( const FieldIndex& eqncomp, const Field* field, const ElementFuncNodeIterator& node) const;
The arguments are:
const FieldIndex& eqncomp-
The component of the
Equationbeing computed, obtained by iterating over the components intime_deriv_matrices. constField* fieldconst FieldIndex& fieldcomp-
The component of the
Field. This argument should be omitted if theFieldis aScalarField. - const ElementFuncNodeIterator& node
-
A pointer to the current
Nodeof theElementbeing examined.
mass_matrix_element
mass_matrix_element is called by
an EqnProperty
to make contributions to a mass matrix, from its time_deriv_matrices
method. The mass matrix multiplies the time derivatives
of the Fields in a force balance equation. See time_deriv_matrices
for more details and an example.
There are four variations of
mass_matrix_element, for const
and non-const stiffness matrices, and scalar and non-scalar
Fields:
double& mass_matrix_element( const FieldIndex& eqncomp, const Field* field, const FieldIndex& fieldcomp, const ElementFuncNodeIterator& node); double mass_matrix_element( const FieldIndex& eqncomp, const Field* field, const FieldIndex& fieldcomp, const ElementFuncNodeIterator& node) const; double& mass_matrix_element( const FieldIndex& eqncomp, const Field* field, const ElementFuncNodeIterator& node); double mass_matrix_element( const FieldIndex& eqncomp, const Field* field, const ElementFuncNodeIterator& node) const;
The arguments are:
const FieldIndex& eqncomp-
The component of the
Equationbeing computed, obtained by iterating over the components intime_deriv_matrices. constField* fieldconst FieldIndex& fieldcomp-
The component of the
Field. This argument should be omitted if theFieldis aScalarField. - const ElementFuncNodeIterator& node
-
A pointer to the current
Nodeof theElementbeing examined.



