From 4df6ed05246cf8bc9fe0cb0c8766ebc368d2f512 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Sat, 09 Mar 2019 19:33:51 +0000 Subject: [PATCH] Added stretching energy plugin --- src/main.c | 7 + src/plugins/Makefile.am | 6 + src/plugins/Makefile | 18 +++++ src/plugins/Makefile.in | 18 +++++ src/plugins/stretching_energy.c | 75 +++++++++++++++++++++++++ 5 files changed, 117 insertions(+), 7 deletions(-) diff --git a/src/main.c b/src/main.c index bf58e53..dfe7130 100644 --- a/src/main.c +++ b/src/main.c @@ -32,20 +32,23 @@ ts_char *plugin3 = (ts_char *)calloc(255,sizeof(ts_char)); 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)); 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"); strcpy(plugin3,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/pressure.so"); 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"); - ts_char **plugins=(ts_char **)calloc(6,sizeof(ts_char *)); + strcpy(plugin6,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/stretching_energy.so"); + ts_char **plugins=(ts_char **)calloc(7,sizeof(ts_char *)); plugins[0]=plugin0; plugins[1]=plugin1; plugins[2]=plugin2; plugins[3]=plugin3; plugins[4]=plugin4; plugins[5]=plugin5; - ts_plugin_list *plist=init_plugin_list(plugins,6); + plugins[6]=plugin6; + ts_plugin_list *plist=init_plugin_list(plugins,7); //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 9b25029..28ebbd4 100644 --- a/src/plugins/Makefile +++ b/src/plugins/Makefile @@ -170,6 +170,13 @@ pressure_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(pressure_la_LDFLAGS) $(LDFLAGS) -o $@ +stretching_energy_la_LIBADD = +am_stretching_energy_la_OBJECTS = constant_area.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) \ + $(AM_CFLAGS) $(CFLAGS) $(stretching_energy_la_LDFLAGS) \ + $(LDFLAGS) -o $@ vmdefaulthardconstraints_la_LIBADD = am_vmdefaulthardconstraints_la_OBJECTS = default_hard_constraints.lo vmdefaulthardconstraints_la_OBJECTS = \ @@ -215,11 +222,13 @@ 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) \ $(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) $(vmdefaulthardconstraints_la_SOURCES) + $(pressure_la_SOURCES) $(stretching_energy_la_SOURCES) \ + $(vmdefaulthardconstraints_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -368,7 +377,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 +lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la stretching_energy.la demoplugin_la_SOURCES = demo_plugin.c demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic vmdefaulthardconstraints_la_SOURCES = default_hard_constraints.c @@ -383,6 +392,8 @@ 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_LDFLAGS = -module -avoid-version -export-dynamic all: all-am .SUFFIXES: @@ -470,6 +481,9 @@ pressure.la: $(pressure_la_OBJECTS) $(pressure_la_DEPENDENCIES) $(EXTRA_pressure_la_DEPENDENCIES) $(AM_V_CCLD)$(pressure_la_LINK) -rpath $(libdir) $(pressure_la_OBJECTS) $(pressure_la_LIBADD) $(LIBS) +stretching_energy.la: $(stretching_energy_la_OBJECTS) $(stretching_energy_la_DEPENDENCIES) $(EXTRA_stretching_energy_la_DEPENDENCIES) + $(AM_V_CCLD)$(stretching_energy_la_LINK) -rpath $(libdir) $(stretching_energy_la_OBJECTS) $(stretching_energy_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) diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am index b3cfafe..dacef43 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 +lib_LTLIBRARIES= demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la stretching_energy.la demoplugin_la_SOURCES= demo_plugin.c demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic @@ -21,3 +21,7 @@ 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_LDFLAGS = -module -avoid-version -export-dynamic + + diff --git a/src/plugins/Makefile.in b/src/plugins/Makefile.in index cd076f8..d7fca36 100644 --- a/src/plugins/Makefile.in +++ b/src/plugins/Makefile.in @@ -170,6 +170,13 @@ pressure_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(pressure_la_LDFLAGS) $(LDFLAGS) -o $@ +stretching_energy_la_LIBADD = +am_stretching_energy_la_OBJECTS = constant_area.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) \ + $(AM_CFLAGS) $(CFLAGS) $(stretching_energy_la_LDFLAGS) \ + $(LDFLAGS) -o $@ vmdefaulthardconstraints_la_LIBADD = am_vmdefaulthardconstraints_la_OBJECTS = default_hard_constraints.lo vmdefaulthardconstraints_la_OBJECTS = \ @@ -215,11 +222,13 @@ 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) \ $(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) $(vmdefaulthardconstraints_la_SOURCES) + $(pressure_la_SOURCES) $(stretching_energy_la_SOURCES) \ + $(vmdefaulthardconstraints_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -368,7 +377,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 +lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la stretching_energy.la demoplugin_la_SOURCES = demo_plugin.c demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic vmdefaulthardconstraints_la_SOURCES = default_hard_constraints.c @@ -383,6 +392,8 @@ 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_LDFLAGS = -module -avoid-version -export-dynamic all: all-am .SUFFIXES: @@ -470,6 +481,9 @@ pressure.la: $(pressure_la_OBJECTS) $(pressure_la_DEPENDENCIES) $(EXTRA_pressure_la_DEPENDENCIES) $(AM_V_CCLD)$(pressure_la_LINK) -rpath $(libdir) $(pressure_la_OBJECTS) $(pressure_la_LIBADD) $(LIBS) +stretching_energy.la: $(stretching_energy_la_OBJECTS) $(stretching_energy_la_DEPENDENCIES) $(EXTRA_stretching_energy_la_DEPENDENCIES) + $(AM_V_CCLD)$(stretching_energy_la_LINK) -rpath $(libdir) $(stretching_energy_la_OBJECTS) $(stretching_energy_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) diff --git a/src/plugins/stretching_energy.c b/src/plugins/stretching_energy.c new file mode 100644 index 0000000..fd44c52 --- /dev/null +++ b/src/plugins/stretching_energy.c @@ -0,0 +1,75 @@ +#include <stdlib.h> +#include<math.h> + +#include "general.h" +#include "vertex.h" +#include "cell.h" +#include "vesicle.h" +#include "frame.h" +char plugin_name[] = "Stretching energy"; +char plugin_description[]= "Plugin adds stretching energy to Monte Carlo steps"; +char plugin_author[] = "SAMO PENIC"; + + +typedef struct { + ts_double dstretchenergy; + ts_double A0; + ts_double epsarea; +} plugin_data; + + +ts_plugin_details *init (){ + ts_plugin_details *details=(ts_plugin_details *)calloc(1,sizeof(ts_plugin_details)); + details->name = plugin_name; + details->data = (plugin_data *)calloc(1,sizeof(plugin_data)); //storing data + return details; +} + + +/* +ts_vesicle *after_vesicle_init(ts_vesicle *vesicle){ + plugin_data *data=(plugin_data *)vesicle->plist->pointer->plugin->details->data; + ts_fprintf(stdout,"area volume initialized\n"); + centermass(vesicle); + cell_occupation(vesicle); + vesicle_area(vesicle); + data->A0=vesicle->area; + data->epsarea=data->A0/(ts_double)vesicle->tlist->n; + return vesicle; +} +*/ + +void vm_energy_before_prepare(ts_vesicle *vesicle, ts_vertex *vtx){ + if(vesicle->tape->stretchswitch==1){ + plugin_data *data=(plugin_data *)vesicle->plist->pointer->plugin->details->data; + ts_uint i; + data->dstretchenergy=0.0; + for(i=0;i<vtx->tristar_no;i++) data->dstretchenergy-=vtx->tristar[i]->energy; + } +} + + +ts_double vm_energy_after_execute(ts_vesicle *vesicle, ts_vertex *vtx){ + //stretching energy 2 of 3 + if(vesicle->tape->stretchswitch==1){ + plugin_data *data=(plugin_data *)vesicle->plist->pointer->plugin->details->data; + ts_uint i; + for(i=0;i<vtx->tristar_no;i++){ + stretchenergy(vesicle, vtx->tristar[i]); + data->dstretchenergy+=vtx->tristar[i]->energy; + } + } + return data->dstretchenergy; +} + + + +void vm_new_state_rejected(ts_vesicle *vesicle, ts_vertex *vtx, ts_vertex *old_vtx){ + //stretching energy 3 of 3 + if(vesicle->tape->stretchswitch==1){ + ts_uint i; + for(i=0;i<vtx->tristar_no;i++){ + stretchenergy(vesicle,vtx->tristar[i]); + } + } +} -- Gitblit v1.9.3