Table of Contents
Tutorial 3
This tutorial is a step by step instruction for the usage of the multilayer feature and simulating structural Bragg peaks of thin films with correct optical constants. The files for this tutorial can be downloaded in the download section of this website.
Sample definition
The sample we want to analyze has the following structure
- second layer vaccuum (air). (assumed infinitely thick)
- first layer LaCoO3 (LCO). The thickness is around 160 Angstrom.
- substrate SrTiO3 (STO) (assumed infinitely thick)
All layers are assumed to grow well defined on the substrate with a perovskite crystal structure. The layered crystal structure of this sample looks like
- LaO
- CoO2
- LaO
- CoO2
- ….
- LaO
- TiO2
- SrO
- TiO2
- SrO
- ….
The lattice constants are assumed to be 3.804A for SrTiO3 and 3.77A for LaCoO3. As you can see in this case there are two different termination possibilities at the interface for this sample. Either LaO/TiO2 or CoO2/SrO. Both are possible configurations for the sample. As you will see it will be very easy to switch between both possibilities.
Defining Sample (File: Tut1.all)
Since we want to use the multilayer feature we will not introduce thousands of layers by hand. Instead it is necessary to tell the program only the different atomic layers defined above. To insert this information into ReMagX you should first add or remove as much layers as necessary (via the speed buttons or the menu). We need layers consisting of LaO, CoO2, SrO, TiO2. To be more realistic we want to introduce vacuum layers in between.
The repetition for both crystals is therefore
SrTiO3 = SrO vacuum TiO2 vacuum, SrO
LaCoO3 = LaO vacuum CoO2 vacuum, LaO
The substrate should be defined as bulk SrTiO3. This can reduce reflections because the crystal lattice of the substrate can not be simulated as infinitely large.
In the end you should have 6 rows.
Set the thickness of all layers to 1. Set db to the short description of chemical formulas provided above. Set the roughness sigma to zero. Crystals lattice don't have roughness. Since we don't do magnetic reflectivity deltam and betam should be set to zero. The refractive index delta and beta should be small values. They are not known at this moment. Insert the values as provided in the table.
In the end the table should look like:
layers | thickness | db | delta | beta | sigma | deltam | betam |
---|---|---|---|---|---|---|---|
air | – | vacuum | 0 | 0 | 0 | 0 | 0 |
5 | 1 | vacuum | 0 | 0 | 0 | 0 | 0 |
4 | 1 | LaO | 1e-4 | 1e-4 | 0 | 0 | 0 |
3 | 1 | CoO2 | 2e-4 | 2e-4 | 0 | 0 | 0 |
2 | 1 | SrO | 3e-4 | 3e-4 | 0 | 0 | 0 |
1 | 1 | TiO2 | 4e-4 | 4e-4 | 0 | 0 | 0 |
bulk | – | SrTiO3 | 5e-4 | 5e-4 | 0 | 0 | 0 |
You can find this layer description in Tut1.all.
Introducing Multilayers (File: Tut2.all)
In the next steo we have to provide the program with the information regarding the multilayer. This can be done in the slide “Simulation parameters” under Multilayers. Click on “Enable Multilayers” Write into the edit field “1000*(1,5,2,5), 40*(3,5,4,5)”
Now the layer is defined as
SrTiO3 bulk, 1000 times (TiO2, vacuum, SrO, vacuum), 40 times (CoO2, vacuum, LaO, vacuum)
The file is called “Tut2.all”
The other termination ca be simply simulated by chaning the order the indices to “1000*(2,5,1,5), 40*(4,5,3,5)”
First simulation (File: Tut2.all)
In order to see the Bragg peaks you should set some additional parameters.
The energy is set to Cu Kalpha peak at 8050eV. The const. energy parameters in the slide “X-Axis” are set to “qz min”=0, and “qz max”=6. The number of points is set to 500. The polarization of the beam should be unpolarized. So the easiest approximation is to choose “left polarized” or “right polarized” in the polarization slide.
Click on Reflectivity to simulate. You should see the Bragg peaks 001, 002, and 003.
Because the crystal lattice of LaCoO3 and SrTiO3 is assumed to be the same you can see only one Bragg peak for the whole sample.
Defining thickness (File: Tut3.all)
Of course it is easy to introduce the correct thickness of each layer by changing the column thickness. Instead of calculating the thickness parameters manually we will use the script for this. Therefore open the script window and put following script into the tab “Defaul”
--lattice parameters thicknessSrTiO3 = 3.904 thicknessLaCoO3 = 3.77 -- layer parameters -- assume that the thickness of vacuum layers is 1A thicknessvacuum = 1. -- define the other thickness thicknessLaO = (thicknessLaCoO3-2.*thicknessvacuum)/2 thicknessCoO2 = thicknessLaO thicknessSrO = (thicknessSrTiO3-2.*thicknessvacuum)/2 thicknessTiO2 = thicknessSrO -- write thicknesses to corresponding rows thickness[5] = thicknessvacuum thickness[4] = thicknessLaO thickness[3] = thicknessCoO2 thickness[2] = thicknessSrO thickness[1] = thicknessTiO2
Click on “Execute” to fill the column thickness with the calculated values and simulate again. Especially at the 003 peak 2 structural peaks appear. You can zoom in the plot by clicking and holding your left mouse button and drawing a rectangle. If you want you can increase the number of points in the “X-axis” slide to increase the resolution.
Defining refractive index (File: Tut4.all)
The most complicated part of this tutorial is to correctly determine the refractive index since this requires a large amount of (easy) calculations. But the program can do most of the work. The main idea is to build the refractive index like this is normally done for X-rays - as a linear combination of atomic scattering factors. To do so ReMagX needs the chemical formula and the density of the materials. We will do this again via the script. Expanding the script “default” leads to:
-- define atomic weights [kg/mol] ALa = 138.9055; ACo = 58.9332; ASr = 87.62; ATi = 47.867; AO = 15.999; -- define Avogadro constant [atoms/mol] NA = 0.6022e24 -- define factor to correct units (A^3 -> meter^3 and kg/m^3 -> g/cm^3) f = 1.e30 / 1000000. -- Calculate corresponding densities -- Assume that SrTiO3 is cubic and the a-axis and b-axis for LaCoO3 is the same as for SrTiO3 densityLaO = (ALa + 1.*AO) * f / NA / (thicknessLaO * thicknessSrTiO3*thicknessSrTiO3); densityCoO2 = (ACo + 2.*AO) * f / NA / (thicknessCoO2 * thicknessSrTiO3*thicknessSrTiO3); densitySrO = (ASr + 1.*AO) * f / NA / (thicknessSrO * thicknessSrTiO3*thicknessSrTiO3); densityTiO2 = (ATi + 2.*AO) * f / NA / (thicknessTiO2 * thicknessSrTiO3*thicknessSrTiO3); -- density for bulk SrTiO3 densitySrTiO3 = (ASr + ATi + 3.*AO) * f / NA / (thicknessSrTiO3*thicknessSrTiO3*thicknessSrTiO3); -- vacuum density[6] = 0; SetChemicalFormula(6, ''); -- vacuum layer density[5] = 0; SetChemicalFormula(5, ''); density[4] = densityLaO; SetChemicalFormula(4, 'LaO'); density[3] = densityCoO2; SetChemicalFormula(3, 'CoO2'); density[2] = densitySrO; SetChemicalFormula(2, 'SrO'); density[1] = densityTiO2; SetChemicalFormula(1, 'TiO2'); -- substrate density[0] = densitySrTiO3; SetChemicalFormula(0, 'SrTiO3');
Execute the script. The resulting chemical formulas and densities you can see by right clicking of the corresponding layers and selecting “properties”.
ReMagX is able to do the rest of the calculations because it has built in scattering factors for off resonant scattering. To activate these tables click on “Preferences”→“Preferences” in the menu and activate “use internal database for scattering factors”.
To get the corresponding refractive indices click in the menu “Tools”→“Scratch”→“Get delta beta from chemical formula”. This function fills the optical constant cache with the corresponding delta beta files. A list of cached optical constants can be found in the “Sample”→“Optical Constants Database” slide. To get the correct optical constants for this energy right click on the layer editor and click on “Get delta/beta from database”
Simulate the curve with the correct refractive index
Improving the plot (Tut5.all)
Everytime you change the script or load a new file you have to do the following steps
- Execute the script “default”
- Click on “Tools” → “Scratch” → “Get delta beta from chemical formula”
- Right click on the layer editor and select “Get delta/beta from database”
One thing you should always check is the number of crystalline layers of the substrate. Too small number of layers introduces additional oscillations which are not real. This is especially the case for small absorptions like in the hard X-ray regime.
So you should play with the first number in the multilayer definition “1000*(1,5,2,5), 40*(3,5,4,5)” and increase the first from 1000 to higher numbers and simulate until the reflectivity converges. In our case 10000 instead of 1000 seems to be sufficient (but it still didn't converge). Note that the calculation will take very long if you increase this number.
Since multiple scattering in the hard X-ray regime can neglected the speed can be increased a little bit by choosing the algorithm “Parratt without multiple scattering” in the “Preferences” menu. Note that some functions like plotting the delta/beta Profile will take extremly long as the functions are not optimized to work with so much layers. The optimization is still work in progress.