A model for magnetic reflectivity

The model described here is work in progress and this is only intended as a first draft of the model. It is not intended for general use.

Changes necessary

  • Implement faster calculation of multilayers - make use of repetition unit

Changes done

  • Perhaps the angle theta_m should be relative the quantization axis of the probe. That is as described above for the photon case but an offset of 90 deg for the neutron case. Then we do not have to “turn” the magnetization when refining.

  • There should probably be two dd_m parameters one dd_ml and one dd_mu so that also depletion in both the lower and upper layer can be modeled.

  • Neutron reflectivity calcs should be included.

  • Remove the slicing parameter from the instrument. - Done

  • Should perhaps define the magnetic roughness as the convolution between the chemical roughness and the magnetic roughness. This is to my opinion more physically reasonable. So sigma_m_real = sqrt(sigma_c2+ sigma_m2) - Done

  • magdens should be renamed to resdens.

  • A new parameter called resmag should be included to say how much of the total magnetic moment comes from the resonant magnetic species. - Done

  • Make a more ordered way to present the parameters in the reflectivity plugin. - Done

  • Include a separate slicing criterion for the off-diagonal components - Done.

  • Implement inline c coding of the reflectivity calculations to improve the speed. - Done it is about 3.5 faster than the previous python implementation.

Layer Parameters

Optical constants


The ordinary (tabualted) scattering length. For example fp.Fe for pure Fe, 0.5*fp.Fe + fp.O*0.5 for FeO (this should be in atomic percent).


The neutron scattering length, inserted as for f


The absorption cross section for neutrons.


The resonant part of the scattering length (corrections to f close to an absorption edge). Note that this constant is scaled with magdens before added to f. Note that ftot=f+resdens*fr. This is the opposite as to the definition by Stephanov and Shina, thus fr = -(F11+F1-1)


The XMCD scattering term. Responsible for circular dichroism. fm1=F11-F1-1.


The XMLD scattering term. Responsible for linear dichroism. fm2=2F10-(F11+F1-1)



The atomic density of the material in questions in units of atoms/AA3. The density of Fe is calculated as 2/2.8663


The density of the magnetic species relative to the resonant species.


The relative density of the resonant atomic species. In FeO (and a scattering length as defined above) it would correspond to 0.5.

Non-magnetic layer parameters


The thickness of the layer.


The chemical/structural roughness.

Magnetic parameters


The magnitude of the magnetic roughness.


The magnetic moment of the resonant species. This is a scaling factor of the fm1 and fm2 parameters.


The in-plane angle of the magnetization. An angle of zero is along the photon beam directions and 90 perpendicular to it.


Angle of the magnetic moment relative to the surface of the sample. An angel of 0 corresponds to a in-plane magnetized sample and an angle of 90 deg means an perpendicular magnetized sample.


The relative change of the magnetization of the lower interface.


The relative enhancement of the magnetization of the upper interface.


The shift of the magnetic moment profile for the lower interface.


The shift of the magnetic moment profile for the upper interface.


The magnetic part of the roughness of the lower interface layer.


The magnetic part of the roughness of the upper interface layer.

Stack Parameters

Sample Parameters

Control flags


If yes the model will use roughness values and slice the sld profile up as given by the layer parameters. Otherwise the layers will only be boxes compress: If yes and slicing also is yes the model will merge layers with similar optical densities.

Slicing Parameters


This is the size of each layer that the model slices up the model into.


An extra buffer added below …


To come..


To Come…

Compression parameters


Steps smaller than this parameter will be merged into thicker layers. This applies to the diagonal parts of the susceptibility matrix. The units are electrons.


Same as dsld_max but this one applies to the off diagonal components.


Not used and should be removed.