| | |
| | | #include<stdlib.h> |
| | | #include <sys/types.h> |
| | | #include <dirent.h> |
| | | |
| | | #include "initial_distribution.h" |
| | | |
| | | ts_bool print_vertex_list(ts_vertex_list *vlist){ |
| | | ts_uint i; |
| | | printf("Number of vertices: %u\n",vlist->n); |
| | | for(i=0;i<vlist->n;i++){ |
| | | printf("%u: %f %f %f\n", |
| | | vlist->vtx[i]->idx,vlist->vtx[i]->data->x, vlist->vtx[i]->data->y, vlist->vtx[i]->data->z); |
| | | vlist->vtx[i]->idx,vlist->vtx[i]->x, vlist->vtx[i]->y, vlist->vtx[i]->z); |
| | | } |
| | | return TS_SUCCESS; |
| | | } |
| | |
| | | ts_vertex **vtx=vlist->vtx; |
| | | printf("Vertex id(neigh no): (neighvertex coord) (neighvertex coord) ...\n"); |
| | | for(i=0;i<vlist->n;i++){ |
| | | printf("%u(%u): ",vtx[i]->idx,vtx[i]->data->neigh_no); |
| | | for(j=0;j<vtx[i]->data->neigh_no;j++){ |
| | | printf("(%f,%f,%f)",vtx[i]->data->neigh[j]->data->x, |
| | | vtx[i]->data->neigh[j]->data->y,vtx[i]->data->neigh[j]->data->z); |
| | | printf("%u(%u): ",vtx[i]->idx,vtx[i]->neigh_no); |
| | | for(j=0;j<vtx[i]->neigh_no;j++){ |
| | | printf("(%f,%f,%f)",vtx[i]->neigh[j]->x, |
| | | vtx[i]->neigh[j]->y,vtx[i]->neigh[j]->z); |
| | | } |
| | | printf("\n"); |
| | | } |
| | |
| | | return TS_FAIL; |
| | | } |
| | | for(i=0;i<vlist->n;i++) |
| | | fprintf(fh," %E\t%E\t%E\n",vtx[i]->data->x,vtx[i]->data->y, vtx[i]->data->z); |
| | | fprintf(fh," %E\t%E\t%E\n",vtx[i]->x,vtx[i]->y, vtx[i]->z); |
| | | |
| | | fclose(fh); |
| | | return TS_SUCCESS; |
| | |
| | | ts_bool fprint_vertex_list(FILE *fh,ts_vertex_list *vlist){ |
| | | ts_uint i,j; |
| | | for(i=0;i<vlist->n;i++){ |
| | | fprintf(fh," %.17E\t%.17E\t%.17E\t%u\n",vlist->vtx[i]->data->x, |
| | | vlist->vtx[i]->data->y, vlist->vtx[i]->data->z, |
| | | vlist->vtx[i]->data->neigh_no); |
| | | for(j=0;j<vlist->vtx[i]->data->neigh_no;j++){ |
| | | fprintf(fh,"\t%u",(ts_uint)(vlist->vtx[i]->data->neigh[j]->idx)); |
| | | fprintf(fh," %.17E\t%.17E\t%.17E\t%u\n",vlist->vtx[i]->x, |
| | | vlist->vtx[i]->y, vlist->vtx[i]->z, |
| | | vlist->vtx[i]->neigh_no); |
| | | for(j=0;j<vlist->vtx[i]->neigh_no;j++){ |
| | | fprintf(fh,"\t%u",(ts_uint)(vlist->vtx[i]->neigh[j]->idx)); |
| | | //-vlist->vtx+1)); |
| | | } |
| | | fprintf(fh,"\n"); |
| | |
| | | ts_bool fprint_tristar(FILE *fh, ts_vesicle *vesicle){ |
| | | ts_uint i,j; |
| | | for(i=0;i<vesicle->vlist->n;i++){ |
| | | fprintf(fh,"\t%u",vesicle->vlist->vtx[i]->data->tristar_no); |
| | | for(j=0;j<vesicle->vlist->vtx[i]->data->tristar_no;j++){ |
| | | fprintf(fh,"\t%u",(ts_uint)(vesicle->vlist->vtx[i]->data->tristar[j]->idx));//-vesicle->tlist->tria+1)); |
| | | fprintf(fh,"\t%u",vesicle->vlist->vtx[i]->tristar_no); |
| | | for(j=0;j<vesicle->vlist->vtx[i]->tristar_no;j++){ |
| | | fprintf(fh,"\t%u",(ts_uint)(vesicle->vlist->vtx[i]->tristar[j]->idx));//-vesicle->tlist->tria+1)); |
| | | } |
| | | fprintf(fh,"\n"); |
| | | } |
| | |
| | | ts_uint i,j; |
| | | for(i=0;i<vlist->n;i++){ |
| | | fprintf(fh," %.17E\t%.17E\t%.17E\t%.17E\t%.17E\t%u\n", |
| | | vlist->vtx[i]->data->xk,vlist->vtx[i]->data->c,vlist->vtx[i]->data->energy, |
| | | vlist->vtx[i]->data->energy_h, vlist->vtx[i]->data->curvature, 0); |
| | | for(j=0;j<vlist->vtx[i]->data->neigh_no;j++){ |
| | | fprintf(fh," %.17E", vlist->vtx[i]->data->bond[j]->bond_length_dual); |
| | | vlist->vtx[i]->xk,vlist->vtx[i]->c,vlist->vtx[i]->energy, |
| | | vlist->vtx[i]->energy_h, vlist->vtx[i]->curvature, 0); |
| | | for(j=0;j<vlist->vtx[i]->neigh_no;j++){ |
| | | fprintf(fh," %.17E", vlist->vtx[i]->bond[j]->bond_length_dual); |
| | | } |
| | | fprintf(fh,"\n"); |
| | | for(j=0;j<vlist->vtx[i]->data->neigh_no;j++){ |
| | | fprintf(fh," %.17E", vlist->vtx[i]->data->bond[j]->bond_length); |
| | | for(j=0;j<vlist->vtx[i]->neigh_no;j++){ |
| | | fprintf(fh," %.17E", vlist->vtx[i]->bond[j]->bond_length); |
| | | } |
| | | fprintf(fh,"\n"); |
| | | } |
| | |
| | | |
| | | fprintf(fh,"</DataArray>\n</PointData>\n<CellData>\n</CellData>\n<Points>\n<DataArray type=\"Float64\" Name=\"Koordinate tock\" NumberOfComponents=\"3\" format=\"ascii\">\n"); |
| | | for(i=0;i<vlist->n;i++){ |
| | | fprintf(fh,"%e %e %e\n",vtx[i]->data->x,vtx[i]->data->y, vtx[i]->data->z); |
| | | fprintf(fh,"%e %e %e\n",vtx[i]->x,vtx[i]->y, vtx[i]->z); |
| | | } |
| | | |
| | | fprintf(fh,"</DataArray>\n</Points>\n<Cells>\n<DataArray type=\"Int64\" Name=\"connectivity\" format=\"ascii\">"); |
| | |
| | | fprintf(fh,"DATASET UNSTRUCTURED_GRID\n"); |
| | | fprintf(fh,"POINTS %u double\n", vlist->n); |
| | | for(i=0;i<vlist->n;i++){ |
| | | fprintf(fh,"%e %e %e\n",vtx[i]->data->x,vtx[i]->data->y, vtx[i]->data->z); |
| | | fprintf(fh,"%e %e %e\n",vtx[i]->x,vtx[i]->y, vtx[i]->z); |
| | | } |
| | | |
| | | fprintf(fh,"CELLS %u %u\n",blist->n,3*blist->n); |
| | |
| | | fprintf(fh,"LOOKUP_TABLE default\n"); |
| | | |
| | | for(i=0;i<vlist->n;i++) |
| | | fprintf(fh,"%u\n",vtx[i]->data->idx); |
| | | fprintf(fh,"%u\n",vtx[i]->idx); |
| | | |
| | | fclose(fh); |
| | | return TS_SUCCESS; |
| | |
| | | |
| | | |
| | | |
| | | ts_bool parsetape(ts_vesicle *vesicle,ts_uint *iterations){ |
| | | ts_vesicle *parsetape(ts_uint *mcsweeps, ts_uint *inititer, ts_uint *iterations){ |
| | | long int nshell=17,ncxmax=60, ncymax=60, nczmax=60; // THIS IS DUE TO CONFUSE BUG! |
| | | char *buf=malloc(255*sizeof(char)); |
| | | buf[0]=0; |
| | | long int smps=1; |
| | | long int brezveze1=1; |
| | | long int brezveze2=1; |
| | | ts_double xk0=25.0, dmax=1.67,stepsize=0.15; |
| | | *iterations=1000; |
| | | long int iter=1000, init=1000, mcsw=1000; |
| | | cfg_opt_t opts[] = { |
| | | CFG_SIMPLE_INT("nshell", &nshell), |
| | | CFG_SIMPLE_FLOAT("dmax", &dmax), |
| | |
| | | CFG_SIMPLE_INT("nxmax", &ncxmax), |
| | | CFG_SIMPLE_INT("nymax", &ncymax), |
| | | CFG_SIMPLE_INT("nzmax", &nczmax), |
| | | CFG_SIMPLE_INT("iterations",iterations), |
| | | CFG_SIMPLE_INT("iterations",&iter), |
| | | CFG_SIMPLE_INT("mcsweeps",&mcsw), |
| | | CFG_SIMPLE_INT("inititer", &init), |
| | | CFG_SIMPLE_BOOL("quiet",&quiet), |
| | | CFG_SIMPLE_STR("multiprocessing",&buf), |
| | | CFG_SIMPLE_INT("smp_cores",&smps), |
| | | CFG_SIMPLE_INT("cluster_nodes",&brezveze1), |
| | | CFG_SIMPLE_INT("distributed_processes",&brezveze2), |
| | | CFG_END() |
| | | }; |
| | | cfg_t *cfg; |
| | |
| | | else if(retval==CFG_PARSE_ERROR){ |
| | | fatal("Invalid tape!",100); |
| | | } |
| | | ts_vesicle *vesicle; |
| | | *iterations=iter; |
| | | *inititer=init; |
| | | *mcsweeps=mcsw; |
| | | vesicle=initial_distribution_dipyramid(nshell,ncxmax,ncymax,nczmax,stepsize); |
| | | vesicle->nshell=nshell; |
| | | vesicle->dmax=dmax*dmax; |
| | | vesicle->bending_rigidity=xk0; |
| | |
| | | vesicle->clist->ncmax[1]=ncymax; |
| | | vesicle->clist->ncmax[2]=nczmax; |
| | | vesicle->clist->max_occupancy=8; |
| | | if(strcmp(buf,"smp")==0){ |
| | | vesicle->threads=smps; |
| | | } else { |
| | | vesicle->threads=1; |
| | | } |
| | | cfg_free(cfg); |
| | | // fprintf(stderr,"NSHELL=%u\n",vesicle->nshell); |
| | | return TS_SUCCESS; |
| | | free(buf); |
| | | // fprintf(stderr,"NSHELL=%u\n",vesicle->nshell); |
| | | return vesicle; |
| | | |
| | | } |
| | | |
| | |
| | | vesicle->vlist=init_vertex_list(nvtx); |
| | | vlist=vesicle->vlist; |
| | | for(i=0;i<nvtx;i++){ |
| | | // fscanf(fh,"%F %F %F",&vlist->vtx[i]->data->x,&vlist->vtx[i]->data->y,&vlist->vtx[i]->data->z); |
| | | // fscanf(fh,"%F %F %F",&vlist->vtx[i]->x,&vlist->vtx[i]->y,&vlist->vtx[i]->z); |
| | | retval=fscanf(fh,"%F %F %F",&x,&y,&z); |
| | | vlist->vtx[i]->data->x=x; |
| | | vlist->vtx[i]->data->y=y; |
| | | vlist->vtx[i]->data->z=z; |
| | | vlist->vtx[i]->x=x; |
| | | vlist->vtx[i]->y=y; |
| | | vlist->vtx[i]->z=z; |
| | | } |
| | | for(i=0;i<nedges;i++){ |
| | | retval=fscanf(fh,"%u %u",&vtxi1,&vtxi2); |
| | |
| | | /* |
| | | for(i=0;i<ntria;i++){ |
| | | retval=fscanf(fh,"%u %u %u", &bi1, &bi2, &bi3); |
| | | vtxi1=vesicle->blist->data->vertex1->idx; |
| | | vtxi2=vesicle->blist->data->vertex1->idx; |
| | | vtxi1=vesicle->blist->vertex1->idx; |
| | | vtxi2=vesicle->blist->vertex1->idx; |
| | | |
| | | } |
| | | */ |