From 2c4278db6ead5c27e30a3000097ed898c968534e Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Sat, 09 Mar 2019 19:45:22 +0000 Subject: [PATCH] Added direct force plugin and fixes in stretching energy --- src/main.c | 7 + src/plugins/Makefile.am | 6 + src/plugins/Makefile | 31 +++++++-- src/plugins/Makefile.in | 31 +++++++-- src/vertexmove.c | 31 --------- src/plugins/direct_force_on_c0.c | 22 +++++++ src/plugins/stretching_energy.c | 9 +- 7 files changed, 83 insertions(+), 54 deletions(-) diff --git a/src/main.c b/src/main.c index dfe7130..ecf9678 100644 --- a/src/main.c +++ b/src/main.c @@ -33,6 +33,7 @@ ts_char *plugin4 = (ts_char *)calloc(255,sizeof(ts_char)); ts_char *plugin5 = (ts_char *)calloc(255,sizeof(ts_char)); ts_char *plugin6 = (ts_char *)calloc(255,sizeof(ts_char)); + ts_char *plugin7 = (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"); strcpy(plugin2,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/plane_confinement.so"); @@ -40,7 +41,8 @@ strcpy(plugin4,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/constant_volume.so"); strcpy(plugin5,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/constant_area.so"); strcpy(plugin6,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/stretching_energy.so"); - ts_char **plugins=(ts_char **)calloc(7,sizeof(ts_char *)); + strcpy(plugin7,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/direct_force_on_c0.so"); + ts_char **plugins=(ts_char **)calloc(8,sizeof(ts_char *)); plugins[0]=plugin0; plugins[1]=plugin1; plugins[2]=plugin2; @@ -48,7 +50,8 @@ plugins[4]=plugin4; plugins[5]=plugin5; plugins[6]=plugin6; - ts_plugin_list *plist=init_plugin_list(plugins,7); + plugins[7]=plugin7; + ts_plugin_list *plist=init_plugin_list(plugins,8); //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; diff --git a/src/plugins/Makefile b/src/plugins/Makefile index 28ebbd4..c1d5e65 100644 --- a/src/plugins/Makefile +++ b/src/plugins/Makefile @@ -151,6 +151,13 @@ demoplugin_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(demoplugin_la_LDFLAGS) $(LDFLAGS) -o $@ +direct_force_on_c0_la_LIBADD = +am_direct_force_on_c0_la_OBJECTS = direct_force_on_c0.lo +direct_force_on_c0_la_OBJECTS = $(am_direct_force_on_c0_la_OBJECTS) +direct_force_on_c0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(direct_force_on_c0_la_LDFLAGS) \ + $(LDFLAGS) -o $@ nucleus_la_LIBADD = am_nucleus_la_OBJECTS = nucleus.lo nucleus_la_OBJECTS = $(am_nucleus_la_OBJECTS) @@ -171,7 +178,7 @@ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(pressure_la_LDFLAGS) $(LDFLAGS) -o $@ stretching_energy_la_LIBADD = -am_stretching_energy_la_OBJECTS = constant_area.lo +am_stretching_energy_la_OBJECTS = stretching_energy.lo stretching_energy_la_OBJECTS = $(am_stretching_energy_la_OBJECTS) stretching_energy_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ @@ -220,14 +227,15 @@ am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(constant_area_la_SOURCES) $(constant_volume_la_SOURCES) \ - $(demoplugin_la_SOURCES) $(nucleus_la_SOURCES) \ - $(plane_confinement_la_SOURCES) $(pressure_la_SOURCES) \ - $(stretching_energy_la_SOURCES) \ + $(demoplugin_la_SOURCES) $(direct_force_on_c0_la_SOURCES) \ + $(nucleus_la_SOURCES) $(plane_confinement_la_SOURCES) \ + $(pressure_la_SOURCES) $(stretching_energy_la_SOURCES) \ $(vmdefaulthardconstraints_la_SOURCES) DIST_SOURCES = $(constant_area_la_SOURCES) \ $(constant_volume_la_SOURCES) $(demoplugin_la_SOURCES) \ - $(nucleus_la_SOURCES) $(plane_confinement_la_SOURCES) \ - $(pressure_la_SOURCES) $(stretching_energy_la_SOURCES) \ + $(direct_force_on_c0_la_SOURCES) $(nucleus_la_SOURCES) \ + $(plane_confinement_la_SOURCES) $(pressure_la_SOURCES) \ + $(stretching_energy_la_SOURCES) \ $(vmdefaulthardconstraints_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ @@ -377,7 +385,7 @@ top_builddir = ../.. top_srcdir = ../.. AM_CFLAGS = -Wall -Werror -DTS_VERSION=\"$(GITVERSION)\" -fgnu89-inline -Wno-error=date-time -I.. -lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la stretching_energy.la +lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la stretching_energy.la direct_force_on_c0.la demoplugin_la_SOURCES = demo_plugin.c demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic vmdefaulthardconstraints_la_SOURCES = default_hard_constraints.c @@ -392,8 +400,10 @@ constant_volume_la_LDFLAGS = -module -avoid-version -export-dynamic constant_area_la_SOURCES = constant_area.c constant_area_la_LDFLAGS = -module -avoid-version -export-dynamic -stretching_energy_la_SOURCES = constant_area.c +stretching_energy_la_SOURCES = stretching_energy.c stretching_energy_la_LDFLAGS = -module -avoid-version -export-dynamic +direct_force_on_c0_la_SOURCES = direct_force_on_c0.c +direct_force_on_c0_la_LDFLAGS = -module -avoid-version -export-dynamic all: all-am .SUFFIXES: @@ -472,6 +482,9 @@ 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) +direct_force_on_c0.la: $(direct_force_on_c0_la_OBJECTS) $(direct_force_on_c0_la_DEPENDENCIES) $(EXTRA_direct_force_on_c0_la_DEPENDENCIES) + $(AM_V_CCLD)$(direct_force_on_c0_la_LINK) -rpath $(libdir) $(direct_force_on_c0_la_OBJECTS) $(direct_force_on_c0_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) @@ -497,9 +510,11 @@ include ./$(DEPDIR)/constant_volume.Plo include ./$(DEPDIR)/default_hard_constraints.Plo include ./$(DEPDIR)/demo_plugin.Plo +include ./$(DEPDIR)/direct_force_on_c0.Plo include ./$(DEPDIR)/nucleus.Plo include ./$(DEPDIR)/plane_confinement.Plo include ./$(DEPDIR)/pressure.Plo +include ./$(DEPDIR)/stretching_energy.Plo .c.o: $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am index dacef43..59af951 100644 --- a/src/plugins/Makefile.am +++ b/src/plugins/Makefile.am @@ -1,5 +1,5 @@ AM_CFLAGS = -Wall -Werror -DTS_VERSION=\"$(GITVERSION)\" -fgnu89-inline -Wno-error=date-time -I.. -lib_LTLIBRARIES= demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la stretching_energy.la +lib_LTLIBRARIES= demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la stretching_energy.la direct_force_on_c0.la demoplugin_la_SOURCES= demo_plugin.c demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic @@ -21,7 +21,9 @@ constant_area_la_SOURCES = constant_area.c constant_area_la_LDFLAGS = -module -avoid-version -export-dynamic -stretching_energy_la_SOURCES = constant_area.c +stretching_energy_la_SOURCES = stretching_energy.c stretching_energy_la_LDFLAGS = -module -avoid-version -export-dynamic +direct_force_on_c0_la_SOURCES = direct_force_on_c0.c +direct_force_on_c0_la_LDFLAGS = -module -avoid-version -export-dynamic diff --git a/src/plugins/Makefile.in b/src/plugins/Makefile.in index d7fca36..cc92f88 100644 --- a/src/plugins/Makefile.in +++ b/src/plugins/Makefile.in @@ -151,6 +151,13 @@ demoplugin_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(demoplugin_la_LDFLAGS) $(LDFLAGS) -o $@ +direct_force_on_c0_la_LIBADD = +am_direct_force_on_c0_la_OBJECTS = direct_force_on_c0.lo +direct_force_on_c0_la_OBJECTS = $(am_direct_force_on_c0_la_OBJECTS) +direct_force_on_c0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(direct_force_on_c0_la_LDFLAGS) \ + $(LDFLAGS) -o $@ nucleus_la_LIBADD = am_nucleus_la_OBJECTS = nucleus.lo nucleus_la_OBJECTS = $(am_nucleus_la_OBJECTS) @@ -171,7 +178,7 @@ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(pressure_la_LDFLAGS) $(LDFLAGS) -o $@ stretching_energy_la_LIBADD = -am_stretching_energy_la_OBJECTS = constant_area.lo +am_stretching_energy_la_OBJECTS = stretching_energy.lo stretching_energy_la_OBJECTS = $(am_stretching_energy_la_OBJECTS) stretching_energy_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ @@ -220,14 +227,15 @@ am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(constant_area_la_SOURCES) $(constant_volume_la_SOURCES) \ - $(demoplugin_la_SOURCES) $(nucleus_la_SOURCES) \ - $(plane_confinement_la_SOURCES) $(pressure_la_SOURCES) \ - $(stretching_energy_la_SOURCES) \ + $(demoplugin_la_SOURCES) $(direct_force_on_c0_la_SOURCES) \ + $(nucleus_la_SOURCES) $(plane_confinement_la_SOURCES) \ + $(pressure_la_SOURCES) $(stretching_energy_la_SOURCES) \ $(vmdefaulthardconstraints_la_SOURCES) DIST_SOURCES = $(constant_area_la_SOURCES) \ $(constant_volume_la_SOURCES) $(demoplugin_la_SOURCES) \ - $(nucleus_la_SOURCES) $(plane_confinement_la_SOURCES) \ - $(pressure_la_SOURCES) $(stretching_energy_la_SOURCES) \ + $(direct_force_on_c0_la_SOURCES) $(nucleus_la_SOURCES) \ + $(plane_confinement_la_SOURCES) $(pressure_la_SOURCES) \ + $(stretching_energy_la_SOURCES) \ $(vmdefaulthardconstraints_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ @@ -377,7 +385,7 @@ 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 nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la stretching_energy.la +lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la stretching_energy.la direct_force_on_c0.la demoplugin_la_SOURCES = demo_plugin.c demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic vmdefaulthardconstraints_la_SOURCES = default_hard_constraints.c @@ -392,8 +400,10 @@ constant_volume_la_LDFLAGS = -module -avoid-version -export-dynamic constant_area_la_SOURCES = constant_area.c constant_area_la_LDFLAGS = -module -avoid-version -export-dynamic -stretching_energy_la_SOURCES = constant_area.c +stretching_energy_la_SOURCES = stretching_energy.c stretching_energy_la_LDFLAGS = -module -avoid-version -export-dynamic +direct_force_on_c0_la_SOURCES = direct_force_on_c0.c +direct_force_on_c0_la_LDFLAGS = -module -avoid-version -export-dynamic all: all-am .SUFFIXES: @@ -472,6 +482,9 @@ 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) +direct_force_on_c0.la: $(direct_force_on_c0_la_OBJECTS) $(direct_force_on_c0_la_DEPENDENCIES) $(EXTRA_direct_force_on_c0_la_DEPENDENCIES) + $(AM_V_CCLD)$(direct_force_on_c0_la_LINK) -rpath $(libdir) $(direct_force_on_c0_la_OBJECTS) $(direct_force_on_c0_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) @@ -497,9 +510,11 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/constant_volume.Plo@am__quote@ @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)/direct_force_on_c0.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@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pressure.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stretching_energy.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< diff --git a/src/plugins/direct_force_on_c0.c b/src/plugins/direct_force_on_c0.c new file mode 100644 index 0000000..94a1a7c --- /dev/null +++ b/src/plugins/direct_force_on_c0.c @@ -0,0 +1,22 @@ +#include <stdlib.h> +#include<math.h> + +#include "general.h" +#include "energy.h" +char plugin_name[] = "Direct force on curved proteins"; +char plugin_description[]= "Plugin for applying direct normal force on curved proteins (c0>0)"; +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_double vm_energy_after_execute(ts_vesicle *vesicle, ts_vertex *vtx, ts_vertex *backup_vertices){ + return direct_force_energy(vesicle,vtx,&backup_vertices[0]); +} + + diff --git a/src/plugins/stretching_energy.c b/src/plugins/stretching_energy.c index fd44c52..2c537f4 100644 --- a/src/plugins/stretching_energy.c +++ b/src/plugins/stretching_energy.c @@ -2,10 +2,8 @@ #include<math.h> #include "general.h" -#include "vertex.h" -#include "cell.h" -#include "vesicle.h" -#include "frame.h" +#include "energy.h" + char plugin_name[] = "Stretching energy"; char plugin_description[]= "Plugin adds stretching energy to Monte Carlo steps"; char plugin_author[] = "SAMO PENIC"; @@ -58,8 +56,9 @@ stretchenergy(vesicle, vtx->tristar[i]); data->dstretchenergy+=vtx->tristar[i]->energy; } + return data->dstretchenergy; } - return data->dstretchenergy; + return 0.0; } diff --git a/src/vertexmove.c b/src/vertexmove.c index 2b08dc8..362b895 100644 --- a/src/vertexmove.c +++ b/src/vertexmove.c @@ -20,7 +20,7 @@ ts_uint i; ts_bool retval; ts_uint cellidx; - ts_double delta_energy, oenergy,dstretchenergy=0.0; + ts_double delta_energy, oenergy; 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; @@ -62,12 +62,6 @@ } /* End of vm_energy_before_prepare() */ - //stretching energy 1 of 3 - if(vesicle->tape->stretchswitch==1){ - for(i=0;i<vtx->tristar_no;i++) dstretchenergy-=vtx->tristar[i]->energy; - } - delta_energy=0; - //update the normals of triangles that share bead i. for(i=0;i<vtx->tristar_no;i++) triangle_normal_vector(vtx->tristar[i]); oenergy=vtx->energy; @@ -80,7 +74,6 @@ delta_energy+=vtx->neigh[i]->xk*(vtx->neigh[i]->energy-oenergy); } - /* Entry point for plugin vm_energy_after_execute() */ vesicle->plist->pointer=vesicle->plist->chain->vm_energy_after_execute; @@ -88,21 +81,9 @@ delta_energy+=vesicle->plist->pointer->plugin->function->vm_energy_after_execute(vesicle, vtx, backupvtx); vesicle->plist->pointer=vesicle->plist->pointer->next; } +/* End of vm_energy_after_execute() */ -/* Vertices with spontaneous curvature may have spontaneous force perpendicular to the surface of the vesicle. additional delta energy is calculated in this function */ - delta_energy+=direct_force_energy(vesicle,vtx,backupvtx); - - //stretching energy 2 of 3 - if(vesicle->tape->stretchswitch==1){ - for(i=0;i<vtx->tristar_no;i++){ - stretchenergy(vesicle, vtx->tristar[i]); - dstretchenergy+=vtx->tristar[i]->energy; - } - } - - delta_energy+=dstretchenergy; - /* No poly-bond energy for now! if(vtx->grafted_poly!=NULL){ delta_energy+= @@ -153,14 +134,6 @@ //update the normals of triangles that share bead i. for(i=0;i<vtx->tristar_no;i++) triangle_normal_vector(vtx->tristar[i]); - - //stretching energy 3 of 3 - if(vesicle->tape->stretchswitch==1){ - for(i=0;i<vtx->tristar_no;i++){ - stretchenergy(vesicle,vtx->tristar[i]); - } - } - /* Entry point for plugin vm_before_montecarlo_constraint() function */ -- Gitblit v1.9.3