From efc768cce6570f003fbe5cecc0133b6b079b3b8a Mon Sep 17 00:00:00 2001 From: Leahy Date: Tue, 12 Dec 2017 17:48:46 -0500 Subject: [PATCH 1/7] 1 --- SE_diff.m | 113 ++++++++++++------------------------------------------ 1 file changed, 25 insertions(+), 88 deletions(-) diff --git a/SE_diff.m b/SE_diff.m index cbf4968..d73eb7f 100644 --- a/SE_diff.m +++ b/SE_diff.m @@ -1,91 +1,28 @@ -function [pw_se,w]=SE_diff(T,P,n) -w = membrane_solution31(T,P,n); -A = zeros(n,n); -h = zeros(n,1); -m = n+1; %Represents the number of nodes - -%Top Left Corner Interior Node -for i = 2+m - A(i,i)=1; - A(i,i-1)=0; - A(i,i+m)=1; - A(i,i+m-1)=0; - h(i) = 10; -end -%Top Right Corner Interior Node -for i = m*2-1 - A(i,i)=1; - A(i,i-1)=1; - A(i,i+m)=1; - A(i,i+m-1)=1; - h(i) = 10; -end -%Bottom Left Corner Interior Node -for i = m*m-(2*m)+1 - A(i,i)=1; - A(i,i-1)=0; - A(i,i+m)=0; - A(i,i+m-1)=0; - h(i) = 10; -end -%Bottom Right Corner Interior Node -for i = (m*m)-m-1 - A(i,i)=1; - A(i,i-1)=1; - A(i,i+m)=0; - A(i,i+m-1)=0; - h(i) = 10; -end - -%The following represent the values for the interior nodes - -%Top Interior Row -for i = 3+m:m*2-2 - A(i,i)=1; - A(i,i-1)=1; - A(i,i+m)=1; - A(i,i+m-1)=1; - h(i) = 10; -end -%Bottom Interior Row -for i = m*m-(2*m)+2:(m*m)-m-2 - A(i,i)=1; - A(i,i-1)=1; - A(i,i+m)=0; - A(i,i+m-1)=0; - h(i) = 10; -end -%Left Interior Column -for i = (2*m)+2,(2*m)+2:(m*m)-(2*m)+2 - A(i,i)=1; - A(i,i-1)=0; - A(i,i+m)=1; - A(i,i+m-1)=0; - h(i) = 10; -end -%Right Interior Column -for i = (3*m)-1,(2*m)+2:(m*m)-(2*m)+2 - A(i,i)=1; - A(i,i-1)=1; - A(i,i+m)=1; - A(i,i+m-1)=1; - h(i) = 10; -end -%Inerior Nodes -for i = (2*m)+3:(3*m)-2,(2*m)+3:(m*m)-(3*m)+3 - A(i,i)=1; - A(i,i-1)=1; - A(i,i+m)=1; - A(i,i+m-1)=1; - h(i) = 10; -end - - -dw_dx = (A(i,i)-A(i-1)+A(i,i+m)-A(i,i+m-1))/(2.*h); -dw_dx' - -end +function [pw_se,w] = SE_diff(T,P,n) + % Call function from part c to obtain vector w + w = membrane_solution(T,P,n); + % Create All Nodes Matrix (Interior & Exterior) + m = zeros(n+2); + c = vec2mat(w,n); % Vector w rearranged to n x n matrix. + m(2:n+1,2:n+1) = c; % insert matrix c into middle of m matrix + disp(m); % symmetric matrix + h = 10/(n+1); + % Compute dw_dx + dx = zeros(n+2,n+1); + for i = 2:n+2 + dx(:,i-1)= (m(:,i)-m(:,i-1))/h; + end + disp(dx) + dw_dx = zeros(n+1,n+1); + for i = 1:n+1 + %dw_dx((i:n+1),i) = (dx(i,i)+dx(i+1,i))/2; + %dw_dx((i-1:n+1),i+1) = (dx(i,2)+dx(i+1,2))/2; + %dw_dx(i,3) = (dx(i,3)+dx(i+1,3))/2; + %dw_dx(i,4) = (dx(i,4)+dx(i+1,4))/2; + %i = i+1; + end + disp(dw_dx) - \ No newline at end of file + % Compute dw_dy \ No newline at end of file From 0ee309ea09f24eec5ae0003e9794b0e2c7746486 Mon Sep 17 00:00:00 2001 From: Leahy Date: Tue, 12 Dec 2017 18:51:44 -0500 Subject: [PATCH 2/7] 1 --- SE_diff.asv | 46 ++++++++++++++++++++++++++++++++++++++++++++++ SE_diff.m | 38 +++++++++++++++++++++++++++----------- 2 files changed, 73 insertions(+), 11 deletions(-) create mode 100644 SE_diff.asv diff --git a/SE_diff.asv b/SE_diff.asv new file mode 100644 index 0000000..e622e7d --- /dev/null +++ b/SE_diff.asv @@ -0,0 +1,46 @@ +function [pw_se,w] = SE_diff(T,P,n) + + % Call function from part c to obtain vector w + w = membrane_solution(T,P,n); + % Create All Nodes Matrix (Interior & Exterior) + m = zeros(n+2); + c = vec2mat(w,n); % Vector w rearranged to n x n matrix. + m(2:n+1,2:n+1) = c; % insert matrix c into middle of m matrix + % m = symmetric matrix + + h = 10/(n+1); + + % Compute dw_dx + dx = zeros(n+2,n+1); + for i = 2:n+2 + dx(:,i-1)= (m(:,i)-m(:,i-1))/(h); + end + + dw_dx = zeros(n+1,n+1); + for i = 1:n+1 % rows + for j = 1:n+1 % columns + dw_dx(i,j) = (dx(i,j)+dx(i+1,j))/2; + end + end + disp(dw_dx) + + % Compute dw_dy + dy = zeros(n+1,n+2); + for i = 2:n+2 + dy(i-1,:)= (m(i-1,:)-m(i,:))/(h); + end + + dw_dy = zeros(n+1,n+1); + for i = 1:n+1 % rows + for j = 1:n+1 % columns + dw_dy(i,j) = (dy(i,j)+dy(i,j+1))/2; + end + end + disp(dw_dy) + + pw_se = zeros(n,n); + + for i = 1:16 + se_e1(i) = (1000*10^3*0.3*10^-3*h^2)/(2*(1-0.31^2))*((dw_dx(i))^4/4+(dw_dy(i))^4/4+0.5*(dw_dx(i))^2+0.5*(dw_dy(i))^2); + end + disp(pw_se) \ No newline at end of file diff --git a/SE_diff.m b/SE_diff.m index d73eb7f..19afd22 100644 --- a/SE_diff.m +++ b/SE_diff.m @@ -6,23 +6,39 @@ m = zeros(n+2); c = vec2mat(w,n); % Vector w rearranged to n x n matrix. m(2:n+1,2:n+1) = c; % insert matrix c into middle of m matrix - disp(m); % symmetric matrix + % m = symmetric matrix h = 10/(n+1); + % Compute dw_dx dx = zeros(n+2,n+1); for i = 2:n+2 - dx(:,i-1)= (m(:,i)-m(:,i-1))/h; + dx(:,i-1)= (m(:,i)-m(:,i-1))/(h); end - disp(dx) + dw_dx = zeros(n+1,n+1); - for i = 1:n+1 - %dw_dx((i:n+1),i) = (dx(i,i)+dx(i+1,i))/2; - %dw_dx((i-1:n+1),i+1) = (dx(i,2)+dx(i+1,2))/2; - %dw_dx(i,3) = (dx(i,3)+dx(i+1,3))/2; - %dw_dx(i,4) = (dx(i,4)+dx(i+1,4))/2; - %i = i+1; + for i = 1:n+1 % rows + for j = 1:n+1 % columns + dw_dx(i,j) = (dx(i,j)+dx(i+1,j))/2; + end end - disp(dw_dx) - % Compute dw_dy \ No newline at end of file + % Compute dw_dy + dy = zeros(n+1,n+2); + for i = 2:n+2 + dy(i-1,:)= (m(i-1,:)-m(i,:))/(h); + end + + dw_dy = zeros(n+1,n+1); + for i = 1:n+1 % rows + for j = 1:n+1 % columns + dw_dy(i,j) = (dy(i,j)+dy(i,j+1))/2; + end + end + + pw_se = zeros(n+1,n+1); + + for i = 1:16 + pw_se(i) = (1000*10^3*0.3*10^-3*h^2)/(2*(1-0.31^2))*((dw_dx(i))^4/4+(dw_dy(i))^4/4+0.5*(dw_dx(i))^2+0.5*(dw_dy(i))^2); + end + \ No newline at end of file From c1713ed645ff50e936c6e509959e4ba365525b41 Mon Sep 17 00:00:00 2001 From: Leahy Date: Tue, 12 Dec 2017 19:45:43 -0500 Subject: [PATCH 3/7] 1 --- SE_diff.asv | 46 --------------------------------------------- SE_diff.m | 4 ++-- membrane_solution.m | 2 +- 3 files changed, 3 insertions(+), 49 deletions(-) delete mode 100644 SE_diff.asv diff --git a/SE_diff.asv b/SE_diff.asv deleted file mode 100644 index e622e7d..0000000 --- a/SE_diff.asv +++ /dev/null @@ -1,46 +0,0 @@ -function [pw_se,w] = SE_diff(T,P,n) - - % Call function from part c to obtain vector w - w = membrane_solution(T,P,n); - % Create All Nodes Matrix (Interior & Exterior) - m = zeros(n+2); - c = vec2mat(w,n); % Vector w rearranged to n x n matrix. - m(2:n+1,2:n+1) = c; % insert matrix c into middle of m matrix - % m = symmetric matrix - - h = 10/(n+1); - - % Compute dw_dx - dx = zeros(n+2,n+1); - for i = 2:n+2 - dx(:,i-1)= (m(:,i)-m(:,i-1))/(h); - end - - dw_dx = zeros(n+1,n+1); - for i = 1:n+1 % rows - for j = 1:n+1 % columns - dw_dx(i,j) = (dx(i,j)+dx(i+1,j))/2; - end - end - disp(dw_dx) - - % Compute dw_dy - dy = zeros(n+1,n+2); - for i = 2:n+2 - dy(i-1,:)= (m(i-1,:)-m(i,:))/(h); - end - - dw_dy = zeros(n+1,n+1); - for i = 1:n+1 % rows - for j = 1:n+1 % columns - dw_dy(i,j) = (dy(i,j)+dy(i,j+1))/2; - end - end - disp(dw_dy) - - pw_se = zeros(n,n); - - for i = 1:16 - se_e1(i) = (1000*10^3*0.3*10^-3*h^2)/(2*(1-0.31^2))*((dw_dx(i))^4/4+(dw_dy(i))^4/4+0.5*(dw_dx(i))^2+0.5*(dw_dy(i))^2); - end - disp(pw_se) \ No newline at end of file diff --git a/SE_diff.m b/SE_diff.m index 19afd22..ac11607 100644 --- a/SE_diff.m +++ b/SE_diff.m @@ -8,7 +8,7 @@ m(2:n+1,2:n+1) = c; % insert matrix c into middle of m matrix % m = symmetric matrix - h = 10/(n+1); + h = 10/(n+1); % h = delta_x = delta_y (micron) % Compute dw_dx dx = zeros(n+2,n+1); @@ -38,7 +38,7 @@ pw_se = zeros(n+1,n+1); - for i = 1:16 + for i = 1:(n+1)^2 pw_se(i) = (1000*10^3*0.3*10^-3*h^2)/(2*(1-0.31^2))*((dw_dx(i))^4/4+(dw_dy(i))^4/4+0.5*(dw_dx(i))^2+0.5*(dw_dy(i))^2); end \ No newline at end of file diff --git a/membrane_solution.m b/membrane_solution.m index d0b1734..218ebae 100644 --- a/membrane_solution.m +++ b/membrane_solution.m @@ -9,7 +9,7 @@ % Solve for unknown matrix, w y = -(10/(n+1))^2*(P/T)*ones(n^2,1); %output vector - w = k\y; %solves for w in microm + w = k\y; %solves for w in micron [x,y] = meshgrid(0:10/(n+1):10,0:10/(n+1):10); z = zeros(size(x)); From c61a3468603b022d584f6dc319e787507a3b13dd Mon Sep 17 00:00:00 2001 From: Leahy Date: Thu, 14 Dec 2017 10:56:12 -0500 Subject: [PATCH 4/7] 1 --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c25bf87..c64915e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # 07_final_project -### Part A +## Part A +### Problem Statement +Create a function that uses the central finite difference approximation to solve for the displacements of a membrane with 3 x 3 interior nodes. The function should take the pressure and temperature as inputs and output a column vector, w. + ``` matlab function [w] = membrane_solution3(T,P) % Set up initial matrix % T = given tension (microNewton/micrometer) From 05281d173e20ff61e72588fe72d6d0f738514904 Mon Sep 17 00:00:00 2001 From: Leahy Date: Thu, 14 Dec 2017 11:00:06 -0500 Subject: [PATCH 5/7] 2 --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c64915e..73ced6b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Part A ### Problem Statement -Create a function that uses the central finite difference approximation to solve for the displacements of a membrane with 3 x 3 interior nodes. The function should take the pressure and temperature as inputs and output a column vector, w. +Create a function that uses the central finite difference approximation to solve for the displacements of a membrane with 3 x 3 interior nodes. The function should take the pressure and tension as inputs and output a column vector, w. ``` matlab function [w] = membrane_solution3(T,P) % Set up initial matrix @@ -24,7 +24,10 @@ function [w] = membrane_solution3(T,P) % Set up initial matrix end ``` -### Part B +## Part B +### Problem Statement +Using the function from part A as well as a given tension of 0.006 and a given pressure of 0.001, solve for w and plot the result in 3 dimensions + ``` matlab [w] = membrane_solution3(0.006,0.001); ``` From 66a5d7d73a0c4f2a783c4207dab65f9b9ecb7fcd Mon Sep 17 00:00:00 2001 From: Leahy Date: Thu, 14 Dec 2017 11:57:30 -0500 Subject: [PATCH 6/7] 1 --- README.md | 12 ++++++++---- SE_diff.m | 23 +++++++++++++++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 73ced6b..c88c1e8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Part A ### Problem Statement -Create a function that uses the central finite difference approximation to solve for the displacements of a membrane with 3 x 3 interior nodes. The function should take the pressure and tension as inputs and output a column vector, w. +Create a function called membrane_solution3 that uses the central finite difference approximation to solve for the displacements of a membrane with 3 x 3 interior nodes. The function should take the pressure (P) and tension (T) as inputs and output a column vector, w. ``` matlab function [w] = membrane_solution3(T,P) % Set up initial matrix @@ -26,7 +26,7 @@ end ## Part B ### Problem Statement -Using the function from part A as well as a given tension of 0.006 and a given pressure of 0.001, solve for w and plot the result in 3 dimensions +Using the function from part A as well as a given tension of 0.006 uN/um and a given pressure of 0.001 MPa, solve for w and plot the result in 3 dimensions ``` matlab [w] = membrane_solution3(0.006,0.001); @@ -34,7 +34,10 @@ Using the function from part A as well as a given tension of 0.006 and a given p ![3x3 Interior Nodes](./figures/figure1.png) -### Part C +## Part C +### Problem Statement +Create a function called membrane_solution that uses the central finite difference approximation to solve for the displacements of a membrane with n x n interior nodes. The function should take the pressure (P), tension (T), and number of interior nodes (n) as inputs and output the column vector, w. + ```matlab function [w] = membrane_solution(T,P,n)% Set up initial matrix % T = given tension (microNewton/micrometer) @@ -56,7 +59,8 @@ function [w] = membrane_solution(T,P,n)% Set up initial matrix end ``` -### Part D +## Part D +### Problem Statement ``` matlab [w] = membrane_solution(0.006,0.001,10) ``` diff --git a/SE_diff.m b/SE_diff.m index ac11607..d294e06 100644 --- a/SE_diff.m +++ b/SE_diff.m @@ -8,21 +8,36 @@ m(2:n+1,2:n+1) = c; % insert matrix c into middle of m matrix % m = symmetric matrix - h = 10/(n+1); % h = delta_x = delta_y (micron) + h = 10/(n+1); % h = delta_x = delta_y (micron) + + % Compute w bar + w_bar = zeros(n+1,n+1); + for i = 1:n+1 + for j = 1:n+1 + w_bar(i,j) = (m(i,j)+m(i,j+1)+m(i+1,j)+m(i+1,j+1))/4; + end + end + % Left side of the equation + left_side = zeros(n+1,n+1); + for i = 1:n+1 + + left_side(i) = P * h^2*w_bar(i); + end + % Compute dw_dx dx = zeros(n+2,n+1); for i = 2:n+2 dx(:,i-1)= (m(:,i)-m(:,i-1))/(h); end - + dw_dx = zeros(n+1,n+1); for i = 1:n+1 % rows for j = 1:n+1 % columns dw_dx(i,j) = (dx(i,j)+dx(i+1,j))/2; end end - +disp(dw_dx) % Compute dw_dy dy = zeros(n+1,n+2); for i = 2:n+2 @@ -35,7 +50,7 @@ dw_dy(i,j) = (dy(i,j)+dy(i,j+1))/2; end end - + disp(dw_dy) pw_se = zeros(n+1,n+1); for i = 1:(n+1)^2 From 5ce841570990825a083c4dcb63245874cd76c770 Mon Sep 17 00:00:00 2001 From: Leahy Date: Thu, 14 Dec 2017 12:22:51 -0500 Subject: [PATCH 7/7] 1 --- SE_diff.m | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/SE_diff.m b/SE_diff.m index d294e06..090e813 100644 --- a/SE_diff.m +++ b/SE_diff.m @@ -20,10 +20,10 @@ % Left side of the equation left_side = zeros(n+1,n+1); - for i = 1:n+1 - + for i = 1:(n+1)^2 left_side(i) = P * h^2*w_bar(i); end + L = sum(sum(left_side)); % Compute dw_dx dx = zeros(n+2,n+1); @@ -37,7 +37,7 @@ dw_dx(i,j) = (dx(i,j)+dx(i+1,j))/2; end end -disp(dw_dx) + % Compute dw_dy dy = zeros(n+1,n+2); for i = 2:n+2 @@ -50,10 +50,14 @@ dw_dy(i,j) = (dy(i,j)+dy(i,j+1))/2; end end - disp(dw_dy) - pw_se = zeros(n+1,n+1); + + right_side = zeros(n+1,n+1); for i = 1:(n+1)^2 - pw_se(i) = (1000*10^3*0.3*10^-3*h^2)/(2*(1-0.31^2))*((dw_dx(i))^4/4+(dw_dy(i))^4/4+0.5*(dw_dx(i))^2+0.5*(dw_dy(i))^2); + right_side(i) = (0.25*(dw_dx(i))^4+0.25*(dw_dy(i))^4+0.5*(dw_dx(i)*dw_dy(i))^2); end - \ No newline at end of file + R = sum(sum(right_side)); + R = (1000*10^3*0.3*10^-3*h^2)/(2*(1-0.31^2))*R; + + pw_se = R - L; +end \ No newline at end of file