[cig-commits] commit: Making the SwarmAdvector check if the mesh is periodic and if it is then it creates a periodic boundaries manager

Mercurial hg at geodynamics.org
Mon Nov 24 11:30:53 PST 2008


changeset:   84:53cc6c038671
user:        RobertTurnbull
date:        Fri Mar 28 06:41:03 2008 +0000
files:       Apps/LidDrivenPIC/AnalyticShear.xml Apps/LidDrivenPIC/AnalyticShearXZ.xml Apps/LidDrivenPIC/AnalyticShearZ.xml Apps/LidDrivenPIC/velocityBCs.shear.xml Apps/LidDrivenPIC/velocityBCs.shearX.xml Apps/LidDrivenPIC/velocityBCs.shearXZ.xml Apps/LidDrivenPIC/velocityBCs.shearZ.xml Apps/PIC_Components/PeriodicBCsManager.I_AXIS.xml Apps/PIC_Components/PeriodicBCsManager.K_AXIS.xml MaterialPoints/src/PeriodicBoundariesManager.c MaterialPoints/src/SwarmAdvector.c
description:
Making the SwarmAdvector check if the mesh is periodic and if it is then it creates a periodic boundaries manager
Now you don't have to have create a periodic boundaries manager in your input file if you already specific the mesh as periodic.


diff -r 849032ee3278 -r 53cc6c038671 Apps/LidDrivenPIC/AnalyticShear.xml
--- a/Apps/LidDrivenPIC/AnalyticShear.xml	Fri Mar 28 04:22:04 2008 +0000
+++ b/Apps/LidDrivenPIC/AnalyticShear.xml	Fri Mar 28 06:41:03 2008 +0000
@@ -4,7 +4,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
  	
 	<include>./LidDrivenPIC.xml</include>
-	<include>./velocityBCs.shear.xml</include>
+	<include>./velocityBCs.shearX.xml</include>
 	<list name="plugins">
 		<param>StgFEM_LinearVelocityAnalytic</param>
 	</list>
diff -r 849032ee3278 -r 53cc6c038671 Apps/LidDrivenPIC/AnalyticShearXZ.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Apps/LidDrivenPIC/AnalyticShearXZ.xml	Fri Mar 28 06:41:03 2008 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+ 	
+	<include>./LidDrivenPIC.xml</include>
+	<include>./velocityBCs.shearXZ.xml</include>
+	<list name="plugins">
+		<param>StgFEM_LinearVelocityAnalytic</param>
+	</list>
+	
+	<param name="VelocityField-Tolerance">1e-6</param>
+	<param name="dim">3</param>
+	<param name="elementResI">10</param>
+	<param name="elementResJ">10</param>
+	<param name="elementResK">10</param>
+
+</StGermainData>
diff -r 849032ee3278 -r 53cc6c038671 Apps/LidDrivenPIC/AnalyticShearZ.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Apps/LidDrivenPIC/AnalyticShearZ.xml	Fri Mar 28 06:41:03 2008 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+ 	
+	<include>./LidDrivenPIC.xml</include>
+	<include>./velocityBCs.shearZ.xml</include>
+	<list name="plugins">
+		<param>StgFEM_LinearVelocityAnalytic</param>
+	</list>
+	
+	<param name="VelocityField-Tolerance">1e-6</param>
+	<param name="dim">3</param>
+	<param name="elementResI">10</param>
+	<param name="elementResJ">10</param>
+	<param name="elementResK">10</param>
+
+</StGermainData>
diff -r 849032ee3278 -r 53cc6c038671 Apps/LidDrivenPIC/velocityBCs.shear.xml
--- a/Apps/LidDrivenPIC/velocityBCs.shear.xml	Fri Mar 28 04:22:04 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<!-- A StGermain input file -->
-<!-- DTD to validate against -->
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-	<!-- Periodic boundary conditions -->
-	<include>StgFEM/PeriodicX.xml</include>
-	<include>PICellerator/PeriodicBCsManager.I_AXIS.xml</include>
-	
-	<!-- Velocity BCs -->
-	<struct name="velocityBCs" mergeType="replace">
-		<param name="type">CompositeVC</param>
-		<list name="vcList">
-			<struct>
-				<param name="type"> WallVC </param>
-				<param name="wall"> bottom </param>
-				<list name="variables">
-					<struct>
-						<param name="name">vx</param>
-						<param name="type">double</param>
-						<param name="value"> 0.5 </param>
-					</struct>
-					<struct>
-						<param name="name">vy</param>
-						<param name="type">double</param>
-						<param name="value"> 0 </param>
-					</struct>
-				</list>
-			</struct>
-			<struct>
-				<param name="type"> WallVC </param>
-				<param name="wall"> front </param>
-				<list name="variables">
-					<struct>
-						<param name="name">vz</param>
-						<param name="type">double</param>
-						<param name="value"> 0 </param>
-					</struct>
-				</list>
-			</struct>
-			<struct>
-				<param name="type"> WallVC </param>
-				<param name="wall"> back </param>
-				<list name="variables">
-					<struct>
-						<param name="name">vz</param>
-						<param name="type">double</param>
-						<param name="value"> 0 </param>
-					</struct>
-				</list>
-			</struct>
-			<struct>
-				<param name="type"> WallVC </param>
-				<param name="wall"> top </param>
-				<list name="variables">
-					<struct>
-						<param name="name">vx</param>
-						<param name="type">double</param>
-						<param name="value"> -0.5 </param>
-					</struct>
-					<struct>
-						<param name="name">vy</param>
-						<param name="type">double</param>
-						<param name="value"> 0 </param>
-					</struct>
-				</list>
-			</struct>
-		</list>
-	</struct>
-
-
-</StGermainData>
diff -r 849032ee3278 -r 53cc6c038671 Apps/LidDrivenPIC/velocityBCs.shearX.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Apps/LidDrivenPIC/velocityBCs.shearX.xml	Fri Mar 28 06:41:03 2008 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<!-- A StGermain input file -->
+<!-- DTD to validate against -->
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+	<!-- Periodic boundary conditions -->
+	<include>StgFEM/PeriodicX.xml</include>
+	
+	<!-- Velocity BCs -->
+	<struct name="velocityBCs" mergeType="replace">
+		<param name="type">CompositeVC</param>
+		<list name="vcList">
+			<struct>
+				<param name="type"> WallVC </param>
+				<param name="wall"> bottom </param>
+				<list name="variables">
+					<struct>
+						<param name="name">vx</param>
+						<param name="type">double</param>
+						<param name="value"> 0.5 </param>
+					</struct>
+					<struct>
+						<param name="name">vy</param>
+						<param name="type">double</param>
+						<param name="value"> 0 </param>
+					</struct>
+				</list>
+			</struct>
+			<struct>
+				<param name="type"> WallVC </param>
+				<param name="wall"> front </param>
+				<list name="variables">
+					<struct>
+						<param name="name">vz</param>
+						<param name="type">double</param>
+						<param name="value"> 0 </param>
+					</struct>
+				</list>
+			</struct>
+			<struct>
+				<param name="type"> WallVC </param>
+				<param name="wall"> back </param>
+				<list name="variables">
+					<struct>
+						<param name="name">vz</param>
+						<param name="type">double</param>
+						<param name="value"> 0 </param>
+					</struct>
+				</list>
+			</struct>
+			<struct>
+				<param name="type"> WallVC </param>
+				<param name="wall"> top </param>
+				<list name="variables">
+					<struct>
+						<param name="name">vx</param>
+						<param name="type">double</param>
+						<param name="value"> -0.5 </param>
+					</struct>
+					<struct>
+						<param name="name">vy</param>
+						<param name="type">double</param>
+						<param name="value"> 0 </param>
+					</struct>
+				</list>
+			</struct>
+		</list>
+	</struct>
+
+
+</StGermainData>
diff -r 849032ee3278 -r 53cc6c038671 Apps/LidDrivenPIC/velocityBCs.shearXZ.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Apps/LidDrivenPIC/velocityBCs.shearXZ.xml	Fri Mar 28 06:41:03 2008 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<!-- A StGermain input file -->
+<!-- DTD to validate against -->
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+	<!-- Periodic boundary conditions -->
+	<include>StgFEM/PeriodicX.xml</include>
+	<include>StgFEM/PeriodicZ.xml</include>
+	
+	<!-- Velocity BCs -->
+	<struct name="velocityBCs" mergeType="replace">
+		<param name="type">CompositeVC</param>
+		<list name="vcList">
+			<struct>
+				<param name="type"> WallVC </param>
+				<param name="wall"> bottom </param>
+				<list name="variables">
+					<struct>
+						<param name="name">vx</param>
+						<param name="type">double</param>
+						<param name="value"> -1.0 </param>
+					</struct>
+					<struct>
+						<param name="name">vz</param>
+						<param name="type">double</param>
+						<param name="value"> 0.5 </param>
+					</struct>
+					<struct>
+						<param name="name">vy</param>
+						<param name="type">double</param>
+						<param name="value"> 0 </param>
+					</struct>
+				</list>
+			</struct>
+
+			<struct>
+				<param name="type"> WallVC </param>
+				<param name="wall"> top </param>
+				<list name="variables">
+					<struct>
+						<param name="name">vx</param>
+						<param name="type">double</param>
+						<param name="value"> 1.0 </param>
+					</struct>
+					<struct>
+						<param name="name">vz</param>
+						<param name="type">double</param>
+						<param name="value"> -0.5 </param>
+					</struct>
+					<struct>
+						<param name="name">vy</param>
+						<param name="type">double</param>
+						<param name="value"> 0 </param>
+					</struct>
+				</list>
+			</struct>
+		</list>
+	</struct>
+
+
+</StGermainData>
diff -r 849032ee3278 -r 53cc6c038671 Apps/LidDrivenPIC/velocityBCs.shearZ.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Apps/LidDrivenPIC/velocityBCs.shearZ.xml	Fri Mar 28 06:41:03 2008 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<!-- A StGermain input file -->
+<!-- DTD to validate against -->
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+	<!-- Periodic boundary conditions -->
+	<include>StgFEM/PeriodicZ.xml</include>
+	
+	<!-- Velocity BCs -->
+	<struct name="velocityBCs" mergeType="replace">
+		<param name="type">CompositeVC</param>
+		<list name="vcList">
+			<struct>
+				<param name="type"> WallVC </param>
+				<param name="wall"> bottom </param>
+				<list name="variables">
+					<struct>
+						<param name="name">vz</param>
+						<param name="type">double</param>
+						<param name="value"> 0.5 </param>
+					</struct>
+					<struct>
+						<param name="name">vy</param>
+						<param name="type">double</param>
+						<param name="value"> 0 </param>
+					</struct>
+				</list>
+			</struct>
+			<struct>
+				<param name="type"> WallVC </param>
+				<param name="wall"> left </param>
+				<list name="variables">
+					<struct>
+						<param name="name">vx</param>
+						<param name="type">double</param>
+						<param name="value"> 0 </param>
+					</struct>
+				</list>
+			</struct>
+			
+			<struct>
+				<param name="type"> WallVC </param>
+				<param name="wall"> right </param>
+				<list name="variables">
+					<struct>
+						<param name="name">vx</param>
+						<param name="type">double</param>
+						<param name="value"> 0 </param>
+					</struct>
+				</list>
+			</struct>
+			<struct>
+				<param name="type"> WallVC </param>
+				<param name="wall"> top </param>
+				<list name="variables">
+					<struct>
+						<param name="name">vz</param>
+						<param name="type">double</param>
+						<param name="value"> -0.5 </param>
+					</struct>
+					<struct>
+						<param name="name">vy</param>
+						<param name="type">double</param>
+						<param name="value"> 0 </param>
+					</struct>
+				</list>
+			</struct>
+		</list>
+	</struct>
+
+
+</StGermainData>
diff -r 849032ee3278 -r 53cc6c038671 Apps/PIC_Components/PeriodicBCsManager.I_AXIS.xml
--- a/Apps/PIC_Components/PeriodicBCsManager.I_AXIS.xml	Fri Mar 28 04:22:04 2008 +0000
+++ b/Apps/PIC_Components/PeriodicBCsManager.I_AXIS.xml	Fri Mar 28 06:41:03 2008 +0000
@@ -6,13 +6,13 @@
 
 	<!-- Periodic boundary conditions manager for particles -->
 	<struct name="components" mergeType="merge">
-		<struct name="periodicBCsManager">
+		<struct name="periodicBCsManager" mergeType="merge">
 			<param name="Type">PeriodicBoundariesManager</param>
 			<param name="Geometry">geometry</param>
 			<param name="Swarm">materialSwarm</param>
 			<param name="mesh">linearMesh</param>
 			<param name="TimeIntegrator">timeIntegrator</param>
-			<list name="PeriodicBoundaries">
+			<list name="PeriodicBoundaries" mergeType="merge">
 				<param>I_AXIS</param>
 			</list>	
 		</struct>
diff -r 849032ee3278 -r 53cc6c038671 Apps/PIC_Components/PeriodicBCsManager.K_AXIS.xml
--- a/Apps/PIC_Components/PeriodicBCsManager.K_AXIS.xml	Fri Mar 28 04:22:04 2008 +0000
+++ b/Apps/PIC_Components/PeriodicBCsManager.K_AXIS.xml	Fri Mar 28 06:41:03 2008 +0000
@@ -6,12 +6,13 @@
 
 	<!-- Periodic boundary conditions manager for particles -->
 	<struct name="components" mergeType="merge">
-		<struct name="periodicBCsManager">
+		<struct name="periodicBCsManager" mergeType="merge">
 			<param name="Type">PeriodicBoundariesManager</param>
 			<param name="Geometry">geometry</param>
-			<param name="Swarm">picIntegrationPoints</param>
+			<param name="Swarm">materialSwarm</param>
+			<param name="mesh">linearMesh</param>
 			<param name="TimeIntegrator">timeIntegrator</param>
-			<list name="PeriodicBoundaries">
+			<list name="PeriodicBoundaries" mergeType="merge">
 				<param>K_AXIS</param>
 			</list>	
 		</struct>
diff -r 849032ee3278 -r 53cc6c038671 MaterialPoints/src/PeriodicBoundariesManager.c
--- a/MaterialPoints/src/PeriodicBoundariesManager.c	Fri Mar 28 04:22:04 2008 +0000
+++ b/MaterialPoints/src/PeriodicBoundariesManager.c	Fri Mar 28 06:41:03 2008 +0000
@@ -38,7 +38,7 @@
 **  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: PeriodicBoundariesManager.c 518 2007-10-11 08:07:50Z SteveQuenette $
+** $Id: PeriodicBoundariesManager.c 556 2008-03-28 06:41:03Z RobertTurnbull $
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
@@ -275,32 +275,47 @@ void _PeriodicBoundariesManager_Build( v
 	self->size = 4;
 	self->boundaries = Memory_Alloc_Array( PeriodicBoundary, self->size, "PeriodicBoundariesManager->boundaries" );
 
-	periodicBCsList = Dictionary_Get( self->dictionary, "PeriodicBoundaries" );
-	
-	/* Dictionary entry is optional - users may prefer to enter in code */
-	if ( periodicBCsList ) {
-		Index                   numPeriodicBCs = 0;
-		Index                   periodicBC_I = 0;
-		Dictionary_Entry_Value* periodicBC = NULL;
-		char*                   perBCAxis = NULL;
+	if ( self->dictionary ) {
+		periodicBCsList = Dictionary_Get( self->dictionary, "PeriodicBoundaries" );
 		
-		numPeriodicBCs = Dictionary_Entry_Value_GetCount( periodicBCsList );
-
-		for ( periodicBC_I = 0; periodicBC_I < numPeriodicBCs; periodicBC_I++ ) {
-			periodicBC = Dictionary_Entry_Value_GetElement( periodicBCsList, periodicBC_I );
-			perBCAxis = Dictionary_Entry_Value_AsString( periodicBC );
-
-			if ( 0 == strcmp( perBCAxis, "I_AXIS" ) ) {
-				PeriodicBoundariesManager_AddPeriodicBoundary( self, I_AXIS );
-			}
-			else if ( 0 == strcmp( perBCAxis, "J_AXIS" ) ) {
-				PeriodicBoundariesManager_AddPeriodicBoundary( self, J_AXIS );
-			}
-			else if ( 0 == strcmp( perBCAxis, "K_AXIS" ) ) {
-				PeriodicBoundariesManager_AddPeriodicBoundary( self, K_AXIS );
+		/* Dictionary entry is optional - users may prefer to enter in code */
+		if ( periodicBCsList ) {
+			Index                   numPeriodicBCs = 0;
+			Index                   periodicBC_I = 0;
+			Dictionary_Entry_Value* periodicBC = NULL;
+			char*                   perBCAxis = NULL;
+			
+			numPeriodicBCs = Dictionary_Entry_Value_GetCount( periodicBCsList );
+
+			for ( periodicBC_I = 0; periodicBC_I < numPeriodicBCs; periodicBC_I++ ) {
+				periodicBC = Dictionary_Entry_Value_GetElement( periodicBCsList, periodicBC_I );
+				perBCAxis = Dictionary_Entry_Value_AsString( periodicBC );
+
+				if ( 0 == strcmp( perBCAxis, "I_AXIS" ) ) {
+					PeriodicBoundariesManager_AddPeriodicBoundary( self, I_AXIS );
+				}
+				else if ( 0 == strcmp( perBCAxis, "J_AXIS" ) ) {
+					PeriodicBoundariesManager_AddPeriodicBoundary( self, J_AXIS );
+				}
+				else if ( 0 == strcmp( perBCAxis, "K_AXIS" ) ) {
+					PeriodicBoundariesManager_AddPeriodicBoundary( self, K_AXIS );
+				}
 			}
 		}
 	}
+	/* Test if mesh is periodic */
+	else if ( Stg_Class_IsInstance( self->mesh->generator, CartesianGenerator_Type ) ) {
+		CartesianGenerator* cartesianGenerator = (CartesianGenerator*) self->mesh->generator;
+		Dimension_Index dim_I;
+
+		for ( dim_I = 0 ; dim_I < self->swarm->dim ; dim_I++ ) {
+			/* Add boundaries straight from mesh generator */
+			if ( cartesianGenerator->periodic[ dim_I ] ) 
+				PeriodicBoundariesManager_AddPeriodicBoundary( self, dim_I );
+		}		
+	}
+
+
 
 }
 
@@ -350,7 +365,7 @@ void PeriodicBoundariesManager_UpdatePar
 
 	particle = (GlobalParticle*)Swarm_ParticleAt( self->swarm, lParticle_I );
 
-	Journal_DPrintfL( self->debug, 2, "Checking particle %d at (%.2f,%.2f,%2f)\n", lParticle_I,
+	Journal_DPrintfL( self->debug, 2, "Checking particle %d at (%.4g,%.4g,%.4g)\n", lParticle_I,
 		particle->coord[0], particle->coord[1], particle->coord[2] );
 
 	for ( perBoundary_I = 0; perBoundary_I < self->count; perBoundary_I++ ) {
@@ -363,20 +378,20 @@ void PeriodicBoundariesManager_UpdatePar
 			
 		Stream_Indent( self->debug );
 		if ( particle->coord[boundaryAxis] < perBoundary->minWall ) {
-			Journal_DPrintfL( self->debug, 3, "coord is < min wall %.2f:\n", perBoundary->minWall );
+			Journal_DPrintfL( self->debug, 3, "coord is < min wall %.4f:\n", perBoundary->minWall );
 			difference = perBoundary->minWall - particle->coord[boundaryAxis];
 			particle->coord[boundaryAxis] = perBoundary->maxWall - difference;
 			perBoundary->particlesUpdatedMinEndCount++;
-			Journal_DPrintfL( self->debug, 3, "moving to (%.2f,%.2f,%.2f).\n",
+			Journal_DPrintfL( self->debug, 3, "moving to (%.4f,%.4f,%.4f).\n",
 				particle->coord[I_AXIS], particle->coord[J_AXIS],
 				particle->coord[K_AXIS] );
 		}
 		else if ( particle->coord[perBoundary->axis] > perBoundary->maxWall ) {
-			Journal_DPrintfL( self->debug, 3, "coord is > max wall %.2f:\n", perBoundary->maxWall );
+			Journal_DPrintfL( self->debug, 3, "coord is > max wall %.4f:\n", perBoundary->maxWall );
 			difference = particle->coord[boundaryAxis] - perBoundary->maxWall; 
 			particle->coord[boundaryAxis] = perBoundary->minWall + difference;
 			perBoundary->particlesUpdatedMaxEndCount++;
-			Journal_DPrintfL( self->debug, 3, "moving to (%.2f,%.2f,%.2f).\n",
+			Journal_DPrintfL( self->debug, 3, "moving to (%.4f,%.4f,%.4f).\n",
 				particle->coord[I_AXIS], particle->coord[J_AXIS],
 				particle->coord[K_AXIS] );
 		}
diff -r 849032ee3278 -r 53cc6c038671 MaterialPoints/src/SwarmAdvector.c
--- a/MaterialPoints/src/SwarmAdvector.c	Fri Mar 28 04:22:04 2008 +0000
+++ b/MaterialPoints/src/SwarmAdvector.c	Fri Mar 28 06:41:03 2008 +0000
@@ -38,7 +38,7 @@
 **  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: SwarmAdvector.c 518 2007-10-11 08:07:50Z SteveQuenette $
+** $Id: SwarmAdvector.c 556 2008-03-28 06:41:03Z RobertTurnbull $
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
@@ -150,7 +150,18 @@ void _SwarmAdvector_Init(
 	self->swarm = swarm;
 	self->swarm->swarmAdvector = self;	/* Attach ourselves to the swarm */
 	self->variable = swarm->particleCoordVariable->variable;
+
+	/* Test if mesh is periodic and a periodic boundaries manager hasn't been given */
+	if ( !periodicBCsManager && Stg_Class_IsInstance( swarm->mesh->generator, CartesianGenerator_Type ) ) {
+		CartesianGenerator* cartesianGenerator = (CartesianGenerator*) swarm->mesh->generator;
+		if ( cartesianGenerator->periodic[ I_AXIS ] || cartesianGenerator->periodic[ I_AXIS ] || cartesianGenerator->periodic[ I_AXIS ] ) {
+			/* Create a periodicBCsManager if there isn't one already */
+			periodicBCsManager = PeriodicBoundariesManager_New( "periodicBCsManager", (Mesh*)swarm->mesh, (Swarm*)swarm, NULL );
+		}
+	}	
 	self->periodicBCsManager = periodicBCsManager;
+	
+
 
 	TimeIntegrator_AppendSetupEP( self->timeIntegrator,  
 			"SwarmAdvector_AdvectionSetup", SwarmAdvector_AdvectionSetup,  self->name, self );
@@ -238,11 +249,17 @@ void _SwarmAdvector_Build( void* swarmAd
 	SwarmAdvector*	self = (SwarmAdvector*) swarmAdvector;
 
 	_TimeIntegratee_Build( self, data );
+
+	if ( self->periodicBCsManager )
+		Stg_Component_Build( self->periodicBCsManager, data, False );
 }
 void _SwarmAdvector_Initialise( void* swarmAdvector, void* data ) {
 	SwarmAdvector*	self = (SwarmAdvector*) swarmAdvector;
 	
 	_TimeIntegratee_Initialise( self, data );
+	
+	if ( self->periodicBCsManager )
+		Stg_Component_Initialise( self->periodicBCsManager, data, False );
 }
 void _SwarmAdvector_Execute( void* swarmAdvector, void* data ) {
 	SwarmAdvector*	self = (SwarmAdvector*)swarmAdvector;



More information about the CIG-COMMITS mailing list