[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