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) andspecify 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:
select a single collision energy by setting
scattering:energy
.select a range of collision energies by setting
E_min
,E_max
,nE
andE_grid_type
in thescattering
section.specify a file from which to read the collision energies with
filename
andenergy_unit
.
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.