Classes |
Public Member Functions |
Private Types |
Private Member Functions |
Private Attributes |
List of all members
DMRGBlockContainer< Block, Hamiltonian > Class Template Reference
Detailed Description
template<class Block, class Hamiltonian>
class DMRGBlockContainer< Block, Hamiltonian >
Contains and manipulates the system and environment blocks used in a single DMRG run.
| Command line argument | Description |
|---|---|
-mstates [int] | The number of states kept during the warmup stage (default: 0) |
or -mwarmup [int] | |
-nsweeps [int] | The number of sweeps to perform using the same number of states as the warmup |
-msweeps [int],[int],... | An array of the number of kept states \(m\) for each sweep (default: None) |
-maxnsweeps [int],[int],... | An array of the maximum number of sweeps for each \(m\) (default: 1) |
-verbose [bool] | An array of the maximum number of sweeps for each \(m\) (default: 1) |
-dry_run [bool] | Do not execute the warmup and sweep stages. This can be used for testing if the correct command line arguments were given. |
-do_save_prealloc [bool] | Save the preallocation data on a file in DATA_DIR |
-do_shell [bool] | Use a SHELL matrix or matrix-free approach for the superblock Hamiltonian (default: true) |
-scratch_dir [string] | Specify the scratch directory (default: ./scratch_dir) |
-data_dir [string] | Specify the data directory (default: ./data_dir) |
-restart_dir <string> | Path to the restart directory, typically the SCRATCH_DIR of the previous run |
-restart_options <bool> | Whether to continue the sweep parameters of the previous run (default: false) |
-rot_nsubcomm <int> | The number of subcommunicators to use for the rotation of operator matrices. This has to be a number that exactly divides the total size of PETSC_COMM_WORLD communicator. |
- See also
- Options regarding the Hamiltonian and geometry can be found at the Hamiltonians::J1J2XXZModel_SquareLattice documentation
Definition at line 166 of file DMRGBlockContainer.hpp.
#include <DMRGBlockContainer.hpp>
Classes | |
| struct | BasisTransformation |
| Context struct for results of the basis transformation that may be useful in solving the correlators. More... | |
| struct | Correlator |
| Describes an n-point correlator whose expectation value will be measured at the end of each sweep. More... | |
| struct | StepData |
| Storage for basic data to be saved corresponding to a call of SingleDMRGStep() More... | |
| struct | TimingsData |
| Storage for timings to be saved corresponding to a call of SingleDMRGStep() More... | |
Public Member Functions | |
| DMRGBlockContainer (const MPI_Comm &mpi_comm) | |
| The constructor only takes in the MPI communicator; Initialize() has to be called explicitly next. More... | |
| ~DMRGBlockContainer () | |
| Calls the Destroy() method and deallocates container object. More... | |
| PetscErrorCode | Initialize () |
| Initializes the container object with blocks of one site on each of the system and environment. More... | |
| PetscErrorCode | Destroy () |
| Destroys the container object. More... | |
| PetscErrorCode | SetUpCorrelation (const std::vector< Op > &OpList, const std::string &name, const std::string &desc) |
| Sets up measurement of correlation functions at the end of each sweep. More... | |
| PetscErrorCode | Warmup () |
| Performs the warmup stage of DMRG or loads blocks for the restart stage. More... | |
| PetscErrorCode | Sweeps () |
| Performs the sweep stage of DMRG. More... | |
| PetscErrorCode | SingleSweep (const PetscInt &MStates, const PetscInt &MinBlock=PETSC_DEFAULT) |
| Performs a single sweep from center to right, and back to center. More... | |
| const Block & | SysBlock (const PetscInt &BlockIdx) const |
| Accesses the specified system block. More... | |
| const Block & | EnvBlock (const PetscInt &BlockIdx) const |
| Accesses the specified environment block. More... | |
| const Block & | EnvBlock () const |
| Accesses the 0th environment block. More... | |
| PetscInt | NumSites () const |
| Returns that number of sites recorded in the Hamiltonian object. More... | |
| PetscBool | Verbose () const |
| Returns whether verbose printing is active. More... | |
| const Hamiltonian & | HamiltonianRef () const |
| Const reference to the Hamiltonian object for extracting its parameters. More... | |
Private Types | |
| enum | Block_t { BlockSys = 0, BlockEnv = 1 } |
| Provides an alias of Side_t to follow the Sys-Env convention. More... | |
| enum | Step_t { WarmupStep, SweepStep, NullStep =-1 } |
| Lists the types of steps that can be performed. More... | |
| enum | SweepMode_t { SWEEP_MODE_NULL, SWEEP_MODE_NSWEEPS, SWEEP_MODE_MSWEEPS, SWEEP_MODE_TOLERANCE_TEST } |
| Determines the type of sweep to be performed. More... | |
Private Member Functions | |
| PetscErrorCode | SingleDMRGStep (Block &SysBlock, Block &EnvBlock, const PetscInt &MStates, Block &SysBlockOut, Block &EnvBlockOut, PetscBool do_measurements=PETSC_FALSE) |
| Performs a single DMRG iteration taking in a system and environment block, adding one site to each and performing a truncation to at most MStates. More... | |
| PetscErrorCode | GetTruncation (const KronBlocks_t &KronBlocks, const Vec &gsv_r, const PetscInt &MStates, BasisTransformation &BT_L, BasisTransformation &BT_R) |
| Obtain the rotation matrix for the truncation step from the ground state vector. More... | |
| PetscErrorCode | EigRDM_BlockDiag (const Mat &matin, const PetscInt &seqIdx, const PetscInt &blkIdx, std::vector< Eigen_t > &eigList, EPS &eps) |
| Obtain the eigenspectrum of a diagonal block of the reduced density matrix through an interface to a lapack routine. More... | |
| PetscErrorCode | FillRotation_BlockDiag (const std::vector< Eigen_t > &eigen_list, const std::vector< EPS > &eps_list, const std::vector< Vec > &rdmd_vecs, const Block &BlockRef, Mat &RotMatT) |
| Fills the rotation matrix assumming that the reduced density matrix has a block diagonal structure. More... | |
| PetscErrorCode | CalculateCorrelations_BlockDiag (KronBlocks_t &KronBlocks, const Vec &gsv_r, const BasisTransformation &BT, const PetscBool flg=PETSC_TRUE) |
| Calculates the correlation functions. More... | |
| PetscErrorCode | CalculateOperatorProducts (const MPI_Comm &comm_in, const std::vector< Correlator > &Corr, const Block_t &BlockType, Block &BlockRef, std::map< std::string, Mat > &OpMats, std::vector< Mat > &AllOpProds, std::vector< Mat > &OpProds) |
| Calculates the products of operators that belong to a single block represented by the same basis. More... | |
| PetscErrorCode | SysBlocksActive (const std::set< PetscInt > &SysIdx) |
| Ensure that required blocks are loaded while unrequired blocks are saved. More... | |
| std::string | BlockDir (const std::string &BlockType, const PetscInt &iblock) |
| Returns the relative path to the directory for the storage of a specific system block. More... | |
| std::string | SweepDir (const PetscInt &isweep) |
| Returns the relative path to the directory for the storage of a specific sweep / loop index. More... | |
| PetscErrorCode | SaveStepHeaders () |
| PetscErrorCode | SaveStepData (const StepData &data) |
| Save step data to file. More... | |
| PetscErrorCode | SaveTimingsHeaders () |
| PetscErrorCode | SaveTimingsData (const TimingsData &data) |
| Save timings data to file. More... | |
| PetscErrorCode | SaveEntanglementSpectra (const std::vector< Eigen_t > &eigen_L, const std::vector< PetscReal > &qn_L, const std::vector< Eigen_t > &eigen_R, const std::vector< PetscReal > &qn_R) |
| Save the entanglement spectra to file. More... | |
| PetscErrorCode | SaveLoopsData () |
| Save data regarding warmup/sweeps into the data directory. More... | |
| PetscErrorCode | SaveAsOptions (const std::string &filename) |
| Dumps significant keys and values to file to be retrieved for restart. More... | |
| PetscErrorCode | SaveSweepsData () |
| Save data at the end of a completed sweep into the sweep directory in the scratch. More... | |
Private Attributes | |
| const std::map< SweepMode_t, std::string > | SweepModeToString |
| Gives the equivalent string for the sweep mode. More... | |
| MPI_Comm | mpi_comm = PETSC_COMM_SELF |
| MPI Communicator. More... | |
| PetscMPIInt | mpi_rank |
| MPI rank in mpi_comm. More... | |
| PetscMPIInt | mpi_size |
| MPI size of mpi_comm. More... | |
| PetscBool | init = PETSC_FALSE |
| Tells whether the object is initialized. More... | |
| PetscBool | verbose = PETSC_FALSE |
| Tells whether to printout info during certain function calls. More... | |
| PetscBool | restart = PETSC_FALSE |
| Tells whether the container initialized from a checkpoint restart. More... | |
| PetscBool | restart_options = PETSC_FALSE |
| If True, the PetscOptions.dat file will override the current command line arguments and the sweep stage will be continued from where the previous file left off; otherwise a new set of sweeps based on the command line arguments is performed, and the keys listed in SaveAsOptions() will be read from command line only. More... | |
| std::string | restart_dir |
| Path to sweep directory for performing restart. More... | |
| std::map< std::string, PetscInt > | restart_sweep_dict |
| Contents of the Sweep.dat file which will be read when restarting. More... | |
| PetscBool | dry_run = PETSC_FALSE |
| Tells whether to skip the warmup and sweep stages even when called. More... | |
| PetscBool | warmed_up = PETSC_FALSE |
| Tells whether the object was initialized using Initialize() More... | |
| PetscBool | no_symm = PETSC_FALSE |
| Tells whether no quantum number symmetries will be implemented. More... | |
| PetscReal | qn_sector = 0.0 |
| The quantum number sector in which to search for the ground state. More... | |
| SweepMode_t | sweep_mode = SWEEP_MODE_NULL |
| Stores the mode of sweeps to be performed. More... | |
| PetscInt | mwarmup = 0 |
| Number of states requested for warmup. More... | |
| PetscInt | nsweeps = 0 |
| Number of sweeps to be performed with the number of states specified by mwarmup (for SWEEP_MODE_NSWEEPS only) More... | |
| std::vector< PetscInt > | msweeps |
| Number of states for each sweep (for SWEEP_MODE_MSWEEPS and SWEEP_MODE_TOLERANCE_TEST only) More... | |
| std::vector< PetscInt > | maxnsweeps |
| Maximum number of sweeps for each state in msweeps (for SWEEP_MODE_TOLERANCE_TEST only) More... | |
| std::vector< PetscInt > | sweeps_mstates |
| Records the number of states requested for each sweep, where each entry is a single call to Sweep() More... | |
| PetscInt | msweep_idx = -1 |
| Index of the last full sweep completed. More... | |
| PetscInt | num_sites |
| Total number of sites. More... | |
| PetscInt | num_sys_blocks |
| Number of system blocks to be stored. More... | |
| PetscInt | num_env_blocks = 1 |
| Number of environment blocks to be stored. More... | |
| std::vector< Block > | sys_blocks |
| Array of system blocks each of which will be kept all throughout the simulation. More... | |
| PetscInt | sys_ninit = 0 |
| Number of initialized blocks in SysBlocks. More... | |
| std::vector< Block > | env_blocks |
| Environment blocks to be used only during warmup. More... | |
| PetscInt | env_ninit = 0 |
| Number of initialized blocks in EnvBlocks. More... | |
| Hamiltonian | Ham |
| Container for the Hamiltonian and geometry. More... | |
| Block | SingleSite |
| Single site that is added to each block during the block enlargement procedure. More... | |
| Block & | AddSite = SingleSite |
| Reference to the block of site/s added during enlargement. More... | |
| std::string | scratch_dir = "." |
| Directory in which all the sweep data will be saved. More... | |
| PetscBool | do_scratch_dir = PETSC_TRUE |
| Tells whether to save and retrieve blocks to reduce memory usage at runtime. More... | |
| PetscBool | data_tabular = PETSC_TRUE |
| Tells whether data should be saved in tabular form, instead of verbose json. More... | |
| PetscBool | do_save_prealloc = PETSC_FALSE |
| Tells whether to save preallocation data for the superblock Hamiltonian. More... | |
| PetscBool | do_shell = PETSC_TRUE |
| Whether to create an implicit MATSHELL matrix for the superblock Hamiltonian. More... | |
| FILE * | fp_step = NULL |
| File to store basic data (energy, number of sites, etc) More... | |
| FILE * | fp_timings = NULL |
| File to store timings data for each section of a single iteration. More... | |
| FILE * | fp_entanglement = NULL |
| File to store the entanglement spectrum of the reduced density matrices for a single iteration. More... | |
| FILE * | fp_data = NULL |
| File to store timings data for each section of a single iteration. More... | |
| FILE * | fp_prealloc = NULL |
| File to store preallocation data of the superblock Hamiltonian. More... | |
| FILE * | fp_corr = NULL |
| File to store timings data for each section of a single iteration. More... | |
| PetscInt | GlobIdx = 0 |
| Global index key which must be unique for each record. More... | |
| Step_t | LoopType = NullStep |
| The type of step performed, whether as part of warmup or sweep. More... | |
| PetscInt | LoopIdx = 0 |
| Counter for this loop (the same counter for warmup and sweeps) More... | |
| PetscInt | StepIdx = 0 |
| Counter for the step inside this loop. More... | |
| std::vector< Correlator > | measurements |
| Stores the measurements to be performed at the end of each sweep. More... | |
| PetscBool | corr_headers_printed = PETSC_FALSE |
| Tells whether the headers for the correlators have been printed. More... | |
| PetscBool | corr_printed_first = PETSC_FALSE |
| Tells whether a single entry for the correlators have been printed. More... | |
| PetscScalar | gse = 0.0 |
| Stores the ground state energy at the end of a single dmrg step. More... | |
| std::vector< PetscReal > | trunc_err |
| Stores the truncation error at the end of a single dmrg step. More... | |
| PetscLogDouble | t0abs = 0.0 |
| Stores the absolute time started. More... | |
The documentation for this class was generated from the following file:
- include/DMRGBlockContainer.hpp
