How to run a scattering calculation

To run a scattering calculation you need to

  • define the (possibly mapped) spatial grid for the collision (grid section),

  • set up the interaction potential for the collision complex (ham section) and

  • specify the remaining scattering parameters, e.g. collision energies, entrance channel quantum numbers etc. (scattering section).

In order to run the calculation, invoke the utlity program qdyn_scattering.

How to set up the interaction potential

The potential energy surfaces and coupling matrix elements governing the collision are defined as entries in the ham section. Only entries with type = op are considered, operators with different type are ignored. Depending on scattering:system additional potentials or couplings may be initialized by the program. See below for details.

for atom-atom collisions

Set scattering:system to 'atom-atom'. Define the potential energy surfaces as entries in the ham section with type = op and op_type = pot. You can define spin-orbit coupling operators or dipole operators with op_type = so or op_type = dip respectively. In the scattering section, set entrance_surf to the number of the surface that shall be treated as the entrance channel potential. Specify the angular momentum of the entrance channel with l and the maximum angular momentum that shall be taken into account with l_max. Different coupling mechanisms can be included by setting the corresponding coup_* parameters to true.o Based on this information, the program determines the relevant channels for the scattering calculation automatically, e.g. by taking into account angular momentum conservation. As a consequence, each surface defined in the ham section may give rise to multiple scattering channels.

for a general collision

If you want to have full control over the channels taken into account for the scattering calculation, set scattering:system to ham. In this case, every surface defined in the ham section corresponds to a scattering channel. No additional channels or couplings are added by the program (even if some of the coup_* parameters in the scattering section are set to true). You may define multiple operators for each surface/channel, but every surface needs to have exactly one instance of ham:rotbarr_j, which defines the angular momentum of this channel.

How to run a scattering calculation with the renormalized Numerov method

Set up the spatial grid and the interaction potential for the collision as described above. Set scattering:method to numerov. There are different options in the scattering section how to define the collision energies for which the scattering calculation shall be performed:

Note that the collision energy is defined with respect to the asymptotic value of the entrance channel potential.

How to run a scattering calculation by diagonalizing the Hamiltonian

Set up the spatial grid and the interaction potential for the collision as described above. Set scattering:method to diag. The collision energies are selected from the eigenvalue of the Hamiltonian. Select the energy range that you are interested in by setting scattering:E_min and scattering:E_max.

Warning

With this method each set of coupled channels has its own set of eigenvalues. With the current implementation, a common energy grid is defined with reference to the entrance channel by always selecting the closest energy from the other channels. If necessary, increase the extent of the spatial grid, in order to obtain a denser energy spectrum and decrease the error introduced by matching the energies.

How to calculate scattering wavefunctions

By default, the qdyn_scattering utiliy program or the routine scattering() only calculate scattering cross sections. If you want to obtain the scattering wavefunctions, set scattering:wavefunctions to true.

By default, the routine write_psi_amplitudes() is used to write wavefunctions to the file wavefunctions.dat. Wavefunction amplitudes for each channel and collision energy are separated by two blank lines. The spatial grid for the wavefunctions is saved in a separate file with name wavefunction_grid.dat.

How to calculate differential cross sections

By default, the qdyn_scattering utiliy program or the routine scattering() only calculate integrated scattering cross sections. If you want to obtain the differential cross section, set scattering:diff_cross_section to true. Additionally, you need to specify scattering:ntheta to set the number of sampling points for the polar angle. By default, the differential cross section is stored in the file diff_cross_section.dat.

How use the scattering module in your own Fortran program

In order to use the routines from the scattering module, you need to initilize a spatial grid and a Hamiltonian, e.g. with the init() routine. Then you need to call init_scattering(), which initializes the scattering channels based on the paramters in scattering_pt. The actual scattering calculation can then be performed by calling scattering(). After calculating the \(S\) matrix with the method specified by scattering_pt%method, this routine initializes the scattering observables. By default, only cross sections are calculated. If other observables are needed, set the corresponding fields in scattering_pt. When the routine finishes, the scattering observables are stored in the scattering_work_t (that you need to supply). They can be saved in files by calling write_scattering_observables().

As an example, have a look at the qdyn_scattering utility program.