From 5e22c26cc9489c28ffca7edbb09b657af5d26409 Mon Sep 17 00:00:00 2001 From: Calysta Tesiman Date: Tue, 8 Aug 2023 17:21:10 +0100 Subject: [PATCH] rewriting planar_average_charge code --- docs/doctests/TEST.ipynb | 19 +++++++++++-------- macrodensity/density.py | 10 +++++++--- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/docs/doctests/TEST.ipynb b/docs/doctests/TEST.ipynb index a1a01af..3978b00 100644 --- a/docs/doctests/TEST.ipynb +++ b/docs/doctests/TEST.ipynb @@ -1108,7 +1108,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -1118,19 +1118,22 @@ "Reading header information...\n", "Reading 3D data using Pandas...\n", "Average of the potential = 8.000000069794417\n", - "Total electrons: 8.000000069794574\n" + "Total electrons: 8.000000069794574\n", + "[2.715 2.715 0. ]\n", + "[0. 2.715 2.715]\n", + "[2.715 0. 2.715]\n" ] }, { - "ename": "IndexError", - "evalue": "list index out of range", + "ename": "ValueError", + "evalue": "Invalid vector coefficients. Cannot determine plane direction.", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 34\u001b[0m\n\u001b[1;32m 30\u001b[0m Vector_A \u001b[39m=\u001b[39m [vec_a,vec_b,vec_c]\n\u001b[1;32m 31\u001b[0m \u001b[39m##----------------------------------------------------------------------------------\u001b[39;00m\n\u001b[1;32m 32\u001b[0m \u001b[39m## CONVERT TO PLANAR DENSITIES\u001b[39;00m\n\u001b[1;32m 33\u001b[0m \u001b[39m##----------------------------------------------------------------------------------\u001b[39;00m\n\u001b[0;32m---> 34\u001b[0m slab \u001b[39m=\u001b[39m pot\u001b[39m.\u001b[39mplanar_average_charge(grid_pot_slab,NGX,NGY,NGZ,Vector_A) \u001b[39m#(POINT: no such function called planar_average_charge, only planar_average)\u001b[39;00m\n\u001b[1;32m 35\u001b[0m slab \u001b[39m=\u001b[39m pot\u001b[39m.\u001b[39madd_abscissa(slab,np\u001b[39m.\u001b[39mlinalg\u001b[39m.\u001b[39mnorm(Vector_A[absc_1]))\n\u001b[1;32m 36\u001b[0m np\u001b[39m.\u001b[39msavetxt(\u001b[39m'\u001b[39m\u001b[39mSlab.dat\u001b[39m\u001b[39m'\u001b[39m,slab)\n", - "File \u001b[0;32m~/Downloads/MacroDensity/macrodensity/density.py:1015\u001b[0m, in \u001b[0;36mplanar_average_charge\u001b[0;34m(grid, nx, ny, nz, vector)\u001b[0m\n\u001b[1;32m 1013\u001b[0m a, b \u001b[39m=\u001b[39m \u001b[39m0\u001b[39m, \u001b[39m0\u001b[39m\n\u001b[1;32m 1014\u001b[0m axis \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m-> 1015\u001b[0m a_vec, b_vec, c_vec, d_vec \u001b[39m=\u001b[39m vector[\u001b[39m0\u001b[39m], vector[\u001b[39m1\u001b[39m], vector[\u001b[39m2\u001b[39m], vector[\u001b[39m3\u001b[39m]\n\u001b[1;32m 1017\u001b[0m \u001b[39mif\u001b[39;00m (a_vec \u001b[39m==\u001b[39m \u001b[39m0\u001b[39m)\u001b[39m.\u001b[39mall() \u001b[39mand\u001b[39;00m (b_vec \u001b[39m==\u001b[39m \u001b[39m0\u001b[39m)\u001b[39m.\u001b[39mall():\n\u001b[1;32m 1018\u001b[0m a, b \u001b[39m=\u001b[39m nx, ny\n", - "\u001b[0;31mIndexError\u001b[0m: list index out of range" + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[2], line 34\u001b[0m\n\u001b[1;32m 30\u001b[0m Vector_A \u001b[39m=\u001b[39m [vec_a,vec_b,vec_c]\n\u001b[1;32m 31\u001b[0m \u001b[39m##----------------------------------------------------------------------------------\u001b[39;00m\n\u001b[1;32m 32\u001b[0m \u001b[39m## CONVERT TO PLANAR DENSITIES\u001b[39;00m\n\u001b[1;32m 33\u001b[0m \u001b[39m##----------------------------------------------------------------------------------\u001b[39;00m\n\u001b[0;32m---> 34\u001b[0m slab \u001b[39m=\u001b[39m pot\u001b[39m.\u001b[39mplanar_average_charge(grid_pot_slab,NGX,NGY,NGZ,Vector_A) \u001b[39m#(POINT: no such function called planar_average_charge, only planar_average)\u001b[39;00m\n\u001b[1;32m 35\u001b[0m slab \u001b[39m=\u001b[39m pot\u001b[39m.\u001b[39madd_abscissa(slab,np\u001b[39m.\u001b[39mlinalg\u001b[39m.\u001b[39mnorm(Vector_A[absc_1]))\n\u001b[1;32m 36\u001b[0m np\u001b[39m.\u001b[39msavetxt(\u001b[39m'\u001b[39m\u001b[39mSlab.dat\u001b[39m\u001b[39m'\u001b[39m,slab)\n", + "File \u001b[0;32m~/Downloads/MacroDensity/macrodensity/density.py:1034\u001b[0m, in \u001b[0;36mplanar_average_charge\u001b[0;34m(grid, nx, ny, nz, vector)\u001b[0m\n\u001b[1;32m 1032\u001b[0m c \u001b[39m=\u001b[39m \u001b[39m0\u001b[39m\n\u001b[1;32m 1033\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m-> 1034\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39mInvalid vector coefficients. Cannot determine plane direction.\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 1036\u001b[0m average_charge \u001b[39m=\u001b[39m planar_average(grid, a, b, c, axis)\n\u001b[1;32m 1038\u001b[0m \u001b[39mreturn\u001b[39;00m average_charge\n", + "\u001b[0;31mValueError\u001b[0m: Invalid vector coefficients. Cannot determine plane direction." ] } ], diff --git a/macrodensity/density.py b/macrodensity/density.py index e73fc53..0a31075 100755 --- a/macrodensity/density.py +++ b/macrodensity/density.py @@ -1014,18 +1014,22 @@ def planar_average_charge(grid: np.ndarray,nx: int,ny: int,nz: int,vector: np.nd axis = "" a_vec, b_vec, c_vec = vector[0], vector[1], vector[2] + print(a_vec) + print(b_vec) + print(c_vec) + if (a_vec == 0).all() and (b_vec == 0).all(): a, b = nx, ny axis = 'z' - c = int(c_vec[2]) - 1 + c = 0 elif (a_vec == 0).all() and (c_vec == 0).all(): a, b = nx, nz axis = 'y' - c = int(b_vec[1]) - 1 + c = 0 elif (b_vec == 0).all() and (c_vec == 0).all(): a, b = ny, nz axis = 'x' - c = int(a_vec[0]) - 1 + c = 0 else: raise ValueError("Invalid vector coefficients. Cannot determine plane direction.")