
/*******************************************************************************
*
* File update.h
*
* Copyright (C) 2005 Martin Luescher
*
* This software is distributed under the terms of the GNU General Public
* License (GPL)
*
*******************************************************************************/

#ifndef UPDATE_H
#define UPDATE_H

#ifndef SU3_H
#include "su3.h"
#endif

typedef struct
{
   int ix,mu;
} link_t;

#ifndef ACTION_C
extern double plaq_sum(void);
extern double plaq_sum_dble(void);
#endif

#ifndef STAPLES_C
extern void staples(int ix,int mu,su3 *v);
#endif

#ifndef CABMAR_C
extern void cabmar(float beta,su3 *u, su3 *v,int type);
#endif

#ifndef SHIFT_C
extern int shift_u(int *s);
extern int shift_ud(int *s);
extern void free_shift_bufs(int iu,int iud);
#endif

#ifndef UCOM_C
extern void copy_bnd_u(void);
extern void copy_bnd_ud(void);
extern void plaq_u(int ix,int mu,int nu,su3 **u);
extern void plaq_ud(int ix,int mu,int nu,su3_dble **u);
extern void free_ucom_bufs(int iu,int iud);
#endif

#ifndef UPDATE_C
extern link_t *active_links(int *nlk);
extern void update(float beta,int nhb,int nor,int rnfreq);
#endif

#endif
