#ifndef FILE_SPECIALELEMENT #define FILE_SPECIALELEMENT /*********************************************************************/ /* File: specialelement.hpp */ /* Author: Joachim Schoeberl */ /* Date: 28. Mar. 2002 */ /*********************************************************************/ /* Something special ... Finite-Element + Integrator E.g., a Contact-Element */ class SpecialElement { public: SpecialElement () { ; } virtual ~SpecialElement() { ; } virtual void GetDofNrs (ARRAY & dnums) const = 0; virtual double Energy (const FlatVector & elx, LocalHeap & lh) const { return 0; } virtual double Energy (const FlatVector & elx, LocalHeap & lh) const { cerr << "SpecialElemnt::Energy (complex) called" << endl; return 0; } virtual void Apply (const FlatVector & elx, FlatVector & ely, LocalHeap & lh) const; virtual void Apply (const FlatVector & elx, FlatVector & ely, LocalHeap & lh) const { cerr << "SpecialElemnt::Apply (complex) called" << endl; } virtual void Assemble (FlatMatrix & elmat, LocalHeap & lh) const; virtual void Assemble (FlatMatrix & elmat, LocalHeap & lh) const { cerr << "SpecialElemnt::Assemble (complex) called" << endl; FlatMatrix relmat; Assemble (relmat, lh); elmat.AssignMemory (relmat.Height(), relmat.Width(), lh); elmat = relmat; } }; #endif