[cig-commits] r3938 - in long/3D/Gale/trunk/src/StGermain: . Discretisation/Shape/src

walter at geodynamics.org walter at geodynamics.org
Thu Jul 6 02:06:03 PDT 2006


Author: walter
Date: 2006-07-06 02:06:03 -0700 (Thu, 06 Jul 2006)
New Revision: 3938

Modified:
   long/3D/Gale/trunk/src/StGermain/
   long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/BelowCosinePlane.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/BelowCosinePlane.h
Log:
 r2466 at earth:  boo | 2006-07-06 02:02:38 -0700
  r2455 at earth (orig r3658):  AlanLo | 2006-06-28 21:39:01 -0700
  
  fixed this guy up for better math language
  also corrected to volume (area 2d) calculation for any phase
  
  
 



Property changes on: long/3D/Gale/trunk/src/StGermain
___________________________________________________________________
Name: svk:merge
   - 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2465
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3657
   + 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2466
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3658

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/BelowCosinePlane.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/BelowCosinePlane.c	2006-07-06 09:05:58 UTC (rev 3937)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/BelowCosinePlane.c	2006-07-06 09:06:03 UTC (rev 3938)
@@ -58,7 +58,7 @@
 		double                                offset,
 		XYZ                                   width,
 		double                                delta,
-		double                                preiod,
+		double                                period,
 		double                                phase )
 {
 	BelowCosinePlane* self = (BelowCosinePlane*) _BelowCosinePlane_DefaultNew( name );
@@ -73,7 +73,7 @@
 		offset,
 		width,
 		delta,
-		preiod,
+		period,
 		phase ) ;
 	return self;
 }
@@ -122,13 +122,13 @@
 	return self;
 }
 
-void _BelowCosinePlane_Init( void* belowPlane, double offset, XYZ width, double delta, double preiod, double phase ) {
+void _BelowCosinePlane_Init( void* belowPlane, double offset, XYZ width, double delta, double period, double phase ) {
 	BelowCosinePlane* self = (BelowCosinePlane*)belowPlane;
 
 	_BelowPlane_Init( self, offset, width );	
 	self->delta = delta;
-	self->preiod = preiod;
-	self->radPreiod = 2 * M_PI * preiod;
+	self->period = period;
+	self->radPeriod = M_PI * period / 180.0;
 	self->phase = phase;
 }
 
@@ -143,13 +143,13 @@
 		double                                offset, 
 		XYZ                                   width,
 		double                                delta,
-		double                                preiod,
+		double                                period,
 		double                                phase )
 {
 	BelowCosinePlane* self = (BelowCosinePlane*)belowPlane;
 
 	BelowPlane_InitAll( self, dim, centre, alpha, beta, gamma, offset, width );
-	_BelowCosinePlane_Init( self, offset, width, delta, preiod, phase );
+	_BelowCosinePlane_Init( self, offset, width, delta, period, phase );
 }
 	
 
@@ -181,7 +181,7 @@
 	newBelowCosinePlane = (BelowCosinePlane*)_BelowPlane_Copy( self, dest, deep, nameExt, ptrMap );
 
 	newBelowCosinePlane->delta = self->delta;
-	newBelowCosinePlane->preiod = self->preiod;
+	newBelowCosinePlane->period = self->period;
 	newBelowCosinePlane->phase = self->phase;
 	
 	return (void*)newBelowCosinePlane;
@@ -209,16 +209,16 @@
 void _BelowCosinePlane_Construct( void* belowPlane, Stg_ComponentFactory* cf ) {
 	BelowCosinePlane*	             self          = (BelowCosinePlane*) belowPlane;
 	double                       delta;
-	double                       preiod;
+	double                       period;
 	double                       phase;
 
 	_BelowPlane_Construct( self, cf );
 
 	delta = Stg_ComponentFactory_GetDouble( cf, self->name, "delta", 0.5 );
-	preiod = Stg_ComponentFactory_GetDouble( cf, self->name, "preiod", 1.0 );
+	period = Stg_ComponentFactory_GetDouble( cf, self->name, "period", 1.0 );
 	phase = Stg_ComponentFactory_GetDouble( cf, self->name, "phase", 0.0 );
 
-	_BelowCosinePlane_Init( self, self->offset, self->width, delta, preiod, phase );
+	_BelowCosinePlane_Init( self, self->offset, self->width, delta, period, phase );
 }
 
 void _BelowCosinePlane_Build( void* belowPlane, void* data ) {
@@ -261,7 +261,7 @@
 
 	x = newCoord[ I_AXIS ];
 
-	y = self->offset + self->delta * cos( self->radPreiod * ( x + self->phase ) );
+	y = self->offset + self->delta * cos( ( self->radPeriod * x ) + self->phase );
 
 	if ( fabs( newCoord[ J_AXIS ] < y) ) {
 		return True;
@@ -273,14 +273,21 @@
 	BelowCosinePlane* self = (BelowCosinePlane*)belowPlane;
 	double volume;
 
-	double numRepeat;
-
 	if ( self->dim == 2 ) {
-		/* This does not work properly if phase is non-zero */
-		numRepeat = self->width[ I_AXIS ] / ( self->preiod * 4.0 );
-		volume = (self->offset * self->width[ I_AXIS ]) + 
-			 numRepeat * self->delta * 
-			 ( sin( self->radPreiod * ( self->width[ I_AXIS ] + self->phase ) ) - sin( self->radPreiod * ( self->phase ) ) );
+		/*
+		 * y = delta * cos( radPeriod * x + phase ) + offset
+		 *
+		 * A = [ (delta/radPeriod) * sin( radPeriod * x + phase ) + offset * x ] (from phase to width)
+		 */
+		volume =
+		( 
+			( self->delta / self->radPeriod ) * sin( (self->radPeriod * self->width[ I_AXIS ]) + self->phase ) + 
+			( self->offset * self->width[ I_AXIS ] ) 
+		)
+		-
+		(
+			( self->delta / self->radPeriod ) * sin( self->phase ) + ( self->offset * self->phase ) 
+		);
 	}
 	else {
 		/* does not work in 3D right now...work out the integral later */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/BelowCosinePlane.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/BelowCosinePlane.h	2006-07-06 09:05:58 UTC (rev 3937)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/BelowCosinePlane.h	2006-07-06 09:06:03 UTC (rev 3938)
@@ -49,8 +49,8 @@
 		/* Virtual Info */\
 		\
 		double                  delta;  \
-		double                  preiod; \
-		double                  radPreiod; \
+		double                  period; \
+		double                  radPeriod; \
 		double                  phase;
 
 	struct BelowCosinePlane { __BelowCosinePlane };
@@ -75,7 +75,7 @@
 		Stg_Shape_CalculateVolumeFunction*    _calculateVolume,
 		Name                                  name );
 	
-	void _BelowCosinePlane_Init( void* belowPlane, double offset, XYZ width, double delta, double preiod, double phase ) ;
+	void _BelowCosinePlane_Init( void* belowPlane, double offset, XYZ width, double delta, double period, double phase ) ;
 	void BelowCosinePlane_InitAll( 
 		void*                                 belowPlane, 
 		Dimension_Index                       dim, 
@@ -86,7 +86,7 @@
 		double                                offset,
 		XYZ                                   width,
 		double                                delta,
-		double                                preiod,
+		double                                period,
 		double                                phase );
 
 	/* Stg_Class_Delete BelowCosinePlane implementation */



More information about the cig-commits mailing list