forked from etmc/tmLQCD
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrnd_gauge_trafo.c
72 lines (60 loc) · 1.84 KB
/
rnd_gauge_trafo.c
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
/***********************************************************************
*
* Copyright (C) 2003 Mauro Papinutto
*
* This file is part of tmLQCD.
*
* tmLQCD is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* tmLQCD is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with tmLQCD. If not, see <http://www.gnu.org/licenses/>.
*
* perform a random gauge transformation
*
*
*******************************************************************************/
#if HAVE_CONFIG_H
#include<config.h>
#endif
#include <stdlib.h>
#include <stdio.h>
#include "global.h"
#include "su3.h"
#include "start.h"
#include "rnd_gauge_trafo.h"
void rnd_gauge_trafo(const int repro, su3 ** const gf){
int ix,iy,mu;
static su3 u,v,w,x,y;
su3 * _gauge_trafo = NULL;
su3 * gauge_trafo = NULL;
if((_gauge_trafo = calloc(VOLUMEPLUSRAND+1, sizeof(su3))) == NULL) {
fprintf(stderr, "Could not allocate memory in rnd_gauge_trafo. Exiting!\n");
exit(0);
}
gauge_trafo = (su3*)(((unsigned long int)(gauge_trafo)+ALIGN_BASE)&~ALIGN_BASE);
random_gauge_field(repro, gauge_trafo);
#ifdef MPI
xchange_gauge(gauge_trafo);
#endif
for (ix=0;ix<VOLUME;ix++){
u=gauge_trafo[ix];
for (mu=0;mu<4;mu++){
iy=g_iup[ix][mu];
w=gauge_trafo[iy];
_su3_dagger(v,w);
w=g_gauge_field[ix][mu];
_su3_times_su3(x,w,v);
_su3_times_su3(y,u,x);
gf[ix][mu]=y;
}
}
free(_gauge_trafo);
}