1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267
|
--------------------------------------------------------
Top level files:
CODE MAP
This file. Short description of the various directories and source files.
README
README file
CHANGES
Summary of changes from v1.0.0
INDENTATION
Indentation style of DMRG++
INSTALL
Software requirements to build and run DMRG++
LICENSE
DMRG++ License
--------------------------------------------------------
src/dmrg.cpp
This is the main program (contains the entry point or int main()).
This file is not included in the package, but it is written when
configure.pl is executed.
--------------------------------------------------------
src/configure.pl
This script asks for the parameters of the run that are selected
at compile-time, it creates the file main.cpp (containing the
main program), it writes the Makefile, and it creates a sample
input.inp file (containing run-time parameters)
--------------------------------------------------------
src/Geometries/ contains
the geometry classes, which are:
GeometryLadder.h
Ladder for one orbital
Geometry1D.h
One dimensional geometry (chain)
GeometryLadderFeAs.h
Ladder for multiple orbitals
--------------------------------------------------------
src/Models contains
sample models under separate sub-directories.
These sample models are:
1) HeisenbergSpinOneHalf/
which contains:
ModelHeisenberg.h
The model implementation
ParametersModelHeisenberg.h
The model parameters (basically J_ij)
OperatorsHeisenberg.h
The Heisenberg operators needed to
assemble the Hamiltonian. In this case, S^z_i and S^+_i
HilbertSpaceHubbard.h
Hilbert space for this model (same as Hubbard's)
LinkProductHeisenbergSpinOneHalf.h
Hamiltonian connections for this model. There are
two types: S_i^+ S_j^- and S^z_i S^z_j
2) FeAsModel/ for iron based superconductors,
which contains:
ModelFeBasedSc.h
The model implementation
ParametersModelFeAs.h
The model parameters.
OperatorsFeAs.h
The model's operators needed to
assemble the Hamiltonian. In this case,
c^\dagger_{i\gamma\sigma}
HilbertSpaceFeAs.h
Hilbert space for this model (spin and two-orbitals,
i.e. 16 states per site)
LinkProductFeAs.h
Hamiltonian connections for this model.
These are c^\dagger_{i\gamma\sigma} c_{j\gamma'\sigma}
3) HubbardOneBand/
which contains:
ModelHubbard.h
The model's implementation
ParametersModelHubbard.h
The model's parameters (U_i, V_i, t_{ij})
OperatorsHubbard.h
The model's operators needed to
assemble the Hamiltonian. In this case,
c^\dagger_{i\sigma}
HilbertSpaceHubbard.h
LinkProductHubbardOneBand.h
Hamiltonian connections for this model.
These are c^\dagger_{i\sigma} c_{j'\sigma}
--------------------------------------------------------
src/DmrgEngine/
contains the DMRG++ engine, i.e. those tasks that
are both model and geometry independent.
The engine is instantiated with a given model and geometry.
Its files can be classified in the following way:
*) The interfaces. These abstract classes allows expansion
and modularity of functionality:
ModelBase.h
Models must implement this interface.
For example, ModelHubbard does.
BasisData.h
Helper interface to ModelBase.h
OperatorsBase.h
Operators must implement this interface.
For example, OperatorsHubbard does
GeometryBase.h
Geometries must implement this interface.
For example, Geometry1D does.
Concurrency.h
Concurrency paradigms must implement this interface.
For example ConcurrencyMpi does.
*) The core classes. These are:
DmrgSolver.h
A class to represent a generic solver for the Dmrg method
Basis.h
Hilbert space basis to deal with symmetries.
BasisImplementation.h
Helper to Basis.h
BasisWithOperators.h
Hilbert space basis that includes operators
Operator.h
An unmangled operator.
OperatorsImplementation.h
Default (or common) implementation of OperatorsBase.h
InternalProductOnTheFly.h
Internal product done on-the-fly.
InternalProductStored.h
Internal product stored (for future use)
ModelCommon.h
Default (or common) implementation of ModelBase.h
ReflectionSymmetryEmpty.h
Hook to implement the reflection symmetry present in the infinite algorithm.
WaveFunctionTransformation.h
Speed-up that computes a good guess for the initial Lanczos vector
LanczosSolver.h
The generic Lanczos algorithm implementation
DensityMatrix.h
Class to represent the density matrix.
*) Concurrency classes.
ConcurrencySerial.h
Serial program.
NoPthreads.h
Serial program, no pthreads.
ConcurrencyMpi.h
MPI program.
ConcurrencyMpiFunctions.h
Helper for ConcurrencyMpi.
Pthreads.h
Pthreaded program.
*) Local Symmetry classes
ModelHelperLocal.h
A class to contain state information about the Hamiltonian to help with the calculation of x+=Hy
HamiltonianSymmetryLocal.h
This class contains the implementation of local symmetries
An object of this class is contained by DmrgBasisImplementation
*) SU(2) Symmetry classes
JmSubspace.h
Each object of this class contains a subspace of the outer product.
States (a,b) in this subspace give rise to a state c in the outer product
with given quantum numbers (j,m,q) [See paper for more info]
ApplyFactors.h
Applies the factors of Eq~(1) in the paper to the operators.
ClebschGordan.h
This is a class to compute ClebschGordan Coefficients
//! Don't use this class directly, use ClebschGordanCached instead, it'll improve performance
// Parts taken from Ref.S = http://caps.gsfc.nasa.gov/simpson/software/cg_f90.txt
ClebschGordanCached.h
Helper to ClebschGordan
ReducedOperators.h
Reduced operators as in Eqs~(6-7) in the paper.
Su2Reduced.h
Implemenation of WignerEckart Theorem to speed up SU(2) algorithm
(see corresponding section in paper for more info)
JmPairs.h
This is a "vector" containing (2j,m+j) pairs.
Repeated entries are stored only once
Provides a transparent access as if it were a normal vector
HamiltonianSymmetrySu2.h
An object of this class is meant to be contained by a Hilbert Space basis
and then this class help creating the outer product states necessary to preserve the SU(2) symmetry
THe counterpart to this class is HamiltonianSymmetryLocal.h for local symmetries only
ModelHelperSu2.h
A class to contain state information about the Hamiltonian
to help with the calculation of x+=Hy (for when there's su2 symmetry)
SpinSquared.h
Encapsulates the calculation of the Casimir operator S^2 from creation
and anihilation operators. Works in conjunction with SpinSquaredHelper
SpinSquaredHelper.h
Helper to SpinSquared
*) Classes to do sparse linear algebra.
VerySparseMatrix.h
A class to represent a sparse matrix in trivial format
SparseVector.h
A class to represent sparse vectors
BlockMatrix.h
A class to represent a block diagonal matrix
CrsMatrix.h
A class to represent a sparse matrix in Compressed Row Storage (CRS)
*) Classes related to input and output (io)
SimpleReader.h
Parses the input file
DiskStack.h
A disk stack, similar to std::stack but stores in disk not in memory
MemoryStack.h
A memory stack, based on std::stack. It's the counterpart to DiskStack
IoSimple.h
This class handles Input/Output for the DMRG++ program in a simple way
ParametersDmrgSolver.h
Contains the parameters for the DmrgSolver class and implements functionality to
read them from a file
*) Misc. classes:
Utils.h
Misc. functions
ProgressIndicator.h
This class handles output to a progress indicator (usually the terminal)
ProgramLimits.h
Contains the maximum values that the program should not exceed.
--------------------------------------------------------
PartialPsimag/
PSIMAG classes. Short description:
Matrix.h
A dense matrix class in C++
LAPACK.h
LAPACK function wrappers for C++.
BLAS.h
BLAS function wrappers for C++.
--------------------------------------------------------
TestSuite/
A test suite for the program.
testsuite.pl
the script that runs the testsuite.pl (see README for instructions on how to run it)
testsuite.8
The man page for testsuite.pl
man -l testsuite.8
or
less testsuite.8
will give you the documentation.
inputs/
Inputs for the testsuite. There are two types of files here: input*inp, as those
produced by configure.pl, and model*spec files, which are the answers to configure.pl
in each case.
oracles/
Precomputed data, used by testsuite.pl to determine if the result of the tests
is valid.
--------------------------------------------------------
scripts/
countLines.pl
perl countLines.pl
will tell you how many effective lines of code there are in DMRG++
#EOF
|