From 7812a265f683fff8fe21274090d806b35ebc69fd Mon Sep 17 00:00:00 2001 From: "Per.Andreas.Brodtkorb" Date: Tue, 24 May 2011 12:38:45 +0000 Subject: [PATCH] Successfully made an interface to mregmodule. It still remains to check that it is correct. --- pywafo/src/wafo/cov2mod.pyd | Bin 0 -> 129694 bytes pywafo/src/wafo/source/mreg/build_all_.py | 2 +- pywafo/src/wafo/source/mreg/checkmod.mod | 34 +- pywafo/src/wafo/source/mreg/cov2mmpdfreg.f | 90 ++--- .../src/wafo/source/mreg/cov2mmpdfreg_intfc.f | 290 +++------------ pywafo/src/wafo/source/mreg/epsmod.mod | 14 +- pywafo/src/wafo/source/mreg/expaccmod.mod | 14 +- pywafo/src/wafo/source/mreg/infcmod.mod | 22 +- pywafo/src/wafo/source/mreg/intfcmod.f | 180 +++++++++ pywafo/src/wafo/source/mreg/mregmod.mod | 112 +++--- pywafo/src/wafo/source/mreg/mregmodule.f | 2 +- pywafo/src/wafo/source/mreg/quadrmod.mod | 24 +- pywafo/src/wafo/source/mreg/rintmod.mod | 12 +- pywafo/src/wafo/source/mreg/sizemod.mod | 14 +- pywafo/src/wafo/source/mreg/svd.mod | 118 +++--- pywafo/src/wafo/source/mreg/tbrmod.mod | 26 +- pywafo/src/wafo/spectrum/core.py | 349 ++++++++++++------ 17 files changed, 710 insertions(+), 593 deletions(-) create mode 100644 pywafo/src/wafo/cov2mod.pyd create mode 100644 pywafo/src/wafo/source/mreg/intfcmod.f diff --git a/pywafo/src/wafo/cov2mod.pyd b/pywafo/src/wafo/cov2mod.pyd new file mode 100644 index 0000000000000000000000000000000000000000..2bc06399102e08e647a2707ca49c74cd240898a4 GIT binary patch literal 129694 zcmeFa4}4rznKwRZCNN;ijF4#1pmB|EyHsq~>NcCI>7NS$8n@666ltLRtL<8`!UT)Z zCS~SI@7~@vyEeXcZM5B%wd)H~SK=G6g=rc(DWn*%U;;BWU{+>G!~mfUe`beXZh#>u$dJ>ye7qSZ;pU3f zH&-nDyCoH0`}&PHT`+a(nUyx`#hTBzsNhUr`kv?Nd>aaUvx)22wfe7*`*j}=%S|K!nsk?#_| z3}58iaV8U!{Hv(-?VUPF8M8yRzOo65dtSN7w~UNU^6!GkP3s~k+x!^-ks-F#ZG@_{ z!nb(E1vg$7xel+>g80L>6Lt=so_{sI74ZvhQGlK2pkM{cOYp4ChpVZ%;HFjAu0-z$ zsV0;|hQ8(ba5Li3Vco} z6_4E9gFJE*Z!pt+?~IMjiVxn^OnS58ncKijIz$18ks#+r?>|v9xk`dOWBvMuvHj-Z@Akn%iNA^r|AnF zPJ=PhCS|bY6Uwzhc`&wX5qdjw8HyoeCEJZd-GEAH0|ZWJ{gi4#+Xj%agtlEhl6;uw zMTn)oH=%7-+0A?y^~Vxgk4kkXv@VtEOlWbH+Mm$cRqBC+woehcS3UNs#~$_A$%j$D z!_syb3oEBt+5>o0TH1a*DlDxNk8(@v#-q&Aj^R;aX}x%a(9+_X%f&SXRzudN7DBe) z)QZ`~r9F@|3~B1D_{L5)RrJLaL{e264DZILrS-5Xl$zsD`kHcZbQoO{t3(iF)&vaw zPPD}oo+hXq_g4NGD<@d_QdWjGwycxNF4MV`litb$A4X*@#@bb^t;K|Tgb2brs(uw& zX=ytjj9mu{?Ry)Yp!J(tKU#S;Agi_BNYLmoeYM6EBG?9>Q@wtFWU8ZJu?v~g(2bna zYK_yReaNAQ(*`_3f{rA#o%C3PyO1`e4<=}KmzVRu63&~5^w&fhZZa=N)7MDT)K zv3j;X+*BRz48|V*BLrZB>ObYnd_Nt?;Ym580j1{-$4=e$;EvQGO{(lju+NkbN#rQOHtIEg`8v4NRFp*o}!V3eG_Iv ztTSOVdHnnaMdU|xiDHKRpK}A8wi0sbjr4mk4tdSoi}BdQgK6XK8jp9ajdy|HC>NQv zplX(*yYWVj%Ez~J4QXWMb7@Y!&)fClv_k_XN+G0jagcOCRFuAN{yv5O6}sX zh9-^mVBq<%d11i3qSz=jmiTjqNyvnqT{;uMfcp$=#H=kg&M_|azsGU44fk1~e6K{x!WQ2BxQ|dkVp}b@~C0{b09@bApI_>fF4dYde zr*A_DGM?JbO<#t(uHs4yGv_i(l{b9bEz5{8615skgR!pwjx@oMl7)<Ds$T_T z^O3|D``}DKr*A(2kE0En+AzJv`vfXYsA&Qfe=tI*yJ2rxsQ&x15@TX`!0%m{ZQD7dkUBXDSsg2^7|~e) z+IlMxkA*&ehR;_J)OSK;c9Rx?`{-y<@Y}uFyjtY3PATft2K5(El66URP~@0^i#b;h#tPA*hxsz=Im>_b!T!SOy_Ww` zW`NUl3QH*@W}Zfk0y{=SKd3F(c$n@E-odyJJ zN5PqrkrH3#Nf?SN@61&qe@|aK_)fE%S%PjH{E0oDY+|3f{V@UZ2$0*b%USU$w@aj( zq+^_J%v=OumfxSlvQw;>&TyR0vU`?Y5BAZ}3m- zRPtc*Ml-XI90EM2$su}y`eL&o1VfIl^N%%LVs4_HU`l_TDJbB^K16X~zN!{KN-D>m zjCO{uzJ@jq&c&oBDrKu8P>fw=VA0lpcEqf>U7Y|c2#_aCtX}*8^5Zxe9jYYMc0gfK z$z$tk1lOO7Tn4$EsJSxGFat{a6VXE|w{6-DL30VCDMK5<fu+UDKpW$<;^3`W^qb zacC|L6helm=dD2;JFuVJVc{VHd1|nRf5+4K#sB^vxR_&$kQMFC>NX>erdE4jVTBa z$H4yw_3r@wkw?(v2Vp-xiMb3KbkHT?KJ?T82JVgmZ~Ce1|Qb7s`7YhC8VVQJ18C^dxC32@AFE(4G-HSs0LJ_1Xh5)amm&1?m zih$Eh1MCVbF>7t}LZjez&}qfW5=8rY(PhSAv{H;gF)ju4ofrz{X}rf^&H%E_8S>U=2qUX902K6Ob|O9_$Q^$b{}<+PA(BY|Z4hvl*w>9^|ojbfhiqU)eesD2sEb|w{&_cSf9eZ3LP2;dbO+*=d_`<1F1-hsqV4`S=?V%3~ zw%C(wsy(Zakku6a^&`R9ODqzdgbr>!;b}*4xPmnCH*am$!*T>@rJSOh;3(LM$>(nALM3F z-o}{FkOsk1&&jl+qF{U1#$1A$3`OUIJzEluk9t@UlOIFtAACQgCE64Kay7=vdif%_ zAS0YK9_NJpmrzjsS_bUeF^adUE*ac%90}xa+3QC~BN)3pga!0j@kd1d=SJTt2yPjK zd#HLQs2@Sq;QepbR2|%KK9<(a*>{;GQT?ggpQS^30YDG2l2H;h8~V*J6)Vujr$J`J zJkxJt$0xXTA#fN^%wyhpPTox9=_l5u6MmBjSlIYmWE5lB?RzI-c|Qx@KU%&1STHsV zkZLWi*x4#cqd#4@2^&4FtiWflUMy1MZZKwmH@5K!RtIlags@Z%O7JnWPBcg7-c_)n z;KG`!u7(k#p$F@d*23u9hStll3rvK2s=~?O=BuT0lCFFQl9-w)495C_Sz{2%TuSej z&|nee^J%l>+tD`*HoR72&i)0Oaz0*yvBPLy)vH1Mr{L$Js`beYpET+Qstz_j+ANY2 z(A%FjN`669mlUIrP>s);>j$bKuuCwxHUHW~cZLUy`fjtnzqx8OXiWn)^U}~@G5WoR z86RXu$wt!uLrw7hS5eLQ>oF``-BDbY{rB*>*tFtQA40_7em+8) zXU+N~=0N_39P?lNRRJ@?UFk0a@}jD@u=?A099~Ywd(0MO20~51n7S0u=}QD-zqzhh zAKNf%79u30132f0O#hq-&=vxGK@{2)?yCB7apSKY)aW%Y>Klmq52bnPva*@M0~Zw% z{wSIF_X4HPnF8b)uV%{eXr{*hEqqqO{|mw>2=rIx6Uf9+VUH~w#|-TlT&~z(<{x04 zw&;JyYUt)~g=WQ-vpWy+XP;G7Jr>l9ffij?Q>DR1Wr3vRZnHS5AGtjV0~;Jbvy0(| zWnkC`6UdALHSPO!RJ1u4r5b#Yak(;ul}gVtX|^O%8S?gCQ=T0?T#_dkV|{lmsFtwj zDN)A&_oLgr2B_y(l-5-@K%Z`bD|gJ-9@J`4J2RJJX-JYK?gx09wu!|zaqu8jEMjC9 z;YFNN=HD>r*mj(`2pB|>GYil*1bf}cFdoZ1i0;6AgX1d*Oyc!q=WV+G`i?KsVcb!?Vb81+ z_AcP8r|gx3eq+@5_2379?;;Cj%wAL5ID~MObIKE1Ng$~I9beX$ zL|+UAb)Nr0Zc`*^hRdo;Ij;%Ea5?~&ncF%k6Mos8nB865NtPk)`IO zGNpJp2|IdlI;3d)`n5f*e3F$_lz&-CmDJo&We17o0mk$U?AZIJF7de?EY4WNaE;~G z!ZRfZ|7-}ui_8VkYyMs3kc4LuZq^B7cw;BUsMg}Nvg#rcmi{p1j3Xat)s{AJHtQ*b z*>y5rcVQcBc2qynI5MA6z-t%*V*dmX%aUof5PSGeHtB=NRqVcY&#V(Gn>Af{6{sS%42(_Za@n|s$=pS)i#b|6>nUhNO>kQW z#8!?>3Ec540h1i)RPc_)AxKrG@pW{eer|DMv8P!~N!DGDKr}!FHG2dpv!>i!R)S6! zW4bVJ1=u(ky#I0YiU8)7zkcnD?njS>J|ih|C|1 zZAJ>H#|kockvx2jbEYKIj6sNgqwK^yviCM#2Xz=A#a~*(VS;{Yu9L9Wtweb$zlLe2 ztmbewK5r^!xj3QZU2@}c@vIY>sUYfdS7dX?c^T*%&*1lsuq_7WB&@X z2EdeHj0*`ldcKU!r|H^yz6WqMfTID^cT{|$0KNEm{=vpF-Ghfj)4H?15R7r@#WnV7 zp&D5r^OjSYdVHLzUxFye+iPZvG-H0qT09ng^Neqvft7|!khtw;Yw_#RH>U)@%|-j@ z=m&$bVtS;-uQK!Qy~1Q5nm#K!I_0+cd5i=f*6AdnZdlME{@}y&-P!-ZIG%ovoiFk< zFYq8{OmNmE8-L4Fg$*D0X#iHh!hX{>hWgq!>7wjBU zEBOTBcoy!d=nJnzI}i+FYM3J>QHL|34!OSM0`hSRH<%fD6YELdDgK}0F4)4$7#{}A z%Q$t;bsBP7;-7#YT~9NGirNDZkCM{eFM>oU1iY&4I#Hc~xg-G0#$^b6WC3kSu>tfL zx#xw-e5_pfPL4Y5Pn^+kXl`(e}MaINGiwji5kjd+_cL5C`ox@C#}nJ4LkhXRaE$+IrT{ zsI46R^nS$F%I<$ibkv55jW5vVv9tN6*nW&9F*xA|6f9if#!;a)HYM{-q$FlQ8DtGl zu?4BjtuQZ7Pw@1M>WMERl?meyD_sqirBduWNM#nW1w5rP>jX>7NyO>u%vpT1*<;U< zJwAi_b--qd-xH_Q!UbHJJ*XIaI1rY9 zsQE&BJwCyRxw?({LF*z`IbFsnOeV0J^iP<4A?|<5Xyx*hd8I%4CPJtmLEh$8wdNg+ zb>hwVJQuk!7ja^ft7tZukADM&v*K3ULR4=~_`gj)YN~n~M)DTKF<$yH!Q~F%ljv)6 zF`_0RxoC9^CYgY(8dHmld0q5Z`v@y{vm_dGP*uCB{MX)__ER2&Ps7 zw7NbNIm0&A$R*q$X9w7G7{P-Bn!(s{V&yC?7~}a_bw~kTgR@;ZgCudir?RUH*k1ad z(RRuiCyPA*6zl?Ebp-3m1#(3I2)q(|0D`NY0m|0An-+z(r*FWBs!oS(CpSvUA~8!% zRuHxXxJN<%1(8`8{25%44JDk+UE*M}{12!d1>-H`qqctseS0bQ`^>XZ*U)FM+vLED zDQSCGQ^jL4xv{-1yClQ;M>}g|evDMKYYc)8#(qGe_BOcwk9<-4WePdA%oOHtqC}}% z=6mpOWM@6tk=;j6R1K_|MOo0p#5Z1Y)SlNH`4U!(9)83v|rp|d?5HSM`@2WKve zLo9{EVGx(e07UlJaHyEuo(NrGSXw{@luaC5FjtrPd|(%MY@Gc#!0+Pjzw=I;D3t>O zi~VZr277~2Zw{Ts`;F2~SI_{<&44kr>$2-sgB0w-oU(fb@{OrCvJ|TYlC@T{B9awS zS*s*#jbxRirld;OA=%fTsvpKG0MqH8!gf>j{gyUNE!vH@YL%wX3>wz5iy__cH1n^GwiQSkhfe90$iXI2Uwt{mo6wiyFW+f3R;^?$!e9PN=yUK_RjWaYUFazdMVrtXi^+H$yDmLpYIkm9F1JFdR780a4{QD7b&`_Q_&HUgcDgQHl zM^exKrvF5zhD{O#WXCgo&ztoXDgUpMAMbnq_>ol6y06!*el}x+ti{JPpk{uK>#gsA zHJmM|+iA2d7U7hc{%6g|vwlO{WHfA6yK1UU(?DFBu2YQ4mJ+fZC%NGYLpEpB_8Xg& z(76|&Du?XKhHS?qWblw`4dq4~x0@2WAAk7|O)as)O)&Y8rL&0fqa~XakWj!1Z=yHg zX$LC_fu!TZXph!pHpGlrYAqHNj0aK?Jj}YCW_XXWIpwz7Q*gy@VBejE3&|BTY(qQaUsKqs(AD}4uMnPnK^o=QzRna#JBTJ%h z_#D_M^I zPopmLUq-(3+}KG6YA^IuLQ6_ioPeDPS=+W+SAZq)Pi?E1!q9FVSj!YJrC)-J)(Md+ zqT5fkjKY+9i<;nvQsRe-(DRs{^~L+%Otn^^NhvuRoNA$YrsNEEU%dB7?`y|jO6jbe zdWr4})y7UowS%ly22iu1()@yPUmG^;LZ>-U0>Q=BJfo~QDhzv9LqmgV3i+NXsv~K z@gFwCEm{k&EU-!r8!Z7KFrG0F5Ruv~xSYL({)#=_v&}xK5PSMqHo5mlZtlHyGMWfP z4+f%#0#QL8h#n49x3I0j*y|9({M6}SeB0AA`yrnKBzHW$>?o3j(x7cm&v^hZrzb78 z(G(0xAHdUn1XtO~(@-gtfD9h%J<;2pJRRl3_u=(W@5xjvO|`G1_e83-2C39(y{{+F zO5VpV>g!I5nI9kOdn{?O^!Q-kW2jvAeIoDe>K*BQ8A!T&PhvRg=zYBR#PJM@_uV11 z&jP0V=rSh7LuuGOKWO(nPa5=fpyzjp1be%Vzk2+6ybz}Za!SC1r>ST3^W6wPd<|zN zikP5tP3U{EyrpdAUZk!;WnR|Lap!nQDEPCyTLwgZY*9z?#q!jIiNGUsI9zX{;_uDf6 zl81J`(C%_+<0}^i1*lz1+IUVA+S7&|+B1;4UT9Y!rD#_orDV=LO6vs#6GZCtcc(4$ zr;zWodq8M+y0q&$9hr9nidgO?7QO3bhjuqo947It5>kqGCsIo0%%ikc=F#r6WqyT+ zc3No1UE1nYHES;>Z9HcR?Nz^bXs*G$uaC3DMfn^QcC8`qqJUqIk(+qq>cO+kngm6L})+Y z(w1+ZM9-6eBJ_S@(Q7jf?L|m^MQGO`rD!iiO39pgl-6x|v_D1K$Y1H9Ju0;KxwOOk z9GR~mZ9vxu?evQd?IEOA3GIHQ6zu_|l+2k&X}$S-)$R}Y%%iA^Yyy926PRr)`RiCN zVL6|eWg=`DOTU6NgR3qqG%6b1Nbz(wj2J0JqZ27bgL%ZUi#Xswyfg;?IiXL(BAvoB z1F4OIrvfR3rxGcJhk3+vRUV#V@S6EMa2Azd#~0l40Z>fnp^NQ#LmMNG)M+W1%3`OF zZ?Q)uG>};>US!~xLA_9gMd47&-;ruv23XTlHI7OIA+w}Z>?k7x6(bc|42Dwv$5bp} z9#G(aWQ@T$ii3G7_D9AJDVZ(Jddi**S-*&X?aI}bSbkEi@k6B&kmiS7_qAiMw|Q1l{zLAqQ3 zdPe|Bf(VKv@agR)++xDnbr=-&J|;B?n9?PPAq6sb{I@BIw~s&8_ZX?o1oUyH%B5I# z`>kskkRd?B0Z9}iVz1U!aQ1uHK=c5cgEe|NVxn4gVSvqACC#evHtV9mDVlU`pm)R+ z!KLN}-a~_~3OJ2XjHTuWCT-4_1MQqqS=WZ5heL`;^k4|PB~DZR0!?X_?ub1q{SkZA z+abyGC+&$3qZ1gEzMK5dbt1^*U-cbHT2v&2j7W*hGpP?*>k3jLx!4~S2Y<}r;Hzlv zDt6|0Ww;uWd#^Hcx%m6Qglv2{5RFfX9-^FbB&7caVQEyS^##mU_J36?Z6or&F)_l- z^_X@!9*YVHart~zQ#sTWLvA!P$S@C_u z!1i(vCPUlaCyTFh9~Bd8>50>Th!_TSdde@^sa9q?8e1)NgRzf+G!}qjt>6Gh5i$RM zhx6}uIRAc!^Y3>!|9%JaZ}ZxK`ORYE%K_t-Vn`S7v@;?d0T3=WZw;Aul;91^WgR8vt!3sN<#;Q@Te*2_g?UFM-YW1`Y2G@` zyaVfN9nWWG+ltVa4akpp#q`NVPWGcom8y%%F82G1Hz+ z;g70%h%Vmd=z`RaM_q2t#|t^Bp$|J0cyCY+m%Ay6+kEd*iH7Tc(O~Dj;V9Ih}_(qs$+#fw$5j|94vnZ<%TwwZ3tcao?d$)ns+%t>= zYau^nBhiog#cMuvrUx`{{n6FS^6fBoCx9m6bE(H=+yFI2jl(}hxaVXh0l(9a4vu;oC2BX zdusV;9_0ksAG7#bkZpR&H?ca@ zx=vukw)P*DvAngP%a~3zF{@S|pb#guR%D?MtO66MR-Ud^z^T>%N)cA$uVQP4opRZl z!&R}?VYf$?NJ$VcdDxt?Hz>CBqZCtuvj~NG&D99ytyb1!puY~KW*c`hj8{)S zi!TZYD(gsfNttf}W({BnyOglly7_?7LJilSGSx=LmS#8r^S~VBsbC=?!vy&AHJf(y zpIX&`28TDLVyV%MNELCXjr&HaKG``cBZ`J;#7!IK*6vinx&m+biqD$+mK?~o+G;l; zLq@$?qa*r4VK5d4rIgP6RJa)({erC6MJiHy^A?ErF|~NB;rzkr6fgfbcm~H0Nn({# zd}d19Bxm_=12!BdiPRwKBR(hGiBzWa?Z9WVZtrL5OK>K^#(BDp6Bri&TWaC)(HsOH zN8`DXk%wV0i=n8QsOOG&j1*}>RrU~@t$pO~1+YZwIb__UT32%FF3 zvRRpmJv{-NThJXgg3}Z~){-fILjCWumz41B`q4yL^iUyC46@z8nJ2Jd>>aU^34|8o z?o{7n34J@B5EJx&hn-5b?qsdjz4&X?^{U2l7g+7O`#F?-$$Vet(PDHa4j_Vv22R z+ub46w(U9L{C;bZ+0o{wC$sI$3s^LJZ!MEENdI4Xt!tL%w@d=&Q+TaR?Yp!L!>H?# z>j$uN>$a`F7jM~K%X;Ki@yN?_JaVge7n#4<#BP*fKM8BO{XQ=(&4evx>JRLK=BfYOC|4nA`+gYmS+Ond`MG)yD ztOr&N2V+Y>p7VGT!8|?~mY!RKNe!2(docyjtdqpQZywwrB)IeFY@TPv`Ed=zW!Y@paCM@E4H zKv@*c@?K`>t8B={6_QhKJTv{UF$^M`aW@@_^co%Kw-Cx`xlv&8i9s&EE9`6#+r-ZU z$S;7h#A0R}VaV@tfi2HRvCPf}iY6Y^BMJbyDC`>;kp-5Q+Q4KPIWEiMC2**Kq=ah% z8ZCGLpXjv%WxXcA2 z76AU$VD_K1hV*~Gv&ywf|3o`d~U3VNRGHy)ebfv+3@&)b#2+BCIVBG@qj z^P+EA#@4q`PmPuu3Plbu))@L+z8s(;%W1XhHfA(_!Wa(TpDpMh`4TId-gG#!8Hd z4@|(FB^L{7J<3V*rK+JPxV0M)g9Wgc9`L+~Shb#NK^)xrbAD?u(>)bLq*h7D)OG-2-^*&nplLvBdbrJfXb7KDg*@a|iLCVC zwuG5t+(Ak9C&l2Yk;l!EzW=~1zV{RS`k?Q5e%RXAPe#kTa0@0-8v1PfHP?&Cp!qZT z)+YX?zQ=?lvx3RR%x}_rr;p;OCu`VE!}&g!Ia(XRkQa5=2L9>MjU6Ek{4&7JYJ8v)!hn_DSi~L*fDz(1! z@q>Z}vT(aUD{(g~x8bh*Xu8#+h{4SVAYQXYDJ8NEy&N1E_|CkAiK=jaaO*zv zYptRAN;er+07$Y5=;xcX5@&yz#+T{(I<`yj7%lvqj}6rNv6D$O;T~McV73uv`a4D& zzsNV9U}^*@yXB@(pCKiA*OBB?ZAF0$Q5)LEoo+3A`5H419Hf0Bk_X6Mq59# zT?Ho3jaQjE2|5Z)2vJ}X5d|h?SAeEYJ_T488bZ}A#^$q9O=$QJso^U?0`95bY+a5N z5x0=R;QeU5<5&7E{}d%9g~uxCF{hZ9`^~yduGbQE)cV!w{4u$vHb%E(YI~x?1^m$G zaT!Ql&&pdd^R+Gs*0HU@YVZQ0Y3QaLt?QLm3un~2W2|9Iy@zRu9UvC!Ubkc{13E+R zLfUw%x|Jjv7nnNnSpGtEBTLLS!dkOunmVz-k((_%uBQ*iW{3w+ zz-mZ46@26dR}XqjOAyn?O5|iVa5;8^4_Xn}p6KKXpWX4^kY~ao7?mBz(q!dy&FNUC_NB@MAISN+ctvOAIl1 zy5)bGP&qN$KRn48jdRWHx}tI16n+f-UUJn!u8fwwOk0w+_8`rVtbA2(G=9od3k-)W z|17AMfJuu*k=RqoHnN{8e|+BHFMlDm-fH}eDae&N5}hgH5OpLs=F(oj>F*VDv(@j2 zB7_F?uR>9!^R=E@L*GG( z9+0t2>76BD4!0Ofb8HC%fbr~fe37x8bRJ`B8&b|thsdN^5Q-mvrP?BTdK3b|?^?^o ztjnOvYzq1t{iO04^R}>Nt}j+_3^>|2gOn!K<+@Rx4a*V0W?&HkFd+i?0(74OutTp+ z$aickPZ%*49S{N7<6aYUl;rCA9VNnmkSCQK?aD1X{swNoF-E7u<=zQo#xPUsh&CI( zktGh35oRBt?3}_5vyCip^jph9<<0x5Ewb8pDXvn-(;58;fkBF40>nvVt~hbOx&lP7 z?~0#?t(=JNK8|-Hvb=GslQyR9w8yF4P$tJ&tpP?ykP?2aVurO)*cTyUoH{%m)7~3d zATq*7Dw3`RQ1Jeaf-cO|m~mhcGOAmNp>aMK#8WIj0T;+L2Orjy!H0yE&u|A@i<4M) z{Q0@rA`_T!k2B=<@Egm|y#`7QAnkb*zBW~Jz<736Ms<>zQjH;Bj|ser9XDL$#Etq~ zf;n@R+}KN%dBQK3$LusloP!o$|CbIzEuO_T!ITdl^MGJAYJADjLB*UiGCFZd3*j8y z(c)b>|PD}$R4Qyo-`>-OVoK6H!$>u6&_Z0{c1 z`Pj=4vLLV&h43Tr8B5XW1&A~kGv@$f5qmC75O*%jQpR3&P2(8jTv%2-3hmH_u^L09 zT=?NHx}lhGmZ#$N6q?M`jh00qhU?BaT$&bNs_MFfTeoAWiY_GFtu$piX2bCP?{ymS z0M-i;5<#Vu4~G1h2yXrx2}LBcVZYH<3wo5F&O{Zs-1-3kfH3DE68X7vkcEI47Y*jl zL23Zv2pQ4fT-Io#kaOa|If6*yK+Fn>mU9r+6}N&|j}T&RO>o)v9E8Z+Ja-O4EN)LA z{E?nu7{;33IS303Yc`N%=O8orCapBuW-y(dg9v!bG-jS+4pND7H3z9c%5FL4#(1G~ zEoXIUztL94w5>9jgOD8OASKMUL>5-a1A;jSiPH-gGh1QdBpPp=gOH%(g$Y6R(@8|; zAf)UH3zKUHSQi>X)h$+YkS3XB%N)c}1-X>fo;wV&6Y~@z0IcH_B6oV=7lxG8K_Pss zVGHDK&h>18$n;>88E!j?oQnm-;Ixwv(oWWub`qi65YE_DGw5A&6~hw6U>KcOkgG8& z1Ot*T=mKJu*|3@D0sh6()u4<-L}W^Vp^uPdS$=Z-$}n@heuW^xt@opH>PKwKOH&)2%ehk4u*rk`rgc8_O2j4{{QL zF(IQs*!5xuBs#D|Q9ye`(Imjl)@=BIfQdQqhwjP>!p&af!L}Jd6d>F@Mi7Y};5CtF z&u)7J7lR4|Q7ADt&c(bIPsghfg32n(-?n2z)I@yVY~|bbL;QkVtv1<|v>q8?$#G5< z&teP9467SR?YNSn_cpqVMQsAs*2%Oz&0EK`ETbDOai&#VKH2)qet;<7*N&7eA5#d^ z_dP%iZ6c1geN5XefbSzw`o4RaZ3&3A*8>9INBZ=Adzh`T!1s~!#_LU;1RbA12=NId zB0hnXy~4qS(Sg^6j1cxhhzC@?!pQ%-3`|9n@<#3ZAX+6M71QZEfmqqUCN;$_>an00h834+B8@1?W@l}{yr(qvli>{CR zumOp0+HmDwwd{G^ITafTW;kwyGR@4di`(`qmfLN|Q3yb^_;g&h-4k8k0~8O?3r-q_ zJP&c;QdB8dn-CPVS}}kA_`y{DUMHL!Z{^P?wY{mhhFUH)o&vuo@lH4W1}RZkT= z4wkS1_UI)}>vO<~R@7E&Jq^VPtrxMCFLN~_E^_OHNcg!9xyeA;gK2S|XJ}njbzQ-& zylF|IF^mfkhB7BZ>om1a;0(t4fzZ>R+Fm1kuaw0jA9uO#%$vjYJ)hF{Dw%+dYOOO; zi8{5A9z*2GfgRxk-&z2A1pMv-jGzM67duZG{8NBkjsUyp^{0pc+17?LAU`;D-{417 z10{pO>)=$B!0ke)ozRvsbgQDlZL$qq+TK4`cjAPkQ13 z{I&FUrg=_B?@_6MrFsgdbu3*Vu@?5*b39^CX7x@0%od{ZY`1Ai=oq%fwB$q@fk87R zWRD-=?gG`q3+XPhouW2bJ$^(jnMK#{ghRWO8rUK`&vnU!z7_yn#B}2VSPZ@oKrWRW ztKdjs2OEE_dCsth-Q_~{>v8%j7Pqcpu}VV(2jMeuEv!u=j;|$AJf21~autnjM51pd zl8I(<@xCwI0_ zdsp3ZRv4k$IV+6gR4NPTYE(8WzizHV?SVq^A|>q0(PdJhY9Kt-*=p**2?)OYLayrU zMHH^S5Pwx?b1FfF!ksPp9G11tWtmE&18@CzrAeZ&bSeQ2zksNJu z$nGSxt4-emG~KtYO}O$r82ew;rW8&HAVyOTJKs&hM_^!m7l$43%hwKluJVlY)qesC zav(-T@kgPPowv zfO4$H0U8ESO73Xt?MlgQPf59A*iPR=t~sSi6>Y*d-pAj-7aUT9`ALg>pk8Y~^1K1m zJ|p}GJ19%{sL?bF_}*Qg zqqjLBgJ-DblE2!aN=`C0a6E9z7H1aDJ*J^$^CoGdoOV$|`j^B5yF+>iZB!oEp6ZJS zE<>*Jj^&iTUV^_94z~dow-&Qlmoz%+<$IMA78>|Ti)97sJ0#_Vy<}#ho+2}wc=Q>> zBTkreMo;8W!D6eD#k!6aT{%Rh&`;n{9mpKj6*$*`PEprsCe0(dp25QvR9&@OgNaLCDA5m%QHtyhCDO=M z8a9L!ZiU0&@u5U7%UY8x(e>+(}r=QDKMKC=t0TT#rz})P+cn3Oi)OgmzW<(}2zoCB7mz zEKe|hn$XAM2VOEaVco!0Zfwo3Wkb29Y`fq5anw0Nrks+&sj*sYru>) zt7Um87;D1hc+w^SZW5oJ{b14_ScCfKCdHJUK=LRT4(sBtho-x)IWaY-ws)SGWy`Hx zw*$LKL@em-{Wm3hu_H>It2JBxmNsV3#(EO^K6K;w;h`P5O5^t@swod7 z+5|4g`>9RHRZZQ@w&*doMI^cuDQC*Fj%BTPvP_pW+SzoE5~n-mfjGAVV!WT)iCjfv z5AouPl#X*fbTw99cRf4iegx z<@W)NMY7B{-sZ;10PNW}Ru|7K!L3x8FX4|mG~rCGzXs@yo&117E@Z?P4eFOj@s$Cu zi{1j%=#PLIz^`Ld09AD(!L3`6klmM(6beUp5<@FSWX6%TESrVvA&|wD$g~4xS6GG$ zDDCxBU>0y7i-Th*RgPu85o;|z4=y&fv>6^U{I3~HU-Odz@eE_y2xo4$!7{;1RQ(33 z&HpsAEc~}o(tLT4i;Leo`Gyf5j;)oR=7%jbB8q>IiNwM2UUwUpw~D|NQZf ze~h2gIr)O|O{pPP-aEYAe@2S3q_toIj_A;Ng5xZx0X+tEIR% zo~j=eh-AYk?sQIR!p@We$lYkb%5yL)|H`IS>jHb3pQ-10=!-PE^^1T|OMPa*0GBE%1tM zWE@;CPL&N-fk|gxi(MNsIQR)%?wyxs)|EIpP%J_<<4SG!cZ=5G77Mo8Cm$&7FcSLM z?M08EImj(z?sj7oD-he=&s~hslh}-U0H4X(0NZft$}P3?noZpOtM8L<>G;=o`M@h^9^3B=ml0^ddq6qCY*=l^>(y{(#40Fiaj=oIj-AEnB@806FG^CnGJxi6aAXvMe>Jshv9i#L82grv*53vm#ug&if^IJkm`t5^265Fi~F8pk+r6#2R8 z7L0v|gT2CCM%?xB;8sdH2frowivyEUOg8MLnwNJ?1~6Iv@grDE;kdDngl%t6R`0?= zU+7G?w`s2bkz0O^mIxe(ed8|{WZvwX=&Ul=X|UwaFbX{(OECPbD<8WJaZ`^p1Aisb z>kh^~LJuBBXNJs~M!2)8p)xjiJ}=p5g39&zOMTpMmD zV{0KS+-V{~VNRbl-sDgdtU3KP0iDUZLy3VSx$4fmPHAQH?M~|Ckj!}v-J)toP{+!O4fMTvOO#mRmoFLz$J$c3?HTLHF zdM+EAtSw64vDmvKMc@Kqvme8}e*=!?pKc{N5EsMxX7>#l)9l-LQ+ zaiNp3h7f#!C5;}XXV1bKd!=aYjhYH_tDTbitcKb+9|?$5Wr55ptmX|ij5q8>Tc zH-W-TYJDjjU=jnQ>2W}j!AvoTAA>mfUUx_E3mce7+T)|`IOIIVuSYrVb1c=mqwBkI zHtyRn9nlKg^KSVNGE&;OFJU%INWC97$eU;4{6tkFK18|H zcQ$?{kDqR{O|auId|iddAk}AAUOqZc2?^ZZ?)bi{iIpYvt=r-(h3xqzL}BK(M=N1j zrqW-WEJ2_Lh2~e*>$?kVv~{AFTs6qm%Lg63bb>mW1DCtb)5fN>cEiQCI2_fia{6DC zuuXgnL{T5`io%}l<}?ufKTh@e>2_Zl8j6r6JD$zT8icEy=bb`1voWOW04Erj9m~m& zEhkmXw)~JvS(HR9jDfvDi{pWFgO(g`rEFrnPo99)yr3mNlo%JZ{D)|5H-A6K?k2U) zAx&29BQI*nch_i-c<4MQ(QxVDFQ8W*#EowM3*JAa|MSJ^ygNgQh__1}H%8=*vvql@ zd~sHl<8pRy%TF)~ggz#;E~p1q;krH&+^VZQ3_xNI`+Xa(rv+>KYYnZP4|`bZ!`Zri z3=7%wbZ^%LV`nqo(b|?fRb-eI+x4Ak(o4PdCd zssYog`;;p~ieUc2vJlW^xIwll{PfW^0>@ zSVRTe^TLs=t7$Uu%Q|)>ouiX3h`M%1j*g7SmC~A$bzo;57|DhiYA_W2bYdU}q*rR} z<1!spEO$r@#_E8FJ>(tO!(v?VJgIxwf==P1prHO;v{=#UdpU1|Js3-KCkOE%W&l!^ z`yiYH(CcA+GAp+Z0y;y#gj()kkdxbzGsF?y_%S}He-qdS_t7vK#;rsA;C)jd#D0Th;-r8?b&6ITp&*M(A0XaALKbUOTsmOUm`$p{rSSCI5AYoK&2+y@Cm){(t+zLl$=~P=`tuv99YHgxM7{2X=Q!5Wg9Vv zvF#{B4^=YAPwhrA7uw(bVFPVQDWvB@=yZ%69L0`;r0}FNQ1j3+aBZ=qN=*~ z;MPZ#A8}0r!)UwdQU0s~iF!FU0_&d`Oj?8^i)@zzoP*QmUEpk=0?WcNbbHY+2eUF} zPrJkn;aA!nAJWcMh0lW;&OYL=I@>}m;zHkNv3HS`H(YUDd5*{(S4=7AE^|d@AZ}99 zm;SQ*!^-Us`xX7sOGThMG-dk(c}+@1*dIG>7oHWp*M%z)Wuup@*r{la3x~)j0P%=i z0CRAOL!R7)XEAz2O})vw@LW+V7w(NbgRukHPNF}m^{!avs54zN)tw!Kk9OHTb7>q4N>BdejTs!+!S6;DX@#+{hHd4;Hk9dkiA@6MVLC| z7}yZvFDx%)sX^I!ZmpMj=u@rN3@6c>Yk?KcD}qNA__n((&5rpZdmXz5;7PTs4(-Ai zHgUVKyI|j(TBQv%){yr%aT&=#VK|Mu>BxKehcK~D;Rhqb1DD{=T2kgL!)9F@2yW{L z{`@H%pTGrHSolfHR^c?8Q)jC%mqn`N#!jk=qdU zJp9lVddgqIguRS${Kmojc`F#i?RkRl^8YlmtzFnes@Wm^`(7yI7K6mUh z4{4kF@L6;vZUgnFud*;2)He%~b|8_^8rNGt%6zSv8_sjNhsdor*^67K_KBwm=7m(> z0cBDH!L7en>WfWUF`oej`r0&XQZrPXA(7{R=-o_@@a!E^CB1&Z#qXa%UxE+_&D_Kr zom5+U&-RKX?Zf!?EB%zo__$=q-u!cQ8jy;FHdExk=~Fn#Z`v<%jU`{u8P1`D#ycc} zn_>ER=tUbAxz-OiE|u(I=^voNO$>$V*npOw$3qGg?vU$$z2e`ttTswsuf(IOe%KKO z53u|s_l!a0Zge*2)`G6f&K#jTA{wDK<}0(fQx#7Wcd8PPJY0{N+8n6wC~oci#2IYz zY-~7(XPReYmlOBh?Oui|`AwhY((2aycT|U(l)_4xd#Gv*QS85 zbP@itxhN`esO?@XMN6eEcCpE(2n$zC@aN@Pmf|mdbP9ht+u#!)K=7}W?9MhaRYcjPiYQd| z7oJ&Uc>E27tmk=4Sqn3|^9U;qaui;}p`RwmNmOP;e9(ya^b+yuGtD#cv&52A*%-JV zbBW+UPpVvG#$We6+q$Gc6h3(WlZ7~L!jVB?c}s`0KQgzXm&Q%!th0#TJ^S)SdSzyew+R@OOzsN~w~D|ERL=qqJ@U;69J?EMw07 z94H8hZ5aorKe>yoGE1p+sIP44C~Ya`G${uS9V0!r zvgcF7=b0>ii@OuL!@U(8uRx04HKF$)g~JO-b-8)HZYt@P9&=Osks@1I50Xxxf6!6U<?Ov7pU3Y{IT|(m#oe1;q(yDU-$YR}{-WpM z1M^3|;8y-tl~U7M{0tboCRG#%Q{&d_HUe-LG1ctm-wB)_E5nfv;GrmSY**6&L=_uD^nt@Y>0H*&rbD3{+S7y?c?w8U;gGsk)OZ8paYN1Sd5ryC`Bs2j1aLU=gS zJR^AjEh|s;v%|s&CJqLFeq>Bb;{f1y zb3J}Ab~6|i9ipJOo-QlE%A*WGi_rwA^ju5l3sQ4nAhX$dmfo*SW+rlG&|zD84KB?B z%rr~i#A)op%1V?~aF|ikB$-lCmylf|9tXB0mIzCtty}u2vM^YaPoal34KoF6s=?12 zr{rz?(zX62E>ab(;|PThjQfFR7hlZMJMkCZk$78%@E2c!;V)*P@(Uh$0Z!yRd=Uq7 z6A<`4);LdDH>mGI_p15|P_8lJvZGLRKO)agcW0z@a*DZBzUrNA&$Ff6Xc@>dp1*1z zxd7kGDJ0{^W*1Gi{f<#JoUv;YM5D(y%#bXE?iNB`_Vq75aK5pSfMA& z0^%>J4!H3hy$(ld>joU9trKvRwocGdf?dF&YuS2s?G0yfmEP`r)VDhy^|NS!!bUqG zieDE~_|z3nK{4~pRLd?I^*4uI1|MF${|R;))XM0|3wr_(M*vMA%*>8#J~;rO?0xz|UNa-`Qf5DPGQl=N?XAo3FUFb zX)wa1v}~0NHR0XTi3C+3E7C_wes6?M4^D&9gQU*6i2)FiLpac0tVKa6D3rZNQIsmk z&Yq`ZnJyUn1@_X={*9fSVB6E}=n!V=0huZp+OQEG8NVb|>WuXL*iPljPo@kCNI3W! zwNiq`n3R@I74^Vk9Q(?8gDX8aohvK2C>C-MbDx%o1ukEsV*iQ;I*`u#W~K$1AlaAB z1CQK>++`fJp@#%I22YxoJ7K zox#_Ljg zB}CFkAwgl03`mbjGL+3Nvvd2Ygu}KHLcJ>l#L@q0eDf$F0Or^@kgUljYnfDcJg0>f8yo_eB5IMiV@i><%F^Ig5#qY&+rCDsVQS39eavqYy*t=h&oDH@q~# zwP1RPJoSyjI;80Rdv2CdHt;!?V+0LBGWa^pE`124*|!G>Yo86+hqO%_+gq|hgH0yf zQifaHWF<7aSfxC&1d~u=$E&+hQ)DsO_bhrheo9)embKkaOkk4EmWp@LIP$b(f{yPW z4Cmupn8n9UHDOPf#X_xGR(F}reo>XXHXV6bWbCZWW4~bQvyd1OhbuT$QLF6X{>Iyx zSJy9-lL~vPG9YjLG9i&XOjQQt4J%fdo|K!jSmk!a4O09|tN1KWu>$3+=J=6hLoc>W z>u~C&kH5)a&s+L2Z!w%r4z)mECL34fSnT3jzj{+8K=iDG2>V;*kL7NE1Y^@M;lU;q z)XdqW;*L<0csBXA4xiBFTf+4Ty&dPel8GHT5dedm|C8x=5M z83C?1J8Sj9tv! zRz%E}0x8DNBIj-y;HRL49=XR-Yr;5#^Cyln5v9e_|U#5k73 z(XU^=DFQN2%sX4ueS~|V(l&eP6#67vZT*l@eScn%`vgorc~d|4G!a9WW7O7q@^q)6 zguN8n)s5bSJa+Rr_;I&$CGa#$+1K+8c`yX!#TOepsgrK}=?M+SJDHrJU1CokbcTIN zH-`R2hsc+q?D8Y(pgT&~^C%GjHVd>SjBT$<9cJRfwm3T{jtvy+XalId*SMnwVhH8l6 zX~_ECW+%ql$2)24F=k10Xf|(8%-M|i6a+11V{bHJy-2Mka7+bjvcToL^g1Y(g5Zi0 zkE8TE8Sr%c{>!tb;6`kbZ#h7$#esHQO!sLo1kyAbl0%d7v?&<-8asCUHedE@Md-JD zPWe85aO3Q)NQ)+1zYoU#iT0uOgP0eb!CkMDVRL@`c_)MIC4{Xp;}Dn->Nq3JWv942>O+@u0-^@vni@ejOPnr#qU-o8d3_rR+Aah|ge>zS8@D()OGKKj zF`irwI(*YAu#+k2JWN6+iZG|YCtdp?JIr2vQ}TbW_js|Ls;0EZ`MqdmJ>xHIbnpLy zKA}O*v}c0GXW8NBy!?KB_SNqBj~b5lW`^oxyDc>l98Q&DTj2mAYR&jX?&vj>tGutH_W%)>9k2g|R#V}-`f zOCm3MA8(q0Lx7P_V0;(^M|Q_B$k~P^QF9f zuB|bp1W+El>bv#{YQCJZf9agB7NMVgz;5>B|K4s79SL!Dbfz&2PiZ2_JT!1#-tj}^8lSVi}vo?ay)$wV?$eHr# z2ele;@(R&6B>nnMB-OnSI3qaaWG{k9LVMINawNKb$QO*&(>2Hmurh|3N@p2Ph8Tq) z&_r&aW{0dt`ukh(^jFsW$XK1Oe#H?g_Rj`Tfc-O;@80w;*gY%VjK3oD-JRei+b!-H zkloD!w+(-7MP&x=SHNGyAw@)^P84iMDy!kUcjDD3-GjeaFp$3!YxvwHx9;otE_mClhPbm*fCA!kUH;>HEf zSUDq9-eC~sLQ{01%G5Ei=jn~qqf(o>41hTRoAbMedH$Ex`-nK~|9EMYB z<(spaiGxd9-*I|6S4R9qmIqPPaTK1-gG0i3yfi0Vq(T9v{30@0I4VCHhdA=2huvnG z$D}!lWG%-&IDLsL(aMeiRh=!fMI55VTKL+^HejMgv7f4hjRdcyZP6S zFN79bpAtZ4{#2H`6&{S80T8vgyRnl2hCOxT>cW55cw^`G7~_pSc>FhwH=2G&wPtLQ zjW^aH@4dtuP11)F$p621BhLHI89u+Kc;n_5CyzHM)?NHFVZ7lM1BHL5g{QyL_ruug^y6v78zNMUjC)Xkk&)%QYyTO;W9cINmEzs; zoc_wj8;b>QDgN5=1~ag?hQEwAh{is_h?FPZSb#zcgT1ce4W{x&OmDnF zG8pyBC}s|hl&mM-VC_@H8xLa>JsWSl*iXlt8*lsydH;p+#%0j>KYP5vM%(d56U31x zy$RwCWgq$R234IRwM87F#d_imqGr57RmzJuMqr*byZQJ3{&-_Wb0g!88}ayW8gGP- zkB>LrPQABy<4)8GZP3bY7|gnh>MSPSw#gw7nM)ZMMcC-1eD;iii*lAXjIf7h>t}@M7jS{)ivEc zJwc4&-u=AWzx3;0Rp*>Kb*k!AO{Z$f{}=Nc&u5z7_z7y~^BeaW<~K;Ki|LZl-$(_d z`x_MS+wnK>dt=-98&~S*H%LoHf1{z6brjhX=ir{*v*E7mW6f8hac9LqBk>3V&@)o_ zl8(2dd+gR3R~Ecvjjp^@ex!%5ZxFD(16|4AATr$F=#D3izhS~_O}C!7Ztp-r zEzRKh7gK0$w;mM#@ca!eX_ABa8}z{KEzRH1v|a{(V}ls=DwDb`&Hi?o)8g#LdT1Fs zC1tnhZEz8`Qv=$1Z$m>Q-P`c}{OksmIrlc`DXqWMdK<)sybV$^b&aG~jkiIm58-X( z@6dW1)3+MEjVQ1q=xu!T{t@stDAS6!kq338X)lAf!D~mlw?T$ZDpgdRL-keTZ4hbl zHprCHyp1nWIrEm#^|$YBnC8wPZ=)w}|DoQ-18*9=jaz{o&g@1NE5rYK8|rRunPxXK zdK>fKYT4T$wJxShMsFh(knU|zz;DOfpns@plV4NPybaQl(c7q=#X5>?)3vx~_pH8k zMy&bsx8ZFtrNZ0ji2(GB6uzXf2Hj(~O}Mh)C98DhrFt8iS-dT{D&7VG`1BfA@-~PJ z_cpfTN#kua;kBmQ4qWj;D!aBcyFsC~-L_Hu!}B(@q)86uZO{X^w={1<(|R2VZ(}yJ z44sm)Tl6-#2-~RvZN0alA<_zOgUXzH8}yXcUuwM#Vnf~rDVe%P(yPYXpwx%(Ha>h; z>unsn+30P2_v#V#HY#E7Z9ca_nO3|F=@x_bGI$%jcBFe7Way+)Ma4N(Up3waktT10 zOexLV*p14Ww}h_0eQ%@b`bzfg25$eM-iH03MsLFe>~Oq|BrC)JdK<0qHqLpaWp9Jj zx|l8*y^T~ry0<|Aza4LbKAb)h-UeyO=xyZvfprwwO-bDG?Z!=&vF7X1xU*uQxs4qN zK+j0wOXl8y?y=iETv_mvmAdj$y^Z-S-krFLZ#VFW-==Y8-)_*Itp>3GPa1Dy5nl1_ z2Cn#agI!zlHYgO|ZczNg^ER}kNeZHhAqw_cqATNu`R4bEv**ybU5v-UgXcnzzx6%9*!>uD^Y6 zW6`t<_T>g{|DoQ-OY4o^#*@Gf$J?l2W!QReW6}Q?zoe|r^h?Uh7lpS$TiEKq6eYDT zrb|X|BNdSDZBW2($J>Bbj)=EGS~7YYQi639*^5eW$Cn$|Rm7T4K;zDefxL~S2tdzB z;Y)^2NB7umIIe0bsXj(N3oXD^e6N8=e6N8k`(A_Ye8nj|X?%={c*XY`xZ-;ac5TVW zpiq3TLGcgI$52T#ftRd+4!A_j+aS?+PSU&$P3v_eyp3#V89F6px9Dwf5wFM?b5ohW5me76C0q-igMx54X4y0<|lPbyVZoI~|h<84&);A}D_ z)!VoPqA%V7ThCiU*VcF&w7$gul8;0umS4j@+Q98U)YZ6hjnUN@0_<>HjS^OX|8+GE zJ+YC|)fo1C%dQ5gbunEsx*Dl~bXS7{emkxP)}%Tjt_Eqz=xQ`v&3cLKi4olK(MIJp zvF3;V4p)OIl|I@)0J=pAU(#_3`o?aZaaBu6bv1HWXjfdtry6*~ry97jPc`VyT#fE{ z(zqHXyy8<0T=A&}ySC(NP$)jtp!kR9YN(`{z)O}x2V5fNYLI9=Cuy#Rru8}!uEu(3 z89F6px9Dnc5w=IrfVSS%&=6^bt3hSXT@89l>nydd2C*SmgVas^BI#A*YEbG!xElAY z)w&w%pEkN0D}WtAS0fkpZk*Wom97S5T70wtb);!8gR8;oNxG{+CQm9=RGdTgRpV;p z@!)JSr8HNg3AUcMgs#7FSHm=^n0>K<+kdF5@#Wu)uEsWChvRBYW(D|PSECiK#(OJU zb~Q+?i|LZl)kp=TyBZYm+i^9p*uxQVHAqWFSEIU+^%B{p@wnrQjnZQL|0`N{Rtz+& z(Gvma7Abs5<7D)W-8SK>mXhjfY-XWba24Na;1S$-)Z2A z?=;x8C0Bz&@tp?6KRj1MCCvn0vJ5)l5;0eUMB_P0b2T)r*O72FW<$%+DJi=}SA&bN zy(b#b*1H-SBCT*WsLZ*mK~HI&rPkFTHsorMx~X3zy=q(yN__}d!@OGSYFz%9(bX6P z>z+CSt_EdVe6bNTXfK1S!Rtx7t3f7DDpgdRL-keTYDgfB;A}FbG*@FAY&~xY zU4P@QM$=VT5dceV;PxNtYRq}m=xR&>b~vs^gcV@xU5)>b{}m;%T(}y>e?=j+E~ZOH zS0fdW?rKoLZ^zZZKad;|SA(=V7)|k(`elBxkfY`Yu@}na5b1x>2nPPpj)Ky zC37dDZ|pV?R~Ecvsjj?Kr(-^gcPFmma}7M=a}8YC=Nfe9pKIVr<8&;-D?Zo26`yOc zYfDZCh2nD!ihp=chn6(S!CVb`;P#g0YG_)oBjIWcgqERGQg(~31{YyFHK46`H8ez8 z;c8Hsb610&4&iDL8*(*B$T0lsHnyU2<}IOX zYg`Ssd!g<(6s)sRK>yr!`0IM*Ai7$+#mZS}>w4`{*Y!%Pgr-r8*1usrPG_;o*OJNOz`I)st|F$|x>c~S zB(7NYC3U5SjZ$IRzB8&A%C4DK6&tshg0Oc2u0kucp4cu~Fgub9lJUNk{(%m=;bLQF zT4qdLfUNuhqgQk#FyR$7V!a>ZvS3NJ0NF%lYmK#Iun9e_l9|2$*(u<3s0GOG#J2-t z0kVc8xByubR_wv1543L29D1fzis)X;-fCG0x)n$(7B&+LkQq|8Vga(p@Uw+s0kR28 zgje)O1Pfc`3y_go7toBRSE`;{Xc=ht zG^)1PJqNl@70o0%1AqM(3Y|0MQvA?G}2J3 z+a~5H@Rp|~uSwJFFjN1zN}wZ6(lD=y9>^;?#1dVUZ|*tJQ(E7ro1{SFPM(9Z%y3su zJGDd?rA~PcWDtCXEVhys7Uiman3^tz<89@=WMh2E3=v}yutRzdCYXb=HsJOBsiRdS z$x#+O?yO3LRl!gWLtEXa9X9X==4CEaJ^PXG+k0@n%?E z-V(a%m)%O<28K7Rr;eX5@5y%R!0xxSZs!u}NR2YnvdD(j?z_yPg(ETksLc^8yN%g< zeS~F)FV~5cpffFz+GWneETI|+oup{j(pH}9GN&4GJ!7=%UMBBTt4hrvzA-HH$9-yJ z19T4jR=!RpTi=oPRlr8@O|^rXutGXdUk55sE!id1x&#)+bT~h?>9exi#L!H->CIJF zj#i%S7zRDgIZbJju#sl()JB>TYQ|!^%-YxKI_%m-kF*M-qCNIOzm=(A0BQ;Y4oG85Dmq445`EWYt+a`O-5h-S~J!eZnHQ8v9%9z8JB#Eq8W z#SQ+5vZy4rC0K8mE%V2hm_*636|Q?@fxpG7m%Q^|M6{K(%CLCPVs&zFXWg%$^~^`0 z)x;_!U3d2X6|^M$(Av#t(RJs9UqS25 z2GIJF(W2|l6MhA)(^rAkUPgn8#-=W zH-G;8F*P5L#ftC{ltuD7O7_4cW+=H+PcozH@$0J z=a*|ws2!GFTiLPZtB*zl5prtY=(Db7YhKNu z9X0>>?p>%gEzwH^(Jlvcr$mU5Q}cG84K@3aXj{#9-@U);pPM#qTD@u0?;6DX4%TO{ z>v}5sUktnqy;eJBv21mJY??s(piq7&s-c7GGUrWZl89F`Xes<-G!AIBmU;&5zMicC zN-M$FG(C)0QHG|gB4#{Jd*V4oC?b&P7Skrb#lvFI#iw(MxYYvXs%@zyiR8pd_ zQFP6hM7gf38yzCV!}eo&T^@fa^_~_?I|nIo)GQguVk!`;i#E=$9mI!@%6=Wz!yxagQiLn(3c53fItEr=4vfkmv%5+)Rl_!OUuw=cm zVOn>rL4ALkIjl{QHJZch+k`og*$Ao7!_`Vdwa9xr8HWAEQ^Z6h710ZuN+67pNv)tL zPp$!j^dAU;V0|h3T%)(o&B8u6)n40NbM5-tL3midJ$pl%uE{fL&RYCDOwX7{p*uA)h@d9jQu7{JDcY_8_2{&BQx(WGV$y`~ z(}b<{uwzpNuxj>{#1s7=XdT1IZ|#c77K{)&S}7d;#ulViLw{nE6qKIg?!y~?9Dp-+ zuz4@@Tv3ApjY!$$)<+n9J@?ZYb|~(55k+u6TjAa@uH{~>gyP0z>#GZ$p@bp>EYz$E z9f(jhA3=(%NbbcmtNU2m{d$AO&iYxIKZFZPGWSvVx^;XvAyno262(>cuEle09Tjt3 z=Pq^Gr?Z-~6|HAoSM=oc0MqTT8PsUE7_4jE$fWG@_y&=R`gZCU)}@j%02N$C(rJk9 z{_=(;wAV>Zw`{h-3h2OPR|Bz~Hw*6i&r~?}jGPEzv0WAGTi6SBdAgqV_O987n!7_I z*ACPsRfyU_I}Rxn!Vks0j`*hSoi&ffj8b4Dl%CnxF8tYo>w|ny!JVuWTv%6dCn=$@ z4rWeOx=`9|kJ4r~wzpCF)Ixs^Z=%ruiD%~a971y2&q`iS6g861)X8?a5}H}^(Mo7$ z$fD+&?Sw8m`8UXDaHvT_^HGKvlMjD2~FG?NdX3VkWkJ zig?K8Y!JnOrUcs+I<{mZDqB{86}G()a>IIRzFB)dfBwN$umbd*>%d9}dTX)3T(azrN0eoid zYu9CV2jq!1ot}Lk5JseS!U3YZp@aGDJJ=p*(EV2Esd*6=B$~B5drrfW`5@J0_I{** zGP6HMAhrKhEWG0q6VeebB}T*+Q&bAP5`jx{5W7hv}Qz>U_O#z>Y$18odeM4Z0JDA5eU(VBs~%5uh64GZ0z<9Q3zzY8gqX06Ms8IOG|vU_%inwqmAB$aQnXUCczJ*mW-vj8!i(HlBvW6gxU zHS20B_tm^rbM1keS1XUJov^pIa$hZ8c28JWH>eS`JN5t%W-!=u@*pf_)@~ZgOsyTX zZPvc*WS?34@{&F4FlJ#R!Yz~{Pe}pCn$-0=OO#VH6Otrhc%XALAcep@B5-qx0MUV6 zZXu3J`rCQ>ogowna>#ZACZUj1Gv)L>>fu(N3q;b|yL<5>vJ_+y8NBuYWY%YI)p{iE zN0(Xqj^5CLB9kFp_s*<+$392!b-il?bf0su^2}OCBRzeKZQqXDL{A$lJ3Y4<5A&(M z)Sfiw^~&+J17OLOV`>LDl{nDu4WSF`r# z)OwOdv-X?1%)T3(XYKEptVHie8A0vLM*bEcY4cC`iHK9_GRq4cFiLgTHi6i))C6aJ zS)0@Tq*?1a){JSY+24E?)WM_2x9{wP_{HMe@4{+6yFaAll|trn>?w`elNWj&p&wbtUcMYc4bw53w{+c z_+7F2r-N)*4zr#rS>D~%u4Y}`fGq4LLn%;tU+#Jy0b2X%SbN+G*aX^Vw43FbmO|_EAY&uLyXGLHgq6CNt1#)?Enl>cD>5%S;uwYjZsBRCe4oknYK|FiVn0 zX}=QDpG9=AQ%Ke3cdWULHP|0$GD16JlSuDSa5tj8Yn$l5MDcWBqENfpnWsb=shR$p zq-GuF;SL@|5p6@;sqn3756#vL$ZobE9uv2Qm1PYoI(h-6jC&x^(m<>iqYvMUW}5o) z1Im3LyI)o}yl2ONlp{&;Za3_t`>bQ6espKxv|W8(08rCZv#A!tuIzl8%R1O=g+gPC za^Ixfw<-6P%6+qPZ&vO*l>1iY-l*JnEB6NF-lW{uEBATIeZF#EsN82O_hrg`sd8VW z+~+Fynacf6)o4&z4FsRsLp@l@L2Qnn|?aT=Iu!L<53?`64a0!r2GGi zqswH>?<>du3;w@^=lbCASkKdk$Ert-h@JYsNbY=jcx>BAkb5*Q?_ZMV|Ma-$q8xhT z?2FTa(}~lA(~py6&%=EX&P#A!hO+?YVWhm$;rhdHAC%noCqnI+5=Sj0l?x#@{W9AYLoL2}9iclAP4HYEs`Tp)2TNRCG#Z zEFO*M^^i1q754FP*){zv2#trQ_dYLjULVu6SaPzdu)MM?k}&lyOZI`xps!D0Jw$@O z4oX7e=+hj6NhPHq*$+F#R7#PYblCAHQT(c36hE^CL90}HR<-n?V%TSysl4#&Xc0Fv zrJTGbrrkp*tFmv|)IOSGPd!q9ERMCMBVt{Zm#yavXLY3W?}o=VdHM5j1rzbBRi}>O8FK3_e*|YMT3(gq*!_-Z3&e&d^UOZ`w zJm8K~k99iVPTd7A;)!(c>}kI*`pQaq+Xd&`Gvllc@=wVdXKwwU&2rZ_-3zY!@eR3b zXjEQ$&YP)s5ia73^xd`<)`m`aLf-pDRipdtb+UPlbZ>`aH_7|%88hP%-)r($Z*{GB zZ|Cc&yTC;}kxtNAR{Gh!6V6*E7lvQCVB*B*B#Y`UgZnRgN#q9m0^9#3uYFV8 z1un%<}W|~&i6qoz49)?P>rx zJ$dnUJL^}@wvOxbT2uY-g#XfwGd763tl+W|Po$GOoL!%L!4G@t?{0V8rRy6$tFQTS zn(6sPAJtEOWN6uK4O>$Dm3LVQmzDS;z5LGC=N}b3|BL$Xo?Ljs6qh7Onhz?}C ze@yg0%JO;rr*D1n=CSX5RzLE=!HIu=@M-SDQY2 zyS}0JcIU~x|5?A{rrPfVfBu`e%L*Yoqd}T!rS&>Ut

ttqF#&pTxE2N{Ka~B%DY@6G#_{W=bi=qu~0>Gimz|e16-I@QpfF^c4JaVBg)X7-Y zCgou*)7lNx`-{XJDb3`@nljbYbcB>Ds}zKSqAa8eiiZ7%EUC;iNaPd^Hr>$@kw|%E zVM&zQAz?RKS*XZUbc$M(Bt;|>4V~f9Ov=xQl8FXY-IN@lVg5NHE#!x)Yl;p{w6r9P zGQCo4t(YE4#AZajCY=>b4VP3#1HB?9GU^0Xn?yJnOB7ExS^NPO=tpR-X;d^(S(3!u zNJ$A*G;?kzp=PP9vb174nyq*=w-j+=Y$}DyA!7hzq*Tz-3bad7sQ;)@{Vxyo&mX3F zG?kTOYKkUdBrO_Cuz>vO11@E=4a%fLT9lDvh7UJYlq2iWIOHfTkD!f2<4{_`8q@Hk zaI6fCNdJq5nb4#rXqv58m8lSuVadthATTtkEDM;jLii!*0_GQvXqDjoaK)I1vaWVRwvZNAR7EL5f;iM^E zS(c2IQYGO{CaWRg5}1W54JOvg(Xc9w9JQmYn7AtXNIgeIr^ZNSUQxNIK$l3pe1fF$$NTO;gQ9B4-m6e-{#S|}eToi_b!Hln1 z>8kl`8flMe0)>aEc?*Tg$n^+Gei5-(BB;LbR6)u`tSE_SB0EyAgsGp2*dluWi~aU&a<(%ZsSYqy!`gqcSO6IiK7jukubx^Oi)*dRO!b z^qLU~_KNhT#-@)KElRnmq#RBQVwe)iIQcJeWlpv)`sgBfL5V1)xo1Q>NueT9YkNid zp@oaUSj$-bEUiR^MZ;4ZtKyAEuLv{wNl;F&NGGYK_?l>DcngRfi5ADoq7fJzib1L@ zi&j%0b0N z{v**6baarntY5SW12S!_a1u=ndh)1fsi=T(u;yH8wlQ!^78m6f6V45=U=p_$&<5&P0-}^cJ8&0Flc;4*Ag~h6Vqc^xuaE|mPYuV>Zx=Btl|}Tc zoiSRj$z&QHu3)~_q;fB0pn1GeWal)7Lz9~@jT$y`V1e120kmWSt(ibuCeWShC$N6`ho%)T4jm7x@&OJE2xg%mX;d~XR zns8v=Smzeopt=82bk-z)HTk2tPwm?gJn-;Wua79qSMZK`ul~K)7vAwEdDGeZ>z=#! zGI`3S-`{fSC6)4ZFPw4PGt2Ift8cyK{sRAF@|w!Jp-(5)$+Pc0r9>*-BLD5jPQ|l2 zd>}6>SOq>iMcL%pCXKth$LgcybsuiKzvEB8lP`ScG{@?hdxHWLDK-Fk~%b(a)o|VGaN*LVcY^*+s(1uqkMAz}e*H z0-qKQP0D7cp?`swGYPH>1g*3n_?{G$ zhVle{lOkzaC{L3L<=T>@Cb<+DpH^xyD>GW`H90wssjX79x*-fHLlGzmeq$;qh2{80 z#70nhF^*tkIreFSWHOD7#gmoclFKTiari-e+6oOOdJI$H^kkHcKf;knoQ5L3Do7%e zX^b-7sYpaCBdDiQ=5A60TM;i$mKT+mqy}RcgpzY`s5FK6X`1?6u;k92$o7Bl|J6V% zG|>FuyCW!>wP}b%zr%~OH{Sc=G~?`irX&S%S7)6nrbi?iE-C{^BJkhif1L)ZzN9kc z$MWxoNSnVJBK5>6j@`g!emz7Qr@{RDhe#`cE!1EI!1e-LuEFL4%l@}YOVFfyZ{UM* zj>nnAc@xeBI9K3o#Q7G^Jva~G?7Vk~bPi5C&Wmss;4Hyejq@&?%W$s2xe4bEoL}QS z>YE`_cbvU(UW9WL&O)41an8fJ2K&NVn+!TA}^cHa$=PQ+=#X~jv$MY!kVyaHz-&N7@+aaQBJ3FmyAcjJ5j=W?7+ z<7~kBGR`eH>1e|J0M3s4_`3;rKhAMDD{#)kxeR9`&Sso+{8z6>Mz0;E{OSGUlS297 zcp_R*Sy2-0UlzH9|2mV9%m`IxYD4`KW6NWa{A66RXwbp&@=}32HF&}F3Jmoo5P~6T zNwg}&krlZ(z7T z8lw_;ywYxI5dB_}4oefWsCkxcv{-7R7v$n zyV7WBQN?sgda+$XiT{swiDbN}6eEt^?WPJM(m5nu=AY%ILWEV6Pm4v0t5Nh3tnZilnN$jUFscWWi_F)2ulMnR2;H;RA z%2;M~vN0{h?h2WI$$813Q6mQpw^>E{-bnvz&eFuxqIi;1^MjT+GkjAbk<}WR95==DFs3&EJ|YwD>LkEzes1VfoOq)AE(&faQ2=PisHxAnWg~ zrPk@z71qzKS++B6Hrqhk2;1ehM{OHyn{CJ0m)Td?*V*rLEOA-g7rBSH^W7!xneH3h zx47?eKjePYz0$qb{kr>Yca!^jcL&dDp7T8ydfc7@Ps9`R#69yo3q6ZHk9ZnATRk1T zgS@5Q8@+dW@AW?H-RC{QcbadwuhF;J_mS@>Ur+zV{tEwH{#E|({U-*x2Q~#>3;YzY z1l_@4a8U5#;HAN_!STVe;I!Z!!3Tqn1YZk&9F*i7xtnZ~2g?QW<#I%xE?+O-EdND* zKwc(4E&pA9S$;?UPX3W*-A$6T4YzjC%Qge{fyHZ)Ef-rxSxPN&%N)yJEIHP0R+H6Ybz1vFV@1|$tk+xTSpUbm%KCTf z2J0s4L2IsUwe4lwd$x}DT;Y7vx!*a$HQQD1 zdeb%BeXsjvx7l;G=N`}9-ut}=po2^N)BO+lxA-lAdjlT^J`J26GzBjYRt5hRYz}@N z{3+N4`8`+eD_h!fn9+w13v^t2Cs+ymjqWr|J#B)gI@#>1l!3Zl?hS}m8CpMx)ZWQ z%!BPW+MB@bN>{`ccRl7><67(5<2v8%b_d;8!*W)-SGzxPpW`umoSs6@eV*l>Cq3_Z zPV@Hm=6bL2-sN5DeZ>2g_e7t`cdl=g?^fSJ-vho^e4YH={b#~bZt~yhzuW(kzg^(8 zfE@TkU`gP8NO)fGBgphk&@5jjUm?$uZGvcZH?_++iu$m&)1&m zUb}CqZ=3H7{{;V|{{8-;$lpc5`N1>g5_vzRo5;*Y8ft#a+|#nc@{?tr^&RUCw!3Xl z+E&p@G}Zin6+WRKL+A7VS;+R>ocT<^I)c3t8g<-Xay(EWh>8Ta$Bht2M{+}qre=O|A%&*`4CJ>xtf(5&+;^*rj? z=y}z%-y?aC@^~(vu_s;XK^gi$1=Kavy?A_x%%GcTF@&$Ys`|^Fi z_g&??#W&ygXWxCk_k17wj`w%-SNb>lI|M?3X9I5ra)b7uHy8{Mz}Wv!m-I z*O@M-YoKem>-VlgSE;MYHOqCY>o2aQuE$-gT`#&eyWVwma9`k_;JyPII@>eSGu9LK zlz66jZiHqQc$RpcgKl2)Z1a4Ia{bZM(R-5jOm82r-79-9_KxvR^v;DvJ>~txyVrY? zFV~m!t$-zc5x5{&5S)NEWh&Z}O~I2;vt;=Xu$x->4l4i6yv?`(?Sp0t)@BF>9(V6Qia3x(cTu-5fSGnh)rCj1( z<6iH6*L{j72}^(2^Py)SO7Up#3Eoq^CT}nA1t>*_*XteO9qql!8}XKSr+VjjYrVI5 z|LlDnayLQp-QI7!`@P5ey7^>ZIqdch-`&1NzOBCZeJA@(e%U|7f2sc}*m0wObl|GM z?7-cD2Lg|vgkK133A_`yE!Ys;5Okx(STFC8Ka-^<)Cu$xz07OO&E{{=@||SqYq6sY zZ?^0}&v2@Bly$PT!aB`*gSEyw-})!(J=R5NPaZ*wvd;R7b&GYI^%Lti)*sMk9Bn(x z*2|V}8*3YHi`uS6TQkS@xb1!0C${$XPWBx8Q2V9!o9y%LkE8Xex4&XP-QjkubG+i% z>*(Y>(RrG)kJI8D=)BmOUh-}7 zz3F?$x5xL5?=1fae}R9Bzsi4||7rj8{=NR6{AUDu1^Na2fttWW=yUwRLbSQn!MVXd z2k#F)8C(@Chvpt6oA^?a{LtIU=9%UP%xh5t+FS0nykvR9vK4)5C+msUKGvvpt#!Bc zJFD3?*f!EO#ult+9I{vZ5(0_MPo zKtbS&!0my*1UAFMz7J#tj|p}UMuRs7kCVI0LG;Pv(I+QRqi&V&B;DbcC^K|-iFtX&pFmQ z8Xc1JXlKwl)H%sn?wsbl$@zx!OXnY4H=);C>w4Msy6XeiPS*ifJNMJ>kKMc76FloY zJ3YsEyP);>znxw!cNzM{3g2?*$mS3Fr}^vre}Y~f@;~N(%D>v*;D6D-)&HJ< zr~eE8cmAwEPT=G~kH9$rZy+ylO<+o3Dtf6K0=ESIh`#C()X8?x*15rcL0j;eU_AJ6 z@NdD_gYN`C41N_1%2&#t$Y04)P8O@9rY*ub-1kxb?z4167+8C(Z8KyPulOZKWzWdz7Kji+Hr#8RENpY3sz)y3~&r{6gaM6 z_VfqG4UU@~b&dxek2>CRY;%0z_{6c>@r`4@<9KH`r|c|sCY`rA7dY>8zUAER?21-8 z;2Pu_;TrFH*!7a@GWU4*jqU~RMeb$jyXxTuZgtN?EnVxedH>?A_rCA_*lY4V1Mluj z)VkyS=lL)65BA^af8T#hpewAW2zrSJW}>aCg@18Z;GV#uz=MHRfxibf23`%k9ryqq z$G3q4(9~)0f-VVO7W{p1BJ68AYUU%st-<%m+f$V=KR9B z*LjfD#Zyoh`?{=l-F4wcJb*>LxpSiwvWw}SXC%cpIqi4IHa`*OJ zgf_0ibB1?<_kcGGefI@EudfTPcDYV>|K44R z{`5`v3GmoQc;&!lS@3noz2AdNF2Gv_*VfC?t=5DgOW5U3v=0+)wATXX;;QF6jCO) z@kTkIwUjd**#L8JcEH)5ML2<71roxye>6u$FpnpBTm`k+a9ZHIgN3=-xRCg`J5b}$LEO#DT271}r(7}rM8^hxxAP(P@o z5dZI1#?{haNkchqFNN@xH~}V{YTn1-ttZsVrX}qx#{~WHy zfniHMkJTcyhSfw}s$3vTj}w|l0?7lU^YL0_Fc2CUs`6Y3WT+0g1_&LhJl6rK*72g{ zr>h}8k0VN%;!xuDS^L2Cc1A^9jHO%(A!rR^^$-@Gk}#{~QjQ=Q>92j({-ae2{7IDH zSiJHQRA%PIe?uq<)Qc z%W}#jd=yAYt~SnUAoFy{8$cH7kk5cDPa&e*xelo;E;&Pz7BTwbBFeoQ3PfVWS&!>c zBADGpxu^7;rEei9lBnGiv2X$}_p7N$bcZPSNkDnIQ*d`)%``E8gdpohE>KdLj$@E2 z|3aakP~4Jhahk0S+mBH!Ar!X~VmEz}okDDcIIBU9TT3WTfLWTj>39VZ8spqa8w<~s zq~~=42#rmIlDNin!R$q7tQv2OSJvd!FfQF8G`1OS0@v6|Ltcf(rXnTRSR^quqI`0% zq1F!sCZa=NR%f8XBhvOO)|-UJ2)h)>*E%E&WZhg5M`(jnCT%=zmn7;v)#I0FLwfEc zMH^~*@g%e{7d;w;059t4^@q>~wdPzK>0hz)_;C>Ee#@b?F&A+@TqJTz>Fxt^<`ONk z637!egf_UD_K=7Z3S-D)aac^J_E+qO=xj$E(;zMKDUfj~B$SwfR37KV6hf(Jo1KPB zM5@q~2*t4s9U%~ka{zJjb;!}^B=I@ChWklCChCwgfK=;{^MEvt7O6thkPEBX-lQT? z%9qP(DoDktB*f#Hs3KEYDvLB$#32c7pgi~YT7*__pPxcP;d0P%I2Nf0YAz_-no{qlh2PsuYmqzBHK%{IT50lwpbuRkRr^KN))9P?Iq%PW2qmXK7Cy|O| z9uFj6hfD%8PKP9bOw=LQ1F6;_H9&5AODi+&9z9XAYGhspq~QmrkdX9@7JK41DTHKp z+8hl>X;VFkR2|!CbFl_UjtWlLo9cC>8oE=& zA(^)U$=4yD0vV@6{taZJ4xz0#s&&XQ@M{O})5?4%kcsb~p^>>akcM}JJWOVf%|3BU z3L%+2PFusr+EiAg>iB_(Lo)k;p~uq*=Dx5O`B2(WVV^@uIlaDRJS8l<5m%eWL^klvkv(ykgYo8Z$O%KNIekg zUs^gFf%G^=EAxAl>J`P8AXZW{ki3_LJWOW%;@GqJ&mU#}KDcr;SP=^H0@szXiy%*rQM__xpfIDS3pa$Gs-dU}&`PZE(t@jVJLhQ?g*n?m`){_v_p!ZIgvQ3b>J znK-WHm`CDqFbqsP4Ed52%B~97BTFR^M`x&3huCQ}sY9IOVC5XiE5>>Nxn?sN0Idz) zJ~azEQ`m-}?3!udMI&|{WqX5x*RsRlHQT@|Y2cM(;6=;l>$p2B4ujV`1FtFrudW7O zYYe>R9R{yE4ZNxiym}aTtvB#$JPck74ZLO>c$o~m8V$Uf4};fI1Fy*jUfBj-v@wsq zyiA9|Yq^0}iGf!~1FsbZUj9SzQreaqkc!VIBuf&B%8Jw!vQi&AppG^$c}y+-HgO{2 zY*ykxEF8Unj4sv7$n}6qsXaP8PYOyy#R!lf* zj@Gr@-I%6x6eS|Nh;9Av1`h52vUs&J|Z&LHo+I7-zt! zf}Z1s_ow(Qr&$?VQ6A@t&WDNvd58uboEJ%^rnu`Oy~RC{{NgB59>2t*Qj{~z*D1gFbjQ>ux2Q){Cd!lWZSG5H1ItC0 zVqGy+5iI6kkc)~7m3-+7kA;USFqiAFNhyDfq13xB5~-+u5oP?os?|?D;;b;}hw~!+ zJPt}|dNhYoKV(~ap@b)#qMS)TiX|*d)9}=M49q9Bs0|+{UKyd z{bHDjj`9m;gV08%IEu{F(sJv?FPDj=uC#>OMMgyeya}Y24tTO=?P?oC>@r{10>I)wXrLJY)&CY z{d7ScJcp$fmtUfvl+3Kf78Lkh=w~cA@bV&@d>{1?^5j|Dro1{15#t>&O*;&{Qhw%8 z$fWZV9D9*mhu9aQly!)+39lS!*{2;U@|EJ1Z{T&nz-y_2S4TAIKgTQIz-zdH7wuuC z%Y}WBffvn0{2Z@wf>)L$P0Oek%8%`bQ{OwM%F93|H7=N!;*}xJk>X{{g(TY5l+39z zJ%HM))2d^ILC@n1dcG*7XJMIlik$u;?j}PiZ!vJ6Y2bdhf&0Q%aqn*6zRAEnY2bd7 zf&0={aqn&5zRkdWwt@R{1NY^v;!d42NWsGp++Q|uU*9V3W&?NH>=?vVOR&!~aBnbh z-_$DZ)a&bbIkp2D1)4+X;f%}eD<-N0kdxL@dWCQmy1NYsn;@;Q5y~)6Ru7Ug02JU-X#XZNs zeZ7HuiGll6mAf)_h#(dBMT=XU$5wl4F^{e3&6O`U4~SfVXZq1*{*N+`-5U&$5sV#Z zY)_+E^-%g9yDGEji8L}Rd4K5;c^4kY|HXXS7l`u8Gy}u)?)Xxaa?5dCeqkF~`d@NL zONM;?BF~COzfAL~{(YX1M<8~)$b~?h%kX=xl1j0bY@0H=`9<6}8@SImaCaNHuQ71% z+$!$d4BQtQxDPaNZ>QEcCGTBZ#eKbj`)mVuOg;%cb8B(lV#s@sR&j4Oa9?KNo^Rkz zzn$yLy=SYq?=Wy*YT!QHz};lv-nUiUn+)6+8MqHMa6i$&-QFthjRx-Y#j2uJAM`g%@?$aJI#^lO4+f%z&+2v{WF!j(#O%r_viX|wFE`~t|?`u)fz8y0iNkcTleqO ztFycxqJLLq7X7mHR=!_%Z8RT60^P=> zQe@7gpY;Dv$q_6>i-wr{s!q*6D|YCbEJ{cCKMuPn zQ-RoNwFzDAc6P_NjQVz?b=TKpe?x1H*g^s5Z)bfq}cpz`fB>?rYkpzDEq)%?9pU4cw1v zBdc3v;9g?j-qoP_bK6MscN(})G;r@|;J&Yo@;=VMy{CcuCWGcTwNbg}7`SgsU3 zfqSxzYFtMH_bmqQGY#Aaw-NV&2JSfq&95?WFKHvq4>fS_YT&-cz`eSSxVsJ9vklyr z8@Susi2FnX_r3=1TMXRkf3DiXvzlk%KF+{hO1DGjD{WNYdm6ZZna<0;z>xR1+Q{b3 z2JQz8+?N`-cWxui_cd_eXW+ibz@7d#vMtIz&%nL2q1;y*xEHih-iI5wcQ7geY}BtZv*$u2JSoBNb@}m+?x$HKi|N8 zMH|`tLId~7hP>yb%i}z`jXbN)2JTzadD*KCc^}_Kd7o|Io^QzeJ_GkfZDe&z4csdX z+`Ff1!|84#&6^C|cc=5R-)YEuV;gBc-@v_xA@A!A+?TacjY}H1=NY&+8@SVdN4G^U zQ(@rlH*nu!;C@jXaqn*6zQa)N^9S;(dHAfor=+?N?rtp*~#Tjp`r8{%vMB6=bo=MyCkmzis0 z23yNcmFFkK;s2o~^n42bH<$kcE|Bwp9MIKe50HsEWH^u>y7HO;MEE3Jo*6)9E5E{U zGysh{7W9e{ck|TFC#qFMj-s_bi`r5Jfgu$JDLzj%=Yk9KT;|kuTxOM zdv%Bti1>d-o~i%{9csB3DG0h1#iFJF*`(9PO+fT*-NObt&k%xBrTi-1M61rZ?*Wph zldwJh<5{%WJkA+FR_fwh0HjfeIDyci@)`zYzAjD}NVcv76F^8v)mr8N5&wh9x&M{o zD7^zmUIIcZWzZW({sn{%mHSQu@)OZfzNqJ^PQ-uIHS4t68;B|ocF-v)!5;H^%5KC_ zk&v=U5C2*f*22O@Adcw2I8qEm_!1nM0i-u#tCm^EC=ZXRxmZXD1X7VFf$(pZ1h2J3 z2P9QGTY!kUIL_+}qJu-F(*gbD>{P0dvaJyR`cY6m4RORslhd&Q5i|B2k%8##Z~~A> ziZXGH1L=;t+Rk4Gg#Wj@;B`9?I#db&3Pj9ja$e5^5&uukk+%)0J^|7j^^n5RGqUzM z%qVjk<4A;AoN9IdMye`Zzf6^WQOd?bA^fvqXhebd4=m38B*fW)N2M25wsKm?zJ3(> zItOv`byk-PWMV26iPj%TMT!?81wiOfwQ;opnF^$%j!vBtN6pv0x>O-$cPRcvJxLe} zv5lp|`j-Duq^j1*^E?p#pT8nsTY>D;)tx<*O4s)82a>Im@Hi}7D1Hq@01gunI#ijh z3ZmxyA|U+#sRj2dfryzmPG=ereF@%VpmV1IS*k-q%H~}BD_p_rXUK$>)Pih(3`$V?#Hblh(T(yWWK z2nb9-!~JiB;85jR2gI#Q^#PCtI^-abZ93$*Q_$9dj@lxf2ZRolvKDKBGrvR=uq?ii~+#{JyK^KolgvL_Aw+!L+1p1;G_1H#N&5Bs^PSN zl%g>kkbyeNm(XWHlD3Z<2L#=_hH^0wldjFI2C_*<=T;zQU7Ux2Y)mokR3Xii-FLgmRBVZG0)HG{Lv6+A&@mX%Krl-M~A!w#01J}FZ>3OMLO=E z0$Gj-s%8ET|ANlf%@7)sfy~pj^S`HmQ`hk-1u{_Q>D@wcaH#qEE08U^RDT1)|JN0~ zvdCpIYJL;q5USGIVW9jCkP;o`V^Ouy8ENumqRNg#rQ*B!CkS0+;dEJA5T1hZ4vL9{4b z5er>2tt5s82V71kM2(bJ7M4VHG>t@P7kRc-XBq{E$ENU1#AYz*)ZON}EPP3Ej9O@y z+Jq`E$29`S%A&}4F``7ui!$UxBSPi~`iv%`$q@VeGnBxVvP2oYlwDHEc~sxx(F#(W z5*CT_9z6w2iYCL@OIVGeW`%YN4q>ZXm`7D85-W|CC9r)iaxmDMadT(vzdM+-QT8du zw!Hllv{SK^DM$*1k-#$U*i2d7(3*)P0@VGl zbui!g7#60KHEdR^(~zWlW6Q~5EjidM7E}(6xO8BMt*opAup_TU2PCG2EA$AW(9X6Y zWg%ilh*oIEHn|40@R~$nI!arvh7Aa?076eW=!xyTYKg3x;Q*t9refqaQ6kkszR6Y`2D z2dE|zP>LN(e=7O6JCIz-zuisw=Xtfepn*bK%h+y*28;}#Hb&p!6!aZ7LEqs_(RbKX z`VMM_6#5Q_pzp9|q)%!m`JHw_-)Rx_o%R%cC$++g{7$<{-)R%{o#u@65zOejteh4& zc_=yQ$7RJ6w+|;ZdEO&&*)psihh6z{n#vI9bA6EDgEGC(GOx|)DPJr z(Z?Fycp|CMRw!Drv8G0$inam~Sgk@7h-K78#tbOUmd(oTi#5aOOj)~$2AZ{mIxtaz z?PEY)2l5TN4KTI+CDEx-tOrc4CJ_; zWhUc=80Dc!CFOacD zPCn&DDlcib6qnC{qp^#XeDN^6w;+H zqfUIiZw_th&s+HpB4T&a) zC8MRIlMsk%Ad>^&@Ngo@WXPks%uq#&%POPD6RY=J4{2ion0;|M(u69?r^O=0)IKPg z<4l-$2XC@83|myC(zte1e-o-ILt^vx5U=}DSo-8}JY0lK3*rSO2?)(J$JC82-}w&m zp)llO;}0&yF!B*u4I2>06Dq)Hm=~O1mW*fUko*QlOQOlBF|jC-OxkFvOt?sV&Iqbd z^fREm42?+tvItlqe>7rCPrbgp5M&LCW>%P&C(kW{f!i=meEkyAQV}6}p zz_eV27>SsM1TuL|BFUN}C5+FHrgAzkR+J23;6YZSm@>+o1|g}8r%DdBD;h6DTU)_e zH-kazD>d_OVYal$H0zG=oN9s6?Oiol-7tmsAFLZnCL(CHXdG5V{TDZ?SUCm&kYfbf zscI+&UnSB0s?mXJc`5q4st~W9)b;Rs&BxE8Rw+syR?7M%e&ZwsC)iPRN@cXHC`#<8 za*GhyQuGj1)q0jlmRE$zDodmB7`06)bu;CMuu`DD*z|2O>-$@7l9di1MH6KQ7QzlE zN5d5wgH?3bQn3oN(=}|U`ZN`R{(hP@WMS1u*8(V?ZYbqK)B9@G>z_!O5>qr3hz_Wz zeUlq)nkVQE!$rkX9X%1LUYrN+P%%``Me80}*>Jg6fStw;!4#3NLS zsvD1oE-fmmjK|42NVOJZgrYT7`u)(P5e1h-rw?R~2*gY4G-=e75?a(Tm@le(c|u#y zNs};Q54&U92w3# zN?mmrfi{OaQAURK*P{Q@^b|@bhKADEiKX|ztWZ*F)0FhE{sqcUF+b-@C?rA`RmMsp zth0f1slE!&DRqegO)Dt9b*U|hQs>j`MoT0#7-QfOY%U6Xn6Dv?5i81K*+wpP78lYL0+&M6%KYg{x5#o&`s58ZwIxK1kTlI{+HhrVOK>Nr zRoj76zo2$oi77%(<~Jx?Ybx~7dLwnTg1j9OEu$=8LA`3Murir)6j~amh9yQ<7ABdO4T-en6NZ)NPal@C^QLAr}L%av4IQkkHpmyf4Im5HdBSWxB_(hbX;swp%iFV~C+S#yKp*EKiB zVIP<&`CtjsdqjHXP6egFJnDgk{Xoh~WORHEYRxX#Vw$3~$(U&2ea2 ztc;Basl{6te0${$cj{W3AISwj_*%E=qy zVTh!T15>(4HSj6FOy|TWD$DggJkO2lgB@}#NvfR`$`8jA(Sk}i_88B>N~V>^>9-_a zR`_9yIeQta3L^0#7R&(#XB`s^HsM+Hvr;Q)i`-^NJYSsbVBP2fM)5?P_aRjp@FinDr1CUp6QbT zO#YU}?Mhjw-M-QHP|REBg0_Ju@#*tKYDuK(CwIV93*V. C Cov(X'(T(I1)),X(T(i))|X'(0),X''(0),X(0)) C DDB2(I) contains Cov(X''(T(i)),X(T(i))|X'(0),X''(0),X(0)) - - 30 CONTINUE + enddo DO I3=1,I DBI(I3) = R3(I3+(I-1)*N) - (DDB2(I)*DB2(I3)/Q(I)) - BI(I3) = R2(I3+(I-1)*N) - (DB2(I)*DB2(I3)/Q(I)) - 50 CONTINUE + BI(I3) = R2(I3+(I-1)*N) - (DB2(I)*DB2(I3)/Q(I)) enddo DO I3=1,I-1 AI(I3)=0.0d0 AI(I3+I-1)=DB0(I3)/SQ0 AI(I3+2*(I-1))=DB1(I3)/SQ1 - AI(I3+3*(I-1))=DB2(I3)/SQ(I) - 51 CONTINUE + AI(I3+3*(I-1))=DB2(I3)/SQ(I) enddo VDERI=VDER(I) DAI(1)=0.0d0 @@ -255,12 +264,9 @@ C DDB2(I) contains Cov(X''(T(i)),X(T(i))|X'(0),X''(0),X(0)) IF(I.LT.1) GO TO 41 DO I1=1,I-1 DO I2=1,I-1 - C R contains Cov(X'(T(I1)),X'(T(I2))|X'(0),X''(0),X(0),X(I)) - R(I2+(I1-1)*(I-1))=R2(I2+(I1-1)*N)-(DB2(I1)*DB2(I2)/Q(I)) - - 40 CONTINUE + enddo enddo 41 CONTINUE @@ -327,16 +333,16 @@ C Here the covariance of the problem would be innitiated C sder=sqrt(XL4-XL2*XL2/XL0) C cder=-XL2/sqrt(XL0) -C const=1/sqrt(XL0*XL4) +C const1=1/sqrt(XL0*XL4) C DO 95 IU=1,NU C U=UT(IU) -C FM=Udd(IU)*const*exp(-0.5*U*U/XL0)*PMEAN(-cder*U,sder) +C FM=Udd(IU)*const1*exp(-0.5*U*U/XL0)*PMEAN(-cder*U,sder) C WRITE(9,300) Ulev(IU),FM C 95 continue C DO 105 IV=1,NV C V=VT(IV) C VV=cder*V -C Fm=Vdd(IV)*const*exp(-0.5*V*V/XL0)*PMEAN(VV,sder) +C Fm=Vdd(IV)*const1*exp(-0.5*V*V/XL0)*PMEAN(VV,sder) C WRITE(8,300) Vlev(IV),Fm C 105 continue if (III0.eq.0) III0=1 @@ -353,207 +359,5 @@ C 105 continue PRINT *, 'Rate of calls RINDT9:',float(iii91)/float(III0) PRINT *, 'Rate of calls RINDT10:',float(iii101)/float(III0) PRINT *, 'Number of calls of RINDT*',III0 - - return END subroutine cov2mmpdfreg - - SUBROUTINE INITLEVELS(T,HT,N,NG,NU,Nv) - USE TBRMOD - USE SIZEMOD - IMPLICIT NONE -C INTEGER, PARAMETER:: NMAX = 101, RDIM = 10201 -C DIMENSION ULEVELS(1),Vlevels(1),T(1),HT(1),TG(1),XG(1),HH(101) - REAL*8, DIMENSION(:), intent(in) :: T - REAL*8, DIMENSION(:), intent(out) :: HT - INTEGER, intent(in) :: NG - REAL*8 :: UMIN,UMAX,VMIN,VMAX, HU,HV - integer :: N, I, NU, NV -C REAL*8, DIMENSION(NMAX) :: HH -C COMMON/TBR/HH - - IF (NG.GT.501) THEN - PRINT *,'Vector defining transformation of data > 501, stop' - STOP - END IF - - - IF(N.ge.NMAX) then - print *,'The number of wavelength points >',NMAX-1, ' stop' - stop - end if - IF(N.lt.2) then - print *,'The number of wavelength points < 2, stop' - stop - end if - - HT(1)=0.5d0*(T(2)-T(1)) - HT(N)=0.5d0*(T(N)-T(N-1)) - HH(1)=-100.0d0 - HH(N)=-100.0d0 - DO I=2,N-1 - HT(I)=0.5d0*(T(I+1)-T(I-1)) - HH(I)=-100.0d0 -10 CONTINUE - enddo - - - IF(NU.gt.NMAX) then - print *,'The number of maxima >',NMAX,' stop' - stop - end if - IF(NV.gt.NMAX) then - print *,'The number of minima >',NMAX,' stop' - stop - end if - - IF(NU.LT.1) Then - print *,'The number of maxima < 1, stop' - stop - end if - IF(NV.LT.1) Then - print *,'The number of minima < 1, stop' - stop - end if - - RETURN - END SUBROUTINE INITLEVELS - - - SUBROUTINE TRANSF(N,T,A,TIMEV,VALUE,DER) -C -C N number of data points -C TIMEV vector of time points -C A a vector of values of a function G(TIME) -C T independent time point -C VALUE is a value of a function at T, i.e. VALUE=G(T). -c DER=G'(t) -C - USE SIZEMOD - IMPLICIT NONE - REAL*8, intent(inout):: VALUE, DER,T -C INTEGER, PARAMETER :: RDIM = 10201 - REAL*8, DIMENSION(:), intent(in) :: A,TIMEV - integer, intent(in) :: N - REAL*8:: T1 - integer :: I - - IF (T.LT.TIMEV(1)) then - der=(A(2)-A(1))/(TIMEV(2)-TIMEV(1)) - T1=T-TIMEV(1) - VALUE=A(1)+T1*DER - return - end if - IF (T.GT.TIMEV(N)) then - der = (A(N)-A(N-1))/(TIMEV(N)-TIMEV(N-1)) - T1 = T-TIMEV(N) - VALUE=A(N)+T1*DER - return - end if - DO 5 I=2,N - IF (T.LT.TIMEV(I)) GO TO 10 -5 CONTINUE -10 I=I-1 - T1=T-TIMEV(I) - DER=(A(I+1)-A(I))/(TIMEV(i+1)-TIMEV(I)) - VALUE=A(I)+T1*DER - RETURN - END SUBROUTINE TRANSF - - REAL*8 FUNCTION SPLE(N,T,A,TIMEV) -C -C N number of data points -C TIME vector of time points -C A a vector of values of a function G(TIME) -C T independent time point -C SPLE is a value of a function at T, i.e. SPLE=G(T). -C - USE SIZEMOD - IMPLICIT NONE - INTEGER, INTENT(IN):: N - - REAL*8, INTENT(IN) :: T - REAL*8, DIMENSION(:), INTENT(IN) :: A,TIMEV - REAL*8 :: T1 - INTEGER :: I - SPLE=-9.9d0 - IF (T.LT.TIMEV(1) .OR. T.GT.TIMEV(N)) RETURN - DO 5 I=2,N - IF (T.LT.TIMEV(I)) GO TO 10 -5 CONTINUE -10 I=I-1 - T1=T-TIMEV(I) - SPLE=A(I)+T1*(A(I+1)-A(I))/(TIMEV(i+1)-TIMEV(I)) - RETURN - END FUNCTION SPLE - - - - SUBROUTINE COVG(XL0,XL2,XL4,COV,T,N) -C -C COVG evaluates: -C -C XL0,XL2,XL4 - spectral moments. -C -C Covariance function and its four derivatives for a vector T of length N. -C It is saved in a vector COV; COV(1,...,N)=r(T), COV(N+1,...,2N)=r'(T), etc. -C The vector COV should be of the length 5*N. -C -C Covariance matrices COV1=r'(T-T), COV2=r''(T-T) and COV3=r'''(T-T) -C Dimension of COV1, COV2 should be N*N. -C -! USE SIZEMOD -! IMPLICIT NONE -C INTEGER, PARAMETER:: NMAX = 101, RDIM = 10201 - REAL*8, PARAMETER:: ZERO = 0.0d0 - REAL*8, intent(inout) :: XL0,XL2,XL4 - REAL*8, DIMENSION(N,5), intent(in) :: COV - REAL*8, DIMENSION(N), intent(in) :: T - INTEGER, intent(in) :: N - - -C -C COV(Y(T),Y(0)) = COV(:,1) -C - XL0 = COV(1,1) -! XL0 = SPLE(NT,ZERO,COV(:,1),T) -C -C DERIVATIVE COV(Y(T),Y(0)) = COV(:,2) -C -C 2-DERIVATIVE COV(Y(T),Y(0)) = COV(:,3) - XL2 = -COV(1,3) -! XL2 = -SPLE(NT,ZERO,COV(:,3),T) -C 3-DERIVATIVE COV(Y(T),Y(0)) = COV(:,4) - -C 4-DERIVATIVE COV(Y(T),Y(0)) = COV(:,5) - - XL4 = COV(1,5) -! XL4 = SPLE(NT,ZERO,COV(:,5),T) - - RETURN - END SUBROUTINE COVG - - SUBROUTINE INITINTEG() - USE RINTMOD - USE EPSMOD - USE INFCMOD - USE MREGMOD -! IMPLICIT NONE -C COMMON /RINT/ C,FC -C COMMON /EPS/ EPS,EPSS,CEPSS -C COMMON /INFC/ ISQ,INF,INFO - - IAC = IAC_ - ISQ = ISQ_ - EPS = EPS_ - EPSS = EPSS_ - EPS0 = EPS0_ - C = C_ - - FC = FI(C)-FI(-C) -! CEPSS = 1.0d0-EPSS - - RETURN - END SUBROUTINE INITINTEG - - END module cov2mmpdfmod \ No newline at end of file diff --git a/pywafo/src/wafo/source/mreg/epsmod.mod b/pywafo/src/wafo/source/mreg/epsmod.mod index f8e3033..093559e 100644 --- a/pywafo/src/wafo/source/mreg/epsmod.mod +++ b/pywafo/src/wafo/source/mreg/epsmod.mod @@ -1,5 +1,5 @@ -GFORTRAN module version '0' created from mregmodule.f on Wed Aug 05 19:15:05 2009 -MD5:67523ef735281684c8fb9aae15cdc0a3 -- If you edit this, you'll get what you deserve. +GFORTRAN module version '4' created from mregmodule.f on Tue May 24 14:34:23 2011 +MD5:deb744d8baea0ddd5fc5faf9be58df7e -- If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () () () () () () () ()) @@ -12,14 +12,16 @@ MD5:67523ef735281684c8fb9aae15cdc0a3 -- If you edit this, you'll get what you de () +() + (2 'eps' 'epsmod' 'eps' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -IMPLICIT-SAVE) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +IMPLICIT-SAVE 0 0) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 3 'eps0' 'epsmod' 'eps0' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN IMPLICIT-SAVE) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 4 'epsmod' 'epsmod' 'epsmod' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) +UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) 5 'epss' 'epsmod' 'epss' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN IMPLICIT-SAVE) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) ) ('eps' 0 2 'eps0' 0 3 'epsmod' 0 4 'epss' 0 5) diff --git a/pywafo/src/wafo/source/mreg/expaccmod.mod b/pywafo/src/wafo/source/mreg/expaccmod.mod index 1cc59bd..ec6e10a 100644 --- a/pywafo/src/wafo/source/mreg/expaccmod.mod +++ b/pywafo/src/wafo/source/mreg/expaccmod.mod @@ -1,5 +1,5 @@ -GFORTRAN module version '0' created from mregmodule.f on Wed Aug 05 19:15:05 2009 -MD5:2d868304b34a40918a05109c83ff1871 -- If you edit this, you'll get what you deserve. +GFORTRAN module version '4' created from mregmodule.f on Tue May 24 14:34:23 2011 +MD5:d82385a3a446da945f345d09302f933e -- If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () () () () () () () ()) @@ -12,12 +12,14 @@ MD5:2d868304b34a40918a05109c83ff1871 -- If you edit this, you'll get what you de () +() + (2 'expaccmod' 'expaccmod' 'expaccmod' 1 ((MODULE UNKNOWN-INTENT -UNKNOWN-PROC UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () -() () 0 0) +UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 +() () () 0 0) 3 'pmax' 'expaccmod' 'pmax' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN IMPLICIT-SAVE) (REAL 8 0 0 REAL ()) 0 0 () (CONSTANT (REAL 8 0 0 -REAL ()) 0 '0.28000000000000@2') () 0 () () () 0 0) +UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 REAL ()) 0 0 () (CONSTANT (REAL 8 +0 0 REAL ()) 0 '0.28000000000000@2') () 0 () () () 0 0) ) ('expaccmod' 0 2 'pmax' 0 3) diff --git a/pywafo/src/wafo/source/mreg/infcmod.mod b/pywafo/src/wafo/source/mreg/infcmod.mod index d78bd6b..6aba119 100644 --- a/pywafo/src/wafo/source/mreg/infcmod.mod +++ b/pywafo/src/wafo/source/mreg/infcmod.mod @@ -1,5 +1,5 @@ -GFORTRAN module version '0' created from mregmodule.f on Wed Aug 05 19:15:05 2009 -MD5:806a8e6bde038d8bc47688d3b6e5277f -- If you edit this, you'll get what you deserve. +GFORTRAN module version '4' created from mregmodule.f on Tue May 24 14:34:23 2011 +MD5:5dadee8498f04fe7df773933dace020d -- If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () () () () () () () ()) @@ -12,21 +12,23 @@ MD5:806a8e6bde038d8bc47688d3b6e5277f -- If you edit this, you'll get what you de () +() + (2 'iac' 'infcmod' 'iac' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN EXPLICIT-SAVE) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 -0) +UNKNOWN EXPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () +() 0 0) 3 'inf' 'infcmod' 'inf' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -UNKNOWN DIMENSION) (INTEGER 4 0 0 INTEGER ()) 0 0 () (1 EXPLICIT ( +UNKNOWN 0 0 DIMENSION) (INTEGER 4 0 0 INTEGER ()) 0 0 () (1 EXPLICIT ( CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '10')) 0 () () () 0 0) 4 'infcmod' 'infcmod' 'infcmod' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) +UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) 5 'info' 'infcmod' 'info' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN UNKNOWN DIMENSION) (INTEGER 4 0 0 INTEGER ()) 0 0 () (1 EXPLICIT -(CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 -INTEGER ()) 0 '10')) 0 () () () 0 0) +UNKNOWN UNKNOWN 0 0 DIMENSION) (INTEGER 4 0 0 INTEGER ()) 0 0 () (1 +EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER +4 0 0 INTEGER ()) 0 '10')) 0 () () () 0 0) 6 'isq' 'infcmod' 'isq' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -EXPLICIT-SAVE) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) +EXPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) ) ('iac' 0 2 'inf' 0 3 'infcmod' 0 4 'info' 0 5 'isq' 0 6) diff --git a/pywafo/src/wafo/source/mreg/intfcmod.f b/pywafo/src/wafo/source/mreg/intfcmod.f new file mode 100644 index 0000000..c2e3120 --- /dev/null +++ b/pywafo/src/wafo/source/mreg/intfcmod.f @@ -0,0 +1,180 @@ + MODULE INTFCMOD + IMPLICIT NONE + PUBLIC :: INITLEVELS, TRANSF, COVG + + CONTAINS + SUBROUTINE INITLEVELS(T,HT,N,NG,NU,Nv) + USE TBRMOD + USE SIZEMOD + IMPLICIT NONE +C INTEGER, PARAMETER:: NMAX = 101, RDIM = 10201 +C DIMENSION ULEVELS(1),Vlevels(1),T(1),HT(1),TG(1),XG(1),HH(101) + REAL*8, DIMENSION(:), intent(in) :: T + REAL*8, DIMENSION(:), intent(out) :: HT + INTEGER, intent(in) :: NG + REAL*8 :: UMIN,UMAX,VMIN,VMAX, HU,HV + integer :: N, I, NU, NV +C REAL*8, DIMENSION(NMAX) :: HH +C COMMON/TBR/HH + + IF (NG.GT.501) THEN + PRINT *,'Vector defining transformation of data > 501, stop' + STOP + END IF + + + IF(N.ge.NMAX) then + print *,'The number of wavelength points >',NMAX-1, ' stop' + stop + end if + IF(N.lt.2) then + print *,'The number of wavelength points < 2, stop' + stop + end if + + HT(1)=0.5d0*(T(2)-T(1)) + HT(N)=0.5d0*(T(N)-T(N-1)) + HH(1)=-100.0d0 + HH(N)=-100.0d0 + DO I=2,N-1 + HT(I)=0.5d0*(T(I+1)-T(I-1)) + HH(I)=-100.0d0 +c10 CONTINUE + enddo + + + IF(NU.gt.NMAX) then + print *,'The number of maxima >',NMAX,' stop' + stop + end if + IF(NV.gt.NMAX) then + print *,'The number of minima >',NMAX,' stop' + stop + end if + + IF(NU.LT.1) Then + print *,'The number of maxima < 1, stop' + stop + end if + IF(NV.LT.1) Then + print *,'The number of minima < 1, stop' + stop + end if + + RETURN + END SUBROUTINE INITLEVELS + + + SUBROUTINE TRANSF(N,T,A,TIMEV,VALUE,DER) +C +C N number of data points +C TIMEV vector of time points +C A a vector of values of a function G(TIME) +C T independent time point +C VALUE is a value of a function at T, i.e. VALUE=G(T). +c DER=G'(t) +C + USE SIZEMOD + IMPLICIT NONE + REAL*8, intent(inout):: VALUE, DER,T +C INTEGER, PARAMETER :: RDIM = 10201 + REAL*8, DIMENSION(:), intent(in) :: A,TIMEV + integer, intent(in) :: N + REAL*8:: T1 + integer :: I + + IF (T.LT.TIMEV(1)) then + der=(A(2)-A(1))/(TIMEV(2)-TIMEV(1)) + T1=T-TIMEV(1) + VALUE=A(1)+T1*DER + return + end if + IF (T.GT.TIMEV(N)) then + der = (A(N)-A(N-1))/(TIMEV(N)-TIMEV(N-1)) + T1 = T-TIMEV(N) + VALUE=A(N)+T1*DER + return + end if + DO I=2,N + IF (T.LT.TIMEV(I)) GO TO 10 + ENDDO + 10 I=I-1 + T1=T-TIMEV(I) + DER=(A(I+1)-A(I))/(TIMEV(i+1)-TIMEV(I)) + VALUE=A(I)+T1*DER + RETURN + END SUBROUTINE TRANSF + + REAL*8 FUNCTION SPLE(N,T,A,TIMEV) +C +C N number of data points +C TIME vector of time points +C A a vector of values of a function G(TIME) +C T independent time point +C SPLE is a value of a function at T, i.e. SPLE=G(T). +C + USE SIZEMOD + IMPLICIT NONE + INTEGER, INTENT(IN):: N + + REAL*8, INTENT(IN) :: T + REAL*8, DIMENSION(:), INTENT(IN) :: A,TIMEV + REAL*8 :: T1 + INTEGER :: I + SPLE=-9.9d0 + IF (T.LT.TIMEV(1) .OR. T.GT.TIMEV(N)) RETURN + DO I=2,N + IF (T.LT.TIMEV(I)) GO TO 10 + ENDDO + 10 I=I-1 + T1=T-TIMEV(I) + SPLE=A(I)+T1*(A(I+1)-A(I))/(TIMEV(i+1)-TIMEV(I)) + RETURN + END FUNCTION SPLE + + + + SUBROUTINE COVG(XL0,XL2,XL4,COV,T,N) +C +C COVG evaluates: +C +C XL0,XL2,XL4 - spectral moments. +C +C Covariance function and its four derivatives for a vector T of length N. +C It is saved in a vector COV; COV(1,...,N)=r(T), COV(N+1,...,2N)=r'(T), etc. +C The vector COV should be of the length 5*N. +C +C Covariance matrices COV1=r'(T-T), COV2=r''(T-T) and COV3=r'''(T-T) +C Dimension of COV1, COV2 should be N*N. +C +! USE SIZEMOD +! IMPLICIT NONE +C INTEGER, PARAMETER:: NMAX = 101, RDIM = 10201 + REAL*8, PARAMETER:: ZERO = 0.0d0 + REAL*8, intent(inout) :: XL0,XL2,XL4 + REAL*8, DIMENSION(N,5), intent(in) :: COV + REAL*8, DIMENSION(N), intent(in) :: T + INTEGER, intent(in) :: N + + +C +C COV(Y(T),Y(0)) = COV(:,1) +C + XL0 = COV(1,1) +! XL0 = SPLE(NT,ZERO,COV(:,1),T) +C +C DERIVATIVE COV(Y(T),Y(0)) = COV(:,2) +C +C 2-DERIVATIVE COV(Y(T),Y(0)) = COV(:,3) + XL2 = -COV(1,3) +! XL2 = -SPLE(NT,ZERO,COV(:,3),T) +C 3-DERIVATIVE COV(Y(T),Y(0)) = COV(:,4) + +C 4-DERIVATIVE COV(Y(T),Y(0)) = COV(:,5) + + XL4 = COV(1,5) +! XL4 = SPLE(NT,ZERO,COV(:,5),T) + + RETURN + END SUBROUTINE COVG + END module intfcmod diff --git a/pywafo/src/wafo/source/mreg/mregmod.mod b/pywafo/src/wafo/source/mreg/mregmod.mod index 6c893b5..9e1762f 100644 --- a/pywafo/src/wafo/source/mreg/mregmod.mod +++ b/pywafo/src/wafo/source/mreg/mregmod.mod @@ -1,9 +1,8 @@ -GFORTRAN module version '0' created from mregmodule.f on Tue Jan 25 20:12:17 2011 -MD5:a058cc3e6c0e8bedef8f214da2f5fbdc -- If you edit this, you'll get what you deserve. +GFORTRAN module version '4' created from mregmodule.f on Tue May 24 14:34:23 2011 +MD5:73d0040f77005ab6be34b297552c2c19 -- If you edit this, you'll get what you deserve. -(() -() () () () () () () () () () () () () () () () () () () () () () () () -() ()) +(() () () () () () () () () () () () () () () () () () () () () () () +() () () ()) () @@ -13,85 +12,88 @@ MD5:a058cc3e6c0e8bedef8f214da2f5fbdc -- If you edit this, you'll get what you de () +() + (2 'fi' 'mregmod' 'fi' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL -UNKNOWN FUNCTION GENERIC) (REAL 8 0 0 REAL ()) 5 0 (6) () 2 () () () 0 0) +UNKNOWN 0 0 FUNCTION GENERIC) (REAL 8 0 0 REAL ()) 5 0 (6) () 2 () () () +0 0) 4 'mreg' 'mregmod' 'mreg' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL -UNKNOWN SUBROUTINE GENERIC) (UNKNOWN 0 0 0 UNKNOWN ()) 7 0 (8 9 10 11 12 -13 14 15 16 17 18 19 20) () 0 () () () 0 0) +UNKNOWN 0 0 SUBROUTINE GENERIC) (UNKNOWN 0 0 0 UNKNOWN ()) 7 0 (8 9 10 +11 12 13 14 15 16 17 18 19 20) () 0 () () () 0 0) 3 'rind' 'mregmod' 'rind' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL -UNKNOWN SUBROUTINE GENERIC) (UNKNOWN 0 0 0 UNKNOWN ()) 21 0 (22 23 24 25 -26 27 28 29 30 31) () 0 () () () 0 0) -22 'xind' '' 'xind' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) -23 'r' '' 'r' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT (INTEGER 4 0 0 -INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '40401')) 0 () -() () 0 0) -24 'bu' '' 'bu' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN +UNKNOWN 0 0 SUBROUTINE GENERIC) (UNKNOWN 0 0 0 UNKNOWN ()) 21 0 (22 23 +24 25 26 27 28 29 30 31) () 0 () () () 0 0) +26 'db' '' 'db' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '201')) 0 () () () 0 0) -25 'dbun' '' 'dbun' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) -26 'db' '' 'db' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN +27 'sq' '' 'sq' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '201')) 0 () () () 0 0) -27 'sq' '' 'sq' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN +24 'bu' '' 'bu' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '201')) 0 () () () 0 0) -28 'vder' '' 'vder' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN +28 'vder' '' 'vder' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) -29 'nit' '' 'nit' 21 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( -INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -30 'n' '' 'n' 21 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( +29 'nit' '' 'nit' 21 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) +22 'xind' '' 'xind' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +23 'r' '' 'r' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( +INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 +'40401')) 0 () () () 0 0) +25 'dbun' '' 'dbun' 21 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +30 'n' '' 'n' 21 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) ( INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -31 'infr' '' 'infr' 21 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) -(INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -6 'xx' '' 'xx' 5 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( +31 'infr' '' 'infr' 21 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) +6 'xx' '' 'xx' 5 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) ( REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) -8 'f' '' 'f' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( -REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) -9 'r' '' 'r' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT (INTEGER 4 0 0 -INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '40401')) 0 () -() () 0 0) -10 'b' '' 'b' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT (INTEGER 4 0 0 -INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '201')) 0 () () -() 0 0) -11 'db' '' 'db' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN +8 'f' '' 'f' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) +(REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +9 'r' '' 'r' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( +INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 +'40401')) 0 () () () 0 0) +10 'b' '' 'b' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '201')) 0 () () () 0 0) -12 'aa' '' 'aa' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN +18 'n' '' 'n' 7 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) ( +INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) +11 'db' '' 'db' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( +INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 +'201')) 0 () () () 0 0) +12 'aa' '' 'aa' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (2 EXPLICIT (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '4') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '4')) 0 () () () 0 0) -13 'bb' '' 'bb' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN +13 'bb' '' 'bb' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '7')) 0 () () () 0 0) -14 'a' '' 'a' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT (INTEGER 4 0 0 -INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1407')) 0 () -() () 0 0) -15 'da' '' 'da' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN +19 'nit' '' 'nit' 7 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) +(INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) +14 'a' '' 'a' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( +INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 +'1407')) 0 () () () 0 0) +20 'infr' '' 'infr' 7 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) +15 'da' '' 'da' 7 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '7')) 0 () () () 0 0) -16 'vder' '' 'vder' 7 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) -(REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) -17 'm' '' 'm' 7 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( -INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -18 'n' '' 'n' 7 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( -INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -19 'nit' '' 'nit' 7 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( +16 'vder' '' 'vder' 7 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +17 'm' '' 'm' 7 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) ( INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -20 'infr' '' 'infr' 7 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) -(INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) ) ('fi' 0 2 'mreg' 0 4 'rind' 0 3) diff --git a/pywafo/src/wafo/source/mreg/mregmodule.f b/pywafo/src/wafo/source/mreg/mregmodule.f index 976b59b..8a779f4 100644 --- a/pywafo/src/wafo/source/mreg/mregmodule.f +++ b/pywafo/src/wafo/source/mreg/mregmodule.f @@ -392,7 +392,7 @@ C MODULE MREGMOD IMPLICIT NONE PRIVATE - PUBLIC :: RIND,MREG, FI + PUBLIC :: RIND, MREG, FI INTERFACE RIND MODULE PROCEDURE RIND diff --git a/pywafo/src/wafo/source/mreg/quadrmod.mod b/pywafo/src/wafo/source/mreg/quadrmod.mod index 2cb84fd..d74f43a 100644 --- a/pywafo/src/wafo/source/mreg/quadrmod.mod +++ b/pywafo/src/wafo/source/mreg/quadrmod.mod @@ -1,5 +1,5 @@ -GFORTRAN module version '0' created from mregmodule.f on Tue Jan 25 23:52:18 2011 -MD5:447301769c212f228b6cfa086ba1d48a -- If you edit this, you'll get what you deserve. +GFORTRAN module version '4' created from mregmodule.f on Tue May 24 14:34:23 2011 +MD5:60519873a9b0b44a975f51ae49005353 -- If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () () () () () () () ()) @@ -12,24 +12,26 @@ MD5:447301769c212f228b6cfa086ba1d48a -- If you edit this, you'll get what you de () +() + (2 'h' 'quadrmod' 'h' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -UNKNOWN DIMENSION DATA) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT ( +UNKNOWN 0 0 DIMENSION DATA) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT ( CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '126')) 0 () () () 0 0) 3 'i' 'quadrmod' 'i' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -UNKNOWN) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) +UNKNOWN 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 4 'nn' 'quadrmod' 'nn' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -UNKNOWN DIMENSION DATA) (INTEGER 4 0 0 INTEGER ()) 0 0 () (1 EXPLICIT ( -CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 -INTEGER ()) 0 '25')) 0 () () () 0 0) +UNKNOWN 0 0 DIMENSION DATA) (INTEGER 4 0 0 INTEGER ()) 0 0 () (1 +EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER +4 0 0 INTEGER ()) 0 '25')) 0 () () () 0 0) 5 'nnw' 'quadrmod' 'nnw' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN IMPLICIT-SAVE) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( +UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '13') () 0 () () () 0 0) 6 'quadrmod' 'quadrmod' 'quadrmod' 1 ((MODULE UNKNOWN-INTENT -UNKNOWN-PROC UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () -() () 0 0) +UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 +() () () 0 0) 7 'z' 'quadrmod' 'z' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -UNKNOWN DIMENSION DATA) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT ( +UNKNOWN 0 0 DIMENSION DATA) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT ( CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '126')) 0 () () () 0 0) ) diff --git a/pywafo/src/wafo/source/mreg/rintmod.mod b/pywafo/src/wafo/source/mreg/rintmod.mod index 3bd24d4..718ff79 100644 --- a/pywafo/src/wafo/source/mreg/rintmod.mod +++ b/pywafo/src/wafo/source/mreg/rintmod.mod @@ -1,5 +1,5 @@ -GFORTRAN module version '0' created from mregmodule.f on Wed Aug 05 19:15:05 2009 -MD5:ea81a0bf9bc67a6cbf4024dcd57f4ee3 -- If you edit this, you'll get what you deserve. +GFORTRAN module version '4' created from mregmodule.f on Tue May 24 14:34:23 2011 +MD5:c272ea8a24ebb29c49c7755fa1ba58fd -- If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () () () () () () () ()) @@ -12,12 +12,14 @@ MD5:ea81a0bf9bc67a6cbf4024dcd57f4ee3 -- If you edit this, you'll get what you de () +() + (2 'c' 'rintmod' 'c' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -EXPLICIT-SAVE) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +EXPLICIT-SAVE 0 0) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 3 'fc' 'rintmod' 'fc' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -EXPLICIT-SAVE) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +EXPLICIT-SAVE 0 0) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 4 'rintmod' 'rintmod' 'rintmod' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) +UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) ) ('c' 0 2 'fc' 0 3 'rintmod' 0 4) diff --git a/pywafo/src/wafo/source/mreg/sizemod.mod b/pywafo/src/wafo/source/mreg/sizemod.mod index b5da8b6..83e7295 100644 --- a/pywafo/src/wafo/source/mreg/sizemod.mod +++ b/pywafo/src/wafo/source/mreg/sizemod.mod @@ -1,5 +1,5 @@ -GFORTRAN module version '0' created from mregmodule.f on Wed Aug 05 19:15:05 2009 -MD5:b8c9fdc908b66b228beb64d8a241e2e6 -- If you edit this, you'll get what you deserve. +GFORTRAN module version '4' created from mregmodule.f on Tue May 24 14:34:23 2011 +MD5:9fbc3ee9bf9bf359ed3c3cd78067ab58 -- If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () () () () () () () ()) @@ -12,17 +12,19 @@ MD5:b8c9fdc908b66b228beb64d8a241e2e6 -- If you edit this, you'll get what you de () +() + (2 'mmax' 'sizemod' 'mmax' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN IMPLICIT-SAVE) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( +UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '6') () 0 () () () 0 0) 3 'nmax' 'sizemod' 'nmax' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN IMPLICIT-SAVE) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( +UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '201') () 0 () () () 0 0) 4 'rdim' 'sizemod' 'rdim' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN IMPLICIT-SAVE) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( +UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '40401') () 0 () () () 0 0) 5 'sizemod' 'sizemod' 'sizemod' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) +UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) ) ('mmax' 0 2 'nmax' 0 3 'rdim' 0 4 'sizemod' 0 5) diff --git a/pywafo/src/wafo/source/mreg/svd.mod b/pywafo/src/wafo/source/mreg/svd.mod index 5fb3a0e..4302325 100644 --- a/pywafo/src/wafo/source/mreg/svd.mod +++ b/pywafo/src/wafo/source/mreg/svd.mod @@ -1,5 +1,5 @@ -GFORTRAN module version '0' created from dsvdc.f on Tue Jan 25 20:12:18 2011 -MD5:504db75f3667c360354623f37288fa05 -- If you edit this, you'll get what you deserve. +GFORTRAN module version '4' created from dsvdc.f on Tue May 24 14:34:21 2011 +MD5:324936151a800ce072449221cf8c2383 -- If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () () () () () () () ()) @@ -12,80 +12,82 @@ MD5:504db75f3667c360354623f37288fa05 -- If you edit this, you'll get what you de () +() + (2 'dp' 'svd' 'dp' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -IMPLICIT-SAVE) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 -0 INTEGER ()) 0 '8') () 0 () () () 0 0) +IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER +4 0 0 INTEGER ()) 0 '8') () 0 () () () 0 0) 3 'drot1' 'svd' 'drot1' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL -UNKNOWN SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 4 0 (5 6 7 8 9) () 0 () () -() 0 0) +UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 4 0 (5 6 7 8 9) () 0 +() () () 0 0) 10 'drotg' 'svd' 'drotg' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL -UNKNOWN SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 11 0 (12 13 14 15) () 0 () -() () 0 0) +UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 11 0 (12 13 14 15) () +0 () () () 0 0) 16 'dsvdc' 'svd' 'dsvdc' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL -UNKNOWN SUBROUTINE ALWAYS_EXPLICIT) (UNKNOWN 0 0 0 UNKNOWN ()) 17 0 (18 -19 20 21 22 23 24 25 26) () 0 () () () 0 0) +UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT) (UNKNOWN 0 0 0 UNKNOWN ()) 17 0 +(18 19 20 21 22 23 24 25 26) () 0 () () () 0 0) 27 'dswap1' 'svd' 'dswap1' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL -UNKNOWN SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 28 0 (29 30 31) () 0 () () -() 0 0) +UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 28 0 (29 30 31) () 0 +() () () 0 0) 32 'selected_real_kind' '(intrinsic)' 'selected_real_kind' 1 (( -PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN FUNCTION) ( +PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 FUNCTION) ( UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 32 () () () 0 0) 33 'svd' 'svd' 'svd' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) -12 'da' '' 'da' 11 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) -(REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) -13 'db' '' 'db' 11 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) -(REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) -14 'dc' '' 'dc' 11 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( +UNKNOWN 0 0) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) +30 'dx' '' 'dx' 28 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 ASSUMED_SIZE (CONSTANT ( +INTEGER 4 0 0 INTEGER ()) 0 '1') ()) 0 () () () 0 0) +31 'dy' '' 'dy' 28 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 ASSUMED_SIZE (CONSTANT ( +INTEGER 4 0 0 INTEGER ()) 0 '1') ()) 0 () () () 0 0) +8 'c' '' 'c' 4 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) ( REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) -15 'ds' '' 'ds' 11 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( +9 's' '' 's' 4 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) ( REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) -29 'n' '' 'n' 28 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( +5 'n' '' 'n' 4 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) ( INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -30 'dx' '' 'dx' 28 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN +6 'dx' '' 'dx' 4 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 ASSUMED_SIZE (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '1') ()) 0 () () () 0 0) -31 'dy' '' 'dy' 28 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN +7 'dy' '' 'dy' 4 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 ASSUMED_SIZE (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '1') ()) 0 () () () 0 0) -5 'n' '' 'n' 4 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( -INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -6 'dx' '' 'dx' 4 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 ASSUMED_SIZE (CONSTANT (INTEGER 4 -0 0 INTEGER ()) 0 '1') ()) 0 () () () 0 0) -7 'dy' '' 'dy' 4 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 ASSUMED_SIZE (CONSTANT (INTEGER 4 -0 0 INTEGER ()) 0 '1') ()) 0 () () () 0 0) -8 'c' '' 'c' 4 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) (REAL 8 -0 0 REAL ()) 0 0 () () 0 () () () 0 0) -9 's' '' 's' 4 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) (REAL 8 -0 0 REAL ()) 0 0 () () 0 () () () 0 0) -18 'x' '' 'x' 17 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (2 ASSUMED_SHAPE (CONSTANT (INTEGER 4 -0 0 INTEGER ()) 0 '1') () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ()) -0 () () () 0 0) -19 'n' '' 'n' 17 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( +21 's' '' 's' 17 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 ASSUMED_SHAPE (CONSTANT +(INTEGER 4 0 0 INTEGER ()) 0 '1') ()) 0 () () () 0 0) +22 'e' '' 'e' 17 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 ASSUMED_SHAPE (CONSTANT +(INTEGER 4 0 0 INTEGER ()) 0 '1') ()) 0 () () () 0 0) +23 'u' '' 'u' 17 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (2 ASSUMED_SHAPE (CONSTANT +(INTEGER 4 0 0 INTEGER ()) 0 '1') () (CONSTANT (INTEGER 4 0 0 INTEGER ()) +0 '1') ()) 0 () () () 0 0) +24 'v' '' 'v' 17 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (2 ASSUMED_SHAPE (CONSTANT +(INTEGER 4 0 0 INTEGER ()) 0 '1') () (CONSTANT (INTEGER 4 0 0 INTEGER ()) +0 '1') ()) 0 () () () 0 0) +25 'job' '' 'job' 17 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) +26 'info' '' 'info' 17 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) +18 'x' '' 'x' 17 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DIMENSION DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (2 ASSUMED_SHAPE (CONSTANT +(INTEGER 4 0 0 INTEGER ()) 0 '1') () (CONSTANT (INTEGER 4 0 0 INTEGER ()) +0 '1') ()) 0 () () () 0 0) +19 'n' '' 'n' 17 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) ( INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -20 'p' '' 'p' 17 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( +20 'p' '' 'p' 17 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) ( INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -21 's' '' 's' 17 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 ASSUMED_SHAPE (CONSTANT (INTEGER 4 -0 0 INTEGER ()) 0 '1') ()) 0 () () () 0 0) -22 'e' '' 'e' 17 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (1 ASSUMED_SHAPE (CONSTANT (INTEGER 4 -0 0 INTEGER ()) 0 '1') ()) 0 () () () 0 0) -23 'u' '' 'u' 17 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (2 ASSUMED_SHAPE (CONSTANT (INTEGER 4 -0 0 INTEGER ()) 0 '1') () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ()) -0 () () () 0 0) -24 'v' '' 'v' 17 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN DIMENSION -DUMMY) (REAL 8 0 0 REAL ()) 0 0 () (2 ASSUMED_SHAPE (CONSTANT (INTEGER 4 -0 0 INTEGER ()) 0 '1') () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ()) -0 () () () 0 0) -25 'job' '' 'job' 17 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( +15 'ds' '' 'ds' 11 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) +(REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +12 'da' '' 'da' 11 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +13 'db' '' 'db' 11 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 +DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +14 'dc' '' 'dc' 11 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) +(REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) +29 'n' '' 'n' 28 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) ( INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) -26 'info' '' 'info' 17 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) -(INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) ) ('dp' 0 2 'drot1' 0 3 'drotg' 0 10 'dsvdc' 0 16 'dswap1' 0 27 diff --git a/pywafo/src/wafo/source/mreg/tbrmod.mod b/pywafo/src/wafo/source/mreg/tbrmod.mod index ec0381c..7586594 100644 --- a/pywafo/src/wafo/source/mreg/tbrmod.mod +++ b/pywafo/src/wafo/source/mreg/tbrmod.mod @@ -1,8 +1,10 @@ -GFORTRAN module version '0' created from mregmodule.f on Wed Aug 05 19:15:05 2009 -MD5:43d81dd7165fa3666db9131e212144f1 -- If you edit this, you'll get what you deserve. +GFORTRAN module version '4' created from mregmodule.f on Tue May 24 14:34:23 2011 +MD5:1ca9424273ef49cacfd88e3bffcc7949 -- If you edit this, you'll get what you deserve. -(() () () () () () () -() () () () () () () () () () () () () () () () () () () ()) +(() () () () () () () () () () () () () () () () () () () () () () () +() () () ()) + +() () @@ -13,22 +15,22 @@ MD5:43d81dd7165fa3666db9131e212144f1 -- If you edit this, you'll get what you de () (2 'hh' 'tbrmod' 'hh' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN -UNKNOWN DIMENSION) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT (CONSTANT ( -INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 -'201')) 0 () () () 0 0) +UNKNOWN 0 0 DIMENSION) (REAL 8 0 0 REAL ()) 0 0 () (1 EXPLICIT ( +CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 +INTEGER ()) 0 '201')) 0 () () () 0 0) 3 'mmax' 'sizemod' 'mmax' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN IMPLICIT-SAVE) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( +UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '6') () 0 () () () 0 0) 4 'nmax' 'sizemod' 'nmax' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN IMPLICIT-SAVE) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( +UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '201') () 0 () () () 0 0) 5 'rdim' 'sizemod' 'rdim' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN IMPLICIT-SAVE) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( +UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '40401') () 0 () () () 0 0) 6 'sizemod' 'sizemod' 'sizemod' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) +UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) 7 'tbrmod' 'tbrmod' 'tbrmod' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC -UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) +UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0) ) ('hh' 0 2 'mmax' 0 3 'nmax' 0 4 'rdim' 0 5 'sizemod' 0 6 'tbrmod' 0 7) diff --git a/pywafo/src/wafo/spectrum/core.py b/pywafo/src/wafo/spectrum/core.py index fefd458..c1b6a1a 100644 --- a/pywafo/src/wafo/spectrum/core.py +++ b/pywafo/src/wafo/spectrum/core.py @@ -30,6 +30,12 @@ try: except ImportError: warnings.warn('Compile the c_library.pyd again!') c_library = None +try: + from wafo import cov2mod +except ImportError: + warnings.warn('Compile the cov2mod.pyd again!') + cov2mod = None + #from wafo.transform import TrData from wafo.transform.models import TrLinear @@ -255,8 +261,8 @@ def plotspec(specdata, linetype='b-', flag=1): spectype = specdata.type.lower() stype = spectype[-3::] - if stype in ('enc','req','k1d') : #1D plot - Fn = freq[-1] # Nyquist frequency + if stype in ('enc', 'req', 'k1d') : #1D plot + Fn = freq[-1] # Nyquist frequency indm = findpeaks(data, n=4) maxS = data.max() # if isfield(S,'CI') && ~isempty(S.CI), @@ -266,19 +272,19 @@ def plotspec(specdata, linetype='b-', flag=1): Fp = freq[indm]# %peak frequency/wave number - if len(indm)==1: + if len(indm) == 1: txt = [('fp = %0.2g' % Fp) + funit] else: txt = [] - for i,fp in enumerate(Fp.tolist()): - txt.append(('fp%d = %0.2g' % (i,fp)) + funit) + for i, fp in enumerate(Fp.tolist()): + txt.append(('fp%d = %0.2g' % (i, fp)) + funit) if (flag == 3): - plotbackend.subplot(2,1,1) - if (flag == 1) or (flag ==3):#% Plot in normal scale - plotbackend.plot(np.vstack([Fp, Fp]),np.vstack([zeros(len(indm)), data.take(indm)]),':', - freq,data,linetype) + plotbackend.subplot(2, 1, 1) + if (flag == 1) or (flag == 3):#% Plot in normal scale + plotbackend.plot(np.vstack([Fp, Fp]), np.vstack([zeros(len(indm)), data.take(indm)]), ':', + freq, data, linetype) # if isfield(S,'CI'), # plot(freq,S.S*S.CI(1), 'r:' ) @@ -287,29 +293,29 @@ def plotspec(specdata, linetype='b-', flag=1): a = plotbackend.axis() a1 = Fn - if (Fp>0): - a1 = max(min(Fn,10*max(Fp)),a[1]); + if (Fp > 0): + a1 = max(min(Fn, 10 * max(Fp)), a[1]); - plotbackend.axis([0, a1 ,0, max(1.01*maxS,a[3])]) + plotbackend.axis([0, a1 , 0, max(1.01 * maxS, a[3])]) plotbackend.title('Spectral density') plotbackend.xlabel(xlbl_txt) - plotbackend.ylabel(ylbl1_txt ) + plotbackend.ylabel(ylbl1_txt) - if (flag==3): - plotbackend.subplot(2,1,2) + if (flag == 3): + plotbackend.subplot(2, 1, 2) - if (flag == 2) or (flag ==3) : # Plot in logaritmic scale - ind = np.flatnonzero(data>0) + if (flag == 2) or (flag == 3) : # Plot in logaritmic scale + ind = np.flatnonzero(data > 0) - plotbackend.plot(np.vstack([Fp,Fp]),np.vstack((min(10*log10(data.take(ind)/maxS)).repeat(len(Fp)), - 10*log10(data.take(indm)/maxS))),':') + plotbackend.plot(np.vstack([Fp, Fp]), np.vstack((min(10 * log10(data.take(ind) / maxS)).repeat(len(Fp)), + 10 * log10(data.take(indm) / maxS))), ':') # hold on # if isfield(S,'CI'), # plot(freq(ind),10*log10(S.S(ind)*S.CI(1)/maxS), 'r:' ) # plot(freq(ind),10*log10(S.S(ind)*S.CI(2)/maxS), 'r:' ) # end - plotbackend.plot(freq[ind],10*log10(data[ind]/maxS),linetype) + plotbackend.plot(freq[ind], 10 * log10(data[ind] / maxS), linetype) # if ih, a=axis; else a=[0 0 0 0]; end # axis([0 max(min(Fn,max(10*Fp)),a(2)) -20 max(1.01*10*log10(1),a(4))]) % log10(maxS) @@ -650,14 +656,14 @@ class SpecData1D(WafoData): def __init__(self, *args, **kwds): self.name_ = kwds.pop('name', 'WAFO Spectrum Object') - self.type = kwds.pop('type','freq') - self.freqtype = kwds.pop('freqtype','w') + self.type = kwds.pop('type', 'freq') + self.freqtype = kwds.pop('freqtype', 'w') self.angletype = '' - self.h = kwds.pop('h',inf) - self.tr = kwds.pop('tr',None) #TrLinear() - self.phi = kwds.pop('phi',0.0) - self.v = kwds.pop('v',0.0) - self.norm = kwds.pop('norm',False) + self.h = kwds.pop('h', inf) + self.tr = kwds.pop('tr', None) #TrLinear() + self.phi = kwds.pop('phi', 0.0) + self.v = kwds.pop('v', 0.0) + self.norm = kwds.pop('norm', False) super(SpecData1D, self).__init__(*args, **kwds) self.setlabels() @@ -1113,7 +1119,114 @@ class SpecData1D(WafoData): return SL, SN + def to_mm_pdf(self, paramt=None, paramu=None, utc=None, nit=2, EPS=5e-5, + EPSS=1e-6, C=4.5, EPS0=1e-5, IAC=1, ISQ=0, verbose=False): + ''' + nit = order of numerical integration: 0,1,2,3,4,5. + paramu = parameter vector defining discretization of min/max values. + t = grid of time points between maximum and minimum (to + integrate out). interval between maximum and the following + minimum, + The variable ISQ marks which type of conditioning will be used ISQ=0 + means random time where the probability is minimum, ISQ=1 is the time + where the variance of the residual process is minimal(ISQ=1 is faster). + + NIT, IAC are described in CROSSPACK paper, EPS0 is the accuracy constant + used in choosing the number of nodes in numerical integrations + (XX1, H1 vectors). The nodes and weights and other parameters are + read in the subroutine INITINTEG from files Z.DAT, H.DAT and ACCUR.DAT. + + + NIT=0, IAC=1 then one uses RIND0 - subroutine, all other cases + goes through RIND1, ...,RIND5. NIT=0, here means explicite formula + approximation for XIND=E[Y^+1{ HH0); +# index2 = find(f.x{2}<0); +# f.f = flipud(f.f(index2,index1)); +# f.x{1} = f.x{1}(index1); +# f.x{2} = abs(flipud(f.x{2}(index2))); +# f.title ='Joint density of crest and trough'; +# f.labx{1}='Crest [m]'; +# f.labx{2}='Trough [m]'; +# else %(defnr==1) + mmpdf = WafoData(uvdens,args=(h,h), title='Joint density of maximum and minimum', + xlab='max [m]',ylab='min [m]') + return mmpdf + + #[f.cl,f.pl] = qlevels(f.f,[10, 30, 50, 70, 90, 95, 99, 99.9],f.x{1},f.x{2}) + + def to_t_pdf(self, u=None, pdef='Tc', paramt=None, **options): ''' Density of crest/trough- period or length, version 2. @@ -1254,7 +1367,7 @@ class SpecData1D(WafoData): indI[3] = Ntd - 1 #% positive wave period - BIG = self._covinput(pt, R) + BIG = self._covinput_t_pdf(pt, R) tmp = rind(BIG, ex[:Ntdc], B_lo, B_up, indI, xc, Nt) f[pt], err[pt] = tmp[:2] @@ -1279,7 +1392,7 @@ class SpecData1D(WafoData): return pdf - def _covinput(self, pt, R): + def _covinput_t_pdf(self, pt, R): """ Return covariance matrix for Tc or Tt period problems @@ -1813,7 +1926,7 @@ class SpecData1D(WafoData): svec = rvec + 1J * ivec else: amp = amp.T - svec=[] + svec = [] for i in range(cases): rvec, ivec = c_library.disufq(amp[i].real, amp[i].imag, w, kw, water_depth, g, nmin, nmax, 1, ns) @@ -2329,7 +2442,7 @@ class SpecData1D(WafoData): #%wnc = min(wnNew,wnOld-1e-5) wnc = wnNew #specfun = lambda xi : stineman_interp(xi, w, S1) - specfun = interpolate.interp1d(w,S1, kind='cubic') + specfun = interpolate.interp1d(w, S1, kind='cubic') x, unused_y = discretize(specfun, 0, wnc) dwMin = minimum(min(diff(x)), dwMin) @@ -2437,9 +2550,9 @@ class SpecData1D(WafoData): ''' m, unused_mtxt = self.moment(nr=4, even=False) - fact_dict=dict(alpha=0,eps2=1,eps4=3,qp=3,Qp=3) - fun = lambda fact: fact_dict.get(fact,fact) - fact = atleast_1d(map(fun,list(factors))) + fact_dict = dict(alpha=0, eps2=1, eps4=3, qp=3, Qp=3) + fun = lambda fact: fact_dict.get(fact, fact) + fact = atleast_1d(map(fun, list(factors))) #fact = atleast_1d(fact) alpha = m[2] / sqrt(m[0] * m[4]) @@ -2793,13 +2906,13 @@ class SpecData2D(WafoData): def toacf(self): pass - def tospecdata(self,type=None): + def tospecdata(self, type=None): pass def sim(self): pass def sim_nl(self): pass - def rotate(self, phi=0,rotateGrid=False,method='linear'): + def rotate(self, phi=0, rotateGrid=False, method='linear'): ''' Rotate spectrum clockwise around the origin. @@ -2837,58 +2950,58 @@ class SpecData2D(WafoData): #Snew=S; - self.phi = mod(self.phi+phi+pi,2*pi)-pi + self.phi = mod(self.phi + phi + pi, 2 * pi) - pi stype = self.type.lower()[-3::] - if stype=='dir': + if stype == 'dir': #% any of the directinal types #% Make sure theta is from -pi to pi theta = self.args[0] - phi0 = theta[0]+pi; - self.args[0] = theta-phi0 + phi0 = theta[0] + pi; + self.args[0] = theta - phi0 # make sure -pi1: - vari = vari[1::]+ vari[0] + if vari[0] == 't' and Nv > 1: + vari = vari[1::] + vari[0] Nv = len(vari) if not self.type.endswith('dir'): - S1 = self.tospecdata(self.type[:-2]+'dir') + S1 = self.tospecdata(self.type[:-2] + 'dir') else: S1 = self w = ravel(S1.args[0]) - theta = S1.args[1]-S1.phi + theta = S1.args[1] - S1.phi S = S1.data - Sw = simps(S,x=theta,axis=0) - m = [simps(Sw,x=w)] - mtext=['m0'] + Sw = simps(S, x=theta, axis=0) + m = [simps(Sw, x=w)] + mtext = ['m0'] - if nr>0: + if nr > 0: vec = [] g = np.atleast_1d(S1.__dict__.get('g', gravity())) - kx=w**2/g[0] # maybe different normalization in x and y => diff. g - ky=w**2/g[-1] + kx = w ** 2 / g[0] # maybe different normalization in x and y => diff. g + ky = w ** 2 / g[-1] - nw=w.size + nw = w.size if 'x' in vari: - ct = np.cos(theta[:,None]) - Sc = simps(S*ct,x=theta, axis=0) - vec.append(kx*Sc) + ct = np.cos(theta[:, None]) + Sc = simps(S * ct, x=theta, axis=0) + vec.append(kx * Sc) mtext.append('mx') if 'y' in vari: - st = np.sin(theta[:,None]) - Ss = simps(S*st,x=theta, axis=0) - vec.append(ky*Ss) + st = np.sin(theta[:, None]) + Ss = simps(S * st, x=theta, axis=0) + vec.append(ky * Ss) mtext.append('my') if 't' in vari: - vec.append(w*Sw) + vec.append(w * Sw) mtext.append('mt') - if nr>1: + if nr > 1: if 'x' in vari: - Sc2 = simps(S*ct**2,x=theta, axis=0) - vec.append(kx**2*Sc2) + Sc2 = simps(S * ct ** 2, x=theta, axis=0) + vec.append(kx ** 2 * Sc2) mtext.append('mxx') if 'y' in vari: - Ss2 = simps(S*st**2,x=theta, axis=0) - vec.append(ky**2*Ss2) + Ss2 = simps(S * st ** 2, x=theta, axis=0) + vec.append(ky ** 2 * Ss2) mtext.append('myy') if 't' in vari: - vec.append(w**2*Sw) + vec.append(w ** 2 * Sw) mtext.append('mtt') if 'x' in vari and 'y' in vari: - Scs = simps(S*ct*st,x=theta, axis=0) - vec.append(kx*ky*Scs) + Scs = simps(S * ct * st, x=theta, axis=0) + vec.append(kx * ky * Scs) mtext.append('mxy') if 'x' in vari and 't' in vari: - vec.append(kx*w*Sc) + vec.append(kx * w * Sc) mtext.append('mxt') if 'y' in vari and 't' in vari: - vec.append(ky*w*Sc) + vec.append(ky * w * Sc) mtext.append('myt') - if nr>3: + if nr > 3: if 'x' in vari: - Sc3 = simps(S*ct**3,x=theta, axis=0) - Sc4 = simps(S*ct**4,x=theta, axis=0) - vec.append(kx**4*Sc4) + Sc3 = simps(S * ct ** 3, x=theta, axis=0) + Sc4 = simps(S * ct ** 4, x=theta, axis=0) + vec.append(kx ** 4 * Sc4) mtext.append('mxxxx') if 'y' in vari: - Ss3 = simps(S*st**3,x=theta, axis=0) - Ss4 = simps(S*st**4,x=theta, axis=0) - vec.append(ky**4*Ss4) + Ss3 = simps(S * st ** 3, x=theta, axis=0) + Ss4 = simps(S * st ** 4, x=theta, axis=0) + vec.append(ky ** 4 * Ss4) mtext.append('myyyy') if 't' in vari: - vec.append(w**4*Sw) + vec.append(w ** 4 * Sw) mtext.append('mtttt') if 'x' in vari and 'y' in vari: - Sc2s = simps(S*ct**2*st,x=theta, axis=0) - Sc3s = simps(S*ct**3*st,x=theta, axis=0) - Scs2 = simps(S*ct*st**2,x=theta, axis=0) - Scs3 = simps(S*ct*st**3,x=theta, axis=0) - Sc2s2 = simps(S*ct**2*st**2,x=theta, axis=0) - vec.extend((kx**3*ky*Sc3s,kx**2*ky**2*Sc2s2, kx*ky**3*Scs3)) - mtext.extend(('mxxxy','mxxyy','mxyyy')) + Sc2s = simps(S * ct ** 2 * st, x=theta, axis=0) + Sc3s = simps(S * ct ** 3 * st, x=theta, axis=0) + Scs2 = simps(S * ct * st ** 2, x=theta, axis=0) + Scs3 = simps(S * ct * st ** 3, x=theta, axis=0) + Sc2s2 = simps(S * ct ** 2 * st ** 2, x=theta, axis=0) + vec.extend((kx ** 3 * ky * Sc3s, kx ** 2 * ky ** 2 * Sc2s2, kx * ky ** 3 * Scs3)) + mtext.extend(('mxxxy', 'mxxyy', 'mxyyy')) if 'x' in vari and 't' in vari: - vec.extend((kx**3*w*Sc3, kx**2*w**2*Sc2, kx*w**3*Sc)) - mtext.extend(('mxxxt','mxxtt','mxttt')) + vec.extend((kx ** 3 * w * Sc3, kx ** 2 * w ** 2 * Sc2, kx * w ** 3 * Sc)) + mtext.extend(('mxxxt', 'mxxtt', 'mxttt')) if 'y' in vari and 't' in vari: - vec.extend((ky**3*w*Ss3, ky**2*w**2*Ss2, ky*w**3*Ss)) - mtext.extend(('myyyt','myytt','myttt')) + vec.extend((ky ** 3 * w * Ss3, ky ** 2 * w ** 2 * Ss2, ky * w ** 3 * Ss)) + mtext.extend(('myyyt', 'myytt', 'myttt')) if 'x' in vari and 'y' in vari and 't' in vari: - vec.extend((kx**2*ky*w*Sc2s, kx*ky**2*w*Scs2, kx*ky*w**2*Scs)) - mtext.extend(('mxxyt','mxyyt','mxytt')) + vec.extend((kx ** 2 * ky * w * Sc2s, kx * ky ** 2 * w * Scs2, kx * ky * w ** 2 * Scs)) + mtext.extend(('mxxyt', 'mxyyt', 'mxytt')) #end % if nr>1 m.extend([simps(vals, x=w) for vals in vec]) return np.asarray(m), mtext