| | |
| | | |
| | | 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; |
| | | } |
| | | |
| | |
| | | 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); |
| | | |
| | |
| | | vesicle->clist->ncmax[0]=tape->ncxmax; |
| | | vesicle->clist->ncmax[1]=tape->ncymax; |
| | | vesicle->clist->ncmax[2]=tape->nczmax; |
| | | vesicle->clist->max_occupancy=8; /* hard coded max occupancy? */ |
| | | //THIS IS NOW HARDCODED IN CELL.C |
| | | // vesicle->clist->max_occupancy=16; /* hard coded max occupancy? */ |
| | | |
| | | vesicle->pressure= tape->pressure; |
| | | vesicle->pswitch=tape->pswitch; |
| | |
| | | vesicle->sphHarmonics=NULL; |
| | | } |
| | | |
| | | int rndvtx; |
| | | if(tape->number_of_vertices_with_c0>0){ |
| | | ts_fprintf(stderr,"Setting values for spontaneous curvature as defined in tape\n"); |
| | | for(i=0;i<tape->number_of_vertices_with_c0;i++){ |
| | | rndvtx=rand() % vesicle->vlist->n; |
| | | vesicle->vlist->vtx[rndvtx]->c=tape->c0; |
| | | } |
| | | mean_curvature_and_energy(vesicle); |
| | | if(fabs(tape->w)>1e-16){ //if nonzero energy |
| | | ts_fprintf(stderr,"Setting attraction between vertices with spontaneous curvature\n"); |
| | | sweep_attraction_bond_energy(vesicle); |
| | | } |
| | | } |
| | | |
| | | vesicle->tlist->a0=sqrt(3)/4*pow((vesicle->tape->dmax+1.0)/2.0,2); |
| | | return TS_SUCCESS; |
| | | |
| | | } |
| | | |
| | | |
| | | ts_bool initial_population_with_c0(ts_vesicle *vesicle, ts_tape *tape){ |
| | | // OVERRIDE! JUST FOR TEST BRANCH!!! |
| | | // WARNING !!!! |
| | | // WARNING !!!! |
| | | // WARNING !!!! |
| | | return TS_SUCCESS; |
| | | if(tape->number_of_vertices_with_c0>0){ |
| | | // ts_fprintf(stderr,"Setting values for spontaneous curvature as defined in tape\n"); |
| | | add_vertices_with_c0(vesicle, tape->number_of_vertices_with_c0, tape->c0, tape->w); |
| | | } |
| | | return TS_SUCCESS; |
| | | } |
| | | |
| | | ts_bool add_vertices_with_c0(ts_vesicle *vesicle, ts_int n, ts_double c0, ts_double w){ |
| | | ts_int rndvtx,i,j=0; |
| | | for(i=0;i<n;i++){ |
| | | rndvtx=rand() % vesicle->vlist->n; |
| | | if(fabs(vesicle->vlist->vtx[rndvtx]->c-c0)<1e-15){ |
| | | j++; |
| | | i--; |
| | | if(j>10*vesicle->vlist->n){ |
| | | fatal("cannot populate vesicle with vertices with spontaneous curvature. Too many spontaneous curvature vertices?",100); |
| | | } |
| | | continue; |
| | | } |
| | | vesicle->vlist->vtx[rndvtx]->c=c0; |
| | | } |
| | | mean_curvature_and_energy(vesicle); |
| | | if(fabs(w)>1e-16){ //if nonzero energy |
| | | // ts_fprintf(stderr,"Setting attraction between vertices with spontaneous curvature\n"); |
| | | sweep_attraction_bond_energy(vesicle); |
| | | } |
| | | return TS_SUCCESS; |
| | | |
| | | } |
| | | |
| | | ts_bool pentagonal_dipyramid_vertex_distribution(ts_vertex_list *vlist){ |
| | | /* Some often used relations */ |