From 7ec6fb63c690080d0624c7bf138d0fd84fe7664e Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Tue, 15 May 2018 16:11:14 +0000
Subject: [PATCH] First working version, not debugged and energy assigned to vesicles on timesteps

---
 src/io.c |   82 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 76 insertions(+), 6 deletions(-)

diff --git a/src/io.c b/src/io.c
index 7066657..83bb26d 100644
--- a/src/io.c
+++ b/src/io.c
@@ -1,3 +1,4 @@
+
 /* vim: set ts=4 sts=4 sw=4 noet : */
 #include "general.h"
 #include<stdio.h>
@@ -423,7 +424,7 @@
     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;
+	vesicle->clist->max_occupancy=16;
 //    vesicle->tape=(ts_tape *)malloc(sizeof(ts_tape));
 //    retval=fread(vesicle->tape, sizeof(ts_tape),1,fh);
 	retval=fread(iteration,sizeof(ts_uint),1,fh);
@@ -820,11 +821,12 @@
 	return TS_SUCCESS;
 }
 
-ts_bool write_vertex_xml_file(ts_vesicle *vesicle, ts_uint timestepno){
+ts_bool write_vertex_xml_file(ts_vesicle *vesicle, ts_uint timestepno, ts_cluster_list *cstlist){
 	ts_vertex_list *vlist=vesicle->vlist;
 	ts_bond_list *blist=vesicle->blist;
 	ts_vertex **vtx=vlist->vtx;
     ts_uint i,j;
+	ts_double senergy=0.0;
     	char filename[10000];
         char just_name[255];
 	FILE *fh;
@@ -887,7 +889,40 @@
 	}
 
     	fprintf(fh,"</DataArray>\n");
-	
+	if(cstlist!=NULL){
+		fprintf(fh,"<DataArray type=\"Int64\" Name=\"vertices_in_cluster\" format=\"ascii\">");
+		for(i=0;i<vlist->n;i++){
+			if(vtx[i]->cluster!=NULL){
+				fprintf(fh,"%u ",vtx[i]->cluster->nvtx);
+			} else {
+				fprintf(fh,"-1 ");
+			}
+	    	}
+		//polymeres
+		if(poly){
+			poly_idx=vlist->n;
+			for(i=0;i<vesicle->poly_list->n;i++){
+				for(j=0;j<vesicle->poly_list->poly[i]->vlist->n;j++,poly_idx++){
+					fprintf(fh,"-1 ");
+				}
+			}
+		}
+		//filaments
+		if(fil){
+			poly_idx=vlist->n+monono*polyno;
+			for(i=0;i<vesicle->filament_list->n;i++){
+				for(j=0;j<vesicle->filament_list->poly[i]->vlist->n;j++,poly_idx++){
+		//	fprintf(stderr,"was here\n");
+					fprintf(fh,"-1 ");
+				}
+			}
+		}
+
+		fprintf(fh,"</DataArray>\n");
+
+
+	}
+
 	//here comes additional data as needed. Currently only spontaneous curvature
 	fprintf(fh,"<DataArray type=\"Float64\" Name=\"spontaneous_curvature\" format=\"ascii\">");
 	for(i=0;i<vlist->n;i++){
@@ -939,7 +974,36 @@
 			}
 		}
     fprintf(fh,"</DataArray>\n");
-
+	if(vesicle->tape->stretchswitch==1){
+		fprintf(fh,"<DataArray type=\"Float64\" Name=\"stretching_energy\" format=\"ascii\">");
+		for(i=0;i<vlist->n;i++){
+			senergy=0.0;
+			for(j=0;j<vtx[i]->tristar_no;j++){
+				senergy+=vtx[i]->tristar[j]->energy;
+			}
+			fprintf(fh,"%.17e ",senergy);
+		}
+			//polymeres
+			if(poly){
+				poly_idx=vlist->n;
+				for(i=0;i<vesicle->poly_list->n;i++){
+					for(j=0;j<vesicle->poly_list->poly[i]->vlist->n;j++,poly_idx++){
+						fprintf(fh,"%.17e ", 0.0);
+					}
+				}
+			}
+			//filaments
+			if(fil){
+				poly_idx=vlist->n+monono*polyno;
+				for(i=0;i<vesicle->filament_list->n;i++){
+					for(j=0;j<vesicle->filament_list->poly[i]->vlist->n;j++,poly_idx++){
+			//	fprintf(stderr,"was here\n");
+						fprintf(fh,"%.17e ", 0.0);
+					}
+				}
+			}
+	    fprintf(fh,"</DataArray>\n");
+	}
 
 	
 	fprintf(fh,"</PointData>\n<CellData>\n</CellData>\n<Points>\n<DataArray type=\"Float64\" Name=\"Koordinate tock\" NumberOfComponents=\"3\" format=\"ascii\">\n");
@@ -1119,6 +1183,7 @@
         CFG_SIMPLE_INT("nmono", &tape->nmono),
 	CFG_SIMPLE_INT("nfil",&tape->nfil),
 	CFG_SIMPLE_INT("nfono",&tape->nfono),
+	CFG_SIMPLE_INT("internal_poly",&tape->internal_poly),
 	CFG_SIMPLE_INT("R_nucleus",&tape->R_nucleus),
 	CFG_SIMPLE_FLOAT("R_nucleusX",&tape->R_nucleusX),
 	CFG_SIMPLE_FLOAT("R_nucleusY",&tape->R_nucleusY),
@@ -1130,6 +1195,8 @@
 	CFG_SIMPLE_INT("constvolswitch",&tape->constvolswitch),
 	CFG_SIMPLE_INT("constareaswitch",&tape->constareaswitch),
 	CFG_SIMPLE_FLOAT("constvolprecision",&tape->constvolprecision),
+	CFG_SIMPLE_INT("stretchswitch",&tape->stretchswitch),
+	CFG_SIMPLE_FLOAT("xkA0",&tape->xkA0),	
 	CFG_SIMPLE_FLOAT("pressure",&tape->pressure),
 	CFG_SIMPLE_FLOAT("k_spring",&tape->kspring),
 	CFG_SIMPLE_FLOAT("xi",&tape->xi),
@@ -1140,8 +1207,8 @@
         CFG_SIMPLE_INT("iterations",&tape->iterations),
 	CFG_SIMPLE_INT("mcsweeps",&tape->mcsweeps),
 	CFG_SIMPLE_INT("inititer", &tape->inititer),
-        CFG_SIMPLE_BOOL("quiet",&tape->quiet),
-        CFG_SIMPLE_STR("multiprocessing",tape->multiprocessing),
+				CFG_SIMPLE_BOOL("quiet",(cfg_bool_t *)&tape->quiet),
+        CFG_SIMPLE_STR("multiprocessing",&tape->multiprocessing),
         CFG_SIMPLE_INT("smp_cores",&tape->brezveze0),
         CFG_SIMPLE_INT("cluster_nodes",&tape->brezveze1),
         CFG_SIMPLE_INT("distributed_processes",&tape->brezveze2),
@@ -1149,6 +1216,7 @@
 	CFG_SIMPLE_INT("number_of_vertices_with_c0", &tape->number_of_vertices_with_c0),
 	CFG_SIMPLE_FLOAT("c0",&tape->c0),
 	CFG_SIMPLE_FLOAT("w",&tape->w),
+	CFG_SIMPLE_FLOAT("F",&tape->F),
         CFG_END()
     };
     cfg_t *cfg;    
@@ -1183,6 +1251,8 @@
 ts_bool getcmdline_tape(cfg_t *cfg, char *opts){
 
 	char *commands, *backup, *saveptr, *saveopptr, *command, *operator[2];
+	operator[0]=0;
+	operator[1]=0;
 	ts_uint i,j;
 	commands=(char *)malloc(10000*sizeof(char));
     backup=commands; //since the pointer to commands will be lost, we acquire a pointer that will serve as backup.

--
Gitblit v1.9.3