[cig-commits] r4805 - in long/3D/Gale/trunk/src/StGermain: . Discretisation/Geometry/src

walter at geodynamics.org walter at geodynamics.org
Wed Oct 11 13:45:28 PDT 2006


Author: walter
Date: 2006-10-11 13:45:27 -0700 (Wed, 11 Oct 2006)
New Revision: 4805

Modified:
   long/3D/Gale/trunk/src/StGermain/
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/TensorMultMath.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/TensorMultMath.h
Log:
 r2862 at earth:  boo | 2006-10-11 13:42:22 -0700
  r2778 at earth (orig r3766):  KathleenHumble | 2006-08-17 19:47:01 -0700
  edited TensorMultMath.*
  altered:
  TensorArray_MultiplyBySymmetricTensor
  so that it doesn't convert the symmetric tensor into a TensorArray
  but does the calculation using the given symmetric tensor.
  
 



Property changes on: long/3D/Gale/trunk/src/StGermain
___________________________________________________________________
Name: svk:merge
   - 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2730
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3765
   + 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2862
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3766

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/TensorMultMath.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/TensorMultMath.c	2006-10-11 20:42:03 UTC (rev 4804)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/TensorMultMath.c	2006-10-11 20:45:27 UTC (rev 4805)
@@ -252,10 +252,64 @@
 void TensorArray_MultiplyBySymmetricTensor(	TensorArray tensorArray, SymmetricTensor symmetricTensor,
 											Dimension_Index dim, TensorArray result)
 {
-	TensorArray fullTensor;
-	StGermain_SymmetricTensor_ToTensorArray(symmetricTensor, dim, fullTensor);
-	TensorArray_MultiplyByTensorArray(tensorArray, fullTensor, dim, result);
-	return;
+switch (dim) {
+        case 3:
+            result[FT3D_00] = 	tensorArray[FT3D_00] * symmetricTensor[ST3D_00] 
+							+ 	tensorArray[FT3D_01] * symmetricTensor[ST3D_01]
+							+ 	tensorArray[FT3D_02] * symmetricTensor[ST3D_02];
+		
+            result[FT3D_01] =	tensorArray[FT3D_00] * symmetricTensor[ST3D_01]
+							+	tensorArray[FT3D_01] * symmetricTensor[ST3D_11]
+							+	tensorArray[FT3D_02] * symmetricTensor[ST3D_12];
+        
+			result[FT3D_02] =	tensorArray[FT3D_00] * symmetricTensor[ST3D_02]
+							+	tensorArray[FT3D_01] * symmetricTensor[ST3D_12]
+							+ 	tensorArray[FT3D_02] * symmetricTensor[ST3D_22];
+
+            result[FT3D_10] =	tensorArray[FT3D_10] * symmetricTensor[ST3D_00]
+							+	tensorArray[FT3D_11] * symmetricTensor[ST3D_01]
+							+	tensorArray[FT3D_12] * symmetricTensor[ST3D_02];
+		
+            result[FT3D_11] =	tensorArray[FT3D_10] * symmetricTensor[ST3D_01]
+							+ 	tensorArray[FT3D_11] * symmetricTensor[ST3D_11]
+							+	tensorArray[FT3D_12] * symmetricTensor[ST3D_12];
+        
+			result[FT3D_12] =	tensorArray[FT3D_10] * symmetricTensor[ST3D_02]
+							+ 	tensorArray[FT3D_11] * symmetricTensor[ST3D_12]
+							+	tensorArray[FT3D_12] * symmetricTensor[ST3D_22];
+
+            result[FT3D_20] =	tensorArray[FT3D_20] * symmetricTensor[ST3D_00]
+							+	tensorArray[FT3D_21] * symmetricTensor[ST3D_01]
+							+	tensorArray[FT3D_22] * symmetricTensor[ST3D_02];
+							
+            result[FT3D_21]	=	tensorArray[FT3D_20] * symmetricTensor[ST3D_01]
+							+	tensorArray[FT3D_21] * symmetricTensor[ST3D_11]
+							+	tensorArray[FT3D_22] * symmetricTensor[ST3D_12];
+							
+            result[FT3D_22] =	tensorArray[FT3D_20] * symmetricTensor[ST3D_02]
+							+	tensorArray[FT3D_21] * symmetricTensor[ST3D_12]
+							+	tensorArray[FT3D_22] * symmetricTensor[ST3D_22];
+            return;
+        case 2:
+            result[FT2D_00]	=	tensorArray[FT2D_00] * symmetricTensor[ST2D_00] 
+							+ 	tensorArray[FT2D_01] * symmetricTensor[ST2D_01];
+		
+            result[FT2D_01]	=	tensorArray[FT2D_00] * symmetricTensor[ST2D_01]
+							+ 	tensorArray[FT2D_01] * symmetricTensor[ST2D_11];
+
+            result[FT2D_10]	=	tensorArray[FT2D_10] * symmetricTensor[ST2D_00]
+							+	tensorArray[FT2D_11] * symmetricTensor[ST2D_01];
+		
+            result[FT2D_11]	=	tensorArray[FT2D_10] * symmetricTensor[ST2D_01]
+							+	tensorArray[FT2D_11] * symmetricTensor[ST2D_11];
+            return;
+        default: {
+           Stream* error = Journal_Register( ErrorStream_Type, "TensorMultMath" );
+           Journal_Printf( error, "Cannot read tensor for dimension %d in %s.\n", dim, __func__);
+           	Journal_Firewall( dim, Journal_Register( Error_Type, "TensorMultMath" ),
+				"In func '%s' don't understand dim = %u\n", __func__, dim );;
+            }
+		}
 }
 
 /**	Multiplies SymmetricTensor by TensorArray and gives answer in a TensorArray:

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/TensorMultMath.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/TensorMultMath.h	2006-10-11 20:42:03 UTC (rev 4804)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/TensorMultMath.h	2006-10-11 20:45:27 UTC (rev 4805)
@@ -76,6 +76,7 @@
 /* Useful operations in Solid Mechanics */
 double TensorArray_DoubleContraction(TensorArray tensorArrayA,TensorArray tensorArrayB, Dimension_Index dim);
 double SymmetricTensor_DoubleContraction(SymmetricTensor tensorA, SymmetricTensor tensorB, Dimension_Index dim);
+
 /* Non-square matrix operations */
 void NonSquareMatrix_Transpose( double** originalMatrix, Dimension_Index rowDimOrig, 
 	Dimension_Index colDimOrig, double** newMatrix );



More information about the cig-commits mailing list