{ "cells": [ { "cell_type": "markdown", "id": "f765353e-b8f5-4ca9-8871-7dd7204105ba", "metadata": {}, "source": [ "# Analytical SLD profiles" ] }, { "cell_type": "markdown", "id": "ccc7f21b-705a-4fbe-ac9f-e48790c7a47d", "metadata": {}, "source": [ "## Oscillatory profile\n", "\n", "Use `refnx.reflect.FunctionalForm` to describe an oscillating SLD profile that can be used to describe the surface of a liquid metal.\n", "See \"X-ray reflectivity study of temperature-dependent surface layering in liquid Hg\", DiMasi, Tostmann, Ocko, Pershan, Deutsch, Phys Rev B, 58. [10.1103/PhysRevB.58.R13419](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.58.R13419) for further details" ] }, { "cell_type": "code", "execution_count": 124, "id": "9e92ec6d-a347-4600-81a2-0528e19e9a24", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from refnx.analysis import Parameter\n", "from refnx.reflect import SLD, Slab, FunctionalForm, ReflectModel" ] }, { "cell_type": "markdown", "id": "b088cb09-7e7b-4afa-860c-6f1c4064ac11", "metadata": {}, "source": [ "`FunctionalForm` requires a callable of signature `profile(z, extent, left_sld, right_sld, **kwds)`. `kwds` is used to supply parameters describing the shape of the profile. `left_sld`, `right_sld` provide the SLDs of the structure to the left and right of the Component. `extent` is the total width of the Component. `z` is an array provided to `profile`, a list of distances at which the function needs to return a (possibly complex) SLD. `profile` needs to return a tuple `(sld, vfsolv)`, where `sld` is an array of the same shape as `z`, and `vfsolv` is the volume fraction of solvent at each point in z. If `sld` already incorporates a solvent contribution, then return `(sld, None)`.\n", "\n", "For further details see [FunctionalForm](https://refnx.readthedocs.io/en/latest/refnx.reflect.html#refnx.reflect.FunctionalForm). " ] }, { "cell_type": "code", "execution_count": 119, "id": "a8eea8c4-1f56-4d92-b69e-075f89346c56", "metadata": {}, "outputs": [], "source": [ "def rho(z, extent, left_sld, right_sld, d=2.72, sigma_t=1.0, sigma_bar=0.46, offset=5):\n", " # d, sigma_t, sigma_bar are parameters that describe the shape of the profile\n", " def term(n):\n", " sigma_n = n * sigma_bar**2 + sigma_t**2\n", " prefactor = d / sigma_n / np.sqrt(2 * np.pi)\n", " return prefactor * np.exp(-0.5 * ((z - offset - n * d) / sigma_n) ** 2)\n", "\n", " _rho = np.zeros_like(z)\n", " for i in range(0, 20):\n", " _rho += term(i)\n", " return left_sld + _rho * (right_sld - left_sld), None" ] }, { "cell_type": "code", "execution_count": 120, "id": "43d93801-086b-4d6a-b33d-573b3eca7328", "metadata": {}, "outputs": [], "source": [ "air = SLD(0)\n", "d2o = SLD(6.36)\n", "sigma_bar = Parameter(0.46, \"sigma_bar\")\n", "d = Parameter(2.72, \"d\")\n", "sigma_t = Parameter(1.0, \"sigma_t\")\n", "offset = Parameter(\n", " 5\n", ") # don't allow me to vary. It's used because rho needs to be evaluated at negative distances of z.\n", "\n", "f = FunctionalForm(\n", " 20,\n", " rho,\n", " microslab_max_thickness=0.1,\n", " sigma_bar=sigma_bar,\n", " d=d,\n", " sigma_t=sigma_t,\n", " offset=offset,\n", ")" ] }, { "cell_type": "code", "execution_count": 121, "id": "060cbd52-b37e-49b3-974f-16bc07ebcef0", "metadata": {}, "outputs": [], "source": [ "s = air | f | d2o(0, 0)" ] }, { "cell_type": "code", "execution_count": 122, "id": "fc33fb43-9f1f-46d1-8e01-2f476b144250", "metadata": {}, "outputs": [ { "data": { "image/png": "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36xRo0bp6aef1rx585SZmanvv/8+kPUBoYHwAgBB43V4ueiii7R27VotXbpU119/vXJzczVs2DANGTJEmZmZ2r17dyDrBJyN8AIAQVOnFXZvueUWfffdd4qMjFTXrl1VWlqqY8eO+bM+IDRwXyMACJo6XyqdkJCgp556SkuXLtWwYcM0dOhQPfbYY/r555/9UR8QGuh5AYCg8ds6L926ddP777+vF154Qc8995zat2/vr1MDzlZSYjaJ8AIAQeD3ReouuugirV69Wnfffbe/Tw04k2fISJIaN7avDgAIEwG5PUBUVJTuuOOOQJwacB7PkFFMjNkAAAHFvY2AumK+CwAEFeEFqCvCCwAEFeEFqCvCCwAElU/hZdWqVdq4cWPZ43//+98aOHCg0tPTNWjQIM2ePdtvBQKOR3gBgKDyKbyMHTtWGzZskCQ999xzuvHGG9W3b1/9/ve/V79+/TRhwgS98MILfi0UcCzCCwAElU/hJS8vT506dZIk/fOf/9Tf/vY3/e1vf9NNN92kv/71r3rmmWf0+OOP+6XAKVOmyOVy6fbbb/fL+QC/I7wAQFD5FF4aNWqkPXv2SJK2bdum/v37V3o9IyOj0rCSrz7//HM988wz6tWrV53PBQQM4QUAgsqn8DJixAhNmzZNknTmmWfqjTfeqPT6a6+9po4dO9apsIMHD2rUqFF69tln1axZszqdCwgowgsABFWUL2965JFHNHDgQJ155pnq27evHn/8cS1atEinnHKK1q1bp+XLl2vOnDl1KiwzM1MXXnihhg0bpsmTJ1d7XHFxsYqLi8seFxYW1unnArVGeAGAoPKp5yU1NVVffvmlBgwYoPfee0+WZWnFihX673//q7S0NH3yySe64IILfC5q9uzZWrVqlXJyck56bE5Ojtxud9mWnp7u888FfEJ4AYCg8qnnRZKaNm2qKVOmaMqUKf6sR1u2bNFtt92mBQsWqEGDBic9Pjs7W1lZWWWPCwsLCTAILsILAASVz+HleJ988on69u2r2NjYOp1n5cqV2r17t04//fSy544dO6YlS5boH//4h4qLixUZGVn2WmxsbJ1/JlAnhBcACCq/hZcRI0YoNzdX7du3r9N5hg4dqm+++abSc2PHjlXXrl11zz33VAougCMQXgAgqPwWXizL8st54uLi1KNHj0rPNW7cWM2bNz/hecARCC8A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f7XHHT16VKeeeqpGjhypqVOnqqCgQC6XK4iVAggkho0A2GLTpk1yuVwnbGeddVa17/n0008VHR2tfv361Xjup59+Wu3bt1dmZqYOHDigH374wc/VA7ATw0YAbJGenq4dO3aUPd65c6eGDRumIUOGVPueefPmaeTIkTX2ouzbt08PPvigFi1apLS0NLndbuXm5qpDhw5+rR+Afeh5AWCLyMhIJScnKzk5WU2bNtVNN92kAQMG6P7776/2PXPnztXFF19c43knTZqkyy67TKeccookqVu3bvrqq6/8WToAm9HzAsB248aN04EDB7RgwQJFRFT9b6o1a9Zo+/btGjp0aLXn+e677/Tyyy9rzZo1Zc/16NFDubm5/i4ZgI0ILwBsNXnyZL3//vtasWKF4uLiqj1u3rx5Ovfcc9WgQYNqj7njjjuUn5+vtLS0sudKS0uVnp7u15oB2IvwAsA2b775pv785z/r3XffPemclLlz5+qGG26o9vX58+dr5cqV+vLLLxUVVf5X2+eff65x48Zp//79atasmd9qB2AfLpUGYIvVq1crIyNDWVlZyszMLHs+JiZGCQkJlY7dvXu30tLStH37drVo0eKEcx05ckQ9evTQuHHjdM8991R6bfPmzWrTpo0++uijGq9kAhA6mLALwBZffPGFDh06pMmTJyslJaVsu/zyy0849u2331b//v2rDC6S9Pe//135+fm65ZZbTngtPT1djRo1Yt4LUI/Q8wLA8S6++GINGjRId999t92lAHAAel4AON6gQYN09dVX210GAIeg5wUAAIQUel4AAEBIIbwAAICQQngBAAAhhfACAABCCuEFAACEFMILAAAIKYQXAAAQUggvAAAgpBBeAABASPl/OSBlUw8nwfYAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "s.plot();" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.12.3" } }, "nbformat": 4, "nbformat_minor": 5 }