Base.@kwdef mutable struct PhysicalParameters
# gauge parameters
L::NTuple{4,Int64} = (4, 4, 4, 4)
beta::Float64 = 5.7
NC::Int64 = 3
gauge_action::String = "wilson"
numprocs_cart::NTuple{4,Int64} = (1, 1, 1, 1)
halo_width::Int64 = 0
numtherm::Int64 = 10
numsteps::Int64 = 100
inital::String = "cold"
update_method::String = "HMC"
hb_maxit::Int64 = 10^5
numheatbath::Int64 = 4
metro_epsilon::Float64 = 0.1
metro_numhits::Int64 = 1
metro_target_acc::Float64 = 0.5
eo::Bool = true
or_algorithm::String = "subgroups"
numorelax::Int64 = 0
parity_update::Bool = false
end
Base.@kwdef mutable struct DynamicalFermionParameters
fermion_action::String = "none"
Nf::Union{Int,Vector{Int}} = 0
mass::Union{Float64,Vector{Float64}} = 0.0
wilson_r::Float64 = 1.0
wilson_csw::Float64 = 0.0
boundary_condition::String = "antiperiodic"
cg_tol_action::Float64 = 1e-12
cg_tol_md::Float64 = 1e-14
cg_maxiters_action::Int64 = 1000
cg_maxiters_md::Int64 = 1000
rhmc_spectral_bound::NTuple{2,Float64} = (0.0, 64.0)
rhmc_recalc_spectral_bound::Bool = false
rhmc_order_action::Int64 = 15
rhmc_order_md::Int64 = 10
rhmc_prec_action::Int64 = 42
rhmc_prec_md::Int64 = 42
eo_precon::Bool = false
end
Base.@kwdef mutable struct BiasParameters
kind_of_bias::String = "none"
kind_of_cv::String = "clover"
numsmears_for_cv::Int64 = 4
rhostout_for_cv::Float64 = 0.125
is_static::Union{Bool,Vector{Bool}} = false
symmetric::Bool = false
stride::Int64 = 1
cvlims::NTuple{2,Float64} = (-7, 7)
biasfactor::Float64 = Inf
kinds_of_weights::Vector{String} = ["tiwari"]
usebiases::Vector{String} = [""]
write_bias_every::Int64 = 1
starting_Q::Union{Nothing,Vector{Int64}} = nothing
# metadynamics specific
bin_width::Float64 = 1e-2
meta_weight::Float64 = 1e-3
penalty_weight::Float64 = 1000.0
# opes specific
explore::Bool = false
barrier::Float64 = 0.0
sigma0::Float64 = 0.1
sigma_min::Float64 = 1e-6
fixed_sigma::Bool = false
no_Z::Bool = false
opes_epsilon::Float64 = 0.0
threshold::Float64 = 1.0
cutoff::Float64 = 0.0
# for parametric
bias_Q::Float64 = 0.0
bias_A::Float64 = 0.0
bias_Z::Float64 = 0.0
# tempering specific
tempering_enabled::Bool = false
numinstances::Int64 = 1
swap_every::Int64 = 1
non_metadynamics_updates::Int64 = 1
measure_on_all::Bool = false
end
Base.@kwdef mutable struct HMCParameters
hmc_trajectory::Float64 = 1
hmc_steps::Int64 = 10
hmc_friction::Float64 = 0.0
hmc_integrator::String = "Leapfrog"
hmc_rafriction::Float64 = 0.0
hmc_numsmear_gauge::Int64 = 0
hmc_numsmear_fermion::Int64 = 0
hmc_rhostout_gauge::Float64 = 0.0
hmc_rhostout_fermion::Float64 = 0.0
hmc_logging::Bool = true
end
Base.@kwdef mutable struct GradientFlowParameters
flow_integrator::String = "none"
flow_num::Int64 = 0
flow_tf::Float64 = 0.0
flow_steps::Int64 = 0
flow_measure_every::Union{Int64,Vector{Int64}} = 1
end
Base.@kwdef mutable struct SystemParameters
backend::String = "cpu"
float_type::String = "float64"
ensemble_dir::String = ""
log_to_console::Bool = true
verboselevel::Int64 = 1
save_config_format::String = ""
save_config_every::Int64 = 0
save_checkpoint_format::String = ""
save_checkpoint_every::Int64 = 0
load_config_fromfile::Bool = false
load_config_format::String = ""
load_config_path::String = ""
load_checkpoint_fromfile::Bool = false
load_checkpoint_format::String = "jld2"
load_checkpoint_path::String = ""
randomseed::Union{UInt64,Vector{UInt64}} = 0x0000000000000000
overwrite::Bool = false
end
Base.@kwdef mutable struct MeasurementParameters
measurement_method::Vector{Dict} = Dict[]
end