#saves function funcnum (values at vertices in verlist) in to file fname. #the file is of the format: #numVertices #lengthOfVertex v_1 v_2 .. v_lenthofvertex value LocSaveFunc:=proc(T,funcnum,verlist,fname) local fd,i,vertex; fd:=fopen(fname,WRITE); fprintf(fd,"%d\n",nops(verlist)); for vertex in verlist do fprintf(fd,"%d ",nops(vertex)); for i in vertex do fprintf(fd,"%d ",i); end do; fprintf(fd,"%20.20g\n",T[vertex,funcnum]); end do; fclose(fd); end; #reads function saved by LocSaveFunc into funcnum #returns list of vertices LocReadFunc:=proc(T,funcnum,fname) local verlist,i,j,fd,numvers,numnums,vertex,n; verlist:=[]; fd:=fopen(fname,READ); numvers:=fscanf(fd,"%d\n")[1]; for i from 1 to numvers do numnums:=fscanf(fd,"%d ")[1]; vertex:=[]; for j from 1 to numnums do n:=fscanf(fd,"%d ")[1]; vertex:=[op(vertex),n]; end do; T[vertex,funcnum]:=fscanf(fd,"%g\n")[1]; verlist:=[op(verlist),vertex]; end do; fclose(fd); return(verlist); end; #saves a function. format is #level #value #the values are ordered by the ordering defined by the vertices funciton saveFunc:=proc(T,funcnum,level,nfname) local fd,vers,vertex,i,fname; fname:=nfname; fd:=fopen(fname,WRITE); fprintf(fd,"%d\n",level); vers:=vertices(level); for vertex in vers do #fprintf(fd,"%d ",nops(vertex)); #for i in vertex do # fprintf(fd,"%d ",i); #end do; #print(T[vertex,funcnum]); fprintf(fd,"%20.20g\n",T[vertex,funcnum]); end do; fclose(fd); end; #reads in a function saved by saveFunc. the return value is the level #of the values read in readFunc:=proc(T,funcnum,nfname) local fd,fname,level,vers,vertex; fname:=nfname; fd:=fopen(fname,READ); level:=fscanf(fd,"%d\n")[1]; vers:=vertices(level); for vertex in vers do T[vertex,funcnum]:=fscanf(fd,"%g\n")[1]; end do; fclose(fd); RETURN(level); end; #writes out a matrix to fname saveMatr:=proc(M,rows,columns,fname) local fd,i,j; fd:=fopen(fname,WRITE); fprintf(fd,"%d\n",rows); fprintf(fd,"%d\n",columns); for i from 1 to rows do for j from 1 to columns do fprintf(fd,"%20.20g\n",M[i,j]); end do; end do; fclose(fd); RETURN(rows*columns); end; #reads in a matrix saved by saveMatr readMatr:=proc(fname) local M,rows,columns,fd,i,j; fd:=fopen(fname,READ); rows:=fscanf(fd,"%d\n")[1]; columns:=fscanf(fd,"%d\n")[1]; M:=matrix(rows,columns); for i from 1 to rows do for j from 1 to columns do M[i,j]:=fscanf(fd,"%g\n")[1]; end do; end do; fclose(fd); RETURN(M); end;