=====Simulation algorithms===== ===Overview of the different algorithms implemented=== __Parratt__ * For optical isotropic material * Very fast * very stable algorithm * can calculate only sigma- and pi-light. Circluar polarization modelled as average of sigma- and pi-light. * magnetic contributions are included approximately for circular polarized light. * The magnetic dichroism in the Parratt formalism is implemented by changing the magnetization of the sample. Because of the limitations of Parratt a dichroism by changing the polarization of the light is not possible. __Zak__ * For optical isotropic material with magnetic contributions * very slow * stable algorithm * arbitrary polarization of incident light * top layer must be vacuum for calculating reflectivity * top and bottom layer must be vacuum for calcuting transmission * magnetization can have any direction in the material * The magnetic dichroism is implemented by changing the polarization of the light. A change of the magnetization is not possible. Due to symmetry of the XMCD effect this is not a limitation. __Matrix__ * For optical anisotropic material which can contain every effect that can be modelled by a dielectric tensor (e. g. magnetism, crystal structure, orbitals) * very slow * algorithm can be numerically unstable * arbitrary polarization of incident light * top layer must be vacuum for calculating reflectivity * top and bottom layer must be vacuum for calcuting transmission ====Simulation modes==== The reflectivity is a function of R(q_z, E) with the wave vector q_z = 2 k_0 sin(theta), angle of incidence theta and energy E. Several simulation modes are implemented to calculate the proper reflectivity. ==Reflectivity== __monochromatic__\\ * Calculates the reflectivity R(q_z) for a given polarization and energy of the incoming light. * The polarization is defined as "Ray 1" in the "Polarzation" tab. * The energy is defined in the "Reflectivity Settings" tab. __dichroic__ \\ * Calculates the reflectivity R(q_z) for two given polarizations and one constant energy of the incoming light. * The polarizations are defined as "Ray 1" and "Ray 2" in the polarzation tab. * The energy is defined in the "Reflectivity Settings" tab. __asymmetry__\\ * Calculates the asymmetry A(q_z) for two given polarizations and one constant energy of the incoming light. The asymmetry is defined as: \\ A={R^{+} - R^{-}} / {R^{+} + R^{-}} \\ \\ * The polarizations are defined as "Ray 1" and "Ray 2" in the polarzation tab. * The energy is defined in the "Reflectivity Settings" tab. ==Energy Scan== __monochromatic__\\ __dichroic__\\ __asymmetry__\\ ==map== __monochromatic__\\ * Calculates the reflectivity R(q_z, E) of the sample for a given polarization and energy of the incoming light. * The polarization is defined as "Ray 1" in the "Polarzation" tab. * The energy is defined in the "Reflectivity Settings" tab. ====Options==== There are several options to alter the behaviour of the algorithms ==Option Algorithm== Here you can choose the algorithm for the simulation\\ __Parrat__: activates the parratt algorithm \\ __Full matrix formalism__: activates matrix algorithm \\ __Zak matrix formalism__: activates zak algorithm \\ ==Option Precision== The algorithm are implemented with different accuracies. For most systems the precision "double" is sufficient. In most cases the precision option is only useful for the full matrix formalism because it can be numerically unstable. __float__: uses the accuracy of the 4-byte floating point numbers \\ __double__: uses the accuracy of the 8-byte floating point numbers \\ __long double__: uses the accuracy of the 10-byte floating point numbers \\ __60 digits__: uses a floating point numbers with an accuracy of 60 digits. (Very slow, but very accurate) ===roughness calculation=== The interface roughness makes your model real. ReMagX uses a model known as Nevot&Croce which defines the interface with a continuous change of the optical constants delta and beta. __Nevot&Croce__: Use a very efficient model to simulation interface roughness. \\ __layer segmentation__: Enable layer segmentation (see chapter "Adaptive Layer Segmentation")