#include #include #include #define fdiv(i1,i2) ((float) i1) / ((float) i2) #define htan(x) (exp(x)-exp(-x))/(exp(x)+exp(-x)) /* Written by Robin de Graaf and Frans Mulder Bijvoet center for biomolecular research University of Utrecht, the Netherlands http://www.nmr.chem.uu.nl/bijvoet.html Major modification: new arrays amp2/phs2 run really chronlogically and additional offset of the entire pulse can be achieved through an extra linear phase ramp For the Varian (Pulsetool) you can simply use nawk '{ if(NR>1) print $2, $1*10.23, "1.0" }' < Bruker_shape > Varian_shape */ #define MAX_ARRAY 16384 main() { float diff, temp, scale, R, phi, theta[MAX_ARRAY]; float pi, Tp, f1, phs[MAX_ARRAY], amp[MAX_ARRAY],cutoff; float phs2[MAX_ARRAY], amp2[MAX_ARRAY]; float wc, w1, deltawc, deltaw, delta, phslock[MAX_ARRAY]; float v1c, vc, v1, deltavc, deltav, pw90; float factor, amplitude, plength, offset; int i, nplock, np, nelem; char fname[255]; FILE *fp; /* READING INPUT FROM TERMINAL */ printf("\n OUTPUT FILE : "); scanf("%s",fname); fp=fopen(fname,"w"); if (fp==NULL) printf("Error opening file\n"); printf("\n ADIABATIC PULSE PATTERN USING tanh/TAN "); printf("\n GIVE VALUE FOR R : "); i = scanf("%f",&R); printf("\n GIVE VALUE FOR OFFSET OF ENTIRE PULSE IN HZ: "); i = scanf("%f",&offset); printf("\n GIVE LENGTH OF ENTIRE PULSE IN MS: "); i = scanf("%f",&plength); plength = plength/1000; printf("\n GIVE # OF STEPS FOR EACH RAMP (MAX = 16384) : "); i = scanf("%d",&np); printf("\n GIVE NUMBER OF POINTS DURING SPIN-LOCK : "); i = scanf("%d",&nplock); /* INITIALISATION */ pi = 4*atan(1); cutoff = 50.0; nelem = np*2 + nplock; for (i=0;i