electronic-structure / SIRIUS

Domain specific library for electronic structure calculations
BSD 3-Clause "New" or "Revised" License
121 stars 40 forks source link

Add initial support for HDF5 ATTRIBUTEs #872

Closed RMeli closed 1 year ago

RMeli commented 1 year ago

Add initial (limited) support for HDF5 ATTRIBUTEs. The support is focused on the output of HDF5 files compatible with QuantumESPRESSO HDF5 wave functions files.

Current limitations:


HDF5 file produced by test4:

HDF5 "qe.h5" {
GROUP "/" {
   ATTRIBUTE "gamma_only" {
      DATATYPE  H5T_STRING {
         STRSIZE 7;
         STRPAD H5T_STR_SPACEPAD;
         CSET H5T_CSET_ASCII;
         CTYPE H5T_C_S1;
      }
      DATASPACE  SCALAR
      DATA {
      (0): ".FALSE."
      }
   }
   ATTRIBUTE "igwx" {
      DATATYPE  H5T_STD_I32LE
      DATASPACE  SCALAR
      DATA {
      (0): 4572
      }
   }
   ATTRIBUTE "scale_factor" {
      DATATYPE  H5T_IEEE_F64LE
      DATASPACE  SCALAR
      DATA {
      (0): 1
      }
   }
   ATTRIBUTE "xk" {
      DATATYPE  H5T_ARRAY { [3] H5T_IEEE_F64LE }
      DATASPACE  SCALAR
      DATA {
      (0): [ 0, 0.13, 0.1 ]
      }
   }
   DATASET "MillerIndices" {
      DATATYPE  H5T_STD_I32LE
      DATASPACE  SIMPLE { ( 3, 2 ) / ( 3, 2 ) }
      DATA {
      (0,0): 0, 0,
      (1,0): 0, 0,
      (2,0): 0, 0
      }
      ATTRIBUTE "bg1" {
         DATATYPE  H5T_ARRAY { [3] H5T_IEEE_F64LE }
         DATASPACE  SCALAR
         DATA {
         (0): [ 0.67, 0.39, 0 ]
         }
      }
      ATTRIBUTE "doc" {
         DATATYPE  H5T_STRING {
            STRSIZE 34;
            STRPAD H5T_STR_SPACEPAD;
            CSET H5T_CSET_ASCII;
            CTYPE H5T_C_S1;
         }
         DATASPACE  SCALAR
         DATA {
         (0): "Miller Indices of the wave-vectors"
         }
      }
   }
   DATASET "evc" {
      DATATYPE  H5T_IEEE_F64LE
      DATASPACE  SIMPLE { ( 4, 3 ) / ( 4, 3 ) }
      DATA {
      (0,0): 0, 0, 0,
      (1,0): 0, 0, 0,
      (2,0): 0, 0, 0,
      (3,0): 0, 0, 0
      }
      ATTRIBUTE "doc" {
         DATATYPE  H5T_STRING {
            STRSIZE 28;
            STRPAD H5T_STR_SPACEPAD;
            CSET H5T_CSET_ASCII;
            CTYPE H5T_C_S1;
         }
         DATASPACE  SCALAR
         DATA {
         (0): "Wave Functions, (npwx, nbnd)"
         }
      }
   }
}
}

(Compare with QuantumESPRESSO HDF5 wave functions files)

RMeli commented 1 year ago

Wait for https://github.com/electronic-structure/SIRIUS/pull/873.