[cig-commits] r6281 - in long/3D/Gale/trunk/src/StgFEM: . SLE/SystemSetup/src

walter at geodynamics.org walter at geodynamics.org
Sun Mar 18 22:00:54 PDT 2007


Author: walter
Date: 2007-03-18 22:00:53 -0700 (Sun, 18 Mar 2007)
New Revision: 6281

Removed:
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/CorrectRHS.c
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/CorrectRHS.h
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/InsertBCs.c
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/InsertBCs.h
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/UnifyDiagBCs.c
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/UnifyDiagBCs.h
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ZeroBCs.c
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ZeroBCs.h
Modified:
   long/3D/Gale/trunk/src/StgFEM/
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Assembler.c
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Assembler.h
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ForceVector.c
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ForceVector.h
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Init.c
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/StiffnessMatrix.c
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/StiffnessMatrix.h
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/SystemSetup.h
   long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/types.h
Log:
 r1057 at earth (orig r784):  LukeHodkinson | 2007-03-14 22:29:29 -0700
 * The assembler helper class I made turned out to be
   very cumbersome to use.  I've modified it to use
   callback functions instead of requiring inherted
   classes.
 * Fixed that problem that Steve found a couple of days
   ago. I'd forgotten to swap the G matrix right hand
   side from regular to transpose, so the BCs weren't
   being applied properly.
 



Property changes on: long/3D/Gale/trunk/src/StgFEM
___________________________________________________________________
Name: svk:merge
   - 38867592-cf10-0410-9e16-a142ea72ac34:/cig:880
db209038-57f2-0310-97fa-b160e0ae9d04:/branches/decomp3d:781
db209038-57f2-0310-97fa-b160e0ae9d04:/trunk:669
   + 38867592-cf10-0410-9e16-a142ea72ac34:/cig:880
db209038-57f2-0310-97fa-b160e0ae9d04:/branches/decomp3d:784
db209038-57f2-0310-97fa-b160e0ae9d04:/trunk:669

Modified: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Assembler.c
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Assembler.c	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Assembler.c	2007-03-19 05:00:53 UTC (rev 6281)
@@ -48,6 +48,14 @@
 ** Constructors
 */
 
+Assembler* Assembler_New() {
+        return _Assembler_New( sizeof(Assembler), 
+                               Assembler_Type, 
+                               _Assembler_Delete, 
+                               _Assembler_Print, 
+                               NULL );
+}
+
 Assembler* _Assembler_New( ASSEMBLER_DEFARGS ) {
 	Assembler*	self;
 
@@ -56,10 +64,6 @@
 	self = (Assembler*)_Stg_Class_New( STG_CLASS_PASSARGS );
 
 	/* Virtual info */
-	self->rowRestrictedFunc = rowRestrictedFunc;
-	self->rowUnrestrictedFunc = rowUnrestrictedFunc;
-	self->columnRestrictedFunc = columnRestrictedFunc;
-	self->columnUnrestrictedFunc = columnUnrestrictedFunc;
 
 	/* Assembler info */
 	_Assembler_Init( self );
@@ -73,6 +77,13 @@
 	self->rowVar = NULL;
 	self->colVar = NULL;
 	self->swarm = NULL;
+	self->rowR = NULL;
+	self->rowU = NULL;
+	self->colR = NULL;
+	self->colU = NULL;
+	self->obj = NULL;
+
+	self->elInd = 0;
 	self->rowInd = 0;
 	self->rowNodeInd = 0;
 	self->rowDofInd = 0;
@@ -99,13 +110,13 @@
 
 void _Assembler_Print( void* assembler, Stream* stream ) {
 	Assembler*	self = (Assembler*)assembler;
+	Stream* 	assemblerStream;
+
+	assert( self && Stg_CheckType( self, Assembler ) );
 	
 	/* Set the Journal for printing informations */
-	Stream* assemblerStream;
 	assemblerStream = Journal_Register( InfoStream_Type, "AssemblerStream" );
 
-	assert( self && Stg_CheckType( self, Assembler ) );
-
 	/* Print parent */
 	Journal_Printf( stream, "Assembler (ptr): (%p)\n", self );
 	_Stg_Class_Print( self, stream );
@@ -134,26 +145,24 @@
 	self->swarm = swarm;
 }
 
-void Assembler_SetElementStiffnessMatrix( void* assembler, double** elStiffMat, 
-					  unsigned nRowEqs, unsigned nColEqs )
+void Assembler_SetCallbacks( void* assembler, 
+                             Assembler_CallbackType* rowRestricted, 
+                             Assembler_CallbackType* rowUnrestricted, 
+                             Assembler_CallbackType* colRestricted, 
+                             Assembler_CallbackType* colUnrestricted, 
+                             void* object )
 {
-	Assembler*	self = (Assembler*)assembler;
+        Assembler*      self = (Assembler*)assembler;
 
-	assert( self && Stg_CheckType( self, Assembler ) );
+        assert( self && Stg_CheckType( self, Assembler ) );
 
-	self->elStiffMat = elStiffMat;
-	self->nRowEqs = nRowEqs;
-	self->nColEqs = nColEqs;
+        self->rowR = rowRestricted;
+        self->rowU = rowUnrestricted;
+        self->colR = colRestricted;
+        self->colU = colUnrestricted;
+        self->obj = object;
 }
 
-void Assembler_SetBCCorrectionArray( void* assembler, double* bcCorrects ) {
-	Assembler*	self = (Assembler*)assembler;
-
-	assert( self && Stg_CheckType( self, Assembler ) );
-
-	self->bcCorrects = bcCorrects;
-}
-
 #if 0
 void Assembler_AssembleMatrixElement( void* assembler, unsigned element ) {
 	Assembler*		self = (Assembler*)assembler;
@@ -280,10 +289,10 @@
 			self->rowEq = rowEq;
 			varInd = rowDofs->varIndices[rowElNodes[n_i]][dof_i];
 			if( rowVar->bcs && VariableCondition_IsCondition( rowVar->bcs, rowElNodes[n_i], varInd ) ) {
-				if( !self->rowRestrictedFunc || !self->rowRestrictedFunc( self ) )
+				if( !self->rowR || !self->rowR( self->obj, self ) )
 					continue;
 			}
-			else if( self->rowUnrestrictedFunc && !self->rowUnrestrictedFunc( self ) )
+			else if( self->rowU && !self->rowU( self->obj, self ) )
 				continue;
 
 			Mesh_GetIncidence( colMesh, Mesh_GetDimSize( colMesh ), element, MT_VERTEX, 
@@ -301,11 +310,11 @@
 					self->colEq = colEq;
 					varInd = colDofs->varIndices[colElNodes[n_j]][dof_j];
 					if( colVar->bcs && VariableCondition_IsCondition( colVar->bcs, colElNodes[n_j], varInd ) ) {
-						if( self->columnRestrictedFunc )
-							self->columnRestrictedFunc( self );
+						if( self->colR )
+							self->colR( self->obj, self );
 					}
-					else if( self->columnUnrestrictedFunc )
-						self->columnUnrestrictedFunc( self );
+					else if( self->colU )
+						self->colU( self->obj, self );
 				}
 			}
 		}
@@ -352,11 +361,11 @@
 			self->colEq = rowEq;
 			varInd = rowDofs->varIndices[n_i][dof_i];
 			if( rowVar->bcs && VariableCondition_IsCondition( rowVar->bcs, n_i, varInd ) ) {
-				if( self->columnRestrictedFunc )
-					self->columnRestrictedFunc( self );
+				if( self->rowR )
+					self->rowR( self->obj, self );
 			}
-			else if( self->columnUnrestrictedFunc )
-				self->columnUnrestrictedFunc( self );
+			else if( self->rowU )
+				self->rowU( self->obj, self );
 		}
 	}
 }

Modified: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Assembler.h
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Assembler.h	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Assembler.h	2007-03-19 05:00:53 UTC (rev 6281)
@@ -45,39 +45,34 @@
 	extern const Type Assembler_Type;
 
 	/** Virtual function types */
-	typedef Bool (Assembler_RowRestrictedFunc)( void* assembeler );
-	typedef Bool (Assembler_RowUnrestrictedFunc)( void* assembeler );
-	typedef void (Assembler_ColumnRestrictedFunc)( void* assembeler );
-	typedef void (Assembler_ColumnUnrestrictedFunc)( void* assembeler );
 
 	/** Assembler class contents */
-	#define __Assembler							\
-		/* General info */						\
-		__Stg_Class							\
-										\
-		/* Virtual info */						\
-		Assembler_RowRestrictedFunc*		rowRestrictedFunc;	\
-		Assembler_RowUnrestrictedFunc*		rowUnrestrictedFunc;	\
-		Assembler_ColumnRestrictedFunc*		columnRestrictedFunc;	\
-		Assembler_ColumnUnrestrictedFunc*	columnUnrestrictedFunc;	\
-										\
-		/* Assembler info */						\
-		FeVariable*		rowVar;					\
-		FeVariable*		colVar;					\
-		Swarm*			swarm;					\
-		double**		elStiffMat;				\
-		double*			bcCorrects;				\
-										\
-		unsigned		elInd;					\
-		unsigned		nRowEqs;				\
-		unsigned		nColEqs;				\
-		unsigned		rowInd;					\
-		unsigned		rowNodeInd;				\
-		unsigned		rowDofInd;				\
-		unsigned		rowEq;					\
-		unsigned		colInd;					\
-		unsigned		colNodeInd;				\
-		unsigned		colDofInd;				\
+	typedef Bool (Assembler_CallbackType)( void* object, Assembler* assm );
+
+	#define __Assembler				\
+		/* General info */			\
+		__Stg_Class				\
+							\
+		/* Virtual info */			\
+							\
+		/* Assembler info */			\
+		FeVariable*		rowVar;		\
+		FeVariable*		colVar;		\
+		Swarm*			swarm;		\
+		Assembler_CallbackType*	rowR;		\
+		Assembler_CallbackType*	rowU;		\
+		Assembler_CallbackType*	colR;		\
+		Assembler_CallbackType*	colU;		\
+		void*			obj;		\
+							\
+		unsigned		elInd;		\
+		unsigned		rowInd;		\
+		unsigned		rowNodeInd;	\
+		unsigned		rowDofInd;	\
+		unsigned		rowEq;		\
+		unsigned		colInd;		\
+		unsigned		colNodeInd;	\
+		unsigned		colDofInd;	\
 		unsigned		colEq;
 
 	struct Assembler { __Assembler };
@@ -86,20 +81,13 @@
 	** Constructors
 	*/
 
-	#define ASSEMBLER_DEFARGS						\
-		STG_CLASS_DEFARGS,						\
-		Assembler_RowRestrictedFunc*		rowRestrictedFunc,	\
-		Assembler_RowUnrestrictedFunc*		rowUnrestrictedFunc,	\
-		Assembler_ColumnRestrictedFunc*		columnRestrictedFunc,	\
-		Assembler_ColumnUnrestrictedFunc*	columnUnrestrictedFunc
+	#define ASSEMBLER_DEFARGS \
+		STG_CLASS_DEFARGS
 
-	#define ASSEMBLER_PASSARGS	\
-		STG_CLASS_PASSARGS,	\
-		rowRestrictedFunc,	\
-		rowUnrestrictedFunc,	\
-		columnRestrictedFunc,	\
-		columnUnrestrictedFunc
+	#define ASSEMBLER_PASSARGS \
+		STG_CLASS_PASSARGS
 
+	Assembler* Assembler_New();
 	Assembler* _Assembler_New( ASSEMBLER_DEFARGS );
 	void _Assembler_Init( Assembler* self );
 
@@ -110,20 +98,18 @@
 	void _Assembler_Delete( void* assembler );
 	void _Assembler_Print( void* assembler, Stream* stream );
 
-	Bool _Assembler_RowRestricted( void* assembeler );
-	Bool _Assembler_RowUnrestricted( void* assembeler );
-	Bool _Assembler_ColumnRestricted( void* assembeler );
-	Bool _Assembler_ColumnUnrestricted( void* assembeler );
-
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Public functions
 	*/
 
 	void Assembler_SetVariables( void* assembler, FeVariable* rowVar, FeVariable* columnVar );
 	void Assembler_SetIntegrationSwarm( void* assembler, Swarm* swarm );
-	void Assembler_SetElementStiffnessMatrix( void* assembler, double** elStiffMat, 
-						  unsigned nRowEqs, unsigned nColEqs );
-	void Assembler_SetBCCorrectionArray( void* assembler, double* bcCorrect );
+	void Assembler_SetCallbacks( void* assembler, 
+				     Assembler_CallbackType* rowRestricted, 
+				     Assembler_CallbackType* rowUnrestricted, 
+				     Assembler_CallbackType* colRestricted, 
+				     Assembler_CallbackType* colUnrestricted, 
+				     void* object );
 
 	void Assembler_LoopMatrixElement( void* assembler, unsigned element );
 	void Assembler_LoopMatrixDiagonal( void* assembler );

Deleted: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/CorrectRHS.c
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/CorrectRHS.c	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/CorrectRHS.c	2007-03-19 05:00:53 UTC (rev 6281)
@@ -1,139 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id: CorrectRHS.c 3584 2006-05-16 11:11:07Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include <mpi.h>
-#include "StGermain/StGermain.h"
-#include "Discretisation/Discretisation.h"
-#include "SLE/LinearAlgebra/LinearAlgebra.h"
-#include "SystemSetup.h"
-
-
-/* Textual name of this class */
-const Type CorrectRHS_Type = "CorrectRHS";
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-CorrectRHS* CorrectRHS_New() {
-	return _CorrectRHS_New( sizeof(CorrectRHS), 
-				CorrectRHS_Type, 
-				_CorrectRHS_Delete, 
-				_CorrectRHS_Print, 
-				NULL, 
-				NULL, 
-				NULL, 
-				CorrectRHS_ColRestricted, 
-				NULL );
-}
-
-CorrectRHS* _CorrectRHS_New( ZEROBCS_DEFARGS ) {
-	CorrectRHS*	self;
-
-	/* Allocate memory */
-	assert( sizeOfSelf >= sizeof(CorrectRHS) );
-	self = (CorrectRHS*)_Assembler_New( ASSEMBLER_PASSARGS );
-
-	/* Virtual info */
-
-	/* CorrectRHS info */
-	_CorrectRHS_Init( self );
-
-	return self;
-}
-
-void _CorrectRHS_Init( CorrectRHS* self ) {
-	assert( self && Stg_CheckType( self, CorrectRHS ) );
-
-	self->trans = False;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _CorrectRHS_Delete( void* assembler ) {
-	CorrectRHS*	self = (CorrectRHS*)assembler;
-
-	assert( self && Stg_CheckType( self, CorrectRHS ) );
-
-	/* Delete the parent. */
-	_Assembler_Delete( self );
-}
-
-void _CorrectRHS_Print( void* assembler, Stream* stream ) {
-	CorrectRHS*	self = (CorrectRHS*)assembler;
-	Stream* 	assemblerStream;
-	
-	/* Set the Journal for printing informations */
-	assemblerStream = Journal_Register( InfoStream_Type, "CorrectRHSStream" );
-
-	assert( self && Stg_CheckType( self, CorrectRHS ) );
-
-	/* Print parent */
-	Journal_Printf( stream, "CorrectRHS (ptr): (%p)\n", self );
-	_Assembler_Print( self, stream );
-}
-
-void CorrectRHS_ColRestricted( void* assembler ) {
-	double		bc;
-	unsigned	rowInd, colInd;
-
-	bc = DofLayout_GetValueDouble( ((CorrectRHS*)assembler)->colVar->dofLayout, 
-				       ((CorrectRHS*)assembler)->colNodeInd, 
-				       ((CorrectRHS*)assembler)->colDofInd );
-	rowInd = ((CorrectRHS*)assembler)->rowInd;
-	colInd = ((CorrectRHS*)assembler)->colInd;
-	if( !((CorrectRHS*)assembler)->trans ) {
-		((CorrectRHS*)assembler)->bcCorrects[rowInd] -= bc * 
-			((CorrectRHS*)assembler)->elStiffMat[rowInd][colInd];
-	}
-	else {
-		((CorrectRHS*)assembler)->bcCorrects[rowInd] -= bc * 
-			((CorrectRHS*)assembler)->elStiffMat[colInd][rowInd];
-	}
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/

Deleted: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/CorrectRHS.h
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/CorrectRHS.h	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/CorrectRHS.h	2007-03-19 05:00:53 UTC (rev 6281)
@@ -1,94 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Invariants:
-**
-** Comments:
-**
-** $Id: CorrectRHS.h 3584 2006-05-16 11:11:07Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __StgFEM_SLE_SystemSetup_CorrectRHS_h__
-#define __StgFEM_SLE_SystemSetup_CorrectRHS_h__
-
-	/** Textual name of this class */
-	extern const Type CorrectRHS_Type;
-
-	/** Virtual function types */
-
-	/** CorrectRHS class contents */
-	#define __CorrectRHS		\
-		/* General info */	\
-		__Assembler		\
-					\
-		/* Virtual info */	\
-					\
-		/* CorrectRHS info */	\
-		Bool	trans;
-
-	struct CorrectRHS { __CorrectRHS };
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-
-	#define CORRECTRHS_DEFARGS \
-		ASSEMBLER_DEFARGS
-
-	#define CORRECTRHS_PASSARGS \
-		STG_CLASS_PASSARGS
-
-	CorrectRHS* CorrectRHS_New();
-	CorrectRHS* _CorrectRHS_New( CORRECTRHS_DEFARGS );
-	void _CorrectRHS_Init( CorrectRHS* self );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-
-	void _CorrectRHS_Delete( void* assembler );
-	void _CorrectRHS_Print( void* assembler, Stream* stream );
-
-	void CorrectRHS_ColRestricted( void* assembler );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public functions
-	*/
-
-	void CorrectRHS_SetTranspose( void* assembler, Bool state );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-
-#endif /* __StgFEM_SLE_SystemSetup_CorrectRHS_h__ */

Modified: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ForceVector.c
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ForceVector.c	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ForceVector.c	2007-03-19 05:00:53 UTC (rev 6281)
@@ -56,14 +56,18 @@
 #include <string.h>
 #include "EntryPoint.h"
 #include "Assembler.h"
-#include "InsertBCs.h"
 
+
+Bool ForceVector_BCAsm_RowR( void* forceVec, Assembler* assm );
+
+
 /* Textual name of this class */
 const Type ForceVector_Type = "ForceVector";
 
 /** Name of this class' entry points */
 static const char	ForceVector_assembleForceVectorStr[] = "assembleForceVector";
 
+
 void* _ForceVector_DefaultNew( Name name ) {
 	return _ForceVector_New( 
 		sizeof(ForceVector), 
@@ -187,8 +191,12 @@
 
 	self->forceTermList = Stg_ObjectList_New();
 
-	self->bcAsm = InsertBCs_New();
+	self->bcAsm = Assembler_New();
 	Assembler_SetVariables( self->bcAsm, self->feVariable, NULL );
+	Assembler_SetCallbacks( self->bcAsm, 
+				ForceVector_BCAsm_RowR, NULL, 
+				NULL, NULL, 
+				self );
 }
 
 
@@ -480,10 +488,8 @@
 	}
 
 	/* If we're keeping BCs, insert them into the force vector. */
-	if( !feVar->eqNum->removeBCs ) {
-		InsertBCs_SetVector( self->bcAsm, self->vector );
+	if( !feVar->eqNum->removeBCs )
 		Assembler_LoopVector( self->bcAsm );
-	}
 
 	Vector_AssemblyBegin( self->vector );
 	Vector_AssemblyEnd( self->vector ); 
@@ -516,3 +522,13 @@
 
 	Stg_ObjectList_Append( self->forceTermList, Stg_CheckType( forceTerm, ForceTerm ) );
 }
+
+Bool ForceVector_BCAsm_RowR( void* forceVec, Assembler* assm ) {
+	double	bc;
+
+	bc = DofLayout_GetValueDouble( assm->rowVar->dofLayout, 
+				       assm->rowNodeInd, 
+				       assm->rowDofInd );
+	Vector_InsertEntries( ((ForceVector*)forceVec)->vector, 1, &assm->rowEq, &bc );
+	return True;
+}

Modified: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ForceVector.h
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ForceVector.h	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ForceVector.h	2007-03-19 05:00:53 UTC (rev 6281)
@@ -71,7 +71,7 @@
 		Name                                      _assembleForceVectorEPName; \
 		Stg_ObjectList*                           forceTermList;                             \
 		Stg_Component*                            applicationDepExtraInfo; /**< Default is NULL: passed to elForceVec during assembly */\
-		InsertBCs*				bcAsm;
+		Assembler*				bcAsm;
 	
 	struct ForceVector { __ForceVector };
 	

Modified: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Init.c
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Init.c	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/Init.c	2007-03-19 05:00:53 UTC (rev 6281)
@@ -68,7 +68,7 @@
 	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), SystemLinearEquations_Type, "0", _SystemLinearEquations_DefaultNew );
 	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), ForceTerm_Type, "0", _ForceTerm_DefaultNew );
 	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), 
-				   PETScShellMatrix_Type, "0", PETScShellMatrix_New );
+				   PETScShellMatrix_Type, "0", (void*(*)(Name))PETScShellMatrix_New );
 
 	RegisterParent( SystemLinearEquations_Type,    Stg_Component_Type );
 	RegisterParent( SLE_Solver_Type,               Stg_Component_Type );
@@ -79,10 +79,6 @@
 	RegisterParent( ForceTerm_Type,                Stg_Component_Type );
 	RegisterParent( PETScShellMatrix_Type,         PETScMatrix_Type );
 	RegisterParent( Assembler_Type, Stg_Class_Type );
-	RegisterParent( ZeroBCs_Type, Assembler_Type );
-	RegisterParent( CorrectRHS_Type, Assembler_Type );
-	RegisterParent( UnifyDiagBCs_Type, Assembler_Type );
-	RegisterParent( InsertBCs_Type, Assembler_Type );
 	
 	RegisterParent( FiniteElementContext_Type,     DiscretisationContext_Type );
 

Deleted: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/InsertBCs.c
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/InsertBCs.c	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/InsertBCs.c	2007-03-19 05:00:53 UTC (rev 6281)
@@ -1,137 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id: InsertBCs.c 3584 2006-05-16 11:11:07Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include <mpi.h>
-#include "StGermain/StGermain.h"
-#include "Discretisation/Discretisation.h"
-#include "SLE/LinearAlgebra/LinearAlgebra.h"
-#include "SystemSetup.h"
-
-
-/* Textual name of this class */
-const Type InsertBCs_Type = "InsertBCs";
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-InsertBCs* InsertBCs_New() {
-	return _InsertBCs_New( sizeof(InsertBCs), 
-				  InsertBCs_Type, 
-				  _InsertBCs_Delete, 
-				  _InsertBCs_Print, 
-				  NULL, 
-				  NULL, 
-				  NULL, 
-				  InsertBCs_ColRestricted, 
-				  NULL );
-}
-
-InsertBCs* _InsertBCs_New( INSERTBCS_DEFARGS ) {
-	InsertBCs*	self;
-
-	/* Allocate memory */
-	assert( sizeOfSelf >= sizeof(InsertBCs) );
-	self = (InsertBCs*)_Assembler_New( ASSEMBLER_PASSARGS );
-
-	/* Virtual info */
-
-	/* InsertBCs info */
-	_InsertBCs_Init( self );
-
-	return self;
-}
-
-void _InsertBCs_Init( InsertBCs* self ) {
-	assert( self && Stg_CheckType( self, InsertBCs ) );
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _InsertBCs_Delete( void* assembler ) {
-	InsertBCs*	self = (InsertBCs*)assembler;
-
-	assert( self && Stg_CheckType( self, InsertBCs ) );
-
-	/* Delete the parent. */
-	_Assembler_Delete( self );
-}
-
-void _InsertBCs_Print( void* assembler, Stream* stream ) {
-	InsertBCs*	self = (InsertBCs*)assembler;
-	Stream* 	assemblerStream;
-	
-	/* Set the Journal for printing informations */
-	assemblerStream = Journal_Register( InfoStream_Type, "InsertBCsStream" );
-
-	assert( self && Stg_CheckType( self, InsertBCs ) );
-
-	/* Print parent */
-	Journal_Printf( stream, "InsertBCs (ptr): (%p)\n", self );
-	_Assembler_Print( self, stream );
-}
-
-void InsertBCs_ColRestricted( void* assembler ) {
-	unsigned	rowEq;
-	double		bc;
-
-	bc = DofLayout_GetValueDouble( ((CorrectRHS*)assembler)->rowVar->dofLayout, 
-				       ((CorrectRHS*)assembler)->rowNodeInd, 
-				       ((CorrectRHS*)assembler)->rowDofInd );
-	rowEq = ((InsertBCs*)assembler)->rowEq;
-	Vector_InsertEntries( ((InsertBCs*)assembler)->vector, 1, &rowEq, &bc );
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-void InsertBCs_SetVector( void* assembler, Vector* vector ) {
-	InsertBCs*	self = (InsertBCs*)assembler;
-
-	assert( self && Stg_CheckType( self, InsertBCs ) );
-
-	self->vector = vector;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/

Deleted: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/InsertBCs.h
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/InsertBCs.h	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/InsertBCs.h	2007-03-19 05:00:53 UTC (rev 6281)
@@ -1,94 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Invariants:
-**
-** Comments:
-**
-** $Id: InsertBCs.h 3584 2006-05-16 11:11:07Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __StgFEM_SLE_SystemSetup_InsertBCs_h__
-#define __StgFEM_SLE_SystemSetup_InsertBCs_h__
-
-	/** Textual name of this class */
-	extern const Type InsertBCs_Type;
-
-	/** Virtual function types */
-
-	/** InsertBCs class contents */
-	#define __InsertBCs		\
-		/* General info */	\
-		__Assembler		\
-					\
-		/* Virtual info */	\
-					\
-		/* InsertBCs info */	\
-		Vector*		vector;
-
-	struct InsertBCs { __InsertBCs };
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-
-	#define INSERTBCS_DEFARGS \
-		ASSEMBLER_DEFARGS
-
-	#define INSERTBCS_PASSARGS \
-		ASSEMBLER_PASSARGS
-
-	InsertBCs* InsertBCs_New();
-	InsertBCs* _InsertBCs_New( INSERTBCS_DEFARGS );
-	void _InsertBCs_Init( InsertBCs* self );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-
-	void _InsertBCs_Delete( void* assembler );
-	void _InsertBCs_Print( void* assembler, Stream* stream );
-
-	void InsertBCs_ColRestricted( void* assembler );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public functions
-	*/
-
-	void InsertBCs_SetVector( void* assembler, Vector* vector );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-
-#endif /* __StgFEM_SLE_SystemSetup_InsertBCs_h__ */

Modified: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/StiffnessMatrix.c
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/StiffnessMatrix.c	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/StiffnessMatrix.c	2007-03-19 05:00:53 UTC (rev 6281)
@@ -60,11 +60,15 @@
 #include "SolutionVector.h"
 #include "ForceVector.h"
 #include "Assembler.h"
-#include "ZeroBCs.h"
-#include "CorrectRHS.h"
 
 
 void StiffnessMatrix_NewAssemble( void* stiffnessMatrix, Bool removeBCs, void* _sle, void* _context );
+Bool StiffnessMatrix_ZeroBCsAsm_RowR( void* stiffMat, Assembler* assm );
+Bool StiffnessMatrix_ZeroBCsAsm_RowU( void* stiffMat, Assembler* assm );
+Bool StiffnessMatrix_ZeroBCsAsm_ColR( void* stiffMat, Assembler* assm );
+Bool StiffnessMatrix_BCAsm_ColR( void* stiffMat, Assembler* assm );
+Bool StiffnessMatrix_TransBCAsm_ColR( void* stiffMat, Assembler* assm );
+void StiffnessMatrix_DiagBCsAsm_RowR( void* stiffMat, Assembler* assm );
 
 
 /* Textual name of this class */
@@ -254,20 +258,41 @@
 	self->stiffnessMatrixTermList = Stg_ObjectList_New();
 
 	/* Set default function for Global Stiffness Matrix Assembly */
-	EP_ReplaceAll( self->assembleStiffnessMatrix, StiffnessMatrix_GlobalAssembly_General );
-	/*EP_ReplaceAll( self->assembleStiffnessMatrix, StiffnessMatrix_NewAssemble );*/
+	/*EP_ReplaceAll( self->assembleStiffnessMatrix, StiffnessMatrix_GlobalAssembly_General );*/
+	EP_ReplaceAll( self->assembleStiffnessMatrix, StiffnessMatrix_NewAssemble );
 
 	/* We need some assembler contexts. */
-	self->zeroBCsAsm = ZeroBCs_New();
-	self->bcAsm = CorrectRHS_New();
-	self->transBCAsm = CorrectRHS_New();
-	self->diagBCsAsm = UnifyDiagBCs_New();
+	self->zeroBCsAsm = Assembler_New();
 	Assembler_SetVariables( self->zeroBCsAsm, rowVariable, columnVariable );
+	Assembler_SetCallbacks( self->zeroBCsAsm, 
+				StiffnessMatrix_ZeroBCsAsm_RowR, StiffnessMatrix_ZeroBCsAsm_RowU, 
+				StiffnessMatrix_ZeroBCsAsm_ColR, NULL, 
+				self );
+	self->bcAsm = Assembler_New();
 	Assembler_SetVariables( self->bcAsm, rowVariable, columnVariable );
+	Assembler_SetCallbacks( self->bcAsm, 
+				NULL, NULL, 
+				StiffnessMatrix_BCAsm_ColR, NULL, 
+				self );
+	self->transBCAsm = Assembler_New();
 	Assembler_SetVariables( self->transBCAsm, columnVariable, rowVariable );
-	if( rowVariable == columnVariable )
+	Assembler_SetCallbacks( self->transBCAsm, 
+				NULL, NULL, 
+				StiffnessMatrix_TransBCAsm_ColR, NULL, 
+				self );
+	if( rowVariable == columnVariable ) {
+		self->diagBCsAsm = Assembler_New();
 		Assembler_SetVariables( self->diagBCsAsm, rowVariable, columnVariable );
+		Assembler_SetCallbacks( self->diagBCsAsm, 
+					StiffnessMatrix_DiagBCsAsm_RowR, NULL, 
+					NULL, NULL, 
+					self );
+	}
 
+	self->elStiffMat = NULL;
+	self->bcVals = NULL;
+	self->nRowDofs = 0;
+	self->nColDofs = 0;
 	self->transRHS = NULL;
 }
 
@@ -1122,7 +1147,7 @@
 /* 	//////////////////////////////////////////////////////// */
 		
 	Matrix_AssemblyBegin( self->matrix );
-	Matrix_AssemblyEnd( self->matrix );	
+	Matrix_AssemblyEnd( self->matrix );
 	
 	MPI_Allreduce( &modifiedRHS_Vec_cont, &updateRHS, 1, MPI_UNSIGNED, MPI_LOR, comm );
 	if( updateRHS == True && bcRemoveQuery ) {
@@ -1250,35 +1275,31 @@
 		for( n_i = 0; n_i < nColNodes; n_i++ )
 			nColDofs += colDofs->dofCounts[colNodes[n_i]];
 		nDofs = nRowDofs * nColDofs;
+		self->nRowDofs = nRowDofs;
+		self->nColDofs = nColDofs;
 		if( nDofs > maxDofs ) {
 			maxRCDofs = (nRowDofs > nColDofs) ? nRowDofs : nColDofs;
 			elStiffMat = ReallocArray2D( elStiffMat, double, nRowDofs, nColDofs );
 			bcVals = ReallocArray( bcVals, double, maxRCDofs );
-			Assembler_SetElementStiffnessMatrix( self->zeroBCsAsm, elStiffMat, 
-							     nRowDofs, nColDofs );
-			Assembler_SetElementStiffnessMatrix( self->bcAsm, elStiffMat, 
-							     nRowDofs, nColDofs );
-			Assembler_SetBCCorrectionArray( self->bcAsm, bcVals );
-			Assembler_SetElementStiffnessMatrix( self->transBCAsm, elStiffMat, 
-							     nRowDofs, nColDofs );
-			Assembler_SetBCCorrectionArray( self->transBCAsm, bcVals );
 			maxDofs = nDofs;
+			self->elStiffMat = elStiffMat;
+			self->bcVals = bcVals;
 		}
 
 		/* Assemble the element. */
-		memset( &elStiffMat[0][0], 0, nDofs * sizeof(double) );
+		memset( elStiffMat[0], 0, nDofs * sizeof(double) );
 		StiffnessMatrix_AssembleElement( self, e_i, sle, _context, elStiffMat );
 
 		/* Correct for BCs providing I'm not keeping them in. */
 		if( vector && colEqNum->removeBCs ) {
 			memset( bcVals, 0, maxRCDofs * sizeof(double) );
 			Assembler_LoopMatrixElement( self->bcAsm, e_i );
-			Vector_AddEntries( vector, nColDofs, (unsigned*)colEqNum->locationMatrix[e_i][0], bcVals );
+			Vector_AddEntries( vector, nRowDofs, (unsigned*)rowEqNum->locationMatrix[e_i][0], bcVals );
 		}
 		if( transVector && rowEqNum->removeBCs ) {
 			memset( bcVals, 0, maxRCDofs * sizeof(double) );
 			Assembler_LoopMatrixElement( self->transBCAsm, e_i );
-			Vector_AddEntries( transVector, nRowDofs, (unsigned*)rowEqNum->locationMatrix[e_i][0], bcVals );
+			Vector_AddEntries( transVector, nColDofs, (unsigned*)colEqNum->locationMatrix[e_i][0], bcVals );
 		}
 
 		/* If keeping BCs in, zero corresponding entries in the element stiffness matrix. */
@@ -1292,13 +1313,12 @@
 				   elStiffMat[0] );
 	}
 
+	FreeArray( elStiffMat );
 	FreeArray( bcVals );
 
 	/* If keeping BCs in and rows and columnns use the same variable, put ones in all BC'd diagonals. */
-	if( !colEqNum->removeBCs && rowVar == colVar ) {
-		UnifyDiagBCs_SetMatrix( self->diagBCsAsm, matrix );
+	if( !colEqNum->removeBCs && rowVar == colVar )
 		Assembler_LoopMatrixDiagonal( self->diagBCsAsm );
-	}
 
 	/* Reassemble the matrix and vectors. */
 	Matrix_AssemblyBegin( matrix );
@@ -1967,3 +1987,49 @@
 	nNonZeros[rowEq]++;
 	nonZeros[rowEq][nNonZeros[rowEq] - 1] = colEq;
 }
+
+Bool StiffnessMatrix_ZeroBCsAsm_RowR( void* stiffMat, Assembler* assm ) {
+	memset( ((StiffnessMatrix*)stiffMat)->elStiffMat[assm->rowInd], 0, 
+		((StiffnessMatrix*)stiffMat)->nColDofs * sizeof(double) );
+	return False;
+}
+
+Bool StiffnessMatrix_ZeroBCsAsm_RowU( void* stiffMat, Assembler* assm ) {
+	return False;
+}
+
+Bool StiffnessMatrix_ZeroBCsAsm_ColR( void* stiffMat, Assembler* assm ) {
+	((StiffnessMatrix*)stiffMat)->elStiffMat[assm->rowInd][assm->colInd] = 0.0;
+	return True;
+}
+
+Bool StiffnessMatrix_BCAsm_ColR( void* stiffMat, Assembler* assm ) {
+	double	bc;
+
+	bc = DofLayout_GetValueDouble( assm->colVar->dofLayout, 
+				       assm->colNodeInd, 
+				       assm->colDofInd );
+	((StiffnessMatrix*)stiffMat)->bcVals[assm->rowInd] -= bc * 
+		((StiffnessMatrix*)stiffMat)->elStiffMat[assm->rowInd][assm->colInd];
+	return True;
+}
+
+Bool StiffnessMatrix_TransBCAsm_ColR( void* stiffMat, Assembler* assm ) {
+	double	bc;
+
+	bc = DofLayout_GetValueDouble( assm->colVar->dofLayout, 
+				       assm->colNodeInd, 
+				       assm->colDofInd );
+	((StiffnessMatrix*)stiffMat)->bcVals[assm->rowInd] -= bc * 
+		((StiffnessMatrix*)stiffMat)->elStiffMat[assm->colInd][assm->rowInd];
+	return True;
+}
+
+void StiffnessMatrix_DiagBCsAsm_RowR( void* stiffMat, Assembler* assm ) {
+	static const double	one = 1.0;
+
+	Matrix_InsertEntries( ((StiffnessMatrix*)stiffMat)->matrix, 
+			      1, &assm->rowEq, 
+			      1, &assm->rowEq, 
+			      (double*)&one );
+}

Modified: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/StiffnessMatrix.h
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/StiffnessMatrix.h	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/StiffnessMatrix.h	2007-03-19 05:00:53 UTC (rev 6281)
@@ -99,10 +99,15 @@
 		Index*                                            diagonalNonZeroIndices;         \
 		Index                                             offDiagonalNonZeroCount;        \
 		Index*                                            offDiagonalNonZeroIndices;      \
-		ZeroBCs*					zeroBCsAsm;			\
-		CorrectRHS*					bcAsm;				\
-		CorrectRHS*					transBCAsm;			\
-		UnifyDiagBCs*					diagBCsAsm;
+												\
+		Assembler*					zeroBCsAsm;			\
+		Assembler*					bcAsm;				\
+		Assembler*					transBCAsm;			\
+		Assembler*					diagBCsAsm;			\
+		double**					elStiffMat;			\
+		double*						bcVals;				\
+		unsigned					nRowDofs;			\
+		unsigned					nColDofs;
 		
 	struct StiffnessMatrix { __StiffnessMatrix };
 	

Modified: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/SystemSetup.h
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/SystemSetup.h	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/SystemSetup.h	2007-03-19 05:00:53 UTC (rev 6281)
@@ -65,10 +65,6 @@
 	#include "ForceVector.h"
 	#include "ForceTerm.h"
 	#include "Assembler.h"
-	#include "ZeroBCs.h"
-	#include "CorrectRHS.h"
-	#include "UnifyDiagBCs.h"
-	#include "InsertBCs.h"
 
 #ifdef HAVE_PETSC
 	#include "PETScShellMatrix.h"

Deleted: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/UnifyDiagBCs.c
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/UnifyDiagBCs.c	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/UnifyDiagBCs.c	2007-03-19 05:00:53 UTC (rev 6281)
@@ -1,134 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id: UnifyDiagBCs.c 3584 2006-05-16 11:11:07Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include <mpi.h>
-#include "StGermain/StGermain.h"
-#include "Discretisation/Discretisation.h"
-#include "SLE/LinearAlgebra/LinearAlgebra.h"
-#include "SystemSetup.h"
-
-
-/* Textual name of this class */
-const Type UnifyDiagBCs_Type = "UnifyDiagBCs";
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-UnifyDiagBCs* UnifyDiagBCs_New() {
-	return _UnifyDiagBCs_New( sizeof(UnifyDiagBCs), 
-				  UnifyDiagBCs_Type, 
-				  _UnifyDiagBCs_Delete, 
-				  _UnifyDiagBCs_Print, 
-				  NULL, 
-				  NULL, 
-				  NULL, 
-				  UnifyDiagBCs_ColRestricted, 
-				  NULL );
-}
-
-UnifyDiagBCs* _UnifyDiagBCs_New( UNIFYDIAGBCS_DEFARGS ) {
-	UnifyDiagBCs*	self;
-
-	/* Allocate memory */
-	assert( sizeOfSelf >= sizeof(UnifyDiagBCs) );
-	self = (UnifyDiagBCs*)_Assembler_New( ASSEMBLER_PASSARGS );
-
-	/* Virtual info */
-
-	/* UnifyDiagBCs info */
-	_UnifyDiagBCs_Init( self );
-
-	return self;
-}
-
-void _UnifyDiagBCs_Init( UnifyDiagBCs* self ) {
-	assert( self && Stg_CheckType( self, UnifyDiagBCs ) );
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _UnifyDiagBCs_Delete( void* assembler ) {
-	UnifyDiagBCs*	self = (UnifyDiagBCs*)assembler;
-
-	assert( self && Stg_CheckType( self, UnifyDiagBCs ) );
-
-	/* Delete the parent. */
-	_Assembler_Delete( self );
-}
-
-void _UnifyDiagBCs_Print( void* assembler, Stream* stream ) {
-	UnifyDiagBCs*	self = (UnifyDiagBCs*)assembler;
-	Stream* 	assemblerStream;
-	
-	/* Set the Journal for printing informations */
-	assemblerStream = Journal_Register( InfoStream_Type, "UnifyDiagBCsStream" );
-
-	assert( self && Stg_CheckType( self, UnifyDiagBCs ) );
-
-	/* Print parent */
-	Journal_Printf( stream, "UnifyDiagBCs (ptr): (%p)\n", self );
-	_Assembler_Print( self, stream );
-}
-
-void UnifyDiagBCs_ColRestricted( void* assembler ) {
-	static const double	one = 1.0;
-	unsigned		rowEq;
-
-	rowEq = ((UnifyDiagBCs*)assembler)->rowEq;
-	Matrix_InsertEntries( ((UnifyDiagBCs*)assembler)->matrix, 1, &rowEq, 1, &rowEq, &one );
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-void UnifyDiagBCs_SetMatrix( void* assembler, Matrix* matrix ) {
-	UnifyDiagBCs*	self = (UnifyDiagBCs*)assembler;
-
-	assert( self && Stg_CheckType( self, UnifyDiagBCs ) );
-
-	self->matrix = matrix;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/

Deleted: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/UnifyDiagBCs.h
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/UnifyDiagBCs.h	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/UnifyDiagBCs.h	2007-03-19 05:00:53 UTC (rev 6281)
@@ -1,94 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Invariants:
-**
-** Comments:
-**
-** $Id: UnifyDiagBCs.h 3584 2006-05-16 11:11:07Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __StgFEM_SLE_SystemSetup_UnifyDiagBCs_h__
-#define __StgFEM_SLE_SystemSetup_UnifyDiagBCs_h__
-
-	/** Textual name of this class */
-	extern const Type UnifyDiagBCs_Type;
-
-	/** Virtual function types */
-
-	/** UnifyDiagBCs class contents */
-	#define __UnifyDiagBCs		\
-		/* General info */	\
-		__Assembler		\
-					\
-		/* Virtual info */	\
-					\
-		/* UnifyDiagBCs info */	\
-		Matrix*		matrix;
-
-	struct UnifyDiagBCs { __UnifyDiagBCs };
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-
-	#define UNIFYDIAGBCS_DEFARGS \
-		ASSEMBLER_DEFARGS
-
-	#define UNIFYDIAGBCS_PASSARGS \
-		ASSEMBLER_PASSARGS
-
-	UnifyDiagBCs* UnifyDiagBCs_New();
-	UnifyDiagBCs* _UnifyDiagBCs_New( UNIFYDIAGBCS_DEFARGS );
-	void _UnifyDiagBCs_Init( UnifyDiagBCs* self );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-
-	void _UnifyDiagBCs_Delete( void* assembler );
-	void _UnifyDiagBCs_Print( void* assembler, Stream* stream );
-
-	void UnifyDiagBCs_ColRestricted( void* assembler );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public functions
-	*/
-
-	void UnifyDiagBCs_SetMatrix( void* assembler, Matrix* matrix );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-
-#endif /* __StgFEM_SLE_SystemSetup_UnifyDiagBCs_h__ */

Deleted: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ZeroBCs.c
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ZeroBCs.c	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ZeroBCs.c	2007-03-19 05:00:53 UTC (rev 6281)
@@ -1,136 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id: ZeroBCs.c 3584 2006-05-16 11:11:07Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include <mpi.h>
-#include "StGermain/StGermain.h"
-#include "Discretisation/Discretisation.h"
-#include "SLE/LinearAlgebra/LinearAlgebra.h"
-#include "SystemSetup.h"
-
-
-/* Textual name of this class */
-const Type ZeroBCs_Type = "ZeroBCs";
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-ZeroBCs* ZeroBCs_New() {
-	return _ZeroBCs_New( sizeof(ZeroBCs), 
-			     ZeroBCs_Type, 
-			     _ZeroBCs_Delete, 
-			     _ZeroBCs_Print, 
-			     NULL, 
-			     ZeroBCs_RowRestricted, 
-			     ZeroBCs_RowUnrestricted, 
-			     NULL, 
-			     NULL );
-}
-
-ZeroBCs* _ZeroBCs_New( ZEROBCS_DEFARGS ) {
-	ZeroBCs*	self;
-
-	/* Allocate memory */
-	assert( sizeOfSelf >= sizeof(ZeroBCs) );
-	self = (ZeroBCs*)_Assembler_New( ASSEMBLER_PASSARGS );
-
-	/* Virtual info */
-
-	/* ZeroBCs info */
-	_ZeroBCs_Init( self );
-
-	return self;
-}
-
-void _ZeroBCs_Init( ZeroBCs* self ) {
-	assert( self && Stg_CheckType( self, ZeroBCs ) );
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _ZeroBCs_Delete( void* assembler ) {
-	ZeroBCs*	self = (ZeroBCs*)assembler;
-
-	assert( self && Stg_CheckType( self, ZeroBCs ) );
-
-	/* Delete the parent. */
-	_Assembler_Delete( self );
-}
-
-void _ZeroBCs_Print( void* assembler, Stream* stream ) {
-	ZeroBCs*	self = (ZeroBCs*)assembler;
-	Stream* 	assemblerStream;
-	
-	/* Set the Journal for printing informations */
-	assemblerStream = Journal_Register( InfoStream_Type, "ZeroBCsStream" );
-
-	assert( self && Stg_CheckType( self, ZeroBCs ) );
-
-	/* Print parent */
-	Journal_Printf( stream, "ZeroBCs (ptr): (%p)\n", self );
-	_Assembler_Print( self, stream );
-}
-
-Bool ZeroBCs_RowUnrestricted( void* assembler ) {
-	return False;
-}
-
-Bool ZeroBCs_RowRestricted( void* assembler ) {
-	memset( ((ZeroBCs*)assembler)->elStiffMat[((ZeroBCs*)assembler)->rowInd], 0, 
-		((ZeroBCs*)assembler)->nColEqs * sizeof(double) );
-	return False;
-}
-
-void ZeroBCs_ColRestricted( void* assembler ) {
-	unsigned	rowInd, colInd;
-
-	rowInd = ((ZeroBCs*)assembler)->rowInd;
-	colInd = ((ZeroBCs*)assembler)->colInd;
-	((ZeroBCs*)assembler)->elStiffMat[rowInd][colInd] = 0.0;
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/

Deleted: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ZeroBCs.h
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ZeroBCs.h	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/ZeroBCs.h	2007-03-19 05:00:53 UTC (rev 6281)
@@ -1,93 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Invariants:
-**
-** Comments:
-**
-** $Id: ZeroBCs.h 3584 2006-05-16 11:11:07Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __StgFEM_SLE_SystemSetup_ZeroBCs_h__
-#define __StgFEM_SLE_SystemSetup_ZeroBCs_h__
-
-	/** Textual name of this class */
-	extern const Type ZeroBCs_Type;
-
-	/** Virtual function types */
-
-	/** ZeroBCs class contents */
-	#define __ZeroBCs		\
-		/* General info */	\
-		__Assembler		\
-					\
-		/* Virtual info */	\
-					\
-		/* ZeroBCs info */
-
-	struct ZeroBCs { __ZeroBCs };
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-
-	#define ZEROBCS_DEFARGS \
-		ASSEMBLER_DEFARGS
-
-	#define ZEROBCS_PASSARGS \
-		STG_CLASS_PASSARGS
-
-	ZeroBCs* ZeroBCs_New();
-	ZeroBCs* _ZeroBCs_New( ZEROBCS_DEFARGS );
-	void _ZeroBCs_Init( ZeroBCs* self );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-
-	void _ZeroBCs_Delete( void* assembler );
-	void _ZeroBCs_Print( void* assembler, Stream* stream );
-
-	Bool ZeroBCs_RowUnrestricted( void* assembler );
-	Bool ZeroBCs_RowRestricted( void* assembler );
-	void ZeroBCs_ColRestricted( void* assembler );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public functions
-	*/
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-
-#endif /* __StgFEM_SLE_SystemSetup_ZeroBCs_h__ */

Modified: long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/types.h
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/types.h	2007-03-19 05:00:40 UTC (rev 6280)
+++ long/3D/Gale/trunk/src/StgFEM/SLE/SystemSetup/src/types.h	2007-03-19 05:00:53 UTC (rev 6281)
@@ -63,10 +63,6 @@
 	typedef struct SLE_Solver                   SLE_Solver;
 	typedef struct FiniteElementContext         FiniteElementContext;
 	typedef struct Assembler		Assembler;
-	typedef struct ZeroBCs			ZeroBCs;
-	typedef struct CorrectRHS		CorrectRHS;
-	typedef struct UnifyDiagBCs		UnifyDiagBCs;
-	typedef struct InsertBCs		InsertBCs;
 
 	/* types for lists etc ... for readability */
 	typedef Index                       StiffnessMatrix_Index;



More information about the cig-commits mailing list