Skip to content
Snippets Groups Projects
Commit 0d2204e4 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

split ripples pages

parent 4388e88e
No related branches found
No related tags found
1 merge request!1911Create pages for each ripple ff (#709)
+++
title = "Ripples"
weight = 20
+++
## Ripples
Elongated particles, or ripples, are typically used to model lamellar cuts or gratings.
As everywhere else in BornAgain
only single scattering in the DWBA is simulated.
This can be insufficient for periodic gratings
that cause noticeable higher-order diffraction.
But for the foreseeable future, multiple-scattering effects are not in the scope of BornAgain.
We choose ripples to be elongated in $x$ direction.
Different profiles in the $YZ$ plane can be set, for example, bar, cosine, sawtooth.
For each of them, different profiles can also be chosen in the $XZ$ plane.
[The approach to setting the ripple profiles will be changed soon]({{% url-issues %}}/60)
#### Implementation
Form factor is computed as
$$ F(\mathbf{q}) = f_\parallel(q_x) f_\bot(q_y,q_z) $$
The longitudinal factor $ f_\parallel $ is defined in $XZ$ plane for the following shapes:
##### Box
$$ f_\parallel(q_x)=L \space \text{sinc}(q_xL/2) $$
##### Gauss
$$ f_\parallel(q_x)= \space \frac{L}{\sqrt{2 \pi}} \text{e}^{- \frac{{(q_x l)}^{2}}{2}} $$
##### Lorentz
$$ f_\parallel(q_x)= \space \frac{L}{1+{(q_x l)}^{2}} $$
The transversal factor $ f_\bot(q_y,q_z) $ is defined by the ripple type
{{% children %}}
+++
title = "Bar ripple"
weight = 20
+++
## Bar ripple
A ripple with an asymmetric saw-tooth profile that is uniform in $x$-direction.
<img src="/img/draw/ff/3d/Box.png" width="30%" >
<img src="/img/draw/ff/2d/Box_xy.svg" width="30%">
<img src="/img/draw/ff/2d/Box_xz.svg" width="30%">
#### Constructors
```python
Box(L, W, H)
BarGauss(L, W, H)
BarLorentz(L, W, H)
```
Parameters:
- L, length
- W, width
- H, height
#### Usage
As for any other [Form factor](/ref/sample/particle/ff).
#### Implementation
Class {{% ref-class "Sample/HardParticle" "SawtoothRipple" %}} inherits from the interface class
{{% ref-class "Sample/Particle" "IFormFactor" %}}.
Form factor is computed as
$$ F(\mathbf{q}) = f_\parallel(q_x)
i\text{e}^{-i q_y d}
\left[
\text{e}^{i \alpha_{-}/2} \text{sinc}\left( \frac{\alpha_{+}}{2} \right)
- \text{e}^{i \alpha_{+}/2} \text{sinc}\left( \frac{\alpha_{-}}{2} \right)
\right], $$
with the notation
$$ \alpha_{+} = H q_z + \frac{q_y W}{2} + q_y d, \quad
\alpha_{-} = H q_z - \frac{q_y W}{2} + q_y d. $$
The longitudinal factor $ f_\parallel $ is defined according to "box shape" in $XZ$ plane:
$$ f_\parallel(q_x)=L \space \text{sinc}(q_xL/2). $$
Volume [has been validated]({{% url-src %}}/Tests/Unit/Sample/FormFactorBasicTest.cpp)
against
$$ V=\dfrac{LWH}{2}. $$
#### Other shapes
We have already stated that transversal $YZ$ and longitudinal $XZ$ profiles are set separately.
For other longitudinal shapes use
```python
SawtoothRippleGauss(L, W, H, d)
SawtoothRippleLorentz(L, W, H, d)
```
with the corresponding factor $ f_\parallel(q_x) $ inside.
Other transversal profiles are also available:
cosine profile
```python
CosineRippleBox(L, W, H)
CosineRippleGauss(L, W, H)
CosineRippleLorentz(L, W, H)
```
and rectangular profile
```python
Box(L, W, H)
BarGauss(L, W, H)
BarLorentz(L, W, H)
```
#### Scattering
Scattering by uncorrelated, oriented sawtooth ripples for horizontal incidence. Rotation around $z$ axis:
<img src="/img/auto/ff/SawtoothRippleBox.png">
Generated by {{% ref-ex "ff/SawtoothRippleBox.py" %}}.
#### History
"CosineRippleBox" and "SawtoothRippleBox" replicate "Ripple1" and "Ripple2" from FitGISAXS [[Babonneau 2013](/lit/babonneau2013)].
Full documentation and API support for all ripple form factors appeared in
BornAgain 1.17. Before that release, the Lorentz factor $ f_\parallel $ had an extra factor of 2.5.
The Gauss factor $ f_\parallel $ was completely wrong up through BornAgain 20.
+++
title = "Cosine ripple"
weight = 20
+++
## Cosine ripple
A ripple with an asymmetric saw-tooth profile that is uniform in $x$-direction.
<img src="/img/draw/ff/3d/CosineRipple.png" width="30%" >
<img src="/img/draw/ff/2d/CosineRipple_xy.svg" width="30%">
<img src="/img/draw/ff/2d/CosineRipple_yz.svg" width="30%">
#### Constructor
```python
SawtoothRippleBox(L, W, H, d)
```
Parameters:
- L, length
- W, width
- H, height
- d, asymmetry
Constraint:
$ |d| \le W/2 $
#### Usage
As for any other [Form factor](/ref/sample/particle/ff).
#### Implementation
Class {{% ref-class "Sample/HardParticle" "SawtoothRipple" %}} inherits from the interface class
{{% ref-class "Sample/Particle" "IFormFactor" %}}.
Form factor is computed as
$$ F(\mathbf{q}) = f_\parallel(q_x)
i\text{e}^{-i q_y d}
\left[
\text{e}^{i \alpha_{-}/2} \text{sinc}\left( \frac{\alpha_{+}}{2} \right)
- \text{e}^{i \alpha_{+}/2} \text{sinc}\left( \frac{\alpha_{-}}{2} \right)
\right], $$
with the notation
$$ \alpha_{+} = H q_z + \frac{q_y W}{2} + q_y d, \quad
\alpha_{-} = H q_z - \frac{q_y W}{2} + q_y d. $$
The longitudinal factor $ f_\parallel $ is defined according to "box shape" in $XZ$ plane:
$$ f_\parallel(q_x)=L \space \text{sinc}(q_xL/2). $$
Volume [has been validated]({{% url-src %}}/Tests/Unit/Sample/FormFactorBasicTest.cpp)
against
$$ V=\dfrac{LWH}{2}. $$
#### Other shapes
We have already stated that transversal $YZ$ and longitudinal $XZ$ profiles are set separately.
For other longitudinal shapes use
```python
SawtoothRippleGauss(L, W, H, d)
SawtoothRippleLorentz(L, W, H, d)
```
with the corresponding factor $ f_\parallel(q_x) $ inside.
Other transversal profiles are also available:
cosine profile
```python
CosineRippleBox(L, W, H)
CosineRippleGauss(L, W, H)
CosineRippleLorentz(L, W, H)
```
and rectangular profile
```python
Box(L, W, H)
BarGauss(L, W, H)
BarLorentz(L, W, H)
```
#### Scattering
Scattering by uncorrelated, oriented sawtooth ripples for horizontal incidence. Rotation around $z$ axis:
<img src="/img/auto/ff/SawtoothRippleBox.png">
Generated by {{% ref-ex "ff/SawtoothRippleBox.py" %}}.
#### History
"CosineRippleBox" and "SawtoothRippleBox" replicate "Ripple1" and "Ripple2" from FitGISAXS [[Babonneau 2013](/lit/babonneau2013)].
Full documentation and API support for all ripple form factors appeared in
BornAgain 1.17. Before that release, the Lorentz factor $ f_\parallel $ had an extra factor of 2.5.
The Gauss factor $ f_\parallel $ was completely wrong up through BornAgain 20.
+++ +++
title = "Ripples" title = "Sawtooth ripple"
weight = 20 weight = 20
+++ +++
## Ripples ## Sawtooth ripple
Elongated particles, or ripples, are typically used to model lamellar cuts or gratings.
As everywhere else in BornAgain
only single scattering in the DWBA is simulated.
This can be insufficient for periodic gratings
that cause noticeable higher-order diffraction.
But for the foreseeable future, multiple-scattering effects are not in the scope of BornAgain.
We choose ripples to be elongated in $x$ direction.
Different profiles in the $YZ$ plane can be set, for example, bar, cosine, sawtooth.
For each of them, different profiles can also be chosen in the $XZ$ plane.
[The approach to setting the ripple profiles will be changed soon]({{% url-issues %}}/60)
### Example
A ripple with an asymmetric saw-tooth profile that is uniform in $x$-direction. A ripple with an asymmetric saw-tooth profile that is uniform in $x$-direction.
...@@ -119,4 +103,4 @@ Generated by {{% ref-ex "ff/SawtoothRippleBox.py" %}}. ...@@ -119,4 +103,4 @@ Generated by {{% ref-ex "ff/SawtoothRippleBox.py" %}}.
Full documentation and API support for all ripple form factors appeared in Full documentation and API support for all ripple form factors appeared in
BornAgain 1.17. Before that release, the Lorentz factor $ f_\parallel $ had an extra factor of 2.5. BornAgain 1.17. Before that release, the Lorentz factor $ f_\parallel $ had an extra factor of 2.5.
The Gauss factor $ f_\parallel $ was completely wrong up through BornAgain 20. The Gauss factor $ f_\parallel $ was completely wrong up through BornAgain 20.
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment