<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def write_force_constants_to_hdf5(force_constants, filename='force_constants.hdf5', p2s_map=None, physical_unit=None, compression=None):
 """Write force constants in hdf5 format. Parameters force_constants: ndarray Force constants shape=(n_satom,n_satom,3,3) or (n_patom,n_satom,3,3) dtype=double filename: str Filename to be saved p2s_map: ndarray Primitive atom indices in supercell index system shape=(n_patom,) dtype=intc physical_unit : str, optional Physical unit used for force contants. Default is None. compression : str or int, optional h5py's lossless compression filters (e.g., "gzip", "lzf"). See the detail at docstring of h5py.Group.create_dataset. Default is None. """


    try:
        import h5py
    except ImportError:
        raise ModuleNotFoundError("You need to install python-h5py.")

    with h5py.File(filename, 'w') as w:
        w.create_dataset('force_constants', data=force_constants,
                         compression=compression)
        if p2s_map is not None:
            w.create_dataset('p2s_map', data=p2s_map)
        if physical_unit is not None:
            dset = w.create_dataset('physical_unit', (1,),
                                    dtype='S%d' % len(physical_unit))
            dset[0] = np.string_(physical_unit)