[cig-commits] r14289 - long/3D/SNAC/trunk/Snac/libSnac/src

cstark at geodynamics.org cstark at geodynamics.org
Tue Mar 10 15:24:14 PDT 2009


Author: cstark
Date: 2009-03-10 15:24:14 -0700 (Tue, 10 Mar 2009)
New Revision: 14289

Modified:
   long/3D/SNAC/trunk/Snac/libSnac/src/Context.c
Log:
Bug fix for non-stream file handling.

Added fflush commands in libSnac's Context.c in Snac_Context_Sync to (a) explicitly flush stress tensor and phase index file output, and then (b) (overkill) to flush all buffers not yet flushed (in case other plugins are writing to files but don't take care to flush at each time step end).

This action follows a Ranger run where output to stressTensor.x and phaseIndex.x was apparently truncated even though the job was stopped long after a dump step.



Modified: long/3D/SNAC/trunk/Snac/libSnac/src/Context.c
===================================================================
--- long/3D/SNAC/trunk/Snac/libSnac/src/Context.c	2009-03-10 21:55:15 UTC (rev 14288)
+++ long/3D/SNAC/trunk/Snac/libSnac/src/Context.c	2009-03-10 22:24:14 UTC (rev 14289)
@@ -1189,6 +1189,10 @@
 	Stream_Flush( self->coordOut );
 	Stream_Flush( self->velOut );
 	Stream_Flush( self->forceOut );
+	fflush(	self->stressTensorOut );
+	fflush(	self->phaseIndexOut );
+	fflush( NULL );
+
 }
 
 
@@ -1336,23 +1340,23 @@
 
 void _Snac_Context_DumpStressTensor( Snac_Context* self ) {
 
-/*     fprintf(stderr, "Dumping ? stress tensor: ts=%d df=%d\n",self->timeStep,self->dumpEvery); */
-	if( self->timeStep ==0 || (self->timeStep-1) % self->dumpEvery == 0 ) {
-		Element_LocalIndex			element_lI;
-/*     fprintf(stderr, "  ... dumping stress tensor: ts=%d df=%d\n",self->timeStep,self->dumpEvery); */
+    /*     fprintf(stderr, "Dumping ? stress tensor: ts=%d df=%d\n",self->timeStep,self->dumpEvery); */
+    if( self->timeStep ==0 || (self->timeStep-1) % self->dumpEvery == 0 ) {
+	Element_LocalIndex			element_lI;
+	fprintf(stderr, "r=%d, ts=%d/%d:  Dumping stress tensor with df=%d\n", self->rank, self->timeStep, self->maxTimeSteps,self->dumpEvery); 
 
-		for( element_lI = 0; element_lI < self->mesh->elementLocalCount; element_lI++ ) {
-			Snac_Element* 				element = Snac_Element_At( self, element_lI );
-			/* Take average of tetra viscosity for the element */
-			Tetrahedra_Index		tetra_I;
-			for( tetra_I = 0; tetra_I < Tetrahedra_Count; tetra_I++ ) {
-				float tensor[3][3] = { {element->tetra[tetra_I].stress[0][0], element->tetra[tetra_I].stress[0][1], element->tetra[tetra_I].stress[0][2]},
-									   {element->tetra[tetra_I].stress[0][1], element->tetra[tetra_I].stress[1][1], element->tetra[tetra_I].stress[1][2]},
-									   {element->tetra[tetra_I].stress[0][2], element->tetra[tetra_I].stress[1][2], element->tetra[tetra_I].stress[2][2]} };
-				fwrite( &tensor, sizeof(float), 9, self->stressTensorOut );
-			}
-		}
+	for( element_lI = 0; element_lI < self->mesh->elementLocalCount; element_lI++ ) {
+	    Snac_Element* 				element = Snac_Element_At( self, element_lI );
+	    /* Take average of tetra viscosity for the element */
+	    Tetrahedra_Index		tetra_I;
+	    for( tetra_I = 0; tetra_I < Tetrahedra_Count; tetra_I++ ) {
+		float tensor[3][3] = { {element->tetra[tetra_I].stress[0][0], element->tetra[tetra_I].stress[0][1], element->tetra[tetra_I].stress[0][2]},
+				       {element->tetra[tetra_I].stress[0][1], element->tetra[tetra_I].stress[1][1], element->tetra[tetra_I].stress[1][2]},
+				       {element->tetra[tetra_I].stress[0][2], element->tetra[tetra_I].stress[1][2], element->tetra[tetra_I].stress[2][2]} };
+		fwrite( &tensor, sizeof(float), 9, self->stressTensorOut );
+	    }
 	}
+    }
 }
 
 void _Snac_Context_DumpPhaseIndex( Snac_Context* self ) {



More information about the CIG-COMMITS mailing list