159599516SKenneth E. Jansen #include <stdio.h> 259599516SKenneth E. Jansen #include <iostream> 359599516SKenneth E. Jansen #include <string.h> 459599516SKenneth E. Jansen #include <stdlib.h> 559599516SKenneth E. Jansen //#define OMPI_SKIP_MPICXX 1 //Added in the CMakeList.txt file 659599516SKenneth E. Jansen #include <mpi.h> 759599516SKenneth E. Jansen #include <math.h> 859599516SKenneth E. Jansen #include <sys/stat.h> 959599516SKenneth E. Jansen #include <sys/types.h> 1059599516SKenneth E. Jansen #include "phastaIO.h" 1159599516SKenneth E. Jansen 1259599516SKenneth E. Jansen inline int 1359599516SKenneth E. Jansen cscompare( const char teststring[], 1459599516SKenneth E. Jansen const char targetstring[] ) 1559599516SKenneth E. Jansen { 1659599516SKenneth E. Jansen char* s1 = const_cast<char*>(teststring); 1759599516SKenneth E. Jansen char* s2 = const_cast<char*>(targetstring); 1859599516SKenneth E. Jansen 1959599516SKenneth E. Jansen while( *s1 == ' ') s1++; 2059599516SKenneth E. Jansen while( *s2 == ' ') s2++; 2159599516SKenneth E. Jansen while( ( *s1 ) 2259599516SKenneth E. Jansen && ( *s2 ) 2359599516SKenneth E. Jansen && ( *s2 != '?') 2459599516SKenneth E. Jansen && ( tolower( *s1 )==tolower( *s2 ) ) ) { 2559599516SKenneth E. Jansen s1++; 2659599516SKenneth E. Jansen s2++; 2759599516SKenneth E. Jansen while( *s1 == ' ') s1++; 2859599516SKenneth E. Jansen while( *s2 == ' ') s2++; 2959599516SKenneth E. Jansen } 3059599516SKenneth E. Jansen if ( !( *s1 ) || ( *s1 == '?') ) return 1; 3159599516SKenneth E. Jansen else return 0; 3259599516SKenneth E. Jansen } 3359599516SKenneth E. Jansen 3459599516SKenneth E. Jansen int main(int argc, char *argv[]) { 3559599516SKenneth E. Jansen 3659599516SKenneth E. Jansen MPI_Init(&argc,&argv); 3759599516SKenneth E. Jansen 3859599516SKenneth E. Jansen int myrank, N_procs; 3959599516SKenneth E. Jansen MPI_Comm_rank(MPI_COMM_WORLD, &myrank); 4059599516SKenneth E. Jansen MPI_Comm_size(MPI_COMM_WORLD, &N_procs); 4159599516SKenneth E. Jansen 4259599516SKenneth E. Jansen FILE * pFile; 4359599516SKenneth E. Jansen char target[1024], pool[256]; 4459599516SKenneth E. Jansen char * temp, * token; 4559599516SKenneth E. Jansen int i, j, k, N_restart_integer, N_restart_double; 4659599516SKenneth E. Jansen int N_geombc_double, N_geombc_integer; 4759599516SKenneth E. Jansen int N_steps, N_parts, N_files; 4859599516SKenneth E. Jansen 4959599516SKenneth E. Jansen pFile = fopen("./IO.N2O.input","r"); 5059599516SKenneth E. Jansen if (pFile == NULL) 5159599516SKenneth E. Jansen printf("Error openning\n"); 5259599516SKenneth E. Jansen 5359599516SKenneth E. Jansen fgets( target, 1024, pFile ); 5459599516SKenneth E. Jansen token = strtok ( target, ";" );strcpy(pool,token); 5559599516SKenneth E. Jansen temp = strtok ( pool, ":" );temp = strtok ( NULL, ":" ); 5659599516SKenneth E. Jansen N_geombc_double = atoi(temp); 5759599516SKenneth E. Jansen 5859599516SKenneth E. Jansen fgets( target, 1024, pFile ); 5959599516SKenneth E. Jansen token = strtok ( target, ";" );strcpy(pool,token); 6059599516SKenneth E. Jansen temp = strtok ( pool, ":" );temp = strtok ( NULL, ":" ); 6159599516SKenneth E. Jansen N_geombc_integer = atoi(temp); 6259599516SKenneth E. Jansen 6359599516SKenneth E. Jansen fgets( target, 1024, pFile ); 6459599516SKenneth E. Jansen token = strtok ( target, ";" );strcpy(pool,token); 6559599516SKenneth E. Jansen temp = strtok ( pool, ":" );temp = strtok ( NULL, ":" ); 6659599516SKenneth E. Jansen N_restart_double = atoi(temp); 6759599516SKenneth E. Jansen 6859599516SKenneth E. Jansen fgets( target, 1024, pFile ); 6959599516SKenneth E. Jansen token = strtok ( target, ";" );strcpy(pool,token); 7059599516SKenneth E. Jansen temp = strtok ( pool, ":" );temp = strtok ( NULL, ":" ); 7159599516SKenneth E. Jansen N_restart_integer = atoi(temp); 7259599516SKenneth E. Jansen 7359599516SKenneth E. Jansen fgets( target, 1024, pFile ); 7459599516SKenneth E. Jansen token = strtok ( target, ";" );strcpy(pool,token); 7559599516SKenneth E. Jansen temp = strtok ( pool, ":" );temp = strtok ( NULL, ":" ); 7659599516SKenneth E. Jansen N_steps = atoi(temp); 7759599516SKenneth E. Jansen 7859599516SKenneth E. Jansen fgets( target, 1024, pFile ); 7959599516SKenneth E. Jansen token = strtok ( target, ";" );strcpy(pool,token); 8059599516SKenneth E. Jansen temp = strtok ( pool, ":" );temp = strtok ( NULL, ":" ); 8159599516SKenneth E. Jansen N_parts = atoi(temp); 8259599516SKenneth E. Jansen 8359599516SKenneth E. Jansen if(myrank==0){ 8459599516SKenneth E. Jansen printf("numpe is %d and start is %d\n",N_parts,N_steps); 8559599516SKenneth E. Jansen } 8659599516SKenneth E. Jansen 8759599516SKenneth E. Jansen fgets( target, 1024, pFile ); 8859599516SKenneth E. Jansen token = strtok ( target, ";" );strcpy(pool,token); 8959599516SKenneth E. Jansen temp = strtok ( pool, ":" );temp = strtok ( NULL, ":" ); 9059599516SKenneth E. Jansen N_files = atoi(temp); 9159599516SKenneth E. Jansen 9259599516SKenneth E. Jansen double ***Dfield; int ***Ifield; 9359599516SKenneth E. Jansen int ***paraD, ***paraI, *expectD, *expectI; 9459599516SKenneth E. Jansen char **fieldNameD, **fileTypeD, **dataTypeD, **headerTypeD; 9559599516SKenneth E. Jansen char **fieldNameI, **fileTypeI, **dataTypeI, **headerTypeI; 9659599516SKenneth E. Jansen 97*9fdca21dSCameron Smith int* WriteLockD = new int[N_restart_double]; 98*9fdca21dSCameron Smith int* WriteLockI = new int[N_restart_integer]; 9959599516SKenneth E. Jansen 10059599516SKenneth E. Jansen int nppp = N_parts/N_procs; 10159599516SKenneth E. Jansen int startpart = myrank * nppp +1; 10259599516SKenneth E. Jansen int endpart = startpart + nppp - 1; 10359599516SKenneth E. Jansen char gfname[64], numTemp[128]; 104f32d06b0SKenneth E. Jansen int iarray[10], igeom, isize; 10559599516SKenneth E. Jansen 10659599516SKenneth E. Jansen 10759599516SKenneth E. Jansen if (N_parts != N_procs) { 10859599516SKenneth E. Jansen printf("Input error: number of parts should be equal to the number of procs!\n"); 10959599516SKenneth E. Jansen printf("Please modify the IO.O2N.input file!\n"); 11059599516SKenneth E. Jansen return 0; 11159599516SKenneth E. Jansen } 11259599516SKenneth E. Jansen 11359599516SKenneth E. Jansen 11459599516SKenneth E. Jansen 11559599516SKenneth E. Jansen ///////////////////// reading /////////////////////////////// 11659599516SKenneth E. Jansen 11759599516SKenneth E. Jansen int nppf = N_parts/N_files; 11859599516SKenneth E. Jansen int N_geombc = N_geombc_double + N_geombc_integer; 11959599516SKenneth E. Jansen int readHandle, GPID; 12059599516SKenneth E. Jansen char fname[255],fieldtag[255]; 12159599516SKenneth E. Jansen 12259599516SKenneth E. Jansen int irestart; 12359599516SKenneth E. Jansen 12459599516SKenneth E. Jansen Dfield = new double**[N_restart_double]; 12559599516SKenneth E. Jansen Ifield = new int**[N_restart_integer]; 12659599516SKenneth E. Jansen 12759599516SKenneth E. Jansen paraD = new int**[N_restart_double]; 12859599516SKenneth E. Jansen paraI = new int**[N_restart_integer]; 12959599516SKenneth E. Jansen 13059599516SKenneth E. Jansen expectD = new int[N_restart_double]; 13159599516SKenneth E. Jansen expectI = new int[N_restart_integer]; 13259599516SKenneth E. Jansen 13359599516SKenneth E. Jansen fieldNameD = new char*[N_restart_double]; 13459599516SKenneth E. Jansen fileTypeD = new char*[N_restart_double]; 13559599516SKenneth E. Jansen dataTypeD = new char*[N_restart_double]; 13659599516SKenneth E. Jansen headerTypeD = new char*[N_restart_double]; 13759599516SKenneth E. Jansen 13859599516SKenneth E. Jansen fieldNameI = new char*[N_restart_integer]; 13959599516SKenneth E. Jansen fileTypeI = new char*[N_restart_integer]; 14059599516SKenneth E. Jansen dataTypeI = new char*[N_restart_integer]; 14159599516SKenneth E. Jansen headerTypeI = new char*[N_restart_integer]; 14259599516SKenneth E. Jansen 14359599516SKenneth E. Jansen if (N_restart_double>0) 14459599516SKenneth E. Jansen for ( i = 0; i < N_restart_double; i++ ) 14559599516SKenneth E. Jansen { 14659599516SKenneth E. Jansen WriteLockD[i]=0; 14759599516SKenneth E. Jansen Dfield[i] = new double*[nppp]; 14859599516SKenneth E. Jansen 14959599516SKenneth E. Jansen paraD[i] = new int*[nppp]; 15059599516SKenneth E. Jansen 15159599516SKenneth E. Jansen fieldNameD[i] = new char[128]; 15259599516SKenneth E. Jansen fileTypeD[i] = new char[128]; 15359599516SKenneth E. Jansen dataTypeD[i] = new char[128]; 15459599516SKenneth E. Jansen headerTypeD[i] = new char[128]; 15559599516SKenneth E. Jansen } 15659599516SKenneth E. Jansen 15759599516SKenneth E. Jansen if (N_restart_integer>0) 15859599516SKenneth E. Jansen for ( i = 0; i < N_restart_integer; i++ ) 15959599516SKenneth E. Jansen { 16059599516SKenneth E. Jansen WriteLockI[i]=0; 16159599516SKenneth E. Jansen Ifield[i] = new int*[nppp]; 16259599516SKenneth E. Jansen 16359599516SKenneth E. Jansen paraI[i] = new int*[nppp]; 16459599516SKenneth E. Jansen 16559599516SKenneth E. Jansen fieldNameI[i] = new char[128]; 16659599516SKenneth E. Jansen fileTypeI[i] = new char[128]; 16759599516SKenneth E. Jansen dataTypeI[i] = new char[128]; 16859599516SKenneth E. Jansen headerTypeI[i] = new char[128]; 16959599516SKenneth E. Jansen } 17059599516SKenneth E. Jansen 17159599516SKenneth E. Jansen 17259599516SKenneth E. Jansen ///////////////////// reading /////////////////////////////// 17359599516SKenneth E. Jansen 17459599516SKenneth E. Jansen int N_restart = N_restart_double + N_restart_integer; 17559599516SKenneth E. Jansen int readHandle1; 17659599516SKenneth E. Jansen 17759599516SKenneth E. Jansen bzero((void*)fname,255); 17859599516SKenneth E. Jansen sprintf(fname,"./%d-procs_case/restart-dat.%d.%d",N_parts,N_steps,((int)(myrank/(N_procs/N_files))+1)); 17959599516SKenneth E. Jansen 18059599516SKenneth E. Jansen //if(myrank==0){ 18159599516SKenneth E. Jansen // printf("Myrank is %d - Filename is %s \n",myrank,fname); 18259599516SKenneth E. Jansen //} 18359599516SKenneth E. Jansen 18459599516SKenneth E. Jansen int nfields; 18559599516SKenneth E. Jansen queryphmpiio(fname, &nfields, &nppf); 18659599516SKenneth E. Jansen //initphmpiio(&N_restart, &nppf, &N_files,&readHandle1, "write") ;//WRONG 18759599516SKenneth E. Jansen initphmpiio(&nfields, &nppf, &N_files, &readHandle1, "read"); 18859599516SKenneth E. Jansen openfile(fname, "read", &readHandle1); 18959599516SKenneth E. Jansen 19059599516SKenneth E. Jansen for ( i = 0; i < N_restart_double; i++ ) 19159599516SKenneth E. Jansen { 19259599516SKenneth E. Jansen fgets( target, 1024, pFile ); 19359599516SKenneth E. Jansen temp = strtok( target, ";" ); 19459599516SKenneth E. Jansen token = strtok( temp, "," ); 19559599516SKenneth E. Jansen strcpy( fileTypeD[i], token ); 19659599516SKenneth E. Jansen token = strtok ( NULL, "," ); 19759599516SKenneth E. Jansen strcpy( fieldNameD[i], token ); 19859599516SKenneth E. Jansen token = strtok ( NULL, "," ); 19959599516SKenneth E. Jansen strcpy( dataTypeD[i], token ); 20059599516SKenneth E. Jansen token = strtok ( NULL, "," ); 20159599516SKenneth E. Jansen strcpy( headerTypeD[i], token ); 20259599516SKenneth E. Jansen token = strtok ( NULL, "," ); 20359599516SKenneth E. Jansen strcpy( numTemp, token ); 20459599516SKenneth E. Jansen expectD[i] = atoi (numTemp); 20559599516SKenneth E. Jansen 20659599516SKenneth E. Jansen for ( j = 0; j < nppp; j++ ) 20759599516SKenneth E. Jansen { 20859599516SKenneth E. Jansen paraD[i][j] = new int[expectD[i]]; 20959599516SKenneth E. Jansen 21059599516SKenneth E. Jansen for ( k = 0; k < 10; k++ ) 21159599516SKenneth E. Jansen iarray[k]=0; 21259599516SKenneth E. Jansen 21359599516SKenneth E. Jansen GPID = startpart + j; 21459599516SKenneth E. Jansen bzero((void*)fieldtag,255); 21559599516SKenneth E. Jansen sprintf(fieldtag,"%s@%d",fieldNameD[i],GPID); 21659599516SKenneth E. Jansen 21759599516SKenneth E. Jansen //printf("myrank %d - filedtag %s\n",myrank,fieldtag); 21859599516SKenneth E. Jansen 21959599516SKenneth E. Jansen iarray[0]=-1; 22059599516SKenneth E. Jansen readheader( &readHandle1, 22159599516SKenneth E. Jansen fieldtag, 22259599516SKenneth E. Jansen (void*)iarray, 22359599516SKenneth E. Jansen &expectD[i], 22459599516SKenneth E. Jansen "double", 22559599516SKenneth E. Jansen "binary" ); 22659599516SKenneth E. Jansen 22759599516SKenneth E. Jansen if ( iarray[0]==-1 ) 22859599516SKenneth E. Jansen WriteLockD[i]=1; 22959599516SKenneth E. Jansen if ( WriteLockD[i]==0 ) 23059599516SKenneth E. Jansen { 23159599516SKenneth E. Jansen for ( k = 0; k < expectD[i]; k++ ) 23259599516SKenneth E. Jansen paraD[i][j][k] = iarray[k]; 23359599516SKenneth E. Jansen 23459599516SKenneth E. Jansen if ( cscompare("block",headerTypeD[i]) ) 23559599516SKenneth E. Jansen { 23659599516SKenneth E. Jansen if ( expectD[i]==1) 23759599516SKenneth E. Jansen isize = paraD[i][j][0]; 23859599516SKenneth E. Jansen else 23959599516SKenneth E. Jansen isize = paraD[i][j][0] * paraD[i][j][1]; 24059599516SKenneth E. Jansen 24159599516SKenneth E. Jansen Dfield[i][j] = new double[isize]; 24259599516SKenneth E. Jansen readdatablock( &readHandle1, 24359599516SKenneth E. Jansen fieldtag, 24459599516SKenneth E. Jansen (void*)Dfield[i][j], 24559599516SKenneth E. Jansen &isize, 24659599516SKenneth E. Jansen "double", 24759599516SKenneth E. Jansen "binary" ); 24859599516SKenneth E. Jansen } 24959599516SKenneth E. Jansen 25059599516SKenneth E. Jansen } 25159599516SKenneth E. Jansen } 25259599516SKenneth E. Jansen } 25359599516SKenneth E. Jansen 25459599516SKenneth E. Jansen for ( i = 0; i < N_restart_integer; i++ ) 25559599516SKenneth E. Jansen { 25659599516SKenneth E. Jansen fgets( target, 1024, pFile ); 25759599516SKenneth E. Jansen temp = strtok( target, ";" ); 25859599516SKenneth E. Jansen token = strtok( temp, "," ); 25959599516SKenneth E. Jansen strcpy( fileTypeI[i], token ); 26059599516SKenneth E. Jansen token = strtok ( NULL, "," ); 26159599516SKenneth E. Jansen strcpy( fieldNameI[i], token ); 26259599516SKenneth E. Jansen token = strtok ( NULL, "," ); 26359599516SKenneth E. Jansen strcpy( dataTypeI[i], token ); 26459599516SKenneth E. Jansen token = strtok ( NULL, "," ); 26559599516SKenneth E. Jansen strcpy( headerTypeI[i], token ); 26659599516SKenneth E. Jansen token = strtok ( NULL, "," ); 26759599516SKenneth E. Jansen strcpy( numTemp, token ); 26859599516SKenneth E. Jansen expectI[i] = atoi (numTemp); 26959599516SKenneth E. Jansen 27059599516SKenneth E. Jansen for ( j = 0; j < nppp; j++ ) 27159599516SKenneth E. Jansen { 27259599516SKenneth E. Jansen paraI[i][j] = new int[expectI[i]]; 27359599516SKenneth E. Jansen 27459599516SKenneth E. Jansen for ( k = 0; k < 10; k++ ) 27559599516SKenneth E. Jansen iarray[k]=0; 27659599516SKenneth E. Jansen 27759599516SKenneth E. Jansen GPID = startpart + j; 27859599516SKenneth E. Jansen bzero((void*)fieldtag,255); 27959599516SKenneth E. Jansen sprintf(fieldtag,"%s@%d",fieldNameI[i],GPID); 28059599516SKenneth E. Jansen iarray[0]=-1; 28159599516SKenneth E. Jansen 28259599516SKenneth E. Jansen //printf("Rank %d, fieldname is %s \n",myrank,fieldtag); 28359599516SKenneth E. Jansen 28459599516SKenneth E. Jansen readheader( &readHandle1, 28559599516SKenneth E. Jansen fieldtag, 28659599516SKenneth E. Jansen (void*)iarray, 28759599516SKenneth E. Jansen &expectI[i], 28859599516SKenneth E. Jansen "integer", 28959599516SKenneth E. Jansen "binary" ); 29059599516SKenneth E. Jansen 29159599516SKenneth E. Jansen if ( iarray[0]==-1) 29259599516SKenneth E. Jansen WriteLockI[i]=1; 29359599516SKenneth E. Jansen if ( WriteLockI[i]==0 ) 29459599516SKenneth E. Jansen { 29559599516SKenneth E. Jansen for ( k = 0; k < expectI[i]; k++ ) 29659599516SKenneth E. Jansen paraI[i][j][k] = iarray[k]; 29759599516SKenneth E. Jansen 29859599516SKenneth E. Jansen if ( cscompare("block",headerTypeI[i]) ) 29959599516SKenneth E. Jansen { 30059599516SKenneth E. Jansen if ( expectI[i]==1) 30159599516SKenneth E. Jansen isize = paraI[i][j][0]; 30259599516SKenneth E. Jansen else 30359599516SKenneth E. Jansen isize = paraI[i][j][0] * paraI[i][j][1]; 30459599516SKenneth E. Jansen 30559599516SKenneth E. Jansen Ifield[i][j] = new int[isize]; 30659599516SKenneth E. Jansen readdatablock( &readHandle1, 30759599516SKenneth E. Jansen fieldtag, 30859599516SKenneth E. Jansen (void*)Ifield[i][j], 30959599516SKenneth E. Jansen &isize, 31059599516SKenneth E. Jansen "integer", 31159599516SKenneth E. Jansen "binary" ); 31259599516SKenneth E. Jansen } 31359599516SKenneth E. Jansen } 31459599516SKenneth E. Jansen } 31559599516SKenneth E. Jansen 31659599516SKenneth E. Jansen } 31759599516SKenneth E. Jansen 31859599516SKenneth E. Jansen closefile(&readHandle1, "write"); 31959599516SKenneth E. Jansen finalizephmpiio(&readHandle1); 32059599516SKenneth E. Jansen 32159599516SKenneth E. Jansen //////////////////////////writing//////////////////////////// 32259599516SKenneth E. Jansen 32359599516SKenneth E. Jansen int irstou; 32459599516SKenneth E. Jansen int magic_number = 362436; 32559599516SKenneth E. Jansen int* mptr = &magic_number; 32659599516SKenneth E. Jansen int nitems = 1; 32759599516SKenneth E. Jansen 32859599516SKenneth E. Jansen //MR CHANGE 32959599516SKenneth E. Jansen bzero((void*)fname,255); 33059599516SKenneth E. Jansen sprintf(fname,"./%d-procs_case-1PPP",N_parts); 33159599516SKenneth E. Jansen if(0<mkdir(fname,0777)) { printf("ERROR - Could not create procs_case-1PPP directory\n"); return 1; } 33259599516SKenneth E. Jansen //MR CHANGE END 33359599516SKenneth E. Jansen 33459599516SKenneth E. Jansen bzero((void*)fname,255); 33559599516SKenneth E. Jansen sprintf(fname,"./%d-procs_case-1PPP/restart.%d.%d",N_parts,N_steps,myrank+1); 33659599516SKenneth E. Jansen openfile(fname,"write", &irstou); 33759599516SKenneth E. Jansen 33859599516SKenneth E. Jansen /* writing the top ascii header for the restart file */ 33959599516SKenneth E. Jansen 34059599516SKenneth E. Jansen writestring( &irstou,"# PHASTA Input File Version 2.0\n"); 34159599516SKenneth E. Jansen writestring( &irstou, 34259599516SKenneth E. Jansen "# format \"keyphrase : sizeofnextblock usual headers\"\n"); 34359599516SKenneth E. Jansen 34459599516SKenneth E. Jansen bzero( (void*)fname, 255 ); 34559599516SKenneth E. Jansen writestring( &irstou, fname ); 34659599516SKenneth E. Jansen 34759599516SKenneth E. Jansen writestring( &irstou, fname ); 34859599516SKenneth E. Jansen writestring( &irstou,"\n"); 34959599516SKenneth E. Jansen 35059599516SKenneth E. Jansen 35159599516SKenneth E. Jansen isize = 1; 35259599516SKenneth E. Jansen nitems = 1; 35359599516SKenneth E. Jansen iarray[ 0 ] = 1; 35459599516SKenneth E. Jansen writeheader( &irstou, "byteorder magic number ", 35559599516SKenneth E. Jansen (void*)iarray, &nitems, &isize, "integer", "binary" ); 35659599516SKenneth E. Jansen 35759599516SKenneth E. Jansen nitems = 1; 35859599516SKenneth E. Jansen writedatablock( &irstou, "byteorder magic number ", 35959599516SKenneth E. Jansen (void*)mptr, &nitems, "integer", "binary" ); 36059599516SKenneth E. Jansen 36159599516SKenneth E. Jansen for ( i = 0; i < N_restart_double; i++ ) 36259599516SKenneth E. Jansen { 36359599516SKenneth E. Jansen for ( j = 0; j < nppp; j++ ) 36459599516SKenneth E. Jansen { 36559599516SKenneth E. Jansen if ( WriteLockD[i] == 0 ) 36659599516SKenneth E. Jansen { 36759599516SKenneth E. Jansen if ( cscompare("header",headerTypeD[i]) ) 36859599516SKenneth E. Jansen { 36959599516SKenneth E. Jansen bzero( (void*)fname, 255 ); 37059599516SKenneth E. Jansen sprintf(fname,"%s : < 0 > %d\n", fieldNameD[i],paraD[i][j][0]); 37159599516SKenneth E. Jansen writestring( &irstou, fname ); 37259599516SKenneth E. Jansen } 37359599516SKenneth E. Jansen 37459599516SKenneth E. Jansen if ( cscompare("block",headerTypeD[i]) ) 37559599516SKenneth E. Jansen { 37659599516SKenneth E. Jansen if ( expectD[i]==1 ) 37759599516SKenneth E. Jansen isize = paraD[i][j][0]; 37859599516SKenneth E. Jansen else 37959599516SKenneth E. Jansen isize = paraD[i][j][0] * paraD[i][j][1]; 38059599516SKenneth E. Jansen 38159599516SKenneth E. Jansen for ( k = 0; k < expectD[i]; k++ ) 38259599516SKenneth E. Jansen iarray[k] = paraD[i][j][k]; 38359599516SKenneth E. Jansen 38459599516SKenneth E. Jansen if ( cscompare("header",headerTypeD[i]) ) 38559599516SKenneth E. Jansen isize = 0; 38659599516SKenneth E. Jansen 38759599516SKenneth E. Jansen writeheader( &irstou, 38859599516SKenneth E. Jansen fieldNameD[i], 38959599516SKenneth E. Jansen (void*)iarray, 39059599516SKenneth E. Jansen &expectD[i], 39159599516SKenneth E. Jansen &isize, 39259599516SKenneth E. Jansen "double", 39359599516SKenneth E. Jansen "binary"); 39459599516SKenneth E. Jansen writedatablock( &irstou, 39559599516SKenneth E. Jansen fieldNameD[i], 39659599516SKenneth E. Jansen (void*)Dfield[i][j], 39759599516SKenneth E. Jansen &isize, 39859599516SKenneth E. Jansen "double", 39959599516SKenneth E. Jansen "binary"); 40059599516SKenneth E. Jansen } 40159599516SKenneth E. Jansen 40259599516SKenneth E. Jansen 40359599516SKenneth E. Jansen if ( cscompare("block",headerTypeD[i]) ) 40459599516SKenneth E. Jansen delete [] Dfield[i][j]; 40559599516SKenneth E. Jansen } 40659599516SKenneth E. Jansen delete [] paraD[i][j]; 40759599516SKenneth E. Jansen } 40859599516SKenneth E. Jansen } 40959599516SKenneth E. Jansen 41059599516SKenneth E. Jansen for ( i = 0; i < N_restart_integer; i++ ) 41159599516SKenneth E. Jansen { 41259599516SKenneth E. Jansen for ( j = 0; j < nppp; j++ ) 41359599516SKenneth E. Jansen { 41459599516SKenneth E. Jansen 41559599516SKenneth E. Jansen if ( WriteLockI[i] == 0 ) 41659599516SKenneth E. Jansen { 41759599516SKenneth E. Jansen 41859599516SKenneth E. Jansen if ( cscompare("header",headerTypeI[i]) ) 41959599516SKenneth E. Jansen { 42059599516SKenneth E. Jansen bzero( (void*)fname, 255 ); 42159599516SKenneth E. Jansen sprintf(fname,"%s : < 0 > %d\n", fieldNameI[i],paraI[i][j][0]); 42259599516SKenneth E. Jansen writestring( &irstou, fname ); 42359599516SKenneth E. Jansen } 42459599516SKenneth E. Jansen 42559599516SKenneth E. Jansen if ( cscompare("block",headerTypeI[i]) ) 42659599516SKenneth E. Jansen { 42759599516SKenneth E. Jansen if ( expectI[i]==1 ) 42859599516SKenneth E. Jansen isize = paraI[i][j][0]; 42959599516SKenneth E. Jansen else 43059599516SKenneth E. Jansen isize = paraI[i][j][0] * paraI[i][j][1]; 43159599516SKenneth E. Jansen 43259599516SKenneth E. Jansen for ( k = 0; k < expectI[i]; k++ ) 43359599516SKenneth E. Jansen iarray[k] = paraI[i][j][k]; 43459599516SKenneth E. Jansen 43559599516SKenneth E. Jansen writeheader( &irstou, 43659599516SKenneth E. Jansen fieldNameI[i], 43759599516SKenneth E. Jansen (void*)iarray, 43859599516SKenneth E. Jansen &expectI[i], 43959599516SKenneth E. Jansen &isize, 44059599516SKenneth E. Jansen "integer", 44159599516SKenneth E. Jansen "binary"); 44259599516SKenneth E. Jansen writedatablock( &irstou, 44359599516SKenneth E. Jansen fieldNameI[i], 44459599516SKenneth E. Jansen (void*)Ifield[i][j], 44559599516SKenneth E. Jansen &isize, 44659599516SKenneth E. Jansen "integer", 44759599516SKenneth E. Jansen "binary"); 44859599516SKenneth E. Jansen } 44959599516SKenneth E. Jansen 45059599516SKenneth E. Jansen if ( cscompare("block",headerTypeI[i]) ) 45159599516SKenneth E. Jansen delete [] Ifield[i][j]; 45259599516SKenneth E. Jansen } 45359599516SKenneth E. Jansen delete [] paraI[i][j]; 45459599516SKenneth E. Jansen } 45559599516SKenneth E. Jansen } 45659599516SKenneth E. Jansen 45759599516SKenneth E. Jansen 45859599516SKenneth E. Jansen closefile( &irstou, "write" ); 45959599516SKenneth E. Jansen MPI_Barrier(MPI_COMM_WORLD); 46059599516SKenneth E. Jansen 46159599516SKenneth E. Jansen 46259599516SKenneth E. Jansen if (N_restart_double>0) 46359599516SKenneth E. Jansen for ( i = 0; i < N_restart_double; i++ ) 46459599516SKenneth E. Jansen { 46559599516SKenneth E. Jansen delete [] Dfield[i]; 46659599516SKenneth E. Jansen delete [] paraD[i]; 46759599516SKenneth E. Jansen 46859599516SKenneth E. Jansen delete [] fieldNameD[i]; 46959599516SKenneth E. Jansen delete [] fileTypeD[i]; 47059599516SKenneth E. Jansen delete [] dataTypeD[i]; 47159599516SKenneth E. Jansen delete [] headerTypeD[i]; 47259599516SKenneth E. Jansen } 47359599516SKenneth E. Jansen 47459599516SKenneth E. Jansen if (N_restart_integer>0) 47559599516SKenneth E. Jansen for ( i = 0; i < N_restart_integer; i++ ) 47659599516SKenneth E. Jansen { 47759599516SKenneth E. Jansen delete [] Ifield[i]; 47859599516SKenneth E. Jansen delete [] paraI[i]; 47959599516SKenneth E. Jansen 48059599516SKenneth E. Jansen delete [] fieldNameI[i]; 48159599516SKenneth E. Jansen delete [] fileTypeI[i]; 48259599516SKenneth E. Jansen delete [] dataTypeI[i]; 48359599516SKenneth E. Jansen delete [] headerTypeI[i]; 48459599516SKenneth E. Jansen } 48559599516SKenneth E. Jansen 48659599516SKenneth E. Jansen delete [] Dfield; 48759599516SKenneth E. Jansen delete [] Ifield; 48859599516SKenneth E. Jansen 48959599516SKenneth E. Jansen delete [] paraD; 49059599516SKenneth E. Jansen delete [] paraI; 49159599516SKenneth E. Jansen 49259599516SKenneth E. Jansen delete [] expectD; 49359599516SKenneth E. Jansen delete [] expectI; 49459599516SKenneth E. Jansen 49559599516SKenneth E. Jansen delete [] fieldNameD; 49659599516SKenneth E. Jansen delete [] fileTypeD; 49759599516SKenneth E. Jansen delete [] dataTypeD; 49859599516SKenneth E. Jansen delete [] headerTypeD; 49959599516SKenneth E. Jansen 50059599516SKenneth E. Jansen delete [] fieldNameI; 50159599516SKenneth E. Jansen delete [] fileTypeI; 50259599516SKenneth E. Jansen delete [] dataTypeI; 50359599516SKenneth E. Jansen delete [] headerTypeI; 50459599516SKenneth E. Jansen 505*9fdca21dSCameron Smith delete [] WriteLockD; 506*9fdca21dSCameron Smith delete [] WriteLockI; 507*9fdca21dSCameron Smith 50859599516SKenneth E. Jansen fclose(pFile); 50959599516SKenneth E. Jansen 51059599516SKenneth E. Jansen if (myrank==0) 51159599516SKenneth E. Jansen { 51259599516SKenneth E. Jansen printf("\nFinished transfer, please check data using:\n"); 51359599516SKenneth E. Jansen printf(" grep -a ': <' filename \n\n"); 51459599516SKenneth E. Jansen } 51559599516SKenneth E. Jansen 51659599516SKenneth E. Jansen MPI_Finalize(); 51759599516SKenneth E. Jansen 51859599516SKenneth E. Jansen } 51959599516SKenneth E. Jansen 52059599516SKenneth E. Jansen 521