Configuration file¶
The trimem configuration file follows an INI-style layout and is internally
parsed by python’s configparser module. It allows comments (also inline
comments) to be specified by both # and ;. The latter is used in the
following to indicate parameters that have meaningful default values if
omitted from the configuration file.
A verbosely commented default configuration file can be generated with the
help of the Command line interface by running mc_app config:
[GENERAL]
# algorithm to run: 'hmc', 'minimize'
algorithm = hmc
# verbosity flag
# print state information every i'th step
info = 1
# initial geometry (default: '<config-file-prefix>.stl')
;input = inp.stl
# output file prefix (default: config-file-prefix)
;output_prefix = inp
# checkpoint file prefix (default: config-file-prefix)
;restart_prefix = inp
# checkpoint frequency (default: 0; only final checkpoint)
;checkpoint_every = 0
# output format (choose from: vtu, xyz, hdmf)
output_format = vtu
[BONDS]
# type of tether potential (choose from: Edge, Area)
bond_type = Edge
# control steepness of penalty potential (must be an integer >= 1)
r = 2
# onset distance of attractive force for 'Edge'-type
# (default: 1.25 * mean edge length computed from initial geometry)
;lc0 =
# onset distance of repelling force for 'Edge'-type
# (default: 0.75 * mean edge length computed from initial geometry)
;lc1 =
# average triangle area for 'Area'-type
# (default: mean triangle area computed from initial geometry)
;a0 =
[SURFACEREPULSION]
# neighbour list algorithm (choose from: cell-list, verlet-list)
n_search = cell-list
# neighbour list cutoff
rlist = 0.1
# vertex self- and direct neighbourhood exclusion
# (choose from: 0,1,2)
# 0: exclude self
# 1: exclude directly connected vertex neighbourhood
# 2: exclude 2-link connected vertex neighbourhood
# exclusion levels are inclusive, i.e., 0<1<2.
exclusion_level = 2
# refresh neighbour lists every i'th step
# for 'algorithm = minimize' this is set to 1 internally
refresh = 1
# onset distance of repulsion force
lc1 = 0.0
# steepness of repulsion force (must be an integer >= 1)
r = 2
[ENERGY]
# Helfrich functional weight
kappa_b = 1.0
# surface area penalty weight
kappa_a = 1.0
# volume penalty weight
kappa_v = 1.0
# surface area difference penalty weight
kappa_c = 1.0
# tether penalty weight
kappa_t = 1.0
# repulsion penalty weight
kappa_r = 1.0
# target surface area fraction wrt. the initial geometry
area_fraction = 1.0
# target volume fraction wrt. the initial geometry
volume_fraction = 1.0
# target curvature fraction wrt. the initial geometry
curvature_fraction = 1.0
# time step for the parameter continuation (choose from: [0,1])
continuation_delta = 0.0
# start time for the parameter continuation (choose from: [0,1])
# should be consistent with initial geometry and the chosen
# area-/volume-/curvature-fraction
continuation_lambda = 1.0
[HMC]
# number of steps to run in the markov chain
num_steps = 10
# inital step number counters (default: {})
# if not empty it must be a stringification of a dict with keys in
# ["move", "flip"] and values giving the step count for the step-type indicated
# by the key, e.g., a value of {"move": 10, "flip": 5} would restart with a
# total step count of 15. An empty dict resets all counters.
# this can be used to control the start of simulated annealing in combination
# with 'start_cooling' uncomment and set to desired value in case; useful for
# restarting from already cooled states
;init_step = {}
# step size for time integration within the HMC-step
step_size = 1.0
# number of steps within the time integration of a HMC-step
traj_steps = 10
# mass matrix magnitude for the HMC integration
momentum_variance = 1.0
# keep every i'th step of the markov chain
thin = 10
# precentage of flips to attempt during a flip sweep (choose from: [0,1])
flip_ratio = 0.1
# flip-sweep implementation (choose from: none, serial, parallel)
flip_type = serial
# temperature (cooled down to zero with simulated annealing)
initial_temperature = 1.0
# exponential cooling factor for simulated annealing (choose >= 0)
# larger values correspond to faster cooling
cooling_factor = 1.0e-4
# start cooling at step i
# start simulated annealing for 'start_cooling > (init_step + i)'
start_cooling = 0
[MINIMIZATION]
# maximum number of iterations in the minimization
maxiter = 10
# keep every i'th iteration in the output
out_every = 0