[cig-commits] commit: Make condition functions handle "const double*" instead of node indexes.

Mercurial hg at geodynamics.org
Sun Oct 16 06:00:20 PDT 2011


changeset:   888:f0617aa2b46b
user:        Walter Landry <wlandry at caltech.edu>
date:        Sun Oct 16 05:57:38 2011 -0700
files:       Rheology/tests/LateralViscosityAnalytic/LateralViscosityAnalytic.cxx Rheology/tests/NonNewtonianShearSolution/NonNewtonianShearSolution.cxx SysTest/AnalyticPlugins/DepthDependentAnalytic3D/DepthDependentAnalytic3D.cxx SysTest/AnalyticPlugins/LateralViscosityAnalytic/LateralViscosityAnalytic.cxx SysTest/AnalyticPlugins/NonNewtonianShearSolution/NonNewtonianShearSolution.cxx SysTest/AnalyticPlugins/Trubitsyn2006/Trubitsyn2006.cxx SysTest/AnalyticPlugins/VelicIC/VelicIC.cxx SysTest/AnalyticPlugins/VelicIC/VelicIC.h SysTest/AnalyticPlugins/Velic_solA/Analytic_solA.cxx SysTest/AnalyticPlugins/Velic_solA/Analytic_solA.h SysTest/AnalyticPlugins/Velic_solA/solA.cxx SysTest/AnalyticPlugins/Velic_solB/Analytic_solB.cxx SysTest/AnalyticPlugins/Velic_solB/Analytic_solB.h SysTest/AnalyticPlugins/Velic_solB/solB.cxx SysTest/AnalyticPlugins/Velic_solC/Analytic_solC.cxx SysTest/AnalyticPlugins/Velic_solC/Analytic_solC.h SysTest/AnalyticPlugins/Velic_solC/solC.cxx SysTest/AnalyticPlugins/Velic_solCA/Analytic_solCA.cxx SysTest/AnalyticPlugins/Velic_solCA/Analytic_solCA.h SysTest/AnalyticPlugins/Velic_solCA/solCA.cxx SysTest/AnalyticPlugins/Velic_solCx/Analytic_solCx.cxx SysTest/AnalyticPlugins/Velic_solCx/Analytic_solCx.h SysTest/AnalyticPlugins/Velic_solCx/solCx.cxx SysTest/AnalyticPlugins/Velic_solDA/Analytic_solDA.cxx SysTest/AnalyticPlugins/Velic_solDA/Analytic_solDA.h SysTest/AnalyticPlugins/Velic_solDA/solDA.cxx SysTest/AnalyticPlugins/Velic_solE/Analytic_solE.cxx SysTest/AnalyticPlugins/Velic_solE/Analytic_solE.h SysTest/AnalyticPlugins/Velic_solE/solE.cxx SysTest/AnalyticPlugins/Velic_solF/Analytic_solF.cxx SysTest/AnalyticPlugins/Velic_solF/Analytic_solF.h SysTest/AnalyticPlugins/Velic_solF/solF.cxx SysTest/AnalyticPlugins/Velic_solG/Analytic_solG.cxx SysTest/AnalyticPlugins/Velic_solG/Analytic_solG.h SysTest/AnalyticPlugins/Velic_solG/solG.cxx SysTest/AnalyticPlugins/Velic_solH/Analytic_solH.cxx SysTest/AnalyticPlugins/Velic_solH/Analytic_solH.h SysTest/AnalyticPlugins/Velic_solH/solH.cxx SysTest/AnalyticPlugins/Velic_solHA/Analytic_solHA.cxx SysTest/AnalyticPlugins/Velic_solHA/Analytic_solHA.h SysTest/AnalyticPlugins/Velic_solHA/solHA.cxx SysTest/AnalyticPlugins/Velic_solHAy/Analytic_solHAy.cxx SysTest/AnalyticPlugins/Velic_solHAy/Analytic_solHAy.h SysTest/AnalyticPlugins/Velic_solHAy/solHAy.cxx SysTest/AnalyticPlugins/Velic_solHy/Analytic_solHy.cxx SysTest/AnalyticPlugins/Velic_solHy/Analytic_solHy.h SysTest/AnalyticPlugins/Velic_solI/Analytic_solI.cxx SysTest/AnalyticPlugins/Velic_solI/Analytic_solI.h SysTest/AnalyticPlugins/Velic_solI/solI.cxx SysTest/AnalyticPlugins/Velic_solIA/Analytic_solIA.cxx SysTest/AnalyticPlugins/Velic_solIA/Analytic_solIA.h SysTest/AnalyticPlugins/Velic_solIA/solIA.cxx SysTest/AnalyticPlugins/Velic_solJ/Analytic_solJ.cxx SysTest/AnalyticPlugins/Velic_solJ/Analytic_solJ.h SysTest/AnalyticPlugins/Velic_solJ/solJ.cxx SysTest/AnalyticPlugins/Velic_solJA/Analytic_solJA.cxx SysTest/AnalyticPlugins/Velic_solJA/Analytic_solJA.h SysTest/AnalyticPlugins/Velic_solJA/solJA.cxx SysTest/AnalyticPlugins/Velic_solKx/Analytic_solKx.cxx SysTest/AnalyticPlugins/Velic_solKx/Analytic_solKx.h SysTest/AnalyticPlugins/Velic_solKx/solKx.cxx SysTest/AnalyticPlugins/Velic_solKz/Analytic_solKz.cxx SysTest/AnalyticPlugins/Velic_solKz/Analytic_solKz.h SysTest/AnalyticPlugins/Velic_solKz/solKz.cxx SysTest/AnalyticPlugins/Velic_solL/Analytic_solL.cxx SysTest/AnalyticPlugins/Velic_solL/Analytic_solL.h SysTest/AnalyticPlugins/Velic_solL/solL.cxx SysTest/AnalyticPlugins/Velic_solS/Analytic_solS.cxx SysTest/AnalyticPlugins/Velic_solS/Analytic_solS.h SysTest/AnalyticPlugins/Velic_solS/solS.cxx plugins/IncompressibleExtensionBC/IncompressibleExtensionBC.cxx plugins/MovingMesh/tests/plugins/testMovingMesh.cxx plugins/VariableConditions/ShapeFemIC/ShapeFemIC.cxx
description:
Make condition functions handle "const double*" instead of node indexes.


diff -r a3a5956268a8 -r f0617aa2b46b Rheology/tests/LateralViscosityAnalytic/LateralViscosityAnalytic.cxx
--- a/Rheology/tests/LateralViscosityAnalytic/LateralViscosityAnalytic.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/Rheology/tests/LateralViscosityAnalytic/LateralViscosityAnalytic.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -69,7 +69,7 @@ typedef struct {
  *  Shijie Zhong. Analytic solutions for Stokes' flow with lateral variations in viscosity. Geophys. J. Int., 124:18-28, 1996.
  *  All equations refer to this paper */
 
-void LateralViscosityAnalytic_TemperatureIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void LateralViscosityAnalytic_TemperatureIC(const double *coord, void* _context, void* _result ) {
 	DomainContext*  context            = (DomainContext*)_context;
 	FeVariable*             temperatureField   = (FeVariable*) FieldVariable_Register_GetByName( context->fieldVariable_Register, "TemperatureField" );
 	FeMesh* 		mesh               = temperatureField->feMesh;
@@ -85,9 +85,6 @@ void LateralViscosityAnalytic_Temperatur
 	Coord			min, max;
 	double                  L;
 	
-	/* Find coordinate of node */
-	coord = Mesh_GetVertex( mesh, node_lI );
-
 	/* Make sure that the box has right dimensions */
 	Mesh_GetGlobalCoordRange( mesh, min, max );
 	assert( ( max[ J_AXIS ] - min[ J_AXIS ] - 1.0 ) < SMALL );
diff -r a3a5956268a8 -r f0617aa2b46b Rheology/tests/NonNewtonianShearSolution/NonNewtonianShearSolution.cxx
--- a/Rheology/tests/NonNewtonianShearSolution/NonNewtonianShearSolution.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/Rheology/tests/NonNewtonianShearSolution/NonNewtonianShearSolution.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -22,7 +22,7 @@ typedef struct {
 
 const Type NonNewtonianShearSolution_Type = "NonNewtonianShearSolution";
 
-void NonNewtonianShearSolution_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void NonNewtonianShearSolution_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double* coord, double* velocity ) {
 	NonNewtonianShearSolution*   self = (NonNewtonianShearSolution*)analyticSolution;
 	double                       height;
 	double			     min[3], max[3];
@@ -35,7 +35,7 @@ void NonNewtonianShearSolution_VelocityF
 	velocity[ J_AXIS ] = 0.0;
 }
 
-void NonNewtonianShearSolution_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void NonNewtonianShearSolution_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double* coord, double* strainRate ) {
 	NonNewtonianShearSolution*   self = (NonNewtonianShearSolution*)analyticSolution;
 	double                       height;
 	double			     min[3], max[3];
@@ -49,7 +49,7 @@ void NonNewtonianShearSolution_StrainRat
 	strainRate[ 2 ] = 0.5 * self->velocityTopOfBox / height;
 }
 
-void NonNewtonianShearSolution_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void NonNewtonianShearSolution_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double* coord, double* stress ) {
 	NonNewtonianShearSolution*   self = (NonNewtonianShearSolution*)analyticSolution;
 	double                         eta;
 	double                         height;
@@ -73,7 +73,7 @@ void NonNewtonianShearSolution_StressFun
 }
 
 
-void NonNewtonianShearSolution_ViscosityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* viscosity ) {
+void NonNewtonianShearSolution_ViscosityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double* coord, double* viscosity ) {
 	NonNewtonianShearSolution*     self = (NonNewtonianShearSolution*)analyticSolution;
 	double                         eta0;
 	double                         height;
@@ -94,7 +94,7 @@ void NonNewtonianShearSolution_UpdateVel
 	self->velocityTopOfBox += context->dt;
 }
 
-void NonNewtonianShearSolution_VelocityBC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void NonNewtonianShearSolution_VelocityBC(const double *coord, void* _context, void* _result ) {
 	FiniteElementContext *	         context       = (FiniteElementContext*)_context;
 	NonNewtonianShearSolution*   self          = (NonNewtonianShearSolution*) LiveComponentRegister_Get( context->CF->LCRegister, (Name)NonNewtonianShearSolution_Type );
 	double*                          result        = (double* ) _result;
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/DepthDependentAnalytic3D/DepthDependentAnalytic3D.cxx
--- a/SysTest/AnalyticPlugins/DepthDependentAnalytic3D/DepthDependentAnalytic3D.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/DepthDependentAnalytic3D/DepthDependentAnalytic3D.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -64,51 +64,51 @@ typedef struct {
 	double                          V0;
 } DepthDependentAnalytic3D;
 
-void DepthDependentAnalytic3D_ViscosityFunc_Isoviscous( void* analyticSolution, double* coord, double* eta ) {
+void DepthDependentAnalytic3D_ViscosityFunc_Isoviscous( void* analyticSolution, const double* coord, double* eta ) {
 	*eta = 1.0;
 }
-void DepthDependentAnalytic3D_ViscosityDerivativeFunc_Isoviscous( void* analyticSolution, double* coord, double* d_eta_dy ) {
+void DepthDependentAnalytic3D_ViscosityDerivativeFunc_Isoviscous( void* analyticSolution, const double* coord, double* d_eta_dy ) {
 	*d_eta_dy = 0.0;
 }
-void DepthDependentAnalytic3D_Viscosity2ndDerivativeFunc_Isoviscous( void* analyticSolution, double* coord, double* d2_eta_dy2 ) {
+void DepthDependentAnalytic3D_Viscosity2ndDerivativeFunc_Isoviscous( void* analyticSolution, const double* coord, double* d2_eta_dy2 ) {
 	*d2_eta_dy2 = 0.0;
 }
 
-void DepthDependentAnalytic3D_ViscosityFunc_Linear( void* analyticSolution, double* coord, double* eta ) {
+void DepthDependentAnalytic3D_ViscosityFunc_Linear( void* analyticSolution, const double* coord, double* eta ) {
 	double y = coord[ J_AXIS ];
 	*eta = 2.0 - y;
 }
-void DepthDependentAnalytic3D_ViscosityDerivativeFunc_Linear( void* analyticSolution, double* coord, double* d_eta_dy ) {
+void DepthDependentAnalytic3D_ViscosityDerivativeFunc_Linear( void* analyticSolution, const double* coord, double* d_eta_dy ) {
 	*d_eta_dy = -1.0;
 }
-void DepthDependentAnalytic3D_Viscosity2ndDerivativeFunc_Linear( void* analyticSolution, double* coord, double* d2_eta_dy2 ) {
+void DepthDependentAnalytic3D_Viscosity2ndDerivativeFunc_Linear( void* analyticSolution, const double* coord, double* d2_eta_dy2 ) {
 	*d2_eta_dy2 = 0.0;
 }
-void DepthDependentAnalytic3D_ViscosityFunc_Exponential( void* analyticSolution, double* coord, double* eta ) {
+void DepthDependentAnalytic3D_ViscosityFunc_Exponential( void* analyticSolution, const double* coord, double* eta ) {
 	double y = coord[ J_AXIS ];
 	*eta = exp( 1.0 - y );
 }
-void DepthDependentAnalytic3D_ViscosityDerivativeFunc_Exponential( void* analyticSolution, double* coord, double* d_eta_dy ) {
+void DepthDependentAnalytic3D_ViscosityDerivativeFunc_Exponential( void* analyticSolution, const double* coord, double* d_eta_dy ) {
 	double y = coord[ J_AXIS ];
 	*d_eta_dy = - exp( 1.0 - y );
 }
-void DepthDependentAnalytic3D_Viscosity2ndDerivativeFunc_Exponential( void* analyticSolution, double* coord, double* d2_eta_dy2 ) {
+void DepthDependentAnalytic3D_Viscosity2ndDerivativeFunc_Exponential( void* analyticSolution, const double* coord, double* d2_eta_dy2 ) {
 	double y = coord[ J_AXIS ];
 	*d2_eta_dy2 = exp( 1.0 - y );
 }
-void DepthDependentAnalytic3D_ViscosityFunc_Exponential2( void* analyticSolution, double* coord, double* eta ) {
+void DepthDependentAnalytic3D_ViscosityFunc_Exponential2( void* analyticSolution, const double* coord, double* eta ) {
 	double y = coord[ J_AXIS ];
 	double viscosityContrast = 1e6;
 	double gamma = log(viscosityContrast);
 	*eta = viscosityContrast * exp( - gamma *( 1.0 - y ) );
 }
-void DepthDependentAnalytic3D_ViscosityDerivativeFunc_Exponential2( void* analyticSolution, double* coord, double* d_eta_dy ) {
+void DepthDependentAnalytic3D_ViscosityDerivativeFunc_Exponential2( void* analyticSolution, const double* coord, double* d_eta_dy ) {
 	double y = coord[ J_AXIS ];
 	double viscosityContrast = 1e6;
 	double gamma = log(viscosityContrast);
 	*d_eta_dy = viscosityContrast * gamma * exp( - gamma *( 1.0 - y ) );
 }
-void DepthDependentAnalytic3D_Viscosity2ndDerivativeFunc_Exponential2( void* analyticSolution, double* coord, double* d2_eta_dy2 ) {
+void DepthDependentAnalytic3D_Viscosity2ndDerivativeFunc_Exponential2( void* analyticSolution, const double* coord, double* d2_eta_dy2 ) {
 	double y = coord[ J_AXIS ];
 	double viscosityContrast = 1e6;
 	double gamma = log(viscosityContrast);
@@ -116,7 +116,7 @@ void DepthDependentAnalytic3D_Viscosity2
 }
 
 
-void _DepthDependentAnalytic3D_TemperatureFunction( void* analyticSolution, double* coord, double* temperature ) {
+void _DepthDependentAnalytic3D_TemperatureFunction( void* analyticSolution, const double* coord, double* temperature ) {
 	DepthDependentAnalytic3D* self            = (DepthDependentAnalytic3D*)analyticSolution;
 	double                 x; 
 	double                 y;
@@ -142,7 +142,7 @@ void _DepthDependentAnalytic3D_Temperatu
 	*temperature = 1 - y + perturbation;
 }
 
-void _DepthDependentAnalytic3D_VelocityFunction( void* analyticSolution, double* coord, double* velocity ) {
+void _DepthDependentAnalytic3D_VelocityFunction( void* analyticSolution, const double* coord, double* velocity ) {
 	DepthDependentAnalytic3D* self            = (DepthDependentAnalytic3D*)analyticSolution;
 	double                 V0                 = self->V0;
 	double                 x; 
@@ -160,13 +160,13 @@ void _DepthDependentAnalytic3D_VelocityF
 	velocity[ K_AXIS ] =          V0 * cos( M_PI * x ) * cos( M_PI * y ) * sin( M_PI * z ) ;
 }
 
-void _DepthDependentAnalytic3D_ViscosityFunction( void* analyticSolution, double* coord, double* viscosity ) {
+void _DepthDependentAnalytic3D_ViscosityFunction( void* analyticSolution, const double* coord, double* viscosity ) {
 	DepthDependentAnalytic3D* self            = (DepthDependentAnalytic3D*)analyticSolution;
 
 	self->viscosityFunc( self, coord, viscosity );
 }
 
-void _DepthDependentAnalytic3D_PressureFunction( void* analyticSolution, double* coord, double* pressure ) {
+void _DepthDependentAnalytic3D_PressureFunction( void* analyticSolution, const double* coord, double* pressure ) {
 	DepthDependentAnalytic3D* self            = (DepthDependentAnalytic3D*)analyticSolution;
 	double                 x; 
 	double                 y;
@@ -192,30 +192,19 @@ void _DepthDependentAnalytic3D_PressureF
 	*pressure = V0 * cos( M_PI * x ) * cos( M_PI * z ) * ( 3.0 * eta * M_PI * cos( M_PI * y ) - d_eta_dy * sin( M_PI * y ) ) + f;
 }
 
-void DepthDependentAnalytic3D_TemperatureIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void DepthDependentAnalytic3D_TemperatureIC(const double *coord, void* _context, void* _result ) {
 	DomainContext*         context            = (DomainContext*)_context;
-	FeVariable*            temperatureField   = (FeVariable*) FieldVariable_Register_GetByName( context->fieldVariable_Register, "TemperatureField" );
-	FeMesh*                mesh               = temperatureField->feMesh;
 	double*                temperature        = (double*) _result;
-	double*                coord;
 	DepthDependentAnalytic3D*  self           = Stg_ComponentFactory_ConstructByName( context->CF, (Name)DepthDependentAnalytic3D_Type, DepthDependentAnalytic3D, True, context  );
 	
-	/* Find coordinate of node */
-	coord = Mesh_GetVertex( mesh, node_lI );
 	
 	_DepthDependentAnalytic3D_TemperatureFunction( self, coord, temperature );
 }
 
-void DepthDependentAnalytic3D_PressureIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void DepthDependentAnalytic3D_PressureIC(const double *coord, void* _context, void* _result ) {
 	DomainContext*         context            = (DomainContext*)_context;
-	FeVariable*            PressureField      = (FeVariable*) FieldVariable_Register_GetByName( context->fieldVariable_Register, "PressureField" );
-	FeMesh*                mesh               = PressureField->feMesh;
 	double*                pressure           = (double*) _result;
-	double*                coord;
 	DepthDependentAnalytic3D*  self           = Stg_ComponentFactory_ConstructByName( context->CF, (Name)DepthDependentAnalytic3D_Type, DepthDependentAnalytic3D, True, context  );
-	
-	/* Find coordinate of node */
-	coord = Mesh_GetVertex( mesh, node_lI );
 	
 	_DepthDependentAnalytic3D_PressureFunction( self, coord, pressure );
 }
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/LateralViscosityAnalytic/LateralViscosityAnalytic.cxx
--- a/SysTest/AnalyticPlugins/LateralViscosityAnalytic/LateralViscosityAnalytic.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/LateralViscosityAnalytic/LateralViscosityAnalytic.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -69,7 +69,7 @@ typedef struct {
  *  Shijie Zhong. Analytic solutions for Stokes' flow with lateral variations in viscosity. Geophys. J. Int., 124:18-28, 1996.
  *  All equations refer to this paper */
 
-void LateralViscosityAnalytic_TemperatureIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void LateralViscosityAnalytic_TemperatureIC(const double *coord, void* _context, void* _result ) {
 	DomainContext*  	context            = (DomainContext*)_context;
 	FeVariable*             temperatureField   = (FeVariable*) FieldVariable_Register_GetByName( context->fieldVariable_Register, "TemperatureField" );
 	FeMesh* 		mesh               = temperatureField->feMesh;
@@ -85,9 +85,6 @@ void LateralViscosityAnalytic_Temperatur
 	Coord			min, max;
 	double                  L;
 	
-	/* Find coordinate of node */
-	coord = Mesh_GetVertex( mesh, node_lI );
-
 	/* Make sure that the box has right dimensions */
 	Mesh_GetGlobalCoordRange( mesh, min, max );
 	assert( ( max[ J_AXIS ] - min[ J_AXIS ] - 1.0 ) < SMALL );
@@ -105,7 +102,7 @@ void LateralViscosityAnalytic_Temperatur
 	*result = sin( ky * y ) * cos( kx * x  );
 }
 
-void _LateralViscosityAnalytic_VelocityFunction( void* analyticSolution, double* coord, double* velocity ) {
+void _LateralViscosityAnalytic_VelocityFunction( void* analyticSolution, const double *coord, double* velocity ) {
 	LateralViscosityAnalytic*         self               = (LateralViscosityAnalytic*)analyticSolution;
 	FeMesh*			mesh = self->elementMesh;
 	Coord			min, max;
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/NonNewtonianShearSolution/NonNewtonianShearSolution.cxx
--- a/SysTest/AnalyticPlugins/NonNewtonianShearSolution/NonNewtonianShearSolution.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/NonNewtonianShearSolution/NonNewtonianShearSolution.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -24,7 +24,7 @@ const Type NonNewtonianShearSolution_Typ
 
 double NonNewtonianShearSolution_Dt( FiniteElementContext* context ) { return 0.01; }
 
-void NonNewtonianShearSolution_VelocityFunction( void* analyticSolution, double* coord, double* velocity ) {
+void NonNewtonianShearSolution_VelocityFunction( void* analyticSolution, const double* coord, double* velocity ) {
 	NonNewtonianShearSolution*   self = (NonNewtonianShearSolution*)analyticSolution;
 	double                       height;
 	double			     min[3], max[3];
@@ -37,7 +37,7 @@ void NonNewtonianShearSolution_VelocityF
 	velocity[ J_AXIS ] = 0.0;
 }
 
-void NonNewtonianShearSolution_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate ) {
+void NonNewtonianShearSolution_StrainRateFunction( void* analyticSolution, const double* coord, double* strainRate ) {
 	NonNewtonianShearSolution*   self = (NonNewtonianShearSolution*)analyticSolution;
 	double                       height;
 	double			     min[3], max[3];
@@ -51,7 +51,7 @@ void NonNewtonianShearSolution_StrainRat
 	strainRate[ 2 ] = 0.5 * self->velocityTopOfBox / height;
 }
 
-void NonNewtonianShearSolution_StressFunction( void* analyticSolution, double* coord, double* stress ) {
+void NonNewtonianShearSolution_StressFunction( void* analyticSolution, const double* coord, double* stress ) {
 	NonNewtonianShearSolution*   self = (NonNewtonianShearSolution*)analyticSolution;
 	double                         eta;
 	double                         height;
@@ -75,7 +75,7 @@ void NonNewtonianShearSolution_StressFun
 }
 
 
-void NonNewtonianShearSolution_ViscosityFunction( void* analyticSolution, double* coord, double* viscosity ) {
+void NonNewtonianShearSolution_ViscosityFunction( void* analyticSolution, const double* coord, double* viscosity ) {
 	NonNewtonianShearSolution*     self = (NonNewtonianShearSolution*)analyticSolution;
 	double                         eta0;
 	double                         height;
@@ -96,7 +96,7 @@ void NonNewtonianShearSolution_UpdateVel
 	self->velocityTopOfBox += context->dt;
 }
 
-void NonNewtonianShearSolution_VelocityBC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void NonNewtonianShearSolution_VelocityBC(const double *coord, void* _context, void* _result ) {
 	FiniteElementContext*		context       = (FiniteElementContext*)_context;
 	NonNewtonianShearSolution*	self          = (NonNewtonianShearSolution*) LiveComponentRegister_Get( context->CF->LCRegister, (Name)NonNewtonianShearSolution_Type );
 	double*				result        = (double* ) _result;
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Trubitsyn2006/Trubitsyn2006.cxx
--- a/SysTest/AnalyticPlugins/Trubitsyn2006/Trubitsyn2006.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Trubitsyn2006/Trubitsyn2006.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -84,34 +84,34 @@ double Trubitsyn_GDeriv( double x, doubl
 	return 2.0 * a * pow( exp( a * ( x - x0 ) ) + exp( -a * ( x - x0 ) ), -2.0 );
 }
 
-void _Trubitsyn2006_ViscosityFunc_Isoviscous( void* analyticSolution, double* coord, double* eta ) {
+void _Trubitsyn2006_ViscosityFunc_Isoviscous( void* analyticSolution, const double* coord, double* eta ) {
 	*eta = 1.0;
 }
-void _Trubitsyn2006_ViscosityDerivativeFunc_Isoviscous( void* analyticSolution, double* coord, double* viscDeriv ) {
+void _Trubitsyn2006_ViscosityDerivativeFunc_Isoviscous( void* analyticSolution, const double* coord, double* viscDeriv ) {
 	viscDeriv[0] = 0.0;
 	viscDeriv[1] = 0.0;
 }
-void _Trubitsyn2006_ViscosityFunc_Model1( void* analyticSolution, double* coord, double* eta ) {
+void _Trubitsyn2006_ViscosityFunc_Model1( void* analyticSolution, const double* coord, double* eta ) {
 	*eta = 1.0 + 100.0 * coord[ I_AXIS ] * coord[ J_AXIS ];
 }
-void _Trubitsyn2006_ViscosityDerivativeFunc_Model1( void* analyticSolution, double* coord, double* viscDeriv ) {
+void _Trubitsyn2006_ViscosityDerivativeFunc_Model1( void* analyticSolution, const double* coord, double* viscDeriv ) {
 	viscDeriv[0] = 100.0 * coord[ J_AXIS ];
 	viscDeriv[1] = 100.0 * coord[ I_AXIS ];
 }
-void _Trubitsyn2006_ViscosityFunc_Model2( void* analyticSolution, double* coord, double* eta ) {
+void _Trubitsyn2006_ViscosityFunc_Model2( void* analyticSolution, const double* coord, double* eta ) {
 //	*eta = 999.0 * ( 1.0 - Trubitsyn_G( coord[ I_AXIS ], 0.5, 50 ) ) + 1;
 	*eta = ( coord[ I_AXIS ] <= 0.5 ? 1000.0 : 1 );
 }
-void _Trubitsyn2006_ViscosityDerivativeFunc_Model2( void* analyticSolution, double* coord, double* viscDeriv ) {
+void _Trubitsyn2006_ViscosityDerivativeFunc_Model2( void* analyticSolution, const double* coord, double* viscDeriv ) {
 //	viscDeriv[0] = -999.0 * Trubitsyn_GDeriv( coord[ I_AXIS ], 0.5, 50 );
 	viscDeriv[0] = 0.0;
 	viscDeriv[1] = 0.0;
 }
-void _Trubitsyn2006_ViscosityFunc_Model3( void* analyticSolution, double* coord, double* eta ) {
+void _Trubitsyn2006_ViscosityFunc_Model3( void* analyticSolution, const double* coord, double* eta ) {
 	//*eta = 999.0 * ( 1.0 - Trubitsyn_G( coord[ J_AXIS ], 0.5, 50 ) ) + 1;
 	*eta = ( coord[ J_AXIS ] <= 0.5 ? 1000.0 : 1 );
 }
-void _Trubitsyn2006_ViscosityDerivativeFunc_Model3( void* analyticSolution, double* coord, double* viscDeriv ) {
+void _Trubitsyn2006_ViscosityDerivativeFunc_Model3( void* analyticSolution, const double* coord, double* viscDeriv ) {
 	viscDeriv[0] = 0.0;
 	viscDeriv[1] = 0.0;
 //	viscDeriv[1] = -999.0 * Trubitsyn_GDeriv( coord[ J_AXIS ], 0.5, 50 );
@@ -128,7 +128,7 @@ double Trubitsyn2006_V0( void* analyticS
 }
 
 
-void _Trubitsyn2006_VelocityFunction( void* analyticSolution, double* coord, double* velocity ) {
+void _Trubitsyn2006_VelocityFunction( void* analyticSolution, const double* coord, double* velocity ) {
 	Trubitsyn2006*         self               = (Trubitsyn2006*)analyticSolution;
 	double                 v0                 = Trubitsyn2006_V0( self );
 	double                 x; 
@@ -143,13 +143,13 @@ void _Trubitsyn2006_VelocityFunction( vo
 	velocity[ I_AXIS ] = - v0 * cos( M_PI * y ) * sin( M_PI * x );         /* Equation 32 */
 }
 
-void _Trubitsyn2006_ViscosityFunction( void* analyticSolution, double* coord, double* viscosity ) {
+void _Trubitsyn2006_ViscosityFunction( void* analyticSolution, const double* coord, double* viscosity ) {
 	Trubitsyn2006*         self               = (Trubitsyn2006*)analyticSolution;
 
 	self->viscosityFunc( self, coord, viscosity );
 }
 
-void _Trubitsyn2006_PressureFunction( void* analyticSolution, double* coord, double* pressure ) {
+void _Trubitsyn2006_PressureFunction( void* analyticSolution, const double* coord, double* pressure ) {
 	Trubitsyn2006*         self               = (Trubitsyn2006*)analyticSolution;
 	double                 T0                 = self->T0;
 	double                 Ra                 = self->Ra;
@@ -176,7 +176,7 @@ void _Trubitsyn2006_PressureFunction( vo
 	//printf("pressure from v0 = %g\n\n", *pressure );
 }
 
-void _Trubitsyn2006_StreamFunction( void* analyticSolution, double* coord, double* psi ) {
+void _Trubitsyn2006_StreamFunction( void* analyticSolution, const double* coord, double* psi ) {
 	Trubitsyn2006*         self               = (Trubitsyn2006*)analyticSolution;
 	double                 v0                 = Trubitsyn2006_V0( self );
 	double                 x; 
@@ -190,12 +190,11 @@ void _Trubitsyn2006_StreamFunction( void
 	*psi = - v0 / M_PI * sin( M_PI * y ) * sin( M_PI * x ) ;                                          /* Equation 40 */
 }
 
-void Trubitsyn2006_TemperatureIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void Trubitsyn2006_TemperatureIC(const double *coord, void* _context, void* _result ) {
 	DomainContext*         context            = (DomainContext*)_context;
 	FeVariable*            temperatureField   = (FeVariable*) FieldVariable_Register_GetByName( context->fieldVariable_Register, "TemperatureField" );
 	FeMesh*                mesh               = temperatureField->feMesh;
 	double*                temperature        = (double*) _result;
-	double*                coord;
 	double                 x; 
 	double                 y;
 	Trubitsyn2006*         self               = Stg_ComponentFactory_ConstructByName( context->CF, (Name)Trubitsyn2006_Type, Trubitsyn2006, True, context );
@@ -207,8 +206,6 @@ void Trubitsyn2006_TemperatureIC( Node_L
 	double                 d_eta_dy;
 	XYZ                    viscDeriv;
 	
-	/* Find coordinate of node */
-	coord = Mesh_GetVertex( mesh, node_lI );
 	Mesh_GetGlobalCoordRange( mesh, min, max );
 	x = coord[ I_AXIS ] - min[ I_AXIS ];
 	y = coord[ J_AXIS ] - min[ J_AXIS ];
@@ -224,16 +221,10 @@ void Trubitsyn2006_TemperatureIC( Node_L
 
 }
 
-void Trubitsyn2006_PressureIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void Trubitsyn2006_PressureIC(const double *coord, void* _context, void* _result ) {
 	DomainContext*         context            = (DomainContext*)_context;
-	FeVariable*            PressureField      = (FeVariable*) FieldVariable_Register_GetByName( context->fieldVariable_Register, "PressureField" );
-	FeMesh*                mesh               = PressureField->feMesh;
 	double*                pressure           = (double*) _result;
-	double*                coord;
 	Trubitsyn2006* self = Stg_ComponentFactory_ConstructByName( context->CF, (Name)Trubitsyn2006_Type, Trubitsyn2006, True, context  );
-	
-	/* Find coordinate of node */
-	coord = Mesh_GetVertex( mesh, node_lI );
 	
 	_Trubitsyn2006_PressureFunction( self,  coord,  pressure );
 }
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/VelicIC/VelicIC.cxx
--- a/SysTest/AnalyticPlugins/VelicIC/VelicIC.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/VelicIC/VelicIC.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -51,13 +51,12 @@ const Type Underworld_VelicIC_Type = "Un
 #define SMALL 1.0e-5
 
 /* Works with SolA */
-void Underworld_VelicIC_Sinusoidal( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void Underworld_VelicIC_Sinusoidal(const double *coord, void* _context, void* _result ) {
 	DomainContext*  context            = (DomainContext*)_context;
 	FeVariable*             temperatureField   = (FeVariable*) FieldVariable_Register_GetByName( context->fieldVariable_Register, "TemperatureField" );
 	FeMesh*			feMesh             = temperatureField->feMesh;
 	Dictionary*             dictionary         = context->dictionary;
 	double*                 result             = (double*) _result;
-	double*                 coord;
 	double                  x; 
 	double                  y;
 	double                  kx;
@@ -68,8 +67,6 @@ void Underworld_VelicIC_Sinusoidal( Node
 	double                  Lx;
 	double			min[3], max[3];
 	
-	/* Find coordinate of node */
-	coord = Mesh_GetVertex( feMesh, node_lI );
 	Mesh_GetGlobalCoordRange( feMesh, min, max );
 
 	/* Make sure that the box has right dimensions */
@@ -94,13 +91,12 @@ void Underworld_VelicIC_Sinusoidal( Node
 }
 
 /* Works with SolB */
-void Underworld_VelicIC_Hyperbolic( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void Underworld_VelicIC_Hyperbolic(const double *coord, void* _context, void* _result ) {
 	DomainContext*  context            = (DomainContext*)_context;
 	FeVariable*             temperatureField   = (FeVariable*) FieldVariable_Register_GetByName( context->fieldVariable_Register, "TemperatureField" );
 	FeMesh*			feMesh             = temperatureField->feMesh;
 	Dictionary*             dictionary         = context->dictionary;
 	double*                 result             = (double*) _result;
-	double*                 coord;
 	double                  x; 
 	double                  y;
 	double                  km; /*  for y-direction */
@@ -111,8 +107,6 @@ void Underworld_VelicIC_Hyperbolic( Node
 	double                  sigma;
 	double			min[3], max[3];
 	
-	/* Find coordinate of node */
-	coord = Mesh_GetVertex( feMesh, node_lI );
 	Mesh_GetGlobalCoordRange( feMesh, min, max );
 
 	/* Make sure that the box has right dimensions */
@@ -137,11 +131,8 @@ void Underworld_VelicIC_Hyperbolic( Node
 
 
 void _Underworld_VelicIC_AssignFromXML( void* component, Stg_ComponentFactory* cf, void* data ) {
-	AbstractContext*        context;
 	ConditionFunction*      condFunc;
 
-	context = (AbstractContext*)Stg_ComponentFactory_ConstructByName( cf, (Name)"context", AbstractContext, True, data  ); 
-	
 	condFunc = ConditionFunction_New( Underworld_VelicIC_Sinusoidal, (Name)"VelicIC_Sinusoidal" );
 	ConditionFunction_Register_Add( condFunc_Register, condFunc );
 	condFunc = ConditionFunction_New( Underworld_VelicIC_Hyperbolic, (Name)"VelicIC_Hyperbolic" );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/VelicIC/VelicIC.h
--- a/SysTest/AnalyticPlugins/VelicIC/VelicIC.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/VelicIC/VelicIC.h	Sun Oct 16 05:57:38 2011 -0700
@@ -57,8 +57,8 @@ typedef struct {
 	__Codelet
 } Underworld_VelicIC;
 
-void Underworld_VelicIC_Sinusoidal( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) ;
-void Underworld_VelicIC_Hyperbolic( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) ;
+void Underworld_VelicIC_Sinusoidal(const double *coord, void* _context, void* _result ) ;
+void Underworld_VelicIC_Hyperbolic(const double *coord, void* _context, void* _result ) ;
 
 void _Underworld_VelicIC_AssignFromXML( void* component, Stg_ComponentFactory* cf, void* data ) ;
 void* _Underworld_VelicIC_DefaultNew( Name name ) ;
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solA/Analytic_solA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solA/Analytic_solA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solA/Analytic_solA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,30 +45,30 @@
 
 const Type Underworld_solA_Type = "Underworld_Velic_solA";
 
-void _Velic_solutionA( double* pos, 
+void _Velic_solutionA( const double* pos, 
 		double sigma, double Z, int n, double km,
                        double* velocity, double* pressure, double* Tstress, double* strainRate );
 
-void Underworld_solA_PressureFunction( void* analyticSolution, double* coord, double* pressure ) {
+void Underworld_solA_PressureFunction( void* analyticSolution, const double* coord, double* pressure ) {
 	Underworld_solA* self = (Underworld_solA*) analyticSolution;
 	
 	_Velic_solutionA( coord, self->sigma, self->Z, self->n, self->km, NULL, pressure, NULL, NULL );
 }
 
-void Underworld_solA_VelocityFunction( void* analyticSolution, double* coord, double* velocity ) {
+void Underworld_solA_VelocityFunction( void* analyticSolution, const double* coord, double* velocity ) {
 	Underworld_solA* self = (Underworld_solA*) analyticSolution;
 	
 	_Velic_solutionA( coord, self->sigma, self->Z, self->n, self->km, velocity, NULL, NULL, NULL );
 }
 
-void Underworld_solA_StressFunction( void* analyticSolution, double* coord, double* stress ) {
+void Underworld_solA_StressFunction( void* analyticSolution, const double* coord, double* stress ) {
 	Underworld_solA* self = (Underworld_solA*) analyticSolution;
 	
 	_Velic_solutionA( coord, self->sigma, self->Z, self->n, self->km, NULL, NULL, stress, NULL );
 }
 
 
-void Underworld_solA_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate ) {
+void Underworld_solA_StrainRateFunction( void* analyticSolution, const double* coord, double* strainRate ) {
 	Underworld_solA* self = (Underworld_solA*) analyticSolution;
 	
 	_Velic_solutionA( coord, self->sigma, self->Z, self->n, self->km, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solA/Analytic_solA.h
--- a/SysTest/AnalyticPlugins/Velic_solA/Analytic_solA.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solA/Analytic_solA.h	Sun Oct 16 05:57:38 2011 -0700
@@ -17,10 +17,10 @@
 	} Underworld_solA;
 
 
-	void Underworld_solA_PressureFunction( void* analyticSolution, double* coord, double* pressure );
-	void Underworld_solA_VelocityFunction( void* analyticSolution, double* coord, double* velocity );
-	void Underworld_solA_StressFunction( void* analyticSolution, double* coord, double* stress );
-	void Underworld_solA_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate );
+	void Underworld_solA_PressureFunction( void* analyticSolution, const double* coord, double* pressure );
+	void Underworld_solA_VelocityFunction( void* analyticSolution, const double* coord, double* velocity );
+	void Underworld_solA_StressFunction( void* analyticSolution, const double* coord, double* stress );
+	void Underworld_solA_StrainRateFunction( void* analyticSolution, const double* coord, double* strainRate );
 
 	void _Velic_solA( double* pos, 
 		double sigma, double Z, int n, double km,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solA/solA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solA/solA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solA/solA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -3,7 +3,7 @@
 #include <stdio.h>
 #include <assert.h>
 
-void _Velic_solutionA( double* pos, 
+void _Velic_solutionA( const double* pos, 
 		double sigma, double Z, int n, double km,
 		double* velocity, double* pressure, double* Tstress, double* strainRate );
 
@@ -38,13 +38,13 @@ int main() {
 }
 #endif
 
-void _Velic_solutionA( double* pos, 
+void _Velic_solutionA( const double* pos, 
 		double sigma, double Z, int n, double km,
 		double* velocity, double* pressure,  double* Tstress, double* strainRate ) {
 	
 	double u1,u2,u3,u4,pp,txx;
 	double _C1,_C2,_C3,_C4;
-	double sum1,sum2,sum3,sum4,sum5,sum6,sum7,mag,x,z;
+	double sum1,sum2,sum3,sum4,sum5,sum6,sum7,x,z;
 	double ss,ss_z,ss_zz,ss_zzz,e_zz,e_xx,e_xz;
 	double t1,t3,t4,t5,t6,t7,t9,t10,t14,t15;
 	double t16,t17,t18,t19,t20,t21,t23,t24,t25,t26,t27,t29;
@@ -157,8 +157,8 @@ void _Velic_solutionA( double* pos,
 	 ss *= sin(kn*x); /* stream function */
 	 /* density/temp */
 	 sum7 += -sin(km*z)*cos(kn*x);
-	 mag=sqrt(sum1*sum1+sum2*sum2);
 
+	 // double mag=sqrt(sum1*sum1+sum2*sum2);
 //	 printf("%0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f\n",x,z,sum1,sum2,sum3,sum4,sum5,sum6,mag,sum7,e_zz,e_xx,e_xz,ss);
 
 	 if ( velocity != NULL ) {
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solB/Analytic_solB.cxx
--- a/SysTest/AnalyticPlugins/Velic_solB/Analytic_solB.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solB/Analytic_solB.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,26 +45,26 @@
 
 const Type Underworld_solB_Type = "Underworld_Velic_solB";
 
-void Underworld_solB_PressureFunction( void* analyticSolution, double* coord, double* pressure ) {
+void Underworld_solB_PressureFunction( void* analyticSolution, const double* coord, double* pressure ) {
 	Underworld_solB* self = (Underworld_solB*) analyticSolution;
 	
 	_Velic_solB( coord, self->sigma, self->Z, self->n, self->km, NULL, pressure, NULL, NULL );
 }
 
-void Underworld_solB_VelocityFunction( void* analyticSolution, double* coord, double* velocity ) {
+void Underworld_solB_VelocityFunction( void* analyticSolution, const double* coord, double* velocity ) {
 	Underworld_solB* self = (Underworld_solB*) analyticSolution;
 	
 	_Velic_solB( coord, self->sigma, self->Z, self->n, self->km, velocity, NULL, NULL, NULL );
 }
 
-void Underworld_solB_StressFunction( void* analyticSolution, double* coord, double* stress ) {
+void Underworld_solB_StressFunction( void* analyticSolution, const double* coord, double* stress ) {
 	Underworld_solB* self = (Underworld_solB*) analyticSolution;
 	
 	_Velic_solB( coord, self->sigma, self->Z, self->n, self->km, NULL, NULL, stress, NULL );
 }
 
 
-void Underworld_solB_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate ) {
+void Underworld_solB_StrainRateFunction( void* analyticSolution, const double* coord, double* strainRate ) {
 	Underworld_solB* self = (Underworld_solB*) analyticSolution;
 	
 	_Velic_solB( coord, self->sigma, self->Z, self->n, self->km, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solB/Analytic_solB.h
--- a/SysTest/AnalyticPlugins/Velic_solB/Analytic_solB.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solB/Analytic_solB.h	Sun Oct 16 05:57:38 2011 -0700
@@ -16,12 +16,12 @@
 		int n;
 	} Underworld_solB;
 
-	void Underworld_solB_PressureFunction( void* analyticSolution, double* coord, double* pressure );
-	void Underworld_solB_VelocityFunction( void* analyticSolution, double* coord, double* velocity );
-	void Underworld_solB_StressFunction( void* analyticSolution, double* coord, double* stress );
-	void Underworld_solB_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate );
+	void Underworld_solB_PressureFunction( void* analyticSolution, const double* coord, double* pressure );
+	void Underworld_solB_VelocityFunction( void* analyticSolution, const double* coord, double* velocity );
+	void Underworld_solB_StressFunction( void* analyticSolution, const double* coord, double* stress );
+	void Underworld_solB_StrainRateFunction( void* analyticSolution, const double* coord, double* strainRate );
 
-	void _Velic_solB( double* pos, 
+	void _Velic_solB( const double* pos, 
 		double sigma, double Z, int n, double km,
 		double* velocity, double* pressure, double* Tstress, double* strainRate );
 
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solB/solB.cxx
--- a/SysTest/AnalyticPlugins/Velic_solB/solB.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solB/solB.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -3,7 +3,7 @@
 #include <stdio.h>
 #include <assert.h>
 
-void _Velic_solB( double* pos,
+void _Velic_solB( const double* pos,
 		double sigma, double Z, int n, double km,
 		double* velocity, double* pressure, double* Tstress, double* strainRate );
 
@@ -36,13 +36,13 @@ int main() {
 }
 #endif
 
-void _Velic_solB( double* pos,
+void _Velic_solB( const double* pos,
 		double sigma, double Z, int n, double km,
 		double* velocity, double* pressure, double* Tstress, double* strainRate ) {
 
    double u1,u2,u3,u4,pp,txx;
    double _C1,_C2,_C3,_C4;
-   double sum1,sum2,sum3,sum4,sum5,sum6,sum7,mag,x,z;
+   double sum1,sum2,sum3,sum4,sum5,sum6,sum7,x,z;
    double kn;
    double ss,ss_z,ss_zz,ss_zzz,e_zz,e_xx,e_xz;
    double t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
@@ -157,7 +157,7 @@ void _Velic_solB( double* pos,
 	 /* density/temp */
 	 sum7 += -sigma*sinh(km*z)*cos(kn*x);
 
-	 mag=sqrt(sum1*sum1+sum2*sum2);
+	 // double mag=sqrt(sum1*sum1+sum2*sum2);
 	// printf("%0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f\n",x,z,sum1,sum2,sum3,sum4,sum5,sum6,mag,sum7,e_zz,e_xx,e_xz,ss);	    
 	 if ( velocity != NULL ) {
 		 velocity[0] = sum2;
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solC/Analytic_solC.cxx
--- a/SysTest/AnalyticPlugins/Velic_solC/Analytic_solC.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solC/Analytic_solC.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,26 +45,26 @@
 
 const Type Velic_solC_Type = "Underworld_Velic_solC";
 
-void Velic_solC_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solC_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solC* self = (Velic_solC*) analyticSolution;
 	
 	_Velic_solC( coord, self->sigma, self->eta, self->x_c, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solC_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solC_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solC* self = (Velic_solC*) analyticSolution;
 	
 	_Velic_solC( coord, self->sigma, self->eta, self->x_c, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solC_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solC_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solC* self = (Velic_solC*) analyticSolution;
 	
 	_Velic_solC( coord, self->sigma, self->eta, self->x_c, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solC_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solC_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solC* self = (Velic_solC*) analyticSolution;
 	
 	_Velic_solC( coord, self->sigma, self->eta, self->x_c, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solC/Analytic_solC.h
--- a/SysTest/AnalyticPlugins/Velic_solC/Analytic_solC.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solC/Analytic_solC.h	Sun Oct 16 05:57:38 2011 -0700
@@ -19,13 +19,13 @@
 	void _Velic_solC_Init( Velic_solC* self, double sigma, double eta, double x_c );
 	void _Velic_solC_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 
-	void Velic_solC_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solC_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solC_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solC_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solC_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solC_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solC_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solC_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solC( 
-		double pos[], 
+		const double pos[], 
 		double sigma, double eta, double x_c,
 		double vel[], double* presssure, 
 		double total_stress[], double strain_rate[] );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solC/solC.cxx
--- a/SysTest/AnalyticPlugins/Velic_solC/solC.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solC/solC.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -7,7 +7,7 @@
 #define FOURIER_TERMS 150
 
 void _Velic_solC( 
-		double pos[], 
+		const double pos[], 
 		double sigma, double eta, double x_c,
 		double vel[], double* presssure, 
 		double total_stress[], double strain_rate[] );
@@ -46,7 +46,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solC( 
-		double pos[],									/* coordinates */
+		const double pos[],									/* coordinates */
 		double _sigma, double _eta, double _x_c,		/* problem dependant inputs: density, viscosity, width of dense column */
 		double vel[], double* presssure, 				/* output: velocity, pressure */
 		double total_stress[], double strain_rate[] ) 	/* ouput: total stresss, strain rate */ 
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solCA/Analytic_solCA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solCA/Analytic_solCA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solCA/Analytic_solCA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,26 +45,26 @@
 
 const Type Velic_solCA_Type = "Underworld_Velic_solCA";
 
-void Velic_solCA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solCA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solCA* self = (Velic_solCA*) analyticSolution;
 	
 	_Velic_solCA( coord, self->sigma, self->eta, self->dx, self->x0, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solCA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solCA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solCA* self = (Velic_solCA*) analyticSolution;
 	
 	_Velic_solCA( coord, self->sigma, self->eta, self->dx, self->x0, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solCA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solCA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solCA* self = (Velic_solCA*) analyticSolution;
 	
 	_Velic_solCA( coord, self->sigma, self->eta, self->dx, self->x0, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solCA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solCA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solCA* self = (Velic_solCA*) analyticSolution;
 	
 	_Velic_solCA( coord, self->sigma, self->eta, self->dx, self->x0, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solCA/Analytic_solCA.h
--- a/SysTest/AnalyticPlugins/Velic_solCA/Analytic_solCA.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solCA/Analytic_solCA.h	Sun Oct 16 05:57:38 2011 -0700
@@ -21,13 +21,13 @@
 	void _Velic_solCA_Init( Velic_solCA* self, double sigma, double eta, double dx, double x0 ); 
 	void _Velic_solCA_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 
-	void Velic_solCA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solCA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solCA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solCA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solCA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solCA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solCA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solCA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solCA( 
-		double pos[], 
+		const double pos[], 
 		double _sigma, double _eta, double _dx, double _x_0,
 		double vel[], double* presssure, 
 		double total_stress[], double strain_rate[] );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solCA/solCA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solCA/solCA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solCA/solCA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -7,7 +7,7 @@
 
 
 void _Velic_solCA( 
-		double pos[], 
+		const double pos[], 
 		double _sigma, double _eta, double _dx, double _x_0,
 		double vel[], double* presssure, 
 		double total_stress[], double strain_rate[] );
@@ -46,7 +46,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solCA(
-		double pos[], 
+		const double pos[], 
 		double _sigma, double _eta, 	/* Input parameters: density, viscosity */
 		double _dx, double _x_0, 		/* Input parameters: width of the dense column, centre of the dense column */
 		double vel[], double* presssure, 
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solCx/Analytic_solCx.cxx
--- a/SysTest/AnalyticPlugins/Velic_solCx/Analytic_solCx.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solCx/Analytic_solCx.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -51,32 +51,32 @@
 
 const Type Underworld_solCx_Type = "Underworld_Velic_solCx";
 
-void Velic_solCx_PressureFunction( void* analyticSolution, double* coord, double* pressure ) {
+void Velic_solCx_PressureFunction( void* analyticSolution, const double* coord, double* pressure ) {
 	Velic_solCx* self = (Velic_solCx*) analyticSolution;
 	
 	_Velic_solCx( coord, self->etaA, self->etaB, self->xc, self->n, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solCx_VelocityFunction( void* analyticSolution, double* coord, double* velocity ) {
+void Velic_solCx_VelocityFunction( void* analyticSolution, const double* coord, double* velocity ) {
 	Velic_solCx* self = (Velic_solCx*) analyticSolution;
 	
 	_Velic_solCx( coord, self->etaA, self->etaB, self->xc, self->n, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solCx_StressFunction( void* analyticSolution, double* coord, double* stress ) {
+void Velic_solCx_StressFunction( void* analyticSolution, const double* coord, double* stress ) {
 	Velic_solCx* self = (Velic_solCx*) analyticSolution;
 	
 	_Velic_solCx( coord, self->etaA, self->etaB, self->xc, self->n, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solCx_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate ) {
+void Velic_solCx_StrainRateFunction( void* analyticSolution, const double* coord, double* strainRate ) {
 	Velic_solCx* self = (Velic_solCx*) analyticSolution;
 	
 	_Velic_solCx( coord, self->etaA, self->etaB, self->xc, self->n, NULL, NULL, NULL, strainRate );
 }
 
-void Velic_solCx_ViscosityFunction( void* analyticSolution, double* coord, double* viscosity ) {
+void Velic_solCx_ViscosityFunction( void* analyticSolution, const double* coord, double* viscosity ) {
 	Velic_solCx* self = (Velic_solCx*) analyticSolution;
 	
 	*viscosity = ( coord[ I_AXIS ] < self->xc ) ? self->etaA : self->etaB;
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solCx/Analytic_solCx.h
--- a/SysTest/AnalyticPlugins/Velic_solCx/Analytic_solCx.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solCx/Analytic_solCx.h	Sun Oct 16 05:57:38 2011 -0700
@@ -16,13 +16,13 @@
 	void _Underworld_solCx_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Underworld_solCx_Init( Velic_solCx* self, double etaA, double etaB, double xc, int n );
 
-	void Velic_solCx_PressureFunction( void* analyticSolution, double* coord, double* pressure );
-	void Velic_solCx_VelocityFunction( void* analyticSolution, double* coord, double* velocity );
-	void Velic_solCx_StressFunction( void* analyticSolution, double* coord, double* stress );
-	void Velic_solCx_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate );
+	void Velic_solCx_PressureFunction( void* analyticSolution, const double* coord, double* pressure );
+	void Velic_solCx_VelocityFunction( void* analyticSolution, const double* coord, double* velocity );
+	void Velic_solCx_StressFunction( void* analyticSolution, const double* coord, double* stress );
+	void Velic_solCx_StrainRateFunction( void* analyticSolution, const double* coord, double* strainRate );
 
 	void _Velic_solCx(
-		double pos[], 
+		const double pos[], 
 		double _eta_A, double _eta_B, 	/* Input parameters: density, viscosity A, viscosity B */
 		double _x_c, int _n, 			/* Input parameters: viscosity jump location, wavenumber in x */
 		double vel[], double* presssure, 
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solCx/solCx.cxx
--- a/SysTest/AnalyticPlugins/Velic_solCx/solCx.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solCx/solCx.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -7,7 +7,7 @@
 
 
 void _Velic_solCx( 
-		double pos[], 
+		const double pos[], 
 		double _eta_A, double _eta_B, 
 		double _x_c, int _n,
 		double vel[], double* presssure, 
@@ -48,14 +48,14 @@ int main( int argc, char **argv )
 */
 
 void _Velic_solCx(
-		double pos[], 
+		const double pos[], 
 		double _eta_A, double _eta_B, 	/* Input parameters: density, viscosity A, viscosity B */
 		double _x_c, int _n, 			/* Input parameters: viscosity jump location, wavenumber in x */
 		double vel[], double* presssure, 
 		double total_stress[], double strain_rate[] )
 {
 	double Z,u1,u2,u3,u4,u5,u6,ZA,ZB;
-	double sum1,sum2,sum3,sum4,sum5,sum6,mag,x,z,xc;
+	double sum1,sum2,sum3,sum4,sum5,sum6,x,z,xc;
 	double _C1A,_C2A,_C3A,_C4A,_C1B,_C2B,_C3B,_C4B,_C1,_C2,_C3,_C4;
 	int n,nx;
 	
@@ -2296,7 +2296,7 @@ void _Velic_solCx(
 	sum4 += u4;
 	
 	
-	mag=sqrt(sum1*sum1+sum2*sum2);
+	// double mag=sqrt(sum1*sum1+sum2*sum2);
 	/*printf("%0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f\n",x,z,sum1,sum2,sum3,sum4,sum5,sum6,mag);*/
 	
 	
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solDA/Analytic_solDA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solDA/Analytic_solDA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solDA/Analytic_solDA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,21 +45,21 @@
 
 const Type Velic_solDA_Type = "Underworld_Velic_solDA";
 
-void Velic_solDA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solDA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solDA* self = (Velic_solDA*) analyticSolution;
 	
 	_Velic_solDA( coord, self->sigma, self->etaA, self->etaB, self->zc, self->dx, self->x0,
 		       	NULL, pressure, NULL, NULL );
 }
 
-void Velic_solDA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solDA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solDA* self = (Velic_solDA*) analyticSolution;
 	
 	_Velic_solDA( coord, self->sigma, self->etaA, self->etaB, self->zc, self->dx, self->x0,
 		       	velocity, NULL, NULL, NULL );
 }
 
-void Velic_solDA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solDA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solDA* self = (Velic_solDA*) analyticSolution;
 	
 	_Velic_solDA( coord, self->sigma, self->etaA, self->etaB, self->zc, self->dx, self->x0,
@@ -67,7 +67,7 @@ void Velic_solDA_StressFunction( void* a
 }
 
 
-void Velic_solDA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solDA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solDA* self = (Velic_solDA*) analyticSolution;
 	
 	_Velic_solDA( coord, self->sigma, self->etaA, self->etaB, self->zc, self->dx, self->x0,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solDA/Analytic_solDA.h
--- a/SysTest/AnalyticPlugins/Velic_solDA/Analytic_solDA.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solDA/Analytic_solDA.h	Sun Oct 16 05:57:38 2011 -0700
@@ -23,13 +23,13 @@
 	void _Velic_solDA_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solDA_Init( Velic_solDA* self, double sigma, double etaA, double etaB, double zc, double dx, double x0 );
 
-	void Velic_solDA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solDA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solDA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solDA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solDA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solDA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solDA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solDA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solDA(		
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _eta_A, double _eta_B, /* viscosity A, viscosity B */ 
 		double _z_c, double _dx, double _x_0, /* viscosity jump location, width of dense column, centre of dense column */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solDA/solDA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solDA/solDA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solDA/solDA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -5,7 +5,7 @@
 
 
 void _Velic_solDA( 
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta_A, double _eta_B, 
 		double _z_c, double _dx, double _x_0,
@@ -48,7 +48,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solDA(		
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _eta_A, double _eta_B, /* viscosity A, viscosity B */ 
 		double _z_c, double _dx, double _x_0, /* viscosity jump location, width of dense column, centre of dense column */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solE/Analytic_solE.cxx
--- a/SysTest/AnalyticPlugins/Velic_solE/Analytic_solE.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solE/Analytic_solE.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,21 +45,21 @@
 
 const Type Velic_solE_Type = "Underworld_Velic_solE";
 
-void Velic_solE_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solE_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solE* self = (Velic_solE*) analyticSolution;
 	
 	_Velic_solE( coord, self->sigma, self->etaA, self->etaB, self->zc, self->km, self->n,
 		       	NULL, pressure, NULL, NULL );
 }
 
-void Velic_solE_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solE_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solE* self = (Velic_solE*) analyticSolution;
 	
 	_Velic_solE( coord, self->sigma, self->etaA, self->etaB, self->zc, self->km, self->n,
 		       	velocity, NULL, NULL, NULL );
 }
 
-void Velic_solE_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solE_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solE* self = (Velic_solE*) analyticSolution;
 	
 	_Velic_solE( coord, self->sigma, self->etaA, self->etaB, self->zc, self->km, self->n,
@@ -67,7 +67,7 @@ void Velic_solE_StressFunction( void* an
 }
 
 
-void Velic_solE_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solE_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solE* self = (Velic_solE*) analyticSolution;
 	
 	_Velic_solE( coord, self->sigma, self->etaA, self->etaB, self->zc, self->km, self->n,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solE/Analytic_solE.h
--- a/SysTest/AnalyticPlugins/Velic_solE/Analytic_solE.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solE/Analytic_solE.h	Sun Oct 16 05:57:38 2011 -0700
@@ -22,13 +22,13 @@
 	void* _Velic_solE_DefaultNew( Name name );
 	void _Velic_solE_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solE_Init( Velic_solE* self, double sigma, double etaA, double etaB, double zc, double km, double n );
-	void Velic_solE_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solE_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solE_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solE_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solE_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solE_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solE_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solE_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solE(
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta_A, double _eta_B, 
 		double _z_c, double _km, int _n,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solE/solE.cxx
--- a/SysTest/AnalyticPlugins/Velic_solE/solE.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solE/solE.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -5,7 +5,7 @@
 
 
 void _Velic_solE( 
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta_A, double _eta_B, 
 		double _z_c, double _km, int _n,
@@ -48,7 +48,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solE(
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta_A, double _eta_B, 
 		double _z_c, double _km, int _n,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solF/Analytic_solF.cxx
--- a/SysTest/AnalyticPlugins/Velic_solF/Analytic_solF.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solF/Analytic_solF.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,21 +45,21 @@
 
 const Type Velic_solF_Type = "Underworld_Velic_solF";
 
-void Velic_solF_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solF_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solF* self = (Velic_solF*) analyticSolution;
 	
 	_Velic_solF( coord, self->sigma, self->etaA, self->etaB, self->xc, self->zc,
 		       	NULL, pressure, NULL, NULL );
 }
 
-void Velic_solF_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solF_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solF* self = (Velic_solF*) analyticSolution;
 	
 	_Velic_solF( coord, self->sigma, self->etaA, self->etaB, self->xc, self->zc,
 		       	velocity, NULL, NULL, NULL );
 }
 
-void Velic_solF_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solF_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solF* self = (Velic_solF*) analyticSolution;
 	
 	_Velic_solF( coord, self->sigma, self->etaA, self->etaB, self->xc, self->zc,
@@ -67,7 +67,7 @@ void Velic_solF_StressFunction( void* an
 }
 
 
-void Velic_solF_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solF_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solF* self = (Velic_solF*) analyticSolution;
 	
 	_Velic_solF( coord, self->sigma, self->etaA, self->etaB, self->xc, self->zc,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solF/Analytic_solF.h
--- a/SysTest/AnalyticPlugins/Velic_solF/Analytic_solF.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solF/Analytic_solF.h	Sun Oct 16 05:57:38 2011 -0700
@@ -22,13 +22,13 @@
 	void _Velic_solF_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solF_Init( Velic_solF* self, double sigma, double etaA, double etaB, double xc, double zc );
 
-	void Velic_solF_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solF_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solF_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solF_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solF_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solF_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solF_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solF_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solF(
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _eta_A, double _eta_B, /* viscosity A, viscosity B */ 
 		double _x_c, double _z_c, /* width of dense block, bottom of dense block */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solF/solF.cxx
--- a/SysTest/AnalyticPlugins/Velic_solF/solF.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solF/solF.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -5,7 +5,7 @@
 
 
 void _Velic_solF( 
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta_A, double _eta_B, 
 		double _x_c, double _z_c,
@@ -49,7 +49,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solF(
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _eta_A, double _eta_B, /* viscosity A, viscosity B */ 
 		double _x_c, double _z_c, /* width of dense block, bottom of dense block */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solG/Analytic_solG.cxx
--- a/SysTest/AnalyticPlugins/Velic_solG/Analytic_solG.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solG/Analytic_solG.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,21 +45,21 @@
 
 const Type Velic_solG_Type = "Underworld_Velic_solG";
 
-void Velic_solG_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solG_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solG* self = (Velic_solG*) analyticSolution;
 	
 	_Velic_solG( coord, self->sigma, self->etaA, self->etaB, self->dx, self->x0, self->zc,
 		       	NULL, pressure, NULL, NULL );
 }
 
-void Velic_solG_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solG_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solG* self = (Velic_solG*) analyticSolution;
 	
 	_Velic_solG( coord, self->sigma, self->etaA, self->etaB, self->dx, self->x0, self->zc,
 		       	velocity, NULL, NULL, NULL );
 }
 
-void Velic_solG_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solG_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solG* self = (Velic_solG*) analyticSolution;
 	
 	_Velic_solG( coord, self->sigma, self->etaA, self->etaB, self->dx, self->x0, self->zc,
@@ -67,7 +67,7 @@ void Velic_solG_StressFunction( void* an
 }
 
 
-void Velic_solG_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solG_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solG* self = (Velic_solG*) analyticSolution;
 	
 	_Velic_solG( coord, self->sigma, self->etaA, self->etaB, self->dx, self->x0, self->zc,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solG/Analytic_solG.h
--- a/SysTest/AnalyticPlugins/Velic_solG/Analytic_solG.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solG/Analytic_solG.h	Sun Oct 16 05:57:38 2011 -0700
@@ -23,13 +23,13 @@
 	void _Velic_solG_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solG_Init( Velic_solG* self, double sigma, double etaA, double etaB, double dx, double x0, double zc );
 
-	void Velic_solG_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solG_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solG_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solG_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solG_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solG_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solG_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solG_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solG(
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta_A, double _eta_B, 
 		double _dx, double _x_0, double _z_c,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solG/solG.cxx
--- a/SysTest/AnalyticPlugins/Velic_solG/solG.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solG/solG.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -5,7 +5,7 @@
 
 
 void _Velic_solG( 
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta_A, double _eta_B, 
 		double _dx, double _x_0, double _z_c,
@@ -47,7 +47,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solG(
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta_A, double _eta_B, 
 		double _dx, double _x_0, double _z_c,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solH/Analytic_solH.cxx
--- a/SysTest/AnalyticPlugins/Velic_solH/Analytic_solH.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solH/Analytic_solH.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,26 +45,26 @@
 
 const Type Velic_solH_Type = "Underworld_Velic_solH";
 
-void Velic_solH_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solH_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solH* self = (Velic_solH*) analyticSolution;
 	
 	_Velic_solH( coord, self->sigma, self->eta, self->dx, self->dy, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solH_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solH_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solH* self = (Velic_solH*) analyticSolution;
 	
 	_Velic_solH( coord, self->sigma, self->eta, self->dx, self->dy, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solH_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solH_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solH* self = (Velic_solH*) analyticSolution;
 	
 	_Velic_solH( coord, self->sigma, self->eta, self->dx, self->dy, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solH_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solH_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solH* self = (Velic_solH*) analyticSolution;
 	
 	_Velic_solH( coord, self->sigma, self->eta, self->dx, self->dy, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solH/Analytic_solH.h
--- a/SysTest/AnalyticPlugins/Velic_solH/Analytic_solH.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solH/Analytic_solH.h	Sun Oct 16 05:57:38 2011 -0700
@@ -20,13 +20,13 @@
 	void* _Velic_solH_DefaultNew( Name name );
 	void _Velic_solH_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solH_Init( Velic_solH* self, double sigma, double eta, double dx, double dy );
-	void Velic_solH_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solH_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solH_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solH_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solH_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solH_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solH_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solH_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solH(
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta,
 		double _dx, double _dy,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solH/solH.cxx
--- a/SysTest/AnalyticPlugins/Velic_solH/solH.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solH/solH.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -4,7 +4,7 @@
 #include <assert.h>
 
 void _Velic_solH( 
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta, 
 		double _dx, double _dy,
@@ -43,7 +43,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solH(
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta,
 		double _dx, double _dy,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solHA/Analytic_solHA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solHA/Analytic_solHA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solHA/Analytic_solHA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -51,26 +51,26 @@
 
 const Type Velic_solHA_Type = "Underworld_Velic_solHA";
 
-void Velic_solHA_PressureFunction( void* analyticSolution, double* coord, double* pressure ) {
+void Velic_solHA_PressureFunction( void* analyticSolution, const double* coord, double* pressure ) {
 	Velic_solHA* self = (Velic_solHA*) analyticSolution;
 	
 	_Velic_solHA( coord, self->sigma, self->eta, self->dx, self->dy, self->x0, self->y0, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solHA_VelocityFunction( void* analyticSolution, double* coord, double* velocity ) {
+void Velic_solHA_VelocityFunction( void* analyticSolution, const double* coord, double* velocity ) {
 	Velic_solHA* self = (Velic_solHA*) analyticSolution;
 	
 	_Velic_solHA( coord, self->sigma, self->eta, self->dx, self->dy, self->x0, self->y0, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solHA_StressFunction( void* analyticSolution, double* coord, double* stress ) {
+void Velic_solHA_StressFunction( void* analyticSolution, const double* coord, double* stress ) {
 	Velic_solHA* self = (Velic_solHA*) analyticSolution;
 	
 	_Velic_solHA( coord, self->sigma, self->eta, self->dx, self->dy, self->x0, self->y0, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solHA_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate ) {
+void Velic_solHA_StrainRateFunction( void* analyticSolution, const double* coord, double* strainRate ) {
 	Velic_solHA* self = (Velic_solHA*) analyticSolution;
 	
 	_Velic_solHA( coord, self->sigma, self->eta, self->dx, self->dy, self->x0, self->y0, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solHA/Analytic_solHA.h
--- a/SysTest/AnalyticPlugins/Velic_solHA/Analytic_solHA.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solHA/Analytic_solHA.h	Sun Oct 16 05:57:38 2011 -0700
@@ -18,13 +18,13 @@
 	void _Velic_solHA_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solHA_Init( Velic_solHA* self, double sigma, double eta, double dx, double dy, double x0, double y0 );
 
-	void Velic_solHA_PressureFunction( void* analyticSolution, double* coord, double* pressure );
-	void Velic_solHA_VelocityFunction( void* analyticSolution, double* coord, double* velocity );
-	void Velic_solHA_StressFunction( void* analyticSolution, double* coord, double* stress );
-	void Velic_solHA_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate );
+	void Velic_solHA_PressureFunction( void* analyticSolution, const double* coord, double* pressure );
+	void Velic_solHA_VelocityFunction( void* analyticSolution, const double* coord, double* velocity );
+	void Velic_solHA_StressFunction( void* analyticSolution, const double* coord, double* stress );
+	void Velic_solHA_StrainRateFunction( void* analyticSolution, const double* coord, double* strainRate );
 
 	void _Velic_solHA( 
-		double pos[],
+		const double pos[],
 		double _sigma, double _eta,
 		double _dx, double _dy,
 		double _x_0, double _y_0,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solHA/solHA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solHA/solHA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solHA/solHA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -4,7 +4,7 @@
 #include <assert.h>
 
 void _Velic_solHA( 
-		double pos[],
+		const double pos[],
 		double _sigma, double _eta,
 		double _dx, double _dy,
 		double _x_0, double _y_0,
@@ -53,7 +53,7 @@ of in one corner.
 **********************************/
 
 void _Velic_solHA( 
-		double pos[],
+		const double pos[],
 		double _sigma, double _eta,
 		double _dx, double _dy,
 		double _x_0, double _y_0,
@@ -61,7 +61,7 @@ void _Velic_solHA(
 		double total_stress[], double strain_rate[] )
 {
 	double Z,u1,u2,u3,u4,u5,u6;
-	double sum1,sum2,sum3,sum4,sum5,sum6,mag,sum7,sum8,sum9,sum10,sum11,x,y,z;
+	double sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8,sum9,sum10,sum11,x,y,z;
 	double sigma,dx,dy,x0,y0;
 	double del_rho;
 	int n,m;
@@ -189,7 +189,7 @@ void _Velic_solHA(
 		}/* n */
 	}/* m */
 	
-	mag=sqrt(sum1*sum1+sum2*sum2+sum3*sum3);
+	// double mag=sqrt(sum1*sum1+sum2*sum2+sum3*sum3);
 	
 	//printf("%0.7g %0.7g %0.7g %0.7g %0.7g %0.7g %0.7g %0.7g %0.7g %0.7g %0.7g %0.7g %0.7g %0.7g\n",x,y,sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8,sum9,sum10,mag,sum11);
 	
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solHAy/Analytic_solHAy.cxx
--- a/SysTest/AnalyticPlugins/Velic_solHAy/Analytic_solHAy.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solHAy/Analytic_solHAy.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,26 +45,26 @@
 
 const Type Velic_solHAy_Type = "Underworld_Velic_solHAy";
 
-void Velic_solHAy_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solHAy_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solHAy* self = (Velic_solHAy*) analyticSolution;
 	
 	_Velic_solHAy( coord, self->sigma, self->eta, self->dx, self->dy, self->x0, self->y0, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solHAy_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solHAy_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solHAy* self = (Velic_solHAy*) analyticSolution;
 	
 	_Velic_solHAy( coord, self->sigma, self->eta, self->dx, self->dy, self->x0, self->y0, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solHAy_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solHAy_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solHAy* self = (Velic_solHAy*) analyticSolution;
 	
 	_Velic_solHAy( coord, self->sigma, self->eta, self->dx, self->dy, self->x0, self->y0, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solHAy_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solHAy_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solHAy* self = (Velic_solHAy*) analyticSolution;
 	
 	_Velic_solHAy( coord, self->sigma, self->eta, self->dx, self->dy, self->x0, self->y0, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solHAy/Analytic_solHAy.h
--- a/SysTest/AnalyticPlugins/Velic_solHAy/Analytic_solHAy.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solHAy/Analytic_solHAy.h	Sun Oct 16 05:57:38 2011 -0700
@@ -23,13 +23,13 @@
 	void _Velic_solHAy_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solHAy_Init( Velic_solHAy* self, double sigma, double eta, double dx, double dy, double x0, double y0 );
 
-	void Velic_solHAy_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solHAy_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solHAy_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solHAy_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solHAy_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solHAy_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solHAy_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solHAy_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solHAy( 
-		double pos[],
+		const double pos[],
 		double _sigma, double _eta,
 		double _dx, double _dy,
 		double _x_0, double _y_0,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solHAy/solHAy.cxx
--- a/SysTest/AnalyticPlugins/Velic_solHAy/solHAy.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solHAy/solHAy.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -4,7 +4,7 @@
 #include <assert.h>
 
 void _Velic_solHAy( 
-		double pos[],
+		const double pos[],
 		double _sigma, double _eta,
 		double _dx, double _dy,
 		double _x_0, double _y_0,
@@ -42,7 +42,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solHAy( 
-		double pos[],
+		const double pos[],
 		double _sigma, double _eta,
 		double _dx, double _dy,
 		double _x_0, double _y_0,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solHy/Analytic_solHy.cxx
--- a/SysTest/AnalyticPlugins/Velic_solHy/Analytic_solHy.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solHy/Analytic_solHy.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,26 +45,26 @@
 
 const Type Velic_solHy_Type = "Underworld_Velic_solHy";
 
-void Velic_solHy_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solHy_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solHy* self = (Velic_solHy*) analyticSolution;
 	
 	_Velic_solHy( coord, self->etaA, self->etaB, self->xc, self->n, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solHy_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solHy_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solHy* self = (Velic_solHy*) analyticSolution;
 	
 	_Velic_solHy( coord, self->etaA, self->etaB, self->xc, self->n, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solHy_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solHy_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solHy* self = (Velic_solHy*) analyticSolution;
 	
 	_Velic_solHy( coord, self->etaA, self->etaB, self->xc, self->n, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solHy_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solHy_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solHy* self = (Velic_solHy*) analyticSolution;
 	
 	_Velic_solHy( coord, self->etaA, self->etaB, self->xc, self->n, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solHy/Analytic_solHy.h
--- a/SysTest/AnalyticPlugins/Velic_solHy/Analytic_solHy.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solHy/Analytic_solHy.h	Sun Oct 16 05:57:38 2011 -0700
@@ -22,9 +22,9 @@
 	void _Velic_solHy_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solHy_Init( Velic_solHy* self, double etaA, double etaB, double xc, int n );
 
-	void Velic_solHy_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solHy_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solHy_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solHy_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solHy_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solHy_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solHy_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solHy_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 #endif
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solI/Analytic_solI.cxx
--- a/SysTest/AnalyticPlugins/Velic_solI/Analytic_solI.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solI/Analytic_solI.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,26 +45,26 @@
 
 const Type Velic_solI_Type = "Underworld_Velic_solI";
 
-void Velic_solI_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solI_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solI* self = (Velic_solI*) analyticSolution;
 	
 	_Velic_solI( coord, self->sigma, self->B, self->xc, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solI_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solI_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solI* self = (Velic_solI*) analyticSolution;
 	
 	_Velic_solI( coord, self->sigma, self->B, self->xc, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solI_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solI_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solI* self = (Velic_solI*) analyticSolution;
 	
 	_Velic_solI( coord, self->sigma, self->B, self->xc, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solI_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solI_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solI* self = (Velic_solI*) analyticSolution;
 	
 	_Velic_solI( coord, self->sigma, self->B, self->xc, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solI/Analytic_solI.h
--- a/SysTest/AnalyticPlugins/Velic_solI/Analytic_solI.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solI/Analytic_solI.h	Sun Oct 16 05:57:38 2011 -0700
@@ -21,13 +21,13 @@
 	void _Velic_solI_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solI_Init( Velic_solI* self, double sigma, double B, double xc );
 
-	void Velic_solI_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solI_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solI_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solI_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solI_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solI_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solI_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solI_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solI( 
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _B, double _x_c, /* viscosity parameter, width of dense column */
 		double vel[], double* presssure, 
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solI/solI.cxx
--- a/SysTest/AnalyticPlugins/Velic_solI/solI.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solI/solI.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -4,7 +4,7 @@
 #include <assert.h>
 
 void _Velic_solI( 
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _B, double _x_c,
 		double vel[], double* presssure, 
@@ -44,7 +44,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solI( 
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _B, double _x_c, /* viscosity parameter, width of dense column */
 		double vel[], double* presssure, 
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solIA/Analytic_solIA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solIA/Analytic_solIA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solIA/Analytic_solIA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,26 +45,26 @@
 
 const Type Velic_solIA_Type = "Underworld_Velic_solIA";
 
-void Velic_solIA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solIA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solIA* self = (Velic_solIA*) analyticSolution;
 	
 	_Velic_solIA( coord, self->sigma, self->B, self->dx, self->x0, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solIA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solIA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solIA* self = (Velic_solIA*) analyticSolution;
 	
 	_Velic_solIA( coord, self->sigma, self->B, self->dx, self->x0, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solIA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solIA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solIA* self = (Velic_solIA*) analyticSolution;
 	
 	_Velic_solIA( coord, self->sigma, self->B, self->dx, self->x0, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solIA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solIA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solIA* self = (Velic_solIA*) analyticSolution;
 	
 	_Velic_solIA( coord, self->sigma, self->B, self->dx, self->x0, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solIA/Analytic_solIA.h
--- a/SysTest/AnalyticPlugins/Velic_solIA/Analytic_solIA.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solIA/Analytic_solIA.h	Sun Oct 16 05:57:38 2011 -0700
@@ -21,13 +21,13 @@
 	void _Velic_solIA_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solIA_Init( Velic_solIA* self, double sigma, double B, double dx, double x0 );
 
-	void Velic_solIA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solIA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solIA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solIA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solIA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solIA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solIA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solIA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solIA( 
-		double pos[],
+		const double pos[],
 		double _sigma, double _B, /* density, viscosity parameter */
 		double _dx, double _x_0, /* width of dense column, centre of dense column */
 		double vel[], double* presssure, 
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solIA/solIA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solIA/solIA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solIA/solIA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -4,7 +4,7 @@
 #include <assert.h>
 
 void _Velic_solIA( 
-		double pos[],
+		const double pos[],
 		double _sigma, double _B, 
 		double _dx, double _x_0,
 		double vel[], double* presssure, 
@@ -43,7 +43,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solIA( 
-		double pos[],
+		const double pos[],
 		double _sigma, double _B, /* density, viscosity parameter */
 		double _dx, double _x_0, /* width of dense column, centre of dense column */
 		double vel[], double* presssure, 
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solJ/Analytic_solJ.cxx
--- a/SysTest/AnalyticPlugins/Velic_solJ/Analytic_solJ.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solJ/Analytic_solJ.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,7 +45,7 @@
 
 const Type Velic_solJ_Type = "Underworld_Velic_solJ";
 
-void Velic_solJ_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solJ_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solJ* self = (Velic_solJ*) analyticSolution;
 	
 	_Velic_solJ( coord, self->sigmaB, self->sigmaA, self->etaB, self->etaA, self->dxB, self->dxA,
@@ -53,7 +53,7 @@ void Velic_solJ_PressureFunction( void* 
 	       	       NULL, pressure, NULL, NULL );
 }
 
-void Velic_solJ_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solJ_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solJ* self = (Velic_solJ*) analyticSolution;
 	
 	_Velic_solJ( coord, self->sigmaB, self->sigmaA, self->etaB, self->etaA, self->dxB, self->dxA,
@@ -61,7 +61,7 @@ void Velic_solJ_VelocityFunction( void* 
 	       	       velocity, NULL, NULL, NULL );
 }
 
-void Velic_solJ_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solJ_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solJ* self = (Velic_solJ*) analyticSolution;
 	
 	_Velic_solJ( coord, self->sigmaB, self->sigmaA, self->etaB, self->etaA, self->dxB, self->dxA,
@@ -70,7 +70,7 @@ void Velic_solJ_StressFunction( void* an
 }
 
 
-void Velic_solJ_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solJ_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solJ* self = (Velic_solJ*) analyticSolution;
 	
 	_Velic_solJ( coord, self->sigmaB, self->sigmaA, self->etaB, self->etaA, self->dxB, self->dxA,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solJ/Analytic_solJ.h
--- a/SysTest/AnalyticPlugins/Velic_solJ/Analytic_solJ.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solJ/Analytic_solJ.h	Sun Oct 16 05:57:38 2011 -0700
@@ -26,13 +26,13 @@
 	void _Velic_solJ_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solJ_Init( Velic_solJ* self, double sigmaA, double sigmaB, double etaB, double etaA, double dxB, double dxA, double x0B, double x0A, double zc );
 
-	void Velic_solJ_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solJ_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solJ_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solJ_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solJ_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solJ_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solJ_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solJ_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solJ( 
-		double pos[],
+		const double pos[],
 		double _sigma_B ,double _sigma_A, /* density B, density A */
 		double _eta_B   ,double _eta_A  , /* viscosity B, viscosity A */
 		double _dx_B    ,double _dx_A   , /* width of the upper dense block, width of the lower dense block */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solJ/solJ.cxx
--- a/SysTest/AnalyticPlugins/Velic_solJ/solJ.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solJ/solJ.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -4,7 +4,7 @@
 #include <assert.h>
 
 void _Velic_solJ( 
-		double pos[],
+		const double pos[],
 		double _sigma_B, double _sigma_A,
 		double _eta_B, double _eta_A, 
 		double _dx_B, double _dx_A,
@@ -50,7 +50,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solJ( 
-		double pos[],
+		const double pos[],
 		double _sigma_B ,double _sigma_A, /* density B, density A */
 		double _eta_B   ,double _eta_A  , /* viscosity B, viscosity A */
 		double _dx_B    ,double _dx_A   , /* width of the upper dense block, width of the lower dense block */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solJA/Analytic_solJA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solJA/Analytic_solJA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solJA/Analytic_solJA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,21 +45,21 @@
 
 const Type Velic_solJA_Type = "Underworld_Velic_solJA";
 
-void Velic_solJA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solJA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solJA* self = (Velic_solJA*) analyticSolution;
 	
 	_Velic_solJA( coord, self->sigma, self->etaA, self->etaB, self->dx, self->x0, self->zc,
 		       	NULL, pressure, NULL, NULL );
 }
 
-void Velic_solJA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solJA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solJA* self = (Velic_solJA*) analyticSolution;
 	
 	_Velic_solJA( coord, self->sigma, self->etaA, self->etaB, self->dx, self->x0, self->zc,
 		       	velocity, NULL, NULL, NULL );
 }
 
-void Velic_solJA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solJA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solJA* self = (Velic_solJA*) analyticSolution;
 	
 	_Velic_solJA( coord, self->sigma, self->etaA, self->etaB, self->dx, self->x0, self->zc,
@@ -67,7 +67,7 @@ void Velic_solJA_StressFunction( void* a
 }
 
 
-void Velic_solJA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solJA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solJA* self = (Velic_solJA*) analyticSolution;
 	
 	_Velic_solJA( coord, self->sigma, self->etaA, self->etaB, self->dx, self->x0, self->zc,
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solJA/Analytic_solJA.h
--- a/SysTest/AnalyticPlugins/Velic_solJA/Analytic_solJA.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solJA/Analytic_solJA.h	Sun Oct 16 05:57:38 2011 -0700
@@ -22,13 +22,13 @@
 	void* _Velic_solJA_DefaultNew( Name name );
 	void _Velic_solJA_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solJA_Init( Velic_solJA* self, double sigma, double etaA, double etaB, double dx, double x0, double zc );
-	void Velic_solJA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solJA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solJA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solJA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solJA_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solJA_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solJA_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solJA_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solJA( 
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _eta_A, double _eta_B, /* viscosity A, viscosity B */
 		double _dx, /* width of upper dense block */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solJA/solJA.cxx
--- a/SysTest/AnalyticPlugins/Velic_solJA/solJA.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solJA/solJA.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -5,7 +5,7 @@
 
 
 void _Velic_solJA( 
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _eta_A, double _eta_B,
 		double _dx,
@@ -50,7 +50,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solJA( 
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _eta_A, double _eta_B, /* viscosity A, viscosity B */
 		double _dx, /* width of upper dense block */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solKx/Analytic_solKx.cxx
--- a/SysTest/AnalyticPlugins/Velic_solKx/Analytic_solKx.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solKx/Analytic_solKx.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -51,32 +51,32 @@
 
 const Type Velic_solKx_Type = "Underworld_Velic_solKx";
 
-void Velic_solKx_ViscosityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* viscosity ) {
+void Velic_solKx_ViscosityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* viscosity ) {
 	Velic_solKx* self = (Velic_solKx*) analyticSolution;
 	
 	_Velic_solKx( coord, self->sigma, self->_m, self->n, self->B, NULL, NULL, NULL, NULL, viscosity );
 }
 
-void Velic_solKx_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solKx_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solKx* self = (Velic_solKx*) analyticSolution;
 	
 	_Velic_solKx( coord, self->sigma, self->_m, self->n, self->B, NULL, pressure, NULL, NULL, NULL );
 }
 
-void Velic_solKx_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solKx_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solKx* self = (Velic_solKx*) analyticSolution;
 	
 	_Velic_solKx( coord, self->sigma, self->_m, self->n, self->B, velocity, NULL, NULL, NULL, NULL );
 }
 
-void Velic_solKx_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solKx_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solKx* self = (Velic_solKx*) analyticSolution;
 	
 	_Velic_solKx( coord, self->sigma, self->_m, self->n, self->B, NULL, NULL, stress, NULL, NULL );
 }
 
 
-void Velic_solKx_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solKx_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solKx* self = (Velic_solKx*) analyticSolution;
 	
 	_Velic_solKx( coord, self->sigma, self->_m, self->n, self->B, NULL, NULL, NULL, strainRate, NULL );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solKx/Analytic_solKx.h
--- a/SysTest/AnalyticPlugins/Velic_solKx/Analytic_solKx.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solKx/Analytic_solKx.h	Sun Oct 16 05:57:38 2011 -0700
@@ -16,13 +16,13 @@
 	void _Velic_solKx_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solKx_Init( Velic_solKx* self, double sigma, double _m, double B, int n );
 
-	void Velic_solKx_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solKx_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solKx_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solKx_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solKx_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solKx_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solKx_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solKx_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solKx( 
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _m, int _n, /* wavelength in z, wavenumber in x */
 		double _B, /* viscosity parameter */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solKx/solKx.cxx
--- a/SysTest/AnalyticPlugins/Velic_solKx/solKx.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solKx/solKx.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -4,7 +4,7 @@
 #include <assert.h>
 
 void _Velic_solKx( 
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _m, int _n, 
 		double _B,
@@ -48,7 +48,7 @@ int main( int argc, char **argv )
 
 /* this solution matches the stream function values in Zhong's paper for the few given viscosity constrasts */
 void _Velic_solKx( 
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _m, int _n, /* wavelength in z, wavenumber in x */
 		double _B, /* viscosity parameter */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solKz/Analytic_solKz.cxx
--- a/SysTest/AnalyticPlugins/Velic_solKz/Analytic_solKz.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solKz/Analytic_solKz.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -49,32 +49,32 @@
 
 const Type Velic_solKz_Type = "Underworld_Velic_solKz";
 
-void Velic_solKz_PressureFunction( void* analyticSolution, double* coord, double* pressure ) {
+void Velic_solKz_PressureFunction( void* analyticSolution, const double *coord, double* pressure ) {
 	Velic_solKz* self = (Velic_solKz*) analyticSolution;
 	
 	_Velic_solKz( coord, self->sigma, self->km, self->n, self->B, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solKz_VelocityFunction( void* analyticSolution, double* coord, double* velocity ) {
+void Velic_solKz_VelocityFunction( void* analyticSolution, const double *coord, double* velocity ) {
 	Velic_solKz* self = (Velic_solKz*) analyticSolution;
 	
 	_Velic_solKz( coord, self->sigma, self->km, self->n, self->B, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solKz_StressFunction( void* analyticSolution, double* coord, double* stress ) {
+void Velic_solKz_StressFunction( void* analyticSolution, const double *coord, double* stress ) {
 	Velic_solKz* self = (Velic_solKz*) analyticSolution;
 	
 	_Velic_solKz( coord, self->sigma, self->km, self->n, self->B, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solKz_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate ) {
+void Velic_solKz_StrainRateFunction( void* analyticSolution, const double *coord, double* strainRate ) {
 	Velic_solKz* self = (Velic_solKz*) analyticSolution;
 	
 	_Velic_solKz( coord, self->sigma, self->km, self->n, self->B, NULL, NULL, NULL, strainRate );
 }
 
-void Velic_solKz_ViscosityFunction( void* analyticSolution, double* coord, double* viscosity ) {
+void Velic_solKz_ViscosityFunction( void* analyticSolution, const double *coord, double* viscosity ) {
 	Velic_solKz* self = (Velic_solKz*) analyticSolution;
 	
 	*viscosity = exp( 2.0 * self->B * coord[ J_AXIS ] );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solKz/Analytic_solKz.h
--- a/SysTest/AnalyticPlugins/Velic_solKz/Analytic_solKz.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solKz/Analytic_solKz.h	Sun Oct 16 05:57:38 2011 -0700
@@ -57,13 +57,13 @@
 	void* _Velic_solKz_DefaultNew( Name name );
 	void _Velic_solKz_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solKz_Init( Velic_solKz* self, double sigma, double km, double B, int n );
-	void Velic_solKz_PressureFunction( void* analyticSolution, double* coord, double* pressure );
-	void Velic_solKz_VelocityFunction( void* analyticSolution, double* coord, double* velocity );
-	void Velic_solKz_StressFunction( void* analyticSolution, double* coord, double* stress );
-	void Velic_solKz_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate );
+	void Velic_solKz_PressureFunction( void* analyticSolution, const double *coord, double* pressure );
+	void Velic_solKz_VelocityFunction( void* analyticSolution, const double *coord, double* velocity );
+	void Velic_solKz_StressFunction( void* analyticSolution, const double *coord, double* stress );
+	void Velic_solKz_StrainRateFunction( void* analyticSolution, const double *coord, double* strainRate );
 
 	void _Velic_solKz( 
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _km, int _n, /* wavelength in z, wavenumber in x */
 		double _B, /* viscosity parameter */
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solKz/solKz.cxx
--- a/SysTest/AnalyticPlugins/Velic_solKz/solKz.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solKz/solKz.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -4,7 +4,7 @@
 #include <assert.h>
 
 void _Velic_solKz( 
-		double pos[],
+		const double pos[],
 		double _sigma,
 		double _km, int _n, 
 		double _B,
@@ -47,7 +47,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solKz( 
-		double pos[],
+		const double pos[],
 		double _sigma, /* density */
 		double _km, int _n, /* wavelength in z, wavenumber in x */
 		double _B, /* viscosity parameter */
@@ -56,7 +56,7 @@ void _Velic_solKz(
 {
 	double Z;
 	double u1,u2,u3,u4,u5,u6,SS;
-	double sum1,sum2,sum3,sum4,sum5,sum6,mag,sum7,x,z;
+	double sum1,sum2,sum3,sum4,sum5,sum6,sum7,x,z;
 	double sigma;
 	int n;
 	double kn;
@@ -509,7 +509,7 @@ void _Velic_solKz(
 	SS = exp(UU*z)*(_C1*cos(Rm*z)+_C2*sin(Rm*z)) +exp(-VV*z)*(_C3*cos(Rm*z)+_C4*sin(Rm*z)) + exp(-2*z*B)*(AA*cos(km*z)+BB*sin(km*z));
 	SS *= sin(kn*x); /* stream function */
 	
-	mag=sqrt(u1*u1+u2*u2);
+	// double mag=sqrt(u1*u1+u2*u2);
 	/*printf("%0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f %0.7f\n",x,z,sum1,sum2,sum3,sum4,sum5,sum6,mag,sum7,SS);*/
 	
 	
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solL/Analytic_solL.cxx
--- a/SysTest/AnalyticPlugins/Velic_solL/Analytic_solL.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solL/Analytic_solL.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,26 +45,26 @@
 
 const Type Velic_solL_Type = "Underworld_Velic_solL";
 
-void Velic_solL_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure ) {
+void Velic_solL_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure ) {
 	Velic_solL* self = (Velic_solL*) analyticSolution;
 	
 	_Velic_solL( coord, self->sigmaB, self->sigmaA, self->eta, NULL, pressure, NULL, NULL );
 }
 
-void Velic_solL_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity ) {
+void Velic_solL_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity ) {
 	Velic_solL* self = (Velic_solL*) analyticSolution;
 	
 	_Velic_solL( coord, self->sigmaB, self->sigmaA, self->eta, velocity, NULL, NULL, NULL );
 }
 
-void Velic_solL_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress ) {
+void Velic_solL_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress ) {
 	Velic_solL* self = (Velic_solL*) analyticSolution;
 	
 	_Velic_solL( coord, self->sigmaB, self->sigmaA, self->eta, NULL, NULL, stress, NULL );
 }
 
 
-void Velic_solL_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate ) {
+void Velic_solL_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate ) {
 	Velic_solL* self = (Velic_solL*) analyticSolution;
 	
 	_Velic_solL( coord, self->sigmaB, self->sigmaA, self->eta, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solL/Analytic_solL.h
--- a/SysTest/AnalyticPlugins/Velic_solL/Analytic_solL.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solL/Analytic_solL.h	Sun Oct 16 05:57:38 2011 -0700
@@ -20,13 +20,13 @@
 	void _Velic_solL_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Velic_solL_Init( Velic_solL* self, double sigmaB, double sigmaA, double eta );
 
-	void Velic_solL_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* pressure );
-	void Velic_solL_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* velocity );
-	void Velic_solL_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* stress );
-	void Velic_solL_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, double* coord, double* strainRate );
+	void Velic_solL_PressureFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* pressure );
+	void Velic_solL_VelocityFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* velocity );
+	void Velic_solL_StressFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* stress );
+	void Velic_solL_StrainRateFunction( void* analyticSolution, FeVariable* analyticFeVariable, const double *coord, double* strainRate );
 
 	void _Velic_solL( 
-		double pos[],
+		const double pos[],
 		double _sigma_B, double _sigma_A, /* density B, density A */
 		double _eta, /* viscosity */
 		double vel[], double* presssure, 
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solL/solL.cxx
--- a/SysTest/AnalyticPlugins/Velic_solL/solL.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solL/solL.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -4,7 +4,7 @@
 #include <assert.h>
 
 void _Velic_solL( 
-		double pos[],
+		const double pos[],
 		double _sigma_B, double _sigma_A,
 		double _eta,
 		double vel[], double* presssure, 
@@ -45,7 +45,7 @@ int main( int argc, char **argv )
 
 
 void _Velic_solL( 
-		double pos[],
+		const double pos[],
 		double _sigma_B, double _sigma_A, /* density B, density A */
 		double _eta, /* viscosity */
 		double vel[], double* presssure, 
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solS/Analytic_solS.cxx
--- a/SysTest/AnalyticPlugins/Velic_solS/Analytic_solS.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solS/Analytic_solS.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -45,25 +45,25 @@
 
 const Type Underworld_solS_Type = "Underworld_Velic_solS";
 
-void Underworld_solS_PressureFunction( void* analyticSolution, double* coord, double* pressure ) {
+void Underworld_solS_PressureFunction( void* analyticSolution, const double *coord, double* pressure ) {
 	Underworld_solS* self = (Underworld_solS*) analyticSolution;
 	
 	_Velic_solS( coord, self->_n, self->_eta, NULL, pressure, NULL, NULL );
 }
 
-void Underworld_solS_VelocityFunction( void* analyticSolution, double* coord, double* velocity ) {
+void Underworld_solS_VelocityFunction( void* analyticSolution, const double *coord, double* velocity ) {
 	Underworld_solS* self = (Underworld_solS*) analyticSolution;
 	
 	_Velic_solS( coord, self->_n, self->_eta, velocity, NULL, NULL, NULL );
 }
 
-void Underworld_solS_StressFunction( void* analyticSolution, double* coord, double* stress ) {
+void Underworld_solS_StressFunction( void* analyticSolution, const double *coord, double* stress ) {
 	Underworld_solS* self = (Underworld_solS*) analyticSolution;
 	
 	_Velic_solS( coord, self->_n, self->_eta, NULL, NULL, stress, NULL );
 }
 
-void Underworld_solS_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate ) {
+void Underworld_solS_StrainRateFunction( void* analyticSolution, const double *coord, double* strainRate ) {
 	Underworld_solS* self = (Underworld_solS*) analyticSolution;
 	
 	_Velic_solS( coord, self->_n, self->_eta, NULL, NULL, NULL, strainRate );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solS/Analytic_solS.h
--- a/SysTest/AnalyticPlugins/Velic_solS/Analytic_solS.h	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solS/Analytic_solS.h	Sun Oct 16 05:57:38 2011 -0700
@@ -63,13 +63,13 @@
 	void _Underworld_solS_AssignFromXML( void* analyticSolution, Stg_ComponentFactory* cf, void* data );
 	void _Underworld_solS_Init( Underworld_solS* self, double eta, int _n );
 
-	void Underworld_solS_PressureFunction( void* analyticSolution, double* coord, double* pressure );
-	void Underworld_solS_VelocityFunction( void* analyticSolution, double* coord, double* velocity );
-	void Underworld_solS_StressFunction( void* analyticSolution, double* coord, double* stress );
-	void Underworld_solS_StrainRateFunction( void* analyticSolution, double* coord, double* strainRate );
+	void Underworld_solS_PressureFunction( void* analyticSolution, const double *coord, double* pressure );
+	void Underworld_solS_VelocityFunction( void* analyticSolution, const double *coord, double* velocity );
+	void Underworld_solS_StressFunction( void* analyticSolution, const double *coord, double* stress );
+	void Underworld_solS_StrainRateFunction( void* analyticSolution, const double *coord, double* strainRate );
 
 	void _Velic_solS( 
-		double pos[],
+		const double pos[],
 		int _n, double _eta,
 		double vel[], double* presssure, 
 		double total_stress[], double strain_rate[] );
diff -r a3a5956268a8 -r f0617aa2b46b SysTest/AnalyticPlugins/Velic_solS/solS.cxx
--- a/SysTest/AnalyticPlugins/Velic_solS/solS.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/SysTest/AnalyticPlugins/Velic_solS/solS.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -4,7 +4,7 @@
 
 
 void _Velic_solS( 
-		double pos[],
+		const double pos[],
 		int _n, double _eta,
 		double vel[], double* presssure, 
 		double total_stress[], double strain_rate[] );
@@ -42,7 +42,7 @@ int main( int argc, char **argv )
 */
 
 void _Velic_solS( 
-		double pos[],						/* coordinates */
+		const double pos[],						/* coordinates */
 		int _n, double _eta,				/* wavenumber in x, viscosity */
 		double vel[], double* presssure, 				/* output: velocity, pressure */
 		double total_stress[], double strain_rate[] ) 	/* ouput: total stresss, strain rate */ 
diff -r a3a5956268a8 -r f0617aa2b46b plugins/IncompressibleExtensionBC/IncompressibleExtensionBC.cxx
--- a/plugins/IncompressibleExtensionBC/IncompressibleExtensionBC.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/plugins/IncompressibleExtensionBC/IncompressibleExtensionBC.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -169,14 +169,14 @@ double GetBottomWallVelocity( Underworld
 	return V_d;
 }
 
-void IncompressibleExtensionBC_RightCondition( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void IncompressibleExtensionBC_RightCondition(const double *coord, void* _context, void* _result ) {
 	UnderworldContext* context = (UnderworldContext*) _context;
 	double*            result  = (double*) _result;
 
 	*result = GetRightWallVelocity( context );
 }
 
-void IncompressibleExtensionBC_RightShearCondition( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void IncompressibleExtensionBC_RightShearCondition(const double *coord, void* _context, void* _result ) {
 	UnderworldContext* context = (UnderworldContext*) _context;
 	double*            result  = (double*) _result;
 
@@ -184,14 +184,14 @@ void IncompressibleExtensionBC_RightShea
 }
 
 
-void IncompressibleExtensionBC_LeftCondition( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void IncompressibleExtensionBC_LeftCondition(const double *coord, void* _context, void* _result ) {
 	UnderworldContext* context = (UnderworldContext*) _context;
 	double*            result  = (double*) _result;
 
 	*result = GetLeftWallVelocity( context );
 }
 
-void IncompressibleExtensionBC_LeftShearCondition( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void IncompressibleExtensionBC_LeftShearCondition(const double *coord, void* _context, void* _result ) {
 	UnderworldContext* context = (UnderworldContext*) _context;
 	double*            result  = (double*) _result;
 
@@ -199,27 +199,27 @@ void IncompressibleExtensionBC_LeftShear
 }
 
 
-void IncompressibleExtensionBC_BackCondition( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void IncompressibleExtensionBC_BackCondition(const double *coord, void* _context, void* _result ) {
 	UnderworldContext* context = (UnderworldContext*) _context;
 	double*            result  = (double*) _result;
 
 	*result = GetBackWallVelocity( context );
 }
-void IncompressibleExtensionBC_FrontCondition( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void IncompressibleExtensionBC_FrontCondition(const double *coord, void* _context, void* _result ) {
 	UnderworldContext* context = (UnderworldContext*) _context;
 	double*            result  = (double*) _result;
 
 	*result = GetFrontWallVelocity( context );
 }
 
-void IncompressibleExtensionBC_TopCondition( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void IncompressibleExtensionBC_TopCondition(const double *coord, void* _context, void* _result ) {
 	UnderworldContext* context = (UnderworldContext*) _context;
 	double*            result  = (double*) _result;
 
 	*result = GetTopWallVelocity( context );
 }
 
-void IncompressibleExtensionBC_BottomCondition( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void IncompressibleExtensionBC_BottomCondition(const double *coord, void* _context, void* _result ) {
 	UnderworldContext* context = (UnderworldContext*) _context;
 	double*            result  = (double*) _result;
 
diff -r a3a5956268a8 -r f0617aa2b46b plugins/MovingMesh/tests/plugins/testMovingMesh.cxx
--- a/plugins/MovingMesh/tests/plugins/testMovingMesh.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/plugins/MovingMesh/tests/plugins/testMovingMesh.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -16,43 +16,27 @@ double dt( void* class, PICelleratorCont
 	return Dictionary_GetDouble_WithDefault( context->dictionary, (Dictionary_Entry_Key)"dt", 0.01  );
 }
 
-void MovingMeshTestVelBCs_IncreasingWithY( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void MovingMeshTestVelBCs_IncreasingWithY(const double *coord, void* _context, void* _result ) {
 	DomainContext*	context            = (DomainContext*)_context;
-	FeVariable*             feVariable         = NULL;
-	FeMesh*     		mesh               = NULL;
 	double*                 result             = (double*) _result;
 	double			min[3], max[3];
-	double*                 coord;
 	
-	feVariable = (FeVariable*)FieldVariable_Register_GetByName( context->fieldVariable_Register, "VelocityField" );
-	mesh       = feVariable->feMesh;
-
-	/* Find coordinate of node */
 	Mesh_GetGlobalCoordRange( mesh, min, max );
-	coord = Mesh_GetVertex( mesh, node_lI );
 	
 	*result = ( coord[J_AXIS] - min[J_AXIS] ) / ( max[J_AXIS] - min[J_AXIS] );
 }
 
 
-void MovingMeshTestVelBCs_ToCentreY( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void MovingMeshTestVelBCs_ToCentreY(const double *coord, void* _context, void* _result ) {
 	DomainContext*	context            = (DomainContext*)_context;
-	FeVariable*             feVariable         = NULL;
-	FeMesh* 		mesh               = NULL;
 	double*                 result             = (double*) _result;
-	double*                 coord;
 	double                  toCentreJ_Max = 0;
 	double                  boxHeight = 0;
 	double                  centreInJ = 0;
 	double                  coordJ_RelativeToCentreJ = 0;
 	double			min[3], max[3];
 	
-	feVariable = (FeVariable*)FieldVariable_Register_GetByName( context->fieldVariable_Register, "VelocityField" );
-	mesh       = feVariable->feMesh;
-
-	/* Find coordinate of node */
 	Mesh_GetGlobalCoordRange( mesh, min, max );
-	coord = Mesh_GetVertex( mesh, node_lI );
 	
 	boxHeight = max[J_AXIS] - min[J_AXIS];
 	centreInJ = ( max[J_AXIS] + min[J_AXIS] ) / 2;
diff -r a3a5956268a8 -r f0617aa2b46b plugins/VariableConditions/ShapeFemIC/ShapeFemIC.cxx
--- a/plugins/VariableConditions/ShapeFemIC/ShapeFemIC.cxx	Sun Oct 16 05:56:21 2011 -0700
+++ b/plugins/VariableConditions/ShapeFemIC/ShapeFemIC.cxx	Sun Oct 16 05:57:38 2011 -0700
@@ -65,7 +65,7 @@ typedef struct {
 
 
 
-void Underworld_LinearShapeIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void Underworld_LinearShapeIC(const double *coord, void* _context, void* _result ) {
 
   UnderworldContext*       context            = (UnderworldContext*)_context;
 
@@ -75,7 +75,6 @@ void Underworld_LinearShapeIC( Node_Loca
   double*                  result             = (double* ) _result;
   Stg_Shape*               shape;
   Name                     shapeName;
-  double*                  coord;
   Dictionary_Entry_Value*  shapeSpecs;	
   Index                    numSpecs = 0;
   Index	                   shapeSpec_I;
@@ -117,10 +116,7 @@ void Underworld_LinearShapeIC( Node_Loca
 		      Journal_Register( Error_Type, (Name)Underworld_ShapeFemIC_Type  ), 
 		      "Shape %s not found.\n", shapeName );
 
-    /* Find coordinate of node */
-    coord = Mesh_GetVertex( theMesh, node_lI );
-
-    if( Stg_Shape_IsCoordInside( shape, coord ) ) {
+    if(Stg_Shape_IsCoordInside(shape, coord) ) {
 
       setup = Dictionary_GetInt_WithDefault( shapeSpecDict, (Dictionary_Entry_Key)"setup", STD );
 
@@ -232,25 +228,16 @@ void Underworld_LinearShapeIC( Node_Loca
 }
 
 
-void Underworld_SimpleShapeIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void Underworld_SimpleShapeIC(const double *coord, void* _context, void* _result ) {
 	UnderworldContext* context    = (UnderworldContext*)_context;
 	Dictionary* dictionary = context->dictionary;
-	MeshVariable* meshVar    = NULL;
-	FeMesh* mesh       = NULL;
 	double* result     = (double*) _result;
 	Stg_Shape* shape;
 	Name shapeName;
-	double* coord;
-
-	meshVar = (MeshVariable*)Variable_Register_GetByIndex( context->variable_Register, var_I );
-	mesh = (FeMesh*)meshVar->mesh; assert( mesh != NULL );
 
 	shapeName = Dictionary_GetString( dictionary, (Dictionary_Entry_Key)"ShapeFemIC" );
 	shape = (Stg_Shape* ) LiveComponentRegister_Get( context->CF->LCRegister, (Name)shapeName );
 	assert( shape  );
-
-	/* Find coordinate of node */
-	coord = Mesh_GetVertex( mesh, node_lI );
 
 	if ( Stg_Shape_IsCoordInside( shape, coord ) ) 
 		*result = 1.0;
@@ -258,21 +245,16 @@ void Underworld_SimpleShapeIC( Node_Loca
 		*result = 0.0;
 }
 
-void Underworld_GaussianIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) {
+void Underworld_GaussianIC(const double *coord, void* _context, void* _result ) {
 	UnderworldContext*      context            = (UnderworldContext*)_context;
 	Dictionary*             dictionary         = context->dictionary;
-  FeVariable*    tempField   = (FeVariable*)LiveComponentRegister_Get( context->CF->LCRegister, (Name)"TemperatureField" );
-	FeMesh*			mesh               = NULL;
 	double*                 result             = (double* ) _result;
 	Stg_Shape*              shape;
 	Name                    shapeName;
-	double*                 coord;
 	double                  disVec[3];
 	double                  amplitude, width;
 	double                  rSq;
 	
-	mesh       = tempField->feMesh;
-
 	amplitude = Dictionary_GetDouble_WithDefault( dictionary, (Dictionary_Entry_Key)"GaussianIC-Amplitude", 1.0  );
 	width = Dictionary_GetDouble_WithDefault( dictionary, (Dictionary_Entry_Key)"GaussianIC-Width", 1e-2  );
 
@@ -283,8 +265,6 @@ void Underworld_GaussianIC( Node_LocalIn
 			Journal_Register( Error_Type, (Name)Underworld_ShapeFemIC_Type  ),
 			"Error in %s: You're applying the GaussianIC to a shape of type %s, which can't be done."
 			" It can only work on Sphere\' or \'Cylinder\' shapes\n", __func__,  shape->type );
-	/* Find coordinate of node */
-	coord = Mesh_GetVertex( mesh, node_lI );
 
 	if( !strcmp(shape->type, "Sphere") ) {
 		_Sphere_DistanceFromCenterAxis( shape, coord, disVec );



More information about the CIG-COMMITS mailing list