From fb75b6dedc7bb020c861624c4a8ea3cd8eb0fe95 Mon Sep 17 00:00:00 2001 From: Jonathan Youett <youett@mi.fu-berlin.de> Date: Tue, 3 Jul 2012 12:22:19 +0000 Subject: [PATCH] store a pointer to the global basis instead of a reference [[Imported from SVN: r11185]] --- .../materials/geomexactstvenantkirchhoffmaterial.hh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dune/elasticity/materials/geomexactstvenantkirchhoffmaterial.hh b/dune/elasticity/materials/geomexactstvenantkirchhoffmaterial.hh index d942286..82a00de 100644 --- a/dune/elasticity/materials/geomexactstvenantkirchhoffmaterial.hh +++ b/dune/elasticity/materials/geomexactstvenantkirchhoffmaterial.hh @@ -49,7 +49,7 @@ public: nu_(nu) {} - void setup(ctype E, ctype nu) + void setup(ctype E, ctype nu, const Basis& basis) { E_ = E; nu_ = nu; @@ -60,7 +60,8 @@ public: localLinearization_ = Dune::shared_ptr<LocalLinearization>(new LocalLinearization(E,nu)); localHessian_ = Dune::shared_ptr<LocalHessian>(new LocalHessian(E,nu)); - + + basis_ = &basis; } //! Evaluate the strain energy @@ -68,7 +69,7 @@ public: ctype energy(const CoeffType& coeff) { // make grid function - BasisGridFunction<Basis,CoeffType> configuration(basis_,coeff); + BasisGridFunction<Basis,CoeffType> configuration(*basis_,coeff); ctype energy=0; const GridType& grid = configuration.grid(); @@ -79,7 +80,7 @@ public: for (;eIt != eItEnd; ++eIt) { // get quadrature rule - QuadratureRuleKey quad1(basis_.getLocalFiniteElement(*eIt)); + QuadratureRuleKey quad1(basis_->getLocalFiniteElement(*eIt)); QuadratureRuleKey quadKey = quad1.derivative().square().square(); const Dune::template QuadratureRule<ctype, dim>& quad = QuadratureRuleCache<ctype, dim>::rule(quadKey); @@ -124,7 +125,7 @@ public: LocalHessian& secondDerivative() {return *localHessian_;} //! Return the global basis - const Basis& basis() {return basis_;} + const Basis& basis() {return *basis_;} private: //! First derivative of the strain energy @@ -134,7 +135,7 @@ private: Dune::shared_ptr<LocalHessian> localHessian_; //! Global basis used for the spatial discretization - const Basis& basis_; + const Basis* basis_; //! Elasticity modulus ctype E_; -- GitLab