From 267db570e1ff394eca2f26ace11188e3b113577e Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@fe.uni-lj.si>
Date: Thu, 11 Sep 2014 11:32:49 +0000
Subject: [PATCH] Command line parameters parsing works. Also, filenames and directories are customizable now.

---
 src/main.c     |    6 +++---
 src/timestep.c |   19 ++++++++++++-------
 src/io.c       |   17 ++++++++++-------
 src/sh.c       |    9 ++++++---
 4 files changed, 31 insertions(+), 20 deletions(-)

diff --git a/src/io.c b/src/io.c
index d8c1009..00f6db5 100644
--- a/src/io.c
+++ b/src/io.c
@@ -21,7 +21,7 @@
 
     /* save current state with wrong pointers. Will fix that later */
     ts_uint i,j,k;
-    FILE *fh=fopen("dump.bin","wb");
+    FILE *fh=fopen(command_line_args.dump_fullfilename,"wb");
 
     /* dump vesicle */
     fwrite(vesicle, sizeof(ts_vesicle),1,fh);
@@ -180,10 +180,10 @@
 /** RESTORE DUMP FROM DISK **/
 ts_vesicle *restore_state(ts_uint *iteration){
     ts_uint i,j,k;
-    FILE *fh=fopen("dump.bin","rb");
+    FILE *fh=fopen(command_line_args.dump_fullfilename,"rb");
 
     struct stat sb;
-    if (stat("dump.bin", &sb) == -1) {
+    if (stat(command_line_args.dump_fullfilename, &sb) == -1) {
         //dump file does not exist.
         return NULL;
     }
@@ -418,7 +418,7 @@
                 vesicle->filament_list->poly[i]->blist->bond[j]->vtx2=vesicle->filament_list->poly[i]->vlist->vtx[idx];
         }
     }
-    vesicle->tape=parsetape("tape");
+    vesicle->tape=parsetape(command_line_args.tape_fullfilename);
 // recreating space for cells // 
     vesicle->clist=init_cell_list(vesicle->tape->ncxmax, vesicle->tape->ncymax, vesicle->tape->nczmax, vesicle->tape->stepsize);
 	vesicle->clist->max_occupancy=8;
@@ -745,7 +745,7 @@
         }
 
 	fprintf(fh,"<?xml version=\"1.0\"?>\n<VTKFile type=\"Collection\" version=\"0.1\" byte_order=\"LittleEndian\" compressor=\"vtkZLibDataCompressor\">\n<Collection>");
-	DIR *dir = opendir(".");
+	DIR *dir = opendir(command_line_args.path);
 	if(dir){
 		struct dirent *ent;
         tstep=0;
@@ -774,10 +774,13 @@
 	ts_bond_list *blist=vesicle->blist;
 	ts_vertex **vtx=vlist->vtx;
     ts_uint i,j;
-    	char filename[255];
+    	char filename[10000];
+        char just_name[255];
 	FILE *fh;
+        strcpy(filename,command_line_args.path);
+    	sprintf(just_name,"timestep_%.6u.vtu",timestepno);
+        strcat(filename,just_name);
 
-    	sprintf(filename,"timestep_%.6u.vtu",timestepno);
 	fh=fopen(filename, "w");
 	if(fh==NULL){
 		err("Cannot open file %s for writing");
diff --git a/src/main.c b/src/main.c
index 8a3a550..7d3726a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -32,14 +32,14 @@
 		ts_fprintf(stdout,"************************************************\n");
 		ts_fprintf(stdout,"**** Generating initial geometry from tape *****\n");
 		ts_fprintf(stdout,"************************************************\n\n");
-		tape=parsetape("tape");
+		tape=parsetape(command_line_args.tape_fullfilename);
 		vesicle=create_vesicle_from_tape(tape);
 	} else {
 
 		ts_fprintf(stdout,"**********************************************************************\n");
 		ts_fprintf(stdout,"**** Recreating vesicle from dump file and continuing simulation *****\n");
 		ts_fprintf(stdout,"**********************************************************************\n\n");
-		tape=parsetape("tape");
+		tape=parsetape(command_line_args.tape_fullfilename);
 		vesicle=restore_state(&start_iteration);
         if(vesicle==NULL){
             ts_fprintf(stderr, "Dump file does not exist or is not a regular file! Did you mean to invoke trisurf with --force-from-tape option?\n\n");
@@ -90,7 +90,7 @@
 	}
 
 	run_simulation(vesicle, tape->mcsweeps, tape->inititer, tape->iterations, start_iteration);
-	write_master_xml_file("test.pvd");
+	write_master_xml_file(command_line_args.output_fullfilename);
 	write_dout_fcompat_file(vesicle,"dout");
 	vesicle_free(vesicle);
 	tape_free(tape);
diff --git a/src/sh.c b/src/sh.c
index f5c310a..9cb623e 100644
--- a/src/sh.c
+++ b/src/sh.c
@@ -2,7 +2,8 @@
 #include<stdlib.h>
 #include "general.h"
 #include "sh.h"
-
+#include "io.h"
+#include <string.h>
 
 
 ts_spharm *sph_init(ts_vertex_list *vlist, ts_uint l){
@@ -402,8 +403,10 @@
 ts_bool saveAvgUlm2(ts_vesicle *vesicle){
 
 	FILE *fh;
-	
-	fh=fopen("sph2out.dat", "w");
+    char filename[10000];
+    strcpy(filename, command_line_args.path);
+    strcat(filename, "sph2out.dat");
+	fh=fopen(filename, "w");
 	if(fh==NULL){
 		err("Cannot open file %s for writing");
 		return TS_FAIL;
diff --git a/src/timestep.c b/src/timestep.c
index 98b47dc..fcb0ff1 100644
--- a/src/timestep.c
+++ b/src/timestep.c
@@ -14,7 +14,7 @@
 #include "vesicle.h"
 #include<gsl/gsl_complex.h>
 #include<gsl/gsl_complex_math.h>
-
+#include<string.h>
 
 ts_bool run_simulation(ts_vesicle *vesicle, ts_uint mcsweeps, ts_uint inititer, ts_uint iterations, ts_uint start_iteration){
 	ts_uint i, j,k,l,m;
@@ -22,15 +22,19 @@
 	ts_double l1,l2,l3,volume=0.0,area=0.0,vmsr,bfsr, vmsrt, bfsrt;
 	ts_ulong epochtime;
 	FILE *fd1,*fd2=NULL;
-// 	char filename[255];
-	FILE *fd=fopen("statistics.csv","w");
+ 	char filename[10000];
+    strcpy(filename,command_line_args.path);
+    strcat(filename,"statistics.csv");
+	FILE *fd=fopen(filename,"w");
 	if(fd==NULL){
 		fatal("Cannot open statistics.csv file for writing",1);
 	}
 	fprintf(fd, "Epoch OuterLoop VertexMoveSucessRate BondFlipSuccessRate Volume Area lamdba1 lambda2 lambda3 Kc(2-9) Kc(6-9) Kc(2-end) Kc(3-6)\n");
 
 	 if(vesicle->sphHarmonics!=NULL){
-		fd2=fopen("ulm2.csv","w");
+        strcpy(filename,command_line_args.path);
+        strcat(filename,"ulm2.csv"); 
+		fd2=fopen(filename,"w");
 		if(fd2==NULL){
 			fatal("Cannot open ulm2.csv file for writing",1);
 		}
@@ -70,7 +74,7 @@
             dump_state(vesicle,i);
 		if(i>=inititer){
 			write_vertex_xml_file(vesicle,i-inititer);
-			write_master_xml_file("test.pvd");
+			write_master_xml_file(command_line_args.output_fullfilename);
 			epochtime=get_epoch();			
 			gyration_eigen(vesicle, &l1, &l2, &l3);
 			vesicle_volume(vesicle); //calculates just volume. Area is not added to ts_vesicle yet!
@@ -86,8 +90,9 @@
                 kc2=calculateKc(vesicle, 6,9);
                 kc3=calculateKc(vesicle, 2,vesicle->sphHarmonics->l);
                 kc4=calculateKc(vesicle, 3,6);
-            
-				fd1=fopen("state.dat","w");
+                strcpy(filename,command_line_args.path);
+                strcat(filename,"state.dat");  
+				fd1=fopen(filename,"w");
 				fprintf(fd1,"%e %e\n",vesicle->volume, getR0(vesicle));
 				for(k=0;k<vesicle->vlist->n;k++){
 					fprintf(fd1,"%e %e %e %e %e\n",

--
Gitblit v1.9.3