All applications read simulation parameters, e.g. the DCA cluster, the temperature, or output filenames, from a JSON-formatted input file, in which parameters are thematically grouped and sub-grouped in JSON objects. This page provides descriptions of all input parameters including their type and default value using the format
`"name":` type (default value)
Description.
In addition, we provide a complete (including mutually exclusive groups) [sample input file](https://github.com/CompFUSE/DCA/blob/master/tools/complete_input.json).
## Output parameters
Defined in <tt>output_parameters.hpp</tt>.
**Group**`"output":`
`"directory":` string ("./")
Directory to write the output to.
`"output-format":` string ("HDF5")
File format of the output files. Options are: "HDF5" | "JSON".
`"directory-config-read":` string ("")
If not empty, the Monte Carlo configuration will be initialized with the configurations stored in this directory.
`"directory-config-write":` string ("")
If not empty, after the last Monte Carlo iteration, the configurations are written in this directory.
`"filename-dca":` string ("dca.hdf5")
Filename for the output of the application <tt>main_dca</tt>.
`"filename-analysis":` string ("analysis.hdf5")
Filename for the output of the application <tt>main_analysis</tt>.
`"filename-ed":` string ("ed.hdf5")
Filename for the ED output in the application <tt>cluster_solver_check</tt>.
`"filename-qmc":` string ("qmc.hdf5")
Filename for the QMC output in the application <tt>cluster_solver_check</tt>.
`"filename-profiling":` string ("profiling.json")
Filename for the profiling output. The file format is always JSON.
`"dump-lattice-self-energy":` boolean (false)
Write out the lattice self-energy in DCA<sup>+</sup>.
Name of the CSV file containing hopping parameters *t<sub>ij</sub>*.
`"U_ij-filename":` string ("U_ij.txt")
Name of the CSV file containing values of the Coulomb repulsion *U<sub>ij</sub>*.
#### Example
{
"material-model": {
"t_ij-filename": "NiO_t_ij.txt",
"U_ij-filename": "NiO_U_ij.txt"
}
}
## DCA parameters
Defined in <tt>dca_parameters.hpp</tt>.
**Group**`"DCA":`
`"initial-self-energy":` string ("zero")
Either the name of the file with the initial self-energy (usually the <tt>main_dca</tt> output file of the previous temperature) or "zero" indicating that the initial self-energy should be zero.
`"iterations":` integer (1)
Number of DCA<sup>(+)</sup> iterations.
`"accuracy"`: double (0.)
Stop the DCA<sup>(+)</sup> loop if this accuracy has been reached.
`"self-energy-mixing-factor":` double (1.)
Σ<sup>(n)</sup> = αΣ<sup>(n)</sup><sub>QMC</sub> + (1-α)Σ<sup>(n-1)</sup><sub>coarsegrained</sub>, where α is the self-energy mixing factor.
`"interacting-orbitals":` array of integers ([0])
Indices of orbitals that are treated interacting.
Note that this parameter must be consistent with the model that is used.
`"do-finite-size-QMC":` boolean (false)
Do a finite-size QMC calculation (no mean-field).
<br></br>
**Subgroup**`"coarse-graining":`
`"k-mesh-recursion":` integer (0)
Number of recursion steps in the creation of the momentum space mesh.
See the appendix of [1] for details.
`"periods":` integer (0)
Number of "periods" of the interlaced coarse-graining patches, i.e. degree of their interleaving.
Restricted by *k-mesh-recursion*. See the appendix of [1] for details.
`"quadrature-rule":` integer (1)
Determines the quadrature rule used in the coarse-graining.
quadrature-rule < 0: use a flat mesh.
quadrature-rule >= 0: use the Grundmann-Moeller rule of index = *quadrature-rule*. A rule of index *s* is exact for polynomials up to order 2*s*+1 [2].
`"threads":` integer (1)
Number of threads used in the coarse-graining.
`"tail-frequencies":` integer (0)
Number of tail frequencies used for updating the chemical potential.
<br></br>
**Subgroup**`"DCA+":`
`"do-DCA+"`: boolean (false)
Use the DCA<sup>+</sup> algorithm with a continuous lattice self-energy.
`"deconvolution-iterations":` integer (16)
Maximum number of iterations in the deconvolution step.
`"deconvolution-tolerance":` double (1.e-3)
Termination criteria for the deconvolution step.
`"HTS-approximation":` boolean (false)
Use high-temperature series approximation for lattice mapping.
`"HTS-threads": ` integer (1)
Number of threads used in the HTS-solver.
#### Example
{
"DCA": {
"initial-self-energy": "./T=0.5/dca.hdf5",
"iterations": 3,
"accuracy": 1.e-3,
"self-energy-mixing-factor": 0.5,
"interacting-orbitals": [0],
"do-finite-size-QMC": false,
"coarse-graining": {
"k-mesh-recursion": 3,
"periods": 2,
"quadrature-rule": 1,
"threads": 8,
"tail-frequencies": 10
},
"DCA+": {
"do-DCA+": true,
"deconvolution-iterations": 16,
"deconvolution-tolerance": 1.e-3,
"HTS-approximation": true,
"HTS-threads": 8
}
}
}
## Domains parameters
Defined in <tt>domains_parameters.hpp</tt>.
**Group**`"domains":`
<br></br>
**Subgroup**`"real-space-grids":`
`"cluster":` array of arrays of integers (lattice basis, e.g. in 2D: [ [1, 0], [0, 1] ])
Real space DCA cluster.
Given as coordinates with respect to the lattice basis.
To choose a cluster of a given size, consult this [exhaustive list](https://github.com/CompFUSE/DCA/blob/master/tools/cluster_definitions.txt) of 2D and 3D clusters.
`"sp-host":` array of arrays of integers (lattice basis, e.g. in 2D: [ [1, 0], [0, 1] ])
Real space host grid for single-particle functions, also called *(sp-)lattice*.
In addition, it is used in the coarse-graining step of **both DCA and DCA<sup>+</sup>** as the grid for the free dispersion relation ε<sub>**k**</sub>.
Given as coordinates with respect to the lattice basis.
`"tp-host":` array of arrays of integers (lattice basis, e.g. in 2D: [ [1, 0], [0, 1] ])
Real space host grid for two-particle functions, also called *tp-lattice*. Only used in **DCA<sup>+</sup>**.
Given as coordinates with respect to the lattice basis.
<br></br>
**Subgroup**`"imaginary-time":`
`"sp-time-intervals":` integer (128)
Used to initialize <tt>time_domain</tt>, whose elements are
Used to initialize <tt>vertex_time_domain<TP_TIME_DOMAIN></tt> and <tt>vertex_time_domain<TP_TIME_DOMAIN_POSITIVE></tt>, where the latter is the domain for additional time measurements.
<br></br>
**Subgroup**`"imaginary-frequency"`
`"sp-fermionic-frequencies":` integer (256)
Number of positive and negative fermionic Matsubara frequencies, respectively.
Used to initialize <tt>frequency_domain</tt>, whose elements are (*n* = sp-fermionic-frequencies)
Used to initialize <tt>vertex_frequency_domain<COMPACT/COMPACT_POSITIVE/EXTENDED/EXTENDED_POSITIVE></tt>, that is the fermionic Matsubara frequency mesh for measuring four-point quantities.
<br></br>
**Subgroup**`"real-frequency":`
`"min":` double (-10.)
`"max":` double (10.)
`"frequencies":` integer (3)
Parameters for the initialization of <tt>frequency_domain_real_axis</tt>:
When this mode is activated, each thread will run an instance of a walker and an accumulator. This parameter is ignored if the numbers of walkers and accumulators are different.\
`"fix-meas-per-walker":` boolean(false)\
The number of sweeps performed by each walker is fixed a priori, avoiding possible bias in the sampling of faster walkers.
#### Example
{
"Monte-Carlo-integration": {
"seed": 42,
"warm-up-sweeps": 40,
"sweeps-per-measurement": 4.,
"measurements": 1000000,
"error-computation-type": "JACK_KNIFE",
"threaded-solver": {
"walkers": 3,
"accumulators": 5,
"shared-walk-and-accumulation-thread": false
}
}
}
## Monte Carlo solver parameters
Defined in <tt>mc_solver_parameters.hpp</tt>.
The following parameter groups are *mutually exclusive*.
### CT-AUX
**Group**`"CT-AUX":`
Used if *CT-AUX* is selected as the cluster solver.
`"expansion-parameter-K":` double (1.)
The perturbation order in the CT-AUX algorithm increases linearly with the expansion parameter *K*.
While *K* is only subject to the restriction of being positive, values of the order of 1 have proven to be a good choice [3].
`"initial-configuration-size":` integer (10)
The CT-AUX solver is initialized with `"initial-configuration-size"` random **interacting** vertices.
`"initial-matrix-size":` integer (128)
Initial size of the CT-AUX matrices.
`"max-submatrix-size":` integer (128)
Maximum number of single spin updates per submatrix update (see [4]).
`"neglect-Bennett-updates":` boolean (false)
Neglect the two types of Bennett updates:
1. removal of an *interacting* spin that has already been proposed for removal,
2. removal of a *non-interacting* spin that has been proposed for insertion.
Turning on this option leads to a larger number of delayed spins (~`"max-submatrix-size"`) at the cost of a systematic error due to the violation of detailed balance.
`"additional-time-measurements":` boolean (false)
Do additional time measurements.
#### Example
{
"CT-AUX": {
"expansion-parameter-K": 1.,
"initial-configuration-size": 100,
"initial-matrix-size": 128,
"max-submatrix-size": 64,
"neglect-Bennett-updates": true,
"additional-time-measurements": true
}
}
### CT-HYB
**Group**`"SS-CT-HYB":`
Used if *SS-CT-HYB* is selected as the cluster solver.
`"self-energy-tail-cutoff":` integer (0)
Cut-off parameter for imaginary frequency tail of self-energy.
`"momentum-transfer":` array of doubles (null vector with the dimension of the lattice, e.g. for a 2D lattice: [0., 0.])
Transferred momentum **q**.
Must be an element of the reciprocal lattice of the DCA cluster (|| **q** - **K**<sub>DCA</sub> ||<sub>2</sub><10<sup>-3</sup>).
`"frequency-transfer":` integer (0)
Transferred frequency ω.
Given as the index *n* of the bosonic Matsubara frequency ω<sub>*n*</sub> = 2*n*π/β.
`"compute-all-transfers":` boolean (false)\
When this mode is activated all possible positive frequency transfers, up to and including the transfer with index "frequency-transfer". All possible momentum transfers will be computed as well, ignoring the parameter "momentum-transfer".
#### Example
{
"four-point": {
"type": "PARTICLE_PARTICLE_UP_DOWN",
"momentum-transfer": [0., 0.],
"frequency-transfer": 0,
"compute-all-transfers": false
}
}
## Analysis parameters
Defined in <tt>analysis_parameters.hpp</tt>.
**Group**`"analysis":`
`"symmetrize-Gamma":` boolean (true)
Symmetrize Γ<sub>cluster</sub> and Γ<sub>lattice</sub> according to the symmetry group and diagrammatic symmetries.
`"Gamma-deconvolution-cut-off":` double (0.5)
Cut-off parameter for the deconvolution of the vertex Γ(**K**<sub>1</sub>, **K**<sub>2</sub>).
The deconvolution is done by Fourier transforming to real space, dividing by the coarse-graining patch functions in real space φ(**r**) and then transforming back to reciprocal space. The real space patch functions are only inverted down to the value of this parameter,
φ<sup>-1</sup><sub>cut-off</sub>(**r**) = φ<sup>-1</sup>(**r**), if φ(**r**) > *Gamma-deconvolution-cut-off*,