[cig-commits] r4368 - in long/3D/Gale/trunk/src/Underworld: . Rheology/src

walter at geodynamics.org walter at geodynamics.org
Thu Aug 17 17:18:36 PDT 2006


Author: walter
Date: 2006-08-17 17:18:33 -0700 (Thu, 17 Aug 2006)
New Revision: 4368

Added:
   long/3D/Gale/trunk/src/Underworld/Rheology/src/Orthotropic.c
   long/3D/Gale/trunk/src/Underworld/Rheology/src/Orthotropic.h
   long/3D/Gale/trunk/src/Underworld/Rheology/src/OrthotropicAligned.c
   long/3D/Gale/trunk/src/Underworld/Rheology/src/OrthotropicAligned.h
Modified:
   long/3D/Gale/trunk/src/Underworld/
   long/3D/Gale/trunk/src/Underworld/Rheology/src/Init.c
   long/3D/Gale/trunk/src/Underworld/Rheology/src/Rheology.h
   long/3D/Gale/trunk/src/Underworld/Rheology/src/types.h
Log:
 r498 at earth:  boo | 2006-08-17 17:15:30 -0700
  r472 at earth (orig r303):  MirkoVelic | 2006-08-09 21:16:34 -0700
  Orthotropic aligned and rotated models.
  
 



Property changes on: long/3D/Gale/trunk/src/Underworld
___________________________________________________________________
Name: svk:merge
   - 9570c393-cf10-0410-b476-9a651db1e55a:/cig:497
c24a034b-ab11-0410-afe6-cfe714e2959e:/trunk:302
   + 9570c393-cf10-0410-b476-9a651db1e55a:/cig:498
c24a034b-ab11-0410-afe6-cfe714e2959e:/trunk:303

Modified: long/3D/Gale/trunk/src/Underworld/Rheology/src/Init.c
===================================================================
--- long/3D/Gale/trunk/src/Underworld/Rheology/src/Init.c	2006-08-18 00:18:33 UTC (rev 4367)
+++ long/3D/Gale/trunk/src/Underworld/Rheology/src/Init.c	2006-08-18 00:18:33 UTC (rev 4368)
@@ -66,6 +66,8 @@
 	Stg_ComponentRegister_Add( componentRegister, NonNewtonian_Type,            "0", _NonNewtonian_DefaultNew );
 	Stg_ComponentRegister_Add( componentRegister, DepthDependentViscosity_Type, "0", _DepthDependentViscosity_DefaultNew );
 	Stg_ComponentRegister_Add( componentRegister, Anisotropic_Type,             "0", _Anisotropic_DefaultNew );
+	Stg_ComponentRegister_Add( componentRegister, OrthotropicAligned_Type,      "0", _OrthotropicAligned_DefaultNew );
+	Stg_ComponentRegister_Add( componentRegister, Orthotropic_Type,             "0", _Orthotropic_DefaultNew );
 	
 	Stg_ComponentRegister_Add( componentRegister, VonMises_Type,                "0", _VonMises_DefaultNew );
 	Stg_ComponentRegister_Add( componentRegister, Byerlee_Type,                 "0", _Byerlee_DefaultNew );
@@ -89,6 +91,8 @@
 	RegisterParent( NonNewtonian_Type,            Rheology_Type );
 	RegisterParent( DepthDependentViscosity_Type, Rheology_Type );
 	RegisterParent( Anisotropic_Type,             Rheology_Type );
+	RegisterParent( OrthotropicAligned_Type,      Rheology_Type );
+	RegisterParent( Orthotropic_Type,             Rheology_Type );
 
 	RegisterParent( StoreStress_Type,             Rheology_Type );
 	RegisterParent( StoreVisc_Type,               Rheology_Type );

Added: long/3D/Gale/trunk/src/Underworld/Rheology/src/Orthotropic.c
===================================================================
--- long/3D/Gale/trunk/src/Underworld/Rheology/src/Orthotropic.c	2006-08-18 00:18:33 UTC (rev 4367)
+++ long/3D/Gale/trunk/src/Underworld/Rheology/src/Orthotropic.c	2006-08-18 00:18:33 UTC (rev 4368)
@@ -0,0 +1,311 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+** Copyright (c) 2005, Monash Cluster Computing 
+** All rights reserved.
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+**
+** 		* Redistributions of source code must retain the above copyright notice, 
+** 			this list of conditions and the following disclaimer.
+** 		* Redistributions in binary form must reproduce the above copyright 
+**			notice, this list of conditions and the following disclaimer in the 
+**			documentation and/or other materials provided with the distribution.
+** 		* Neither the name of the Monash University nor the names of its contributors 
+**			may be used to endorse or promote products derived from this software 
+**			without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
+** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
+** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 
+** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
+** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+**
+** Contact:
+*%		Louis Moresi - Louis.Moresi at sci.monash.edu.au
+*%
+** 
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+#include <mpi.h>
+#include <StGermain/StGermain.h>
+#include <StG_FEM/StG_FEM.h>
+#include <PICellerator/PICellerator.h>
+
+#include "types.h"
+#include "RheologyClass.h"
+#include "ConstitutiveMatrix.h"
+#include "Orthotropic.h"
+
+#include <assert.h>
+
+/* Textual name of this class - This is a global pointer which is used for times when you need to refer to class and not a particular instance of a class */
+const Type Orthotropic_Type = "Orthotropic";
+
+/* Private Constructor: This will accept all the virtual functions for this class as arguments. */
+Orthotropic* _Orthotropic_New( 
+		SizeT                                              sizeOfSelf,
+		Type                                               type,
+		Stg_Class_DeleteFunction*                          _delete,
+		Stg_Class_PrintFunction*                           _print,
+		Stg_Class_CopyFunction*                            _copy, 
+		Stg_Component_DefaultConstructorFunction*          _defaultConstructor,
+		Stg_Component_ConstructFunction*                   _construct,
+		Stg_Component_BuildFunction*                       _build,
+		Stg_Component_InitialiseFunction*                  _initialise,
+		Stg_Component_ExecuteFunction*                     _execute,
+		Stg_Component_DestroyFunction*                     _destroy,
+		Rheology_ModifyConstitutiveMatrixFunction*         _modifyConstitutiveMatrix,
+		Name                                               name ) 
+{
+	Orthotropic*					self;
+
+	/* Call private constructor of parent - this will set virtual functions of parent and continue up the hierarchy tree. At the beginning of the tree it will allocate memory of the size of object and initialise all the memory to zero. */
+	assert( sizeOfSelf >= sizeof(Orthotropic) );
+	self = (Orthotropic*) _Rheology_New( 
+			sizeOfSelf,
+			type, 
+			_delete,
+			_print,
+			_copy,
+			_defaultConstructor,
+			_construct,
+			_build,
+			_initialise,
+			_execute,
+			_destroy,
+			_modifyConstitutiveMatrix,
+			name );
+	
+	return self;
+}
+
+void _Orthotropic_Init( Orthotropic* self,
+			/*  MaterialPointsSwarm* materialPointsSwarm, */
+			double C11, double C22, double C33, 
+			double C44, double C55, double C66,
+			double C12, double C13, double C23,
+			double *n, double *m, double *q ) {
+      int i;
+      
+      self->C11  = C11;
+      self->C22  = C22;
+      self->C33  = C33;
+      self->C44  = C44;
+      self->C55  = C55;  
+      self->C66  = C66;
+      self->C12  = C12;
+      self->C13  = C13;
+      self->C23  = C23;
+
+      for(i=0;i<3;i++){
+	    self->n[i] = n[i];
+	    self->m[i] = m[i];
+	    self->q[i] = q[i];
+      }
+}
+
+void* _Orthotropic_DefaultNew( Name name ) {
+	return (void*) _Orthotropic_New(
+		sizeof(Orthotropic),
+		Orthotropic_Type,
+		_Rheology_Delete,
+		_Rheology_Print,
+		_Rheology_Copy,
+		_Orthotropic_DefaultNew,
+		_Orthotropic_Construct,
+		_Rheology_Build,
+		_Rheology_Initialise,
+		_Rheology_Execute,
+		_Rheology_Destroy,
+		_Orthotropic_ModifyConstitutiveMatrix,
+		name );
+}
+
+void _Orthotropic_Construct( void* rheology, Stg_ComponentFactory* cf ){
+
+	Orthotropic*     self = (Orthotropic*)rheology;
+	double C11;
+	double C22;
+	double C33;
+	double C44;
+	double C55;
+	double C66;
+	double C12;
+	double C13;
+	double C23;
+	double n[3], m[3], q[3];
+
+	/* Construct Parent */
+	_Rheology_Construct( self, cf );
+	
+	/* get parameters */
+	/*******************************************************************
+         The input parameters Cij correspond to the components of the matrix
+         aligned with the directions n,m,q:
+         With the following correspondence between indices and vectors:
+         1 = n,   2 = m, 3 = q.
+         The indices on the vectors correspond to the coordinate system
+         as follows:
+         1 = x 2 = y 3 = z.
+         *******************************************************************/
+	C11 = Stg_ComponentFactory_GetDouble( cf, self->name, "C11",  True );
+	C22 = Stg_ComponentFactory_GetDouble( cf, self->name, "C22",  True );
+	C33 = Stg_ComponentFactory_GetDouble( cf, self->name, "C33",  True );
+	C44 = Stg_ComponentFactory_GetDouble( cf, self->name, "C44",  True );
+	C55 = Stg_ComponentFactory_GetDouble( cf, self->name, "C55",  True );
+	C66 = Stg_ComponentFactory_GetDouble( cf, self->name, "C66",  True );
+	C12 = Stg_ComponentFactory_GetDouble( cf, self->name, "C12",  True );
+	C13 = Stg_ComponentFactory_GetDouble( cf, self->name, "C13",  True );
+	C23 = Stg_ComponentFactory_GetDouble( cf, self->name, "C23",  True );
+	n[0] = Stg_ComponentFactory_GetDouble( cf, self->name, "n1",  True );
+	n[1] = Stg_ComponentFactory_GetDouble( cf, self->name, "n2",  True );
+	n[2] = Stg_ComponentFactory_GetDouble( cf, self->name, "n3",  True );
+	m[0] = Stg_ComponentFactory_GetDouble( cf, self->name, "m1",  True );
+	m[1] = Stg_ComponentFactory_GetDouble( cf, self->name, "m2",  True );
+	m[2] = Stg_ComponentFactory_GetDouble( cf, self->name, "m3",  True );
+	q[0] = Stg_ComponentFactory_GetDouble( cf, self->name, "q1",  True );
+	q[1] = Stg_ComponentFactory_GetDouble( cf, self->name, "q2",  True );
+	q[2] = Stg_ComponentFactory_GetDouble( cf, self->name, "q3",  True );
+
+	_Orthotropic_Init( 
+			self, 
+			C11, C22, C33, C44, C55, C66,
+			C12, C13, C23,
+			n,m,q);
+}
+
+/* how does this get called eventually? */
+void _Orthotropic_ModifyConstitutiveMatrix( 
+		void*                                              rheology, 
+		ConstitutiveMatrix*                                constitutiveMatrix, // constitutive matrix
+		MaterialPointsSwarm*                               swarm,
+		Element_LocalIndex                                 lElement_I,
+		MaterialPoint*                                     materialPoint,
+		Coord                                              xi )
+{
+	Orthotropic*	                self = (Orthotropic*) rheology;
+	Dimension_Index                   dim  = swarm->dim;
+
+	int i,j;
+	double**   C  = constitutiveMatrix->matrixData;
+	double n1,n2,n3;
+	double m1,m2,m3;
+	double q1,q2,q3;
+	double C_h11, C_h22, C_h33, C_h44, C_h55, C_h66, C_h12, C_h13, C_h23;
+
+	C_h11 = self->C11;
+	C_h22 = self->C22;
+	C_h33 = self->C33;
+	C_h12 = self->C12;
+	C_h13 = self->C13;
+	C_h23 = self->C23;
+	C_h44 = self->C44;
+	C_h55 = self->C55;
+	C_h66 = self->C66;
+
+	if(dim==2) {
+	      C_h44 = 0.0;
+	      C_h55 = 0.0;
+	      C_h66 = 0.0;
+	      C_h13 = 0.0;
+	      C_h23 = 0.0;   
+	      n3 = 0.0;
+	      m3 = 0.0;
+	      q3 = 0.0;
+	      q1 = 0.0;
+	      q2 = 0.0;
+	}
+	/* the vectors n, m and q must form an orthonormal triad in 3D */
+	n1 = self->n[0];
+	n2 = self->n[1];
+	m1 = self->m[0];
+	m2 = self->m[1];
+	if(dim == 3){
+	      m3 = self->m[2];
+	      n3 = self->n[2];
+	      q1 = self->q[0];
+	      q2 = self->q[1];
+	      q3 = self->q[2];
+	}
+
+
+	for(i=0;i<dim*(dim+1)/2;i++){
+	      for(j=0;j<dim*(dim+1)/2;j++){
+		    C[i][j] = 0.0;
+	      }
+	}
+	  
+	C[0][0] = C_h11*n1*n1*n1*n1+C_h22*m1*m1*m1*m1+C_h33*q1*q1*q1*q1+4*C_h44*n1*n1*m1*m1+4*C_h55*n1*n1*q1*q1+4*C_h66*q1*q1*m1*m1+2*C_h12*n1*n1*m1*m1+2*C_h12*n1*n1*q1*q1+2*C_h23*q1*q1*m1*m1;
+	
+	C[1][1] = C_h11*n2*n2*n2*n2+C_h22*m2*m2*m2*m2+C_h33*q2*q2*q2*q2+4*C_h44*n2*n2*m2*m2+4*C_h55*n2*n2*q2*q2+4*C_h66*q2*q2*m2*m2+2*C_h12*n2*n2*m2*m2+2*C_h12*n2*n2*q2*q2+2*C_h23*q2*q2*m2*m2;
+
+	C[1][0]=C[0][1] = C_h11*n1*n1*n2*n2+C_h22*m1*m1*m2*m2+C_h33*q1*q1*q2*q2+4*C_h44*m1*n2*n1*m2+4*C_h55*q1*n2*n1*q2+4*C_h66*m1*q2*q1*m2+C_h12*(n1*n1*m2*m2+m1*m1*n2*n2)+C_h12*(n1*n1*q2*q2+q1*q1*n2*n2)+C_h23*(q1*q1*m2*m2+m1*m1*q2*q2);
+
+	C[2][2] = C_h11*n3*n3*n3*n3+C_h22*m3*m3*m3*m3+C_h33*q3*q3*q3*q3+4*C_h44*n3*n3*m3*m3+4*C_h55*n3*n3*q3*q3+4*C_h66*q3*q3*m3*m3+2*C_h12*n3*n3*m3*m3+2*C_h12*n3*n3*q3*q3+2*C_h23*q3*q3*m3*m3;
+
+	C[2][0]=C[0][2] = C_h11*n1*n1*n3*n3+C_h22*m1*m1*m3*m3+C_h33*q1*q1*q3*q3+4*C_h44*n1*m1*n3*m3+4*C_h55*n1*q1*n3*q3+4*C_h66*q1*m1*q3*m3+C_h12*(n1*n1*m3*m3+m1*m1*n3*n3)+C_h12*(n1*n1*q3*q3+q1*q1*n3*n3)+C_h23*(q1*q1*m3*m3+m1*m1*q3*q3);
+
+	C[2][1]=C[1][2] =  C_h11*n2*n2*n3*n3+C_h22*m2*m2*m3*m3+C_h33*q2*q2*q3*q3+4*C_h44*n2*m2*n3*m3+4*C_h55*n2*q2*n3*q3+4*C_h66*q2*m2*q3*m3+C_h12*(n2*n2*m3*m3+m2*m2*n3*n3)+C_h12*(n2*n2*q3*q3+q2*q2*n3*n3)+C_h23*(q2*q2*m3*m3+m2*m2*q3*q3);
+
+
+	if(dim == 3){
+	      C[5][0]=C[0][5] = C_h11*n1*n1*n3*n2+C_h22*m1*m1*m3*m2+C_h33*q1*q1*q3*q2+2*C_h44*m1*n1*(n2*m3+m2*n3)+2*C_h55*q1*n1*(n2*q3+q2*n3)+2*C_h66*m1*q1*(m2*q3+q2*m3)+C_h12*(n1*n1*m3*m2+m1*m1*n3*n2)+C_h12*(n1*n1*q3*q2+q1*q1*n3*n2)+C_h23*(q1*q1*m3*m2+m1*m1*q3*q2);
+
+	      C[4][0]=C[0][4] = C_h11*n1*n1*n1*n3+C_h22*m1*m1*m1*m3+C_h33*q1*q1*q1*q3+2*C_h44*n1*m1*(n3*m1+n1*m3)+2*C_h55*n1*q1*(n3*q1+n1*q3)+2*C_h66*q1*m1*(m1*q3+q1*m3)+C_h12*n1*m1*(n3*m1+n1*m3)+C_h12*n1*q1*(n3*q1+n1*q3)+C_h23*q1*m1*(m1*q3+q1*m3);
+
+	      C[3][0]=C[0][3] =  C_h11*n1*n1*n1*n2+C_h22*m1*m1*m1*m2+C_h33*q1*q1*q1*q2+2*C_h44*m1*n1*(n2*m1+m2*n1)+2*C_h55*q1*n1*(n2*q1+q2*n1)+2*C_h66*m1*q1*(q1*m2+q2*m1)+C_h12*m1*n1*(n2*m1+m2*n1)+C_h12*q1*n1*(n2*q1+q2*n1)+C_h23*m1*q1*(q1*m2+q2*m1);
+
+	      C[5][1]=C[1][5] =  C_h11*n2*n2*n2*n3+C_h22*m2*m2*m2*m3+C_h33*q2*q2*q2*q3+2*C_h44*m2*n2*(n2*m3+m2*n3)+2*C_h55*q2*n2*(n2*q3+q2*n3)+2*C_h66*q2*m2*(m2*q3+q2*m3)+C_h12*m2*n2*(n2*m3+m2*n3)+C_h12*q2*n2*(n2*q3+q2*n3)+C_h23*q2*m2*(m2*q3+q2*m3);
+
+	      C[4][1]=C[1][4] =  C_h11*n2*n2*n1*n3+C_h22*m2*m2*m1*m3+C_h33*q2*q2*q1*q3+2*C_h44*n2*m2*(n3*m1+n1*m3)+2*C_h55*n2*q2*(n3*q1+n1*q3)+2*C_h66*m2*q2*(m1*q3+q1*m3)+C_h12*(n2*n2*m1*m3+m2*m2*n1*n3)+C_h12*(n2*n2*q1*q3+q2*q2*n1*n3)+C_h23*(q2*q2*m1*m3+m2*m2*q1*q3);
+
+	      C[3][1]=C[1][3] =  C_h11*n2*n2*n2*n1+C_h22*m2*m2*m2*m1+C_h33*q2*q2*q2*q1+2*C_h44*m2*n2*(n2*m1+m2*n1)+2*C_h55*q2*n2*(n2*q1+q2*n1)+2*C_h66*q2*m2*(q1*m2+q2*m1)+C_h12*m2*n2*(n2*m1+m2*n1)+C_h12*q2*n2*(n2*q1+q2*n1)+C_h23*q2*m2*(q1*m2+q2*m1);
+
+	      C[5][2]=C[2][5] =  C_h11*n3*n3*n3*n2+C_h22*m3*m3*m3*m2+C_h33*q3*q3*q3*q2+2*C_h44*m3*n3*(n2*m3+m2*n3)+2*C_h55*q3*n3*(n2*q3+q2*n3)+2*C_h66*q3*m3*(m2*q3+q2*m3)+C_h12*m3*n3*(n2*m3+m2*n3)+C_h12*q3*n3*(n2*q3+q2*n3)+C_h23*q3*m3*(m2*q3+q2*m3);
+
+	      C[4][2]=C[2][4] =  C_h11*n3*n3*n3*n1+C_h22*m3*m3*m3*m1+C_h33*q3*q3*q3*q1+2*C_h44*m3*n3*(n3*m1+n1*m3)+2*C_h55*q3*n3*(n3*q1+n1*q3)+2*C_h66*q3*m3*(m1*q3+q1*m3)+C_h12*m3*n3*(n3*m1+n1*m3)+C_h12*q3*n3*(n3*q1+n1*q3)+C_h23*q3*m3*(m1*q3+q1*m3);
+
+	      C[3][2]=C[2][3] =  C_h11*n3*n3*n1*n2+C_h22*m3*m3*m1*m2+C_h33*q3*q3*q1*q2+2*C_h44*n3*m3*(n2*m1+m2*n1)+2*C_h55*n3*q3*(n2*q1+q2*n1)+2*C_h66*m3*q3*(q1*m2+q2*m1)+C_h12*(n3*n3*m1*m2+m3*m3*n1*n2)+C_h12*(n3*n3*q1*q2+q3*q3*n1*n2)+C_h23*(q3*q3*m1*m2+m3*m3*q1*q2);
+
+	      C[5][5] =  C_h11*n2*n2*n3*n3+C_h22*m2*m2*m3*m3+C_h33*q2*q2*q3*q3+C_h44*(n2*m3+m2*n3)*(n2*m3+m2*n3)+C_h55*(n2*q3+q2*n3)*(n2*q3+q2*n3)+C_h66*(m2*q3+q2*m3)*(m2*q3+q2*m3)+2*C_h12*n2*m2*n3*m3+2*C_h12*n2*q2*n3*q3+2*C_h23*q2*m2*q3*m3;
+
+	      C[4][5]=C[5][4] = C_h11*n3*n3*n1*n2+C_h22*m3*m3*m1*m2+C_h33*q3*q3*q1*q2+C_h44*(n3*m1+n1*m3)*(n2*m3+m2*n3)+C_h55*(n3*q1+n1*q3)*(n2*q3+q2*n3)+C_h66*(m1*q3+q1*m3)*(m2*q3+q2*m3)+C_h12*n3*m3*(n2*m1+m2*n1)+C_h12*n3*q3*(n2*q1+q2*n1)+C_h23*m3*q3*(q1*m2+q2*m1);
+
+	      C[3][5]=C[5][3] =  C_h11*n2*n2*n1*n3+C_h22*m2*m2*m1*m3+C_h33*q2*q2*q1*q3+C_h44*(n2*m1+m2*n1)*(n2*m3+m2*n3)+C_h55*(n2*q1+q2*n1)*(n2*q3+q2*n3)+C_h66*(q1*m2+q2*m1)*(m2*q3+q2*m3)+C_h12*n2*m2*(n3*m1+n1*m3)+C_h12*n2*q2*(n3*q1+n1*q3)+C_h23*m2*q2*(m1*q3+q1*m3);
+
+	      C[4][4] = C_h11*n1*n1*n3*n3+C_h22*m1*m1*m3*m3+C_h33*q1*q1*q3*q3+C_h44*(n3*m1+n1*m3)*(n3*m1+n1*m3)+C_h55*(n3*q1+n1*q3)*(n3*q1+n1*q3)+C_h66*(m1*q3+q1*m3)*(m1*q3+q1*m3)+2*C_h12*n1*m1*n3*m3+2*C_h12*n1*q1*n3*q3+2*C_h23*q1*m1*q3*m3;
+
+	      C[3][4]=C[4][3] = C_h11*n1*n1*n3*n2+C_h22*m1*m1*m3*m2+C_h33*q1*q1*q3*q2+C_h44*(n2*m1+m2*n1)*(n3*m1+n1*m3)+C_h55*(n2*q1+q2*n1)*(n3*q1+n1*q3)+C_h66*(q1*m2+q2*m1)*(m1*q3+q1*m3)+C_h12*m1*n1*(n2*m3+m2*n3)+C_h12*q1*n1*(n2*q3+q2*n3)+C_h23*m1*q1*(m2*q3+q2*m3);
+
+	      C[3][3] = C_h11*n1*n1*n2*n2+C_h22*m1*m1*m2*m2+C_h33*q1*q1*q2*q2+C_h44*(n2*m1+m2*n1)*(n2*m1+m2*n1)+C_h55*(n2*q1+q2*n1)*(n2*q1+q2*n1)+C_h66*(q1*m2+q2*m1)*(q1*m2+q2*m1)+2*C_h12*m1*n2*n1*m2+2*C_h12*q1*n2*n1*q2+2*C_h23*m1*q2*q1*m2;
+	}
+
+ 
+	   constitutiveMatrix->isDiagonal = False;	   
+//	   printf("In %s OK\n\n",__func__);
+//	   flag = 1;
+//	}
+/* 	for(i=0;i<dim*(dim+1)/2;i++){ */
+/* 	   for(j=0;j<dim*(dim+1)/2;j++){ */
+/* 	      printf("Matrix Data = %g [%d %d]\n",constitutiveMatrix->matrixData[i][j],i,j); */
+/* 	   } */
+/* 	} */
+}
+
+#if 0
+void _Orthotropic_UpdateDrawParameters( void* rheology ) 
+{
+	Orthotropic*                   self               = (Orthotropic*) rheology;
+	Particle_Index                   lParticle_I;
+	Particle_Index                   particleLocalCount;
+	StandardParticle*                	materialPoint;
+	Dimension_Index                 dim                   = self->materialPointsSwarm->dim;
+	Orthotropic_ParticleExt*            particleExt;   /* this new type is defined in Orthotropic.h */
+
+	/* do stuff */
+}
+#endif

Added: long/3D/Gale/trunk/src/Underworld/Rheology/src/Orthotropic.h
===================================================================
--- long/3D/Gale/trunk/src/Underworld/Rheology/src/Orthotropic.h	2006-08-18 00:18:33 UTC (rev 4367)
+++ long/3D/Gale/trunk/src/Underworld/Rheology/src/Orthotropic.h	2006-08-18 00:18:33 UTC (rev 4368)
@@ -0,0 +1,109 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+** Copyright (c) 2005, Monash Cluster Computing 
+** All rights reserved.
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+**
+** 		* Redistributions of source code must retain the above copyright notice, 
+** 			this list of conditions and the following disclaimer.
+** 		* Redistributions in binary form must reproduce the above copyright 
+**			notice, this list of conditions and the following disclaimer in the 
+**			documentation and/or other materials provided with the distribution.
+** 		* Neither the name of the Monash University nor the names of its contributors 
+**			may be used to endorse or promote products derived from this software 
+**			without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
+** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
+** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 
+** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
+** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+**
+** Contact:
+*%		Louis Moresi - Louis.Moresi at sci.monash.edu.au
+*%
+** Contributors:
+*+		Robert Turnbull
+*+		Vincent Lemiale
+*+		Louis Moresi
+*+		David May
+*+		David Stegman
+*+		Mirko Velic
+*+		Patrick Sunter
+*+		Julian Giordani
+*+
+** $Id: Anisotropic.h 169 2006-04-21 07:08:28Z AlanLo $
+** 
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+
+#ifndef __Underworld_Orthotropic_h__
+#define __Underworld_Orthotropic_h__
+
+	/** Textual name of this class - This is a global pointer which is used for times when you need to refer to class and not a particular instance of a class */
+	extern const Type Orthotropic_Type;
+        /** The following struct is so we can colour the particles with the Velocity Magnitude **/
+	/*typedef struct  {
+	   float VelocityMagnitudeColour;
+	} Orthotropic_ParticleExt;
+	*/
+	/** Class contents */
+	#define __Orthotropic \
+		/* Macro defining parent goes here - This means you can cast this class as its parent */ \
+		__Rheology \
+		/* Virtual functions go here */ \
+		/* Extended Attributes */ \
+                /* SwarmVariable*         VelocityMagnitudeColour;*/\
+		/*ExtensionInfo_Index    particleExtHandle;*/\
+		/* Param passed in */\
+		double C11; \
+		double C22; \
+		double C33; \
+		double C12; \
+		double C13; \
+		double C23; \
+		double C44; \
+		double C55; \
+		double C66; \
+                double n[3]; \
+                double m[3]; \
+                double q[3];
+
+
+	struct Orthotropic { __Orthotropic };
+	
+	/** Private Constructor: This will accept all the virtual functions for this class as arguments. */
+	Orthotropic* _Orthotropic_New( 
+		SizeT                                              sizeOfSelf,
+		Type                                               type,
+		Stg_Class_DeleteFunction*                          _delete,
+		Stg_Class_PrintFunction*                           _print,
+		Stg_Class_CopyFunction*                            _copy, 
+		Stg_Component_DefaultConstructorFunction*          _defaultConstructor,
+		Stg_Component_ConstructFunction*                   _construct,
+		Stg_Component_BuildFunction*                       _build,
+		Stg_Component_InitialiseFunction*                  _initialise,
+		Stg_Component_ExecuteFunction*                     _execute,
+		Stg_Component_DestroyFunction*                     _destroy,
+		Rheology_ModifyConstitutiveMatrixFunction*         _modifyConstitutiveMatrix,
+		Name                                               name );
+
+	/* 'Stg_Component' implementations */
+	void* _Orthotropic_DefaultNew( Name name ) ;
+	void _Orthotropic_Construct( void* rheology, Stg_ComponentFactory* cf );
+
+	void _Orthotropic_ModifyConstitutiveMatrix( 
+		void*                                              rheology, 
+		ConstitutiveMatrix*                                constitutiveMatrix,
+		MaterialPointsSwarm*                               swarm,
+		Element_LocalIndex                                 lElement_I,
+		MaterialPoint*                                     materialPoint,
+		Coord                                              xi );
+
+#endif

Added: long/3D/Gale/trunk/src/Underworld/Rheology/src/OrthotropicAligned.c
===================================================================
--- long/3D/Gale/trunk/src/Underworld/Rheology/src/OrthotropicAligned.c	2006-08-18 00:18:33 UTC (rev 4367)
+++ long/3D/Gale/trunk/src/Underworld/Rheology/src/OrthotropicAligned.c	2006-08-18 00:18:33 UTC (rev 4368)
@@ -0,0 +1,216 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+** Copyright (c) 2005, Monash Cluster Computing 
+** All rights reserved.
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+**
+** 		* Redistributions of source code must retain the above copyright notice, 
+** 			this list of conditions and the following disclaimer.
+** 		* Redistributions in binary form must reproduce the above copyright 
+**			notice, this list of conditions and the following disclaimer in the 
+**			documentation and/or other materials provided with the distribution.
+** 		* Neither the name of the Monash University nor the names of its contributors 
+**			may be used to endorse or promote products derived from this software 
+**			without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
+** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
+** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 
+** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
+** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+**
+** Contact:
+*%		Louis Moresi - Louis.Moresi at sci.monash.edu.au
+*%
+** 
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+#include <mpi.h>
+#include <StGermain/StGermain.h>
+#include <StG_FEM/StG_FEM.h>
+#include <PICellerator/PICellerator.h>
+
+#include "types.h"
+#include "RheologyClass.h"
+#include "ConstitutiveMatrix.h"
+#include "OrthotropicAligned.h"
+
+#include <assert.h>
+
+/* Textual name of this class - This is a global pointer which is used for times when you need to refer to class and not a particular instance of a class */
+const Type OrthotropicAligned_Type = "OrthotropicAligned";
+
+/* Private Constructor: This will accept all the virtual functions for this class as arguments. */
+OrthotropicAligned* _OrthotropicAligned_New( 
+		SizeT                                              sizeOfSelf,
+		Type                                               type,
+		Stg_Class_DeleteFunction*                          _delete,
+		Stg_Class_PrintFunction*                           _print,
+		Stg_Class_CopyFunction*                            _copy, 
+		Stg_Component_DefaultConstructorFunction*          _defaultConstructor,
+		Stg_Component_ConstructFunction*                   _construct,
+		Stg_Component_BuildFunction*                       _build,
+		Stg_Component_InitialiseFunction*                  _initialise,
+		Stg_Component_ExecuteFunction*                     _execute,
+		Stg_Component_DestroyFunction*                     _destroy,
+		Rheology_ModifyConstitutiveMatrixFunction*         _modifyConstitutiveMatrix,
+		Name                                               name ) 
+{
+	OrthotropicAligned*					self;
+
+	/* Call private constructor of parent - this will set virtual functions of parent and continue up the hierarchy tree. At the beginning of the tree it will allocate memory of the size of object and initialise all the memory to zero. */
+	assert( sizeOfSelf >= sizeof(OrthotropicAligned) );
+	self = (OrthotropicAligned*) _Rheology_New( 
+			sizeOfSelf,
+			type, 
+			_delete,
+			_print,
+			_copy,
+			_defaultConstructor,
+			_construct,
+			_build,
+			_initialise,
+			_execute,
+			_destroy,
+			_modifyConstitutiveMatrix,
+			name );
+	
+	return self;
+}
+
+void _OrthotropicAligned_Init( OrthotropicAligned* self,
+                             /*  MaterialPointsSwarm* materialPointsSwarm, */
+			       double viscosity1, double viscosity2, 
+			       double viscosity3, double viscosity4, 
+			       double viscosity5, double viscosity6 ) {
+//	self->director         = director;
+//	self->viscosityRatio  = viscosityRatio;
+/*	OrthotropicAligned_ParticleExt*   particleExt;
+	StandardParticle                  materialPoint;
+	
+	self->particleExtHandle       = ExtensionManager_Add( materialPointsSwarm->particleExtensionMgr,
+	                                                	OrthotropicAligned_Type, sizeof(OrthotropicAligned_ParticleExt) ); */
+        self->viscosity1  = viscosity1;
+	self->viscosity2  = viscosity2;
+	self->viscosity3  = viscosity3;
+	self->viscosity4  = viscosity4;
+	self->viscosity5  = viscosity5;  
+	self->viscosity6  = viscosity6;
+}
+
+void* _OrthotropicAligned_DefaultNew( Name name ) {
+	return (void*) _OrthotropicAligned_New(
+		sizeof(OrthotropicAligned),
+		OrthotropicAligned_Type,
+		_Rheology_Delete,
+		_Rheology_Print,
+		_Rheology_Copy,
+		_OrthotropicAligned_DefaultNew,
+		_OrthotropicAligned_Construct,
+		_Rheology_Build,
+		_Rheology_Initialise,
+		_Rheology_Execute,
+		_Rheology_Destroy,
+		_OrthotropicAligned_ModifyConstitutiveMatrix,
+		name );
+}
+
+void _OrthotropicAligned_Construct( void* rheology, Stg_ComponentFactory* cf ){
+	OrthotropicAligned*     self = (OrthotropicAligned*)rheology;
+//	Director*        director;
+	double viscosity1;
+	double viscosity2;
+	double viscosity3;
+	double viscosity4;
+	double viscosity5;
+	double viscosity6;
+
+	/* Construct Parent */
+	_Rheology_Construct( self, cf );
+	
+//	director =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  "Director", Director,  True  ) ;
+	viscosity1 = Stg_ComponentFactory_GetDouble( cf, self->name, "viscosity1",  True );
+	viscosity2 = Stg_ComponentFactory_GetDouble( cf, self->name, "viscosity2",  True );
+	viscosity3 = Stg_ComponentFactory_GetDouble( cf, self->name, "viscosity3",  True );
+	viscosity4 = Stg_ComponentFactory_GetDouble( cf, self->name, "viscosity4",  True );
+	viscosity5 = Stg_ComponentFactory_GetDouble( cf, self->name, "viscosity5",  True );
+	viscosity6 = Stg_ComponentFactory_GetDouble( cf, self->name, "viscosity6",  True );
+
+	_OrthotropicAligned_Init( 
+			self, 
+			viscosity1,
+			viscosity2,
+			viscosity3,
+			viscosity4,
+			viscosity5,
+			viscosity6 );
+}
+
+/* how does this get called eventually? */
+void _OrthotropicAligned_ModifyConstitutiveMatrix( 
+		void*                                              rheology, 
+		ConstitutiveMatrix*                                constitutiveMatrix, // constitutive matrix
+		MaterialPointsSwarm*                               swarm,
+		Element_LocalIndex                                 lElement_I,
+		MaterialPoint*                                     materialPoint,
+		Coord                                              xi )
+{
+	OrthotropicAligned*	                self = (OrthotropicAligned*) rheology;
+	Dimension_Index                   dim  = swarm->dim;
+//	double                          isotropicViscosity = ConstitutiveMatrix_GetIsotropicViscosity( constitutiveMatrix );
+//	double                          deltaViscosity;
+//	XYZ                             normal;
+	int i,j;
+	double**   D  = constitutiveMatrix->matrixData;
+//	static int flag = 0;
+//	deltaViscosity = isotropicViscosity * (1.0 - self->viscosityRatio);
+//	Director_GetNormal( self->director, materialPoint, normal );
+
+//	ConstitutiveMatrix_SetSecondViscosity( constitutiveMatrix, deltaViscosity, normal );
+	
+//	if(!flag){/* if not visited modify matrix else no need to update */
+        /* Snark dies if I only allow this to be called once.. */
+	/* ahh need to allow it to be called once for every particle */
+	   for(i=0;i<dim*(dim+1)/2;i++){
+	      for(j=0;j<dim*(dim+1)/2;j++){
+		 D[i][j] = 0.0;
+	      }
+	   }
+	   
+	   D[0][0] = self->viscosity1;
+	   D[1][1] = self->viscosity2;
+	   D[2][2] = self->viscosity3;
+	   if(dim == 3){
+	      D[3][3] = self->viscosity4;
+	      D[4][4] = self->viscosity5;
+	      D[5][5] = self->viscosity6;
+	   }
+	   constitutiveMatrix->isDiagonal = True;	   
+//	   printf("In %s OK\n\n",__func__);
+//	   flag = 1;
+//	}
+/* 	for(i=0;i<dim*(dim+1)/2;i++){ */
+/* 	   for(j=0;j<dim*(dim+1)/2;j++){ */
+/* 	      printf("Matrix Data = %g [%d %d]\n",constitutiveMatrix->matrixData[i][j],i,j); */
+/* 	   } */
+/* 	} */
+}
+
+#if 0
+void _OrthotropicAligned_UpdateDrawParameters( void* rheology ) 
+{
+	OrthotropicAligned*                   self               = (OrthotropicAligned*) rheology;
+	Particle_Index                   lParticle_I;
+	Particle_Index                   particleLocalCount;
+	StandardParticle*                	materialPoint;
+	Dimension_Index                 dim                   = self->materialPointsSwarm->dim;
+	OrthotropicAligned_ParticleExt*            particleExt;   /* this new type is defined in OrthotropicAligned.h */
+
+	/* do stuff */
+}
+#endif

Added: long/3D/Gale/trunk/src/Underworld/Rheology/src/OrthotropicAligned.h
===================================================================
--- long/3D/Gale/trunk/src/Underworld/Rheology/src/OrthotropicAligned.h	2006-08-18 00:18:33 UTC (rev 4367)
+++ long/3D/Gale/trunk/src/Underworld/Rheology/src/OrthotropicAligned.h	2006-08-18 00:18:33 UTC (rev 4368)
@@ -0,0 +1,103 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+** Copyright (c) 2005, Monash Cluster Computing 
+** All rights reserved.
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+**
+** 		* Redistributions of source code must retain the above copyright notice, 
+** 			this list of conditions and the following disclaimer.
+** 		* Redistributions in binary form must reproduce the above copyright 
+**			notice, this list of conditions and the following disclaimer in the 
+**			documentation and/or other materials provided with the distribution.
+** 		* Neither the name of the Monash University nor the names of its contributors 
+**			may be used to endorse or promote products derived from this software 
+**			without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
+** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
+** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 
+** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
+** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+**
+** Contact:
+*%		Louis Moresi - Louis.Moresi at sci.monash.edu.au
+*%
+** Contributors:
+*+		Robert Turnbull
+*+		Vincent Lemiale
+*+		Louis Moresi
+*+		David May
+*+		David Stegman
+*+		Mirko Velic
+*+		Patrick Sunter
+*+		Julian Giordani
+*+
+** $Id: Anisotropic.h 169 2006-04-21 07:08:28Z AlanLo $
+** 
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+
+#ifndef __Underworld_OrthotropicAligned_h__
+#define __Underworld_OrthotropicAligned_h__
+
+	/** Textual name of this class - This is a global pointer which is used for times when you need to refer to class and not a particular instance of a class */
+	extern const Type OrthotropicAligned_Type;
+        /** The following struct is so we can colour the particles with the Velocity Magnitude **/
+	/*typedef struct  {
+	   float VelocityMagnitudeColour;
+	} OrthotropicAligned_ParticleExt;
+	*/
+	/** Class contents */
+	#define __OrthotropicAligned \
+		/* Macro defining parent goes here - This means you can cast this class as its parent */ \
+		__Rheology \
+		/* Virtual functions go here */ \
+		/* Extended Attributes */ \
+                /* SwarmVariable*         VelocityMagnitudeColour;*/\
+		/*ExtensionInfo_Index    particleExtHandle;*/\
+		/* Param passed in */\
+		double viscosity1; \
+		double viscosity2; \
+		double viscosity3; \
+		double viscosity4; \
+		double viscosity5; \
+		double viscosity6;
+
+
+	struct OrthotropicAligned { __OrthotropicAligned };
+	
+	/** Private Constructor: This will accept all the virtual functions for this class as arguments. */
+	OrthotropicAligned* _OrthotropicAligned_New( 
+		SizeT                                              sizeOfSelf,
+		Type                                               type,
+		Stg_Class_DeleteFunction*                          _delete,
+		Stg_Class_PrintFunction*                           _print,
+		Stg_Class_CopyFunction*                            _copy, 
+		Stg_Component_DefaultConstructorFunction*          _defaultConstructor,
+		Stg_Component_ConstructFunction*                   _construct,
+		Stg_Component_BuildFunction*                       _build,
+		Stg_Component_InitialiseFunction*                  _initialise,
+		Stg_Component_ExecuteFunction*                     _execute,
+		Stg_Component_DestroyFunction*                     _destroy,
+		Rheology_ModifyConstitutiveMatrixFunction*         _modifyConstitutiveMatrix,
+		Name                                               name );
+
+	/* 'Stg_Component' implementations */
+	void* _OrthotropicAligned_DefaultNew( Name name ) ;
+	void _OrthotropicAligned_Construct( void* rheology, Stg_ComponentFactory* cf );
+
+	void _OrthotropicAligned_ModifyConstitutiveMatrix( 
+		void*                                              rheology, 
+		ConstitutiveMatrix*                                constitutiveMatrix,
+		MaterialPointsSwarm*                               swarm,
+		Element_LocalIndex                                 lElement_I,
+		MaterialPoint*                                     materialPoint,
+		Coord                                              xi );
+
+#endif

Modified: long/3D/Gale/trunk/src/Underworld/Rheology/src/Rheology.h
===================================================================
--- long/3D/Gale/trunk/src/Underworld/Rheology/src/Rheology.h	2006-08-18 00:18:33 UTC (rev 4367)
+++ long/3D/Gale/trunk/src/Underworld/Rheology/src/Rheology.h	2006-08-18 00:18:33 UTC (rev 4368)
@@ -61,6 +61,8 @@
 	#include "NonNewtonian.h"
 	#include "DepthDependentViscosity.h"
 	#include "Anisotropic.h"
+        #include "OrthotropicAligned.h"
+        #include "Orthotropic.h"
 	#include "VonMises.h"
 	#include "Byerlee.h"
 	#include "DruckerPrager.h"

Modified: long/3D/Gale/trunk/src/Underworld/Rheology/src/types.h
===================================================================
--- long/3D/Gale/trunk/src/Underworld/Rheology/src/types.h	2006-08-18 00:18:33 UTC (rev 4367)
+++ long/3D/Gale/trunk/src/Underworld/Rheology/src/types.h	2006-08-18 00:18:33 UTC (rev 4368)
@@ -57,6 +57,8 @@
 	typedef struct MaterialViscosity                MaterialViscosity;
 	typedef struct Arrhenius                        Arrhenius;
 	typedef struct Anisotropic                      Anisotropic;
+	typedef struct OrthotropicAligned               OrthotropicAligned;
+        typedef struct Orthotropic                      Orthotropic;
 	typedef struct FrankKamenetskii                 FrankKamenetskii;
 	typedef struct NonNewtonian                     NonNewtonian;
 	typedef struct DepthDependentViscosity          DepthDependentViscosity;



More information about the cig-commits mailing list