1Group: mf_header
2Content: Information from the WFN file.
3#===============================================================================
4
5
6Group: eps_header
7Content: Everything but the dielectric matrices.
8#===============================================================================
9
10	Dataset: versionnumber
11	Type: integer
12	Rank: 0
13	Value: Version number of this particular file.
14
15	Dataset: flavor
16	Type: integer
17	Rank: 0
18	Value: 1 for Real, 2 for CPLX.
19
20
21	Group: params
22	Content: General parameters.
23	#===============================================================================
24
25		Dataset: matrix_type
26		Type: integer
27		Rank: 0
28		Value: Controls what matrix we compute: 0=epsilon^{-1} (epsmat.h5),
29		1=epsilon (not implemented), 2=chi0 (chimat.h5).
30
31		Dataset: has_advanced
32		Type: integer/logical
33		Rank: 0
34		Value: Whether we store the advanced matrix. This is the default in
35		BerkeleyGW 1.1.x, but only for FF calculations with CPLX flavor.
36
37		Dataset: nmatrix
38		Type: integer
39		Rank: 0
40		Value: Number of matrices we store. If we store dielectric matrices,
41		this is (has_advanced+1). For polarizability calculations, this is
42		(has_advanced+1)*nspin.
43
44		Dataset: matrix_flavor
45		Type: integer
46		Rank: 0
47		Value: Whether we represent the dielectric matrix with real or complex numbers.
48		This will be 2 (i.e., we store complex numbers), unless we have a static
49		calculation run with the real code.
50
51		Dataset: icutv
52		Type: integer
53		Rank: 0
54		Value: Truncation flag. See Epsilon/inread.f90 for the meaning of each icutv.
55
56		Dataset: ecuts
57		Type: double
58		Rank: 0
59		Value: Cutoff for screened Coulomb interaction.
60
61		Dataset: nband
62		Type: integer
63		Rank: 0
64		Value: Total number of bands included in the epsilon calculation.
65
66		Dataset: efermi
67		Type: double
68		Rank: 0
69		Value: Fermi level determined by the code, in ryd.
70
71
72		Dataset: subsampling
73		Type: integer/logical
74		Rank: 0
75		Value: See Epsilon/epsilon.inp.
76
77                Dataset: subspace
78                Type: logical
79                Rank: 0
80                Value: true if the epsilon matrices have been generated using the static subspace approximation
81                       (only works in combination with full-frequency contour-deformation approach)
82
83
84	Group: qpoints
85	Content: Q-points-related datasets
86	#===============================================================================
87
88		Dataset: nq
89		Type: integer
90		Rank: 0
91		Value: Number of q-points.
92
93		Dataset: qpts
94		Rank: 2
95		Dims(1): 3 #(the three crystal coordinates)
96		Dims(2): nq
97		Value: Q-points.
98
99		Dataset: qgrid
100		Type: integer
101		Rank: 1
102		Dims(1): 3
103		Value: Q-grid used in epsilon calculation.
104
105		Dataset: qpt_done
106		Type: integer/logical
107		Rank: 1
108		Dims(1): nq
109		Value: 1 is the calculation for a particular q-point is done, 0 if not.
110
111
112	Group: freqs
113	Content: Frequency-related datasets
114	#===============================================================================
115
116		Dataset: freq_dep
117		Type: integer
118		Rank: 0
119		Value: Frequency dependency (same as in epsilon.inp and sigma.inp).
120
121		Dataset: nfreq
122		Type: integer
123		Rank: 0
124		Value: Number of frequency points.
125
126		Dataset: nfreq_imag
127		Type: integer
128		Rank: 0
129		Value: Number of imaginary frequency points. Used for CD calculations.
130
131		Dataset: freqs
132		Type: double
133		Rank: 2
134		Dims(1): 2 #(Real/complex part)
135		Dims(2): nfreq
136		Value: Frequencies, including broadening.
137
138
139	Group: gspace
140	Content: G-vectors-related datasets
141	#===============================================================================
142
143		Dataset: nmtx
144		Type: integer
145		Rank: 1
146		Dims(1): nq
147		Value: Number of matrix elements we actually compute for each q-point.
148
149		Dataset: nmtx_max
150		Type: integer
151		Rank: 0
152		Value: Same as maxval(nmtx(1:nq)).
153
154		Dataset: ekin
155		Type: double
156		Rank: 2
157		Dims(1): ng
158		Dims(2): nq
159		Value: Kinetic energies |G+q|^2, in Rydberg. Note: the G-vectors are sorted
160		wrt the RHO G-space |G|^2, and not wrt epsilon G-space |G+q|^2!
161
162		Dataset: gind_eps2rho
163		Type: integer
164		Rank: 2
165		Dims(1): ng
166		Dims(2): nq
167		Value: Given a row/column ig_eps from the epsilon matrix (in the epsilon G-space),
168		map_eps2rho(ig_eps,iq) is the index of the corresponding G-vector in the RHO G-space.
169
170		Dataset: gind_rho2eps
171		Type: integer
172		Rank: 2
173		Dims(1): ng
174		Dims(2): nq
175		Value: Given a G-vector ig from the RHO G-space, map_rho2eps(ig,iq) is the corresponding
176		row/column in the epsilon matrix (i.e., the index in the epsilon G-space).
177
178        Group: subspace
179        Content: Static subspace approximation (SSA) related parameters, it is created
180                 only if the calcuation is performed within the static subspace approximation
181                 (this forces to check the existence of the group and thus help to keep portability
182                 for .h5 matrices generated with older versions of the code). Again this works
183                 (for now) only in combination with full-frequency contour-deformation approach
184        #===============================================================================
185
186                Dataset: keep_full_eps_static
187                Type: logical
188                Rank: 0
189                Value: Set to true if the inverse static dielectric matrix has to be retained in the
190                       eps0mat.h5 and epsmat.h5
191
192                Dataset: matrix_in_subspace_basis
193                Type: logical
194                Rank: 0
195                Value: Set to true if the inverse dielectric matrices are stored in the subspace basis
196
197                Dataset: eps_eigenvalue_cutoff
198                Type: double
199                Rank: 0
200                Value: Set the cutoff for the selection of the eigenvectors which will build the
201                       static subspace (namely all eigenvectors with eigenvalue larger than eps_eigenvalue_cutoff)
202
203                Dataset: neig_max
204                Type: integer
205                Rank: 0
206                Value: Define the maximum size (number of eigenvectors) that will be used for the generation
207                       of the static subspace, can be given in input (see nbasis_subspace in epsilon.inp) otherwise
208                       it will be set automatically to 20% of the max nmtx
209
210                Dataset: neig
211                Rank: 1
212                Dims(1): nq
213                Value: give the actual number of eigenvectors employed for the generation of the static subspace for
214                       each q-point
215
216
217
218Group: mats
219Content: Matrix-elements-related datasets
220#===============================================================================
221
222	Dataset: matrix
223	Type: double
224	Rank: 6
225	Dims(1): matrix_flavor
226	Dims(2): nmtx_max #rows of the matrix
227	Dims(3): nmtx_max #columns of the matrix
228	Dims(4): nfreq
229	Dims(5): nmatrix
230	Dims(6): nq
231	Value: Matrix elements (see matrix_type dataset). Rows/columns are sorted wrt epsilon(q) G-space,
232	|q+G|^2. Note: for each q-point, we only really compute values up to nmtx(q).
233
234	Dataset: matrix-diagonal
235	Type: double
236	Rank: 3
237	Dims(1): matrix_flavor
238	Dims(2): nmtx_max #diagonal elements of the matrix
239	Dims(3): nq
240	Value: Static diagonal elements from "matrix" dataset. Not used when matrix_type==2.
241
242        Dataset: matrix_subspace
243        Type: double
244        Rank: 6
245        Dims(1): matrix_flavor
246        Dims(2): neig_max #rows of the matrix
247        Dims(3): neig_max #columns of the matrix
248        Dims(4): nfreq
249        Dims(5): nmatrix
250        Dims(6): nq
251        Value: Matrix elements of the inverse dielectric matrix in the subspace basis, for each q-point, we only
252               really compute and store values up to neig(q)
253
254        Dataset: matrix_eigenvec
255        Type: double
256        Rank: 6
257        Dims(1): matrix_flavor
258        Dims(2): nmtx_max #rows of the matrix
259        Dims(3): neig_max #columns of the matrix
260        Dims(4): 1        #frequency independent
261        Dims(5): nmatrix
262        Dims(6): nq
263        Value: Eigenvectors of the static dielectric matrix for each q-point, we only
264               really compute and store the rows/cols to nmtx(q)/neig(q) (defined with
265               rank 6 so we can reuse the same routines used for the previous arrays)
266
267        Dataset: matrix_fulleps0
268        Type: double
269        Rank: 6
270        Dims(1): matrix_flavor
271        Dims(2): nmtx_max #rows of the matrix
272        Dims(3): nmtx_max #columns of the matrix
273        Dims(4): 1        #frequency independent
274        Dims(5): nmatrix
275        Dims(6): nq
276        Value: Static dielectric matrix for each q-point (if keep_full_eps_static is set to true), we only
277               really compute and store the rows/cols to nmtx(q) (defined with
278               rank 6 so we can reuse the same routines used for the previous arrays)
279