#/*
#===============================================================================
#
# module_input.h
#
#-------------------------------------------------------------------------------
#
# Copyright (C) 2003-2017 Hinnerk Stueben
#               2007-2013 Yoshifumi Nakamura
#
# This file is part of BQCD -- Berlin Quantum ChromoDynamics program
#
# BQCD is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BQCD is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with BQCD.  If not, see <http://www.gnu.org/licenses/>.
#
#-------------------------------------------------------------------------------
# Contains extra keywords for PF, tRHMC, et cetera
#
# Editor: Taylor Haar
# Last modified: 17/03/2017
#-------------------------------------------------------------------------------
# new: 23/05/2017
# INPUT_IGNORE for unused/deprecated input variables
#-------------------------------------------------------------------------------
#*/

INPUT_INPUT(run, integer, 0)
INPUT_INPUT(comment, character(comment_len), "")

INPUT_INPUT(lattice, INPUT_ARRAY_DIM, (/4, 4, 4, 4/))
INPUT_INPUT(processes, INPUT_ARRAY_DIM, (/1, 1, 1, 1/))
INPUT_INPUT(process_mapping, INPUT_ARRAY_DIM, (/1, 2, 3, 4/))
INPUT_INPUT(boundary_conditions_fermions, INPUT_ARRAY_DIM, (/1, 1, 1, -1/))
INPUT_IGNORE(gamma_index, INPUT_ARRAY_DIM, (/1,2,3,4/))

INPUT_IGNORE(ensembles, integer, INPUT_DEFAULT_ENSEMBLES)

INPUT_INPUT(beta, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_INPUT(beta_qed, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_IGNORE(kappa, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_IGNORE(kappa_strange, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_INPUT(kappa_axion, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_INPUT(finv_axion, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_INPUT(csw, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_INPUT(h, INPUT_ARRAY_ENSEMBLES, "0.0")

INPUT_IGNORE(tempering_swap_sequence, character(word_len), "random")
INPUT_IGNORE(tempering_steps_without, integer, 0)

INPUT_INPUT(nf1_kappa1, real(8), 0)
INPUT_INPUT(nf1_kappa2, real(8), 0)
INPUT_INPUT(nf1_kappa3, real(8), 0)
INPUT_INPUT(nf1_kappa4, real(8), 0)
INPUT_INPUT(nf1_kappa5, real(8), 0)
INPUT_INPUT(nf1_kappa6, real(8), 0)
INPUT_INPUT(nf1_kappa1npf, integer, 1)
INPUT_INPUT(nf1_kappa2npf, integer, 1)
INPUT_INPUT(nf1_kappa3npf, integer, 1)
INPUT_INPUT(nf1_kappa4npf, integer, 1)
INPUT_INPUT(nf1_kappa5npf, integer, 1)
INPUT_INPUT(nf1_kappa6npf, integer, 1)
INPUT_INPUT(nf1_kappa1nth, integer, 2)
INPUT_INPUT(nf1_kappa2nth, integer, 2)
INPUT_INPUT(nf1_kappa3nth, integer, 2)
INPUT_INPUT(nf1_kappa4nth, integer, 2)
INPUT_INPUT(nf1_kappa5nth, integer, 2)
INPUT_INPUT(nf1_kappa6nth, integer, 2)

INPUT_INPUT(nf2_kappa1, real(8), 0)
INPUT_INPUT(nf2_kappa2, real(8), 0)
INPUT_INPUT(nf2_kappa3, real(8), 0)
INPUT_INPUT(nf2_kappa4, real(8), 0)
INPUT_INPUT(nf2_kappa5, real(8), 0)
INPUT_INPUT(nf2_kappa6, real(8), 0)
INPUT_INPUT(nf2_kappa1h1, real(8), 0)
INPUT_INPUT(nf2_kappa1h2, real(8), 0)
INPUT_INPUT(nf2_kappa1h3, real(8), 0)
INPUT_INPUT(nf2_kappa2h1, real(8), 0)
INPUT_INPUT(nf2_kappa2h2, real(8), 0)
INPUT_INPUT(nf2_kappa2h3, real(8), 0)
INPUT_INPUT(nf2_kappa3h1, real(8), 0)
INPUT_INPUT(nf2_kappa3h2, real(8), 0)
INPUT_INPUT(nf2_kappa3h3, real(8), 0)
INPUT_INPUT(nf2_kappa4h1, real(8), 0)
INPUT_INPUT(nf2_kappa4h2, real(8), 0)
INPUT_INPUT(nf2_kappa4h3, real(8), 0)
INPUT_INPUT(nf2_kappa5h1, real(8), 0)
INPUT_INPUT(nf2_kappa5h2, real(8), 0)
INPUT_INPUT(nf2_kappa5h3, real(8), 0)
INPUT_INPUT(nf2_kappa6h1, real(8), 0)
INPUT_INPUT(nf2_kappa6h2, real(8), 0)
INPUT_INPUT(nf2_kappa6h3, real(8), 0)
INPUT_INPUT(nf1_lambda1, real(8), 0)
INPUT_INPUT(nf1_lambda2, real(8), 0)
INPUT_INPUT(nf1_lambda3, real(8), 0)
INPUT_INPUT(nf1_lambda4, real(8), 0)
INPUT_INPUT(nf1_lambda5, real(8), 0)
INPUT_INPUT(nf1_lambda6, real(8), 0)
INPUT_INPUT(nf2_lambda1, real(8), 0)
INPUT_INPUT(nf2_lambda2, real(8), 0)
INPUT_INPUT(nf2_lambda3, real(8), 0)
INPUT_INPUT(nf2_lambda4, real(8), 0)
INPUT_INPUT(nf2_lambda5, real(8), 0)
INPUT_INPUT(nf2_lambda6, real(8), 0)
INPUT_INPUT(nf1_em_charge1_x3, integer, 0)
INPUT_INPUT(nf1_em_charge2_x3, integer, 0)
INPUT_INPUT(nf1_em_charge3_x3, integer, 0)
INPUT_INPUT(nf1_em_charge4_x3, integer, 0)
INPUT_INPUT(nf1_em_charge5_x3, integer, 0)
INPUT_INPUT(nf1_em_charge6_x3, integer, 0)
INPUT_INPUT(nf2_em_charge1_x3, integer, 0)
INPUT_INPUT(nf2_em_charge2_x3, integer, 0)
INPUT_INPUT(nf2_em_charge3_x3, integer, 0)
INPUT_INPUT(nf2_em_charge4_x3, integer, 0)
INPUT_INPUT(nf2_em_charge5_x3, integer, 0)
INPUT_INPUT(nf2_em_charge6_x3, integer, 0)

INPUT_IGNORE(hmc_model, character, "A")
INPUT_INPUT(hmc_trajectory_length, INPUT_ARRAY_ENSEMBLES, "1")
INPUT_INPUT(hmc_steps, INPUT_ARRAY_ENSEMBLES, "0")

INPUT_INPUT(hmc_m_scale, INPUT_ARRAY_ENSEMBLES, "1")
INPUT_INPUT(hmc_m_scale2, INPUT_ARRAY_ENSEMBLES, "1")
INPUT_INPUT(hmc_accept_first, integer, 0)
INPUT_INPUT(hmc_test, integer, 0)

INPUT_INPUT(start_configuration, character(word_len), "cold")
INPUT_INPUT(start_info_file, INPUT_ARRAY_ENSEMBLES, "")
INPUT_INPUT(start_ildg_file, FILENAME, "")
INPUT_INPUT(start_random, character(para_len), "default")

INPUT_INPUT(mc_total_steps, integer, 1)
INPUT_INPUT(mc_steps, integer, 1)
INPUT_INPUT(mc_save_frequency, integer, 0)

INPUT_INPUT(solver_rest, character(para_len), "1e-8")
INPUT_INPUT(solver_maxiter, integer, 100)
INPUT_INPUT(solver_ignore_no_convergence, integer, 0)
INPUT_INPUT(solver_check_solution, integer, 0)
INPUT_INPUT(solver_mre_vectors, integer, 0)

INPUT_INPUT(ran_ranlux_level, integer, 2)

INPUT_INPUT(measure_cooling_list, FILENAME, "")
INPUT_INPUT(measure_polyakov_loop, integer, 0)
INPUT_INPUT(measure_traces, integer, 0)
INPUT_INPUT(measure_traces_file, FILENAME, "trace.log")
INPUT_INPUT(measure_chemical, integer, 0)
INPUT_INPUT(measure_chemical_file, FILENAME, "")
INPUT_INPUT(measure_schrpcac, integer, 0)
INPUT_INPUT(measure_schrpcac_kappa, real(8), 0)
INPUT_INPUT(measure_schrpcac_csw, real(8), 0)
INPUT_INPUT(measure_schrpcac_lambda, real(8), 0)
INPUT_INPUT(measure_schrpcac_em_charge, real(8), 0)
INPUT_INPUT(measure_schrpcac_file, FILENAME, "")
INPUT_INPUT(measure_wilson_flow, integer, 0)
INPUT_INPUT(measure_wilson_flow_file, FILENAME, "")
INPUT_INPUT(measure_wilson_flow_step, integer, 1000)
INPUT_INPUT(measure_wilson_flow_eps, character(para_len), "1d-3")
INPUT_INPUT(measure_wilson_flow_qed, integer, 0)
INPUT_INPUT(measure_wilson_flow_qed_file, FILENAME, "")
INPUT_INPUT(measure_wilson_flow_qed_step, integer, 1000)
INPUT_INPUT(measure_wilson_flow_qed_eps, character(para_len), "1d-3")

INPUT_INPUT(tuning_xbound_sc_i, integer, 1)
INPUT_INPUT(tuning_xbound_g_i, integer, 1)
INPUT_INPUT(tuning_cg_version, integer, 1)
INPUT_INPUT(tuning_cg_precision_r4, integer, 0)
INPUT_INPUT(tuning_cg_loop_blocking, integer, 0)
INPUT_INPUT(tuning_cg_block_length, integer, 256)
INPUT_INPUT(tuning_cg_mcg_block_length, integer, 0)
INPUT_INPUT(tuning_cg_spincol, integer, 1)
INPUT_INPUT(tuning_cg_clover, integer, 1)
INPUT_INPUT(tuning_cg_d, integer, 2)
INPUT_INPUT(tuning_cg_precision, integer, 64)
INPUT_INPUT(tuning_cg_simd, integer, 0)
INPUT_INPUT(tuning_io_ildg, integer, 2)
INPUT_INPUT(tuning_ran_field_parallel, integer, 0)

INPUT_INPUT(io_restart_format, character(word_len), "ildg")
INPUT_INPUT(io_conf_format, character(word_len), "ildg")
INPUT_INPUT(io_bqcd_restart_filename, FILENAME, "bqcd.%R3")
INPUT_INPUT(io_bqcd_conf_filename, FILENAME, "bqcd.%R3.%T5")

INPUT_INPUT(ildg_filename_prefix, FILENAME, "bqcd.%R3")
INPUT_INPUT(ildg_filename_middle, FILENAME, ".%T5")
INPUT_INPUT(ildg_filename_extension, FILENAME, "lime")
INPUT_INPUT(ildg_template_ensemble, FILENAME, "")
INPUT_INPUT(ildg_template_conf, FILENAME, "")

INPUT_INPUT(ildg_markov_chain_uri, character(url_len), "mc://UNDEFINED")
INPUT_INPUT(ildg_data_lfn_path, character(url_len), "lfn://UNDEFINED")
INPUT_INPUT(ildg_precision, integer, 64)
INPUT_INPUT(ildg_precision_restart, integer, 64)

INPUT_INPUT(ildg_participant_name, character(string_len), "UNDEFINED")
INPUT_INPUT(ildg_participant_institution, character(string_len), "UNDEFINED")
INPUT_INPUT(ildg_machine_name, character(string_len), "UNDEFINED")
INPUT_INPUT(ildg_machine_institution, character(string_len), "UNDEFINED")
INPUT_INPUT(ildg_machine_type, character(string_len), "UNDEFINED")





INPUT_INPUT(ddlattice, INPUT_ARRAY_DIM, (/1, 1, 1, 1/))

INPUT_INPUT(gauge_action, character(para_len), "WILSON")
INPUT_INPUT(fermi_action, character(para_len), "NON")


INPUT_INPUT(n_stout, INPUT_ARRAY_ENSEMBLES, "0")
INPUT_INPUT(alpha, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_IGNORE(theta, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_INPUT(chemi, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_INPUT(chemi_i, INPUT_ARRAY_ENSEMBLES, "0.0")
INPUT_INPUT(breaking_term, FILENAME, "")

INPUT_INPUT(hmc_integrator1, character(para_len), "LPFSTS")
INPUT_INPUT(hmc_integrator2, character(para_len), "LPFSTS")
INPUT_INPUT(hmc_integrator3, character(para_len), "LPFSTS")
INPUT_INPUT(hmc_integrator4, character(para_len), "NON")
INPUT_INPUT(hmc_integrator5, character(para_len), "NON")
INPUT_INPUT(hmc_integrator6, character(para_len), "NON")

INPUT_INPUT(hmc_m_scale3, INPUT_ARRAY_ENSEMBLES, "1")
INPUT_INPUT(hmc_m_scale4, INPUT_ARRAY_ENSEMBLES, "1")
INPUT_INPUT(hmc_m_scale5, INPUT_ARRAY_ENSEMBLES, "1")


INPUT_INPUT(hmc_hkappa, integer, 0)

INPUT_INPUT(hmc_dsfr_k1, integer, 0)
INPUT_INPUT(hmc_dsfr_k2, integer, 0)
INPUT_INPUT(hmc_dsfr_k3, integer, 0)
INPUT_INPUT(hmc_dsfr_k4, integer, 0)
INPUT_INPUT(hmc_dsfr_k5, integer, 0)
INPUT_INPUT(hmc_dsfr_k6, integer, 0)
INPUT_INPUT(hmc_dsf_k11, integer, 0)
INPUT_INPUT(hmc_dsf_k12, integer, 0)
INPUT_INPUT(hmc_dsf_k13, integer, 0)
INPUT_INPUT(hmc_dsf_k14, integer, 0)
INPUT_INPUT(hmc_dsf_k21, integer, 0)
INPUT_INPUT(hmc_dsf_k22, integer, 0)
INPUT_INPUT(hmc_dsf_k23, integer, 0)
INPUT_INPUT(hmc_dsf_k24, integer, 0)
INPUT_INPUT(hmc_dsf_k31, integer, 0)
INPUT_INPUT(hmc_dsf_k32, integer, 0)
INPUT_INPUT(hmc_dsf_k33, integer, 0)
INPUT_INPUT(hmc_dsf_k34, integer, 0)
INPUT_INPUT(hmc_dsf_k41, integer, 0)
INPUT_INPUT(hmc_dsf_k42, integer, 0)
INPUT_INPUT(hmc_dsf_k43, integer, 0)
INPUT_INPUT(hmc_dsf_k44, integer, 0)
INPUT_INPUT(hmc_dsf_k51, integer, 0)
INPUT_INPUT(hmc_dsf_k52, integer, 0)
INPUT_INPUT(hmc_dsf_k53, integer, 0)
INPUT_INPUT(hmc_dsf_k54, integer, 0)
INPUT_INPUT(hmc_dsf_k61, integer, 0)
INPUT_INPUT(hmc_dsf_k62, integer, 0)
INPUT_INPUT(hmc_dsf_k63, integer, 0)
INPUT_INPUT(hmc_dsf_k64, integer, 0)

INPUT_INPUT(hmc_dsd,  integer, 0)
INPUT_INPUT(hmc_dsg,  integer, 0)
INPUT_INPUT(hmc_dsig, integer, 0)

INPUT_INPUT(solver_rest_md, character(para_len), "1e-8")
INPUT_INPUT(solver_rest_cg_ritz, character(para_len), "1e-8")
INPUT_INPUT(solver_rest_domain_mc,  character(para_len), "1e-10")
INPUT_INPUT(solver_rest_domain_md,  character(para_len), "1e-10")
INPUT_INPUT(solver_rest_domain_sap, character(para_len), "1e-3")
INPUT_INPUT(solver_rest_domain_def, character(para_len), "1e-10")
INPUT_INPUT(solver_stopping_criterion, integer, 1)
INPUT_INPUT(solver_outer_solver,  character(para_len), "cg")
INPUT_INPUT(solver_inner_solver,  character(para_len), "cg")
INPUT_INPUT(solver_outer_steps, integer, 20)

INPUT_INPUT(solver_defsapgcr_nkv, integer, 16)
INPUT_INPUT(solver_defsapgcr_nsp, integer, 8)
INPUT_INPUT(solver_numkrylov_mtdmtdd, integer, 10)
INPUT_INPUT(solver_numdefvec_mtdmtdd, integer, 0)

INPUT_INPUT(solver_gcrodr_numarstep, integer, 10)
INPUT_INPUT(solver_gcrodr_numdefvec, integer, 5)


INPUT_INPUT(fullsolver,  character(para_len), "eo")
INPUT_INPUT(mtilsolver,  character(para_len), "CGN")

INPUT_INPUT(measure_minmax, integer, 0)
INPUT_INPUT(measure_hadspec, FILENAME, "")
INPUT_INPUT(measure_only, integer, 0)
INPUT_INPUT(measure_start_traj, integer, 0)

INPUT_INPUT(boundary_sf, integer, 0)
INPUT_INPUT(nonactivelink, integer, 0)
INPUT_INPUT(tuning_approx_range, integer, 0)
INPUT_INPUT(tuning_approx_range_list, FILENAME, "")
INPUT_INPUT(tuning_fraction_tolerance, FILENAME, "")

INPUT_INPUT(replay_trick_ntau, integer, 0)
INPUT_INPUT(replay_trick_threshold, character(para_len), "1.0")

INPUT_INPUT(multi_shift_block_cg_qr, integer, 0)


INPUT_INPUT(test_multi_shift_block_cg, integer, 0)
INPUT_INPUT(test_multi_shift_block_cg_qr, integer, 0)

INPUT_INPUT(smearing_only, integer, 0)

!
! For DD solver (Andrea version)
!
INPUT_INPUT(tuning_dds_nmr, integer, 5)
INPUT_INPUT(tuning_dds_ncy, integer, 5)
INPUT_INPUT(tuning_dds_nkv, integer,16)
INPUT_INPUT(tuning_dds_ndfl,integer, 0)

INPUT_INPUT(test_kernel, integer, 0)

!
! For polynomial filtering (Taylor Haar)
!

! Polynomial orders
INPUT_INPUT(nf2_k1p1, integer, 0)
INPUT_INPUT(nf2_k2p1, integer, 0)
INPUT_INPUT(nf2_k3p1, integer, 0)
INPUT_INPUT(nf2_k4p1, integer, 0)
INPUT_INPUT(nf2_k5p1, integer, 0)
INPUT_INPUT(nf2_k6p1, integer, 0)

INPUT_INPUT(nf2_k1p2, integer, 0)
INPUT_INPUT(nf2_k2p2, integer, 0)
INPUT_INPUT(nf2_k3p2, integer, 0)
INPUT_INPUT(nf2_k4p2, integer, 0)
INPUT_INPUT(nf2_k5p2, integer, 0)
INPUT_INPUT(nf2_k6p2, integer, 0)

INPUT_INPUT(nf2_k1p3, integer, 0)
INPUT_INPUT(nf2_k2p3, integer, 0)
INPUT_INPUT(nf2_k3p3, integer, 0)
INPUT_INPUT(nf2_k4p3, integer, 0)
INPUT_INPUT(nf2_k5p3, integer, 0)
INPUT_INPUT(nf2_k6p3, integer, 0)

! mu and nu parameters
INPUT_INPUT(nf2_k1_mu, real(8), 0)
INPUT_INPUT(nf2_k2_mu, real(8), 0)
INPUT_INPUT(nf2_k3_mu, real(8), 0)
INPUT_INPUT(nf2_k4_mu, real(8), 0)
INPUT_INPUT(nf2_k5_mu, real(8), 0)
INPUT_INPUT(nf2_k6_mu, real(8), 0)
INPUT_INPUT(nf2_k1_nu, real(8), 0)
INPUT_INPUT(nf2_k2_nu, real(8), 0)
INPUT_INPUT(nf2_k3_nu, real(8), 0)
INPUT_INPUT(nf2_k4_nu, real(8), 0)
INPUT_INPUT(nf2_k5_nu, real(8), 0)
INPUT_INPUT(nf2_k6_nu, real(8), 0)

! Time scale specification
INPUT_INPUT(hmc_dsfp_k11, integer, 0)
INPUT_INPUT(hmc_dsfp_k21, integer, 0)
INPUT_INPUT(hmc_dsfp_k31, integer, 0)
INPUT_INPUT(hmc_dsfp_k41, integer, 0)
INPUT_INPUT(hmc_dsfp_k51, integer, 0)
INPUT_INPUT(hmc_dsfp_k61, integer, 0)

INPUT_INPUT(hmc_dsfp_k12, integer, 0)
INPUT_INPUT(hmc_dsfp_k22, integer, 0)
INPUT_INPUT(hmc_dsfp_k32, integer, 0)
INPUT_INPUT(hmc_dsfp_k42, integer, 0)
INPUT_INPUT(hmc_dsfp_k52, integer, 0)
INPUT_INPUT(hmc_dsfp_k62, integer, 0)

INPUT_INPUT(hmc_dsfp_k13, integer, 0)
INPUT_INPUT(hmc_dsfp_k23, integer, 0)
INPUT_INPUT(hmc_dsfp_k33, integer, 0)
INPUT_INPUT(hmc_dsfp_k43, integer, 0)
INPUT_INPUT(hmc_dsfp_k53, integer, 0)
INPUT_INPUT(hmc_dsfp_k63, integer, 0)

! Toggles which inversion method to use for polynomial-filtered HMC
! See fermi/f_action/dsf_poly.F90 for details
INPUT_INPUT(solver_cg_poly, integer, 0)

! RHMC with PFHMC keywords
INPUT_INPUT(nf1_k1p1, integer, 0)
INPUT_INPUT(nf1_k2p1, integer, 0)
INPUT_INPUT(nf1_k3p1, integer, 0)
INPUT_INPUT(nf1_k4p1, integer, 0)
INPUT_INPUT(nf1_k5p1, integer, 0)
INPUT_INPUT(nf1_k6p1, integer, 0)

INPUT_INPUT(hmc_dsfr_k1p1, integer, 0)
INPUT_INPUT(hmc_dsfr_k2p1, integer, 0)
INPUT_INPUT(hmc_dsfr_k3p1, integer, 0)
INPUT_INPUT(hmc_dsfr_k4p1, integer, 0)
INPUT_INPUT(hmc_dsfr_k5p1, integer, 0)
INPUT_INPUT(hmc_dsfr_k6p1, integer, 0)

INPUT_INPUT(hmc_dsfr_k1p2, integer, 0)
INPUT_INPUT(hmc_dsfr_k2p2, integer, 0)
INPUT_INPUT(hmc_dsfr_k3p2, integer, 0)
INPUT_INPUT(hmc_dsfr_k4p2, integer, 0)
INPUT_INPUT(hmc_dsfr_k5p2, integer, 0)
INPUT_INPUT(hmc_dsfr_k6p2, integer, 0)

INPUT_INPUT(hmc_dsfr_k1p3, integer, 0)
INPUT_INPUT(hmc_dsfr_k2p3, integer, 0)
INPUT_INPUT(hmc_dsfr_k3p3, integer, 0)
INPUT_INPUT(hmc_dsfr_k4p3, integer, 0)
INPUT_INPUT(hmc_dsfr_k5p3, integer, 0)
INPUT_INPUT(hmc_dsfr_k6p3, integer, 0)

! Generalized integrator switch
! If /= 0, interprets 'mscale' keywords as absolute step counts
INPUT_INPUT(hmc_genint, integer, 0)

! Zolotarev approximation usage switch
INPUT_INPUT(hmc_zolo, integer, 0)

! Zolotarev approximation parameters
INPUT_INPUT(hmc_zolo_n, integer, 0)
INPUT_INPUT(hmc_zolo_min, real(8), 0)
INPUT_INPUT(hmc_zolo_max, real(8), 0)
INPUT_INPUT(hmc_zolo_delta, real(8), 1e-6)

! Truncated ratapps
INPUT_INPUT(nf1_k1_trunc1, integer, 0)
INPUT_INPUT(nf1_k1_trunc2, integer, 0)
INPUT_INPUT(nf1_k1_trunc3, integer, 0)
INPUT_INPUT(nf1_k2_trunc1, integer, 0)
INPUT_INPUT(nf1_k2_trunc2, integer, 0)
INPUT_INPUT(nf1_k2_trunc3, integer, 0)
INPUT_INPUT(nf1_k3_trunc1, integer, 0)
INPUT_INPUT(nf1_k3_trunc2, integer, 0)
INPUT_INPUT(nf1_k3_trunc3, integer, 0)
INPUT_INPUT(nf1_k4_trunc1, integer, 0)
INPUT_INPUT(nf1_k4_trunc2, integer, 0)
INPUT_INPUT(nf1_k4_trunc3, integer, 0)
INPUT_INPUT(nf1_k5_trunc1, integer, 0)
INPUT_INPUT(nf1_k5_trunc2, integer, 0)
INPUT_INPUT(nf1_k5_trunc3, integer, 0)
INPUT_INPUT(nf1_k6_trunc1, integer, 0)
INPUT_INPUT(nf1_k6_trunc2, integer, 0)
INPUT_INPUT(nf1_k6_trunc3, integer, 0)

INPUT_INPUT(hmc_dsfr_k1t1, integer, 0)
INPUT_INPUT(hmc_dsfr_k1t2, integer, 0)
INPUT_INPUT(hmc_dsfr_k1t3, integer, 0)
INPUT_INPUT(hmc_dsfr_k2t1, integer, 0)
INPUT_INPUT(hmc_dsfr_k2t2, integer, 0)
INPUT_INPUT(hmc_dsfr_k2t3, integer, 0)
INPUT_INPUT(hmc_dsfr_k3t1, integer, 0)
INPUT_INPUT(hmc_dsfr_k3t2, integer, 0)
INPUT_INPUT(hmc_dsfr_k3t3, integer, 0)
INPUT_INPUT(hmc_dsfr_k4t1, integer, 0)
INPUT_INPUT(hmc_dsfr_k4t2, integer, 0)
INPUT_INPUT(hmc_dsfr_k4t3, integer, 0)
INPUT_INPUT(hmc_dsfr_k5t1, integer, 0)
INPUT_INPUT(hmc_dsfr_k5t2, integer, 0)
INPUT_INPUT(hmc_dsfr_k5t3, integer, 0)
INPUT_INPUT(hmc_dsfr_k6t1, integer, 0)
INPUT_INPUT(hmc_dsfr_k6t2, integer, 0)
INPUT_INPUT(hmc_dsfr_k6t3, integer, 0)

! Rescale RHMC?
INPUT_INPUT(rescale_rhmc, integer, 1)

! Polynomial filter files for double flavour runs
INPUT_INPUT(nf2_k1p1file, FILENAME, "")
INPUT_INPUT(nf2_k2p1file, FILENAME, "")
INPUT_INPUT(nf2_k3p1file, FILENAME, "")
INPUT_INPUT(nf2_k4p1file, FILENAME, "")
INPUT_INPUT(nf2_k5p1file, FILENAME, "")
INPUT_INPUT(nf2_k6p1file, FILENAME, "")

INPUT_INPUT(nf2_k1p2file, FILENAME, "")
INPUT_INPUT(nf2_k2p2file, FILENAME, "")
INPUT_INPUT(nf2_k3p2file, FILENAME, "")
INPUT_INPUT(nf2_k4p2file, FILENAME, "")
INPUT_INPUT(nf2_k5p2file, FILENAME, "")
INPUT_INPUT(nf2_k6p2file, FILENAME, "")

INPUT_INPUT(nf2_k1p3file, FILENAME, "")
INPUT_INPUT(nf2_k2p3file, FILENAME, "")
INPUT_INPUT(nf2_k3p3file, FILENAME, "")
INPUT_INPUT(nf2_k4p3file, FILENAME, "")
INPUT_INPUT(nf2_k5p3file, FILENAME, "")
INPUT_INPUT(nf2_k6p3file, FILENAME, "")

! Polynomial filter files for single flavour runs
INPUT_INPUT(nf1_k1p1file, FILENAME, "")
INPUT_INPUT(nf1_k2p1file, FILENAME, "")
INPUT_INPUT(nf1_k3p1file, FILENAME, "")
INPUT_INPUT(nf1_k4p1file, FILENAME, "")
INPUT_INPUT(nf1_k5p1file, FILENAME, "")
INPUT_INPUT(nf1_k6p1file, FILENAME, "")

INPUT_INPUT(nf1_k1p2file, FILENAME, "")
INPUT_INPUT(nf1_k2p2file, FILENAME, "")
INPUT_INPUT(nf1_k3p2file, FILENAME, "")
INPUT_INPUT(nf1_k4p2file, FILENAME, "")
INPUT_INPUT(nf1_k5p2file, FILENAME, "")
INPUT_INPUT(nf1_k6p2file, FILENAME, "")

INPUT_INPUT(nf1_k1p3file, FILENAME, "")
INPUT_INPUT(nf1_k2p3file, FILENAME, "")
INPUT_INPUT(nf1_k3p3file, FILENAME, "")
INPUT_INPUT(nf1_k4p3file, FILENAME, "")
INPUT_INPUT(nf1_k5p3file, FILENAME, "")
INPUT_INPUT(nf1_k6p3file, FILENAME, "")
