diff --git a/dune/gfe/nonplanarcosseratshellenergy.hh b/dune/gfe/nonplanarcosseratshellenergy.hh index 8ddb04ac58c861d508e3a1cbd49a890595513402..8c7317c0853c26b1edba977e5c621a5be9071e9e 100644 --- a/dune/gfe/nonplanarcosseratshellenergy.hh +++ b/dune/gfe/nonplanarcosseratshellenergy.hh @@ -208,8 +208,7 @@ public: } /** \brief Assemble the energy for a single element */ - RT energy (const Entity& e, - const LocalFiniteElement& localFiniteElement, + RT energy (const typename Basis::LocalView& localView, const std::vector<TargetSpace>& localSolution) const; RT W_m(const Dune::FieldMatrix<field_type,3,3>& S) const @@ -262,15 +261,16 @@ public: template <class Basis, int dim, class field_type> typename NonplanarCosseratShellEnergy<Basis,dim,field_type>::RT NonplanarCosseratShellEnergy<Basis,dim,field_type>:: -energy(const Entity& element, - const typename Basis::LocalView::Tree::FiniteElement& localFiniteElement, +energy(const typename Basis::LocalView& localView, const std::vector<RigidBodyMotion<field_type,dim> >& localSolution) const { - assert(element.type() == localFiniteElement.type()); - // The element geometry + auto element = localView.element(); auto geometry = element.geometry(); + // The set of shape functions on this element + const auto& localFiniteElement = localView.tree().finiteElement(); + //////////////////////////////////////////////////////////////////////////////////// // Construct a linear (i.e., non-constant!) normal field on the surface ////////////////////////////////////////////////////////////////////////////////////