X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fmorpheus.git;a=blobdiff_plain;f=main.c;h=2f1cff56184764e4f2b48a652859d1bed21c0b85;hp=d171490c9286ba63af063212c3ca7db0ea01db66;hb=HEAD;hpb=8ce4b66631e6403dc019511c73a8ef24e6a6225d diff --git a/main.c b/main.c index d171490..2f1cff5 100644 --- a/main.c +++ b/main.c @@ -11,12 +11,14 @@ * - Maik Haeberlen. Diplomarbeit, Universitaet Augsburg. */ +#define _GNU_SOURCE #include #include #include #include #include #include +#include /* important defines */ #include "defines.h" @@ -48,9 +50,13 @@ int usage() printf("-r \t pressure range from amorphous SiCx (default %d)\n",DEFAULT_A_P_RANGE); printf("-f \t faktor for pressure from amorphous SiCx (default %f)\n",DEFAULT_A_P_FAKTOR); printf("-p \t p0 for probability of cell getting amorph (default %f)\n",DEFAULT_A_P_P0); - printf("-C \t C start concentration (default %d)\n",DEFAULT_C_DIST_START_CONC); + printf("-C \t C disribution start concentration (default %d)\n",DEFAULT_C_DIST_START_CONC); printf("-S \t slope of linear C distribution (default %d)\n",DEFAULT_C_DIST_SLOPE); - puts("-R \t read random datat from file (default not used)"); + printf("-b \t initial C concentration (default %d)\n",DEFAULT_C_C0); + puts("-R \t read random data from file (default not used)"); + puts("-D \t dump cell info into (default not used)"); + puts("-L \t load cell info and display it (default no)"); + puts("-n \t do not wait for user interaction (default no)"); return -23; } @@ -66,6 +72,74 @@ int make_cryst(cell *cell) return 23; } +int load_from_file(char *file,display *display) +{ + int load_file_fd; + + if((load_file_fd=open(file,O_RDONLY))<0) + { + puts("cannot open load file"); + return -23; + } + if(read(load_file_fd,&(display->max_x),sizeof(u32))max_y),sizeof(u32))max_z),sizeof(u32))cell_p,display->max_x*display->max_y*display->max_z*sizeof(cell))max_x*display->max_y*display->max_z*sizeof(cell)) + { + puts("failed reading cell info from file"); + return -23; + } + close(load_file_fd); + puts("loaded file"); + return 23; +} + +int save_to_file(char *file,display *display) +{ + int save_file_fd; + + if((save_file_fd=open(file,O_CREAT|O_WRONLY|O_TRUNC))<0) + { + puts("cannot open save file"); + return -23; + } + if(write(save_file_fd,&(display->max_x),sizeof(u32))max_y),sizeof(u32))max_z),sizeof(u32))cell_p,display->max_x*display->max_y*display->max_z*sizeof(cell))!=display->max_x*display->max_y*display->max_z*sizeof(cell)) + { + puts("saving file failed"); + return -23; + } + close(save_file_fd); + puts("saved file"); + return 23; +} + int distrib_c_conc(cell *cell_p,int c_c0,int c_slope,u32 c_conc,u32 x_max,u32 y_max,u32 z_max) { int i,j; @@ -181,6 +255,9 @@ int main(int argc,char **argv) u32 display_x,display_y,display_z; /* intercept point of diplayed areas */ u32 display_refresh_rate; /* refresh rate for display */ int quit=0; /* continue/quit status */ + char save_file[MAX_CHARS_SAVE_FILE]; + char load_file[MAX_CHARS_LOAD_FILE]; + unsigned char no_wait; printfd("debug: sizeof my u32 variable: %d\n",sizeof(u32)); printfd("debug: sizeof my cell struct: %d\n",sizeof(cell)); @@ -203,6 +280,9 @@ int main(int argc,char **argv) display_z=z_cell/2; display_refresh_rate=DEFAULT_DISPLAY_REF_RATE; strcpy(random_file,""); + strcpy(save_file,""); + strcpy(load_file,""); + no_wait=0; /* parse command args */ for(i=1;i