31 use precisn_gbl,
only: wp
55 real(wp),
parameter ::
alpha = 1/137.03599907_wp
56 real(wp),
parameter ::
rzero = 0
57 real(wp),
parameter ::
rone = 1
58 real(wp),
parameter ::
rhalf = 0.5
59 real(wp),
parameter ::
pi = 4*atan(1.0_wp)
61 complex(wp),
parameter ::
czero = 0
62 complex(wp),
parameter ::
cone = 1
63 complex(wp),
parameter ::
imu = (0, 1)
65 character(len=1),
parameter ::
compt(3) = [
'x',
'y',
'z']
67 integer,
parameter ::
carti(3) = [3, 1, 2]
68 integer,
parameter ::
cartm(3) = [+1, -1, 0]
72 subroutine read_input_namelist (input, order, lusct, lukmt, lubnd, nkset, polar, omega, verbose, rmt_data, first_IP, rasym, &
75 integer,
intent(in) :: input
76 integer,
intent(inout) :: order, lusct(8), lukmt(8), lubnd, nkset(8), erange(2)
77 logical,
intent(inout) :: verbose, mpiio
78 real(wp),
intent(inout) :: omega(nMaxPhotons), first_IP, rasym
79 complex(wp),
intent(inout) :: polar(3, nMaxPhotons)
80 character(len=256),
intent(inout) :: rmt_data, raw
82 namelist /mdip/ order, lusct, lukmt, lubnd, nkset, polar, omega, verbose, rmt_data, first_ip, rasym, raw, erange, mpiio, &
97 rmt_data =
'molecular_data'
101 read (input, nml = mdip)
104 print
'(A)',
'Order must be positive'
108 if (order > nmaxphotons)
then
109 print
'(A,I0)',
'Order must be <= ', nmaxphotons
113 if (raw /=
'' .and. raw /=
'sph' .and. raw /=
'xyz' .and. raw /=
'both')
then
114 print
'(A)',
'The parameter "raw" must be empty or one of: "sph", "xyz", "both".'
118 #ifndef WITH_SCALAPACK
120 print
'(A)',
'MPI-IO mode requires compiling MULTIDIP with ScaLAPACK support'
125 polar(:, order + 1:nmaxphotons) = 0
126 omega(order + 1:nmaxphotons) = 0
Hard-coded parameters of MULTIDIP.
integer, parameter ntermsppt
Number of terms in expansion of the exponential integral.
subroutine read_input_namelist(input, order, lusct, lukmt, lubnd, nkset, polar, omega, verbose, rmt_data, first_IP, rasym, raw, erange, mpiio)
logical extend_istate
Continue initial state from the known inner region expansion outwards.
integer, parameter max_romb_level
Maximal nesting level for Romberg integration.
logical closed_interm
Consider weakly closed channel in intermediate states (unfinished!)
logical custom_kmatrices
Ignore RSOLVE K-matrices and calculate them from scratch.
integer num_integ_algo
Numerical integration mode (1 = Romberg, 2 = Levin)
real(wp), parameter rhalf
integer, dimension(3), parameter carti
Position of a Cartesian coordinate in the real spherical basis (y, z, x).
real(wp) epsrel
Romberg integration relative tolerance for convergence.
character(len=1), dimension(3), parameter compt
logical cache_integrals
Cache Coulomb-Green integrals in memory (but disables some threading)
complex(wp), parameter imu
complex(wp), parameter cone
logical coulomb_check
Skip integrals that cannot be asymptotically approximated well.
real(wp) coultol
Coulomb matching relative tolerance (decides whether to use asym. forms)
logical print_warnings
Print warnings about non-converged integrals.
integer, parameter max_levin_level
Maximal nesting level for Levin integration.
real(wp) closed_range
Energy interval (a.u.) before threshold for inclusion of closed channels.
logical check_dipoles
Check that all dipole matrices in molecular_data are nonzero.
integer, parameter cheb_order
Order of Chebyshev interpolation used in Levin quadrature.
real(wp), parameter rzero
integer, parameter ntermsasy
Number of terms in expansion of the Coulomb-Hankel functions.
integer maxtarg
Maximal number of target states to calculate dipoles for (0 = all)
real(wp), parameter alpha
Fine structure constant.
integer, dimension(3), parameter cartm
Real spherical harmonic m-value corresponding to given a Cartesian coord.
complex(wp), parameter czero
integer, parameter nmaxphotons
The limit on number of photons is nested_cgreen_integ