From 6ffe9a33415e3a5238b80520ba7211a4aaedd58b Mon Sep 17 00:00:00 2001 From: mattmaliniak <31718098+mattmaliniak@users.noreply.github.com> Date: Thu, 14 Dec 2017 14:53:27 -0500 Subject: [PATCH] . --- Part F/F_sol.asv | 6 ++++++ Part F/F_sol.m | 7 +++++++ Part F/SE_diff.m | 26 ++++++++++++++++++++++++++ Part F/mod_secant.m | 30 ------------------------------ Part F/tension_sol.asv | 11 +++++------ Part F/tension_sol.m | 9 +++------ Part G/part_g.asv | 5 +++++ Part G/part_g.m | 10 ++++++++++ 8 files changed, 62 insertions(+), 42 deletions(-) create mode 100644 Part F/F_sol.asv create mode 100644 Part F/F_sol.m create mode 100644 Part F/SE_diff.m delete mode 100644 Part F/mod_secant.m create mode 100644 Part G/part_g.asv create mode 100644 Part G/part_g.m diff --git a/Part F/F_sol.asv b/Part F/F_sol.asv new file mode 100644 index 0000000..764aed1 --- /dev/null +++ b/Part F/F_sol.asv @@ -0,0 +1,6 @@ + n=20:5:40; + P=0.001; %MPa + T = zeros(1,length(n)); + for i = 1:length(n) + [T(i) ea(i)] = tension_sol(P,n(i)); + end \ No newline at end of file diff --git a/Part F/F_sol.m b/Part F/F_sol.m new file mode 100644 index 0000000..e7e8a13 --- /dev/null +++ b/Part F/F_sol.m @@ -0,0 +1,7 @@ + n=20:5:40; + P=0.001; %MPa + T = zeros(1,length(n)); + ea = zeros(1,length(n)); + for i = 1:length(n) + [T(i), ea(i)] = tension_sol(P,n(i)); + end \ No newline at end of file diff --git a/Part F/SE_diff.m b/Part F/SE_diff.m new file mode 100644 index 0000000..9338a84 --- /dev/null +++ b/Part F/SE_diff.m @@ -0,0 +1,26 @@ +function [pw_se,w]=SE_diff(T,P,n) +E = 1000000; %TPa Units may need to be changed +v = .31; %Poissons ratio +t = .0003; %um +h = 10/(n+1); %nm +w = membrane_solution(T,P,n); +z = zeros(n+2); +z(2:end-1,2:end-1) = reshape(w,[n n]); +num = n + 1; +wbar = zeros(num); +for i = 1:num + for j = 1:num + wbar(i,j) = mean([z(i,j),z(i+1,j),z(i,j+1),z(i+1,j+1)]); + end +end +pw = sum(sum(wbar.*h^2.*P)); +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(0.25.*dwdx.^4+.25.*dwdy.^4+0.5.*(dwdx.*dwdy).^2)); +pw_se = abs(pw-se); \ No newline at end of file diff --git a/Part F/mod_secant.m b/Part F/mod_secant.m deleted file mode 100644 index b74f181..0000000 --- a/Part F/mod_secant.m +++ /dev/null @@ -1,30 +0,0 @@ -function [root,ea,iter]=mod_secant(func,dx,xr,es,maxit,varargin) -% newtraph: Modified secant root location zeroes -% [root,ea,iter]=mod_secant(func,dfunc,xr,es,maxit,p1,p2,...): -% uses modified secant method to find the root of func -% input: -% func = name of function -% dx = perturbation fraction -% xr = initial guess -% es = desired relative error (default = 0.0001%) -% maxit = maximum allowable iterations (default = 50) -% p1,p2,... = additional parameters used by function -% output: -% root = real root -% ea = approximate relative error (%) -% iter = number of iterations -if nargin<3,error('at least 3 input arguments required'),end -if nargin<4 || isempty(es),es=0.0001;end -if nargin<5 || isempty(maxit),maxit=50;end -iter = 0; -while (1) - xrold = xr; - dfunc=(func(xr+dx)-func(xr))./dx; - xr = xr - func(xr)/dfunc; - iter = iter + 1; - if xr ~= 0 - ea = abs((xr - xrold)/xr) * 100; - end - if ea <= es || iter >= maxit, break, end -end -root = xr; \ No newline at end of file diff --git a/Part F/tension_sol.asv b/Part F/tension_sol.asv index e513227..61dc9f5 100644 --- a/Part F/tension_sol.asv +++ b/Part F/tension_sol.asv @@ -1,7 +1,6 @@ function T = tension_sol(P,n) -num = length(n) -for i = 1:nu -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); \ No newline at end of file +num = length(n); +for i = 1:num + y =@(T) SE_diff( + [root,fx,ea,iter]=bisect(y,0,.006) +end \ No newline at end of file diff --git a/Part F/tension_sol.m b/Part F/tension_sol.m index 0e95ee4..dd534c9 100644 --- a/Part F/tension_sol.m +++ b/Part F/tension_sol.m @@ -1,6 +1,3 @@ -function T = tension_sol(P,n) -num = length(n); -for i = 1:num - y =@(T) (P./T)+3.6534e+04; - [root,fx,ea,iter]=bisect(y,0,.006) -end \ No newline at end of file +function [T,ea] = tension_sol(P,n) +y =@(T) SE_diff(T,P,n); +[T,fx,ea,iter]=bisect(y,.01,1); diff --git a/Part G/part_g.asv b/Part G/part_g.asv new file mode 100644 index 0000000..85a7561 --- /dev/null +++ b/Part G/part_g.asv @@ -0,0 +1,5 @@ +P = linspace(.001,.01,10); +n = 20; +for i = 1:length(P) + T(i) = tension_sol(P(i),n); + \ No newline at end of file diff --git a/Part G/part_g.m b/Part G/part_g.m new file mode 100644 index 0000000..c36bedf --- /dev/null +++ b/Part G/part_g.m @@ -0,0 +1,10 @@ +P = linspace(.001,.01,10); +n = 20; +T = zeros(1,length(P)); +wmax = zeros(1,length(P)); +for i = 1:length(P) + T(i) = tension_sol(P(i),n); + w = membrane_solution(T(i),P(i),n); + wmax(i) = max(w); +end +plot(wmax,P,'o')