| | |
| | | #define _GENERAL_H |
| | | |
| | | #include<stdarg.h> |
| | | #include<stdio.h> |
| | | |
| | | /* @brief This is a header file, defining general constants and structures. |
| | | * @file header.h |
| | |
| | | |
| | | /* STRUCTURES */ |
| | | |
| | | |
| | | /** @brief Data structure for keeping the coordinates in selected coordinate |
| | | * system |
| | | */ |
| | | #define TS_COORD_CARTESIAN 0 |
| | | #define TS_COORD_SPHERICAL 1 |
| | | #define TS_COORD_CYLINDRICAL 2 |
| | | |
| | | typedef struct { |
| | | ts_double e1; |
| | | ts_double e2; |
| | | ts_double e3; |
| | | ts_uint coord_type; |
| | | } ts_coord; |
| | | |
| | | |
| | | |
| | | /** @brief Data structure of all data connected to a vertex |
| | | * |
| | | * ts_vertex holds the data for one single point (bead, vertex) in the space. To understand how to use it |
| | | * ts_vertex holds the data for one single point (bead, vertex). To understand how to use it |
| | | * here is a detailed description of the fields in the data structure. */ |
| | | struct ts_vertex { |
| | | ts_uint idx; /**< Represents index of the vertex point. Should become obsolete in C. */ |
| | | ts_double x; /**< The x coordinate of vertex. */ |
| | | ts_uint idx; |
| | | ts_double x; /**< The x coordinate of vertex. */ |
| | | ts_double y; /**< The y coordinate of vertex. */ |
| | | ts_double z; /**< The z coordinate of vertex. */ |
| | | ts_uint neigh_no; /**< The number of neighbours. */ |
| | | struct ts_vertex ***neigh; /**< The pointer that holds neigh_no pointers to this structure. Careful when using pointers to pointers! Also developers do mistakes here. */ |
| | | ts_double *bond_length; |
| | | ts_double *bond_length_dual; |
| | | struct ts_vertex **neigh; /**< The pointer that holds neigh_no pointers to this structure. */ |
| | | ts_double *bond_length; /**< Obsolete! The bond lenght is moved to ts_bond */ |
| | | ts_double *bond_length_dual; /**< Obsolete! Bond length in dual lattice is moved to ts_bond! */ |
| | | ts_double curvature; |
| | | ts_double energy; |
| | | ts_double energy_h; |
| | | ts_uint tristar_no; |
| | | struct ts_triangle ***tristar; |
| | | struct ts_bond ***bond; |
| | | struct ts_cell *cell; |
| | | struct ts_triangle **tristar; /**< The list of triangles this vertex belongs to. This is an array of pointers to ts_triangle structure of tristar_no length */ |
| | | ts_uint bond_no; |
| | | struct ts_bond **bond; /**< Array of pointers of lenght bond_no that stores information on bonds. */ |
| | | struct ts_cell *cell; /**< Which cell do we belong to? */ |
| | | ts_double xk; |
| | | ts_double c; |
| | | ts_uint id; |
| | | ts_double projArea; |
| | | ts_double relR; |
| | | ts_double solAngle; |
| | | }; |
| | | typedef struct ts_vertex ts_vertex; |
| | | |
| | |
| | | |
| | | } ts_vertex_list; |
| | | |
| | | |
| | | /** ts_bond is a structure that describes a bond */ |
| | | typedef struct { |
| | | struct ts_bond { |
| | | ts_uint idx; |
| | | ts_vertex *vtx1; |
| | | ts_vertex *vtx2; |
| | | ts_double bond_length; |
| | | ts_double bond_length_dual; |
| | | } ts_bond; |
| | | }; |
| | | typedef struct ts_bond ts_bond; |
| | | |
| | | struct ts_bond_list { |
| | | ts_uint n; |
| | | ts_bond **bond; |
| | | }; |
| | | typedef struct ts_bond_list ts_bond_list; |
| | | |
| | | struct ts_triangle { |
| | | ts_uint idx; |
| | | ts_uint idx; |
| | | ts_vertex *vertex[3]; |
| | | ts_uint neigh_no; |
| | | struct ts_triangle **neigh; |
| | | ts_double xnorm; |
| | | ts_double ynorm; |
| | | ts_double znorm; |
| | | |
| | | ts_double area; // firstly needed for sh.c |
| | | }; |
| | | typedef struct ts_triangle ts_triangle; |
| | | |
| | | struct ts_triangle_list{ |
| | | ts_uint n; |
| | | ts_triangle **tria; |
| | | }; |
| | | typedef struct ts_triangle_list ts_triangle_list; |
| | | |
| | | |
| | | typedef struct ts_cell { |
| | | ts_uint idx; |
| | | ts_vertex **vertex; |
| | | ts_uint nvertex; |
| | | } ts_cell; |
| | | } ts_cell; |
| | | |
| | | typedef struct { |
| | | ts_vertex **vlist; |
| | | ts_bond **blist; |
| | | ts_triangle **tlist; |
| | | ts_cell **clist; |
| | | ts_uint nshell; |
| | | ts_uint nvertex; |
| | | ts_uint nbond; |
| | | ts_uint ntria; |
| | | ts_cell ncell; |
| | | typedef struct ts_cell_list{ |
| | | ts_uint ncmax[3]; |
| | | ts_uint cellno; |
| | | ts_cell **cell; |
| | | ts_double dcell; |
| | | ts_double shift; |
| | | ts_double max_occupancy; |
| | | ts_uint ncmax[3]; |
| | | } ts_cell_list; |
| | | |
| | | |
| | | typedef struct { |
| | | ts_uint l; |
| | | ts_double **ulm; |
| | | ts_double **co; |
| | | ts_double ***Ylmi; |
| | | } ts_spharm; |
| | | |
| | | |
| | | |
| | | typedef struct { |
| | | ts_vertex_list *vlist; |
| | | ts_bond_list *blist; |
| | | ts_triangle_list *tlist; |
| | | ts_cell_list *clist; |
| | | ts_uint nshell; |
| | | ts_double bending_rigidity; |
| | | ts_double dmax; |
| | | ts_double stepsize; |
| | | ts_double cm[3]; |
| | | ts_double volume; |
| | | ts_spharm *sphHarmonics; |
| | | } ts_vesicle; |
| | | |
| | | |
| | | |
| | | |
| | | /* GLOBAL VARIABLES */ |
| | |
| | | */ |
| | | void fatal(char *text, ts_int errcode); |
| | | |
| | | //ts_uint ts_fprintf(FILE *fd, char *fmt, va_list ap); |
| | | ts_uint ts_fprintf(FILE *fd, char *fmt, ...); |
| | | |
| | | #define VTX(vlist,n) &(vlist->vtx[n]) |
| | | #define VTX(n) &(vlist->vtx[n]) |
| | | #define VTX_DATA(n) vlist->vtx[n].data |
| | | |
| | | #endif |