From cc18c60a611971caa853d2ba7399fdf63cb6e95e Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Wed, 18 Nov 2020 15:10:43 -0700 Subject: [PATCH 01/14] exit when number of quadrature points is not 2 (we should fix the case for 1) --- src/FE_subroutines.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/FE_subroutines.py b/src/FE_subroutines.py index 5c11e12..864dddd 100644 --- a/src/FE_subroutines.py +++ b/src/FE_subroutines.py @@ -4,6 +4,7 @@ import numpy as np import math +import sys def setup(nelx, nely): @@ -317,7 +318,10 @@ def gauss(ngp): w = np.array([1, 1]) return w, gp else: - print("Error: This code supports only 1 or 2 quadrature points.") + print("Error: This code supports only 2 quadrature points so far!") + sys.exit(1) + + return None def heat2delem(nelx, nely, ngp, s0, e): From 9dcbf68e7e1d54e24f5ad1e74e8cc7cbc50d0d87 Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Wed, 18 Nov 2020 16:45:52 -0700 Subject: [PATCH 02/14] Not hardcore number of nodes/element --- src/FE_subroutines.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FE_subroutines.py b/src/FE_subroutines.py index 864dddd..97785cb 100644 --- a/src/FE_subroutines.py +++ b/src/FE_subroutines.py @@ -106,7 +106,7 @@ def connectivity(nelx, nely): # Total number of elements in the domain nel = nelx*nely - IEN = np.zeros((4, nel), dtype=int) + IEN = np.zeros((nen, nel), dtype=int) rowcount = 0 for elementcount in range(0, nel): IEN[0][elementcount] = elementcount + rowcount From 5fbe18baa14ecd450bb24ded487e69b943e0e6d0 Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Thu, 19 Nov 2020 12:29:13 -0700 Subject: [PATCH 03/14] changed the true flag from 2 to 1 and also added an if-statement for the connectivity matrix ffr --- src/FE_subroutines.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/FE_subroutines.py b/src/FE_subroutines.py index 97785cb..936048a 100644 --- a/src/FE_subroutines.py +++ b/src/FE_subroutines.py @@ -108,13 +108,15 @@ def connectivity(nelx, nely): nel = nelx*nely IEN = np.zeros((nen, nel), dtype=int) rowcount = 0 - for elementcount in range(0, nel): - IEN[0][elementcount] = elementcount + rowcount - IEN[1][elementcount] = elementcount + 1 + rowcount - IEN[2][elementcount] = elementcount + (lpx + 1) + rowcount - IEN[3][elementcount] = elementcount + (lpx) + rowcount - if np.mod(elementcount + 1, lpx - 1) == 0: - rowcount = rowcount + 1 + # Connectivity matrix for 4-node elements + if nen == 4: + for elementcount in range(0, nel): + IEN[0][elementcount] = elementcount + rowcount + IEN[1][elementcount] = elementcount + 1 + rowcount + IEN[2][elementcount] = elementcount + (lpx + 1) + rowcount + IEN[3][elementcount] = elementcount + (lpx) + rowcount + if np.mod(elementcount + 1, lpx - 1) == 0: + rowcount = rowcount + 1 return IEN @@ -151,11 +153,11 @@ def Dirichlet_BCs(nelx, nely, T0_bottom, T0_left): # Essential B.C. (prescribed temperature) for i in range(0, lpx): - flags[i] = 2 + flags[i] = 1 e_bc[i] = T0_bottom # bottom edge for i in range(lpx, nnp - nelx, lpx): - flags[i] = 2 + flags[i] = 1 e_bc[i] = T0_left # left edge return e_bc, flags @@ -205,7 +207,7 @@ def setup_ID_LM(nelx, nely, T0_bottom, T0_left): count = 0 count1 = 0 for i in range(0, neq): - if flags[i] == 2: + if flags[i] == 1: ID[i][0] = count d0[count] = e_bc[i] count = count + 1 From 3ffd1dce180f5100433804d2feaede741eb09613 Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Thu, 26 Nov 2020 15:56:17 -0700 Subject: [PATCH 04/14] Some corrections --- src/FE_subroutines.py | 4 ++-- src/test_FE_subroutines.py | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/FE_subroutines.py b/src/FE_subroutines.py index 936048a..5f25718 100644 --- a/src/FE_subroutines.py +++ b/src/FE_subroutines.py @@ -267,8 +267,8 @@ def d_basis(xi, eta, coord): """ # Derivative of N - # the first row with respect to xi - # the second row with respect to eta + # dN[0, :] = dN/dxi + # dN[0, :] = dN/deta dN = 0.25*np.array([[eta-1, 1-eta, 1+eta, -eta-1], [xi-1, -xi-1, 1+xi, 1-xi]]) diff --git a/src/test_FE_subroutines.py b/src/test_FE_subroutines.py index 10d67df..74dc534 100644 --- a/src/test_FE_subroutines.py +++ b/src/test_FE_subroutines.py @@ -41,14 +41,14 @@ class Testconnectivity(unittest.TestCase): | (e) | 0-----1 """ - # we test the connectivity matrix for nelx=2, nely=1, as above - # connectivity returns an array which relate the local - # numbering to global numbering. Thenumber of rows of connectivity - # is 4 since we use 4-nodes element and number of columns of connectivity - # is equal to number of element we have. - # for example compare the node numbering of element (e) with + # We test the connectivity matrix for nelx=2, nely=1, as above. + # Connectivity returns an array which relates the local + # numbering to the global numbering. The number of rows of the connectivity + # is 4 since we use 4-node elements and the number of the columns of + # the connectivity is equal to number of elements we have. + # For example, compare the node numbering of element (e) with # element (1): 0-->1, 1-->2, 2-->5, 3-->4 - # so second column of connectivity will be 1,2,5,4 + # So the second column of the connectivity will be 1,2,5,4 def test_connectivity_2elements(self): IEN_test = [[0, 1], [1, 2], [4, 5], [3, 4]] IEN = FE.connectivity(2, 1) @@ -77,7 +77,7 @@ def test_Dirichlet_BCs_2elements(self): # test flags for i in range(0, 4): - self.assertEqual(flags[i][0], 2) + self.assertEqual(flags[i][0], 1) class Testsetup_ID_LM(unittest.TestCase): From d4d4a54c56019a18701668b6dea86eef468d9f8c Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Thu, 26 Nov 2020 20:36:30 -0700 Subject: [PATCH 05/14] wip: commiting for safety --- src/FE_subroutines.py | 2 +- src/fig.png | Bin 0 -> 29361 bytes src/heat2d.py | 3 +++ src/plot.py | 58 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 src/fig.png create mode 100644 src/plot.py diff --git a/src/FE_subroutines.py b/src/FE_subroutines.py index 5f25718..7cfb433 100644 --- a/src/FE_subroutines.py +++ b/src/FE_subroutines.py @@ -99,7 +99,7 @@ def connectivity(nelx, nely): Output: ------ A: integer (2d array) - connectivity matrix, IEN + connectivity matrix, """ # Get the setup properties nel, lpx, lpy, nnp, ndof, nen, neq = setup(nelx, nely) diff --git a/src/fig.png b/src/fig.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc1ec103c8700ea594551ccf8ed9bc6912a15af GIT binary patch literal 29361 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 g4ESNc*SH3~G7zP)5| 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 Date: Thu, 26 Nov 2020 22:27:34 -0700 Subject: [PATCH 06/14] added return in heat2d.py --- src/heat2d.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/heat2d.py b/src/heat2d.py index a0c826a..d530d46 100644 --- a/src/heat2d.py +++ b/src/heat2d.py @@ -75,6 +75,8 @@ def main(): plot.plot(nelx, nely, T0_bottom, T0_left, K, F) + return + if __name__ == '__main__': main() From 5fdf06eba3c8771ffe8de149b7120c1c189cc525 Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Thu, 26 Nov 2020 22:39:00 -0700 Subject: [PATCH 07/14] Cleaned up the plotting function and added to travis --- .travis.yml | 1 + src/heat2d.py | 3 ++- src/plot.py | 75 +++++++++++++++++++++++++++++++++++++++------------ 3 files changed, 61 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index 09b75dd..cc7e2e4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,3 +19,4 @@ script: - pycodestyle src/test_FE_subroutines.py - pycodestyle src/heat2d.py - pycodestyle src/FE_subroutines.py + - pycodestyle src/plot.py diff --git a/src/heat2d.py b/src/heat2d.py index d530d46..11bf960 100644 --- a/src/heat2d.py +++ b/src/heat2d.py @@ -73,7 +73,8 @@ def main(): # Print the nodal Temperature print(d) - plot.plot(nelx, nely, T0_bottom, T0_left, K, F) + # Plot the 2d temperature distribution + plot.plot_temp(nelx, nely, T0_bottom, T0_left, K, F) return diff --git a/src/plot.py b/src/plot.py index 381dbaa..8eb77d9 100644 --- a/src/plot.py +++ b/src/plot.py @@ -1,52 +1,94 @@ -import matplotlib.pyplot as plt -import numpy as np - -import FE_subroutines as fe +"""This file includes function for plotting +the Temperature distribution in a 2d domain. +""" +import numpy as np +import matplotlib.pyplot as plt +import FE_subroutines as fe +def plot_temp(nelx, nely, T0_bottom, T0_left, K, F): + """This function plots the Temperature distribution + in a 2d domain. + Input: + ------ + nelx: integer + number of elements in the x direction. + nely: integer + number of elements in the y direction. + T0_bottom: float + prescribed temperature on the bottom edge + T0_left: float + prescribed temperature on the left edge + K: float (2d array) + assembled stiffness matrix + F: float (1d array) + assembled forcing vector -def plot(nelx, nely, T0_bottom, T0_left, K, F): + Output: + ------- + A contour plot for the temperature distriboution which + looks like the following sketch for nelx = 2, nely = 2 + 6---------7----------8 + | | (3) | + | (2) | ----5 + | ---4-----/ | + 3-----/ | (1) | + | | ----2 + | (0) | / + | ----1----/ + 0----/ + """ + # Calls functions to return required output for the plots d0, ID, LM = fe.setup_ID_LM(nelx, nely, T0_bottom, T0_left) d = fe.solvedr(nelx, nely, K, F, d0) nel, lpx, lpy, nnp, ndof, nen, neq = fe.setup(nelx, nely) x, y = fe.phys_coord(nelx, nely) IEN = fe.connectivity(nelx, nely) - # creates space for a figure to be drawn - fig = plt.figure() - + # Creates space for a figure to be drawn + fig, ax = plt.subplots() + + # Arrange the temperature array in the physical ordering d1 = np.zeros(nnp) for i in range(nnp): d1[i] = d[ID[i][0]][0] + # Creat and plot elements xx = np.zeros(nen + 1) yy = np.zeros(nen + 1) dd = np.zeros(nen + 1) for i in range(nel): for j in range(nen): - xx[j] = x[ IEN[j, i] ] - yy[j] = y[ IEN[j, i] ] - dd[j] = d1[ IEN[j, i] ] + xx[j] = x[IEN[j, i]] + yy[j] = y[IEN[j, i]] + dd[j] = d1[IEN[j, i]] xx[nen] = x[IEN[0, i]] yy[nen] = y[IEN[0, i]] dd[nen] = d1[IEN[0, i]] plt.fill(xx, yy, edgecolor='black', fill=False) + # Create and populate 2D Grid and the node's corresponding temperature X = np.zeros((lpx, lpy)) Y = np.zeros((lpx, lpy)) D = np.zeros((lpx, lpy)) for i in range(lpx): for j in range(lpy): - X[i][j] = x [ j*lpx + i ][0] - Y[i][j] = y [ j*lpx + i ][0] - D[i][j] = d1[ j*lpx + i ] + X[i][j] = x[j*lpx + i][0] + Y[i][j] = y[j*lpx + i][0] + D[i][j] = d1[j*lpx + i] + + # Turn off the right and top sides of the bounding box + right_side = ax.spines["top"] + right_side.set_visible(False) + top_side = ax.spines["right"] + top_side.set_visible(False) + # Plot plt.contourf(X, Y, D, cmap=plt.get_cmap('coolwarm')) plt.colorbar() - plt.title('Temperature distribution') plt.xlabel('X') plt.ylabel('Y') @@ -54,5 +96,4 @@ def plot(nelx, nely, T0_bottom, T0_left, K, F): fig.tight_layout() plt.savefig('fig.png', bbox_inches='tight') - - + return From dd182518b22f51c04a43ac1c22810b624a3ec4e9 Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Thu, 26 Nov 2020 22:46:24 -0700 Subject: [PATCH 08/14] deleted fig.png --- src/fig.png | Bin 29361 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/fig.png diff --git a/src/fig.png b/src/fig.png deleted file mode 100644 index ecc1ec103c8700ea594551ccf8ed9bc6912a15af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29361 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 g4ESNc*SH3~G7zP)5| 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 Date: Thu, 26 Nov 2020 22:52:54 -0700 Subject: [PATCH 09/14] adding option for plotting the grid --- src/heat2d.py | 6 +++++- src/plot.py | 31 +++++++++++++++++-------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/heat2d.py b/src/heat2d.py index 11bf960..98a7905 100644 --- a/src/heat2d.py +++ b/src/heat2d.py @@ -46,6 +46,9 @@ def main(): type=float, default=0, help='Prescribed flux on the top edge') + parser.add_argument('--grid', + action="store_true", + help='Option for plotting the grid') args = parser.parse_args() nelx = args.num_elm_x @@ -54,6 +57,7 @@ def main(): T0_left = args.T0_left s0 = args.heat_source flux_top = args.flux_top + grid = args.grid # Gauss point, 2 is better than 1 since it has less errors ngp = 2 @@ -74,7 +78,7 @@ def main(): print(d) # Plot the 2d temperature distribution - plot.plot_temp(nelx, nely, T0_bottom, T0_left, K, F) + plot.plot_temp(nelx, nely, T0_bottom, T0_left, K, F, grid) return diff --git a/src/plot.py b/src/plot.py index 8eb77d9..9c90766 100644 --- a/src/plot.py +++ b/src/plot.py @@ -7,7 +7,7 @@ import FE_subroutines as fe -def plot_temp(nelx, nely, T0_bottom, T0_left, K, F): +def plot_temp(nelx, nely, T0_bottom, T0_left, K, F, grid): """This function plots the Temperature distribution in a 2d domain. @@ -25,6 +25,8 @@ def plot_temp(nelx, nely, T0_bottom, T0_left, K, F): assembled stiffness matrix F: float (1d array) assembled forcing vector + grid: boolean + true, if the user chooses to plot the grid Output: ------- @@ -56,19 +58,20 @@ def plot_temp(nelx, nely, T0_bottom, T0_left, K, F): for i in range(nnp): d1[i] = d[ID[i][0]][0] - # Creat and plot elements - xx = np.zeros(nen + 1) - yy = np.zeros(nen + 1) - dd = np.zeros(nen + 1) - for i in range(nel): - for j in range(nen): - xx[j] = x[IEN[j, i]] - yy[j] = y[IEN[j, i]] - dd[j] = d1[IEN[j, i]] - xx[nen] = x[IEN[0, i]] - yy[nen] = y[IEN[0, i]] - dd[nen] = d1[IEN[0, i]] - plt.fill(xx, yy, edgecolor='black', fill=False) + # Creat and plot elements/grid + if grid: + xx = np.zeros(nen + 1) + yy = np.zeros(nen + 1) + dd = np.zeros(nen + 1) + for i in range(nel): + for j in range(nen): + xx[j] = x[IEN[j, i]] + yy[j] = y[IEN[j, i]] + dd[j] = d1[IEN[j, i]] + xx[nen] = x[IEN[0, i]] + yy[nen] = y[IEN[0, i]] + dd[nen] = d1[IEN[0, i]] + plt.fill(xx, yy, edgecolor='black', fill=False) # Create and populate 2D Grid and the node's corresponding temperature X = np.zeros((lpx, lpy)) From 20cc90cb9ff4251a7863bd9eff935249175bc3d9 Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Thu, 26 Nov 2020 23:03:49 -0700 Subject: [PATCH 10/14] added example plots and included them in readme --- README.md | 14 +++++++++++--- images/ex_grid.png | Bin 0 -> 94366 bytes images/ex_nogrid.png | Bin 0 -> 19487 bytes 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 images/ex_grid.png create mode 100644 images/ex_nogrid.png diff --git a/README.md b/README.md index 6adc166..ac6d2d6 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,10 @@ This code can be run with: `python src/heat2d.py` -If you want to change the number of elements in x and y directions, or change the value of boundary conditions you can run with: +One can change the number of elements in x and y directions, or change the value of boundary conditions with: ``` -python heat2d.py --num_elm_x 4 --num_elm_y 4 --T0_bottom 0 --T0_left -5 --heat_source 5 --flux_top 10 +python src/heat2d.py --num_elm_x 20 --num_elm_y 20 --T0_bottom 50 --T0_left -50 --heat_source 400 --flux_top 100 --grid ``` `--num_elm_x`: number of element in x direction @@ -25,4 +25,12 @@ python heat2d.py --num_elm_x 4 --num_elm_y 4 --T0_bottom 0 --T0_left -5 --heat_s `--flux_top`: heat flux on the top boundary -The output of the above command is the solution array which is the `Temperature` of all nodes in the discrete domain. +`--grid`: plotting the grid if the user specifies + +The output of the above command contains the solution array which is the `Temperature` of all nodes in the discrete domain and the contour plot created in src directory. The created plots for the shown command, with and without grid, is as following. + +**Temperature distribution with the grid:** +
+ +**Temperature distribution without the grid:** +
diff --git a/images/ex_grid.png b/images/ex_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..dc24eb14a6eb8a7056f0ec6c65cd81347854a46a GIT binary patch literal 94366 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 literal 0 HcmV?d00001 From ca3375139ac21d60f8798d5b2b8aecd173e8c702 Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Thu, 26 Nov 2020 23:06:48 -0700 Subject: [PATCH 11/14] updated gitignore to ignore *.png from now on --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 6fa2a0e..93241a4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.pyc ssshtest +*.png + From 0674967338c648dd0df90d732e472fc37d72eaf6 Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Thu, 26 Nov 2020 23:10:35 -0700 Subject: [PATCH 12/14] fixed readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ac6d2d6..a68f759 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ python src/heat2d.py --num_elm_x 20 --num_elm_y 20 --T0_bottom 50 --T0_left -50 `--grid`: plotting the grid if the user specifies -The output of the above command contains the solution array which is the `Temperature` of all nodes in the discrete domain and the contour plot created in src directory. The created plots for the shown command, with and without grid, is as following. +The output of the above command contains the solution array which is the `Temperature` of all nodes in the discrete domain and a contour plot created illustrating the temperature distribution. The created plots for the shown command, with and without grid, is as following. **Temperature distribution with the grid:**
From ddc079f5857b3c113dcdadb6115c60f35f6eadd3 Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Thu, 26 Nov 2020 23:11:27 -0700 Subject: [PATCH 13/14] more fixe in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a68f759..c847028 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This code can be run with: `python src/heat2d.py` -One can change the number of elements in x and y directions, or change the value of boundary conditions with: +One can change the number of elements in x and y directions, or the value of boundary conditions with: ``` python src/heat2d.py --num_elm_x 20 --num_elm_y 20 --T0_bottom 50 --T0_left -50 --heat_source 400 --flux_top 100 --grid From 0a02d23ef1125b4438d32c412f7472f729f62835 Mon Sep 17 00:00:00 2001 From: Leila Ghaffari Date: Fri, 27 Nov 2020 07:18:54 -0700 Subject: [PATCH 14/14] fix: a commend had been accidentaly removed --- src/FE_subroutines.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FE_subroutines.py b/src/FE_subroutines.py index 7cfb433..5f25718 100644 --- a/src/FE_subroutines.py +++ b/src/FE_subroutines.py @@ -99,7 +99,7 @@ def connectivity(nelx, nely): Output: ------ A: integer (2d array) - connectivity matrix, + connectivity matrix, IEN """ # Get the setup properties nel, lpx, lpy, nnp, ndof, nen, neq = setup(nelx, nely)