[cig-commits] r5829 - in long/3D/Gale/trunk/src/StGermain: .
Discretisation/Swarm/src
walter at geodynamics.org
walter at geodynamics.org
Thu Jan 18 14:28:18 PST 2007
Author: walter
Date: 2007-01-18 14:28:17 -0800 (Thu, 18 Jan 2007)
New Revision: 5829
Modified:
long/3D/Gale/trunk/src/StGermain/
long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.c
long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c
Log:
r3318 at earth (orig r3979): LukeHodkinson | 2007-01-17 23:55:45 -0800
* Updated how the element cell layout calculates shadow
information to reflect the new shared algorithms.
* Fixed a logic bug in particle comms handler.
Property changes on: long/3D/Gale/trunk/src/StGermain
___________________________________________________________________
Name: svk:merge
- 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:3196
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/branches/decomp3d/StGermain:3978
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3899
+ 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:3196
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/branches/decomp3d/StGermain:3979
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3899
Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.c 2007-01-18 22:28:15 UTC (rev 5828)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.c 2007-01-18 22:28:17 UTC (rev 5829)
@@ -395,6 +395,9 @@
unsigned* sharers;
unsigned s_i;
+ if( Mesh_SharedToDomain( self->mesh, nDims, n_i ) >= Mesh_GetLocalSize( self->mesh, nDims ) )
+ continue;
+
Mesh_GetSharers( self->mesh, nDims, n_i,
&nSharers, &sharers );
for( s_i = 0; s_i < nSharers; s_i++ )
@@ -423,7 +426,10 @@
unsigned* sharers;
unsigned s_i;
- local = Mesh_SharedToLocal( self->mesh, nDims, n_i );
+ local = Mesh_SharedToDomain( self->mesh, nDims, n_i );
+ if( local >= Mesh_GetLocalSize( self->mesh, nDims ) )
+ continue;
+
Mesh_GetSharers( self->mesh, nDims, n_i,
&nSharers, &sharers );
for( s_i = 0; s_i < nSharers; s_i++ ) {
Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c 2007-01-18 22:28:15 UTC (rev 5828)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c 2007-01-18 22:28:17 UTC (rev 5829)
@@ -141,7 +141,7 @@
return;
ParticleCommHandler_BuildShadowParticles( self, &nShadows, &particles );
- ParticleCommHandler_ExchangeShadowParticles( self, nShadows, particles );
+ /*ParticleCommHandler_ExchangeShadowParticles( self, nShadows, particles );*/
/*
ParticleCommHandler_BuildExternalParticles( self, &nExternals, &externals );
@@ -203,7 +203,7 @@
for( cell_i = 0; cell_i < shadowInfo->procShadowCnt[nbr_i]; cell_i++ ) {
for( p_i = 0; p_i < swarm->cellParticleCountTbl[shadowInfo->procShadowTbl[nbr_i][cell_i]]; p_i++ ) {
shds[nShds[nbr_i]] = swarm->cellParticleTbl[shadowInfo->procShadowTbl[nbr_i][cell_i]][p_i];
- Swarm_CopyParticleOffSwarm( swarm, parts[nbr_i], nShds[nbr_i], shds[nShds[nbr_i]] );
+ /*Swarm_CopyParticleOffSwarm( swarm, parts[nbr_i], nShds[nbr_i], shds[nShds[nbr_i]] );*/
nShds[nbr_i]++;
}
}
@@ -254,15 +254,17 @@
FreeArray( particles );
FreeArray( nShadows );
+#if 0
for( nbr_i = 0; nbr_i < nbrInfo->procNbrCnt; nbr_i++ ) {
if( !nRecvParticles[nbr_i] )
continue;
- if( swarm->particleLocalCount + nRecvParticles[nbr_i] >= swarm->particlesArraySize ) {
- unsigned nDeltas;
+ if( swarm->particleLocalCount + nRecvParticles[nbr_i] > swarm->particlesArraySize ) {
+ unsigned diff, nDeltas;
- nDeltas = nRecvParticles[nbr_i] % swarm->particlesArrayDelta;
- nDeltas += nDeltas ? 0 : 1;
+ diff = (swarm->particleLocalCount + nRecvParticles[nbr_i]) - swarm->particlesArraySize;
+ nDeltas = diff / swarm->particlesArrayDelta;
+ nDeltas += (diff % swarm->particlesArrayDelta) ? 1 : 0;
swarm->particlesArraySize += nDeltas * swarm->particlesArrayDelta;
swarm->particles = Memory_Realloc_Array_Bytes( swarm->particles,
particleSize,
@@ -277,6 +279,7 @@
}
swarm->particleLocalCount += nRecvParticles[nbr_i];
}
+#endif
FreeArray( nRecvParticles );
for( nbr_i = 0; nbr_i < nbrInfo->procNbrCnt; nbr_i++ )
@@ -352,12 +355,14 @@
remainInd = nRemaining - r_i - 1;
if( remaining[remainInd] < rems[r_i] )
- break;
+ continue;
Swarm_CopyParticleWithinSwarm( swarm, rems[r_i], remaining[remainInd] );
owningCell = Swarm_ParticleAt( self->swarm, rems[r_i] )->owningCell;
- particleInd = Swarm_GetParticleIndexWithinCell( self->swarm, owningCell, remaining[remainInd] );
- swarm->cellParticleTbl[owningCell][particleInd] = rems[r_i];
+ if( owningCell < swarm->cellDomainCount ) {
+ particleInd = Swarm_GetParticleIndexWithinCell( self->swarm, owningCell, remaining[remainInd] );
+ swarm->cellParticleTbl[owningCell][particleInd] = rems[r_i];
+ }
}
FreeArray( remaining );
More information about the cig-commits
mailing list