├── install-sh ├── doc ├── sample-input │ ├── normierungLocal.dat │ ├── extra_masses.input │ ├── sample-hmc_nf211_tmclover_quda.input │ ├── benchmark.input │ ├── sample-cgs.input │ ├── sample-bicgstab.input │ ├── sample-averx.input │ ├── sample-cg-loop.input │ ├── sample-cg.input │ ├── sample-gmres.input │ ├── sample-cg-tmclover.input │ ├── sample-eigcg-tmclover-invert.input │ ├── sample-rw.input │ ├── sample-pcg.input │ ├── sample-hmc-cloverdet.input │ └── sample-mixedcg.input ├── sample-output │ ├── hmc_nf211_tmclover_quda │ ├── README.md │ ├── hmc-qphix-tmcloverdetratio │ │ ├── return_check.data │ │ ├── onlinemeas.000000 │ │ ├── onlinemeas.000002 │ │ ├── onlinemeas.000004 │ │ ├── onlinemeas.000006 │ │ ├── onlinemeas.000008 │ │ ├── onlinemeas.000010 │ │ ├── onlinemeas.000012 │ │ ├── onlinemeas.000014 │ │ ├── onlinemeas.000016 │ │ └── onlinemeas.000018 │ ├── hmc-ddalphaamg-tmcloverdetratio │ │ ├── return_check.data │ │ ├── onlinemeas.000000 │ │ ├── onlinemeas.000002 │ │ ├── onlinemeas.000004 │ │ ├── onlinemeas.000006 │ │ ├── onlinemeas.000008 │ │ ├── onlinemeas.000010 │ │ ├── onlinemeas.000012 │ │ ├── onlinemeas.000014 │ │ ├── onlinemeas.000016 │ │ └── onlinemeas.000018 │ ├── hmc-rgmixedcg-tmcloverdetratio │ │ ├── return_check.data │ │ ├── onlinemeas.000008 │ │ ├── onlinemeas.000000 │ │ ├── onlinemeas.000002 │ │ ├── onlinemeas.000004 │ │ ├── onlinemeas.000006 │ │ ├── onlinemeas.000010 │ │ ├── onlinemeas.000012 │ │ ├── onlinemeas.000014 │ │ ├── onlinemeas.000016 │ │ └── onlinemeas.000018 │ └── hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53 │ │ ├── return_check.data │ │ ├── onlinemeas.000000 │ │ ├── onlinemeas.000002 │ │ ├── onlinemeas.000004 │ │ ├── onlinemeas.000006 │ │ ├── onlinemeas.000008 │ │ ├── onlinemeas.000012 │ │ ├── onlinemeas.000010 │ │ ├── onlinemeas.000014 │ │ ├── onlinemeas.000016 │ │ └── onlinemeas.000018 ├── Phmc-report.pdf ├── Status-Phmc.pdf ├── Polynomial-constr-notes.pdf ├── solvers.tex ├── dsfont.sty └── Makefile ├── util ├── tmlqcd-indent ├── laguer │ └── Makefile └── oox │ └── oox_gawrapper.h ├── .ci ├── uenv-recipes │ └── tmlqcd │ │ └── daint-gh200 │ │ ├── compilers.yaml │ │ ├── repo │ │ ├── repo.yaml │ │ └── packages │ │ │ └── lemonio │ │ │ └── package.py │ │ ├── config.yaml │ │ ├── environments.yaml │ │ └── modules.yaml ├── include │ └── cscs │ │ └── 00-variables.yml └── cscs_default_pipeline.yml ├── buffers ├── gauge.c ├── gauge.ih ├── utils.ih ├── gauge_return_gauge_field.c ├── gauge_initialize_gauge_buffers.c ├── gauge_free_unused_gauge_buffers.c ├── gauge_finalize_gauge_buffers.c ├── gauge_return_gauge_field_array.c ├── gauge_get_gauge_field.c ├── gauge_get_gauge_field_array.c ├── utils.h ├── gauge_allocate_gauge_buffers.c └── gauge.h ├── profiling ├── hmc_mk2 │ └── .gitignore └── hmc │ ├── example_profile.pdf │ └── Readme.md ├── tests ├── test_sample_ts2.c ├── test_sample_ts1.c ├── test_rat_init.h ├── test_su3.c ├── test_clover.c ├── test_sample.c ├── test_clover_six_invert.h ├── test_rat.c ├── test_sample_ts2.h ├── test_linalg.c ├── test_buffers_gauge.h ├── test_linalg_spinor.h ├── test_sample_ts1.h ├── test_buffers.c └── test_su3_algebra.h ├── benchmark.input ├── linalg ├── print_spinor.h ├── ratio.h ├── addto_32.h ├── assign_mul_add_r_32.h ├── assign_add_mul_r_32.h ├── print_spinor_similar_components.h ├── scalar_prod_r_32.h ├── square_norm_32.h ├── print_spinor.c ├── set_even_to_zero.h ├── fortran.h ├── addto_32.c ├── mul.h ├── assign_to_32.h ├── diff_and_square_norm.h ├── add.h ├── assign_diff_mul.h ├── mul_r.h ├── assign_mul_add_r_32.c ├── mul_gamma5.h ├── mattimesvec.h ├── convert_odd_to_lexic.h ├── mul_diff_r.h ├── convert_even_to_lexic.h ├── scalar_prod_i.h ├── assign_mul_add.h └── mul_r_32.h ├── make_pretty.sh ├── rational ├── zolotarev.h └── elliptic.h ├── rnd_gauge_trafo.h ├── smearing ├── ape.h ├── stout.h ├── utils_print_config_to_screen.c ├── uils_print_config_to_screen.c ├── utils.ih ├── ape.ih ├── hex.ih ├── hyp.ih ├── stout.ih ├── utils_print_su3.c ├── utils_project_antiherm.c ├── utils_project_herm.c ├── hex_stout_exclude_none.c └── hyp_APE_project_exclude_none.c ├── io ├── params.ih ├── utils_destruct_reader.c ├── params_construct_ildgFormat.c ├── utils_destruct_writer.c ├── utils_kill_with_error.c ├── params_construct_propagatorFormat.c ├── params_construct_sourceFormat.c ├── utils_engineering.c ├── params_construct_xlfInfo.c ├── io_cm.h ├── sw_write_stdout.h ├── deri_write_stdout.h ├── spinor_write_stdout.h ├── utils_close_writer_record.c ├── spinor_write_propagator_type.c ├── utils_close_reader_record.c ├── eospinor.h └── gauge_write_luscher_binary.h ├── solver ├── sumr.h ├── rg_mixed_cg_typedef.h ├── index_jd.h ├── mr4complex.h ├── quicksort.h ├── cg_her_su3vect.h ├── cg_her.h ├── diagonalise_general_matrix.h ├── eigenvalues_bi.h ├── pcg_her.h ├── cgs_real.h ├── bicgstab2.h ├── cg_mms_tm.h └── cr.h ├── operator ├── Dov_proj.h ├── tm_operators_32.h ├── Hopping_Matrix_nocom.h ├── Dov_proj.c ├── Hopping_Matrix.h ├── tm_sub_Hopping_Matrix.h └── tm_times_Hopping_Matrix.h ├── test ├── hopping_test.input.new ├── hopping_test.input.start ├── hopping_test.input.compare ├── overlaptests.h ├── check_geometry.h ├── hopping_test_generate_script └── check_nan.h ├── xchange ├── xchange_field_tslice.h ├── xchange_jacobi.h ├── xchange_halffield.h ├── xchange_lexicfield.h └── xchange_gauge.h ├── .gitignore ├── AUTHORS ├── .github └── patches │ └── DDalphaAMG.patch ├── invert_clover_eo.h ├── ranlxs.h ├── ranlxd.h ├── .travis.yml ├── init ├── init_openmp.h ├── init_global_states.h ├── init_moment_field.h ├── init_gauge_tmp.h ├── init_geometry_indices.h ├── init_parallel.h ├── init_bispinor_field.h ├── init_chi_spinor_field.h ├── init_gauge_fg.h └── init_stout_smear_vars.h ├── clenshaw_coef.h ├── overrelaxation.h ├── invert_overlap.h ├── monomial ├── moment_energy.h ├── monitor_forces.h ├── nddetratio_monomial.h ├── cloverdetratio_rwmonomial.h ├── ratcor_monomial.h ├── ndratcor_monomial.h ├── det_monomial.h ├── rat_monomial.h └── poly_monomial.h ├── geometry_eo.h ├── meas ├── correlators.h ├── field_strength_types.h └── pion_norm.h ├── reweighting_factor.h ├── matrix_utils.h ├── measure_rectangles.h ├── reweighting_factor_nd.h ├── update_gauge.h ├── update_momenta.h ├── operator_types.h ├── update_tm.h ├── deriv_Sb_D_psi.h ├── deriv_Sb.h ├── measure_gauge_action.h ├── update_momenta_fg.h ├── boundary.h ├── compare_derivative.h ├── prepare_source.h ├── update_backward_gauge.h ├── fatal_error.h └── hamiltonian_field.h /install-sh: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /doc/sample-input/normierungLocal.dat: -------------------------------------------------------------------------------- 1 | 3.3394134092406311254 2 | -------------------------------------------------------------------------------- /doc/sample-output/hmc_nf211_tmclover_quda: -------------------------------------------------------------------------------- 1 | ../.ci/sample-output/cscs-test -------------------------------------------------------------------------------- /util/tmlqcd-indent: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | clang-format -style=file -i "$@" 3 | -------------------------------------------------------------------------------- /doc/sample-input/extra_masses.input: -------------------------------------------------------------------------------- 1 | 0.15 2 | 0.22 3 | 0.34 4 | 0.55 5 | 6 | -------------------------------------------------------------------------------- /.ci/uenv-recipes/tmlqcd/daint-gh200/compilers.yaml: -------------------------------------------------------------------------------- 1 | gcc: 2 | version: "14.2" 3 | -------------------------------------------------------------------------------- /.ci/uenv-recipes/tmlqcd/daint-gh200/repo/repo.yaml: -------------------------------------------------------------------------------- 1 | repo: 2 | namespace: apps 3 | -------------------------------------------------------------------------------- /buffers/gauge.c: -------------------------------------------------------------------------------- 1 | #include "gauge.ih" 2 | 3 | gauge_buffers_t g_gauge_buffers; 4 | -------------------------------------------------------------------------------- /doc/sample-input/sample-hmc_nf211_tmclover_quda.input: -------------------------------------------------------------------------------- 1 | ../.ci/sample-input/quda.in -------------------------------------------------------------------------------- /profiling/hmc_mk2/.gitignore: -------------------------------------------------------------------------------- 1 | *.RData 2 | *.pdf 3 | profile.log 4 | profile.md 5 | -------------------------------------------------------------------------------- /doc/Phmc-report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/etmc/tmLQCD/HEAD/doc/Phmc-report.pdf -------------------------------------------------------------------------------- /doc/Status-Phmc.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/etmc/tmLQCD/HEAD/doc/Status-Phmc.pdf -------------------------------------------------------------------------------- /doc/sample-output/README.md: -------------------------------------------------------------------------------- 1 | This directory contains reference data for acceptane tests. -------------------------------------------------------------------------------- /tests/test_sample_ts2.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | TEST(test_true2) { assertTrue(1); } 4 | -------------------------------------------------------------------------------- /benchmark.input: -------------------------------------------------------------------------------- 1 | T=16 2 | L=8 3 | NrXProcs = 1 4 | NrYProcs = 1 5 | NrZProcs = 1 6 | 7 | OMPNumThreads = 1 8 | -------------------------------------------------------------------------------- /doc/Polynomial-constr-notes.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/etmc/tmLQCD/HEAD/doc/Polynomial-constr-notes.pdf -------------------------------------------------------------------------------- /profiling/hmc/example_profile.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/etmc/tmLQCD/HEAD/profiling/hmc/example_profile.pdf -------------------------------------------------------------------------------- /doc/sample-input/benchmark.input: -------------------------------------------------------------------------------- 1 | T=48 2 | L=24 3 | NrXProcs = 1 4 | NrYProcs = 1 5 | NrZProcs = 1 6 | 7 | OMPNumThreads = 1 8 | -------------------------------------------------------------------------------- /linalg/print_spinor.h: -------------------------------------------------------------------------------- 1 | #ifndef PRINT_SPINOR_H 2 | #define PRINT_SPINOR_H 3 | 4 | void print_spinor(spinor const* const Q, const int N); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /make_pretty.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | find . -name "*.c" | xargs clang-format -i 4 | find . -name "*.h" | xargs clang-format -i 5 | find . -name "*.cpp" | xargs clang-format -i 6 | -------------------------------------------------------------------------------- /rational/zolotarev.h: -------------------------------------------------------------------------------- 1 | #ifndef _ZOLOTAREV_H 2 | #define _ZOLOTAREV_H 3 | 4 | void zolotarev(const int n, const double eps, double *A, double *ar, double *delta); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /tests/test_sample_ts1.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | TEST(test_true) { assertTrue(1); } 4 | 5 | TEST(test_false) { assertFalse(0); } 6 | 7 | TEST(test_fail) { assertFalse(1); } 8 | -------------------------------------------------------------------------------- /linalg/ratio.h: -------------------------------------------------------------------------------- 1 | #ifndef RATIO_H 2 | #define RATIO_H 3 | 4 | #include "su3.h" 5 | 6 | void ratio(spinor* const Q, const spinor* const R, const spinor* const S, const int N); 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /buffers/gauge.ih: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | # include 3 | #endif 4 | 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | -------------------------------------------------------------------------------- /buffers/utils.ih: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | # include 3 | #endif 4 | 5 | #include 6 | 7 | #include 8 | #include 9 | 10 | #include 11 | -------------------------------------------------------------------------------- /linalg/addto_32.h: -------------------------------------------------------------------------------- 1 | #ifndef _ADDTO_32_H 2 | #define _ADDTO_32_H 3 | 4 | #include "su3.h" 5 | 6 | /* Makes the sum (*Q) = (*Q) + (*S) */ 7 | void addto_32(spinor* const Q, const spinor32* const R, const int N); 8 | 9 | #endif -------------------------------------------------------------------------------- /rational/elliptic.h: -------------------------------------------------------------------------------- 1 | #ifndef _ELLIPTIC_H 2 | #define _ELLIPTIC_H 3 | 4 | extern double ellipticK(const double rk); 5 | extern void sncndn(const double u, const double rk, double *sn, double *cn, double *dn); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /tests/test_rat_init.h: -------------------------------------------------------------------------------- 1 | #ifndef _TEST_RAT_INIT_H 2 | #define _TEST_RAT_INIT_H 3 | 4 | #include 5 | 6 | TEST(rat_init); 7 | 8 | TEST_SUITE(RAT){TEST_ADD(rat_init), TEST_SUITE_CLOSURE}; 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /linalg/assign_mul_add_r_32.h: -------------------------------------------------------------------------------- 1 | #ifndef ASSIGN_MUL_ADD_R_32_H 2 | #define ASSIGN_MUL_ADD_R_32_H 3 | 4 | #include "su3.h" 5 | 6 | void assign_mul_add_r_32(spinor32* const R, const float c, const spinor32* const S, const int N); 7 | 8 | #endif -------------------------------------------------------------------------------- /rnd_gauge_trafo.h: -------------------------------------------------------------------------------- 1 | /* $Id: rnd_gauge_transf.h,v 1.1 2003/02/27 13:21:09 papinutt Exp $ */ 2 | #ifndef _RND_GAUGE_TRAFO_H 3 | #define _RND_GAUGE_TRAFO_H 4 | 5 | extern void rnd_gauge_trafo(const int repro, su3** const gf); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /doc/solvers.tex: -------------------------------------------------------------------------------- 1 | In this section, we give details of some of the solvers which are implemented in tmLQCD. 2 | In particular, we clarify some of the conventions used and how these map over to the external library interfaces. 3 | 4 | \myinput{cgmms} -------------------------------------------------------------------------------- /smearing/ape.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | struct ape_parameters { 6 | double rho; 7 | int iterations; 8 | }; 9 | 10 | int ape_smear(su3_tuple *m_field_out, struct ape_parameters const *params, su3_tuple *m_field_in); -------------------------------------------------------------------------------- /buffers/gauge_return_gauge_field.c: -------------------------------------------------------------------------------- 1 | #include "gauge.ih" 2 | 3 | void return_gauge_field(gauge_field_t *gauge_field) { 4 | g_gauge_buffers.reserve[g_gauge_buffers.free] = gauge_field->field; 5 | ++g_gauge_buffers.free; 6 | gauge_field->field = NULL; 7 | } 8 | -------------------------------------------------------------------------------- /tests/test_su3.c: -------------------------------------------------------------------------------- 1 | 2 | #include "test_su3_algebra.h" 3 | 4 | TEST_SUITES{TEST_SUITE_ADD(SU3_ALGEBRA), TEST_SUITES_CLOSURE}; 5 | 6 | int main(int argc, char *argv[]) { 7 | CU_SET_OUT_PREFIX("regressions/"); 8 | CU_RUN(argc, argv); 9 | return 0; 10 | } 11 | -------------------------------------------------------------------------------- /util/laguer/Makefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | CXXFLAGS=-g -O2 3 | CLNDIR=${HOME}/daten/workdir/cln/ 4 | 5 | chebyRoot: chebyRoot.C Makefile chebyRoot.H 6 | ${CXX} $< -g -o $@ -I${CLNDIR}/include/ -L${CLNDIR}/lib -lcln -lm 7 | 8 | clean: 9 | rm -f *.o chebyRoot *.dat *.log *~ 10 | -------------------------------------------------------------------------------- /doc/dsfont.sty: -------------------------------------------------------------------------------- 1 | \ProvidesPackage{dsfont} 2 | [1995/08/01 v0.1 Double stroke roman fonts] 3 | 4 | \def\ds@whichfont{dsrom} 5 | \DeclareOption{sans}{\def\ds@whichfont{dsss}} 6 | \ProcessOptions\relax 7 | 8 | \DeclareMathAlphabet{\mathds}{U}{\ds@whichfont}{m}{n} 9 | \endinput 10 | -------------------------------------------------------------------------------- /io/params.ih: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | # include 3 | #endif 4 | 5 | #include "io/params.h" 6 | #include "io/utils.h" 7 | 8 | #include "global.h" 9 | 10 | #include 11 | 12 | #include 13 | #include 14 | #include 15 | 16 | -------------------------------------------------------------------------------- /smearing/stout.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | struct stout_parameters { 6 | double rho; 7 | int iterations; 8 | }; 9 | 10 | int stout_smear(su3_tuple *m_field_out, struct stout_parameters const *params, 11 | su3_tuple *m_field_in); -------------------------------------------------------------------------------- /solver/sumr.h: -------------------------------------------------------------------------------- 1 | #ifndef _SUMR_H 2 | #define _SUMR_H 3 | 4 | #include "su3.h" 5 | 6 | int sumr(spinor* const, spinor* const, const int max_iter, double eps_sq); 7 | int sumr_mms(spinor**** const, spinor* const, const int max_iter, double eps_sq, int is, int ic); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /operator/Dov_proj.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _DOV_PROJ_H 3 | #define _DOV_PROJ_H 4 | 5 | #include "su3.h" 6 | 7 | #define _PLUS 0 8 | #define _MINUS 1 9 | 10 | void Dov_proj_plus(spinor* const R, spinor* const S); 11 | void Dov_proj_minus(spinor* const R, spinor* const S); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /smearing/utils_print_config_to_screen.c: -------------------------------------------------------------------------------- 1 | #include "utils.ih" 2 | 3 | void print_config_to_screen(su3 **in) { 4 | for (int x = 0; x < VOLUME; ++x) 5 | for (int mu = 0; mu < 4; ++mu) { 6 | printf("x = %d mu = %d\n", x, mu); 7 | print_su3(&(in[x][mu])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tests/test_clover.c: -------------------------------------------------------------------------------- 1 | 2 | #include "../global.h" 3 | #include "test_clover_six_invert.h" 4 | 5 | TEST_SUITES{TEST_SUITE_ADD(CLOVER), TEST_SUITES_CLOSURE}; 6 | 7 | int main(int argc, char *argv[]) { 8 | CU_SET_OUT_PREFIX("regressions/"); 9 | CU_RUN(argc, argv); 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /buffers/gauge_initialize_gauge_buffers.c: -------------------------------------------------------------------------------- 1 | #include "gauge.ih" 2 | 3 | void initialize_gauge_buffers(unsigned int max) { 4 | g_gauge_buffers.max = max; 5 | g_gauge_buffers.allocated = 0; 6 | g_gauge_buffers.free = 0; 7 | g_gauge_buffers.reserve = (su3_tuple**)calloc(max, sizeof(su3_tuple*)); 8 | } 9 | -------------------------------------------------------------------------------- /linalg/assign_add_mul_r_32.h: -------------------------------------------------------------------------------- 1 | #ifndef _ASSIGN_ADD_MUL_32_H 2 | #define _ASSIGN_ADD_MUL_32_H 3 | 4 | #include "su3.h" 5 | 6 | /* (*P) = (*P) + c(*Q) c is a complex constant */ 7 | void assign_add_mul_r_32(spinor32* const R, spinor32* const S, const float c, const int N); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /linalg/print_spinor_similar_components.h: -------------------------------------------------------------------------------- 1 | #ifndef PRINT_SPINOR_SIMILAR_COMPONENTS_H 2 | #define PRINT_SPINOR_SIMILAR_COMPONENTS_H 3 | 4 | void print_spinor_similar_components(spinor const* const Q, spinor const* const P, const int N, 5 | const double thresh); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /buffers/gauge_free_unused_gauge_buffers.c: -------------------------------------------------------------------------------- 1 | #include "gauge.ih" 2 | 3 | void free_unused_gauge_buffers() { 4 | for (; g_gauge_buffers.free > 0; --g_gauge_buffers.free, --g_gauge_buffers.allocated) { 5 | void* ptr = ((void**)g_gauge_buffers.reserve[g_gauge_buffers.free - 1])[-1]; 6 | free(ptr); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/test_sample.c: -------------------------------------------------------------------------------- 1 | 2 | #include "test_sample_ts1.h" 3 | #include "test_sample_ts2.h" 4 | 5 | TEST_SUITES{TEST_SUITE_ADD(TS1), TEST_SUITE_ADD(TS2), TEST_SUITES_CLOSURE}; 6 | 7 | int main(int argc, char *argv[]) { 8 | CU_SET_OUT_PREFIX("regressions/"); 9 | CU_RUN(argc, argv); 10 | 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /linalg/scalar_prod_r_32.h: -------------------------------------------------------------------------------- 1 | #ifndef _SCALAR_PROD_R_32_H 2 | #define _SCALAR_PROD_R_32_H 3 | 4 | #include "su3.h" 5 | 6 | /* Returns the real part of the scalar product (*R,*S) */ 7 | float scalar_prod_r_32(const spinor32* const S, const spinor32* const R, const int N, 8 | const int parallel); 9 | 10 | #endif -------------------------------------------------------------------------------- /util/oox/oox_gawrapper.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ifndef OOX_WRAPPER_H 4 | #define OOX_WRAPPER_H 5 | 6 | #ifdef __cplusplus 7 | extern "C" { 8 | #endif 9 | 10 | extern void initGAObject(int degree, double *roots, double norm, double epsilon, int n_points); 11 | 12 | #ifdef __cplusplus 13 | } 14 | #endif 15 | 16 | #endif /*OOX_WRAPPER_H*/ 17 | -------------------------------------------------------------------------------- /tests/test_clover_six_invert.h: -------------------------------------------------------------------------------- 1 | #ifndef _TEST_CLOVER_SIX_INVERT_H 2 | #define _TEST_CLOVER_SIX_INVERT_H 3 | 4 | #include 5 | 6 | TEST(clover_six_invert); 7 | TEST(clover_six_det); 8 | 9 | TEST_SUITE(CLOVER){TEST_ADD(clover_six_invert), TEST_ADD(clover_six_det), TEST_SUITE_CLOSURE}; 10 | 11 | #endif /* _TEST_CLOVER_SIX_INVERT_H */ 12 | -------------------------------------------------------------------------------- /tests/test_rat.c: -------------------------------------------------------------------------------- 1 | 2 | #if HAVE_CONFIG_H 3 | #include 4 | #endif 5 | #include "../global.h" 6 | #include "test_rat_init.h" 7 | 8 | TEST_SUITES{TEST_SUITE_ADD(RAT), TEST_SUITES_CLOSURE}; 9 | 10 | int main(int argc, char *argv[]) { 11 | CU_SET_OUT_PREFIX("regressions/"); 12 | CU_RUN(argc, argv); 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /tests/test_sample_ts2.h: -------------------------------------------------------------------------------- 1 | #ifndef _TEST_SAMPLE_TS2_H 2 | #define _TEST_SAMPLE_TS2_H 3 | 4 | #include 5 | 6 | /* test declarations, definitions in %.c */ 7 | TEST(test_true2); 8 | 9 | /* define test suite (enum type thing) */ 10 | TEST_SUITE(TS2){TEST_ADD(test_true2), TEST_SUITE_CLOSURE}; 11 | 12 | #endif /* _TEST_SAMPLE_TS2_H */ 13 | -------------------------------------------------------------------------------- /smearing/uils_print_config_to_screen.c: -------------------------------------------------------------------------------- 1 | #include "utils.ih" 2 | 3 | void print_config_to_screen(su3 **in) { 4 | int x, mu; 5 | for (x = 0; x < VOLUME; x++) 6 | for (mu = 0; mu < 4; mu++) { 7 | printf("x = %d mu = %d\n", x, mu); 8 | /*print_su3_full_hex_precision(&(in[x][mu]));*/ 9 | print_su3(&(in[x][mu])); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/test_linalg.c: -------------------------------------------------------------------------------- 1 | 2 | #if HAVE_CONFIG_H 3 | #include 4 | #endif 5 | #include "../global.h" 6 | #include "test_linalg_spinor.h" 7 | 8 | TEST_SUITES{TEST_SUITE_ADD(LINALG), TEST_SUITES_CLOSURE}; 9 | 10 | int main(int argc, char *argv[]) { 11 | CU_SET_OUT_PREFIX("regressions/"); 12 | CU_RUN(argc, argv); 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /buffers/gauge_finalize_gauge_buffers.c: -------------------------------------------------------------------------------- 1 | #include "gauge.ih" 2 | 3 | void finalize_gauge_buffers() { 4 | if (g_gauge_buffers.free != g_gauge_buffers.allocated) 5 | fatal_error("Finalized g_gauge_buffers with unreturned fields!", "finalize_gauge_buffers"); 6 | 7 | free_unused_gauge_buffers(); 8 | free(g_gauge_buffers.reserve); 9 | g_gauge_buffers.max = 0; 10 | } 11 | -------------------------------------------------------------------------------- /linalg/square_norm_32.h: -------------------------------------------------------------------------------- 1 | #ifndef _SQUARE_NORM_32_H 2 | #define _SQUARE_NORM_32_H 3 | 4 | #include "su3.h" 5 | 6 | /* double square_norm(spinor * const P ) 7 | * Returns the square norm of *P */ 8 | 9 | float square_norm_32(const spinor32* const P, const int N, const int parallel); 10 | float square_norm_ts_32(const spinor32* const P, const int N, const int parallel); 11 | #endif 12 | -------------------------------------------------------------------------------- /.ci/include/cscs/00-variables.yml: -------------------------------------------------------------------------------- 1 | # This file defines the uenv image built and deployed to CSCS. The variables 2 | # have the following meaning: 3 | # 4 | # * UENV_NAME: the base name of the uenv image to generate 5 | # * UENV_VERSION: its version identifier 6 | # * UENV_TAG: a tag 7 | # 8 | 9 | variables: 10 | UENV_NAME: tmlqcd 11 | UENV_VERSION: experimental 12 | UENV_TAG: v0.0.6 13 | 14 | -------------------------------------------------------------------------------- /doc/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all clean 2 | 3 | all: main.pdf 4 | 5 | 6 | main.pdf: $(wildcard *.tex) bibliography.bib Makefile 7 | latexmk -f -bibtex -pdf -pdflatex="pdflatex -interaction=nonstopmode" -use-make main.tex 8 | 9 | clean: 10 | latexmk -CA 11 | rm -f main.spl main.tdo main.pdf *converted-to.pdf 12 | 13 | distclean: 14 | latexmk -CA 15 | rm -f main.bbl main.spl main.tdo *converted-to.pdf 16 | -------------------------------------------------------------------------------- /io/utils_destruct_reader.c: -------------------------------------------------------------------------------- 1 | #include "utils.ih" 2 | 3 | void destruct_reader(READER *reader) { 4 | LIME_FILE *fh = NULL; 5 | 6 | fh = reader->fp; 7 | DestroyReader(reader); 8 | #ifdef HAVE_LIBLEMON 9 | MPI_File_close(fh); 10 | free(fh); /* NB This assumes construct_writer was used to malloc memory! */ 11 | #else /* HAVE_LIBLEMON */ 12 | fclose(fh); 13 | #endif /* HAVE_LIBLEMON */ 14 | } 15 | -------------------------------------------------------------------------------- /tests/test_buffers_gauge.h: -------------------------------------------------------------------------------- 1 | #ifndef _TEST_BUFFERS_GAUGE_H 2 | #define _TEST_BUFFERS_GAUGE_H 3 | 4 | #include 5 | 6 | TEST(buffers_gauge_allocate_finalize); 7 | TEST(buffers_gauge_get_return); 8 | 9 | TEST_SUITE(BUFFERS_GAUGE){TEST_ADD(buffers_gauge_allocate_finalize), 10 | TEST_ADD(buffers_gauge_get_return), TEST_SUITE_CLOSURE}; 11 | 12 | #endif /* _TEST_BUFFERS_GAUGE_H */ 13 | -------------------------------------------------------------------------------- /solver/rg_mixed_cg_typedef.h: -------------------------------------------------------------------------------- 1 | #ifndef _RG_MIXED_CG_HER_TYPEDEF_H 2 | #define _RG_MIXED_CG_HER_TYPEDEF_H 3 | 4 | typedef enum MCG_PR_TYPE { MCG_NO_PR = 0, MCG_PR } MCG_PR_TYPE; 5 | 6 | typedef enum MCG_PIPELINED_TYPE { MCG_NO_PIPELINED = 0, MCG_PIPELINED } MCG_PIPELINED_TYPE; 7 | 8 | // currently not used 9 | typedef enum MCG_RESGUIDE_TYPE { MCG_NO_RESGUIDE = 0, MCG_RESGUIDE } MCG_RESGUIDE_TYPE; 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /solver/index_jd.h: -------------------------------------------------------------------------------- 1 | #ifndef _INDEX_JD_H 2 | #define _INDEX_JD_H 3 | 4 | #ifndef RESTART_JACOBI_DAVIDSON 5 | #define RESTART_JACOBI_DAVIDSON 5 6 | #endif 7 | #ifndef RESTART_RITZ_JACOBI 8 | #define RESTART_RITZ_JACOBI 6 9 | #endif 10 | 11 | void index_jd(int* nr_of_eigenvalues, const int max_iterations, const double precision, 12 | char* conf_filename, const int nstore, const int method); 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /tests/test_linalg_spinor.h: -------------------------------------------------------------------------------- 1 | #ifndef _TEST_LINALG_SPINOR_H 2 | #define _TEST_LINALG_SPINOR_H 3 | 4 | #include 5 | 6 | TEST(scalar_prod_real); 7 | TEST(snorm); 8 | TEST(sdiff); 9 | TEST(aaddm_r); 10 | TEST(amadd_r); 11 | 12 | TEST_SUITE(LINALG){TEST_ADD(scalar_prod_real), TEST_ADD(snorm), TEST_ADD(sdiff), 13 | TEST_ADD(aaddm_r), TEST_ADD(amadd_r), TEST_SUITE_CLOSURE}; 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /tests/test_sample_ts1.h: -------------------------------------------------------------------------------- 1 | #ifndef _TEST_SAMPLE_TS1_H 2 | #define _TEST_SAMPLE_TS1_H 3 | 4 | #include 5 | 6 | /* test declarations, definitions in %.c */ 7 | TEST(test_true); 8 | TEST(test_false); 9 | TEST(test_fail); 10 | 11 | /* define test suite (enum type thing) */ 12 | TEST_SUITE(TS1){TEST_ADD(test_true), TEST_ADD(test_false), TEST_ADD(test_fail), TEST_SUITE_CLOSURE}; 13 | 14 | #endif /* _TEST_SAMPLE_TS1_H */ 15 | -------------------------------------------------------------------------------- /solver/mr4complex.h: -------------------------------------------------------------------------------- 1 | #ifndef _MR4COMPLEX_H 2 | #define _MR4COMPLEX_H 3 | 4 | #include "solver/gcr4complex.h" 5 | #include "solver/matrix_mult_typedef.h" 6 | 7 | #include 8 | 9 | int mr4complex(_Complex double* const P, _Complex double* const Q, const int max_iter, 10 | const double eps_sq, const int rel_prec, const int N, const int parallel, 11 | const int lda, c_matrix_mult f); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /.ci/uenv-recipes/tmlqcd/daint-gh200/config.yaml: -------------------------------------------------------------------------------- 1 | name: tmlqcd 2 | store: /user-environment 3 | spack: 4 | repo: https://github.com/spack/spack.git 5 | commit: releases/v1.0 6 | packages: 7 | repo: https://github.com/spack/spack-packages.git 8 | commit: releases/v2025.11 9 | modules: true 10 | description: "tmLQCD is a freely available software suite providing a set of tools to be used in lattice QCD simulations." 11 | version: 2 12 | -------------------------------------------------------------------------------- /buffers/gauge_return_gauge_field_array.c: -------------------------------------------------------------------------------- 1 | #include "gauge.ih" 2 | 3 | void return_gauge_field_array(gauge_field_array_t *gauge_field_array) { 4 | for (unsigned int ctr = 0; ctr < gauge_field_array->length; ++ctr) { 5 | g_gauge_buffers.reserve[g_gauge_buffers.free] = gauge_field_array->field_array[ctr].field; 6 | ++g_gauge_buffers.free; 7 | gauge_field_array->field_array[ctr].field = NULL; 8 | } 9 | free(gauge_field_array->field_array); 10 | } 11 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/return_check.data: -------------------------------------------------------------------------------- 1 | 00000000 ddh = 1.9377e-09 ddh/dh = 1.2849e-08 ddh/H = 1.4659e-14 ddU= 1.4159e-12 2 | 00000004 ddh = -2.0500e-09 ddh/dh = 2.3430e-08 ddh/H = -1.1670e-14 ddU= 1.5603e-12 3 | 00000008 ddh = -7.0423e-10 ddh/dh = 1.5542e-09 ddh/H = -3.8305e-15 ddU= 1.8030e-12 4 | 00000012 ddh = 2.3633e-09 ddh/dh = 6.2753e-09 ddh/H = 1.2566e-14 ddU= 2.2324e-12 5 | 00000016 ddh = 2.5397e-09 ddh/dh = 5.5594e-09 ddh/H = 1.3421e-14 ddU= 2.4471e-12 6 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/return_check.data: -------------------------------------------------------------------------------- 1 | 00000000 ddh = -2.6085e-08 ddh/dh = -1.7296e-07 ddh/H = -1.9734e-13 ddU= 2.6765e-11 2 | 00000004 ddh = 7.9704e-09 ddh/dh = -9.1094e-08 ddh/H = 4.5374e-14 ddU= 1.0448e-11 3 | 00000008 ddh = 6.6077e-08 ddh/dh = -1.4583e-07 ddh/H = 3.5941e-13 ddU= 3.3593e-11 4 | 00000012 ddh = 2.1891e-08 ddh/dh = 5.8126e-08 ddh/H = 1.1640e-13 ddU= 4.4380e-11 5 | 00000016 ddh = 1.7062e-07 ddh/dh = 3.7356e-07 ddh/H = 9.0165e-13 ddU= 1.1339e-10 6 | -------------------------------------------------------------------------------- /smearing/utils.ih: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | # include 3 | #endif 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | #include "utils.h" 21 | -------------------------------------------------------------------------------- /smearing/ape.ih: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | # include 3 | #endif 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | #include 21 | -------------------------------------------------------------------------------- /smearing/hex.ih: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | # include 3 | #endif 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | #include 21 | -------------------------------------------------------------------------------- /smearing/hyp.ih: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | # include 3 | #endif 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | #include 21 | -------------------------------------------------------------------------------- /smearing/stout.ih: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | # include 3 | #endif 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | #include 21 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/return_check.data: -------------------------------------------------------------------------------- 1 | 00000000 ddh = -6.6547e-10 ddh/dh = -4.4125e-09 ddh/H = -5.0344e-15 ddU= 1.1301e-14 2 | 00000004 ddh = -4.6349e-09 ddh/dh = 5.2973e-08 ddh/H = -2.6386e-14 ddU= 1.3477e-14 3 | 00000008 ddh = -1.0876e-09 ddh/dh = 2.4002e-09 ddh/H = -5.9157e-15 ddU= 1.4276e-14 4 | 00000012 ddh = -4.7692e-10 ddh/dh = -1.2664e-09 ddh/H = -2.5359e-15 ddU= 2.0991e-14 5 | 00000016 ddh = -3.6782e-09 ddh/dh = -8.0522e-09 ddh/H = -1.9438e-14 ddU= 2.1964e-14 6 | -------------------------------------------------------------------------------- /io/params_construct_ildgFormat.c: -------------------------------------------------------------------------------- 1 | #include "params.ih" 2 | 3 | paramsIldgFormat *construct_paramsIldgFormat(int const prec) { 4 | paramsIldgFormat *format = malloc(sizeof(paramsIldgFormat)); 5 | 6 | if (format == (paramsIldgFormat *)NULL) 7 | kill_with_error(NULL, g_cart_id, "Could not allocate paramsIldgFormat."); 8 | 9 | format->prec = prec; 10 | format->lx = L; 11 | format->ly = L; 12 | format->lz = L; 13 | format->lt = T_global; 14 | 15 | return format; 16 | } 17 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/return_check.data: -------------------------------------------------------------------------------- 1 | 00000000 ddh = 2.2619e-09 ddh/dh = -1.1963e-08 ddh/H = 1.6740e-14 ddU= 1.9247e-12 2 | 00000004 ddh = 1.1777e-08 ddh/dh = 1.7454e-07 ddh/H = 6.1507e-14 ddU= 1.0691e-11 3 | 00000008 ddh = 3.5947e-08 ddh/dh = 9.4421e-07 ddh/H = 1.8038e-13 ddU= 2.0481e-11 4 | 00000012 ddh = -2.1570e-08 ddh/dh = -4.8333e-08 ddh/H = -1.0718e-13 ddU= 1.5118e-11 5 | 00000016 ddh = -3.1185e-09 ddh/dh = -9.4472e-09 ddh/H = -1.5409e-14 ddU= 1.2823e-11 6 | -------------------------------------------------------------------------------- /io/utils_destruct_writer.c: -------------------------------------------------------------------------------- 1 | #include "utils.ih" 2 | 3 | void destruct_writer(WRITER *writer) { 4 | LIME_FILE *fh = NULL; 5 | 6 | #ifdef HAVE_LIBLEMON 7 | fh = writer->fp; 8 | lemonDestroyWriter(writer); 9 | MPI_File_close(fh); 10 | free(fh); /* NB This assumes construct_writer was used to malloc memory! */ 11 | #else /* HAVE_LIBLEMON */ 12 | if (g_cart_id == 0) { 13 | fh = writer->fp; 14 | limeDestroyWriter(writer); 15 | fclose(fh); 16 | } 17 | #endif /* HAVE_LIBLEMON */ 18 | } 19 | -------------------------------------------------------------------------------- /io/utils_kill_with_error.c: -------------------------------------------------------------------------------- 1 | #include "utils.ih" 2 | 3 | void kill_with_error(LIME_FILE *fh, int const rank, char const *error) { 4 | if (error != NULL) { 5 | fprintf(stderr, "KILL_WITH_ERROR on node %d: %s", rank, error); 6 | fflush(stderr); 7 | } 8 | 9 | if (fh != NULL) 10 | #ifdef HAVE_LIBLEMON 11 | MPI_File_close(fh); 12 | #else 13 | fclose(fh); 14 | #endif /* HAVE_LIBLEMON */ 15 | 16 | #ifdef TM_USE_MPI 17 | MPI_Abort(MPI_COMM_WORLD, 1); 18 | MPI_Finalize(); 19 | #endif 20 | exit(500); 21 | } 22 | -------------------------------------------------------------------------------- /test/hopping_test.input.new: -------------------------------------------------------------------------------- 1 | T=TT 2 | L=LL 3 | 4 | NrXProcs=NX 5 | NrYProcs=NY 6 | NrZProcs=NZ 7 | 8 | UseEvenOdd = yes 9 | 10 | 11 | #StartCondition can be: hot (random gauge), cold (unit gauge), continue (read from GaugeConfigInputFile), 12 | #restart (random gauge, written on GaugeConfigInputFile). 13 | Startcondition = continue 14 | GaugeConfigInputFile = gaugeconf 15 | #ReadSource:yes(read from SourceInputFilename), no(random), save(random spinor, written on SourceInputFilename). 16 | ReadSource = yes 17 | SourceFilename = spincolorfield 18 | 19 | WriteCheckpoints = no -------------------------------------------------------------------------------- /.ci/uenv-recipes/tmlqcd/daint-gh200/environments.yaml: -------------------------------------------------------------------------------- 1 | gcc-env: 2 | compiler: [gcc] 3 | network: 4 | mpi: cray-mpich@8.1.32 +cuda 5 | unify: true 6 | specs: 7 | - python@3.12 8 | - numdiff 9 | - quda@develop +qdp +multigrid +twisted_clover +twisted_mass 10 | - lemonio 11 | - c-lime 12 | - openblas 13 | - cuda 14 | variants: 15 | - +mpi 16 | - +cuda 17 | - cuda_arch=90 18 | views: 19 | default: 20 | link: roots 21 | uenv: 22 | add_compilers: true 23 | prefix_paths: 24 | LD_LIBRARY_PATH: [lib, lib64] 25 | -------------------------------------------------------------------------------- /test/hopping_test.input.start: -------------------------------------------------------------------------------- 1 | T=TT 2 | L=LL 3 | 4 | UseEvenOdd=yes 5 | 6 | NrXProcs=NX 7 | NrYProcs=NY 8 | NrZProcs=NZ 9 | 10 | 11 | #StartCondition can be: hot (random gauge), cold (unit gauge), continue (read from GaugeConfigInputFile), 12 | #restart (random gauge, written on GaugeConfigInputFile). 13 | Startcondition = restart 14 | GaugeConfigInputFile = gaugeconf 15 | #ReadSource:yes(read from SourceInputFilename), no(random), save(random spinor, written on SourceInputFilename). 16 | ReadSource = nobutsave 17 | SourceFilename = spincolorfield 18 | 19 | WriteCheckpoints = no 20 | 21 | -------------------------------------------------------------------------------- /tests/test_buffers.c: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | #ifdef TM_USE_MPI 6 | #include 7 | #endif 8 | 9 | #include "test_buffers_gauge.h" 10 | 11 | TEST_SUITES{TEST_SUITE_ADD(BUFFERS_GAUGE), TEST_SUITES_CLOSURE}; 12 | 13 | int main(int argc, char *argv[]) { 14 | #ifdef TM_USE_MPI 15 | MPI_Init(&argc, &argv); 16 | MPI_Comm_rank(MPI_COMM_WORLD, &g_proc_id); 17 | #else 18 | g_proc_id = 0; 19 | #endif 20 | 21 | CU_SET_OUT_PREFIX("regressions/"); 22 | CU_RUN(argc, argv); 23 | 24 | #ifdef TM_USE_MPI 25 | MPI_Finalize(); 26 | #endif 27 | 28 | return 0; 29 | } 30 | -------------------------------------------------------------------------------- /.ci/uenv-recipes/tmlqcd/daint-gh200/modules.yaml: -------------------------------------------------------------------------------- 1 | modules: 2 | # Paths to check when creating modules for all module sets 3 | prefix_inspections: 4 | bin: 5 | - PATH 6 | lib: 7 | - LD_LIBRARY_PATH 8 | lib64: 9 | - LD_LIBRARY_PATH 10 | 11 | default: 12 | arch_folder: false 13 | # Where to install modules 14 | roots: 15 | tcl: /user-environment/modules 16 | tcl: 17 | all: 18 | autoload: none 19 | hash_length: 0 20 | exclude_implicits: true 21 | exclude: ['%gcc@7.5.0', 'gcc %gcc@7.5.0'] 22 | projections: 23 | all: '{name}/{version}' 24 | -------------------------------------------------------------------------------- /io/params_construct_propagatorFormat.c: -------------------------------------------------------------------------------- 1 | #include "params.ih" 2 | 3 | paramsPropagatorFormat *construct_paramsPropagatorFormat(int const prec, int const flavours) { 4 | paramsPropagatorFormat *format = malloc(sizeof(paramsPropagatorFormat)); 5 | 6 | if (format == (paramsPropagatorFormat *)NULL) 7 | kill_with_error(NULL, g_cart_id, "Could not allocate paramsPropagatorFormat."); 8 | 9 | format->flavours = flavours; 10 | format->prec = prec; 11 | 12 | format->lx = LX * g_nproc_x; 13 | format->ly = LY * g_nproc_y; 14 | format->lz = LZ * g_nproc_z; 15 | format->lt = T * g_nproc_t; 16 | 17 | return format; 18 | } 19 | -------------------------------------------------------------------------------- /test/hopping_test.input.compare: -------------------------------------------------------------------------------- 1 | # This only compares SourceFilename with SourceFilename.2 (no MPI) 2 | T=TT 3 | L=LL 4 | NrXProcs=NX 5 | NrYProcs=NY 6 | NrZProcs=NZ 7 | 8 | UseEvenOdd = yes 9 | 10 | 11 | #StartCondition can be: hot (random gauge), cold (unit gauge), continue (read from GaugeConfigInputFile), 12 | #restart (random gauge, written on GaugeConfigInputFile). 13 | Startcondition = cold 14 | GaugeConfigInputFile = gaugeconf 15 | #ReadSource:yes(read from SourceInputFilename), no(random), save(random spinor, written on SourceInputFilename). 16 | ReadSource = yes 17 | SourceFilename = spincolorfield 18 | 19 | WriteCheckpoints = yes -------------------------------------------------------------------------------- /operator/tm_operators_32.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _TM_OPERATORS_32_H 3 | #define _TM_OPERATORS_32_H 4 | 5 | void mul_one_pm_imu_inv_32_orphaned(spinor32* const l, const float _sign, const int N); 6 | void mul_one_pm_imu_sub_mul_gamma5_32_orphaned(spinor32* const l, spinor32* const k, 7 | spinor32* const j, const float _sign); 8 | void Qtm_pm_psi_32(spinor32* const l, spinor32* const k); 9 | void Q_pm_psi_32(spinor32* const l, spinor32* const k); 10 | void gamma5_32_orphaned(spinor32* const l, spinor32* const k, const int V); 11 | void gamma5_32(spinor32* const l, spinor32* const k, const int V); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /doc/sample-input/sample-cgs.input: -------------------------------------------------------------------------------- 1 | # example input file for invert 2 | # for CGS solver 3 | # requires a 4^4 gauge configuration conf.0000 4 | 5 | L=4 6 | T=4 7 | 8 | DebugLevel = 5 9 | InitialStoreCounter = 0 10 | Measurements = 1 11 | 2kappamu = 0.05 12 | kappa = 0.177 13 | BCAngleT = 1 14 | GaugeConfigInputFile = conf 15 | UseEvenOdd = yes 16 | 17 | SourceType = Volume 18 | ReadSource = no 19 | NoSamples = 12 20 | 21 | BeginOperator TMWILSON 22 | 2kappaMu = 0.05 23 | kappa = 0.177 24 | UseEvenOdd = yes 25 | Solver = CGS 26 | SolverPrecision = 1e-14 27 | MaxSolverIterations = 1000 28 | AddDownPropagator = yes 29 | EndOperator 30 | 31 | 32 | -------------------------------------------------------------------------------- /doc/sample-input/sample-bicgstab.input: -------------------------------------------------------------------------------- 1 | # example input file for invert 2 | # for bicgstab solver 3 | # requires a 4^4 gauge configuration conf.0000 4 | 5 | L=4 6 | T=4 7 | 8 | DebugLevel = 5 9 | InitialStoreCounter = 0 10 | Measurements = 1 11 | 2kappamu = 0.05 12 | kappa = 0.177 13 | BCAngleT = 1 14 | GaugeConfigInputFile = conf 15 | UseEvenOdd = yes 16 | 17 | SourceType = Volume 18 | ReadSource = no 19 | NoSamples = 12 20 | 21 | BeginOperator TMWILSON 22 | 2kappaMu = 0.05 23 | kappa = 0.177 24 | UseEvenOdd = yes 25 | Solver = bicgstab 26 | SolverPrecision = 1e-14 27 | MaxSolverIterations = 1000 28 | AddDownPropagator = yes 29 | EndOperator 30 | 31 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/onlinemeas.000000: -------------------------------------------------------------------------------- 1 | 1 1 0 3.424734e+01 0.000000e+00 2 | 1 1 1 2.179399e+00 2.293782e+00 3 | 1 1 2 2.423845e-01 2.628904e-01 4 | 1 1 3 2.920621e-02 3.011645e-02 5 | 1 1 4 6.769122e-03 0.000000e+00 6 | 2 1 0 -6.158415e-01 0.000000e+00 7 | 2 1 1 1.486008e+00 -1.547959e+00 8 | 2 1 2 1.630153e-01 -1.763693e-01 9 | 2 1 3 1.900583e-02 -1.938784e-02 10 | 2 1 4 1.971411e-04 0.000000e+00 11 | 6 1 0 4.867931e-01 0.000000e+00 12 | 6 1 1 7.305715e-02 -7.651057e-02 13 | 6 1 2 8.684398e-03 -1.029473e-02 14 | 6 1 3 1.173327e-03 -1.164032e-03 15 | 6 1 4 -2.058939e-05 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/onlinemeas.000002: -------------------------------------------------------------------------------- 1 | 1 1 0 3.471990e+01 0.000000e+00 2 | 1 1 1 2.590445e+00 2.655557e+00 3 | 1 1 2 3.553754e-01 3.647811e-01 4 | 1 1 3 4.968772e-02 5.213731e-02 5 | 1 1 4 1.396723e-02 0.000000e+00 6 | 2 1 0 -1.487829e-01 0.000000e+00 7 | 2 1 1 1.626528e+00 -1.656827e+00 8 | 2 1 2 2.206825e-01 -2.313569e-01 9 | 2 1 3 2.906086e-02 -3.189450e-02 10 | 2 1 4 -1.697186e-04 0.000000e+00 11 | 6 1 0 5.892445e-01 0.000000e+00 12 | 6 1 1 1.011107e-01 -1.239287e-01 13 | 6 1 2 1.490410e-02 -2.009457e-02 14 | 6 1 3 2.064105e-03 -1.800818e-03 15 | 6 1 4 2.335424e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/onlinemeas.000004: -------------------------------------------------------------------------------- 1 | 1 1 0 3.489961e+01 0.000000e+00 2 | 1 1 1 2.799131e+00 2.674109e+00 3 | 1 1 2 4.000663e-01 4.124269e-01 4 | 1 1 3 6.525993e-02 7.122774e-02 5 | 1 1 4 2.132372e-02 0.000000e+00 6 | 2 1 0 2.803447e-01 0.000000e+00 7 | 2 1 1 1.622539e+00 -1.626766e+00 8 | 2 1 2 2.355872e-01 -2.461904e-01 9 | 2 1 3 3.487296e-02 -3.955609e-02 10 | 2 1 4 -7.058250e-04 0.000000e+00 11 | 6 1 0 1.636338e-01 0.000000e+00 12 | 6 1 1 1.086651e-01 -1.058852e-01 13 | 6 1 2 1.509206e-02 -2.069605e-02 14 | 6 1 3 2.936017e-03 -2.586700e-03 15 | 6 1 4 2.661613e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/onlinemeas.000006: -------------------------------------------------------------------------------- 1 | 1 1 0 3.436999e+01 0.000000e+00 2 | 1 1 1 2.826252e+00 2.923961e+00 3 | 1 1 2 4.420688e-01 4.450500e-01 4 | 1 1 3 7.635246e-02 7.292410e-02 5 | 1 1 4 2.547268e-02 0.000000e+00 6 | 2 1 0 -6.505432e-01 0.000000e+00 7 | 2 1 1 1.641175e+00 -1.692241e+00 8 | 2 1 2 2.578280e-01 -2.469258e-01 9 | 2 1 3 3.891518e-02 -3.979994e-02 10 | 2 1 4 -1.066064e-03 0.000000e+00 11 | 6 1 0 -8.320571e-02 0.000000e+00 12 | 6 1 1 1.107951e-01 -1.188322e-01 13 | 6 1 2 1.658398e-02 -2.028693e-02 14 | 6 1 3 3.560260e-03 -3.057380e-03 15 | 6 1 4 4.964012e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/onlinemeas.000008: -------------------------------------------------------------------------------- 1 | 1 1 0 3.421472e+01 0.000000e+00 2 | 1 1 1 3.340339e+00 2.839302e+00 3 | 1 1 2 6.626364e-01 4.646723e-01 4 | 1 1 3 1.371574e-01 8.789101e-02 5 | 1 1 4 4.330243e-02 0.000000e+00 6 | 2 1 0 1.081758e+00 0.000000e+00 7 | 2 1 1 1.893688e+00 -1.631633e+00 8 | 2 1 2 3.752751e-01 -2.454021e-01 9 | 2 1 3 7.408656e-02 -4.233177e-02 10 | 2 1 4 7.188709e-03 0.000000e+00 11 | 6 1 0 9.491141e-01 0.000000e+00 12 | 6 1 1 1.554260e-01 -1.443985e-01 13 | 6 1 2 3.971019e-02 -2.313648e-02 14 | 6 1 3 7.194537e-03 -3.899622e-03 15 | 6 1 4 9.475612e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/onlinemeas.000010: -------------------------------------------------------------------------------- 1 | 1 1 0 3.387886e+01 0.000000e+00 2 | 1 1 1 2.788627e+00 2.999193e+00 3 | 1 1 2 4.787639e-01 5.208712e-01 4 | 1 1 3 1.020220e-01 1.109698e-01 5 | 1 1 4 4.286604e-02 0.000000e+00 6 | 2 1 0 -9.232331e-01 0.000000e+00 7 | 2 1 1 1.498371e+00 -1.651027e+00 8 | 2 1 2 2.458388e-01 -2.892125e-01 9 | 2 1 3 5.026319e-02 -5.299138e-02 10 | 2 1 4 9.783251e-05 0.000000e+00 11 | 6 1 0 7.983006e-01 0.000000e+00 12 | 6 1 1 1.062984e-01 -1.420297e-01 13 | 6 1 2 2.513890e-02 -2.502430e-02 14 | 6 1 3 6.373561e-03 -6.618297e-03 15 | 6 1 4 -3.151745e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/onlinemeas.000012: -------------------------------------------------------------------------------- 1 | 1 1 0 3.382233e+01 0.000000e+00 2 | 1 1 1 2.995261e+00 2.875813e+00 3 | 1 1 2 5.063789e-01 5.100215e-01 4 | 1 1 3 1.006529e-01 1.174080e-01 5 | 1 1 4 4.782690e-02 0.000000e+00 6 | 2 1 0 -2.748816e-01 0.000000e+00 7 | 2 1 1 1.546978e+00 -1.573492e+00 8 | 2 1 2 2.491683e-01 -2.772146e-01 9 | 2 1 3 4.337936e-02 -6.241277e-02 10 | 2 1 4 -6.321245e-03 0.000000e+00 11 | 6 1 0 5.387614e-01 0.000000e+00 12 | 6 1 1 1.311452e-01 -1.202097e-01 13 | 6 1 2 2.469058e-02 -3.317891e-02 14 | 6 1 3 1.976138e-03 -8.454933e-03 15 | 6 1 4 -1.927687e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/onlinemeas.000014: -------------------------------------------------------------------------------- 1 | 1 1 0 3.384327e+01 0.000000e+00 2 | 1 1 1 3.058955e+00 2.867488e+00 3 | 1 1 2 5.927826e-01 5.535241e-01 4 | 1 1 3 1.463130e-01 1.372398e-01 5 | 1 1 4 6.632449e-02 0.000000e+00 6 | 2 1 0 6.828128e-01 0.000000e+00 7 | 2 1 1 1.675018e+00 -1.532293e+00 8 | 2 1 2 3.123890e-01 -3.063236e-01 9 | 2 1 3 6.949663e-02 -6.162945e-02 10 | 2 1 4 7.048626e-03 0.000000e+00 11 | 6 1 0 -2.533219e-01 0.000000e+00 12 | 6 1 1 1.515387e-01 -1.275533e-01 13 | 6 1 2 2.346941e-02 -4.019024e-02 14 | 6 1 3 1.434086e-03 -1.463791e-02 15 | 6 1 4 -7.198533e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/onlinemeas.000016: -------------------------------------------------------------------------------- 1 | 1 1 0 3.350519e+01 0.000000e+00 2 | 1 1 1 2.932367e+00 2.982126e+00 3 | 1 1 2 5.435003e-01 5.352220e-01 4 | 1 1 3 1.330435e-01 1.288675e-01 5 | 1 1 4 6.230849e-02 0.000000e+00 6 | 2 1 0 -5.540765e-01 0.000000e+00 7 | 2 1 1 1.574765e+00 -1.569985e+00 8 | 2 1 2 2.688151e-01 -2.687815e-01 9 | 2 1 3 5.300085e-02 -5.330253e-02 10 | 2 1 4 -3.088351e-03 0.000000e+00 11 | 6 1 0 -7.088872e-01 0.000000e+00 12 | 6 1 1 1.479798e-01 -1.378250e-01 13 | 6 1 2 3.012801e-02 -2.458449e-02 14 | 6 1 3 1.285167e-02 -2.412400e-03 15 | 6 1 4 4.275018e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-tmcloverdetratio/onlinemeas.000018: -------------------------------------------------------------------------------- 1 | 1 1 0 3.327789e+01 0.000000e+00 2 | 1 1 1 2.914903e+00 2.887494e+00 3 | 1 1 2 5.422225e-01 5.327371e-01 4 | 1 1 3 1.341759e-01 1.336548e-01 5 | 1 1 4 6.495316e-02 0.000000e+00 6 | 2 1 0 2.431879e-01 0.000000e+00 7 | 2 1 1 1.491114e+00 -1.524711e+00 8 | 2 1 2 2.682533e-01 -2.606564e-01 9 | 2 1 3 5.792282e-02 -5.121780e-02 10 | 2 1 4 4.448036e-03 0.000000e+00 11 | 6 1 0 -6.232878e-01 0.000000e+00 12 | 6 1 1 1.495537e-01 -1.463364e-01 13 | 6 1 2 3.212243e-02 -2.882470e-02 14 | 6 1 3 1.268931e-02 -2.092113e-03 15 | 6 1 4 5.941584e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/onlinemeas.000008: -------------------------------------------------------------------------------- 1 | 1 1 0 3.421472e+01 0.000000e+00 2 | 1 1 1 3.340339e+00 2.839302e+00 3 | 1 1 2 6.626366e-01 4.646722e-01 4 | 1 1 3 1.371574e-01 8.789097e-02 5 | 1 1 4 4.330243e-02 0.000000e+00 6 | 2 1 0 1.081758e+00 0.000000e+00 7 | 2 1 1 1.893688e+00 -1.631633e+00 8 | 2 1 2 3.752752e-01 -2.454020e-01 9 | 2 1 3 7.408659e-02 -4.233174e-02 10 | 2 1 4 7.188724e-03 0.000000e+00 11 | 6 1 0 9.491137e-01 0.000000e+00 12 | 6 1 1 1.554260e-01 -1.443986e-01 13 | 6 1 2 3.971023e-02 -2.313647e-02 14 | 6 1 3 7.194539e-03 -3.899618e-03 15 | 6 1 4 9.475647e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/onlinemeas.000000: -------------------------------------------------------------------------------- 1 | 1 1 0 3.424734e+01 0.000000e+00 2 | 1 1 1 2.179399e+00 2.293782e+00 3 | 1 1 2 2.423845e-01 2.628904e-01 4 | 1 1 3 2.920621e-02 3.011645e-02 5 | 1 1 4 6.769122e-03 0.000000e+00 6 | 2 1 0 -6.158415e-01 0.000000e+00 7 | 2 1 1 1.486008e+00 -1.547959e+00 8 | 2 1 2 1.630153e-01 -1.763693e-01 9 | 2 1 3 1.900583e-02 -1.938784e-02 10 | 2 1 4 1.971411e-04 0.000000e+00 11 | 6 1 0 4.867931e-01 0.000000e+00 12 | 6 1 1 7.305715e-02 -7.651057e-02 13 | 6 1 2 8.684398e-03 -1.029473e-02 14 | 6 1 3 1.173327e-03 -1.164032e-03 15 | 6 1 4 -2.058939e-05 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/onlinemeas.000002: -------------------------------------------------------------------------------- 1 | 1 1 0 3.471990e+01 0.000000e+00 2 | 1 1 1 2.590445e+00 2.655557e+00 3 | 1 1 2 3.553754e-01 3.647811e-01 4 | 1 1 3 4.968772e-02 5.213731e-02 5 | 1 1 4 1.396723e-02 0.000000e+00 6 | 2 1 0 -1.487829e-01 0.000000e+00 7 | 2 1 1 1.626528e+00 -1.656827e+00 8 | 2 1 2 2.206825e-01 -2.313569e-01 9 | 2 1 3 2.906086e-02 -3.189450e-02 10 | 2 1 4 -1.697186e-04 0.000000e+00 11 | 6 1 0 5.892445e-01 0.000000e+00 12 | 6 1 1 1.011107e-01 -1.239287e-01 13 | 6 1 2 1.490410e-02 -2.009457e-02 14 | 6 1 3 2.064105e-03 -1.800818e-03 15 | 6 1 4 2.335424e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/onlinemeas.000004: -------------------------------------------------------------------------------- 1 | 1 1 0 3.489961e+01 0.000000e+00 2 | 1 1 1 2.799131e+00 2.674109e+00 3 | 1 1 2 4.000663e-01 4.124269e-01 4 | 1 1 3 6.525993e-02 7.122774e-02 5 | 1 1 4 2.132372e-02 0.000000e+00 6 | 2 1 0 2.803447e-01 0.000000e+00 7 | 2 1 1 1.622539e+00 -1.626766e+00 8 | 2 1 2 2.355872e-01 -2.461904e-01 9 | 2 1 3 3.487296e-02 -3.955609e-02 10 | 2 1 4 -7.058251e-04 0.000000e+00 11 | 6 1 0 1.636338e-01 0.000000e+00 12 | 6 1 1 1.086651e-01 -1.058852e-01 13 | 6 1 2 1.509206e-02 -2.069605e-02 14 | 6 1 3 2.936017e-03 -2.586700e-03 15 | 6 1 4 2.661615e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/onlinemeas.000006: -------------------------------------------------------------------------------- 1 | 1 1 0 3.436999e+01 0.000000e+00 2 | 1 1 1 2.826252e+00 2.923961e+00 3 | 1 1 2 4.420688e-01 4.450500e-01 4 | 1 1 3 7.635246e-02 7.292410e-02 5 | 1 1 4 2.547268e-02 0.000000e+00 6 | 2 1 0 -6.505429e-01 0.000000e+00 7 | 2 1 1 1.641175e+00 -1.692241e+00 8 | 2 1 2 2.578280e-01 -2.469258e-01 9 | 2 1 3 3.891519e-02 -3.979994e-02 10 | 2 1 4 -1.066065e-03 0.000000e+00 11 | 6 1 0 -8.320553e-02 0.000000e+00 12 | 6 1 1 1.107951e-01 -1.188322e-01 13 | 6 1 2 1.658398e-02 -2.028692e-02 14 | 6 1 3 3.560260e-03 -3.057380e-03 15 | 6 1 4 4.964009e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/onlinemeas.000008: -------------------------------------------------------------------------------- 1 | 1 1 0 3.421472e+01 0.000000e+00 2 | 1 1 1 3.340338e+00 2.839302e+00 3 | 1 1 2 6.626364e-01 4.646722e-01 4 | 1 1 3 1.371573e-01 8.789097e-02 5 | 1 1 4 4.330242e-02 0.000000e+00 6 | 2 1 0 1.081758e+00 0.000000e+00 7 | 2 1 1 1.893688e+00 -1.631633e+00 8 | 2 1 2 3.752751e-01 -2.454020e-01 9 | 2 1 3 7.408655e-02 -4.233174e-02 10 | 2 1 4 7.188709e-03 0.000000e+00 11 | 6 1 0 9.491140e-01 0.000000e+00 12 | 6 1 1 1.554260e-01 -1.443985e-01 13 | 6 1 2 3.971019e-02 -2.313646e-02 14 | 6 1 3 7.194545e-03 -3.899612e-03 15 | 6 1 4 9.475720e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/onlinemeas.000010: -------------------------------------------------------------------------------- 1 | 1 1 0 3.387886e+01 0.000000e+00 2 | 1 1 1 2.788626e+00 2.999193e+00 3 | 1 1 2 4.787638e-01 5.208716e-01 4 | 1 1 3 1.020219e-01 1.109699e-01 5 | 1 1 4 4.286604e-02 0.000000e+00 6 | 2 1 0 -9.232348e-01 0.000000e+00 7 | 2 1 1 1.498371e+00 -1.651027e+00 8 | 2 1 2 2.458386e-01 -2.892127e-01 9 | 2 1 3 5.026310e-02 -5.299146e-02 10 | 2 1 4 9.781858e-05 0.000000e+00 11 | 6 1 0 7.982990e-01 0.000000e+00 12 | 6 1 1 1.062982e-01 -1.420299e-01 13 | 6 1 2 2.513887e-02 -2.502436e-02 14 | 6 1 3 6.373549e-03 -6.618316e-03 15 | 6 1 4 -3.151778e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/onlinemeas.000012: -------------------------------------------------------------------------------- 1 | 1 1 0 3.382234e+01 0.000000e+00 2 | 1 1 1 2.995261e+00 2.875812e+00 3 | 1 1 2 5.063795e-01 5.100208e-01 4 | 1 1 3 1.006529e-01 1.174076e-01 5 | 1 1 4 4.782682e-02 0.000000e+00 6 | 2 1 0 -2.748838e-01 0.000000e+00 7 | 2 1 1 1.546980e+00 -1.573491e+00 8 | 2 1 2 2.491686e-01 -2.772142e-01 9 | 2 1 3 4.337945e-02 -6.241266e-02 10 | 2 1 4 -6.321273e-03 0.000000e+00 11 | 6 1 0 5.387689e-01 0.000000e+00 12 | 6 1 1 1.311453e-01 -1.202091e-01 13 | 6 1 2 2.469061e-02 -3.317881e-02 14 | 6 1 3 1.976094e-03 -8.455000e-03 15 | 6 1 4 -1.927750e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/onlinemeas.000014: -------------------------------------------------------------------------------- 1 | 1 1 0 3.384332e+01 0.000000e+00 2 | 1 1 1 3.058971e+00 2.867482e+00 3 | 1 1 2 5.927879e-01 5.535211e-01 4 | 1 1 3 1.463143e-01 1.372395e-01 5 | 1 1 4 6.632476e-02 0.000000e+00 6 | 2 1 0 6.828284e-01 0.000000e+00 7 | 2 1 1 1.675028e+00 -1.532287e+00 8 | 2 1 2 3.123937e-01 -3.063247e-01 9 | 2 1 3 6.949756e-02 -6.162975e-02 10 | 2 1 4 7.048824e-03 0.000000e+00 11 | 6 1 0 -2.533447e-01 0.000000e+00 12 | 6 1 1 1.515393e-01 -1.275537e-01 13 | 6 1 2 2.346966e-02 -4.019053e-02 14 | 6 1 3 1.433944e-03 -1.463813e-02 15 | 6 1 4 -7.198556e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/onlinemeas.000016: -------------------------------------------------------------------------------- 1 | 1 1 0 3.350499e+01 0.000000e+00 2 | 1 1 1 2.932334e+00 2.982039e+00 3 | 1 1 2 5.434805e-01 5.351988e-01 4 | 1 1 3 1.330346e-01 1.288597e-01 5 | 1 1 4 6.230389e-02 0.000000e+00 6 | 2 1 0 -5.539881e-01 0.000000e+00 7 | 2 1 1 1.574741e+00 -1.569952e+00 8 | 2 1 2 2.688100e-01 -2.687716e-01 9 | 2 1 3 5.300017e-02 -5.329829e-02 10 | 2 1 4 -3.085424e-03 0.000000e+00 11 | 6 1 0 -7.089285e-01 0.000000e+00 12 | 6 1 1 1.479719e-01 -1.378143e-01 13 | 6 1 2 3.012575e-02 -2.458313e-02 14 | 6 1 3 1.285082e-02 -2.411722e-03 15 | 6 1 4 4.275350e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-ddalphaamg-tmcloverdetratio/onlinemeas.000018: -------------------------------------------------------------------------------- 1 | 1 1 0 3.327833e+01 0.000000e+00 2 | 1 1 1 2.914884e+00 2.887613e+00 3 | 1 1 2 5.422550e-01 5.327642e-01 4 | 1 1 3 1.342023e-01 1.336877e-01 5 | 1 1 4 6.497096e-02 0.000000e+00 6 | 2 1 0 2.431595e-01 0.000000e+00 7 | 2 1 1 1.491172e+00 -1.524832e+00 8 | 2 1 2 2.682825e-01 -2.606945e-01 9 | 2 1 3 5.792593e-02 -5.123251e-02 10 | 2 1 4 4.446912e-03 0.000000e+00 11 | 6 1 0 -6.232563e-01 0.000000e+00 12 | 6 1 1 1.495484e-01 -1.463705e-01 13 | 6 1 2 3.212356e-02 -2.883108e-02 14 | 6 1 3 1.268960e-02 -2.096584e-03 15 | 6 1 4 5.938212e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/onlinemeas.000000: -------------------------------------------------------------------------------- 1 | 1 1 0 3.424734e+01 0.000000e+00 2 | 1 1 1 2.179399e+00 2.293782e+00 3 | 1 1 2 2.423845e-01 2.628904e-01 4 | 1 1 3 2.920621e-02 3.011645e-02 5 | 1 1 4 6.769122e-03 0.000000e+00 6 | 2 1 0 -6.158415e-01 0.000000e+00 7 | 2 1 1 1.486008e+00 -1.547959e+00 8 | 2 1 2 1.630153e-01 -1.763693e-01 9 | 2 1 3 1.900583e-02 -1.938784e-02 10 | 2 1 4 1.971411e-04 0.000000e+00 11 | 6 1 0 4.867931e-01 0.000000e+00 12 | 6 1 1 7.305715e-02 -7.651057e-02 13 | 6 1 2 8.684398e-03 -1.029473e-02 14 | 6 1 3 1.173327e-03 -1.164032e-03 15 | 6 1 4 -2.058939e-05 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/onlinemeas.000002: -------------------------------------------------------------------------------- 1 | 1 1 0 3.471990e+01 0.000000e+00 2 | 1 1 1 2.590445e+00 2.655557e+00 3 | 1 1 2 3.553754e-01 3.647811e-01 4 | 1 1 3 4.968772e-02 5.213731e-02 5 | 1 1 4 1.396723e-02 0.000000e+00 6 | 2 1 0 -1.487829e-01 0.000000e+00 7 | 2 1 1 1.626528e+00 -1.656827e+00 8 | 2 1 2 2.206825e-01 -2.313569e-01 9 | 2 1 3 2.906086e-02 -3.189450e-02 10 | 2 1 4 -1.697187e-04 0.000000e+00 11 | 6 1 0 5.892445e-01 0.000000e+00 12 | 6 1 1 1.011107e-01 -1.239287e-01 13 | 6 1 2 1.490410e-02 -2.009457e-02 14 | 6 1 3 2.064105e-03 -1.800818e-03 15 | 6 1 4 2.335424e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/onlinemeas.000004: -------------------------------------------------------------------------------- 1 | 1 1 0 3.489961e+01 0.000000e+00 2 | 1 1 1 2.799131e+00 2.674109e+00 3 | 1 1 2 4.000663e-01 4.124269e-01 4 | 1 1 3 6.525993e-02 7.122774e-02 5 | 1 1 4 2.132372e-02 0.000000e+00 6 | 2 1 0 2.803447e-01 0.000000e+00 7 | 2 1 1 1.622539e+00 -1.626766e+00 8 | 2 1 2 2.355872e-01 -2.461904e-01 9 | 2 1 3 3.487296e-02 -3.955609e-02 10 | 2 1 4 -7.058249e-04 0.000000e+00 11 | 6 1 0 1.636338e-01 0.000000e+00 12 | 6 1 1 1.086651e-01 -1.058852e-01 13 | 6 1 2 1.509206e-02 -2.069605e-02 14 | 6 1 3 2.936018e-03 -2.586700e-03 15 | 6 1 4 2.661615e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/onlinemeas.000006: -------------------------------------------------------------------------------- 1 | 1 1 0 3.436999e+01 0.000000e+00 2 | 1 1 1 2.826253e+00 2.923961e+00 3 | 1 1 2 4.420688e-01 4.450500e-01 4 | 1 1 3 7.635246e-02 7.292410e-02 5 | 1 1 4 2.547268e-02 0.000000e+00 6 | 2 1 0 -6.505432e-01 0.000000e+00 7 | 2 1 1 1.641175e+00 -1.692241e+00 8 | 2 1 2 2.578281e-01 -2.469258e-01 9 | 2 1 3 3.891519e-02 -3.979993e-02 10 | 2 1 4 -1.066063e-03 0.000000e+00 11 | 6 1 0 -8.320536e-02 0.000000e+00 12 | 6 1 1 1.107951e-01 -1.188322e-01 13 | 6 1 2 1.658398e-02 -2.028693e-02 14 | 6 1 3 3.560260e-03 -3.057379e-03 15 | 6 1 4 4.964011e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/onlinemeas.000010: -------------------------------------------------------------------------------- 1 | 1 1 0 3.387886e+01 0.000000e+00 2 | 1 1 1 2.788628e+00 2.999193e+00 3 | 1 1 2 4.787643e-01 5.208717e-01 4 | 1 1 3 1.020220e-01 1.109699e-01 5 | 1 1 4 4.286602e-02 0.000000e+00 6 | 2 1 0 -9.232309e-01 0.000000e+00 7 | 2 1 1 1.498372e+00 -1.651027e+00 8 | 2 1 2 2.458389e-01 -2.892128e-01 9 | 2 1 3 5.026316e-02 -5.299145e-02 10 | 2 1 4 9.784054e-05 0.000000e+00 11 | 6 1 0 7.983006e-01 0.000000e+00 12 | 6 1 1 1.062981e-01 -1.420298e-01 13 | 6 1 2 2.513882e-02 -2.502433e-02 14 | 6 1 3 6.373552e-03 -6.618308e-03 15 | 6 1 4 -3.151888e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/onlinemeas.000012: -------------------------------------------------------------------------------- 1 | 1 1 0 3.382234e+01 0.000000e+00 2 | 1 1 1 2.995260e+00 2.875809e+00 3 | 1 1 2 5.063789e-01 5.100190e-01 4 | 1 1 3 1.006528e-01 1.174070e-01 5 | 1 1 4 4.782661e-02 0.000000e+00 6 | 2 1 0 -2.748804e-01 0.000000e+00 7 | 2 1 1 1.546978e+00 -1.573490e+00 8 | 2 1 2 2.491685e-01 -2.772130e-01 9 | 2 1 3 4.337950e-02 -6.241230e-02 10 | 2 1 4 -6.321099e-03 0.000000e+00 11 | 6 1 0 5.387736e-01 0.000000e+00 12 | 6 1 1 1.311458e-01 -1.202093e-01 13 | 6 1 2 2.469059e-02 -3.317856e-02 14 | 6 1 3 1.976159e-03 -8.454871e-03 15 | 6 1 4 -1.927686e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/onlinemeas.000014: -------------------------------------------------------------------------------- 1 | 1 1 0 3.384324e+01 0.000000e+00 2 | 1 1 1 3.058957e+00 2.867476e+00 3 | 1 1 2 5.927854e-01 5.535240e-01 4 | 1 1 3 1.463125e-01 1.372423e-01 5 | 1 1 4 6.632518e-02 0.000000e+00 6 | 2 1 0 6.828203e-01 0.000000e+00 7 | 2 1 1 1.675024e+00 -1.532284e+00 8 | 2 1 2 3.123913e-01 -3.063287e-01 9 | 2 1 3 6.949604e-02 -6.163206e-02 10 | 2 1 4 7.048264e-03 0.000000e+00 11 | 6 1 0 -2.533828e-01 0.000000e+00 12 | 6 1 1 1.515371e-01 -1.275565e-01 13 | 6 1 2 2.346899e-02 -4.019130e-02 14 | 6 1 3 1.432903e-03 -1.463899e-02 15 | 6 1 4 -7.199547e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/onlinemeas.000016: -------------------------------------------------------------------------------- 1 | 1 1 0 3.350512e+01 0.000000e+00 2 | 1 1 1 2.932363e+00 2.982140e+00 3 | 1 1 2 5.434872e-01 5.352181e-01 4 | 1 1 3 1.330381e-01 1.288647e-01 5 | 1 1 4 6.230565e-02 0.000000e+00 6 | 2 1 0 -5.540339e-01 0.000000e+00 7 | 2 1 1 1.574762e+00 -1.570004e+00 8 | 2 1 2 2.688063e-01 -2.687797e-01 9 | 2 1 3 5.299933e-02 -5.329973e-02 10 | 2 1 4 -3.087114e-03 0.000000e+00 11 | 6 1 0 -7.089001e-01 0.000000e+00 12 | 6 1 1 1.479835e-01 -1.378289e-01 13 | 6 1 2 3.012870e-02 -2.458201e-02 14 | 6 1 3 1.285168e-02 -2.411701e-03 15 | 6 1 4 4.275426e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-rgmixedcg-tmcloverdetratio/onlinemeas.000018: -------------------------------------------------------------------------------- 1 | 1 1 0 3.327782e+01 0.000000e+00 2 | 1 1 1 2.914904e+00 2.887259e+00 3 | 1 1 2 5.422327e-01 5.326599e-01 4 | 1 1 3 1.341847e-01 1.336473e-01 5 | 1 1 4 6.495689e-02 0.000000e+00 6 | 2 1 0 2.434421e-01 0.000000e+00 7 | 2 1 1 1.491163e+00 -1.524633e+00 8 | 2 1 2 2.682570e-01 -2.606447e-01 9 | 2 1 3 5.792559e-02 -5.121253e-02 10 | 2 1 4 4.449434e-03 0.000000e+00 11 | 6 1 0 -6.228231e-01 0.000000e+00 12 | 6 1 1 1.495553e-01 -1.463100e-01 13 | 6 1 2 3.212276e-02 -2.881838e-02 14 | 6 1 3 1.268655e-02 -2.093677e-03 15 | 6 1 4 5.937981e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /xchange/xchange_field_tslice.h: -------------------------------------------------------------------------------- 1 | /********************************************************** 2 | * 3 | * exchange routines for the borders of a timeslice of spinor fields 4 | * 5 | * Author: Luigi Scorzato 6 | * 7 | **********************************************************/ 8 | 9 | #ifndef _XCHANGE_FIELDTS_H 10 | #define _XCHANGE_FIELDTS_H 11 | 12 | #define EVEN 1 13 | #define ODD 0 14 | 15 | #ifdef TM_USE_MPI 16 | void xchange_field_open(spinor *const, const int, const int, MPI_Request *, MPI_Status *); 17 | void xchange_field_close(MPI_Request *, MPI_Status *, int); 18 | void xchange_field_slice(spinor *const, const int, const int); 19 | #endif 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | TAGS 2 | autom4te.cache/ 3 | configure 4 | git_hash.h 5 | read_input.c 6 | *.d 7 | *.o 8 | *~ 9 | Makefile 10 | config.log 11 | tmlqcd_config_internal.h 12 | config.status 13 | *.mod.c 14 | *.opari.inc 15 | build/* 16 | tags* 17 | *.a 18 | hmc_tm 19 | invert 20 | offline_measurement 21 | lib/ 22 | benchmark 23 | *.data 24 | *.para 25 | *.dat 26 | *.out 27 | nstore_counter 28 | doc/*.bbl 29 | doc/*.blg 30 | doc/*.dvi 31 | doc/*.fdb_latexmk 32 | doc/*.fls 33 | doc/*.log 34 | doc/*.toc 35 | doc/*.aux 36 | doc/*.pdf 37 | doc/*.eps 38 | doc/*.ps 39 | doc/*.txt 40 | doc/*.gpl 41 | doc/wrapper* 42 | history_hmc_tm 43 | .vscode/* 44 | *.sublime-project 45 | *.sublime-workspace 46 | -------------------------------------------------------------------------------- /doc/sample-input/sample-averx.input: -------------------------------------------------------------------------------- 1 | # example input file for invert 2 | # for CG solver 3 | # requires a 4^4 gauge configuration conf.0000 4 | 5 | L=4 6 | T=4 7 | 8 | DebugLevel = 5 9 | InitialStoreCounter = 0 10 | Measurements = 1 11 | 2kappamu = 0.05 12 | kappa = 0.177 13 | BCAngleT = 1 14 | GaugeConfigInputFile = conf 15 | UseEvenOdd = yes 16 | 17 | SourceType = GenPionTimeSlice 18 | ReadSource = no 19 | SourceTimeSlice = 0 20 | NoSamples = 1 21 | 22 | BeginOperator TMWILSON 23 | 2kappaMu = 0.05 24 | kappa = 0.177 25 | UseEvenOdd = yes 26 | Solver = CG 27 | SolverPrecision = 1e-14 28 | MaxSolverIterations = 1000 29 | AddDownPropagator = no 30 | EndOperator 31 | 32 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Simone Bacchio 2 | Remi Baron 3 | Benoit Blossier 4 | Florian Burger 5 | Thomas Chiarappa 6 | Nils Christian 7 | Albert Deuzeman 8 | Jacob Finkenrath 9 | Elena Garcia Ramos 10 | Marco Garofalo 11 | Jenifer Gonzalez Lopez 12 | Gilbert Grosdidier 13 | Roman Gruber 14 | Karl Jansen 15 | Bartosz Kostrzewa 16 | Peter Labus 17 | JingJing Li 18 | Joseph Nagel 19 | Andreas Nube 20 | David Palao 21 | Olivier Pene 22 | Marcus Petschlies 23 | Siebren Reker 24 | Dru Renner 25 | Simone Romiti 26 | Francesco Sanfilippo 27 | Luigi Scorzato 28 | Aniket Sen 29 | Andrea Shindler 30 | Mathieu Taillefumier 31 | Martin Ueding 32 | Carsten Urbach 33 | Jan Volkholz 34 | Urs Wenger 35 | Falk Zimmermann 36 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/onlinemeas.000000: -------------------------------------------------------------------------------- 1 | 1 1 0 3.918150e+01 0.000000e+00 2 | 1 1 1 3.214625e+00 3.288625e+00 3 | 1 1 2 4.672603e-01 4.392528e-01 4 | 1 1 3 6.694085e-02 6.289035e-02 5 | 1 1 4 1.785090e-02 0.000000e+00 6 | 2 1 0 -7.231615e-01 0.000000e+00 7 | 2 1 1 1.994994e+00 -1.975391e+00 8 | 2 1 2 2.814478e-01 -2.623211e-01 9 | 2 1 3 3.938435e-02 -3.652482e-02 10 | 2 1 4 4.276984e-04 0.000000e+00 11 | 6 1 0 7.114395e-02 0.000000e+00 12 | 6 1 1 -1.425026e-02 8.343729e-04 13 | 6 1 2 -4.832872e-05 7.140911e-04 14 | 6 1 3 6.423823e-04 1.723711e-04 15 | 6 1 4 -1.349513e-04 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/onlinemeas.000002: -------------------------------------------------------------------------------- 1 | 1 1 0 4.143868e+01 0.000000e+00 2 | 1 1 1 4.265530e+00 4.125021e+00 3 | 1 1 2 7.266635e-01 7.010978e-01 4 | 1 1 3 1.318901e-01 1.305688e-01 5 | 1 1 4 4.725472e-02 0.000000e+00 6 | 2 1 0 9.334693e-01 0.000000e+00 7 | 2 1 1 2.240383e+00 -2.056366e+00 8 | 2 1 2 3.753728e-01 -3.569186e-01 9 | 2 1 3 6.544506e-02 -6.490386e-02 10 | 2 1 4 2.161359e-03 0.000000e+00 11 | 6 1 0 -4.691066e-02 0.000000e+00 12 | 6 1 1 2.517955e-02 -3.973702e-03 13 | 6 1 2 3.917546e-03 -6.126114e-03 14 | 6 1 3 -1.030630e-03 -6.390578e-04 15 | 6 1 4 -1.612856e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/onlinemeas.000004: -------------------------------------------------------------------------------- 1 | 1 1 0 3.924637e+01 0.000000e+00 2 | 1 1 1 4.350783e+00 4.786042e+00 3 | 1 1 2 1.008897e+00 1.102519e+00 4 | 1 1 3 2.633275e-01 2.695275e-01 5 | 1 1 4 1.283976e-01 0.000000e+00 6 | 2 1 0 -6.670369e-01 0.000000e+00 7 | 2 1 1 2.187780e+00 -2.489405e+00 8 | 2 1 2 4.917394e-01 -4.894249e-01 9 | 2 1 3 1.125982e-01 -1.007965e-01 10 | 2 1 4 4.531944e-04 0.000000e+00 11 | 6 1 0 -1.317327e-01 0.000000e+00 12 | 6 1 1 1.370614e-02 -1.179594e-02 13 | 6 1 2 2.685715e-03 1.061528e-02 14 | 6 1 3 2.908053e-03 4.889974e-03 15 | 6 1 4 5.085113e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/onlinemeas.000006: -------------------------------------------------------------------------------- 1 | 1 1 0 4.325483e+01 0.000000e+00 2 | 1 1 1 4.967016e+00 6.240109e+00 3 | 1 1 2 1.180080e+00 1.707728e+00 4 | 1 1 3 3.559050e-01 5.437756e-01 5 | 1 1 4 2.475756e-01 0.000000e+00 6 | 2 1 0 -1.884784e+00 0.000000e+00 7 | 2 1 1 2.335567e+00 -2.720630e+00 8 | 2 1 2 5.053943e-01 -7.410702e-01 9 | 2 1 3 1.076914e-01 -2.210710e-01 10 | 2 1 4 -3.769231e-02 0.000000e+00 11 | 6 1 0 -4.840377e-01 0.000000e+00 12 | 6 1 1 -3.693084e-02 1.629839e-02 13 | 6 1 2 7.348471e-04 2.372800e-02 14 | 6 1 3 5.393344e-03 1.020372e-02 15 | 6 1 4 7.889219e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/onlinemeas.000008: -------------------------------------------------------------------------------- 1 | 1 1 0 4.033798e+01 0.000000e+00 2 | 1 1 1 4.791365e+00 5.237685e+00 3 | 1 1 2 1.233906e+00 1.421500e+00 4 | 1 1 3 4.261875e-01 5.110763e-01 5 | 1 1 4 2.862826e-01 0.000000e+00 6 | 2 1 0 -2.075352e-01 0.000000e+00 7 | 2 1 1 2.233904e+00 -2.146385e+00 8 | 2 1 2 5.340432e-01 -5.944568e-01 9 | 2 1 3 1.321974e-01 -1.601940e-01 10 | 2 1 4 -4.015754e-02 0.000000e+00 11 | 6 1 0 -4.660178e-01 0.000000e+00 12 | 6 1 1 -9.200659e-02 -9.662081e-03 13 | 6 1 2 2.129502e-02 2.010032e-02 14 | 6 1 3 2.433827e-03 5.155522e-03 15 | 6 1 4 5.714950e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/onlinemeas.000012: -------------------------------------------------------------------------------- 1 | 1 1 0 4.035155e+01 0.000000e+00 2 | 1 1 1 5.440126e+00 5.393149e+00 3 | 1 1 2 1.597245e+00 1.398326e+00 4 | 1 1 3 5.909228e-01 5.543661e-01 5 | 1 1 4 3.318669e-01 0.000000e+00 6 | 2 1 0 -5.023932e-01 0.000000e+00 7 | 2 1 1 2.332662e+00 -2.144608e+00 8 | 2 1 2 6.215750e-01 -5.399356e-01 9 | 2 1 3 1.693795e-01 -1.681005e-01 10 | 2 1 4 -1.495864e-02 0.000000e+00 11 | 6 1 0 3.394595e-01 0.000000e+00 12 | 6 1 1 -3.788054e-02 3.120651e-02 13 | 6 1 2 1.113338e-02 2.686496e-02 14 | 6 1 3 1.173899e-02 1.437241e-02 15 | 6 1 4 8.151374e-03 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/onlinemeas.000010: -------------------------------------------------------------------------------- 1 | 1 1 0 3.978500e+01 0.000000e+00 2 | 1 1 1 5.180129e+00 5.099274e+00 3 | 1 1 2 1.420958e+00 1.391255e+00 4 | 1 1 3 5.295920e-01 5.312201e-01 5 | 1 1 4 3.362864e-01 0.000000e+00 6 | 2 1 0 6.004093e-01 0.000000e+00 7 | 2 1 1 2.223623e+00 -2.231227e+00 8 | 2 1 2 5.773519e-01 -5.185069e-01 9 | 2 1 3 1.955713e-01 -1.636059e-01 10 | 2 1 4 7.979109e-03 0.000000e+00 11 | 6 1 0 6.200163e-01 0.000000e+00 12 | 6 1 1 -1.894342e-02 -8.656658e-03 13 | 6 1 2 -3.092305e-02 -2.067349e-02 14 | 6 1 3 -2.085861e-02 -1.520318e-03 15 | 6 1 4 -1.166355e-02 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/onlinemeas.000014: -------------------------------------------------------------------------------- 1 | 1 1 0 3.982412e+01 0.000000e+00 2 | 1 1 1 4.900921e+00 5.286688e+00 3 | 1 1 2 1.229412e+00 1.495909e+00 4 | 1 1 3 4.468489e-01 5.108770e-01 5 | 1 1 4 2.846641e-01 0.000000e+00 6 | 2 1 0 -1.108984e+00 0.000000e+00 7 | 2 1 1 1.938305e+00 -2.240110e+00 8 | 2 1 2 4.938215e-01 -6.116194e-01 9 | 2 1 3 1.412236e-01 -1.546065e-01 10 | 2 1 4 -5.064325e-03 0.000000e+00 11 | 6 1 0 8.625131e-01 0.000000e+00 12 | 6 1 1 -6.249967e-04 -6.521931e-02 13 | 6 1 2 -2.572797e-02 -1.525637e-02 14 | 6 1 3 -2.119729e-02 -2.350084e-02 15 | 6 1 4 -2.095253e-02 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/onlinemeas.000016: -------------------------------------------------------------------------------- 1 | 1 1 0 3.848219e+01 0.000000e+00 2 | 1 1 1 4.254202e+00 4.894815e+00 3 | 1 1 2 1.050362e+00 1.208435e+00 4 | 1 1 3 3.674750e-01 4.122043e-01 5 | 1 1 4 2.344743e-01 0.000000e+00 6 | 2 1 0 -7.650770e-01 0.000000e+00 7 | 2 1 1 1.854756e+00 -1.942409e+00 8 | 2 1 2 4.157093e-01 -4.251174e-01 9 | 2 1 3 1.260666e-01 -1.036359e-01 10 | 2 1 4 -6.207818e-03 0.000000e+00 11 | 6 1 0 1.633310e-01 0.000000e+00 12 | 6 1 1 -2.983767e-02 -4.928160e-02 13 | 6 1 2 -9.575590e-03 -2.255533e-02 14 | 6 1 3 -1.923944e-02 -1.522805e-02 15 | 6 1 4 -1.694218e-02 0.000000e+00 16 | -------------------------------------------------------------------------------- /doc/sample-output/hmc-qphix-cp_pacs_nf2_wilson_clover_beta1p95_csw1p53/onlinemeas.000018: -------------------------------------------------------------------------------- 1 | 1 1 0 3.912664e+01 0.000000e+00 2 | 1 1 1 5.307216e+00 4.891727e+00 3 | 1 1 2 1.729019e+00 1.322385e+00 4 | 1 1 3 8.060406e-01 6.402094e-01 5 | 1 1 4 5.138115e-01 0.000000e+00 6 | 2 1 0 2.218940e-01 0.000000e+00 7 | 2 1 1 2.257806e+00 -1.919132e+00 8 | 2 1 2 6.562860e-01 -4.693389e-01 9 | 2 1 3 2.508977e-01 -1.977352e-01 10 | 2 1 4 2.881674e-02 0.000000e+00 11 | 6 1 0 -2.764225e-01 0.000000e+00 12 | 6 1 1 3.415037e-02 -7.494121e-02 13 | 6 1 2 -1.263944e-02 -1.983583e-02 14 | 6 1 3 -1.623357e-02 -1.758156e-02 15 | 6 1 4 -2.053195e-02 0.000000e+00 16 | -------------------------------------------------------------------------------- /smearing/utils_print_su3.c: -------------------------------------------------------------------------------- 1 | #include "utils.ih" 2 | 3 | void print_su3(su3 *in) { 4 | printf("[ %12.14f + %12.14f * i, %12.14f + %12.14f * i, %12.14f + %12.14f * i; \n", 5 | creal(in->c00), cimag(in->c00), creal(in->c01), cimag(in->c01), creal(in->c02), 6 | cimag(in->c02)); 7 | printf(" %12.14f + %12.14f * i, %12.14f + %12.14f * i, %12.14f + %12.14f * i; \n", 8 | creal(in->c10), cimag(in->c10), creal(in->c11), cimag(in->c11), creal(in->c12), 9 | cimag(in->c12)); 10 | printf(" %12.14f + %12.14f * i, %12.14f + %12.14f * i, %12.14f + %12.14f * i ] \n", 11 | creal(in->c20), cimag(in->c20), creal(in->c21), cimag(in->c21), creal(in->c22), 12 | cimag(in->c22)); 13 | } -------------------------------------------------------------------------------- /.github/patches/DDalphaAMG.patch: -------------------------------------------------------------------------------- 1 | diff --git a/Makefile b/Makefile 2 | index ae45ecc..7299fc7 100644 3 | --- a/Makefile 4 | +++ b/Makefile 5 | @@ -1,10 +1,10 @@ 6 | # --- COMPILER ---------------------------------------- 7 | -CC = mpiicc 8 | +CC = mpicc 9 | 10 | # --- CFLAGS ----------------------------------------- 11 | -CFLAGS_gnu = -std=gnu99 -Wall -pedantic -O3 -ffast-math -msse4.2 -fopenmp 12 | +CFLAGS_gnu = -std=gnu99 -Wall -pedantic -O3 -ffast-math -mavx2 -mfma -mtune=haswell -march=haswell -fopenmp 13 | CFLAGS_intel = -std=gnu99 -Wall -pedantic -O3 -xHOST -qopenmp 14 | -CFLAGS = $(CFLAGS_intel) 15 | +CFLAGS = ${CFLAGS_gnu} 16 | 17 | # --- DO NOT CHANGE ----------------------------------- 18 | CPP = cpp 19 | -------------------------------------------------------------------------------- /smearing/utils_project_antiherm.c: -------------------------------------------------------------------------------- 1 | #include "utils.ih" 2 | 3 | void project_antiherm(su3 *omega) { 4 | static const double fac_3 = 1.00 / 3.00; 5 | double tr_omega = creal(-I * fac_3 * (omega->c00 + omega->c11 + omega->c22)); 6 | 7 | omega->c00 = (cimag(omega->c00) - tr_omega) * I; 8 | omega->c11 = (cimag(omega->c11) - tr_omega) * I; 9 | omega->c22 = (cimag(omega->c22) - tr_omega) * I; 10 | 11 | omega->c01 -= conj(omega->c10); 12 | omega->c01 *= 0.50; 13 | omega->c10 = -conj(omega->c01); 14 | 15 | omega->c02 -= conj(omega->c20); 16 | omega->c02 *= 0.50; 17 | omega->c20 = -conj(omega->c02); 18 | 19 | omega->c12 -= conj(omega->c21); 20 | omega->c12 *= 0.50; 21 | omega->c21 = -conj(omega->c12); 22 | } 23 | -------------------------------------------------------------------------------- /buffers/gauge_get_gauge_field.c: -------------------------------------------------------------------------------- 1 | #include "gauge.ih" 2 | 3 | /* This routine not only malloc's a field, but immediately aligns it. 4 | To keep track of the original address to free the field eventually, 5 | we store that address _before_ the actual buffer. 6 | The end user should never have to see the alignment after this. */ 7 | 8 | gauge_field_t get_gauge_field() { 9 | gauge_field_t gauge_field; 10 | 11 | if (g_gauge_buffers.free == 0) /* Need to allocate a new buffer */ 12 | allocate_gauge_buffers(1); 13 | --g_gauge_buffers.free; 14 | 15 | gauge_field.field = g_gauge_buffers.reserve[g_gauge_buffers.free]; 16 | g_gauge_buffers.reserve[g_gauge_buffers.free] = NULL; 17 | 18 | return gauge_field; 19 | } 20 | -------------------------------------------------------------------------------- /profiling/hmc/Readme.md: -------------------------------------------------------------------------------- 1 | We use R to collect time and produce plots. 2 | 3 | To collect time informations from the file `example_optput.out` type 4 | 5 | ``` 6 | Rscript timing.R example_logfile_tmLQCD.log 7 | ``` 8 | 9 | The `timing.R` file will first collect the data and then rendering the file `Profile.Rmd`. 10 | The time information is saved is an object mnl_list which is a list of mnl 11 | 12 | ``` 13 | mnl: 14 | 15 | $name 16 | 17 | $time 18 | 19 | $list(sub_func) 20 | ``` 21 | 22 | the last entry is a list of `sub_func` which is an object of the type 23 | 24 | ``` 25 | sub_func: 26 | 27 | $name 28 | 29 | $time 30 | 31 | $list(sub_func) 32 | ``` 33 | -------------------------------------------------------------------------------- /buffers/gauge_get_gauge_field_array.c: -------------------------------------------------------------------------------- 1 | #include "gauge.ih" 2 | 3 | gauge_field_array_t get_gauge_field_array(unsigned int length) { 4 | gauge_field_array_t gauge_field_array; 5 | gauge_field_array.length = length; 6 | gauge_field_array.field_array = (gauge_field_t*)calloc(length, sizeof(gauge_field_t)); 7 | 8 | if (g_gauge_buffers.free < length) /* Need to allocate more buffers */ 9 | allocate_gauge_buffers(length - g_gauge_buffers.free); 10 | 11 | for (unsigned int ctr = 0; ctr < length; ++ctr) { 12 | --g_gauge_buffers.free; 13 | gauge_field_array.field_array[ctr].field = g_gauge_buffers.reserve[g_gauge_buffers.free]; 14 | g_gauge_buffers.reserve[g_gauge_buffers.free] = NULL; 15 | } 16 | 17 | return gauge_field_array; 18 | } 19 | -------------------------------------------------------------------------------- /io/params_construct_sourceFormat.c: -------------------------------------------------------------------------------- 1 | #include "params.ih" 2 | 3 | paramsSourceFormat *construct_paramsSourceFormat(int const prec, int const flavours, 4 | int const spins, int const colours) { 5 | paramsSourceFormat *format = malloc(sizeof(paramsSourceFormat)); 6 | 7 | if (format == (paramsSourceFormat *)NULL) 8 | kill_with_error(NULL, g_cart_id, "Could not allocate paramsSourceFormat."); 9 | 10 | format->prec = prec; 11 | format->flavours = flavours; 12 | 13 | format->lx = LX * g_nproc_x; 14 | format->ly = LY * g_nproc_y; 15 | format->lz = LZ * g_nproc_z; 16 | format->lt = T * g_nproc_t; 17 | 18 | format->spins = spins; 19 | format->colours = colours; 20 | 21 | return format; 22 | } 23 | -------------------------------------------------------------------------------- /invert_clover_eo.h: -------------------------------------------------------------------------------- 1 | #ifndef _INVERT_CLOVER_EO_H 2 | #define _INVERT_CLOVER_EO_H 3 | 4 | #include "global.h" 5 | #include "misc_types.h" 6 | #include "solver/matrix_mult_typedef.h" 7 | #include "solver/solver_params.h" 8 | #include "su3.h" 9 | 10 | int invert_clover_eo(spinor* const Even_new, spinor* const Odd_new, spinor* const Even, 11 | spinor* const Odd, const double precision, const int max_iter, 12 | const int solver_flag, const int rel_prec, const int even_odd_flag, 13 | solver_params_t solver_params, su3*** gf, matrix_mult Qsq, matrix_mult Qm, 14 | const ExternalInverter external_inverter, const SloppyPrecision sloppy, 15 | const CompressionType compression); 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /doc/sample-input/sample-cg-loop.input: -------------------------------------------------------------------------------- 1 | # example input file for invert 2 | # for CG solver doing two gauges in one go 3 | # requires two 4^4 gauge configuration conf.0000 and conf.0010 4 | 5 | L=4 6 | T=4 7 | 8 | DebugLevel = 5 9 | InitialStoreCounter = 0 10 | # loop over two gauges 11 | Measurements = 2 12 | # use InitialStoreCounter, InitialStoreCounter + 10, ... 13 | Nsave = 10 14 | 2kappamu = 0.05 15 | kappa = 0.177 16 | BCAngleT = 1 17 | GaugeConfigInputFile = conf 18 | UseEvenOdd = yes 19 | 20 | SourceType = Volume 21 | ReadSource = no 22 | NoSamples = 12 23 | 24 | BeginOperator TMWILSON 25 | 2kappaMu = 0.05 26 | kappa = 0.177 27 | UseEvenOdd = yes 28 | Solver = CG 29 | SolverPrecision = 1e-14 30 | MaxSolverIterations = 1000 31 | AddDownPropagator = yes 32 | EndOperator 33 | 34 | -------------------------------------------------------------------------------- /smearing/utils_project_herm.c: -------------------------------------------------------------------------------- 1 | #include "utils.ih" 2 | 3 | /* This implements the approach of taking (I/2) * (Omega' - Omega) - (I/6) * Tr(Omega' - Omega) */ 4 | 5 | void project_herm(su3 *omega) { 6 | static const double fac_3 = 1.00 / 3.00; 7 | double tr_omega = fac_3 * (cimag(omega->c00) + cimag(omega->c11) + cimag(omega->c22)); 8 | 9 | omega->c00 = cimag(omega->c00) - tr_omega; 10 | omega->c11 = cimag(omega->c11) - tr_omega; 11 | omega->c22 = cimag(omega->c22) - tr_omega; 12 | 13 | omega->c01 = 0.5 * (omega->c10 - conj(omega->c01)); 14 | omega->c10 = conj(omega->c01); 15 | 16 | omega->c02 = 0.5 * (omega->c20 - conj(omega->c02)); 17 | omega->c20 = conj(omega->c02); 18 | 19 | omega->c21 = 0.5 * (omega->c12 - conj(omega->c21)); 20 | omega->c12 = conj(omega->c21); 21 | } 22 | -------------------------------------------------------------------------------- /io/utils_engineering.c: -------------------------------------------------------------------------------- 1 | #include "utils.ih" 2 | 3 | static char prefix[] = {'z', 'a', 'f', 'p', 'u', 'm', ' ', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'}; 4 | 5 | void engineering(char *result, double value, char const *units) { 6 | double logval = log10(value); 7 | int logscale; 8 | int digits = 2; 9 | 10 | logscale = (int)floor(logval / 3); 11 | 12 | if (logscale > -6 && logscale < 6) { 13 | value /= pow(1E3, (double)logscale); 14 | if (value > 100) 15 | digits = 0; 16 | else if (value > 10) 17 | digits = 1; 18 | 19 | if (logscale) 20 | sprintf(result, "%.*f %c%s", digits, value, prefix[logscale + 6], units); 21 | else 22 | sprintf(result, "%.*f %s", digits, value, units); 23 | } else { 24 | sprintf(result, "%4.2e %s", value, units); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /doc/sample-input/sample-cg.input: -------------------------------------------------------------------------------- 1 | # example input file for invert 2 | # for CG solver 3 | # requires a 4^4 gauge configuration conf.0000 4 | 5 | L=4 6 | T=4 7 | 8 | DebugLevel = 5 9 | InitialStoreCounter = 0 10 | Measurements = 1 11 | 2kappamu = 0.05 12 | kappa = 0.177 13 | BCAngleT = 1 14 | GaugeConfigInputFile = conf 15 | UseEvenOdd = yes 16 | 17 | SourceType = Volume 18 | ReadSource = no 19 | NoSamples = 12 20 | 21 | BeginOperator TMWILSON 22 | 2kappaMu = 0.05 23 | kappa = 0.177 24 | UseEvenOdd = yes 25 | Solver = CG 26 | SolverPrecision = 1e-14 27 | MaxSolverIterations = 1000 28 | AddDownPropagator = yes 29 | EndOperator 30 | 31 | BeginOperator DBTMWILSON 32 | 2KappaMubar = 0.139 33 | 2KappaEpsbar = 0.15 34 | kappa = 0.177 35 | Solver = CG 36 | SolverPrecision = 1e-12 37 | EndOperator 38 | 39 | -------------------------------------------------------------------------------- /ranlxs.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * 3 | * file ranlxs.h 4 | * 5 | * Copyright (C) 2005 Martin Luescher 6 | * 7 | * This software is distributed under the terms of the GNU General Public 8 | * License (GPL) 9 | * 10 | * 11 | * modified by C. Urbach to work in the tmLQCD package 12 | * 13 | ***********************************************************************/ 14 | 15 | #ifndef _RANLXS_H 16 | #define _RANLXS_H 17 | 18 | #ifdef __cplusplus 19 | extern "C" { 20 | #endif /* __cplusplus */ 21 | 22 | extern int ranlxs_init; 23 | 24 | void ranlxs(float r[], int n); 25 | void rlxs_init(int level, int seed); 26 | void rlxs_get(int state[]); 27 | void rlxs_reset(int state[]); 28 | void fabhaan_vect(); 29 | 30 | #ifdef __cplusplus 31 | } 32 | #endif 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /.ci/cscs_default_pipeline.yml: -------------------------------------------------------------------------------- 1 | include: 2 | - remote: 'https://gitlab.com/cscs-ci/recipes/-/raw/master/templates/v2/.ci-ext.yml' 3 | - local: '/.ci/include/cscs/00-variables.yml' 4 | - local: '/.ci/include/cscs/01-test-templates.yml' 5 | 6 | stages: 7 | - build 8 | - test 9 | 10 | build-quda/uenv/daint-gh200: 11 | stage: build 12 | extends: .uenv-builder-daint-gh200 13 | variables: 14 | UENV_RECIPE: .ci/uenv-recipes/tmlqcd/daint-gh200 15 | 16 | test/daint-gh200: 17 | extends: .test/hmc 18 | variables: 19 | INPUT_FILE: "doc/sample-input/sample-hmc-quda-cscs.input" 20 | REFPATH: "doc/sample-output/hmc-quda-cscs" 21 | QUDA_ENABLE_TUNING: 0 # disable tuning 22 | QUDA_ENABLE_GDR: 1 # enable GPU-Direct RDMA 23 | SLURM_JOB_NUM_NODES: 2 24 | SLURM_NTASKS: 8 25 | SLURM_TIMELIMIT: "00:30:00" 26 | -------------------------------------------------------------------------------- /doc/sample-input/sample-gmres.input: -------------------------------------------------------------------------------- 1 | # example input file for invert 2 | # for GMRES(m) solver 3 | # same for GCR, FGMRES, etc 4 | # requires a 4^4 gauge configuration conf.0000 5 | 6 | L=4 7 | T=4 8 | 9 | DebugLevel = 5 10 | InitialStoreCounter = 0 11 | Measurements = 1 12 | 2kappamu = 0.05 13 | kappa = 0.177 14 | BCAngleT = 1 15 | GaugeConfigInputFile = conf 16 | UseEvenOdd = yes 17 | 18 | SourceType = Volume 19 | ReadSource = no 20 | NoSamples = 12 21 | 22 | # GMRES parameter M (no of iterations until restart) 23 | # this parameter is also used for GCR, FGMRES, etc... 24 | GMRESMParameter = 10 25 | 26 | BeginOperator TMWILSON 27 | 2kappaMu = 0.05 28 | kappa = 0.177 29 | UseEvenOdd = yes 30 | Solver = GMRES 31 | SolverPrecision = 1e-14 32 | MaxSolverIterations = 1000 33 | AddDownPropagator = yes 34 | EndOperator 35 | 36 | -------------------------------------------------------------------------------- /buffers/utils.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | void copy_gauge_field(gauge_field_t dest, gauge_field_t orig); 6 | 7 | void generic_exchange(void *field_in, int bytes_per_site); 8 | void exchange_gauge_field(gauge_field_t target); 9 | void exchange_gauge_field_array(gauge_field_array_t target); 10 | 11 | inline void copy_gauge_field(gauge_field_t dest, gauge_field_t orig) { 12 | memmove((void *)dest.field, (void *)orig.field, sizeof(su3_tuple) * VOLUMEPLUSRAND + 1); 13 | } 14 | 15 | inline void exchange_gauge_field(gauge_field_t target) { 16 | generic_exchange((void *)target.field, sizeof(su3_tuple)); 17 | } 18 | 19 | inline void exchange_gauge_field_array(gauge_field_array_t target) { 20 | for (unsigned int idx = 0; idx < target.length; ++idx) 21 | exchange_gauge_field(target.field_array[idx]); 22 | } 23 | -------------------------------------------------------------------------------- /io/params_construct_xlfInfo.c: -------------------------------------------------------------------------------- 1 | #include "io/params.ih" 2 | 3 | paramsXlfInfo *construct_paramsXlfInfo(double const plaq, int const counter) { 4 | struct timeval t1; 5 | paramsXlfInfo *info = malloc(sizeof(paramsXlfInfo)); 6 | 7 | if (info == (paramsXlfInfo *)NULL) 8 | kill_with_error(NULL, g_cart_id, "Could not allocate paramsXlfInfo."); 9 | 10 | gettimeofday(&t1, NULL); 11 | 12 | info->plaq = plaq; 13 | info->counter = counter; 14 | 15 | info->beta = g_beta; 16 | info->kappa = g_kappa; 17 | info->mu = g_mu / 2. / g_kappa; 18 | info->c2_rec = g_rgi_C1; 19 | info->time = t1.tv_sec; 20 | 21 | strcpy(info->package_version, TMLQCD_PACKAGE_VERSION); 22 | 23 | info->mubar = g_mubar / 2. / g_kappa; 24 | info->epsilonbar = g_epsbar / 2. / g_kappa; 25 | 26 | strcpy(info->date, ctime(&t1.tv_sec)); 27 | return (info); 28 | } 29 | -------------------------------------------------------------------------------- /buffers/gauge_allocate_gauge_buffers.c: -------------------------------------------------------------------------------- 1 | #include "gauge.ih" 2 | 3 | void allocate_gauge_buffers(unsigned int count) { 4 | if ((g_gauge_buffers.allocated + count) > g_gauge_buffers.max) 5 | fatal_error("Maximum number of allocated gauge fields exceeded.", "allocate_gauge_buffers"); 6 | 7 | for (unsigned int ctr = 0; ctr < count; ++ctr) { 8 | void *raw = malloc(sizeof(void *) + ALIGN_BASE + sizeof(su3_tuple) * VOLUMEPLUSRAND + 1); 9 | if (raw == NULL) 10 | fatal_error("Could not allocate the requested amount of memory.", "allocate_gauge_buffers"); 11 | size_t p = (size_t)raw + sizeof(void *); 12 | p = ((p + ALIGN_BASE) & ~ALIGN_BASE); 13 | ((void **)p)[-1] = raw; 14 | 15 | g_gauge_buffers.reserve[g_gauge_buffers.free] = (su3_tuple *)p; 16 | ++g_gauge_buffers.allocated; 17 | ++g_gauge_buffers.free; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ranlxd.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * 3 | * file ranlxd.h 4 | * 5 | * Copyright (C) 2005 Martin Luescher 6 | * 7 | * This software is distributed under the terms of the GNU General Public 8 | * License (GPL) 9 | * 10 | * 11 | * modified by C. Urbach to work in the tmLQCD package 12 | * 13 | ***********************************************************************/ 14 | 15 | #ifndef _RANLXD_H 16 | #define _RANLXD_H 17 | 18 | #ifdef __cplusplus 19 | extern "C" { 20 | #endif /* __cplusplus */ 21 | 22 | extern int ranlxd_init; 23 | 24 | void ranlxd(double* const r, const int n); 25 | void rlxd_init(const int level, const int seed); 26 | void rlxd_get(int* const state); 27 | void rlxd_reset(int state[]); 28 | int rlxd_size(void); 29 | 30 | #ifdef __cplusplus 31 | } 32 | #endif 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /doc/sample-input/sample-cg-tmclover.input: -------------------------------------------------------------------------------- 1 | # sample inverter file for a twisted clover operator 2 | 3 | L=4 4 | T=4 5 | 6 | Measurements = 1 7 | InitialStoreCounter = 0 8 | 2KappaMu = 0.1 9 | csw = 1.00 10 | kappa = 0.160 11 | ThetaT = 1. 12 | UseEvenOdd = yes 13 | DebugLevel = 2 14 | NoSamples = 1 15 | SourceType = Point 16 | SplittedPropagator = yes 17 | Indices = 0 18 | ReadSource = no 19 | UseRelativePrecision = yes 20 | UseSloppyPrecision = yes 21 | UseEvenOdd = yes 22 | 23 | BeginOperator CLOVER 24 | 2KappaMu = 0.1 25 | kappa = 0.160 26 | csw = 1.00 27 | # the following is the default for this operator and the only available option and therefore does not need and must not be set 28 | # Solver = CG 29 | UseEvenOdd = yes 30 | SolverPrecision = 1.e-16 31 | MaxSolverIterations = 100 32 | PropagatorPrecision = 64 33 | AddDownPropagator = yes 34 | EndOperator 35 | 36 | -------------------------------------------------------------------------------- /io/io_cm.h: -------------------------------------------------------------------------------- 1 | #ifndef _IO_CM_H 2 | #define _IO_CM_H 3 | 4 | #ifdef HAVE_CONFIG_H 5 | #include 6 | #endif 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #ifdef TM_USE_MPI 15 | #include 16 | #endif 17 | #include 18 | #include 19 | #include 20 | 21 | #include 22 | 23 | #include "io/gauge.h" 24 | #include "io/spinor.h" 25 | #include "io/utils.h" 26 | 27 | #include "su3.h" 28 | 29 | int read_spinorfield_cm_single(spinor* const s, spinor* const r, char* filename, const int ts, 30 | const int vol); 31 | int read_spinorfield_cm_swap_single(spinor* const s, spinor* const r, char* filename, const int ts, 32 | const int vol); 33 | int write_spinorfield_cm_single(spinor* const s, spinor* const r, char* filename); 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /linalg/print_spinor.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "su3.h" 3 | 4 | /* Q input */ 5 | void print_spinor(spinor const *const Q, const int N) { 6 | int ix; 7 | spinor *q; 8 | for (ix = 0; ix < N; ix++) { 9 | q = (spinor *)Q + ix; 10 | 11 | printf("ix: %d s0: (%f,%f) (%f,%f) (%f,%f)\n", ix, creal(q->s0.c0), cimag(q->s0.c0), 12 | creal(q->s0.c1), cimag(q->s0.c1), creal(q->s0.c2), cimag(q->s0.c2)); 13 | printf("ix: %d s1: (%f,%f) (%f,%f) (%f,%f)\n", ix, creal(q->s1.c0), cimag(q->s1.c0), 14 | creal(q->s1.c1), cimag(q->s1.c1), creal(q->s1.c2), cimag(q->s1.c2)); 15 | printf("ix: %d s2: (%f,%f) (%f,%f) (%f,%f)\n", ix, creal(q->s2.c0), cimag(q->s2.c0), 16 | creal(q->s2.c1), cimag(q->s2.c1), creal(q->s2.c2), cimag(q->s2.c2)); 17 | printf("ix: %d s3: (%f,%f) (%f,%f) (%f,%f)\n\n", ix, creal(q->s3.c0), cimag(q->s3.c0), 18 | creal(q->s3.c1), cimag(q->s3.c1), creal(q->s3.c2), cimag(q->s3.c2)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /buffers/gauge.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "su3.h" 4 | 5 | #ifndef ALIGN_BASE 6 | #define ALIGN_BASE 0x0f 7 | #endif 8 | 9 | typedef su3 su3_tuple[4]; 10 | 11 | typedef struct { 12 | su3_tuple **reserve; 13 | unsigned int max; 14 | unsigned int allocated; 15 | unsigned int free; 16 | } gauge_buffers_t; 17 | 18 | typedef struct { 19 | su3_tuple *field; 20 | } gauge_field_t; 21 | 22 | typedef struct { 23 | gauge_field_t *field_array; 24 | unsigned int length; 25 | } gauge_field_array_t; 26 | 27 | extern gauge_buffers_t g_gauge_buffers; 28 | 29 | void initialize_gauge_buffers(unsigned int max); 30 | void finalize_gauge_buffers(); 31 | 32 | void allocate_gauge_buffers(unsigned int count); 33 | void free_unused_gauge_buffers(); 34 | 35 | gauge_field_t get_gauge_field(); 36 | void return_gauge_field(gauge_field_t *gauge_field); 37 | 38 | gauge_field_array_t get_gauge_field_array(unsigned int length); 39 | void return_gauge_field_array(gauge_field_array_t *gauge_field_array); 40 | -------------------------------------------------------------------------------- /smearing/hex_stout_exclude_none.c: -------------------------------------------------------------------------------- 1 | #include "hex.ih" 2 | 3 | void stout_exclude_none(su3_tuple *buff_out, double const coeff, su3_tuple **staples, 4 | su3_tuple *buff_in) { 5 | static su3 tmp; 6 | 7 | #define _MULTIPLY_AND_EXPONENTIATE(x, principal) \ 8 | { \ 9 | _su3_times_su3d(tmp, (*staples)[x][principal], buff_in[x][principal]); \ 10 | project_antiherm(&tmp); \ 11 | _real_times_su3(buff_out[x][principal], coeff, tmp); \ 12 | exposu3_in_place(&buff_out[x][principal]); \ 13 | } 14 | 15 | for (int x = 0; x < VOLUME; ++x) { 16 | _MULTIPLY_AND_EXPONENTIATE(x, I0_0); 17 | _MULTIPLY_AND_EXPONENTIATE(x, I0_1); 18 | _MULTIPLY_AND_EXPONENTIATE(x, I0_2); 19 | _MULTIPLY_AND_EXPONENTIATE(x, I0_3); 20 | } 21 | 22 | #undef _MULTIPLY_AND_EXPONENTIATE 23 | } 24 | -------------------------------------------------------------------------------- /test/overlaptests.h: -------------------------------------------------------------------------------- 1 | #ifndef OVERLAPTESTS_INCLUDE_GUARD 2 | #define OVERLAPTESTS_INCLUDE_GUARD 3 | 4 | void ov_check_operator(int t, int x, int y, int z); 5 | void ov_check_locality(); 6 | void ov_check_ginsparg_wilson_relation(void); 7 | void ov_check_ginsparg_wilson_relation_strong(void); 8 | void ov_compare_4x4(const char* pFileName); 9 | void ov_compare_12x12(const char* pFileName); 10 | void ov_save_12x12(const char* pFileName); 11 | 12 | typedef _Complex double matrix4x4[4][4]; 13 | typedef _Complex double matrix12x12[12][12]; 14 | 15 | #define _spinor_norm_l1(d, s) \ 16 | d = 0.; \ 17 | d = cabs((s).s0.c0) + cabs((s).s0.c1) + cabs((s).s0.c2) + cabs((s).s1.c0) + cabs((s).s1.c1) + \ 18 | cabs((s).s1.c2) + cabs((s).s2.c0) + cabs((s).s2.c1) + cabs((s).s2.c2) + cabs((s).s3.c0) + \ 19 | cabs((s).s3.c1) + cabs((s).s3.c2) 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # 3 | # Copyright (C) 2017 Martin Ueding 4 | # 5 | # This file is part of tmLQCD. 6 | # 7 | # tmLQCD is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU General Public License as published by 9 | # the Free Software Foundation, either version 3 of the License, or 10 | # (at your option) any later version. 11 | # 12 | # tmLQCD is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with tmLQCD. If not, see . 19 | ######################################################################## 20 | 21 | language: c 22 | script: ./travis-ci.sh 23 | dist: trusty 24 | sudo: true 25 | -------------------------------------------------------------------------------- /doc/sample-input/sample-eigcg-tmclover-invert.input: -------------------------------------------------------------------------------- 1 | # sample inverter file for a twisted clover operator 2 | 3 | L=16 4 | T=32 5 | NrXProcs = 1 6 | NrYProcs = 1 7 | NrZProcs = 1 8 | OmpNumThreads = 1 9 | 10 | Measurements = 1 11 | InitialStoreCounter = 0 12 | 2KappaMu = 0.0024135 13 | csw = 1.00 14 | kappa = 0.160900 15 | ThetaT = 1. 16 | UseEvenOdd = yes 17 | DebugLevel = 2 18 | NoSamples = 1 19 | SourceType = Point 20 | SplittedPropagator = yes 21 | Indices = 0 22 | ReadSource = no 23 | UseRelativePrecision = yes 24 | UseSloppyPrecision = no 25 | DisableIOChecks = yes 26 | GaugeConfigInputFile = conf 27 | 28 | BeginOperator CLOVER 29 | 2KappaMu = 0.0024135 30 | kappa = 0.160900 31 | csw = 1.00 32 | Solver = INCREIGCG 33 | #UseEvenOdd = yes 34 | SolverPrecision = 1.e-16 35 | MaxSolverIterations = 2000 36 | PropagatorPrecision = 64 37 | AddDownPropagator = no 38 | EigCGnrhs = 12 39 | EigCGnev = 10 40 | EigCGvmax = 40 41 | EigCGldh = 100 42 | EigCGrestolsq = 1e-8 43 | EndOperator 44 | 45 | 46 | -------------------------------------------------------------------------------- /tests/test_su3_algebra.h: -------------------------------------------------------------------------------- 1 | #ifndef _TEST_SU3_ALGEBRA_H 2 | #define _TEST_SU3_ALGEBRA_H 3 | 4 | #include 5 | 6 | TEST(su3_assign); 7 | TEST(su3_expo_positivedet); 8 | TEST(su3_multiply); 9 | TEST(su3_inverse_multiply); 10 | TEST(vector_add); 11 | TEST(vector_sub); 12 | TEST(vector_i_add); 13 | TEST(vector_i_sub); 14 | TEST(cmplx_times_vector); 15 | TEST(cmplxcjg_times_vector); 16 | 17 | TEST_SUITE(SU3_ALGEBRA){TEST_ADD(su3_assign), 18 | TEST_ADD(su3_expo_positivedet), 19 | TEST_ADD(su3_multiply), 20 | TEST_ADD(su3_inverse_multiply), 21 | TEST_ADD(vector_add), 22 | TEST_ADD(vector_sub), 23 | TEST_ADD(vector_i_add), 24 | TEST_ADD(vector_i_sub), 25 | TEST_ADD(cmplx_times_vector), 26 | TEST_ADD(cmplxcjg_times_vector), 27 | TEST_SUITE_CLOSURE}; 28 | 29 | #endif /* _TEST_SU3_ALGEBRA_H */ 30 | -------------------------------------------------------------------------------- /smearing/hyp_APE_project_exclude_none.c: -------------------------------------------------------------------------------- 1 | #include "utils.ih" 2 | 3 | void APE_project_exclude_none(su3_tuple *buff_out, double const coeff, su3_tuple **staples, 4 | su3_tuple *buff_in) { 5 | double const coeff_principal = 1.0 - coeff; 6 | double const coeff_staples = coeff / 6.0; 7 | 8 | #define _ADD_AND_REUNITARIZE(x, component) \ 9 | { \ 10 | _real_times_su3_plus_real_times_su3( \ 11 | buff_out[x][component], coeff_principal, buff_in[x][component], coeff_staples, \ 12 | (*staples)[x][component]) reunitarize(buff_out[x] + component); \ 13 | } 14 | 15 | for (int x = 0; x < VOLUME; ++x) { 16 | _ADD_AND_REUNITARIZE(x, I0_0); 17 | _ADD_AND_REUNITARIZE(x, I0_1); 18 | _ADD_AND_REUNITARIZE(x, I0_2); 19 | _ADD_AND_REUNITARIZE(x, I0_3); 20 | } 21 | 22 | #undef _ADD_AND_REUNITARIZE 23 | } 24 | -------------------------------------------------------------------------------- /init/init_openmp.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2013 Bartosz Kostrzewa 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _INIT_OPENMP_H 21 | #define _INIT_OPENMP_H 22 | 23 | int init_openmp(void); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /.ci/uenv-recipes/tmlqcd/daint-gh200/repo/packages/lemonio/package.py: -------------------------------------------------------------------------------- 1 | # Copyright Spack Project Developers. See COPYRIGHT file for details. 2 | # 3 | # SPDX-License-Identifier: (Apache-2.0 OR MIT) 4 | 5 | from spack_repo.builtin.build_systems.autotools import AutotoolsPackage 6 | 7 | 8 | from spack.package import * 9 | 10 | class Lemonio(AutotoolsPackage): 11 | """LEMON: Lightweight Parallel I/O library for Lattice QCD.""" 12 | 13 | homepage = "https://github.com/etmc/lemon" 14 | git = "https://github.com/etmc/lemon.git" 15 | license("GPL-3.0-or-later") 16 | 17 | version('master', branch='master') 18 | 19 | depends_on("autoconf", type="build", when="@master build_system=autotools") 20 | depends_on("automake", type="build", when="@master build_system=autotools") 21 | depends_on("libtool", type="build", when="@master build_system=autotools") 22 | 23 | depends_on('mpi') 24 | 25 | def configure_args(self): 26 | args = [] 27 | args.append('CC={0}'.format(self.spec['mpi'].mpicc)) 28 | return args 29 | -------------------------------------------------------------------------------- /clenshaw_coef.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _CLENSHAW_COEF_H 20 | #define _CLENSHAW_COEF_H 21 | 22 | void clenscoef(int M); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /doc/sample-input/sample-rw.input: -------------------------------------------------------------------------------- 1 | # example input file for invert 2 | # for CG solver 3 | # requires a 4^4 gauge configuration conf.0000 4 | 5 | L=4 6 | T=4 7 | NrXProcs = 2 8 | NrYProcs = 2 9 | NrZProcs = 2 10 | 11 | NoBlocksT = 2 12 | NoBlocksX = 2 13 | NoBlocksY = 2 14 | NoBlocksZ = 2 15 | 16 | 17 | DebugLevel = 5 18 | InitialStoreCounter = 0 19 | Measurements = 1 20 | 2kappamu = 0.001 21 | kappa = 0.177 22 | BCAngleT = 1 23 | ThetaX = 1 24 | GaugeConfigInputFile = conf 25 | UseEvenOdd = yes 26 | 27 | OmpNumThreads = 2 28 | 29 | ComputeReweightingFactor = yes 30 | NoReweightingSamples = 2 31 | 32 | ## monomial only for reweighting 33 | BeginMonomial CLOVERDETRATIORW 34 | Timescale = 1 35 | CSW = 1.00 36 | # nominator parameters 37 | 2KappaMu = 0.01 38 | kappa = 0.138 39 | rho = 0.0 40 | # denominator parameters 41 | 2KappaMu2 = 0.01 42 | ## for reweighting only rho=rho2 makes sense 43 | rho2 = 0.0 44 | kappa2 = 0.1380001 45 | AcceptancePrecision = 1.e-20 46 | Name = cloverdetratiorw 47 | solver = CG 48 | EndMonomial 49 | 50 | 51 | -------------------------------------------------------------------------------- /overrelaxation.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _OVERRELAXATION_H 20 | #define _OVERRELAXATION_H 21 | 22 | extern void overrel_sweep(); 23 | #endif 24 | -------------------------------------------------------------------------------- /test/check_geometry.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _CHECK_GEOMETRY_H 20 | #define _CHECK_GEOMETRY_H 21 | 22 | int check_geometry(); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /invert_overlap.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2009 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _INVERT_OVERLAP_H 21 | #define _INVERT_OVERLAP_H 22 | 23 | void invert_overlap(const int op_id, const int index_start); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /solver/quicksort.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _QUICKSORT_H 20 | #define _QUICKSORT_H 21 | 22 | void quicksort(int n, double arr[], int idx[]); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /io/sw_write_stdout.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2012 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _SW_WRITE_STDOUT_H 21 | #define _SW_WRITE_STDOUT_H 22 | 23 | #include "su3.h" 24 | 25 | void sw_write_stdout(su3** u); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /init/init_global_states.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2018 Bartosz Kostrzewa 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | * 20 | *******************************************************************************/ 21 | 22 | #ifndef INIT_GLOBAL_STATES_H 23 | #define INIT_GLOBAL_STATES_H 24 | 25 | void init_global_states(void); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /monomial/moment_energy.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _MOMENT_ENERGY_H 20 | #define _MOMENT_ENERGY_H 21 | 22 | double moment_energy(su3adj** const momenta); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /linalg/set_even_to_zero.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _SET_EVEN_TO_ZERO_H 21 | #define _SET_EVEN_TO_ZERO_H 22 | 23 | void set_even_to_zero(spinor* const P); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /xchange/xchange_jacobi.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _XCHANGE_JACOBI_H 21 | #define _XCHANGE_JACOBI_H 22 | 23 | void xchange_jacobi(su3_vector* const s); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /io/deri_write_stdout.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2012 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _DERI_WRITE_STDOUT_H 21 | #define _DERI_WRITE_STDOUT_H 22 | 23 | #include "su3adj.h" 24 | 25 | void deri_write_stdout(su3adj** const df); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /io/spinor_write_stdout.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2012 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _SPINOR_WRITE_STDOUT_H 21 | #define _SPINOR_WRITE_STDOUT_H 22 | 23 | #include "su3.h" 24 | 25 | void spinor_write_stdout(spinor* const s); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /geometry_eo.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _GEOMETRY_EO_H 20 | #define _GEOMETRY_EO_H 21 | 22 | int Index(const int, const int, const int, const int); 23 | void geometry(); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /io/utils_close_writer_record.c: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #include "utils.ih" 21 | 22 | void close_writer_record(WRITER *writer) { 23 | if (writer != NULL) WriterCloseRecord(writer); 24 | } 25 | -------------------------------------------------------------------------------- /meas/correlators.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2008 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | 21 | #ifndef _ONLINE_MEASUREMENT_H 22 | #define _ONLINE_MEASUREMENT_H 23 | 24 | void correlators_measurement(const int traj, const int t0, const int ieo); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /monomial/monitor_forces.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2013 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _MONITOR_FORCES_H 20 | #define _MONITOR_FORCES_H 21 | 22 | #include "hamiltonian_field.h" 23 | 24 | void monitor_forces(hamiltonian_field_t* const hf); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /reweighting_factor.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | 21 | #ifndef _REWEIGHTING_FACTOR_H 22 | #define _REWEIGHTING_FACTOR_H 23 | 24 | void reweighting_factor(const int N, const int nstore); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /matrix_utils.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2013 Albert Deuzeman 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | * 20 | ************************************************************************/ 21 | 22 | #ifndef _MATRIX_UTILS_H 23 | #define _MATRIX_UTILS_H 24 | 25 | void cayley_hamilton_exponent(su3* expA, su3 const* A); 26 | void project_traceless_antiherm(su3* M); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /measure_rectangles.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _MEASURE_RECTANGLES_H 20 | #define _MEASURE_RECTANGLES_H 21 | 22 | #include "su3.h" 23 | 24 | double measure_rectangles(const su3** const gf); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /reweighting_factor_nd.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _REWEIGHTING_FACTOR_ND_H 21 | #define _REWEIGHTING_FACTOR_ND_H 22 | 23 | double reweighting_factor_nd(const int N, const int repro); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /init/init_moment_field.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _INIT_MOMENT_FIELD_H 20 | #define _INIT_MOMENT_FIELD_H 21 | 22 | int init_moment_field(const int V, const int VR); 23 | void free_moment_field(); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /io/spinor_write_propagator_type.c: -------------------------------------------------------------------------------- 1 | #include "spinor.ih" 2 | 3 | void write_propagator_type(WRITER *writer, const int type) { 4 | uint64_t bytes; 5 | char *message; 6 | 7 | #ifndef HAVE_LIBLEMON 8 | if (g_cart_id == 0) { 9 | #endif /* ! HAVE_LIBLEMON */ 10 | 11 | message = (char *)malloc(128); 12 | 13 | switch (type) { 14 | case 0: 15 | sprintf(message, "DiracFermion_Sink"); 16 | break; 17 | case 1: 18 | sprintf(message, "DiracFermion_Source_Sink_Pairs"); 19 | break; 20 | case 2: 21 | sprintf(message, "DiracFermion_ScalarSource_TwelveSink"); 22 | break; 23 | case 3: 24 | sprintf(message, "DiracFermion_ScalarSource_FourSink"); 25 | break; 26 | case 4: 27 | sprintf(message, "DiracFermion_Deflation_Field"); 28 | break; 29 | } 30 | bytes = strlen(message); 31 | 32 | write_header(writer, 1, 1, "propagator-type", bytes); 33 | write_message(writer, message, bytes); 34 | 35 | close_writer_record(writer); 36 | free(message); 37 | #ifndef HAVE_LIBLEMON 38 | } 39 | #endif /* ! HAVE_LIBLEMON */ 40 | } 41 | -------------------------------------------------------------------------------- /init/init_gauge_tmp.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _INIT_GAUGE_TMP_H 20 | #define _INIT_GAUGE_TMP_H 21 | 22 | extern su3** gauge_tmp; 23 | 24 | int init_gauge_tmp(const int V); 25 | void free_gauge_tmp(); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /init/init_geometry_indices.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _INIT_GEOMETRY_INDICES_H 20 | #define _INIT_GEOMETRY_INDICES_H 21 | 22 | int init_geometry_indices(const int N); 23 | void free_geometry_indices(); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /init/init_parallel.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2017 Bartosz Kostrzewa, Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | * 20 | *******************************************************************************/ 21 | 22 | #ifndef _INIT_PARALLEL_H 23 | #define _INIT_PARALLEL_H 24 | 25 | void init_parallel_and_read_input(int argc, char *argv[], const char input_filename[]); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /linalg/fortran.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _FORTRAN_MY_H 20 | #define _FORTRAN_MY_H 21 | 22 | #if (defined NOF77UNDERSCORE || defined NOF77_) 23 | #define _FT(s) s 24 | #else 25 | #define _FT(s) s##_ 26 | #endif 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /meas/field_strength_types.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2018 Bartosz Kostrzewa 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | 21 | #ifndef FIELD_STRENGTH_TYPES_H 22 | #define FIELD_STRENGTH_TYPES_H 23 | 24 | typedef struct field_strength_obs_t { 25 | double E; 26 | double Q; 27 | } field_strength_obs_t; 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /xchange/xchange_halffield.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _XCHANGE_HALFFIELD_H 20 | #define _XCHANGE_HALFFIELD_H 21 | 22 | void init_xchange_halffield(); 23 | void xchange_halffield(); 24 | void xchange_halffield32(); 25 | #endif 26 | -------------------------------------------------------------------------------- /init/init_bispinor_field.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _INIT_BISPINOR_FIELD_H 20 | #define _INIT_BISPINOR_FIELD_H 21 | 22 | int init_bispinor_field(const int V, const int nr); 23 | 24 | void free_bispinor_field(); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /init/init_chi_spinor_field.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _INIT_CHI_SPINOR_FIELD_H 20 | #define _INIT_CHI_SPINOR_FIELD_H 21 | 22 | int init_chi_spinor_field(const int V, const int nr); 23 | void free_chi_spinor_field(); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /monomial/nddetratio_monomial.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2008 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | #ifndef _NDDETRATIO_MONOMIAL_H 21 | #define _NDDETRATIO_MONOMIAL_H 22 | 23 | #include "hamiltonian_field.h" 24 | 25 | double nddetratio_acc(const int id, hamiltonian_field_t* const hf); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /update_gauge.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | #ifndef _UPDATE_GAUGE_H 21 | #define _UPDATE_GAUGE_H 22 | 23 | #include "hamiltonian_field.h" 24 | 25 | void update_gauge(const double step, hamiltonian_field_t* const hf); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /linalg/addto_32.c: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | #include 3 | #endif 4 | #ifdef TM_USE_OMP 5 | #include 6 | #endif 7 | #include 8 | #include 9 | #include 10 | #include "addto_32.h" 11 | #include "su3.h" 12 | 13 | /* Q output, R input, S input */ 14 | void addto_32(spinor *const Q, const spinor32 *const R, const int N) { 15 | #ifdef TM_USE_OMP 16 | #pragma omp parallel 17 | { 18 | #endif 19 | 20 | int ix; 21 | spinor *q; 22 | spinor32 *r; 23 | #ifdef TM_USE_OMP 24 | #pragma omp for 25 | #endif 26 | for (ix = 0; ix < N; ix++) { 27 | q = (spinor *)Q + ix; 28 | r = (spinor32 *)R + ix; 29 | 30 | q->s0.c0 += r->s0.c0; 31 | q->s0.c1 += r->s0.c1; 32 | q->s0.c2 += r->s0.c2; 33 | 34 | q->s1.c0 += r->s1.c0; 35 | q->s1.c1 += r->s1.c1; 36 | q->s1.c2 += r->s1.c2; 37 | 38 | q->s2.c0 += r->s2.c0; 39 | q->s2.c1 += r->s2.c1; 40 | q->s2.c2 += r->s2.c2; 41 | 42 | q->s3.c0 += r->s3.c0; 43 | q->s3.c1 += r->s3.c1; 44 | q->s3.c2 += r->s3.c2; 45 | } 46 | 47 | #ifdef TM_USE_OMP 48 | } /* OpenMP closing brace */ 49 | #endif 50 | } 51 | -------------------------------------------------------------------------------- /xchange/xchange_lexicfield.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _XCHANGE_LEXICFIELD_H 21 | #define _XCHANGE_LEXICFIELD_H 22 | 23 | void xchange_lexicfield(spinor* const s); 24 | void xchange_lexicfield32(spinor32* const s); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /init/init_gauge_fg.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _INIT_GAUGE_FG_H 20 | #define _INIT_GAUGE_FG_H 21 | 22 | #include "su3.h" 23 | 24 | extern su3** gauge_fg; 25 | 26 | int init_gauge_fg(const int V); 27 | void free_gauge_fg(); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /linalg/mul.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _MUL_H 21 | #define _MUL_H 22 | 23 | #include "su3.h" 24 | 25 | /* Makes (*R) = c*(*S) */ 26 | void mul(spinor* const R, const _Complex double c, spinor* const S, const int N); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /init/init_stout_smear_vars.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2007,2008 Jan Volkholz, Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | 21 | #ifndef _INIT_STOUT_SMEAR_VARS_H 22 | #define _INIT_STOUT_SMEAR_VARS_H 23 | 24 | int init_stout_smear_vars(const int V, const int stout_no_iter); 25 | void free_stout_smear_vars(); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /meas/pion_norm.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2009 Florian Burger 4 | * 5 | * Adapted from online_measurement.h by Florian Burger 2009/12/16 6 | * 7 | * This file is part of tmLQCD. 8 | * 9 | * tmLQCD is free software: you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation, either version 3 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * tmLQCD is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with tmLQCD. If not, see . 21 | ***********************************************************************/ 22 | 23 | #ifndef _PION_NORM_H 24 | #define _PION_NORM_H 25 | 26 | void pion_norm_measurement(const int traj, const int id, const int ieo); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /doc/sample-input/sample-pcg.input: -------------------------------------------------------------------------------- 1 | # example input file for invert 2 | # for CG solver 3 | # requires a 4^4 gauge configuration conf.0000 4 | 5 | L=4 6 | T=4 7 | NrXProcs = 2 8 | NrYProcs = 2 9 | NrZProcs = 2 10 | 11 | NoBlocksT = 2 12 | NoBlocksX = 2 13 | NoBlocksY = 2 14 | NoBlocksZ = 2 15 | 16 | DebugLevel = 3 17 | InitialStoreCounter = 0 18 | Measurements = 1 19 | 2kappamu = 0.005 20 | kappa = 0.177 21 | BCAngleT = 1 22 | GaugeConfigInputFile = conf 23 | UseEvenOdd = no 24 | 25 | SourceType = timeslice 26 | #ReadSource = no 27 | #NoSamples = 1 28 | UseSloppyPrecision = no 29 | OmpNumThreads = 2 30 | 31 | ReadSource = no 32 | SourceFilename = bla 33 | SourceTimeSlice = 38 34 | Indices = 0 35 | 36 | BeginDeflationInit 37 | GlobalVectorsNum = 20 38 | OuterloopMsap = yes 39 | NiterMsap = 3 40 | NcycleMsap = 5 41 | NiterMsapDfl = 20 42 | NcycleMsapDfl = 5 43 | NsmoothMsapDfl = 6 44 | UseiQDFL = no 45 | EndDeflationInit 46 | 47 | BeginOperator TMWILSON 48 | 2kappaMu = 0.005 49 | kappa = 0.177 50 | UseEvenOdd = no 51 | Solver = PCG 52 | SolverPrecision = 1e-14 53 | MaxSolverIterations = 325 54 | # AddDownPropagator = yes 55 | EndOperator 56 | 57 | 58 | -------------------------------------------------------------------------------- /linalg/assign_to_32.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2015 Florian Burger 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _ASSIGN_TO_32_H 21 | #define _ASSIGN_TO_32_H 22 | 23 | #include "su3.h" 24 | void assign_to_32(spinor32* const R, spinor* const S, const int N); 25 | void assign_to_64(spinor* const R, spinor32* const S, const int N); 26 | #endif 27 | -------------------------------------------------------------------------------- /linalg/diff_and_square_norm.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef DIFF_AND_SQUARE_NORM_H 21 | #define DIFF_AND_SQUARE_NORM_H 22 | 23 | #include "su3.h" 24 | 25 | double diff_and_square_norm(spinor* const Q, spinor* const R, const int N); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /test/hopping_test_generate_script: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | # This script generates random gauge configurations, random spinor configurations 5 | # for all the lattices specified in the loop below. 6 | # For each lattice it also applies the Hopping matrix once (for even and once for odd) 7 | # and saves the resulting output spinors. 8 | # The companion script hopping_test_qscript verifies that the parallel version of the program 9 | # produces the same result for all allowed parallelizations (with the number of procs and 10 | # lattices specified there) 11 | 12 | program=hopping_test_ref 13 | 14 | mkdir -p confs 15 | 16 | for ll in 4 6 8 10 12 14 16 ; do 17 | for tt in 4 5 6 7 8 9 10 16 20 24 ; do 18 | 19 | echo "$ll - $tt" 20 | 21 | rm -f spincolorfield spincolorfield.out gaugeconf 22 | 23 | sed s/TT/${tt}/g hopping_test.input.start | sed s/LL/${ll}/g | sed s/NX/1/g | sed s/NY/1/g | sed s/NZ/1/g > hopping_test.input 24 | ./$program > confs/out_L${ll}T${tt} 25 | mv spincolorfield confs/spincolorfield.in.L${ll}T${tt} 26 | mv spincolorfield.out confs/spincolorfield.out.L${ll}T${tt} 27 | mv gaugeconf confs/gaugeconf.L${ll}T${tt} 28 | 29 | done 30 | done 31 | -------------------------------------------------------------------------------- /update_momenta.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _UPDATE_MOMENTA_H 20 | #define _UPDATE_MOMENTA_H 21 | 22 | #include "hamiltonian_field.h" 23 | 24 | void update_momenta(int* mnllist, double step, const int no, hamiltonian_field_t* const hf); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /io/utils_close_reader_record.c: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #include "utils.ih" 21 | 22 | void close_reader_record(READER *reader) { 23 | if (reader != NULL) ReaderCloseRecord(reader); 24 | #ifdef TM_USE_MPI 25 | MPI_Barrier(g_cart_grid); 26 | #endif 27 | } 28 | -------------------------------------------------------------------------------- /linalg/add.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _ADD_H 21 | #define _ADD_H 22 | 23 | #include "su3.h" 24 | 25 | /* Makes the sum (*Q) = (*R) + (*S) */ 26 | void add(spinor* const Q, const spinor* const R, const spinor* const S, const int N); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /linalg/assign_diff_mul.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _ASSIGN_DIFF_MUL_H 21 | #define _ASSIGN_DIFF_MUL_H 22 | 23 | #include "su3.h" 24 | 25 | void assign_diff_mul(spinor* const S, spinor* const R, const _Complex double c, const int N); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /operator/Hopping_Matrix_nocom.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _HOPPING_MATRIX_NOCOM_H 21 | #define _HOPPING_MATRIX_NOCOM_H 22 | 23 | #include "su3.h" 24 | 25 | void Hopping_Matrix_nocom(const int ieo, spinor* const l, spinor* const k); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /linalg/mul_r.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _MUL_R_H 21 | #define _MUL_R_H 22 | 23 | #include "su3.h" 24 | 25 | /* Makes (*R) = c*(*S) c is a real constant*/ 26 | void mul_r(spinor* const R, const double c, spinor* const S, const int N); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /monomial/cloverdetratio_rwmonomial.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2012 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | * 20 | ***********************************************************************/ 21 | #ifndef _CLOVERDETRATIO_RWMONOMIAL_H 22 | #define _CLOVERDETRATIO_RWMONOMIAL_H 23 | 24 | #include "hamiltonian_field.h" 25 | 26 | double cloverdetratio_rwacc(const int no, hamiltonian_field_t* const hf); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /linalg/assign_mul_add_r_32.c: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | #include 3 | #endif 4 | #include 5 | #include 6 | #ifdef TM_USE_OMP 7 | #include 8 | #endif 9 | #include "assign_mul_add_r_32.h" 10 | #include "su3.h" 11 | 12 | /* R inoutput , c,S input*/ 13 | /* (*R) = c*(*R) + (*S) c is a real constant */ 14 | void assign_mul_add_r_32(spinor32 *const R, const float c, const spinor32 *const S, const int N) { 15 | #ifdef TM_USE_OMP 16 | #pragma omp parallel for 17 | #endif 18 | for (int ix = 0; ix < N; ++ix) { 19 | spinor32 *r = R + ix; 20 | const spinor32 *s = S + ix; 21 | 22 | r->s0.c0 = c * r->s0.c0 + s->s0.c0; 23 | r->s0.c1 = c * r->s0.c1 + s->s0.c1; 24 | r->s0.c2 = c * r->s0.c2 + s->s0.c2; 25 | 26 | r->s1.c0 = c * r->s1.c0 + s->s1.c0; 27 | r->s1.c1 = c * r->s1.c1 + s->s1.c1; 28 | r->s1.c2 = c * r->s1.c2 + s->s1.c2; 29 | 30 | r->s2.c0 = c * r->s2.c0 + s->s2.c0; 31 | r->s2.c1 = c * r->s2.c1 + s->s2.c1; 32 | r->s2.c2 = c * r->s2.c2 + s->s2.c2; 33 | 34 | r->s3.c0 = c * r->s3.c0 + s->s3.c0; 35 | r->s3.c1 = c * r->s3.c1 + s->s3.c1; 36 | r->s3.c2 = c * r->s3.c2 + s->s3.c2; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /operator_types.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2009 Carsten Urbach 4 | * 2017 Bartosz Kostrzewa 5 | * 6 | * This file is part of tmLQCD. 7 | * 8 | * tmLQCD is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * tmLQCD is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with tmLQCD. If not, see . 20 | ***********************************************************************/ 21 | 22 | #ifndef OPERATOR_TYPES_H 23 | #define OPERATOR_TYPES_H 24 | 25 | typedef enum op_type_t { TMWILSON = 0, OVERLAP, WILSON, DBTMWILSON, CLOVER, DBCLOVER } op_type_t; 26 | 27 | #endif // OPERATOR_TYPES_H 28 | -------------------------------------------------------------------------------- /update_tm.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _UPDATE_TM_H 20 | #define _UPDATE_TM_H 21 | 22 | int update_tm(double *plaquette_energy, double *rectangle_energy, char *filename, 23 | const int return_check, const int acctest, const int traj_counter); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /xchange/xchange_gauge.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2012 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | * 19 | * exchange routines for gauge fields 20 | * 21 | * Author: Carsten Urbach 22 | * 23 | **********************************************************/ 24 | 25 | #ifndef _XCHANGE_GAUGE_H 26 | #define _XCHANGE_GAUGE_H 27 | 28 | #include "su3.h" 29 | 30 | void xchange_gauge(su3** const gf); 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /linalg/mul_gamma5.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _MUL_GAMMA5_H 21 | #define _MUL_GAMMA5_H 22 | 23 | #include "su3.h" 24 | 25 | /* multiply the spinor R with gamma5 (*R) = gamma5*(*R) with gamma5 = [1 0 ; 0 -1]*/ 26 | void mul_gamma5(spinor* const R, const int N); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /monomial/ratcor_monomial.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2013 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | #ifndef _RATCOR_MONOMIAL_H 21 | #define _RATCOR_MONOMIAL_H 22 | 23 | #include "hamiltonian_field.h" 24 | 25 | double ratcor_acc(const int id, hamiltonian_field_t* const hf); 26 | void ratcor_heatbath(const int id, hamiltonian_field_t* const hf); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /operator/Dov_proj.c: -------------------------------------------------------------------------------- 1 | 2 | /********************************************************** 3 | * 4 | * Dov_proj_plus and Dov_proj_minus 5 | * are the projections of Dov onto the 6 | * positive and negative chiral sector, respectively 7 | * 8 | * Both need one work_field! 9 | * 10 | * Author: Carsten Urbach 11 | * Die Sep 21 15:21:33 CEST 2004 12 | * 13 | **********************************************************/ 14 | 15 | #include "Dov_proj.h" 16 | #include 17 | #include "Dov_psi.h" 18 | #include "gamma.h" 19 | #include "global.h" 20 | #include "linalg_eo.h" 21 | #include "su3.h" 22 | 23 | void Dov_proj_plus(spinor *const R, spinor *const S) { 24 | spinor *aux; 25 | int N = VOLUMEPLUSRAND; 26 | 27 | aux = calloc(VOLUMEPLUSRAND, sizeof(spinor)); 28 | 29 | Proj(aux, S, N, _PLUS); 30 | Dov_psi(R, aux); 31 | Proj(R, R, N, _PLUS); 32 | 33 | free(aux); 34 | } 35 | 36 | void Dov_proj_minus(spinor *const R, spinor *const S) { 37 | spinor *aux; 38 | int N = VOLUMEPLUSRAND; 39 | 40 | aux = calloc(VOLUMEPLUSRAND, sizeof(spinor)); 41 | 42 | Proj(aux, S, N, _MINUS); 43 | Dov_psi(R, aux); 44 | Proj(R, R, N, _MINUS); 45 | 46 | free(aux); 47 | } 48 | -------------------------------------------------------------------------------- /deriv_Sb_D_psi.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2007,2008 Jan Volkholz, Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | 21 | #ifndef _DERIV_SB_D_PSI_H 22 | #define _DERIV_SB_D_PSI_H 23 | 24 | #include "hamiltonian_field.h" 25 | 26 | void deriv_Sb_D_psi(spinor* const l, spinor* const k, hamiltonian_field_t* const hf, 27 | const double factor); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /monomial/ndratcor_monomial.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2013 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | #ifndef _NDRATCOR_MONOMIAL_H 21 | #define _NDRATCOR_MONOMIAL_H 22 | 23 | #include "hamiltonian_field.h" 24 | 25 | double ndratcor_acc(const int id, hamiltonian_field_t* const hf); 26 | void ndratcor_heatbath(const int id, hamiltonian_field_t* const hf); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /deriv_Sb.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _DERIV_SB_H 20 | #define _DERIV_SB_H 21 | 22 | #include "hamiltonian_field.h" 23 | #include "su3.h" 24 | 25 | void deriv_Sb(const int ieo, spinor* const l, spinor* const k, hamiltonian_field_t* const hf, 26 | const double factor); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /linalg/mattimesvec.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _MATTIMESVEC_H 21 | #define _MATTIMESVEC_H 22 | 23 | #include 24 | 25 | void mattimesvec(_Complex double* const v, _Complex double* const M, _Complex double* const w, 26 | const int N, const int ldM); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /operator/Hopping_Matrix.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _HOPPING_MATRIX_H 21 | #define _HOPPING_MATRIX_H 22 | 23 | #define EO 0 24 | #define OE 1 25 | #define OO 1 26 | #define EE 0 27 | 28 | #include "su3.h" 29 | 30 | void Hopping_Matrix(const int ieo, spinor* const l, spinor* const k); 31 | #endif 32 | -------------------------------------------------------------------------------- /linalg/convert_odd_to_lexic.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _CONVERT_ODD_TO_LEXIC_H 21 | #define _CONVERT_ODD_TO_LEXIC_H 22 | 23 | #include "su3.h" 24 | 25 | void convert_odd_to_lexic(spinor* const P, spinor* const r); 26 | void convert_lexic_to_odd(spinor* const r, spinor* const P); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /linalg/mul_diff_r.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _MUL_DIFF_R_H 21 | #define _MUL_DIFF_R_H 22 | 23 | #include "su3.h" 24 | 25 | /* Makes (*R)=c1*(*S) - (*U) , c1 is a real constant */ 26 | void mul_diff_r(spinor* const R, spinor* const S, spinor* const U, const double c1, const int N); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /test/check_nan.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _CHECK_NAN_H 21 | #define _CHECK_NAN_H 22 | 23 | #include "su3adj.h" 24 | 25 | int check_nan(); 26 | int check_nan_gauge(const int ix, const int mu); 27 | int check_su3adj(su3adj* s, const double a); 28 | int check_greater(const double a); 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /linalg/convert_even_to_lexic.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _CONVERT_EVEN_TO_LEXIC_H 21 | #define _CONVERT_EVEN_TO_LEXIC_H 22 | 23 | #include "su3.h" 24 | 25 | void convert_even_to_lexic(spinor* const P, spinor* const r); 26 | void convert_lexic_to_even(spinor* const r, spinor* const P); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /linalg/scalar_prod_i.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _SCALAR_PROD_I_H 21 | #define _SCALAR_PROD_I_H 22 | 23 | #include "su3.h" 24 | 25 | /* Returns the imaginary part of the scalar product (*R,*S) */ 26 | double scalar_prod_i(spinor* const S, spinor* const R, const int N, const int parallel); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /measure_gauge_action.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | #ifndef _MEASURE_GAUGE_ACTION_H 21 | #define _MEASURE_GAUGE_ACTION_H 22 | 23 | #include "su3.h" 24 | 25 | double measure_plaquette(const su3 *const *const gf); 26 | double measure_gauge_action(const su3 *const *const gf, const double lambda); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /solver/cg_her_su3vect.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * This file is part of tmLQCD. 4 | * 5 | * tmLQCD is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * tmLQCD is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with tmLQCD. If not, see . 17 | ***********************************************************************/ 18 | #ifndef _CG_HERSU3V_H 19 | #define _CG_HERSU3V_H 20 | 21 | #include "solver/matrix_mult_typedef.h" 22 | #include "su3.h" 23 | 24 | int cg_her_su3vect(su3_vector* const P, su3_vector* const Q, const int max_iter, double eps_sq, 25 | const int rel_prec, const int N, const int tslice, matrix_mult_su3vect f); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /update_momenta_fg.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _UPDATE_MOMENTA_FG_H 20 | #define _UPDATE_MOMENTA_FG_H 21 | 22 | #include "hamiltonian_field.h" 23 | 24 | void update_momenta_fg(int* mnllist, double step, const int no, hamiltonian_field_t* const hf, 25 | double step_fg); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /boundary.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _BOUNDARY_H 21 | #define _BOUNDARY_H 22 | 23 | #include "su3.h" 24 | 25 | extern double X0, X1, X2, X3; 26 | extern _Complex double ka0, ka1, ka2, ka3; 27 | extern _Complex double phase_0, phase_1, phase_2, phase_3; 28 | void boundary(const double kappa); 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /linalg/assign_mul_add.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _ASSIGN_MUL_ADD_H 21 | #define _ASSIGN_MUL_ADD_H 22 | 23 | #include "su3.h" 24 | 25 | /* (*P) = c(*P) + (*Q) c is a complex constant */ 26 | void assign_mul_add(spinor* const P, const _Complex double c, spinor* const Q, const int N); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /solver/cg_her.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _CG_HER_H 20 | #define _CG_HER_H 21 | 22 | #include "solver/matrix_mult_typedef.h" 23 | #include "su3.h" 24 | 25 | int cg_her(spinor* const, spinor* const, const int max_iter, double eps_sq, const int rel_prec, 26 | const int N, matrix_mult f); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /solver/diagonalise_general_matrix.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _DIAGONALISE_GENERAL_MATRIX_H 21 | #define _DIAGONALISE_GENERAL_MATRIX_H 22 | 23 | void diagonalise_general_matrix(int n, _Complex double* A, int lda, _Complex double* vl, 24 | _Complex double* evalues); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /solver/eigenvalues_bi.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _EIGENVALUES_BI_H 20 | #define _EIGENVALUES_BI_H 21 | 22 | #include "solver/matrix_mult_typedef_bi.h" 23 | 24 | double eigenvalues_bi(int* nev, const int max_iterations, const double prec, const int maxmin, 25 | matrix_mult_bi Qsq); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /solver/pcg_her.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _PCG_HER_H 20 | #define _PCG_HER_H 21 | 22 | #include "solver/matrix_mult_typedef.h" 23 | #include "su3.h" 24 | 25 | int pcg_her(spinor* const, spinor* const, const int max_iter, double eps_sq, const int rel_prec, 26 | const int N, matrix_mult f); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /compare_derivative.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2024 Bartosz Kostrzewa 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | 21 | #ifndef COMPARE_DERIVATIVE_H 22 | #define COMPARE_DERIVATIVE_H 23 | 24 | #include "monomial/monomial.h" 25 | #include "su3adj.h" 26 | 27 | void compare_derivative(monomial *mnl, su3adj **ext_lib, su3adj **native, const double threshold, 28 | const char *name); 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /operator/tm_sub_Hopping_Matrix.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _TM_SUB_HOPPING_MATRIX_H 21 | #define _TM_SUB_HOPPING_MATRIX_H 22 | 23 | #include "su3.h" 24 | 25 | void tm_sub_Hopping_Matrix(const int ieo, spinor* const l, spinor* p, spinor* const k, 26 | complex double const cfactor); 27 | #endif 28 | -------------------------------------------------------------------------------- /prepare_source.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | 21 | #ifndef _PREPARE_SOURCE_H 22 | #define _PREPARE_SOURCE_H 23 | 24 | void prepare_source(const int nstore, const int isample, const int ix, const int op_id, 25 | const int read_source_flag, const int source_location, const unsigned int seed); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /io/eospinor.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _EOSPINOR_H 21 | #define _EOSPINOR_H 22 | 23 | #include "su3.h" 24 | 25 | int read_eospinor(spinor* const s, char* filename); 26 | int write_eospinor(spinor* const s, char* filename, const double evalue, const double prec, 27 | const int nstore); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /operator/tm_times_Hopping_Matrix.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _TM_TIMES_HOPPING_MATRIX_H 21 | #define _TM_TIMES_HOPPING_MATRIX_H 22 | 23 | #include "su3.h" 24 | 25 | void tm_times_Hopping_Matrix(const int ieo, spinor* const l, spinor* const k, 26 | complex double const cfactor); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /solver/cgs_real.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _CGS_REAL_H 21 | #define _CGS_REAL_H 22 | 23 | #include "solver/matrix_mult_typedef.h" 24 | #include "su3.h" 25 | 26 | int cgs_real(spinor* const, spinor* const, const int max_iter, double eps_sq, const int rel_prec, 27 | const int N, matrix_mult f); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /update_backward_gauge.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _UPDATE_BACKWARD_GAUGE_H 21 | #define _UPDATE_BACKWARD_GAUGE_H 22 | 23 | #include "su3.h" 24 | 25 | void update_backward_gauge(su3** const gf); 26 | void update_backward_gauge_32_orphaned(su3_32** const gf); 27 | void update_backward_gauge_32(su3_32** const gf); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /doc/sample-input/sample-hmc-cloverdet.input: -------------------------------------------------------------------------------- 1 | # this is a sample input file for a single cloverdet 2 | # monomial 3 | # 4 | # the plaquette value should be 5 | # 0.5905(3) 6 | # 7 | 8 | L=4 9 | T=4 10 | Measurements = 10000 11 | Startcondition = hot 12 | 2KappaMu = 0.0 13 | CSW = 1.76 14 | kappa = 0.138 15 | NSave = 500000 16 | ThetaT = 1.0 17 | UseEvenOdd = yes 18 | ReversibilityCheck = yes 19 | ReversibilityCheckIntervall = 100 20 | InitialStoreCounter = 0 21 | DebugLevel = 0 22 | 23 | BeginMeasurement CORRELATORS 24 | Frequency = 2 25 | EndMeasurement 26 | 27 | BeginMonomial GAUGE 28 | Type = Wilson 29 | beta = 5.60 30 | Timescale = 0 31 | EndMonomial 32 | 33 | BeginMonomial CLOVERDET 34 | Timescale = 1 35 | CSW = 1.76 36 | kappa = 0.138 37 | AcceptancePrecision = 1.e-20 38 | ForcePrecision = 1.e-12 39 | Name = cloverdet 40 | solver = CG 41 | EndMonomial 42 | 43 | BeginIntegrator 44 | Type0 = 2MN 45 | Type1 = 2MN 46 | IntegrationSteps0 = 2 47 | IntegrationSteps1 = 12 48 | tau = 1.00 49 | Lambda0 = 0.19 50 | Lambda1 = 0.20 51 | NumberOfTimescales = 2 52 | EndIntegrator 53 | 54 | BeginOperator CLOVER 55 | CSW = 1.76 56 | kappa = 0.208333 57 | SolverPrecision = 1e-14 58 | MaxSolverIterations = 1000 59 | EndOperator 60 | -------------------------------------------------------------------------------- /linalg/mul_r_32.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2015 Florian Burger 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _MUL_R_32_H 21 | #define _MUL_R_32_H 22 | 23 | #include "su3.h" 24 | 25 | /* Makes (*R) = c*(*S) c is a real constant*/ 26 | void mul_r_32(spinor32* const R, const float c, spinor32* const S, const int N); 27 | void mul_r_32_orphaned(spinor32* const R, const float c, spinor32* const S, const int N); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /monomial/det_monomial.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2008 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | #ifndef _DET_MONOMIAL_H 21 | #define _DET_MONOMIAL_H 22 | 23 | #include "hamiltonian_field.h" 24 | 25 | void det_derivative(const int no, hamiltonian_field_t* const hf); 26 | void det_heatbath(const int no, hamiltonian_field_t* const hf); 27 | double det_acc(const int no, hamiltonian_field_t* const hf); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /monomial/rat_monomial.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2013 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | #ifndef _RAT_MONOMIAL_H 21 | #define _RAT_MONOMIAL_H 22 | 23 | #include "hamiltonian_field.h" 24 | 25 | void rat_derivative(const int id, hamiltonian_field_t* const hf); 26 | double rat_acc(const int id, hamiltonian_field_t* const hf); 27 | void rat_heatbath(const int id, hamiltonian_field_t* const hf); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /solver/bicgstab2.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _BICGSTAB2_H 21 | #define _BICGSTAB2_H 22 | 23 | #include "solver/matrix_mult_typedef.h" 24 | #include "su3.h" 25 | 26 | int bicgstab2(spinor* const x0, spinor* const b, const int max_iter, double eps_sq, 27 | const int rel_prec, const int N, matrix_mult f); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /doc/sample-input/sample-mixedcg.input: -------------------------------------------------------------------------------- 1 | #example input file for invert 2 | # for MIXEDCG solver 3 | # requires a 4^4 gauge configuration conf.0000 4 | 5 | L=4 6 | T=4 7 | 8 | DebugLevel = 5 9 | InitialStoreCounter = 0 10 | Measurements = 1 11 | 2kappamu = 0.05 12 | kappa = 0.177 13 | BCAngleT = 1 14 | GaugeConfigInputFile = conf 15 | UseEvenOdd = yes 16 | 17 | SourceType = Volume 18 | ReadSource = no 19 | NoSamples = 12 20 | 21 | # residual reduction factor for inner solver in mixed cg (1.e-6 seems to work quite well in general) 22 | MixCGInnerEps = 1.e-6 23 | # maximum number of inner solver iterations for MIXEDCG per restart 24 | MixCGMaxIter = 10000 25 | 26 | BeginOperator TMWILSON 27 | 2kappaMu = 0.05 28 | kappa = 0.177 29 | UseEvenOdd = yes 30 | Solver = MIXEDCG 31 | SolverPrecision = 1e-14 32 | # MIXECG internally calculates the number of outer iterations from MaxSolverIterations and MixCGMaIter, but does 33 | # at least 10 outer iterations 34 | MaxSolverIterations = 30000 35 | AddDownPropagator = yes 36 | EndOperator 37 | 38 | BeginOperator CLOVER 39 | 2kappaMu = 0.05 40 | kappa = 0.177 41 | csw = 1.74 42 | Solver = MIXEDCG 43 | SolverPrecision = 1e-14 44 | MaxSolverIterations = 30000 45 | AddDownPropagator = yes 46 | EndOperator 47 | -------------------------------------------------------------------------------- /fatal_error.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2012 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | 21 | #ifndef _FATAL_ERROR_H 22 | #define _FATAL_ERROR_H 23 | 24 | /* Function to cleanly exit the program with an error messages. The two parameters 25 | are strings describing the error and identifying the originating function respectively */ 26 | 27 | void fatal_error(char const *error, char const *function); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /monomial/poly_monomial.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2010 Andreas Nube 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | ***********************************************************************/ 20 | #ifndef _POLY_MONOMIAL_H 21 | #define _POLY_MONOMIAL_H 22 | 23 | #include "hamiltonian_field.h" 24 | 25 | void poly_derivative(const int id, hamiltonian_field_t* const hf); 26 | double poly_acc(const int id, hamiltonian_field_t* const hf); 27 | void poly_heatbath(const int id, hamiltonian_field_t* const hf); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /solver/cg_mms_tm.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * 4 | * Copyright (C) 2004 Andrea Shindler 5 | * 2009 Carsten Urbach 6 | * 7 | * This file is part of tmLQCD. 8 | * 9 | * tmLQCD is free software: you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation, either version 3 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * tmLQCD is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with tmLQCD. If not, see . 21 | * 22 | ***********************************************************************/ 23 | 24 | #ifndef _CG_MMS_TM_H 25 | #define _CG_MMS_TM_H 26 | 27 | #include "solver/matrix_mult_typedef.h" 28 | #include "solver/solver_params.h" 29 | #include "su3.h" 30 | 31 | int cg_mms_tm(spinor** const P, spinor* const Q, solver_params_t* const params); 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /solver/cr.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | 20 | #ifndef _CR_H 21 | #define _CR_H 22 | 23 | #include "solver/matrix_mult_typedef.h" 24 | #include "su3.h" 25 | 26 | int cr(spinor* const P, spinor* const Q, const int m, const int max_restarts, const double eps_sq, 27 | const int rel_prec, const int N, const int precon, matrix_mult f); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /hamiltonian_field.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * 3 | * Copyright (C) 2012 Carsten Urbach 4 | * 5 | * This file is part of tmLQCD. 6 | * 7 | * tmLQCD is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * tmLQCD is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with tmLQCD. If not, see . 19 | * 20 | ***********************************************************************/ 21 | 22 | #ifndef _HAMILTONIAN_FIELD_H 23 | #define _HAMILTONIAN_FIELD_H 24 | 25 | #include 26 | #include 27 | 28 | typedef struct { 29 | su3** gaugefield; 30 | su3adj** momenta; 31 | su3adj** derivative; 32 | int update_gauge_copy; 33 | int traj_counter; 34 | } hamiltonian_field_t; 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /io/gauge_write_luscher_binary.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Carsten Urbach 3 | * 4 | * This file is part of tmLQCD. 5 | * 6 | * tmLQCD is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * tmLQCD is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with tmLQCD. If not, see . 18 | ***********************************************************************/ 19 | #ifndef _GAUGE_WRITE_LUSCHER_BINARY_H 20 | #define _GAUGE_WRITE_LUSCHER_BINARY_H 21 | 22 | #include 23 | #include 24 | #include "gauge.ih" 25 | 26 | // not parallelised! 27 | 28 | int write_luscher_gauge_binary(const double plaq, char* filename, su3** const gf); 29 | 30 | #endif 31 | --------------------------------------------------------------------------------