void _IntegrationPointsSwarm_Destroy( void* integrationPoints, void* data ) {
   IntegrationPointsSwarm* self = (IntegrationPointsSwarm*)integrationPoints;

   Stg_Component_Destroy( self->localCoordVariable, data, False );
   Stg_Component_Destroy( self->weightVariable, data, False );
   Stg_Component_Destroy( self->mesh, data, False );
   
   _Swarm_Destroy( self, data );
}
void _GeneralSwarm_Destroy( void* swarm, void* data )
{
   GeneralSwarm*	self = (GeneralSwarm*)swarm;
   int var_I;

   Stg_Component_Destroy( self->escapedRoutine, data , False );

   for( var_I = 0 ; var_I < self->nSwarmVars ; var_I++ )
   {
      Stg_Component_Destroy( self->swarmVars[var_I], data , False );
   }

   _Swarm_Destroy( self, data );

}
void _IntegrationPointsSwarm_Destroy( void* integrationPoints, void* data ) {
   IntegrationPointsSwarm* self = (IntegrationPointsSwarm*)integrationPoints;

   Stg_Component_Destroy( self->localCoordVariable, data, False );
   Stg_Component_Destroy( self->weightVariable, data, False );
   Stg_Component_Destroy( self->mesh, data, False );

   if( self->mapper ) 
      Stg_Component_Destroy( self->mapper, data, False );
   if ( self->timeIntegrator != NULL )
      Stg_Component_Destroy( self->timeIntegrator, data, False );
   if ( self->weights != NULL )
      Stg_Component_Destroy( self->weights, data, False );
   
   _Swarm_Destroy( self, data );
}