External module functions drixs1 - used by mcdisp
Very similar to the inelastic neutron scattering (module function dmq1)
the Resonant inelastic X-ray scattering cross sections in the program mcdisp
can be done with module functions drixs1 and estates.
The input of drixs1
has similar arguments as
du1calc, but as additional argument an orientation
of the scattering vector,
output should be a corresponding vector
.
Here
with
are the 9
components of the RIXS scattering operator, see equ (65).
drixs1 is called many times, for
every scattering vector. In order to
do an efficient calculation the eigenstates should be calculated only
once, this is the task of function estates (see above).
The format to be used is:
extern "C" int drixs1(int & tn,double & th,double & ph,double J0,
double & J2, double & J4, double & J6,ComplexMatrix & est,double & T,
ComplexVector & rixs, float & maxE)
on input
|tn| transition-number
sign(tn) >0 standard with printouts for user information,
<0 routine should omit any printout
th polar angle theta of the scattering vector Q
(angle with the axb axis=c axis) in rad
ph polar angle phi of the scattering vector Q
(angle with bx(axb)=a in the projection into
the bx(axb),b plane = angle with a in the projection into
the ab plane) in rad
J0,J2,J4,J6 form factor functions <jn(Q)>
est eigenstate matrix (as calculated by estates),
it should also contain population numbers of the states (row 0)
T Temperature[K]
rixs(1) ninit + i pinit (from mcdisp options -ninit and -pinit)
maxE maximum transition energy (from mcdisp option maxE)
on output
int total number of transitions
rixs vector rixs(alpha)=<-|Ralpha|+>sqrt(p- - p+)
with alpha=1,..9=xx, xy ,xz, yx, yy, yz, zx,zy, zz
Note on coordinate system:
x||bx(axb)
y||b
z||axb
The module function must perform the following tasks:
- for the transition number tn the vector mq1 is to be filled with the 9-components
of
, i.e. for
.
IMPORTANT: the numbering scheme of transitions has to
be the same for du1calc and all the corresponding d...1 functions for observables !
- If the energy of this transition
is zero, i.e.
(diffuse scattering),
the
would be zero because
vanishes (compare expression (230)).
In this case the single ion module should calculate
instead of
.
- if
all quantities should be evaluated assuming that all Boltzmann probabilities
are zero except for the state number
, for which the probability
.