File: CODEMAP

package info (click to toggle)
dmrgpp 6.06-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 113,900 kB
  • sloc: cpp: 80,986; perl: 14,772; ansic: 2,923; makefile: 83; sh: 17
file content (267 lines) | stat: -rw-r--r-- 8,496 bytes parent folder | download
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