[cig-commits] r3927 - in long/3D/Gale/trunk/src/PICellerator: . Apps/PIC_Components MaterialPoints/src

walter at geodynamics.org walter at geodynamics.org
Thu Jul 6 02:03:50 PDT 2006


Author: walter
Date: 2006-07-06 02:03:50 -0700 (Thu, 06 Jul 2006)
New Revision: 3927

Modified:
   long/3D/Gale/trunk/src/PICellerator/
   long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarm.xml
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.c
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.h
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.c
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.h
Log:
 r417 at earth:  boo | 2006-07-06 02:00:47 -0700
  r406 at earth (orig r345):  PatrickSunter | 2006-07-03 22:01:44 -0700
  * Modified the SwarmAdvector classes to conform to the new TimeIntegratee
  interface that allows the possibility of fallback to first order.
  * Modified the MaterialPointSwarm.xml model set-up file to set
  allowFallbackToFirstOrder to be true, so extensional/outflow PIC problems
  can use 2nd-order integration.
  
 



Property changes on: long/3D/Gale/trunk/src/PICellerator
___________________________________________________________________
Name: svk:merge
   - 00de75e2-39f1-0310-8538-9683d00a49cc:/trunk:344
aee11096-cf10-0410-a191-eea5772ba81f:/cig:416
   + 00de75e2-39f1-0310-8538-9683d00a49cc:/trunk:345
aee11096-cf10-0410-a191-eea5772ba81f:/cig:417

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarm.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarm.xml	2006-07-06 09:03:47 UTC (rev 3926)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarm.xml	2006-07-06 09:03:50 UTC (rev 3927)
@@ -23,6 +23,11 @@
 			<param name="Type">DiscreteVoronoiWeights</param>
 			<param name="DiscreteVoronoi">discreteVoronoi</param>
 		</struct>
+		<!--
+		<struct name="weights">
+			<param name="Type">ConstantWeights</param>
+		</struct>	
+		-->
 		<struct name="localLayout">
 			<param name="Type">MappedParticleLayout</param>
 		</struct>
@@ -61,6 +66,9 @@
 			<param name="TimeIntegrator">timeIntegrator</param>
 			<param name="VelocityField">VelocityField</param>
 			<param name="PeriodicBCsManager">periodicBCsManager</param>
+			<!-- For moving mesh or problems involving outflow, need the following
+			enabled -->
+			<param name="allowFallbackToFirstOrder">True</param>
 		</struct>
 	</struct>
 

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.c	2006-07-06 09:03:47 UTC (rev 3926)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.c	2006-07-06 09:03:50 UTC (rev 3927)
@@ -70,13 +70,15 @@
 		Name                                       name,
 		TimeIntegrator*                            timeIntegrator,
 		FeVariable*                                velocityField,
+		Bool                                       allowFallbackToFirstOrder,
 		MaterialPointsSwarm*                       swarm,
 		PeriodicBoundariesManager*                 periodicBCsManager )
 {
 	SwarmAdvector* self = (SwarmAdvector*) _SwarmAdvector_DefaultNew( name );
 
 	/* 	SwarmAdvector_InitAll */
-	_TimeIntegratee_Init( self, timeIntegrator, swarm->particleCoordVariable->variable, 0, NULL );
+	_TimeIntegratee_Init( self, timeIntegrator, swarm->particleCoordVariable->variable, 0, NULL,
+		allowFallbackToFirstOrder );
 	_SwarmAdvector_Init( self, velocityField, swarm, periodicBCsManager );
 
 	return self;
@@ -252,7 +254,7 @@
 	_TimeIntegratee_Destroy( self, data );
 }
 
-void _SwarmAdvector_TimeDeriv( void* swarmAdvector, Index array_I, double* timeDeriv ) {
+Bool _SwarmAdvector_TimeDeriv( void* swarmAdvector, Index array_I, double* timeDeriv ) {
 	SwarmAdvector*      self          = (SwarmAdvector*) swarmAdvector;
 	FieldVariable*      velocityField = (FieldVariable*) self->velocityField;
 	double*             coord;
@@ -263,21 +265,24 @@
 
 	result = FieldVariable_InterpolateValueAt( velocityField, coord, timeDeriv );
 
-	#if DEBUG
 	if ( result == OTHER_PROC || result == OUTSIDE_GLOBAL || isinf(timeDeriv[0]) || isinf(timeDeriv[1]) || 
 			( self->swarm->dim == 3 && isinf(timeDeriv[2]) ) ) 
 	{
+		#if 0
 		Journal_Printf( Journal_Register( Error_Type, self->type ),
 			"Error in func '%s' for particle with index %u.\n\tPosition (%g, %g, %g)\n\tVelocity here is (%g, %g, %g)."
 			"\n\tInterpolation result is %s.\n",
 			__func__, array_I, coord[0], coord[1], coord[2], 
 			timeDeriv[0], timeDeriv[1], ( self->swarm->dim == 3 ? timeDeriv[2] : 0.0 ),
 			InterpolationResultToStringMap[result]  );
-		abort();
+		#endif	
+		return False;	
 	}
-	#endif
+
+	return True;
 }
 
+
 void _SwarmAdvector_Intermediate( void* swarmAdvector, Index lParticle_I ) {
 	SwarmAdvector*      self          = (SwarmAdvector*) swarmAdvector;
 

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.h
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.h	2006-07-06 09:03:47 UTC (rev 3926)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.h	2006-07-06 09:03:50 UTC (rev 3927)
@@ -75,6 +75,7 @@
 		Name                                       name,
 		TimeIntegrator*                            timeIntegrator,
 		FeVariable*                                velocityField,
+		Bool                                       allowFallbackToFirstOrder,
 		MaterialPointsSwarm*                       swarm,
 		PeriodicBoundariesManager*                 periodicBCsManager );
 
@@ -114,7 +115,7 @@
 	void _SwarmAdvector_Initialise( void* materialSwarm, void* data ) ;
 	void _SwarmAdvector_Execute( void* materialSwarm, void* data );
 	void _SwarmAdvector_Destroy( void* materialSwarm, void* data ) ;
-	void _SwarmAdvector_TimeDeriv( void* swarmAdvector, Index array_I, double* timeDeriv ) ;
+	Bool _SwarmAdvector_TimeDeriv( void* swarmAdvector, Index array_I, double* timeDeriv ) ;
 	void _SwarmAdvector_Intermediate( void* swarmAdvector, Index array_I ) ;
 	
 		

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.c	2006-07-06 09:03:47 UTC (rev 3926)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.c	2006-07-06 09:03:50 UTC (rev 3927)
@@ -71,13 +71,15 @@
 		Name                                       name,
 		TimeIntegrator*                            timeIntegrator,
 		FeVariable*                                velocityField,
+		Bool                                       allowFallbackToFirstOrder,
 		MaterialPointsSwarm*                       swarm,
 		PeriodicBoundariesManager*                 periodicBCsManager )
 {
 	SwarmAdvectorD* self = (SwarmAdvectorD*) _SwarmAdvectorD_DefaultNew( name );
 
 	/* 	SwarmAdvectorD_InitAll */
-	_TimeIntegratee_Init( self, timeIntegrator, swarm->particleCoordVariable->variable, 0, NULL );
+	_TimeIntegratee_Init( self, timeIntegrator, swarm->particleCoordVariable->variable, 0, NULL,
+		allowFallbackToFirstOrder );
 	_SwarmAdvector_Init( (SwarmAdvector*)self, velocityField, swarm, periodicBCsManager );
 	_SwarmAdvectorD_Init( self );
 
@@ -194,7 +196,7 @@
 }
 
 
-void _SwarmAdvectorD_TimeDeriv( void* swarmAdvector, Index array_I, double* timeDeriv ) {
+Bool _SwarmAdvectorD_TimeDeriv( void* swarmAdvector, Index array_I, double* timeDeriv ) {
 	SwarmAdvectorD*      self          = (SwarmAdvectorD*) swarmAdvector;
 	FieldVariable*      velocityField = (FieldVariable*) self->velocityField;
 	double*             coord;
@@ -207,10 +209,10 @@
 	        timeDeriv[ K_AXIS ] = 0.0;
 
 
-	#if DEBUG
 	if ( result == OTHER_PROC || result == OUTSIDE_GLOBAL || isinf(timeDeriv[0]) || isinf(timeDeriv[1]) || 
 			( self->swarm->dim == 3 && isinf(timeDeriv[2]) ) ) 
 	{
+		#if 0
 		Journal_Printf( Journal_Register( Error_Type, self->type ),
 			"Error in func '%s' for particle with index %u.\n\tPosition (%g, %g, %g)\n\tVelocity here is (%g, %g, %g)."
 			"\n\tInteropolation result is %u.\n",
@@ -218,8 +220,12 @@
 			timeDeriv[0], timeDeriv[1], ( self->swarm->dim == 3 ? timeDeriv[2] : 0.0 ),
 			result );
 		abort();
+		#endif
+
+		return False;
 	}
-	#endif
+
+	return True;
 }
 
 /*-------------------------------------------------------------------------------------------------------------------------

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.h
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.h	2006-07-06 09:03:47 UTC (rev 3926)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.h	2006-07-06 09:03:50 UTC (rev 3927)
@@ -72,6 +72,7 @@
 		Name                                       name,
 		TimeIntegrator*                            timeIntegrator,
 		FeVariable*                                velocityField,
+		Bool                                       allowFallbackToFirstOrder,
 		MaterialPointsSwarm*                       swarm,
 		PeriodicBoundariesManager*                 periodicBCsManager );
 
@@ -108,7 +109,7 @@
 	void _SwarmAdvectorD_Initialise( void* materialSwarm, void* data ) ;
 	void _SwarmAdvectorD_Execute( void* materialSwarm, void* data );
 	void _SwarmAdvectorD_Destroy( void* materialSwarm, void* data ) ;
-	void _SwarmAdvectorD_TimeDeriv( void* swarmAdvector, Index array_I, double* timeDeriv ) ;
+	Bool _SwarmAdvectorD_TimeDeriv( void* swarmAdvector, Index array_I, double* timeDeriv ) ;
 	void _SwarmAdvectorD_Intermediate( void* swarmAdvector, Index array_I ) ;
 	
 		



More information about the cig-commits mailing list