perturbopy.postproc.utils.spectra_generate_pulse.gaussian_excitation

perturbopy.postproc.utils.spectra_generate_pulse.gaussian_excitation(pump_file, occs_amplitude, time_grid, time_window, pulse_fwhm, time_step, hole=False, finite_width=True)

The Gaussian pulse excitation for the Perturbo dynamics. Pump pulses for electrons and holes must be dumped into separate HDF5 files. In Perturbo, set pump_pulse = .true. and pump_pulse_fname = … in pert.in.

In Perturbo, step_0 will be initialized with init_boltz_dist parameter, the pump pulse will be applied starting from step_1.

Parameters:
  • pump_pulse_file (h5py.File) – The HDF5 file for the pump pulse excitation. Typically, pump_pulse_Epump_…h5.

  • occs_amplitude (np.ndarray) – Electron or hole occupation amplitude: for each k-point, its _additional_ occupation in time is modeled as Gaussian with the given FWHM and amplitude.

  • time_window (float) – The time window for the pump pulse (fs). During this time window, the pump pulse will be active.

  • pulse_fwhm (float) – The full width at half maximum of the pump pulse (fs).

  • time_step (float) – Time step in fs for the pump pulse generation. Note: the pump_time_step MUST match the one used in the dynamics run in Perturbo!

  • hole (bool, optional) – If True, the pump pulse is for holes. Default is False (electrons).

  • finite_width (bool, optional) – If True, the pulse is finite in time. If False, the pulse is a step function and occs_amplitude will be set as initial occupation.

Returns:

Return additional occupations array in time, if finite_widt is True, else, return None.

Return type:

array-like or None