#include <vectorizable.hh>
Public Member Functions | |
virtual void | data (concepts::Cloneable *)=0 |
Sets the data to be shared. | |
virtual concepts::Cloneable * | data () const =0 |
Returns the data to be shared. | |
Interface to make bilinear forms vectorizable. This interface adds methods to a class to get and put additional data (which is cloneable).
Bilinear forms which act as components of a vectorial::BilinearForm often share data amongst each other (e.g. Jacobians at the quadrature points—they only need to be computed once and can be used for all components of the vector valued bilinear form). When doing a deep copy of such a vector valued bilinear form, the components have to be copied and the shared data too. The most sensible place to keep the data is in vectorial::BilinearForm as this is the container for the scalar bilinear forms. After cloning of the scalar components of the bilnear form, the data has to be set in a second step (after having cloned it).
For vectorial::BilinearForm to be able to act on the bilinear forms that need it, they have to be derived from this class. As the data itself has to be cloneable, the deep copy of the vectorial::BilinearForm can be realised.
Definition at line 39 of file vectorizable.hh.
|
inlinevirtual |
Definition at line 41 of file vectorizable.hh.
|
pure virtual |
Returns the data to be shared.
Implemented in hp2D::DivDiv< Weight >, hp2D::RotRot, hp3D::DivDiv< Weight >, and hp3D::RotRot.
|
pure virtual |
Sets the data to be shared.
Implemented in hp2D::DivDiv< Weight >, hp2D::RotRot, hp3D::DivDiv< Weight >, and hp3D::RotRot.