[cig-commits] r18948 - long/3D/SNAC/trunk/Snac/snac2restart

echoi at geodynamics.org echoi at geodynamics.org
Tue Sep 20 00:03:21 PDT 2011


Author: echoi
Date: 2011-09-20 00:03:21 -0700 (Tue, 20 Sep 2011)
New Revision: 18948

Modified:
   long/3D/SNAC/trunk/Snac/snac2restart/snac2restart.c
Log:
isoForce processing is necessary when the Winkler plugin is used.



Modified: long/3D/SNAC/trunk/Snac/snac2restart/snac2restart.c
===================================================================
--- long/3D/SNAC/trunk/Snac/snac2restart/snac2restart.c	2011-09-20 06:55:55 UTC (rev 18947)
+++ long/3D/SNAC/trunk/Snac/snac2restart/snac2restart.c	2011-09-20 07:03:21 UTC (rev 18948)
@@ -66,6 +66,7 @@
 unsigned int	elementGlobalSize[3];
 unsigned int	rank_array[3];
 unsigned int	elementLocalSize[3];
+unsigned int 	doForce = 1;
 unsigned int 	doTemp = 1;
 unsigned int 	doAps = 1;
 unsigned int 	doAvgAps = 1;
@@ -286,6 +287,12 @@
 				assert(0);
 				abort();
 			}
+			sprintf( tmpBuf, "%s/isoForce.%u", origPath, rank );
+			fprintf(stderr,"Reading from %s\n",tmpBuf); 
+			if( (forceIn = fopen( tmpBuf, "r" )) == NULL ) {
+				fprintf( stderr,"Warning, no isoForce.%u found... assuming Winkler plugin not used.\n", rank );
+				doForce = 0;
+			}
 			sprintf( tmpBuf, "%s/temperatureCP.%u", readPath, rank );
 			fprintf(stderr,"Reading from %s\n",tmpBuf); 
 			if( (tempIn = fopen( tmpBuf, "r" )) == NULL ) {
@@ -308,6 +315,9 @@
 			ConvertTimeStep( rank, dumpIteration, simTimeStep, time );
 
 			/* Close the input files */
+			if( forceIn ) {
+				fclose( forceIn );
+			}
 			if( apsIn ) {
 				fclose( apsIn );
 			}
@@ -462,6 +472,26 @@
     if( restartOut )
 		fclose( restartOut );
 
+    /* Write out isoForce array */
+    if(doForce) {
+		sprintf( tmpBuf, "%s/snac.isoForce.%i.%06u.restart", writePath, rank, simTimeStep );
+		fprintf(stderr,"\tWriting out %s\n",tmpBuf);
+		if( (restartOut = fopen( tmpBuf, "w" )) == NULL ) {
+			/* failed to open file for writing */
+			fprintf(stderr, "Failed to open %s for writing\n", tmpBuf);
+			exit(0);
+		}
+
+		fseek( forceIn, dumpIteration * nodeLocalCount * sizeof(float), SEEK_SET );
+		for( node_gI = 0; node_gI < nodeLocalCount; node_gI++ ) {
+			float		Fr;
+			fread( &Fr, sizeof(float), 1, forceIn );
+			fprintf( restartOut, "%.9e\n", Fr );
+		}
+		if( restartOut )
+			fclose( restartOut );
+    }
+
     /* Write out temperature array */
     if(doTemp) {
 		sprintf( tmpBuf, "%s/snac.temp.%i.%06u.restart", writePath, rank, simTimeStep );



More information about the CIG-COMMITS mailing list