-
The files
Pauli.cc
andPauli.h
contain the implementation of the vectorization for spin-1/2 systems, that is the representation of the many-body density matrix using an MPS. It is specific to 2-level systems (qubits), but not specific the special form of the Lindbadian of the specific model to be studied. It makes use of a few low-level routines of the iTensor library. Remark: The identity matrix plus the three Pauli matrices form a convenient basis of the the space of density matrices of one qubit, hence the name of these two files. -
lindbladmpo.cc
: Contains the main() function. This is where the initial state is constructed (the way the initial state is defined depends on the input parameters), and where the loop over the time steps is defined. It is also where the observables of interests are computed, and the input and outputs (prints to the standard output, to the log file, computed observables and global quantities, and the final saved state if requested) are handled. The possible initial states are documented in the API documentation. -
lindbladian.h
: This is the place where the Lindbladian super-operator of the specific model to be simulated is defined. It first takes the form of anautoMPO
object of the iTensor library. Thanks to the use of the iTensor library, the terms in the Lindbladian can be defined in a simple way (using Pauli operators and products of such operators), almost as if one were writing them with pen and paper. The terms in the Lindbladian which correspond to the unitary (Hamiltonian) part of the time evolution are added to the AddSingleSpinBath by letting these terms acting once on the left of the density matrix, and once (with opposite sign) to the right of the density matrix. The non-unitary part of the evolution (parameterized byg_0
,g_1
andg_2
) is added to the Lindabladian super-operator by a call toAddSingleSpinBath
(a function defined inPauli.cc
). -
ModelParameters.h
: Defines the parameters which are specific to the model to be simulated. These parameters are couples of the type "name" / "value" (values are floating point numbers, integers, strings, or vectors thereof). Their values can be defined in the command-line when calling the executable. Example./lindbladmpo param1 val1 param2 val2
. Each parameter not specified in the command line will take its default value. The default values are defined in this file as well. The same arguments can also be specified using an input file. Example:./lindbladmpo input_file in.txt
where the filein.txt
contains separate lines of the formparam1 = val1
etc. -
SimulationParameters.h
: Defines the parameters that are specific to the MPS/MPO simulation method, and in particular about the wanted level of accuracy (maximum truncation, maximum bond dimension, etc.) -
SimpleSquareLattice.h
: Contains a basic class to encode the spatial geometry of the system (a lattice). In the present version it can handle predefined one-dimensional chain, or a square lattice with cylindrical boundary conditions. Similar classes could be created to handle other geometries and other lattices, and an arbitrary connectivity is also supported. -
TimeEvolution.h
andTimeEvolution.cc
: Contain theTimeEvolver
class, which stores the parameters associated to a single time step evolution of the density matrix. An important parameter is for instance the lengthtau
of one time step. ATimeEvolver
also contains other parameters associated to the approximations (truncations, etc.) to be made when applying such the time evolution operator (which is an MPO) to a given density matrix. TheTimeEvolver
class is independent of the details of the specific model to be studied. The actual time-evolution is coded inTimeEvolution.cc
: the methodevolve
takes a density matrix as an input [it is an iTensor MPS], an updates it 'in place' by the evolved one. Different Trotter orders are available. At order o=2 the error made at each time state is O(tau^3). At order o=3 the error made at each time state is O(tau^4.). At order o=4 the error made at each time state is O(tau^5). -
io_util.h
: Small and simple methods for inputs and outputs (not specific to this type of simulations). It contains the classParameters
, which is used to handle a set of input parameters (each one being a pair "name" / "value") defined from a acommand line. -
mps_mpo_utils.h
andmps_mpo_utils.h
: Basic but useful general methods for MPS and MPO (not specific to density matrices nor dissipative systems).