[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