#ifndef _IO_H #define _IO_H /** @ Global variables for I/O operations like filenames etc. */ /*static char mastername[1024]; static char prefixname[1024]; static ts_bool restore=0; static char tape[1024]; */ int force_from_tape; typedef struct { long int nshell; long int ncxmax; long int ncymax; long int nczmax; long int npoly; long int nmono; long int nfil; long int nfono; long int R_nucleus; long int pswitch; char *multiprocessing; long int brezveze0; long int brezveze1; long int brezveze2; ts_double xk0; ts_double dmax; ts_double stepsize; ts_double kspring; ts_double pressure; long int iterations; long int inititer; long int mcsweeps; long int quiet; } ts_tape; typedef struct{ ts_int force_from_tape; ts_int reset_iteration_count; char path[1024]; //path where all files should be added char output_fullfilename[1024]; //name of the master file char dump_fullfilename[1024]; //name of the dump file char tape_fullfilename[1024]; //name of the tape file } ts_args; ts_args command_line_args; ts_bool parse_args(int argc, char **argv); /** @brief Prints the position of vertices for the whole list * * The function is meant more or less as a debug tool, but can be used in production * environment aswell. * the output is in form of idx: x y z * @param *vlist is a structure holding information on vertex list. * @returns TS_SUCCESS on successful execution, TS_FAIL otherwise. */ ts_bool print_vertex_list(ts_vertex_list *vlist); /** @brief Prints the neighbours of all the vertices * * The function is meant more or less as a debug tool, but can be used in production * environment aswell. * the output is in form of idx(number of neighbours): (x1,y1,z1) (x2,y2,z2) ... * @param *vlist is a structure holding information on vertex list. * @returns TS_SUCCESS on successful execution, TS_FAIL otherwise. */ ts_bool print_vertex_neighbours(ts_vertex_list *vlist); /** @brief Function outputs the vetex list file to comply to old fortran format * * @param *vlist is a list of vertices * @param *filename is a name of the output file to be created (note that if the file already * exists it will be overwritten. */ ts_bool write_vertex_fcompat_file(ts_vertex_list *vlist,ts_char *filename); ts_bool fprint_vertex_list(FILE *fh,ts_vertex_list *vlist); ts_bool fprint_tristar(FILE *fh, ts_vesicle *vesicle); ts_bool fprint_triangle_list(FILE *fh, ts_vesicle *vesicle); ts_bool fprint_vertex_data(FILE *fh,ts_vertex_list *vlist); ts_bool fprint_bonds(FILE *fh,ts_vesicle *vesicle); ts_bool write_dout_fcompat_file(ts_vesicle *vesicle, ts_char *filename); ts_bool read_tape_fcompat_file(ts_vesicle *vesicle, ts_char *filename); /** @brief Outputs file in vtk format, compatible with paraview. * * @param *vlist is a list of vertices * @param *filename is a name of the output file. If exists, it will be overwritten * @param *text is a description line (max. 255 characters) to be included in the file */ ts_bool write_vertex_vtk_file(ts_vesicle *vesicle,ts_char *filename, ts_char *text); ts_bool write_vertex_xml_file(ts_vesicle *vesicle, ts_uint timestepno); ts_bool write_master_xml_file(ts_char *filename); ts_tape *parsetape(char *filename); ts_bool tape_free(ts_tape *tape); ts_bool dump_state(ts_vesicle *vesicle, ts_uint iteration); ts_vesicle *restore_state(ts_uint *iteration); #endif