2 files added
7 files modified
| | |
| | | typedef struct { |
| | | ts_plugin_chain *at_start; |
| | | ts_plugin_chain *after_vesicle_init; |
| | | ts_plugin_chain *vm_hard_constraint; |
| | | ts_plugin_chain *cleanup; |
| | | } ts_plugin_chains; |
| | | |
| | |
| | | int main(int argv, char *argc[]){ |
| | | ts_char *plugin0 = (ts_char *)calloc(255,sizeof(ts_char)); |
| | | ts_char *plugin1 = (ts_char *)calloc(255,sizeof(ts_char)); |
| | | ts_char *plugin2 = (ts_char *)calloc(255,sizeof(ts_char)); |
| | | strcpy(plugin0,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/demoplugin.so"); |
| | | strcpy(plugin1,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/vmdefaulthardconstraints.so"); |
| | | ts_char **plugins=(ts_char **)calloc(2,sizeof(ts_char *)); |
| | | strcpy(plugin2,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/plane_confinement.so"); |
| | | ts_char **plugins=(ts_char **)calloc(3,sizeof(ts_char *)); |
| | | *plugins=plugin0; |
| | | plugins[1]=plugin1; |
| | | ts_plugin_list *plist=init_plugin_list(plugins,2); |
| | | plugins[2]=plugin2; |
| | | ts_plugin_list *plist=init_plugin_list(plugins,3); |
| | | //printf("%s", plist->chain->at_start->next->plugin->filename); |
| | | //ts_fprintf(stdout, "TRISURF in PRVI PLUGIN %s\n", plist->plugin[0]->details->name); |
| | | ts_vesicle *vesicle; |
| | |
| | | demoplugin_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ |
| | | $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ |
| | | $(demoplugin_la_LDFLAGS) $(LDFLAGS) -o $@ |
| | | nucleus_la_LIBADD = |
| | | am_nucleus_la_OBJECTS = nucleus.lo |
| | | nucleus_la_OBJECTS = $(am_nucleus_la_OBJECTS) |
| | | nucleus_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ |
| | | $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ |
| | | $(nucleus_la_LDFLAGS) $(LDFLAGS) -o $@ |
| | | plane_confinement_la_LIBADD = |
| | | am_plane_confinement_la_OBJECTS = plane_confinement.lo |
| | | plane_confinement_la_OBJECTS = $(am_plane_confinement_la_OBJECTS) |
| | | plane_confinement_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ |
| | | $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ |
| | | $(AM_CFLAGS) $(CFLAGS) $(plane_confinement_la_LDFLAGS) \ |
| | | $(LDFLAGS) -o $@ |
| | | vmdefaulthardconstraints_la_LIBADD = |
| | | am_vmdefaulthardconstraints_la_OBJECTS = default_hard_constraints.lo |
| | | vmdefaulthardconstraints_la_OBJECTS = \ |
| | |
| | | am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) |
| | | am__v_CCLD_0 = @echo " CCLD " $@; |
| | | am__v_CCLD_1 = |
| | | SOURCES = $(demoplugin_la_SOURCES) \ |
| | | SOURCES = $(demoplugin_la_SOURCES) $(nucleus_la_SOURCES) \ |
| | | $(plane_confinement_la_SOURCES) \ |
| | | $(vmdefaulthardconstraints_la_SOURCES) |
| | | DIST_SOURCES = $(demoplugin_la_SOURCES) \ |
| | | DIST_SOURCES = $(demoplugin_la_SOURCES) $(nucleus_la_SOURCES) \ |
| | | $(plane_confinement_la_SOURCES) \ |
| | | $(vmdefaulthardconstraints_la_SOURCES) |
| | | am__can_run_installinfo = \ |
| | | case $$AM_UPDATE_INFO_DIR in \ |
| | |
| | | top_builddir = ../.. |
| | | top_srcdir = ../.. |
| | | AM_CFLAGS = -Wall -Werror -DTS_VERSION=\"$(GITVERSION)\" -fgnu89-inline -Wno-error=date-time -I.. |
| | | lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la |
| | | lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la |
| | | demoplugin_la_SOURCES = demo_plugin.c |
| | | demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | vmdefaulthardconstraints_la_SOURCES = default_hard_constraints.c |
| | | vmdefaulthardconstraints_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | nucleus_la_SOURCES = nucleus.c |
| | | nucleus_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | plane_confinement_la_SOURCES = plane_confinement.c |
| | | plane_confinement_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | all: all-am |
| | | |
| | | .SUFFIXES: |
| | |
| | | demoplugin.la: $(demoplugin_la_OBJECTS) $(demoplugin_la_DEPENDENCIES) $(EXTRA_demoplugin_la_DEPENDENCIES) |
| | | $(AM_V_CCLD)$(demoplugin_la_LINK) -rpath $(libdir) $(demoplugin_la_OBJECTS) $(demoplugin_la_LIBADD) $(LIBS) |
| | | |
| | | nucleus.la: $(nucleus_la_OBJECTS) $(nucleus_la_DEPENDENCIES) $(EXTRA_nucleus_la_DEPENDENCIES) |
| | | $(AM_V_CCLD)$(nucleus_la_LINK) -rpath $(libdir) $(nucleus_la_OBJECTS) $(nucleus_la_LIBADD) $(LIBS) |
| | | |
| | | plane_confinement.la: $(plane_confinement_la_OBJECTS) $(plane_confinement_la_DEPENDENCIES) $(EXTRA_plane_confinement_la_DEPENDENCIES) |
| | | $(AM_V_CCLD)$(plane_confinement_la_LINK) -rpath $(libdir) $(plane_confinement_la_OBJECTS) $(plane_confinement_la_LIBADD) $(LIBS) |
| | | |
| | | vmdefaulthardconstraints.la: $(vmdefaulthardconstraints_la_OBJECTS) $(vmdefaulthardconstraints_la_DEPENDENCIES) $(EXTRA_vmdefaulthardconstraints_la_DEPENDENCIES) |
| | | $(AM_V_CCLD)$(vmdefaulthardconstraints_la_LINK) -rpath $(libdir) $(vmdefaulthardconstraints_la_OBJECTS) $(vmdefaulthardconstraints_la_LIBADD) $(LIBS) |
| | | |
| | |
| | | |
| | | include ./$(DEPDIR)/default_hard_constraints.Plo |
| | | include ./$(DEPDIR)/demo_plugin.Plo |
| | | include ./$(DEPDIR)/nucleus.Plo |
| | | include ./$(DEPDIR)/plane_confinement.Plo |
| | | |
| | | .c.o: |
| | | $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< |
| | |
| | | AM_CFLAGS = -Wall -Werror -DTS_VERSION=\"$(GITVERSION)\" -fgnu89-inline -Wno-error=date-time -I.. |
| | | lib_LTLIBRARIES= demoplugin.la vmdefaulthardconstraints.la |
| | | lib_LTLIBRARIES= demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la |
| | | demoplugin_la_SOURCES= demo_plugin.c |
| | | demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | |
| | | vmdefaulthardconstraints_la_SOURCES = default_hard_constraints.c |
| | | vmdefaulthardconstraints_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | |
| | | nucleus_la_SOURCES = nucleus.c |
| | | nucleus_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | |
| | | plane_confinement_la_SOURCES = plane_confinement.c |
| | | plane_confinement_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | |
| | |
| | | demoplugin_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ |
| | | $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ |
| | | $(demoplugin_la_LDFLAGS) $(LDFLAGS) -o $@ |
| | | nucleus_la_LIBADD = |
| | | am_nucleus_la_OBJECTS = nucleus.lo |
| | | nucleus_la_OBJECTS = $(am_nucleus_la_OBJECTS) |
| | | nucleus_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ |
| | | $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ |
| | | $(nucleus_la_LDFLAGS) $(LDFLAGS) -o $@ |
| | | plane_confinement_la_LIBADD = |
| | | am_plane_confinement_la_OBJECTS = plane_confinement.lo |
| | | plane_confinement_la_OBJECTS = $(am_plane_confinement_la_OBJECTS) |
| | | plane_confinement_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ |
| | | $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ |
| | | $(AM_CFLAGS) $(CFLAGS) $(plane_confinement_la_LDFLAGS) \ |
| | | $(LDFLAGS) -o $@ |
| | | vmdefaulthardconstraints_la_LIBADD = |
| | | am_vmdefaulthardconstraints_la_OBJECTS = default_hard_constraints.lo |
| | | vmdefaulthardconstraints_la_OBJECTS = \ |
| | |
| | | am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) |
| | | am__v_CCLD_0 = @echo " CCLD " $@; |
| | | am__v_CCLD_1 = |
| | | SOURCES = $(demoplugin_la_SOURCES) \ |
| | | SOURCES = $(demoplugin_la_SOURCES) $(nucleus_la_SOURCES) \ |
| | | $(plane_confinement_la_SOURCES) \ |
| | | $(vmdefaulthardconstraints_la_SOURCES) |
| | | DIST_SOURCES = $(demoplugin_la_SOURCES) \ |
| | | DIST_SOURCES = $(demoplugin_la_SOURCES) $(nucleus_la_SOURCES) \ |
| | | $(plane_confinement_la_SOURCES) \ |
| | | $(vmdefaulthardconstraints_la_SOURCES) |
| | | am__can_run_installinfo = \ |
| | | case $$AM_UPDATE_INFO_DIR in \ |
| | |
| | | top_builddir = @top_builddir@ |
| | | top_srcdir = @top_srcdir@ |
| | | AM_CFLAGS = -Wall -Werror -DTS_VERSION=\"$(GITVERSION)\" -fgnu89-inline -Wno-error=date-time -I.. |
| | | lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la |
| | | lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la |
| | | demoplugin_la_SOURCES = demo_plugin.c |
| | | demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | vmdefaulthardconstraints_la_SOURCES = default_hard_constraints.c |
| | | vmdefaulthardconstraints_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | nucleus_la_SOURCES = nucleus.c |
| | | nucleus_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | plane_confinement_la_SOURCES = plane_confinement.c |
| | | plane_confinement_la_LDFLAGS = -module -avoid-version -export-dynamic |
| | | all: all-am |
| | | |
| | | .SUFFIXES: |
| | |
| | | demoplugin.la: $(demoplugin_la_OBJECTS) $(demoplugin_la_DEPENDENCIES) $(EXTRA_demoplugin_la_DEPENDENCIES) |
| | | $(AM_V_CCLD)$(demoplugin_la_LINK) -rpath $(libdir) $(demoplugin_la_OBJECTS) $(demoplugin_la_LIBADD) $(LIBS) |
| | | |
| | | nucleus.la: $(nucleus_la_OBJECTS) $(nucleus_la_DEPENDENCIES) $(EXTRA_nucleus_la_DEPENDENCIES) |
| | | $(AM_V_CCLD)$(nucleus_la_LINK) -rpath $(libdir) $(nucleus_la_OBJECTS) $(nucleus_la_LIBADD) $(LIBS) |
| | | |
| | | plane_confinement.la: $(plane_confinement_la_OBJECTS) $(plane_confinement_la_DEPENDENCIES) $(EXTRA_plane_confinement_la_DEPENDENCIES) |
| | | $(AM_V_CCLD)$(plane_confinement_la_LINK) -rpath $(libdir) $(plane_confinement_la_OBJECTS) $(plane_confinement_la_LIBADD) $(LIBS) |
| | | |
| | | vmdefaulthardconstraints.la: $(vmdefaulthardconstraints_la_OBJECTS) $(vmdefaulthardconstraints_la_DEPENDENCIES) $(EXTRA_vmdefaulthardconstraints_la_DEPENDENCIES) |
| | | $(AM_V_CCLD)$(vmdefaulthardconstraints_la_LINK) -rpath $(libdir) $(vmdefaulthardconstraints_la_OBJECTS) $(vmdefaulthardconstraints_la_LIBADD) $(LIBS) |
| | | |
| | |
| | | |
| | | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/default_hard_constraints.Plo@am__quote@ |
| | | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo_plugin.Plo@am__quote@ |
| | | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nucleus.Plo@am__quote@ |
| | | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plane_confinement.Plo@am__quote@ |
| | | |
| | | .c.o: |
| | | @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< |
| | |
| | | #include "vertex.h" |
| | | #include "cell.h" |
| | | char plugin_name[] = "Default hard constraints for vertex move"; |
| | | char plugin_description[]= "Checks proximity with neighbors and with foreign vertices"; |
| | | char plugin_description[]= "Checks proximity with neighbors, vertices in neighboring cells and with foreign vertices that may be in vicinity"; |
| | | char plugin_author[] = "SAMO PENIC"; |
| | | |
| | | ts_plugin_details *init (){ |
| | | // ts_fprintf(stdout,"Hello. Plugin %s is initiating. This will load the details section of the plugin\n", plugin_name); |
| | | |
| | | ts_plugin_details *details=(ts_plugin_details *)calloc(1,sizeof(ts_plugin_details)); |
| | | details->name = plugin_name; |
| | | return details; |
| | | } |
| | | |
| | | void at_start(int argc, char **argv){ |
| | | } |
| | | |
| | | void *after_vesicle_init(ts_vesicle *vesicle){ |
| | | ts_fprintf(stdout,"Plugin \"%s\" is loaded.\n", plugin_name); |
| | | return vesicle; |
| | | } |
| | | |
| | | ts_bool vm_hard_constraint(ts_vesicle *vesicle, ts_vertex *vtx, ts_vertex *ovtx){ |
| | |
| | | ts_uint cellidx; |
| | | ts_double dist; |
| | | ts_bool retval; |
| | | |
| | | //distance with neighbours check |
| | | for(i=0;i<vtx->neigh_no;i++){ |
| | | dist=vtx_distance_sq(vtx,vtx->neigh[i]); |
| | |
| | | return TS_SUCCESS; |
| | | } |
| | | |
| | | void cleanup(){ |
| | | ts_fprintf(stdout,"Goodbye from plugin %s. This functions clears what would be created in init...\n",plugin_name); |
| | | } |
New file |
| | |
| | | #include "plugins.h" |
| | | #include <stdlib.h> |
| | | #include "general.h" |
| | | #include "vertex.h" |
| | | #include "cell.h" |
| | | char plugin_name[] = "Nucleus"; |
| | | char plugin_description[]= "This plugin adds nucleus to the center of the vesicle. For now only vertexmove constraint is implemented."; |
| | | char plugin_author[] = "SAMO PENIC"; |
| | | |
| | | ts_plugin_details *init (){ |
| | | ts_plugin_details *details=(ts_plugin_details *)calloc(1,sizeof(ts_plugin_details)); |
| | | details->name = plugin_name; |
| | | return details; |
| | | } |
| | | |
| | | ts_bool vm_hard_constraint(ts_vesicle *vesicle, ts_vertex *vtx, ts_vertex *ovtx){ |
| | | // TODO: Maybe faster if checks only nucleus-neighboring cells |
| | | // Nucleus penetration check: |
| | | //#define SQ(x) x*x |
| | | if(vesicle->R_nucleus>0.0){ |
| | | 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){ |
| | | return TS_FAIL; |
| | | } |
| | | } else if(vesicle->R_nucleusX>0.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){ |
| | | return TS_FAIL; |
| | | } |
| | | |
| | | } |
| | | |
| | | return TS_SUCCESS; |
| | | } |
| | | |
New file |
| | |
| | | #include <stdlib.h> |
| | | #include "general.h" |
| | | #include "vertex.h" |
| | | #include "cell.h" |
| | | char plugin_name[] = "Plane confimenent"; |
| | | char plugin_description[]= "Confines vesicle between two planes d/2 above z=0 and d/2 below z=0. The plates squeeze vesicle with some predefined force."; |
| | | char plugin_author[] = "SAMO PENIC"; |
| | | |
| | | ts_plugin_details *init (){ |
| | | ts_plugin_details *details=(ts_plugin_details *)calloc(1,sizeof(ts_plugin_details)); |
| | | details->name = plugin_name; |
| | | return details; |
| | | } |
| | | |
| | | ts_bool vm_hard_constraint(ts_vesicle *vesicle, ts_vertex *vtx, ts_vertex *ovtx){ |
| | | |
| | | // plane confinement check whether the new position of vertex will be out of bounds |
| | | if(vesicle->tape->plane_confinement_switch){ |
| | | if(vtx->z>vesicle->confinement_plane.z_max || vtx->z<vesicle->confinement_plane.z_min){ |
| | | return TS_FAIL; |
| | | } |
| | | } |
| | | |
| | | return TS_SUCCESS; |
| | | } |
| | | |
| | |
| | | ts_double delta_energy, delta_energy_cv,oenergy,dvol=0.0, darea=0.0, dstretchenergy=0.0; |
| | | ts_double costheta,sintheta,phi,r; |
| | | //This will hold all the information of vtx and its neighbours |
| | | ts_vertex backupvtx[20], *constvol_vtx_moved=NULL, *constvol_vtx_backup=NULL; |
| | | memcpy((void *)&backupvtx[0],(void *)vtx,sizeof(ts_vertex)); |
| | | ts_vertex backupvtx[20], *constvol_vtx_moved=NULL, *constvol_vtx_backup=NULL; |
| | | memcpy((void *)&backupvtx[0],(void *)vtx,sizeof(ts_vertex)); |
| | | |
| | | //random move in a sphere with radius stepsize: |
| | | r=vesicle->stepsize*rn[0]; |
| | | phi=rn[1]*2*M_PI; |
| | | costheta=2*rn[2]-1; |
| | | sintheta=sqrt(1-pow(costheta,2)); |
| | | vtx->x=vtx->x+r*sintheta*cos(phi); |
| | | vtx->y=vtx->y+r*sintheta*sin(phi); |
| | | vtx->z=vtx->z+r*costheta; |
| | | //random move in a sphere with radius stepsize: |
| | | r=vesicle->stepsize*rn[0]; |
| | | phi=rn[1]*2*M_PI; |
| | | costheta=2*rn[2]-1; |
| | | sintheta=sqrt(1-pow(costheta,2)); |
| | | vtx->x=vtx->x+r*sintheta*cos(phi); |
| | | vtx->y=vtx->y+r*sintheta*sin(phi); |
| | | vtx->z=vtx->z+r*costheta; |
| | | |
| | | |
| | | // TODO: Maybe faster if checks only nucleus-neighboring cells |
| | | // Nucleus penetration check: |
| | | //#define SQ(x) x*x |
| | | if(vesicle->R_nucleus>0.0){ |
| | | 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 ((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; |
| | | } |
| | | |
| | | } |
| | | |
| | | // plane confinement check whether the new position of vertex will be out of bounds |
| | | // plane confinement check whether the new position of vertex will be out of bounds |
| | | if(vesicle->tape->plane_confinement_switch){ |
| | | if(vtx->z>vesicle->confinement_plane.z_max || vtx->z<vesicle->confinement_plane.z_min){ |
| | | vtx=memcpy((void *)vtx,(void *)&backupvtx[0],sizeof(ts_vertex)); |
| | | return TS_FAIL; |
| | | } |
| | | } |
| | | //#undef SQ |
| | | |
| | | /* Entry point for plugin vm_hard_constraint() function */ |
| | | for(i=0; i<vesicle->plist->n;i++){ |
| | | retval = vesicle->plist->plugin[i]->function->vm_hard_constraint(vesicle,vtx,&backupvtx[0]); |
| | | ts_plugin_chain *ptr=vesicle->plist->chain->vm_hard_constraint; |
| | | while(ptr!=NULL){ |
| | | retval = ptr->plugin->function->vm_hard_constraint(vesicle,vtx, &backupvtx[0]); |
| | | if(retval==TS_FAIL){ |
| | | vtx=memcpy((void *)vtx,(void *)&backupvtx[0],sizeof(ts_vertex)); |
| | | return TS_FAIL; |
| | | } |
| | | ptr=ptr->next; |
| | | } |
| | | |
| | | |
| | | |
| | | //if all the tests are successful, then energy for vtx and neighbours is calculated |
| | | for(i=0;i<vtx->neigh_no;i++){ |