[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