/******************************************************** % % Written by: % -- % John L. Weatherwax 2006-05-29 % % email: wax@alum.mit.edu % % Please send comments and especially bug reports to the % above email address. % %----- */ #include #include #include "mpi.h" #include "global_grid.h" #include "sim_consts.h" #include "saveParticles.h" /* Save particles for use in visualization for debugging and other purposes */ void saveParticles(int my_rank,int tsi){ int pi; char filename[150]; FILE *Fp, *Fpb; /* create the filename... */ /*sprintf(filename,"ParSimResults/Binaries/sim_proc_rnk_%d.dat",my_rank);*/ sprintf(filename,"./ParSimResults/sim_proc_rnk_%d_ts_%d.dat",my_rank,tsi); Fp=fopen(filename,"w"); if( Fp==NULL ){ fprintf(stderr,"trouble opening file!\n"); MPI_Abort(MPI_COMM_WORLD,1); } sprintf(filename,"ParSimResults/Binaries/sim_proc_rnk_%d_ts_%d.bin.dat",my_rank,tsi); Fpb=fopen(filename,"wb"); if( Fpb==NULL ){ fprintf(stderr,"trouble opening file!\n"); MPI_Abort(MPI_COMM_WORLD,1); } /* save the number of particles currently held in this processor */ fprintf(Fp,"%10d\n",procInfo.NbPP); fwrite((char *)&procInfo.NbPP, 1, sizeof(int), Fpb); /* loop over each particle this processor contains, saving what information seems pertinant */ for( pi=0; pi < procInfo.NbPP; pi++ ){ /* print 0/1 if this particle will be EXPORTED to the corresponding neighbor: */ /*fprintf(Fp,"%10.6f %10.6f %10.6f %10.6f %5d %5d %5d %5d %5d %5d %5d %5d %5d\n", procInfo.px[pi],procInfo.py[pi],procInfo.vx[pi],procInfo.vy[pi], procInfo.pExportQ[pi][0],procInfo.pExportQ[pi][1],procInfo.pExportQ[pi][2], procInfo.pExportQ[pi][3],procInfo.pExportQ[pi][4],procInfo.pExportQ[pi][5], procInfo.pExportQ[pi][6],procInfo.pExportQ[pi][7],procInfo.pExportQ[pi][8] );*/ fprintf(Fp,"%15.9f %15.9f %15.9f %15.9f\n", procInfo.px[pi],procInfo.py[pi],procInfo.vx[pi],procInfo.vy[pi]); /* print 0/1 if this particle will be EVICTED to the corresponding neighbor: */ /*fprintf(Fp,"%10.6f %10.6f %10.6f %10.6f %5d %5d %5d %5d %5d %5d %5d %5d %5d\n", procInfo.px[pi],procInfo.py[pi],procInfo.vx[pi],procInfo.vy[pi], procInfo.pEvictQ[pi][0],procInfo.pEvictQ[pi][1],procInfo.pEvictQ[pi][2], procInfo.pEvictQ[pi][3],procInfo.pEvictQ[pi][4],procInfo.pEvictQ[pi][5], procInfo.pEvictQ[pi][6],procInfo.pEvictQ[pi][7],procInfo.pEvictQ[pi][8] );*/ /* print 0/1 if this particle will be EVICTED to the corresponding neighbor: */ fwrite((char *)&procInfo.px[pi], 1, sizeof(double), Fpb); fwrite((char *)&procInfo.py[pi], 1, sizeof(double), Fpb); fwrite((char *)&procInfo.vx[pi], 1, sizeof(double), Fpb); fwrite((char *)&procInfo.vy[pi], 1, sizeof(double), Fpb); } fclose(Fp); fclose(Fpb); }