[cig-commits] r4855 - in long/3D/Gale/trunk/src/StGermain: . Discretisation/Swarm/src

walter at geodynamics.org walter at geodynamics.org
Wed Oct 11 13:47:18 PDT 2006


Author: walter
Date: 2006-10-11 13:47:18 -0700 (Wed, 11 Oct 2006)
New Revision: 4855

Modified:
   long/3D/Gale/trunk/src/StGermain/
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.h
Log:
 r2912 at earth:  boo | 2006-10-11 13:42:39 -0700
  r2828 at earth (orig r3816):  LukeHodkinson | 2006-09-26 20:35:48 -0700
  When using the escaped routine in parallel, 
  ParticleCommHandler was aborting before particles
  had been removed. Adding a flag to stop this
  behaviour when particle removal is enabled.
  
 



Property changes on: long/3D/Gale/trunk/src/StGermain
___________________________________________________________________
Name: svk:merge
   - 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2911
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3815
   + 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2912
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3816

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c	2006-10-11 20:47:16 UTC (rev 4854)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c	2006-10-11 20:47:18 UTC (rev 4855)
@@ -42,6 +42,7 @@
 
 #include "SwarmClass.h"
 #include "CellLayout.h"
+#include "ElementCellLayout.h"
 #include "StandardParticle.h"
 
 #include <stdio.h>
@@ -125,6 +126,7 @@
 	self->particlesOutsideDomainTotalCount = 0;
 	self->particlesOutsideDomainUnfilledCount = 0;
 	self->currParticleLeavingMyDomainIndex = 0;
+	self->defensive = True;
 }
 
 
@@ -1125,20 +1127,21 @@
 		Memory_Free( globalParticlesLeavingDomains );
 
 		/* Defensive check to make sure particles not lost/created accidentally somehow */
-		MPI_Reduce( globalParticlesArrivingMyDomainCountPtr, &totalParticlesFoundEnteringDomains,
-			1, MPI_UNSIGNED, MPI_SUM, 0, self->swarm->comm );
-		if ( 0 == self->swarm->myRank ) {
-			Stream*   errorStream = Journal_Register( Error_Type, self->type );
+		if( self->defensive == True ) {
+			MPI_Reduce( globalParticlesArrivingMyDomainCountPtr, &totalParticlesFoundEnteringDomains,
+				    1, MPI_UNSIGNED, MPI_SUM, 0, self->swarm->comm );
+			if ( 0 == self->swarm->myRank ) {
+				Stream*   errorStream = Journal_Register( Error_Type, self->type );
 
-			Journal_Firewall( totalParticlesFoundEnteringDomains == (*globalParticlesOutsideDomainTotalPtr),
-				errorStream, "Error - in %s(): %d particles were found across all processors to be "
-					"leaving the individual domains directly, but after sharing and searching %d were "
-					"found entering them directly! These must match as no particles should be "
-					"lost/created through advection.\n",
-					__func__, (*globalParticlesOutsideDomainTotalPtr),
-					totalParticlesFoundEnteringDomains );
+				Journal_Firewall( totalParticlesFoundEnteringDomains == (*globalParticlesOutsideDomainTotalPtr),
+						  errorStream, "Error - in %s(): %d particles were found across all processors to be "
+						  "leaving the individual domains directly, but after sharing and searching %d were "
+						  "found entering them directly! These must match as no particles should be "
+						  "lost/created through advection.\n",
+						  __func__, (*globalParticlesOutsideDomainTotalPtr),
+						  totalParticlesFoundEnteringDomains );
+			}
 		}
-
 	}	
 	Memory_Free( globalParticlesOutsideDomainCounts );
 	Stream_UnIndentBranch( Swarm_Debug );

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.h	2006-10-11 20:47:16 UTC (rev 4854)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.h	2006-10-11 20:47:18 UTC (rev 4855)
@@ -79,6 +79,7 @@
 		/** transfer array [nbr] of particles to recv */ \
 		Particle**			particlesArrivingFromNbrShadowCells; \
 		MPI_Request**			particlesArrivingFromNbrShadowCellsHandles; \
+		Bool				defensive;
 
 
 	struct ParticleCommHandler { __ParticleCommHandler };	



More information about the cig-commits mailing list