From cfba6d50596d57fdd43ba990d2e92183ceeadf03 Mon Sep 17 00:00:00 2001
From: Van Dung Nguyen <vandung.nguyen@ulg.ac.be>
Date: Wed, 27 Jun 2012 15:27:44 +0000
Subject: [PATCH] add tensor63 and tensor53

---
 Solver/CMakeLists.txt |  2 ++
 Solver/STensor53.cpp  | 26 ++++++++++++++++++++
 Solver/STensor53.h    | 52 ++++++++++++++++++++++++++++++++++++++++
 Solver/STensor63.cpp  | 26 ++++++++++++++++++++
 Solver/STensor63.h    | 55 +++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 161 insertions(+)
 create mode 100644 Solver/STensor53.cpp
 create mode 100644 Solver/STensor53.h
 create mode 100644 Solver/STensor63.cpp
 create mode 100644 Solver/STensor63.h

diff --git a/Solver/CMakeLists.txt b/Solver/CMakeLists.txt
index 68984e899e..99d5a8f867 100644
--- a/Solver/CMakeLists.txt
+++ b/Solver/CMakeLists.txt
@@ -19,6 +19,8 @@ functionSpace.cpp
   sparsityPattern.cpp
   STensor43.cpp
   STensor33.cpp
+  STensor53.cpp
+  STensor63.cpp
 terms.cpp
 )
 
diff --git a/Solver/STensor53.cpp b/Solver/STensor53.cpp
new file mode 100644
index 0000000000..57b5a8a6cc
--- /dev/null
+++ b/Solver/STensor53.cpp
@@ -0,0 +1,26 @@
+// Gmsh - Copyright (C) 1997-2012 C. Geuzaine, J.-F. Remacle
+//
+// See the LICENSE.txt file for license information. Please report all
+// bugs and problems to <gmsh@geuz.org>.
+
+#include "STensor53.h"
+
+STensor53::STensor53(const double val){
+  for (int i=0; i<3; i++)
+    for (int j=0; j<3; j++)
+      for (int k=0; k<3; k++)
+        for (int l=0; l<3; l++)
+          for (int m=0; m<3; m++)
+            _val[i][j][k][l][m] = val;
+};
+
+
+STensor53::STensor53(const STensor53& src){
+  for (int i=0; i<3; i++)
+    for (int j=0; j<3; j++)
+      for (int k=0; k<3; k++)
+        for (int l=0; l<3; l++)
+          for (int m=0; m<3; m++)
+            _val[i][j][k][l][m] = src._val[i][j][k][l][m];
+};
+
diff --git a/Solver/STensor53.h b/Solver/STensor53.h
new file mode 100644
index 0000000000..9e6d50c09b
--- /dev/null
+++ b/Solver/STensor53.h
@@ -0,0 +1,52 @@
+// Gmsh - Copyright (C) 1997-2012 C. Geuzaine, J.-F. Remacle
+//
+// See the LICENSE.txt file for license information. Please report all
+// bugs and problems to <gmsh@geuz.org>.
+#ifndef STENSOR53_H_
+#define STENSOR53_H_
+
+class STensor53 {
+  protected:
+    double _val[3][3][3][3][3];
+
+  public:
+    STensor53(const double val = 0);
+    STensor53(const STensor53& src);
+    inline double &operator()(int i, int j,int k, int l, int m){
+      return _val[i][j][k][l][m];
+    };
+    inline double operator()(int i, int j, int k, int l, int m) const{
+      return _val[i][j][k][l][m];
+    };
+    STensor53& operator += (const STensor53 &other){
+      for (int i=0; i<3; i++)
+        for (int j=0; j<3; j++)
+          for (int k=0; k<3; k++)
+            for (int l=0; l<3; l++)
+              for (int m=0; m<3; m++)
+                _val[i][j][k][l][m] += other._val[i][j][k][l][m];
+      return *this;
+    };
+    STensor53& operator -= (const STensor53 &other){
+      for (int i=0; i<3; i++)
+        for (int j=0; j<3; j++)
+          for (int k=0; k<3; k++)
+            for (int l=0; l<3; l++)
+              for (int m=0; m<3; m++)
+                _val[i][j][k][l][m] -= other._val[i][j][k][l][m];
+      return *this;
+    };
+    STensor53& operator *= (const double &other){
+      for (int i=0; i<3; i++)
+        for (int j=0; j<3; j++)
+          for (int k=0; k<3; k++)
+            for (int l=0; l<3; l++)
+              for (int m=0; m<3; m++)
+                _val[i][j][k][l][m] *= other;
+      return *this;
+    };
+};
+
+
+
+#endif // STENSOR53_H_
diff --git a/Solver/STensor63.cpp b/Solver/STensor63.cpp
new file mode 100644
index 0000000000..c9b1a14da6
--- /dev/null
+++ b/Solver/STensor63.cpp
@@ -0,0 +1,26 @@
+// Gmsh - Copyright (C) 1997-2012 C. Geuzaine, J.-F. Remacle
+//
+// See the LICENSE.txt file for license information. Please report all
+// bugs and problems to <gmsh@geuz.org>.
+
+#include "STensor63.h"
+
+STensor63::STensor63(const double val){
+  for (int i=0; i<3; i++)
+    for (int j=0; j<3; j++)
+      for (int k=0; k<3; k++)
+        for (int l=0; l<3; l++)
+          for (int m=0; m<3; m++)
+            for (int n=0; n<3; n++)
+              _val[i][j][k][l][m][n] = val;
+};
+
+STensor63::STensor63(const STensor63& src){
+  for (int i=0; i<3; i++)
+    for (int j=0; j<3; j++)
+      for (int k=0; k<3; k++)
+        for (int l=0; l<3; l++)
+          for (int m=0; m<3; m++)
+            for (int n=0; n<3; n++)
+              _val[i][j][k][l][m][n] = src._val[i][j][k][l][m][n];
+};
diff --git a/Solver/STensor63.h b/Solver/STensor63.h
new file mode 100644
index 0000000000..e64c838bce
--- /dev/null
+++ b/Solver/STensor63.h
@@ -0,0 +1,55 @@
+// Gmsh - Copyright (C) 1997-2012 C. Geuzaine, J.-F. Remacle
+//
+// See the LICENSE.txt file for license information. Please report all
+// bugs and problems to <gmsh@geuz.org>.
+#ifndef STENSOR63_H_
+#define STENSOR63_H_
+
+class STensor63{
+  protected:
+    double _val[3][3][3][3][3][3];
+
+  public:
+    STensor63(const double val = 0);
+    STensor63(const STensor63& src);
+    inline double &operator()(int i, int j,int k, int l, int m, int n){
+      return _val[i][j][k][l][m][n];
+    };
+    inline double operator()(int i, int j, int k, int l, int m, int n) const{
+      return _val[i][j][k][l][m][n];
+    };
+    STensor63& operator += (const STensor63 &other){
+      for (int i=0; i<3; i++)
+        for (int j=0; j<3; j++)
+          for (int k=0; k<3; k++)
+            for (int l=0; l<3; l++)
+              for (int m=0; m<3; m++)
+                for (int n=0; n<3; n++)
+                  _val[i][j][k][l][m][n] += other._val[i][j][k][l][m][n];
+      return *this;
+    };
+    STensor63& operator -= (const STensor63 &other){
+      for (int i=0; i<3; i++)
+        for (int j=0; j<3; j++)
+          for (int k=0; k<3; k++)
+            for (int l=0; l<3; l++)
+              for (int m=0; m<3; m++)
+                for (int n=0; n<3; n++)
+                  _val[i][j][k][l][m][n] -= other._val[i][j][k][l][m][n];
+      return *this;
+    };
+    STensor63& operator *= (const double &other){
+      for (int i=0; i<3; i++)
+        for (int j=0; j<3; j++)
+          for (int k=0; k<3; k++)
+            for (int l=0; l<3; l++)
+              for (int m=0; m<3; m++)
+                for (int n=0; n<3; n++)
+                _val[i][j][k][l][m][n] *= other;
+      return *this;
+    };
+};
+
+
+
+#endif // STENSOR63_H_
-- 
GitLab