From 42b68c5932452fb066dea5e159ca5b6f696c83d8 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Mon, 10 Feb 2014 17:56:33 +0000
Subject: [PATCH] Allow strainToStress to depend on the global position

[[Imported from SVN: r12871]]
---
 .../assemblers/localassemblers/strainproductassembler.hh  | 8 +++++---
 .../localassemblers/stvenantkirchhoffassembler.hh         | 5 +++--
 .../assemblers/localassemblers/viscosityassembler.hh      | 5 +++--
 3 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/dune/fufem/assemblers/localassemblers/strainproductassembler.hh b/dune/fufem/assemblers/localassemblers/strainproductassembler.hh
index 968f7987..3ff35396 100644
--- a/dune/fufem/assemblers/localassemblers/strainproductassembler.hh
+++ b/dune/fufem/assemblers/localassemblers/strainproductassembler.hh
@@ -108,7 +108,7 @@ class StrainProductAssembler
                 for (int rcomp=0; rcomp<dim; rcomp++) {
 
                     // Compute stress
-                    SymmetricTensor<dim> stress = strainToStress(strain[row][rcomp]);
+                    SymmetricTensor<dim> stress = strainToStress(strain[row][rcomp], element, quadPos);
 
                     for (int col=0; col<=row; col++) {
                         for (int ccomp=0; ccomp<dim; ccomp++) {
@@ -137,8 +137,10 @@ class StrainProductAssembler
 
     }
 
-  SymmetricTensor<dim> strainToStress(const SymmetricTensor<dim>& strain) const {
-    return static_cast<const A*>(this)->strainToStress(strain);
+  SymmetricTensor<dim> strainToStress(const SymmetricTensor<dim>& strain,
+                                      const Element& element,
+                                      const Dune::FieldVector<ctype, dim>& position) const {
+    return static_cast<const A*>(this)->strainToStress(strain, element, position);
   }
 };
 
diff --git a/dune/fufem/assemblers/localassemblers/stvenantkirchhoffassembler.hh b/dune/fufem/assemblers/localassemblers/stvenantkirchhoffassembler.hh
index 6aa432f7..4b845d3b 100644
--- a/dune/fufem/assemblers/localassemblers/stvenantkirchhoffassembler.hh
+++ b/dune/fufem/assemblers/localassemblers/stvenantkirchhoffassembler.hh
@@ -35,8 +35,9 @@ class StVenantKirchhoffAssembler
         twoMu_(E / (1+nu) )
     {}
 
-    SymmetricTensor<dim> strainToStress(const SymmetricTensor<dim>& strain) const {
-
+    SymmetricTensor<dim> strainToStress(const SymmetricTensor<dim>& strain,
+                                        const Element&,
+                                        const Dune::FieldVector<ctype, dim>&) const {
         SymmetricTensor<dim> stress = strain;
         stress *= twoMu_;
         stress.addToDiag(lambda_ * strain.trace());
diff --git a/dune/fufem/assemblers/localassemblers/viscosityassembler.hh b/dune/fufem/assemblers/localassemblers/viscosityassembler.hh
index cd51c9e5..dec6bc6e 100644
--- a/dune/fufem/assemblers/localassemblers/viscosityassembler.hh
+++ b/dune/fufem/assemblers/localassemblers/viscosityassembler.hh
@@ -30,8 +30,9 @@ class ViscosityAssembler
         muShear_(muShear), muBulk_(muBulk)
     {}
 
-    SymmetricTensor<dim> strainToStress(const SymmetricTensor<dim>& strain) const {
-
+    SymmetricTensor<dim> strainToStress(const SymmetricTensor<dim>& strain,
+                                        const Element&,
+                                        const Dune::FieldVector<ctype, dim>&) const {
             SymmetricTensor<dim> stress = strain;
             stress *= 2*muShear_;
             stress.addToDiag((muBulk_-(2.0/3.0)*muShear_) * strain.trace());
-- 
GitLab