forked from etmc/tmLQCD
/
global.h
199 lines (167 loc) · 4.74 KB
/
global.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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
/* $Id$ */
#ifndef _GLOBAL_H
#define _GLOBAL_H
/***************************************************************
*
* File global.h
*
* Global parameters and arrays
*
* Author: Martin Luescher <luscher@mail.desy.de>
* Date: 16.03.2001
*
* Adapted for the HMC-Program by M. Hasenbusch 2002
*
***************************************************************/
#include <stdlib.h>
#include <stdio.h>
#ifdef MPI
# include <mpi.h>
#endif
#ifdef FIXEDVOLUME
# include "fixed_volume.h"
#endif
#include"su3.h"
#include"su3adj.h"
#define DUM_DERI 6
#define DUM_SOLVER (DUM_DERI+7)
#define DUM_MATRIX (DUM_SOLVER+6)
/* if you want to include bicgstabell */
/* #define DUM_MATRIX (DUM_SOLVER+11) */
/* IF PHMC need dum_matrix + 8 instead of + 6 */
#define NO_OF_SPINORFIELDS (DUM_MATRIX+8)
/* END IF PHMC */
/* IF PHMC:
Define here how many bispinors and chi`s one needs ... = Pol degree */
#define DUM_BI_DERI 6
#define DUM_BI_SOLVER (DUM_BI_DERI+7)
#define DUM_BI_MATRIX (DUM_BI_SOLVER+6)
/* if you want to include bicgstabell */
/* #define DUM_BI_MATRIX DUM_BI_SOLVER+11 */
#define NO_OF_BISPINORFIELDS (DUM_BI_MATRIX+6)
/* End IF PHMC*/
/* Here you can define antiperiodic */
/* boundary conditions with e.g. */
/* #define X1 1. (in x-direction) */
#define X1 0.
#define X2 0.
#define X3 0.
#define EPS_SQ0 1.0e-16
#define EPS_SQ1 1.0e-7
#define EPS_SQ2 1.0e-5
#define EPS_SQ3 1.0e-3
#define tiny_t 1.0e-20
#define N_CHEBYMAX 49
#define NTILDE_CHEBYMAX 2000
#if defined MAIN_PROGRAM
# define EXTERN
#else
# define EXTERN extern
#endif
#if ((defined SSE)||(defined SSE2)||(defined SSE3))
# include "sse.h"
#elif defined BGL
# include "bgl.h"
#else
# define ALIGN
#endif
/* IF PHMC */
EXTERN double Cpol;
EXTERN double cheb_evmin, cheb_evmax;
EXTERN double invmaxev;
EXTERN complex * roo;
EXTERN int dop_n_cheby;
EXTERN double * dop_cheby_coef;
EXTERN int ptilde_n_cheby;
EXTERN double * ptilde_cheby_coef;
EXTERN double stilde_low, stilde_max;
/* END PHMC */
EXTERN double g_eps_sq_force, g_eps_sq_acc;
EXTERN double g_eps_sq_force1, g_eps_sq_force2, g_eps_sq_force3;
EXTERN double g_eps_sq_acc1, g_eps_sq_acc2, g_eps_sq_acc3;
EXTERN int g_relative_precision_flag;
EXTERN int g_debug_level;
EXTERN int T_global;
#ifndef FIXEDVOLUME
EXTERN int T, L, LX, LY, LZ, VOLUME;
EXTERN int N_PROC_T, N_PROC_X, N_PROC_Y, N_PROC_Z;
EXTERN int RAND, EDGES, VOLUMEPLUSRAND;
#endif
/* translates from lexicographic order to even/odd order */
EXTERN int * g_lexic2eo;
/* translates from even/odd orderto lexicograhic order */
EXTERN int * g_eo2lexic;
EXTERN int * g_lexic2eosub;
EXTERN int **** g_ipt;
EXTERN int ** g_iup;
EXTERN int ** g_idn;
EXTERN int * g_field_z_ipt_even;
EXTERN int * g_field_z_ipt_odd;
EXTERN spinor ** g_spinor_field;
EXTERN bispinor ** g_bispinor_field;
/* IF PHMC */
EXTERN spinor ** g_chi_up_spinor_field;
EXTERN spinor ** g_chi_dn_spinor_field;
EXTERN spinor * g_chi_up_copy;
EXTERN spinor * g_chi_dn_copy;
/* End IF PHMC */
EXTERN spinor ** g_csg_field[4];
EXTERN int * g_csg_index_array[4];
EXTERN int g_csg_N[8];
EXTERN su3 ** g_gauge_field;
EXTERN su3 ** g_gauge_field_back;
EXTERN su3 ** g_gauge_field_copy;
/* This is dirty, but dow not allocate memory */
/* if no clover is used. */
EXTERN su3adj ** moment;
EXTERN su3adj ** df0;
EXTERN su3adj ** ddummy;
#ifdef CLOVER
EXTERN su3adj dclover[VOLUMEPLUSRAND][4] ALIGN;
EXTERN su3 sw[VOLUME][3][2] ALIGN;
EXTERN su3 sw_inv[VOLUME][3][2] ALIGN;
EXTERN su3 swp[VOLUME][4] ALIGN;
EXTERN su3 swm[VOLUME][4] ALIGN;
#else
EXTERN su3adj dclover[1][1] ALIGN;
EXTERN su3 sw[1][1][1] ALIGN;
EXTERN su3 sw_inv[1][1][1] ALIGN;
EXTERN su3 swp[1][1] ALIGN;
EXTERN su3 swm[1][1] ALIGN;
#endif
EXTERN int count00,count01,count10,count11,count20,count21;
EXTERN double g_kappa, g_c_sw, g_ka_csw_8, g_beta;
EXTERN double g_rgi_C0, g_rgi_C1;
EXTERN double g_mu, g_mu1, g_mu2, g_mu3;
/* Parameters for non-degenrate case */
EXTERN double g_acc_Pfirst, g_acc_Ptilde;
EXTERN double g_acc_Hfin;
EXTERN int g_rec_ev;
EXTERN double g_mubar, g_epsbar;
EXTERN int g_use_clover_flag, g_nr_of_psf;
/* MPI information */
EXTERN int g_proc_id, g_nproc, g_stdio_proc, g_nproc_t, g_nproc_x, g_nproc_y, g_nproc_z, g_cart_id;
EXTERN int g_proc_coords[4];
EXTERN int g_dbw2rand;
#ifdef MPI
EXTERN MPI_Status status;
EXTERN MPI_Request req1,req2,req3,req4;
EXTERN MPI_Comm g_cart_grid;
/* the next neighbours for MPI */
EXTERN int g_nb_x_up, g_nb_x_dn;
EXTERN int g_nb_y_up, g_nb_y_dn;
EXTERN int g_nb_t_up, g_nb_t_dn;
EXTERN int g_nb_z_up, g_nb_z_dn;
#endif
/* something to evaluate time elaps */
EXTERN double DeltaTtot, DeltaTcd, DeltaTev;
EXTERN int counter_Spsi;
/* end of the something ... */
EXTERN int ITER_MAX_BCG;
EXTERN int ITER_MAX_CG;
#undef EXTERN
/* #undef ALIGN */
#ifdef MAIN_PROGRAM
static char const g_rcsid[] = "$Id$";
#endif
#endif