Output Files
The outputs for each calculation are stored in output .csv files produced by each engine. The output directory is determined based on the provided inputs. Here, we explain the general output structure for each simulator.
Output Directory Structure
The top-level output folder is the value provided for the 'root_folder' parameter input. This must exist for the simulation to proceed. In this directory, another folder is created to contain the outputs, the name of which can be specified using the 'output_folder_name' parameter. If no 'output_folder_name' is specified, the datetime stamp of the run is used to name this folder.
A tab-delimited input file for each simulator engine (written by the preprocessor) is stored in this output folder, alongside the output folders for each parameter set simulation. The directories corresponding to each parameter set can be named by specifying the uuid field in the input settings. If no uuids are provided, a unique ID is generated by the preprocessor. This simulation output folder will also contain any global logs and C++ build directories. The following tree diagram exhibits two different simulation output folders (named 'output_folder_1' and 'output_folder_2').
root_folder/
├── output_folder_1/
│ ├── inputs.txt
│ ├── global.log
│ └── build/
│ └── uuid_1/
│ └── uuid_2/
├── output_folder_2/
│ ├── inputs.txt
│ └── uuid_1/
│ └── uuid_2/
│ └── uuid_3/
Exact Diagonalization Outputs
As can be seen from the example above, the contents of the simulation output folder depend on the simulator engine being used. Here, we describe the outputs for exact diagonalization calculations. Inside the parameter set output folder (exemplified by 'uuid_1', 'uuid_2' and 'uuid_3' in the above diagram), ED calculations will create a directory titled 'ed_output'. This folder will contain the files 'eigenvectors.csv' and 'energies.csv'. The 'eigenvectors.csv' file will contain each of the eigenvectors from the ED calculation. Each column will represent a single eigenvector: \(|E_i\rangle\) for the column \(i\). The rows will correspond to the overlaps of these eigenvectors with the \(S_z\) basis: \(c_i^j = \langle \{\sigma\}_j | E_i \rangle\) where \(j\) is the row number and \(\{\sigma\}_j\) is the bitstring corresponding to the integer \(j\).
The following tree diagram shows the output folder structure for an ED calculation with two parameter sets:
root_folder/
└── output_folder/
└── inputs.txt
└── uuid_1/
├── J_ij_file.csv
└── ed_output/
├── eigenvectors.csv
├── energies.csv
└── uuid_2/
├── J_ij_file.csv
└── ed_output/
├── eigenvectors.csv
├── energies.csv
Nearest Neighbor Quantum Monte Carlo Outputs
For nearest neighbor QMC, the output folder structure is very similar to ED. Following is a tree diagram showing the output structure of a nearest-neighbor QMC calculation:
root_folder/
└── output_folder/
└── inputs.txt
└── uuid_1/
├── simulation_specs.txt
└── qmc_output/
├── estimators.csv
├── final_spin_configurations.csv
└── uuid_2/
├── simulation_specs.txt
└── qmc_output/
├── estimators.csv
├── final_spin_configurations.csv
The 'simulation_specs.txt' is a tab-delimited file generated by the simulator engine that describes the parameter set configuration being used to simulate the system. This is useful for debugging and also for quickly determining the parameter set if the uuid was generated by the preprocessor.
The 'qmc_output' folder contains the 'estimators.csv' file and the 'final_spin_configurations.csv' file. The former stores the estimator value for each simulation steps. Currently, we support the energy and magnetization estimators for nearest-neighbor QMC. The 'final_spin_configurations.csv' file stores the value of each site in the lattice (up or down) at the final simulation step.
Long Range Quantum Monte Carlo Outputs
For long range QMC, we also need to produce probability tables required for the Monte Carlo sampling. Moreover, the long range QMC simulator calls a C++ engine. Therefore, the build files associated with the calculation are also stored in the output folder (for the sake of quantitative reproducibility which can be instrumental for debugging and benchmarking). Finally, the C++ program creates extensive logs of the calculation. These are useful for tracking long calculations as they proceed.
The following tree diagram represents the output folder structure for long range QMC simulations:
root_folder/
└── output_folder/
└── inputs.txt
└── global.log
└── uuid_1/
├── parameter_set.log
├── simulation_specs.txt
└── probability_densities/
├── geometry.csv
├── max_over_states.csv
├── vertex_weights.csv
├── diag_probs.csv
├── off_diag_table.csv
└── qmc_output/
├── estimators.csv
├── spin_configurations.csv
└── build/
The 'global.log' file contains the global logs generated by the C++ program as it reads the input file and validates the inputs. The 'parameter_set.log' file contains the logs corresponding to the QMC calculation associated with the specific parameter set associated with 'uuid_1'.
The 'simulation_specs.txt' is a tab-delimited file generated by the C++ program that describes the parameter set configuration being used to simulate the system. This is useful for debugging and also for quickly determining the parameter set if the uuid was generated by the preprocessor.
The QMC estimator outputs are saved to the 'estimators.csv' file. Currently, the supported estimators are the equilibrium energy, magnetization and spin stiffness for long range QMC. The QMC shot data for each simulation step is stored in the 'spin_configurations.csv' file.
The probability_densities folder contains the probability tables generated by the preprocessor. These are used by the QMC calculation and the tables produced depend on the sampling type selected for the calculation. For deterministic loops, 'vertex_weights.csv', 'diag_probs.csv' and 'off_diag_table.csv' are not generated.