[cig-commits] r6241 - in long/3D/Gale/trunk/src/StgFEM: .
Discretisation/src
walter at geodynamics.org
walter at geodynamics.org
Tue Mar 13 11:13:05 PDT 2007
Author: walter
Date: 2007-03-13 11:13:04 -0700 (Tue, 13 Mar 2007)
New Revision: 6241
Modified:
long/3D/Gale/trunk/src/StgFEM/
long/3D/Gale/trunk/src/StgFEM/Discretisation/src/FeEquationNumber.c
Log:
r1044 at earth (orig r775): LukeHodkinson | 2007-03-08 18:04:45 -0800
Updating the code for keeping equations with BCs
in the final system.
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:774
db209038-57f2-0310-97fa-b160e0ae9d04:/trunk:669
+ 38867592-cf10-0410-9e16-a142ea72ac34:/cig:880
db209038-57f2-0310-97fa-b160e0ae9d04:/branches/decomp3d:775
db209038-57f2-0310-97fa-b160e0ae9d04:/trunk:669
Modified: long/3D/Gale/trunk/src/StgFEM/Discretisation/src/FeEquationNumber.c
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/Discretisation/src/FeEquationNumber.c 2007-03-13 18:12:58 UTC (rev 6240)
+++ long/3D/Gale/trunk/src/StgFEM/Discretisation/src/FeEquationNumber.c 2007-03-13 18:13:04 UTC (rev 6241)
@@ -2322,7 +2322,9 @@
for( dof_i = 0; dof_i < nNodalDofs[n_i]; dof_i++ ) {
varInd = self->dofLayout->varIndices[n_i][dof_i];
- if( !self->bcs || !VariableCondition_IsCondition( self->bcs, n_i, varInd ) ) {
+ if( !self->bcs || !VariableCondition_IsCondition( self->bcs, n_i, varInd ) ||
+ !self->removeBCs )
+ {
if( links && links->linkedDofTbl[n_i][dof_i] != -1 ) {
if( links->eqNumsOfLinkedDofs[links->linkedDofTbl[n_i][dof_i]] == -1 )
links->eqNumsOfLinkedDofs[links->linkedDofTbl[n_i][dof_i]] = curEqNum++;
@@ -2365,7 +2367,9 @@
for( n_i = 0; n_i < nLocalNodes; n_i++ ) {
for( dof_i = 0; dof_i < nNodalDofs[n_i]; dof_i++ ) {
varInd = self->dofLayout->varIndices[n_i][dof_i];
- if( !self->bcs || !VariableCondition_IsCondition( self->bcs, n_i, varInd ) ) {
+ if( !self->bcs || !VariableCondition_IsCondition( self->bcs, n_i, varInd ) ||
+ !self->removeBCs )
+ {
if( links && links->linkedDofTbl[n_i][dof_i] != -1 )
dstArray[n_i][dof_i] = links->eqNumsOfLinkedDofs[links->linkedDofTbl[n_i][dof_i]];
else
@@ -2389,8 +2393,11 @@
for( n_i = nLocalNodes; n_i < nDomainNodes; n_i++ ) {
for( dof_i = 0; dof_i < nNodalDofs[n_i]; dof_i++ ) {
varInd = self->dofLayout->varIndices[n_i][dof_i];
- if( !self->bcs || !VariableCondition_IsCondition( self->bcs, n_i, varInd ) )
+ if( !self->bcs || !VariableCondition_IsCondition( self->bcs, n_i, varInd ) ||
+ !self->removeBCs )
+ {
dstArray[n_i][dof_i] = tuples[n_i * maxDofs + dof_i];
+ }
else
dstArray[n_i][dof_i] = -1;
}
@@ -2425,3 +2432,35 @@
self->_lowestGlobalEqNums = AllocArray( int, nProcs );
MPI_Allgather( &self->firstOwnedEqNum, 1, MPI_UNSIGNED, self->_lowestGlobalEqNums, 1, MPI_UNSIGNED, comm );
}
+
+#if 0
+void FeEquationNumber_Invert( void* feEqNum, int equation, unsigned* node, unsigned* dof ) {
+ FeEquationNumber* self = (FeEquationNumber*)feEqNum;
+
+ assert( self && Stg_CheckType( self, FeEquationNumber ) );
+ assert( equation - self->firstOwnedEqNum < self->localEqNumsOwnedCount );
+ assert( node );
+ assert( dof );
+
+ eq = equation - self->firstOwnedEqNum;
+ *node = self->eqToNode[eq];
+ *dof = self->eqToDof[eq];
+}
+
+Bool FeEquationNumber_IsKnown( void* feEqNum, int equation ) {
+ FeEquationNumber* self = (FeEquationNumber*)feEqNum;
+ unsigned node, dof;
+ unsigned varInd;
+
+ assert( self && Stg_CheckType( self, FeEquationNumber ) );
+
+ if( !self->bcs ) return False;
+ FeEquationNumber_Invert( self, equation, &node, &dof );
+
+ assert( self->dofLayout );
+ assert( self->dofLayout->varIndices );
+ assert( self->dofLayout->varIndices[node] );
+ varInd = self->dofLayout->varIndices[node][dof];
+ return VariableCondition_IsCondition( self->bcs, n_i, varInd );
+}
+#endif
More information about the cig-commits
mailing list