#include "common.h" readcoords(iniat,layers,file) struct iniat *iniat; struct layers *layers; struct file *file; { char fname[123],buf[160]; int i,n,nat,t; real a[3]; for(i=1;i<=layers->Nlayers;i++) { strcpy(fname,file->coord); if (i != 1) { sprintf(fname,"%s.%d",fname,i); } if (debug) printf("Opening coord file %s\n",fname); file->fpco=fopen(fname,"r"); if (file->fpco==NULL) { fprintf(fpdebug,"readcoords.c: Can't open file %s\n",fname); if (i==1) { sprintf(fname,"%s.1",fname); file->fpco=fopen(fname,"r"); if (file->fpco==NULL) fprintf(fpdebug,"readcoords.c: Can't open file %s, either\n",fname); } } nat=0; while(fgets(buf,160,file->fpco)) { if (buf[0]=='%' || buf[0]=='!' || buf[0] == '\n') continue; n=sscanf(buf,"%f %f %f %d",a+0,a+1,a+2,&t); if (n<3) break; if (n==3) t=1; iniat[iniind(i-1,0,nat)].x=a[0]; iniat[iniind(i-1,0,nat)].y=a[1]; iniat[iniind(i-1,0,nat)].z=a[2]; iniat[iniind(i-1,0,nat)].type=t; if (maxdebug) fprintf(fpdebug,"Coord #%d %g %g %g %d\n",nat,a[0],a[1],a[2],t); nat++; if (nat > layers->Natomsmax) { fprintf(fpdebug,"Too many atoms, you should increase layers->Natomsmax from %d\n",layers->Natomsmax); exit(0); } } DEBUG(iniat[0].x); fprintf(file->fpo,"Read in %d atom coordinates in layer %d\n",nat,i); layers->layer[i-1].natoms=nat; } }