[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