Did major change in vesicle datastructure. Added tape information into vesicle. This means the dump files will be broken each time tape structure changes. Beware.
| | |
| | | |
| | | |
| | | |
| | | typedef struct { |
| | | long int nshell; |
| | | long int ncxmax; |
| | | long int ncymax; |
| | | long int nczmax; |
| | | long int npoly; |
| | | long int nmono; |
| | | long int nfil; |
| | | long int nfono; |
| | | long int R_nucleus; |
| | | long int pswitch; |
| | | long int constvolswitch; |
| | | char *multiprocessing; |
| | | long int brezveze0; |
| | | long int brezveze1; |
| | | long int brezveze2; |
| | | ts_double xk0; |
| | | ts_double dmax; |
| | | ts_double dmin_interspecies; |
| | | ts_double stepsize; |
| | | ts_double kspring; |
| | | ts_double xi; |
| | | ts_double pressure; |
| | | long int iterations; |
| | | long int inititer; |
| | | long int mcsweeps; |
| | | long int quiet; |
| | | long int shc; |
| | | } ts_tape; |
| | | |
| | | |
| | | |
| | | |
| | | typedef struct { |
| | | ts_vertex_list *vlist; |
| | |
| | | ts_double spring_constant; |
| | | ts_double pressure; |
| | | ts_int pswitch; |
| | | |
| | | ts_tape *tape; |
| | | ts_double R_nucleus; |
| | | |
| | | } ts_vesicle; |
| | |
| | | ts_vertex *vtx; |
| | | |
| | | vesicle=initial_distribution_dipyramid(tape->nshell,tape->ncxmax,tape->ncymax,tape->nczmax,tape->stepsize); |
| | | vesicle->tape=tape; |
| | | // Nucleus: |
| | | vesicle->R_nucleus=tape->R_nucleus*tape->R_nucleus; |
| | | |
| | |
| | | */ |
| | | |
| | | fwrite(vesicle->clist, sizeof(ts_cell_list),1, fh); |
| | | |
| | | /* write tape information on vesicle */ |
| | | fwrite(vesicle->tape,sizeof(ts_tape),1,fh); |
| | | fwrite(&iteration, sizeof(ts_uint),1,fh); |
| | | fclose(fh); |
| | | return TS_SUCCESS; |
| | |
| | | vesicle->clist->cell[i]->idx=i+1; // We enumerate cells! Probably never required! |
| | | } |
| | | |
| | | //recreating stored tape information// |
| | | 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); |
| | | if(retval); |
| | | fclose(fh); |
| | |
| | | CFG_SIMPLE_FLOAT("dmin_interspecies", &tape->dmin_interspecies), |
| | | CFG_SIMPLE_FLOAT("xk0",&tape->xk0), |
| | | CFG_SIMPLE_INT("pswitch",&tape->pswitch), |
| | | CFG_SIMPLE_INT("constvolswitch",&tape->constvolswitch), |
| | | CFG_SIMPLE_FLOAT("pressure",&tape->pressure), |
| | | CFG_SIMPLE_FLOAT("k_spring",&tape->kspring), |
| | | CFG_SIMPLE_FLOAT("xi",&tape->xi), |
| | |
| | | |
| | | |
| | | typedef struct { |
| | | long int nshell; |
| | | long int ncxmax; |
| | | long int ncymax; |
| | | long int nczmax; |
| | | long int npoly; |
| | | long int nmono; |
| | | long int nfil; |
| | | long int nfono; |
| | | long int R_nucleus; |
| | | long int pswitch; |
| | | char *multiprocessing; |
| | | long int brezveze0; |
| | | long int brezveze1; |
| | | long int brezveze2; |
| | | ts_double xk0; |
| | | ts_double dmax; |
| | | ts_double dmin_interspecies; |
| | | ts_double stepsize; |
| | | ts_double kspring; |
| | | ts_double xi; |
| | | ts_double pressure; |
| | | long int iterations; |
| | | long int inititer; |
| | | long int mcsweeps; |
| | | long int quiet; |
| | | long int shc; |
| | | } ts_tape; |
| | | |
| | | typedef struct{ |
| | | ts_int force_from_tape; |
| | | ts_int reset_iteration_count; |
| | | char path[1024]; //path where all files should be added |
| | |
| | | vesicle->pressure=tape->pressure; |
| | | vesicle->dmax=tape->dmax*tape->dmax; |
| | | poly_assign_filament_xi(vesicle,tape); |
| | | tape_free(vesicle->tape); |
| | | vesicle->tape=tape; |
| | | vesicle->clist->dmin_interspecies = tape->dmin_interspecies*tape->dmin_interspecies; |
| | | /* spherical harmonics */ |
| | | if(tape->shc>0){ |
| | |
| | | # pressure difference: p_inside - p_outside (in units kT/l_min^3): |
| | | pressure=0.0 |
| | | |
| | | #Constant volume constraint (0 disable constant volume, 1 enable) |
| | | constvolswitch=1 |
| | | |
| | | |
| | | |
| | | ####### Polymer (brush) definitions ########### |
| | | # npoly is a number of polymers attached to npoly distinct vertices on vesicle |
| | | npoly=0 |
| | |
| | | #include "timestep.h" |
| | | #include "cell.h" |
| | | //#include "io.h" |
| | | #include "io.h" |
| | | #include<stdio.h> |
| | | #include "vertexmove.h" |
| | | #include <string.h> |
| | |
| | | memcpy((void *)&backupvtx[i+1],(void *)vtx->neigh[i],sizeof(ts_vertex)); |
| | | } |
| | | |
| | | if(vesicle->pswitch == 1){ |
| | | if(vesicle->pswitch == 1 || vesicle->tape->constvolswitch == 1){ |
| | | for(i=0;i<vtx->tristar_no;i++) dvol-=vtx->tristar[i]->volume; |
| | | }; |
| | | |
| | |
| | | delta_energy+=vtx->neigh[i]->xk*(vtx->neigh[i]->energy-oenergy); |
| | | } |
| | | |
| | | if(vesicle->pswitch == 1){ |
| | | if(vesicle->pswitch == 1 || vesicle->tape->constvolswitch == 1){ |
| | | for(i=0;i<vtx->tristar_no;i++) dvol+=vtx->tristar[i]->volume; |
| | | delta_energy-=vesicle->pressure*dvol; |
| | | if(vesicle->pswitch == 1) delta_energy-=vesicle->pressure*dvol; |
| | | }; |
| | | |
| | | /* No poly-bond energy for now! |