[cig-commits] r4836 - in long/3D/Gale/trunk/src/StGermain: .
Discretisation/Geometry/src
walter at geodynamics.org
walter at geodynamics.org
Wed Oct 11 13:46:37 PDT 2006
Author: walter
Date: 2006-10-11 13:46:36 -0700 (Wed, 11 Oct 2006)
New Revision: 4836
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:
r2893 at earth: boo | 2006-10-11 13:42:34 -0700
r2809 at earth (orig r3797): JulianGiordani | 2006-09-14 01:49:04 -0700
Wrapping the non square matrix by non-square matrix function in a wrapper function which will first initialise the output matrix for the user.
So
NonSquareMatrix_MultiplicationByNonSquareMatrix has become
NonSquareMatrix_CumulativeMultiplicationByNonSquareMatrix, which "won't" initialise the output matrix
but the new function
NonSquareMatrix_MultiplicationByNonSquareMatrix "will" initialise the output matrix
This change is similar to Kathleen's change to this file earlier today
Property changes on: long/3D/Gale/trunk/src/StGermain
___________________________________________________________________
Name: svk:merge
- 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2892
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3796
+ 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2893
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3797
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:46:34 UTC (rev 4835)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/TensorMultMath.c 2006-10-11 20:46:36 UTC (rev 4836)
@@ -571,16 +571,26 @@
}
return;
}
+
+void NonSquareMatrix_MultiplicationByNonSquareMatrix( double **AMatrix, int rowDimA, int colDimA,
+ double **BMatrix, int rowDimB, int colDimB,
+ double** resultMatrix ) {
+ int counter;
+ for( counter = 0 ; counter < rowDimA ; counter++ ) {
+ memset( resultMatrix[counter], 0, sizeof( double ) * colDimB );
+ }
+}
/** This function multiplies 2 non square matrices. It requires the row and column
dimensions for each matrix. Columns In Matrix A = Rows In Matrix B
resultMatrix_ik = AMatrix_ij x BMatrix_jk */
-void NonSquareMatrix_MultiplicationByNonSquareMatrix( double **AMatrix, int rowDimA, int colDimA,
+void NonSquareMatrix_CumulativeMultiplicationByNonSquareMatrix( double **AMatrix, int rowDimA, int colDimA,
double **BMatrix, int rowDimB, int colDimB,
double** resultMatrix ) {
int row_I, col_I; // location with resultMatrix
int counter; // counter which facilitates the multiplication of AMatrix and BMatrix
- Stream* error = Journal_Register( ErrorStream_Type, "TensorMultMath" );
+ /** Error Checking Code */
+ Stream* error = Journal_Register( ErrorStream_Type, "TensorMultMath" );
if (colDimA != rowDimB) {
Journal_Firewall( False, error,
@@ -592,10 +602,11 @@
"In func '%s', Input matrices: %s %s, or Output matrix: %s is NULL \n",
__func__, AMatrix, BMatrix, resultMatrix);
}
- /* calculate result matrix */
+ /** End error checking code */
+ /** Calculate result matrix */
for( row_I = 0 ; row_I < rowDimA ; row_I++ ) {
for( col_I = 0 ; col_I < colDimB ; col_I++ ) {
- /* resultMatrix[ row_I ][ col_I] = AMatrix_ij x BMatrix_jk */
+ /** resultMatrix[ row_I ][ col_I] = AMatrix_ij x BMatrix_jk */
for( counter = 0 ; counter < colDimA ; counter++ ) {
resultMatrix[ row_I ][ col_I ] += ( AMatrix[row_I][counter] * BMatrix[counter][col_I] );
}
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:46:34 UTC (rev 4835)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/TensorMultMath.h 2006-10-11 20:46:36 UTC (rev 4836)
@@ -85,6 +85,10 @@
double **BMatrix, int rowsInB, int colsInB,
double** resultMatrix );
+void NonSquareMatrix_CumulativeMultiplicationByNonSquareMatrix( double **AMatrix, int rowDimA, int colDimA,
+ double **BMatrix, int rowDimB, int colDimB,
+ double** resultMatrix );
+
void NonSquareMatrix_MatrixVectorMultiplication( double** AMatrix, int rowsInA, int colsInA,
double* BVec, int rowsInB, double* resultVector );
void NonSquareMatrix_CumulativeMatrixVectorMultiplication( double** AMatrix, int rowsInA, int colsInA,
More information about the cig-commits
mailing list