From 6487a03362d35589c286d0660eba123a7ab00535 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Mon, 10 May 2021 11:14:04 +0000 Subject: [PATCH] Raj and Yoav session in making multiple protein species --- src/restore.c | 49 +++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 41 insertions(+), 8 deletions(-) diff --git a/src/restore.c b/src/restore.c index a490d53..9ee9c45 100644 --- a/src/restore.c +++ b/src/restore.c @@ -16,13 +16,14 @@ #include "poly.h" #include "initial_distribution.h" #include "io.h" +#include <math.h> ts_vesicle *parseDump(char *dumpfname) { xmlDocPtr doc; xmlNodePtr cur, cur1,cur2; ts_vesicle *vesicle=NULL; doc = xmlParseFile(dumpfname); - + int i; if (doc == NULL ) { fatal("Dump file could not be found or parsed. It is correct file?",1); } @@ -78,15 +79,19 @@ // END Point Position data & Bonds cur = cur->next; } - xmlFreeDoc(doc); // vesicle->poly_list=init_poly_list(0, 0, vesicle->vlist, vesicle); - + set_vesicle_values_from_tape(vesicle); init_normal_vectors(vesicle->tlist); mean_curvature_and_energy(vesicle); sweep_attraction_bond_energy(vesicle); - + if(vesicle->tape->stretchswitch==1){ + vesicle->tlist->a0=sqrt(3)/4.0*pow((vesicle->tape->dmax+1.0)/2.0,2); + for(i=0;i<vesicle->tlist->n;i++){ + stretchenergy(vesicle, vesicle->tlist->tria[i]); + } + } /* TODO: filaments */ // ts_fprintf(stdout,"Restoration completed\n"); @@ -151,7 +156,8 @@ //fprintf(stderr,"nvtx=%u\n",atoi((char *)nvtx)); //TODO: check if nvtx is in agreement with nshell from tape ts_vesicle *vesicle=init_vesicle(atoi((char *)nvtx),tape->ncxmax,tape->ncymax,tape->nczmax,tape->stepsize); - //vesicle->poly_list=init_poly_list(atoi((char *)npoly),atoi((char *)nmono), vesicle->vlist, vesicle); +// vesicle->poly_list=init_poly_list(atoi((char *)npoly),atoi((char *)nmono), vesicle->vlist, vesicle); + vesicle->poly_list=init_empty_poly_list(atoi((char *)npoly),atoi((char *)nmono)); xmlFree(nvtx); xmlFree(npoly); xmlFree(nmono); @@ -184,9 +190,8 @@ child = child->next; } - vesicle->tape=tape; - set_vesicle_values_from_tape(vesicle); +// set_vesicle_values_from_tape(vesicle); return vesicle; } @@ -357,6 +362,29 @@ } xmlFree(values); } + if(!xmlStrcmp(property_name,(const xmlChar *)"direct_interaction_force")){ + values=xmlNodeListGetString(doc,child->xmlChildrenNode,1); + vals=(char *)values; + token=strtok(vals," "); + idx=0; + while(token!=NULL){ + if(idx<vesicle->vlist->n){ + vesicle->vlist->vtx[idx]->direct_interaction_force=atof(token); + } else if(vesicle->tape->nmono && vesicle->tape->npoly && idx<vesicle->vlist->n+vesicle->tape->nmono*vesicle->tape->npoly) { + polyidx=(idx-vesicle->vlist->n)/vesicle->tape->nmono; + monoidx=(idx-vesicle->vlist->n)%vesicle->tape->nmono; + vesicle->poly_list->poly[polyidx]->vlist->vtx[monoidx]->direct_interaction_force=atof(token); + } else { + filidx=(idx-vesicle->vlist->n-vesicle->tape->nmono*vesicle->tape->npoly)/vesicle->tape->nfono; + fonoidx=(idx-vesicle->vlist->n-vesicle->tape->nmono*vesicle->tape->npoly)%vesicle->tape->nfono; + //fprintf(stderr,"filidx=%d, fonoidx=%d, coord=%s,%s,%s\n",filidx,fonoidx,token[0],token[1],token[2]); + vesicle->filament_list->poly[filidx]->vlist->vtx[fonoidx]->direct_interaction_force=atof(token); + } + idx++; + token=strtok(NULL," "); + } + xmlFree(values); + } xmlFree(property_name); } @@ -417,6 +445,7 @@ char *b; int idx, polyidx; char *token[2]; + int temp_cnt=0; while (child != NULL) { conname=xmlGetProp(child, (xmlChar *)"Name"); if ((!xmlStrcmp(child->name, (const xmlChar *)"DataArray")) && !xmlStrcmp(conname, (const xmlChar *)"connectivity") ){ @@ -428,11 +457,15 @@ while(token[0]!=NULL){ if(idx<3*(vesicle->vlist->n-2)){ bond_add(vesicle->blist, vesicle->vlist->vtx[atoi(token[0])], vesicle->vlist->vtx[atoi(token[1])]); + //fprintf(stderr,"Bonds in vesicle count idx=%d\n",idx); } else { //find grafted vtx if(vesicle->tape->npoly && vesicle->tape->nmono && (vesicle->tape->nmono-1)==(idx-3*(vesicle->vlist->n-2))%(vesicle->tape->nmono) - && idx<(3*vesicle->vlist->n-2+vesicle->tape->nmono*vesicle->tape->npoly+vesicle->tape->npoly)){ + && idx<(3*vesicle->vlist->n-2+vesicle->tape->nmono*vesicle->tape->npoly)){ + temp_cnt++; + //fprintf(stderr,"%d: Bonds in poly count idx=%d, t1=%s t2=%s\n",temp_cnt,idx, token[0], token[1]); + polyidx=(idx-3*(vesicle->vlist->n-2))/(vesicle->tape->nmono); //fprintf(stderr,"poly=%d, vertex=%d\n",polyidx,atoi(token[0])); vesicle->poly_list->poly[polyidx]->grafted_vtx=vesicle->vlist->vtx[atoi(token[0])]; -- Gitblit v1.9.3