diff --git a/Figures/PartB.png b/Figures/PartB.png new file mode 100644 index 0000000..c3a50ea Binary files /dev/null and b/Figures/PartB.png differ diff --git a/Figures/PartD.png b/Figures/PartD.png new file mode 100644 index 0000000..1c8e962 Binary files /dev/null and b/Figures/PartD.png differ diff --git a/README.md b/README.md index ac136f7..869ce3c 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Root-finding Method used to find tension in the Membrane, given: Error ``` -| number of nodes | Tension (uN/um) | rel. error | +|number of nodes |Tension (uN/um) |rel. error | |---|---|---| |3 |0.059 |n/a| |20|0.0618|4.5%| @@ -54,4 +54,4 @@ Error ``` ## Part G -Pressure v. Maximum deflection +Pressure v. Maximum deflection (MPa v. um) diff --git a/SE_diff.m b/SE_diff.m new file mode 100644 index 0000000..fd864cb --- /dev/null +++ b/SE_diff.m @@ -0,0 +1,33 @@ +function [pw_se,w] = SE_diff(T,P,n) + E = 1; % 1 TPa ~= 10^6 MPa + v = 0.31; + t = 3*10^-4; + h = 10/(n+1); + + w = membrane_solution(T,P,n); + + z = zeros(n + 2); + z(2:end-1,2:end-1) = reshape(w,[n n]); + + num = n + 1; + wavg = zeros(num); + for i = 1:num + for j = 1:num + wavg(i,j) = mean([z(i,j),z(i+1,j),z(i,j+1),z(i+1,j+1)]); + end + end + + pw = sum(sum(wavg.*h^2.)) + dwdx = zeros(num); + dwdy = zeros(num); + + for i = 1:num + for j = 1:num + dwdx(i,j) = mean([z(i+1,j) - z(i,j), z(i+1,j+1) - z(i,j+1)]); + dwdy(i,j) = mean([z(i,j+1) - z(i,j), z(i+1,j+1) - z(i+1,j)]); + end + end + + se = (E*t*h^2)/(2*(1-v^2)) * sum(sum((1/4).*dwdx.^4+(1/4).*dwdy.^4+(1/4).*(dwdx.*dwdy).^2)); + + pw_se = pw - se; diff --git a/membrane_solution.m b/membrane_solution.m new file mode 100644 index 0000000..0f68771 --- /dev/null +++ b/membrane_solution.m @@ -0,0 +1,28 @@ +function [w] = membrane_solution(T,P,n) + % + % T = tension per unit length (uN/um) + % P = pressure (MPa) + % n = # of interior nodes + + od = ones(n^2-1,1); + od(n:n:end) = 0; + k = -4 * diag(ones(n^2,1)) + diag(ones((n^2)-n,1),n) + diag(ones((n^2)-n,1),-n) + diag(od,1) + diag(od,-1); + + % + y = -(10/(n+1))^2*(P/T)*ones(n^2,1); + + % + w = k\y; + + % + [x,y] = meshgrid(0:10/(n+1):10,0:10/(n+1):10); + % + z = zeros(size(x)); + + z(2:end-1,2:end-1) = reshape(w,[n n]); + + surf(x,y,z) + + title('Gradient of Membrane Displacement') + zlabel('Displacement [um] (micrometers)') +end diff --git a/membrane_solution3.m b/membrane_solution3.m new file mode 100644 index 0000000..792c208 --- /dev/null +++ b/membrane_solution3.m @@ -0,0 +1,25 @@ +function [w] = membrane_solution3(T,P) + % Central finite difference approximation of gradient + % with 3x3 (um^2) interior nodes in terms of P & T. + % T = tension per unit length (uN/um) + % P = pressure (MPa) + + od = ones(8,1); + od(3:3:end) = 0; + k = -4 * diag(ones((3^2),1)) + diag(ones((3^2)-3,1),3) + diag(ones((3^2)-3,1),-3) + diag(od,1) + diag(od,-1); + + % + y = -(10/4)^2*(P/T)*ones(9,1); + % + w = k\y; + + % + [x,y] = meshgrid(0:10/4:10,0:10/4:10); + z = zeros(size(x)); + % + z(2:end-1,2:end-1) = reshape(w,[3 3]); + surf(x,y,z) + + title('Gradient of Membrane Displacement') + zlabel('Displacement [um] (micrometers)') +end