📄 sdump.c
字号:
/* PSPH Parallel SPH Program
* Bradley Smith, and Lou Baker, Dagonet Software
* dump.c: routines for processing dumpfiles
* ReadSPHDumpFile the opposite of WriteSPHDumpFile in io.c
* may be used with restart or with loading of file to transmit data
*
* use PVM to read dumpfile and send across network
*
*/
/* static char sccs_id[]="%Z% %P% %I% %D%"; */
#define DEBUG
#include "all.h"
/* ultimately, move below to tag.h! */
#define DUMP_CSPTAG (TAG_BASE + 17)
#define DUMP_FSPTAG (TAG_BASE + 18)
#define DUMP_ISPTAG (TAG_BASE + 19)
#define DUMP_CMATTAG (TAG_BASE + 20)
#define DUMP_IMATTAG (TAG_BASE + 21)
/* SLAVE */
FILE *fn,*diagn;
extern int NProc,NRank;
extern int *PVM_tid;
main(int argc,char **argv)
{
int mytid,From,tid[4];
/* init pvm */
char direction;
diagn=fopen("slave.dia","w");
fprintf(diagn," SLAVE started\n");fflush(diagn);
PVM_GInit(NULL,NULL,0,NULL,1);/* do pvm_mytid , set Rank, etc. */
fprintf(diagn," SLAVE after PVMGInit in main\n"); fflush(diagn);
/* I assume argv[1]=sargv[0], etc, with argv[0]=program name=sdump*/
From = atoi(argv[2]);
#ifdef DEBUG
fprintf(diagn," SLAVE %d [1]=%s\n",argc,argv[1]);
fflush(diagn);
#endif
if(argv[0]==NULL)
{
fprintf(diagn," slave got argv[0]=NULL\n");
Debug(" slave got argv[0]=NULL\n");
exit(0);
}
if(argv[1]==NULL)
{
fprintf(diagn," slave got argv[1]=NULL\n");
Debug(" slave got argv[1]=NULL\n");
exit(0);
}
if(argv[2]==NULL)
{
fprintf(diagn," slave got argv[2]=NULL\n");
Debug(" slave got argv[2]=NULL\n");
}
direction = *(argv[2]);
fprintf(diagn," direction %c\n",direction);
fprintf(diagn," NProc=%d\n",NProc);
fprintf(diagn," tid=%d %d\n",PVM_tid[0],PVM_tid[1]);
From=0;/* from needs parent id PVM_tid[0] for SendBuf/RecvBuf*/
if(direction=='s')
{
#ifdef DEBUG
Debug(" Slave Sending tidparent=%d\n",From);
#endif
if((fn=fopen(argv[1],"rb"))==NULL)
{
/* local error msg will probably do no good to slave, might screw up
fprintf(stderr," cant open input dump file %s\n",argv[1]);
*/
/* use msg.c stuff to report error back to master*/
Debug(" Slave cant open dump file %s to send %s\n",argv[0],argv[1]);
exit(0);
}
SendDumpFile(fn, From);
}
else if(direction=='r')
{/* receive file from master */
#ifdef DEBUG
fprintf(diagn," slave receiving\n");
fflush(diagn);
Debug(" Slave Receiving\n");
#endif
if((fn=fopen(argv[1],"wb"))==NULL)
{
/* local error msg will probably do no good to slave, might screw up
fprintf(stderr," cant open input dump file %s\n",argv[0]);
*/
/* use msg.c stuff to report error back to master*/
Debug(" Slave cant open receive dump file %s %s\n",argv[0],argv[1]);
exit(0);
}
#ifdef DEBUG
fprintf(diagn," slave before RecvDumpfile\n");
fflush(diagn);
Debug(" Slave before RecvDumpfile\n");
#endif
RecvDumpFile(fn, From);
#ifdef DEBUG
fprintf(diagn," slave after RecvDumpfile\n");
fflush(diagn);
Debug(" Slave after RecvDumpfile\n");
#endif
}
else
{
Debug(" Slave cant understand args=%s %s %s\n",argv[0],argv[1],argv[2]);
fprintf(diagn," Slave cant understand args=%s %s %s\n",argv[0],argv[1],argv[2]);
fflush(diagn);
exit(0);
}
fclose(fn);fclose(diagn);
#ifdef DEBUG
Debug(" Slave Exiting\n");
#endif
pvm_exit();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -