HiRep 0.1
Loading...
Searching...
No Matches
monomials.h
1/***************************************************************************\
2* Copyright (c) 2017, Martin Hansen, Claudio Pica *
3* All rights reserved. *
4\***************************************************************************/
5
19
20#ifndef MONOMIALS_H
21#define MONOMIALS_H
22
23#include "forces.h"
24#include "rational_functions.h"
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30//monomials_core.c
31
32// List of monomials
33typedef enum {
34 PureGauge,
35 LuscherWeisz,
36 FourFermion,
37 HMC,
38 RHMC,
39 TM,
40 TM_alt,
41 Hasenbusch,
42 Hasenbusch_tm,
43 Hasenbusch_tm_alt,
44 HMC_ff,
45 Hasenbusch_ff,
46 Scalar
47} mon_type;
48
49typedef struct monomial_data {
50 int id;
51 mon_type type;
52 void *par; //generic pointer to a monomial parameter structure of given type
53 double MT_prec;
54 double MD_prec;
55 double force_prec;
57
58typedef struct monomial {
59 monomial_data data;
60 void *force_par;
61 void *field_par;
62 void (*update_force)(double, void *);
63 void (*update_field)(double, void *);
64 void (*free)(struct monomial *);
65 void (*gaussian_pf)(struct monomial const *);
66 void (*correct_pf)(struct monomial const *);
67 void (*correct_la_pf)(struct monomial const *);
68 const spinor_field *(*pseudofermion)(struct monomial const *);
69 void (*add_local_action)(struct monomial const *, scalar_field *);
70} monomial;
71
72monomial const *add_mon(monomial_data *mon_dat);
73monomial const *mon_n(int i);
74int num_mon(void);
75
76//mon_pg.c
77typedef struct mon_pg_par {
78 double beta;
79 force_gauge_par force_par;
80 field_gauge_par field_par;
82
83monomial *pg_create(monomial_data const *data);
84
85//mon_lw.c
86typedef struct mon_lw_par {
87 double beta;
88 double c0;
89 double c1;
90 force_gauge_par force_par;
91 field_gauge_par field_par;
93
94monomial *lw_create(monomial_data const *data);
95
96//mon_hmc.c
97typedef struct mon_hmc_par {
98 double mass;
99 int mre_past;
100 force_hmc_par fpar;
101 spinor_field *pf;
103
104monomial *hmc_create(monomial_data const *data);
105
106//mon_rhmc.c
107typedef struct mon_rhmc_par {
108 double mass;
109 rational_app ratio;
110 force_rhmc_par fpar;
111 spinor_field *pf;
113
114monomial *rhmc_create(monomial_data const *data);
115
116//mon_tm.c
117typedef struct mon_tm_par {
118 double mass;
119 double mu;
120 int mre_past;
121 force_hmc_par fpar;
122 spinor_field *pf;
123} mon_tm_par;
124
125monomial *tm_create(monomial_data const *data);
126
127//mon_tm_alt.c
128monomial *tm_alt_create(monomial_data const *data);
129
130//mon_hasen.c
131typedef struct mon_hasenbusch_par {
132 double mass;
133 double dm;
134 int mre_past;
135 force_hmc_par fpar;
136 spinor_field *pf;
138
139monomial *hasen_create(monomial_data const *data);
140
141//mon_hasen_tm.c
142typedef struct mon_hasenbusch_tm_par {
143 double mass;
144 double mu;
145 double dmu;
146 int mre_past;
147 force_hmc_par fpar;
148 spinor_field *pf;
150
151monomial *hasen_tm_create(monomial_data const *data);
152
153//mon_hasen_tm_alt.c
154monomial *hasen_tm_alt_create(monomial_data const *data);
155
156//mon_ff.c
157typedef struct mon_ff_par {
158 double gamma;
159 char *start_config;
160 double start_value;
162} mon_ff_par;
163
164monomial *ff_create(monomial_data const *data);
165
166//mon_hmc_ff.c
167monomial *hmc_ff_create(monomial_data const *data);
168
169//mon_hasen_ff.c
170monomial *hasen_ff_create(monomial_data const *data);
171
172//mon_scalar.c
173typedef struct mon_scalar_par {
174 double mass;
175 double lambda;
176 force_scalar_par force_par;
177 field_scalar_par field_par;
179
180monomial *scalar_create(monomial_data const *data);
181
182#ifdef __cplusplus
183}
184#endif
185#endif
Definition field_update.h:10
Definition field_update.h:15
Definition forces.h:119
Definition forces.h:31
Definition forces.h:81
Definition forces.h:103
Definition forces.h:129
Definition monomials.h:157
Definition monomials.h:131
Definition monomials.h:142
Definition monomials.h:97
Definition monomials.h:86
Definition monomials.h:77
Definition monomials.h:107
Definition monomials.h:173
Definition monomials.h:117
Definition monomials.h:49
Definition monomials.h:58
Definition rational_functions.h:16
Scalar field of double precision real values.
Definition spinor_field.h:240
Spinor field array containing SU(N_f) spinors in chosen fermion representation.
Definition spinor_field.h:189