{ "cells": [ { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Running simulations\n", "===================\n", "\n", "Simulations in RAMP are executed using Python. The architecture of RAMP is contained in the `mcramp` Python package, and is responsible for handling all of the OpenCL operations required to parallelize instrument simulations. \n", "\n", "---------\n", "\n", "A detailed example\n", "------------------\n", "\n", "The basic workflow for RAMP is to write an instrument definition file for your instrument, run the simulation in a Python script, and then analyze the resulting data using standard scientific computing libraries for Python (SciPy, etc.).\n", "\n", "The following notebook demonstrates this basic workflow for a simplified powder diffractometer, consisting of a monochromated source, and a sample with a single Bragg peak, described in the instrument definition file `powder.json `_." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The snippet below contains a small two line initialization of the OpenCL internals required to identify the device on which the simulations should run. For simulations being run on personal workstations, this will be sufficient and can be safely copied and pasted into any RAMP script." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import mcramp as mcr\n", "import pyopencl as cl\n", "import numpy as np\n", "\n", "ctx = cl.create_some_context()\n", "queue = cl.CommandQueue(ctx)" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Loading instruments\n", "-------------------\n", "\n", "The instrument `powder.json `_ contains the variables `Ei` and `Mono_angle` which we can use to vary the wavelength of incident neutrons. First we shall calculate some values for these variables." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Physical constants\n", "\n", "h=6.62607015e-34\n", "mn=1.674929e-27\n", "meV=1.602176634e-22\n", "overAA = 1e10\n", "\n", "Ei = 9.09 # meV - 3AA neutrons\n", "Li = h / np.sqrt(2*mn*Ei*meV) * overAA\n", "Mono_d_spacing = 3.355 # AA\n", "Mono_angle = np.arcsin(Li / (2 * Mono_d_spacing))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The instrument definition file also contains the variable `detector_binning` which we can use to vary the histogram bins in the detector output." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "detector_binning = [-40.0, 1.0, 140.0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Instruments in RAMP are represented by the `Instrument` class, which contains the methods responsible for instantiating, simulating, and obtaining the results of simulations. Instances of the Instrument class are instantiated as follows:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\wyz83832\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\pyopencl\\__init__.py:235: CompilerWarning: Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more.\n", " \"to see more.\", CompilerWarning)\n" ] } ], "source": [ "inst = mcr.Instrument(\n", " 'powder.json', \n", " ctx, \n", " queue, \n", " Ei=Ei, \n", " Mono_angle=Mono_angle, \n", " detector_binning=detector_binning\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The constructor for the `Instrument` class takes three arguments by default: the filename of the instrument definition file, the OpenCL context, and the OpenCL queue (the internals we set up earlier). The additional keyword arguments `Ei` and `Mono_angle` correspond to variables in the instrument definition file.\n", "\n", "### Executing simulations\n", "\n", "Simulations are executed by calling the `execute(N)` method of the `Instrument` class, where the argument `N` is the desired number of neutron histories to be simulated." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "N = int(1e7)\n", "inst.execute(N)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analysing simulation results\n", "\n", "The easiest way to get a quick visual confirmation that a simulation has returned sensible results is by plotting the output of the instrument monitors using the `plot()` method of the `Instrument` class. This will do some default plotting using `matplotlib` of the histograms of all the detectors in the instrument." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "inst.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that there is a peak at approximately 60 degrees. Let's adjust the detector binning and re-run the simulation to obtain a better view of the peak shape." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "detector_binning = [50.0, 0.02, 70.0]\n", "inst = mcr.Instrument(\n", " 'powder.json', \n", " ctx, \n", " queue, \n", " Ei=Ei, \n", " Mono_angle=Mono_angle, \n", " detector_binning=detector_binning\n", ")\n", "N = int(1e7)\n", "inst.execute(N)\n", "inst.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pretty ugly, but not surprising for such a crude instrument. To perform a more detailed analysis of the detector output, we can obtain the histogram using the `data()` method of the `Instrument` class. This method returns a dictionary whose keys are the names of components in the instrument definition and whose values are data produced by the corresponding component. Typically this will be non-zero for detectors which provide their axes and histogrammed intensities." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "data = inst.data()\n", "detector_output = data['Detector']\n", "theta_axis = detector_output[0]\n", "intensity = detector_output[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With this data in hand, we can now perform some analysis. To find the peak centre, let's naievely fit our lineshape to a Gaussian distribution and find the position of the mean." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[8.84435273e+09 6.03711688e+01 1.02435847e+00]\n" ] } ], "source": [ "from scipy.optimize import curve_fit\n", "\n", "func = lambda x, c, mu, sigma: c*np.exp(-(x - mu)**2 / (2*sigma**2))\n", "popt, pcov = curve_fit(func, xdata=theta_axis, ydata=intensity, p0=[1e10, 60.0, 2.5])\n", "print(popt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Giving a peak center of 60.4 degrees (as compared to the nominal answer of 60 degrees exactly for our chosen sample and instrument parameters). Plotting the resulting fit yields..." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(theta_axis, intensity, 'b-')\n", "plt.plot(theta_axis, func(theta_axis, *popt), 'r-')\n", "plt.ylabel(\"Intensity\")\n", "plt.xlabel(\"Theta [deg]\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To save the results of a simulation for analysis at a later date, the `Instrument` class provides the `save()` method. Any component with a `filename` argument will save it's `data()` output as a numpy file `filename.npy` when `inst.save()` is called." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Instrument class reference" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. autoclass:: mcramp.Instrument" ] } ], "metadata": { "celltoolbar": "Raw Cell Format", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }