{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"\n",
"# Exercise (Loop Generation) Solution\n",
"\n",
"## *Courtesy Ken Sible*"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:14:40.245536Z",
"iopub.status.busy": "2021-03-07T17:14:40.244431Z",
"iopub.status.idle": "2021-03-07T17:14:40.249741Z",
"shell.execute_reply": "2021-03-07T17:14:40.249146Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"for (int n = 0; n < (Nt - 1); n++) {\n",
" u[n][0] = u[n][Nx] = 0;\n",
" for (int k = 1; k < (Nx - 1); k++) {\n",
" u[n + 1][k] = u[n][k] + r*(u[n][k + 1] - 2*u[n][k] + u[n][k - 1]);\n",
" } // END LOOP: for (int k = 1; k < (Nx - 1); k++)\n",
" for (int k = 0; k < Nx; k++) {\n",
" u[n][k] = u[n + 1][k];\n",
" } // END LOOP: for (int k = 0; k < Nx; k++)\n",
"} // END LOOP: for (int n = 0; n < (Nt - 1); n++)\n",
"\n"
]
}
],
"source": [
"from loop import loop # Import NRPy+ module for loop generation\n",
"\n",
"boundary = 'u[n][0] = u[n][Nx] = 0;\\n'\n",
"inner_1 = loop('k', '1', '(Nx - 1)', '1', '', interior='u[n + 1][k] = u[n][k] + r*(u[n][k + 1] - 2*u[n][k] + u[n][k - 1]);')\n",
"inner_2 = loop('k', '0', 'Nx', '1', '', interior='u[n][k] = u[n + 1][k];')\n",
"print(loop('n', '0', '(Nt - 1)', '1', '', interior=(boundary + inner_1 + inner_2[:-1])))"
]
}
],
"metadata": {
"file_extension": ".py",
"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.11.1"
},
"mimetype": "text/x-python",
"name": "python",
"npconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": 3
},
"nbformat": 4,
"nbformat_minor": 4
}