(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.2' 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[ 44057, 933]*) (*NotebookOutlinePosition[ 45201, 966]*) (* CellTagsIndexPosition[ 45157, 962]*) (*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`: Manual", "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"], ".\nExamples can be found in two separate notebooks, FirstOrderSystem.nb \ and SecondOrderSystem.nb. This notebook contains formal description of \ objects DynamicSystem and SimulationResult as well as simulation an plotting \ functions." }], "Text"], Cell[CellGroupData[{ Cell["DynamicSystem", "SubsectionIcon"], Cell[TextData[{ "The object represent a system of ordinary differential equations in the \ form as follows\n\n", Cell[BoxData[GridBox[{ {\(dx\/dt = Ax + Bu\)}, {\(y = Cx + Du\)} }]]], "\t\t\t\t(1)\n", Cell[BoxData[GridBox[{ {\(E dx\/dt = Ax + Bu\)}, {\(y = Cx + Du\)} }]]], "\t\t\t(2)\n", Cell[BoxData[GridBox[{ {\(E dx\/dt + Kx = Bu\)}, {\(y = Cx + Du\)} }]]], "\t\t\t(3)\n", Cell[BoxData[GridBox[{ {\(M \(\( d\^2\) x\)\/dt\^2 + E dx\/dt + Kx = Bu\)}, {\(y = Cx + Du\)} }]]], "\t\t(4)\n\nThe object contains the system matrices. Matrices M, E and D \ are optional, matrices A(K), B and C must be present. In addition the object \ contains output names for the vector y." }], "Text"], Cell[CellGroupData[{ Cell["Constructors", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ { RowBox[{ StyleBox[\(MakeDynamicSystem[matM, matE, matK, matB, matC, namesC, matD]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[" ", "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox["and", "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[" ", "DefinitionBox", FontVariations->{ "CompatibilityType"->0}], \(MakeDynamicSystem[matM, matE, matK, matB, matD]\)}], StyleBox[\(give\ a\ DynamicSystem\ object . \ matM, matE, and\ matD\ should\ be\ matrices\ or\ Null . \ matK, matB, \ and\ matC\ must\ be\ matrices . \ namesC\ is\ a\ list\ of\ strings . \ matD\ is\ optional\ and\ by\ default\ is\ Null . \ The\ second\ form\ makes\ matC\ equal\ to\ the\ identity\ \ \(\(matrix\)\(.\)\)\), "DefinitionBox"]}, {\(MakeFirstOrderSystem[matA, matB, matC, namesC, matD], \ MakeFirstOrderSystem[matE, matA, matB, matC, namesC, matD], \ and\ MakeFirstOrderSystem[matE, matA, matB, matD]\), \(give\ a\ DynamicSystem\ object\ for\ a\ first\ \ order\ system . \ matE, and\ matD\ should\ be\ matrices\ or\ Null . \ matA, matB, and\ matC\ must\ be\ matrices . namesC\ is\ a\ list\ of\ strings . \ matD\ by\ default\ is\ Null . \ The\ last\ form\ makes\ matC\ equal\ to\ the\ identity\ \ \(\(matrix\)\(.\)\)\)}, {\(MakeSecondOrderSystem[matM, matK, matB, matC, namesC, matD], \ MakeSecondOrderSystem[matM, matE, matK, matB, matC, namesC, matD] and\ MakeSecondOrderSystem[matM, matE, matK, matB, matD]\), \(give\ a\ DynamicSystem\ object\ for\ a\ second\ \ order\ system . \ matM, matE, \ and\ matD\ should\ be\ matrices\ or\ Null . \ matK, \ matB, and\ matC\ must\ be\ matrices . \ namesC\ is\ a\ list\ of\ strings . \ matD\ is\ optional\ and\ by\ default\ is\ Null . \ The\ last\ form\ makes\ matC\ equal\ to\ the\ identity\ \ \(\(matrix\)\(.\)\)\)} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell["\<\ MakeFirstOrderSystem follows the convention of Eq (1) and (2) while \ MakeDynamicSystem and MakeSecondOrderSystem follow the convention of Eq (3) \ and (4). The difference is in the sign of MatrixK (MatrixA = - MatrixK). If dimensions of different matrices are not compatible, the constructors \ throw an exception.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Selectors", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ { StyleBox[\(MatrixM[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ system\ matrix\ M\ of\ \(\(sys\)\(.\)\)\), "DefinitionBox"]}, { StyleBox[\(MatrixE[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ system\ matrix\ E\ of\ \(\(sys\)\(.\)\)\), "DefinitionBox"]}, { StyleBox[\(MatrixA[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ system\ matrix\ A\ of\ \(\(sys\)\(.\)\)\), "DefinitionBox"]}, { StyleBox[\(MatrixK[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ system\ matrix\ K\ of\ \(\(sys\)\(.\)\)\), "DefinitionBox"]}, { StyleBox[\(MatrixB[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ system\ matrix\ B\ of\ \(\(sys\)\(.\)\)\), "DefinitionBox"]}, { StyleBox[\(MatrixC[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ system\ matrix\ C\ of\ \(\(sys\)\(.\)\)\), "DefinitionBox"]}, { StyleBox[\(MatrixD[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ system\ matrix\ D\ of\ \(\(sys\)\(.\)\)\), "DefinitionBox"]}, {\(OutputNames[ sys]\), \(gives\ a\ list\ of\ output\ names\ of\ \(\(sys\)\(.\)\ \)\)} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell["\<\ If a matrix does not present in the system, a selector returns a \ default matrix: the zero matrix for MatrixD; for a first order system: the \ zero matrix for MatrixM and the unity matrix for MatrixE; for a second order \ system: the unity matrix for MatrixM and the zero matrix for MatrixE.\ \>", \ "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Predicates", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ { StyleBox[\(MatrixMQ[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ True\ if\ system\ matrix\ M\ is\ present\ in\ \ sys\ and\ False\ \(\(otherwise\)\(.\)\)\), "DefinitionBox"]}, { StyleBox[\(MatrixEQ[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ True\ if\ system\ matrix\ E\ is\ present\ in\ \ sys\ and\ False\ \(\(otherwise\)\(.\)\)\), "DefinitionBox"]}, { StyleBox[\(MatrixDQ[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ True\ if\ system\ matrix\ D\ is\ present\ in\ \ sys\ and\ False\ \(\(otherwise\)\(.\)\)\), "DefinitionBox"]}, {\(FirstOrderSystemQ[ sys]\), \(gives\ True\ if\ sys\ represent\ a\ first\ order\ \ system\ and\ False\ \(\(otherwise\)\(.\)\)\)}, {\(SecondOrderSystemQ[ sys]\), \(gives\ True\ if\ sys\ represent\ a\ second\ order\ \ system\ and\ False\ \(\(otherwise\)\(.\)\)\)}, {\(ExplicitSystemQ[ sys]\), \(gives\ True\ if\ sys\ represent\ an\ explicit\ first\ \ order\ system\ and\ False\ \(\(otherwise\)\(.\)\)\)} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell["", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Transformation Functions", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ {\(DeleteOutputs[sys, names]\), \(gives\ a\ new\ system\ when\ outputs\ defined\ in\ \ a\ list\ of\ names\ are\ \(\(deleted\)\(.\)\)\)}, {\(AddOutputs[sys, matCadd, names]\), \(gives\ a\ new\ system\ with\ additional\ outputs\ \ defined\ by\ rows\ of\ matCadd\ and\ a\ list\ of\ \(\(names\)\(.\)\)\)}, { StyleBox[\(DeleteDamping[sys]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ a\ new\ system\ without\ system\ matrix\ E . \ sys\ must\ be\ a\ second\ order\ \(\(system\)\(.\)\)\), "DefinitionBox"]}, {\(AddDamping[sys, matE]\), \(gives\ a\ new\ system\ with\ matrix\ E\ inreased\ by\ \ matE . \ sys\ must\ be\ a\ second\ order\ \(\(system\)\(.\)\)\)}, {\(AddDamping[sys, alpha, beta]\), \(gives\ a\ new\ system\ with\ matrix\ E\ increased\ \ by\ Rayleigh\ damping\ alpha*matM + beta*matK . \ sys\ must\ be\ a\ second\ order\ \(\(system\)\(.\)\)\)}, {\(AddDampingRatio[sys, imatK]\), \(gives\ a\ new\ system\ with\ matrix\ K\ inreased\ \ by\ I\ imatK . \ sys\ must\ be\ a\ second\ order\ \(\(system\)\(.\)\)\)}, {\(AddDampingRatio[sys, dmprat]\), \(gives\ a\ new\ system\ with\ matrix\ K\ increased\ \ by\ I\ 2\ dmprat\ MatrixK . \ sys\ must\ be\ a\ second\ order\ \(\(system\)\(.\)\)\)}, {\(ToFirstOrderSystem[ sys]\), \(gives\ a\ new\ system\ in\ the\ form\ of\ a\ first\ \ order\ \(\(system\)\(.\)\)\)}, {\(ToExplicitSystem[ sys]\), \(gives\ a\ new\ system\ in\ the\ form\ of\ an\ \ explicit\ first\ order\ \(\(system\)\(.\)\)\)}, {\(TakeSystem[sys, dim]\), \(gives\ a\ new\ system\ of\ dimension\ dim . \ This\ operation\ makes\ sense\ only\ when\ an\ original\ \ system\ has\ been\ obtained\ by\ iterative\ model\ reduction\ \(\(method\)\(.\ \)\)\)} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell["", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Input-Output", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ { StyleBox[\(ReadSystem[baseName]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(reads\ DynamicSystem\ from\ files\ with\ the\ base\ \ name\ \(\(baseName\)\(.\)\)\), "DefinitionBox"]}, {\(WriteSystem[sys, baseName]\), \(writes\ a\ system\ to\ files\ with\ the\ base\ \ name\ \(\(baseName\)\(.\)\)\)}, {\(ReadSystem[file, type]\), \(reads\ a\ system\ from\ a\ file\ written\ in\ the\ \ old\ format\ of\ mor4ansys\ 1.5 . \ type\ must\ be\ a\ string\ FirstOrderSystem\ or\ \ \(\(SecondOrderSystem\)\(.\)\)\)} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell[TextData[{ "The external representation of DynamicSystem is the same as produced by ", ButtonBox["mor4ansys ", ButtonData:>{ URL[ "http://www.imtek.uni-freiburg.de/simulation/mor4ansys"], None}, Active->True, ButtonStyle->"Hyperlink"], "and accepted in ", ButtonBox["Oberwolfach Model Reduction Benchmarks", ButtonData:>{ URL[ "http://www.imtek.uni-freiburg.de/simulation/benchmark/"], None}, Active->True, ButtonStyle->"Hyperlink"], "." }], "Text"] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["SimulationResult", "SubsectionIcon"], Cell["\<\ The object represent results of transient or harmonic simulation \ for DynamicSystem. We have an X-axis (time or frequency) and results for all \ outputs for an Y-axis. As such, there are four components: XSeries, XName, \ YSeries, YNames. XSeries is a vector and YSeries is a matrix. Names are text \ strings and they allow us to decide if two objects are compatible with each \ other. \ \>", "Text"], Cell[CellGroupData[{ Cell["Constructor", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ { StyleBox[\(MakeSimulationResult[XSeries, XName, YSeries, YNames]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ a\ SimulationResult\ object . \ XSeries\ must\ be\ a\ vector, YSeries\ must\ be\ a\ matrix, XName\ must\ be\ a\ string\ and\ YNames\ must\ be\ a\ list\ of\ \ \(\(strings\)\(.\)\)\), "DefinitionBox"]} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell["\<\ If dimensions of different components are not compatible, the \ constructor throws an exception.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Selectors", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ { StyleBox[\(XSeries[res]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ XSeries\ of\ \(\(res\)\(.\)\)\), "DefinitionBox"]}, {\(XName[res]\), \(gives\ XName\ of\ \(\(res\)\(.\)\)\)}, {\(YSeries[res]\), \(gives\ YSeries\ of\ \(\(res\)\(.\)\)\)}, {\(YNames[res]\), \(gives\ YNames\ of\ \(\(res\)\(.\)\)\)} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell["", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Predicates", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ { StyleBox[\(CompatibleResultQ[res1, res2, ... ]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], StyleBox[\(gives\ True\ if\ all\ objects\ are\ compatible\ and\ \ False\ \(\(otherwise\)\(.\)\)\), "DefinitionBox"]} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell["\<\ The criterion for compatibility is that all names are the same and \ in the same order.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Transformation Functions", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ { StyleBox[\(TransformResult[res, names]\), "DefinitionBox", FontVariations->{"CompatibilityType"->0}], RowBox[{ StyleBox["gives", "DefinitionBox"], StyleBox[" ", "DefinitionBox"], StyleBox["a", "DefinitionBox"], StyleBox[" ", "DefinitionBox"], StyleBox["new", "DefinitionBox"], StyleBox[" ", "DefinitionBox"], StyleBox["res", "DefinitionBox"], StyleBox[" ", "DefinitionBox"], StyleBox["whose", "DefinitionBox"], StyleBox[" ", "DefinitionBox"], StyleBox["YSeries", "DefinitionBox"], StyleBox[" ", "DefinitionBox"], StyleBox["correspond", "DefinitionBox"], StyleBox[" ", "DefinitionBox"], StyleBox["to", "DefinitionBox"], StyleBox[" ", "DefinitionBox"], RowBox[{ StyleBox["names", "DefinitionBox"], StyleBox[".", "DefinitionBox"], StyleBox[" ", "DefinitionBox"], "res"}], " ", "also", " ", "can", " ", "be", " ", "a", " ", "list", " ", "of", " ", \(SimulationResult . Option\), " ", "TransformFunction", " ", "to", " ", "define", " ", \(\(fun[y, x]\)\(.\)\)}]}, {\(Difference[res1, {listres}, ops]\), \(gives\ a\ list\ of\ differences\ between\ res1\ and\ \ each\ object\ in\ listres . \ All\ SimulationResult\ must\ be\ compatible . \ Option\ is\ ErrorFunction, by\ default\ ErrorFunction \[Rule] \(\(Subtract\)\(.\)\)\)}, {\(TakeResult[res, num]\), \(takes\ first\ num\ values\ for\ \ \(\(results\)\(.\)\)\)} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell["\<\ You may want to reduce the number of YSeries before plotting or to \ re-sort them. To this end, use TransformResult. TransformFunction is an \ option to define a function fun[y, x]. If it is a single function, it is \ applied to all YSeries. Alternatively, one can specify a list of pairs {name, \ fun}. Another operation is to find a difference between different results for a \ difference plot. You define what the difference means by using an option \ ErrorFunction. In the case, if XSeries are different, Difference uses \ Interpolation. You can specify its options as additional arguments to \ Difference.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Plotting Function", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ {\(PlotResult[listres, ops]\), \(makes\ plots\ for\ the\ list\ of\ compatible\ \ SimulationResult . \(Options : \ CommonTitle\ for\ a\ title\), FunctionX\ and\ FunctionY\ to\ modify\ series\ values, MultipleListPlot\ \(\(options\)\(.\)\)\)} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell["\<\ PlotResult is a front end to MultipleListPlot to make a series of \ plots. Each plot contains a single output for all SimulationResult in \ listres. Use Difference to make a difference plot. Use options FunctionY and FunctionX to modify values before plotting. By \ default, they are equal to Identity. Use MultipleListPlot options to make your plot look nicer. \ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Input-Output", "SubsubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ {\(ReadResult[ file]\), \(reads\ SimulationResult\ from\ file\ in\ the\ Matrix\ \ Market\ \(\(format\)\(.\)\)\)}, {\(\(WriteResult[res, file]\)\(\ \)\), \(writes\ res\ to\ file\ in\ the\ Matrix\ \ Market\ \(\(format\)\(.\)\)\)}, {\(\(WriteResult\)\([\)\(res, file, \*"\""Table\)\*"\""]\), \(writes\ res\ to\ file\ as\ \ space\ separated\ values . \ This\ is\ convenient\ if\ you\ would\ like\ to\ use\ another\ \ plotting\ \(\(software\)\(.\)\)\)}, {\(ReadResult[file, XName]\), \(reads\ SimulationResult\ from\ file\ in\ my\ old\ \ format, where\ XName\ should\ be\ \*"\""Time\*"\""\ or\ \*"\""Frequency\*"\"" . \)}, {\(WriteResultOld[res, file]\), \(writes\ res\ to\ file\ in\ my\ old\ \ \(\(format\)\(.\)\)\)}, {\(WriteResultAsDirichlet[res, i, file]\), \(writes\ the\ i - th\ set\ of\ res\ to\ file\ as\ ANSYS\ script\ to\ fix\ values\ \ as\ Dirichlet\ \(\(constraints\)\(.\)\)\)} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell["\<\ An external represenation of SimulationResult is based on the \ MatrixMarket format. Additionally, file file.names contains XName and YNames.\ \ \>", "Text"] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["Functions for Transient and Harmonic Simulation", "SubsectionIcon"], Cell[BoxData[ StyleBox[GridBox[{ {\(StationorySolution[sys, ops]\), \(gives\ a\ stationary\ solution . \ \(Options : InputFunction\), LinearSolve\ \(\(options\)\(.\)\)\)}, {\(HarmonicSolution[freq, sys, ops]\), \(gives\ SimulationResult\ for\ a\ given\ list\ of\ \ freq . \ \(Options : \ InputFunction\), LinearSolve\ \(\(options\)\(.\)\)\)}, {\(AnsysTransientSolution[time, sys, ops]\), \(gives\ SimulationResult\ for\ a\ given\ list\ time\ \ by\ using\ integrators\ like\ in\ \(ANSYS : \ backward\ Euler\ for\ a\ first\ order\ system\ and\ Newmark\ \ for\ a\ second\ order\ system . \ \(Options : \ InputFunction\)\), InitialState, \ TINTP . \ TINTP \[Rule] {gamma, alpha, delta, theta}\ allows\ us\ to\ change\ integrator\ behavior\ \ \(\((see\ ANSYS\ manual)\)\(.\)\)\)}, {\(TransientSolution[time, sys, ops]\), \(gives\ SimulationResult\ for\ a\ given\ list\ time . \ \ \(Options : \ Verbose\), InputFunction, \ InitialState, NDSolve\ options . \ It\ uses\ different\ approaches\ for\ different\ types\ of\ \ DynamicSystem . \ Use\ ToFirstOrderSystem\ or\ ToExplicitSystem, if\ TransienSolution\ \(\(fails\)\(.\)\)\)}, {\(FrequencyConvergence[freq, sys, start, finish] or\ FrequencyConvergence[freq, sys, start, finish, step]\), \(gives\ an\ object\ for\ LocalError\ and\ \ LocalErrorIndicator\ computed\ for\ sys\ with\ dimensions\ from\ start\ to\ \ finish\ for\ frequency\ \(\(freq\)\(.\)\)\)}, {\(LocalError[conv, true, ops]\), \(gives\ a\ list\ of\ local\ errors\ computed\ from\ \ the\ object\ conv\ obtained\ by\ FrequencyConvergence\ and\ a\ list\ of\ true\ \ values\ for\ the\ same\ frequency . \ Option\ is\ ErrorFunction\ \(\((by\ default\ \ Log10RelativeError)\)\(.\)\)\)}, {\(LocalErrorIndicator[conv, ops]\), \(gives\ a\ list\ of\ local\ error\ estimates\ computed\ \ from\ the\ object\ conv\ obtained\ by\ FrequencyConvergence . \ Option\ is\ ErrorFunction\ \(\((by\ default\ \ Log10RelativeError)\)\(.\)\)\)} }, GridFrame->True], "DefinitionBox"]], "Text"], Cell[TextData[StyleBox["HarmonicSolution sets XName to \"Frequency\". \ TransientSolution sets XName to \"Time\".\nBy default, an input function is a \ unit step function for each input. You can modify this, by using an option \ InputFunction. For HarmonicSolution, InputFunction must be a list of \ numerical values. For TransientSolution, InputFunction can be a list of \ numerical values or a list of functions in two arguments: time and a state \ vector. InitialState by default is zero. \nHarmonicSolution uses LinearSolve \ and you can use its options as additional arguments. TransientSolution uses \ NDSolve and you can use its options. AnsysTransientSolution implements \ integrators from ANSYS, use TINTP to set integrator constants.", FontVariations->{"CompatibilityType"->0}]], "Text", CellDingbat->None], Cell["\<\ NDSolve in TransientSolution uses only the last value in list time. \ It chooses integration points by itself adaptively. Use Verbose->True to see \ how many timesteps NDSolve has made. AnsysTransientSolution makes timesteps \ according to list time. As a result, AnsysTransientSolution is much faster \ but TransientSolution gives more accurate result.\ \>", "Text"], Cell[TextData[{ "Functions LocalError and LocalErrorIndicator can be used to choose an \ optimal dimension for the reduced model ", "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"] }, Open ]] }, Open ]] }, FrontEndVersion->"5.2 for Macintosh", ScreenRectangle->{{0, 1024}, {0, 702}}, WindowSize->{652, 622}, WindowMargins->{{48, Automatic}, {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}}, 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, 76, 1, 75, "Section"], Cell[19922, 297, 665, 13, 120, "Text"], Cell[CellGroupData[{ Cell[20612, 314, 39, 0, 44, "SubsectionIcon"], Cell[20654, 316, 824, 25, 344, "Text"], Cell[CellGroupData[{ Cell[21503, 345, 41, 0, 27, "SubsubsectionIcon"], Cell[21547, 347, 2558, 52, 508, "Text"], Cell[24108, 401, 341, 6, 86, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[24486, 412, 38, 0, 21, "SubsubsectionIcon"], Cell[24527, 414, 1941, 49, 226, "Text"], Cell[26471, 465, 318, 6, 78, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[26826, 476, 39, 0, 21, "SubsubsectionIcon"], Cell[26868, 478, 1507, 37, 340, "Text"], Cell[28378, 517, 16, 0, 27, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[28431, 522, 53, 0, 21, "SubsubsectionIcon"], Cell[28487, 524, 2199, 44, 710, "Text"], Cell[30689, 570, 16, 0, 27, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[30742, 575, 41, 0, 21, "SubsubsectionIcon"], Cell[30786, 577, 798, 20, 204, "Text"], Cell[31587, 599, 500, 14, 44, "Text"] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell[32136, 619, 42, 0, 44, "SubsectionIcon"], Cell[32181, 621, 411, 7, 95, "Text"], Cell[CellGroupData[{ Cell[32617, 632, 40, 0, 27, "SubsubsectionIcon"], Cell[32660, 634, 610, 16, 114, "Text"], Cell[33273, 652, 121, 3, 44, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[33431, 660, 38, 0, 21, "SubsubsectionIcon"], Cell[33472, 662, 553, 13, 108, "Text"], Cell[34028, 677, 16, 0, 27, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[34081, 682, 39, 0, 21, "SubsubsectionIcon"], Cell[34123, 684, 428, 12, 58, "Text"], Cell[34554, 698, 111, 3, 27, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[34702, 706, 53, 0, 21, "SubsubsectionIcon"], Cell[34758, 708, 2220, 59, 278, "Text"], Cell[36981, 769, 634, 11, 154, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[37652, 785, 46, 0, 21, "SubsubsectionIcon"], Cell[37701, 787, 400, 9, 134, "Text"], Cell[38104, 798, 386, 8, 136, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[38527, 811, 41, 0, 21, "SubsubsectionIcon"], Cell[38571, 813, 1176, 25, 378, "Text"], Cell[39750, 840, 167, 4, 44, "Text"] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell[39966, 850, 73, 0, 44, "SubsectionIcon"], Cell[40042, 852, 2389, 44, 936, "Text"], Cell[42434, 898, 820, 11, 162, "Text"], Cell[43257, 911, 377, 6, 78, "Text"], Cell[43637, 919, 392, 10, 61, "Text"] }, Open ]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)