Skip to content

Commit

Permalink
Parts A-E
Browse files Browse the repository at this point in the history
  • Loading branch information
ayr13001 committed Dec 15, 2017
1 parent 4957f58 commit 3f8523c
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 2 deletions.
Binary file added Figures/PartB.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Figures/PartD.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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%|
Expand All @@ -54,4 +54,4 @@ Error
```

## Part G
Pressure v. Maximum deflection
Pressure v. Maximum deflection (MPa v. um)
33 changes: 33 additions & 0 deletions SE_diff.m
Original file line number Diff line number Diff line change
@@ -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;
28 changes: 28 additions & 0 deletions membrane_solution.m
Original file line number Diff line number Diff line change
@@ -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
25 changes: 25 additions & 0 deletions membrane_solution3.m
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 3f8523c

Please sign in to comment.