-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcolloid.h
54 lines (47 loc) · 1.75 KB
/
colloid.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/** @file
* @brief This file defines the Colloid struct and the functions to handle colloids
*/
#import <stdbool.h>
/**
* Enum to indicate a colloid's species
*
* The values should be self-explanatory
*/
typedef enum {TWOPATCH,THREEPATCH} species;
struct partners {
struct colloid *partners[3]; /**< Array of bonded colloids. Index indicates bonding site */
int site[3]; /**< Array of partner's bonding sites */
};
typedef struct partners Partners;
struct colloid {
double x; /**< x coordinate */
double z; /**< z coordinate */
double a; /**< angle in radians */
double vext; /**< current external energy */
double vint; /**< current internal energy */
species sp; /**< species of the colloid (twopatch/threepatch) */
struct colloid *above; /**< which colloid is next above this one */
struct colloid *below; /**< which colloid is next below this one */
Partners *partners; /**< bonding partners. See Partners */
bool haveMoved; /**< true if this colloid has ever made a successfull MC step */
};
typedef struct colloid Colloid;
void checkBonds(Colloid *);
void checkAllBonds(Colloid *, Config *);
void newColloid(species, Colloid *);
void clearPartners(Partners *);
void newBond(Colloid *, Colloid *, int, int);
void breakBond(Colloid *, int);
void insertSortedZ(Colloid *list, Colloid *newitem);
void insertBelow(Colloid *list, Colloid *newitem);
void insertAbove(Colloid *list, Colloid *newitem);
void printColloidsSortedZ(Colloid *);
void swapUp(Colloid *);
void swapDown(Colloid *);
void reSortZ(Colloid *);
double colloidDistance(Colloid *, Colloid *);
double patchPositionX(Colloid *, int);
double patchPositionZ(Colloid *, int);
int patches(Colloid *);
double pairInteraction(Colloid *, Colloid *, int *, Partners *);
int collisions(Colloid *, Config *c);