From 40aa5b1bea828225a582b191600996f0674b2760 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Sat, 07 Dec 2013 14:14:28 +0000
Subject: [PATCH] Finished io.c. Changes made also in poly.c to accomodate unique indexing of all vertices for purpose of visualization

---
 src/poly.c |   19 +++++++--
 src/io.c   |   53 ++++++++++++++++++++++++--
 src/tape   |    8 ++--
 3 files changed, 68 insertions(+), 12 deletions(-)

diff --git a/src/io.c b/src/io.c
index aaac102..81ab298 100644
--- a/src/io.c
+++ b/src/io.c
@@ -207,7 +207,7 @@
 	ts_vertex_list *vlist=vesicle->vlist;
 	ts_bond_list *blist=vesicle->blist;
 	ts_vertex **vtx=vlist->vtx;
-    ts_uint i;
+    ts_uint i,j;
     	char filename[255];
 	FILE *fh;
 
@@ -218,29 +218,69 @@
 		return TS_FAIL;
 	}
 	/* Here comes header of the file */
+
+	//find number of extra vtxs and bonds of polymeres
+	ts_uint monono=0, polyno=0;
+	ts_bool poly=0;
+	if(vesicle->poly_list!=NULL){
+		if(vesicle->poly_list->poly[0]!=NULL){
+		polyno=vesicle->poly_list->n;
+		monono=vesicle->poly_list->poly[0]->vlist->n;
+		poly=1;
+		}
+	}
 	fprintf(fh, "<?xml version=\"1.0\"?>\n<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" compressor=\"vtkZLibDataCompressor\">\n <UnstructuredGrid>\n");
-    fprintf(fh, "<Piece NumberOfPoints=\"%u\" NumberOfCells=\"%u\">\n",vlist->n, blist->n);
+    fprintf(fh, "<Piece NumberOfPoints=\"%u\" NumberOfCells=\"%u\">\n",vlist->n+monono*polyno, blist->n+monono*polyno);
     fprintf(fh,"<PointData Scalars=\"scalars\">\n<DataArray type=\"Int64\" Name=\"scalars\" format=\"ascii\">");
    	for(i=0;i<vlist->n;i++){
 		fprintf(fh,"%u ",vtx[i]->idx);
     }
+	//polymeres
+	if(poly){
+		for(i=0;i<vesicle->poly_list->n;i++){
+			for(j=0;j<vesicle->poly_list->poly[i]->vlist->n;j++){
+				fprintf(fh,"%u ", vesicle->poly_list->poly[i]->vlist->vtx[j]->idx);
+			}
+		}
+	}
 
     fprintf(fh,"</DataArray>\n</PointData>\n<CellData>\n</CellData>\n<Points>\n<DataArray type=\"Float64\" Name=\"Koordinate tock\" NumberOfComponents=\"3\" format=\"ascii\">\n");
 	for(i=0;i<vlist->n;i++){
 		fprintf(fh,"%e %e %e\n",vtx[i]->x,vtx[i]->y, vtx[i]->z);
+	}
+	//polymeres
+	if(poly){
+		for(i=0;i<vesicle->poly_list->n;i++){
+			for(j=0;j<vesicle->poly_list->poly[i]->vlist->n;j++){
+				fprintf(fh,"%e %e %e\n", vesicle->poly_list->poly[i]->vlist->vtx[j]->x,vesicle->poly_list->poly[i]->vlist->vtx[j]->y, vesicle->poly_list->poly[i]->vlist->vtx[j]->z );
+			}
+		}
 	}
 
     fprintf(fh,"</DataArray>\n</Points>\n<Cells>\n<DataArray type=\"Int64\" Name=\"connectivity\" format=\"ascii\">");
 	for(i=0;i<blist->n;i++){
 			fprintf(fh,"%u %u\n",blist->bond[i]->vtx1->idx,blist->bond[i]->vtx2->idx);
 	}
+	//polymeres
+	if(poly){
+		for(i=0;i<vesicle->poly_list->n;i++){
+			for(j=0;j<vesicle->poly_list->poly[i]->blist->n;j++){
+				fprintf(fh,"%u %u\n", vesicle->poly_list->poly[i]->blist->bond[j]->vtx1->idx,vesicle->poly_list->poly[i]->blist->bond[j]->vtx2->idx);
+			}
+	//grafted bonds
+		fprintf(fh,"%u %u\n", vesicle->poly_list->poly[i]->grafted_vtx->idx, vesicle->poly_list->poly[i]->vlist->vtx[0]->idx);
+		}
+
+	}
+	
+
     fprintf(fh,"</DataArray>\n<DataArray type=\"Int64\" Name=\"offsets\" format=\"ascii\">");
-    for (i=2;i<blist->n*2+1;i+=2){
+    for (i=2;i<(blist->n+monono*polyno)*2+1;i+=2){
     fprintf(fh,"%u ",i);
     }
     fprintf(fh,"\n");
     fprintf(fh,"</DataArray>\n<DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n");
-     for (i=0;i<blist->n;i++){
+     for (i=0;i<blist->n+monono*polyno;i++){
         fprintf(fh,"3 ");
     }
 
@@ -303,6 +343,8 @@
     long int brezveze2=1;
     ts_double xk0=25.0, dmax=1.67,stepsize=0.15;
 	long int iter=1000, init=1000, mcsw=1000;
+
+
     cfg_opt_t opts[] = {
         CFG_SIMPLE_INT("nshell", &nshell),
         CFG_SIMPLE_INT("npoly", &npoly),
@@ -352,6 +394,9 @@
     cfg_free(cfg);
 	free(buf);
   //  fprintf(stderr,"NSHELL=%u\n",vesicle->nshell);
+
+			
+
     return vesicle;
 
 }
diff --git a/src/poly.c b/src/poly.c
index 20529e2..05566d0 100644
--- a/src/poly.c
+++ b/src/poly.c
@@ -26,7 +26,7 @@
 ts_poly_list *init_poly_list(ts_uint n_poly, ts_uint n_mono, ts_vertex_list *vlist){
 	ts_poly_list *poly_list=(ts_poly_list *)calloc(1,sizeof(ts_poly_list));
 	poly_list->poly	= (ts_poly **)calloc(n_poly,sizeof(ts_poly *));
-	ts_uint i=0,j=0;
+	ts_uint i=0,j=0, idx;
 	ts_uint gvtxi;
 	ts_double xnorm,ynorm,znorm,normlength;
 
@@ -49,9 +49,9 @@
 		ynorm=0.0;
 		znorm=0.0;
 		for (j=0;j<poly_list->poly[i]->grafted_vtx->tristar_no;j++){
-			xnorm+=poly_list->poly[i]->grafted_vtx->tristar[j]->xnorm;
-			ynorm+=poly_list->poly[i]->grafted_vtx->tristar[j]->ynorm;
-			znorm+=poly_list->poly[i]->grafted_vtx->tristar[j]->znorm;	
+			xnorm-=poly_list->poly[i]->grafted_vtx->tristar[j]->xnorm;
+			ynorm-=poly_list->poly[i]->grafted_vtx->tristar[j]->ynorm;
+			znorm-=poly_list->poly[i]->grafted_vtx->tristar[j]->znorm;	
 		}
 		normlength=sqrt(xnorm*xnorm+ynorm*ynorm+znorm*znorm);
 		xnorm=xnorm/normlength;
@@ -65,6 +65,17 @@
 		}
 	}
 
+		//index correction for polymeres. Important, since each vtx has to have unique id
+	idx=vlist->n;
+	for(i=0;i<n_poly;i++){
+		for(j=0;j<n_mono;j++,idx++){
+
+			poly_list->poly[i]->vlist->vtx[j]->idx=idx;
+
+		}
+	}
+
+
 	return poly_list;
 }
 
diff --git a/src/tape b/src/tape
index e0d0dee..55973b6 100644
--- a/src/tape
+++ b/src/tape
@@ -10,7 +10,7 @@
 
 ####### Polymer definitions ###########
 # npoly is a number of polymers attached to npoly distinct vertices on vesicle
-npoly=1000
+npoly=10
 # nmono is a number of monomers in each polymere
 nmono=15
 
@@ -22,11 +22,11 @@
 
 ####### Program Control ############
 #how many MC sweeps between subsequent records of states to disk
-mcsweeps=100
+mcsweeps=10
 #how many initial mcsweeps*inititer MC sweeps before recording to disk?
-inititer=100
+inititer=1
 #how many records do you want on the disk iteration are there in a run?
-iterations=1000
+iterations=100
 
 
 #shut up if we are using cluster!!!

--
Gitblit v1.9.3