[cig-commits] commit: rejiggin

Mercurial hg at geodynamics.org
Mon Feb 1 15:31:05 PST 2010


changeset:   340:827bb2615de2
branch:      pcu_rejig
user:        JohnMansour <john.mansour at maths.monash.edu.au>
date:        Tue Dec 01 17:26:53 2009 +1100
files:       MaterialPoints/src/PeriodicBoundariesManager.c MaterialPoints/src/SwarmAdvector.c MaterialPoints/src/SwarmVariableField.c MaterialPoints/src/SwarmVariableField.h MaterialPoints/src/SwarmVariableField.meta
description:
rejiggin


diff -r 84e6d0478ed4 -r 827bb2615de2 MaterialPoints/src/PeriodicBoundariesManager.c
--- a/MaterialPoints/src/PeriodicBoundariesManager.c	Tue Dec 01 14:01:08 2009 +1100
+++ b/MaterialPoints/src/PeriodicBoundariesManager.c	Tue Dec 01 17:26:53 2009 +1100
@@ -221,7 +221,9 @@ void _PeriodicBoundariesManager_Build( v
 void _PeriodicBoundariesManager_Build( void* periodicBCsManager, void* data ) {	
 	PeriodicBoundariesManager* self = (PeriodicBoundariesManager*)periodicBCsManager;
 	Dictionary_Entry_Value*    periodicBCsList = NULL;
-	
+
+	Stg_Component_Build( self->swarm, data, False );
+	Stg_Component_Build( self->mesh, data, False );
 	self->size = 4;
 	self->boundaries = Memory_Alloc_Array( PeriodicBoundary, self->size, "PeriodicBoundariesManager->boundaries" );
 
@@ -266,7 +268,11 @@ void _PeriodicBoundariesManager_Build( v
 	}
 }
 
-void _PeriodicBoundariesManager_Initialise( void* periodicBCsManager, void* data ) {	
+void _PeriodicBoundariesManager_Initialise( void* periodicBCsManager, void* data ) {
+	PeriodicBoundariesManager* self = (PeriodicBoundariesManager*)periodicBCsManager;
+
+	Stg_Component_Initialise( self->swarm, data, False );
+	Stg_Component_Initialise( self->mesh, data, False );
 }
 
 void _PeriodicBoundariesManager_Execute( void* periodicBCsManager, void* data ) {	
@@ -274,6 +280,9 @@ void _PeriodicBoundariesManager_Execute(
 
 void _PeriodicBoundariesManager_Destroy( void* periodicBCsManager, void* data ) {	
 	PeriodicBoundariesManager* self = (PeriodicBoundariesManager*)periodicBCsManager;
+
+	Stg_Component_Destroy( self->swarm, data, False );
+	Stg_Component_Destroy( self->mesh, data, False );
 
 	Memory_Free( self->boundaries );
 }
diff -r 84e6d0478ed4 -r 827bb2615de2 MaterialPoints/src/SwarmAdvector.c
--- a/MaterialPoints/src/SwarmAdvector.c	Tue Dec 01 14:01:08 2009 +1100
+++ b/MaterialPoints/src/SwarmAdvector.c	Tue Dec 01 17:26:53 2009 +1100
@@ -224,28 +224,38 @@ void _SwarmAdvector_Build( void* swarmAd
 void _SwarmAdvector_Build( void* swarmAdvector, void* data ) {
 	SwarmAdvector*	self = (SwarmAdvector*) swarmAdvector;
 
-	_TimeIntegratee_Build( self, data );
-
+   Stg_Component_Build( self->velocityField, data, False );
+   Stg_Component_Build( self->swarm, data, False );
 	if ( self->periodicBCsManager )
 		Stg_Component_Build( self->periodicBCsManager, data, False );
+   _TimeIntegratee_Build( self, data );
+
 }
+
 void _SwarmAdvector_Initialise( void* swarmAdvector, void* data ) {
 	SwarmAdvector*	self = (SwarmAdvector*) swarmAdvector;
 	
-	_TimeIntegratee_Initialise( self, data );
-	
+   Stg_Component_Initialise( self->velocityField, data, False );
+   Stg_Component_Initialise( self->swarm, data, False );
 	if ( self->periodicBCsManager )
 		Stg_Component_Initialise( self->periodicBCsManager, data, False );
+	_TimeIntegratee_Initialise( self, data );
 }
+
 void _SwarmAdvector_Execute( void* swarmAdvector, void* data ) {
 	SwarmAdvector*	self = (SwarmAdvector*)swarmAdvector;
 	
 	_TimeIntegratee_Execute( self, data );
 }
+
 void _SwarmAdvector_Destroy( void* swarmAdvector, void* data ) {
 	SwarmAdvector*	self = (SwarmAdvector*)swarmAdvector;
-	
-	_TimeIntegratee_Destroy( self, data );
+
+	_TimeIntegratee_Destroy( self, data );	
+   Stg_Component_Destroy( self->velocityField, data, False );
+   Stg_Component_Destroy( self->swarm, data, False );
+	if ( self->periodicBCsManager )
+		Stg_Component_Destroy( self->periodicBCsManager, data, False );
 }
 
 Bool _SwarmAdvector_TimeDeriv( void* swarmAdvector, Index array_I, double* timeDeriv ) {
diff -r 84e6d0478ed4 -r 827bb2615de2 MaterialPoints/src/SwarmVariableField.c
--- a/MaterialPoints/src/SwarmVariableField.c	Tue Dec 01 14:01:08 2009 +1100
+++ b/MaterialPoints/src/SwarmVariableField.c	Tue Dec 01 17:26:53 2009 +1100
@@ -76,10 +76,11 @@ SwarmVariableField* _SwarmVariableField_
 	return self;
 }
 
-void _SwarmVariableField_Init( SwarmVariableField* swarmVariableField, SwarmVariable* swarmVar, Variable_Register* variable_Register ) {
+void _SwarmVariableField_Init( SwarmVariableField* swarmVariableField, Variable_Register* variable_Register, Name swarmVarName, MaterialPointsSwarm*	materialSwarm ) {
 	SwarmVariableField* 	self 	= (SwarmVariableField*)swarmVariableField;
-	self->swarmVar = swarmVar;
 	self->variable_Register = variable_Register;
+	self->swarmVarName = swarmVarName;
+	self->materialSwarm = materialSwarm;
 }
 
 void _SwarmVariableField_Delete( void* swarmVariableField ) {
@@ -125,30 +126,32 @@ void* _SwarmVariableField_DefaultNew( Na
 
 void _SwarmVariableField_AssignFromXML( void* swarmVariableField, Stg_ComponentFactory* cf, void* data ) {
 	SwarmVariableField*		self = (SwarmVariableField*)swarmVariableField;
-	SwarmVariable*				swarmVar;
 	IntegrationPointsSwarm*	integrationSwarm;
 	Variable_Register*		variable_Register;
-
+   Name			            swarmVarName;
+   MaterialPointsSwarm*	   materialSwarm;
 	_ParticleFeVariable_AssignFromXML( self, cf, data );
 
 	variable_Register = self->context->variable_Register; 
 
 	// TODO: just get the textual name here - see gLucifer's SwarmPlotter DrawignObject 
-	self->swarmVarName = Stg_ComponentFactory_GetString( cf, self->name, "swarmVariable", "" );
-	assert( swarmVar );
+	swarmVarName = Stg_ComponentFactory_GetString( cf, self->name, "swarmVariable", "" );
 
-	self->materialSwarm = Stg_ComponentFactory_ConstructByKey( cf, self->name, "MaterialSwarm", MaterialPointsSwarm, True, data );
+	materialSwarm = Stg_ComponentFactory_ConstructByKey( cf, self->name, "MaterialSwarm", MaterialPointsSwarm, True, data );
 	integrationSwarm = Stg_ComponentFactory_ConstructByKey( cf, self->name, "Swarm", IntegrationPointsSwarm, True, NULL );
 	assert( integrationSwarm );
 
-	_SwarmVariableField_Init( self, swarmVar, variable_Register );
+	_SwarmVariableField_Init( self, variable_Register, swarmVarName, materialSwarm );
 }
 
 void _SwarmVariableField_Build( void* swarmVariableField, void* data ) {
-	SwarmVariableField*	self	= (SwarmVariableField*)swarmVariableField;
-	Name			tmpName;
-	unsigned		nDomainVerts	= Mesh_GetDomainSize( self->feMesh, MT_VERTEX );
+	SwarmVariableField*	      self	            = (SwarmVariableField*)swarmVariableField;
+	unsigned		               nDomainVerts      = Mesh_GetDomainSize( self->feMesh, MT_VERTEX );
+	SwarmVariable_Register*		swarmVar_Register	= self->materialSwarm->swarmVariable_Register;
+	Stream*				         errorStream		   = Journal_Register( Error_Type, self->type );
+	Name			               tmpName;
 
+	Stg_Component_Build( self->materialSwarm, data, False );
 	/* make this more flexible to handle vector values at each node - will have to get the num dofs from the XML
 	 * as other components are not necessarily built yet... dave. 03.10.07 */
 	assert( Class_IsSuper( self->feMesh->topo, IGraph ) );
@@ -174,6 +177,15 @@ void _SwarmVariableField_Build( void* sw
 	
 	self->eqNum->dofLayout = self->dofLayout;
 
+	/* assign the swarm variable, assume its already built */
+	if( 0 != strcmp( self->swarmVarName, "" ) ) {
+		self->swarmVar = SwarmVariable_Register_GetByName( swarmVar_Register, self->swarmVarName );
+		Journal_Firewall( self->swarmVar != NULL, errorStream, "Error - cannot find swarm variable \"%s\" in %s() for swarm \"%s\".\n",
+			          self->swarmVarName, __func__, self->materialSwarm->name );
+
+		Stg_Component_Build( self->swarmVar, data, False );
+	}
+
 	_ParticleFeVariable_Build( self, data );
 	/* TODO: build self->swarmVar */
 	// TODO: granb self->SwarmVariableName out of the swarm vart register, save reference as self->swarmVar
@@ -182,22 +194,12 @@ void _SwarmVariableField_Build( void* sw
 
 void _SwarmVariableField_Initialise( void* swarmVariableField, void* data ) {
 	SwarmVariableField*		self			= (SwarmVariableField*)swarmVariableField;
-	SwarmVariable_Register*		swarmVar_Register	= self->materialSwarm->swarmVariable_Register;
-	Stream*				errorStream		= Journal_Register( Error_Type, self->type );
 
-	/* assign the swarm variable, assume its already built */
-	if( 0 != strcmp( self->swarmVarName, "" ) ) {
-		self->swarmVar = SwarmVariable_Register_GetByName( swarmVar_Register, self->swarmVarName );
-		Journal_Firewall( self->swarmVar != NULL, errorStream, "Error - cannot find swarm variable \"%s\" in %s() for swarm \"%s\".\n",
-			          self->swarmVarName, __func__, self->materialSwarm->name );
+   Stg_Component_Initialise( self->materialSwarm, data, False );
 
-		Stg_Component_Build( self->swarmVar, data, False );
-		Stg_Component_Initialise( self->swarmVar, data, False );
-	}
+   if( self->swarmVar ) Stg_Component_Initialise( self->swarmVar, data, False );
 
 	_ParticleFeVariable_Initialise( self, data );
-
-	_SwarmVariable_Initialise( self->swarmVar, data );
 }
 
 void _SwarmVariableField_Execute( void* swarmVariableField, void* data ) {
@@ -205,6 +207,11 @@ void _SwarmVariableField_Execute( void* 
 }
 
 void _SwarmVariableField_Destroy( void* swarmVariableField, void* data ) {
+	SwarmVariableField*		self			= (SwarmVariableField*)swarmVariableField;
+
+   Stg_Component_Destroy( self->materialSwarm, data, False );
+   if( self->swarmVar ) Stg_Component_Destroy( self->swarmVar, data, False );
+   
 	_ParticleFeVariable_Destroy( swarmVariableField, data );
 }
 
diff -r 84e6d0478ed4 -r 827bb2615de2 MaterialPoints/src/SwarmVariableField.h
--- a/MaterialPoints/src/SwarmVariableField.h	Tue Dec 01 14:01:08 2009 +1100
+++ b/MaterialPoints/src/SwarmVariableField.h	Tue Dec 01 17:26:53 2009 +1100
@@ -89,6 +89,7 @@
 	void _SwarmVariableField_AssignFromXML( void* swarmVariable, Stg_ComponentFactory* cf, void* data ) ;
 	void _SwarmVariableField_Build( void* swarmVariable, void* data ) ;
 	void _SwarmVariableField_Initialise( void* swarmVariable, void* data ) ;
+   void _SwarmVariableField_Init( SwarmVariableField* swarmVariableField, Variable_Register* variable_Register, Name swarmVarName, MaterialPointsSwarm*	materialSwarm ) ;
 	void _SwarmVariableField_Execute( void* swarmVariable, void* data ) ;
 	void _SwarmVariableField_Destroy( void* swarmVariable, void* data ) ;
 
diff -r 84e6d0478ed4 -r 827bb2615de2 MaterialPoints/src/SwarmVariableField.meta
--- a/MaterialPoints/src/SwarmVariableField.meta	Tue Dec 01 14:01:08 2009 +1100
+++ b/MaterialPoints/src/SwarmVariableField.meta	Tue Dec 01 17:26:53 2009 +1100
@@ -17,7 +17,7 @@
 
 <list name="Params">
 	<struct>
-		<param name="Name">swarmVariable</param>
+		<param name="Name">swarmVariableName</param>
 		<param name="Type">String</param>
 		<param name="Default">""</param>
 		<param name="Description">Textual name of the swarm variable which will be interpolated onto the mesh</param>



More information about the CIG-COMMITS mailing list