/*--------------------------------------------*/ /* */ /* (c) Sebastian Hiller, 2004-2007 */ /* */ /*--------------------------------------------*/ #include #include #include /*--------------------------------------------*/ /* Before compilation, define these variables:*/ /* */ #define LOCATIONGAPRO "/home/nmrsu/gapro_098_linux" #define PLATFORM "XWINNMR 3.5" /* or "TOPSPIN 2.0", "TOPSPIN 2.1"*/ #define TEXTEDITOR "/home/nmrsu/nedit" /* */ /* */ /*--------------------------------------------*/ /* version 01 SH 04dec07 */ /* version 02 SH 23jan08 fullrun enabled */ /* version 03 SH 24sep08 new format */ /*--------------------------------------------*/ #define MAXPROJECTIONS 500 #define STRING 256 #define MAXDIMENSIONS 10 /*----------------------definition of variables--------------------*/ FILE *spectrafile, *spectrafile2, *prosafile, *anglefile, *logfile, *communfile; FILE *megaprosa, *errorfile, *controlfile, *pprogfile; char mainpath[STRING], greekanglenames[25][10], gapro[STRING], spectra[STRING], spectra2[STRING], spectrum[STRING], expfilename[STRING]; char prosa[STRING], communication[STRING], log[STRING], execute[500], anglefname[200], errorfname[STRING], spectrum2[STRING]; char editor[STRING], parfilename[STRING], pulprog[100], pprogname[STRING], experiment[30]; char freqs[3][10], carriers[MAXDIMENSIONS][10], cnstnum[6], ttemp[20], megaprosname[STRING], zgadd[5], zgadd2[2]; char dimusedlett[MAXPROJECTIONS][MAXDIMENSIONS], zgoptns[STRING], phaseoverlap[30], phasesused[30]; char dimusedlett3D[MAXPROJECTIONS][3][MAXDIMENSIONS], errorstring[256], inputline[STRING], byteorder[STRING]; int validanswer, convergence, fixednumproj, td2, usefile, trosydim, dimensionality; int apsycomplete, numofangles[3], numofcombidim[3], totalnumproj, td1, trosy, pts2complex, pts1complex; int numofp, transient, decimm, basexpno, numberscans, number, dimproj, dataset, pts3complex, td3; int i, j, k, kk, countter, count2, fullrun, setuponly, finalsi2, limit, poexists; int si1, si2, si3, stsi2, stsr2, report, numofprojsofar, finished, peaksfound[MAXPROJECTIONS*4]; int ptomeasure[MAXPROJECTIONS], nondangles[MAXPROJECTIONS], plusminus[MAXPROJECTIONS][MAXDIMENSIONS]; int dimused[MAXPROJECTIONS][MAXDIMENSIONS],parmode,combidim[MAXPROJECTIONS][MAXDIMENSIONS][3]; int nondangles3D[MAXPROJECTIONS][3], plusminus3D[MAXPROJECTIONS][MAXDIMENSIONS][3]; int dimused3D[MAXPROJECTIONS][MAXDIMENSIONS][3]; float angles[MAXPROJECTIONS][MAXDIMENSIONS], angles3D[MAXPROJECTIONS][MAXDIMENSIONS][3],SWhertz, sweept, sweepu, sweepv; float sweepw, sweepx, sweepy, temp, sweep1, sweep3, pphhase, pphhase2, sweep_a[MAXDIMENSIONS]; double groupdelay, freq[3], carrier[MAXDIMENSIONS]; const int addtheorem[8][8]={ {1, 1, 1, 1, 1, 1, 1, 1}, {1,-1, 1,-1, 1,-1, 1,-1}, {1, 1,-1,-1, 1, 1,-1,-1}, {1,-1,-1, 1, 1,-1,-1, 1}, {1, 1, 1, 1,-1,-1,-1,-1}, {1,-1, 1,-1,-1, 1,-1, 1}, {1, 1,-1,-1,-1,-1, 1, 1}, {1,-1,-1, 1,-1, 1, 1,-1} }; const int minuss[8][4]={ {0,0,0,0}, {0,1,0,0}, {0,0,1,0}, {0,1,1,0}, {0,0,0,1}, {0,1,0,1}, {0,0,1,1}, {0,1,1,1} }; const int tppi[32][6]={ {0,0,0,0,0,0}, {0,0,0,0,1,1}, {0,0,0,1,0,1}, {0,0,0,1,1,0}, {0,0,1,0,0,1}, {0,0,1,0,1,0}, {0,0,1,1,0,0}, {0,0,1,1,1,1}, {0,1,0,0,0,1}, {0,1,0,0,1,0}, {0,1,0,1,0,0}, {0,1,0,1,1,1}, {0,1,1,0,0,0}, {0,1,1,0,1,1}, {0,1,1,1,0,1}, {0,1,1,1,1,0}, {1,0,0,0,0,1}, {1,0,0,0,1,0}, {1,0,0,1,0,0}, {1,0,0,1,1,1}, {1,0,1,0,0,0}, {1,0,1,0,1,1}, {1,0,1,1,0,1}, {1,0,1,1,1,0}, {1,1,0,0,0,0}, {1,1,0,0,1,1}, {1,1,0,1,0,1}, {1,1,0,1,1,0}, {1,1,1,0,0,1}, {1,1,1,0,1,0}, {1,1,1,1,0,0}, {1,1,1,1,1,1} }; const int receiver[32]={ 0,2,2,2,2,2,2,0,2,2,2,0,2,0,0,0, 2,2,2,0,2,0,0,0,2,0,0,0,0,0,0,2 }; /*----------------------START of program------------------------------*/ /*----------------------Initialization--------------------------------*/ sprintf(gapro,LOCATIONGAPRO); /*location of gapro*/ strcpy(greekanglenames[1],"alpha"); strcpy(greekanglenames[2],"beta"); strcpy(greekanglenames[3],"gamma"); strcpy(greekanglenames[4],"delta"); strcpy(greekanglenames[5],"epsilon"); strcpy(greekanglenames[6],"zeta"); strcpy(greekanglenames[7],"eta"); strcpy(greekanglenames[8],"theta"); strcpy(greekanglenames[9],"iota"); strcpy(greekanglenames[10],"kappa"); strcpy(greekanglenames[11],"lambda"); strcpy(greekanglenames[12],"my"); strcpy(greekanglenames[13],"ny"); strcpy(greekanglenames[14],"xi"); strcpy(greekanglenames[15],"omikron"); strcpy(greekanglenames[16],"pi"); strcpy(greekanglenames[17],"rho"); strcpy(greekanglenames[18],"sigma"); strcpy(greekanglenames[19],"tau"); strcpy(greekanglenames[20],"ypsilon"); strcpy(greekanglenames[21],"phi"); strcpy(greekanglenames[22],"chi"); strcpy(greekanglenames[23],"psi"); strcpy(greekanglenames[24],"omega"); zgadd[0]=' '; zgadd[1]='-'; zgadd[2]='D'; zgadd[3]=' '; zgadd[4]='\0'; zgadd2[0]=' '; zgadd2[1]='\0'; validanswer=0; apsycomplete=0; usefile=0; convergence=0; fixednumproj=0; totalnumproj=0; trosy=0; fullrun=0; setuponly=0; numofprojsofar=0; transient=0; poexists=0; report=1; parmode=0; GETCURDATA FETCHPAR("PARMODE",&parmode); FETCHPAR("PULPROG",pulprog); FETCHPAR("TD",&td2) pts2complex =td2/2; FETCHPAR1("TD",&td1) pts1complex=td1/2; if(strcmp(PLATFORM,"XWINNMR 3.5")==0){ strcpy(byteorder,"swap"); } else if(strcmp(PLATFORM,"TOPSPIN 2.0")==0){ strcpy(byteorder,"integer"); } else if(strcmp(PLATFORM,"TOPSPIN 2.1")==0){ strcpy(byteorder,"integer"); } else { STOPMSG("Platform not defined") } if(strcmp(PLATFORM,"XWINNMR 3.5")==0){ FETCHPAR("DECIM",&decimm) /*----------following values are only valid for dspfvs==12------*/ if(decimm==2) groupdelay=46.311; if(decimm==3) groupdelay=36.530; if(decimm==4) groupdelay=47.870; if(decimm==6) groupdelay=50.229; if(decimm==8) groupdelay=53.289; if(decimm==12) groupdelay=69.551; if(decimm==16) groupdelay=71.600; if(decimm==24) groupdelay=70.167; if(decimm==32) groupdelay=72.138; if(decimm==48) groupdelay=70.528; if(decimm==64) groupdelay=72.348; if(decimm==96) groupdelay=70.700; if(decimm==128) groupdelay=72.524; } else if(strcmp(PLATFORM,"TOPSPIN 2.0")==0){ FETCHPAR("GRPDLY",&groupdelay) } else if(strcmp(PLATFORM,"TOPSPIN 2.1")==0){ FETCHPAR("GRPDLY",&groupdelay) } else { STOPMSG("Platform not defined") } pphhase2=groupdelay*360.0; FETCHPAR("SWH",&SWhertz) FETCHPAR("PHC0",&pphhase) FETCHPAR("NS",&numberscans) FETCHPAR1("SI",&si1) FETCHPAR("SI",&si2) FETCHPAR("STSI",&stsi2) FETCHPAR("STSR",&stsr2) if(stsi2==0) { finalsi2=si2; } else { finalsi2=stsi2; } /* editor=getenv("EDITOR"); if (editor==NULL) { STOPMSG("please define environment variable: EDITOR") } */ strcpy(editor,TEXTEDITOR); sprintf(mainpath,"%s/data/%s/nmr/%s/%d",disk,user,name,expno); sprintf(spectra,"%s/spectra.gap",mainpath); sprintf(spectra2,"%s/spectra.gap_prosa",mainpath); sprintf(log,"%s/APSY.log",mainpath); sprintf(errorfname,"%s/error.gap",mainpath); sprintf(communication,"%s/term.gap",mainpath); sprintf(anglefname,"%s/angles.dat",mainpath); sprintf(expfilename,"%s/experiment.gap",mainpath); sprintf(parfilename,"%s/parameter.gap",mainpath); sprintf(pprogname,"%s/exp/stan/nmr/lists/pp/%s",disk,pulprog); sprintf(megaprosname,"%s/all_apsy.pro",mainpath); if((pprogfile=fopen(pprogname,"r"))==NULL) { STOPMSG("can not open pulse program\n") } fscanf(pprogfile,";;Dimensionality:"); fscanf(pprogfile,"%d",&dimensionality); fscanf(pprogfile,"\n"); fscanf(pprogfile,";;Experiment:"); fscanf(pprogfile,"%s",experiment); fscanf(pprogfile,"\n"); fscanf(pprogfile,";;Phaseoverlap:"); fscanf(pprogfile,"%s",phaseoverlap); fscanf(pprogfile,"\n"); fscanf(pprogfile,";;trosy:"); fscanf(pprogfile,"%d",&trosydim); fscanf(pprogfile,"\n"); fscanf(pprogfile,";;DimProjections:"); fscanf(pprogfile,"%d",&dimproj); fscanf(pprogfile,"\n"); if(dimproj!=parmode+1){ STOPMSG("Inconsistency between Parmode and DimProj\n") } fscanf(pprogfile,";;Hfreq:"); fscanf(pprogfile,"%s",freqs[0]); fscanf(pprogfile,"\n"); fscanf(pprogfile,";;Cfreq:"); fscanf(pprogfile,"%s",freqs[1]); fscanf(pprogfile,"\n"); fscanf(pprogfile,";;Nfreq:"); fscanf(pprogfile,"%s",freqs[2]); for(i=1;i<=dimensionality;i++){ fscanf(pprogfile,"\n"); fscanf(pprogfile,";;Carrier"); fscanf(pprogfile,"%d",&number); if(number!=i){ STOPMSG("wrong header format"); } fscanf(pprogfile,":"); fscanf(pprogfile,"%s",carriers[i]); if(strcmp(carriers[i],"CNST")==0) { fscanf(pprogfile,"%s",cnstnum); sprintf(ttemp,"%s %s",carriers[i],cnstnum); sprintf(carriers[i],"%s",ttemp); } } fclose(pprogfile); if((dimensionality<3)||(dimensionality>7)){ STOPMSG("This dimensionality is not supported"); } if((dimproj<2)||(dimproj>3)){ STOPMSG("This dimensionality of projections is not supported"); } if(dimproj==3){ FETCHPAR3("TD",&td3) pts3complex=td3/2; FETCHPAR3("SI",&si3) } if((megaprosa=fopen(megaprosname,"w"))==NULL) { STOPMSG("can not open multi prosa macro\n") } fprintf(megaprosa,"linpred := n\n"); fprintf(megaprosa,"baseline2 := y\n"); fprintf(megaprosa,"baseline3 := y\n"); fprintf(megaprosa,"mirrlp := n\n"); fprintf(megaprosa,"wfunction := \"sin 75\"\n"); fprintf(megaprosa,"shapes = 20\n\n"); fprintf(megaprosa,"ptspredict = 32\n\n"); fprintf(megaprosa,"phcor = %4.1f\n\n",pphhase); fprintf(megaprosa,"ptindi = %d\n\n", si1); fprintf(megaprosa,"ptindi3 = %d\n\n", si3); fprintf(megaprosa,"folder := \"choose_a_name\"\n\n"); fprintf(megaprosa,"system mkdir /nmr/data/%s/%s/$folder\n",user,name); fprintf(megaprosa,"system cp experiment.gap /nmr/data/%s/%s/$folder/experiment.gap\n",user,name); fprintf(megaprosa,"system cp parameter.gap /nmr/data/%s/%s/$folder/parameter.gap\n",user,name); fprintf(megaprosa,"system cp spectra.gap_prosa /nmr/data/%s/%s/$folder/spectra.gap\n\n",user,name); fclose(megaprosa); if(dimproj==2) { numofangles[1]=dimensionality-2; numofcombidim[1]=dimensionality-1; } else { if(dimensionality==4){ numofangles[1]=1; numofangles[2]=0; } else if(dimensionality==5){ numofangles[1]=1; numofangles[2]=1; } else { STOPMSG("not supported code 1"); } numofcombidim[1]=numofangles[1]+1; numofcombidim[2]=numofangles[2]+1; } for(i=0;itotalnumproj)){ GETINT("How many of these angle sets shall be used?",fixednumproj) } } } } else if(setuponly){ while((fixednumproj<=0)||(fixednumproj>totalnumproj)){ GETINT("How many of these angle sets shall be used?",fixednumproj) } } } /*---------------correct wrong angles-----------------*/ for(i=0;i=0;j--){ if(angles[i][j]<0.0) angles[i][j]=0.0; if(angles[i][j]>90.0) angles[i][j]=90.0; if((angles[i][j]==90.0) && (j>0)){ for(k=j-1;k>=0;k--){ angles[i][k]=0.0; } j=-1; } } } /*---------------analzsis of angles-----------------*/ for(i=0;i0.0) && (angles[i][j]<90.0)) { ptomeasure[i]*=2; nondangles[i]++; plusminus[i][j]=nondangles[i]; } else plusminus[i][j]=0; } if(pow(2,nondangles[i])!=ptomeasure[i]){ STOPMSG("bad programming 1") } } else if(dimproj==3){ nondangles3D[i][1]=0; nondangles3D[i][2]=0; if(dimensionality==4){ if((angles3D[i][0][1]>0.0) && (angles3D[i][0][1]<90.0)){ ptomeasure[i]*=2; nondangles3D[i][1]++; plusminus3D[i][0][1]=nondangles3D[i][1]; } else plusminus3D[i][0][1]=0; } else if(dimensionality==5){ if((angles3D[i][0][1]>0.0) && (angles3D[i][0][1]<90.0)){ ptomeasure[i]*=2; nondangles3D[i][1]++; plusminus3D[i][0][1]=nondangles3D[i][1]; } else plusminus3D[i][0][1]=0; if((angles3D[i][0][2]>0.0) && (angles3D[i][0][2]<90.0)){ ptomeasure[i]*=2; nondangles3D[i][2]++; plusminus3D[i][0][2]=nondangles3D[i][2]; } else plusminus3D[i][0][2]=0; } else { STOPMSG("not implemented code 17"); } if(pow(2,nondangles3D[i][1]+nondangles3D[i][2])!=ptomeasure[i]){ STOPMSG("bad programming 2") } } } if(dimproj==3){ if(dimensionality==4){ for(i=0;i0.0){ dimused3D[i][combidim[i][0][1]-1][1]=1; dimused3D[i][combidim[i][1][1]-1][1]=1; } else{ dimused3D[i][combidim[i][1][1]-1][1]=1; } k=0; for(j=0;j0.0){ dimused3D[i][combidim[i][0][kk]-1][kk]=1; dimused3D[i][combidim[i][1][kk]-1][kk]=1; } else{ dimused3D[i][combidim[i][1][kk]-1][kk]=1; } k=0; for(j=0;j1000){ STOPMSG("program error"); } } } } } else{ for(i=0;i=0;j--){ if(angles[i][j]==90.0){ dimused[i][dimensionality-3-j]=1; j=-1; } else if(angles[i][j]>0.0){ dimused[i][dimensionality-3-j]=1; } if((j==0) && (angles[i][j]<90.0)){ dimused[i][dimensionality-2]=1; } } k=0; for(j=0;j1000){ STOPMSG("program error"); } } } } if((logfile=fopen(log,"a"))==NULL){ STOPMSG("can not open logfile\n"); } fprintf(logfile,"--------------------------------------------------\n"); fprintf(logfile,"! APSY log file !\n"); fprintf(logfile,"--------------------------------------------------\n"); if((convergence) && (totalnumproj==1)) fprintf(logfile,"The following set of angles is used:\n\n"); else if (convergence) fprintf(logfile,"\nThe following %d sets of angles are used:\n\n",totalnumproj); else if (fixednumproj==1) fprintf(logfile,"The following set of angles is used:\n\n"); else fprintf(logfile,"\nThe following %d sets of angles are used:\n\n",fixednumproj); if(convergence) limit=totalnumproj; else limit=fixednumproj; dataset=expno; for(j=0;jtotalnumproj){ STOPMSG("Not enough angles given for convergence.\n") } if(transient>1) { IEXPNO } basexpno=expno; VIEWDATA STOREPAR1("FnMODE",5) trosy=0; if(dimproj==2){ if(strncmp(PLATFORM,"TOPSPIN",7)==0){ if(dimensionality==3){ FETCHPAR("CNST 41",&sweepx) FETCHPAR("CNST 42",&sweepy) } else if(dimensionality==4){ FETCHPAR("CNST 41",&sweepw) FETCHPAR("CNST 42",&sweepx) FETCHPAR("CNST 43",&sweepy) } else if(dimensionality==5){ FETCHPAR("CNST 41",&sweepv) FETCHPAR("CNST 42",&sweepw) FETCHPAR("CNST 43",&sweepx) FETCHPAR("CNST 44",&sweepy) } else if(dimensionality==6){ FETCHPAR("CNST 41",&sweepu) FETCHPAR("CNST 42",&sweepv) FETCHPAR("CNST 43",&sweepw) FETCHPAR("CNST 44",&sweepx) FETCHPAR("CNST 45",&sweepy) } else if(dimensionality==7){ FETCHPAR("CNST 41",&sweept) FETCHPAR("CNST 42",&sweepu) FETCHPAR("CNST 43",&sweepv) FETCHPAR("CNST 44",&sweepw) FETCHPAR("CNST 45",&sweepx) FETCHPAR("CNST 46",&sweepy) } } else if(strcmp(PLATFORM,"XWINNMR 3.5")==0){ if(dimensionality==3){ FETCHPAR("CNST 21",&sweepx) FETCHPAR("CNST 22",&sweepy) } else if(dimensionality==4){ FETCHPAR("CNST 21",&sweepw) FETCHPAR("CNST 22",&sweepx) FETCHPAR("CNST 23",&sweepy) } else if(dimensionality==5){ FETCHPAR("CNST 21",&sweepv) FETCHPAR("CNST 22",&sweepw) FETCHPAR("CNST 23",&sweepx) FETCHPAR("CNST 24",&sweepy) } else if(dimensionality==6){ FETCHPAR("CNST 21",&sweepu) FETCHPAR("CNST 22",&sweepv) FETCHPAR("CNST 23",&sweepw) FETCHPAR("CNST 24",&sweepx) FETCHPAR("CNST 25",&sweepy) } else if(dimensionality==7){ FETCHPAR("CNST 21",&sweept) FETCHPAR("CNST 22",&sweepu) FETCHPAR("CNST 23",&sweepv) FETCHPAR("CNST 24",&sweepw) FETCHPAR("CNST 25",&sweepx) FETCHPAR("CNST 26",&sweepy) } } else { STOPMSG("Platform not defined") } if(dimensionality==3){ sweep1 =pow(sin(0.017453*angles[transient-1][0])*sweepx,2); sweep1+=pow(cos(0.017453*angles[transient-1][0])*sweepy,2); STOREPAR("CNST 1",angles[transient-1][0]) } else if(dimensionality==4){ sweep1 =pow(sin(0.017453*angles[transient-1][1])*sweepw,2); sweep1+=pow(sin(0.017453*angles[transient-1][0])*cos(0.017453*angles[transient-1][1])*sweepx,2); sweep1+=pow(cos(0.017453*angles[transient-1][0])*cos(0.017453*angles[transient-1][1])*sweepy,2); STOREPAR("CNST 1",angles[transient-1][0]) STOREPAR("CNST 2",angles[transient-1][1]) } else if(dimensionality==5){ sweep1 =pow(sin(0.017453*angles[transient-1][2])*sweepv,2); sweep1+=pow(sin(0.017453*angles[transient-1][1])*cos(0.017453*angles[transient-1][2])*sweepw,2); sweep1+=pow(sin(0.017453*angles[transient-1][0])*cos(0.017453*angles[transient-1][1])*cos(0.017453*angles[transient-1][2])*sweepx,2); sweep1+=pow(cos(0.017453*angles[transient-1][0])*cos(0.017453*angles[transient-1][1])*cos(0.017453*angles[transient-1][2])*sweepy,2); STOREPAR("CNST 1",angles[transient-1][0]) STOREPAR("CNST 2",angles[transient-1][1]) STOREPAR("CNST 3",angles[transient-1][2]) } else if(dimensionality==6){ sweep1 =pow(sin(0.017453*angles[transient-1][3])*sweepu,2); sweep1+=pow(sin(0.017453*angles[transient-1][2])*cos(0.017453*angles[transient-1][3])*sweepv,2); sweep1+=pow(sin(0.017453*angles[transient-1][1])*cos(0.017453*angles[transient-1][2])*cos(0.017453*angles[transient-1][3])*sweepw,2); sweep1+=pow(sin(0.017453*angles[transient-1][0])*cos(0.017453*angles[transient-1][1])*cos(0.017453*angles[transient-1][2])*cos(0.017453*angles[transient-1][3])*sweepx,2); sweep1+=pow(cos(0.017453*angles[transient-1][0])*cos(0.017453*angles[transient-1][1])*cos(0.017453*angles[transient-1][2])*cos(0.017453*angles[transient-1][3])*sweepy,2); STOREPAR("CNST 1",angles[transient-1][0]) STOREPAR("CNST 2",angles[transient-1][1]) STOREPAR("CNST 3",angles[transient-1][2]) STOREPAR("CNST 4",angles[transient-1][3]) } else if(dimensionality==7){ sweep1 =pow(sin(0.017453*angles[transient-1][4])*sweept,2); sweep1+=pow(sin(0.017453*angles[transient-1][3])*cos(0.017453*angles[transient-1][4])*sweepu,2); sweep1+=pow(sin(0.017453*angles[transient-1][2])*cos(0.017453*angles[transient-1][3])*cos(0.017453*angles[transient-1][4])*sweepv,2); sweep1+=pow(sin(0.017453*angles[transient-1][1])*cos(0.017453*angles[transient-1][2])*cos(0.017453*angles[transient-1][3])*cos(0.017453*angles[transient-1][4])*sweepw,2); sweep1+=pow(sin(0.017453*angles[transient-1][0])*cos(0.017453*angles[transient-1][1])*cos(0.017453*angles[transient-1][2])*cos(0.017453*angles[transient-1][3])*cos(0.017453*angles[transient-1][4])*sweepx,2); sweep1+=pow(cos(0.017453*angles[transient-1][0])*cos(0.017453*angles[transient-1][1])*cos(0.017453*angles[transient-1][2])*cos(0.017453*angles[transient-1][3])*cos(0.017453*angles[transient-1][4])*sweepy,2); STOREPAR("CNST 1",angles[transient-1][0]) STOREPAR("CNST 2",angles[transient-1][1]) STOREPAR("CNST 3",angles[transient-1][2]) STOREPAR("CNST 4",angles[transient-1][3]) STOREPAR("CNST 5",angles[transient-1][4]) } } else if(dimproj==3){ if(strcmp(PLATFORM,"TOPSPIN",7)==0){ if(dimensionality==4){ FETCHPAR("CNST 41",&(sweep_a[1])) FETCHPAR("CNST 42",&(sweep_a[2])) FETCHPAR("CNST 43",&(sweep_a[3])) } else if(dimensionality==5){ FETCHPAR("CNST 41",&(sweep_a[1])) FETCHPAR("CNST 42",&(sweep_a[2])) FETCHPAR("CNST 43",&(sweep_a[3])) FETCHPAR("CNST 44",&(sweep_a[4])) } else{ STOPMSG("dimensionality not implemented code 26"); } } else if(strcmp(PLATFORM,"XWINNMR 3.5")==0){ if(dimensionality==4){ FETCHPAR("CNST 21",&(sweep_a[1])) FETCHPAR("CNST 22",&(sweep_a[2])) FETCHPAR("CNST 23",&(sweep_a[3])) } else if(dimensionality==5){ FETCHPAR("CNST 21",&(sweep_a[1])) FETCHPAR("CNST 22",&(sweep_a[2])) FETCHPAR("CNST 23",&(sweep_a[3])) FETCHPAR("CNST 24",&(sweep_a[4])) } else{ STOPMSG("dimensionality not implemented code 26"); } } else { STOPMSG("Platform not defined") } if(dimensionality==4){ sweep1 =pow(sin(0.017453*angles3D[transient-1][0][1])*sweep_a[combidim[transient-1][0][1]],2); sweep1+=pow(cos(0.017453*angles3D[transient-1][0][1])*sweep_a[combidim[transient-1][1][1]],2); sweep3 =pow(sweep_a[combidim[transient-1][0][2]],2); STOREPAR("CNST 1", angles3D[transient-1][0][1]) } else if(dimensionality==5){ sweep1 =pow(sin(0.017453*angles3D[transient-1][0][1])*sweep_a[combidim[transient-1][0][1]],2); sweep1+=pow(cos(0.017453*angles3D[transient-1][0][1])*sweep_a[combidim[transient-1][1][1]],2); sweep3 =pow(sin(0.017453*angles3D[transient-1][0][2])*sweep_a[combidim[transient-1][0][2]],2); sweep3+=pow(cos(0.017453*angles3D[transient-1][0][2])*sweep_a[combidim[transient-1][1][2]],2); STOREPAR("CNST 1", angles3D[transient-1][0][1]) STOREPAR("CNST 2", angles3D[transient-1][0][2]) } } sweep1=sqrt(sweep1); STOREPAR1("SWH",sweep1) STOREPAR("IN 1",1.0/sweep1); STOREPAR1("OFFSET",0.0) if(dimproj==3) { sweep3=sqrt(sweep3); STOREPAR3("SWH",sweep3) STOREPAR3("OFFSET",0.0) } if((trosydim!=0) && (dimused[transient-1][dimensionality-2]==1)){ trosy=1; STOREPAR1("FnMODE",6) } numofp=ptomeasure[transient-1]; /*----------------------------------creation of ZGoptns-------------------------------------------*/ for(k=1;k<=numofp;k++){ if(k>1){ IEXPNO } if(dimproj==2){ for(i=0;i<=30;i++){ phasesused[i]='0'; } sprintf(zgoptns,"-DP%s",dimusedlett[transient-1]+nondangles[transient-1]); for(j=0;j<=nondangles[transient-1];j++){ if(tppi[k-1][5-nondangles[transient-1]+j]==1) phasesused[dimusedlett[transient-1][j]-'y'+dimensionality-2]='1'; if(phaseoverlap[dimusedlett[transient-1][j]-'y'+dimensionality-2]=='0'){ zgadd[3]=dimusedlett[transient-1][j]+'A'-'a'; if(tppi[k-1][5-nondangles[transient-1]+j]==1) strcat(zgoptns,zgadd); } } if(poexists){ j=0; i=0; strcat(zgoptns," -D"); while(j0) && (peaksfound[transient]<=peaksfound[transient-1])) { apsycomplete=1; fprintf(logfile,"\nConvergence was reached in round %d. Calculating final peak lists.\n",transient); } else { fprintf(logfile,"\nConvergence not reached in round %d. Measuring next angle set.\n",transient); } fprintf(logfile,"\n--------------------------------------------------------\n"); fclose(logfile); } if(fixednumproj){ if(transient==fixednumproj) apsycomplete=1; } if(fullrun){ if((logfile=fopen(log,"a"))==NULL){ STOPMSG("can not open logfile\n"); } fprintf(logfile,"\n-------------------------------\n"); fprintf(logfile,"\nSummary:\n"); fprintf(logfile,"\n-------------------------------\n\n"); for(i=1;i<=transient;i++){ fprintf(logfile,"Round %d: %d Peaks\n",i,peaksfound[i]); } if ((convergence)&&(apsycomplete)) fprintf(logfile,"Converged with round %d\n",transient); if (fixednumproj>1) fprintf(logfile,"Totally %d rounds were run\n",transient); if (fixednumproj==1) fprintf(logfile,"1 round was run\n"); if ((convergence)&&(apsycomplete)) { fprintf(logfile,"\nThe final %d-dimensional peak list was written:\n",dimensionality); fprintf(logfile,"%s/result.peaks\n",mainpath); } fclose(logfile); } if((communfile=fopen(communication,"r"))!=NULL){ fclose(communfile); STOPMSG("resistant term 2"); } } if((logfile=fopen(log,"a"))==NULL){ STOPMSG("can not open logfile\n"); } fprintf(logfile,"\n-------------------------------\n"); fprintf(logfile,"\nAPSY run ended successfully\n"); fprintf(logfile,"\n-------------------------------\n"); fclose(logfile); QUIT