Skip to main content

CRL simulator

Project description

### bnlcrl

Simulator of the compound refractive lenses (CRL).

Learn more at


| Travis CI | ReadTheDocs | Codecov |
| [![Build Status](]( | [![Documentation Status](]( | [![codecov](]( |

The code is written in Python, tested to be working under Linux and Windows with Python 2.7/3.5. There is no required NumPy dependency, but it still can be used for operations with matrices, etc. (see the `Usage` section below).

Determine Delta/Attenuation length:
To create a `.dat` file with the refractive index decrement or the attenuation length, use the following commands respectively:
bnlcrl simulate find-delta --characteristic delta -f Al -o Al_delta.dat 30

bnlcrl simulate find-delta --characteristic atten -f Al -o Al_atten.dat 30

$ bnlcrl simulate find-delta -h
usage: bnlcrl simulate find-delta [-h] [--calc-delta]
[--characteristic {transmission,atten,delta}]
[-d DATA_FILE] [--e-max E_MAX]
[--e-min E_MIN] [--e-step E_STEP]
[--plot] [--precise] [--save]
[--save-output] [--show-plot] [-t THICKNESS]
[-u] [-v]

Determine the Index of Refraction (delta).

The index of refraction can be defined by three different methods/approaches:

1) Get delta for the closest energy from the saved *.dat files (see ``bnlcrl/package_data/dat/``).

2) Get delta from

3) Calculate delta analytically (requires ``periodictable`` package installed).

calc_delta (bool): a flag to calculate delta analytically.
characteristic (str): characteristic to be extracted (``atten`` - attenuation length, ``delta`` - index of refraction, ``transmission`` - filter transmission).
data_file (str): a *.dat data file in ``bnlcrl/package_data/dat/`` directory with delta values for the material of the CRL (e.g., Be).
e_max (float): the highest available energy [eV].
e_min (float): the lowest available energy [eV].
e_step (float): energy step size used for saving data to a file [eV].
energy (float): photon energy [eV].
formula (str): material's formula of the interest.
n_points (int): number of points to get from the server.
outfile (str): optional output file.
plot (bool): a flag to plot the obtained data.
precise (bool): a flag to find delta within the energy interval +/- 1 eV from the specified energy.
save (bool): a flag to save the obtained data.
save_output (bool): a flag to save the output dictionary in JSON format.
show_plot (bool): a flag to show the show the plot.
thickness (float): thickness of the material.
use_numpy (bool): a flag to use NumPy.
verbose (bool): a flag to print output to console.

dict: dictionary with the result.

positional arguments:
energy -

optional arguments:
-h, --help show this help message and exit
--calc-delta False
--characteristic {transmission,atten,delta}
-d DATA_FILE, --data-file DATA_FILE
--e-max E_MAX 30000.0
--e-min E_MIN 30.0
--e-step E_STEP 10.0
-f FORMULA, --formula FORMULA
-n N_POINTS, --n-points N_POINTS
-o OUTFILE, --outfile OUTFILE
--plot False
--precise False
--save False
--save-output False
--show-plot False
-u, --use-numpy False
-v, --verbose False

Examples of execution:
$ bnlcrl simulate simulate-crl -p 6.52 -v --output-format json 2 4 6 7 8 21500
"d": 0.0012016728926447229,
"d_ideal": -0.06613035908221399,
"f": 1.0480597834969956,
"p0": 6.52,
"p1": 1.2487983271073553,
"p1_ideal": 1.3161303590822135

$ bnlcrl simulate simulate-crl -p 6.52 -v --output-format csv 2 4 6 7 8 21500

$ bnlcrl simulate simulate-crl -p 6.52 -v --output-format txt 2 4 6 7 8 21500
d: 0.00120167289264, d_ideal: -0.0661303590822, f: 1.0480597835, p0: 6.52, p1: 1.24879832711, p1_ideal: 1.31613035908

$ bnlcrl simulate simulate-crl -p 6.52 21500 -v

This library is used on the SMI beamline at NSLS-II:

![attenuation filters](docs/attenuation_filters.png)

#### License


Copyright (c) 2016 mrakitin (BNL). All Rights Reserved.

Project details

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (7.3 MB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page