[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