Skip to content

Instantly share code, notes, and snippets.

@andyfaff
Created May 12, 2023 02:22
Show Gist options
  • Save andyfaff/79521ea1944da275ffac971353e054f5 to your computer and use it in GitHub Desktop.
Save andyfaff/79521ea1944da275ffac971353e054f5 to your computer and use it in GitHub Desktop.
Volume fraction profile generator
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 22,
"id": "126199f1",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from refnx.reflect import SLD, Structure, Slab, sld_profile\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "845a4d42",
"metadata": {},
"outputs": [],
"source": [
"si = SLD(0)\n",
"d2o = SLD(6.36)\n",
"sio2 = SLD(3.47)\n",
"polymer = SLD(1.0)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "acd1fa74",
"metadata": {},
"outputs": [],
"source": [
"s = si | sio2(13, 3) | polymer(25, 3, 0.3) | d2o(0, 4)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "f40ad291",
"metadata": {},
"outputs": [],
"source": [
"slabs = s.slabs()"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "96dffe54",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0. , 0. , 0. , 0. , 0. ],\n",
" [13. , 3.47 , 0. , 3. , 0. ],\n",
" [25. , 2.608, 0. , 3. , 0.3 ],\n",
" [ 0. , 6.36 , 0. , 4. , 0. ]])"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"slabs"
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "5aee81c9",
"metadata": {},
"outputs": [],
"source": [
"def create_vfp(structure, solvent_slab=-1):\n",
" \"\"\"\n",
" Creates a volume fraction profile for a given Structure\n",
" \n",
" Parameters\n",
" ----------\n",
" structure: Structure\n",
" \n",
" solvent_slab: {int, None}\n",
" Defines which slab in `structure` is specified to contain\n",
" the solvent. Use -1 if solvation is done by the backing medium\n",
" If solvation is done by fronting medium use 0.\n",
" If None, then solvation is done by neither fronting or backing,\n",
" but by another material. This might be a solvent vapour in an\n",
" air-solid measurement.\n",
" \n",
" Returns\n",
" -------\n",
" z, vfp: np.ndarray\n",
" z is the distance through the interface, Angstrom\n",
"\n",
" vfp is the array containing the volume fraction profiles for\n",
" each of the slabs from the structure.\n",
" \n",
" In the case where `solvent_slab is None` then\n",
" `vfp.shape == (len(structure.slabs()) + 1, len(z))` and the last\n",
" row contains the solvent vfp.\n",
" \n",
" In the case where solvent_slab is one of the slab materials\n",
" (e.g. fronting or backing) then\n",
" `vfp.shape == (len(structure.slabs()), len(z))`, with\n",
" `vfp[solvent_slab]` containing the vfp for the solvent.\n",
" \"\"\"\n",
" _slabs = structure.slabs()\n",
"\n",
" vf = 1 - slabs[:, 4]\n",
" \n",
" if solvent_slab is None:\n",
" nvfp = len(slabs) + 1\n",
" else:\n",
" nvfp = len(slabs)\n",
" \n",
" z, sldp = sld_profile(slabs) \n",
" vfp = np.zeros((nvfp, len(z)), float)\n",
" \n",
" for i in range(len(slabs)):\n",
" _slabs[:, 1:3] = 0\n",
" _slabs[i, 1] = vf[i]\n",
" _vfp = sld_profile(_slabs, z=z)[1]\n",
" vfp[i] = _vfp\n",
" \n",
" # fix up the solvent vfp\n",
" _slabs[:, 1] = 1 - vf\n",
"\n",
" if solvent_slab is None:\n",
" _vfp = sld_profile(_slabs, z=z)[1]\n",
" vfp[-1] = _vfp\n",
" else:\n",
" _slabs[solvent_slab, 1] = 1\n",
" _vfp = sld_profile(_slabs, z=z)[1]\n",
" vfp[solvent_slab] = _vfp\n",
"\n",
" return z, vfp\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "d4236c8a",
"metadata": {},
"outputs": [],
"source": [
"z, vfp = create_vfp(s, solvent_slab=-1)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"id": "e2092a75",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"for i in range(len(vfp)):\n",
" plt.plot(z, vfp[i])"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "291db8c0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4, 500)"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vfp.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0545ad5e",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.9.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
@andyfaff
Copy link
Author

@igresh @haydenrob @llimeht this might come in useful at some point. (don't use for brushy type components)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment