def _get_alm_disp_fc3(disp_dataset):
    """Create displacements of atoms for ALM input

    Note
    ----
    Dipslacements of all atoms in supercells for all displacement
    configurations in phono3py are returned, i.e., most of
    displacements are zero. Only the configurations with 'included' ==
    True are included in the list of indices that is returned, too.

    Parameters
    ----------
    disp_dataset : dict
        Displacement dataset that may be obtained by
        file_IO.parse_disp_fc3_yaml.

    Returns
    -------
    disp : ndarray
        Displacements of atoms in supercells of all displacement
        configurations.
        shape=(ndisp, natom, 3)
        dtype='double'
    indices : list of int
        The indices of the displacement configurations with 'included' == True.

    """

    natom = disp_dataset['natom']
    ndisp = len(disp_dataset['first_atoms'])
    for disp1 in disp_dataset['first_atoms']:
        ndisp += len(disp1['second_atoms'])
    disp = np.zeros((ndisp, natom, 3), dtype='double', order='C')
    indices = []
    count = 0
    for disp1 in disp_dataset['first_atoms']:
        indices.append(count)
        disp[count, disp1['number']] = disp1['displacement']
        count += 1

    for disp1 in disp_dataset['first_atoms']:
        for disp2 in disp1['second_atoms']:
            if 'included' in disp2:
                if disp2['included']:
                    indices.append(count)
            else:
                indices.append(count)
            disp[count, disp1['number']] = disp1['displacement']
            disp[count, disp2['number']] = disp2['displacement']
            count += 1

    return disp, indices
def _get_alm_disp_fc3 ( disp_dataset ) : natom = disp_dataset [ 'natom' ] ndisp = len ( disp_dataset [ 'first_atoms' ] ) for disp1 in disp_dataset [ 'first_atoms' ] : ndisp += len ( disp1 [ 'second_atoms' ] ) disp = np . zeros ( ( ndisp , natom , 3 ) , dtype = 'double' , order = 'C' ) indices = [ ] count = 0 for disp1 in disp_dataset [ 'first_atoms' ] : indices . append ( count ) disp [ count , disp1 [ 'number' ] ] = disp1 [ 'displacement' ] count += 1 for disp1 in disp_dataset [ 'first_atoms' ] : for disp2 in disp1 [ 'second_atoms' ] : if 'included' in disp2 : if disp2 [ 'included' ] : indices . append ( count ) else : indices . append ( count ) disp [ count , disp1 [ 'number' ] ] = disp1 [ 'displacement' ] disp [ count , disp2 [ 'number' ] ] = disp2 [ 'displacement' ] count += 1 return disp , indices
Create displacements of atoms for ALM input

    Note
    ----
    Dipslacements of all atoms in supercells for all displacement
    configurations in phono3py are returned, i.e., most of
    displacements are zero. Only the configurations with 'included' ==
    True are included in the list of indices that is returned, too.

    Parameters
    ----------
    disp_dataset : dict
        Displacement dataset that may be obtained by
        file_IO.parse_disp_fc3_yaml.

    Returns
    -------
    disp : ndarray
        Displacements of atoms in supercells of all displacement
        configurations.
        shape=(ndisp, natom, 3)
        dtype='double'
    indices : list of int
        The indices of the displacement configurations with 'included' == True.