#include #include #define F77NAME(x) x## _ #define F77_NAME(name) name## __ struct linearad_common { double statelft,statergt,alpha,beta,ca,la,cr,lr,lc; }; extern struct linearad_common F77NAME(linearad); void readinput(int argc, char** argv, int* ncells, int *gcells, int* nsteps, int* stpstp, double* tmax, double* tstp, int* nonlin_f) { FILE *fpr; char temp[30]; double value; fpr=fopen(argv[1], "r"); for(;fscanf(fpr, "%s", temp)!= EOF;) { if(strcmp(temp, "Main")==0); else if(strcmp(temp, "statelft")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", &value); F77NAME(linearad).statelft = value; } else if(strcmp(temp, "statergt")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", &value); F77NAME(linearad).statergt = value; } else if(strcmp(temp, "alpha")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", &value); F77NAME(linearad).alpha = value; } else if(strcmp(temp, "beta")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", &value); F77NAME(linearad).beta = value; } else if(strcmp(temp, "ca")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", &value); F77NAME(linearad).ca = value; } else if(strcmp(temp, "la")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", &value); F77NAME(linearad).la = value; } else if(strcmp(temp, "cr")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", &value); F77NAME(linearad).cr = value; } else if(strcmp(temp, "lr")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", &value); F77NAME(linearad).lr = value; } else if(strcmp(temp, "lc")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", &value); F77NAME(linearad).lc = value; } else if(strcmp(temp, "ncells")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%d", ncells); } else if(strcmp(temp, "gcells")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%d", gcells); } else if(strcmp(temp, "nsteps")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%d", nsteps); } else if(strcmp(temp, "stpstp")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%d", stpstp); } else if(strcmp(temp, "tmax")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", tmax); } else if(strcmp(temp, "tstp")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%lf", tstp); } else if(strcmp(temp, "nonlin_f")==0) { fscanf(fpr, "%s", temp); sscanf(temp, "%d", nonlin_f); } } fclose(fpr); } void writeout(int ncells, int ifirst, int ilast, double *x, char* filename) { FILE *fpw; int ic; fpw=fopen(filename,"w"); for(ic=ifirst;ic<=ilast;ic++) { fprintf(fpw, "%lf %lf %lf %lf\n", x[ic], x[ic+ncells], x[ic+2*ncells], x[ic+3*ncells]); } fclose(fpw); } void readtrans(int ifirst, int ilast, int totalt, double *trans, unsigned int fit) { FILE *fpr; char filename[20]; int it,ic,n; double temp; n=ilast-ifirst+2; sprintf(filename, "trans9fit%u.dat", fit); fpr=fopen(filename,"r"); for(it=0;it