From bb8f47ef31e049a54ca31e2b82065ae3ea0b9c64 Mon Sep 17 00:00:00 2001 From: Matthew Maliniak Date: Thu, 14 Dec 2017 16:37:36 -0500 Subject: [PATCH 01/11] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 25ffb94..6105e82 100644 --- a/README.md +++ b/README.md @@ -194,4 +194,9 @@ Z=x.^3; a=Z\y; x_fcn=linspace(min(x),max(x)); plot(x,y,'o',x_fcn,a*x_fcn.^3) +title('Pressure vs Maximum Deflection') +xlabel('Maximum Deflection (um)') +ylabel('Pressure (MPa)') +print('Part g','-dpng') ``` +![part g](./Part G/Part g.png) From 5f8fbb7bef3ee73a1caf6aa521fb42021fd8558f Mon Sep 17 00:00:00 2001 From: Matthew Maliniak Date: Thu, 14 Dec 2017 16:39:05 -0500 Subject: [PATCH 02/11] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6105e82..178a808 100644 --- a/README.md +++ b/README.md @@ -199,4 +199,5 @@ xlabel('Maximum Deflection (um)') ylabel('Pressure (MPa)') print('Part g','-dpng') ``` -![part g](./Part G/Part g.png) +![](https://github.uconn.edu/ltd13002/ME3255_Final_Project/blob/master/Part%20G/Part g.png) + From ac6da036ddc023ec5b619e4c70e209e72cdfbb59 Mon Sep 17 00:00:00 2001 From: Matthew Maliniak Date: Thu, 14 Dec 2017 16:40:03 -0500 Subject: [PATCH 03/11] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 178a808..3a4aefa 100644 --- a/README.md +++ b/README.md @@ -199,5 +199,4 @@ xlabel('Maximum Deflection (um)') ylabel('Pressure (MPa)') print('Part g','-dpng') ``` -![](https://github.uconn.edu/ltd13002/ME3255_Final_Project/blob/master/Part%20G/Part g.png) - +![Part g](./Part G/Part g.png) From 69ddf4dcbc18560afd19def07dc6d4b09ab9a7e6 Mon Sep 17 00:00:00 2001 From: Lucas T Dombroski Date: Thu, 14 Dec 2017 16:41:55 -0500 Subject: [PATCH 04/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a4aefa..a01b4db 100644 --- a/README.md +++ b/README.md @@ -199,4 +199,4 @@ xlabel('Maximum Deflection (um)') ylabel('Pressure (MPa)') print('Part g','-dpng') ``` -![Part g](./Part G/Part g.png) +![](https://github.uconn.edu/ltd13002/ME3255_Final_Project/blob/master/Part%20G/PartGplot.png) From db80288cef526cda6a1a56a6cc5b4bcc08548e2a Mon Sep 17 00:00:00 2001 From: Lucas T Dombroski Date: Thu, 14 Dec 2017 16:44:04 -0500 Subject: [PATCH 05/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a01b4db..13f48c4 100644 --- a/README.md +++ b/README.md @@ -199,4 +199,4 @@ xlabel('Maximum Deflection (um)') ylabel('Pressure (MPa)') print('Part g','-dpng') ``` -![](https://github.uconn.edu/ltd13002/ME3255_Final_Project/blob/master/Part%20G/PartGplot.png) +![](https://github.uconn.edu/ltd13002/ME3255_Final_Project/blob/master/Part%20G/Part%20g.png) From 69ee859ca19969e222f7a88f58d56f57cb9939df Mon Sep 17 00:00:00 2001 From: Lucas T Dombroski Date: Thu, 14 Dec 2017 16:44:48 -0500 Subject: [PATCH 06/11] Delete PartGplot.png --- Part G/PartGplot.png | Bin 52404 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Part G/PartGplot.png diff --git a/Part G/PartGplot.png b/Part G/PartGplot.png deleted file mode 100644 index 0f2b734825a0d60902b5081115f8508ea987d1d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52404 zcmc$`c{o;Y`#$$@gGWOm9v*fBq$H01Tv&Dt=$xC+-cam6{^a@zK2TLIWQX{w5UL z+1pcMi1=_&h*)g-_v3lKNRAEbKfby`_V3T%sJK=B{qZ7)JTYe^lGi3m`t={GcB@3L z|3K=M3nE+pX_B0td;Nz%@&ErW^{a+@eGI{R1_oZ^-6dt76EeQ@T3LFXot+*dEg!yo z`O?vf-X2w@Ovcix(}et*4h(1Ox=?KYfyxmcB23(aGNa_waB>wtk+b%tH02 z?VblVsGqd68yWhNRx;O7a%r$J<+!Mr`^w@>Z@JH<2?lm{S=Rv-wjUy@HlGuA30qS5 z`N+#(xpwW^_x=s5f+nxpD+2-&sSApV#&KeQO@y(rvCquN4qDo8-@b9^czKrvtgVXo z`9|Npo36E=+4DkAsk@TW^{ZDm$+X%{UMEpf(&zIXIPk^YCSF~sXJ}x6anGLBnKn}{ zjg3NVqN1WKYo)q6Ixkcso0^)Ai0zB3bEo*M_u;2&qF~th#TN_5weVNhKLe_*e@fkd zbJKsoAmaGXHWgSX(`{_2O*tOIqkd28%$b^khGtS1}?!J5X&i(h-v5x09HB=TqKgR6Xv4h3) z@AUK$IU$}Oli%NtbrvrDdT{Z`uLzQ!N@Nx7L+Q)HZbMp+bZkfENOI>`Ca4o7EnYy0*H~Il7CMmcv8n@we5LrK{vrEW(y5XU@bHSX?RH zLP^j3{?W;}uQ_KeM)%`VIQ3`m-ebplIIfUdsBW{%?vZd!FYw>`Dqzk3^ywXbK5eHUly9UX^E zD{`JZ@m~1z^W9CRB-wz^9-||z+1mLVl5-o6ZqJgZl5=%+Ws&w0@{Ep8` zf0cZf(0+?1F5P!Y5|NP{SDaqGdL^^AeCZaO$7nm<&YiP=ex6)BE*w9KY3;mQvyqf` zaR2`K-+7giZbMb`7u?-vFhVNUJ9O@&?Nc}gH?%#)bE3C)@v8>n-|$a?`lrlKJX#B;o&iR8=Kns3u^425y~ux%%5GBph(Sd~MF=(9joY_veDwt50@haMu1AE%;8Sp% zlo^e?n3S3Sc6Hy$SRt9|fe#GFSoHW}T3cJayNS8M$9maV<02Ld&iMKB=Nqwuc6H=w zeev}DN8&>z-A*A+FqBp?S8kQ*5EgN#f z9Gsn<_4F9~kGr_Ig!k-!+1hh3B{M2of74+WrU$P-XN9d5w44|+-;#Py`tlz;bc*9p{RjqPWf=MU}Y?HzB7LSkyjq-(~)HwBz~8(p*MHhUqJ>!?LnTi`gZ5 zeC{qTSV}jOlKMjFxZK8c_nxmqcumuB{rdIm_3PKH%2)`$5axEf`+O$KW&9Q!J$KHk zQ~KXOnjqzQtH4vn^AL*;p4X{Uw>p(HH5(9EUp#kCG@FzB{rznk9zJqX)zCQ27ZbiR zF}#C?oSOChQ6;0@`gtZAYHFq4Gb0Os2U~gU?y5Z!I9D`^fmBwmWooA-Bqr`Umzk5( zU1-nLe_T*dkhNbBsnP5ASAj*3g9o$27mF7IQ39EJ~2_F$K2Xl z%zZ@9b>>sN2<994VBo?|DXFpzo5;yFZ}wXp&X~4AO8$JEYWJ-@#}+5QA8!p&o2mUX zoRM_ufmr>QFHvKybU#d4)kog3w6~cCuwhF7{?aHMb1hje?(=_e*y4K4PA?Nmb{Su< z#cA8tKZW*fLsBg*Ee^e};!7WyR{95Z5AT>@$<^bdVV6m`ckff#u|Ir#Q7T48 zMx~w;;}a9I9-{`WM#XlS0U68*$$g&e`N=yaOSD$VcoPBxI-1$ zkDou^k_t~w=2+C0mzNKh+UEY4Ojd)1O~N&J>cFXlqbXDEH*Rb_dGh39!SA*_{Vv^C znm4~O_tEn5^48qYw6(RJ-pOoVP+e1Vi}`R+g&*n#>uaMD*GC9s!wOrSEVtF=1!VAW zjrw?zkg+NxE1^Ai;^J!OMNiJSX8Jrl>JsEq{NxFr_w(tw*G)}2GmSlEo<7q*xqOb{@I4vRmAVm7Tp|iu$IXi%=F*HbY_3CKW_Vr}#6!C65{<+}Uft zWDfl|&sO^TWuJL^L`*P7ZSZsAIUSu;kE2}&&7b2mN9sZU z<9e3DXAKOP``5OKI(8NPtl)bhWRm$|;=J-L*6*j>*jQP~mMv@pfp$b5Qr=NWIlugP z=-apCBHpexr=sy5GI=i_pXMZ&x>$iuqkDSX^r~)dN9Inxbm_mIot+&^rDOUH)r_j| z865+6;^({HGE{eOy%sbjJAU_o?vXup^CRgxS)H=hQ!)bP=TAlsxJs-v%$lw(GL>(x z$+L=&k1yp>K`Qtv^N9PhkB@HU>F6gG9t3laAE}luf88nDv}yT^iP-T0GG%FFr(Z2pGN8s8fdkZ;2rnV3?r^|BF}7 z$dc)2pIdvsP^Aq{Oib+D*F_T8eNet>n8->mirt2Fyz63PV;$x=RaRG5r#Hzijf#xO z{O~hWd=tyj`t@s5W%B&O!k2URgspCLIz8!=aZ`(&SJ!UJ(&eoY1BR)e9gFbq35|%b z>TYgrElf_9bF^8d)KO3fnmv?{ki>+v9{6p2vMAyX$FAS&6OmO^6k8y4M4lEC9lo^9 zYu^#)AnsmK=|hJa-o8D4yXJwY{Vd8%L|$kF2PJ)1vV8=gW9I8@vy+k5Sdq=oS*5+S z`j=?j{!K)fq&|Hso_x!!<#K2JN?HHaEi{<|7bHB7auo#xOY^d13|=uWcE}-9T@u+> zW82h=!oWPC=g{%&T7PEkZFZ5GOW)sY9&uW~=O~Vq-==FiU4l_6L#EV2o&$OTot?ZY zCr+F=b?TIFZ*iiOr*MU24Go_>E%L(RwVA2@T8DRHyOvD;s7G?sQ}+9jQ`w zoxjd3BQN~pW^0%h?!q9gx>|AZ^BWUNs(6ktPpU%)5B{B<{aWV2&d&a4HUB$9`uq1P zyYj+k&Z#EE*UzueHYFz~d@RMO zr&N2XN5*G1{At5t*Tu?Xj-4-FzI=&lo$r2+dfT?T`ufvdUJHM$7VlY~JXsenVl&=X zxz<@|zi;2ZCkyZ61dTs>6_&d6llObMOc{#p6ll21oT19=(NmkjyE5JeDO#+@yziF&1XjfZKHU{jV7WO&)cz}yUSn~wU8^1PXhA^%G6fJV zyNLDnE`7(MVKs&0$3wR7Qs@(mtIM*I;L*5WJulLTB7WKWRXF3;Yes_l0w*6ex%AgO zH7@f2Qb*Rc_-(0jtCWZ0$5?USLy1e)Mn>HU5|`TjFI0Mrbpq)MxP4o^pmivggQ7^@ zZCb%Ysgiy~qvbslzd>Yt{D*lhTtYdVnU0YW;OFQqnzz7xCH+hvFbyw#$|Q~+ec{w| zzdx=TFzx%>5PQ?yXi3!qtdo)32PGxFKixa*5MXrn>{%+i&yug1rH*f6cvQ>AeNDmT zM>Solwz*u-Ro=sLo?CDn2nWq1ku#RcwU&mauBS$JIwQN+tc5k6LVJJ;ur$ zQuV|=i)kX^Mo2$3eShHA!pg;$FOM#MFTU89+qy_iWX4y1N6g-kEgmYoeEG78iOF;# zvPrv1GOoRpc-noj-Fxf8{QUc$t~Fwpd*wM7mX@-qk|hIHrRU^wCMTUol2lKe*nDnl zt(SiNq-SLKytzAP3mbRQYVh8@d+mI-`tS2aJqcSgA60R1boBeNme!lsxT-7AE4qwK z6;3>_)@=Q3(TYohr)qXr*54P^UHSRZ@>%todAA5ZKYx_M*kWFDQV9mSThzwJrWhzD zHI>tK5J@haMf8S?O%TVKr-mmkCOv%>`4Kpz_4=FMSC^lkxVf{ln5LU307YaU-oCXE z(g5~HT{uErv`5sAaV6|%g~t+ZW@RM_6-_czntZwtVeC^?duNjQI911(AD+8rG2;Za1rofZkQyw(n}i?v0Get ze0jF(qR7t9r&jE97i?^l>mTbKrROd(Gj2Y+dGLs%|yVB@puGP8;CS_cHS== zr#=@a?Y-=fl>PPTxl7AS=UM9?6%0u?nr)|NR&j91IThWkk#O|OyLZ=o*lQ?zlpA0QW*pM!FmHP^4s!EGuFIQ`;yr%UHbd* zm=7SGOY>t5pwo4}AMIFreEimu?CLyMzvt$W(eiZdG$mUJm;BzGr%yY6Wm_H87P5RF zi9sHgX~{K~T2va@ey^rA*(4`ceNZj);1s8<=QwMBUV*9q!aikbi<Uta9W<9VqKGA zZZ49Xt2N)MJ}rBsMdbI_r~UJ@Z$qCt^X*u86metfH(S>65bEi3YXj;7e8#12X413B zT~Sd{KzvRunP1*Vae;R&L6oqUEz)U;jZo>2ryo8toO1c^uO$D)1AbEFN^dX=Lo>X{ zu|sBUm6t}4@Yt^_eziS6`sTHt*n-#mrPBg; z?5OxE(qqif);3E_lc?2GndRl>ViAE#Dv@$V zd-m)Z9v*&fUEee#XO|+R1ogmj)XT!w_H6x!ni{3C$e^H&BNGQ%ThHt9@$u0!FjOx5 z+8q!O0HzhN+|Mq%G94}U?ivv_NG)C&s$MNc=k7B0g?=axaM2OC4V_-?UJXvkw)PM`&;#v)PpN-7J%7^Eo3SED}%?ZNI6zn_fL zjvCLaw|qWlB4yY&Q(UlYVqz1LhoWY^>|Tp|eDmfFn0;McHqZ$45f%|vYKP<0nZYZR z8e?x5>FDrls+z-jtWBr^&CM&z%SBE-i@iP*hsU{0>XcHZ)Wf{*Pm3T17lk_J=jWri zl%K@zy2u{ECKWrzH16$jit=$sBt?)4AX!5L?_lxXDb>hl&z}=(3EVz^h5S$`h(tO5 z8Qv_2kxV5FYWsA$&Fc0;^ikp_Z%j5BMJZq|)~!vw_bo>2WUA8Vb}8+)v)3bj0OL$Y zuvTu$B#MA)c}Hm8RmxeJ)QGH^^^MVx|ZWQ`=`Thvl7YIh&2 z(-=(Hsvx>uRe(wDgmlkqDRo46Mp&0yi3_GoEt;yIg%j?SNn zfHj{lsVBU}1^I5>vNIQ1&UE6cFnG8}*8kJX#LoCevbuF$ zh(rJ4$|A?Eos5jtQEUK;04rGSBe!K&&#QlWp=W3)3Dk9qjgylz*R(R%bIJYg20?17 zTF51Y7LjI`~3OyO(w{vUQ?)YgeY?V{{5(^lzRP;5E}NH+S*Iq9<+H@cWO*m z=K~J3c|G2K>Au?xWG#R(eaC))n4PSwpN?)ziQSw`<$Q|jF;KhRu-1ta@2+iQYVqjL zl&<*>W-Ma!+0yrYUthpzdqMc|cSA3R?dW&zteM?Zc|#$E83M-4@3z9>j&m28zx`;G zGpg`C%M<;jcy6Tirnl_tBYDA{w4$yxGPd0T`8+`dhJI#dDPpy~WuBT#Vy_J%IpmGs zo!Rmj5Pn%XqS<|0%nUbYfb;-$w?yE0h>FuGiaJ@-&l_Z#v;3w$XT5IxeMD$+AX;3?BWw=<%w2Nep!>gvK^(u_}R>3c>&>Y2A#?YoMzHTF8**H>^1 zWs$I`{3zu)zCT9o*0`P8BVj?o+|$`-o?K@1s!3+AVc*hW7m#h1)1ypVy);qTaFB~s3enRR*P<7I_8h2ufRIa>Q)R+1m4 z7TFP7a4K49+ClN3ygFU7hLdt@X&&)`byk1P&}4VKuJ$~};zx}^qxriVI~-P+XUZN# zB_+xFExHMK-inA2?MMwW7rJ)y_%UZ_>ZtwKDvbGJfGwg*-&y7bvmnv+TdE=XcelO8 zNc^VWF@XmcA+m~#*^gXkoE~oW9BnsyANGs+&>6@>(~?PU)A4f@LC&tOKOUOx+^*g& zr6M6AA-lHx7sd2RcJ@!#l08YrA|fI+z2zh_c_`}5Qfgy;l}TyGTkweb`}_U;{J=Fz z-G<-HzthjsTLsua#J)oP#;STKefh`maLMJr){76Jj-njkQ&dz0@NIXyDIjP^o>fsr z-Q0MO#gg_2cx1Tly=|w`o2zx5ohRR1+tw;soo7^Xr@}@>g+f{CN1|@Ou!zXtxj9)- zqgol1oTjut1{xamZ$oH?yCfc8Pxl;aR&sV0vT!5^qpmS^hSKSc%Cbp4)bjjeUzf~g ztf|Ak^UgJ0Z=lppXUE!NdG0kCaH!0$#YHR-nAq>eE@v~GI>@>Hx)-2?;0O1 zg&DS)xw$wM?&;_3bab!%Oji(8I-7H@^QUd)QOF@Xuy3E$_czz3PcfGMczA`5A+$;W^A6hie;qP`P&T21(_@WNxL?loR*w@kbT%jbI2XlN{0g&uEFR<0%F?cZOQr)n{A zbkOQ7q}5K}37Og(Jz`E3tYSPG%YT+gJF-$6zlmYGpl~kEqOc4O3^W$AA9a>{dea$c zz|fFohUqI%@|OUHCz+WPR8&7hx%ch6R`I2_Hl&o#q>gMUZ(?nAu5#Dl^K%eF4V^gl z96lAz@nRvQy8L$L;9ZVT`?g#vYfgvn#$qgG4OGlRa<{EJ_zn^*D!dC=@oS!G!#r)* zk~75A&D(Z17N0XT9B(gp`{|Pd0re{@_VMrt_pW3&t1tXGe_znJboyXDN+im|Y^%QM zW^!_XO*cp$;T?4Hw10oqTkwxvc&4uqp%~%Y`NDQOV(T^Y#$h+Wug@_h9D;SCf)9Cp`Y@7`@u zItrE_q)gFy{C>4%f6Ti9dw$PP^>4kF zT2yo$tJ?{-dR+h; z@zCAR*!?yVsUX$kJvt^sWn)B{5--~7j$yU*fUBIzF?jvucHk6O3fi;JH6R9{*)gt^ z#BcEK>(^PpziDfCNv80LO||c$$Go8T8g8ILk}N5EGX#I zo^R$5Crt2c*_(#3+eA}_eSD0JSXXGrDs?xg&iC!DSeZRnGls+m;!)}mFY+npoR()j znvjq)pyHhA5{&-vSmVJ?dio!~etpH500AF3E?z@h^ohnVhTXgC=DRMNuYZuzI*T0b zot#XJjaTr12y{LxKQ}d%vQ{C8Wgx$uP4e!l3@w=pq844Klic*XcR%>^$JOpZxN+t? zjv8C~>Nrz>37gNXMarNl&A;j&Tq@=mkq{LeH&X%af#|nbC~aOHnwhzOaW+3cA5e6D zaZ&A26G$yP(V*D5Wf&(-Yo1V4Bgb92rWk+Wyci1{yj>1M~jjy_<@ zI>Ml@--d39bIVQfj)N&mKTbGVTkm9Is{Lv@ha4Nu<&g=+w7gmPb#KWLG`2C#g$Yqn z@|82`<$$&xtt7T5~ANyjva|bxL1Pui7Pg zpgN49^9X0Jgy{JCHGbB`J-_yJrJih&EuB~MVZKIgYIJ+ML1ApiM+pN%!=}CgaQCZE ze?no+95c$8;0W_}5h`TLK4vz-aoOA3+RDn-S7$0WIJH-vUi1$J1w=92CM;j}SG}{` zr?|$VRpx}Zkt;j^$#Y!_wAEl;9fmb*-2L?PtDgWbRg5EU-C9M?6kR3TR#l5c4U~5H z*5N6K<&~8Va?3-8FGBmX_lj@X5`xLiZ~e`fXC*E!o~Se~c=lO!WSYXeqZ-QqteL0# z_g(h#x*$;(;x*VZboBaODwZQE6V^T5-R;+R9R4#qYrTBUz%k*tt?e+B5ax3RMGm`G zG-hXJtjYpjy8isQ=*IA&`VjR@6~qN}Qr{e%R*6_Insx)ffYr z8me8wiWVbpDh(}A(jf({A-DeaPS)d#xOsDFBs#k{#y zRaMa}9I!*{$zsD4a`-cZTKjo4AF4aP$`zTqd7SOh{S%9b^ao;&O){5+ z>JO%fDMl<4@;c}Y(P9#il8`_ai0gmenW@bcAzMxHM@j`4x6K|*Bj-tXWpkP=tFU8Qkz{7CRPtOPWbr6F?yv6uPY%E%aOdUSFE zX%uyToE+;cAvU(=>wQH|qQ4$n;9?JLiAHugGBL3nF#y>9e2gbb1uKANkM#UtQh>)$ zqkLordDN@Z=gu9}I|oF|Cgs7czw6|#jm&beQGAHz1-$ZxaRW6eh=YHqYz6!q?!E!#GI<(C3EGxaHejt+S z>+8Ev@L}l*3?wlu96A|#>ArffS5mC^0des;AlA4;rh@$Zutor(K`5J=o68HhRCJ%B zx$@|d{qA#W`|Sn@bPW9)ZHpE3gW-#Ca$3bYDYkF>TwAMryDtVF4}6@uUux^>T0jjN z8yg!QUiiS9lwU7d70owa3D!z@09sq|Adnd!K78o6G+S6)%+$Y2-dTZ1#kC}1neE-j zk0US!DHQVGK~UiH=g*%zP*pS@h}kw(H#9U%>NaDkl%}S>sj0bcX!g&Owq5hR>0#JN zK)9a7u@&YeX2Bvv+%n8ePENU<$ARJ@1yWH_wU+rl%|%BjgHPfI6ePc(bUi+pt{&M_ zeZ714F4{Untek{ZOz!GlXK@;3Wo6;t`}glZpWxl`5^|iF-{N#m4u6fZy`3F3>rrQ@ zf1#nFfPFXF)IB_k{H@L*^0l@yHNbh&(Uj~be*mLZ@fE4Fx zeSPG@3m9T5xvrkxG>BeYOw6!LPEFkUi6n2@qw@EK%r=(fH0Nw1heVB*Os2Sr(k<2! zbS|Nx^_BaG!x_TQA1>)>W@(x3_4hnFSnBtW9N^_uu6#?Z5HlEOh>t=$Clw#4A|aCK z)nU?mUb>{^kNp8?ZwI+VB43goK3TZp9?zK@dDzw|7oM^T5Qqk0;p{5o*bckvB ztlP{;>%r3kWHEUai#J^8&xwl{&(C}PkN9e~wFqtriObVNU#1snB}<&YZ!GD? zvfn*6d5ev>YVt#dRq8t*vDW5BJC5g;mX&EH94)}zBYrv?j^s4Gu+?3if*oTagxz0D z0O;nSr2CEjibllGht(_SC90k}^^2V(PrI(hj`rGzpNB1KoagTEmi6~VL4OiD3+#o2 z3GH=3+6V0`U*F|JmCHKX+VV~>KwHHe+QCEI93v!Ow7IzqDLfHTDZ94Z9(X&DogOROqn)`ouFr4I z_+i1nr>Z(n_JPc}#Pym{(X(fEMC1Orq{pa=plO+hM%8(=uOI_L;O*(@nX&(l*&c8O zYTJBc+xj?y$IWf-JM~p)2;# zbzp|@9P8ZY@L*XxW4GOx)N5iPM{JvdjdHO}Gc)sxioQyb;Gsh*^#z3|)TuJM9VJGm z&g?DD&!3!}EBPGYPqXyvxW)0OZgXFh*`a8xOunTd97q!-W^c(+ zo`|vz0Y8gFlZv>e)`V#2VU-pcTf;M=`OluE=ElavOi{{Zj)u;!dA{8v<9pPhU8rVM zWuKIk56qz{DJhSIcI+U|3>>znwTR?9c<_Ujz@;6~6T%czpG<4e1{(=7?Gx_NKB)BG zQh4Mz;4zuJp1yuIn=2F}2#s(h4jf(qVUdIFDDB7-@+gj|%hXeS{0h5U z$g&5JZ#w+u9Bsv!z&M~q#^iZCoNZ&9t$n;asD&# z0Sez8&juYG9k{6AY)tOcooFxE6ku_l83u~^S65zt`%6xKm1Z|Hy?@WIx6YJzbh17* zG#r90>%f7Imo7wFM|FqauMyTQEHmBg8p>0Z)4!e;_nI4tr7kb~qQx~j>Tp`N6e`@( z!a~6qD=qD0v!-nQy~9_#pE>nNmNTS7$^UVmnml==A*^9HGr7#g^Fs6aSN57YlWAU8 ziM$gXjX*sqdm8P1&NwLIugc5QQd426BBQD5?l!tDB0Y5kb zK^scuCYm!E;5>v3ua}Jl0|n=CO&T#%Bo=;`%DIWY%D%2HA8>ybhK`RPKf=jNm;=Cr z0Ic3zmlyaXmuFU`l%;p4?$@u!txN?V?uNf4V0CIaZ5QLbejzO`^B_ig`e)AH6^t+T zz@e7`g%I?ZPKe$vDBbFqB>Djn-S8$=d2L7QwCn5FSfg^kr6Rhk>&sTi#eAO%L=ZGt zo0leciC9zIPyx^3IGGXIs* zP9<L(57^vYg)UXS{(Li3Mj;<{@zCkf!4rE)3RiNp1g54Z{94F7ywinc!maPY;)ax9y=ZGD3x$#%0Mv)idLhv$s1k| zQf((^7Yi&^m>2Xwv!$gK>JwTt%?=%OA38fFxw!}Mi_~6W*vih7MW-d9VBe_=SY5~v z3(?Bh{by?GJNs3RyJ}W2jwvbC;3kIWy4$sUc6=SK2x_E#;n3j4RMo`qh2VDhAHH)3(|@yT9#H;QQ0lu4b~$dS?QaUN}vCdK*=bgMAt)6 zM`I@K&VvWpRy`8b08p?TbLnd)O1>)(fOZYY^Pv^#_wRPO{VnRZC2ul@K=;$-b%StN zHfgs06k3=z@~Xfw%oB%t^Td>Ee0;n``*@H#c{f0^>t%EiyQO%!xg$j@&b_$s{rB%W zS&}@48E=Gd`+AS-K+H$Lqo{0vb`W9CcjUw{wP+|3IHC%vPzcZxns%~z9kh8sc;@<@ zUKroxzw*8WwZwe4&-%`eo>f=hULpyT$!de(U7$prZ2lYwm`k&r2!qU(-wFx}ird#6 z^vUB4!t!_Oep+4>gdsvkLpx+e%cpF({@pvPH^Gzxb^s!VS;u06f`ah0qTgl$Qv_YT z+R@n!9;SB#zO+BLqaOgLou1CExi}U@rm!^lgJc8Hf+5LVb zC4GlLgsk0J#}Qf?fff zFzr`UQzHwD?gH1y6m^E?C+ao%4W8I&Ti8xiR8@B!Hm?Rtc;ADVFU%TR|Gvg5%Cql2 ze;N%K-r4YRE3n$YGp$Rs9bH|u)z#{Wk}>>b#V9hzd~0)jr8BtTHS`r}SyvFFa;-=I~H?OFmEqmZd7=j?NI(|}}I_8Jji7$|w-y_5>f z4JaQ^tl;5KOw!YbxnSTACTm`4)|B0U{yQEKaH4#V0YHzDQBJI$@5)S@9fM>%HR>Fo zT-J`!Gy56ghr-A1P&%>()S={^5Erx3#ngeA*YL8lq8VqjnZ z&j^`BWV{inBRxI+P{q7L74HrssDP-@ZQ%YcpS}!?jj`?6Q3%@lu>Uo#n(QB4=Nito zF_7|dHYBzxScWG8YHMpjEBW~|o1fZEz)WlW%#yOidui6uZtz&j{+N#hYXC|{0@h#W z7?9w`fOQg2@?t(c;7UP*NG4#_C`%6yI0wOuTTelb;TRkI^=olyDdW*2v(<~3GH)fp zy2}--*(@E+zn*{X^qLd$ILfiz_j14L`@SY~_DH zOPO0LlgZzUk4G^@+BY#j;-rGIrtnh%_tYr&-b&)#Fy%E$?I*22nklh~MUU+BvHN0< zBV%J4xx^UJZ0d|lIjNz+Ch4}{9kF&UIGg~E$!3_2tqiGqt}Wgn6jWU0XFO9l^Nzq_ z+SOm5P+qdKAwc2&=kTq@P;ERy6;fWJFv0%}pLSLk3fJ$E5k9Z=pr>LuCYmZ^IqyYM zkE}8tr3kvvlBunzSPkJib9es_;sdJ%^hv-X@Iq`&Sx=9{kkhtp-8wX8U|`??1~xfK zJb#wtH^KYI88bQmnqU64+3m$9S{Zpx3Ue$}utWIU?79x}@wvLb5Quh#RFTq8Z05P( z{88l4K<%ff%Eo0jep&0!QU$xnDJZM%hUu&Ya)ctADJv=td5)G%RG?R4TqN90d{Z)2 z2|q8dc}sKXmri1y-{;v+Heo(WQeR$ROW>l|9L(b3W37kiDstbnikVBUt) z{T75AB+As9O}K5PtpoRZL8bv)+vi7idhrkW-x;Rp{xtRB=V&-6k!jU7Yf%chnxiJ4x=3O=6_L z#fShqZg&rR8GC^z?HiaS|80KSU~8IwE25>N{;+edpKSNhjT{vJ_D8wj#a;QX=$FQt zCEt-O>zLbC9m+-G`_CW4jbe50(VkBDoXuTq@y#e*iR31^?$vB*MTT&lsA69^fG;Jn z@H{**q8G`s!MRaFegsw(cX!c}Qjj1-R&+Krn)stGsX{4qWb(B1VFS<_Hi{8AT8oMD z4$D~|&x?ou$~IX$DV*4>wU&I7pjClc$D<@kSLN5YXPqy-p~=h0qnM(?7Wn$#ZZ4q{ zu4g~vIZEqtF=lOQjQLDSC>UAUEgP`DP;@Q>ocUf|50xsd%H36=Zl@w8J;y&?THi5t zKA6*;q!c3PL5#hISH;eYZ%MgVcS*ZroX0;VtBeonYf8e zcCB>ks=M*#L3&0;>eh%|tvI44j|i6VX9(?ma`f00O|JbqTR8Zd)grOhTwJDXlKhl< zE`WCAc;P@288Hs`YciBNa&jd1aM}kDmWMlq`|DE)HKCIzn}NgMOv7GxmigR_Uz5k| zZ))U~S5r|L0s^S%Asc2v)5y}o;%((R?R|^q6DX;iL`Dz^ggG*?>E_$l1$lUCNDai0 zIr!yov`CPDE}UT6e_oH29QDv5G8Sf)fVI{8_gT!+wEw=Pkwv8mU1TK2_eO!Zp2iv{ zmA1AvI+)XAK*rhvFYMb+wTU5tfKfmI5q1712YC(r#&i9y$gg9{W&&3!n*t$zZD&p{ znu2MYf%lZ204T%T-d>ZnM&jxt6o`^carNv^;`o*=(r>BO4k)4Q>1A;5B2EQVrcI0pg|DbL4g@;*m2$*~P$K48iAhCe8 z5Fo;1{>RNjtE)>F+1Zoebt`%Kl9_`WXOWCk{Ke&tb2tS}BU|h_>Wn;v{ERI-NORbj z#!I-^ekk7DDF6|E89tXV7Gf`E;4Cq=@3aTy;V4~(EO#n*=Z+mNqeeP93WBl$tG<)p zUZYq26P8`Y8w8J(I~kO&H0!sCZPQ??3Y%Oahg#6xJ9p3oRO$ik*FJq3IQ7HJHB^_D zB8T?;@2LF{n$3fWg^^6PdSV32CHXU*j67tt7(1$jD=& zmmpCiLunub=qyp}UY}VuJOxpt$eN>fb628r`vX7ADkXEs~*q3tTT{g_8P1+ zBlUr232%Zke@v6fL?mN=RydrQ$}kys>fkf{k{6{K%>!jWGFw7oQL~zWs8#YYEXTIa z{ETKpFgrd!M1vvXq#!*ltz<*+bSQsKWr^t9xk_+xUA?#tzK=X<32kuZvd7+<<%BCO z6v;Al!t#(oIpf&a*cOhQcse}^p?k`f*xf6qVW!Yh{v}uX;NcgBMGcM}{&y$IGi`!d zuR`-%Ys;0$iv_!6ey|zGeoK@7tKk2Mbz$3z)MWOJ7G!HiAwH528+1v)GlGe2PI|m9 z1Z3%b%vev&8&8ao8ORlZ;R2J+wT29<@#R&_Cln8_$0Uxpv_Ob1e^2o^*fPVJi{@Fs?W~F=YaoOb8 z-;!96+vTqAa}Gj&OoQ%zhkzp!U(#w})p;T93qT7xlHs%fAI?8SGg1fybX#Hmv66uG z>R@8~_T3YEHsWU7uT@#V^%Z*a=I_RoO(k$94h;^r0hnB@Sa=M&HFNDZh8 z0DX2WwxvMMRpiv(&xk||4{bpr3{#5A%G>tr!Hu!Hqx)-nd(qF90O^Ltv?M~ zI*W}eHi=4M?+8T-FGlm@UsQx*O;}}kK_11 z)#{@Vi4^+uMs8D*^IAFd?fl2{+iVLGXYIew-iz$KBXWfw7_G{eP0X9T~}u zlShRQRcp7Hg8@L6lhgQ}eJ4#|LxReN9lj99(W-=PAW(*hTHexk`+Hn4G@ZASDG#ZkQ?CP-U<^iUX5I0CMdA1tD&+HA5HdcYlAH zAyH9)ov^KG*PcDMbch`IFP`bb9&kXu#6G)YUXybD4{^dlLBU&SLEOF#KgBGVjw01| z9Ij4FJmW86_c(}M5ttOi@mG#rVy>4VJMY@H3;sG`fj@P{uZM(e+f4*7GhIB()Pb7wV?8U0NiJ;^B*ndx%*e~H z;LUY)2l>K&O3A`}w2mO+p=*(K28;Bdr7ww8FaHWL_wT&`r1R2%C8Woi-^gsIe!Ls_ z19xqXy+`^pR2TGCBSmvV)twD*2#?d?)(@wlcj@(s`g!R51&8Q7Q1oqyf zu;N6@ycw)cY(^__xOlN4G*AzIThT8P>TGj;f0GXM1WN;eomJ!cQa^-uSCy2cq zt_#o!7e!O`_?nxV-nT-snxZ14@oMddm%nRMj+?y4@qgHlcibcofU^aO)V$X@=!p09g^`hbv$t-JW}tcKNDkN` z_mc?KC(s$obnvh#Q2}+|>_!CL30Wt^xz$3$QWL5MI+?MBE?AoNLVONoL z8=`fuL(UD3pv7RPuLF8&O;9Fqz(D%9LAKbjE7nK=yR-iO^?~gQUA^();VeDA;gA7r zf~c+@?W;6(T!MdL;gc9~vl{^oNf#)BHIdhkI)AG|>pF|*UaB+)Scinf!JVApY2E{HvQjV{FfIsGG&U&^*` zn(9;AKD)AUbNE)0oOCKThy7dINz-k{WZ)O2rKLBRh?AZF(eWG24D&~V)V7nf zl#zV0$ksmtgM)BpeS_Ty+iLOV1jw1%$Lt_X+Ss%~a%pVTl9iQ3E2dz*Zze`801oe< z^d^W%k;I4A^`=5fqzd=-%LKjo#`6#AYSA$7mrp&8d_p?U2}nr_w0yDts*Ld5c{c^3 zI&iwHM1bt9Q?5o@N}bBxKn}^P|Nfny><{F;C6NJJv-T>nvI-fZr71^Ce0g%zXG$IH z_Ce479mTaMMa~lU-?6VBf>9)!(DR8to7f$SC!tlDLJ&K-W3`nkY($8^U4K(Yaxbwg zNyd8#nwl9x3`|ZI6cZJVe9u+O{6XT^Th_-*lgN;cZq^Mt0;x`N$NdB&+>yaMX-h_o z^GdUTJfEPT3^rRsumjA3ZB+3F(RXzVLimvsz6i(@uP4BpD$)#{zNEgx{xn63^}h#V zc%+R@IG>M?Gj5mi7PPDO2@C5KVq@+_;$qYuHNM6Hf#mCtiLZyA`_kXFF;gQWem7KaQq_%s zC`qtt63cKbN5n3XUkKkPKd~aLEiDmzH)x4qS*9WIEpxaNWfRt!qA}Ihtt>+4t02qZ z9(%oi3j}dM`%#iv9PJRXi<2$~<(RyP=bS7^&n-%<9nu)C4we!B;6YnUOC&5_#E02) z4@9E8M%dmc!W3QMVELR0oCveID!TA$uo_96DhD4WSb&r9vglLA0z-crEoPtoG4l*$Voy} zi^S3jXNI;JN{0}KgTUR&YM%se6G|aqOqOA9gWG z>>N3^@6e$`>o|fnSS@07i5ygi6v*MVjx&-G1%Y^MT*AgRYrQtA-B#fzZa z$^LT0yfA>yw}7|7*g(<6LqzBLQ+5wZDQk~`uQWv|5B8*Imos40Btr6Zp zl4H9@#ISpu0i}+YmzR#to!KSy=n{yDNT7y(0DF|MR&>N)Uqyh@Ze5=V-Zy>n_l2#tx{E^Sl8`tX!{+jLa&jJCXF?C_ zVcxSx(7_9XSI`DWWE>&LVvnc-GTC`fvWlyB;h-(w`~og$q{T!-gHku!vu8Wd9?&BU zo;!qzqPmyjUp6D;O3EhqLqGgPN86xnRK*Gi49Ib>jrzyBx=ZfvJJySEFOhJP_b|Xs z_30CL92XbYjFS!grI5X!{DiZDh`jS#p{GKZn&j6BX`vuh-KCT!A4UW}*^Jja5SmKQ zsS6kOm%MW6SE?W?>7*`EvO_N-)vj^6zrO|886WBS{{lv~Z$~~Ou`upsNXO2EwL*JA zgF0*LRQ0czu_}#7we6_)Q7j0Fy&!e}Wqp8%?|%}K62U6v^#1`BZQ?$hKtAuNa6_7h z@dT=;r7&`Ml*+U{Hd_R&ML*U|5>y9lBN+m*P!mgKMDR*>yM&a~;J~Y0<=&7s;Mg4g z5~`D>e)1%jJ~of@s1sZ|0ZIXcr9Hh2jEstchYa%NDwPN?rfWxcH>>d|M&V!?C0Txs zSZaZb@<4!S&b6FAHqPPLS8?pXfiNQ~3JO{deq3s&>)BJMsxvd_(iYk#ln#?aLYMm{ z=z(|uY@WjIhV@42!cf}nTkNvqM6dn({{v^poe-=$fFyNF^IJ2;`kE0zzluzLdHHVx zh{Hbpx{n{1mzR5C^~PiJ@%HA6QCr*#8VH*ycFgE^5q@%+=k-{kLhD88JeMya3SZf@ z1%4LQ9(2I3;yoWv#>AjZVYc7AQK(S@6NIQGsD$`zj0A^8X{X&M59c3pm{j5UO=)Na z7loj)j*W7vgmxWBPDMOkIj$==k3?dVITW!R(`)0zwzd}GK1_u)rA~V8yH9HnCrEPT zydT-Pci^=*z*t1%{llGo4l6?~L{AaF0HI!|cT_k2X}FN3XPo3mMy>k}(Y}p93{l|a z3^9T0AKdvS^jyFd&{#kh27CLSD5Hu&p+^IOg@t8gaM0%B#X}y_M5BR26ti$F^dU#q zk&C_3+{7oiJ5_5xH+`7dL);__Bf)D(<-7g|Qv@;mD>Z@FKV2Z+vK5$5EFseTaYDd# zH!)Mtn;IrtxXFrW0J~d8Ht^7yeUyES0gmBih)~8yg$ZA9EQ! z5BzU$e=tUEy?p|m0o;Kf6NAlnQrwb~i|ABAxBA7vj3P-x6iE{Kgp{#QaadU_b@iL2s=az$Iv11CZsm^I6hJD_5AL- zJ)z6mbk8#YjmFzDo{>YFg3&_%3meT;m<94M&|#AAAIg#wDOwKT#c0<1-ro#DDE}Wq zNLn7gw8a)Axuq38>xUgtH_FNg&$xRX%ujDB&*Dy9o|GxAPugR-K`9kNQDAX{;z9Uv zw7yJ3oyQCgc%`G0g}wC0O2<%S6FL5O@njJOBE_Q8(nmj>&qxT(4Qw{qE#b;taz8OK z0_Ym(d3{$5+y6+^_kZd^N%ts2kw<`)#~jmz4+mjH)+>Y+d4SyU5y?l&0P_xBvn#F8Yn1J?ob zxSmZX3+v>c8ODK5L{j}P@)P0)33#NlPu8q%Xlshete>;_Vm5Ls4V1hJIQ zd%Y4)DDL$>nRzr54~R?YIe8?CPfW~d$V)mp@WeG^uz2kW+8mog3LpkxkZ{t2J@1;& z+Ccg@_#@g*8$^%b9cM5gLWJSSc)1S{mWE9d?QFeC?;!_tmzbEClxc(UwmC=wLfk}F z3iKvX(whQ7J%BqET0wsravf6NQEW{@j}ouJdq>S9B_#!fKWc-o;`;A0uX-8DF@-nz zh{IF?z%t&0OhOn|?&mX^u5MEM(H7wzt$_G8+f2w7b8;5)o%uqCxlquHA5H%8n z%z_|>#m7SZlImPp%2ab-y1#XaeQ1{M(4{5UsADvkrvIkN+5iN?-Ci}N(Qj|-wcEl_vg_f&v87D=kb)gQIaaof$&_;Efr3Wa~?F}xslrnq$8+L(n9BFZQD++0SLTQ`N$=Yoxnhfv+>#;gI@cqUdBsChoa$24ojZL)-@jj2ov2&>rJl?! z$(F0TuxVgDsq?n3=S>Hc<##)#H2A$Xl?9a!6k}HoR#r)*{1)0k{#8*d0iHDZ3-m6; zZvsia2#((_^hLwWGK;d4nvD4cib8TzmgOJr5Bm;R)Y+@MfuO@!!Gxa(*DOJ${5UJ5 zcwXjdSMBBF18@fyb3QZ)VMV-@BQnYA@Iug(-GQPKRsOBDJSw$AGq9Sl#tuftBoU?6 z>m>OP@3u;tJb3spPS*31BnJTGk)av4w*}%Kz+BK3yn@~>sA6a(KLPdA1=V=qg3h+a zB#p3mw%%mk{Lnz^Znsyu6U3L+5dNO@jul2is~l``#4EW=;h<)s09@G(-$pN3j$Tq^ zKLlye)59a(>Ju$VJwb&NDC8b4$!^GcROX`$7wGX6yR32^=t<%}*U1V#ldq4qa8~v0 zCY?wmUi|L4y}Wtzs{!0eE`M3#x}7eiR&#bSZiSDbRH9UjZI`)2i@cKlKIbO8*4Vx#2c(vFo`aRlkfB@Cp#yGVMK1+(p|K_d^hh27*_I0?{c z@q5|%z9eoEbqx_dtf8u41rxin>0Npkpx(NH9`%k;9@dR()%Ml-mj#%DaM!9&N4jzA z#FNteoxj3X2ODoj?4~Mh6I}5%p5Wn7lDG2>wdYZpoSSnV*BK-O(c>-_6au@sdASGG z4|Kr~t{9Nk9}SZtrHp}*MZu!>jf&Iqn558zjtChv)N4OCNnrtnwkn=wf|f2N`T8}X zecvkVvQ;>1){~A9-AM=<4$5_a12xBD-@(Nt`QeSrlhM!pv26>MP^j9&Ks86T`%mG( zM-oZzeOHzVzVsG+FIWQg^bq^eH{1SxK8fQf?iL;UTZ1_|wpW^p?K9NZ_nIWN-r_}S zClRP$7yGNfUt3FSZxH9Ol8G2w17j@PA@d{^BT~XKF>1K*^~%-1o3gtR&-7;dq#YS+ zee*;X?lE;fha_J%!|OPW>|0Ep_-fr%=%DQRtPRG|Q(4Q7;=mXm;R}y?$zEI1@t~b+c6f}EQtRGtX96m+~p9pezhA1NEN8I|7 zfYe1t>r=z#qex>#0KzqI)&bAKZUi93>E`TJ$9WzKMGEgebjwzES>z;s1S5 z?;%uUEu4_x789E$dd(Q-Mp{gk7EwCG$rHF!vifH%7jHVgN9oCOJ*{@_nU_hCR(VWe z$fkmE4<9~k+qzXOeWN^0!U=BesDEh7XH4I8u_pqxF{kC> zlbQN@P%2h^Cz{1%xw$_yhXa4O2zf6%34@R8tNdte^zCKX7H%u9N_n1gSWJF3zLr!< zJH{m`uxF1!&*u=N^pj{zrT_5${Z8*?+psSnf$*t5N^mH!0N)#DFr#V#K}&C6-@ZFp zMU(dn*l9_GF(PH)X6H~Rh9+5IQql?8n8Q|=?Cd7dn`U5WxK~AV$3`@TT+Flli7u@N zSxL#sXc%v5zJ<2+bL$9yo^f)WMhE3ebK`^LYa%=1+(*Gdwmi*Z5UH01*#K8C%Z!Yk zdKiPXgzgnf#Lnu;2pvJo(bA7cUis+J?|Uby>J3jI#%fg=mnPy9H8r*Eq67=jd#go|O6rC>j66 z>0o%}MlfH{-KV4^y*fIEgGLB+-q12j1{Dn0z$)q%jTt)F%SK*D5vA$7_J%`i>P^XE z(#(U$NiPVaZMB0(WrP3F7TJZYS62~*sPCLd?T=R7895~Qt`*(ddag)go@O3I<(pSP zU;ur+laJMtr9Bs4m2Sv26k{V0i1>K#i7tgFH9OeY(AU?3zS3L1zHS9#5lq{+Lqi7+ z^bcy{ahYpOH{)E}{liwFHVDh~U1Z`*w4a#Ax&csz7m+`TTQ+shYZIv>vL_4e&}SYV z9&WhvLTBsKEYu0b1#mS-_`a0!I$k~dP%Lmr-~}QCHYTfRF%KZzK}RM(<1t7({JyeO zi8!1u&Lt6zay>;QB_+lUROHv2YfGZl5jN$k+l2W7BpIA>n~6kU8`y3LuAAq7piTz^ zSXEbp7X2jvBYqj1Nk#XuR5mN#%VOU7bpy)n&3B1QtlteX1lnJrri=1NitHOSyMIH= zInmoc;4nC)_{0_)7r=^mB#(%Q4N@1&unnEEyyB_*<$`-Fd8$Hu?DN*TtGC_sfR%=!>|#*ov1#K)$!hP1QaElg?= z=vV?LmhPIdG5U1=5fW1Kw8J)r)ZL*D(ci0oN>;@||5qELA~9~o!V%`t^kfT}M@17y zXxr%{|DX11}_j< z;D6@!-cTD(&5Mq;%wUW;=pW;aEb0(j#aUc(0)N0m~fk(shpzmQ;e^5p2j3%Dx^R ztrK=kr1d9=TNIugG0hD}qg!2#xC3qh~(+4~%S&f8NDA;wpjRZ*(M!DssNf7gG zDl+r+_{ysI2RP7^^Z^X<%Z(5Bm+S`4*LksvhMA5l@JyU&^p1Ahf0H5Fiq+DnN&SSGBrnCCry9T(uBfb> zoSI6jdks7U{vJX=Q$KX9&Ccy0Nhm3Y73e2h??xilStUlNj8t)wUbv`px)J^BzK|C| z{Sg$|8(LIk`+o%i1)F?MAPgi8GEPtppi&2fz}YqwH5e>4pz|w;430ggCh@h(hPzuW zY-D*7Qmnsq3?HDOzn(!Ef!cP77I5?9UHe#XY@;UoY}|WWyCZ(|B>P&zLCu8Zsj=xI z!Ra5^N)i*a3oDqUxtOV1D`>`x(1X1AxrJscDL){X*O6F)!9!!4l!0%zARv)jnFzwu zcPn5f&B--J*Vn+alb6W8R25f5mQlC!UihMq)W*Wx++XoYjp-}fKSWc|*|TR+`3KeZ z;zfb@`T>V#t@WhPgq1eJlXtEpXvs$*H{px-NUZ50aoxhl!d46}?WIfK0B!YPUMe#f z7VsNlnGe#CHxq9nG2dfUMwZL+C=kpj1+_J#t!je+Q`E4ZaFD*99(0iM_FjddL)2br zf=vR~$3|#=G54dk;(zZR9XqUET8 z{)etZV%VpTBI6%z{Xb*Ub@=QpIy=d0duLNymsRL8lekO1{~oXKwt6$kUW+HY=~gHC zoSt5$|EBiL5QOs??Ga_gTnlzOU< zcErXbRo9Z=@Ve+L%yS744dPJ&J&0MGo4oWXAYGyV zj#5EW(rDv=&ZW#{UxF`t?dIH3WNm1h!KXw-uy0(8^kd4xYbH%U{K13I-Do-mYyOcw zcK#FpO>2Fc_E6P3zdqforz87e;PA#!9)x~FOM9~u5VAem+}gL)ShA8UT3u0*?V_fu z8zWj>S()P!;3l_sCQS|N^F}2$c%>}~Yjs84W_CVnby3*p2nv#ZjjE4Cj@ecsJI#$m*SH)h;OSck+!T1 zEw`0X2uCC^*Bv3wLN{u_*MevXfJD8?gCFfVs8|wx2xtTH%t4o|$8&UIS)AETvgS=v zxs0fO(MyFI)*IWOmr4NH02nUN9lvI4o9&_ab|TFZ1!uUfmonc#(C6N>=T*vPva={9 zGc7>uNckGNkG0l~AnpQhm4JdLpU6zDaYXkC+MvwZ3UYHhJt*i~$;wO?k@ZK5k3mLYvPB65vVn%QMt19>t1I8>NfR($zEF8BveWe^7hBMUkBuZYG>x@ z^$B{Eo6ldZUszDZ7GJ1m$Q%rLa-_uQxLRDhqBk~>lxZpt$^7O1}Z zfVmxa-y$*P`^|?@_EAjCGERfnRFyb#8cj$9e$5itw-2$@k0(L0$dKmCSo9%8UZA^= z#8~LLPux57)aiibV^2Qtt>*StTATjDSt$xTHO7THF61v!<-7+|gQO6oI)3CzZ=Ru{ z^tAV47>^3_XfLpF5JZkua#Fd_63Zx0v-_D6(Z&Ldh6u|40`KBzAYYCGK#aCQFlA;V zP2xc5*=(mzxcJy@ zdm!T&n2>ATv2vS5kN>~{W*rjgOwUT&LMmP6tMTi|+o~QK5V1yz@T+G2!=j>Sv4E}I z&diM7eNTjk@Wq4lh%nt@44^dxA)Z;JO#tH|H^jD`CPDqy^ccf`rfH-Zzw=ZoTR1uY z%$2NO4o!k*0SHRud%P@=XBa`SgSwU5TQ6LWK(ZiVkm;yJN`DiQ`?<`thlP#vuo0aV zDjM>hJTCWQH-QKapr2?6MQck$-*Y&Z18>V)K(q9A!KP+F0Qu1?4Z*Ktzs>XTts}B-1phzgPIWoL7}#{!E6D@DsRhh@KsW!2JLhE=mw8xRv|t0!F%&CxR0T2lxv!4UjW5Z>JFx!+UVD zD;cl75v8LXh2z|^1XmN?#7nq*p8Xk|M#Z3=Xd&WYV&W-Uo3Q%{VeiOwx7P5yIX#Ea z%c?&S18C45hC0}tTet2O93tHwiroQ3_15W?{gjJ-0FSM}V<9KT&vHyZsc{I!odLN& z1EQd<6qF4K-3k6ac>Q`pFFo_LL4bO4-F3T!osWrpi_CtvgP)mv0p~zGhnWJPmTp?F zOrC>ZTmeYn_pi4Ha&u9&-(6`VZ2Fmg@-*-Si!jbxFN0PD1 zK{F!i?c{jaM5XucUnnBUhLehJT!a#!xiC_1?fmC&(Bwn8y>=fmtqa9bkczfZ(b?=j zuJQ}vS?{_W-AD?UNn+d0MRolckvWmZl;o*fZ&2PhLrq2ZotbhMgIlP#CT!oWHVB_u zkE3{DJ6>wZ#YNRc`C18ad$_3f{QavQzKsC|3hR`Wm#5a<%ft5ftFvzoCPn=H53ghL z)G_Dc!W_9RLi{KQ53tzVWZL>jxUA%b510KFDXTwzjFuA@Zb_}?qB?#RQiR0hogZ*dp)iREFn`8L$cdPb{e!3 zy;;=AYIJ|TwKPWG?>E*ot5~jWC7kk^Db_^?xS(b-aE~uegTayFlw~e3UQzE59_Uzi zxW$F_9)ars8Eag_lb~n%P;3f!T=i`mjvA6aEWSS?Et+n(M@J|SKTM|*i*%{Vppz5w zv%H_0s!|A}QpQ|v(n?ey>?pPl{pE(0#k)t@^;m*0<(khlXjfZ*q{}}$&tx)t0HFph2FmQL*5mT{e-hapaR+{E7^w&f9cdH~6n~V;(DD%f%)dj1 zUjhQ)(k-hDg74t*w|Zl#Cy8H)@#8ZQ+)jVocAEc=RO~1^5q73yhy5+45HI+C!^e7gycCYrU<0V#c{xuqHj8L8}(XXd0|K!_&~BHnqP`2mwlmZBmX=j zqYdisi>ipA5o~dy;u90nayTVR61WZ^>s@ZYAEPpYX*vh??K`<(iW-)|e#+Cdpe^ya zR_kyTyoSCpwn!dyYA8k)nZANcN8C}_jY7H4yUzZ8zC3lxci@|+s|D_t;SaRYI(wUs ziu_46wL@>XL_}Vocee8CnKL2ZfrVh(hyo}=$-T14z%}vDZKfYJ4XM6H2;r=QB|bdgAZtDfHT#AF@KbR{F$CvRxvjEEeWXb1o8% zc}V&qW$INFIUh2C-k+78evSbZ1@=Sc*KGIA7(pyLA^-0e*cU>Tiq#-W2@uGM)Q6~2 zhOEb6YI3?-E|?ESN6_edbPZ*T3f4TEyl>aM8fz13uZfk872T7#V^G4ATT|*>rx?M7f2tsas>0L$E5h9R`MDj z_N0big`iSm4n$(HsHEi2u8jaf5W>B-+p%kxFdzl|yePNJl1#>ZC@LxK&lp5~3qLf} z)If#QGS4XqsDvUMfj)RHfzpmLoO&p@MQ1nh#tYmMTq>c^e|>oC7VQk{lmo#Yf2)@z zdl2lY8R{cHu`3=#L=i8Qx9EDk1DCn<(l{W19{9DI-s#X1BfDp4$;DyXrprOOU~
  • DsYwieMHwsb& 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 From 06cefce84fcac4bf1ab6763502995296655328eb Mon Sep 17 00:00:00 2001 From: mattmaliniak <31718098+mattmaliniak@users.noreply.github.com> Date: Thu, 14 Dec 2017 16:51:09 -0500 Subject: [PATCH 07/11] . --- Part G/part_g.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Part G/part_g.m b/Part G/part_g.m index 4583bb5..d9f673b 100644 --- a/Part G/part_g.m +++ b/Part G/part_g.m @@ -9,12 +9,12 @@ for i = 1:length(P) end clf setDefaults -x = wmax; +x = wmax'; y = P'; -Z = [x.^3]'; +Z = x.^3; a = Z\y; x_fcn = linspace(min(x),max(x)); -plot(x,y,'o',x_fcn,a.*x_fcn) +plot(x,y,'o',x_fcn,a.*x_fcn.^3) title('Pressure vs. Maximum Deflection') xlabel('Max w') ylabel('Pressure vs.. Max Deflection') \ No newline at end of file From 4bcd4b4e233d1401f923807822597ea7e95d9007 Mon Sep 17 00:00:00 2001 From: mattmaliniak <31718098+mattmaliniak@users.noreply.github.com> Date: Thu, 14 Dec 2017 16:52:50 -0500 Subject: [PATCH 08/11] . --- Part G/part_g.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Part G/part_g.m b/Part G/part_g.m index d9f673b..6505df9 100644 --- a/Part G/part_g.m +++ b/Part G/part_g.m @@ -16,5 +16,5 @@ a = Z\y; x_fcn = linspace(min(x),max(x)); plot(x,y,'o',x_fcn,a.*x_fcn.^3) title('Pressure vs. Maximum Deflection') -xlabel('Max w') -ylabel('Pressure vs.. Max Deflection') \ No newline at end of file +xlabel('Maximum Deflection (um)') +ylabel('Pressure (MPa)') \ No newline at end of file From f9e32f6c1fc2de2da13184bf2bfe2edec69f9b93 Mon Sep 17 00:00:00 2001 From: mattmaliniak <31718098+mattmaliniak@users.noreply.github.com> Date: Thu, 14 Dec 2017 19:52:40 -0500 Subject: [PATCH 09/11] Help --- Part A/membrane_solution3.m | 50 +++++++++++++++++++++--------------- Part C/membrane_solution.asv | 27 +++++++++++++++++++ Part C/membrane_solution.m | 41 ++++++++++++++++------------- Part E/SE_diff.m | 12 +++++++++ Part E/membrane_solution.m | 41 ++++++++++++++++------------- Part F/Rel_error.asv | 14 ++++++++++ Part F/Rel_error.m | 7 +++++ Part F/SE_diff.m | 12 +++++++++ Part F/membrane_solution.m | 46 ++++++++++++++++++--------------- Part F/tension_sol.m | 10 ++++++++ Part G/SE_diff.m | 12 +++++++++ Part G/membrane_solution.m | 45 +++++++++++++++++--------------- Part G/tension_sol.m | 10 ++++++++ 13 files changed, 230 insertions(+), 97 deletions(-) create mode 100644 Part C/membrane_solution.asv create mode 100644 Part F/Rel_error.asv diff --git a/Part A/membrane_solution3.m b/Part A/membrane_solution3.m index ec29f9b..d62636f 100644 --- a/Part A/membrane_solution3.m +++ b/Part A/membrane_solution3.m @@ -1,23 +1,31 @@ function [w] = membrane_solution3(T,P) - % T = Tension (microNewton/micrometer) - % P = Pressure (MPa) - - od = ones(8,1); - od(3:3:end) = 0; - k = -4*diag(ones(9,1))+diag(ones(9-3,1),3)+diag(ones(9-3,1),-3)+diag(od,1)+diag(od,-1); - - - y = -(10/4)^2*(P/T)*ones(9,1); - w = k\y; - % Solves for displacement (micrometers) - % Solution represents a 2D data set w(x,y) +% membrane_solution3: dispalacement of node for membrane with 3x3 interior +% nodes +% [w] = membrane_solution3(T,P) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% output: +% w = vector of displacement of interior nodes - [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('Membrane Displacement') - zlabel('Displacement (micrometer)') - % Membrane displacement is shown on chart - -end \ No newline at end of file +od = ones(8,1); +od(3:3:end) = 0; +k = -4*diag(ones(9,1))+diag(ones(9-3,1),3)+diag(ones(9-3,1),-3)+diag(od,1)+diag(od,-1); + + +y = -(10/4)^2*(P/T)*ones(9,1); +w = k\y; + +% Solves for displacement (micrometers) +% Solution represents a 2D data set w(x,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('Membrane Displacement') +zlabel('Displacement (micrometer)') + +% Membrane displacement is shown on chart + +end \ No newline at end of file diff --git a/Part C/membrane_solution.asv b/Part C/membrane_solution.asv new file mode 100644 index 0000000..72568a0 --- /dev/null +++ b/Part C/membrane_solution.asv @@ -0,0 +1,27 @@ +function [w] = membrane_solution(T,P,n) +% membrane_solution: dispalacement of node for membrane with nxn interior nodes +% [w] = membrane_solution(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% output: +% w = vector of displacement 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; +% Solves for displacement (micrometers) +% Output w is a vector +% Solution represents a 2D data set w(x,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('Membrane Displacement') +zlabel('Displacement (micrometer)') +% Membrane displacement is shown on chart +end \ No newline at end of file diff --git a/Part C/membrane_solution.m b/Part C/membrane_solution.m index f9c96d6..a3b6d3e 100644 --- a/Part C/membrane_solution.m +++ b/Part C/membrane_solution.m @@ -1,23 +1,28 @@ function [w] = membrane_solution(T,P,n) - % T = Tension (microNewton/micrometer) - % P = Pressure (MPa) - % n = # of interior nodes +% membrane_solution: dispalacement of node for membrane with nxn interior nodes +% [w] = membrane_solution(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% w = vector of displacement 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); +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; - % Solves for displacement (micrometers) - % Output w is a vector - % Solution represents a 2D data set w(x,y) +y = -(10/(n+1))^2*(P/T)*ones(n^2,1); +w = k\y; +% Solves for displacement (micrometers) +% Output w is a vector +% Solution represents a 2D data set w(x,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('Membrane Displacement') - zlabel('Displacement (micrometer)') - % Membrane displacement is shown on chart +[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('Membrane Displacement') +zlabel('Displacement (micrometer)') +% Membrane displacement is shown on chart end \ No newline at end of file diff --git a/Part E/SE_diff.m b/Part E/SE_diff.m index e7202ff..5b269a6 100644 --- a/Part E/SE_diff.m +++ b/Part E/SE_diff.m @@ -1,4 +1,16 @@ function [pw_se,w]=SE_diff(T,P,n) +% SE_diff: difference between strain energy and work done by pressure in +% membrane +% [pw_se,w]=SE_diff(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% pw_se = difference between strain energy and work done by pressure in +% membrane +% w = vector of displacement of interior nodes + E = 1e6; %TPa Units may need to be changed v = .31; %Poissons ratio t = .3; %nm diff --git a/Part E/membrane_solution.m b/Part E/membrane_solution.m index f9c96d6..a3b6d3e 100644 --- a/Part E/membrane_solution.m +++ b/Part E/membrane_solution.m @@ -1,23 +1,28 @@ function [w] = membrane_solution(T,P,n) - % T = Tension (microNewton/micrometer) - % P = Pressure (MPa) - % n = # of interior nodes +% membrane_solution: dispalacement of node for membrane with nxn interior nodes +% [w] = membrane_solution(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% w = vector of displacement 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); +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; - % Solves for displacement (micrometers) - % Output w is a vector - % Solution represents a 2D data set w(x,y) +y = -(10/(n+1))^2*(P/T)*ones(n^2,1); +w = k\y; +% Solves for displacement (micrometers) +% Output w is a vector +% Solution represents a 2D data set w(x,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('Membrane Displacement') - zlabel('Displacement (micrometer)') - % Membrane displacement is shown on chart +[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('Membrane Displacement') +zlabel('Displacement (micrometer)') +% Membrane displacement is shown on chart end \ No newline at end of file diff --git a/Part F/Rel_error.asv b/Part F/Rel_error.asv new file mode 100644 index 0000000..56dbd19 --- /dev/null +++ b/Part F/Rel_error.asv @@ -0,0 +1,14 @@ +function re = Rel_error (T) +% Rel_error: calculates relative error of a vector +% [w] = membrane_solution(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% w = vector of displacement of interior nodes + +re = zeros(1,length(T)-1); +for i = 2:length(T) + re(i-1)= abs(T(i)-T(i-1))/T(i-1); +end \ No newline at end of file diff --git a/Part F/Rel_error.m b/Part F/Rel_error.m index f5f8fff..5e17536 100644 --- a/Part F/Rel_error.m +++ b/Part F/Rel_error.m @@ -1,4 +1,11 @@ function re = Rel_error (T) +% Rel_error: calculates relative error of a vector +% re = Rel_error (T) +% input: +% T = vector of numbers +% output: +% re = relative error of vector + re = zeros(1,length(T)-1); for i = 2:length(T) re(i-1)= abs(T(i)-T(i-1))/T(i-1); diff --git a/Part F/SE_diff.m b/Part F/SE_diff.m index bf9e129..bc4cf5e 100644 --- a/Part F/SE_diff.m +++ b/Part F/SE_diff.m @@ -1,4 +1,16 @@ function [pw_se,w]=SE_diff(T,P,n) +% SE_diff: difference between strain energy and work done by pressure in +% membrane +% [pw_se,w]=SE_diff(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% pw_se = difference between strain energy and work done by pressure in +% membrane +% w = vector of displacement of interior nodes + E = 1000000; %TPa Units may need to be changed v = .31; %Poissons ratio t = .0003; %um diff --git a/Part F/membrane_solution.m b/Part F/membrane_solution.m index ae80fce..ef0fae2 100644 --- a/Part F/membrane_solution.m +++ b/Part F/membrane_solution.m @@ -1,25 +1,31 @@ function [w] = membrane_solution(T,P,n) - % T = Tension (microNewton/micrometer) - % P = Pressure (MPa) - % n = # of interior nodes +% membrane_solution: dispalacement of node for membrane with nxn interior nodes +% [w] = membrane_solution(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% w = vector of displacement 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; - - % Solves for displacement (micrometers) - % Output w is a vector - % Solution represents a 2D data set w(x,y) +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); - [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('Membrane Displacement') - zlabel('Displacement (micrometer)') - - % Membrane displacement is shown on chart +y = -(10/(n+1))^2*(P/T)*ones(n^2,1); +w = k\y; + +% Solves for displacement (micrometers) +% Output w is a vector +% Solution represents a 2D data set w(x,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('Membrane Displacement') +zlabel('Displacement (micrometer)') + +% Membrane displacement is shown on chart end \ No newline at end of file diff --git a/Part F/tension_sol.m b/Part F/tension_sol.m index dd534c9..b0f0132 100644 --- a/Part F/tension_sol.m +++ b/Part F/tension_sol.m @@ -1,3 +1,13 @@ function [T,ea] = tension_sol(P,n) +% tension_sol: outputs tension of a membrane given the pressure and number +% of nodes +% [T,ea] = tension_sol(P,n) +% input: +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% T = Tension (microNewton/micrometer) +% ea = approximate relative error (%) + y =@(T) SE_diff(T,P,n); [T,fx,ea,iter]=bisect(y,.01,1); diff --git a/Part G/SE_diff.m b/Part G/SE_diff.m index bf9e129..1eaddea 100644 --- a/Part G/SE_diff.m +++ b/Part G/SE_diff.m @@ -1,4 +1,16 @@ function [pw_se,w]=SE_diff(T,P,n) +% SE_diff: calculates difference between strain energy and work done by pressure in +% membrane +% [pw_se,w]=SE_diff(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% pw_se = difference between strain energy and work done by pressure in +% membrane +% w = vector of displacement of interior nodes + E = 1000000; %TPa Units may need to be changed v = .31; %Poissons ratio t = .0003; %um diff --git a/Part G/membrane_solution.m b/Part G/membrane_solution.m index ae80fce..af4d17d 100644 --- a/Part G/membrane_solution.m +++ b/Part G/membrane_solution.m @@ -1,25 +1,30 @@ function [w] = membrane_solution(T,P,n) - % T = Tension (microNewton/micrometer) - % P = Pressure (MPa) - % n = # of interior nodes +% membrane_solution: dispalacement of node for membrane with nxn interior nodes +% [w] = membrane_solution(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% w = vector of displacement 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); +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; - - % Solves for displacement (micrometers) - % Output w is a vector - % Solution represents a 2D data set w(x,y) +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('Membrane Displacement') - zlabel('Displacement (micrometer)') - - % Membrane displacement is shown on chart +% Solves for displacement (micrometers) +% Output w is a vector +% Solution represents a 2D data set w(x,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('Membrane Displacement') +zlabel('Displacement (micrometer)') + +% Membrane displacement is shown on chart end \ No newline at end of file diff --git a/Part G/tension_sol.m b/Part G/tension_sol.m index dd534c9..b0f0132 100644 --- a/Part G/tension_sol.m +++ b/Part G/tension_sol.m @@ -1,3 +1,13 @@ function [T,ea] = tension_sol(P,n) +% tension_sol: outputs tension of a membrane given the pressure and number +% of nodes +% [T,ea] = tension_sol(P,n) +% input: +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% T = Tension (microNewton/micrometer) +% ea = approximate relative error (%) + y =@(T) SE_diff(T,P,n); [T,fx,ea,iter]=bisect(y,.01,1); From be6584617408235eb82a253aaa2f129d45fede5a Mon Sep 17 00:00:00 2001 From: Matthew Maliniak Date: Thu, 14 Dec 2017 19:55:16 -0500 Subject: [PATCH 10/11] Update README.md --- README.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 13f48c4..822ba54 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,14 @@ # Part A ```matlab function [w] = membrane_solution3(T,P) - % T = Tension (microNewton/micrometer) - % P = Pressure (MPa) +% membrane_solution3: dispalacement of node for membrane with 3x3 interior +% nodes +% [w] = membrane_solution3(T,P) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% output: +% w = vector of displacement of interior nodes od = ones(8,1); od(3:3:end) = 0; @@ -40,9 +46,14 @@ end # Part C ```matlab function [w] = membrane_solution(T,P,n) - % T = Tension (microNewton/micrometer) - % P = Pressure (MPa) - % n = # of interior nodes +% membrane_solution: dispalacement of node for membrane with nxn interior nodes +% [w] = membrane_solution(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% w = vector of displacement of interior nodes od = ones(n^2-1,1); od(n:n:end) = 0; @@ -76,6 +87,18 @@ end # Part E ```matlab function [pw_se,w]=SE_diff(T,P,n) +% SE_diff: calculates difference between strain energy and work done by pressure in +% membrane +% [pw_se,w]=SE_diff(T,P,n) +% input: +% T = Tension (microNewton/micrometer) +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% pw_se = difference between strain energy and work done by pressure in +% membrane +% w = vector of displacement of interior nodes + E = 1; %TPa Units may need to be changed v = .31; %Poissons ratio t = .3; %nm @@ -115,7 +138,17 @@ pw_se = pw-se; end ``` ```matlab - function [T,ea] = tension_sol(P,n) +function [T,ea] = tension_sol(P,n) +% tension_sol: outputs tension of a membrane given the pressure and number +% of nodes +% [T,ea] = tension_sol(P,n) +% input: +% P = Pressure (MPa) +% n = number of rows and columns of interior nodes +% output: +% T = Tension (microNewton/micrometer) +% ea = approximate relative error (%) + y =@(T) SE_diff(T,P,n); [T,fx,ea,iter]=bisect(y,.01,1); ``` @@ -160,6 +193,13 @@ root = xr; fx = func(xr, varargin{:}); ``` ```matlab function re = Rel_error (T) + Rel_error: calculates relative error of a vector +% re = Rel_error (T) +% input: +% T = vector of numbers +% output: +% re = relative error of vector + re = zeros(1,length(T)-1); for i = 2:length(T) re(i-1)= abs(T(i)-T(i-1))/T(i-1); From 3217bec2baefdb9797b60fd7e29f12b838227cd0 Mon Sep 17 00:00:00 2001 From: Matthew Maliniak Date: Thu, 14 Dec 2017 20:13:47 -0500 Subject: [PATCH 11/11] Update README.md --- README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 822ba54..0c9f8c6 100644 --- a/README.md +++ b/README.md @@ -125,6 +125,12 @@ 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 = pw-se; ``` +### Approach +- Using the membrane_solution function, a vector of the displacements is formed +- Next, the average displacement for each element is calculated. For each elements, the dispalcement at all four courners is taken and then averaged +- Using these values, the work done by pressure can be calculated +- For the change in dispalcement over the x and y coordinate system, the values of the change on the left and right (y-axis) or top and bottom (x-axis) are taken and averaged +- Using these values, the strain enegery can be calculated # Part F ```matlab @@ -214,7 +220,9 @@ end |35|0.0602|0.09%| |40|0.0603|0.06%| - +### Approach +- This problem uses the bisect method for locating roots and the SE_diff function for calculating the difference in work and strain energy of the membrane +- The script runs through all iterations of different amounts of nodes, zeroing the SE_diff function output and saving the values for tension in the T variable as a vector # Part G ```matlab P = linspace(.001,.01,10); @@ -240,3 +248,9 @@ ylabel('Pressure (MPa)') print('Part g','-dpng') ``` ![](https://github.uconn.edu/ltd13002/ME3255_Final_Project/blob/master/Part%20G/Part%20g.png) + +### Approach +- This script uses the tension_sol function as described in the part above, running though all iterations of pressure +- Additionally, the max deflection for each pressure and tension is calculated at each iteration +- From there, a general linear regression is calculated with the formula P(x) = A*w^3 +- The results are plotted