[cig-commits] commit:

Mercurial hg at geodynamics.org
Mon Nov 24 11:58:38 PST 2008


changeset:   65:28d99eb7b300
user:        JulianGiordani
date:        Fri Mar 28 02:51:49 2008 +0000
files:       Utils/src/Operator.c
description:
Adding a new Operator for taking the Deviatoric part of a stress tensor.


diff -r ebc4430a6cbe -r 28d99eb7b300 Utils/src/Operator.c
--- a/Utils/src/Operator.c	Thu Mar 20 09:18:32 2008 +0000
+++ b/Utils/src/Operator.c	Fri Mar 28 02:51:49 2008 +0000
@@ -219,6 +219,30 @@ void Operator_SymmetricTensor_GetNegAver
 	*result = -1.0 * (*result) / self->dim ;
 }
 
+void Operator_SymmetricTensor_MakeDeviatoric( void* operator, double* operand0, double* result ) {
+	Operator* self = (Operator*) operator;
+	double meanStress;
+	
+	Operator_FirewallUnary( self );
+	Operator_FirewallResultDofs( self, self->operandDofs );
+	
+	SymmetricTensor_GetTrace( operand0, self->dim, &meanStress );
+	meanStress = meanStress / self->dim ;
+
+	if( self->dim == 2 ) {
+		result[0] = operand0[0] - meanStress;
+		result[1] = operand0[1] - meanStress;
+		result[2] = operand0[2];
+	} else {
+		result[0] = operand0[0] - meanStress;
+		result[1] = operand0[1] - meanStress;
+		result[2] = operand0[2] - meanStress;
+		result[3] = operand0[3];
+		result[4] = operand0[4];
+		result[5] = operand0[5];
+	}
+}
+
 void Operator_Tensor_GetNegAverageTrace( void* operator, double* operand0, double* result ) {
 	Operator* self = (Operator*) operator;
 	
@@ -331,7 +355,7 @@ void Operator_Subtraction( void* operato
 			abort();				
 	}
 }
-	
+
 void Operator_ScalarMultiplication( void* operator, double* operand0, double* operand1, double* result ) {
 	Operator* self = (Operator*) operator;
 	
@@ -494,6 +518,11 @@ Operator* Operator_NewFromName(
 		numberOfOperands = 1;
 		_carryOut = Operator_Tensor_GetNegAverageTrace;
 	}
+	else if ( ! strcasecmp( name, "SymmetricTensor_MakeDeviatoric" ) ){ 
+		resultDofs = operandDofs;
+		numberOfOperands = 1;
+		_carryOut = Operator_SymmetricTensor_MakeDeviatoric;
+	}
 	else if ( ! strcasecmp( name, "TakeFirstComponent" ) ) {
 		resultDofs = 1;
 		numberOfOperands = 1;



More information about the CIG-COMMITS mailing list