Fix in vertexmove. Macro was not working
| | |
| | | } |
| | | fclose(fd); |
| | | start_iteration++; |
| | | printf("nucleus coords: %.17e %.17e %.17e\n",vesicle->nucleus_center[0], vesicle->nucleus_center[1], vesicle->nucleus_center[2]); |
| | | } |
| | | else |
| | | ts_fprintf(stdout,"No .status file. The iteration count will start from 0"); |
| | |
| | | } |
| | | } |
| | | } |
| | | //printf("nucleus coords: %.17e %.17e %.17e\n",vesicle->nucleus_center[0], vesicle->nucleus_center[1], vesicle->nucleus_center[2]); |
| | | |
| | | run_simulation(vesicle, tape->mcsweeps, tape->inititer, tape->iterations, start_iteration); |
| | | write_master_xml_file(command_line_args.output_fullfilename); |
| | |
| | | ####### Nucleus (inside the vesicle) ########### |
| | | # Radius of an impenetrable hard sphere inside the vesicle |
| | | R_nucleus=0 |
| | | R_nucleusX=2.0 |
| | | R_nucleusY=6.0 |
| | | R_nucleusZ=2.0 |
| | | R_nucleusX=6.0 |
| | | R_nucleusY=12.0 |
| | | R_nucleusZ=6.0 |
| | | ####### Cell definitions ############ |
| | | nxmax=60 |
| | | nymax=60 |
| | |
| | | ####### Program Control ############ |
| | | #how many MC sweeps between subsequent records of states to disk |
| | | #200000 |
| | | mcsweeps=20 |
| | | mcsweeps=200 |
| | | #how many initial mcsweeps*inititer MC sweeps before recording to disk? |
| | | #2 |
| | | inititer=0 |
| | |
| | | |
| | | // TODO: Maybe faster if checks only nucleus-neighboring cells |
| | | // Nucleus penetration check: |
| | | #define SQ(x) x*x |
| | | //#define SQ(x) x*x |
| | | if(vesicle->R_nucleus>0.0){ |
| | | if (SQ(vtx->x-vesicle->nucleus_center[0])+ SQ(vtx->y-vesicle->nucleus_center[1]) + SQ(vtx->z-vesicle->nucleus_center[2]) < vesicle->R_nucleus){ |
| | | if ((vtx->x-vesicle->nucleus_center[0])*(vtx->x-vesicle->nucleus_center[0])+ (vtx->y-vesicle->nucleus_center[1])*(vtx->y-vesicle->nucleus_center[1]) + (vtx->z-vesicle->nucleus_center[2])*(vtx->z-vesicle->nucleus_center[2]) < vesicle->R_nucleus){ |
| | | vtx=memcpy((void *)vtx,(void *)&backupvtx[0],sizeof(ts_vertex)); |
| | | return TS_FAIL; |
| | | } |
| | | } else if(vesicle->R_nucleusX>0.0){ |
| | | // fprintf(stderr,"DEBUG, (Rx, Ry,Rz)^2=(%f,%f,%f)\n",vesicle->R_nucleusX, vesicle->R_nucleusY, vesicle->R_nucleusZ); |
| | | if (SQ(vtx->x-vesicle->nucleus_center[0])/vesicle->R_nucleusX + SQ(vtx->y-vesicle->nucleus_center[1])/vesicle->R_nucleusY + SQ(vtx->z-vesicle->nucleus_center[2])/vesicle->R_nucleusZ < 1.0){ |
| | | // if (SQ(vtx->x-vesicle->nucleus_center[0])/vesicle->R_nucleusX + SQ(vtx->y-vesicle->nucleus_center[1])/vesicle->R_nucleusY + SQ(vtx->z-vesicle->nucleus_center[2])/vesicle->R_nucleusZ < 1.0){ |
| | | if ((vtx->x-vesicle->nucleus_center[0])*(vtx->x-vesicle->nucleus_center[0])/vesicle->R_nucleusX + (vtx->y-vesicle->nucleus_center[1])*(vtx->y-vesicle->nucleus_center[1])/vesicle->R_nucleusY + (vtx->z-vesicle->nucleus_center[2])*(vtx->z-vesicle->nucleus_center[2])/vesicle->R_nucleusZ < 1.0){ |
| | | // if (SQ(vtx->x)/vesicle->R_nucleusX + SQ(vtx->y)/vesicle->R_nucleusY + SQ(vtx->z)/vesicle->R_nucleusZ < 1.0){ |
| | | vtx=memcpy((void *)vtx,(void *)&backupvtx[0],sizeof(ts_vertex)); |
| | | return TS_FAIL; |
| | | } |
| | | |
| | | } |
| | | #undef SQ |
| | | //#undef SQ |
| | | //self avoidance check with distant vertices |
| | | cellidx=vertex_self_avoidance(vesicle, vtx); |
| | | //check occupation number |