h5cube Specification v1.0 rev1

Dataset Descriptions

[VERSION]

\(\dsetarr{Integer}{2,\!}\)

\(\small \textbf{h5cube}\) specification version met by the file, where the first and second elements are the major and minor version numbers, respectively:

\(\mtt{vx.y} \rightarrow (\mtt x, \mtt y)\)

This dataset MAY be absent for specification v1.0 only.

[COMMENT1]

\(\dsettype{String}\)

First comment line of the \(\small \textbf{CUBE}\) file. Corresponds to {COMMENT1}.

[COMMENT2]

\(\dsettype{String}\)

Second comment line of the \(\small \textbf{CUBE}\) file. Corresponds to {COMMENT2}.

[NATOMS]

\(\dsettype{Integer}\)

Corresponds directly to {NATOMS}, where the absolute value equals \(N_A\), the number of atoms in the system. The value here may be negative, with the same semantic implications as in the case of {NATOMS}. See [NUM_DSETS] and [DSET_IDS] for more details.

This value MUST be nonzero.

[ORIGIN]

\(\dsetarr{Float}{3,\!}\)

Vector pointing from the origin of the system geometry frame to the reference point \(\left(x_0, y_0, z_0\right)\) of the vectors spanning the \(\small \textbf{CUBE}\) voxel grid. Corresponds directly to {ORIGIN}.

[XAXIS]

\(\dsetarr{Float}{4,\!}\)

Corresponds directly to {XAXIS}. The first element is the number of voxels along the \(X\)-axis of the volumetric grid, \(N_X\), and MUST be a positive integer value, despite the \(\dsettype{Float}\) type of the dataset. The remaining three elements are the vector \(\vec X\) defining the voxel \(X\)-axis. See {XAXIS} for more information about the semantics of these values.

[YAXIS]

\(\dsetarr{Float}{4,\!}\)

Corresponds directly to {YAXIS}. The first element is the number of voxels along the \(Y\)-axis of the volumetric grid, \(N_Y\), and MUST be a positive integer value, despite the \(\dsettype{Float}\) type of the dataset. The remaining three elements are the vector \(\vec Y\) defining the voxel \(Y\)-axis. See {YAXIS} for more information about the semantics of these values.

[ZAXIS]

\(\dsetarr{Float}{4,\!}\)

Corresponds directly to {ZAXIS}. The first element is the number of voxels along the \(Z\)-axis of the volumetric grid, \(N_Z\), and MUST be a positive integer value, despite the \(\dsettype{Float}\) type of the dataset. The remaining three elements are the vector \(\vec Z\) defining the voxel \(Z\)-axis. See {ZAXIS} for more information about the semantics of these values.

[GEOM]

\(\dsetarr{Float}{N_A,5}\)

Corresponds directly to {GEOM}. The first element of each of the \(N_A\) lines (see [NATOMS]) indicates the atomic number of atom a, and MUST be an \(\dsettype{Integer}\) value. The second element of each line indicates the nuclear charge of atom a, and will generally be (i) equal to the atomic number and (ii) an integer quantity. This value will deviate from the atomic number when an ECP [WP_PP] is used on atom a.

The remaining three \(\dsettype{Float}\) elements of each line provide the coordinates \((x_a, y_a, z_a)\) of atom a in the geometric frame of reference.

[NUM_DSETS]

\(\dsettype{Integer}\)

Corresponds to the first value in {DSET_IDS}, indicating the number \(m\) of dataset identifiers provided in the remainder of {DSET_IDS}. This value \(m\) also specifies the required size of [DSET_IDS].

[DSET_IDS]

\(\dsetarr{Integer}{m,\!}\)

An array of \(m\) values indicating the identifiers associated with the multiple data values provided at each voxel in [SIGNS] and [LOGDATA].

As noted in {DSET_IDS}, each of these values SHOULD be unique within the array, and SHOULD be non-negative. Otherwise, they can be any \(\dsettype{Integer}\) value.

[SIGNS]

[NATOMS] \(\dsetarrmap{>0}{Integer}{N_X,N_Y,N_Z}\)
[NATOMS] \(\dsetarrmap{<0}{Integer}{N_X,N_Y,N_Z,m}\)

This dataset combines with [LOGDATA] to define the value of the volumetric data at each voxel \((X,Y,Z)\). This dataset contains the arithmetic signs of the data values, as per the standard mathematical signum \((\sgn)\) function [WP_Sign]. Thus, if [NATOMS] \(>0\):

[SIGNS]\(_{X,Y,Z} = \sgn{\left[\Phi\!\left(X,Y,Z\right)\right]}\)

and if [NATOMS] \(<0\):

[SIGNS]\(_{X,Y,Z,i} = \sgn{\left[\Phi_i\!\left(X,Y,Z\right)\right]}\)

where \(\Phi_i\) is the \(i^\text{th}\) dataset included in the \(\small \textbf{CUBE}\) file.

[LOGDATA]

[NATOMS] \(\dsetarrmap{>0}{Float}{N_X,N_Y,N_Z}\)
[NATOMS] \(\dsetarrmap{<0}{Float}{N_X,N_Y,N_Z,m}\)

This dataset combines with [SIGNS] to define the value of the volumetric data at each voxel \((X,Y,Z)\). This dataset contains the common logarithms [WP_log10] of the data values. Thus, if [NATOMS] \(>0\):

[LOGDATA]\(_{X,Y,Z} = \log_{10}{\left[\Phi\!\left(X,Y,Z\right)\right]}\)

and if [NATOMS] \(<0\):

[LOGDATA]\(_{X,Y,Z,i} = \log_{10}{\left[\Phi_i\!\left(X,Y,Z\right)\right]}\)

where \(\Phi_i\) is the \(i^\text{th}\) dataset included in the \(\small \textbf{CUBE}\) file.