Trisurf Monte Carlo simulator
Samo Penic
2019-03-08 5e08f27fac51e8f7261cd4484ab8878befac8fe1
Constant area plugin done
1 files added
5 files modified
152 ■■■■ changed files
src/main.c 7 ●●●● patch | view | raw | blame | history
src/plugins/Makefile 31 ●●●● patch | view | raw | blame | history
src/plugins/Makefile.am 5 ●●●● patch | view | raw | blame | history
src/plugins/Makefile.in 31 ●●●● patch | view | raw | blame | history
src/plugins/constant_area.c 67 ●●●●● patch | view | raw | blame | history
src/vertexmove.c 11 ●●●● patch | view | raw | blame | history
src/main.c
@@ -31,18 +31,21 @@
    ts_char *plugin2 = (ts_char *)calloc(255,sizeof(ts_char));
    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));
    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");
    ts_char **plugins=(ts_char **)calloc(5,sizeof(ts_char *));
    strcpy(plugin5,"/home/samo/programiranje/trisurf-ng/src/plugins/.libs/constant_area.so");
    ts_char **plugins=(ts_char **)calloc(6,sizeof(ts_char *));
    plugins[0]=plugin0;
    plugins[1]=plugin1;
    plugins[2]=plugin2;
    plugins[3]=plugin3;
    plugins[4]=plugin4;
    ts_plugin_list *plist=init_plugin_list(plugins,5);
    plugins[5]=plugin5;
    ts_plugin_list *plist=init_plugin_list(plugins,6);
    //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;
src/plugins/Makefile
@@ -127,13 +127,20 @@
  }
am__installdirs = "$(DESTDIR)$(libdir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
constant_volume_la_LIBADD =
am_constant_volume_la_OBJECTS = constant_volume.lo
constant_volume_la_OBJECTS = $(am_constant_volume_la_OBJECTS)
constant_area_la_LIBADD =
am_constant_area_la_OBJECTS = constant_area.lo
constant_area_la_OBJECTS = $(am_constant_area_la_OBJECTS)
AM_V_lt = $(am__v_lt_$(V))
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
am__v_lt_0 = --silent
am__v_lt_1 = 
constant_area_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
    $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
    $(AM_CFLAGS) $(CFLAGS) $(constant_area_la_LDFLAGS) $(LDFLAGS) \
    -o $@
constant_volume_la_LIBADD =
am_constant_volume_la_OBJECTS = constant_volume.lo
constant_volume_la_OBJECTS = $(am_constant_volume_la_OBJECTS)
constant_volume_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
    $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
    $(AM_CFLAGS) $(CFLAGS) $(constant_volume_la_LDFLAGS) \
@@ -205,10 +212,12 @@
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
am__v_CCLD_0 = @echo "  CCLD    " $@;
am__v_CCLD_1 = 
SOURCES = $(constant_volume_la_SOURCES) $(demoplugin_la_SOURCES) \
    $(nucleus_la_SOURCES) $(plane_confinement_la_SOURCES) \
    $(pressure_la_SOURCES) $(vmdefaulthardconstraints_la_SOURCES)
DIST_SOURCES = $(constant_volume_la_SOURCES) $(demoplugin_la_SOURCES) \
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)
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)
am__can_run_installinfo = \
@@ -359,7 +368,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
lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la
demoplugin_la_SOURCES = demo_plugin.c
demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic
vmdefaulthardconstraints_la_SOURCES = default_hard_constraints.c
@@ -372,6 +381,8 @@
pressure_la_LDFLAGS = -module -avoid-version -export-dynamic
constant_volume_la_SOURCES = constant_volume.c 
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
all: all-am
.SUFFIXES:
@@ -441,6 +452,9 @@
      rm -f $${locs}; \
    }
constant_area.la: $(constant_area_la_OBJECTS) $(constant_area_la_DEPENDENCIES) $(EXTRA_constant_area_la_DEPENDENCIES)
    $(AM_V_CCLD)$(constant_area_la_LINK) -rpath $(libdir) $(constant_area_la_OBJECTS) $(constant_area_la_LIBADD) $(LIBS)
constant_volume.la: $(constant_volume_la_OBJECTS) $(constant_volume_la_DEPENDENCIES) $(EXTRA_constant_volume_la_DEPENDENCIES) 
    $(AM_V_CCLD)$(constant_volume_la_LINK) -rpath $(libdir) $(constant_volume_la_OBJECTS) $(constant_volume_la_LIBADD) $(LIBS)
@@ -465,6 +479,7 @@
distclean-compile:
    -rm -f *.tab.c
include ./$(DEPDIR)/constant_area.Plo
include ./$(DEPDIR)/constant_volume.Plo
include ./$(DEPDIR)/default_hard_constraints.Plo
include ./$(DEPDIR)/demo_plugin.Plo
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
lib_LTLIBRARIES= demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la
demoplugin_la_SOURCES= demo_plugin.c
demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic
@@ -18,3 +18,6 @@
constant_volume_la_SOURCES = constant_volume.c 
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
src/plugins/Makefile.in
@@ -127,13 +127,20 @@
  }
am__installdirs = "$(DESTDIR)$(libdir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
constant_volume_la_LIBADD =
am_constant_volume_la_OBJECTS = constant_volume.lo
constant_volume_la_OBJECTS = $(am_constant_volume_la_OBJECTS)
constant_area_la_LIBADD =
am_constant_area_la_OBJECTS = constant_area.lo
constant_area_la_OBJECTS = $(am_constant_area_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 = 
constant_area_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
    $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
    $(AM_CFLAGS) $(CFLAGS) $(constant_area_la_LDFLAGS) $(LDFLAGS) \
    -o $@
constant_volume_la_LIBADD =
am_constant_volume_la_OBJECTS = constant_volume.lo
constant_volume_la_OBJECTS = $(am_constant_volume_la_OBJECTS)
constant_volume_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
    $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
    $(AM_CFLAGS) $(CFLAGS) $(constant_volume_la_LDFLAGS) \
@@ -205,10 +212,12 @@
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo "  CCLD    " $@;
am__v_CCLD_1 = 
SOURCES = $(constant_volume_la_SOURCES) $(demoplugin_la_SOURCES) \
    $(nucleus_la_SOURCES) $(plane_confinement_la_SOURCES) \
    $(pressure_la_SOURCES) $(vmdefaulthardconstraints_la_SOURCES)
DIST_SOURCES = $(constant_volume_la_SOURCES) $(demoplugin_la_SOURCES) \
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)
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)
am__can_run_installinfo = \
@@ -359,7 +368,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
lib_LTLIBRARIES = demoplugin.la vmdefaulthardconstraints.la nucleus.la plane_confinement.la pressure.la constant_volume.la constant_area.la
demoplugin_la_SOURCES = demo_plugin.c
demoplugin_la_LDFLAGS = -module -avoid-version -export-dynamic
vmdefaulthardconstraints_la_SOURCES = default_hard_constraints.c
@@ -372,6 +381,8 @@
pressure_la_LDFLAGS = -module -avoid-version -export-dynamic
constant_volume_la_SOURCES = constant_volume.c 
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
all: all-am
.SUFFIXES:
@@ -441,6 +452,9 @@
      rm -f $${locs}; \
    }
constant_area.la: $(constant_area_la_OBJECTS) $(constant_area_la_DEPENDENCIES) $(EXTRA_constant_area_la_DEPENDENCIES)
    $(AM_V_CCLD)$(constant_area_la_LINK) -rpath $(libdir) $(constant_area_la_OBJECTS) $(constant_area_la_LIBADD) $(LIBS)
constant_volume.la: $(constant_volume_la_OBJECTS) $(constant_volume_la_DEPENDENCIES) $(EXTRA_constant_volume_la_DEPENDENCIES) 
    $(AM_V_CCLD)$(constant_volume_la_LINK) -rpath $(libdir) $(constant_volume_la_OBJECTS) $(constant_volume_la_LIBADD) $(LIBS)
@@ -465,6 +479,7 @@
distclean-compile:
    -rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/constant_area.Plo@am__quote@
@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@
src/plugins/constant_area.c
New file
@@ -0,0 +1,67 @@
#include <stdlib.h>
#include<math.h>
#include "general.h"
#include "vertex.h"
#include "cell.h"
#include "vesicle.h"
#include "frame.h"
char plugin_name[] = "Constant area";
char plugin_description[]= "Plugin that enables constant area of the vesicle.";
char plugin_author[] = "SAMO PENIC";
typedef struct {
    ts_double darea;
    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->constareaswitch>0){
        plugin_data *data=(plugin_data *)vesicle->plist->pointer->plugin->details->data;
        data->darea=0;
        ts_uint i;
        for(i=0;i<vtx->tristar_no;i++) data->darea-=vtx->tristar[i]->area;
    }
}
ts_double vm_before_montecarlo_constraint(ts_vesicle *vesicle, ts_vertex *vtx, ts_vertex *old_vtx){
    if(vesicle->tape->constareaswitch>0){
        plugin_data *data=(plugin_data *)vesicle->plist->pointer->plugin->details->data;
        ts_uint i;
        for(i=0;i<vtx->tristar_no;i++) data->darea+=vtx->tristar[i]->area;
            if(fabs(vesicle->area+data->darea-data->A0)>data->epsarea) return TS_FAIL;
    }
    return TS_SUCCESS;
}
void vm_new_state_accepted(ts_vesicle *vesicle, ts_vertex *vtx, ts_vertex *old_vtx){
    if(vesicle->tape->constareaswitch >0){
        plugin_data *data=(plugin_data *)vesicle->plist->pointer->plugin->details->data;
        vesicle->area+=data->darea;
    }
}
src/vertexmove.c
@@ -60,22 +60,15 @@
        vesicle->plist->pointer->plugin->function->vm_energy_before_prepare(vesicle, vtx);
        vesicle->plist->pointer=vesicle->plist->pointer->next;
    }
/* End of vm_energy_before_prepare() */
    if(vesicle->tape->constareaswitch==2){
        for(i=0;i<vtx->tristar_no;i++) darea-=vtx->tristar[i]->area;
    }
    //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;
//    vesicle_volume(vesicle);
//    fprintf(stderr,"Volume in the beginning=%1.16e\n", vesicle->volume);
    //update the normals of triangles that share bead i.
//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;
    energy_vertex(vtx);