def METHOD_NAME(self) -> Iterator[Dict]:
    """
    Gets all materials that need sound velocity.
    Returns:
        generator of materials to extract the sound velocity
    """
    self.logger.info("Sound Velocity Builder Started")
    self.logger.info("Setting indexes")
    self.ensure_indexes()
    # All relevant materials that have been updated since sound velocities were last calculated
    q = dict(self.query)
    mats = self.sound_vel.newer_in(
        self.phonon_materials, exhaustive=True, criteria=q
    )
    self.logger.info(
        "Found {} new materials for sound velocity data".format(len(mats))
    )
    # list of properties queried from the results DB
    # basic informations
    projection = {"mp_id": 1}
    # input data
    projection["abinit_input"] = 1
    # file ids to be fetched
    projection["abinit_output.ddb_id"] = 1
    for m in mats:
        item = self.phonon_materials.query_one(
            properties=projection, criteria={self.phonon_materials.key: m}
        )
        # Read the DDB file and pass as an object. Do not write here since in case of parallel
        # execution each worker will write its own file.
        ddb_data = self.ddb_source.query_one(
            criteria={"_id": item["abinit_output"]["ddb_id"]}
        )
        item["ddb_str"] = ddb_data["data"].decode("utf-8")
        yield item