Single ion properties can be described in a very flexible way by user programmed single ion module functions, which are loaded at runtime.
The first line in such a single ion property file must contain the filename of the loadable module, in the following example the file ./1ion_mod/kramer.so:
#!./1ion_mod/kramer.so #<!--mcphas.sipf--> # single ion parameter file for CeCu2 # there follow some module parameters (up to 9) which are # loaded at initialisation of the module nof_electrons=1 MODPAR1=1.6 MODPAR2=0.58333 MODPAR3=1.1 ...
If the first line refers not to an internal module, but to a loadable module file, the single ion properties are calculated using functions in this module file.
In the following sections the different functions are presented which need to be present in the loadable module in order to run the programs. All functions have to be present, but only formally. If a function is not implemented please just let print out a message and exit. The corresponding programs will not work then. Table 4 lists all functions which can be implemented in a loadable module. There are two groups of functions: (i) basic module functions, which provide the information about the interaction operators and their transition matrix elements. These are used to solve the meanfield Hamiltonian and calculate the excitation energies (using the DMD method). (ii) module functions for observables - these are used to generate output for different observables, such as neutron cross sections, magnetic moments, chargedensities etc.
Module - Function | obligatory for | optional for | description |
Basic Functions | |||
void Icalc | mcphas | calculates | |
singleion | |||
Icalc_parameter_storage_matrix_init | mcphas | parameter storage for Icalc,mcalc etc | |
(void) | mcdiff | ||
singleion | |||
spins | |||
densplt | |||
int du1calc | mcdisp | calculates | |
singleion | |||
void estates | mcdiff | parameter storage for du1calc,dm1,dS1,... | |
singleion | |||
mcdisp | |||
Observables | |||
void mcalc | mcdiff | magnetic moment | |
mcphase | |||
int dm1 | mcdisp | ||
void Lcalc | mcdiff | orbital ang. momentum | |
mcphase | |||
int dL1 | mcdisp | ||
void Scalc | mcdiff | spin | |
mcphase | |||
int dS1 | mcdisp | ||
void mqcalc | mcdiff | FT of magnetic moment | |
int dmq1 | mcdisp | ||
int drixs1 | mcdisp | RIXS transition operator ,eq. (65) | |
void pcalc | mcphas | phononic displacement | |
nt dP1 | mcdisp | phonon displacement (Å) | |
void chargedensity_coeff | densplt -c | coeff of in equ.(210) | |
spins -c | i.e. | ||
display_density c | |||
display_densities -c | |||
int dchargedensity_coeff1 | mcdisp | ||
void spindensity_coeff | -”- -s | coeff of | |
int dspindensity_coeff1 | mcdisp | ||
void orbmomdensity_coeff | -”- -m-o-j | coeff of | |
int dorbmomdensity_coeff1 | mcdisp | ||
double ro_calc | densplt -c | chargedensity (instead of expansion coeff) | |
spins -c | - will always be used if present | ||
display_density c | |||
display_densities -c |
Note, in case of non-orthogonal axes the convention for the components of the external applied field , the mean field, the magnetic moment components, the polarisation vectors etc. to be adopted in programming a single ion module is , and perpendicular to and (here ,, denote the lattice vectors of the crystal structure as specified by the lattice constants and the angles in mcphas.j).