(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.1' Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 29806, 648]*) (*NotebookOutlinePosition[ 30972, 682]*) (* CellTagsIndexPosition[ 30928, 678]*) (*WindowFrame->Normal*) Notebook[{ Cell[GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgR000`400?l00000o`00003oooooool9 ooooo`00ooooool9ooooo`001ooooolE0?ooo`0?0>[/m@2a]mX0Phg305m//`11D:@0;CjJ01l`U00K ;I807BnC02/kV@0nCJ80FFJ`07j8`@2`]]T0k>gf0=@0oooo2Oooool000Oooooo4P3oool0103Gfn`0 Qi76041?X`0A8hd=00lRS004010SS@0nCZ<0RI;60=gPkm40oooo2Oooool000Oooooo3`3oool00`3Y jo@0SIK803Y9X00D00lRS004010RS012DJD0YjkE0?_koAL0oooo00D0g=o_0;VogP2i_mh0k^og0=gP k`020:F/e0060>o`m`3oool0oooo0?ooo`39cND0h>?`0`3oool00`37bn@0YJcD0:Z`eP020?ooo`04 0>?UlP2i_mh0^KoN0>GWl`<0oooo00<0g=o^0;VogP2i_mh0102i_mh01@37c>D0oooo00?ooo`030?oOg`3o f=P0ooOg00H0oooo00<0on3P0?ooo`3oool00P3oool01P3oknl0oooo0?ooo`3oool0ooWi0?ogm`@0 oooo00<0on3P0?ooo`3oool00`3oool01P3oh>00oooo0?ooo`3oool0onSX0?ogm`@0oooo00<0on3P 0?ogm`3oool00P3oool00`3omoL0on3P0?ooo`020?ooo`030?oXj03omoL0oooo00<0oooo00<0ooWi 0?oPh03oool0103oool00`3oj>P0ooOg0?ooo`040?ooo`030?oPh03of=P0ono_00D0oooo0P3omoL3 0?ooo`030?ogm`3oj>P0oooo01d0oooo2Oooool000Oooooo3@3oool00`3cm?T0Q8k401T[T@0I00lR S00302hnV`3;cnH0oooo01D0oooo00D0Qi7600lRS00?8X`0`lSR0<76h@0200lRS0060;Nmg@3oool0 oooo0?gmoP0W>9P0KgZj0`3oool00`1EHjh03b:<02loV`020?ooo`0409nWd@0?8X`03b:<0:F/e0<0 oooo00<0Qi7600lRS00?8X`0100?8X`01@0oCZ<0oooo03M7W`0?8X`0M00<0oooo00D0];[K00lR S00?8X`04BB=0;c2g`020?ooo`040?ogm`3nEU80oSPd0?oWiP`0oooo00@0oY2=0?hY9@3n;RX0oWAa 0P3nJfL0203of]T0oooo0?ooo`3oool0okFc0?hG4P3nCd/0om[I0P3oool01`3n:RD0oS<^0?ooo`3o ool0olW80?hG4P3nQX@00P3oool0103odM00oQLB0?i5@@3odM020?ooo`080?nIU`3n5a80oUEA0?of mP3oool0oRXU0?hY9@3o]K<30?ooo`030?hP6`3n:BD0okFc0080oooo00P0oVYW0?hG4P3nF5@0on?S 0?ooo`3nAD40oRTU0?ne/`<0oooo00@0oWAa0?hG4P3nAD40olO60`3oool00`3n:RD0oRTU0?nRX002 0?ooo`070?ogm`3nF5@0oQLB0?hY9@3n?3P0oVYW0?oPh0030?ooo`030?o7aP3n5a80oX>10080oooo 00@0oWej0?hG4P3nHEh0ong/703oool9ooooo`001oooool<0?ooo`030:fcf00V=iL03b:<01/03b:< 00<072jB080jnce00803b:<00L0U9c<0?ooo`3o ool0adZQ00lRS01;FJT00P3oool0102OYm403b:<00lRS02U [=@30?ooo`0308NAaP0?8X`03b:<00@03b:<00D0?djS0?ooo`0gAil03b:<03=3W@020?ooo`050?Gf nP0^?i/03b:<00lRS01oRL800P3oool01P3onOT0oUIB0?hG4P3n5a80oSPd0?oWiP/0oooo00<0oUQD 0?n6Q03oool00P3oool00`3om_H0oTE10?o7aP020?ooo`090?nn_@3n5a80oTE10?idL@3o/[00oooo 0?iQGP3n5a80om[I0080oooo01<0oRXU0?hc;P3oool0oooo0?o/k03n5a80oRhZ0?imNP3nVIL0oooo 0?nIU`3n5a80oeeI0?imNP3om_H0oTE10?hG4P3nQX@0ojZX0080oooo0P3n5a801@3nOGX0oi>@0?oo o`3nAD40oQLB0080oV5N00D0onSW0?i5@@3n5a80ohJ40?j6Q0020?ooo`050?iTH@3n5a80ogej0?iZ I`3nOGX00P3oool03@3n`0ooKf0P3oool01@3oRhT0oQLB0?nn_@3oool0ong/0080oooo00P0oV5N0?hG 4P3odM00ooKf0?ooo`3oRhT0oQLB0?idL@<0oooo00<0oRhZ0?hl>03oool00P3oool02@3nF5@0oQlJ 0?ooo`3oool0olO60?hG4P3nF5@0oooo0?ogm`0K0?ooo`Wooooo0007ooooo`T0oooo00<0f=_/02`l VP0?8X`0800?8X`00`0H:Y00a03n5a80onc/0080oooo00<0om7@0?hG4P3nAD400P3oool00`3oZjX0oQLB0?j6Q0020?ooo`03 0?j6Q03n5a80on?S00<0oooo00L0oR0K0?i=B@3oool0om[I0?i?B`3n5a80oj^Z00<0oooo00<0oV]W 0?hG4P3odM000P3oool0203nQX@0oQLB0?imNP3oool0olW80?i[I`3n5a80okjm0`3oool00`3o^KP0 oQLB0?n@S@040?ooo`030?nIU`3n5a80oi2=0080oooo00<0oi>@0?hG4P3nM7400`3oool00`3nK6T0 oQLB0?ne/`020?ooo`030?n@S@3n5a80okFc0080oooo00<0oR0K0?hZ9@3oool0703oool9ooooo`00 1oooool80?ooo`030=KIj`0V=iL03b:<02803b:<00<072jB0=CGjP3oool04@3oool02P27TLH03b:< 00lRS033b>80oooo07Ao_00?8X`09CNG0?ooo`31a^4200lRS004010SS00I:i40m?Gj0=SKk0803b:< 00@0W:C@0?ooo`3oool0WjOA0P0?8X`01@2U[=@0oooo0?ooo`3oool0Qi7600803b:<00<0^KoN0?oo o`3oool00`3oool0200gAil03b:<03=3W@3WjO@08S>E00lRS00@8h`0^;gM0P3oool00`3nOGX0oQLB 0?hG4P060?hG4P030?iFDP3omoL0oooo00`0oooo00@0om7@0?hc;P3n5a80oh^90P3oool00`3nOGX0 oQLB0?ne/`030?ooo`0<0?hP6`3n`0oooo0?nn_@3n5a80 oj:P0`3oool01`3nHEh0oQlJ0?ooo`3oool0oWej0?hG4P3nJfL00`3oool00`3oVIL0oQLB0?nRX002 0?ooo`030?nn_@3n5a80oS`h0080oooo00<0oVYW0?hG4P3nQX@00`3oool00`3oh=l0oQLB0?iQGP04 0?ooo`030?oJf@3n5a80oUQD0080oooo00<0okVh0?hG4P3nCd/00`3oool00`3oTi00oQLB0?i[I`02 0?ooo`030?o7aP3n5a80oUQD0080oooo00<0oUQD0?hG4P3of]T0703oool9ooooo`001oooool70?oo o`030;_0g`0M;i<03b:<02@03b:<00<09cRH0=CGjP3oool0403oool01P27TLH03b:<00lRS033b>80 oooo0:2XdP803b:<00P0k^og06Ue]`0?8X`0:cbJ05m//`0?8X`0WJC@0;Vng@803b:<00@0^l3N0?oo o`3oool0WjOA0P0?8X`01@2U[=@0oooo0?ooo`3oool0Qi7600803b:<00X0UYk=07Sl@3oool0=dNO00lRS00]?IX0AUFV0P0?8X`0101fPKd0oooo0?oin@3nK6T:0?hG4P030?i;B03o jnX0oooo00P0oooo00<0olG40?idL@3n;RX00`3n5a801P3oZjX0oooo0?ooo`3o^KP0oQLB0?idL@<0 oooo00P0oTe90?h^:P3nRhT0onGU0?ooo`3n;RX0oUEA0?n3P@80ooOg00<0oQhI0?iMF@3oool00P3o ool01`3oXZ00oQLB0?o1`03oool0onSW0?hG4P3n;RX00`3oool00`3of=P0oQLB0?iTH@030?ooo`07 0?hf00oQLB0?iED@040?ooo`030?hV8P3n;RX0oooo00@0oooo00D0oRhZ 0?hO6P3omoL0oooo0?oblP020?hO6P060?ogm`3oool0oooo0?nb/03n5a80oTE10`3oool01`3n91l0 ofaY0?nRX03oool0oiZH0?hG4P3oTi00703oool9ooooo`001oooool60?ooo`030;g2g`0E:8l03b:< 02H03b:<00<072jB0<_?iP3oool03`3oool01P27TLH03b:<00lRS033b>80oooo0TZQ09bTc`803b:<00@0fMc]0?ooo`3oool0WjOA0P0?8X`0 1@2U[=@0oooo0?ooo`3oool0Qi7600H03b:<00<0KgZj0?ooo`0gAil0100?8X`0100iBJ00n?Sl0?oo o`3nIF8<0?hG4P030?hl=`3oool0oooo00H0oooo00<0okFc0?hG4P3n5a800P3n5a805`3n81/0oWej 0?ooo`3ok>`0oi2=0?ofmP3n5a80oRXU0?ooo`3o]K<0om[I0?idL@3n5a80on?S0?ilN@3okN`0oV5N 0?hP6`3ohn<0oVYW0?ofmP3n?SX0oR0K0080oooo00@0oi2=0?oSh`3n5a80oXJ40P3oool00`3nF5@0 oQLB0?oPg`030?ooo`030?hZ9@3nd07BnC00lRS00X00lRS003 01h`T`3@e>T0oooo00h0oooo0100Qi7600lRS00?8X`0`lSR0?ooo`3dmOX042>=00lRS01CHJ`03b:< 010SS@3Ri?40l_?i01DXS`0?8X`0DUn/0P0?8X`0103emOX0oooo0?ooo`2OYm4200lRS0050:F/e03o ool0oooo0?ooo`27TLH01P0?8X`01@1_N[X0oooo03M7W`0?8X`04bF>00803b:<00D0JGFg0?ooo`3o ool0om;A0?hW8`0:0?hG4P030?hJ5P3o/:h0oooo00L0oooo00H0oUQD0?hG4P3n:BD0oXJ40?nn_@3o m_H30?ooo`0I0?oAd03nF5@0oQLB0?hG4P3oh=l0oooo0?j@S@3n:BD0oQLB0?ne/`3oj>L0oUQD0?hP 6`3n5a80om[I0?oSh`3nCT/0oQlJ0?hG4P3odM00oooo0?oJf@3nCd/0oQLB0?i?B`020?ooo`030?n@ S@3n5a80oj:P00<0oooo00<0oUQD0?hG4P3ol>l00`3oool03@3odM00oS`h0?nb/03o_[d0oTE10?hG 4P3o_[d0oooo0?oSh`3oXZ00oUQD0?hG4P3oM7400P3oXZ001@3omoL0oWej0?hY9@3n5a80oWej00<0 oooo0140oiVG0?hl>03of]T0ooKf0?iMF@3n5a80oiVG0?ooo`3om_H0oXJ40?hV8P3n:RD0oooo0?o7 aP3n?3P0oQLB0?hP6`0L0?ooo`Wooooo0007ooooo`@0oooo00<0m_Ok03Q8X00?8X`0:P0?8X`00`0P A0?i>B`3ok>`00P3oool00`3om_H0oX>10?idL@020?ooo`030?oJf@3nOGX0oiZH00<0 oooo00<0oi2=0?hG4P3o`L00103oool0303om_H0oWai0?i5@@3nHEh0oiVG0?ne/`3oool0ooKf0?o1 `03nM740oQLB0?hl>080oWAa00D0oo3_0?ooo`3oalH0oV5N0?jIU`040?ooo`050?oJf@3nOGX0oTE1 0?iED@3oVIL0103oool01`3o/[00oTi;0?ooo`3oool0on?S0?iZI`3nHEh0703oool9ooooo`001ooo ool40?ooo`0307N2_P0?8X`03b:<02/03b:<00<083:D0=OJk03oool0303oool01027TLH03b:<00lR S033b>820?ooo`0504YHZ00?8X`03b:<00lRS02U[=@00P3oool01@2`]mT03b:<00lRS00?8X`0A5>U 00<0oooo00@0WjOA00lRS00?8X`0YJcD0`3oool01027TLH03b:<00lRS02i_mh50?ooo`0803M7W`0? 8X`0M0?CenP0b@Yd03b:<01laU03Ri?420?ooo`030?oBd@3n9b<0oQLB00D0oQLB00<0oQXE0?n` [P3oool02@3oool00`3nM740oShj0?ooo`040?ooo`030?nj^03oool0oooo0200oooo00<0okjm0?hG 4P3oViP03@3oool00`3ok>`0oQLB0?i?B`0g0?ooo`Wooooo0007ooooo`<0oooo00<0bloV014TS@0? 8X`0;@0?8X`00`0QE0?Kgn`020?ooo`050?Wjo00T=IH03b:<00lRS01YM;L00`3oool0102OYm403b:<00lR S02U[=@30?ooo`0408NAaP0?8X`03b:<0;VogPD0oooo00T0=dNO00lRS00c@id0oooo0=SKk00O<9<0 3b:<03A4WP3Xj_@00P3oool00`3ofMP0oS8]0?hG4P030?hG4P030?hJ5@3oZjT0oooo00X0oooo00<0 on3P0?ha;@3oj>L00`3oool00`3omoL0oW5^0?ooo`020?ooo`030?oPh03nK6T0ok:`01`0oooo00<0 ooOg0?hG4P3nI6403P3oool00`3nAD40oQLB0?o`k`040?ooo`030?n;R@3nM740oo3_02l0oooo2Ooo ool000Oooooo0`3oool00`1AGj`03b:<00lRS00^00lRS00305]X/03oool0oooo00X0oooo00@0Qi76 00lRS00?8X`0`lSR0P3oool0102EWL`03b:<00lRS01jQ;l40?ooo`0507b7`00?8X`03b:<08bFb03< d>L00P0c@id0100U=YH03b:<00lRS00V=iL203=3W@050>3Sl027TLH03b:<00lRS00Y>IP00`0c@id0 1@1LJK40oooo03M7W`0?8X`0M0080oooo00D0^KkN010SS00?8X`0?DfR0?GfnP020?ooo`060?oI f@3n9b<0oQLB0?hG4P3n6QH0ok2^3@3oool01`3odM00oTE10?ne/`3odM00okFc0?i5@@3nEE400`3o ool00`3oZjX0oQLB0?hn>P0K0?ooo`040?o]k03odM00oQLB0?hfM00<0oooo00@0Ig>f00lRS00?8X`0GV^b0`3oool0103od]40oRLS0?hJ 5P3o/:h?0?ooo`060?ofmP3oZjX0oWAa0?idL@3oVIL0oo3_0`3oool00`3om_H0oXJ40?nb/00K0?oo o`050?oJf@3nOGX0oUQD0?hO6P3ok>`0503oool00`3o]K<0oWej0?o/k00_0?ooo`Wooooo0007oooo o`80oooo00<0Ig>f00lRS00?8X`0<00?8X`00`2KXll0oooo0?ooo`090?ooo`040;6gfP1SKk@0Hfnd 0=WLk@80oooo00<0hnGb06mj^P20R/801P3oool0101lQ/00KgZj0=kQk`3Hfn`806=_]0030>SYm02a ]mX0Hfnd00D0Hfnd00D0PXc30?ooo`1mQl40Hfnd07^5`0030?ooo`050>[/m@1TL;D0Hfnd06=_]03: c^H00`3oool00`3od]40ok:a0?ooo`0i0?ooo`030?o`k`3oool0oooo04D0oooo2Oooool000Oooooo 00<0oooo0>g^mP0F:8l0=0>W[m03oool0`03oool9ooooo`001oooool00`3oool0AE>V00lRS00K 00lRS00301`^TP0?8X`03b:<00/03b:<00<052J>00lRS00?8X`01`0?8X`00`2NYM00oooo0?ooo`2o 0?ooo`Wooooo0007ooooo`030>W[m@0@8hd03b:<01X03b:<00<0D5j[0?7bn01GI:l02`0?8X`00`16 E:H0h^Ca03i=XP0800lRS00305]X/03oool0oooo0;l0oooo2Oooool000Oooooo00<0/KOJ00lRS00? 8X`06@0?8X`01@1@GZ/0moSk0?ooo`3inO`0EfB_00T03b:<00D0AUBV0?;cn@3oool0k_3g03I6W`07 00lRS00302HgU`3oool0oooo0;l0oooo2Oooool000Oooooo00<0P8[200lRS00?8X`0600?8X`00`15 E:H0moSk0?ooo`020?ooo`030?Wio01GI:l03b:<00H03b:<00<0AUBV0?;cn@3oool00P3oool00`3N hNl09CJF00lRS00600lRS0030>c]mP3oool0oooo0;h0oooo2Oooool000Oooooo00<0F6F_00lRS00? 8X`05`0?8X`00`0a@Y`0j^ce0?ooo`040?ooo`030?Wio01;FJT03b:<00@03b:<00<0?DbR0?;cn@3o ool0103oool00`3Gfn`09CJF00lRS00400lRS003051NZ`3hn?`0oooo0;l0oooo2Oooool000Oooooo 00<0>DRP00lRS00?8X`05P0?8X`00`15E:H0j^ce0?ooo`060?ooo`030?3an01;FJT03b:<00803b:< 00<0?DbR0>SZm03oool01P3oool00`3NhNl0=TJO00lRS00200lRS00306Mc]P3inO`0oooo0<00oooo 2Oooool000Oooooo00<083:D00lRS00?8X`05@0?8X`00`1@GZ/0moSk0?ooo`080?ooo`050?Wio01G I:l03b:<04IDYP3bloT02@3oool0103^l?L0?TfR00lRS01WLkK30?ooo`Wooooo0007ooooo`0301@W S`0?8X`03b:<01@03b:<00<0@e:U0?Ohn`3oool02P3oool00`3inO`0PWfd0?;cn@0;0?ooo`030>k` m`1[MkP0nOWl00`0oooo00<0no_m0?ooo`3oool0]03oool9ooooo`001ooooolG00lRS00301PZT030 aN40oooo00X0oooo00<0ol;10?hV8@3o^KP02`3oool00`2]]=P08cFF0=SKk@0;0?ooo`030:fdf018 EjL0moSk0;D0oooo2Oooool000Oooooo00<05bV@00lRS00?8X`05@0?8X`00`0H:Y00`00lRS00`@I`0jN_e00T0oooo 00D0[KCH01T0oooo0080oooo00<0PH_300lRS00?8X`01P0?8X`00`0a@Y`0i^Sc0?ooo`2` 0?ooo`Wooooo0007ooooo`0308VCa`0?8X`03b:<01T03b:<00D062Z@0<35h@3oool0ol;10?hP6`09 0?hG4P050?hM603o^KP0oooo0:fdf00B9Hh02@0?8X`0100P00/03b:<00<083:D07^6`00?8X`02`0?8X`00`15E:H0nOWl0?oo o`2^0?ooo`Wooooo0007ooooo`030?7bn00C9Hh03b:<01X03b:<00<0AUBV0?;/l@3nEU802`3n5a80 0`3nA400jM_T03M7W`0;00lRS00305MT[`2n`n005BR?00/03b:<00<0Ig>f0?ooo`3oool0[P3oool9 ooooo`001oooool00`3oool0D5j[00lRS00I00lRS00505aX/@3emOX0oooo0?oin@3nK6T02@3n5a80 1@3nFED0oo;a0?ooo`3]k_H0@E2T00T03b:<00D0KWZj0?[jo@3oool0`lSR024cU@0900lRS00306Mc ]P3jn_d0oooo0:l0oooo2Oooool000Oooooo00<0oooo0:J]e@0?8X`0600?8X`00`1LJK40oOgn0?oo o`030?ooo`030?imNP3n5a80oQLB00D0oQLB00<0oVIS0?oln`3oool00P3oool00`3]k_L0=dNO00lR S00600lRS003086;``3oool0oooo0080oooo00<0em_/02DfUP0?8X`01P0?8X`00`1hPkh0oooo0?oo o`2`0?ooo`Wooooo0007ooooo`030?ooo`3dmOX06bfB01L03b:<00<0AUBV0?GenP3oool01@3oool0 0`3nK6T0oQLB0?hG4P030?hG4P030?iIE@3oo?/0oooo00@0oooo00<0jN_e03M7W`0?8X`0100?8X`0 0`21Rl<0oooo0?ooo`040?ooo`030=OKk00U=YH03b:<00@03b:<00<0N8>n0?ooo`3oool0/@3oool9 ooooo`001oooool20?ooo`0307Ao_@0?8X`03b:<01@03b:<00<0AUBV0?;cn@3oool01P3oool00`3o nOT0oUIB0?hG4P020?hG4P030?i4@03ol_40oooo00H0oooo00<0jN_e03M7W`0?8X`00P0?8X`00`21 Rl<0oooo0?ooo`060?ooo`030=OKk00U=YH03b:<00803b:<00<0N8>n0?ooo`3oool0/P3oool9oooo o`001oooool20?ooo`030=oQl00B9Hh03b:<01<03b:<00<0AUBV0?;cn@3oool0203oool01@3omoL0 oUIB0?hG4P3nA400ono^00T0oooo00@0jN_e03M7W`0?8X`0KWZj2P3oool0103Gfn`09CJF00lRS01h Pkje0?ooo`Wooooo0007ooooo`<0oooo00<0Gf^b00lRS00?8X`04@0?8X`00`0`@9`0l_?i0?ooo`0: 0?ooo`030?ogm`3gMGD0ono^00/0oooo00<0jN_e07M]Z03jn_d02`3oool00`3Gfn`0N8:n0?ooo`0; 0?ooo`030?gmoP3hn?`0oooo0:L0oooo2Oooool000Oooooo0`3oool00`3Gf^`052N>00lRS00A00lR S003010RS022S<<0o_kn00X0oooo00<0^l3O02DfUP2Z/=H02`3oool00`3oTY00oQdI0?nc/@0H0?oo o`040?Kgn`1LJ;40AEBV0>[/mJL0oooo2Oooool000Oooooo103oool00`28TLH03b:<00lRS00B00lR S00306]g^03moOh0oooo00L0oooo00D0[KCH01<09RQcP090?ooo`050?imNP3n5a80 oQLB0?hL5`3o^KP05P3oool01P3moOh0G6Va00lRS00?8X`0KXljH0oooo2Oooool000Oooooo 103oool00`3jnod0@U6T00lRS00C00lRS00306]g^03no_h0oooo00D0oooo00<0^l3O01E00lRS00C00lRS00308:<``3oool0oooo00<0oooo00<0d=CY01d_T`0?8X`0100? 8X`00`0G:I00`E00lRS00C00lRS00304eLZP0C9Hh0 3b:<00X03b:<00<042><09QFPP3n5a80303n5a800`3oclh0oooo0?ooo`0;0?ooo`0305]X/00?8X`0 3b:<00X03b:<00<0=dNO0?cloP3oool0X03oool9ooooo`001oooool90?ooo`030=7Dj@0S=IH03b:< 02003b:<00<072jB0>ETK03n5a802P3n5a800`3oQH<0oooo0?ooo`0<0?ooo`030=OKk00U=YH03b:< 00T03b:<00<05BR?0;Nmg03oool0X@3oool9ooooo`001oooool:0?ooo`030>GWlP19EjP03b:<01h0 3b:<00@0=DFN0=OJk03oool0oVaY2@3n5a800`3oQH<0oooo0?ooo`0>0?ooo`030=OKk00U=YH03b:< 00L03b:<00<052N>0;Nmg03oool0XP3oool9ooooo`001oooool;0?ooo`030?gmoP2BVl/06B^A01/0 3b:<00<042>=07=n_03em_X00P3oool00`3onOT0oUIB0?hG4P060?hG4P030?n5P`3oool0oooo0100 oooo00<0em_/02DfUP0?8X`01P0?8X`00`2PZ=40oooo0?ooo`2R0?ooo`Wooooo0007ooooo`d0oooo 00<0hnKb06Ea]@0A8hd0600?8X`00`0hB:00bG:X0Z[7F0?[ko@L0oooo 00H0ooWi0?i/J@3n5a80oQLB0?hJ5@3oVYLF0?ooo`060=kQk`0`@9`03b:<00lRS00G:I00YJcDYP3o ool9ooooo`001ooooolA0?ooo`040?Wjo02b^=X0HVjd01l`U0d03b:<00@042>=041?X`2?VKb 303oool00`3nOGX0oQLB0?nJU`0H0?ooo`040=kQk`0U=YH062Z@0<35hJL0oooo2Oooool000Oooooo 503oool03`3lo?h0bU02`lVP0L;Y804RB=01LZT00RKXl`0@0?ooo`030?nk^@3oool0oooo01P0oooo00<0em_/0<;7hP3oool0Y`3oool9ooooo`00 ooooool9ooooo`00\ \>"], "Graphics", ShowCellBracket->False, CellMargins->{{0, 0}, {Inherited, 0}}, Evaluatable->False, GeneratedCell->False, CellAutoOverwrite->False, ImageSize->{264, 58.75}, ImageMargins->{{0, 0}, {3, 4}}, ImageRegion->{{0, 1}, {0, 1}}, Background->GrayLevel[1]], Cell[TextData[ButtonBox["Visit the mor4ansys web page", ButtonData:>{ URL[ "http://www.imtek.uni-freiburg.de/simulation/mor4ansys"], None}, Active->True, ButtonStyle->"Hyperlink"]], "Text"], Cell[TextData[{ "Author: Evgenii Rudnyi, ", ButtonBox["http://Evgenii.Rudnyi.Ru/", ButtonData:>{ URL[ "http://Evgenii.Rudnyi.Ru/"], None}, ButtonStyle->"Hyperlink"] }], "Text"], Cell[CellGroupData[{ Cell["Imtek`Post4MOR`: 2nd Order System Example", "Section", CellDingbat->"\[FilledSquare]"], Cell[TextData[{ "The goal of the package is to make transient or harmonic simulations for a \ system of ordinary differential equations of the first or second order. I \ have written it to support simulation for a reduced model obtained by ", ButtonBox["mor4ansys", ButtonData:>{ URL[ "http://www.imtek.uni-freiburg.de/simulation/mor4ansys"], None}, Active->True, ButtonStyle->"Hyperlink"], ".\nThis notebook contains an example for a second order system. The manual \ is in Post4MORmanual.nb.\nWe will consider ", ButtonBox["Microgyroscope Benchmark", ButtonData:>{ URL[ "http://www.imtek.de/simulation/benchmark/index.php?li=30&nr=35889"], None}, Active->True, ButtonStyle->"Hyperlink", ButtonNote-> "http://www.imtek.de/simulation/benchmark/index.php?li=30&nr=35889"], "." }], "Text"], Cell[CellGroupData[{ Cell["Setting Up Directory and Loading Functions", "SubsectionIcon"], Cell["You may need to change the directory name.", "Text"], Cell[BoxData[ \(SetDirectory["\<.\>"]\)], "Input", CellLabel->"In[1]:="], Cell["\<\ Loading functions (if file is in another directory, use the fule \ file name).\ \>", "Text"], Cell[BoxData[ \(<< Post4MOR.m\)], "Input", CellLabel->"In[2]:="], Cell[TextData[{ "An alternative way to load functions directly from my site (provided you \ are connected to Internet and starting ", StyleBox["Mathematica", FontSlant->"Italic"], " 5.1)." }], "Text"], Cell[BoxData[ \(ToExpression[ Import["\", "\"]]\)], "Input"], Cell["Path to examples (you may need to change it.", "Text"], Cell[BoxData[ \(\(filePath\ = \ ToFileName[{\ "\"\ }];\)\)], "Input", CellLabel->"In[3]:="], Cell["Read a reduced model", "Text"], Cell[BoxData[ \(sys\ = \ ReadSystem[\ filePath\ <> \ "\"\ \ ]\)], "Input", CellLabel->"In[4]:="] }, Open ]], Cell[CellGroupData[{ Cell["Transient Simulation", "SubsectionIcon"], Cell["Read in ANSYS results", "Text"], Cell[BoxData[ \(transient\ = \ ReadResult[filePath <> "\"]\)], "Input",\ CellLabel->"In[5]:="], Cell["Add damping", "Text"], Cell[BoxData[ \(sysDamped\ = \ AddDamping[sys, 0. , 1*^-6]\)], "Input", CellLabel->"In[6]:="], Cell[CellGroupData[{ Cell["Using NDSolve with TransientSolution Function", "SubsubsectionIcon"], Cell["\<\ Make transient simulation for the reduced model of dimension \ 10\ \>", "Text"], Cell[BoxData[ \(res10\ = \ TransientSolution[XSeries[transient], TakeSystem[sysDamped, 10], Verbose \[Rule] True]\)], "Input", CellLabel->"In[7]:="], Cell["\<\ Make transient simulation for the reduced model of dimension \ 5\ \>", "Text"], Cell[BoxData[ \(res5\ = \ TransientSolution[XSeries[transient], TakeSystem[sysDamped, 5], Verbose \[Rule] True]\)], "Input", CellLabel->"In[8]:="], Cell["Make plot (ansys is red, res5 is green, res10 is blue)", "Text"], Cell[BoxData[ \(\(PlotResult[{transient, res5, res10}, PlotStyle \[Rule] {RGBColor[1, 0, 0], RGBColor[0, 1, 0], RGBColor[0, 0, 1]}];\)\)], "Input", CellLabel->"In[9]:="] }, Open ]], Cell[CellGroupData[{ Cell["Using Ansys Integrator with AnsysTransientSolution Function", \ "SubsubsectionIcon"], Cell["\<\ Make transient simulation for the reduced model of dimension \ 10\ \>", "Text"], Cell[BoxData[ \(res10\ = \ AnsysTransientSolution[XSeries[transient], TakeSystem[sysDamped, 10]]\)], "Input", CellLabel->"In[10]:="], Cell["\<\ Make transient simulation for the reduced model of dimension \ 5\ \>", "Text"], Cell[BoxData[ \(res5\ = \ AnsysTransientSolution[XSeries[transient], TakeSystem[sysDamped, 5]]\)], "Input", CellLabel->"In[11]:="], Cell["Make plot (ansys is red, res5 is green, res10 is blue)", "Text"], Cell[BoxData[ \(\(PlotResult[{transient, res5, res10}, PlotStyle \[Rule] {RGBColor[1, 0, 0], RGBColor[0, 1, 0], RGBColor[0, 0, 1]}];\)\)], "Input", CellLabel->"In[12]:="] }, Open ]], Cell[CellGroupData[{ Cell["Discussion", "SubsubsectionIcon"], Cell["\<\ You can see that AnsysTransientSolution is much faster and gives \ better agreement with ANSYS results. However, remember that results produced \ by TransientSolution is much accurate! AnsysTransientSolution makes the same \ integration errors as ANSYS and what you see is cancelation of error. As a \ result, it makes sense to use TransientSolution to check if the number of \ integration points chosen in ANSYS was good enough.\ \>", "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Harmonic Simulation", "SubsectionIcon"], Cell["Read ANSYS results", "Text"], Cell[BoxData[ \(harmonic\ = \ ReadResult[filePath <> "\"]\)], "Input", CellLabel->"In[13]:="], Cell["Add damping", "Text"], Cell[BoxData[ \(sysDamped\ = \ AddDamping[sys, 0. , 1*^-7]\)], "Input", CellLabel->"In[14]:="], Cell["\<\ Make transient simulation for the reduced model of dimension \ 30\ \>", "Text"], Cell[BoxData[ \(res30\ = \ HarmonicSolution[XSeries[harmonic], TakeSystem[sysDamped, 30]]\)], "Input", CellLabel->"In[15]:="], Cell["\<\ Make transient simulation for the reduced model of dimension \ 20\ \>", "Text"], Cell[BoxData[ \(res20\ = \ HarmonicSolution[XSeries[harmonic], TakeSystem[sysDamped, 20]]\)], "Input", CellLabel->"In[16]:="], Cell["\<\ Make transient simulation for the reduced model of dimension \ 10\ \>", "Text"], Cell[BoxData[ \(res10\ = \ HarmonicSolution[XSeries[harmonic], TakeSystem[sysDamped, 10]]\)], "Input", CellLabel->"In[17]:="], Cell["Generate plots", "Text"], Cell[BoxData[ \(\(PlotResult[{harmonic, res10, res20, res30}, \ PlotStyle \[Rule] {RGBColor[1, 0, 0], RGBColor[0, 1, 0], RGBColor[0, 0, 1], RGBColor[0, 1, 1]}, \ FunctionX \[Rule] \((Log10[#] &)\), FunctionY \[Rule] \((Log10[Abs[#]] &)\)];\)\)], "Input", CellLabel->"In[18]:="] }, Open ]], Cell[CellGroupData[{ Cell["Local Error Indicator", "SubsectionIcon"], Cell[TextData[{ "We can estimate local error and choose an optimal dimension of the reduced \ system as described in paper ", ButtonBox["Error indicators for fully automatic extraction of heat-transfer \ macromodels for MEMS", ButtonData:>{ URL[ "http://stacks.iop.org/0960-1317/15/430"], None}, ButtonStyle->"Hyperlink"], "." }], "Text"], Cell[TextData[{ "Compute an error indicator for ", Cell[BoxData[ \(TraditionalForm\`10\^3\)]], ", ", Cell[BoxData[ \(TraditionalForm\`10\^4\)]], ", and ", Cell[BoxData[ \(TraditionalForm\`10\^5\)]], " Hz." }], "Text"], Cell[BoxData[ \(\(er1 = LocalErrorIndicator[ FrequencyConvergence[1*^3, sysDamped, 1, 30]];\)\)], "Input", CellLabel->"In[19]:="], Cell[BoxData[ \(\(er2 = LocalErrorIndicator[ FrequencyConvergence[1*^4, sysDamped, 1, 30]];\)\)], "Input", CellLabel->"In[20]:="], Cell[BoxData[ \(\(er3 = LocalErrorIndicator[ FrequencyConvergence[1*^5, sysDamped, 1, 30]];\)\)], "Input", CellLabel->"In[21]:="], Cell["Make a plot Log10[Relative Error] vs. system dimension", "Text"], Cell[BoxData[ \(\(MultipleListPlot[{er1, er2, er3}, SymbolShape \[Rule] {PlotSymbol[Triangle, Filled \[Rule] False], PlotSymbol[Box, Filled \[Rule] False], PlotSymbol[Diamond, Filled \[Rule] False]}, SymbolStyle \[Rule] {RGBColor[1, 0, 0], RGBColor[0, 1, 0], RGBColor[0, 0, 1]}, PlotLegend \[Rule] {"\<1e3 Hz\>", "\<1e4 Hz\>", "\<1e5 Hz\>"}, LegendBorder \[Rule] {}, LegendPosition \[Rule] {0.45, \(-0.3\)}, LegendSize \[Rule] {0.8, 0.28}, Evaluate[Imtek`Post4MOR`Private`defaultPlotOptions]];\)\)], "Input", CellLabel->"In[22]:="], Cell["\<\ Now you can choose the dimension of the reduced system based on \ your requirements. As we have ANSYS results, we can check if error estimates are accurate \ enough. We do it for the next frequency\ \>", "Text"], Cell[BoxData[ \(freq\ = \(XSeries[harmonic]\)[\([50]\)]\)], "Input", CellLabel->"In[23]:="], Cell[BoxData[ \(\(exact = \(Transpose[YSeries[harmonic]]\)[\([50]\)];\)\)], "Input", CellLabel->"In[24]:="], Cell[TextData[{ "However, it is necessary to modify the error function because only the \ absolute value of ANSYS transfer function is available. Unfortunately, there \ was only 4 digits in ANSYS results and the relative difference cannot be made \ less than ", Cell[BoxData[ \(TraditionalForm\`10\^\(-5\)\)]], "." }], "Text"], Cell[BoxData[ \(error[x_, y_] := Log10[Norm[Abs[x] - Abs[y]]/Norm[x]]\)], "Input", CellLabel->"In[25]:="], Cell[BoxData[ \(\(conv = FrequencyConvergence[freq, sysDamped, 1, 30];\)\)], "Input", CellLabel->"In[26]:="], Cell[BoxData[ \(\(erEst = LocalErrorIndicator[conv, ErrorFunction \[Rule] error];\)\)], "Input",\ CellLabel->"In[27]:="], Cell[BoxData[ \(\(erTrue = LocalError[conv, exact, ErrorFunction \[Rule] error];\)\)], "Input", CellLabel->"In[28]:="], Cell[BoxData[ \(\(MultipleListPlot[{erTrue, erEst}, SymbolShape \[Rule] {PlotSymbol[Triangle, Filled \[Rule] False], PlotSymbol[Box, Filled \[Rule] False]}, SymbolStyle \[Rule] {RGBColor[1, 0, 0], RGBColor[0, 1, 0]}, PlotLegend \[Rule] {"\", "\"}, LegendBorder \[Rule] {}, LegendPosition \[Rule] {\(-0.8\), \(-0.3\)}, LegendSize \[Rule] {0.8, 0.28}, Evaluate[Imtek`Post4MOR`Private`defaultPlotOptions]];\)\)], "Input", CellLabel->"In[29]:="], Cell["", "Text"] }, Open ]] }, Open ]] }, FrontEndVersion->"5.1 for Macintosh", ScreenRectangle->{{0, 1024}, {0, 702}}, WindowSize->{652, 622}, WindowMargins->{{Automatic, 158}, {Automatic, 0}}, PrintingCopies->1, PrintingPageRange->{1, Automatic}, PageHeaders->{{Inherited, Inherited, Cell[ TextData[ {"Post4MOR"}], "PageHeader"]}, {Cell[ TextData[ {"Post4MOR"}], "PageHeader"], Inherited, Inherited}}, PageFooters->{{Inherited, Cell[ TextData[ {"Evgenii Rudnyi. All rights reserved."}], "PageFooter"], Inherited}, {Inherited, Cell[ TextData[ {"Evgenii Rudnyi. All rights reserved."}], "PageFooter"], Inherited}}, ShowSelection->True, StyleDefinitions -> "HelpBrowser.nb" ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[1754, 51, 17665, 225, 88, 17402, 216, "GraphicsData", "Bitmap", \ "Graphics", Evaluatable->False], Cell[19422, 278, 199, 4, 27, "Text"], Cell[19624, 284, 194, 6, 27, "Text"], Cell[CellGroupData[{ Cell[19843, 294, 94, 1, 75, "Section"], Cell[19940, 297, 857, 21, 128, "Text"], Cell[CellGroupData[{ Cell[20822, 322, 68, 0, 44, "SubsectionIcon"], Cell[20893, 324, 58, 0, 27, "Text"], Cell[20954, 326, 78, 2, 31, "Input"], Cell[21035, 330, 102, 3, 27, "Text"], Cell[21140, 335, 70, 2, 31, "Input"], Cell[21213, 339, 210, 6, 44, "Text"], Cell[21426, 347, 131, 3, 69, "Input"], Cell[21560, 352, 60, 0, 27, "Text"], Cell[21623, 354, 103, 2, 31, "Input"], Cell[21729, 358, 36, 0, 27, "Text"], Cell[21768, 360, 111, 2, 31, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[21916, 367, 46, 0, 44, "SubsectionIcon"], Cell[21965, 369, 37, 0, 27, "Text"], Cell[22005, 371, 119, 3, 31, "Input"], Cell[22127, 376, 27, 0, 27, "Text"], Cell[22157, 378, 100, 2, 31, "Input"], Cell[CellGroupData[{ Cell[22282, 384, 74, 0, 27, "SubsubsectionIcon"], Cell[22359, 386, 89, 3, 27, "Text"], Cell[22451, 391, 171, 4, 50, "Input"], Cell[22625, 397, 88, 3, 27, "Text"], Cell[22716, 402, 169, 4, 50, "Input"], Cell[22888, 408, 70, 0, 27, "Text"], Cell[22961, 410, 197, 4, 69, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[23195, 419, 90, 1, 27, "SubsubsectionIcon"], Cell[23288, 422, 89, 3, 27, "Text"], Cell[23380, 427, 155, 4, 50, "Input"], Cell[23538, 433, 88, 3, 27, "Text"], Cell[23629, 438, 153, 4, 50, "Input"], Cell[23785, 444, 70, 0, 27, "Text"], Cell[23858, 446, 198, 4, 69, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[24093, 455, 39, 0, 27, "SubsubsectionIcon"], Cell[24135, 457, 453, 7, 95, "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[24637, 470, 45, 0, 44, "SubsectionIcon"], Cell[24685, 472, 34, 0, 27, "Text"], Cell[24722, 474, 116, 2, 31, "Input"], Cell[24841, 478, 27, 0, 27, "Text"], Cell[24871, 480, 101, 2, 31, "Input"], Cell[24975, 484, 89, 3, 27, "Text"], Cell[25067, 489, 148, 4, 50, "Input"], Cell[25218, 495, 89, 3, 27, "Text"], Cell[25310, 500, 148, 4, 50, "Input"], Cell[25461, 506, 89, 3, 27, "Text"], Cell[25553, 511, 148, 4, 50, "Input"], Cell[25704, 517, 30, 0, 27, "Text"], Cell[25737, 519, 323, 6, 88, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[26097, 530, 47, 0, 44, "SubsectionIcon"], Cell[26147, 532, 358, 9, 61, "Text"], Cell[26508, 543, 249, 11, 29, "Text"], Cell[26760, 556, 154, 4, 50, "Input"], Cell[26917, 562, 154, 4, 50, "Input"], Cell[27074, 568, 154, 4, 50, "Input"], Cell[27231, 574, 70, 0, 27, "Text"], Cell[27304, 576, 630, 11, 183, "Input"], Cell[27937, 589, 222, 5, 69, "Text"], Cell[28162, 596, 98, 2, 31, "Input"], Cell[28263, 600, 113, 2, 31, "Input"], Cell[28379, 604, 338, 8, 63, "Text"], Cell[28720, 614, 111, 2, 31, "Input"], Cell[28834, 618, 114, 2, 31, "Input"], Cell[28951, 622, 136, 4, 31, "Input"], Cell[29090, 628, 133, 3, 31, "Input"], Cell[29226, 633, 533, 9, 145, "Input"], Cell[29762, 644, 16, 0, 27, "Text"] }, Open ]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)