From 283208779d4a0ec216ab1a21a5f1c10d300ef974 Mon Sep 17 00:00:00 2001
From: Van Dung Nguyen <vdg.nguyen@gmail.com>
Date: Thu, 20 Sep 2018 11:41:52 +0200
Subject: [PATCH] add new ipdata

---
 NonLinearSolver/materialLaw/STensorOperations.h | 9 +++++++++
 dG3D/benchmarks/nonLocalJ2/twoHole.py           | 1 +
 dG3D/src/dG3DIPVariable.cpp                     | 9 +++++++++
 3 files changed, 19 insertions(+)

diff --git a/NonLinearSolver/materialLaw/STensorOperations.h b/NonLinearSolver/materialLaw/STensorOperations.h
index a4002ddba..f91c90b91 100644
--- a/NonLinearSolver/materialLaw/STensorOperations.h
+++ b/NonLinearSolver/materialLaw/STensorOperations.h
@@ -386,6 +386,15 @@ inline double dot(const STensor3& a, const STensor3& b){
       }
     }
   };
+  inline void multSTensor3FirstTransposeAdd(const STensor3& a, const STensor3&b, STensor3& c){
+    for (int i=0; i<3; i++){
+      for (int j=0; j<3; j++){
+        for (int k=0; k<3; k++){
+          c(i,j) +=a(k,i)*b(k,j);
+        }
+      }
+    }
+  };
 
   inline void multSTensor3STensor43(const STensor3& a, const STensor43& b, STensor3& c){
     for (int i=0; i<3; i++){
diff --git a/dG3D/benchmarks/nonLocalJ2/twoHole.py b/dG3D/benchmarks/nonLocalJ2/twoHole.py
index 01d9fca0b..a748aca91 100644
--- a/dG3D/benchmarks/nonLocalJ2/twoHole.py
+++ b/dG3D/benchmarks/nonLocalJ2/twoHole.py
@@ -73,6 +73,7 @@ mysolver.displacementBC("Face",12,1,0.)
 mysolver.displacementBC("Face",13,1,1e-3)
 
 
+mysolver.internalPointBuildView("eq strain",IPField.GL_EQUIVALENT_STRAIN, 1, 1)
 mysolver.internalPointBuildView("svm",IPField.SVM, 1, 1)
 mysolver.internalPointBuildView("sig_xx",IPField.SIG_XX, 1, 1)
 mysolver.internalPointBuildView("sig_yy",IPField.SIG_YY, 1, 1)
diff --git a/dG3D/src/dG3DIPVariable.cpp b/dG3D/src/dG3DIPVariable.cpp
index 0700f1154..a37531078 100644
--- a/dG3D/src/dG3DIPVariable.cpp
+++ b/dG3D/src/dG3DIPVariable.cpp
@@ -481,6 +481,15 @@ double dG3DIPVariable::get(const int comp) const
     if (this->isDeleted()) return 1.;
     else return 0.;
   }
+  else if (comp == IPField::GL_EQUIVALENT_STRAIN){
+    static STensor3 E, devE;
+    static double trE;
+    STensorOperation::diag(E,-1.);
+    STensorOperation::multSTensor3FirstTransposeAdd(F,F,E);
+    E *= (0.5);
+    STensorOperation::decomposeDevTr(E,devE,trE);
+    return sqrt(2.*devE.dotprod()/3.);
+  }
   else if (comp == IPField::GL_XX){
     static STensor3 FTF;
     STensorOperation::multSTensor3FirstTranspose(F,F,FTF);
-- 
GitLab