Trisurf Monte Carlo simulator
Samo Penic
2018-12-25 08559613e0fe7c23d329092679a2ff347a92ff4f
src/plugins.c
@@ -1,28 +1,91 @@
/* This is a first attempt in implementation of plugins to Trisurf-ng. */
/*
1. Capabilities of Plugin
-------------------------
Every plugin should list it's capabilities -- that is what subrutines are available in it. Capabilities list for the moment are:
Options for tape:
* PLUGIN_PROGRAM_START (requires subrutine void at_start(void)): runs at startup
* PLUGIN_VESICLE_INITIALIZED (requires subrutine void after_vesicle_init(vesicle *vesicle):
   runs after vesicle gets initialized.
extra_plugin_path = "..." (OPTIONAL)
* PLUGIN_VERTEX_MOVE (requires subrutines:
vesicle bipyramid {
   nshell=23
}
   ts_bool vm_hard_constraint(vesicle *vesicle, vtx *vtx, vtx *old_vtx)
   ts_double vm_energy_before(vesicle *vesicle, vtx *vtx)
   ts_double vm_energy_after(vesicle *vesicle, vtx *vtx)
   ts_double vm_new_state_accepted(vesicle *vesicle, vtx *vtx)
   ts_double vm_new_state_rejected(vesicle *vesicle, vtx *vtx)
vesicle vtufile {
   filename="filename"
}
   )
vesicle vtudatabase {
   run_id=123
   timestep=999
}
   these subrutines are added into the vertex move into right places
vesicle properties {
   xk0=20
   dmax=1.7
   dmin_interspecies=1.2
   stepsize=0.15
}
* PLUGIN_BOND_FLIP ( N/A yet)
space properties {
   nxmax=60
   nymax=60
   nzmax=60
}
loop control {
   inner=1000
   outer=1000
}
plugin pressure {
   pressure=10
}
plugin constant_volume {
   precision=1e14
}
plugin constant_area {
}
plugin confinement_plate {
   distance=5
   force=10
   coordinate=2 // 0=x,1=y,2=z
}
plugin spherical_harmonics {
   lmax=21
   filename="abc.csv"
}
plugin spontaneous_curvature {
   c0=2
   N=100
   w=10
   force=3
}
plugin filament {
   monomers=100
   xi=10
}
plugin polymer {
   polymers = 100
   monomers = 10
   elastic_coefficient=100
   is_internal = true
}
plugin nucleus {
   R_nucleus=10
   R_nucleusX=0
   R_nucleusY=0
   R_nucleusZ=0
}
*/
#include "plugins.h"
#include <stdlib.h>