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 5 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,singleion | calculates
|
|
void IMcalc | singleion | the same with vectorized Temperature | |
Icalc_parameter_storage_matrix_init | mcphas | parameter storage for Icalc,mcalc etc | |
(void) | mcdiff | ||
singleion | |||
spins | |||
densplt | |||
int du1calc | mcdisp | singleion | calculates
|
void estates | mcdiff | parameter storage for du1calc,dm1,dS1,... | |
singleion | |||
mcdisp | |||
Observables | |||
void mcalc | mcdiff,singleion | magnetic moment
|
|
mcphase | |||
void mMcalc | singleion | the same with vectorized T | |
int dm1 | mcdisp |
|
|
void Lcalc | mcdiff,singleion | orbital ang. momentum
|
|
mcphase | |||
void LMcalc | singleion | the same with vectorized T | |
int dL1 | mcdisp |
|
|
void Scalc | mcdiff,singleion | spin
|
|
mcphase | |||
void SMcalc | singleion | the same with vectorized T | |
int dS1 | mcdisp |
|
|
void mqcalc | mcdiff | FT of magnetic moment
|
|
int dmq1 | mcdisp |
|
|
int drixs1 | mcdisp | RIXS transition operator
|
|
void pcalc | mcphas | phononic displacement
|
|
nt dP1 | mcdisp | phonon displacement (Å)
|
|
void chargedensity_coeff | densplt -c | coeff of
|
|
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 |
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).