-
Notifications
You must be signed in to change notification settings - Fork 2
/
mc_qworm.h
executable file
·71 lines (50 loc) · 1.57 KB
/
mc_qworm.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifndef _MC_QWORM_H
#define _MC_QWORM_H 1
#include "mc_confg.h"
extern int oc_flag; // 0 - open, 1 - close steps DEBUG
extern double countCLOSE;
extern double countCLOSEA;
extern double countOPEN;
extern double WPOT_O;
extern double WKIN_O;
extern double WPOT_C;
extern double WKIN_C;
extern double WPOT_C_ACCEPT;
extern double WKIN_C_ACCEPT;
extern int rec;
extern int rec1;
extern int adv;
extern int adv1;
void MCWormInit(void);
void MCWormDone(void);
void MCWormMove(void);
bool WorldLine(int, int);
typedef struct TPathWorm
{
char stype[MAX_STRING_LENGTH]; // type of atoms/molecules
int type; // atoms type to apply the worm algorithm (He)
int exists; // set to 1 for G-space, to 0 for Z-space
int ira;
int masha;
int atom_i; // ira's world line
int atom_m; // masha's world line
double c; // control relative stat of Z and G sectors
int m; // m tilde
};
extern TPathWorm Worm;
extern double **QWTotal; // total number of worm moves
extern double **QWAccep; // total number of accepted worm moves)
extern double countQW; // total count of worm moves
// worm move types
const int QWMAXMOVES = 7; // Max number of different types of worm moves
const int QW_OPEN = 0;
const int QW_CLOSE = 1;
const int QW_INSERT = 2;
const int QW_REMOVE = 3;
const int QW_ADVANCE = 4;
const int QW_RECEDE = 5;
const int QW_SWAP = 6;
void ResetQWCounts(void);
void MemAllocQWCounts(void);
void MFreeQWCounts(void);
#endif // mc_qworm.h