From d43116b7d609fa9cabae4068d037c1af3a20dae8 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Thu, 08 Aug 2019 17:42:46 +0000 Subject: [PATCH] An attempt to fix polymer error while recreating vesicle from vtu. --- src/poly.c | 14 +++++++++++++- src/initial_distribution.c | 4 +++- src/restore.c | 9 ++++----- src/poly.h | 1 + 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/initial_distribution.c b/src/initial_distribution.c index 4956900..87cfb68 100644 --- a/src/initial_distribution.c +++ b/src/initial_distribution.c @@ -43,6 +43,8 @@ vesicle=initial_distribution_dipyramid(tape->nshell,tape->ncxmax,tape->ncymax,tape->nczmax,tape->stepsize); vesicle->tape=tape; + vesicle->clist->dmin_interspecies = tape->dmin_interspecies*tape->dmin_interspecies; + vesicle->poly_list=init_poly_list(tape->npoly,tape->nmono, vesicle->vlist, vesicle); set_vesicle_values_from_tape(vesicle); initial_population_with_c0(vesicle,tape); return vesicle; @@ -59,7 +61,7 @@ vesicle->clist->dmin_interspecies = tape->dmin_interspecies*tape->dmin_interspecies; //Initialize grafted polymers (brush): - vesicle->poly_list=init_poly_list(tape->npoly,tape->nmono, vesicle->vlist, vesicle); + //vesicle->poly_list=init_poly_list(tape->npoly,tape->nmono, vesicle->vlist, vesicle); vesicle->spring_constant=tape->kspring; poly_assign_spring_const(vesicle); diff --git a/src/poly.c b/src/poly.c index bcf01e5..cf416b5 100644 --- a/src/poly.c +++ b/src/poly.c @@ -126,7 +126,6 @@ m++; if(m>1000) { k=9999; //break also ot of the outer loop - printf("was here\n"); break; } } @@ -159,6 +158,7 @@ ts_uint gvtxi; ts_bool retval; ts_double dphi,dh; + cell_occupation(vesicle); //needed for evading the membrane // Grafting polymers: int tries=0; @@ -303,3 +303,15 @@ return TS_SUCCESS; } + + +ts_poly_list *init_empty_poly_list(ts_uint n_poly, ts_uint n_mono){ + 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; + for (i=0; i<n_poly;i++){ + poly_list->poly[i]=init_poly(n_mono, NULL); + } + poly_list->n = n_poly; + return poly_list; +} diff --git a/src/poly.h b/src/poly.h index 33f3be8..4a5e1fd 100644 --- a/src/poly.h +++ b/src/poly.h @@ -19,4 +19,5 @@ ts_poly *remove_poly_with_index(ts_poly_list *poly_list, ts_uint idx); ts_bool remove_random_polymeres(ts_poly_list *poly_list, ts_uint number); +ts_poly_list *init_empty_poly_list(ts_uint n_poly, ts_uint n_mono); #endif diff --git a/src/restore.c b/src/restore.c index 989a87b..6e12c1e 100644 --- a/src/restore.c +++ b/src/restore.c @@ -79,11 +79,10 @@ // 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); @@ -157,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); @@ -190,9 +190,8 @@ child = child->next; } - vesicle->tape=tape; - set_vesicle_values_from_tape(vesicle); +// set_vesicle_values_from_tape(vesicle); return vesicle; } -- Gitblit v1.9.3